v0.3.0e: refactored the new findChars() function and re-added a collection of chars to Actor. Better readability and (trivially) better performance.
This commit is contained in:
parent
c55e38a86a
commit
2aee4fe3c6
|
@ -717,12 +717,9 @@ public class Dungeon {
|
|||
System.arraycopy( pass, 0, passable, 0, Level.LENGTH );
|
||||
}
|
||||
|
||||
for (Actor actor : Actor.all()) {
|
||||
if (actor instanceof Char) {
|
||||
int pos = ((Char)actor).pos;
|
||||
if (visible[pos]) {
|
||||
passable[pos] = false;
|
||||
}
|
||||
for (Char c : Actor.chars()) {
|
||||
if (visible[c.pos]) {
|
||||
passable[c.pos] = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -738,12 +735,9 @@ public class Dungeon {
|
|||
System.arraycopy( pass, 0, passable, 0, Level.LENGTH );
|
||||
}
|
||||
|
||||
for (Actor actor : Actor.all()) {
|
||||
if (actor instanceof Char) {
|
||||
int pos = ((Char)actor).pos;
|
||||
if (visible[pos]) {
|
||||
passable[pos] = false;
|
||||
}
|
||||
for (Char c : Actor.chars()) {
|
||||
if (visible[c.pos]) {
|
||||
passable[c.pos] = false;
|
||||
}
|
||||
}
|
||||
passable[cur] = true;
|
||||
|
|
|
@ -98,7 +98,8 @@ public abstract class Actor implements Bundlable {
|
|||
// **********************
|
||||
// *** Static members ***
|
||||
|
||||
private static HashSet<Actor> all = new HashSet<Actor>();
|
||||
private static HashSet<Actor> all = new HashSet<>();
|
||||
private static HashSet<Char> chars = new HashSet<>();
|
||||
private static Actor current;
|
||||
|
||||
private static SparseArray<Actor> ids = new SparseArray<Actor>();
|
||||
|
@ -110,6 +111,7 @@ public abstract class Actor implements Bundlable {
|
|||
now = 0;
|
||||
|
||||
all.clear();
|
||||
chars.clear();
|
||||
|
||||
ids.clear();
|
||||
}
|
||||
|
@ -234,6 +236,7 @@ public abstract class Actor implements Bundlable {
|
|||
|
||||
if (actor instanceof Char) {
|
||||
Char ch = (Char)actor;
|
||||
chars.add( ch );
|
||||
for (Buff buff : ch.buffs()) {
|
||||
all.add( buff );
|
||||
buff.onAdd();
|
||||
|
@ -245,6 +248,7 @@ public abstract class Actor implements Bundlable {
|
|||
|
||||
if (actor != null) {
|
||||
all.remove( actor );
|
||||
chars.remove( actor );
|
||||
actor.onRemove();
|
||||
|
||||
if (actor.id > 0) {
|
||||
|
@ -254,9 +258,9 @@ public abstract class Actor implements Bundlable {
|
|||
}
|
||||
|
||||
public static Char findChar( int pos ) {
|
||||
for (Actor actor : all){
|
||||
if (actor instanceof Char && ((Char)actor).pos == pos)
|
||||
return (Char)actor;
|
||||
for (Char ch : chars){
|
||||
if (ch.pos == pos)
|
||||
return ch;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -268,4 +272,6 @@ public abstract class Actor implements Bundlable {
|
|||
public static HashSet<Actor> all() {
|
||||
return all;
|
||||
}
|
||||
|
||||
public static HashSet<Char> chars() { return chars; }
|
||||
}
|
||||
|
|
|
@ -170,10 +170,8 @@ public class King extends Mob {
|
|||
Sample.INSTANCE.play( Assets.SND_CHALLENGE );
|
||||
|
||||
boolean[] passable = Level.passable.clone();
|
||||
for (Actor actor : Actor.all()) {
|
||||
if (actor instanceof Char) {
|
||||
passable[((Char)actor).pos] = false;
|
||||
}
|
||||
for (Char c : Actor.chars()) {
|
||||
passable[c.pos] = false;
|
||||
}
|
||||
|
||||
int undeadsToSummon = maxArmySize() - Undead.count;
|
||||
|
|
|
@ -164,7 +164,7 @@ public class QuickSlotButton extends Button implements WndBag.Listener {
|
|||
targeting = lastTarget != null && lastTarget.isAlive() && Dungeon.visible[lastTarget.pos];
|
||||
|
||||
if (targeting) {
|
||||
if (Actor.all().contains( lastTarget )) {
|
||||
if (Actor.chars().contains( lastTarget )) {
|
||||
lastTarget.sprite.parent.add( crossM );
|
||||
crossM.point( DungeonTilemap.tileToWorld( lastTarget.pos ) );
|
||||
crossB.x = PixelScene.align( x + (width - crossB.width) / 2 );
|
||||
|
|
Loading…
Reference in New Issue
Block a user