diff --git a/SPD-classes/src/main/java/com/watabou/noosa/Group.java b/SPD-classes/src/main/java/com/watabou/noosa/Group.java index f0718d8a5..eb7a2dc98 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/Group.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/Group.java @@ -25,6 +25,8 @@ import com.watabou.utils.Random; import com.watabou.utils.Reflection; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; public class Group extends Gizmo { @@ -310,4 +312,8 @@ public class Group extends Gizmo { return null; } } + + public synchronized void sort(Comparator c){ + Collections.sort(members, c); + } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java index c6871c743..228ee11ce 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java @@ -139,6 +139,7 @@ import com.watabou.utils.RectF; import java.io.IOException; import java.util.ArrayList; +import java.util.Comparator; import java.util.Locale; public class GameScene extends PixelScene { @@ -885,6 +886,22 @@ public class GameScene extends PixelScene { sprite.visible = Dungeon.level.heroFOV[mob.pos]; mobs.add( sprite ); sprite.link( mob ); + sortMobSprites(); + } + + //ensures that mob sprites are drawn in the correct order, in case of overlap + public static void sortMobSprites(){ + if (scene != null){ + scene.mobs.sort(new Comparator() { + @Override + public int compare(Object a, Object b) { + if (a instanceof CharSprite && b instanceof CharSprite){ + return ((CharSprite) a).ch.pos - ((CharSprite) b).ch.pos; + } + return 0; + } + }); + } } private synchronized void prompt( String text ) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/CharSprite.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/CharSprite.java index 3304fdf4e..467b3cd33 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/CharSprite.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/CharSprite.java @@ -724,6 +724,7 @@ public class CharSprite extends MovieClip implements Tweener.Listener, MovieClip motion = null; ch.onMotionComplete(); + GameScene.sortMobSprites(); notifyAll(); }