Пример #1
0
 /// <summary>
 /// Enregistre un ordre de convoi.
 /// </summary>
 /// <param name="ordre">Ordre à enregistrer dans le dictionnaire.</param>
 public void EnregistreConvoi(Convoyer ordre)
 {
     this.ForceDefensive = 1;
     this.TypeOrdre      = EOrdre.Convoi;
     this.RegionCiblee   = ordre.RegionSoutenue;
     this.TypeUnite      = ordre.Unite;
     this.Possesseur     = ordre.Belligerant;
 }
Пример #2
0
        /// <summary>
        /// Coupe le convoi correspondant à l'ordre donné.
        /// </summary>
        /// <param name="ordre">Ordre à appliquer.</param>
        private void CoupeConvoi(Convoyer ordre)
        {
            OrdreRegional ordreRegional = this.Dictionnaire[ordre.Region];

            if (ordreRegional.ForceDefensive < 0)
            {
                ordreRegional.TypeOrdre = EOrdre.ConvoiCoupe;
            }
        }
Пример #3
0
        /// <summary>
        /// Rétablit le soutien coupé par un convoi lui-même coupé.
        /// </summary>
        /// <param name="ordre">Ordre à appliquer.</param>
        private void RetablitSoutien(Convoyer ordre)
        {
            OrdreRegional ordreRegional = this.Dictionnaire[ordre.Region];

            if (ordreRegional.TypeOrdre == EOrdre.ConvoiCoupe)
            {
                OrdreRegional ordreSoutenu = this.Dictionnaire[ordre.RegionSoutenue];

                this.Dictionnaire[ordre.RegionAttaquee].ForceDefensive += ordreSoutenu.ForceOffensive;
                ordreSoutenu.ForceOffensive = 0;
            }
        }
Пример #4
0
        /// <summary>
        /// Teste la validité d'un ordre de convoi.
        /// </summary>
        /// <param name="ordreATester">Ordre de convoi dont il faut tester la validité.</param>
        /// <param name="regionsMaritimesImpliquees">Liste des régions maritimes impliquées dans le convoi.</param>
        /// <returns>Vrai si l'ordre est valide, faux sinon.</returns>
        private Boolean TesteValiditeConvoi(Convoyer ordreATester, List <String> regionsMaritimesImpliquees)
        {
            Boolean valeurARetourner = (this.dictionnaireRegions[ordreATester.Region].TypeRegion == ETypeRegion.Maritime);

            valeurARetourner = valeurARetourner && (this.dictionnaireRegions[ordreATester.RegionSoutenue].TypeRegion == ETypeRegion.Côtière);
            valeurARetourner = valeurARetourner && (this.dictionnaireRegions[ordreATester.RegionAttaquee].TypeRegion == ETypeRegion.Côtière);
            valeurARetourner = valeurARetourner && this.dictionnaireAdjacence.DetermineConvoi(
                ordreATester.RegionSoutenue,
                ordreATester.RegionAttaquee,
                regionsMaritimesImpliquees);

            return(valeurARetourner);
        }
Пример #5
0
        /// <summary>
        /// Retourne l'ordre associé au contrôle.
        /// </summary>
        /// <returns>Ordre associé au contrôle.</returns>
        public OrdreAbstrait RetourneOrdre()
        {
            String[] ordre = this.Ordre.Text.Split(' ');

            String       regionConcernee = this.region.Text;
            EUnite       unite           = Convertisseurs.DepuisEUniteAbrege(this.Unite.Text);
            EBelligerant belligerant     = Convertisseurs.DepuisEBelligerantAbrege(this.Belligerant.Text);

            if (ordre[0] == "-")
            {
                String   regionAttaquee = ordre[1];
                Attaquer attaque        = new Attaquer(unite, belligerant, regionConcernee, regionAttaquee);
                return(attaque);
            }
            else if (ordre[0] == "c")
            {
                String regionAttaquante = ordre[1];
                String regionAttaquee   = ordre[3];

                Convoyer convoi = new Convoyer(belligerant, regionConcernee, regionAttaquante, regionAttaquee);
                return(convoi);
            }
            else if (ordre[0] == "s")
            {
                if (ordre.Length < 4)
                {
                    String regionSoutenue = ordre[1];

                    SoutenirDefensif soutieDefensif = new SoutenirDefensif(unite, belligerant, regionConcernee, regionSoutenue);
                    return(soutieDefensif);
                }
                else
                {
                    String regionAttaquante = ordre[1];
                    String regionAttaquee   = ordre[3];

                    SoutenirOffensif soutienOffensif = new SoutenirOffensif(
                        unite,
                        belligerant,
                        regionConcernee,
                        regionAttaquante,
                        regionAttaquee);
                    return(soutienOffensif);
                }
            }
            else
            {
                Tenir tenir = new Tenir(unite, belligerant, regionConcernee);
                return(tenir);
            }
        }