diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index 282c73a..86e7a95 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -215,15 +215,21 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ } } - if(delete && d.getCurrentEntities()[i].getId() == 2 || d.getCurrentEntities()[i].getToDelete()){ - d.getCurrentEntities()[i] = null; - gs.deleteEntitySprite(i); + if(delete || d.getCurrentEntities()[i].getToDelete()){ + if(d.getCurrentEntities()[i].getId() == 2){ + d.getCurrentEntities()[i] = null; + gs.deleteEntitySprite(i); + } + else{ + + } } + } } - } - } - },0, 0.03f); + } + } + },0, 0.03f); diff --git a/core/src/com/dungeoncrawler/model/entities/Archer.java b/core/src/com/dungeoncrawler/model/entities/Archer.java index da2136a..65bef3d 100644 --- a/core/src/com/dungeoncrawler/model/entities/Archer.java +++ b/core/src/com/dungeoncrawler/model/entities/Archer.java @@ -23,105 +23,110 @@ public class Archer extends Entity{ @Override public boolean move(int xPosPlayer, int yPosPlayer) { - float deltaX = xPosPlayer - (int) xPos; - float deltaY = yPosPlayer - (int) yPos; - - double alpha; - if(deltaX == 0 && deltaY >= 0){ - alpha = Math.PI / 2; - } - else if(deltaX == 0 && deltaY < 0){ - alpha = Math.PI / -2; - } - else{ - alpha = Math.abs(Math.atan(deltaY / deltaX)); - - if(deltaX < 0 && deltaY < 0){ - alpha = Math.PI + alpha; + if(!toDelete){ + float deltaX = xPosPlayer - (int) xPos; + float deltaY = yPosPlayer - (int) yPos; + + double alpha; + if(deltaX == 0 && deltaY >= 0){ + alpha = Math.PI / 2; } - else if(deltaX < 0 && deltaY > 0){ - alpha = Math.PI - alpha; + else if(deltaX == 0 && deltaY < 0){ + alpha = Math.PI / -2; } - else if(deltaX > 0 && deltaY < 0){ - alpha = 2*Math.PI - alpha; + else{ + alpha = Math.abs(Math.atan(deltaY / deltaX)); + + if(deltaX < 0 && deltaY < 0){ + alpha = Math.PI + alpha; + } + else if(deltaX < 0 && deltaY > 0){ + alpha = Math.PI - alpha; + } + else if(deltaX > 0 && deltaY < 0){ + alpha = 2*Math.PI - alpha; + } } - } - - int distance = (int) Math.abs((deltaY / Math.sin(alpha))); - - if(distance >= 104 && distance <= 184 && counter % 40 == 0){ - return true; - } - else{ - movementX = (int) (3 * Math.cos(alpha)); - movementY = (int) (3 * Math.sin(alpha)); - - System.out.println(distance); - if(distance < 124){ - movementX *= -1; - movementY *= -1; + + int distance = (int) Math.abs((deltaY / Math.sin(alpha))); + + if(distance >= 104 && distance <= 184 && counter % 40 == 0){ + return true; } - else if(distance >= 124 && distance <= 164){ - movementX = 0; - movementY = 0; + else{ + movementX = (int) (3 * Math.cos(alpha)); + movementY = (int) (3 * Math.sin(alpha)); + + System.out.println(distance); + if(distance < 124){ + movementX *= -1; + movementY *= -1; + } + else if(distance >= 124 && distance <= 164){ + movementX = 0; + movementY = 0; + } + + + xPos += movementX; + yPos += movementY; } - - - xPos += movementX; - yPos += movementY; - } - - if(alpha >= Math.PI / -2 && alpha <= Math.PI / 2){ - setDirection(1); - } - else{ - setDirection(0); + + if(alpha >= Math.PI / -2 && alpha <= Math.PI / 2){ + setDirection(1); + } + else{ + setDirection(0); + } + + counter++; } - counter++; - return false; } @Override public Entity shoot(int xPosPlayer, int yPosPlayer){ + Arrow a = null; - float deltaX = xPosPlayer - (int) xPos; - float deltaY = yPosPlayer - (int) yPos; - - double alpha; - if(deltaX == 0 && deltaY >= 0){ - alpha = Math.PI / 2; - } - else if(deltaX == 0 && deltaY < 0){ - alpha = Math.PI / -2; - } - else{ - alpha = Math.abs(Math.atan(deltaY / deltaX)); - - if(deltaX < 0 && deltaY < 0){ - alpha = Math.PI + alpha; + if(!toDelete){ + float deltaX = xPosPlayer - (int) xPos; + float deltaY = yPosPlayer - (int) yPos; + + double alpha; + if(deltaX == 0 && deltaY >= 0){ + alpha = Math.PI / 2; } - else if(deltaX < 0 && deltaY > 0){ - alpha = Math.PI - alpha; + else if(deltaX == 0 && deltaY < 0){ + alpha = Math.PI / -2; } - else if(deltaX > 0 && deltaY < 0){ - alpha = 2*Math.PI - alpha; + else{ + alpha = Math.abs(Math.atan(deltaY / deltaX)); + + if(deltaX < 0 && deltaY < 0){ + alpha = Math.PI + alpha; + } + else if(deltaX < 0 && deltaY > 0){ + alpha = Math.PI - alpha; + } + else if(deltaX > 0 && deltaY < 0){ + alpha = 2*Math.PI - alpha; + } } - } - Arrow a = new Arrow(this.xPos, this.yPos, this.lvl, 0); - movementX = (int) (6 * Math.cos(alpha)); - movementY = (int) (6 * Math.sin(alpha)); + a = new Arrow(this.xPos, this.yPos, this.lvl, 0); + movementX = (int) (6 * Math.cos(alpha)); + movementY = (int) (6 * Math.sin(alpha)); - a.setMovementX(movementX); - a.setMovementY(movementY); - a.setAngle(alpha); - - if(alpha >= Math.PI / -2 && alpha <= Math.PI / 2){ - setDirection(1); - } - else{ - setDirection(0); + a.setMovementX(movementX); + a.setMovementY(movementY); + a.setAngle(alpha); + + if(alpha >= Math.PI / -2 && alpha <= Math.PI / 2){ + setDirection(1); + } + else{ + setDirection(0); + } } return a; diff --git a/core/src/com/dungeoncrawler/model/entities/Swordsman.java b/core/src/com/dungeoncrawler/model/entities/Swordsman.java index 838caf5..c314bef 100644 --- a/core/src/com/dungeoncrawler/model/entities/Swordsman.java +++ b/core/src/com/dungeoncrawler/model/entities/Swordsman.java @@ -19,38 +19,39 @@ public class Swordsman extends Entity { @Override public boolean move(int xPosPlayer, int yPosPlayer){ - float deltaX = xPosPlayer - (int) xPos; - float deltaY = yPosPlayer - (int) yPos; - - double alpha; - if(deltaX == 0 && deltaY >= 0){ - alpha = Math.PI / 2; - } - else if(deltaX == 0 && deltaY < 0){ - alpha = Math.PI / -2; - } - else{ - alpha = Math.abs(Math.atan(deltaY / deltaX)); - - if(deltaX < 0 && deltaY < 0){ - alpha = Math.PI + alpha; + if(!toDelete){ + float deltaX = xPosPlayer - (int) xPos; + float deltaY = yPosPlayer - (int) yPos; + + double alpha; + if(deltaX == 0 && deltaY >= 0){ + alpha = Math.PI / 2; } - else if(deltaX < 0 && deltaY > 0){ - alpha = Math.PI - alpha; + else if(deltaX == 0 && deltaY < 0){ + alpha = Math.PI / -2; } - else if(deltaX > 0 && deltaY < 0){ - alpha = 2*Math.PI - alpha; + else{ + alpha = Math.abs(Math.atan(deltaY / deltaX)); + + if(deltaX < 0 && deltaY < 0){ + alpha = Math.PI + alpha; + } + else if(deltaX < 0 && deltaY > 0){ + alpha = Math.PI - alpha; + } + else if(deltaX > 0 && deltaY < 0){ + alpha = 2*Math.PI - alpha; + } } + + movementX = (int) (3 * Math.cos(alpha)); + movementY = (int) (3 * Math.sin(alpha)); + + xPos += movementX; + yPos += movementY; + + updateDirection(); } - - movementX = (int) (3 * Math.cos(alpha)); - movementY = (int) (3 * Math.sin(alpha)); - - xPos += movementX; - yPos += movementY; - - updateDirection(); - return false; } diff --git a/core/src/com/dungeoncrawler/view/EntitySprite.java b/core/src/com/dungeoncrawler/view/EntitySprite.java index 64d7239..cb26ec0 100644 --- a/core/src/com/dungeoncrawler/view/EntitySprite.java +++ b/core/src/com/dungeoncrawler/view/EntitySprite.java @@ -22,10 +22,9 @@ public class EntitySprite { private Rectangle collisionSprite; private Rectangle fullCollisionSprite; private TextureRegion[][][] regions; - private int[] frames; + private int[] frames; private int attackState; - - + private int die; // 0: links, 1: rechts private int direction; @@ -33,12 +32,12 @@ public class EntitySprite { public EntitySprite(Texture[] textures, int width, int height){ sprites = new Sprite[1]; regions = new TextureRegion[1][][]; - - // 0: idle, 1: walking, 2: attack - frames = new int[3]; + // 0: idle, 1: walking, 2: attack, 3: die + frames = new int[4]; direction = 0; attackState = 0; + die = 0; for(int i = 0; i < sprites.length; i++){ regions[i] = TextureRegion.split(textures[i], width, height); @@ -58,7 +57,10 @@ public class EntitySprite { direction = e.getDirection(); - if(attackState == 1){ + if(die >= 1){ + updateDie(); + } + else if(attackState == 1){ updateAttack(); } else if(moves){ @@ -70,6 +72,17 @@ public class EntitySprite { } } + public void updateDie(){ + if(frames[3] >= 9){ + die = 2; + } + else{ + frames[3]++; + sprites[0].setRegion(regions[0][4][frames[3]]); + updateFlip(); + } + } + public void updateAttack(){ frames[0] = 0; frames[1] = 0; @@ -131,15 +144,12 @@ public class EntitySprite { public void update(int xPos, int yPos){ for(int i = 0; i < sprites.length; i++){ sprites[i].setPosition(xPos - 16, yPos); - } updateCollision(xPos, yPos); } - - public void updateCollision(int xPos, int yPos){ collisionSprite.setPosition(xPos, yPos); getFullCollisionSprite().setPosition(xPos, yPos); @@ -157,7 +167,6 @@ public class EntitySprite { public Sprite[] getSprites() { return sprites; } - /** * @param sprites the sprites to set