Example #1
0
 /// <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("消息未注册");
         }
     }
 }
Example #2
0
            public static EventPack Create(string _eventName, object _data)
            {
                EventPack item = new EventPack();

                item.eventName = _eventName;
                item.data      = _data;
                return(item);
            }
Example #3
0
 public virtual EventPack Done(EventPack arg)
 {
     if (arg == null)
     {
         return(arg);
     }
     arg.Target = Done(arg.Target);
     return(arg);
 }
Example #4
0
        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);
        }
Example #5
0
        /// <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");
                }
            }
        }
Example #6
0
 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);
             }
         }
     }
 }
Example #7
0
 public virtual String Done(EventPack arg)
 {
     return(arg.Target);
 }