cb/assets/Script/JiaZai.ts
COMPUTER\EDY 78dd6775ff 更新
2025-11-11 18:57:55 +08:00

2351 lines
101 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;
// 缓存 通行证
private static cachedPassCheckPrefab: cc.Prefab | null = null;
private passCheckNode: cc.Node | null = null;
@property(cc.EditBox)
custom: cc.EditBox = null;
// @property(cc.EditBox)
// activateEdBox: 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;
RankNode: cc.Node;
// LIFE-CYCLE CALLBACKS:
onLoad() {
if (cc.fx.GameConfig.GM_INFO.otherUid != "") {
this.getShareInfo();
}
console.log("最新版本___________");
this.node.getChildByName("zhuanchang").zIndex = 1000;
this.closeLoad();
this.checkShare();
this.closeAvatar();
this.setShareInfo();
this.checkTasks();
// this.getSRank();
this.checkAndSetPlayerPassLevel();
// 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();
};
});
bundle.load('prefab/passCheck', cc.Prefab, (err: Error, prefab: cc.Prefab) => {
if (err) {
cc.error(err.message || err);
return;
}
JiaZai.cachedPassCheckPrefab = prefab;
//等级大于21开启
if (cc.fx.GameConfig.GM_INFO.level >= 21) {
let top = this.node.getChildByName("Load").getChildByName("Top");
top.getChildByName("passBtn").active = true;
};
});
});
}
if (cc.fx.GameConfig.GM_INFO.otherLevel > 0) {
if (cc.fx.GameConfig.GM_INFO.first) {
this.setFirstMusic();
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.setFirstMusic();
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.popUpPassCheck();
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 >= 21) {
let top = this.node.getChildByName("Load").getChildByName("Top");
top.getChildByName("passBtn").active = true;
let xinshouNode = this.Stamina.parent.getChildByName("xinshou");
if (xinshouNode) {
xinshouNode.y = -950;
// 强制刷新节点的变换
xinshouNode.setPosition(xinshouNode.x, -950);
}
} else {
let top = this.node.getChildByName("Load").getChildByName("Top");
top.getChildByName("passBtn").active = false;
let xinshouNode = this.Stamina.parent.getChildByName("xinshou");
if (xinshouNode) {
xinshouNode.y = -710;
// 强制刷新节点的变换
xinshouNode.setPosition(xinshouNode.x, -710);
}
};
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;
}
this.setAdaptation();
// 加载广告
// cc.fx.GameTool.preloadRewardedVideoAd().then((success) => {
// if (success) {
// console.log("HomeScene广告预加载初始化成功");
// } else {
// console.log("HomeScene广告预加载初始化失败");
// }
// });
}
// 适配pad
setAdaptation() {
const hmScale = cc.fx.GameTool.adaptation()
if (hmScale == 1) return;
const loadNode = this.node.getChildByName("Load");
if (loadNode) {
const designSize = cc.view.getDesignResolutionSize();
const frameSize = cc.view.getFrameSize();
const scaleX = frameSize.width / designSize.width;
const scaleY = frameSize.height / designSize.height;
const scale = Math.min(scaleX, scaleY);
let barWidth = 0;
if (scaleX > scaleY) {
barWidth = (frameSize.width - designSize.width * scale) / 2;
}
loadNode.scale = hmScale;
// 适配右边的元素,保持与右边框距离不变
const rightElements = [
"tiaodik",
"shezhiBtn",
"popRank",
"Pause",
"rank",
"day",
"hammer",
"Coin"
];
const rightElements2 = [
"shop",
"yicon",
"passBtn",
"xinshou",
"avatar",
"kuang"
]
rightElements.forEach(elementName => {
let element;
if (elementName === "Pause") {
element = this.node.getChildByName(elementName);
} else if (elementName === "popRank") {
element = this.node.getChildByName("rank");
} else if (elementName === "tiaodik" || elementName === "shezhiBtn") {
element = loadNode.getChildByName(elementName);
} else {
element = loadNode.getChildByName("Top").getChildByName(elementName);
}
if (element) {
if (!element.originalRightOffset) {
element.originalRightOffset = designSize.width / 2 - element.x;
}
element.x = designSize.width / 2 - element.originalRightOffset + barWidth / scale;
element.scale = hmScale;
}
});
rightElements2.forEach(elementName => {
let element;
element = loadNode.getChildByName("Top").getChildByName(elementName);
if (element) {
if (!element.originalLeftOffset) {
element.originalLeftOffset = element.x + designSize.width / 2;
}
element.x = -designSize.width / 2 + element.originalLeftOffset - barWidth / scale;
element.scale = hmScale;
}
});
}
}
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();
this.stopPowerTime();
this.startPowerTime();
}
}
}
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) || (typeof tt !== 'undefined' && tt !== null)) {
// 判断设备系统
let systemType = "Android";
try {
//@ts-ignore
let systemInfo = null;
if (cc.sys.platform === cc.sys.WECHAT_GAME)
//@ts-ignore
systemInfo = wx.getSystemInfoSync();
else if (cc.sys.platform === cc.sys.BYTEDANCE_GAME)
//@ts-ignore
systemInfo = tt.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" || order.itemid == "battlepass"
) {
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;
} else if (order.itemid == "battlepass") {
// 通行证订单
this.reissuePaaCheck();
}
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;
this.getcard.zIndex = 999;
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);
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);
}
})
}
//缓存弹窗
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;
cc.fx.GameConfig.GM_INFO.otherUid = "";
}
// 可以在这里处理关卡信息和 UID
}
}
}
onCardReward() {
this.getcard.active = false;
}
setFirstMusic() {
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);
}
//检测当日是否有分享行为,用不用主动获取分享关卡信息
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();
}
}
reissuePaaCheck() {
cc.fx.GameConfig.GM_INFO.passCheckActivate = true;
Utils.getPassCheckInfo((res) => {
if (res.code === 1) {
let passCheckData;
if (typeof res.data.passCheck === 'string') {
passCheckData = JSON.parse(res.data.passCheck);
} else {
passCheckData = res.data.passCheck;
}
if (passCheckData && passCheckData[1]) {
passCheckData[1].activate = true;
} else {
console.error("passCheckData[1] 不存在");
return;
}
if (passCheckData && passCheckData[2]) {
passCheckData[2].activate = true;
} else {
console.error("passCheckData[2] 不存在");
return;
}
console.log("补发通行证", passCheckData)
Utils.setPassCheckInfo((res) => {
}, passCheckData)
}
})
}
popUpPassCheck() {
console.log("弹出通行证", cc.fx.GameConfig.GM_INFO.popPassCheck)
if (cc.fx.GameConfig.GM_INFO.popPassCheck) {
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("CACHE_PASS_CHECK");
// 如果缓存中的日期和当前日期不一致
if (cachedDateStr !== dateStr) {
// 更新缓存
cc.fx.StorageMessage.setStorage("CACHE_PASS_CHECK", dateStr);
this.openPassCheck();
}
}
}
openPassCheck() {
if (!JiaZai.cachedPassCheckPrefab) {
console.error('PassCheck prefab is not loaded yet.')
return;
}
var passCheck = null;
Utils.getPassCheckInfo((data) => {
passCheck = data.data.passCheck;
if (typeof passCheck === 'string') {
try {
passCheck = JSON.parse(passCheck);
console.log("解析后的 passCheck:", passCheck);
console.log("解析后的 progressLevel:", passCheck[2].activate);
} catch (e) {
console.error("JSON 解析失败:", e);
let endTiem = data.data.time + 60 * 24 * 60 * 60 * 1000;
let passCheckData = {
1: {
time: "0",
progress: 0,
progressLevel: 0,
activate: false,
free: [],
passCheck: [],
},
2: {
time: endTiem.toString(),
progress: 1,
progressLevel: 1,
activate: false,
free: [1],
passCheck: [1],
}
}
cc.fx.GameConfig.GM_INFO.getProgress = 1;
cc.fx.GameConfig.GM_INFO.getProgressLevel = 1;
Utils.setPassCheckInfo((result) => {
if (result.code === 1) {
// console.log("GameScene 保存通行证成功");
this.openPassCheck();
} else {
// console.log("GameScene 保存通行证失败", result);
}
}, passCheckData);
return;
}
}
// console.log("passCheck:", passCheck.time, Number(passCheck[2].time), passCheck.time > Number(passCheck[2].time));
if (passCheck.time > Number(passCheck[2].time)) {
this.checkAndSetPlayerPassLevel();
}
if (passCheck) {
if (this.passCheckNode) {
this.passCheckNode = null;
}
if (!this.passCheckNode || !cc.isValid(this.passCheckNode)) {
// 节点不存在或已被销毁,需要重新创建
this.passCheckNode = cc.instantiate(JiaZai.cachedPassCheckPrefab);
this.node.addChild(this.passCheckNode);
this.passCheckNode.getComponent("passCheck").setInfo(passCheck);
const hmScale = cc.fx.GameTool.adaptation();
if (hmScale == 1) return;
this.passCheckNode.scale = hmScale;
}
else {
// 节点存在且有效,直接激活
this.passCheckNode.active = true;
this.passCheckNode.getComponent("passCheck").setInfo(passCheck);
const hmScale = cc.fx.GameTool.adaptation();
if (hmScale == 1) return;
this.passCheckNode.scale = hmScale;
}
} else {
}
})
}
qinglishuju() {
let passCheck = null;
Utils.setPassCheckInfo(() => {
console.log("清空通行证", null);
cc.fx.GameConfig.GM_INFO.playerPassLevel = 0;
cc.fx.StorageMessage.setStorage("ProgressIndex", 0);
}, passCheck)
}
setPassProgress() {
Utils.getPassCheckInfo((res) => {
if (res.code === 1) {
let passCheckData;
if (typeof res.data.passCheck === 'string') {
passCheckData = JSON.parse(res.data.passCheck);
} else {
passCheckData = res.data.passCheck;
}
cc.fx.GameConfig.GM_INFO.getItemType = 2;
if (passCheckData == null || passCheckData == "null" || !passCheckData[2] || !passCheckData[2].time) {
let endTiem = res.data.time + 60 * 24 * 60 * 60 * 1000;
passCheckData = {
1: {
time: "0",
progress: 0,
progressLevel: 0,
activate: false,
free: [],
passCheck: [],
},
2: {
time: endTiem.toString(),
progress: 0,
progressLevel: 1,
activate: false,
free: [1],
passCheck: [1],
}
}
cc.fx.GameConfig.GM_INFO.getProgress = 0;
cc.fx.GameConfig.GM_INFO.getProgressLevel = 1;
} else {
if (passCheckData[2].time < res.data.time) {
// passCheckData[2].time = res.data.time;
passCheckData[1] = JSON.parse(JSON.stringify(passCheckData[2]));
passCheckData[2] = {
time: res.data.time + 60 * 24 * 60 * 60 * 1000,
progress: 1,
progressLevel: 1,
activate: false,
free: [],
passCheck: [],
}
cc.fx.GameConfig.GM_INFO.getProgress = 0;
cc.fx.GameConfig.GM_INFO.getProgressLevel = 1;
}
if (Number(passCheckData[2].progressLevel) > 30) {
console.log("进度已满");
passCheckData[2].progressLevel = 30;
passCheckData[2].progress = 4;
return;
}
}
const passCheckJson = cc.fx.GameConfig.PASS_CHECK;
cc.fx.GameConfig.GM_INFO.getProgress += 1;
const item = passCheckJson[cc.fx.GameConfig.GM_INFO.getProgressLevel - 1];
if (cc.fx.GameConfig.GM_INFO.getProgress < item.token) {
} else if (cc.fx.GameConfig.GM_INFO.getProgress == item.token) {
cc.fx.GameConfig.GM_INFO.popPassCheck = true;
if (passCheckData && Array.isArray(passCheckData[2].free) && Array.isArray(passCheckData[2].passCheck)) {
// 给数组末尾添加激活状态1
if (passCheckData[2].free.length > 0) {
const lastIndex = cc.fx.GameConfig.GM_INFO.getProgressLevel - 1;
passCheckData[2].free[lastIndex] = 1;
} else {
passCheckData[2].free.push(1);
}
// 只有在通行证已激活的情况下才更新passCheck数组
if (passCheckData[2].passCheck.length > 0) {
const lastIndex = cc.fx.GameConfig.GM_INFO.getProgressLevel - 1;
passCheckData[2].passCheck[lastIndex] = 1;
} else {
passCheckData[2].passCheck.push(1);
}
}
}
else {
cc.fx.GameConfig.GM_INFO.getProgressLevel += 1;
cc.fx.GameConfig.GM_INFO.getProgress = 1;
}
if (passCheckData && passCheckData[2]) {
// 确保free和passCheck数组存在
passCheckData[2].progressLevel = cc.fx.GameConfig.GM_INFO.getProgressLevel;
passCheckData[2].progress = cc.fx.GameConfig.GM_INFO.getProgress;
}
// 保存更新后的数据
Utils.setPassCheckInfo((result) => {
if (result.code === 1) {
// console.log("GameScene 保存通行证成功");
} else {
// console.log("GameScene 保存通行证失败", result);
}
}, passCheckData);
console.log("通行证数据", passCheckData);
} else {
// console.log("获取通行证信息失败", res);
}
});
// console.log("进度", cc.fx.GameConfig.GM_INFO.getProgressLevel, cc.fx.GameConfig.GM_INFO.getProgress);
}
checkAndSetPlayerPassLevel() {
const currentLevel = cc.fx.GameConfig.GM_INFO.level;
// 判断是否已经记录过playerPassLevel如果没有并且当前等级大于等于21级则记录
if (currentLevel >= 21) {
cc.fx.GameConfig.GM_INFO.playerPassLevel = currentLevel;
let self = this;
Utils.getPassCheckInfo((data) => {
if (data.code == 1) {
if (data.data.time == null) {
let top = self.node.getChildByName("Load").getChildByName("Top");
top.getChildByName("passBtn").active = false;
} else {
cc.fx.GameConfig.GM_INFO.getItemType = 2;
if (data.data.passCheck == null || data.data.passCheck == "null") {
// let endTiem = data.data.time + 60 * 24 * 60 * 60 * 1000;
let endTiem = data.data.time + 60 * 24 * 60 * 60 * 1000;
let dataInfo = {
1: {
time: "0",
progress: 0,
progressLevel: 0,
activate: false,
free: [],
passCheck: [],
},
2: {
time: endTiem.toString(),
progress: 1,
progressLevel: 1,
activate: false,
free: [1],
passCheck: [1],
}
}
Utils.setPassCheckInfo(() => {
}, dataInfo)
cc.fx.GameConfig.GM_INFO.getProgressLevel = 1;
cc.fx.GameConfig.GM_INFO.getProgress = 1;
} else {
let passCheckLvObj = null;
let parsedData = null;
if (typeof data.data.passCheck === 'string') {
try {
parsedData = JSON.parse(data.data.passCheck);
passCheckLvObj = parsedData[2];
} catch (e) {
console.error("通行证数据解析失败:", e);
}
} else {
passCheckLvObj = data.data.passCheck[2];
}
if (!parsedData || !parsedData[1] || !parsedData[1].time || !parsedData[2] || !parsedData[2].time) {
self.qinglishuju();
return;
}
let serverTime = Number(data.data.time);
let time1 = Number(parsedData[1].time);
let time2 = Number(parsedData[2].time);
// let allExpire = time2 + 30 * 24 * 60 * 60 * 1000;
// let newTime = serverTime + 60 * 24 * 60 * 60 * 1000;
// let allExpire = time2 + 2 * 60 * 1000 + 30 * 1000; // 2 结束后 2分30秒
// let newTime = serverTime + 5 * 60 * 1000; // 当前期的结束时间
// let outTime = time1 + 2 * 60 * 1000 + 30 * 1000; // 1的清理时间
let allExpire = time2 + 60 * 24 * 60 * 60 * 1000; // 2 结束后 2分30秒
let newTime = serverTime + 60 * 24 * 60 * 60 * 1000; // 当前期的结束时间
let outTime = time1 + 60 * 24 * 60 * 60 * 1000; // 1的清理时间
let now = new Date().getTime();
if (serverTime >= allExpire) {
// 清空数据
self.qinglishuju();
return;
} else {
if (serverTime >= time2 && serverTime < allExpire) {
let isGetItem = false;
if (passCheckLvObj.activate) {
for (let i = 0; i < passCheckLvObj.free.length; i++) {
if (passCheckLvObj.free[i] == 1 || passCheckLvObj.passCheck[i] == 1) {
isGetItem = true;
}
}
} else {
for (let i = 0; i < passCheckLvObj.free.length; i++) {
if (passCheckLvObj.free[i] == 1) {
isGetItem = true;
}
}
}
if (isGetItem) {
// 未领完
parsedData[1] = JSON.parse(JSON.stringify(parsedData[2]));
parsedData[2] = {
time: newTime.toString(),
progress: 1,
progressLevel: 1,
activate: false,
free: [1],
passCheck: [1],
}
cc.fx.GameConfig.GM_INFO.getItemType = 1;
cc.fx.GameConfig.GM_INFO.getProgressLevel = 1;
cc.fx.GameConfig.GM_INFO.getProgress = 1;
cc.fx.StorageMessage.setStorage("ProgressIndex", 1);
Utils.setPassCheckInfo(() => { }, parsedData)
return;
} else {
// 清空数据
self.qinglishuju();
return;
}
} else {
// 正常赋值
if (time2 == newTime) {
if (now < outTime) {
let isGetItem = false;
if (parsedData[1].activate) {
for (let i = 0; i < parsedData[1].free.length; i++) {
if (parsedData[1].free[i] == 1 || parsedData[1].passCheck[i] == 1) {
isGetItem = true;
}
}
} else {
for (let i = 0; i < parsedData[1].free.length; i++) {
if (parsedData[1].free[i] == 1) {
isGetItem = true;
}
}
}
if (isGetItem) {
cc.fx.GameConfig.GM_INFO.getItemType = 1;
} else {
cc.fx.GameConfig.GM_INFO.getItemType = 2;
}
} else {
cc.fx.GameConfig.GM_INFO.getItemType = 2;
}
}
}
}
cc.fx.GameConfig.GM_INFO.getProgressLevel = (passCheckLvObj && passCheckLvObj.progressLevel) || 1;
cc.fx.GameConfig.GM_INFO.getProgress = (passCheckLvObj && passCheckLvObj.progress) || 1;
}
}
}
})
} else {
}
}
closePassCheck() {
console.log("关闭过时数据", cc.fx.GameConfig.GM_INFO.getItemType)
this.checkAndSetPlayerPassLevel();
}
//获取入职排行榜
getSRank() {
this.LoadCareer(null);
Utils.getSRank(res => {
let data = JSON.parse(res.data);
let role = data.role;
let sortedArray = [];
sortedArray = Object.entries(role)
//@ts-ignore
.sort((a, b) => b[1] - a[1]) // 按数值从大到小排序
.map((item, index) => ({
rank: index + 1, // 排名
name: item[0], // 省份名称
count: item[1] // 数值
}));
// 排序后的结果
// console.log(sortedArray);
let city = JSON.parse(JSON.stringify(cc.fx.GameConfig.CITY));
let rankData = [];
for (let i = 0; i < sortedArray.length; i++) {
// 检查sortedArray中的省份名称是否存在于原始data.role数据中
if (data && data[sortedArray[i].name] !== undefined) {
// 如果存在则将data中对应的键值对放入rankData
if (data.role && data.role[sortedArray[i].name] !== undefined) {
rankData.push({
rank: sortedArray[i].rank,
name: sortedArray[i].name,
count: sortedArray[i].count,
// 可以添加data2中对应的数据
rankingData: data[sortedArray[i].name]
});
delete city[sortedArray[i].name];
}
}
}
// 循环完成后将CITY中剩下的城市按顺序添加到rankData中
let nextRank = rankData.length + 1; // 获取下一个排名
for (let cityName in city) {
rankData.push({
rank: nextRank++,
name: cityName,
count: 0,
rankingData: []
});
}
if (this.RankNode != null && this.RankNode != undefined) {
this.node.addChild(this.RankNode);
this.RankNode.zIndex = 3;
this.RankNode.getComponent("CareerManager").init(rankData);
} else {
this.LoadCareer(() => {
this.node.addChild(this.RankNode);
this.RankNode.zIndex = 3;
this.RankNode.getComponent("CareerManager").init(rankData);
})
}
console.log(rankData);
});
}
LoadCareer(callback: () => void) {
cc.assetManager.loadBundle('career', (err: Error, bundle: cc.AssetManager.Bundle) => {
if (err) {
cc.error(err.message || err);
return;
}
console.log("入职排行已加载好预制体1");
bundle.load('prefab/rankGame', cc.Prefab, (err: Error, prefab: cc.Prefab) => {
if (err) {
cc.error(err.message || err);
return;
}
console.log("入职排行已加载好预制体2");
this.RankNode = cc.instantiate(prefab);
if (callback)
callback();
});
});
}
update(dt) {
if (this.newbieGift && this.monthlyCardNode) {
if (this.monthlyCardNode.active == true) {
this.monthlyCardNode.active = false;
}
}
}
}