olympus-r-17plugins
Version:
A plugin of Olympus for 17zuoye.
100 lines (98 loc) • 4.51 kB
text/typescript
import Olympus, { core } from 'olympus-r/Olympus';
import EgretBridge from 'olympus-r-egret/EgretBridge';
import DOMBridge from 'olympus-r-dom/DOMBridge';
import { EgretMediatorClass } from 'olympus-r-egret/egret/injector/Injector';
import { commonData } from 'olympus-r/engine/net/RequestData';
import { query } from 'olympus-r/engine/env/Query';
import NetMessage from 'olympus-r/engine/net/NetMessage';
import { environment } from 'olympus-r/engine/env/Environment';
import { wrapHost } from 'olympus-r/utils/URLUtil';
import SceneMessage from 'olympus-r/engine/scene/SceneMessage';
import Mediator from 'olympus-r/engine/mediator/Mediator';
import ResponseData from 'olympus-r/engine/net/ResponseData';
import { assetsManager, JSLoadMode } from 'olympus-r/engine/assets/AssetsManager';
import { environment17, EnvCode } from 'olympus-r-17plugins/env/Environment17';
import { initParams17 } from 'olympus-r-17plugins/env/InitParams17';
import Olympus17Plugin from 'olympus-r-17plugins/Olympus17Plugin';
import NetworkErrorCommand from './command/NetworkErrorCommand';
import GetServerResponseCommand from './command/GetServerResponseCommand';
import Homepage from './module/Homepage/Homepage';
import { EgretPrompt, DOMPrompt } from './component/Prompt';
initParams17.whenReady(() => {
if (window["FastClick"]) {
window["FastClick"].attach(document.body);
}
Olympus.startup({
bridges: [
new DOMBridge({
container: "#rootDOM",
promptClass: DOMPrompt,
maskData: {
loadingAlpha: 0,
},
}),
new EgretBridge({
width: 720,
height: 1280,
pathPrefix: "egret/",
container: "#rootEgret",
backgroundColor: 0xffffff,
scaleMode: egret.StageScaleMode.FIXED_NARROW,
renderMode: 1,
maskData: {
loadingAlpha: 0
},
promptClass: EgretPrompt,
}),
],
firstModule: Homepage,
loadElement: "#loading",
env: initParams17.getParam("server_type"),
hostsDict: {
dev: ["http://www.test.17zuoye.net"],
test: ["https://www.test.17zuoye.net"],
staging: ["https://www.staging.17zuoye.net"],
prod: ["https://www.17zuoye.com"],
},
cdnsDict: {
test: initParams17.getParam("cdn_list") || [initParams17.getParam("img_domain") || "https://cdn-cnc.test.17zuoye.net/"],
staging: initParams17.getParam("cdn_list") || [initParams17.getParam("img_domain") || "https://cdn-cnc.staging.17zuoye.net/"],
prod: initParams17.getParam("cdn_list") || [initParams17.getParam("img_domain") || "https://cdn-cnc.17zuoye.cn/"],
},
plugins: [
// 设置 appName
new Olympus17Plugin("$a-{appName}"),
],
preloads: [
"./assets/Prompt.html",
],
onInited: () => {
// 仅在test和staging环境使用Eruda
if(environment17.envCode === EnvCode.test || environment17.envCode === EnvCode.staging)
{
assetsManager.loadJsFiles([{
url: "http://cdn.jsdelivr.net/npm/eruda",
mode: JSLoadMode.TAG
}], (err?:Error)=>{
const eruda:any = window["eruda"];
eruda && eruda.init();
});
}
// 给消息协议添加 session_key
const session_key: string = initParams17.getParam("session_key");
if (session_key) {
commonData.session_key = session_key;
}
// 篡改Mediator的onGetResponses基类方法,统一判断初始化返回值是否成功
Mediator.prototype.onGetResponses = function(responses:ResponseData[]):boolean {
let success:boolean = true;
responses.forEach(response=>success = success && response["success"]);
return !success;
};
// 注册网络错误命令
core.mapCommand(NetMessage.NET_ERROR, NetworkErrorCommand);
// 注册服务器返回命令
core.mapCommand(NetMessage.NET_RESPONSE, GetServerResponseCommand);
},
});
});