import NumberToImage from "./NumberToImage"; import JiaZai from "./JiaZai"; import { MiniGameSdk } from "./Sdk/MiniGameSdk"; const HEALTH_REFILL_PRICES = [1000, 2000, 4000, 8000]; const HEALTH_REFILL_STORAGE_PREFIX = "home_health_refill_"; const { ccclass, property } = cc._decorator; @ccclass export default class NewClass extends cc.Component { //商店界面 @property(cc.Node) heath: cc.Node = null; //体力数量 @property(cc.Node) heatht: cc.Node = null; //切换的节点 @property([cc.Node]) switchNode: cc.Node[] = []; //倒计时健康回复 @property(cc.Node) timeNode: cc.Node = null; //切换的按钮数组 @property([cc.Node]) switchButtons: cc.Node[] = []; //金币花费数 @property(cc.Node) coin: cc.Node = null; btn_Touch: boolean = true; onLoad() { this.btn_Touch = true; } start() { this.btn_Touch = true; this.openPop(); } //打开商店界面 openPop() { // console.log("打开heath弹窗", cc.fx.GameConfig.GM_INFO.hp); NumberToImage.numberToImageNodes(this.getHealthRefillPrice(), 35, 15, "button_", this.coin, true); } private getTodayKey(): string { const now = new Date(); const month = (now.getMonth() + 1).toString().padStart(2, "0"); const day = now.getDate().toString().padStart(2, "0"); return `${now.getFullYear()}-${month}-${day}`; } private getHealthRefillStorageKey(): string { const uid = cc.fx.GameConfig.GM_INFO.uid || "guest"; return HEALTH_REFILL_STORAGE_PREFIX + uid; } private getHealthRefillRecord(): { date: string, count: number } { const today = this.getTodayKey(); const saved = cc.fx.StorageMessage.getStorage(this.getHealthRefillStorageKey()); if (!saved || saved.date !== today) { return { date: today, count: 0 }; } const count = Math.max(0, Math.floor(Number(saved.count) || 0)); return { date: today, count }; } private getHealthRefillPrice(count: number = this.getHealthRefillRecord().count): number { return HEALTH_REFILL_PRICES[Math.min(count, HEALTH_REFILL_PRICES.length - 1)]; } private recordHealthRefill(record: { date: string, count: number }) { cc.fx.StorageMessage.setStorage(this.getHealthRefillStorageKey(), { date: record.date, count: record.count + 1 }); } startGame() { // 获取场景中的 JiaZai 组件 const jiazaiNode = cc.find("Canvas"); // 假设 JiaZai 挂在 Canvas 节点 if (jiazaiNode) { const jiazaiComp = jiazaiNode.getComponent(JiaZai); if (jiazaiComp) { jiazaiComp.startGame(); } else { console.warn("JiaZai 组件未找到"); } } else { console.warn("JiaZai 节点未找到"); } this.closePop(); } //购买体力 buyHeath() { if (!this.btn_Touch) { return; } this.btn_Touch = false; //获取当前体力 let curHeath = cc.fx.GameConfig.GM_INFO.hp; //获取当前金币 let curCoin = cc.fx.GameConfig.GM_INFO.coin; const refillRecord = this.getHealthRefillRecord(); const refillPrice = this.getHealthRefillPrice(refillRecord.count); if (curCoin >= refillPrice) { this.switchButtons[1].active = false; cc.fx.GameTool.changeCoin(-refillPrice); const data = { change_reason: "首页购买体力", id: (1001 + ""), num: -refillPrice } cc.fx.GameTool.shushu_Track("resource_cost", data); cc.fx.GameConfig.GM_INFO.hp = cc.fx.GameConfig.GM_INFO.hp_Max; cc.fx.GameConfig.GM_INFO.min_Time = 0; this.recordHealthRefill(refillRecord); const parentNode = cc.find("Canvas"); // 假设 JiaZai 挂在 Canvas 节点 if (parentNode) { const jiazaiComp = parentNode.getComponent(JiaZai); if (jiazaiComp) { jiazaiComp.setHealthInfo(false); jiazaiComp.updateCoin(); } } this.switchButtons[0].active = true; cc.fx.GameTool.setUserHealth(0, (data) => { cc.fx.GameTool.getHealth(null); }) const buyData = { item_id: "refill_health", item_num: 3, item_price: refillPrice, cost_type: "gold" } // console.log("____________即将上传Shop_buy", buyData); cc.fx.GameTool.shushu_Track("shop_buy", buyData); } else { MiniGameSdk.API.showToast("金币不足,无法购买体力"); setTimeout(() => { this.btn_Touch = true; this.openShop(); }, 500); } } //金币不够购买金币 openShop() { if (!cc.fx.GameConfig.GM_INFO.canIos) { return; } //获取场景中的 JiaZai 组件 const parentNode = cc.find("Canvas"); // 假设 JiaZai 挂在 Canvas 节点 if (parentNode) { const jiazaiComp = parentNode.getComponent(JiaZai); if (jiazaiComp) { jiazaiComp.openShop(); } } } //关闭弹窗 closePop() { this.btn_Touch = true; //销毁预制体 // console.log("关闭heath弹窗"); //关闭计时器 // 获取场景中的 JiaZai 组件 const jiazaiNode = cc.find("Canvas"); // 假设 JiaZai 挂在 Canvas 节点 if (jiazaiNode) { const jiazaiComp = jiazaiNode.getComponent(JiaZai); if (jiazaiComp) { jiazaiComp.stopHeathTimeCutDown(); } else { console.warn("JiaZai 组件未找到"); } } else { console.warn("JiaZai 节点未找到"); } this.heath.destroy(); } // update (dt) {} }