// Ajoute une armée nouvellement créée public void addArmee(Armee armee) { // fusion des armées si une armée est déjà à cet emplacement foreach (Armee autre in _armees) { if (autre.positionCarte == armee.positionCarte) { // Fusionne les deux si c'est possible if (autre.getTaille() + armee.getTaille() > Armee.MAX_TAILLE) { Point pt = armee.getPositionLibre(armee.positionCarte, false, false).Value; armee.positionCarte = pt; // récursif addArmee(armee); return; } else { autre.ajouteTroupes(armee); } return; } } // Toute seule _armees.Add(armee); }
/// <summary> /// Création d'un nouvel héros pour la faction courante /// </summary> /// <param name="nom">nom du héros</param> /// <param name="femme">true si femme</param> /// <param name="allies">true si on ajoute des alliés</param> public void createHeros(string nom, bool femme, bool allies) { // Choix de la ville List <VilleDescription> villesFaction = new List <VilleDescription>(); foreach (VilleDescription vd in _jeu.villes.villeDesc) { if (vd.faction == _jeu.tourFaction) { villesFaction.Add(vd); } } if (villesFaction.Count != 0) { VilleDescription vd = villesFaction[_jeu.rnd.Next(villesFaction.Count)]; int herosType = femme ? TYPE_HEROS : TYPE_HEROINE; Creature heros = new Creature(_jeu, herosType, vd.faction, vd.positionMap); heros.vraiNom = nom; // Possède un étendard heros.addItem(_jeu.items.itemDesc[Items.ETENDARD]); Armee armee = new Armee(_jeu); armee.addCreature(heros); // Alliés éventuels : types 19-27 int nbAllie = 0; if (allies) { int typeAllie = _jeu.rnd.Next(TYPE_ALLIEMAX + 1 - TYPE_ALLIEMIN) + TYPE_ALLIEMIN; nbAllie = _jeu.rnd.Next(3) + 1; for (int i = 0; i < nbAllie; i++) { armee.addCreature(new Creature(_jeu, typeAllie, vd.faction, vd.positionMap)); } } armee.positionCarte = armee.getPositionLibre(armee.positionCarte, false, false).Value; _jeu.addArmee(armee); if (allies) { _jeu.messageInfo = nom + " est accompagné" + (femme ? "e" : "") + " de " + nbAllie + " allié" + (nbAllie > 1 ? "s" : "") + " et se trouve à " + vd.nom; } else { _jeu.messageInfo = nom + " se trouve à " + vd.nom; } } }