/// <summary> /// Attaque d'une armée ennemie -- appelée aussi par l'IA /// </summary> /// <param name="cible">armée cible</param> /// <returns> true si on a gagné</returns> public bool attaqueArmee(List <Armee> cible) { Combat combat = new Combat(_jeu, _jeu.selectedArmee, cible); // Mode auto ou graphique if (_jeu.factions.getFaction(_jeu.tourFaction).humanPlayer || _jeu.factions.getFaction(cible[0].faction).humanPlayer) { // mode graphique ZoneCombat zc = new ZoneCombat(_jeu, combat, delegate(bool attaquantVainqueur) { if (!attaquantVainqueur) { _jeu.selectedArmee = null; } }); _jeu.addOverlay(zc); } else { bool resCombat = combat.combatAuto(); if (!resCombat) { // perdu ! _jeu.selectedArmee = null; } } return(_jeu.selectedArmee != null); }
/// <summary> /// Attaque d'une ville ennemie -- appelée aussi par l'IA /// </summary> /// <returns> true si on a gagné</returns> /// <param name="cible">ville cible</param> public bool attaqueVille(VilleDescription cible) { bool retVal = false; // Détermine toutes les armées de la ville List <Armee> garnison = new List <Armee>(); foreach (Armee arme in _jeu.armees) { if (cible.contains(arme.positionCarte)) { garnison.Add(arme); } } // Mode auto ou graphique if (_jeu.factions.getFaction(_jeu.tourFaction).humanPlayer || _jeu.factions.getFaction(cible.faction).humanPlayer) { if (garnison.Count != 0) { // Mode graphique Combat combat = new Combat(_jeu, _jeu.selectedArmee, garnison); ZoneCombat zc = new ZoneCombat(_jeu, combat, delegate(bool attaquantVainqueur) { if (!attaquantVainqueur) { _jeu.selectedArmee = null; } else { // On gagne cible.faction = _jeu.selectedArmee.faction; } }); _jeu.addOverlay(zc); } else { // On gagne cible.faction = _jeu.selectedArmee.faction; } } else { if (garnison.Count != 0) { attaqueArmee(garnison); } // Si il y a encore un attaquant, c'est la victoire ! if (_jeu.selectedArmee != null) { // Capture la ville cible.faction = _jeu.selectedArmee.faction; retVal = true; } } return(retVal); }