private void InitPreListenEventsForModule(BusinessModule module) { if (m_mapPreListenEvents.ContainsKey(module.Name)) { EventTable tblEvent = m_mapPreListenEvents[module.Name]; m_mapPreListenEvents.Remove(module.Name); module.setEventTable(tblEvent); } }
public void ReleaseModule(BusinessModule module) { if (module == null) { return; } if (m_mapModules.ContainsKey(module.Name)) { m_mapModules.Remove(module.Name); module.Release(); } }
private void InitCacheMessageForModule(BusinessModule module) { if (m_mapCacheMessage.ContainsKey(module.Name)) { List <MessageObject> list = m_mapCacheMessage[module.Name]; if (list == null || list.Count == 0) { return; } foreach (MessageObject msgObj in list) { module.HandleMessage(msgObj.msg, msgObj.args); } } }
private BusinessModule CreateModuleInstance(string name) { BusinessModule module = null; Type type = Type.GetType(m_domain + "." + name); if (type != null) { module = Activator.CreateInstance(type) as BusinessModule; } else { module = new LuaModule(name); } return(module); }
//================================================================================= 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 void SendMessage(string target, string msg, params object[] args) { BusinessModule module = GetModule(target); if (module != null) { module.HandleMessage(msg, args); } else { MessageObject msgObj = new MessageObject(); msgObj.target = target; msgObj.msg = msg; msgObj.args = args; GetCacheMessageList(target).Add(msgObj); } }
public BusinessModule CreateModule(string name, object args = null) { if (m_mapModules.ContainsKey(name)) { return(m_mapModules[name]); } BusinessModule module = CreateModuleInstance(name); m_mapModules.Add(name, module); // 处理预监听事件 InitPreListenEventsForModule(module); module.Create(args); // 处理缓存的消息 InitCacheMessageForModule(module); return(module); }