// UTS 2000 - fichier 'train.h'
// V3.5b - Le 15/02/2013
#include "Train_UTS.h"

class cTrain
{
    public:
    int  enable[NB_TRAIN];                 // (0 par défaut)  = 1 => Train déclaré.
    char name[NB_TRAIN+NB_TRAIN_RESERVE][10];// ("" par défaut) = Nom du train sur 8 caractères.
    char commentaire[NB_TRAIN_RESERVE][NB_TRAIN_RESERVE_COM+1];// ("" par défaut) = Commentaires des trains de réserve sur 20 caractères.
	int  color_train_reserve[NB_TRAIN_RESERVE];  // -1 par défaut = couleur du train en réserve.
    int  cmd[NB_TRAIN];                    // (-1 par défaut) = commandes du train, 0,1,2,3,4,10,11.. pour les potentiomètres de la carte, ou 1000,1001,1002,1003,1004 pour la commande par clavier
    int  en_auto[NB_TRAIN];                // (0 par défaut)  = 1 => Train en conduite en mode automatique.
    int  inv[NB_TRAIN+NB_TRAIN_RESERVE];   // (0 par défaut)  = 1 => Alimentation du train inversée.
    int  vmin[NB_TRAIN+NB_TRAIN_RESERVE];  // (0 par défaut)  = Vitesse minimum (0 à 50)
    int  vmax[NB_TRAIN+NB_TRAIN_RESERVE];  // (64 par défaut) = Vitesse maximum (10 à 64)
    int  acc[NB_TRAIN+NB_TRAIN_RESERVE];   // (-1 par défaut) = Inertie valeur d'accélération
    int  dec[NB_TRAIN+NB_TRAIN_RESERVE];   // (-1 par défaut) = Inertie valeur de déceleration
    int  frein[NB_TRAIN+NB_TRAIN_RESERVE]; // (-1 par défaut) = Inertie valeur de freinage
    int  cons[NB_TRAIN];                   // (0 par défaut)  = -64 à +64 => Valeur de consigne de la vitesse du train corrigée par '#balauto'+ 'vitmax:', 'halt:' ou 'cant:'.
    int  cons_sans_correction[NB_TRAIN];   // (0 par défaut)  = -64 à +64 => Valeur du clavier ou du potentiométre. V3.4. Utilisé dans aigauto.tick().
    int  vit[NB_TRAIN];                    // (0 par défaut)  =  -64 à +64 => Vitesse 
    int  cant_lock[NB_TRAIN];              // (-1 par défaut) = 0 à 15 => Numéro du garage si un train est garé et isolé dessus.
    char mode[NB_TRAIN][10];               // ("SEL" par défaut) => Mode sélectif ou "AUTO" => Mode automatique.
    char sz_cant_ind[NB_TRAIN][100];       // ("" par défaut) = Pour afficher en mode debug la liste des cantons sur le quel est le train.
    int  capt[NB_TRAIN];                   // (0 par défaut)  = 1 = > Le train n'est pas dectecté sur le canton alors qu'il devrait être présent.
    int  entry;
         cTrain(void);
    void init(char filename[]);
    void save_conf();
    void maj(void);
	void canton_maj_profil(void);
    void debug(int action);
    void debug2(int action); // Affectation des locomotives sur des cantons.
	int dynamique_vit(int cons,int vit, int acc, int dec, int frein); //plus privé en V3.4
    private:
    int get_iti_line(FILE* pf, char ch_tab[][CHAR_CONFIG_NB], int* ch_nb);
};