use of com.watabou.utils.Callback in project pixel-dungeon-remix by NYRDS.
the class Pickaxe method execute.
@Override
public void execute(final Hero hero, String action) {
if (action.equals(AC_MINE)) {
if (!(Dungeon.level instanceof CavesLevel || Dungeon.level instanceof CavesBossLevel)) {
GLog.w(TXT_NO_VEIN);
return;
}
for (int i = 0; i < Level.NEIGHBOURS8.length; i++) {
final int pos = hero.getPos() + Level.NEIGHBOURS8[i];
if (Dungeon.level.map[pos] == Terrain.WALL_DECO) {
hero.spend(TIME_TO_MINE);
hero.busy();
hero.getSprite().attack(pos, new Callback() {
@Override
public void call() {
CellEmitter.center(pos).burst(Speck.factory(Speck.STAR), 7);
Sample.INSTANCE.play(Assets.SND_EVOKE);
Dungeon.level.set(pos, Terrain.WALL);
GameScene.updateMap(pos);
DarkGold gold = new DarkGold();
if (gold.doPickUp(Dungeon.hero)) {
GLog.i(Hero.TXT_YOU_NOW_HAVE, gold.name());
} else {
Dungeon.level.drop(gold, hero.getPos()).sprite.drop();
}
Hunger hunger = hero.buff(Hunger.class);
if (hunger != null && !hunger.isStarving()) {
hunger.satisfy(-Hunger.STARVING / 10);
BuffIndicator.refreshHero();
}
hero.onOperateComplete();
}
});
return;
}
}
GLog.w(TXT_NO_VEIN);
} else {
super.execute(hero, action);
}
}
use of com.watabou.utils.Callback in project pixel-dungeon-remix by NYRDS.
the class Warlock method blink.
private void blink(int epos) {
int cell = getPos();
Ballistica.cast(epos, cell, true, false);
for (int i = 1; i < 4; i++) {
int next = Ballistica.trace[i + 1];
if (Dungeon.level.cellValid(next) && (Dungeon.level.passable[next] || Dungeon.level.avoid[next]) && Actor.findChar(next) == null) {
cell = next;
Dungeon.observe();
}
}
if (cell != getPos()) {
final int tgt = cell;
final Char ch = this;
fx(cell, new Callback() {
@Override
public void call() {
WandOfBlink.appear(ch, tgt);
}
});
}
}
use of com.watabou.utils.Callback in project pixel-dungeon-remix by NYRDS.
the class HuntressArmor method doSpecial.
@Override
public void doSpecial() {
Item proto = new Shuriken();
for (Mob mob : Dungeon.level.getCopyOfMobsArray()) {
if (Dungeon.level.fieldOfView[mob.getPos()]) {
Callback callback = new Callback() {
@Override
public void call() {
getCurUser().attack(targets.get(this));
targets.remove(this);
if (targets.isEmpty()) {
getCurUser().spendAndNext(getCurUser().attackDelay());
}
}
};
((MissileSprite) getCurUser().getSprite().getParent().recycle(MissileSprite.class)).reset(getCurUser().getPos(), mob.getPos(), proto, callback);
targets.put(callback, mob);
}
}
if (targets.size() == 0) {
GLog.w(TXT_NO_ENEMIES);
return;
}
getCurUser().getSprite().zap(getCurUser().getPos());
getCurUser().busy();
}
Aggregations