Search in sources :

Example 41 with Callback

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);
    }
}
Also used : Hunger(com.watabou.pixeldungeon.actors.buffs.Hunger) Callback(com.watabou.utils.Callback) CavesBossLevel(com.watabou.pixeldungeon.levels.CavesBossLevel) CavesLevel(com.watabou.pixeldungeon.levels.CavesLevel)

Example 42 with Callback

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);
            }
        });
    }
}
Also used : Callback(com.watabou.utils.Callback) Char(com.watabou.pixeldungeon.actors.Char)

Example 43 with Callback

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();
}
Also used : Item(com.watabou.pixeldungeon.items.Item) Mob(com.watabou.pixeldungeon.actors.mobs.Mob) Callback(com.watabou.utils.Callback) Shuriken(com.watabou.pixeldungeon.items.weapon.missiles.Shuriken) MissileSprite(com.watabou.pixeldungeon.sprites.MissileSprite)

Aggregations

Callback (com.watabou.utils.Callback)43 Char (com.shatteredpixel.shatteredpixeldungeon.actors.Char)8 Pushing (com.shatteredpixel.shatteredpixeldungeon.effects.Pushing)4 Ballistica (com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica)4 Char (com.watabou.pixeldungeon.actors.Char)4 MissileSprite (com.watabou.pixeldungeon.sprites.MissileSprite)4 Actor (com.shatteredpixel.shatteredpixeldungeon.actors.Actor)3 Chains (com.shatteredpixel.shatteredpixeldungeon.effects.Chains)3 Shuriken (com.watabou.pixeldungeon.items.weapon.missiles.Shuriken)3 Mob (com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob)2 Item (com.shatteredpixel.shatteredpixeldungeon.items.Item)2 Shuriken (com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Shuriken)2 Dart (com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.Dart)2 MissileSprite (com.shatteredpixel.shatteredpixeldungeon.sprites.MissileSprite)2 BitmapText (com.watabou.noosa.BitmapText)2 Hunger (com.watabou.pixeldungeon.actors.buffs.Hunger)2 SnipersMark (com.watabou.pixeldungeon.actors.buffs.SnipersMark)2 Mob (com.watabou.pixeldungeon.actors.mobs.Mob)2 Item (com.watabou.pixeldungeon.items.Item)2 MissileWeapon (com.watabou.pixeldungeon.items.weapon.missiles.MissileWeapon)2