diff --git a/core/assets/sprites/arrow.png b/core/assets/sprites/arrow.png index e2ebc18..c837897 100644 Binary files a/core/assets/sprites/arrow.png and b/core/assets/sprites/arrow.png differ diff --git a/core/src/com/dungeoncrawler/model/Entity.java b/core/src/com/dungeoncrawler/model/Entity.java index 11b45c5..abda571 100644 --- a/core/src/com/dungeoncrawler/model/Entity.java +++ b/core/src/com/dungeoncrawler/model/Entity.java @@ -18,6 +18,7 @@ public abstract class Entity { protected int direction; protected Inventory inv; protected boolean toDelete; + private double angle; @@ -152,5 +153,19 @@ public abstract class Entity { public boolean getToDelete(){ return this.toDelete; } + + /** + * @return the angle + */ + public double getAngle() { + return angle; + } + + /** + * @param angle the angle to set + */ + public void setAngle(double angle) { + this.angle = angle; + } } \ No newline at end of file diff --git a/core/src/com/dungeoncrawler/model/entities/Archer.java b/core/src/com/dungeoncrawler/model/entities/Archer.java index 86f6412..bb1f123 100644 --- a/core/src/com/dungeoncrawler/model/entities/Archer.java +++ b/core/src/com/dungeoncrawler/model/entities/Archer.java @@ -108,6 +108,7 @@ public class Archer extends Entity{ a.setMovementX(movementX); a.setMovementY(movementY); + a.setAngle(alpha); return a; } diff --git a/core/src/com/dungeoncrawler/view/EntitySprite.java b/core/src/com/dungeoncrawler/view/EntitySprite.java index 234a7a2..d68f2a9 100644 --- a/core/src/com/dungeoncrawler/view/EntitySprite.java +++ b/core/src/com/dungeoncrawler/view/EntitySprite.java @@ -27,7 +27,7 @@ public class EntitySprite { // 0: links, 1: rechts private int direction; - public EntitySprite(Texture[] textures){ + public EntitySprite(Texture[] textures, int width, int height){ sprites = new Sprite[1]; regions = new TextureRegion[1][][]; @@ -36,12 +36,12 @@ public class EntitySprite { direction = 0; attackState = 0; - for(int i = 0; i < regions.length; i++){ - regions[i] = TextureRegion.split(textures[i], 64, 64); + for(int i = 0; i < sprites.length; i++){ + regions[i] = TextureRegion.split(textures[i], width, height); sprites[i] = new Sprite(regions[i][0][0]); + collisionSprite = new Rectangle(0, 0, 32, 16); } - - collisionSprite = new Rectangle(0, 0, 32, 16); + fullCollisionSprite = sprites[0].getBoundingRectangle(); } @@ -84,7 +84,7 @@ public class EntitySprite { frames[0]++; } - sprites[0].setRegion(regions[0][0][frames[0]]); + sprites[0].setRegion(regions[0][2][frames[0]]); updateFlip(); } @@ -99,7 +99,7 @@ public class EntitySprite { frames[1]++; } - sprites[0].setRegion(regions[0][2][frames[1]]); + sprites[0].setRegion(regions[0][0][frames[1]]); updateFlip(); } diff --git a/core/src/com/dungeoncrawler/view/GameScreen.java b/core/src/com/dungeoncrawler/view/GameScreen.java index 0db65cf..f9afcf9 100644 --- a/core/src/com/dungeoncrawler/view/GameScreen.java +++ b/core/src/com/dungeoncrawler/view/GameScreen.java @@ -83,7 +83,7 @@ public class GameScreen { playerTexture[2] = new Texture(Gdx.files.internal("sprites/player.png")); playerTexture[3] = new Texture(Gdx.files.internal("sprites/player.png")); - player = new EntitySprite(playerTexture); + player = new EntitySprite(playerTexture, 64, 64); player.update(200, 200); @@ -279,16 +279,22 @@ public class GameScreen { Texture[] tx = new Texture[1]; if(e.getId() == 0){ //nimmt entity ID -> 0 = Archer || 1 = Swordsman || 2 = Arrow tx[0] = new Texture("sprites/archer.png"); + entitySprites[i] = new EntitySprite(tx, 64, 64); } if(e.getId() == 1){ tx[0] = new Texture("sprites/swordsman.png"); + entitySprites[i] = new EntitySprite(tx, 64, 64); } if(e.getId() == 2){ - tx[0] = new Texture("sprites/player.png"); + tx[0] = new Texture("sprites/arrow.png"); + entitySprites[i] = new EntitySprite(tx, 18, 9); } - entitySprites[i] = new EntitySprite(tx); entitySprites[i].update((int) e.getxPos(), (int) e.getyPos()); + + if(e.getId() == 2){ + entitySprites[i].getSprites()[0].setRotation((float) Math.toDegrees(e.getAngle() + Math.PI)); + } } }