Files
fc/dev/project/library/imports/2a/2a27edb0-578f-4da7-9836-cac4439debce.js
2026-05-24 10:21:26 +08:00

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