Преглед изворни кода

water animation (base + waves)

Kajetan Johannes Hammerle пре 4 година
родитељ
комит
73afd68a27

BIN
resources/Thumbs.db


BIN
resources/tiles.png


BIN
resources/tiles.xcf


BIN
resources/waves/wave1.png


BIN
resources/waves/wave10.png


BIN
resources/waves/wave11.png


BIN
resources/waves/wave12.png


BIN
resources/waves/wave13.png


BIN
resources/waves/wave14.png


BIN
resources/waves/wave15.png


BIN
resources/waves/wave16.png


BIN
resources/waves/wave17.png


BIN
resources/waves/wave18.png


BIN
resources/waves/wave19.png


BIN
resources/waves/wave2.png


BIN
resources/waves/wave20.png


BIN
resources/waves/wave3.png


BIN
resources/waves/wave4.png


BIN
resources/waves/wave5.png


BIN
resources/waves/wave6.png


BIN
resources/waves/wave7.png


BIN
resources/waves/wave8.png


BIN
resources/waves/wave9.png


+ 26 - 1
src/pathgame/rendering/TileMapRenderer.java

@@ -25,6 +25,7 @@ public class TileMapRenderer
     private final Texture tileTexture = new Texture("resources/tiles.png");
     private final TextureRenderer textureRenderer = new TextureRenderer(20 * 20 * 2); // default to 20x20 map
     private final TextureRenderer swampWaterOverlayRenderer = new TextureRenderer(20 * 20 * 2); // default to 20x20 map
+    private final TextureRenderer waveRenderer = new TextureRenderer(20 * 20 * 2); // default to 20x20 map
     private final TextureRenderer grassOverlayRenderer = new TextureRenderer(20 * 20 * 2); // default to 20x20 map
     private float scale = 1.0f;
     
@@ -32,7 +33,20 @@ public class TileMapRenderer
     {
         "&a1", "&a2", "&a3", "&e4", "&e5", "&66", "&67", "&68", "&c9"
     };
-
+    
+    private static String[] getWavePath()
+    {
+        String[] path = new String[20];
+        for(int i = 0; i < path.length; i++)
+        {
+            path[i] = "resources/waves/wave" + (i + 1) + ".png";
+        }
+        return path;
+    }
+    
+    private final Texture.Animation waves = tileTexture.addAnimation((int) (8 * TileRenderer.TILE_SIZE), (int) (2 * TileRenderer.TILE_SIZE), getWavePath());
+    private int counter = 0;
+    
     /**
      * Creates a new tile map renderer.
      *
@@ -199,6 +213,7 @@ public class TileMapRenderer
     {
         textureRenderer.clear();
         swampWaterOverlayRenderer.clear();
+        waveRenderer.clear();
         grassOverlayRenderer.clear();
         for(int x = 0; x < map.getWidth(); x++)
         {
@@ -214,6 +229,7 @@ public class TileMapRenderer
                 {
                     addWaterSwampOverlay(map, x, y);
                     addGrassOverlay(map, x, y);
+                    addTileOverlay(waveRenderer, x, y, 8, 2);
                 }
                 else if(t.getRenderType() == TileRenderType.SWAMP)
                 {
@@ -224,6 +240,7 @@ public class TileMapRenderer
         }
         textureRenderer.build();
         swampWaterOverlayRenderer.build();
+        waveRenderer.build();
         grassOverlayRenderer.build();
     }
 
@@ -234,6 +251,13 @@ public class TileMapRenderer
     public void tick()
     {
         // tick tile animations here
+        counter++;
+        if(counter >= 1)
+        {
+            tileTexture.bind();
+            waves.nextFrame();
+            counter = 0;
+        }
     }
 
     /**
@@ -267,6 +291,7 @@ public class TileMapRenderer
         r.scale(scale, scale);
         r.updateMatrix();
         textureRenderer.draw();
+        waveRenderer.draw();
         swampWaterOverlayRenderer.draw();
         grassOverlayRenderer.draw();