diff --git a/src/Gui/MapPanel.cs b/src/Gui/MapPanel.cs index 82a6965..a9fa04c 100644 --- a/src/Gui/MapPanel.cs +++ b/src/Gui/MapPanel.cs @@ -20,8 +20,10 @@ namespace WorldOfPeacecraft private Image Knight; private Image Walkable; private Image Water; - private Dictionary dragonImageMappings = new Dictionary(); + private Image Wall; + private Image Flowers; private Random random = new Random (); + private int FlowerCounter; public MapPanel (IBackend backend) { @@ -36,6 +38,8 @@ namespace WorldOfPeacecraft Knight = Image.FromFile (ImagesFolder + "knight.png"); Walkable = Image.FromFile (ImagesFolder + "walkable.jpg"); Water = Image.FromFile (ImagesFolder + "water.jpg"); + Wall = Image.FromFile(ImagesFolder + "wall.jpg"); + Flowers = Image.FromFile(ImagesFolder + "flowers.png"); } protected override void OnLayout (LayoutEventArgs levent) @@ -89,6 +93,7 @@ namespace WorldOfPeacecraft { ITile[,] map = Backend.GetMap (); if (map != null) { + FlowerCounter = 0; for (int y = 0; y < map.GetLength(1); y++) { for (int x = 0; x < map.GetLength(0); x++) { int posx = x * TileSize; @@ -107,20 +112,26 @@ namespace WorldOfPeacecraft Image image = null; if (tile.IsWater ()) { image = Water; - } - else { + } else if (tile.IsWall ()) { + image = Wall; + } else { image = Walkable; } if (image != null) { PaintImage (g, x, y, image); } else { - g.FillRectangle(new SolidBrush(Color.Red), x, y, TileSize, TileSize); - } - if (tile.IsWall ()) { - g.FillEllipse(new SolidBrush(Color.Gray), x + 3, y + 3, TileSize - 6 , TileSize - 6); + g.FillRectangle (new SolidBrush (Color.Red), x, y, TileSize, TileSize); } if (tile.IsForest ()) { PaintImage (g, x, y, Forest); + } else if (tile.IsWalkable()) { + if (FlowerCounter == 4) { + PaintImage (g, x, y, Flowers); + FlowerCounter = 0; + } + else { + FlowerCounter++; + } } if (tile.IsHuntable ()) { PaintImage (g, x, y, BowAndArrow); @@ -133,12 +144,8 @@ namespace WorldOfPeacecraft IEnumerable players = Backend.GetPlayers (); foreach (IEntity dragon in dragons) { int id = dragon.GetId(); - if (!dragonImageMappings.ContainsKey(id)) - { - dragonImageMappings[id] = random.Next (3); - } Image image; - switch (dragonImageMappings[id]) + switch (Math.Abs(id % 3)) { case 0: image = Dragon1; @@ -150,7 +157,7 @@ namespace WorldOfPeacecraft image = Dragon3; break; default: - throw new Exception("dragonImageMapping '" + dragonImageMappings[id] + "' doesn't exist"); + throw new Exception("There is no image for dragon id '" + id + "' (this should never happen)"); } PaintImage(g, dragon.GetX() * TileSize, dragon.GetY() * TileSize, image); } diff --git a/textures/bow-and-arrow.png b/textures/bow-and-arrow.png index 026d45b..b03d6f9 100644 Binary files a/textures/bow-and-arrow.png and b/textures/bow-and-arrow.png differ diff --git a/textures/wall.jpg b/textures/wall.jpg index 4b8fa4a..c33c1c0 100644 Binary files a/textures/wall.jpg and b/textures/wall.jpg differ diff --git a/textures/water.jpg b/textures/water.jpg index 34406ef..663eda5 100644 Binary files a/textures/water.jpg and b/textures/water.jpg differ