/// <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; }
/// <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; } }
/// <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; } }
/// <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); }
/// <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); } }