2 Commits 7099475974 ... 73afd68a27

Tác giả SHA1 Thông báo Ngày
  Kajetan Johannes Hammerle 73afd68a27 water animation (base + waves) 4 năm trước cách đây
  Kajetan Johannes Hammerle 3f3978c8be base for logging 4 năm trước cách đây

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


+ 1 - 1
src/pathgame/PathGame.java

@@ -35,7 +35,7 @@ public class PathGame implements IGame
         if(Keys.TEST_KEY.getTime() == 1)
         {
             //level.nextLevel();
-            level.getPlayer().win();
+            level.getPlayer().win(level.getMap());
         }
     }
 

+ 3 - 0
src/pathgame/gameplay/Level.java

@@ -1,6 +1,7 @@
 package pathgame.gameplay;
 
 import pathgame.algorithm.TravellingSalesAlg;
+import pathgame.logging.Logger;
 import pathgame.tilemap.TileMap;
 import pathgame.tilemap.TileMapGenerator;
 
@@ -54,6 +55,8 @@ public final class Level
         TravellingSalesAlg.calcSalesPathLen(map);
         
         player.setEnergySupply(1000); // ToDo: insert value of algorithm
+        
+        Logger.onLevelReset(level, player, map);
     }
 
     public TileMap getMap()

+ 8 - 1
src/pathgame/gameplay/Player.java

@@ -2,6 +2,7 @@ package pathgame.gameplay;
 
 import java.util.Iterator;
 import java.util.LinkedList;
+import pathgame.logging.Logger;
 import pathgame.tilemap.Tile;
 import pathgame.tilemap.TileMap;
 
@@ -86,6 +87,7 @@ public class Player
             velY = 0.0f;
             if(isMoving)
             {
+                Logger.onTileEnter(this, map, currentTileX, currentTileY);
                 currentTile.onEnter(this, map, currentTileX, currentTileY);
                 steps.addLast(new MinusStepsValues(currSpeedSlowdown));
                 energyUsed += currSpeedSlowdown;
@@ -98,24 +100,28 @@ public class Player
         {
             velX = -SPEED;
             isMoving = true;
+            Logger.onTileLeave(this, map, currentTileX, currentTileY);
             currentTile.onLeave(this, map, currentTileX, currentTileY);
         }
         else if(Keys.RIGHT_KEY.isDown() && !isMoving && currentTileX < map.getWidth() - 1 && !map.getTile(currentTileX + 1, currentTileY).isBlockingMovement(this))
         {
             velX = SPEED;
             isMoving = true;
+            Logger.onTileLeave(this, map, currentTileX, currentTileY);
             currentTile.onLeave(this, map, currentTileX, currentTileY);
         }
         else if(Keys.UP_KEY.isDown() && !isMoving && currentTileY > 0 && !map.getTile(currentTileX, currentTileY - 1).isBlockingMovement(this))
         {
             velY = -SPEED;
             isMoving = true;
+            Logger.onTileLeave(this, map, currentTileX, currentTileY);
             currentTile.onLeave(this, map, currentTileX, currentTileY);
         }
         else if(Keys.DOWN_KEY.isDown() && !isMoving && currentTileY < map.getHeight() - 1 && !map.getTile(currentTileX, currentTileY + 1).isBlockingMovement(this))
         {
             velY = SPEED;
             isMoving = true;
+            Logger.onTileLeave(this, map, currentTileX, currentTileY);
             currentTile.onLeave(this, map, currentTileX, currentTileY);
         }
 
@@ -241,9 +247,10 @@ public class Player
         return hasWon;
     }
 
-    public void win()
+    public void win(TileMap map)
     {
         this.hasWon = true;
+        Logger.onWin(this, map);
     }
 
     public boolean hasLost()

+ 27 - 0
src/pathgame/logging/Logger.java

@@ -0,0 +1,27 @@
+package pathgame.logging;
+
+import pathgame.gameplay.Player;
+import pathgame.tilemap.TileMap;
+
+public class Logger
+{
+    public static void onLevelReset(int level, Player p, TileMap map)
+    {
+        System.out.println("Level Reset " + level);
+    }
+    
+    public static void onTileEnter(Player p, TileMap map, int x, int y)
+    {
+        System.out.println("Tile Enter " + x + " " + y);
+    }
+    
+    public static void onTileLeave(Player p, TileMap map, int x, int y)
+    {
+        System.out.println("Tile Leave " + x + " " + y);
+    }
+    
+    public static void onWin(Player p, TileMap map)
+    {
+        System.out.println("Win");
+    }
+}

+ 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();
 

+ 1 - 1
src/pathgame/tilemap/TileHomeTown.java

@@ -14,7 +14,7 @@ public class TileHomeTown extends Tile
     {
         if(p.canWin())
         {
-            p.win();
+            p.win(map);
         }
     }
 }