/// <summary> /// 发消息 /// </summary> /// <param name="eventName">消息名称</param> /// <param name="isSendToChild">是否发送到子消息</param> /// <param name="objs">参数</param> public void SendEvent(string eventName, bool isSendToChild, params object[] objs) { lock (mEventHandleList) { if (mEventInfoPackDic.ContainsKey(eventName)) { EventPack eventPack = new EventPack(eventName, isSendToChild, objs); if (mEventHandleList.Count == 0) { mEventHandleList.Add(eventPack); } else { for (int i = 0; i < mEventHandleList.Count; i++) { if (mEventInfoPackDic[eventName].eventPriority == mEventInfoPackDic[mEventHandleList[i].eventName].eventPriority) { mEventHandleList.Insert(i + 1, eventPack); break; } if (mEventInfoPackDic[eventName].eventPriority > mEventInfoPackDic[mEventHandleList[i].eventName].eventPriority) { mEventHandleList.Insert(i, eventPack); break; } } } } else { Log.Debug("消息未注册"); } } }
public static EventPack Create(string _eventName, object _data) { EventPack item = new EventPack(); item.eventName = _eventName; item.data = _data; return(item); }
public virtual EventPack Done(EventPack arg) { if (arg == null) { return(arg); } arg.Target = Done(arg.Target); return(arg); }
public override String Done(EventPack arg) { string str = ""; str += "<input type='button' value='" + Done("Open") + "' " + arg.Before; str += " " + arg.Name + "='"; str += arg.Target + "' "; str += arg.After + "' />"; return(str); }
/// <summary> /// Sends the message. /// </summary> /// <param name="eventName">Event name.</param> /// <param name="eventData">Event data.</param> public static void SendMessage(string eventName, T eventData) { blocked = false; EventID = GetRandID(); if (Instance.mEvenDictionary.ContainsKey(eventName)) { if (Instance.mEvenDictionary [eventName] != null) { if (OnWillSendEvent != null) { OnWillSendEvent.Invoke(EventID, eventName, eventData); } if (!blocked) { Instance.mEvenDictionary [eventName] (eventData); EventHistory.Add(EventPack.Create(eventName, eventData)); } else { Debug.Log("[MessageCenter] send Event was blocked: " + eventName + " > " + eventData.ToString()); } } else { Debug.LogWarning("[MessageCenter] UNNORMAL ERROR"); } } else { Debug.LogWarning("[MessageCenter] NO SUCH EVENT NAME FOUND :" + eventName); } EventInfo <T> key = EventInfo <T> .Create(eventName, eventData); if (Instance.TriggerInfo.ContainsKey(key)) { if (Instance.TriggerInfo [key] != null) { Instance.TriggerInfo [key] (); } else { Debug.LogWarning("[MessageCenter] NO SUCH EVENT NAME FOUND :" + eventName + " eventData"); } } }
void Update() { lock (mEventHandleList) { while (mEventHandleList.Count != 0) { EventPack eventPack = mEventHandleList[0]; mEventHandleList.RemoveAt(0); if (eventPack.isSendToChild) { TriggerEvent(eventPack.eventName, eventPack.objs); } else { TriggerEventOnlySelf(eventPack.eventName, eventPack.objs); } } } }
public virtual String Done(EventPack arg) { return(arg.Target); }