/// <summary> /// Initialise une nouvelle instance de la classe DonneesProgrammePrincipal. /// </summary> /// <param name="donneesCalendaires">Année et phase de jeu sous forme d'une chaîne de caractères.</param> /// <param name="cheminDictionnaireAdjacence">Chemin d'accès au fichier à charger (matrice d'adjacence).</param> /// <param name="cheminDictionnaireRegions">Chemin d'accès au fichier à charger (dictionnaire des régions).</param> public DonneesProgrammePrincipal( String donneesCalendaires, String cheminDictionnaireAdjacence, String cheminDictionnaireRegions) { this.ListeRetraites = new List <OrdreRegional>(); this.InitialisePeriodeJeu(donneesCalendaires); this.dictionnaireAdjacence = new DictionnaireAdjacence(cheminDictionnaireAdjacence); this.InitialiseDictionnaireRegions(cheminDictionnaireRegions); this.InitialiseDictionnaireOrdre(); }
/// <summary> /// Initialise une nouvelle instance de la classe ListeOrdres. /// </summary> /// <param name="listeOrdres">Liste d'ordres.</param> /// <param name="dictionnaireAdjacence">Dictionnaire d'adjacence spécifique à la carte utilisée.</param> /// <param name="dictionnaireRegions">Dictionnaire des régions, triées par noms.</param> /// <param name="dictionnaireOccupation">Dictionnaire d'occupation des régions.</param> public ListeOrdres( List <OrdreAbstrait> listeOrdres, DictionnaireAdjacence dictionnaireAdjacence, Dictionary <String, Region> dictionnaireRegions, Dictionary <String, OccupationRegion> dictionnaireOccupation) { this.dictionnaireAdjacence = dictionnaireAdjacence; this.dictionnaireRegions = dictionnaireRegions; List <OrdreAbstrait> ordresApplicables = this.TrieOrdresApplicables(listeOrdres, dictionnaireOccupation); this.OrdresTenir = new List <Tenir>(); ordresApplicables.FindAll(item => item.TypeOrdre == EOrdre.Tenir).ForEach(item => this.OrdresTenir.Add(item as Tenir)); List <Attaquer> ordresAttaque = new List <Attaquer>(); ordresApplicables.FindAll(item => item.TypeOrdre == EOrdre.Attaque).ForEach(item => ordresAttaque.Add(item as Attaquer)); this.OrdresAttaqueImmediate = this.TrieAttaquesImmediatesValides(ordresAttaque); List <Convoyer> ordresConvoi = new List <Convoyer>(); ordresApplicables.FindAll(item => item.TypeOrdre == EOrdre.Convoi).ForEach(item => ordresConvoi.Add(item as Convoyer)); this.OrdresConvoi = this.TrieConvoisValides(ordresConvoi, ordresAttaque); this.OrdresAttaqueConvoyee = this.TrieAttaquesConvoyeesValides(ordresAttaque); List <SoutenirDefensif> ordresSoutienDefensif = new List <SoutenirDefensif>(); ordresApplicables.FindAll(item => item.TypeOrdre == EOrdre.SoutienDefensif).ForEach(item => ordresSoutienDefensif.Add(item as SoutenirDefensif)); this.OrdresSoutienDefensif = this.TrieSoutiensDefensifsValides(ordresSoutienDefensif, this.OrdresTenir); List <SoutenirOffensif> ordresSoutienOffensif = new List <SoutenirOffensif>(); ordresApplicables.FindAll(item => item.TypeOrdre == EOrdre.SoutienOffensif).ForEach(item => ordresSoutienOffensif.Add(item as SoutenirOffensif)); this.OrdresSoutienOffensif = this.TrieSoutiensOffensifsValides(ordresSoutienOffensif); this.OrdresValides = new List <OrdreAbstrait>(); this.OrdresValides.AddRange(this.OrdresAttaqueConvoyee); this.OrdresValides.AddRange(this.OrdresAttaqueImmediate); this.OrdresValides.AddRange(this.OrdresConvoi); this.OrdresValides.AddRange(this.OrdresSoutienDefensif); this.OrdresValides.AddRange(this.OrdresSoutienOffensif); this.OrdresValides.AddRange(this.OrdresTenir); }