// 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();
                    }
                }
            }
        }
Exemple #2
0
        //*****************************************************************************************************************************
        //*****************************************************************************************************************************
        /// <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;
            }
        }