UserSkillShuriken.ts 1.77 KB
import { Battle } from "../Battle";
import { UserSkill } from "../BattleConst";
import { UserSkillBase } from "./UserSkillBase";
import { UserSkillShurikenData } from "./UserSkillShurikenData";

export class UserSkillShuriken extends UserSkillBase {

    private static _isLock: boolean = false;

    private _tweenObj: object = {};

    constructor(battle: Battle) {
        super(battle, UserSkill.SHURIKEN);
    }

    start(free: boolean = false): boolean {

        let maxY: number = 0;
        this._battle.mapData.blockData.forEach((value, key, map) => {

            if (value.contentY > maxY) {
                maxY = value.contentY;
            }

        }, this);
        UserSkillShurikenData.maxY = maxY; //先计算坐标,以便通知显示层时有可用数据


        if (!UserSkillShuriken._isLock && super.start(free)) {

            UserSkillShuriken._isLock = true;

            cc.tween(this._tweenObj).delay(1.7).call(this.doSkill.bind(this)).start();
            // this.doSkill();

            return true;

        }

        return false;
    }

    /**跳过检测,直接使用技能 */
    doSkill() {

        UserSkillShuriken._isLock = false;

        for (let x = 0; x < this._battle.mapData.mapGridSize.x; ++x) {
            let block = this._battle.mapData.getBlockByGridPos(x, UserSkillShurikenData.maxY);

            block && block.dead();
        }
    }

    /**复活时调用的接口 */
    doSkillRevive() {

        let maxY: number = 0;
        this._battle.mapData.blockData.forEach((value, key, map) => {

            if (value.contentY > maxY) {
                maxY = value.contentY;
            }

        }, this);
        UserSkillShurikenData.maxY = maxY; //先计算坐标,以便通知显示层时有可用数据

        this.doSkill();

    }
}