/// <summary> /// Réinitialise les champs qui le nécessitent. /// </summary> /// <param name="occupationRegion">Informations relatives à l'occupation de la région.</param> public void Reinitialise(OccupationRegion occupationRegion) { this.TypeUnite = occupationRegion.TypeUnite; this.Possesseur = occupationRegion.PossesseurUnite; this.Reinitialise(); }
/// <summary> /// Réinitialise les champs du dictionnaire qui nécessitent d'être réinitialisés. /// </summary> /// <param name="dictionnaireOccupation">Dictionnaire d'occupation des régions.</param> private void Reinitialise(Dictionary <String, OccupationRegion> dictionnaireOccupation) { foreach (String region in this.Dictionnaire.Keys) { OccupationRegion occupation = dictionnaireOccupation[region]; this.Dictionnaire[region].Reinitialise(occupation); } }
/// <summary> /// Initialise l'image de la carte. /// </summary> /// <param name="carte">Image actuelle de la carte.</param> public void InitialiseCarte(Image carte, Graphics outilsGraphiques) { foreach (String nomRegion in this.ListeNomsRegions) { /// On fait deux fois les tests (y a-t-il un centre ? y a-t-il une unité ?), puisqu'ils sont aussi faits /// dans les fonctions de Pictogrammes. Mais cela permet de mieux saisir ce que l'on fait... GRegion regionActuelle = this.DictionnaireRegions[nomRegion]; OccupationRegion occupation = this.DictionnaireOccupation[nomRegion]; if (regionActuelle.EstUnCentre == true) { Pictogrammes.AffilieCentre(regionActuelle as Centre, occupation as OccupationCentre, carte, outilsGraphiques); } if (occupation.TypeUnite != EUnite.Aucune) { Pictogrammes.PlaceUnite(regionActuelle, occupation, carte, outilsGraphiques); } } }
/// <summary> /// Place une unité dans une région. /// </summary> /// <param name="region">Région dans laquelle placer une unité.</param> /// <param name="occupation">Occupation de la région.</param> /// <param name="carte">Image représentant la carte.</param> /// <param name="outilsGraphiques">Outils graphiques utilisés pour effectuer le dessin.</param> public static void PlaceUnite(GRegion region, OccupationRegion occupation, Image carte, Graphics outilsGraphiques) { if (occupation.TypeUnite != EUnite.Aucune) { String dossierActuel = Directory.GetCurrentDirectory(); String imageACharger; if (occupation.TypeUnite == EUnite.Flotte) { imageACharger = dossierActuel.Replace(@"diplo.IHM\bin\Debug", @"Images\Flotte"); } else { imageACharger = dossierActuel.Replace(@"diplo.IHM\bin\Debug", @"Images\Armée"); } String identificateurBelligerant = ((Int32)(occupation.PossesseurUnite)).ToString(); imageACharger = imageACharger + "0" + identificateurBelligerant + ".png"; Image imageUnite = new Bitmap(imageACharger); outilsGraphiques.DrawImage(imageUnite, region.CoordonneesUnite.X, region.CoordonneesUnite.Y); } }
/// <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> /// 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); } } }