|
@@ -7,11 +7,7 @@ import pathgame.tilemap.TileMap;
|
|
|
|
|
|
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)
|
|
|
{
|
|
@@ -25,55 +21,54 @@ public class PlayerRenderer
|
|
|
r.updateMatrix();
|
|
|
|
|
|
//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)
|
|
|
{
|
|
|
- CHARACTERRIGHT.bind();
|
|
|
+ //go right
|
|
|
+ yIndex = 2;
|
|
|
+ tIndex = checkForAnimationIndex(baseX, 2);
|
|
|
}
|
|
|
else if(p.getVelX() < 0)
|
|
|
{
|
|
|
- CHARACTERLEFT.bind();
|
|
|
+ //go left
|
|
|
+ yIndex = 1;
|
|
|
+ tIndex = checkForAnimationIndex(baseX, 2);
|
|
|
}
|
|
|
else if(p.getVelY() > 0)
|
|
|
{
|
|
|
- CHARACTER.bind();
|
|
|
+ //go down
|
|
|
+ yIndex = 0;
|
|
|
+ tIndex = checkForAnimationIndex(baseY, 2);
|
|
|
}
|
|
|
else if(p.getVelY() < 0)
|
|
|
{
|
|
|
- CHARACTERBACK.bind();
|
|
|
+ //go up
|
|
|
+ yIndex = 3;
|
|
|
+ tIndex = checkForAnimationIndex(baseY, 2);
|
|
|
}
|
|
|
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;
|
|
|
}
|
|
|
}
|