/// <summary> /// 添加功能插件(数据不在FuncTool存,而是自行维护,也需要funcID) /// </summary> public void addFuncTool(IPlayerFuncTool tool, FuncToolData data) { FuncTool fTool = (FuncTool)tool; fTool.isAdded = true; toRegistFuncTool(tool); fTool.setData(data); tool.afterReadDataSecond(); }
/// <summary> /// 获取物品容器工具 /// </summary> public BaseItemContainerTool getBaseItemContainerTool(int funcID) { FuncTool funcTool = getFuncTool(FuncToolType.ItemContainer, funcID); if (funcTool == null) { funcTool = getFuncTool(FuncToolType.ItemDicContainer, funcID); } return((BaseItemContainerTool)funcTool); }
/// <summary> /// 移除功能插件 /// </summary> public void removeFuncTool(FuncTool tool) { if (!tool.isAdded) { Ctrl.throwError("不可删除非added的FuncTool"); return; } _funcToolList.removeObj(tool); _playerFuncToolList.removeObj((IPlayerFuncTool)tool); IntObjectMap <FuncTool> dic = getFuncToolDic(tool.getType()); dic.remove(tool.getFuncID()); }
/// <summary> /// 从库中读完数据后(做数据的补充解析)(onNewCreate后也会调用一次)(主线程) /// </summary> public override void afterReadData() { _d.funcTools.forEach((k, v) => { if (v != null) { v.forEach((k1, v1) => { FuncTool funcTool = getFuncTool(k, k1); if (funcTool != null) { funcTool.setData(v1); } else { Ctrl.errorLog("找不到功能插件type:", k, "funcID:", k1); } }); } }); }
private void toRegistFuncTool(IPlayerFuncTool tool) { FuncTool fTool = (FuncTool)tool; IntObjectMap <FuncTool> dic = getFuncToolDic(fTool.getType()); int funcID = fTool.getFuncID(); if (ShineSetting.openCheck) { if (dic.contains(funcID)) { Ctrl.throwError("已经存在功能插件:", fTool.getType(), funcID); } } //设置主角 tool.setMe(me); dic.put(funcID, fTool); _funcToolList.add(fTool); _playerFuncToolList.add(tool); fTool.construct(); }