let ModuleMgr = { _shieldModuleMap: [], _moduleConfigMap: [], // 功能的父功能编码map ModulesClientConfig: undefined, // 功能编码配置 //* ************* 初始化 开始 ************* *// /** * 初始化 * * @author True * @date 2019-08-12 */ init () { if (CC_EDITOR) { return; } cc.game.on('e_mgr_load_config_done', this.initLocalConfig, this); }, /** * 初始化本地配置 * * @author Ture * @date 2019-08-12 */ initLocalConfig () { if (!this.ModulesClientConfig) { G.MgrUtils.loadConfig(this, 'ModulesClientConfig', (list) => { this.initModuleConfigMap(); }); } }, /** * 初始化功能的父功能Map * */ initModuleConfigMap () { if (this.ModulesClientConfig && this.ModulesClientConfig.length > 0) { this._moduleConfigMap = []; for (let v of Object.values(this.ModulesClientConfig)) { this._moduleConfigMap[v.id] = v; } } }, //* ************* 初始化 结束 ************* *// //* ************* 功能管理器处理逻辑 开始 ************* *// getModuleConfigList () { return this.ModulesClientConfig; }, /** * 设置功能屏蔽Map * * @param {object} value */ setShieldModules (value) { this._shieldModuleMap = []; for (let i = 0; i < value.length; i++) { let id = value[i]; this._shieldModuleMap[id] = true; } }, getShieldModules () { return this._shieldModuleMap; }, /** * 获取该id的功能是否被屏蔽 * * @param {number} fId * @returns {boolean} */ getIsShield (id) { if (!this._shieldModuleMap) { return false; } return this._shieldModuleMap[id]; }, /** * 获取该id的功能是否开启 * * @param {number} id */ getIsOpenById (id) { if (this.getIsShield(id) || !this.getOpOpenStatus(id)) { return false; } let fmid = this.getFMid(id); return this.getFMidIsOpen(fmid); }, // 获取父功能是否开启 getFMidIsOpen (id) { if (!G.FuncUtils.isNumber(id)) { return true; } else { return this.getIsOpenById(id); } }, getOpDefaultValue (id) { let data = this._moduleConfigMap[id]; if (!data) { return true; } return data.defaultValue; }, getOpName (id) { if (!G.FuncUtils.isNumber(id)) { return undefined; } let data = this._moduleConfigMap[id]; if (!data) { return undefined; } return cc.js.formatStr('open%d', id); }, getFMid (id) { let data = this._moduleConfigMap[id]; if (!data) { return undefined; } return data.mId; }, //* ************* 功能管理器处理逻辑 结束 ************* *// _getShieldIdList () { let ret = []; let shieldModules = this.getShieldModules() || {}; for (const k in shieldModules) { if (shieldModules.hasOwnProperty(k)) { const v = shieldModules[k]; if (v) { ret.push(k); } } } ret.sort((a, b) => { return a - b; }); return ret; } }; module.exports = ModuleMgr;