// 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; @property(cc.EditBox) custom: cc.EditBox = null; @property({ type: [cc.SpriteAtlas], tooltip: "方块颜色" }) Block_Color: Array = []; @property(cc.SpriteAtlas) liuGuang: 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; //月卡 @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; // LIFE-CYCLE CALLBACKS: onLoad() { this.getShareInfo(); cc.game.setFrameRate(63); LQCollideSystem.is_enable = true; // //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 } else { this.node.getChildByName("Load").getChildByName("New EditBox").active = true; } // 预加载 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) { 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; } 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.openMonthCard(); } 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; } }); }, 500); } else { if (!cc.fx.GameConfig.GM_INFO.first) this.node.getChildByName("zhuanchang").active = false; } // //打开heath弹窗 // this.openHeath(); this.uploadToCloud(cc.fx.GameConfig.GM_INFO.level + 1); // this.rewarded(); // this.getMonthlyCardValidityDays(); Utils.getMonthlyCard((data) => { if (data.code == 1) { cc.fx.GameConfig.GM_INFO.hp_Max = 7; cc.fx.GameConfig.GM_INFO.doubleCoin = 2; } else { cc.fx.GameConfig.GM_INFO.hp_Max = 5; cc.fx.GameConfig.GM_INFO.doubleCoin = 1; } }) if (cc.fx.GameConfig.GM_INFO.level >= 16 && JiaZai.cachedMonthlyCardPrefab) { this.monthH(); }; } // 打开heath弹窗,创建预制体并启动自己的倒计时 openHeath() { let health = cc.instantiate(this.health); this.node.addChild(health); let heathPop = health.getComponent("heathnum").heatht; heathPop.scale = 0.7; 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; // 启动弹窗自己的倒计时 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, "time_", timeLabelNode); } NumberToImage.numberToImageNodes(cc.fx.GameConfig.GM_INFO.hp, 40, 20, "time_", 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, "time_", 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) { 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 power = cc.fx.GameTool.getUserPowerTime(); if (cc.fx.GameConfig.GM_INFO.hp < 1 && power == false) { MiniGameSdk.API.showToast("体力值不足"); setTimeout(() => { this.openHeath(); }, 500); return; } 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()); 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); cc.fx.GameConfig.LEVEL_INFO_init(true, 1000); } } else if (version == "正式版") { 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()); 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); 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); } else { // 非第一次使用,直接激活节点 this.shopNode.active = true; this.shopNode.getComponent("shop").init(); } // //console.log("shopNode parent:", this.shopNode.parent); } 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.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; } } // 关闭商店 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_1" || order.itemid == "unlimited_health_bundle_2" || order.itemid == "unlimited_health_bundle_3" || order.itemid == "month_Card" || "reborn_Gift" ) { this.openLoad(); console.log("补发名称:", order.itemid); let productId = order.itemid; Utils.setPayInfo( (res) => { console.log("设置轮训结果:", res); this.closeLoad(); if (res.code === 1) { if (order.itemid == "reborn_Gift") { return; } 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_1") { coinTemp = 5000; } else if (order.itemid == "unlimited_health_bundle_2") { coinTemp = 12000; } else if (order.itemid == "unlimited_health_bundle_3") { coinTemp = 30000; } 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; } let title = "充值补发奖励金币:" + coinTemp; // MiniGameSdk.API.showToast(title); cc.fx.GameTool.shopBuy(productId, true); console.log("充值成功获得金币"); } else { MiniGameSdk.API.showToast("网络异常,充值奖励将在登录后再次发放"); const dataFail4 = { outTradeNo: Utils.outTradeNo, price: parseInt(order.goodsPrice), 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); let price = order.price || 0; const dataSuccess = { outTradeNo: order.outTradeNo, price: price, payment_name: productId, payment_num: 1, type: systemType, } let name = "补发充值成功" + productId; cc.fx.GameTool.shushu_Track("payment", dataSuccess); let version = cc.fx.GameTool.getWechatGameVersion(); if (version == "正式版") { MiniGameSdk.API.yinli_Pay(price, Utils.outTradeNo, name); } } 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()); } 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(); 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.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.monthlyCardNode.getComponent("monthlyCard").home = 1; // 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); // } // }) } //关闭界面 closeMonthCard() { 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(cc.fx.GameConfig.GM_INFO.monthTime, 35, 20, "month_", this.monthCardTime, true); } }) this.monthCard.active = false; this.rewarded(); } //购买月卡 buyMonthCard() { Utils.setMonthlyCard(0, (data) => { console.log("购买月卡'✅ ", data.code); if (data.code == 1) { let rewardData = [ { type: "coin", count: 6000 }, ] cc.fx.GameConfig.GM_INFO.hp_Max = 7; cc.fx.GameConfig.GM_INFO.hp = 7; cc.fx.GameTool.changeCoin(6000); setTimeout(() => { this.updateCoin(); this.setHealthInfo(false); this.startTimeCutDown(); this.openRewardWindow(rewardData, 1); }, 300); cc.fx.GameTool.setUserHealth(0, (data) => { cc.fx.GameTool.getHealth(null); }) this.monthCardBtn.active = false; this.monthCardBtn2.active = true; NumberToImage.numberToImageNodes(cc.fx.GameConfig.GM_INFO.monthTime, 35, 20, "month_", this.monthCardTime, true); } }) } 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) { cc.fx.GameTool.changeCoin(500); this.updateCoin(); let rewardData = [ { type: "coin", count: 500 }, ] setTimeout(() => { this.openRewardWindow(rewardData); }, 500); const dataTemp = { change_reason: "month", id: "1001", num: 500, compensate: false } cc.fx.GameTool.shushu_Track("resource_get", dataTemp); } }) } //缓存弹窗 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) { // 更新缓存 cc.fx.StorageMessage.setStorage("monthlyCardDate", dateStr); this.openMonthCard(); } } }) } //获取月卡有效期距离今天的天数 getMonthlyCardValidityDays() { Utils.getMonthlyCard((data) => { if (data.code === 1) { const validityTime = data.data.monthCardTime; // 后端返回的到期时间戳(毫秒) // 获取今天的零点时间戳 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); // 86400000 = 24 * 60 * 60 * 1000 // 确保天数不为负数 const remainingDays = Math.max(0, days); cc.fx.GameConfig.GM_INFO.monthTime = remainingDays; console.log('月卡剩余天数 (零点刷新):', remainingDays); } else { } }); } //获取有没有分享信息 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; cc.fx.GameConfig.GM_INFO.otherUid = uid; cc.fx.GameConfig.GM_INFO.otherLevel = level - 1; console.log('从分享链接获取到的关卡信息:', level); console.log('从分享链接获取到的 UID:', uid); // 可以在这里处理关卡信息和 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); } } // update (dt) {} }