/// ---------------------------------------------------------------------------------------- /// <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; } } }
/// <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); }