UIBattleResult.ts 4.45 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 { SoundManager } from "../../component/SoundManager";
import { ADID, SoundName, WindowName } from "../../Global";

import { BattleManager } from "../../kernel/battle/BattleManager";
import ItemGrid from "../../prefabs/ItemGrid";
import { UIBase } from "../UIBase";
import { UIManager } from "../UIManager";

const { ccclass, property } = cc._decorator;

@ccclass
export default class UIBattleResult extends UIBase {

    @property(cc.Label)
    txtLevel: cc.Label = null;

    @property(cc.Label)
    txtScore: cc.Label = null;
    @property(cc.Node)
    btn_ad: cc.Node = null;
    @property(cc.Node)
    btn_start: cc.Node = null;
    @property(cc.Node)
    btn_bonus: cc.Node = null;
    private _finishedStar: number = -1;

    //#region LIFE-CYCLE CALLBACKS:
    openCount: number = 0;

    onLoad() { this._usePopUpEffect = false; this._useCloseEffect = false; }

    protected onEnable(): void {

        let aniNode = this.node.getChildByName('ani').getComponent(cc.Animation);
        aniNode.play(this.enableParam ? 'fx_game_win' : 'fx_game_lost', 0);

        let aniStar = this.node.getChildByName('aniStar').getComponent(cc.Animation);
        aniStar.node.active = this.enableParam;

        if (aniStar.node.active) {
            aniStar.on('finished', this.onStarAniFinished, this);
            this.onStarAniFinished();
        }

        let aniShineNode = this.node.getChildByName('aniShine');
        aniShineNode.active = this.enableParam;
        aniShineNode.active && aniShineNode.getComponent(cc.Animation).play('fx_game_win_star');

        this.txtLevel.string = BattleManager.ins.curBattle.levelId.toString();
        this.txtScore.string = BattleManager.ins.curBattle.mapData.curScore.toString();

        let diamondGrid = this.node.getChildByName('ani').getChildByName('UI_Finish_tck1').getChildByName('diamondGrid');
        diamondGrid.active = (BattleManager.ins.curBattle.profit.diamond > 0);
        diamondGrid.getComponent(ItemGrid).setNum(BattleManager.ins.curBattle.profit.diamond);

        SoundManager.ins.playEffect(this.enableParam ? SoundName.WIN : SoundName.LOSE);

        this.openCount++;
        if (this.openCount > 1) {
            this.BtnPos_Change();
        }


        this.btn_ad.getChildByName('Background').getChildByName('UI_General_Btn_yellow_ckgg').active = true;
        this.btn_ad.getChildByName('Background').getChildByName('UI_Finish_kxsx').active = false;



    }

    //按钮位置轮换
    BtnPos_Change() {
        let tempPos = this.btn_start.position;
        this.btn_start.position = this.btn_bonus.position;
        this.btn_bonus.position = this.btn_ad.position;
        this.btn_ad.position = tempPos;
    }
    protected onDisable(): void {
        let aniStar = this.node.getChildByName('aniStar').getComponent(cc.Animation);
        aniStar.off('finished', this.onStarAniFinished, this);
        this._finishedStar = -1;
    }



    // update (dt) {}

    //#endregion

    //#region public method

    //#endregion

    //#region event

    onBtnContineClick() {
        this.getReward(1);
        this.leave();
    }

    onBtnDoubleClick() {
        //AD 放广告,放完后调用
        // HeyGamePlatform.instance.showVideoAd(ADID.ADID_ADDCOIN, (_result) => {
        if (true) {
            this.getReward(2);
            this.leave();
        } else {
            console.log('视频播放失败');
        }
        // });

    }

    onAdClick() {
        //AD 纯放广告
    }

    private onStarAniFinished() {
        this._finishedStar++;

        if (this._finishedStar < BattleManager.ins.curBattle.profit.star) {
            let aniStar = this.node.getChildByName('aniStar').getComponent(cc.Animation);
            aniStar.play('fx_game_win' + (this._finishedStar + 1).toString(), 0);
        }
    }

    //#endregion

    //#region private method

    private leave() {


        BattleManager.ins.leaveBattle();
        UIManager.ins.closeWindow(WindowName.BATTLE_RESULT);
        UIManager.ins.openScene('Main');
    }

    private getReward(rate: number = 1) {

        if (this.enableParam) {
            //赢了才结算
            BattleManager.ins.curBattle.profit.finish(rate);
        }

    }

    //#endregion
}