diff --git a/core/src/com/dungeoncrawler/view/GameScreen.java b/core/src/com/dungeoncrawler/view/GameScreen.java index 4221096..b6303af 100644 --- a/core/src/com/dungeoncrawler/view/GameScreen.java +++ b/core/src/com/dungeoncrawler/view/GameScreen.java @@ -47,6 +47,7 @@ public class GameScreen { ArrayList mapItems; Timer animations; + Timer animatePlayer; Timer roomChangeTimer; int roomChangeAnimationState; @@ -56,6 +57,8 @@ public class GameScreen { TextureRegion[][] roomChangeTextureRegion; int roomChangeRow; + boolean playerMoving; + HudContainer hc; // Sound @@ -76,7 +79,7 @@ public class GameScreen { //PLAYER Texture[] playerTexture = new Texture[4]; - playerTexture[0] = new Texture(Gdx.files.internal("sprites/legs.png")); + playerTexture[0] = new Texture(Gdx.files.internal("sprites/player.png")); playerTexture[1] = new Texture(Gdx.files.internal("sprites/body.png")); playerTexture[2] = new Texture(Gdx.files.internal("sprites/head.png")); playerTexture[3] = new Texture(Gdx.files.internal("sprites/hair.png")); @@ -118,12 +121,25 @@ public class GameScreen { public void run() { if(objects != null){ for(AnimatedObject object : objects){ - object.updateTexture(); + object.updateTexture(); } } } },0, 0.1f); + animatePlayer = new Timer(); + animatePlayer.scheduleTask(new Timer.Task() { + @Override + public void run() { + if(!playerMoving){ + player.updateIdle(); + } + else{ + player.updateWalking(); + } + } + }, 0, 0.1f); + //Inventory TEST hc = new HudContainer(); @@ -152,18 +168,25 @@ public class GameScreen { } },0, 0.02f); - } public void render (SpriteBatch batch, Player p, Entity[] e, Entity[] arrows, int tileX, int tileY, int level, int roomPosX, int roomPosY) { - - Gdx.gl.glClearColor(0, 0, 0, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); + playerMoving = (p.getMovementX() != 0 || p.getMovementY() != 0); + //setzt player Sprite auf richtige Position player.update((int) p.getxPos(), (int) p.getyPos()); + if(p.getMovementX() > 1){ + player.setDirection(1); + player.updateFlip(); + } + else if(p.getMovementX() < -1){ + player.setDirection(0); + player.updateFlip(); + } tm = getM().getMaps()[level][roomPosX][roomPosY].getMap(); objects = getM().getMaps()[level][roomPosX][roomPosY].getObjects(); diff --git a/core/src/com/dungeoncrawler/view/PlayerSprite.java b/core/src/com/dungeoncrawler/view/PlayerSprite.java index dd5686e..a471cd5 100644 --- a/core/src/com/dungeoncrawler/view/PlayerSprite.java +++ b/core/src/com/dungeoncrawler/view/PlayerSprite.java @@ -22,22 +22,64 @@ public class PlayerSprite { private TextureRegion[][][] regions; private int[] frames; + // 0: links, 1: rechts + private int direction; + public PlayerSprite(Texture[] textures){ - sprites = new Sprite[4]; - regions = new TextureRegion[4][][]; - frames = new int[4]; + sprites = new Sprite[1]; + regions = new TextureRegion[1][][]; + frames = new int[2]; + direction = 0; for(int i = 0; i < regions.length; i++){ - regions[i] = TextureRegion.split(textures[i], 48, 96); - sprites[i] = new Sprite(textures[i]); + regions[i] = TextureRegion.split(textures[i], 64, 64); + sprites[i] = new Sprite(regions[i][0][0]); + } + + collisionSprite = new Rectangle(0, 0, 32, 16); + } + + public void updateIdle(){ + frames[1] = 0; + + if(frames[0] >= 9){ + frames[0] = 0; + } + else{ + frames[0]++; + } + + sprites[0].setRegion(regions[0][0][frames[0]]); + updateFlip(); + } + + public void updateWalking(){ + frames[0] = 0; + + if(frames[1] >= 9){ + frames[1] = 0; + } + else{ + frames[1]++; } - collisionSprite = new Rectangle(0, 0, 48, 16); + sprites[0].setRegion(regions[0][2][frames[1]]); + updateFlip(); + } + + public void updateFlip(){ + + if(direction == 0 && !sprites[0].isFlipX()){ + sprites[0].flip(true, false); + } + else if(direction == 1 && sprites[0].isFlipX()){ + sprites[0].flip(false, false); + } } public void update(int xPos, int yPos){ for(int i = 0; i < sprites.length; i++){ - sprites[i].setPosition(xPos, yPos); + sprites[i].setPosition(xPos - 16, yPos); } updateCollision(xPos, yPos); @@ -109,4 +151,18 @@ public class PlayerSprite { public void setFrames(int[] frames) { this.frames = frames; } + + /** + * @return the direction + */ + public int getDirection() { + return direction; + } + + /** + * @param direction the direction to set + */ + public void setDirection(int direction) { + this.direction = direction; + } }