Files
fc/dev/project/library/imports/c3/c314bf60-d0ca-4a4f-9eca-05368fc82cd9.js
2026-05-24 10:21:26 +08:00

223 lines
6.3 KiB
JavaScript

"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();