From 0a03c8d8cfedcf7bb05646c2dae3d6048cf64e90 Mon Sep 17 00:00:00 2001 From: Jonathan Hager Date: Mon, 4 May 2020 23:12:35 +0200 Subject: [PATCH] =?UTF-8?q?a=C3=B6sdlkfj?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dungeoncrawler/control/Controller.java | 18 +- .../dungeoncrawler/model/entities/Archer.java | 169 +++++++++--------- .../model/entities/Swordsman.java | 57 +++--- .../com/dungeoncrawler/view/EntitySprite.java | 64 +++---- 4 files changed, 149 insertions(+), 159 deletions(-) diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index f2507f4..ff42d36 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 eb5ffbc..cb26ec0 100644 --- a/core/src/com/dungeoncrawler/view/EntitySprite.java +++ b/core/src/com/dungeoncrawler/view/EntitySprite.java @@ -22,15 +22,9 @@ public class EntitySprite { private Rectangle collisionSprite; private Rectangle fullCollisionSprite; private TextureRegion[][][] regions; - private int[] frames; + private int[] frames; private int attackState; - - private Texture healthBarContainerTexture; - private Sprite healthBarContainerSprite; - private Texture healthBarTexture; - private Sprite healthBarSprite; - boolean healthBarExists; - + private int die; // 0: links, 1: rechts private int direction; @@ -38,13 +32,12 @@ public class EntitySprite { public EntitySprite(Texture[] textures, int width, int height){ sprites = new Sprite[1]; regions = new TextureRegion[1][][]; - - healthBarExists = true; - // 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); @@ -64,7 +57,10 @@ public class EntitySprite { direction = e.getDirection(); - if(attackState == 1){ + if(die >= 1){ + updateDie(); + } + else if(attackState == 1){ updateAttack(); } else if(moves){ @@ -76,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; @@ -137,32 +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); - if(healthBarExists == true){ - } } updateCollision(xPos, yPos); } - public void updateHealthBar(float hp, float maxHp, float xPos, float yPos){ - float n = hp / maxHp; - healthBarTexture = new Texture("sprites/entityHealthBar.png"); - int newWidth = (int) (n * healthBarTexture.getWidth()); - TextureRegion[][] playerHealthRegion = TextureRegion.split(healthBarTexture,newWidth, healthBarTexture.getHeight()); - healthBarSprite = new Sprite(playerHealthRegion[0][0]); - healthBarSprite.setPosition(xPos, yPos); - healthBarContainerSprite.setPosition(xPos, yPos); - } - - public void createHealthBar(){ - healthBarContainerTexture = new Texture("sprites/entityHealthBarContainer.png"); - healthBarContainerSprite = new Sprite(healthBarContainerTexture); - healthBarExists = true; - } - - - public void updateCollision(int xPos, int yPos){ collisionSprite.setPosition(xPos, yPos); getFullCollisionSprite().setPosition(xPos, yPos); @@ -180,16 +167,7 @@ public class EntitySprite { public Sprite[] getSprites() { return sprites; } - - public Sprite getHealthBarContainerSprite(){ - return healthBarContainerSprite; - } - public Sprite getHealthBarSprite(){ - return healthBarSprite; - } - public boolean healthBarIsExisting(){ - return healthBarExists; - } + /** * @param sprites the sprites to set */