681 lines
29 KiB
TypeScript
681 lines
29 KiB
TypeScript
// 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 { 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;
|
|
scheduleCallback: any;
|
|
timeNumber: number;
|
|
|
|
|
|
// LIFE-CYCLE CALLBACKS:
|
|
|
|
onLoad () {
|
|
|
|
window.initMgr();
|
|
this.timeNumber = 3;
|
|
this.startTimeCutDown();
|
|
cc.fx.GameConfig.init(true);
|
|
cc.fx.GameConfig.GM_INFO.gameState = false;
|
|
this.readMusicConfig();
|
|
console.log("音乐开关",cc.fx.GameConfig.GM_INFO.musicOpen);
|
|
cc.fx.AudioManager._instance.playMusicGame();
|
|
|
|
this.load1 = this.load2 = this.load3 = this.load4 = this.load5 =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.error('动态加载 Prefab 失败:', err);
|
|
cc.director.loadScene("LoadScene");
|
|
return;
|
|
}
|
|
// 将加载的 Prefab 赋值给 Block_Array
|
|
this.Block_Array = assets;
|
|
this.setSort();
|
|
this.load1 = true;
|
|
});
|
|
|
|
cc.resources.loadDir(path2, cc.Prefab, (err, assets: cc.Prefab[]) => {
|
|
if (err) {
|
|
console.error('动态加载 Prefab 失败:', err);
|
|
cc.director.loadScene("LoadScene");
|
|
return;
|
|
}
|
|
// 将加载的 Prefab 赋值给 Block_Array
|
|
this.Wall_Prefab = assets;
|
|
this.load2 = true;
|
|
this.setWallPrefabSort();
|
|
});
|
|
|
|
// debugger;
|
|
|
|
// setTimeout(() => {
|
|
// cc.director.preloadScene("HomeScene", (err) => {
|
|
// if (err) {
|
|
// console.error('预加载 HomeScene 场景失败:', err);
|
|
// return;
|
|
// }
|
|
// });
|
|
// }, 1000);
|
|
|
|
// 检测微信小游戏切到后台
|
|
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);
|
|
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) {
|
|
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;
|
|
});
|
|
|
|
}
|
|
else{
|
|
this.load3 = true;
|
|
this.load4 = true;
|
|
this.load5 = 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("读取新信息");
|
|
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)
|
|
}
|
|
})
|
|
}
|
|
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("2222222道具数据异常");
|
|
cc.fx.GameConfig.GM_INFO.freezeAmount = 0;
|
|
cc.fx.GameConfig.GM_INFO.hammerAmount = 0;
|
|
cc.fx.GameConfig.GM_INFO.magicAmoun = 0;
|
|
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("1111111上传道具信息:",propInfoNew);
|
|
cc.fx.StorageMessage.setStorage("prop",propInfoNew);
|
|
}
|
|
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;
|
|
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.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){
|
|
cc.fx.GameConfig.GM_INFO.openid = res.result.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);
|
|
}
|
|
}
|
|
})
|
|
}
|
|
});
|
|
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 = 0;
|
|
cc.fx.GameConfig.GM_INFO.hammerAmount = 0;
|
|
cc.fx.GameConfig.GM_INFO.magicAmount = 0;
|
|
cc.fx.GameTool.setUserProp(0,0,(data)=>{
|
|
if(data.result.code == 200){
|
|
console.log("上传道具信息成功",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 = 0;
|
|
cc.fx.GameConfig.GM_INFO.hammerAmount = 0;
|
|
cc.fx.GameConfig.GM_INFO.magicAmount = 0;
|
|
let propInfo = {
|
|
"freezeAmount":0,
|
|
"hammerAmount":0,
|
|
"magicAmount":0,
|
|
"timestamp":timestamp,
|
|
}
|
|
console.log("上传道具信息:",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 || 0;
|
|
cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer || 0;
|
|
cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand || 0;
|
|
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("上传道具信息:",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();
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
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);
|
|
}
|
|
}
|
|
|
|
update (dt) {
|
|
if(this.load1 && this.load2 && this.load3 && this.load4 && this.load5 && this.timeNumber <= 0){
|
|
this.load1 = this.load2 = false;
|
|
MiniGameSdk.API.shushu_Init();
|
|
this.startGame();
|
|
}
|
|
}
|
|
}
|