UIShop.ts 5.81 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 { ADID, tMgr, WindowName } from "../../Global";
import { GamePlayTable, TableName, UserSkillTable } from "../../kernel/table/TableDefine";
import { UIBase } from "../UIBase";
import { UIManager } from "../UIManager";
import UITitle from "./UITitle";

const { ccclass, property } = cc._decorator;

@ccclass
export default class UIShop extends UIBase {

    @property(cc.Node)
    txtPackDiamond: cc.Node = null;

    @property(cc.Node)
    txtAdDiamond: cc.Node = null;
    @property(cc.Node)
    adNode: cc.Node = null;
    @property(cc.Node)
    btn_ad: cc.Node = null;
    constructor() {
        super();
        this._useCloseEffect = false;
        this._usePopUpEffect = false;
    }

    //#region lifecycle 

    protected onLoad(): void {
        this.txtPackDiamond.getComponent(cc.Label).string = (tMgr.getConfig(TableName.GAME_PLAY, 20) as GamePlayTable).Value.toString();
        this.txtAdDiamond.getComponent(cc.Label).string = (tMgr.getConfig(TableName.GAME_PLAY, 14) as GamePlayTable).Value.toString();

        let content = cc.find('scrollView/view/content', this.node);
        for (let i = 1; i <= 4; ++i) {
            let item = content.getChildByName('itemSkill' + i.toString());
            item.getChildByName('btnGet').getComponentInChildren(cc.Label).string = (tMgr.getConfig(TableName.USER_SKILL, i) as UserSkillTable).Cost.toString();
            item.getChildByName('icon').getComponentInChildren(cc.Label).string = (tMgr.getConfig(TableName.USER_SKILL, i) as UserSkillTable).BuyNum.toString();
        }
    }

    protected onEnable(): void {
        this.refresh();
        this.setAD();
    }
    setAD() {
        // this.adNode.getComponent(CustomNativeAdView).showNativeAd((result) => {
        //     if (result) {
        //         this.btn_ad.active = true;
        //     } else {
        //         this.btn_ad.active = false;
        //     }
        // });


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

    }
    protected onDestroy(): void {
        UIManager.ins.cache.delete(WindowName.SHOP); // 此界面添加在场景中,会随场景一起销毁,将UIManager中的缓存也删除,避免后续取到被销毁的缓存
    }
    hide_btn_ad() {
        this.btn_ad.active = false;
    }
    //#endregion

    //#region public method

    //#endregion

    //#region event

    onGetClick(e: cc.Event.EventTouch, customData: string) {

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

        }
        else if (customData == 'diamond') {
            //AD 放广告,放完后调 getDiamond()
            // HeyGamePlatform.instance.showVideoAd(ADID.ADID_ADDCOIN, (_result) => {
            if (true) {
                this.getDiamond();
            } else {
                console.log('视频播放失败');
            }
            // });
        }
        else if (customData == 'ad') {
            //AD 纯看广告
        }
        else if (customData.includes('skill')) {
            let skillId = Number(customData.slice(5));
            let config = (tMgr.getConfig(TableName.USER_SKILL, skillId) as UserSkillTable);

            let wpos = (e.target as cc.Node).convertToWorldSpaceAR(cc.Vec3.ZERO);
            if (SaveDataManager.ins.adjustDiamond(-config.Cost, true, wpos)) {
                //扣钱成功
                SaveDataManager.ins.setUserSkillNumDelta(skillId, config.BuyNum);
            }
        }


    }

    onCloseClick() {
        let titleNode = cc.find('Canvas/UITitle', cc.director.getScene());
        titleNode.getComponent(UITitle).onShopCloseClick();
    }

    //#endregion

    //#region private method

    private refresh() {
        let btnPackGet = cc.find('bg/pack/btnBuy', this.node);
        let btnPackBg = btnPackGet.getChildByName('Background');

        let valid = (Date.now() > SaveDataManager.ins.runtimeData.shopDailyPackRefreshTime);

        btnPackGet.getComponent(cc.Button).interactable = valid;

        btnPackBg.getChildByName('txtFree').active = valid;
        btnPackBg.getChildByName('iconAd').active = valid;
        btnPackBg.getChildByName('txtGeted').active = !valid;
    }

    private getPack() {

        let valid = (Date.now() > SaveDataManager.ins.runtimeData.shopDailyPackRefreshTime);

        if (valid) {

            let config = (tMgr.getConfig(TableName.GAME_PLAY, 20) as GamePlayTable); //礼包钻石数量
            SaveDataManager.ins.adjustDiamond(config.Value, true);
            SaveDataManager.ins.setUserSkillNumDelta(1, 1);
            SaveDataManager.ins.setUserSkillNumDelta(2, 1);
            SaveDataManager.ins.setUserSkillNumDelta(3, 1);
            SaveDataManager.ins.setUserSkillNumDelta(4, 1);

            let endTime = new Date();
            endTime.setHours(23, 59, 59);
            SaveDataManager.ins.runtimeData.shopDailyPackRefreshTime = endTime.getTime();
            SaveDataManager.ins.saveData();

            this.refresh();
        }

    }

    private getDiamond() {
        let config = (tMgr.getConfig(TableName.GAME_PLAY, 14) as GamePlayTable);
        SaveDataManager.ins.adjustDiamond(config.Value, true);
    }

    //#endregion
}