/// <summary> /// Sauvegarde les données de la partie courante. /// </summary> /// <param name="cheminDictionnaireRegions">Fichier dans lequel sauvegarder le dictionnaire des régions.</param> public void Sauvegarde(String cheminDictionnaireRegions) { using (StreamWriter redacteur = new StreamWriter(cheminDictionnaireRegions)) { foreach (String nomRegion in this.ListeNomsRegions) { GRegion regionASauvegarder = this.DictionnaireRegions[nomRegion]; String abreviation = regionASauvegarder.Abreviation; String centre = regionASauvegarder.EstUnCentre.ToString(); String typeRegion = ((Int32)(regionASauvegarder.TypeRegion)).ToString(); String coordonneesUnites = regionASauvegarder.CoordonneesUnite.Convertit(); OccupationRegion occupationASauvegarder = this.DictionnaireOccupation[nomRegion]; String possesseurUnite = ((Int32)(occupationASauvegarder.PossesseurUnite)).ToString(); String unite = ((Int32)(occupationASauvegarder.TypeUnite)).ToString(); String donneesCompletes; if (regionASauvegarder.EstUnCentre == false) { donneesCompletes = String.Format( "{0};{1};{2};{3};{4};{5};{6}", nomRegion, abreviation, centre, typeRegion, coordonneesUnites, possesseurUnite, unite); } else { Centre centreASAuvegarder = regionASauvegarder as Centre; String coordonneesCentre = centreASAuvegarder.CoordonneesCentre.Convertit(); OccupationCentre occupationCentre = occupationASauvegarder as OccupationCentre; String possesseurCentre = ((Int32)(occupationCentre.PossesseurCentre)).ToString(); String recrutement = ((Int32)(centreASAuvegarder.Recrutement)).ToString(); donneesCompletes = String.Format( "{0};{1};{2};{3};{4};{5};{6};{7};{8};{9}", nomRegion, abreviation, centre, typeRegion, coordonneesUnites, possesseurUnite, unite, coordonneesCentre, possesseurCentre, recrutement); } redacteur.WriteLine(donneesCompletes); } foreach (var retraite in this.ListeRetraites) { redacteur.WriteLine( "{0};{1};{2};{3}", retraite.Attaquant, retraite.Possesseur, retraite.Region, retraite.TypeUnite); } } }
/// <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(); } } }
/// <summary> /// Compte les centres, les armées et les flottes de chacun des belligérants. /// </summary> /// <remarks>Cette méthode est vraiment très mal codée.</remarks> private void CompteCentresEtArmees() { Int32 centresLautrec = 0; Int32 centresBarsanges = 0; Int32 centresEmpire = 0; Int32 centresMelinde = 0; Int32 centresBremontree = 0; Int32 centresGretz = 0; Int32 centresPalavin = 0; Int32 centresThymee = 0; foreach (OccupationRegion region in this.conteneurDonnees.DictionnaireOccupation.Values) { if (this.conteneurDonnees.DictionnaireRegions[region.Region].EstUnCentre == true) { OccupationCentre centre = region as OccupationCentre; switch (centre.PossesseurCentre) { case EBelligerant.Lautrec: centresLautrec++; break; case EBelligerant.Barsanges: centresBarsanges++; break; case EBelligerant.Empire: centresEmpire++; break; case EBelligerant.Mélinde: centresMelinde++; break; case EBelligerant.Brémontrée: centresBremontree++; break; case EBelligerant.Gretz: centresGretz++; break; case EBelligerant.Palavin: centresPalavin++; break; case EBelligerant.Thymée: centresThymee++; break; default: break; } } } this.labelCompteurLautrec.Visible = true; this.compteurLautrec.Visible = true; this.compteurLautrec.Text = String.Format("{0} centre(s), {1} armée(s), {2} flotte(s)", centresLautrec, this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Lautrec && item.TypeUnite == EUnite.Armée), this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Lautrec && item.TypeUnite == EUnite.Flotte)); this.nombreCentres["Lautrec"] = centresLautrec; this.nombreUnites["Lautrec"] = this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Lautrec && item.TypeUnite == EUnite.Armée) + this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Lautrec && item.TypeUnite == EUnite.Flotte); this.labelCompteurBarsanges.Visible = true; this.compteurBarsanges.Visible = true; this.compteurBarsanges.Text = String.Format("{0} centre(s), {1} armée(s), {2} flotte(s)", centresBarsanges, this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Barsanges && item.TypeUnite == EUnite.Armée), this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Barsanges && item.TypeUnite == EUnite.Flotte)); this.nombreCentres["Barsanges"] = centresBarsanges; this.nombreUnites["Barsanges"] = this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Barsanges && item.TypeUnite == EUnite.Armée) + this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Barsanges && item.TypeUnite == EUnite.Flotte); this.labelCompteurEmpire.Visible = true; this.compteurEmpire.Visible = true; this.compteurEmpire.Text = String.Format("{0} centre(s), {1} armée(s), {2} flotte(s)", centresEmpire, this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Empire && item.TypeUnite == EUnite.Armée), this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Empire && item.TypeUnite == EUnite.Flotte)); this.nombreCentres["Empire"] = centresEmpire; this.nombreUnites["Empire"] = this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Empire && item.TypeUnite == EUnite.Armée) + this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Empire && item.TypeUnite == EUnite.Flotte); this.labelCompteurMelinde.Visible = true; this.compteurMelinde.Visible = true; this.compteurMelinde.Text = String.Format("{0} centre(s), {1} armée(s), {2} flotte(s)", centresMelinde, this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Mélinde && item.TypeUnite == EUnite.Armée), this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Mélinde && item.TypeUnite == EUnite.Flotte)); this.nombreCentres["Mélinde"] = centresMelinde; this.nombreUnites["Mélinde"] = this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Mélinde && item.TypeUnite == EUnite.Armée) + this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Mélinde && item.TypeUnite == EUnite.Flotte); this.labelCompteurBremontree.Visible = true; this.compteurBremontree.Visible = true; this.compteurBremontree.Text = String.Format("{0} centre(s), {1} armée(s), {2} flotte(s)", centresBremontree, this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Brémontrée && item.TypeUnite == EUnite.Armée), this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Brémontrée && item.TypeUnite == EUnite.Flotte)); this.nombreCentres["Brémontrée"] = centresBremontree; this.nombreUnites["Brémontrée"] = this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Brémontrée && item.TypeUnite == EUnite.Armée) + this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Brémontrée && item.TypeUnite == EUnite.Flotte); this.labelCompteurGretz.Visible = true; this.compteurGretz.Visible = true; this.compteurGretz.Text = String.Format("{0} centre(s), {1} armée(s), {2} flotte(s)", centresGretz, this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Gretz && item.TypeUnite == EUnite.Armée), this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Gretz && item.TypeUnite == EUnite.Flotte)); this.nombreCentres["Gretz"] = centresGretz; this.nombreUnites["Gretz"] = this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Gretz && item.TypeUnite == EUnite.Armée) + this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Gretz && item.TypeUnite == EUnite.Flotte); this.labelCompteurPalavin.Visible = true; this.compteurPalavin.Visible = true; this.compteurPalavin.Text = String.Format("{0} centre(s), {1} armée(s), {2} flotte(s)", centresPalavin, this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Palavin && item.TypeUnite == EUnite.Armée), this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Palavin && item.TypeUnite == EUnite.Flotte)); this.nombreCentres["Palavin"] = centresPalavin; this.nombreUnites["Palavin"] = this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Palavin && item.TypeUnite == EUnite.Armée) + this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Palavin && item.TypeUnite == EUnite.Flotte); this.labelCompteurThymee.Visible = true; this.compteurThymee.Visible = true; this.compteurThymee.Text = String.Format("{0} centre(s), {1} armée(s), {2} flotte(s)", centresThymee, this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Thymée && item.TypeUnite == EUnite.Armée), this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Thymée && item.TypeUnite == EUnite.Flotte)); this.nombreCentres["Thymée"] = centresThymee; this.nombreUnites["Thymée"] = this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Thymée && item.TypeUnite == EUnite.Armée) + this.conteneurDonnees.DictionnaireOccupation.Values.Count(item => item.PossesseurUnite == EBelligerant.Thymée && item.TypeUnite == EUnite.Flotte); }