public BusinessModule CreateModule(string name, object args = null) { if (m_mapModules.ContainsKey(name)) { return(null); } BusinessModule module = null; Type type = Type.GetType(m_domain + "." + name); if (type != null) { Debug.Log(name + " has created"); module = Activator.CreateInstance(type) as BusinessModule; } else { module = new LuaModule(name); } m_mapModules.Add(name, module); //处理预监听事件 if (m_mapPreListenEvents.ContainsKey(name)) { EventTable tblEvent = m_mapPreListenEvents[name]; m_mapPreListenEvents.Remove(name); module.SetEventTable(tblEvent); } module.Create(args); //处理缓存的消息 if (m_mapCacheMessage.ContainsKey(name)) { List <MessageObject> list = m_mapCacheMessage[name]; for (int i = 0; i < list.Count; i++) { MessageObject msgobj = list[i]; module.HandleMessage(msgobj.msg, msgobj.args); } m_mapCacheMessage.Remove(name); } return(module); }
public void ReleaseModule(BusinessModule module) { if (module != null) { if (m_mapModule.ContainsKey(module.Name)) { m_mapModule.Remove(module.Name); module.Release(); } else { } } }
//====================================================== public ModuleEvent Event(string target, string type) { ModuleEvent evt = null; BusinessModule module = GetModule(target); if (module != null) { evt = module.Event(type); } else { EventTable table = GetPreListEventTable(target); evt = table.GetEvent(type); } return(evt); }
/// <summary> /// 某个模块中的某个事件 /// </summary> /// <param name="target">目标模块</param> /// <param name="type">目标事件</param> /// <returns></returns> public ModuleEvent Event(string target, string type) { ModuleEvent evt = null; BusinessModule module = GetModule(target); if (module != null)//如果模块已经呗加载就返回事件 { evt = module.Event(type); } else//没有被加载就在预监听表中创建或返回一个 { EventTable table = GetPreListenEventTable(target); evt = table.GetEvent(type); } return(evt); }
//========== public ModuleEvent Event(string target, string type) { ModuleEvent moduleEvent = null; BusinessModule module = GetModule(target); if (module != null) { moduleEvent = module.Event(type); } else { EventManager eventManager = GetPreListenEvents(target); moduleEvent = eventManager.GetEvent(type); } return(moduleEvent); }
/// <summary> /// 向指定模块发送消息 /// </summary> /// <param name="target">发送到目标模块的名</param> /// <param name="msg">消息名</param> /// <param name="args">消息参数</param> public void SendMessage(string target, string msg, params object[] args) { BusinessModule module = GetModule(target); if (module != null)//如果模块已经加载了就发送消息 { module.HandleMessage(msg, args); } else//模块没有加载就保存到缓存一下等待加载的时候再发送 { List <MessageObject> list = GetCacheMessageList(target); MessageObject msgobj = new MessageObject(); msgobj.target = target; msgobj.msg = msg; msgobj.args = args; list.Add(msgobj); } }
public void SendMessage(string target, string msg, params object[] args) { BusinessModule module = GetModule(target); if (module != null) { module.HandleMsg(msg, args); } else { List <MessageObject> msgList = GetCachedMsgList(target); MessageObject msgObj = new MessageObject(); msgObj.target = target; msgObj.msg = msg; msgObj.args = args; msgList.Add(msgObj); } }
public BusinessModule CreateModule(string name, object args = null) { if (moduleMaps.ContainsKey(name)) { return(null); } BusinessModule module = null; Type type = Type.GetType(m_domain + "." + name); if (type != null) { module = Activator.CreateInstance(type) as BusinessModule; } else { module = new LuaModule(name); } moduleMaps.Add(name, module); //handle pre listened events if (modulePreListenEvents.ContainsKey(name)) { EventManager eventManager = modulePreListenEvents[name]; modulePreListenEvents.Remove(name); module.SetEventManager(eventManager); } module.Create(args); //handle cached message if (cachedMessages.ContainsKey(name)) { List <MessageObject> msgList = cachedMessages[name]; foreach (MessageObject msgObj in msgList) { module.HandleMsg(msgObj.msg, msgObj.args); } cachedMessages.Remove(name); } return(module); }
public void ReleaseModule(BusinessModule module) { if (module != null) { if (m_mapModule.ContainsKey(module.Name)) { this.Log("ReleaseModule() name = " + module.Name); m_mapModule.Remove(module.Name); module.Release(); } else { this.LogError("ReleaseModule() 模块不是由ModuleManager创建的! name = " + module.Name); } } else { this.LogError("ReleaseModule() module = null!"); } }
/// <summary> /// 创建模块 /// </summary> /// <param name="name">模块类名</param> /// <param name="args">参数可为空</param> /// <returns></returns> public BusinessModule CreateModule(string name, object args = null) { if (m_mapModule.ContainsKey(name))//存在就不能重复创建 { return(null); } BusinessModule module = null; Type type = Type.GetType(m_domain + "." + name); //通过名字反射获得这个类型 if (type != null) //类型存在 { module = Activator.CreateInstance(type) as BusinessModule; //创建这个实例 } else { module = new LuaModule(name); //不存在可能是lua模块 } m_mapModule.Add(name, module); //添加进管理器 //处理预监听的事件 if (m_mapPreListenEvents.ContainsKey(name)) { EventTable tblEvent = m_mapPreListenEvents[name]; m_mapPreListenEvents.Remove(name); //取出这个预监听事件 module.SetEventTable(tblEvent); //设置给这个模块 } module.Create(args); //处理缓存的消息 if (m_mapCacheMessage.ContainsKey(name)) { List <MessageObject> list = m_mapCacheMessage[name]; for (int i = 0; i < list.Count; i++) { MessageObject msgobj = list[i]; module.HandleMessage(msgobj.msg, msgobj.args); //发送这个模块中预缓存所有消息 } m_mapCacheMessage.Remove(name); //移除这个模块的消息 } return(module); }