v2.2.0: improved mobsprite sorting, more efficient & sorts other visuals

This commit is contained in:
Evan Debenham
2023-09-12 13:06:39 -04:00
parent 2cf30cacc7
commit 3e6ae53d2b
2 changed files with 13 additions and 7 deletions

View File

@@ -314,6 +314,12 @@ public class Group extends Gizmo {
}
public synchronized void sort(Comparator c){
//only sort if we aren't already sorted
for (int i=0; i < length-1; i++) {
if (c.compare(members.get(i), members.get(i+1)) > 0) {
Collections.sort(members, c);
return;
}
}
}
}

View File

@@ -896,13 +896,13 @@ public class GameScene extends PixelScene {
scene.mobs.sort(new Comparator() {
@Override
public int compare(Object a, Object b) {
//elements that aren't CharSprites go to the end of the list
if (a instanceof CharSprite && b instanceof CharSprite) {
return (int) Math.signum((((CharSprite) a).y + ((CharSprite) a).height())
- (((CharSprite) b).y + ((CharSprite) b).height()));
} else if (a instanceof CharSprite){
//elements that aren't visual go to the end of the list
if (a instanceof Visual && b instanceof Visual) {
return (int) Math.signum((((Visual) a).y + ((Visual) a).height())
- (((Visual) b).y + ((Visual) b).height()));
} else if (a instanceof Visual){
return -1;
} else if (b instanceof CharSprite){
} else if (b instanceof Visual){
return 1;
} else {
return 0;