예제 #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.");
     }
 }
예제 #2
0
 /// <summary>
 /// Supprime arbitrairement une unité de la carte.
 /// </summary>
 /// <param name="nomRegion">Nom de la région dans laquelle supprimer une unité.</param>
 /// <param name="carte">Image représentant la carte.</param>
 /// <param name="outilsGraphiques">Outils graphiques utilisés pour effectuer le dessin.</param>
 public void SupprimeUnite(String nomRegion, Image carte, Graphics outilsGraphiques)
 {
     if (this.DictionnaireOccupation.Keys.Contains(nomRegion) == true)
     {
         this.DictionnaireOccupation[nomRegion].DetruitOuAbandonne();
         Pictogrammes.PlaceUnite(
             this.DictionnaireRegions[nomRegion],
             this.DictionnaireOccupation[nomRegion],
             carte,
             outilsGraphiques);
     }
     else
     {
         throw new Exception("La région n'existe pas, ou est mal définie.");
     }
 }
예제 #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>
        /// Finit le tour en cours.
        /// </summary>
        /// <param name="retraites">Indique s'il s'agit d'un tour de retraites ou non.</param>
        /// <param name="ordres">Liste des ordres donnés pour le tour.</param>
        /// <param name="carte">Image représentant la carte.</param>
        /// <param name="outilsGraphiques">Outils graphiques utilisés pour effectuer le dessin.</param>
        public void FinitTour(Boolean retraites, List <OrdreAbstrait> ordres, Image carte, Graphics outilsGraphiques)
        {
            ListeOrdres listeOrdres = new ListeOrdres(
                ordres,
                this.DictionnaireAdjacence,
                this.dictionnaireRegions,
                this.DictionnaireOccupation);
            List <OrdreAbstrait> ordresValides = listeOrdres.OrdresValides;

            this.dictionnaireOrdres.EnregistreOrdres(ordresValides, this.DictionnaireOccupation);
            this.dictionnaireOrdres.AppliqueOrdres(ordresValides);

            foreach (OrdreRegional ordreRegional in this.dictionnaireOrdres.Dictionnaire.Values)
            {
                if (ordreRegional.TypeOrdre != EOrdre.Tenir)
                {
                    GRegion regionConcerne = this.DictionnaireRegions[ordreRegional.Region];
                    GRegion regionCiblee   = this.DictionnaireRegions[ordreRegional.RegionCiblee];
                    switch (ordreRegional.TypeOrdre)
                    {
                    case EOrdre.AttaqueReussie:
                        Pictogrammes.TraceAttaque(regionConcerne, regionCiblee, ordreRegional.Possesseur, carte, outilsGraphiques);
                        this.IntegreAttaqueReussie(retraites, ordreRegional);
                        break;

                    case EOrdre.AttaqueEchouee:
                        Pictogrammes.TraceAttaqueRatee(regionConcerne, regionCiblee, ordreRegional.Possesseur, carte, outilsGraphiques);
                        break;

                    case EOrdre.Convoi:
                        GRegion regionArrivee = this.DictionnaireRegions[this.dictionnaireOrdres.Dictionnaire[regionCiblee.Nom].RegionCiblee];
                        Pictogrammes.TraceTransport(regionConcerne, regionCiblee, regionArrivee, ordreRegional.Possesseur, carte, outilsGraphiques);
                        break;

                    case EOrdre.ConvoiCoupe:
                        GRegion regionArriveeBis = this.DictionnaireRegions[this.dictionnaireOrdres.Dictionnaire[regionCiblee.Nom].RegionCiblee];
                        Pictogrammes.TraceTransportInterrompu(regionConcerne, regionCiblee, regionArriveeBis, ordreRegional.Possesseur, carte, outilsGraphiques);
                        break;

                    case EOrdre.SoutienDefensif:
                        Pictogrammes.TraceSoutienDefensif(regionConcerne, regionCiblee, ordreRegional.Possesseur, carte, outilsGraphiques);
                        break;

                    case EOrdre.SoutienDefensifCoupe:
                        Pictogrammes.TraceSoutienDefensifCoupe(regionConcerne, regionCiblee, ordreRegional.Possesseur, carte, outilsGraphiques);
                        break;

                    case EOrdre.SoutienOffensif:
                        GRegion regionAttaquee = this.DictionnaireRegions[this.dictionnaireOrdres.Dictionnaire[regionCiblee.Nom].RegionCiblee];
                        Pictogrammes.TraceSoutienOffensif(regionConcerne, regionCiblee, regionAttaquee, ordreRegional.Possesseur, carte, outilsGraphiques);
                        break;

                    case EOrdre.SoutienOffensifCoupe:
                        GRegion regionAttaqueeBis = this.DictionnaireRegions[this.dictionnaireOrdres.Dictionnaire[regionCiblee.Nom].RegionCiblee];
                        Pictogrammes.TraceSoutienOffensifCoupe(regionConcerne, regionCiblee, regionAttaqueeBis, ordreRegional.Possesseur, carte, outilsGraphiques);
                        break;

                    default:
                        break;
                    }
                }
            }

            this.NettoieDictionnaireOccupation();
            this.ListeRetraites = this.dictionnaireOrdres.Dictionnaire.Values.Where(item => item.Retraite == true && item.TypeUnite != EUnite.Aucune).ToList();
        }