diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index 86e7a95..3d4d0db 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -167,7 +167,11 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(Intersector.overlaps(tempObject.getCollisionSprite(), rectangle)){ overlaps = true; - delete = true; + + if(d.getCurrentEntities()[i].getId() == 2){ + delete = true; + } + break; } } @@ -215,13 +219,18 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ } } - if(delete || d.getCurrentEntities()[i].getToDelete()){ + if(delete || d.getCurrentEntities()[i].isToDelete()){ if(d.getCurrentEntities()[i].getId() == 2){ d.getCurrentEntities()[i] = null; gs.deleteEntitySprite(i); } else{ - + if(gs.entitySprites[i].getDie() == 0){ + gs.entitySprites[i].setDie(1); + } + else if(gs.entitySprites[i].getDie() == 2){ + //d.getCurrentEntities()[i] = null; + } } } diff --git a/core/src/com/dungeoncrawler/model/Entity.java b/core/src/com/dungeoncrawler/model/Entity.java index 1d88243..372f7d1 100644 --- a/core/src/com/dungeoncrawler/model/Entity.java +++ b/core/src/com/dungeoncrawler/model/Entity.java @@ -13,7 +13,7 @@ public abstract class Entity { protected int id; protected int direction; protected Inventory inv; - protected boolean toDelete; + private boolean toDelete; private double angle; @@ -147,7 +147,7 @@ public abstract class Entity { } public boolean getToDelete(){ - return this.toDelete; + return this.isToDelete(); } /** @@ -163,5 +163,19 @@ public abstract class Entity { public void setAngle(double angle) { this.angle = angle; } + + /** + * @return the toDelete + */ + public boolean isToDelete() { + return toDelete; + } + + /** + * @param toDelete the toDelete to set + */ + public void setToDelete(boolean toDelete) { + this.toDelete = toDelete; + } } \ 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 65bef3d..9a988e7 100644 --- a/core/src/com/dungeoncrawler/model/entities/Archer.java +++ b/core/src/com/dungeoncrawler/model/entities/Archer.java @@ -23,7 +23,7 @@ public class Archer extends Entity{ @Override public boolean move(int xPosPlayer, int yPosPlayer) { - if(!toDelete){ + if(!isToDelete()){ float deltaX = xPosPlayer - (int) xPos; float deltaY = yPosPlayer - (int) yPos; @@ -89,7 +89,7 @@ public class Archer extends Entity{ public Entity shoot(int xPosPlayer, int yPosPlayer){ Arrow a = null; - if(!toDelete){ + if(!isToDelete()){ float deltaX = xPosPlayer - (int) xPos; float deltaY = yPosPlayer - (int) yPos; diff --git a/core/src/com/dungeoncrawler/model/entities/Arrow.java b/core/src/com/dungeoncrawler/model/entities/Arrow.java index a8973bf..d79e919 100644 --- a/core/src/com/dungeoncrawler/model/entities/Arrow.java +++ b/core/src/com/dungeoncrawler/model/entities/Arrow.java @@ -39,7 +39,7 @@ public class Arrow extends Entity{ yPos += movementY; if(this.lifetime > 50){ - this.toDelete = true; + this.setToDelete(true); } return false; diff --git a/core/src/com/dungeoncrawler/model/entities/Swordsman.java b/core/src/com/dungeoncrawler/model/entities/Swordsman.java index c314bef..586fa64 100644 --- a/core/src/com/dungeoncrawler/model/entities/Swordsman.java +++ b/core/src/com/dungeoncrawler/model/entities/Swordsman.java @@ -19,7 +19,7 @@ public class Swordsman extends Entity { @Override public boolean move(int xPosPlayer, int yPosPlayer){ - if(!toDelete){ + if(!isToDelete()){ float deltaX = xPosPlayer - (int) xPos; float deltaY = yPosPlayer - (int) yPos; diff --git a/core/src/com/dungeoncrawler/view/EntitySprite.java b/core/src/com/dungeoncrawler/view/EntitySprite.java index cb26ec0..a9289ff 100644 --- a/core/src/com/dungeoncrawler/view/EntitySprite.java +++ b/core/src/com/dungeoncrawler/view/EntitySprite.java @@ -57,7 +57,7 @@ public class EntitySprite { direction = e.getDirection(); - if(die >= 1){ + if(getDie() >= 1){ updateDie(); } else if(attackState == 1){ @@ -73,8 +73,11 @@ public class EntitySprite { } public void updateDie(){ - if(frames[3] >= 9){ - die = 2; + if(die == 2){ + sprites[0].setRegion(regions[0][4][9]); + } + else if(frames[3] >= 9){ + setDie(2); } else{ frames[3]++; @@ -249,4 +252,18 @@ public class EntitySprite { public void startAttack(){ this.attackState = 1; } + + /** + * @return the die + */ + public int getDie() { + return die; + } + + /** + * @param die the die to set + */ + public void setDie(int die) { + this.die = die; + } } diff --git a/core/src/com/dungeoncrawler/view/GameScreen.java b/core/src/com/dungeoncrawler/view/GameScreen.java index 7aea6a8..f39b416 100644 --- a/core/src/com/dungeoncrawler/view/GameScreen.java +++ b/core/src/com/dungeoncrawler/view/GameScreen.java @@ -287,6 +287,10 @@ public class GameScreen { if(e.getId() == 2){ entitySprites[i].getSprites()[0].setRotation((float) Math.toDegrees(e.getAngle())); } + + if(e.isToDelete()){ + entitySprites[i].setDie(2); + } } } @@ -314,7 +318,7 @@ public class GameScreen { if(Intersector.overlaps(entitySprites[i].getCollisionSprite(), attackSprite.getBoundingRectangle())){ if(e[i] != null){ if(e[i].getHp() - p.getDmg() <= 0){ - e[i] = null; + e[i].setToDelete(true); } else{ e[i].setHp(e[i].getHp() - p.getDmg()); @@ -334,7 +338,7 @@ public class GameScreen { if(Intersector.overlaps(entitySprites[i].getCollisionSprite(), attackSprite.getBoundingRectangle())){ if(e[i] != null){ if(e[i].getHp() - p.getDmg() <= 0){ - e[i] = null; + e[i].setToDelete(true); } else{ e[i].setHp(e[i].getHp() - p.getDmg()); @@ -354,7 +358,7 @@ public class GameScreen { if(Intersector.overlaps(entitySprites[i].getCollisionSprite(), attackSprite.getBoundingRectangle())){ if(e[i] != null){ if(e[i].getHp() - p.getDmg() <= 0){ - e[i] = null; + e[i].setToDelete(true); } else{ e[i].setHp(e[i].getHp() - p.getDmg()); @@ -374,7 +378,7 @@ public class GameScreen { if(Intersector.overlaps(entitySprites[i].getCollisionSprite(), attackSprite.getBoundingRectangle())){ if(e[i] != null){ if(e[i].getHp() - p.getDmg() <= 0){ - e[i] = null; + e[i].setToDelete(true); } else{ e[i].setHp(e[i].getHp() - p.getDmg());