예제 #1
0
        /// <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();
        }
예제 #2
0
 /// <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);
     }
 }
예제 #3
0
        /// <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);
                }
            }
        }
예제 #4
0
        /// <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);
            }
        }
예제 #5
0
        /// <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();
                }
            }
        }
예제 #6
0
        /// <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);
                }
            }
        }