diff --git a/core/src/com/dungeoncrawler/view/EntitySprite.java b/core/src/com/dungeoncrawler/view/EntitySprite.java index ad176ab..77e2608 100644 --- a/core/src/com/dungeoncrawler/view/EntitySprite.java +++ b/core/src/com/dungeoncrawler/view/EntitySprite.java @@ -15,7 +15,7 @@ import com.dungeoncrawler.model.Entity; * * @author jonathan */ -public class EntitySprite { +public class EntitySprite implements Comparable { // 0: pants, 1: body, 2: head, 3: hair, 4: collision private Sprite[] sprites; @@ -267,4 +267,17 @@ public class EntitySprite { public void setDie(int die) { this.die = die; } + + @Override + public int compareTo(EntitySprite t) { + if(collisionSprite.getY() > t.getCollisionSprite().getY()){ + return -1; + } + else if(collisionSprite.getY() == t.getCollisionSprite().getY()){ + return 0; + } + else{ + return 1; + } + } } diff --git a/core/src/com/dungeoncrawler/view/GameScreen.java b/core/src/com/dungeoncrawler/view/GameScreen.java index 8b81528..32e3bff 100644 --- a/core/src/com/dungeoncrawler/view/GameScreen.java +++ b/core/src/com/dungeoncrawler/view/GameScreen.java @@ -17,6 +17,7 @@ import com.dungeoncrawler.model.Dungeon; import com.dungeoncrawler.model.Entity; import com.dungeoncrawler.model.entities.*; import java.util.ArrayList; +import java.util.Arrays; public class GameScreen { @@ -218,8 +219,37 @@ public class GameScreen { mapItem.getSprite().draw(batch); } + ArrayList temp = new ArrayList<>(); + + for(EntitySprite entity : entitySprites){ + if(entity != null){ + temp.add(entity); + } + } + + EntitySprite[] renderArray = new EntitySprite[temp.size() + 1]; + for(int i = 0; i < renderArray.length; i++){ + if(i == renderArray.length - 1){ + renderArray[i] = player; + } + else{ + renderArray[i] = temp.get(i); + } + } + + Arrays.sort(renderArray); + + for(EntitySprite eSprite : renderArray){ + if(eSprite != null){ + for(int i = 0; i < eSprite.getSprites().length; i++){ + eSprite.getSprites()[i].draw(batch); + } + } + } + + /* //DRAW'T JEDES ENTITY - prueft vorher ob vorhanden - for(int i = 0; i < e.length; i++){ + for(int i = 0; i < renderArray.length; i++){ if(e[i] != null){ entitySprites[i].getSprites()[0].draw(batch); @@ -231,6 +261,7 @@ public class GameScreen { for(Sprite sprite : player.getSprites()){ sprite.draw(batch); } + */ roomChangeSprite.setRegion(roomChangeTextureRegion[0][roomChangeRow]); if(roomLoading == true){