109 lines
2.4 KiB
JavaScript
109 lines
2.4 KiB
JavaScript
|
|
"use strict";
|
||
|
|
cc._RF.push(module, '2a27e2wV49Np5g2ysRDnevO', 'nx.plugin.manager');
|
||
|
|
// Scripts/nx/plugin/nx.plugin.manager.js
|
||
|
|
|
||
|
|
"use strict";
|
||
|
|
|
||
|
|
/*******************************************************************************
|
||
|
|
*
|
||
|
|
* Nx插件管理器
|
||
|
|
*
|
||
|
|
*
|
||
|
|
*
|
||
|
|
* 2021.12.10
|
||
|
|
******************************************************************************/
|
||
|
|
|
||
|
|
var NxObject = require("nx.object");
|
||
|
|
var PE = require("nx.plugin.event");
|
||
|
|
var PV = require("nx.plugin.view");
|
||
|
|
var PVB = require("nx.plugin.view.binder");
|
||
|
|
var NxPluginManager = cc.Class({
|
||
|
|
"extends": NxObject,
|
||
|
|
name: "NxPluginManager",
|
||
|
|
// 初始化
|
||
|
|
initialize: function initialize(_args) {
|
||
|
|
// USPER
|
||
|
|
if (!this._super(_args)) {
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 注册插件库
|
||
|
|
this.plugins = {
|
||
|
|
"event": PE,
|
||
|
|
// 事件相关
|
||
|
|
"view": PV,
|
||
|
|
// 视图相关
|
||
|
|
"vbinder": PVB // 视图监听
|
||
|
|
};
|
||
|
|
|
||
|
|
// 全局服务开启
|
||
|
|
nx.plugin = this;
|
||
|
|
return true;
|
||
|
|
},
|
||
|
|
// 销毁
|
||
|
|
uninitialize: function uninitialize() {
|
||
|
|
// 全局服务关闭
|
||
|
|
nx.plugin = null;
|
||
|
|
|
||
|
|
// USPER
|
||
|
|
return this._super();
|
||
|
|
},
|
||
|
|
// 添加插件
|
||
|
|
add: function add(_inst, _keys) {
|
||
|
|
// 对象非法
|
||
|
|
if (nx.dt.objEmpty(_inst)) {
|
||
|
|
nx.error("[插件]添加失败,对象非法!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 空插件
|
||
|
|
if (nx.dt.arrEmpty(_keys)) {
|
||
|
|
nx.error("[插件]添加失败,插件无效!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 安装
|
||
|
|
_inst._plugins = _keys;
|
||
|
|
for (var i = 0; i < _keys.length; ++i) {
|
||
|
|
var key = _keys[i];
|
||
|
|
var handle = this.plugins[key];
|
||
|
|
if (nx.dt.objEmpty(handle)) {
|
||
|
|
nx.error("[插件]添加失败,插件无效:", key);
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
handle.install(_inst);
|
||
|
|
}
|
||
|
|
return true;
|
||
|
|
},
|
||
|
|
// 删除插件
|
||
|
|
remove: function remove(_inst) {
|
||
|
|
// 对象非法
|
||
|
|
if (nx.dt.objEmpty(_inst)) {
|
||
|
|
nx.error("[插件]删除失败,对象非法!");
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 空插件
|
||
|
|
if (nx.dt.arrEmpty(_inst._plugins)) {
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 删除
|
||
|
|
for (var i = 0; i < _inst._plugins.length; ++i) {
|
||
|
|
var key = _inst._plugins[i];
|
||
|
|
var handle = this.plugins[key];
|
||
|
|
if (nx.dt.objEmpty(handle)) {
|
||
|
|
nx.error("[插件]删除失败,插件无效:", key);
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
handle.uninstall(_inst);
|
||
|
|
}
|
||
|
|
delete _inst._plugins;
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
// 模块导出
|
||
|
|
module.exports = NxPluginManager;
|
||
|
|
|
||
|
|
cc._RF.pop();
|