diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index 4554221..e1d7c02 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -103,7 +103,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ @Override public void run() { if(m != null){ - m.updateEntitySprite(d.getCurrentEntities()); + //m.updateEntitySprite(d.getCurrentEntities()); for(int i = 0; i < d.getCurrentEntities().length; i++){ if(d.getCurrentEntities()[i] != null){ @@ -116,14 +116,19 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ int x = (int) temp.getxPos(); int y = (int) temp.getyPos(); - Entity test = d.getCurrentEntities()[i].move((int) d.getPlayer().getxPos(), (int) d.getPlayer().getyPos()); + Entity arrow = d.getCurrentEntities()[i].move((int) d.getPlayer().getxPos(), (int) d.getPlayer().getyPos()); Sprite tempObject = m.entitySprites[i]; tempObject.setPosition(temp.getxPos(), temp.getyPos()); boolean overlaps = false; + boolean delete = false; if(Intersector.overlaps(tempObject.getBoundingRectangle(), playerSprite)){ overlaps = true; + if(d.getCurrentEntities()[i].getId() == 2){ + d.getCurrentEntities()[i].attack(d.getPlayer()); + delete = true; + } } else{ for(RectangleMapObject rectangleObject : mapObjects.getByType(RectangleMapObject.class)){ @@ -131,6 +136,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(Intersector.overlaps(tempObject.getBoundingRectangle(), rectangle)){ overlaps = true; + delete = true; break; } } @@ -159,17 +165,24 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ m.entitySprites[i] = tempObject; - if(test != null){ + if(arrow != null){ for(int k = 5; k < d.getCurrentEntities().length; k++){ if(d.getCurrentEntities()[k] == null){ - d.getCurrentEntities()[k] = test; + d.getCurrentEntities()[k] = arrow; m.updateEntitySprite(d.getCurrentEntities()); + break; } } + } + + if(delete && d.getCurrentEntities()[i].getId() == 2){ + d.getCurrentEntities()[i] = null; + m.updateEntitySprite(d.getCurrentEntities()); + + } } - } - } - } + } + } } },0, 0.03f); diff --git a/core/src/com/dungeoncrawler/model/Entity.java b/core/src/com/dungeoncrawler/model/Entity.java index 46047ce..01b36d6 100644 --- a/core/src/com/dungeoncrawler/model/Entity.java +++ b/core/src/com/dungeoncrawler/model/Entity.java @@ -8,9 +8,9 @@ public abstract class Entity { protected float xPos; protected float yPos; - protected int hp; - protected int maxhp; - protected int dmg; + protected float hp; + protected float maxhp; + protected float dmg; protected int lvl; protected float movementX; protected float movementY; @@ -29,8 +29,13 @@ public abstract class Entity { this.direction = 2; } - public void attack(){ - + public void attack(Entity e){ + if(e.getHp() - this.dmg < 0){ + e.setHp(1); + } + else{ + e.setHp(e.getHp() - this.dmg); + } } public void update(){ xPos += movementX; @@ -84,27 +89,27 @@ public abstract class Entity { this.yPos = yPos; } - public int getHp() { + public float getHp() { return hp; } - public void setHp(int hp) { + public void setHp(float hp) { this.hp = hp; } - public int getMaxhp() { + public float getMaxhp() { return maxhp; } - public void setMaxhp(int maxhp) { + public void setMaxhp(float maxhp) { this.maxhp = maxhp; } - public int getDmg() { + public float getDmg() { return dmg; } - public void setDmg(int dmg) { + public void setDmg(float dmg) { this.dmg = dmg; } diff --git a/core/src/com/dungeoncrawler/model/entities/Archer.java b/core/src/com/dungeoncrawler/model/entities/Archer.java index a6a8f9a..51687d9 100644 --- a/core/src/com/dungeoncrawler/model/entities/Archer.java +++ b/core/src/com/dungeoncrawler/model/entities/Archer.java @@ -23,8 +23,8 @@ public class Archer extends Entity{ @Override public Entity move(int xPosPlayer, int yPosPlayer) { - int deltaX = xPosPlayer - (int) xPos; - int deltaY = yPosPlayer - (int) yPos; + float deltaX = xPosPlayer - (int) xPos; + float deltaY = yPosPlayer - (int) yPos; double alpha; if(deltaX == 0 && deltaY >= 0){ @@ -50,7 +50,7 @@ public class Archer extends Entity{ int distance = (int) Math.abs((deltaY / Math.sin(alpha))); Arrow a = null; - if(distance >= 124 && distance <= 164 || counter % 30 == 0){ + if(distance >= 124 && distance <= 164 && counter % 60 == 0){ a = new Arrow(this.xPos, this.yPos, this.lvl, 0); movementX = (int) (4 * Math.cos(alpha)); @@ -68,13 +68,10 @@ public class Archer extends Entity{ movementX *= -1; movementY *= -1; } - else if(distance >= 124/* && distance <= 164*/){ + else if(distance >= 124 && distance <= 164){ movementX = 0; movementY = 0; } - else if(distance > 164){ - - } xPos += movementX; diff --git a/core/src/com/dungeoncrawler/model/entities/Player.java b/core/src/com/dungeoncrawler/model/entities/Player.java index 7085061..691265a 100644 --- a/core/src/com/dungeoncrawler/model/entities/Player.java +++ b/core/src/com/dungeoncrawler/model/entities/Player.java @@ -14,18 +14,18 @@ import com.dungeoncrawler.model.Item; */ public class Player extends Entity { - int standartDmg; - int standartMaxHp; + float standartDmg; + float standartMaxHp; public Player() { super(200, 200, 1); - this.maxhp = 5 * (lvl + 1); + this.maxhp = 20 * (lvl + 1); this.hp = this.maxhp; this.standartMaxHp = 5 * (lvl + 1); this.dmg = 3*lvl; - this.standartDmg = dmg = 3*lvl; + this.standartDmg = dmg; id = -1; inv = new Inventory(3,2); // TODO: Sinnvolle Werte finden diff --git a/core/src/com/dungeoncrawler/model/entities/Swordsman.java b/core/src/com/dungeoncrawler/model/entities/Swordsman.java index e8278a7..23cbb9d 100644 --- a/core/src/com/dungeoncrawler/model/entities/Swordsman.java +++ b/core/src/com/dungeoncrawler/model/entities/Swordsman.java @@ -19,8 +19,8 @@ public class Swordsman extends Entity { @Override public Entity move(int xPosPlayer, int yPosPlayer){ - int deltaX = xPosPlayer - (int) xPos; - int deltaY = yPosPlayer - (int) yPos; + float deltaX = xPosPlayer - (int) xPos; + float deltaY = yPosPlayer - (int) yPos; double alpha; if(deltaX == 0 && deltaY >= 0){ @@ -49,6 +49,7 @@ public class Swordsman extends Entity { xPos += movementX; yPos += movementY; + System.out.println("Winkel: " + Math.toDegrees(alpha)); return null; }