ResWidget.ts 2.09 KB
// Learn TypeScript:
//  - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
// Learn Attribute:
//  - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
//  - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html

import { SaveDataManager } from "../../../component/SaveDataManager";
import { ResType, WindowName } from "../../../Global";
import { UIManager } from "../../UIManager";

const { ccclass, property } = cc._decorator;

@ccclass
export default class ResWidget extends cc.Component {

    private _type: ResType = ResType.NONE;
    private _txt: cc.Label;

    // LIFE-CYCLE CALLBACKS:

    onLoad() {

        this._txt = this.node.getChildByName('txtNum').getComponent(cc.Label);
    }

    start() {
        this.node.removeFromParent();
        UIManager.ins.widgetLayer.addChild(this.node);
        this.node.getComponent(cc.Widget).updateAlignment();
    }

    protected onEnable(): void {
        this.schedule(this.onLazyUpdate, 1 / 20);
        this.refresh();
    }

    protected onDisable(): void {
        this.unschedule(this.onLazyUpdate);
    }

    // update (dt) {}

    //#region event

    onClick() {

        if (CC_DEBUG && this._type == ResType.STAR) {
            SaveDataManager.ins.adjustStar(5, true)
        }
        else {
            if (this._type == ResType.DIAMOND) {
                UIManager.ins.openWindow(WindowName.FREE_DIAMOND);
            }
        }
        // CC_DEBUG && (this._type == ResType.STAR ? SaveDataManager.ins.adjustStar(5, true) : null);
    }

    //#endregion

    //#region public method

    setType(value: ResType) {
        this._type = value;

        this.node.name = 'widget' + this._type.toString();
        this.refresh();
    }

    //#endregion

    //#region private method

    private onLazyUpdate() {
        this.refresh();
    }

    private refresh() {
        let num = (this._type == ResType.DIAMOND ? SaveDataManager.ins.runtimeData.diamond : SaveDataManager.ins.runtimeData.star);
        this._txt.string = num.toString();
    }

    //#endregion
}