336 lines
8.3 KiB
JavaScript
336 lines
8.3 KiB
JavaScript
|
|
"use strict";
|
||
|
|
cc._RF.push(module, '6ac98UJ8W1KqKWD6zsw9E9A', 'gamestart');
|
||
|
|
// Scripts/gamestart.js
|
||
|
|
|
||
|
|
"use strict";
|
||
|
|
|
||
|
|
// --------------------------------------------------------------------
|
||
|
|
// @author: shiraho@syg.com(必填, 创建模块的人员)
|
||
|
|
// @description:
|
||
|
|
// 主场景的入口
|
||
|
|
// <br/>Create: new Date().toISOString()
|
||
|
|
// --------------------------------------------------------------------
|
||
|
|
|
||
|
|
require("global");
|
||
|
|
require("client");
|
||
|
|
|
||
|
|
// Nx框架接入
|
||
|
|
var CFG = require("config");
|
||
|
|
var BDef = require("bridge.define");
|
||
|
|
var NxEntry = require("nx.entry");
|
||
|
|
var FFTimer = require("timer_help");
|
||
|
|
var FFSDK = require("ff_sdk");
|
||
|
|
var RoleController = require("role_controller");
|
||
|
|
|
||
|
|
// if( !CC_EDITOR && !cc.sys.isBrowser ) {
|
||
|
|
// if( !CC_EDITOR ) {
|
||
|
|
// window.onerror = function( message, source, lineno, colno, error ) {
|
||
|
|
// console.log( "onerror!" );
|
||
|
|
// let txt = message;
|
||
|
|
// if( error ) {
|
||
|
|
// txt = error.message + "\n" + error.stack;
|
||
|
|
// }
|
||
|
|
|
||
|
|
// var url = "http://twsa.qa.fitfun.net:8310/upload_file.php";
|
||
|
|
// var xhr = new XMLHttpRequest();
|
||
|
|
// xhr.open( "post", url );
|
||
|
|
// xhr.setRequestHeader( "Content-Type", "application/json" );
|
||
|
|
// xhr.send( txt );
|
||
|
|
// alert( txt );
|
||
|
|
// };
|
||
|
|
// }
|
||
|
|
|
||
|
|
if (cc.sys.isNative) {
|
||
|
|
window.__errorHandler = function (errorMessage, file, line, message, error) {
|
||
|
|
if (!window.nx || !nx.logger || !nx.bridge) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 上传地址无效
|
||
|
|
var url = nx.bridge.vget("bugURL");
|
||
|
|
if (nx.dt.strEmpty(url)) {
|
||
|
|
console.log("BUG提交失败,地址为空...");
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
console.log("BUG提交中..." + url);
|
||
|
|
nx.logger.bugUpload(url, {
|
||
|
|
errorMessage: errorMessage,
|
||
|
|
file: file || "",
|
||
|
|
line: line || "",
|
||
|
|
message: message || "",
|
||
|
|
error: error || ""
|
||
|
|
});
|
||
|
|
};
|
||
|
|
}
|
||
|
|
cc.Class({
|
||
|
|
"extends": cc.Component,
|
||
|
|
properties: {
|
||
|
|
bg: {
|
||
|
|
"default": null,
|
||
|
|
type: cc.Node
|
||
|
|
},
|
||
|
|
views: {
|
||
|
|
"default": null,
|
||
|
|
type: cc.Node
|
||
|
|
},
|
||
|
|
gfont: {
|
||
|
|
"default": null,
|
||
|
|
type: cc.Font
|
||
|
|
}
|
||
|
|
},
|
||
|
|
onLoad: function onLoad() {
|
||
|
|
console.log("ffengine gameStart.onLoad");
|
||
|
|
|
||
|
|
// 引擎模块载入
|
||
|
|
NxEntry.install( /*this.nodeScene, this.nodeUI*/);
|
||
|
|
window.game = this;
|
||
|
|
this.configs = {};
|
||
|
|
|
||
|
|
// 重启处理
|
||
|
|
this.doRestart();
|
||
|
|
|
||
|
|
// 前后台切换
|
||
|
|
this.inback = false;
|
||
|
|
this.dtback = cc.sys.now();
|
||
|
|
this.isMainScene = true;
|
||
|
|
cc.game.on(cc.game.EVENT_HIDE, this.onGameHide, this);
|
||
|
|
cc.game.on(cc.game.EVENT_SHOW, this.onGameShow, this);
|
||
|
|
|
||
|
|
// 返回按键监听
|
||
|
|
cc.systemEvent.on("keyup", this.onKeyDone, this);
|
||
|
|
|
||
|
|
// 切场景不卸载
|
||
|
|
cc.game.addPersistRootNode(this.node);
|
||
|
|
},
|
||
|
|
// 销毁
|
||
|
|
onDestroy: function onDestroy() {
|
||
|
|
// 前后台切换
|
||
|
|
cc.game.off(cc.game.EVENT_HIDE, this.onGameHide, this);
|
||
|
|
cc.game.off(cc.game.EVENT_SHOW, this.onGameShow, this);
|
||
|
|
|
||
|
|
// 返回按键监听解除
|
||
|
|
cc.systemEvent.off("keyup", this.onKeyDone, this);
|
||
|
|
|
||
|
|
// 引擎卸载
|
||
|
|
NxEntry.uninstall();
|
||
|
|
},
|
||
|
|
start: function start() {
|
||
|
|
// 本地化
|
||
|
|
this.localization();
|
||
|
|
},
|
||
|
|
// 本地化
|
||
|
|
localization: function localization() {
|
||
|
|
var _this = this;
|
||
|
|
nx.gui.setActive(this.bg, "", true);
|
||
|
|
|
||
|
|
// 设置语言标识
|
||
|
|
var key = nx.frame.vget("LocalLanguage");
|
||
|
|
this.setLanguage(key, function (_ret) {
|
||
|
|
_this.fetchOSS();
|
||
|
|
});
|
||
|
|
},
|
||
|
|
// 获取配置
|
||
|
|
fetchOSS: function fetchOSS() {
|
||
|
|
var _this2 = this;
|
||
|
|
nx.bridge.remote.fetch(function (_err) {
|
||
|
|
if (_err) {
|
||
|
|
nx.mbox(nx.fmtError(_err), ['confirm'], function () {
|
||
|
|
nx.restart();
|
||
|
|
});
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 埋点重置
|
||
|
|
if (nx.mTrace) {
|
||
|
|
nx.mTrace.trace(1001, "", "", nx.dt.fnEmpty, true);
|
||
|
|
}
|
||
|
|
|
||
|
|
// 热更
|
||
|
|
_this2.tryHotUpdate();
|
||
|
|
});
|
||
|
|
},
|
||
|
|
// 热更
|
||
|
|
tryHotUpdate: function tryHotUpdate() {
|
||
|
|
if (!FFSDK.getInstance().isEnableSDK()) {
|
||
|
|
this.launchDone();
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
var mark = nx.storage.get("FCSkipUpdate", "");
|
||
|
|
if (mark != "") {
|
||
|
|
nx.frame.vset("HotVersion", mark);
|
||
|
|
nx.storage.set("FCSkipUpdate", "");
|
||
|
|
this.launchDone();
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
nx.bridge.setGS(BDef.GameStage.HotUpdate);
|
||
|
|
},
|
||
|
|
// 启动完毕
|
||
|
|
launchDone: function launchDone() {
|
||
|
|
var _this3 = this;
|
||
|
|
var times = nx.storage.getNumber("FCLauchTimes", 0);
|
||
|
|
if (nx.dt.numPositive(times, false)) {
|
||
|
|
nx.bridge.setGS(BDef.GameStage.Login);
|
||
|
|
} else {
|
||
|
|
nx.bridge.setGS(BDef.GameStage.LaunchAnim);
|
||
|
|
}
|
||
|
|
nx.storage.set("FCLauchTimes", ++times);
|
||
|
|
window.setTimeout(function () {
|
||
|
|
nx.gui.setActive(_this3.bg, "", false);
|
||
|
|
}, 3000);
|
||
|
|
},
|
||
|
|
// 切入登录
|
||
|
|
enterLogin: function enterLogin(_restart) {
|
||
|
|
if (_restart === void 0) {
|
||
|
|
_restart = false;
|
||
|
|
}
|
||
|
|
if (FFSDK.getInstance().isEnableSDK()) {
|
||
|
|
FFSDK.getInstance().logOut();
|
||
|
|
}
|
||
|
|
if (_restart) {
|
||
|
|
nx.restart();
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
nx.assets.uncacheAssets();
|
||
|
|
client.socket.close("relogin");
|
||
|
|
nx.bridge.setGS(BDef.GameStage.Login);
|
||
|
|
},
|
||
|
|
// 帧更新
|
||
|
|
update: function update(dt) {
|
||
|
|
// 消息处理
|
||
|
|
if (client.socket) {
|
||
|
|
client.socket.handleMsg();
|
||
|
|
}
|
||
|
|
|
||
|
|
// SDK
|
||
|
|
FFTimer.getInstance().onUpdate(dt);
|
||
|
|
},
|
||
|
|
// 帧更新
|
||
|
|
lateUpdate: function lateUpdate() {
|
||
|
|
// SDK
|
||
|
|
FFTimer.getInstance().onLateUpdate();
|
||
|
|
},
|
||
|
|
// 设置语种
|
||
|
|
setLanguage: function setLanguage(_key, _cb) {
|
||
|
|
var _this4 = this;
|
||
|
|
nx.bridge.setLang(_key);
|
||
|
|
|
||
|
|
// 重载文本库
|
||
|
|
nx.text.ready(function (_err) {
|
||
|
|
nx.dt.fnInvoke(_cb);
|
||
|
|
});
|
||
|
|
|
||
|
|
// 重载字体
|
||
|
|
var path = cc.path.join("locals", nx.getLocLanguage(), "font");
|
||
|
|
nx.res.loadFont(path, function (_err, _font) {
|
||
|
|
if (!_err) {
|
||
|
|
_this4.gfont = _font;
|
||
|
|
nx.frame.vset("LocalFont", path);
|
||
|
|
}
|
||
|
|
}, cc.Font);
|
||
|
|
},
|
||
|
|
// 重启处理
|
||
|
|
doRestart: function doRestart() {
|
||
|
|
// 缓存清理
|
||
|
|
if (nx && nx.assets) {
|
||
|
|
nx.assets.uncacheAssets(true);
|
||
|
|
}
|
||
|
|
|
||
|
|
// SOCKET断开&&重新初始化一次
|
||
|
|
if (client && client.socket) {
|
||
|
|
client.socket.close("restart");
|
||
|
|
client.socket.init();
|
||
|
|
}
|
||
|
|
|
||
|
|
// 事件监听清空
|
||
|
|
if (gcore && gcore.GlobalEvent) {
|
||
|
|
gcore.GlobalEvent._evt_idx = 0;
|
||
|
|
gcore.GlobalEvent._evt_list = {};
|
||
|
|
}
|
||
|
|
},
|
||
|
|
// 切前台
|
||
|
|
onGameShow: function onGameShow() {
|
||
|
|
// 已经在前台,不重复处理
|
||
|
|
if (!this.inback) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 300秒重启游戏
|
||
|
|
var ms = cc.sys.now() - this.dtback;
|
||
|
|
if (ms > 1000 * 300) {
|
||
|
|
nx.restart();
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 音乐恢复
|
||
|
|
this.inback = false;
|
||
|
|
nx.audio.resumeAll();
|
||
|
|
},
|
||
|
|
// 切后台
|
||
|
|
onGameHide: function onGameHide() {
|
||
|
|
// 已经在后台,不重复处理
|
||
|
|
if (this.inback) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 记录时间
|
||
|
|
this.inback = true;
|
||
|
|
this.dtback = cc.sys.now();
|
||
|
|
|
||
|
|
// 音乐暂停
|
||
|
|
nx.audio.pauseAll();
|
||
|
|
},
|
||
|
|
// 按键捕获
|
||
|
|
onKeyDone: function onKeyDone(_event) {
|
||
|
|
if (cc.macro.KEY.back != _event.keyCode && cc.macro.KEY.escape != _event.keyCode) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 否则提示退出游戏
|
||
|
|
nx.mbox("AskQuitGame", ["no", "yes"], function (_key, _box) {
|
||
|
|
_box.close();
|
||
|
|
if (_key == "yes") {
|
||
|
|
nx.appQuit();
|
||
|
|
}
|
||
|
|
}, "AskQuitGameTag");
|
||
|
|
},
|
||
|
|
runMainScene: function runMainScene() {
|
||
|
|
var _this5 = this;
|
||
|
|
if (this.isMainScene) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
this.isMainScene = true;
|
||
|
|
console.log("首次进入游戏------");
|
||
|
|
// nx.bridge.closePanel("WndBattleScene");
|
||
|
|
|
||
|
|
cc.director.loadScene("main_scene", function () {
|
||
|
|
// 首次进入引导
|
||
|
|
var role = RoleController.getInstance().getRoleVo();
|
||
|
|
if (role && role.lev <= 1 && nx.dt.arrEmpty(nx.bridge.plot.records.ids)) {
|
||
|
|
nx.debug("$GAME:进入首次引导场景...");
|
||
|
|
nx.bridge.createPanel(BDef.StageScene[BDef.GameStage.First]);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 新界面展示
|
||
|
|
nx.bridge.createPanel(BDef.StageScene[BDef.GameStage.Game]);
|
||
|
|
_this5.scheduleOnce(function () {
|
||
|
|
//界面回溯
|
||
|
|
nx.bridge.resetTag2PanelfromBat();
|
||
|
|
}, 0.1);
|
||
|
|
});
|
||
|
|
},
|
||
|
|
runBattleScene: function runBattleScene(_params) {
|
||
|
|
if (!this.isMainScene) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
this.isMainScene = false;
|
||
|
|
console.log("首次进入游戏战斗场景------");
|
||
|
|
// nx.bridge.createPanel("WndBattleScene", _params );
|
||
|
|
|
||
|
|
cc.director.loadScene("battle_scene", function () {
|
||
|
|
nx.bridge.createPanel("WndBattleScene", _params);
|
||
|
|
});
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
cc._RF.pop();
|