import JiaZai from "../../Script/JiaZai";
import Utils from "../../Script/module/Pay/Utils";
import NumberToImage from "../../Script/NumberToImage";
import { MiniGameSdk } from "../../Script/Sdk/MiniGameSdk";

const { ccclass, property } = cc._decorator;

@ccclass
export default class passCheck extends cc.Component {
    @property(cc.Button)
    descriptionBtn: cc.Button = null;

    @property(cc.Button)
    closetBtn: cc.Button = null;

    @property(cc.Button)
    activateBtn: cc.Button = null;

    @property(cc.Sprite)
    barSpr: cc.Sprite = null;

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

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

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

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

    @property(cc.Label)
    time: cc.Label = null;
    // @property(cc.Prefab)
    // passCheckItemLv: cc.Prefab = null;

    @property(cc.Prefab)
    buyActivate: cc.Prefab = null;

    @property(cc.Button)
    btnActivate1: cc.Button = null;

    private timeNumber: number = 0;
    private progressNum1: number = 0;
    private progressNum2: number = 0;
    private currentLvNum: number = 0;
    private ProgressIndex: number = 0; // 记录当前进度索引

    private countdownTimer: any = null;
    private endTime: number = 0; // 结束时间戳（毫秒）    

    private passListData: Array<any> = []; // 存储处理后的passList数据

    private btn_Touch: boolean = false;
    private iosPrice: number = 0;
    private iosProductId: string = "";
    private iosCount: number = 1;
    private onShowListener: () => void;

    public passCheckMgr: any = null;
    public oldPassCheckInfo: any = null;

    protected onLoad(): void {


    }

    start() {
        // 添加按钮事件监听
        this.descriptionBtn.node.on('click', this.onDescriptionBtnClick, this);
        this.closetBtn.node.on('click', this.onCloseBtnClick, this);
        this.activateBtn.node.on('click', this.onActivateBtnClick, this);


        // this.initPassList();
        this.onShowListener = null;
        if (cc.sys.platform === cc.sys.WECHAT_GAME) {
            // 定义监听函数
            console.log("通行证添加监听");
            this.onShowListener = () => {
                console.log("回到前台,通行证添加监听");
                this.onShow();
            };
            //@ts-ignore
            wx.onShow(this.onShowListener);
        }
        this.btn_Touch = true;
    }

    setInfo(passCheck) {

        this.onInit(passCheck);
    }
    onInit(passCheckInfo) {
        const passCheckData = cc.fx.GameConfig.PASS_CHECK;

        // let _playerPassLevel = cc.fx.GameConfig.GM_INFO.playerPassLevel
        // let getUserLevel = cc.fx.GameConfig.GM_INFO.level;
        let passCheck = null;
        if (cc.fx.GameConfig.GM_INFO.getItemType == 2) {
            this.oldPassCheckInfo = passCheckInfo[1];
            passCheck = passCheckInfo[2];
            this.activateBtn.node.active = !passCheck.activate;
        } else {
            this.oldPassCheckInfo = passCheckInfo[2];
            passCheck = passCheckInfo[1];
            if (this.activateBtn) {
                if (this.activateBtn.node)
                    this.activateBtn.node.active = false;
            }

        }

        this.ProgressIndex = cc.fx.StorageMessage.getStorage("ProgressIndex") || 1;


        // 设置固定开始时间：2025年11月4日10:00
        // const startDate = new Date(2025, 10, 4, 10, 0, 0); // 月份从0开始，所以11月是10
        // const startTime = startDate.getTime();
        // const now = new Date().getTime();

        // // 计算结束时间（开始时间 + 60天）
        // this.endTime = passCheck.time + (30 * 24 * 60 * 60 * 1000); // 开始时间 + 60天的毫秒数
        this.endTime = passCheck.time;

        if (typeof passCheck === 'string') {
            try {
                passCheck = JSON.parse(passCheck);
                console.log("解析后的 passCheck:", passCheck);
                console.log("解析后的 progressLevel:", passCheck.activate);
            } catch (e) {
                console.error("JSON 解析失败:", e);
            }
        }
        this.timeNumber = 0;
        this.progressNum1 = passCheck.progress;
        if (passCheck.progressLevel > 30) {
            passCheck.progressLevel = 30;
            this.progressNum1 = passCheckData[passCheck.progressLevel - 1].token;
        }
        this.progressNum2 = passCheckData[passCheck.progressLevel - 1].token;

        let lvNum = passCheck.progressLevel;

        if (this.progressNum1 == this.progressNum2) {
            lvNum += 1;
            this.currentLvNum = passCheck.progressLevel;
        } else {
            this.currentLvNum = passCheck.progressLevel - 1;
        }
        if (this.currentLvNum <= 0) {
            this.currentLvNum = 1;
        } else if (this.currentLvNum > 30) {
            this.currentLvNum = 30;
        }
        if (lvNum >= 30) {
            lvNum = 30;
        }
        NumberToImage.numberToImageNodes(lvNum, 45, 48, "half_black_", this.currentLv, true);
        // NumberToImage.numberToImageNodesShop(lvNum, 23, 35, "Black", this.currentLv, true);

        if (lvNum == 1 || (lvNum >= 10 && lvNum <= 19)) {
            this.currentLv.x -= 5;
        }
        // NumberToImage.createArtisticTextAsync()
        // NumberToImage.numberToImageNodes(this.progressNum1, 20, 15, "mul", this.progress_1, true);
        // NumberToImage.numberToImageNodes(this.progressNum2, 20, 15, "mul", this.progress_2, true);
        NumberToImage.numberToImageNodesShop(this.progressNum1, 20, 15, "Black", this.progress_1, true);
        NumberToImage.numberToImageNodesShop(this.progressNum2, 20, 15, "Black", this.progress_2, true);
        cc.fx.GameConfig.GM_INFO.passCheckActivate = passCheck.activate;
        // this.barSpr.fillRange = this.progressNum1 / this.progressNum2;
        let barSprFillRange = this.progressNum1 / this.progressNum2;
        this.barSpr.node.active = true;
        let forInt = passCheck.progressLevel - this.ProgressIndex;
        // if (forInt < 1) {
        //     forInt = 1;
        // }
        if (cc.fx.GameConfig.GM_INFO.getItemType == 1) {
            forInt = 0;
            // 当前是第二期领第一期物品
        }
        // let time = 0.3;
        let fillRangeFun = (fillRange, time, reset?: boolean) => {
            cc.tween(this.barSpr)
                .delay(time)
                .to(time, { fillRange: fillRange })
                .call(() => {
                    if (reset) {
                        this.barSpr.fillRange = 0;
                        if (this.progressNum1 == this.progressNum2) {
                            if (this.currentLvNum >= 30) {
                                // NumberToImage.numberToImageNodes(4, 20, 15, "mul", this.progress_1, true);
                                NumberToImage.numberToImageNodesShop(4, 20, 15, "Black", this.progress_1, true);

                            } else {
                                // NumberToImage.numberToImageNodes(0, 20, 15, "mul", this.progress_1, true);
                                NumberToImage.numberToImageNodesShop(0, 20, 15, "Black", this.progress_1, true);
                            }

                            let lvNumber = passCheck.progressLevel;
                            if (passCheck.progressLevel >= 30) {
                                lvNumber = 29;
                            }
                            // NumberToImage.numberToImageNodes(passCheckData[lvNumber].token, 20, 15, "mul", this.progress_2, true);
                            NumberToImage.numberToImageNodesShop(passCheckData[lvNumber].token, 20, 15, "Black", this.progress_2, true);

                        }
                        // NumberToImage.numberToImageNodes(0, 20, 15, "mul", this.progress_1, true);
                        // NumberToImage.numberToImageNodes(0, 20, 15, "mul", this.progress_2, true);
                        // 可能还需要更新其他相关数据
                        // self.currentLvNum += 1;
                        // NumberToImage.numberToImageNodes(self.currentLvNum, 35, 20, "month_", self.currentLv, true);
                    }
                })
                .start();
        }

        // 确保动画按顺序执行
        for (let j = 0; j < forInt; j++) {
            cc.tween(this.barSpr).delay(j * 0.6 + 0.3).call(() => {
                if (j == forInt - 1) {
                    // 最后一个动画，根据当前 fillRange 值决定
                    if (barSprFillRange == 1) {
                        // 延迟执行最后一个动画，确保前面的动画完成
                        fillRangeFun(1, 0.3, true);
                    } else {
                        fillRangeFun(barSprFillRange, 0.3);
                    }
                } else {
                    // 中间的动画，都填满到1
                    fillRangeFun(1, 0.3, true);
                }
            }).start();
        }
        if (forInt == 0) {
            fillRangeFun(1, 0, true);
        }


        this.setbarNodePosX()
        this.initCountDown();

        this.passListData = [];
        // 遍历数据并按照指定格式填充passList
        for (let i = 0; i < passCheckData.length; i++) {
            const item = passCheckData[i];
            const level = item.level;

            // 解析free字段 "2002:1" 格式
            const freeParts = item.free.split(":");
            const freeItemID = parseInt(freeParts[0]);
            const freeItemNum = parseInt(freeParts[1]);

            // 解析paid字段 "1001:500" 格式
            const paidParts = item.paid.split(":");
            const paidItemID = parseInt(paidParts[0]);
            const paidItemNum = parseInt(paidParts[1]);
            const freeValue = passCheck.free.length > i ? passCheck.free[i] : -1;
            // const passCheckValue = passCheck.activate ? (passCheck.passCheck.length > i ? passCheck.passCheck[i] : -1) : -2;
            const passCheckValue = passCheck.passCheck.length > i ? passCheck.passCheck[i] : -1

            this.passListData.push({
                id: i,
                ItemID1: freeItemID,
                ItemNum1: freeItemNum,
                ItemID2: paidItemID,
                ItemNum2: paidItemNum,
                free: freeValue,
                passCheck: passCheckValue
            });
        }

        this.onShowList(this.passListData);
    }

    onShowList(data: any) {
        this.node.getChildByName("scrollViewNode").active = true;
        var passCheckMgr = this.node.getChildByName("scrollViewNode").getComponent("passCheckMgr");
        passCheckMgr.init(data, this.currentLvNum, this.oldPassCheckInfo, this.endTime);
        this.passCheckMgr = passCheckMgr;
        // passCheckMgr.updateProgressBars();
    }

    // 根据passList生成对应条数的Item
    initPassListItems() {

    }

    initCountDown() {
        this.time.node.active = true;

        // 立即更新一次显示
        this.updateCountdown();

        // 每分钟更新一次倒计时
        this.countdownTimer = setInterval(() => {
            this.updateCountdown();
        }, 60000); // 每60秒更新一次
    }

    updateCountdown() {
        const now = new Date().getTime();
        const distance = this.endTime - now;

        if (distance <= 0) {
            // 倒计时结束
            if (this.countdownTimer) {
                clearInterval(this.countdownTimer);
                this.countdownTimer = null;
            }
            let barNode = this.node.getChildByName("centralNode").getChildByName("barNode")
            barNode.x = 0;
            if (this.activateBtn) {
                if (this.activateBtn.node)
                    this.activateBtn.node.active = false;
            }
            this.time.string = "已结束";
            return;
        }

        // 计算天、小时、分钟
        const days = Math.floor(distance / (1000 * 60 * 60 * 24));
        const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
        const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));

        // 格式化显示
        const formattedHours = hours.toString().padStart(2, '0');
        const formattedMinutes = minutes.toString().padStart(2, '0');

        if (days > 0) {
            // 大于1天时，显示 xx天xx时
            this.time.string = `${days}天${formattedHours}时`;
        } else {
            // 小于1天时，显示 xx时xx分
            this.time.string = `${formattedHours}时${formattedMinutes}分`;
        }
    }

    /**
     * descriptionBtn事件，显示descriptionNode节点
     */
    onDescriptionBtnClick() {

        if (this.descriptionNode) {
            this.descriptionNode.active = true;
        }

        for (let i = 1; i <= 8; i++) {
            let description = this.descriptionNode.getChildByName("description_" + i);
            if (description) {
                // 先隐藏节点
                description.scale = 0;
                description.active = true;

                // 创建弹出动作序列
                cc.tween(description)
                    .delay(i * 0.3) // 依次延迟
                    .to(0.3, { scale: 1 }, { easing: 'backOut' }) // 弹出效果
                    .start();
            }
        }
        // 移除之前的事件监听
        this.descriptionNode.getChildByName("solidColorBg").off(cc.Node.EventType.TOUCH_START);

        // 添加新的事件监听
        this.descriptionNode.getChildByName("solidColorBg").on(cc.Node.EventType.TOUCH_START, (event) => {
            // 阻止事件冒泡
            for (let i = 1; i <= 8; i++) {
                let description = this.descriptionNode.getChildByName("description_" + i);
                if (description) {
                    // 停止节点上的所有动作
                    cc.Tween.stopAllByTarget(description);
                }
            }
            this.descriptionNode.active = false;
        }, this);
    }

    /**
     * closetBtn事件，关闭当前页面
     */
    onCloseBtnClick() {
        try {
            // 先移除事件监听器
            if (cc.sys.platform === cc.sys.WECHAT_GAME && this.onShowListener) {
                console.log("shop移除onshow");
                //@ts-ignore
                wx.offShow(this.onShowListener);
                this.onShowListener = null;
            }
            const now = new Date().getTime();
            const distance = this.endTime - now;

            if (cc.fx.GameConfig.GM_INFO.getItemType == 1 || distance <= 0) {
                const jiazaiNode = cc.find("Canvas"); // 假设 JiaZai 挂在 Canvas 节点
                const jiazaiComp = jiazaiNode.getComponent(JiaZai);

                if (jiazaiComp) {
                    jiazaiComp.closePassCheck();
                }
            }

            Utils.outTradeNo = null;

            // 清理定时器
            if (this.countdownTimer) {
                clearInterval(this.countdownTimer);
                this.countdownTimer = null;
            }

            // 执行完整的销毁逻辑
            this.destroyPassCheck();
        } catch (error) {
            console.error("关闭通行证界面时发生错误:", error);
            // 即使出错也要确保清理引用
            this.cleanupAndDestroy();
        }
    }
    private destroyPassCheck() {
        try {
            // 先隐藏节点
            if (this.node && cc.isValid(this.node)) {
                this.node.active = false;
            }

            // 清理 passCheckMgr 引用
            this.passCheckMgr = null;

            // 延迟销毁节点，给所有清理操作足够的时间
            setTimeout(() => {
                this.cleanupAndDestroy();
            }, 100);
        } catch (error) {
            console.error("销毁通行证时出错:", error);
            this.cleanupAndDestroy();
        }
    }

    private cleanupAndDestroy() {
        try {
            if (this.node && cc.isValid(this.node)) {
                try {
                    // 在销毁前确保 scrollViewNode 被移除
                    const scrollViewNode = this.node.getChildByName("scrollViewNode");
                    if (scrollViewNode && cc.isValid(scrollViewNode)) {
                        scrollViewNode.removeFromParent(true);
                    }

                    // 然后销毁主节点
                    this.node.destroy();
                } catch (e) {
                    console.warn("销毁 passCheckNode 时出错:", e);

                    // 如果销毁失败，至少从父节点中移除
                    try {
                        if (this.node && cc.isValid(this.node)) {
                            this.node.removeFromParent();
                        }
                    } catch (e2) {
                        console.warn("从父节点移除 passCheckNode 时出错:", e2);
                    }
                }
            }
        } catch (error) {
            console.error("清理和销毁通行证时出错:", error);
        }
    }

    onShow() {
        if (cc.sys.platform === cc.sys.WECHAT_GAME) {
            console.log("从后台进入前台订单号:", cc.fx.GameConfig.GM_INFO.iosPassCheckOrder);
            if (cc.fx.GameConfig.GM_INFO.iosPassCheckOrder != null && cc.fx.GameConfig.GM_INFO.iosPassCheckOrder != "") {
                console.log("有苹果订单号，开始轮训");
                const iosPassCheckOrder = cc.fx.GameConfig.GM_INFO.iosPassCheckOrder;
                this.openLoad();
                this.btn_Touch = true;
                Utils.getIosPayInfo(iosPassCheckOrder,
                    (data) => {
                        console.log("获得轮训结果:", data);
                        const iosID = data.data?.payment_name || this.iosProductId;
                        let iosAmount = data.data?.goodsPrice || this.iosPrice;
                        iosAmount = parseInt(iosAmount);
                        if (data.code == 1) {
                            console.log("购买成功");
                            let name = "购买金币道具:" + iosID;
                            console.log("引力付费透传", iosAmount, iosPassCheckOrder, name);
                            MiniGameSdk.API.yinli_Pay(iosAmount, iosPassCheckOrder, name)
                            this.closeLoad();
                            // this.btn_Touch = true;  
                            console.log("_________正式发货");
                            MiniGameSdk.API.showToast("充值成功");
                            // cc.fx.GameTool.shopBuy(iosID, false);
                            this.updatePassCheckActivateStatus();
                            // 刷新界面 解锁高级通行证 隐藏通行证按钮 进度条挪到中部

                            cc.fx.GameConfig.GM_INFO.iosPassCheckOrder = null;
                        }
                        else if (data.code == 0) {
                            console.log("用户自己取消充值");
                            MiniGameSdk.API.showToast("充值失败");
                            this.closeLoad();
                            this.btn_Touch = true;
                            const dataFail = {
                                outTradeNo: iosPassCheckOrder,
                                pay_amount: iosAmount,
                                payment_name: iosID,
                                payment_num: this.iosCount,
                                type: "ios",
                                fail_reason: "用户取消充值",
                            }
                            cc.fx.GameTool.shushu_Track("payment_fail", dataFail);
                            cc.fx.GameConfig.GM_INFO.iosPassCheckOrder = null;
                        }
                        else if (data.code == 2) {
                            this.closeLoad();
                            this.btn_Touch = true;
                            console.log("轮训超时");
                            MiniGameSdk.API.showToast("请检查网络,如充值成功，请重新登录领取", 4);
                            const dataFail = {
                                outTradeNo: iosPassCheckOrder,
                                pay_amount: iosAmount,
                                payment_name: iosID,
                                payment_num: this.iosCount,
                                type: "ios",
                                fail_reason: "用户充值后，轮训结果超时",
                            }
                            cc.fx.GameTool.shushu_Track("payment_fail", dataFail);
                            this.openConfirmBox();
                        }
                        // this.btn_Touch = true;

                    })
            }
        }
    }
    /**
     * activateBtn事件，预留支付方法
     */
    onBuyActivate() {
        // TODO: 待调用支付接口
        // console.log("激活按钮点击，准备调用支付功能");

        console.log("激活按钮点击，准备调用支付功能");
        if (!this.btn_Touch) {
            return;
        }
        this.btn_Touch = false;
        const productId = "battlepass";
        let id = "battlepass";
        let price = 1800;
        let count = 1;
        // id = productId;
        // switch (productId) {
        //     case "starter_pack":
        //         price = 300;
        //         break;
        // }
        console.log("获得商品id:", id, count, price);
        let systemType = "Android";
        try {
            //@ts-ignore
            const systemInfo = wx.getSystemInfoSync();
            if (systemInfo.platform === 'ios') {
                systemType = "ios";
            }
        } catch (e) {
            console.error('获取系统信息失败', e);
        }
        if (systemType == "ios") {
            // MiniGameSdk.API.showToast("IOS系统暂不支持支付");
            // this.btn_Touch = true;
            this.openLoad();
            this.btn_Touch = true;
            let iosPayInfo = {
                price: price,
                payment_name: productId,
                payment_count: 1,
            }
            this.iosPrice = price;
            this.iosProductId = productId;
            this.iosCount = 1;
            console.log("准备跳客服回话:");
            console.log(this.iosProductId);
            Utils.GoKEFu(iosPayInfo, (res) => {
                if (res == "success") {
                    console.log("客服回话成功");
                }
                else {
                    console.log("客服回话失败");
                    this.closeLoad();
                }
            });
        }
        else {
            this.openLoad();
            this.btn_Touch = true;
            Utils.buyProp(id, count, price, systemType, productId, (res) => {
                if (res == null) {
                    MiniGameSdk.API.showToast("充值失败");
                    this.btn_Touch = true;
                    const dataFail = {
                        outTradeNo: Utils.outTradeNo,
                        pay_amount: price,
                        payment_name: productId,
                        payment_num: 1,
                        type: systemType,
                        fail_reason: "网络异常,没有拉起支付",
                    }
                    cc.fx.GameTool.shushu_Track("payment_fail", dataFail);
                    this.closeLoad();
                    return;
                }
                else if (res.err) {
                    MiniGameSdk.API.showToast("充值失败");
                    //console.log(res);
                    this.btn_Touch = true;
                    let name = "支付拉起失败";
                    if (res.errCode == -2) {
                        name = "用户取消充值";
                    }
                    const dataFail = {
                        outTradeNo: Utils.outTradeNo,
                        pay_amount: price,
                        payment_name: productId,
                        payment_num: 1,
                        type: systemType,
                        fail_reason: name,
                    }
                    cc.fx.GameTool.shushu_Track("payment_fail", dataFail);
                    this.closeLoad();
                    return;
                }
                else {
                    Utils.getPayInfo((data) => {
                        // MiniGameSdk.API.showToast("充值成功");
                        console.log("7.28_______________充值成功，准备轮训", data);
                        //console.log("获得轮训结果:", data);
                        this.closeLoad();
                        if (data.data.pay_state == 1) {
                            this.btn_Touch = true;
                            MiniGameSdk.API.showToast("取消充值");
                            const dataFail2 = {
                                outTradeNo: Utils.outTradeNo,
                                pay_amount: price,
                                payment_name: productId,
                                payment_num: 1,
                                type: systemType,
                                fail_reason: "用户取消支付",
                            }
                            cc.fx.GameTool.shushu_Track("payment_fail", dataFail2);
                        }
                        else if (data.data.pay_state == 2) {
                            this.btn_Touch = true;
                            let name = "购买金币道具:" + productId;

                            MiniGameSdk.API.yinli_Pay(price, Utils.outTradeNo, name);


                            console.log("充值成功，轮训成功，准备发货");
                            Utils.setPayInfo(
                                (res) => {
                                    console.log("设置轮训结果:", res);
                                    if (res.code === 1) {
                                        console.log("正式发货", Utils.outTradeNo);
                                        MiniGameSdk.API.showToast("充值成功");
                                        // cc.fx.GameTool.shopBuy(productId, false);
                                        this.updatePassCheckActivateStatus();
                                        // 
                                        // this.updatePower();
                                        //console.log("充值成功获得金币");
                                        // 刷新界面 解锁高级通行证 隐藏通行证按钮 进度条挪到中部
                                    }
                                    else {
                                        MiniGameSdk.API.showToast("网络异常，充值奖励将在登录后再次发放");
                                        const dataFail4 = {
                                            outTradeNo: Utils.outTradeNo,
                                            pay_amount: price,
                                            payment_name: productId,
                                            payment_num: 1,
                                            type: systemType,
                                            fail_reason: "成功付款，但是发货时请求服务器失败，充值成功未发货",
                                        }
                                        cc.fx.GameTool.shushu_Track("payment_fail", dataFail4);
                                    }


                                }, Utils.outTradeNo)
                        }
                        else {
                            const dataFail3 = {
                                outTradeNo: Utils.outTradeNo,
                                pay_amount: price,
                                payment_name: productId,
                                payment_num: 1,
                                type: systemType,
                                fail_reason: "拉起支付后，付款时网络异常付款失败",
                            }
                            cc.fx.GameTool.shushu_Track("payment_fail", dataFail3);
                            this.btn_Touch = true;
                        }
                    })
                }
            });
        }

    }

    onActivateBtnClick() {
        if (cc.fx.GameConfig.GM_INFO.getItemType == 1) {
            MiniGameSdk.API.showToast("已过期");
        } else {
            let butActivate = cc.instantiate(this.buyActivate);
            let timeStr = this.time.string;
            butActivate.getComponent("buyActivate").init(() => {
                this.onBuyActivate();
            }, timeStr);
            if (this.node && butActivate)
                this.node.addChild(butActivate);
        }
    }

    openLoad() {
        const now = new Date().getTime();
        const distance = this.endTime - now;

        // 计算小时数
        const hours = distance / (1000 * 60 * 60);
        if (hours < 1) {
            MiniGameSdk.API.showToast("剩余不足1小时，请谨慎购买。");
        }

        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());
    }

    closeLoad() {
        this.node.getChildByName("Loading").active = false;
    }

    openConfirmBox() {
        this.closeLoad();
        this.node.getChildByName("ConfirmBox").active = true;
    }
    closeConfirmBox() {
        this.node.getChildByName("ConfirmBox").active = false;
    }

    private updatePassCheckActivateStatus() {
        if (this.activateBtn) {
            if (this.activateBtn.node)
                this.activateBtn.node.active = false;
        }
        cc.fx.GameConfig.GM_INFO.passCheckActivate = true;
        this.setbarNodePosX();
        // 获取passCheckMgr实例并更新激活状态
        if (this.passCheckMgr && typeof this.passCheckMgr.refreshPassCheckItems === 'function') {
            this.passCheckMgr.refreshPassCheckItems();
        }

    }
    setbarNodePosX() {
        let activate = cc.fx.GameConfig.GM_INFO.passCheckActivate;
        let barNode = this.node.getChildByName("centralNode").getChildByName("barNode")
        if (activate || cc.fx.GameConfig.GM_INFO.getItemType == 1) {
            barNode.x = 0;
        } else {
            barNode.x = -253;
        }
    }

    allGetReward() {
        // 一键领取
        // this.passCheckMgr.allGetReward();
    }

    onDestroy() {
        // 组件销毁时清除定时器
        if (this.countdownTimer) {
            clearInterval(this.countdownTimer);
            this.countdownTimer = null;
        }

    }

}
