Exemple #1
0
 /// <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.");
     }
 }
Exemple #2
0
        /// <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();
        }
Exemple #3
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();
                }
            }
        }