cb/assets/Script/GameManager.ts
2025-07-18 19:10:58 +08:00

795 lines
35 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 Utils from "./module/Pay/Utils";
import { MiniGameManager } from "./Sdk/MiniGameManager";
import { MiniGameSdk } from "./Sdk/MiniGameSdk";
const { ccclass, property } = cc._decorator;
@ccclass
export default class GameManager extends cc.Component {
@property(cc.Label)
label: cc.Label = null;
@property
text: string = 'hello';
static _instance: GameManager = null;
@property({ type: [cc.Prefab], tooltip: "方块数组" })
Block_Array: Array<cc.Prefab> = [];
@property({ type: [cc.Prefab], tooltip: "墙壁数组" })
Wall_Prefab: Array<cc.Prefab> = [];
@property({ type: [cc.SpriteAtlas], tooltip: "方块颜色" })
Block_Color: Array<cc.SpriteAtlas> = [];
particleEffects: cc.ParticleAsset[];
// @property({type: [cc.ParticleSystem], tooltip:"粒子数组"})
// particleEffects : Array<cc.ParticleSystem> = [];
load1: boolean = false;
load2: boolean = false;
load3: boolean = false;
load4: boolean = false;
load5: boolean = false;
load6: boolean = false;
scheduleCallback: any;
timeNumber: number;
// LIFE-CYCLE CALLBACKS:
onLoad() {
window.initMgr();
this.timeNumber = 1;
this.startTimeCutDown();
cc.fx.GameConfig.init(true);
cc.fx.GameConfig.GM_INFO.gameState = false;
this.readMusicConfig();
this.load1 = this.load2 = this.load3 = this.load4 = this.load5 = this.load6 = false;
setTimeout(() => {
this.readUserData();
}, 200);
if (GameManager._instance == null) {
GameManager._instance = this;
cc.game.addPersistRootNode(this.node);
}
else {
return;
}
const path = 'prefab/block';
const path2 = 'prefab/wall';
cc.resources.loadDir(path, cc.Prefab, (err, assets: cc.Prefab[]) => {
if (err) {
console.log('动态加载 block 失败:', err);
cc.director.loadScene("LoadScene");
return;
}
// 将加载的 Prefab 赋值给 Block_Array
this.Block_Array = assets;
console.log('方块加载成功,共加载了', this.Block_Array.length, '个方块');
this.setSort();
this.load1 = true;
});
cc.resources.loadDir(path2, cc.Prefab, (err, assets: cc.Prefab[]) => {
if (err) {
console.log('动态加载 wall 失败:', err);
cc.director.loadScene("LoadScene");
return;
}
// 将加载的 Prefab 赋值给 Block_Array
this.Wall_Prefab = assets;
this.load2 = true;
console.log('墙加载成功,共加载了', this.Wall_Prefab.length, '个墙');
this.setWallPrefabSort();
});
// 检测微信小游戏切到后台
if (cc.sys.platform === cc.sys.WECHAT_GAME) {
//@ts-ignore
wx.onHide(() => {
this.onHide();
});
// 检测微信小游戏回到前台
//@ts-ignore
wx.onShow(() => {
this.onShow();
});
}
}
onHide() {
cc.audioEngine.stopMusic();
cc.game.pause();
}
onShow() {
cc.audioEngine.resumeMusic();
cc.game.resume();
}
loadParticleEffects() {
}
setWallPrefabSort() {
const order = ['down', 'downLeft', 'downRight', 'left', 'right', 'up', 'upLeft', 'upRight'];
this.Wall_Prefab.sort((a, b) => {
const indexA = order.indexOf(a.name);
const indexB = order.indexOf(b.name);
if (indexA === -1) return 1;
if (indexB === -1) return -1;
return indexA - indexB;
});
}
setParticleSort() {
const order = ['top', 'bot', 'rig', 'lef'];
this.particleEffects.sort((a, b) => {
const indexA = order.indexOf(a.name.substr(0, 3));
const indexB = order.indexOf(b.name.substr(0, 3));
if (indexA === -1) return 1;
if (indexB === -1) return -1;
return indexA - indexB;
});
}
setSort() {
this.Block_Array.sort((a, b) => {
// 从名称中提取数字部分
const numberA = parseInt(a.name.match(/\d+/)?.[0] || '0', 10);
const numberB = parseInt(b.name.match(/\d+/)?.[0] || '0', 10);
return numberA - numberB;
});
}
start() {
}
startGame() {
console.log("进入场景之前_____________", cc.fx.GameConfig.GM_INFO.first);
console.log(cc.fx.GameConfig.GM_INFO.level);
// 加载 music bundle
cc.assetManager.loadBundle('music', (err, bundle) => {
if (err) {
console.error('加载 music bundle 失败:', err);
// 加载失败时仍尝试进入 HomeScene
cc.director.loadScene("HomeScene");
} else {
console.log('music bundle 加载成功');
cc.assetManager.loadBundle('shop', (err, bundle) => {
if (err) {
console.error('加载 shop 失败:', err);
} else {
console.log('shop加载成功');
// 加载成功后进入 HomeScene
cc.director.loadScene("HomeScene");
}
});
}
});
}
returnHome() {
cc.tween(this.node.getChildByName("Game"))
.to(0.5, { opacity: 100 })
.call(() => {
// 预加载成功后加载场景
cc.director.loadScene("HomeScene", (err) => {
if (err) {
console.error('加载 HomeScene 场景失败:', err);
} else {
cc.director.loadScene("HomeScene");
}
});
})
.start();
cc.tween(this.node.getChildByName("mask"))
.to(0.5, { opacity: 255 })
.start();
// cc.loader.releaseAll();
// 预加载 HomeScene 场景
}
readUserData(retryCount = 0) {
//@ts-ignore
if (typeof wx !== 'undefined' && wx !== null) {
MiniGameSdk.API.shushu_Init();
Utils.getUserInfo((data) => {
console.log("登陆成功_____________", data);
if (data.data._id) {
cc.fx.GameConfig.GM_INFO.uid = data.data._id;
cc.fx.StorageMessage.setStorage("uid", data.data._id);
}
if (data.data.outTradeNo.length > 0) {
console.log("设置补发数据", data.data.outTradeNo);
cc.fx.GameConfig.GM_INFO.allOutTradeNo = [];
cc.fx.GameConfig.GM_INFO.allOutTradeNo = data.data.outTradeNo;
console.log("______________________________有未发放奖励", cc.fx.GameConfig.GM_INFO.allOutTradeNo);
}
this.setUserPower(data);
let levelInfo = cc.fx.StorageMessage.getStorage("level");
//旧的读取数据设置数据方法,以强联网为主
if (levelInfo == undefined || levelInfo == "" || levelInfo == null) {
this.oldReadData(retryCount);
}
//新的读取数据设置方法,以本地为主
else {
this.newReadData();
}
console.log("即将读取体力值");
cc.fx.GameTool.getHealth((data) => {
console.log("体力值完成进入游戏");
this.load5 = true;
});
this.load6 = true;
});
}
else {
this.load3 = true;
this.load4 = true;
this.load5 = true;
this.load6 = true;
cc.fx.GameTool.getHealth(null);
}
// 存储用户数据
}
readMusicConfig() {
let audioInfo = cc.fx.StorageMessage.getStorage("music");
if (audioInfo == undefined || audioInfo == "" || audioInfo == null) {
audioInfo = {
"musicOpen": true, //音乐
"effectOpen": true, //音效
"vibrateOpen": true, //震动
}
cc.fx.StorageMessage.setStorage("music", audioInfo);
}
else {
cc.fx.GameConfig.GM_INFO.musicOpen = audioInfo.musicOpen;
cc.fx.GameConfig.GM_INFO.effectOpen = audioInfo.effectOpen;
cc.fx.GameConfig.GM_INFO.vibrateOpen = audioInfo.vibrateOpen;
}
}
//新用户,有本地缓存读取配置
newReadData() {
console.log("读取新信息2");
let openid = cc.fx.StorageMessage.getStorage("openid");
if (openid == null || openid == "" || openid == undefined) {
console.log("没有openid");
//@ts-ignore
wx.cloud.callFunction({
name: 'userData',
data: {
action: 'read'
},
success: res => {
console.log('读取用户数据成功_____________________', res.result)
if (res.result.code == 404 && res.result.message == "未找到用户数据") {
}
else if (res.result.code == 200) {
if (res.result.data) {
cc.fx.GameConfig.GM_INFO.openid = res.result.openid;
cc.fx.GameConfig.GM_INFO.username = res.result.data.username;
cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar;
const register_time = res.result.data.register_time;
MiniGameSdk.API.shushu_userSet(register_time);
cc.fx.StorageMessage.setStorage("openid", cc.fx.GameConfig.GM_INFO.openid);
}
}
},
fail: err => {
console.error('读取用户数据失败', err)
}
})
//laf云函数
Utils.getUserData((data) => {
})
}
else {
if (openid)
cc.fx.GameConfig.GM_INFO.openid = openid;
}
//等级信息
cc.fx.GameTool.getUserLevel((data) => {
const timestamp = Date.now();
let levelInfo = cc.fx.StorageMessage.getStorage("level");
if (data.result.code == 404 && data.result.message == "未找到关卡数据") {
// console.log("没有等级信息,从用户接口拿到数据");
if (levelInfo.level) {
cc.fx.GameConfig.GM_INFO.level = levelInfo.level;
}
this.load4 = true;
cc.fx.GameTool.setUserLevel((data) => {
});
}
else if (data.result.code == 200) {
// console.log("有等级信息,从关卡接口拿到数据",data.result.data);
//游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储
let temp = data.result.timestamp - levelInfo.timestamp;
console.log("等级时间差:", temp);
if ((data.result.timestamp - levelInfo.timestamp) < 10000) {
if (levelInfo.level) {
console.log("以游戏前端等级为准", data.result.data);
cc.fx.GameConfig.GM_INFO.level = levelInfo.level;
// console.log("等级为:",cc.fx.GameConfig.GM_INFO.level);
cc.fx.GameTool.setUserLevel((data) => {
});
}
}
//服务器端存储时间新于游戏端,以服务器端为主,往前端存储
else {
console.log("以服务器等级为准", data.result.data);
cc.fx.GameConfig.GM_INFO.level = data.result.data;
levelInfo.level = cc.fx.GameConfig.GM_INFO.level;
levelInfo.timestamp = timestamp;
// console.log("1111111存储关卡数据:",cc.fx.GameConfig.GM_INFO.level);
cc.fx.StorageMessage.setStorage("level", levelInfo);
}
this.load4 = true;
}
});
//金币信息
cc.fx.GameTool.getUserCoin((data) => {
const timestamp = Date.now();
let coinInfo = cc.fx.StorageMessage.getStorage("coin");
if (data.result.code == 404 && data.result.message == "未找到金币数据") {
if (coinInfo.coin)
cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin;
console.log("没有金币信息,从用户接口拿到数据", cc.fx.GameConfig.GM_INFO.coin);
this.load3 = true;
cc.fx.GameTool.setUserCoin((data) => {
});
}
else if (data.result.code == 200) {
// console.log("有金币信息,从金币接口拿到数据",data.result.data);
//游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储
let temp = data.result.timestamp - coinInfo.timestamp;
console.log("金币时间差:", temp);
if ((data.result.timestamp - coinInfo.timestamp) < 10000) {
console.log("以前端金幣为准:", coinInfo);
if (coinInfo.coin)
cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin;
else {
cc.fx.GameConfig.GM_INFO.coin = data.result.data;
coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin;
coinInfo.timestamp = timestamp;
console.log("11111111111");
cc.fx.StorageMessage.setStorage("coin", coinInfo);
}
console.log("改变后金币:", cc.fx.GameConfig.GM_INFO.coin);
cc.fx.GameTool.setUserCoin((data) => {
});
}
//服务器端存储时间新于游戏端,以服务器端为主,往前端存储
else {
console.log("以服务器金幣为准:", data.result.data);
cc.fx.GameConfig.GM_INFO.coin = data.result.data;
coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin;
coinInfo.timestamp = timestamp;
console.log("2222222222");
cc.fx.StorageMessage.setStorage("coin", coinInfo);
}
this.load3 = true;
}
});
//道具信息
cc.fx.GameTool.getUserProp((data) => {
const timestamp = Date.now();
let propInfo = cc.fx.StorageMessage.getStorage("prop");
if (data.result.code == 404 && data.result.message == "未找到道具数据") {
console.log("没有道具信息,从用户接口拿到数据", propInfo);
if (propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined) {
console.log("____________________道具数据异常");
cc.fx.GameConfig.GM_INFO.freezeAmount = 3;
cc.fx.GameConfig.GM_INFO.hammerAmount = 3;
cc.fx.GameConfig.GM_INFO.magicAmoun = 3;
let propInfoNew = {
"freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount,
"hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount,
"magicAmount": cc.fx.GameConfig.GM_INFO.magicAmoun,
"timestamp": timestamp
}
console.log("_______________上传道具信息:", propInfoNew);
cc.fx.StorageMessage.setStorage("prop", propInfoNew);
}
else {
console.log("_______________________道具数据正常", propInfo);
// cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze;
// cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer;
// cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand;
cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount;
cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount;
cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount;
}
cc.fx.GameTool.setUserProp(0, 0, (data) => {
});
}
else if (data.result.code == 200) {
console.log("本地时间戳", propInfo.timestamp, "服务器时间戳", data.result.timestamp);
if ((data.result.timestamp - propInfo.timestamp) < 10000) {
console.log("以前端道具为主:", propInfo);
if (propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined) {
console.log("111111道具数据异常", data.result.data);
cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze;
cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer;
cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand;
let propInfoNew = {
"freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount,
"hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount,
"magicAmount": cc.fx.GameConfig.GM_INFO.magicAmount,
"timestamp": timestamp
}
console.log("333333上传道具信息:", propInfoNew);
cc.fx.StorageMessage.setStorage("prop", propInfoNew);
}
else {
console.log("道具数据正常");
cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount;
cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount;
cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount;
cc.fx.GameTool.setUserProp(0, 0, (data) => {
});
}
}
else {
cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze;
cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer;
cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand;
let propInfoNew = {
"freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount,
"hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount,
"magicAmount": cc.fx.GameConfig.GM_INFO.magicAmount,
"timestamp": timestamp
}
console.log("22222222上传道具信息:", propInfoNew, data.result);
cc.fx.StorageMessage.setStorage("prop", propInfoNew);
}
}
});
}
//旧用户,无本地缓存读取配置
oldReadData(retryCount: number) {
console.log("读取旧信息");
const MAX_RETRIES = 15;
const timestamp = Date.now();
// 读取用户数据
//@ts-ignore
wx.cloud.callFunction({
name: 'userData',
data: {
action: 'read'
},
success: res => {
console.log('读取用户数据成功', res.result)
if (res.result.code == 404 && res.result.message == "未找到用户数据") {
if (res.result.openid) {
console.log("用户从未进入过第一次设置openid:");
console.log(res.result.openid);
cc.fx.GameConfig.GM_INFO.openid = res.result.openid
}
else {
console.log("用户此一次进入游戏为正确获取openid");
}
cc.fx.GameConfig.GM_INFO.first = true;
this.load3 = true;
this.load4 = true;
let levelInfo = { "level": 0, "timestamp": timestamp };
cc.fx.StorageMessage.setStorage("level", levelInfo);
let coinInfo = { "coin": 0, "timestamp": timestamp };
console.log("33333333333");
cc.fx.StorageMessage.setStorage("coin", coinInfo);
let propInfo = {
"freezeAmount": 0,
"hammerAmount": 0,
"magicAmount": 0,
"timestamp": timestamp,
}
cc.fx.StorageMessage.setStorage("prop", propInfo);
cc.fx.GameTool.setUserInfo((data) => {
if (data.result.code == 200) {
console.log("上传用户信息成功", data);
//@ts-ignore
wx.cloud.callFunction({
name: 'userData',
data: {
action: 'read'
},
success: res => {
console.log("上传后,读取用户信息,为上报注册时间")
if (res.result.code == 200) {
const time = res.result.data.register_time;
MiniGameSdk.API.shushu_userSet(time);
}
}
})
//laf云函数
Utils.getUserData((data) => {
})
}
});
console.log("服务器也没有金币信息", cc.fx.GameConfig.GM_INFO.coin);
cc.fx.GameTool.setUserCoin(cc.fx.GameConfig.GM_INFO.coin, (data) => {
});
cc.fx.GameTool.setUserLevel((data) => {
});
setTimeout(() => {
cc.fx.GameConfig.GM_INFO.freezeAmount = 3;
cc.fx.GameConfig.GM_INFO.hammerAmount = 3;
cc.fx.GameConfig.GM_INFO.magicAmount = 3;
cc.fx.GameTool.setUserProp(0, 0, (data) => {
if (data.result.code == 200) {
console.log("1111111上传道具信息成功", data);
}
else {
MiniGameSdk.API.showToast("网络异常,正在努力加载");
setTimeout(() => {
this.oldReadData(0);
}, 1000);
}
});
}, 0);
}
else if (res.result.code == 200) {
if (res.result.data) {
cc.fx.GameConfig.GM_INFO.openid = res.result.openid;
cc.fx.GameConfig.GM_INFO.level = res.result.data.level;
cc.fx.GameConfig.GM_INFO.coin = res.result.data.coinAmount;
cc.fx.GameConfig.GM_INFO.freezeAmount = res.result.data.freezeAmount;
cc.fx.GameConfig.GM_INFO.hammerAmount = res.result.data.hammerAmount;
cc.fx.GameConfig.GM_INFO.magicAmount = res.result.data.magicAmount;
cc.fx.GameConfig.GM_INFO.username = res.result.data.username;
cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar;
cc.fx.StorageMessage.setStorage("openid", cc.fx.GameConfig.GM_INFO.openid);
const register_time = res.result.data.register_time;
MiniGameSdk.API.shushu_userSet(register_time);
}
setTimeout(() => {
cc.fx.GameTool.getUserCoin((data) => {
if (data.result.code == 404 && data.result.message == "未找到金币数据") {
let coinInfo = { "coin": 0, "timestamp": timestamp };
cc.fx.GameConfig.GM_INFO.coin = 0;
cc.fx.StorageMessage.setStorage("coin", coinInfo);
console.log("没有金币信息,从用户接口拿到数据", cc.fx.GameConfig.GM_INFO.coin);
cc.fx.GameTool.setUserCoin((data) => {
// console.log("上传",data);
this.load3 = true;
});
}
else if (data.result.code == 200) {
// console.log("有金币信息,从金币接口拿到数据",data.result.data);
cc.fx.GameConfig.GM_INFO.coin = data.result.data;
let coinInfo = { "coin": cc.fx.GameConfig.GM_INFO.coin, "timestamp": timestamp };
console.log("存储金币信息:", cc.fx.GameConfig.GM_INFO.coin);
console.log("4444444444");
cc.fx.StorageMessage.setStorage("coin", coinInfo);
this.load3 = true;
}
})
}, 500);
cc.fx.GameTool.getUserLevel((data) => {
if (data.result.code == 404 && data.result.message == "未找到关卡数据") {
console.log("没有等级信息,从用户接口拿到数据");
let levelInfo = { "level": 0, "timestamp": timestamp };
// console.log("333333存储关卡数据:",levelInfo);
cc.fx.GameConfig.GM_INFO.level = 0;
cc.fx.StorageMessage.setStorage("level", levelInfo);
cc.fx.GameTool.setUserLevel((data) => {
console.log("拿到的数据", data);
this.load4 = true;
});
}
else if (data.result.code == 200) {
console.log("有等级信息,从关卡接口拿到数据", data.result.data);
cc.fx.GameConfig.GM_INFO.level = data.result.data;
let levelInfo = { "level": cc.fx.GameConfig.GM_INFO.level, "timestamp": timestamp };
// console.log("444444存储关卡信息:",levelInfo);
cc.fx.StorageMessage.setStorage("level", levelInfo);
this.load4 = true;
}
})
setTimeout(() => {
cc.fx.GameTool.getUserProp((data) => {
if (data.result.code == 404 && data.result.message == "未找到道具数据") {
console.log("没有道具信息,从用户接口拿到数据");
cc.fx.GameConfig.GM_INFO.freezeAmount = 3;
cc.fx.GameConfig.GM_INFO.hammerAmount = 3;
cc.fx.GameConfig.GM_INFO.magicAmount = 3;
let propInfo = {
"freezeAmount": 3,
"hammerAmount": 3,
"magicAmount": 3,
"timestamp": timestamp,
}
console.log("上传道具信息44444444:", propInfo);
cc.fx.StorageMessage.setStorage("prop", propInfo);
cc.fx.GameTool.setUserProp(0, 0, (data) => {
});
}
else if (data.result.code == 200) {
console.log("有道具信息,从道具接口拿到数据", data.result.data);
cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze || 3;
cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer || 3;
cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand || 3;
let propInfo = {
"freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount,
"hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount,
"magicAmount": cc.fx.GameConfig.GM_INFO.magicAmount,
"timestamp": timestamp,
}
console.log("上传道具信息6666666:", propInfo);
cc.fx.StorageMessage.setStorage("prop", propInfo);
}
})
}, 0);
}
},
fail: err => {
console.error('读取用户数据失败', err)
if (retryCount < MAX_RETRIES) {
console.error(`读取用户数据失败,第 ${retryCount + 1} 次重试,错误信息:`, err);
// 延迟 2 秒后重试
setTimeout(() => {
this.readUserData(retryCount + 1);
}, 2000);
} else {
console.error('读取用户数据失败,达到最大重试次数,退出游戏', err);
// 退出游戏
cc.game.end();
}
}
})
//laf云函数
Utils.getUserData((data) => {
})
}
setUserData() {
cc.fx.GameConfig.GameTool((data) => {
console.log("上传", data);
})
}
startTimeCutDown() {
this.scheduleCallback = function () {
if (this.timeNumber <= 0) {
this.stopTimeCutDown();
}
else {
this.timeNumber -= 1;
}
}.bind(this);
this.schedule(this.scheduleCallback, 1);
}
stopTimeCutDown() {
if (this.scheduleCallback) {
this.unschedule(this.scheduleCallback);
}
}
setUserPower(data) {
let nowTime = Math.floor(Date.now() / 1000);
let powerTime = cc.fx.StorageMessage.getStorage("userPowerTime");
//本地没缓存
if (powerTime == "undifend" || powerTime == null || powerTime == "" || powerTime == 0) {
//本地没缓存,但是服务器有缓存,判断服务器的无限体力时间是否过期
if (data.data.userPowerTime && data.data.userPowerTime != 0) {
powerTime = data.data.userPowerTime;
if (powerTime > nowTime) {
cc.fx.GameConfig.GM_INFO.userPowerTime = powerTime;
cc.fx.StorageMessage.setStorage("userPowerTime", powerTime);
}
else {
cc.fx.GameConfig.GM_INFO.userPowerTime = 0;
cc.fx.StorageMessage.setStorage("userPowerTime", 0);
}
}
//本地没缓存,服务器也没缓存
else {
powerTime = 0;
cc.fx.GameConfig.GM_INFO.userPowerTime = 0;
cc.fx.StorageMessage.setStorage("userPowerTime", 0);
}
}
//本地有缓存
else {
//本地有缓存,且服务器有缓存
if (data.data.userPowerTime && data.data.userPowerTime != 0) {
//服务器缓存大于本地缓存,以服务器缓存为主
if (data.data.userPowerTime > powerTime) {
powerTime = data.data.userPowerTime;
if (powerTime > nowTime) {
cc.fx.GameConfig.GM_INFO.userPowerTime = powerTime;
cc.fx.StorageMessage.setStorage("userPowerTime", powerTime);
}
else {
cc.fx.GameConfig.GM_INFO.userPowerTime = 0;
cc.fx.StorageMessage.setStorage("userPowerTime", 0);
}
}
//服务器缓存小于本地缓存,以本地缓存为主
else {
if (powerTime > nowTime) {
cc.fx.GameConfig.GM_INFO.userPowerTime = powerTime;
cc.fx.StorageMessage.setStorage("userPowerTime", powerTime);
}
else {
cc.fx.GameConfig.GM_INFO.userPowerTime = 0;
cc.fx.StorageMessage.setStorage("userPowerTime", 0);
}
}
}
//本地有缓存,服务器没缓存
else {
if (powerTime > nowTime) {
cc.fx.GameConfig.GM_INFO.userPowerTime = powerTime;
cc.fx.StorageMessage.setStorage("userPowerTime", powerTime);
}
else {
cc.fx.GameConfig.GM_INFO.userPowerTime = 0;
cc.fx.StorageMessage.setStorage("userPowerTime", 0);
}
}
}
}
update(dt) {
//console.log("加载1:", this.load1, "加载2:", this.load2, "加载3:", this.load3, "加载4:", this.load4, "加载5:", this.load5, "加载6:", this.load6, "时间:", this.timeNumber);
if (this.load1 && this.load2 && this.load3 && this.load4 && this.load5 && this.load6 == true && this.timeNumber <= 0) {
console.log("进入游戏_______________");
this.load1 = this.load2 = false;
MiniGameSdk.API.shushu_Login();
MiniGameSdk.API.yinli_Init();
MiniGameSdk.API.yinli_Login();
this.startGame();
}
}
}