cb/assets/Script/JiaZai.ts
2025-08-05 17:59:54 +08:00

1047 lines
44 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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<cc.SpriteAtlas> = [];
@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;
//月卡领取
@property(cc.Node)
getcard: cc.Node = null;
@property(cc.Node)
cardTime: cc.Node = null;
// LIFE-CYCLE CALLBACKS:
onLoad() {
this.closeLoad();
this.checkShare();
console.log("进入首页获取的share", cc.fx.GameConfig.GM_INFO.otherUid, cc.fx.GameConfig.GM_INFO.otherLevel);
if (cc.fx.GameConfig.GM_INFO.otherUid != "") {
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;
}
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.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.getMonthlyCardValidityDays();
this.rewarded();
console.log('月卡剩余天数 (零点刷新):', cc.fx.GameConfig.GM_INFO.monthTime);
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;
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, "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);
this.shopNode.getComponent("shop").init();
} 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) {
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;
}
else if (order.itemid == "reborn_Gift") {
coinTemp = 1000;
}
let title = "充值补发奖励金币:" + coinTemp;
// MiniGameSdk.API.showToast(title);
cc.fx.GameTool.shopBuy(productId, true);
console.log("充值成功获得金币");
} 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);
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);
let version = cc.fx.GameTool.getWechatGameVersion();
if (version == "正式版") {
MiniGameSdk.API.yinli_Pay(price, order.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.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) {
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) {
// 更新缓存
cc.fx.StorageMessage.setStorage("monthlyCardDate", dateStr);
this.openMonthCard();
}
}
})
}
//获取月卡有效期距离今天的天数
getMonthlyCardValidityDays(): Promise<number> {
return new Promise((resolve, reject) => {
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);
const remainingDays = Math.max(0, days);
cc.fx.GameConfig.GM_INFO.monthTime = remainingDays;
resolve(remainingDays);
} else {
resolve(0); // 或 reject(data) 根据需要
}
});
});
}
//获取有没有分享信息
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;
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);
let eventData = {
identity: "helper", //发起者为helped 帮助者为helper
level: level //被帮助关卡等级
}
cc.fx.GameTool.shushu_Track("stage_help", eventData); //帮助通关
this.openLoad();
}
// 可以在这里处理关卡信息和 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 + "关";
console.log(title);
MiniGameSdk.API.showToast(title);
cc.fx.GameConfig.GM_INFO.level = otherInfo.otherLevel;
if ((cc.fx.GameConfig.GM_INFO.level) > 323) {
cc.fx.GameConfig.GM_INFO.level = 323;
}
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("没有分享信息");
}
}
// update (dt) {}
}