Преглед на файлове

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

Kajetan Johannes Hammerle преди 4 години
родител
ревизия
3273d87d0b
променени са 5 файла, в които са добавени 40 реда и са изтрити 19 реда
  1. BIN
      resources/tiles.png
  2. BIN
      resources/tiles.xcf
  3. BIN
      resources/tiles_2_temp.png
  4. 23 19
      src/pathgame/rendering/TileMapRenderer.java
  5. 17 0
      src/pathgame/tilemap/TileMapGenerator.java

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;
     }
+    
+    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)
     {
@@ -82,6 +87,11 @@ public class TileMapRenderer
                 tMinX + T_ERROR, tMinY + 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)
     {
@@ -102,7 +112,7 @@ public class TileMapRenderer
         TileRenderType type = map.getTile(x, y).getRenderType();
         return type == TileRenderType.SWAMP || type == TileRenderType.WATER;
     }
-
+    
     private void addWaterSwampOverlay(TileMap map, int x, int y)
     {
         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
         {
-            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
         {
-            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
         {
-            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
         {
-            addTile(swampWaterOverlayRenderer, x, y, 0.0f, 0.0f, 0.5f, 0.5f);
+            addTileOverlay(swampWaterOverlayRenderer, x, y, 4, 13);
         }
 
         int index = 0;
@@ -136,11 +146,7 @@ public class TileMapRenderer
         {
             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)
@@ -152,19 +158,19 @@ public class TileMapRenderer
 
         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
         {
-            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
         {
-            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
         {
-            addTile(grassOverlayRenderer, x, y, 0.0f, 0.0f, 0.5f, 0.5f);
+            addTileOverlay(grassOverlayRenderer, x, y, 0, 13);
         }
 
         int index = 0;
@@ -177,9 +183,7 @@ public class TileMapRenderer
             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)
@@ -197,7 +201,7 @@ public class TileMapRenderer
                 {
                     continue;
                 }
-                /*if(t.getRenderType() == TileRenderType.WATER)
+                if(t.getRenderType() == TileRenderType.WATER)
                 {
                     addWaterSwampOverlay(map, x, y);
                     addGrassOverlay(map, x, y);
@@ -205,7 +209,7 @@ public class TileMapRenderer
                 else if(t.getRenderType() == TileRenderType.SWAMP)
                 {
                     addGrassOverlay(map, x, y);
-                }*/
+                }
                 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;
         generateForest(map, r, forestSize, 10, 2, Tiles.FOREST);
         generateForest(map, r, forestSize, 5, 2, Tiles.SWAMP, Tiles.SWAMP, Tiles.SWAMP_DECO, Tiles.SWAMP_TREE);
+        removeBadSwampTree(map);
         
         generateTowns(map, r, towns);
         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)
     {
         if(tiles.length == 1)