"use strict"; cc._RF.push(module, '6ac98UJ8W1KqKWD6zsw9E9A', 'gamestart'); // Scripts/gamestart.js "use strict"; // -------------------------------------------------------------------- // @author: shiraho@syg.com(必填, 创建模块的人员) // @description: // 主场景的入口 //
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();