"use strict"; cc._RF.push(module, 'c314b9g0MpKT57KBTaPyCzZ', 'scene.update'); // Scripts/mod/login/scene/scene.update.js "use strict"; /****************************************************************** * * 版本更新检查 * ******************************************************************/ var BridgeWindow = require("bridge.window"); var CFG = require("config"); var FFSDK = require("ff_sdk"); var FFPlugin = require("plugin_help"); var TDefine = require("trace.define"); var TTT = TDefine.TraceType; var STEP = { None: -1, CHECK_NET: 6, CHECK_SDK: 7, CHECK_APP: 0, CHECK_ENVIRON: 1, CHECK_RES: 2, UPDATING_RES: 3, UNZIP: 4, CHECK_END: 5 }; cc.Class({ "extends": BridgeWindow, properties: { labTip: { "default": null, type: cc.Node }, progMain: { "default": null, type: cc.ProgressBar }, progSub: { "default": null, type: cc.ProgressBar } }, // 载入时按主题载入背景 onLoad: function onLoad() { var chnn = nx.bridge.vget("channelName"); var theme = CFG.Themes[chnn] || CFG.Themes["DEF"]; var path = cc.path.join("prefab/login/themes", theme, "bg"); nx.gui.setSpriteFrame(this, "bg", path); }, // 显示 onEnable: function onEnable() { // 非SDK环境 if (!FFSDK.getInstance().isEnableSDK()) { this.doNext(); return; } // 注册 FFPlugin.getInstance().regSdkCallBack("checkUpdate", this.onHotUpdate, this); FFPlugin.getInstance().regSdkCallBack("checkUpdateDone", this.onHotUpdateDone, this); // UI初始化 nx.gui.setString(this.labTip, "", ""); nx.gui.setActive(this.progSub, "", false); this.progMain.progress = 0; nx.gui.setString(this.progMain, "txt", nx.text.getKey("检查更新")); // 检查 this.curStep = STEP.None; FFSDK.getInstance().checkUpdate(); }, // 关闭 onDisable: function onDisable() { // 注销 FFPlugin.getInstance().removeSdkCallBack("checkUpdate", this.onHotUpdate); FFPlugin.getInstance().removeSdkCallBack("checkUpdateDone", this.onHotUpdateDone); }, // 更新通告 onHotUpdate: function onHotUpdate(_params) { var act = this.curStep; switch (_params.action) { case "CheckNet": act = STEP.CHECK_NET; break; case "CheckSDK": act = STEP.CHECK_SDK; break; case "CheckApp": act = STEP.CHECK_APP; break; case "CheckBundle": act = STEP.CHECK_ENVIRON; break; case "CheckHotfix": act = STEP.CHECK_RES; break; case "DownLoading": act = STEP.UPDATING_RES; break; case "Unzip": act = STEP.UNZIP; break; default: break; } if (act != this.curStep) { this.curStep = act; switch (act) { case STEP.CHECK_NET: { nx.gui.setActive(this.progSub, "", false); nx.gui.setString(this.labTip, "", nx.text.getKey("网络检测中")); this.progMain.progress = 0.03; nx.gui.setString(this.progMain, "txt", "3%"); } break; case STEP.CHECK_SDK: { nx.gui.setActive(this.progSub, "", false); nx.gui.setString(this.labTip, "", nx.text.getKey("引擎检测中")); this.progMain.progress = 0.08; nx.gui.setString(this.progMain, "txt", "8%"); } break; case STEP.CHECK_APP: { nx.gui.setActive(this.progSub, "", false); nx.gui.setString(this.labTip, "", nx.text.getKey("版本检测中")); this.progMain.progress = 0.1; nx.gui.setString(this.progMain, "txt", "10%"); } break; case STEP.CHECK_ENVIRON: { nx.gui.setActive(this.progSub, "", false); nx.gui.setString(this.labTip, "", nx.text.getKey("环境检测中")); this.progMain.progress = 0.15; nx.gui.setString(this.progMain, "txt", "15%"); } break; case STEP.CHECK_RES: { nx.gui.setActive(this.progSub, "", false); nx.gui.setString(this.labTip, "", nx.text.getKey("资源检测中")); this.progMain.progress = 0.2; nx.gui.setString(this.progMain, "txt", "20%"); } break; case STEP.UPDATING_RES: { nx.gui.setActive(this.progSub, "", false); var version = _params.version || ""; var tip = nx.text.format("资源%s下载中", version); nx.gui.setString(this.labTip, "", tip); } break; case STEP.UNZIP: { nx.gui.setActive(this.progSub, "", true); nx.gui.setString(this.labTip, "", nx.text.getKey("资源安装中")); } break; default: break; } } // 二级进度更新 if (act == STEP.UPDATING_RES || act == STEP.UNZIP) { var prog = parseInt(_params.progress) || 0; this.progSub.progress = prog * 0.01; nx.gui.setString(this.progSub, "txt", prog + "%"); var ttprog = act == STEP.UPDATING_RES ? Math.floor(20 + 0.6 * prog) : Math.floor(80 + 0.2 * prog); this.progMain.progress = ttprog * 0.01; nx.gui.setString(this.progMain, "txt", ttprog + "%"); } // 埋点 if (nx.mTrace && nx.dt.strNEmpty(_params.action)) { nx.mTrace.trace(TTT.hotupdate, _params.action); } }, // 更新通告 onHotUpdateDone: function onHotUpdateDone(_params) { if (_params === void 0) { _params = {}; } this.curStep = STEP.CHECK_END; this.progMain.progress = 1; nx.gui.setString(this.progMain, "txt", "100%"); nx.gui.setActive(this.progSub, "", false); nx.frame.vset("HotVersion", _params.version || ""); // 需要更新 var suc = _params.success || "0"; if (suc != "0") { nx.gui.setString(this.labTip, "", nx.text.getKey("检测到新版本")); this.doNext(); return; } nx.gui.setString(this.labTip, "", nx.text.getKey("检查结束")); var changed = _params.changeContent || ""; if (changed == 1) { nx.storage.set("FCSkipUpdate", _params.version || ""); this.doRestart(); } else { this.doNext(); } }, // 下一步 doNext: function doNext() { game.launchDone(); }, // 重启 doRestart: function doRestart() { nx.restart(); } }); cc._RF.pop();