From 2755dcdd92f8211eabebc0793523b2c433e98d7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20V=C3=B6gele?= Date: Sun, 11 May 2014 21:23:51 +0200 Subject: [PATCH 1/2] =?UTF-8?q?=C3=9Cberlauftexturen=20f=C3=BCr=20Wald=20i?= =?UTF-8?q?n=20Code=20eingef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Gui/MapPanel.cs | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/src/Gui/MapPanel.cs b/src/Gui/MapPanel.cs index a9fa04c..cb2a966 100644 --- a/src/Gui/MapPanel.cs +++ b/src/Gui/MapPanel.cs @@ -17,6 +17,10 @@ namespace WorldOfPeacecraft private Image Dragon2; private Image Dragon3; private Image Forest; + private Image ForestLeft; + private Image ForestRight; + private Image ForestTop; + private Image ForestBottom; private Image Knight; private Image Walkable; private Image Water; @@ -35,6 +39,10 @@ namespace WorldOfPeacecraft Dragon2 = Image.FromFile (ImagesFolder + "dragon2.png"); Dragon3 = Image.FromFile (ImagesFolder + "dragon3.png"); Forest = Image.FromFile (ImagesFolder + "forest.png"); + ForestLeft = Image.FromFile (ImagesFolder + "forest_left.png"); + ForestRight = Image.FromFile (ImagesFolder + "forest_right.png"); + ForestTop = Image.FromFile (ImagesFolder + "forest_top.png"); + ForestBottom = Image.FromFile (ImagesFolder + "forest_bottom.png"); Knight = Image.FromFile (ImagesFolder + "knight.png"); Walkable = Image.FromFile (ImagesFolder + "walkable.jpg"); Water = Image.FromFile (ImagesFolder + "water.jpg"); @@ -96,9 +104,7 @@ namespace WorldOfPeacecraft FlowerCounter = 0; for (int y = 0; y < map.GetLength(1); y++) { for (int x = 0; x < map.GetLength(0); x++) { - int posx = x * TileSize; - int posy = y * TileSize; - PaintTile (g, map [x, y], posx, posy); + PaintTile (g, map, x, y); } } } @@ -107,8 +113,11 @@ namespace WorldOfPeacecraft } } - public void PaintTile (Graphics g, ITile tile, int x, int y) + public void PaintTile (Graphics g, ITile[,] map, int locx, int locy) { + ITile tile = map [locx, locy]; + int x = locx * TileSize; + int y = locy * TileSize; Image image = null; if (tile.IsWater ()) { image = Water; @@ -124,6 +133,18 @@ namespace WorldOfPeacecraft } if (tile.IsForest ()) { PaintImage (g, x, y, Forest); + if (locx > 0 && map[locx - 1,locy].IsForest()) { + PaintImage(g, x, y, ForestLeft); + } + if (locx < map.GetLength(0) - 1 && map[locx + 1,locy].IsForest()) { + PaintImage (g, x, y, ForestRight); + } + if (locy > 0 && map[locx, locy - 1].IsForest()) { + PaintImage (g, x, y, ForestTop); + } + if (locy < map.GetLength(1) - 1 && map[locx, locy + 1].IsForest()) { + PaintImage (g, x, y, ForestBottom); + } } else if (tile.IsWalkable()) { if (FlowerCounter == 4) { PaintImage (g, x, y, Flowers); @@ -137,7 +158,7 @@ namespace WorldOfPeacecraft PaintImage (g, x, y, BowAndArrow); } } - + public void PaintEntities (Graphics g) { IEnumerable dragons = Backend.GetDragons (); From 111dfc6634683fdec7e51d96d2c510ef5a2986b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20V=C3=B6gele?= Date: Sun, 11 May 2014 23:20:32 +0200 Subject: [PATCH 2/2] Strnad wird nun ums Wasser herum gezeichnet --- src/Gui/MapPanel.cs | 78 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 69 insertions(+), 9 deletions(-) diff --git a/src/Gui/MapPanel.cs b/src/Gui/MapPanel.cs index cb2a966..cf976ec 100644 --- a/src/Gui/MapPanel.cs +++ b/src/Gui/MapPanel.cs @@ -26,7 +26,14 @@ namespace WorldOfPeacecraft private Image Water; private Image Wall; private Image Flowers; - private Random random = new Random (); + private Image BeachTop; + private Image BeachBottom; + private Image BeachLeft; + private Image BeachRight; + private Image BeachTopLeft; + private Image BeachTopRight; + private Image BeachBottomLeft; + private Image BeachBottomRight; private int FlowerCounter; public MapPanel (IBackend backend) @@ -48,6 +55,21 @@ namespace WorldOfPeacecraft Water = Image.FromFile (ImagesFolder + "water.jpg"); Wall = Image.FromFile(ImagesFolder + "wall.jpg"); Flowers = Image.FromFile(ImagesFolder + "flowers.png"); + BeachBottom = Image.FromFile (ImagesFolder + "beach.png"); + BeachLeft = RotateFlipImage (BeachBottom, RotateFlipType.Rotate90FlipNone); + BeachTop = RotateFlipImage (BeachBottom, RotateFlipType.Rotate180FlipNone); + BeachRight = RotateFlipImage (BeachBottom, RotateFlipType.Rotate270FlipNone); + BeachBottomRight = Image.FromFile (ImagesFolder + "beachcorner.png"); + BeachBottomLeft = RotateFlipImage (BeachBottomRight, RotateFlipType.Rotate90FlipNone); + BeachTopLeft = RotateFlipImage (BeachBottomRight, RotateFlipType.Rotate180FlipNone); + BeachTopRight = RotateFlipImage (BeachBottomRight, RotateFlipType.Rotate270FlipNone); + } + + private Image RotateFlipImage(Image image, RotateFlipType type) + { + Image rotated = new Bitmap(image); + rotated.RotateFlip (type); + return rotated; } protected override void OnLayout (LayoutEventArgs levent) @@ -120,16 +142,54 @@ namespace WorldOfPeacecraft int y = locy * TileSize; Image image = null; if (tile.IsWater ()) { - image = Water; + PaintImage(g, x, y, Water); } else if (tile.IsWall ()) { - image = Wall; + PaintImage (g, x, y, Wall); } else { - image = Walkable; - } - if (image != null) { - PaintImage (g, x, y, image); - } else { - g.FillRectangle (new SolidBrush (Color.Red), x, y, TileSize, TileSize); + PaintImage (g, x, y, Walkable); + bool beachPlaced = false; + if (locx > 0 && map[locx - 1,locy].IsWater()) { + PaintImage(g, x, y, BeachLeft); + beachPlaced = true; + } + if (locx < map.GetLength(0) - 1 && map[locx + 1,locy].IsWater()) { + PaintImage (g, x, y, BeachRight); + beachPlaced = true; + } + if (locy > 0 && map[locx, locy - 1].IsWater()) { + PaintImage (g, x, y, BeachTop); + beachPlaced = true; + } + if (locy < map.GetLength(1) - 1 && map[locx, locy + 1].IsWater()) { + PaintImage (g, x, y, BeachBottom); + beachPlaced = true; + } + if (!beachPlaced) + { + if (locx > 0) + { + if (locy > 0 && map[locx - 1, locy - 1].IsWater()) + { + PaintImage (g, x, y, BeachTopLeft); + } + else if (locy < map.GetLength(1) - 1 && map[locx - 1, locy + 1].IsWater()) + { + PaintImage (g, x, y, BeachBottomLeft); + } + } + if (locx < map.GetLength(0) - 1) + { + if (locy > 0 && map[locx + 1, locy - 1].IsWater()) + { + PaintImage (g, x, y, BeachTopRight); + } + else if (locy < map.GetLength(1) - 1 && map[locx + 1, locy + 1].IsWater()) + { + PaintImage (g, x, y, BeachBottomRight); + } + } + + } } if (tile.IsForest ()) { PaintImage (g, x, y, Forest);