private static bool deregister(Dictionary <KET, List <KBEventlistener> > events, KET eventType, object obj, KBEventDelegate funcDelegate) { monitor_Enter(events); List <KBEventlistener> lst = null; if (!events.TryGetValue(eventType, out lst)) { monitor_Exit(events); return(false); } for (int i = 0; i < lst.Count; i++) { if (obj == lst[i].obj && lst[i].funcDelegate == funcDelegate) { lst.RemoveAt(i); monitor_Exit(events); return(true); } } monitor_Exit(events); return(false); }
private static bool register(Dictionary <KET, List <KBEventlistener> > events, KET eventType, object obj, KBEventDelegate funcDelegate) { deregister(events, eventType, obj, funcDelegate); List <KBEventlistener> lst = null; KBEventlistener listener = new KBEventlistener(); listener.obj = obj; listener.eventType = eventType; listener.funcDelegate = funcDelegate; if (listener.funcDelegate == null) { Dbg.ERROR_MSG("Event::register: " + obj + "not found method[" + funcDelegate + "]"); return(false); } monitor_Enter(events); if (!events.TryGetValue(eventType, out lst)) { lst = new List <KBEventlistener>(); lst.Add(listener); events.Add(eventType, lst); monitor_Exit(events); return(true); } lst.Add(listener); monitor_Exit(events); return(true); }
public static bool deregisterIn(KET eventType, object obj, KBEventDelegate funcDelegate) { return(deregister(events_in, eventType, obj, funcDelegate)); }
/* * 注册监听由kbe插件抛出的事件。(out = kbe->render) * 通常由渲染表现层来注册, 例如:监听角色血量属性的变化, 如果UI层注册这个事件, * 事件触发后就可以根据事件所附带的当前血量值来改变角色头顶的血条值。 */ public static bool registerOut(KET eventType, object obj, KBEventDelegate funcDelegate) { return(register(events_out, eventType, obj, funcDelegate)); }