// 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 GameManager from "./GameManager";
import MapConroler from "./Map";
import NumberToImage from "./NumberToImage";
import { MiniGameSdk } from "./Sdk/MiniGameSdk";
import { LQCollideSystem } from "./lq_collide_system/lq_collide_system";
import AudioManager from "./module/Music/AudioManager";
import Utils from "./module/Pay/Utils";
const { ccclass, property } = cc._decorator;

@ccclass
export default class JiaZai extends cc.Component {

    // 缓存 shop 预制体
    private static cachedShopPrefab: cc.Prefab | null = null;
    // 缓存 shop 节点
    private shopNode: cc.Node | null = null;

    // 缓存 reward 预制体
    private static cachedRewardPrefab: cc.Prefab | null = null;
    // 缓存 reward 奖励窗口 节点
    private RewardNode: cc.Node | null = null;
    //缓存月卡
    private static cachedMonthlyCardPrefab: cc.Prefab | null = null;
    // 缓存月卡节点
    private monthlyCardNode: cc.Node | null = null;

    // 缓存  预制体
    private static cachedActionPrefab: cc.Prefab | null = null;
    // 缓存 新手活动节点 节点
    private actionpNode: cc.Node | null = null;
    private static cachedAvatarPrefab: cc.Prefab | null = null;
    private AvatarNode: cc.Node | null = null;
    private static cachedDailyQuestsPrefab: cc.Prefab | null = null;
    private dailyQuestsNode: cc.Node | null = null;
    private static cachedWinStreakPrefab: cc.Prefab | null = null;
    private winStreakNode: cc.Node | null = null;

    @property(cc.EditBox)
    custom: cc.EditBox = null;



    @property({ type: [cc.SpriteAtlas], tooltip: "方块颜色" })
    Block_Color: Array<cc.SpriteAtlas> = [];

    @property(cc.SpriteAtlas)
    liuGuang: cc.SpriteAtlas = null;

    @property(cc.SpriteAtlas)
    avatarUI: cc.SpriteAtlas = null;



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

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

    // 健康值
    @property(cc.Prefab)
    health: cc.Prefab = null;
    @property(cc.Node)
    Stamina: cc.Node = null;
    scheduleCallback: any;
    private heath: any; // 用于存储heath预制体
    private lastPauseClickTime: number = 0; // 用于记录上次点击的时间戳
    // 弹窗倒计时调度器
    private heathScheduleCallback: Function = null;
    @property(cc.Node)
    setUi: cc.Node = null;
    scheduleCallback2: any;
    scheduleCallback3: any;
    private isFirstLaunch: boolean = true;  // 添加首次启动标志
    newbieGift: any; // 用于存储heath预制体
    dailyQuestsShow: boolean = false;  // 每日任务加载
    winStreakShow: boolean = false;  // 连胜活动是否展示
    // //月卡
    // @property(cc.Node)
    // monthCardBtn: cc.Node = null;
    // @property(cc.Node)
    // monthCardBtn2: cc.Node = null;
    // @property(cc.Node)
    // monthCardTime: cc.Node = null;
    // @property(cc.Node)
    // monthCard: cc.Node = null;
    //月卡领取
    @property(cc.Node)
    getcard: cc.Node = null;
    @property(cc.Node)
    cardTime: cc.Node = null;
    // LIFE-CYCLE CALLBACKS:
    private onShowListener: () => void;
    private onHideListener: () => void;
    // LIFE-CYCLE CALLBACKS:

    onLoad() {
        if (cc.fx.GameConfig.GM_INFO.otherUid != "") {
            this.getShareInfo();
        }
        this.node.getChildByName("zhuanchang").zIndex = 1000;
        this.closeLoad();
        this.checkShare();
        this.closeAvatar();
        this.setShareInfo();
        this.checkTasks();
        //console.log("进入首页获取的share", cc.fx.GameConfig.GM_INFO.otherUid, cc.fx.GameConfig.GM_INFO.otherLevel);


        cc.game.setFrameRate(63);
        LQCollideSystem.is_enable = true;
        //新手礼包
        this.newbieGift = false;
        this.Stamina.parent.getChildByName("xinshou").active = false;
        this.winStreakShow = false;
        this.checkStarter_pack();
        //每日任务
        this.dailyQuestsShow = false;

        // //console.log("加载关卡配置2");
        // window.initMgr();
        GameManager._instance.Block_Color = this.Block_Color;
        let version = cc.fx.GameTool.getWechatGameVersion();
        if (version == "开发版" || version == "体验版") {
            this.node.getChildByName("Load").getChildByName("New EditBox").active = true;
        }
        else if (version == "正式版") {
            this.node.getChildByName("Load").getChildByName("New EditBox").active = false;
            if (cc.fx.GameConfig.GM_INFO.openid) {
                if (cc.fx.GameConfig.GM_INFO.openid == "orm8I7N10NSQdAhN4LP04n8UP56I") {
                    this.node.getChildByName("Load").getChildByName("New EditBox").active = true;
                    cc.fx.GameTool.changeCoin(99999);
                }
            }
        }
        else {
            this.node.getChildByName("Load").getChildByName("New EditBox").active = true;
        }

        // 预加载 活动 预制体
        if (!JiaZai.cachedActionPrefab) {
            cc.assetManager.loadBundle('action_bundle', (err: Error, bundle: cc.AssetManager.Bundle) => {
                if (err) {
                    cc.error(err.message || err);
                    return;
                }
                bundle.load('prefab/newbieGift', cc.Prefab, (err: Error, prefab: cc.Prefab) => {
                    if (err) {
                        cc.error(err.message || err);
                        return;
                    }
                    JiaZai.cachedActionPrefab = prefab;
                });
                bundle.load('prefab/Avatar', cc.Prefab, (err: Error, prefab: cc.Prefab) => {
                    if (err) {
                        cc.error(err.message || err);
                        return;
                    }
                    JiaZai.cachedAvatarPrefab = prefab;
                    console.log("头像预制体已经准备好");
                });
                bundle.load('prefab/dailyQuests', cc.Prefab, (err: Error, prefab: cc.Prefab) => {
                    if (err) {
                        cc.error(err.message || err);
                        return;
                    }
                    JiaZai.cachedDailyQuestsPrefab = prefab;
                    console.log("每日任务预制体已经准备好");
                });
                bundle.load('prefab/winStreak', cc.Prefab, (err: Error, prefab: cc.Prefab) => {
                    if (err) {
                        cc.error(err.message || err);
                        return;
                    }
                    JiaZai.cachedWinStreakPrefab = prefab;
                    console.log("连胜活动预制体已经准备好");
                });

            });
        }
        // 预加载 shop 预制体
        if (!JiaZai.cachedShopPrefab) {
            cc.assetManager.loadBundle('shop', (err: Error, bundle: cc.AssetManager.Bundle) => {
                if (err) {
                    cc.error(err.message || err);
                    return;
                }
                bundle.load('prefab/shop', cc.Prefab, (err: Error, prefab: cc.Prefab) => {
                    if (err) {
                        cc.error(err.message || err);
                        return;
                    }
                    JiaZai.cachedShopPrefab = prefab;
                });
                bundle.load('prefab/RewardWindow', cc.Prefab, (err: Error, prefab: cc.Prefab) => {
                    if (err) {
                        cc.error(err.message || err);
                        return;
                    }
                    JiaZai.cachedRewardPrefab = prefab;
                    this.getOrder();
                });
                bundle.load('prefab/monthlyCard', cc.Prefab, (err: Error, prefab: cc.Prefab) => {
                    if (err) {
                        cc.error(err.message || err);
                        return;
                    }
                    JiaZai.cachedMonthlyCardPrefab = prefab;
                    //等级大于16开启
                    if (cc.fx.GameConfig.GM_INFO.level >= 16) {
                        let top = this.node.getChildByName("Load").getChildByName("Top");
                        top.getChildByName("yicon").active = true;
                        this.monthH();
                    };
                });
            });
        }


        if (cc.fx.GameConfig.GM_INFO.otherLevel > 0) {
            if (cc.fx.GameConfig.GM_INFO.first) {
                this.setFirstInfo();
                cc.fx.GameConfig.GM_INFO.first = false;
            }
            let power = cc.fx.GameTool.getUserPowerTime();
            if (cc.fx.GameConfig.GM_INFO.hp < 1 && power == false) {
                MiniGameSdk.API.showToast("体力值不足,无法进入好友关卡");
                setTimeout(() => {
                    this.openHeath();
                }, 1000);
                return;
            }
            else {
                // this.closeLoad();
                cc.fx.GameConfig.LEVEL_INFO_init(true, 1000);
            }
        }
        else {
            if (cc.fx.GameConfig.GM_INFO.first) {
                //console.log("————————准备注册事件", cc.fx.GameConfig.GM_INFO.openid);
                this.setFirstInfo();
                cc.fx.AudioManager._instance.playEffect("zhuan1", null);
                this.node.getChildByName("zhuanchang").active = true;
                this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false);
                setTimeout(() => {
                    cc.fx.GameConfig.GM_INFO.first = false;
                    cc.director.loadScene("GameScene");
                }, 1000);
            }
        }

        //console.log("音乐开关", cc.fx.GameConfig.GM_INFO.musicOpen);
        AudioManager._instance.playMusicGame();

        this.onGames();
    }
    //监听后台
    onGames() {
        if (typeof wx !== 'undefined') {
            this.onShowListener = null;
            this.onHideListener = null;
            // 定义监听函数
            this.onShowListener = () => {
                this.onGameShow();

            };
            this.onHideListener = () => {
                this.onGameHide();
            };
            //@ts-ignore
            wx.onShow(this.onShowListener);
            //@ts-ignore
            wx.onHide(this.onHideListener);

        }
    }
    onGameHide() {
        // console.log("执行onGameHide", cc.fx.GameConfig.GM_INFO.min_Time);
        if (this.isFirstLaunch != null && this.isFirstLaunch != undefined) this.isFirstLaunch = false;
        if (this) {
            if (this.node) {
                this.stopHeathTimeCutDown();
                this.stopTimeCutDown();
                this.stopPowerTime();
            }
        }

    }

    onGameShow() {
        // console.log("执行开始游戏gameshow");
        cc.fx.GameTool.getHealth((data) => {
            if (this.level) {
                NumberToImage.numberToImageNodes((cc.fx.GameConfig.GM_INFO.level + 1), 43, 15, "level_", this.level, true);
            }
            if (this.coin) {
                NumberToImage.numberToImageNodes(cc.fx.GameConfig.GM_INFO.coin, 30, 15, "coin_", this.coin, true);
                this.setHealthInfo(true);
            }
        });
        // console.log("执行on", cc.fx.GameConfig.GM_INFO.min_Time);
        if (this) {
            if (this.node) {
                if (this.node.getChildByName("heathpop")) {
                    if (this.node.getChildByName("heathpop").active == true) {
                        const heathComponent = this.node.getChildByName("heathpop").getComponent("heathnum");
                        if (heathComponent && heathComponent.timeNode &&
                            cc.fx.GameConfig.GM_INFO.hp < cc.fx.GameConfig.GM_INFO.hp_Max) {
                            this.startHeathTimeCutDown(heathComponent.timeNode);
                        }
                    }
                }

            }
        }

    }

    start() {
        // //console.log("已经进入Home界面");
        // //console.log("金币",cc.fx.GameConfig.GM_INFO.coin);
        // //console.log("关卡",cc.fx.GameConfig.GM_INFO.level+1);
        this.updatePower();


        cc.fx.GameTool.getHealth((data) => {
            NumberToImage.numberToImageNodes((cc.fx.GameConfig.GM_INFO.level + 1), 43, 15, "level_", this.level, true);
            NumberToImage.numberToImageNodes(cc.fx.GameConfig.GM_INFO.coin, 30, 15, "coin_", this.coin, true);
            this.setHealthInfo(true);
        });
        // cc.fx.GameConfig.LEVEL_INFO_init(false,0);

        if (cc.fx.GameConfig.GM_INFO.gameState) {
            this.node.getChildByName("zhuanchang").active = true;
            setTimeout(() => {
                cc.fx.AudioManager._instance.playEffect("zhuan2", null);
                this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "down", false);
                this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener((entry) => {
                    if (entry.animation.name === "down" && !cc.fx.GameConfig.GM_INFO.first) {
                        // 动画播放结束后执行的逻辑
                        this.node.getChildByName("zhuanchang").active = false;
                        if (this.newbieGift) this.openStarter_pack();
                    }
                });
            }, 500);
        }
        else {
            if (!cc.fx.GameConfig.GM_INFO.first) {
                this.node.getChildByName("zhuanchang").active = false;
                if (this.newbieGift) this.openStarter_pack();
            }

        }
        // //打开heath弹窗
        //  this.openHeath();
        this.uploadToCloud(cc.fx.GameConfig.GM_INFO.level + 1);

        // this.getMonthlyCardValidityDays();
        this.rewarded();

        //判断过期
        cc.fx.GameTool.checkExpiration();
        let isExpired = cc.fx.GameTool.checkExpiration();
        if (isExpired) {
            const validityTime = cc.fx.StorageMessage.getStorage("mCardDate"); // 后端返回的到期时间戳（毫秒）
            const today = new Date();
            today.setHours(0, 0, 0, 0);
            const todayMidnight = today.getTime();
            const expiryDate = new Date(validityTime);
            expiryDate.setHours(0, 0, 0, 0);
            const expiryMidnight = expiryDate.getTime();
            const diffMs = expiryMidnight - todayMidnight;
            const days = Math.floor(diffMs / 86400000);
            const remainingDays = Math.max(0, days);
            cc.fx.GameConfig.GM_INFO.monthTime = remainingDays;
        }


        if (cc.fx.GameConfig.GM_INFO.level >= 16) {
            let top = this.node.getChildByName("Load").getChildByName("Top");
            top.getChildByName("yicon").active = true;
            if (JiaZai.cachedMonthlyCardPrefab) {
                this.monthH();
            }
        };

        if (cc.fx.GameConfig.GM_INFO.level >= 17) {
            let top = this.node.getChildByName("Load").getChildByName("Top");
            top.getChildByName("hammer").active = true;
        }
        else {
            let top = this.node.getChildByName("Load").getChildByName("Top");
            top.getChildByName("hammer").active = false;
        }
    }

    openAvatar() {
        if (!JiaZai.cachedAvatarPrefab) {
            console.log('Avatar prefab is not loaded yet.');
            cc.assetManager.loadBundle('action_bundle', (err: Error, bundle: cc.AssetManager.Bundle) => {
                if (err) {
                    cc.error(err.message || err);
                    return;
                }
                bundle.load('prefab/Avatar', cc.Prefab, (err: Error, prefab: cc.Prefab) => {
                    if (err) {
                        cc.error(err.message || err);
                        return;
                    }
                    JiaZai.cachedAvatarPrefab = prefab;
                    if (!this.AvatarNode) {
                        // 第一次使用，创建节点
                        this.AvatarNode = cc.instantiate(JiaZai.cachedAvatarPrefab);
                        this.node.addChild(this.AvatarNode);
                        this.AvatarNode.getComponent("Avatar").init();
                    } else {
                        // 非第一次使用，直接激活节点
                        this.AvatarNode.active = true;
                        this.AvatarNode.getComponent("Avatar").init();
                    }
                });
            });
            return;
        }
        if (!this.AvatarNode) {
            // 第一次使用，创建节点
            this.AvatarNode = cc.instantiate(JiaZai.cachedAvatarPrefab);
            this.node.addChild(this.AvatarNode);
            this.AvatarNode.getComponent("Avatar").init();
        } else {
            // 非第一次使用，直接激活节点
            this.AvatarNode.active = true;
            this.AvatarNode.getComponent("Avatar").init();
        }
    }

    closeAvatar() {
        console.log("最终头像:", cc.fx.GameConfig.GM_INFO.useravatarIcon);
        console.log("最终头像框:", cc.fx.GameConfig.GM_INFO.useravaterkuang);
        let top = this.node.getChildByName("Load").getChildByName("Top");
        if (this.AvatarNode) this.AvatarNode.active = false;
        if (cc.fx.GameConfig.GM_INFO.useravatarIcon.length > 10) {
            console.log("获取头像链接:", cc.fx.GameConfig.GM_INFO.useravatarIcon);
            cc.assetManager.loadRemote(cc.fx.GameConfig.GM_INFO.useravatarIcon, { ext: '.png' }, (err, texture: cc.Texture2D) => {
                if (texture) {
                    top.getChildByName("avatar").getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(texture);
                }
                top.getChildByName("avatar").opacity = 255;
            })
        } else {
            top.getChildByName("avatar").getComponent(cc.Sprite).spriteFrame =
                this.avatarUI.getSpriteFrame(cc.fx.GameConfig.GM_INFO.useravatarIcon);
            top.getChildByName("avatar").opacity = 255;
        }

        top.getChildByName("kuang").getComponent(cc.Sprite).spriteFrame =
            this.avatarUI.getSpriteFrame(cc.fx.GameConfig.GM_INFO.useravaterkuang);
        top.getChildByName("kuang").opacity = 255;
        cc.fx.GameTool.setUserAvatar();
    }

    // 打开heath弹窗，创建预制体并启动自己的倒计时
    openHeath() {
        let health = cc.instantiate(this.health);
        this.node.addChild(health);
        let heathPop = health.getComponent("heathnum").heatht;
        heathPop.scale = 2;
        this.heath = heathPop; // 保存heath预制体引用
        let swichs = health.getComponent("heathnum").switchNode;
        let timeNode = health.getComponent("heathnum").timeNode;
        let switchButtons = health.getComponent("heathnum").switchButtons;
        let coin = health.getComponent("heathnum").coin;
        let pauseNode = health.getChildByName("heath");
        cc.fx.AudioManager._instance.playEffect("tanchuang", null);
        pauseNode.scale = 0.3;
        cc.tween(pauseNode)
            .to(0.2, { scale: 1.05 }, { easing: 'backOut' })
            .to(0.15, { scale: 1.0 }, { easing: 'sineOut' })
            .start();
        // 启动弹窗自己的倒计时
        if (cc.fx.GameConfig.GM_INFO.hp < cc.fx.GameConfig.GM_INFO.hp_Max) {
            this.startHeathTimeCutDown(timeNode);
        }

        if (cc.fx.GameConfig.GM_INFO.hp == 0) {
            if (cc.fx.GameConfig.GM_INFO.userPowerTime == 0) {
                // 体力为0，显示spriteFrames[1]，只显示第二个按钮
                if (switchButtons[0]) { switchButtons[0].active = false; swichs[0].active = false; }
                if (switchButtons[1]) { switchButtons[1].active = true; swichs[1].active = true; }
            }
            else {
                if (switchButtons[0]) { switchButtons[0].active = true; swichs[0].active = false; }
                if (switchButtons[1]) { switchButtons[1].active = false; swichs[1].active = true; }
            }

        } else if (cc.fx.GameConfig.GM_INFO.hp < cc.fx.GameConfig.GM_INFO.hp_Max && cc.fx.GameConfig.GM_INFO.hp > 0) {
            // 体力小于5但大于0，显示spriteFrames[1]，只显示第一个按钮
            if (switchButtons[0]) { switchButtons[0].active = true; swichs[0].active = false; }
            if (switchButtons[1]) { switchButtons[1].active = false; swichs[1].active = true; }
        } else if (cc.fx.GameConfig.GM_INFO.hp >= cc.fx.GameConfig.GM_INFO.hp_Max) {

            // 体力为5，显示spriteFrames[0]，只显示第一个按钮
            if (switchButtons[0]) { switchButtons[0].active = true; swichs[0].active = true; }
            if (switchButtons[1]) { switchButtons[1].active = false; swichs[1].active = false; }
        }
        NumberToImage.numberToImageNodes(cc.fx.GameConfig.GM_INFO.hp, 40, 20, "time_", heathPop, true);
        // 设置金币花费数

        // NumberToImage.numberToImageNodes(1000, 35, 15, "button_", coin, true);


    }

    // 弹窗倒计时
    startHeathTimeCutDown(timeLabelNode?: cc.Node) {
        this.stopHeathTimeCutDown();
        this.heathScheduleCallback = function () {
            if (cc.fx.GameConfig.GM_INFO.min_Time <= 0) {
                this.stopHeathTimeCutDown();

                let timeTemp = cc.fx.GameTool.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time);
                //console.log("健康值倒计时结束，当前时间：", timeTemp, cc.fx.GameConfig.GM_INFO.min_Time);
                if (timeLabelNode) {
                    NumberToImage.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time, 50, "month_", timeLabelNode);
                }
                NumberToImage.numberToImageNodes(cc.fx.GameConfig.GM_INFO.hp, 40, 20, "month_", this.heath, true);
            } else {
                let timeTemp = cc.fx.GameTool.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time);
                if (timeLabelNode) {
                    NumberToImage.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time, 50, "month_", timeLabelNode);
                }
            }
        }.bind(this);
        this.heathScheduleCallback();
        this.schedule(this.heathScheduleCallback, 1);
    }

    stopHeathTimeCutDown() {
        if (this.heathScheduleCallback) {
            this.unschedule(this.heathScheduleCallback);
            this.heathScheduleCallback = null;
        }
    }
    //开始倒计时  恢复体力
    startTimeCutDown() {
        this.stopTimeCutDown();
        this.scheduleCallback = function () {
            if (cc.fx.GameConfig.GM_INFO.min_Time <= 0) {
                this.stopTimeCutDown();
                var timeTemp = cc.fx.GameTool.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time);
                // 同步显示
                if (this.Stamina && this.Stamina.getChildByName("time")) {
                    this.Stamina.getChildByName("time").getComponent(cc.Label).string = timeTemp;
                }
                if (cc.fx.GameConfig.GM_INFO.hp < cc.fx.GameConfig.GM_INFO.hp_Max) {
                    // MiniGameSdk.API.showToast("恢复一点体力");
                    cc.fx.GameTool.setUserHealth(1, (data) => {
                        cc.fx.GameTool.getHealth((data) => {
                            this.setHealthInfo(true);
                        });
                    }, true)
                }

            }
            else {
                cc.fx.GameConfig.GM_INFO.min_Time -= 1;
                var timeTemp = cc.fx.GameTool.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time);
                // 同步显示
                if (this.Stamina && this.Stamina.getChildByName("time")) {
                    let power = cc.fx.GameTool.getUserPowerTime();
                    if (!power) this.Stamina.getChildByName("time").opacity = 255;
                    else this.Stamina.getChildByName("time").opacity = 0;
                    this.Stamina.getChildByName("time").getComponent(cc.Label).string = timeTemp;
                }
            }
            // console.log(cc.fx.GameConfig.GM_INFO.hp, cc.fx.GameConfig.GM_INFO.hp_Max, "月卡体力");
        }.bind(this);
        this.schedule(this.scheduleCallback, 1);
    }
    // 停止倒计时 恢复体力
    stopTimeCutDown() {
        if (this.scheduleCallback) {
            this.unschedule(this.scheduleCallback);
            this.scheduleCallback = null;
        }
    }

    startPowerTime() {
        this.stopPowerTime();
        if (this.scheduleCallback2) {
            this.unschedule(this.scheduleCallback2);
        }
        this.scheduleCallback2 = function () {
            let nowTime = Math.floor(Date.now() / 1000);
            if (cc.fx.GameConfig.GM_INFO.userPowerTime < nowTime) {
                this.Stamina.getChildByName("skyLine").active = false;
                this.stopPowerTime();
                this.setHealthInfo(true);
                return;
            }
            else {
                this.Stamina.getChildByName("skyLine").active = true;
                this.Stamina.getChildByName("time").opacity = 0;
                this.Stamina.getChildByName("man").active = false;
            }
            let time = cc.fx.GameConfig.GM_INFO.userPowerTime - nowTime;
            if (time <= 0) {
                time = 0;
                this.Stamina.getChildByName("skyLine").active = false;
                this.stopPowerTime();
                this.setHealthInfo(true);
                var timeTemp = cc.fx.GameTool.getTimeMargin2(time);
                // 同步显示
                if (this.Stamina && this.Stamina.getChildByName("skyLine").getChildByName("skyTime")) {
                    this.Stamina.getChildByName("skyLine").getChildByName("skyTime").getComponent(cc.Label).string = timeTemp;
                }
            }
            else {
                var timeTemp = cc.fx.GameTool.getTimeMargin2(time);
                // 同步显示
                if (this.Stamina && this.Stamina.getChildByName("skyLine").getChildByName("skyTime")) {
                    this.Stamina.getChildByName("skyLine").getChildByName("skyTime").getComponent(cc.Label).string = timeTemp;
                }
            }
        }.bind(this);
        this.schedule(this.scheduleCallback2, 1);
    }

    stopPowerTime() {
        cc.fx.GameTool.getUserPowerTime();
        if (this.scheduleCallback2) {
            this.unschedule(this.scheduleCallback2);
            this.scheduleCallback2 = null;
        }
    }

    uploadToCloud(level: number) {
        if (typeof wx !== 'undefined') {
            //@ts-ignore
            wx.setUserCloudStorage({
                KVDataList: [
                    { key: 'level', value: String(level) }
                ],
                success: () => console.log('✅ 数据上传成功'),
                fail: (err) => console.error('❌ 上传失败', err)
            });
        }
    }


    setHealthInfo(type) {
        if (cc.fx.GameConfig.GM_INFO.hp >= cc.fx.GameConfig.GM_INFO.hp_Max) {
            if (cc.fx.GameConfig.GM_INFO.userPowerTime != 0) {
                let nowTime = Math.floor(Date.now() / 1000);
                if (cc.fx.GameConfig.GM_INFO.userPowerTime > nowTime) {
                    this.stopPowerTime();
                    this.startPowerTime();
                    //console.log("还有无限体力时间_____________", (cc.fx.GameConfig.GM_INFO.userPowerTime - nowTime));
                    this.Stamina.getChildByName("skyLine").active = true;
                    this.Stamina.getChildByName("time").opacity = 0;
                    this.Stamina.getChildByName("man").active = false;
                }
                else {
                    this.Stamina.getChildByName("skyLine").active = false;
                    //console.log("无限体力时间已过期");
                    this.Stamina.getChildByName("man").active = true;
                }
            }
            else {
                this.Stamina.getChildByName("man").active = true;
            }

            this.Stamina.getChildByName("health").active = true;
            NumberToImage.numberToImageNodes(cc.fx.GameConfig.GM_INFO.hp, 25, 15, "hp_", this.Stamina.getChildByName("health"), false);
            this.Stamina.getChildByName("time").active = false;
        }
        else {
            this.Stamina.getChildByName("man").active = false;
            this.Stamina.getChildByName("health").active = true;
            NumberToImage.numberToImageNodes(cc.fx.GameConfig.GM_INFO.hp, 25, 15, "hp_", this.Stamina.getChildByName("health"), false);
            this.Stamina.getChildByName("time").active = true;
            if (cc.fx.GameConfig.GM_INFO.min_Time != 0) {
                let time = cc.fx.GameTool.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time);
                this.Stamina.getChildByName("time").getComponent(cc.Label).string = time;
                let power = cc.fx.GameTool.getUserPowerTime();
                if (!power) this.Stamina.getChildByName("time").opacity = 255;
                else this.Stamina.getChildByName("time").opacity = 0;
                // console.log("______________________启动计时器");
                this.stopTimeCutDown();
                this.startTimeCutDown();
            }
        }
    }


    startGame() {
        cc.fx.AudioManager._instance.playEffect("anniu_Big", null);
        let version = cc.fx.GameTool.getWechatGameVersion();
        if ((cc.fx.GameConfig.GM_INFO.level) > 399 && version != "开发版" && version != "体验版") {
            cc.fx.GameConfig.GM_INFO.level = 400;
            MiniGameSdk.API.showToast("关卡每周更新，敬请期待！");
            return;
        }
        let power = cc.fx.GameTool.getUserPowerTime();
        if (cc.fx.GameConfig.GM_INFO.hp < 1 && power == false) {
            MiniGameSdk.API.showToast("体力值不足");
            setTimeout(() => {
                this.openHeath();
            }, 500);
            return;
        }

        if (typeof wx !== 'undefined') {
            //@ts-ignore
            wx.offShow(this.onShowListener);
            //@ts-ignore
            wx.offHide(this.onHideListener);
        }

        if (this.node.getChildByName("Load").getChildByName("startBtn").getComponent("btnControl")._touch) {
            this.node.getChildByName("Load").getChildByName("startBtn").getComponent("btnControl").setTouch(false);
            let version = cc.fx.GameTool.getWechatGameVersion();
            if (version == "开发版" || version == "体验版") {
                if (this.custom.string != "") {
                    cc.fx.GameConfig.GM_INFO.level = parseInt(this.custom.string) - 1;
                    // cc.fx.StorageMessage.setStorage("level",cc.fx.GameConfig.GM_INFO.level.toString()); 
                    if ((cc.fx.GameConfig.GM_INFO.level) > 399) {
                        cc.fx.GameConfig.GM_INFO.level = 400;
                        MiniGameSdk.API.showToast("关卡每周更新，敬请期待！");
                        return;
                    }
                    cc.fx.GameConfig.LEVEL_INFO_init(true);
                }
                else {
                    cc.fx.AudioManager._instance.playEffect("zhuan1", null);
                    this.node.getChildByName("zhuanchang").active = true;
                    this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false);
                    if ((cc.fx.GameConfig.GM_INFO.level) > 399) {
                        cc.fx.GameConfig.GM_INFO.level = 400;
                        MiniGameSdk.API.showToast("关卡每周更新，敬请期待！");
                        return;
                    }
                    cc.fx.GameConfig.LEVEL_INFO_init(true, 1000);
                }
            }
            else if (version == "正式版") {
                if ((cc.fx.GameConfig.GM_INFO.level) > 399) {
                    cc.fx.GameConfig.GM_INFO.level = 400;
                    MiniGameSdk.API.showToast("关卡每周更新，敬请期待！");
                    return;
                }
                cc.fx.AudioManager._instance.playEffect("zhuan1", null);
                this.node.getChildByName("zhuanchang").active = true;
                this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false);

                cc.fx.GameConfig.LEVEL_INFO_init(true, 1000);
            }
            else {
                if (this.custom.string != "") {
                    cc.fx.GameConfig.GM_INFO.level = parseInt(this.custom.string) - 1;
                    // cc.fx.StorageMessage.setStorage("level",cc.fx.GameConfig.GM_INFO.level.toString()); 
                    if ((cc.fx.GameConfig.GM_INFO.level) > 399) {
                        cc.fx.GameConfig.GM_INFO.level = 400;
                        MiniGameSdk.API.showToast("关卡每周更新，敬请期待！");
                        return;
                    }
                    cc.fx.GameConfig.LEVEL_INFO_init(true);
                }
                else {
                    cc.fx.AudioManager._instance.playEffect("zhuan1", null);
                    this.node.getChildByName("zhuanchang").active = true;
                    this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false);
                    if ((cc.fx.GameConfig.GM_INFO.level) > 399) {
                        cc.fx.GameConfig.GM_INFO.level = 400;
                        MiniGameSdk.API.showToast("关卡每周更新，敬请期待！");
                        return;
                    }
                    cc.fx.GameConfig.LEVEL_INFO_init(true, 1000);
                }
            }
        }



    }

    //打开商店
    openShop() {
        if (!JiaZai.cachedShopPrefab) {
            cc.error('Shop prefab is not loaded yet.');
            return;
        }

        if (!this.shopNode) {
            // 第一次使用，创建节点
            this.shopNode = cc.instantiate(JiaZai.cachedShopPrefab);
            this.node.addChild(this.shopNode);
            this.shopNode.getComponent("shop").init();
        } else {
            // 非第一次使用，直接激活节点
            this.shopNode.active = true;
            this.shopNode.getComponent("shop").init();
        }
        if (typeof wx !== 'undefined') {
            // console.log("执行开始游戏shop")
            //@ts-ignore
            wx.offShow(this.onShowListener);
            //@ts-ignore
            wx.offHide(this.onHideListener);
        }
    }

    openRewardWindow(data, month?: number) {
        if (!JiaZai.cachedRewardPrefab) {
            cc.error('Reward prefab is not loaded yet.');
            return;
        }
        if (!this.RewardNode) {
            // 第一次使用，创建节点
            this.RewardNode = cc.instantiate(JiaZai.cachedRewardPrefab);
            this.node.addChild(this.RewardNode);
            this.RewardNode.getComponent("Reward").init(data);
        }
        else {
            this.RewardNode.destroy();
            this.RewardNode = null;
            this.RewardNode = cc.instantiate(JiaZai.cachedRewardPrefab);
            this.node.addChild(this.RewardNode);
            this.RewardNode.getComponent("Reward").init(data);
        }
        this.RewardNode.zIndex = 1001;
        this.updatePower();
    }
    //打开月卡
    openMonthlyCard() {
        if (!JiaZai.cachedMonthlyCardPrefab) {
            cc.error('MonthlyCard prefab is not loaded yet.');
            return;
        }
        if (!this.monthlyCardNode) {
            // 第一次使用，创建节点
            this.monthlyCardNode = cc.instantiate(JiaZai.cachedMonthlyCardPrefab);
            this.node.addChild(this.monthlyCardNode);
            this.monthlyCardNode.active = true;
            this.monthlyCardNode.getComponent("monthlyCard").init();
            this.monthlyCardNode.getComponent("monthlyCard").juwai = true;
        } else {
            // 非第一次使用，直接激活节点
            this.monthlyCardNode.active = true;
            this.monthlyCardNode.zIndex = 1000;
            this.monthlyCardNode.getComponent("monthlyCard").init();
            this.monthlyCardNode.getComponent("monthlyCard").juwai = true;
        }
        if (typeof wx !== 'undefined') {
            // console.log("执行开始游戏monthlyCard")
            //@ts-ignore
            wx.offShow(this.onShowListener);
            //@ts-ignore
            wx.offHide(this.onHideListener);
        }

    }

    openDailyQuests() {
        this.dailyQuestsNode = null;
        this.openLoad2();
        this.dailyQuestsShow = true;
        cc.fx.GameTool.getDailyQuestsInfo((data) => {
            this.dailyQuestsShow = false;
            console.log("处理结果:", data);
            this.closeLoad();

            if (data.code != 1) {
                MiniGameSdk.API.showToast("网络异常，请稍后重试！")
                return;
            }
            if (!JiaZai.cachedDailyQuestsPrefab) {
                // cc.error('Action prefab is not loaded yet.');
                cc.assetManager.loadBundle('action_bundle', (err: Error, bundle: cc.AssetManager.Bundle) => {
                    if (err) {
                        cc.error(err.message || err);
                        return;
                    }
                    bundle.load('prefab/dailyQuests', cc.Prefab, (err: Error, prefab: cc.Prefab) => {
                        if (err) {
                            cc.error(err.message || err);
                            return;
                        }
                        JiaZai.cachedDailyQuestsPrefab = prefab;
                        if (!this.dailyQuestsNode) {
                            // 第一次使用，创建节点
                            this.dailyQuestsNode = cc.instantiate(JiaZai.cachedDailyQuestsPrefab);
                            this.node.addChild(this.dailyQuestsNode);
                            this.dailyQuestsNode.getComponent("DailyQuests").init(data.data.task);
                        } else {
                            // 非第一次使用，直接激活节点
                            this.dailyQuestsNode.active = true;
                            this.dailyQuestsNode.getComponent("DailyQuests").init(data.data.task);
                        }
                    });
                });
                return;
            }
            if (!this.dailyQuestsNode) {
                // 第一次使用，创建节点
                this.dailyQuestsNode = cc.instantiate(JiaZai.cachedDailyQuestsPrefab);
                this.node.addChild(this.dailyQuestsNode);
                this.dailyQuestsNode.active = true;
                this.dailyQuestsNode.getComponent("DailyQuests").init(data.data.task);
            } else {
                // 非第一次使用，直接激活节点
                this.dailyQuestsNode.active = true;
                this.dailyQuestsNode.getComponent("DailyQuests").init(data.data.task);
            }
        })
    }

    // 关闭商店
    closeShop() {
        if (this.shopNode) {
            this.shopNode.active = false;
        }
    }

    closeRank() {
        this.node.getChildByName("Rank").active = false;
    }

    openRank() {
        this.node.getChildByName("Rank").active = true;
    }

    openReward() {
        this.node.getChildByName("Reward").active = true;
    }

    clickShop() {
        // 假设已经获取到了 userId 和 productId


    }


    openPause() {
        cc.fx.AudioManager._instance.playEffect("anniu_little", null);
        //console.log(cc.fx.GameConfig.GM_INFO);
        if (cc.fx.GameConfig.GM_INFO.openid == undefined) {
            //console.log(cc.fx.GameConfig.GM_INFO.openid);
            cc.fx.GameConfig.GM_INFO.openid = "";
        }
        this.node.getChildByName("Pause").active = true;
        this.node.getChildByName("Pause").getChildByName("openID").getComponent(cc.Label).string = cc.fx.GameConfig.GM_INFO.openid;
    }

    closePause() {
        cc.fx.AudioManager._instance.playEffect("anniu_little", null);
        this.node.getChildByName("Pause").active = false;

    }

    openSet() {
        const now = Date.now();
        if (now - this.lastPauseClickTime < 300) {
            // 0.3秒内禁止再次点击
            return;
        }
        this.lastPauseClickTime = now;
        cc.fx.AudioManager._instance.playEffect("anniu_little", null);
        if (cc.fx.GameConfig.GM_INFO.openid == undefined) {
            cc.fx.GameConfig.GM_INFO.openid = "";
        }
        if (!this.setUi.active) {
            // 第一次点击，打开并播放动画
            this.setUi.active = true;
            this.setUi.getComponent(cc.Animation).play();
        } else {
            // 再次点击，关闭节点
            this.setUi.active = false;
        }
    }

    closeReward() {
        this.node.getChildByName("Reward").active = false;

    }

    openStamina() {
        this.node.getChildByName("Stamina").active = true;
    }

    closeStamina() {
        this.node.getChildByName("Stamina").active = false;
    }

    updateCoin() {
        //console.log("主页更新金币", cc.fx.GameConfig.GM_INFO.coin);
        NumberToImage.numberToImageNodes(cc.fx.GameConfig.GM_INFO.coin, 30, 15, "coin_", this.coin, true);
    }

    getOrder() {
        if (typeof wx !== 'undefined' && wx !== null) {
            // 判断设备系统
            let systemType = "Android";
            try {
                //@ts-ignore
                const systemInfo = wx.getSystemInfoSync();
                if (systemInfo.platform === 'ios') {
                    systemType = "ios";
                }
            } catch (e) {
                console.error('获取系统信息失败', e);
            }
            if (cc.fx.GameConfig.GM_INFO.allOutTradeNo.length != 0) {
                console.log("有需要补发数据", cc.fx.GameConfig.GM_INFO.allOutTradeNo);

                // 递归函数，按顺序处理每个订单
                const processOrder = (index: number) => {
                    if (index >= cc.fx.GameConfig.GM_INFO.allOutTradeNo.length) {
                        return; // 所有订单处理完成
                    }

                    let order = cc.fx.GameConfig.GM_INFO.allOutTradeNo[index];
                    console.log("需要补发数据", order);
                    if (order.itemid == "gold_1" || order.itemid == "gold_2" || order.itemid == "gold_3"
                        || order.itemid == "gold_4" || order.itemid == "gold_5" || order.itemid == "gold_6"
                        || order.itemid == "unlimited_health_bundle_10" || order.itemid == "unlimited_health_bundle_20"
                        || order.itemid == "unlimited_health_bundle_30" || order.itemid == "month_Card" || "reborn_Gift"
                        || order.itemid == "starter_pack"
                    ) {
                        this.openLoad();
                        console.log("补发名称:", order.itemid);
                        let productId = order.itemid;
                        Utils.setPayInfo(
                            (res) => {
                                console.log("设置轮训结果:", res);
                                this.closeLoad();
                                if (res.code === 1) {
                                    console.log("7.14_________正式发货");
                                    let coinTemp = 0;
                                    if (order.itemid == "gold_1") { coinTemp = 1200; }
                                    else if (order.itemid == "gold_2") { coinTemp = 8000; }
                                    else if (order.itemid == "gold_3") { coinTemp = 16000; }
                                    else if (order.itemid == "gold_4") { coinTemp = 32000; }
                                    else if (order.itemid == "gold_5") { coinTemp = 100000; }
                                    else if (order.itemid == "gold_6") { coinTemp = 240000; }
                                    else if (order.itemid == "unlimited_health_bundle_10") { coinTemp = 2500; }
                                    else if (order.itemid == "unlimited_health_bundle_20") { coinTemp = 5000; }
                                    else if (order.itemid == "unlimited_health_bundle_30") { coinTemp = 7500; }
                                    else if (order.itemid == "month_Card") {
                                        coinTemp = 6000;
                                        cc.fx.GameConfig.GM_INFO.doubleCoin = 2;
                                        cc.fx.GameConfig.GM_INFO.hp_Max = 7;
                                        cc.fx.GameConfig.GM_INFO.hp = 7;
                                        this.openLoad();
                                        this.buyMonthCard(productId);
                                    }
                                    else if (order.itemid == "reborn_Gift") {
                                        coinTemp = 1000;
                                    }
                                    else if (order.itemid == "starter_pack") {
                                        coinTemp = 3000;
                                        cc.fx.GameConfig.GM_INFO.doubleCoin = 5;
                                        cc.fx.GameConfig.GM_INFO.hp_Max = 5;
                                        cc.fx.GameConfig.GM_INFO.hp = 5;
                                    }
                                    let title = "充值补发奖励金币：" + coinTemp;
                                    // MiniGameSdk.API.showToast(title);
                                    if (order.itemid != "month_Card") cc.fx.GameTool.shopBuy(productId, true);
                                    console.log("充值成功获得金币");
                                    let price = parseInt(order.goodsPrice) || 0;
                                    // const dataSuccess = {
                                    //     outTradeNo: order.outTradeNo,
                                    //     pay_amount: price,
                                    //     payment_name: productId,
                                    //     payment_num: 1,
                                    //     type: systemType,
                                    // }
                                    let name = "补发充值成功" + productId;
                                    // cc.fx.GameTool.shushu_Track("payment", dataSuccess);

                                    // console.log("引力付费透传", price, order.outTradeNo, name);
                                    MiniGameSdk.API.yinli_Pay(price, order.outTradeNo, name);
                                }
                                else {
                                    MiniGameSdk.API.showToast("网络异常，充值奖励将在登录后再次发放");
                                    const dataFail4 = {
                                        outTradeNo: order.outTradeNo,
                                        pay_amount: parseInt(order.goodsPrice) || 0,
                                        payment_name: productId,
                                        payment_num: 1,
                                        type: systemType,
                                        fail_reason: "成功付款，但是发货时请求服务器失败，重新进入游戏后轮训发货又失败",
                                    }
                                    cc.fx.GameTool.shushu_Track("payment_fail", dataFail4);
                                }
                                NumberToImage.numberToImageNodes(cc.fx.GameConfig.GM_INFO.coin, 30, 15, "coin_", this.coin, true);
                                this.updateCoin();
                                // 处理下一个订单
                                processOrder(index + 1);
                            }, order.outTradeNo);
                    } else {
                        // 如果当前订单不处理，直接处理下一个订单
                        processOrder(index + 1);
                    }
                };

                // 从第一个订单开始处理
                processOrder(0);
            }
        }
    }

    openLoad() {
        this.node.getChildByName("Loading").active = true;
        this.node.getChildByName("Loading").getChildByName("load").stopAllActions();
        this.node.getChildByName("Loading").getChildByName("load").runAction(cc.rotateTo(2, 1080).repeatForever());
    }

    openLoad2() {
        this.node.getChildByName("Loading").active = true;
        this.node.getChildByName("Loading").getChildByName("load").stopAllActions();
        this.node.getChildByName("Loading").getChildByName("load").runAction(cc.rotateTo(2, 1080).repeatForever());
        setTimeout(() => {
            if (this.dailyQuestsShow == true) {
                MiniGameSdk.API.showToast("网络异常，请稍后重试！")
                this.closeLoad();
            }
        }, 5000);
    }

    closeLoad() {
        this.node.getChildByName("Loading").active = false;
    }
    updatePower() {
        if (cc.fx.GameConfig.GM_INFO.userPowerTime != 0) {
            let nowTime = Math.floor(Date.now() / 1000);
            if (cc.fx.GameConfig.GM_INFO.userPowerTime > nowTime) {
                this.stopPowerTime();
                this.startPowerTime();
                //("还有无限体力时间_____________", (cc.fx.GameConfig.GM_INFO.userPowerTime - nowTime));
                this.Stamina.getChildByName("skyLine").active = true;
                this.Stamina.getChildByName("time").opacity = 0;
                this.Stamina.getChildByName("man").active = false;
            }
            else {
                this.Stamina.getChildByName("skyLine").active = false;
                //console.log("无限体力时间已过期");
                this.setHealthInfo(true);
            }
        }
        else {
            this.Stamina.getChildByName("skyLine").active = false;
            this.Stamina.getChildByName("time").opacity = 255;
            this.Stamina.getChildByName("man").active = true;
            //console.log("没有无限体力时间");
            this.setHealthInfo(true);
        }
    }

    //月卡
    //打开界面
    openMonthCard() {
        this.openMonthlyCard();
        // this.monthCard.active = true;
        // Utils.getMonthlyCard((data) => {
        //     if (data.msg == "不在有效期") {
        //         this.monthCardBtn.active = true;
        //         this.monthCardBtn2.active = false;
        //     } else {
        //         this.monthCardBtn.active = false;
        //         this.monthCardBtn2.active = true;
        //         NumberToImage.numberToImageNodes(25, 35, 20, "month_", this.monthCardTime, true);
        //     }
        // })
    }

    openStarter_pack() {
        if (!JiaZai.cachedActionPrefab) {
            // cc.error('Action prefab is not loaded yet.');
            cc.assetManager.loadBundle('action_bundle', (err: Error, bundle: cc.AssetManager.Bundle) => {
                if (err) {
                    cc.error(err.message || err);
                    return;
                }
                bundle.load('prefab/newbieGift', cc.Prefab, (err: Error, prefab: cc.Prefab) => {
                    if (err) {
                        cc.error(err.message || err);
                        return;
                    }
                    JiaZai.cachedActionPrefab = prefab;
                    if (!this.actionpNode) {
                        // 第一次使用，创建节点
                        this.actionpNode = cc.instantiate(JiaZai.cachedActionPrefab);
                        this.node.addChild(this.actionpNode);
                        this.actionpNode.zIndex = 2;
                        this.actionpNode.getComponent("NewbieGift").init(true);
                        this.actionpNode.getChildByName("time").active = false;
                    } else {
                        // 非第一次使用，直接激活节点
                        this.actionpNode.active = true;
                        this.actionpNode.getComponent("NewbieGift").init(false);
                        this.actionpNode.getChildByName("time").active = false;
                    }
                });
            });
            return;
        }

        if (!this.actionpNode) {
            // 第一次使用，创建节点
            this.actionpNode = cc.instantiate(JiaZai.cachedActionPrefab);
            this.node.addChild(this.actionpNode);
            this.actionpNode.zIndex = 2;
            this.actionpNode.getComponent("NewbieGift").init(true);
        } else {
            // 非第一次使用，直接激活节点
            this.actionpNode.active = true;
            this.actionpNode.getComponent("NewbieGift").init(false);
        }
        if (typeof wx !== 'undefined') {
            //@ts-ignore
            wx.offShow(this.onShowListener);
            //@ts-ignore
            wx.offHide(this.onHideListener);
        }
    }

    closeStarter_pack() {
        if (this.actionpNode) {
            this.actionpNode.active = false;
        }
    }

    startStarter_pack() {
        this.stopStarter_pack();
        if (this.scheduleCallback3) {
            this.unschedule(this.scheduleCallback3);
        }
        this.scheduleCallback3 = function () {
            let nowTime = Math.floor(Date.now() / 1000);
            if (cc.fx.GameConfig.GM_INFO.starter_packTime < nowTime) {
                this.stopStarter_pack();
                this.Stamina.parent.getChildByName("xinshou").active = false;
                return;
            }

            let time = cc.fx.GameConfig.GM_INFO.starter_packTime - nowTime;
            if (time <= 0) {
                time = 0;
                this.stopStarter_pack();
                this.Stamina.parent.getChildByName("xinshou").active = false;
            }
            else {
                var timeTemp = cc.fx.GameTool.getTimeMargin2(time);
                this.Stamina.parent.getChildByName("xinshou").getChildByName("time").getComponent(cc.Label)
                    .string = timeTemp;
                if (this.actionpNode) {
                    this.actionpNode.getChildByName("time").getComponent(cc.Label).
                        string = timeTemp;


                }
                // 同步显示
            }
        }.bind(this);
        this.schedule(this.scheduleCallback3, 1);
    }

    stopStarter_pack() {
        if (this.scheduleCallback3) {
            this.unschedule(this.scheduleCallback3);
            this.scheduleCallback3 = null;
        }
    }

    rewarded() {
        Utils.monthGetReward((data) => {
            if (data.data == null) {
                //console.log("到期");
                cc.fx.GameConfig.GM_INFO.hp_Max = 5;
                //如果体力大于5，设置为5，小于5，设置为体力值
                if (cc.fx.GameConfig.GM_INFO.hp > 5) {
                    cc.fx.GameConfig.GM_INFO.hp = 5;
                    cc.fx.GameTool.setUserHealth(0, (data) => {
                        cc.fx.GameTool.getHealth(null);
                    })
                }
                setTimeout(() => {
                    this.updateCoin();
                    this.setHealthInfo(false);
                    this.startTimeCutDown();
                }, 300);


            }
            if (data.data != null && data.code == 0) {
                //console.log("未到期已领取");
            }
            if (data.code == 1) {
                this.getcard.active = true;
                let pauseNode = this.getcard.getChildByName("mcReward");
                pauseNode.scale = 0.3;
                cc.tween(pauseNode)
                    .to(0.2, { scale: 1.05 }, { easing: 'backOut' })
                    .to(0.15, { scale: 1.0 }, { easing: 'sineOut' })
                    .start();
                NumberToImage.numberToImageNodes(cc.fx.GameConfig.GM_INFO.monthTime, 40, 20, "month_", this.cardTime, true)
            }
        })
    }


    //缓存弹窗
    monthH() {
        // return;
        //如果没有充值月卡，每天弹一次月卡弹窗用缓存实现
        Utils.getMonthlyCard((data) => {
            if (data.msg == "不在有效期") {
                let date = new Date();
                let day = date.getDate(); // 当前日期（1-31）
                let month = date.getMonth() + 1; // 当前月份（1-12）
                let year = date.getFullYear(); // 当前年份
                let dateStr = `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`; // 格式化为 YYYY-MM-DD
                // 从缓存中获取上次弹窗的日期
                let cachedDateStr = cc.fx.StorageMessage.getStorage("monthlyCardDate");
                // 如果缓存中的日期和当前日期不一致
                if (cachedDateStr !== dateStr) {
                    this.winStreakShow = false;
                    // 更新缓存
                    cc.fx.StorageMessage.setStorage("monthlyCardDate", dateStr);
                    this.openMonthCard();
                }
                else {
                    this.openWin();
                }
            }
            else {
                this.openWin();
            }
        })
    }


    //检查是否弹出新手礼包
    checkStarter_pack() {
        // return;
        //如果没有充值新手礼包，每天弹一次新手礼包
        if (cc.fx.GameConfig.GM_INFO.level < 15) {
            return;
        }
        const timestamp = Date.now();
        Utils.getStarter_pack((data) => {
            if (data.code == 1) {
                if (data.data.starter_pack == 0) {
                    console.log("用户没有触发新手礼包，准备触发,并且给弹窗");
                    this.winStreakShow = false;
                    Utils.setStarter_pack((res) => {
                        if (res.code == 1) {
                            this.newbieGift = true;
                            // let top = this.node.getChildByName("Load").getChildByName("Top");
                            // top.getChildByName("yicon").active = false;
                            this.Stamina.parent.getChildByName("xinshou").active = true;
                            cc.fx.GameConfig.GM_INFO.starter_packTime = res.data.starter_pack / 1000;
                            if (!this.actionpNode) this.openStarter_pack();
                            console.log("打开新手礼包");
                            const nowTime = Math.floor(Date.now() / 1000);
                            let time = cc.fx.GameConfig.GM_INFO.starter_packTime - nowTime;
                            if (time > 0) {
                                this.startStarter_pack();
                                time = cc.fx.GameTool.getTimeMargin2(time);
                                this.Stamina.parent.getChildByName("xinshou").getChildByName("time").getComponent(cc.Label)
                                    .string = time + "";

                            }

                        }
                    })
                }
                else if (data.data.starter_pack < timestamp) {
                    this.winStreakShow = true;
                    console.log("用户新手礼包已经过期，不触发");
                    this.newbieGift = false;
                    this.Stamina.parent.getChildByName("xinshou").active = false;
                }
                else if (data.data.starter_packState == 1) {
                    this.winStreakShow = true;
                    console.log("用户已经购买过新手礼包，不触发");
                    this.newbieGift = false;
                    this.Stamina.parent.getChildByName("xinshou").active = false;
                }
                else {
                    console.log("用户在新手礼包时间范围内，给弹窗");
                    cc.fx.GameConfig.GM_INFO.starter_packTime = data.data.starter_pack / 1000;
                    const nowTime = Math.floor(Date.now() / 1000);
                    let time = cc.fx.GameConfig.GM_INFO.starter_packTime - nowTime;
                    if (time > 0) {
                        this.startStarter_pack();
                        time = cc.fx.GameTool.getTimeMargin2(time);
                        this.Stamina.parent.getChildByName("xinshou").getChildByName("time").getComponent(cc.Label)
                            .string = time + "";
                    }
                    let date = new Date();
                    let day = date.getDate() + 1; // 当前日期（1-31）
                    let month = date.getMonth(); // 当前月份（1-12）
                    let year = date.getFullYear(); // 当前年份
                    let dateStr = `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`; // 格式化为 YYYY-MM-DD
                    // 从缓存中获取上次弹窗的日期
                    let cachedDateStr = cc.fx.StorageMessage.getStorage("Starter_pack");
                    // 如果缓存中的日期和当前日期不一致
                    if (cachedDateStr !== dateStr) {
                        // 更新缓存
                        this.newbieGift = true;
                        // let top = this.node.getChildByName("Load").getChildByName("Top");
                        // top.getChildByName("yicon").active = false;
                        this.Stamina.parent.getChildByName("xinshou").active = true;
                        cc.fx.StorageMessage.setStorage("Starter_pack", dateStr);
                        if (!this.actionpNode) this.openStarter_pack();
                        console.log("打开新手礼包");
                        this.winStreakShow = false;
                    }
                    else {
                        this.winStreakShow = true;
                        this.newbieGift = false;
                        this.Stamina.parent.getChildByName("xinshou").active = true;
                        console.log("当天已经给过，不再弹窗新手礼包");
                    }
                }
            }
            else {
                this.newbieGift = false;
                this.Stamina.parent.getChildByName("xinshou").active = false;
            }
        })
    }


    //获取有没有分享信息
    getShareInfo() {
        // 检查微信小游戏启动参数
        if (cc.sys.platform === cc.sys.WECHAT_GAME) {
            //@ts-ignore
            const launchOptions = wx.getLaunchOptionsSync();
            const query = launchOptions.query;
            if (query.level && query.uid) {
                const level = parseInt(query.level, 10);
                const uid = query.uid.toString();
                if (uid != cc.fx.GameConfig.GM_INFO.uid) {
                    cc.fx.GameConfig.GM_INFO.otherUid = uid;
                    cc.fx.GameConfig.GM_INFO.otherLevel = level;
                    // console.log('从分享链接获取到的关卡信息:', level);
                    // console.log('从分享链接获取到的 UID:', uid);
                    // console.log("自己的UID", cc.fx.GameConfig.GM_INFO.uid)
                    let eventData = {
                        identity: "helper",  //发起者为helped  帮助者为helper
                        helpedId: cc.fx.GameConfig.GM_INFO.otherUid, //被帮助者UID
                        level: level //被帮助关卡等级
                    }
                    cc.fx.GameTool.shushu_Track("stage_help", eventData); //帮助通关
                    this.openLoad();
                }
                else {
                    cc.fx.GameConfig.GM_INFO.otherLevel = 0;
                }
                // 可以在这里处理关卡信息和 UID
            }
        }
    }

    //第一次进游戏用户处理信息
    setFirstInfo() {
        const group = cc.fx.GameTool.setWechatGameGroup(2);
        if (group == 0) {
            cc.fx.GameConfig.GM_INFO.musicOpen = true;
        }
        else if (group == 1) {
            cc.fx.GameConfig.GM_INFO.musicOpen = false;
        }
        const audioInfo = {
            "musicOpen": cc.fx.GameConfig.GM_INFO.musicOpen,             //音乐
            "effectOpen": cc.fx.GameConfig.GM_INFO.effectOpen,            //音效
            "vibrateOpen": cc.fx.GameConfig.GM_INFO.vibrateOpen,           //震动
        }
        cc.fx.StorageMessage.setStorage("music", audioInfo);

        if (cc.fx.GameConfig.GM_INFO.openid != "") {
            // console.log("————————发送注册事件");
            const time = cc.fx.GameTool.formatDate(new Date());
            let data = {
                register_time: time, // 注册时间
            }
            // console.log("注册时间:", time);
            cc.fx.GameTool.shushu_Track("register", data);
            MiniGameSdk.API.shushu_SetSuperProperties(time, false);
        }
    }
    onCardReward() {
        this.getcard.active = false;
        cc.fx.GameTool.changeCoin(500);
        this.updateCoin();
        const dataTemp = {
            change_reason: "month",
            id: "1001",
            num: 500,
            compensate: false
        }
        cc.fx.GameTool.shushu_Track("resource_get", dataTemp);
    }


    //检测当日是否有分享行为，用不用主动获取分享关卡信息
    checkShare() {
        const otherInfo = cc.fx.StorageMessage.getStorage("otherLevel");
        // console.log("分享信息:", otherInfo);
        if (otherInfo != null && otherInfo != undefined && otherInfo != "") {
            const currentTime = Date.now();
            const timeDifference = currentTime - otherInfo.timeStamp;
            const oneDayInMilliseconds = 24 * 60 * 60 * 1000;
            // console.log("计入时间计算");
            if (timeDifference > oneDayInMilliseconds || cc.fx.GameConfig.GM_INFO.level >= otherInfo.otherLevel) {
                // console.log("_______________检查分享信息过期或已获取过，清除存储信息");
                cc.fx.StorageMessage.setStorage("otherLevel", null);
            }
            else {
                // if ((cc.fx.GameConfig.GM_INFO.level + 1) == otherInfo.otherLevel) {
                // console.log("_______________有分享信息，并且符合条件");
                Utils.getShareLevel((res) => {
                    if (res.code == 1) {
                        if ((cc.fx.GameConfig.GM_INFO.level + 1) == res.data[0].lv) {
                            let title = "好友帮助通过第" + otherInfo.otherLevel + "关";
                            MiniGameSdk.API.showToast(title);
                            cc.fx.GameConfig.GM_INFO.level = otherInfo.otherLevel;
                            if ((cc.fx.GameConfig.GM_INFO.level) > 399) {
                                cc.fx.GameConfig.GM_INFO.level = 400;
                            }
                            const timestamp = Date.now();
                            const levelInfo = {
                                level: cc.fx.GameConfig.GM_INFO.level, // 关卡
                                timestamp: timestamp, // 时间戳
                            };
                            cc.fx.StorageMessage.setStorage("level", levelInfo);
                            NumberToImage.numberToImageNodes((cc.fx.GameConfig.GM_INFO.level + 1), 43, 15, "level_", this.level, true);
                            cc.fx.GameTool.setUserLevel((data) => {
                            });
                        }

                    }

                })

                // }
            }
        }
        else {
            // console.log("没有分享信息");
        }
    }


    //购买月卡
    buyMonthCard(id) {
        Utils.setMonthlyCard(0, (data) => {
            // console.log("购买月卡", data.code);
            if (data.code == 1) {
                // let rewardData = [
                //     { type: "coin", count: 6000 },
                // ]
                cc.fx.GameTool.shopBuy(id, false);
                cc.fx.GameConfig.GM_INFO.hp_Max = 7;
                cc.fx.GameConfig.GM_INFO.hp = 7;

                cc.fx.GameTool.getMonthlyCardValidityDays().then(days => {
                    cc.fx.GameConfig.GM_INFO.monthTime = days.days;
                    //本地储存当前服务器时间
                    let dateStr = new Date(days.time);
                    cc.fx.StorageMessage.setStorage("mCardDate", dateStr);
                });
                // cc.fx.GameTool.changeCoin(6000);
                const jiazaiNode = cc.find("Canvas"); // 假设 JiaZai 挂在 Canvas 节点
                const jiazaiComp = jiazaiNode.getComponent(JiaZai);
                if (jiazaiComp) {
                    // console.log("获取到JiaZai组件", jiazaiComp);
                    setTimeout(() => {
                        jiazaiComp.setHealthInfo(false);
                        jiazaiComp.startTimeCutDown();
                        jiazaiComp.updateCoin();

                    }, 300);
                } else {
                    // console.log("无法获取JiaZai组件");
                }
                cc.fx.GameConfig.GM_INFO.doubleCoin = 2;
                cc.fx.GameTool.setUserHealth(0, (data) => {
                    cc.fx.GameTool.getHealth(null);
                })
            }
            this.closeLoad();
        })
        // update (dt) {}
    }

    setShareInfo() {
        console.log("设置分享信息");
        MiniGameSdk.API.shareAppToFriends();
    }

    //检查任务列表
    checkTasks() {
        let top = this.node.getChildByName("Load").getChildByName("Top");
        top.getChildByName("day").getChildByName("red").active = false;
        if (cc.fx.GameConfig.GM_INFO.tasks.levelPass.target == 0) {
            console.log("没有获取人任务列表从服务器拿");
            cc.fx.GameTool.getDailyQuestsInfo((data) => {
                if (data.code == 1) {
                    let res = data.data.task;
                    cc.fx.GameConfig.GM_INFO.tasks.levelPass = res["levelPass"];
                    cc.fx.GameConfig.GM_INFO.tasks.share = res["share"];
                    cc.fx.GameConfig.GM_INFO.tasks.useEnergy = res["useEnergy"];
                    cc.fx.GameConfig.GM_INFO.tasks.useProp = res["useProp"];
                }
                else {
                    //以备不时之需
                    cc.fx.GameConfig.GM_INFO.tasks.levelPass.target = 3;
                    cc.fx.GameConfig.GM_INFO.tasks.share.target = 1;
                    cc.fx.GameConfig.GM_INFO.tasks.useEnergy.target = 10;
                    cc.fx.GameConfig.GM_INFO.tasks.useProp.target = 3;
                }
                if (cc.fx.GameConfig.GM_INFO.tasks.levelPass.state == 1 || cc.fx.GameConfig.GM_INFO.tasks.share.state == 1 ||
                    cc.fx.GameConfig.GM_INFO.tasks.useEnergy.state == 1 || cc.fx.GameConfig.GM_INFO.tasks.useProp.state == 1
                ) {
                    top.getChildByName("day").getChildByName("red").active = true;
                }
            })
        }
        else {
            console.log("有任务列表判断红点", cc.fx.GameConfig.GM_INFO.tasks);
            if (cc.fx.GameConfig.GM_INFO.tasks.levelPass.state == 1 || cc.fx.GameConfig.GM_INFO.tasks.share.state == 1 ||
                cc.fx.GameConfig.GM_INFO.tasks.useEnergy.state == 1 || cc.fx.GameConfig.GM_INFO.tasks.useProp.state == 1
            ) {
                top.getChildByName("day").getChildByName("red").active = true;
            }

        }
    }

    openWin() {
        if (this.winStreakShow == false || cc.fx.GameConfig.GM_INFO.level < 17) {
            return;
        } else {
            let date = new Date();
            let day = date.getDate(); // 当前日期（1-31）
            let month = date.getMonth() + 1; // 当前月份（1-12）
            let year = date.getFullYear(); // 当前年份
            let dateStr = `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`; // 格式化为 YYYY-MM-DD
            // 从缓存中获取上次弹窗的日期
            let cachedDateStr = cc.fx.StorageMessage.getStorage("winStreakTime");
            // 如果缓存中的日期和当前日期不一致
            if (cachedDateStr !== dateStr) {
                // 更新缓存
                cc.fx.StorageMessage.setStorage("winStreakTime", dateStr);
            }
            else {
                return;
            }
        }
        this.openWinStreak();
    }
    //打开连胜活动
    openWinStreak() {
        if (!JiaZai.cachedWinStreakPrefab) {
            // cc.error('Action prefab is not loaded yet.');
            cc.assetManager.loadBundle('action_bundle', (err: Error, bundle: cc.AssetManager.Bundle) => {
                if (err) {
                    cc.error(err.message || err);
                    return;
                }
                bundle.load('prefab/winStreak', cc.Prefab, (err: Error, prefab: cc.Prefab) => {
                    if (err) {
                        cc.error(err.message || err);
                        return;
                    }
                    JiaZai.cachedWinStreakPrefab = prefab;
                    if (!this.winStreakNode) {
                        // 第一次使用，创建节点
                        this.winStreakNode = cc.instantiate(JiaZai.cachedWinStreakPrefab);
                        this.node.addChild(this.winStreakNode);
                        this.winStreakNode.getComponent("WinStreak").init();
                    } else {
                        // 非第一次使用，直接激活节点
                        this.winStreakNode.active = true;
                        this.winStreakNode.getComponent("WinStreak").init();
                    }
                });
            });
            return;
        }
        if (!this.winStreakNode) {
            // 第一次使用，创建节点
            this.winStreakNode = cc.instantiate(JiaZai.cachedWinStreakPrefab);
            this.node.addChild(this.winStreakNode);
            this.winStreakNode.active = true;
            this.winStreakNode.getComponent("WinStreak").init();
        } else {
            // 非第一次使用，直接激活节点
            this.winStreakNode.active = true;
            this.winStreakNode.getComponent("WinStreak").init();
        }
    }

    update(dt) {
        if (this.newbieGift && this.monthlyCardNode) {
            if (this.monthlyCardNode.active == true) {
                this.monthlyCardNode.active = false;
            }
        }
    }
}
