@Override public void update() { if (on) { time += Game.elapsed; while (time > interval) { time -= interval; emit( count++ ); if (quantity > 0 && count >= quantity) { on = false; break; } } } else if (autoKill && countLiving() == 0) { kill(); } super.update(); }
@Override protected void layout() { bLight.x = x - bLight.width / 2; bLight.y = y - bLight.height / 2; emitter.pos( x - bLight.width / 4, y - bLight.height / 4, bLight.width / 2, bLight.height / 2 ); fLight.x = x - fLight.width / 2; fLight.y = y - fLight.height / 2; }
@Override public void emit( Emitter emitter, int index, float x, float y ) { ((SnowParticle)emitter.recycle( SnowParticle.class )).reset( x, y ); } };
@Override public int proc( Armor armor, Char attacker, Char defender, int damage) { if (Random.Int( 8 ) == 0) { if (Dungeon.level.adjacent( attacker.pos, defender.pos )) { Buff.prolong(attacker, Frost.class, Frost.duration(attacker) * Random.Float(0.5f, 1f)); CellEmitter.get(attacker.pos).start(SnowParticle.FACTORY, 0.2f, 6); } Buff.affect( defender, Burning.class ).reignite( defender ); defender.sprite.emitter().burst( FlameParticle.FACTORY, 5 ); } return damage; }
public void wither() { Dungeon.level.uproot( pos ); if (Dungeon.level.heroFOV[pos]) { CellEmitter.get( pos ).burst( LeafParticle.GENERAL, 6 ); } }
@Override public void play( Animation anim, boolean force ) { super.play(anim, force); if (ch instanceof Goo && ((Goo)ch).phase && anim != die) { if (spray == null) { spray = emitter(); spray.pour( GooParticle.FACTORY, 0.05f ); } anim.delay = 1f / ENRAGE_FRAMERATE; } else { if (spray != null) { spray.on = false; spray = null; } anim.delay = 1f / NORMAL_FRAMERATE; } }
public static Emitter emitter() { if (scene != null) { Emitter emitter = (Emitter)scene.emitters.recycle( Emitter.class ); emitter.revive(); return emitter; } else { return null; } }
@Override protected void createChildren() { super.createChildren(); avatar = new Image( Assets.AVATARS ); add( avatar ); name = PixelScene.createText( 9 ); add( name ); emitter = new Emitter(); add( emitter ); }
public Emitter emitter() { Emitter emitter = GameScene.emitter(); emitter.pos( this ); return emitter; }
@Override public void update() { if (on) { time += Game.elapsed; while (time > interval) { time -= interval; emit( count ); if (quantity > 0 && ++count >= quantity) { on = false; break; } } } else if (autoKill && countLiving() == 0) { kill(); } super.update(); }
@Override public void emit( Emitter emitter, int index, float x, float y ) { ((MagicParticle)emitter.recycle( MagicParticle.class )).resetAttract( x, y ); } @Override