Search in sources :

Example 21 with Callback

use of com.watabou.utils.Callback in project pixel-dungeon-remix by NYRDS.

the class Barrel method burn.

@Override
public void burn() {
    if (burned) {
        return;
    }
    burned = true;
    sprite.playAnim(10, false, new Callback() {

        @Override
        public void call() {
            remove();
        }
    }, image() + 0, image() + 1, image() + 2, image() + 3, image() + 4);
    Sample.INSTANCE.play(Assets.SND_EXPLOSION);
    LiquidFlame fire = Blob.seed(getPos(), 10, LiquidFlame.class);
    GameScene.add(fire);
}
Also used : Callback(com.watabou.utils.Callback) LiquidFlame(com.watabou.pixeldungeon.actors.blobs.LiquidFlame)

Example 22 with Callback

use of com.watabou.utils.Callback in project pixel-dungeon-remix by NYRDS.

the class ShadowLord method blink.

private void blink(int epos) {
    if (Dungeon.level.distance(getPos(), epos) == 1) {
        int y = Dungeon.level.cellX(getPos());
        int x = Dungeon.level.cellY(getPos());
        int ey = Dungeon.level.cellX(epos);
        int ex = Dungeon.level.cellY(epos);
        int dx = x - ex;
        int dy = y - ey;
        x += 2 * dx;
        y += 2 * dy;
        final int tgt = Dungeon.level.cell(x, y);
        if (Dungeon.level.cellValid(tgt)) {
            final Char ch = this;
            fx(getPos(), new Callback() {

                @Override
                public void call() {
                    WandOfBlink.appear(ch, tgt);
                }
            });
        }
    }
}
Also used : Callback(com.watabou.utils.Callback) Char(com.watabou.pixeldungeon.actors.Char)

Example 23 with Callback

use of com.watabou.utils.Callback in project pixel-dungeon-remix by NYRDS.

the class Item method cast.

public void cast(final Hero user, int dst) {
    setCurUser(user);
    final int cell = Ballistica.cast(user.getPos(), dst, false, true);
    user.getSprite().zap(cell);
    user.busy();
    Char enemy = Actor.findChar(cell);
    QuickSlot.target(this, enemy);
    float delay = TIME_TO_THROW;
    if (this instanceof MissileWeapon) {
        // FIXME
        delay *= ((MissileWeapon) this).speedFactor(user);
        if (enemy != null && enemy.hasBuff(SnipersMark.class)) {
            delay *= 0.5f;
        }
    }
    final float finalDelay = delay;
    final Item item = detach(user.belongings.backpack);
    ((MissileSprite) user.getSprite().getParent().recycle(MissileSprite.class)).reset(user.getPos(), cell, this, new Callback() {

        @Override
        public void call() {
            item.onThrow(cell);
            user.spendAndNext(finalDelay);
        }
    });
}
Also used : SnipersMark(com.watabou.pixeldungeon.actors.buffs.SnipersMark) Callback(com.watabou.utils.Callback) Char(com.watabou.pixeldungeon.actors.Char) MissileWeapon(com.watabou.pixeldungeon.items.weapon.missiles.MissileWeapon) MissileSprite(com.watabou.pixeldungeon.sprites.MissileSprite)

Example 24 with Callback

use of com.watabou.utils.Callback in project pixel-dungeon by watabou.

the class Item method cast.

public void cast(final Hero user, int dst) {
    final int cell = Ballistica.cast(user.pos, dst, false, true);
    user.sprite.zap(cell);
    user.busy();
    Sample.INSTANCE.play(Assets.SND_MISS, 0.6f, 0.6f, 1.5f);
    Char enemy = Actor.findChar(cell);
    QuickSlot.target(this, enemy);
    // FIXME!!!
    float delay = TIME_TO_THROW;
    if (this instanceof MissileWeapon) {
        delay *= ((MissileWeapon) this).speedFactor(user);
        if (enemy != null) {
            SnipersMark mark = user.buff(SnipersMark.class);
            if (mark != null) {
                if (mark.object == enemy.id()) {
                    delay *= 0.5f;
                }
                user.remove(mark);
            }
        }
    }
    final float finalDelay = delay;
    ((MissileSprite) user.sprite.parent.recycle(MissileSprite.class)).reset(user.pos, cell, this, new Callback() {

        @Override
        public void call() {
            Item.this.detach(user.belongings.backpack).onThrow(cell);
            user.spendAndNext(finalDelay);
        }
    });
}
Also used : SnipersMark(com.watabou.pixeldungeon.actors.buffs.SnipersMark) Callback(com.watabou.utils.Callback) Char(com.watabou.pixeldungeon.actors.Char) MissileWeapon(com.watabou.pixeldungeon.items.weapon.missiles.MissileWeapon) MissileSprite(com.watabou.pixeldungeon.sprites.MissileSprite)

Example 25 with Callback

use of com.watabou.utils.Callback in project pixel-dungeon by watabou.

the class Goo method doAttack.

@Override
protected boolean doAttack(final Char enemy) {
    if (pumpedUp) {
        if (Level.adjacent(pos, enemy.pos)) {
            // Pumped up attack WITHOUT accuracy penalty
            jumped = false;
            return super.doAttack(enemy);
        } else {
            // Pumped up attack WITH accuracy penalty
            jumped = true;
            if (Ballistica.cast(pos, enemy.pos, false, true) == enemy.pos) {
                final int dest = Ballistica.trace[Ballistica.distance - 2];
                Callback afterJump = new Callback() {

                    @Override
                    public void call() {
                        move(dest);
                        Dungeon.level.mobPress(Goo.this);
                        Goo.super.doAttack(enemy);
                    }
                };
                if (Dungeon.visible[pos] || Dungeon.visible[dest]) {
                    sprite.jump(pos, dest, afterJump);
                    return false;
                } else {
                    afterJump.call();
                    return true;
                }
            } else {
                sprite.idle();
                pumpedUp = false;
                return true;
            }
        }
    } else if (Random.Int(3) > 0) {
        // Normal attack
        return super.doAttack(enemy);
    } else {
        // Pumping up
        pumpedUp = true;
        spend(PUMP_UP_DELAY);
        ((GooSprite) sprite).pumpUp();
        if (Dungeon.visible[pos]) {
            sprite.showStatus(CharSprite.NEGATIVE, "!!!");
            GLog.n("Goo is pumping itself up!");
        }
        return true;
    }
}
Also used : Callback(com.watabou.utils.Callback)

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