// Boutons ------------------------------------------------------------------------------------------------------- private void boutonScinderClick() { if ((_jeu.selectedArmee != null) && (_jeu.selectedArmee.getTaille() != _group.Count) && (_group.Count > 0)) { // Crée une autre armée Armee nouvelle = new Armee(_jeu); // Déplace les créatures sélectionnées dedans foreach (Creature crea in _group) { _jeu.selectedArmee.removeCreature(crea); nouvelle.addCreature(crea); } // Déselectionne les armées sorites for (int i = 0; i < nouvelle.getTaille(); i++) { Creature crea = nouvelle.getCreature(i); _group.Remove(crea); } // Place la nouvelle armée à un emplacement libre à coté si il y a de la place Point?posNouvelle = nouvelle.getPositionLibre(_jeu.selectedArmee.positionCarte, true, true); // Si pas de place, annule tout ! if (posNouvelle == null) { _jeu.selectedArmee.ajouteTroupes(nouvelle); _jeu.messageInfo = "Pas de place pour placer cette armée"; } else { // Regarde si on a assez de mouvement pour aller jusqu'à la nouvelle position bool ok = true; for (int i = 0; i < nouvelle.getTaille(); i++) { Creature crea = nouvelle.getCreature(i); int mvtCost = crea.getMouvementCost(posNouvelle.Value, nouvelle); if (crea.mouvementCourant < mvtCost) { ok = false; break; } } if (!ok) { // annule tout ! _jeu.selectedArmee.ajouteTroupes(nouvelle); _jeu.messageInfo = "Plus assez de mouvement pour se séparer"; } else { // enlève le mouvement cette fois... Sinon on peut tricher avec des déplacements à coût 0 ! for (int i = 0; i < nouvelle.getTaille(); i++) { Creature crea = nouvelle.getCreature(i); int mvtCost = crea.getMouvementCost(posNouvelle.Value, nouvelle); crea.mouvementCourant -= mvtCost; } nouvelle.positionCarte = posNouvelle.Value; _jeu.addArmee(nouvelle); // change sans doute le mouvement et donc la trajectoire de l'armée sélectionnée _jeu.selectedArmee.reinitTrajectoire(); } } } }
//***************************************************************************************************************************** //***************************************************************************************************************************** /// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> //***************************************************************************************************************************** //***************************************************************************************************************************** protected override void LoadContent() { jeu.graphicsDevice = GraphicsDevice; // Create a new SpriteBatch, which can be used to draw textures. spriteBatch = new SpriteBatch(GraphicsDevice); // Factions ----------------------------------------------------------- Factions fact = new Factions(jeu); jeu.factions = fact; // Création de la carte ------------------------------------------------ // Carte de test System.Drawing.Bitmap carteTest = new System.Drawing.Bitmap( System.Reflection.Assembly.GetEntryAssembly(). GetManifestResourceStream("SeigneursDeGuerre.Rsc.Cartes.Carte_Campagne1.png")); TerrainDescription td = new TerrainDescription(carteTest); Terrain t = new Terrain(jeu); t.terrainDesc = td; jeu.terrain = t; carteTest.Dispose(); // Création des villes ------------------------------------------------------- Villes v = new Villes(jeu, "Cartes.Ville_Campagne1.txt"); jeu.villes = v; // Ruines & liste d'item disponible pour la carte ---------------------------- jeu.items = new Items(jeu, "RuinesItems.items.txt"); jeu.ruines = new Ruines(jeu); // Créatures ----------------------------------------------------------------- Creatures c = new Creatures(jeu, "Creatures.CreaturesBase.txt"); jeu.creatures = c; // Armées -------------------------------------------------------------------- // Ajoute une armée pour chaque ville du type max de construction (sauf bateau) foreach (VilleDescription vil in jeu.villes.villeDesc) { int typecrea; if ((vil.typeCreatures[vil.typeCreatures.Length - 1] == Creatures.TYPE_BATEAU) && (vil.typeCreatures.Length > 1)) { typecrea = vil.typeCreatures[vil.typeCreatures.Length - 2]; } else { typecrea = vil.typeCreatures[vil.typeCreatures.Length - 1]; } Creature crea = new Creature(jeu, typecrea, vil.faction, vil.positionMap); Armee armee = new Armee(jeu); armee.addCreature(crea); jeu.addArmee(armee); } // Gestionnaires -------------------------------------------------------------- InfoCarte infoC = new InfoCarte(jeu); jeu.infoCarte = infoC; InteractionJoueur ijoueur = new InteractionJoueur(jeu); jeu.interactionJoueur = ijoueur; IAJoue iajoue = new IAJoue(jeu); jeu.IAJoue = iajoue; // Chargement des textures utilitaires de base jeu.load(Content); // Chargements complémentaires statiques PanneauControle.load(Content); // Si fichier existe, le charger if (File.Exists(this.saveFile)) { // Minimap jeu.addOverlay(new Minimap(jeu, Overlay.Position.HAUT_DROITE)); // Paneau de contrôle jeu.addOverlay(new PanneauControle(jeu)); // charge le jeu jeu.loadGame(saveFile); } else { // Choix des factions -------------------------------------------------------- jeu.addOverlay(new FactionOverlay(jeu, delegate() { // Overlays de base ---------------------------------------------------------- jeu.tourFaction = 1; // Minimap jeu.addOverlay(new Minimap(jeu, Overlay.Position.HAUT_DROITE)); // Paneau de contrôle jeu.addOverlay(new PanneauControle(jeu)); // Actions de début de tour jeu.debutTour(); })); // Personne ne joue encore jeu.tourFaction = 0; } }