/// <summary> /// Change arbitrairement l'allégeance d'une unité sur la carte. /// </summary> /// <param name="identificateurBelligerant">Belligérant prenant possession de l'unité.</param> /// <param name="nomRegion">Nom de la région où l'unité change d'allégeance.</param> /// <param name="carte">Image représentant la carte.</param> /// <param name="outilsGraphiques">Outils graphiques utilisés pour effectuer le dessin.</param> public void ChangeAllegeanceUnite(String identificateurBelligerant, String nomRegion, Image carte, Graphics outilsGraphiques) { if (this.DictionnaireOccupation.Keys.Contains(nomRegion) == true) { EUnite unite = this.DictionnaireOccupation[nomRegion].TypeUnite; EBelligerant belligerantConcerne = Convertisseurs.VersEBelligerant(identificateurBelligerant); this.DictionnaireOccupation[nomRegion].ChangeUnite(unite, belligerantConcerne); Pictogrammes.PlaceUnite(this.DictionnaireRegions[nomRegion], this.DictionnaireOccupation[nomRegion], carte, outilsGraphiques); } else { throw new Exception("L'allégeance et/ou le nom de la région sont mal définis."); } }
/// <summary> /// Crée les champs d'ordres correspondant aux ajustements, et les place de manière adéquate. /// </summary> /// <param name="nombreCentres">Nombre de centres par belligérants.</param> /// <param name="nombreUnites">Nombre d'unités par belligérants.</param> /// <param name="dictionnaireRegions">Dictionnaire des régions correspondant à la carte.</param> /// <param name="dictionnaireOccupation">Dictionnaire d'occupation correspondant à la partie courante.</param> /// <param name="dictionnaireRecrutement">Dictionnaire des lieux de recrutement autorisés.</param> public void CreeChampsOrdres_Ajustements( Dictionary <String, Int32> nombreCentres, Dictionary <String, Int32> nombreUnites, Dictionary <String, GRegion> dictionnaireRegions, Dictionary <String, OccupationRegion> dictionnaireOccupation, Dictionary <EBelligerant, List <String> > dictionnaireRecrutement) { foreach (String nomBelligerant in nombreCentres.Keys) { EBelligerant belligerantCourant = Convertisseurs.VersEBelligerant(nomBelligerant); if (nombreCentres[nomBelligerant] > nombreUnites[nomBelligerant]) { foreach (String region in dictionnaireRecrutement[belligerantCourant]) { OccupationCentre centre = dictionnaireOccupation[region] as OccupationCentre; if (centre.TypeUnite == EUnite.Aucune && centre.PossesseurCentre == belligerantCourant) { Boolean regionCotiere = (dictionnaireRegions[region].TypeRegion == ETypeRegion.Côtière) ? true : false; String nomBelligerantAbrege = Convertisseurs.VersEBelligerantAbrege(belligerantCourant); this.ChampsOrdres.Add(new ChampOrdre(regionCotiere, nomBelligerantAbrege, region)); } } } else if (nombreCentres[nomBelligerant] < nombreUnites[nomBelligerant]) { foreach (OccupationRegion regionOccupee in dictionnaireOccupation.Values) { if ((regionOccupee.TypeUnite != Geographie.Enumerations.EUnite.Aucune) && (regionOccupee.PossesseurUnite == belligerantCourant)) { String nomBelligerantAbrege = Convertisseurs.VersEBelligerantAbrege(belligerantCourant); String typeUnite = Geographie.Convertisseurs.VersEUniteAbrege(regionOccupee.TypeUnite); String nomRegion = regionOccupee.Region; this.ChampsOrdres.Add(new ChampOrdre(nomBelligerantAbrege, typeUnite, nomRegion)); } } } } this.CreeChampsOrdres_General(); }
/// <summary> /// Initialise le dictionnaire des régions. /// </summary> /// <param name="fichierACharger">Chemin d'accès au fichier à charger contenant le dictionnaire des régions.</param> private void InitialiseDictionnaireRegions(String fichierACharger) { this.DictionnaireRecrutement = new Dictionary <EBelligerant, List <String> >(); this.dictionnaireRegions = new Dictionary <string, GRegion>(); this.DictionnaireOccupation = new Dictionary <string, OccupationRegion>(); using (StreamReader lecteur = new StreamReader(fichierACharger)) { foreach (String nomRegion in this.ListeNomsRegions) { String donnees = lecteur.ReadLine(); String[] donneesDetaillees = donnees.Split(';'); if (donneesDetaillees[0] == nomRegion) { String abreviation = donneesDetaillees[1]; Boolean centre = Boolean.Parse(donneesDetaillees[2]); ETypeRegion typeRegion = (ETypeRegion)(Int32.Parse(donneesDetaillees[3])); Coordonnees coordonneesUnite = Coordonnees.Convertit(donneesDetaillees[4]); EBelligerant possesseurUnite = (EBelligerant)(Int32.Parse(donneesDetaillees[5])); EUnite unite = (EUnite)(Int32.Parse(donneesDetaillees[6])); if (centre == false) { GRegion nouvelleRegion = new GRegion(nomRegion, abreviation, typeRegion, coordonneesUnite); this.dictionnaireRegions.Add(nomRegion, nouvelleRegion); OccupationRegion occupation = new OccupationRegion(nomRegion, unite, possesseurUnite); this.DictionnaireOccupation.Add(nomRegion, occupation); } else { Coordonnees coordonneesCentre = Coordonnees.Convertit(donneesDetaillees[7]); EBelligerant possesseurCentre = (EBelligerant)(Int32.Parse(donneesDetaillees[8])); EBelligerant recrutement = (EBelligerant)(Int32.Parse(donneesDetaillees[9])); Centre nouveauCentre = new Centre( nomRegion, abreviation, typeRegion, coordonneesUnite, coordonneesCentre, recrutement); this.dictionnaireRegions.Add(nomRegion, nouveauCentre); OccupationCentre occupation = new OccupationCentre(nomRegion, unite, possesseurUnite, possesseurCentre); this.DictionnaireOccupation.Add(nomRegion, occupation); if (recrutement != EBelligerant.Aucun) { if (this.DictionnaireRecrutement.ContainsKey(recrutement)) { this.DictionnaireRecrutement[recrutement].Add(nomRegion); } else { this.DictionnaireRecrutement.Add(recrutement, new List <String>() { nomRegion }); } } } } else { throw new Exception("Le fichier de régions ne correspond pas à la matrice d'adjacence."); } } String retraite = lecteur.ReadLine(); while (retraite != null) { String[] retraiteDetaillee = retraite.Split(';'); String attaquant = retraiteDetaillee[0]; EBelligerant possesseur = Convertisseurs.VersEBelligerant(retraiteDetaillee[1]); String region = retraiteDetaillee[2]; EUnite typeUnite = Convertisseurs.VersEUnite(retraiteDetaillee[3]); OrdreRegional nouvelleRetraite = new OrdreRegional(typeUnite, possesseur, region, attaquant); this.ListeRetraites.Add(nouvelleRetraite); retraite = lecteur.ReadLine(); } } }