cb/assets/Script/JiaZai.ts
2025-10-17 19:57:42 +08:00

1730 lines
73 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;
// 缓存 预制体
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();
// this.checkDailyQuests();
//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, true);
}
}
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() {
//@ts-ignore
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);
});
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;
}
}
checkDailyQuests() {
cc.fx.GameTool.getDailyQuestsInfo((data) => {
})
}
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, "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, "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) {
//@ts-ignore
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.GameTool.maxLevel()) {
if (version != "开发版" && version != "体验版") {
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;
}
//@ts-ignore
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.GameTool.maxLevel()) {
MiniGameSdk.API.showToast("关卡每周更新,敬请期待!");
return;
}
cc.fx.GameConfig.LEVEL_INFO_init(true, 0, false);
}
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.GameTool.maxLevel()) {
MiniGameSdk.API.showToast("关卡每周更新,敬请期待!");
return;
}
cc.fx.GameConfig.LEVEL_INFO_init(true, 1000, false);
}
}
else if (version == "正式版") {
if (cc.fx.GameTool.maxLevel()) {
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, false);
}
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.GameTool.maxLevel()) {
MiniGameSdk.API.showToast("关卡每周更新,敬请期待!");
return;
}
cc.fx.GameConfig.LEVEL_INFO_init(true, 0, false);
}
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.GameTool.maxLevel()) {
MiniGameSdk.API.showToast("关卡每周更新,敬请期待!");
return;
}
cc.fx.GameConfig.LEVEL_INFO_init(true, 1000, false);
}
}
}
}
//打开商店
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();
}
//@ts-ignore
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;
}
//@ts-ignore
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() {
//@ts-ignore
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);
}
//@ts-ignore
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;
cc.fx.GameTool.maxLevel();
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;
}
}
}
}