觉醒时刻
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

503 lines
19 KiB

import LoadingView from "./View/Logo/LoadingView";
import AppPlatform from "./Util/AppPlatform";
import AppConfig from "./Config/AppConfig";
import { LogUtils } from "./Util/LogUtils";
import BundleMgr from "./Mgr/BundleMgr";
import GameMgr from "./Mgr/GameMgr";
import User from "./User/User";
import EventMgr from "./Event/EventMgr";
import { ryw_Event } from "./Event/EventEnum";
import Common5 from "../Platform/th/Common5";
import CommonDefine from "../Platform/th/CommonDefine";
import GameReport, { ENTERTYPE } from "./Report/ZyZyReport";
import GEMgr from "./Mgr/GEMgr";
const { ccclass, property } = cc._decorator;
/**
* 主页场景
*/
@ccclass
export default class Main extends cc.Component {
public static isBack_custom: boolean = false; //是否从后台回到前台
@property(cc.Node)
private persistRootNode:cc.Node = null
//加载页面
@property({ tooltip: "加载页面预支", type: cc.Node })
private loadingPrefab: cc.Node = null;
//-----------------
private loadView_custom: LoadingView;
//加载分包的进度最终位置
private readonly loadSubpackageTotal_custom: number = 0.8;
//网络加载的最终位置
private readonly loadHttpNetworkTotal_custom: number = 1;
//当前加载的分包下标
private subpackageIndex_custom: number = 0;
//公共的包大小
private subpackageSum_custom: number = 0;
//下一步要到达的进度最大值(0-1)
private needProcessNum_custom: number = 0;
//加载的状态 0未开始 1加载正常进度 2加载慢慢速度 3结束,进度条快速完成 4等待加载场景
private loadingState_custom: number = 0;
//速度
private loadingSpeed_custom: number = 0;
async onLoad() {
// cc.game.setFrameRate(60)
this.wdyjrjsdkInit();
// if(AppPlatform.isOtherGame()){
// let res = await CommonDefine.checkInitFromServer();
// console.log(res)
// if(!res){
// return;
// }
// }
if (AppPlatform.is_TT_GAME_custom()) {
console.log = ()=>{}
console.warn = ()=>{}
console.error = ()=>{}
Common5.ISSHOWGM = false
AppConfig.AppID_custom = AppConfig.TT_APP_ID_custom;
AppConfig.state_custom = AppConfig.TT_state_custom;
AppConfig.gameid_custom = AppConfig.TT_gameid_custom;
AppConfig.ResServer_custom = AppConfig.TT_ResServer_custom;
AppConfig.Versions_custom = AppConfig.TT_Versions_custom;
AppConfig.UseRYSDK_custom = false;
AppConfig.LoopAdLocationID_custom = AppConfig.TT_LoopAdLocationID_custom;
AppConfig.BannerAdLocationID_custom = AppConfig.TT_BannerAdLocationID_custom;
AppConfig.InsertAdLocationID_custom = AppConfig.TT_InsertAdLocationID_custom;
AppConfig.AniAdLocationID_custom = AppConfig.TT_AniAdLocationID_custom;
AppConfig.HistoryLocationID_custom = AppConfig.TT_HistoryLocationID_custom;
AppConfig.MoreGameLocationID_custom = AppConfig.TT_MoreGameLocationID_custom;
} else if (AppPlatform.is_WECHAT_GAME_custom()) {
Common5.ISSHOWGM = false
AppConfig.AppID_custom = AppConfig.WX_APP_ID_custom;
AppConfig.state_custom = AppConfig.WX_state_custom;
AppConfig.gameid_custom = AppConfig.WX_gameid_custom;
AppConfig.ResServer_custom = AppConfig.WX_ResServer_custom;
AppConfig.Versions_custom = AppConfig.WX_Versions_custom;
AppConfig.UseRYSDK_custom = true;
if (AppConfig.closeUseRYSDK_custom) {//强制关闭的情况
AppConfig.UseRYSDK_custom = false;
}
AppConfig.LoopAdLocationID_custom = AppConfig.WX_LoopAdLocationID_custom;
AppConfig.BannerAdLocationID_custom = AppConfig.WX_BannerAdLocationID_custom;
AppConfig.InsertAdLocationID_custom = AppConfig.WX_InsertAdLocationID_custom;
AppConfig.AniAdLocationID_custom = AppConfig.WX_AniAdLocationID_custom;
AppConfig.HistoryLocationID_custom = AppConfig.WX_HistoryLocationID_custom;
AppConfig.MoreGameLocationID_custom = AppConfig.WX_MoreGameLocationID_custom;
} else if (AppPlatform.is_QQ_PLAY_custom()) {
AppConfig.AppID_custom = AppConfig.QQ_APP_ID_custom;
AppConfig.state_custom = AppConfig.QQ_state_custom;
AppConfig.gameid_custom = AppConfig.QQ_gameid_custom;
AppConfig.ResServer_custom = AppConfig.QQ_ResServer_custom;
AppConfig.Versions_custom = AppConfig.QQ_Versions_custom;
AppConfig.UseRYSDK_custom = false;
AppConfig.LoopAdLocationID_custom = AppConfig.QQ_LoopAdLocationID_custom;
AppConfig.BannerAdLocationID_custom = AppConfig.QQ_BannerAdLocationID_custom;
AppConfig.InsertAdLocationID_custom = AppConfig.QQ_InsertAdLocationID_custom;
AppConfig.AniAdLocationID_custom = AppConfig.QQ_AniAdLocationID_custom;
AppConfig.HistoryLocationID_custom = AppConfig.QQ_HistoryLocationID_custom;
AppConfig.MoreGameLocationID_custom = AppConfig.QQ_MoreGameLocationID_custom;
} else if (AppPlatform.is_OPPO_GAME_custom()) {
AppConfig.AppID_custom = AppConfig.OPPO_APP_ID_custom;
AppConfig.state_custom = AppConfig.OPPO_state_custom;
AppConfig.gameid_custom = AppConfig.OPPO_gameid_custom;
AppConfig.ResServer_custom = AppConfig.OPPO_ResServer_custom;
AppConfig.Versions_custom = AppConfig.OPPO_Versions_custom;
AppConfig.UseRYSDK_custom = false;
AppConfig.LoopAdLocationID_custom = AppConfig.OPPO_LoopAdLocationID_custom;
AppConfig.BannerAdLocationID_custom = AppConfig.OPPO_BannerAdLocationID_custom;
AppConfig.InsertAdLocationID_custom = AppConfig.OPPO_InsertAdLocationID_custom;
AppConfig.AniAdLocationID_custom = AppConfig.OPPO_AniAdLocationID_custom;
AppConfig.HistoryLocationID_custom = AppConfig.OPPO_HistoryLocationID_custom;
AppConfig.MoreGameLocationID_custom = AppConfig.OPPO_MoreGameLocationID_custom;
} else if (AppPlatform.is_VIVO_GAME_custom()) {
AppConfig.AppID_custom = AppConfig.VIVO_APP_ID_custom;
AppConfig.state_custom = AppConfig.VIVO_state_custom;
AppConfig.gameid_custom = AppConfig.VIVO_gameid_custom;
AppConfig.ResServer_custom = AppConfig.VIVO_ResServer_custom;
AppConfig.Versions_custom = AppConfig.VIVO_Versions_custom;
AppConfig.UseRYSDK_custom = false;
AppConfig.LoopAdLocationID_custom = AppConfig.VIVO_LoopAdLocationID_custom;
AppConfig.BannerAdLocationID_custom = AppConfig.VIVO_BannerAdLocationID_custom;
AppConfig.InsertAdLocationID_custom = AppConfig.VIVO_InsertAdLocationID_custom;
AppConfig.AniAdLocationID_custom = AppConfig.VIVO_AniAdLocationID_custom;
AppConfig.HistoryLocationID_custom = AppConfig.VIVO_HistoryLocationID_custom;
AppConfig.MoreGameLocationID_custom = AppConfig.VIVO_MoreGameLocationID_custom;
} else if (AppPlatform.is_Android_custom() || AppPlatform.is_Iphone_custom()) {//android
AppConfig.AppID_custom = AppConfig.APK_APP_ID_custom;
AppConfig.state_custom = AppConfig.APK_state_custom;
AppConfig.gameid_custom = AppConfig.APK_gameid_custom;
AppConfig.ResServer_custom = AppConfig.APK_ResServer_custom;
AppConfig.Versions_custom = AppConfig.APK_Versions_custom;
AppConfig.UseRYSDK_custom = false;
} else {//其他开发 用微信的
AppConfig.AppID_custom = AppConfig.TT_APP_ID_custom;
AppConfig.state_custom = AppConfig.TT_state_custom;
AppConfig.gameid_custom = AppConfig.TT_gameid_custom;
AppConfig.ResServer_custom = AppConfig.TT_ResServer_custom;
AppConfig.Versions_custom = AppConfig.TT_Versions_custom;
AppConfig.UseRYSDK_custom = false;//开发模式不支持
AppConfig.LoopAdLocationID_custom = AppConfig.TT_LoopAdLocationID_custom;
AppConfig.BannerAdLocationID_custom = AppConfig.TT_BannerAdLocationID_custom;
AppConfig.InsertAdLocationID_custom = AppConfig.TT_InsertAdLocationID_custom;
AppConfig.AniAdLocationID_custom = AppConfig.TT_AniAdLocationID_custom;
AppConfig.HistoryLocationID_custom = AppConfig.TT_HistoryLocationID_custom;
AppConfig.MoreGameLocationID_custom = AppConfig.TT_MoreGameLocationID_custom;
}
this.loadView_custom = this.loadingPrefab.getComponent(LoadingView);
this.subpackageSum_custom = AppConfig.subResArray_custom.length;
this.loadView_custom.setProcess_custom(0);
// GameReport.EnterReport(ENTERTYPE.TIAOZHUAN, '加载本地json')
AppPlatform.checkUpdate_custom();
Common5.shiJianChuo = new Date().getTime()
console.log('Common5.shiJianChuo==',Common5.shiJianChuo)
Common5.loadConfigLocal_custom(()=>{
this.loadSubpackage_custom();
});
}
start() {
//添加常驻节点
cc.game.addPersistRootNode(this.persistRootNode)
}
/**
* 加载分包
*/
private loadSubpackage_custom() {
var self = this;
//有分包没有加载完成
if (this.subpackageIndex_custom < this.subpackageSum_custom) {
let platform = "";
let subpackageName = AppConfig.subResArray_custom[this.subpackageIndex_custom];
if (AppPlatform.is_TT_GAME_custom()) {
platform = "tt";
} else if (AppPlatform.is_WECHAT_GAME_custom()) {
platform = "wx";
}
else if (AppPlatform.is_OPPO_GAME_custom()) {
platform = "qg";
}
else if (AppPlatform.is_QQ_PLAY_custom()) {
platform = "qq";
}
LogUtils.log_custom("加载分包 " + subpackageName + " platform " + platform);
let proSum = ((this.subpackageIndex_custom + 1) / this.subpackageSum_custom) * self.loadSubpackageTotal_custom;
this.setStartLoadingPerNum_custom(proSum)
BundleMgr.loadBundleByName_custom(subpackageName, handleFM_custom((err, bundle) => {
if (err) {
console.error(err);
} else {
self.subpackageIndex_custom = self.subpackageIndex_custom + 1;
AppPlatform.loadSubpackageFinish_custom(subpackageName);
self.loadSubpackage_custom();
}
let time = new Date().getTime()
console.log('shaoyang_加载完成当前bundle',subpackageName,time- Common5.shiJianChuo)
}, this));
// }
} else {//加载完成了
//this.setStartLoadingPerNum(this.loadSubpackageTotal)
console.log('加载完成+++===全部bundle')
// GameReport.EnterReport(ENTERTYPE.TIAOZHUAN, 'loading加载完毕')
this.onLoadResComplate_custom();//预加载完成
}
}
/**
* 设置下一个加载步骤可以到的位置
* @param preNum
*/
private setStartLoadingPerNum_custom(preNum: number) {
this.setLoadingState_custom(1, preNum);
}
/**
* 设置加载的进度状态
* @param state
*/
private setLoadingState_custom(state: number, preNum: number) {
this.loadingState_custom = state;
this.needProcessNum_custom = preNum;
switch (state) {
case 0:
break;
case 1:
this.loadingSpeed_custom = 1 / 80;
break;
case 2:
this.loadingSpeed_custom = 1 / 200;
break;
case 3://下载完成了
{
let precess = this.loadView_custom.getProcess_custom();
let psum = 1 - precess;
if (psum > 0) {
this.loadingSpeed_custom = psum / 20;
} else {
this.loadingSpeed_custom = 1 / 2;
}
}
break;
default:
break;
}
}
/**
* 假的进度
* @param dt
*/
protected update(dt: number): void {
if (this.loadView_custom) {
let precess = this.loadView_custom.getProcess_custom();
let nextPrecess = precess + this.loadingSpeed_custom;
switch (this.loadingState_custom) {
case 0:
break;
case 1://正常速度
if (nextPrecess >= this.needProcessNum_custom * 0.7) {
//nextPrecess = this.needProcessNum * 0.7;
if (nextPrecess >= this.needProcessNum_custom) {
nextPrecess = this.needProcessNum_custom;
}
//进入慢速度
this.setLoadingState_custom(2, this.needProcessNum_custom);
}
break;
case 2://慢速度
if (nextPrecess >= this.needProcessNum_custom) {
nextPrecess = this.needProcessNum_custom;
}
break;
case 3://急速进度
if (nextPrecess >= 1) {
nextPrecess = 1;
this.loadingState_custom = 4;
}
break;
default:
break;
}
if (precess != nextPrecess) {
this.loadView_custom.setProcess_custom(nextPrecess);
}
}
}
/**
* 设置下载全部完成,可以进游戏了
*/
private setDownloadOver_custom() {
this.initGame_custom();
this.setLoadingState_custom(3, 1);
}
/**
* 登录失败
*/
private Login_fail_custom(res?: any) {
console.log("登陆失败!!!" + res);
EventMgr.emitEvent_custom(ryw_Event.ryw_PlatformLoginState_custom, { state: 1, info: "平台登录失败" })
let data = cc.sys.localStorage.getItem("data" + AppConfig.AppID_custom);
if (data) {
console.log("登录失败+++++++++ 有存档");
User.initiUser_custom(JSON.parse(data));
} else {
console.log("登录失败+++++++++ 无存档");
User.initiUser_custom(null);
}
this.setDownloadOver_custom();
}
/**
* 各个平台登录成功后 来自己服务器登录
* @param code
*/
private go_Login_custom(code: any) {
User.code_custom = code
EventMgr.emitEvent_custom(ryw_Event.ryw_PlatformLoginState_custom, { state: 0, info: "平台登录成功" })
console.log("准备登陆自己的平台")
// if (AppSwitchConfig.getInstance_custom().getAppSwitchData_custom().isNetWorkGame_custom != 1) {
//存本地
let data = cc.sys.localStorage.getItem("data" + AppConfig.AppID_custom);
if (data) {
console.log("登录成功+++++++++ 有存档");
User.initiUser_custom(JSON.parse(data));
} else {
//无数据-重试
data = cc.sys.localStorage.getItem("data" + AppConfig.AppID_custom);
if (data) {
console.log("登录成功+++++++++ 有存档");
User.initiUser_custom(JSON.parse(data));
} else {
data = cc.sys.localStorage.getItem("data" + AppConfig.AppID_custom);
console.log("登录成功+++++++++ 无存档");
User.initiUser_custom(null);
}
}
this.setDownloadOver_custom();
// }
// else {
// //登录公司服务器
// this.login_custom();
// }
}
/**
* 分包等相关资源全部加载完成了
*/
private onLoadResComplate_custom() {
// cc.sys.localStorage.clear()
var self = this;
this.setStartLoadingPerNum_custom(this.loadHttpNetworkTotal_custom);
//预加载用到的场景
AppPlatform.loginPlatform_custom(function (code) {
//Common5.ReportDY("inLevel", '平台登录code-登录游戏');
//GameReport.EnterReport(ENTERTYPE.TIAOZHUAN, '平台登录code')
CommonDefine.loginCode = code
self.go_Login_custom(code)
}, () => {
self.Login_fail_custom();
}, () => {
// console.log("pc登录,数据存本地");
//存本地
let data = cc.sys.localStorage.getItem("data" + AppConfig.AppID_custom);
if (data) {
console.log("分包等相关资源全部加载完成了+++++++++ 有存档");
User.initiUser_custom(JSON.parse(data));
} else {
console.log("分包等相关资源全部加载完成了+++++++++ 无存档");
User.initiUser_custom(null);
}
self.setDownloadOver_custom();
});
if (User.getFirstInNew())
GameMgr.getInstance_custom().preloadScene_custom();
GameReport.setLoadingTime((new Date()).getTime());
GameReport.setStayTime((new Date()).getTime());
//GameReport.init();
}
//初始游戏
public initGame_custom() {
let time = new Date().getTime()
console.log('shaoyang_初始游戏',time- Common5.shiJianChuo)
if (AppPlatform.is_WECHAT_GAME_custom()) {
console.log("小游戏设置转发按钮");
window["wx"].showShareMenu({
withShareTicket: true,
menus:['shareAppMessage','shareTimeline'],
success: () => {
},
fail: () => {
},
complete: () => {
}
});
window["wx"].onShareAppMessage(function () {
return {
title: "失败不是终点,而是逆袭的起点,勇往直前,无所畏惧",
imageUrlId: '34MEvHptTqaWXBeERMZOCQ==',
imageUrl: 'https://mmocgame.qpic.cn/wechatgame/gUGyibricTBrq4SibbbFwNLZ4dX5G4uAcCOkRHgW3KvEzyywMib2uVfqConCdibpFJ4ZS/0'
}
});
// window["wx"].onShow(function () {
// console.log('微信 显示在前台');
// AppPlatform.isBackGameWX = true;
// });
//初始化放到后面
let self = this;
AppPlatform.loginPlatform_custom(function (code) {
//初始 ry sdk
console.log('登陆成功,进行初始化');
GameMgr.getInstance_custom().onLoadToWorldScene_custom();
}, null)
} else {
GameMgr.getInstance_custom().onLoadToWorldScene_custom();
}
// this.reportLaunchOptions_custom();
AppPlatform.initGame_custom();
}
wdyjrjsdkInit(){
// seeg.init({gid:'tt_cnnxj4'})
ZYSDK.ZYSDK.initSdk()
console.log('sdk init success')
if (AppPlatform.is_TT_GAME_custom()){
ZYSDK.ZYSDK.getUserId().then((uid)=>{
GEMgr.GEInit(uid)
})
}
}
}