Selaa lähdekoodia

character - animation

Hudriwudri 5 vuotta sitten
vanhempi
commit
ab0e01a534

BIN
res/character/characterBack.png


BIN
res/character/characterFront.png


BIN
res/character/characterLeft.png


BIN
res/character/characterRight.png


BIN
res/character/characterWalkRight.png


BIN
resources/character.png


+ 10 - 0
src/pathgame/gameplay/Player.java

@@ -199,4 +199,14 @@ public class Player
     {
     {
         return steps;
         return steps;
     }
     }
+    
+    public void setAbilities(PlayerAbilities playerAbilities)
+    {
+        abilities = playerAbilities;
+    }
+    
+    public PlayerAbilities getAbilities()
+    {
+        return abilities;
+    }
 }
 }

+ 34 - 39
src/pathgame/rendering/PlayerRenderer.java

@@ -7,11 +7,7 @@ import pathgame.tilemap.TileMap;
 
 
 public class PlayerRenderer
 public class PlayerRenderer
 {
 {
-
-    private static final Texture CHARACTER = new Texture("res/character/characterFront.png");
-    private static final Texture CHARACTERLEFT = new Texture("res/character/characterLeft.png");
-    private static final Texture CHARACTERRIGHT = new Texture("res/character/characterRight.png");
-    private static final Texture CHARACTERBACK = new Texture("res/character/characterBack.png");
+    private static final Texture CHARACTER = new Texture("resources/character.png");
 
 
     public void renderTick(TileMap map, TileMapRenderer mapR, Renderer r, Player p, float lag, float offX, float offY)
     public void renderTick(TileMap map, TileMapRenderer mapR, Renderer r, Player p, float lag, float offX, float offY)
     {
     {
@@ -25,55 +21,54 @@ public class PlayerRenderer
         r.updateMatrix();
         r.updateMatrix();
 
 
         //TODO: insert animations
         //TODO: insert animations
+        float yIndex;
+        float baseX = (p.getLastX() + (p.getX() - p.getLastX()) * lag);
+        float ix = baseX * mapR.getScale() * TileRenderer.TILE_SIZE + offX;
+
+        float baseY = (p.getLastY() + (p.getY() - p.getLastY()) * lag);
+        float iy = baseY * mapR.getScale() * TileRenderer.TILE_SIZE + offY;
+
+        baseX = baseX - (int) baseX;
+        baseY = baseY - (int) baseY;
+
+        int tIndex = 0;
+
+        CHARACTER.bind();
         if(p.getVelX() > 0)
         if(p.getVelX() > 0)
         {
         {
-            CHARACTERRIGHT.bind();
+            //go right
+            yIndex = 2;
+            tIndex = checkForAnimationIndex(baseX, 2);
         }
         }
         else if(p.getVelX() < 0)
         else if(p.getVelX() < 0)
         {
         {
-            CHARACTERLEFT.bind();
+            //go left
+            yIndex = 1;
+            tIndex = checkForAnimationIndex(baseX, 2);
         }
         }
         else if(p.getVelY() > 0)
         else if(p.getVelY() > 0)
         {
         {
-            CHARACTER.bind();
+            //go down
+            yIndex = 0;
+            tIndex = checkForAnimationIndex(baseY, 2);
         }
         }
         else if(p.getVelY() < 0)
         else if(p.getVelY() < 0)
         {
         {
-            CHARACTERBACK.bind();
+            //go up
+            yIndex = 3;
+            tIndex = checkForAnimationIndex(baseY, 2);
         }
         }
         else
         else
         {
         {
-            CHARACTER.bind();
+            //stand still
+            yIndex = 0;
         }
         }
+        r.getTextureRenderer().drawRectangle(ix, iy, ix + playerSize, iy + playerSize,
+                tIndex * 0.25f, yIndex * 0.25f, (tIndex + 1) * 0.25f, yIndex * 0.25f + 0.25f);
+    }
 
 
-        float baseX = (p.getLastX() + (p.getX() - p.getLastX()) * lag);
-        float ix = baseX * mapR.getScale() * TileRenderer.TILE_SIZE + offX;
-
-//        //TODO: refactor
-//        baseX = baseX - (int) baseX;
-//        int tIndex = 0;
-//        if(baseX <= 0.125f)
-//        {
-//            tIndex = 0;
-//        }
-//        else if(baseX <= 0.375f)
-//        {
-//            tIndex = 1;
-//        }
-//        else if(baseX <= 0.625f)
-//        {
-//            tIndex = 2;
-//        }
-//        else if(baseX <= 0.875f)
-//        {
-//            tIndex = 3;
-//        }
-//        
-//        System.out.println(baseX);
-        float iy = (p.getLastY() + (p.getY() - p.getLastY()) * lag) * mapR.getScale() * TileRenderer.TILE_SIZE + offY;
-//        r.getTextureRenderer().drawRectangle(ix, iy, ix + playerSize, iy + playerSize, 
-//                tIndex * 0.25f, 0.0f, (tIndex + 1) * 0.25f, 1.0f);
-r.getTextureRenderer().drawRectangle(ix, iy, ix + playerSize, iy + playerSize, 
-                0.0f, 0.0f, 1.0f, 1.0f);
+    private int checkForAnimationIndex(float base, int speed)
+    {
+        return (int) (Math.ceil(base / (0.125f / speed)) / 3)%4;
     }
     }
 }
 }