Browse Source

added swamp <-> water water / swamp <-> grass borders with texture

Kajetan Johannes Hammerle 4 years ago
parent
commit
3273d87d0b

BIN
resources/tiles.png


BIN
resources/tiles.xcf


BIN
resources/tiles_2_temp.png


+ 23 - 19
src/pathgame/rendering/TileMapRenderer.java

@@ -73,6 +73,11 @@ public class TileMapRenderer
     {
     {
         return map.getHeight() * TileRenderer.TILE_SIZE * scale;
         return map.getHeight() * TileRenderer.TILE_SIZE * scale;
     }
     }
+    
+    private float toTexture(int x)
+    {
+        return x * TileRenderer.TILE_SIZE / TileTexture.TEXTURE_SIZE;
+    }
 
 
     private void addTile(TextureRenderer tr, int x, int y, float tMinX, float tMinY, float tMaxX, float tMaxY)
     private void addTile(TextureRenderer tr, int x, int y, float tMinX, float tMinY, float tMaxX, float tMaxY)
     {
     {
@@ -82,6 +87,11 @@ public class TileMapRenderer
                 tMinX + T_ERROR, tMinY + T_ERROR,
                 tMinX + T_ERROR, tMinY + T_ERROR,
                 tMaxX - T_ERROR, tMaxY - T_ERROR);
                 tMaxX - T_ERROR, tMaxY - T_ERROR);
     }
     }
+    
+    private void addTileOverlay(TextureRenderer tr, int x, int y, int ox, int oy)
+    {
+        addTile(tr, x, y, toTexture(ox), toTexture(oy), toTexture(ox + 1), toTexture(oy + 1));
+    }
 
 
     private boolean isInRange(TileMap map, int x, int y)
     private boolean isInRange(TileMap map, int x, int y)
     {
     {
@@ -102,7 +112,7 @@ public class TileMapRenderer
         TileRenderType type = map.getTile(x, y).getRenderType();
         TileRenderType type = map.getTile(x, y).getRenderType();
         return type == TileRenderType.SWAMP || type == TileRenderType.WATER;
         return type == TileRenderType.SWAMP || type == TileRenderType.WATER;
     }
     }
-
+    
     private void addWaterSwampOverlay(TileMap map, int x, int y)
     private void addWaterSwampOverlay(TileMap map, int x, int y)
     {
     {
         boolean n = isSwamp(map, x, y - 1);
         boolean n = isSwamp(map, x, y - 1);
@@ -112,19 +122,19 @@ public class TileMapRenderer
 
 
         if(!n && !w && isSwamp(map, x - 1, y - 1)) // upper, left corner
         if(!n && !w && isSwamp(map, x - 1, y - 1)) // upper, left corner
         {
         {
-            addTile(swampWaterOverlayRenderer, x, y, 0.0f, 0.0f, 0.5f, 0.5f);
+            addTileOverlay(swampWaterOverlayRenderer, x, y, 7, 13);
         }
         }
         if(!n && !e && isSwamp(map, x + 1, y - 1)) // upper, right corner
         if(!n && !e && isSwamp(map, x + 1, y - 1)) // upper, right corner
         {
         {
-            addTile(swampWaterOverlayRenderer, x, y, 0.0f, 0.0f, 0.5f, 0.5f);
+            addTileOverlay(swampWaterOverlayRenderer, x, y, 6, 13);
         }
         }
         if(!s && !w && isSwamp(map, x - 1, y + 1)) // lower, left corner
         if(!s && !w && isSwamp(map, x - 1, y + 1)) // lower, left corner
         {
         {
-            addTile(swampWaterOverlayRenderer, x, y, 0.0f, 0.0f, 0.5f, 0.5f);
+            addTileOverlay(swampWaterOverlayRenderer, x, y, 5, 13);
         }
         }
         if(!s && !e && isSwamp(map, x + 1, y + 1)) // lower, right corner
         if(!s && !e && isSwamp(map, x + 1, y + 1)) // lower, right corner
         {
         {
-            addTile(swampWaterOverlayRenderer, x, y, 0.0f, 0.0f, 0.5f, 0.5f);
+            addTileOverlay(swampWaterOverlayRenderer, x, y, 4, 13);
         }
         }
 
 
         int index = 0;
         int index = 0;
@@ -136,11 +146,7 @@ public class TileMapRenderer
         {
         {
             return;
             return;
         }
         }
-
-        float tMinX = index * TileRenderer.TILE_SIZE / TileTexture.TEXTURE_SIZE;
-        float tMaxX = (index + 1) * TileRenderer.TILE_SIZE / TileTexture.TEXTURE_SIZE;
-
-        addTile(swampWaterOverlayRenderer, x, y, tMinX, 0.0f, tMaxX, 0.5f);
+        addTileOverlay(swampWaterOverlayRenderer, x, y, index, 15);
     }
     }
 
 
     private void addGrassOverlay(TileMap map, int x, int y)
     private void addGrassOverlay(TileMap map, int x, int y)
@@ -152,19 +158,19 @@ public class TileMapRenderer
 
 
         if(n && w && !isSwampOrWaterOrBorder(map, x - 1, y - 1)) // upper, left corner
         if(n && w && !isSwampOrWaterOrBorder(map, x - 1, y - 1)) // upper, left corner
         {
         {
-            addTile(grassOverlayRenderer, x, y, 0.0f, 0.0f, 0.5f, 0.5f);
+            addTileOverlay(grassOverlayRenderer, x, y, 3, 13);
         }
         }
         if(n && e && !isSwampOrWaterOrBorder(map, x + 1, y - 1)) // upper, right corner
         if(n && e && !isSwampOrWaterOrBorder(map, x + 1, y - 1)) // upper, right corner
         {
         {
-            addTile(grassOverlayRenderer, x, y, 0.0f, 0.0f, 0.5f, 0.5f);
+            addTileOverlay(grassOverlayRenderer, x, y, 2, 13);
         }
         }
         if(s && w && !isSwampOrWaterOrBorder(map, x - 1, y + 1)) // lower, left corner
         if(s && w && !isSwampOrWaterOrBorder(map, x - 1, y + 1)) // lower, left corner
         {
         {
-            addTile(grassOverlayRenderer, x, y, 0.0f, 0.0f, 0.5f, 0.5f);
+            addTileOverlay(grassOverlayRenderer, x, y, 1, 13);
         }
         }
         if(s && e && !isSwampOrWaterOrBorder(map, x + 1, y + 1)) // lower, right corner
         if(s && e && !isSwampOrWaterOrBorder(map, x + 1, y + 1)) // lower, right corner
         {
         {
-            addTile(grassOverlayRenderer, x, y, 0.0f, 0.0f, 0.5f, 0.5f);
+            addTileOverlay(grassOverlayRenderer, x, y, 0, 13);
         }
         }
 
 
         int index = 0;
         int index = 0;
@@ -177,9 +183,7 @@ public class TileMapRenderer
             return;
             return;
         }
         }
 
 
-        float tMinX = index * TileRenderer.TILE_SIZE / TileTexture.TEXTURE_SIZE;
-        float tMaxX = (index + 1) * TileRenderer.TILE_SIZE / TileTexture.TEXTURE_SIZE;
-        addTile(grassOverlayRenderer, x, y, tMinX, 0.0f, tMaxX, 0.5f);
+        addTileOverlay(grassOverlayRenderer, x, y, index, 14);
     }
     }
 
 
     private void updateData(TileMap map)
     private void updateData(TileMap map)
@@ -197,7 +201,7 @@ public class TileMapRenderer
                 {
                 {
                     continue;
                     continue;
                 }
                 }
-                /*if(t.getRenderType() == TileRenderType.WATER)
+                if(t.getRenderType() == TileRenderType.WATER)
                 {
                 {
                     addWaterSwampOverlay(map, x, y);
                     addWaterSwampOverlay(map, x, y);
                     addGrassOverlay(map, x, y);
                     addGrassOverlay(map, x, y);
@@ -205,7 +209,7 @@ public class TileMapRenderer
                 else if(t.getRenderType() == TileRenderType.SWAMP)
                 else if(t.getRenderType() == TileRenderType.SWAMP)
                 {
                 {
                     addGrassOverlay(map, x, y);
                     addGrassOverlay(map, x, y);
-                }*/
+                }
                 addTile(textureRenderer, x, y, tt.getMinX(), tt.getMinY(), tt.getMaxX(), tt.getMaxY());
                 addTile(textureRenderer, x, y, tt.getMinX(), tt.getMinY(), tt.getMaxX(), tt.getMaxY());
             }
             }
         }
         }

+ 17 - 0
src/pathgame/tilemap/TileMapGenerator.java

@@ -67,6 +67,7 @@ public class TileMapGenerator
         forestSize *= forestSize;
         forestSize *= forestSize;
         generateForest(map, r, forestSize, 10, 2, Tiles.FOREST);
         generateForest(map, r, forestSize, 10, 2, Tiles.FOREST);
         generateForest(map, r, forestSize, 5, 2, Tiles.SWAMP, Tiles.SWAMP, Tiles.SWAMP_DECO, Tiles.SWAMP_TREE);
         generateForest(map, r, forestSize, 5, 2, Tiles.SWAMP, Tiles.SWAMP, Tiles.SWAMP_DECO, Tiles.SWAMP_TREE);
+        removeBadSwampTree(map);
         
         
         generateTowns(map, r, towns);
         generateTowns(map, r, towns);
         generatePorts(map, r);
         generatePorts(map, r);
@@ -122,6 +123,22 @@ public class TileMapGenerator
         }
         }
     }
     }
     
     
+    private static void removeBadSwampTree(TileMap map)
+    {
+        for(int x = 0; x < map.getWidth(); x++)
+        {
+            for(int y = 0; y < map.getHeight(); y++)
+            {
+               if(map.getTile(x, y) == Tiles.SWAMP_TREE && 
+                       ((x > 0 && map.getTile(x - 1, y).getRenderType() != TileRenderType.SWAMP) || 
+                       (y > 0 && map.getTile(x, y - 1).getRenderType() != TileRenderType.SWAMP)))
+               {
+                   map.setTile(x, y, Tiles.SWAMP);
+               }
+            }
+        }
+    }
+    
     private static Tile randomTile(Tile[] tiles, Random r)
     private static Tile randomTile(Tile[] tiles, Random r)
     {
     {
         if(tiles.length == 1)
         if(tiles.length == 1)