Beispiel #1
0
        /// ----------------------------------------------------------------------------------------
        /// <summary>
        /// Assign the costs.
        /// </summary>
        /// ----------------------------------------------------------------------------------------
        private void AssignCost(Armee creas)
        {
            // Cache les valeurs de terrain possible pour aller plus vite
            int cCol = creas.getMouvementCost(new TerrainDescription.TerrainCell(TerrainDescription.TypeTerrain.COLLINE));
            int cEau = creas.getMouvementCost(new TerrainDescription.TerrainCell(TerrainDescription.TypeTerrain.EAU));
            int cFor = creas.getMouvementCost(new TerrainDescription.TerrainCell(TerrainDescription.TypeTerrain.FORET));
            int cHer = creas.getMouvementCost(new TerrainDescription.TerrainCell(TerrainDescription.TypeTerrain.HERBE));
            int cMar = creas.getMouvementCost(new TerrainDescription.TerrainCell(TerrainDescription.TypeTerrain.MARECAGE));
            int cMon = creas.getMouvementCost(new TerrainDescription.TerrainCell(TerrainDescription.TypeTerrain.MONTAGNE));

            TerrainDescription.TerrainCell cell = new TerrainDescription.TerrainCell(TerrainDescription.TypeTerrain.HERBE);
            cell.route = true;
            int cRou = creas.getMouvementCost(cell);

            for (int i = 0; i < this.Hauteur; i++)
            {
                for (int j = 0; j < this.Largeur; j++)
                {
                    cell = _jeu.terrain.terrainDesc.getCellAt(j, i);
                    int cost = Creature.MVTINFINI;
                    if (cell.route)
                    {
                        cost = cRou;
                    }
                    else
                    {
                        switch (cell.type)
                        {
                        case TerrainDescription.TypeTerrain.COLLINE:
                            cost = cCol;
                            break;

                        case TerrainDescription.TypeTerrain.EAU:
                            cost = cEau;
                            break;

                        case TerrainDescription.TypeTerrain.FORET:
                            cost = cFor;
                            break;

                        case TerrainDescription.TypeTerrain.HERBE:
                            cost = cHer;
                            break;

                        case TerrainDescription.TypeTerrain.MARECAGE:
                            cost = cMar;
                            break;

                        case TerrainDescription.TypeTerrain.MONTAGNE:
                            cost = cMon;
                            break;
                        }
                    }
                    this._costs[j, i] = cost;
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Affiche l'overlay
        /// Appelé au sein d'un spriteBatch begin/end
        /// </summary>
        /// <param name="spriteBatch">spriteBatch du jeu</param>
        /// <param name="GraphicsDevice">gd du jeu</param>
        /// <param name="gameTime">temps du jeu</param>
        public override void draw(SpriteBatch spriteBatch, GraphicsDevice GraphicsDevice, GameTime gameTime)
        {
            // Appelle la base
            baseDraw(spriteBatch, GraphicsDevice, gameTime);
            // Affiche la carte - ignore l'eau
            for (int y = 0; y < _jeu.terrain.terrainDesc.getHauteur(); y++)
            {
                for (int x = 0; x < _jeu.terrain.terrainDesc.getLargeur(); x++)
                {
                    bool  drawSomething = true;
                    Color color1        = _colorFond;
                    int   taille        = TAILLE_CELL;
                    TerrainDescription.TerrainCell cell = _jeu.terrain.terrainDesc.getCellAt(x, y);
                    if (cell.ville)
                    {
                        // dépend de la faction
                        color1 = _jeu.factions.getFaction(_jeu.villes.villeDesc[cell.villeIndex].faction).couleur;
                        taille = TAILLE_CELL * 2;
                    }
                    else if (cell.ruine)
                    {
                        color1 = Color.FromNonPremultiplied(255, 255, 255, 255);
                    }
                    else if (cell.route)
                    {
                        color1 = Color.FromNonPremultiplied(165, 42, 42, ALPHA);
                    }
                    else
                    {
                        switch (cell.type)
                        {
                        case TerrainDescription.TypeTerrain.COLLINE:
                            color1 = Color.FromNonPremultiplied(255, 165, 0, ALPHA);
                            break;

                        case TerrainDescription.TypeTerrain.FORET:
                            color1 = Color.FromNonPremultiplied(0, 100, 0, ALPHA);
                            break;

                        case TerrainDescription.TypeTerrain.HERBE:
                            color1 = Color.FromNonPremultiplied(0, 128, 0, ALPHA);
                            break;

                        case TerrainDescription.TypeTerrain.MARECAGE:
                            color1 = Color.FromNonPremultiplied(143, 188, 139, ALPHA);
                            break;

                        case TerrainDescription.TypeTerrain.MONTAGNE:
                            color1 = Color.FromNonPremultiplied(128, 128, 128, ALPHA);
                            break;

                        case TerrainDescription.TypeTerrain.EAU:
                            drawSomething = false;
                            break;
                        }
                    }
                    if (drawSomething)
                    {
                        spriteBatch.Draw(_jeu.pixelBlanc, new Rectangle(_xoverlay + x * TAILLE_CELL,
                                                                        _yoverlay + y * TAILLE_CELL, taille, taille), null, color1, 0, Vector2.Zero, SpriteEffects.None, (taille == TAILLE_CELL ? 0.99f : 0.98f));
                    }
                }
            }
            // Affiche le cadre autour de la vision courante
            int xecran = (_jeu.terrain.offsetCarte.X / _jeu.blockSize) * TAILLE_CELL + _xoverlay;
            int yecran = (_jeu.terrain.offsetCarte.Y / _jeu.blockSize) * TAILLE_CELL + _yoverlay;
            int wecran = (_jeu.resX / _jeu.blockSize) * TAILLE_CELL + 1;
            int hecran = (_jeu.resY / _jeu.blockSize) * TAILLE_CELL + 1;

            spriteBatch.Draw(_jeu.pixelBlanc, new Rectangle(xecran, yecran, wecran, 1), null, Color.LightCoral, 0, Vector2.Zero, SpriteEffects.None, 0.97f);
            spriteBatch.Draw(_jeu.pixelBlanc, new Rectangle(xecran, yecran, 1, hecran), null, Color.LightCoral, 0, Vector2.Zero, SpriteEffects.None, 0.97f);
            spriteBatch.Draw(_jeu.pixelBlanc, new Rectangle(xecran, yecran + hecran, wecran + 1, 1), null, Color.LightCoral, 0, Vector2.Zero, SpriteEffects.None, 0.97f);
            spriteBatch.Draw(_jeu.pixelBlanc, new Rectangle(xecran + wecran, yecran, 1, hecran + 1), null, Color.LightCoral, 0, Vector2.Zero, SpriteEffects.None, 0.97f);
        }