RotaterObj.ts 1.72 KB
import { tMgr } from "../../../Global";
import { GamePlayTable, TableName } from "../../table/TableDefine";
import { ObjType } from "../BattleConst";
import { IUpdate } from "../inter/IUpdate";
import { MapData } from "./MapData";
import { ObjData } from "./ObjData";

export class RotaterObj extends ObjData implements IUpdate {

    private _angle: number = 0;
    get angle(): number { return this._angle; }
    private _angleSpeed: number = 0;

    //#region interface

    onUpdate(dt: number) {
        // throw new Error("Method not implemented.");
        this._angle += (this._angleSpeed * dt);
        this._angle = this._angle % 360;

        // this._speedVec.x = 0;
        // this._speedVec.y = (tMgr.getConfig(TableName.GAME_PLAY, 3) as GamePlayTable).Value;

        // this._speedVec.rotateSelf(slib.MathUtil.getRadianByDegree(this._angle));
    }

    //#endregion

    //#region life cycle

    init(map: MapData, type: ObjType, gridX: number, gridY: number): void {
        super.init(map, type, gridX, gridY);

        this._angleSpeed = (tMgr.getConfig(TableName.GAME_PLAY, 12) as GamePlayTable).Value;
        this._imgName = 'UI_yxz_tsfk_xzg';

        this.canSlide = false;
    }

    onBattleStart(): void {
        super.onBattleStart();
        this.map.battle && this.map.battle.regUpdateObj(this); //预览模式下, map.battle为空
    }

    onDead(): void {
        super.onDead();
        this.map.battle && this.map.battle.unregUpdateObj(this);
    }

    clone(): RotaterObj {
        return this.cloneValue(new RotaterObj());
    }

    protected cloneValue(target: RotaterObj): RotaterObj {
        super.cloneValue(target);
        target._angleSpeed = this._angleSpeed;
        return target;
    }

    //#endregion
}