v0.3.0: BIG refactor to buff display, more clear and extendable code, instead of a nest of instanceof statements

This commit is contained in:
Evan Debenham
2015-04-29 01:55:41 -04:00
parent 9fad20a071
commit 6a7c42634a
29 changed files with 205 additions and 120 deletions
@@ -348,93 +348,26 @@ public abstract class Char extends Actor {
buffs.add( buff );
Actor.add( buff );
if (sprite != null) {
if (buff instanceof Poison) {
CellEmitter.center( pos ).burst( PoisonParticle.SPLASH, 5 );
sprite.showStatus( CharSprite.NEGATIVE, "poisoned" );
} else if (buff instanceof Amok) {
sprite.showStatus( CharSprite.NEGATIVE, "amok" );
} else if (buff instanceof Slow) {
sprite.showStatus( CharSprite.NEGATIVE, "slowed" );
} else if (buff instanceof Chill) {
sprite.showStatus( CharSprite.NEGATIVE, "chilled" );
sprite.add( CharSprite.State.CHILLED );
} else if (buff instanceof MindVision) {
sprite.showStatus( CharSprite.POSITIVE, "mind" );
sprite.showStatus( CharSprite.POSITIVE, "vision" );
} else if (buff instanceof Paralysis) {
sprite.add( CharSprite.State.PARALYSED );
sprite.showStatus( CharSprite.NEGATIVE, "paralysed" );
} else if (buff instanceof Terror) {
sprite.showStatus( CharSprite.NEGATIVE, "frightened" );
} else if (buff instanceof Roots) {
sprite.showStatus( CharSprite.NEGATIVE, "rooted" );
} else if (buff instanceof Cripple) {
sprite.showStatus( CharSprite.NEGATIVE, "crippled" );
} else if (buff instanceof Bleeding) {
sprite.showStatus( CharSprite.NEGATIVE, "bleeding" );
} else if (buff instanceof Vertigo) {
sprite.showStatus( CharSprite.NEGATIVE, "dizzy" );
} else if (buff instanceof Sleep) {
sprite.idle();
if (sprite != null)
switch(buff.type){
case POSITIVE:
sprite.showStatus(CharSprite.POSITIVE, buff.toString()); break;
case NEGATIVE:
sprite.showStatus(CharSprite.NEGATIVE, buff.toString());break;
case NEUTRAL:
sprite.showStatus(CharSprite.NEUTRAL, buff.toString()); break;
case SILENT: default:
break; //show nothing
}
else if (buff instanceof Burning) {
sprite.add( CharSprite.State.BURNING );
} else if (buff instanceof Levitation) {
sprite.add( CharSprite.State.LEVITATING );
} else if (buff instanceof Frost) {
sprite.add( CharSprite.State.FROZEN );
} else if (buff instanceof Invisibility || buff instanceof CloakOfShadows.cloakStealth) {
if (!(buff instanceof Shadows)) {
sprite.showStatus( CharSprite.POSITIVE, "invisible" );
}
sprite.add( CharSprite.State.INVISIBLE );
}
}
}
public void remove( Buff buff ) {
buffs.remove( buff );
Actor.remove( buff );
if (buff instanceof Burning) {
sprite.remove( CharSprite.State.BURNING );
} else if (buff instanceof Levitation) {
sprite.remove( CharSprite.State.LEVITATING );
} else if ((buff instanceof Invisibility || buff instanceof CloakOfShadows.cloakStealth) && invisible <= 0) {
sprite.remove( CharSprite.State.INVISIBLE );
} else if (buff instanceof Paralysis) {
sprite.remove( CharSprite.State.PARALYSED );
} else if (buff instanceof Frost) {
sprite.remove( CharSprite.State.FROZEN );
} else if (buff instanceof Chill) {
sprite.remove( CharSprite.State.CHILLED );
}
}
public void remove( Class<? extends Buff> buffClass ) {
@@ -452,21 +385,7 @@ public abstract class Char extends Actor {
public void updateSpriteState() {
for (Buff buff:buffs) {
if (buff instanceof Burning) {
sprite.add( CharSprite.State.BURNING );
} else if (buff instanceof Levitation) {
sprite.add( CharSprite.State.LEVITATING );
} else if (buff instanceof Invisibility || buff instanceof CloakOfShadows.cloakStealth) {
sprite.add( CharSprite.State.INVISIBLE );
} else if (buff instanceof Paralysis) {
sprite.add( CharSprite.State.PARALYSED );
} else if (buff instanceof Frost) {
sprite.add( CharSprite.State.FROZEN );
} else if (buff instanceof Light) {
sprite.add( CharSprite.State.ILLUMINATED );
} else if (buff instanceof Chill) {
sprite.add( CharSprite.State.CHILLED );
}
buff.fx( true );
}
}