Example #1
0
        public static void RemoveListener(EEvent type, GlobalEventHandler listener)
        {
            if (IsTriggingEvent)
            {
                allPendingListeners.Enqueue(new ListenerInfo(false, type, listener));
                return;
            }

            var itype = (int)type;

            if (allListeners.TryGetValue(itype, out var tmplst))
            {
                if (tmplst.Remove(listener))
                {
                    if (tmplst.Count == 0)
                    {
                        allListeners.Remove(itype);
                    }

                    return;
                }
            }

            //Debug.LogError("Try remove a not exist listner " + type);
        }
Example #2
0
 public void SendEvent(EEvent e, params object[] args)
 {
     foreach (XGlobalEventHandler handler in m_AllGlobalHandler[(int)e])
     {
         handler(e, args);
     }
 }
Example #3
0
        public static void RemoveListener(EEvent type, GlobalEventHandler listener)
        {
            bool isTriggingEvent = EventHelper.IsTriggingEvent;

            if (isTriggingEvent)
            {
                EventHelper.allPendingListeners.Enqueue(new EventHelper.ListenerInfo(false, type, listener));
            }
            else
            {
                List <GlobalEventHandler> list;
                bool flag = EventHelper.allListeners.TryGetValue((int)type, out list);
                if (flag)
                {
                    bool flag2 = list.Remove(listener);
                    if (flag2)
                    {
                        bool flag3 = list.Count == 0;
                        if (flag3)
                        {
                            EventHelper.allListeners.Remove((int)type);
                        }
                    }
                }
            }
        }
Example #4
0
 public static bool IsIn(this EEvent ev, params EEvent[] evs)
 {
     if (evs == null)
     {
         throw new ArgumentNullException();
     }
     return(evs.Contains(ev));
 }
 public static void RemoveAllListener(EEvent type)
 {
     if (IsTriggingEvent)
     {
         allNeedRemoveTypes.Enqueue(type);
         return;
     }
     allListeners.Remove((int)type);
 }
Example #6
0
 protected virtual void DefComEventProc(EEvent eEvent)
 {
     switch (eEvent)
     {
     case EEvent.Detroyed:
         NodeGraph.ngLinkManager.RemoveLinkByBegin(this.ID);
         break;
     }
     InfoComEvent(eEvent);
 }
Example #7
0
        //Event
        public override void NodeEventProc(EEvent eEvent)
        {
            switch (eEvent)
            {
            case EEvent.Selected:
                VarManager.Instance.SelectVar(BaseVar.ID);
                break;
            }

            DefNodeEventProc(eEvent);
        }
Example #8
0
 private void InterUnregisterEvent(EEvent evt, Delegate callback)
 {
     if (eventDic.ContainsKey(evt))
     {
         eventDic[evt].Remove(callback);
         if (eventDic[evt].Count == 0)
         {
             eventDic.Remove(evt);
         }
     }
 }
Example #9
0
        public void PostEvent <T>(EEvent evt, T arg)
        {
            List <Delegate> eventList = GetEventList(evt);

            if (eventList != null)
            {
                foreach (Delegate callback in eventList)
                {
                    ((Action <T>)callback)(arg);
                }
            }
        }
Example #10
0
 /// <summary>
 /// 获取所有事件
 /// </summary>
 /// <param name="evt"></param>
 /// <returns></returns>
 private List <Delegate> GetEventList(EEvent evt)
 {
     if (eventDic.ContainsKey(evt))
     {
         List <Delegate> tempList = eventDic[evt];
         if (null != tempList)
         {
             return(tempList);
         }
     }
     return(null);
 }
Example #11
0
        public static void RemoveAllListener(EEvent type)
        {
            bool isTriggingEvent = EventHelper.IsTriggingEvent;

            if (isTriggingEvent)
            {
                EventHelper.allNeedRemoveTypes.Enqueue(type);
            }
            else
            {
                EventHelper.allListeners.Remove((int)type);
            }
        }
        /*
         *  ポインタのイベントハンドラのコルーチンを継続します。
         */
        void ContinuePointerEventLoop(EEvent event_type, PointerEventArgs e)
        {
            if (PointerEventLoop != null)
            {
                //  ポインタのイベントハンドラの実行中の場合

                // イベントの型とイベントをセットします。
                PointerEventType    = event_type;
                CurrentPointerEvent = e;

                // コルーチンを継続します。
                PointerEventLoop.MoveNext();
            }
        }
        public static void Trigger(EEvent type, object param = null)
        {
            var itype = (int)type;

            if (allListeners.TryGetValue(itype, out var tmplst))
            {
                IsTriggingEvent = true;
                foreach (var listener in tmplst)
                {
                    listener?.Invoke(param);
                }
            }
            IsTriggingEvent = false;
        }
Example #14
0
        public static void Trigger(EEvent type, object param = null)
        {
            bool isTriggingEvent = EventHelper.IsTriggingEvent;

            if (isTriggingEvent)
            {
                EventHelper.allPendingMsgs.Enqueue(new EventHelper.MsgInfo(type, param));
            }
            else
            {
                List <GlobalEventHandler> list;
                bool flag = EventHelper.allListeners.TryGetValue((int)type, out list);
                if (flag)
                {
                    EventHelper.IsTriggingEvent = true;
                    foreach (GlobalEventHandler globalEventHandler in list.ToArray())
                    {
                        if (globalEventHandler != null)
                        {
                            globalEventHandler(param);
                        }
                    }
                }
                EventHelper.IsTriggingEvent = false;
                while (EventHelper.allPendingListeners.Count > 0)
                {
                    EventHelper.ListenerInfo listenerInfo = EventHelper.allPendingListeners.Dequeue();
                    bool isRegister = listenerInfo.isRegister;
                    if (isRegister)
                    {
                        EventHelper.AddListener(listenerInfo.type, listenerInfo.param);
                    }
                    else
                    {
                        EventHelper.RemoveListener(listenerInfo.type, listenerInfo.param);
                    }
                }
                while (EventHelper.allNeedRemoveTypes.Count > 0)
                {
                    EEvent type2 = EventHelper.allNeedRemoveTypes.Dequeue();
                    EventHelper.RemoveAllListener(type2);
                }
                while (EventHelper.allPendingMsgs.Count > 0)
                {
                    EventHelper.MsgInfo msgInfo = EventHelper.allPendingMsgs.Dequeue();
                    EventHelper.Trigger(msgInfo.type, msgInfo.param);
                }
            }
        }
Example #15
0
        protected virtual void DefNodeEventProc(EEvent eEvent)
        {
            switch (eEvent)
            {
            case EEvent.LClicked:
            case EEvent.RClicked:
                InfoComEvent(eEvent);
                break;

            case EEvent.Detroyed:
                InfoComEvent(eEvent);
                OnNodeDetroyed();
                break;
            }
        }
Example #16
0
 private void InterRegisterEvent(EEvent evt, Delegate callback)
 {
     if (eventDic.ContainsKey(evt))
     {
         if (eventDic[evt].IndexOf(callback) < 0)
         {
             eventDic[evt].Add(callback);
         }
     }
     else
     {
         eventDic.Add(evt, new List <Delegate>()
         {
             callback
         });
     }
 }
Example #17
0
        public static void Trigger(EEvent type, object param = null)
        {
            if (IsTriggingEvent)
            {
                allPendingMsgs.Enqueue(new MsgInfo(type, param));
                return;
            }

            var itype = (int)type;

            if (allListeners.TryGetValue(itype, out var tmplst))
            {
                IsTriggingEvent = true;
                foreach (var listener in tmplst.ToArray())   //TODO 替换成其他更好的方式 避免gc
                {
                    listener?.Invoke(param);
                }
            }

            IsTriggingEvent = false;
            while (allPendingListeners.Count > 0)
            {
                var msgInfo = allPendingListeners.Dequeue();
                if (msgInfo.isRegister)
                {
                    AddListener(msgInfo.type, msgInfo.param);
                }
                else
                {
                    RemoveListener(msgInfo.type, msgInfo.param);
                }
            }

            while (allNeedRemoveTypes.Count > 0)
            {
                var rmType = allNeedRemoveTypes.Dequeue();
                RemoveAllListener(rmType);
            }

            while (allPendingMsgs.Count > 0)
            {
                var msgInfo = allPendingMsgs.Dequeue();
                Trigger(msgInfo.type, msgInfo.param);
            }
        }
Example #18
0
        public void PostEvent <T1, T2, T3, T4>(EEvent evt, T1 arg1, T2 arg2, T3 arg3, T4 arg4)
        {
            List <Delegate> eventList = GetEventList(evt);

            if (eventList != null)
            {
                foreach (Delegate callback in eventList)
                {
                    try
                    {
                        ((Action <T1, T2, T3, T4>)callback)(arg1, arg2, arg3, arg4);
                    }
                    catch (Exception e)
                    {
                        Logger.Error(e.Message);
                    }
                }
            }
        }
Example #19
0
        public void PostEvent(EEvent evt)
        {
            List <Delegate> eventList = GetEventList(evt);

            if (eventList != null)
            {
                foreach (Delegate callback in eventList)
                {
                    try
                    {
                        ((Action)callback)();
                    }
                    catch (Exception e)
                    {
                        Debug.LogError(e.Message);
                    }
                }
            }
        }
Example #20
0
        public void PostEvent <T1, T2>(EEvent evt, T1 arg1, T2 arg2)
        {
            List <Delegate> eventList = GetEventList(evt);

            if (eventList != null)
            {
                foreach (Delegate callback in eventList)
                {
                    try
                    {
                        ((Action <T1, T2>)callback)(arg1, arg2);
                    }
                    catch (Exception e)
                    {
                        Debug.LogError(e.Message);
                    }
                }
            }
        }
Example #21
0
        public void PostEvent <T>(EEvent evt, T arg)
        {
            List <Delegate> eventList = GetEventList(evt);

            if (eventList != null)
            {
                foreach (Delegate callback in eventList)
                {
                    try
                    {
                        ((Action <T>)callback)(arg);
                    }
                    catch (Exception e)
                    {
                        Debug.LogError(e.Message + ", method name : " + callback.Method);
                    }
                }
            }
        }
Example #22
0
        public static void AddListener(EEvent type, GlobalEventHandler listener)
        {
            if (IsTriggingEvent)
            {
                allPendingListeners.Enqueue(new ListenerInfo(true, type, listener));
                return;
            }

            var itype = (int)type;

            if (allListeners.TryGetValue(itype, out var tmplst))
            {
                tmplst.Add(listener);
            }
            else
            {
                var lst = new List <GlobalEventHandler>();
                lst.Add(listener);
                allListeners.Add(itype, lst);
            }
        }
        public static void AddListener(EEvent type, GlobalEventHandler listener)
        {
#if _DEBUG_EVENT_TRIGGER
            if (IsTriggingEvent)
            {
                Debug.LogError("Error!!! can not modify allListeners when was Trigger Event");
            }
#endif

            var itype = (int)type;
            if (allListeners.TryGetValue(itype, out var tmplst))
            {
                tmplst.Add(listener);
            }
            else
            {
                var lst = new List <GlobalEventHandler>();
                lst.Add(listener);
                allListeners.Add(itype, lst);
            }
        }
Example #24
0
        public static string ToMyStringFull(this EEvent ev)
        {
            switch (ev)
            {
            case EEvent.error: return("kļūda");

            case EEvent.nenoteikts: return("?");

            case EEvent.pienuzsk: return("pieņemts uzskaitē");

            case EEvent.iegeks: return("iegāde");

            case EEvent.ieg: return("iegāde");

            case EEvent.izv: return("izveide");

            case EEvent.eks: return("nodots ekspluatācijā");

            case EEvent.vieta: return("pārvietots");

            case EEvent.parvert: return("pārvērtēšana");

            case EEvent.rekat: return("kategorijas maiņa");

            case EEvent.kapit: return("kapitālremonts");

            case EEvent.nelieto: return("pārtrauc lietošanu");

            case EEvent.lieto: return("atsāk lietošanau");

            case EEvent.likvid: return("likvidēts");

            case EEvent.noliet: return("nolietojums");

            case EEvent.apr: return("aprēķins");

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Example #25
0
        public static string ToMyString(this EEvent ev)
        {
            switch (ev)
            {
            case EEvent.error: return("kļūda");

            case EEvent.nenoteikts: return("nenoteikts");

            case EEvent.pienuzsk: return("pieņ.uzsk");

            case EEvent.iegeks: return("iegeks");

            case EEvent.ieg: return("ieg");

            case EEvent.izv: return("izv");

            case EEvent.eks: return("eks");

            case EEvent.vieta: return("vieta");

            case EEvent.parvert: return("parvert");

            case EEvent.rekat: return("rekat");

            case EEvent.kapit: return("kapit");

            case EEvent.nelieto: return("nelieto");

            case EEvent.lieto: return("lieto");

            case EEvent.likvid: return("likvid");

            case EEvent.noliet: return("noliet");

            case EEvent.apr: return("apr");

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
        public static void RemoveListener(EEvent type, GlobalEventHandler listener)
        {
#if _DEBUG_EVENT_TRIGGER
            if (IsTriggingEvent)
            {
                Debug.LogError("Error!!! can not modify allListeners when was Trigger Event");
            }
#endif
            var itype = (int)type;
            if (allListeners.TryGetValue(itype, out var tmplst))
            {
                if (tmplst.Remove(listener))
                {
                    if (tmplst.Count == 0)
                    {
                        allListeners.Remove(itype);
                    }
                    return;
                }
            }
            Debug.LogError("Try remove a not exist listner " + type);
        }
Example #27
0
        //Event
        public override void NodeEventProc(EEvent eEvent)
        {
            System.DateTime timeNow = System.DateTime.Now;
            System.TimeSpan span    = timeNow - m_PrevSelectTime;
            m_PrevSelectTime = System.DateTime.Now;

            switch (eEvent)
            {
            case EEvent.Selected:
                if (span.TotalMilliseconds > 200)
                {
                    Logger.Info("Select");
                    VarManager.Instance.SelectVar(BaseVar.ID);
                }
                break;

            case EEvent.LClicked:
                VarManager.Instance.SelectVar(BaseVar.ID);
                break;
            }

            DefNodeEventProc(eEvent);
        }
Example #28
0
        public static void AddListener(EEvent type, GlobalEventHandler listener)
        {
            bool isTriggingEvent = EventHelper.IsTriggingEvent;

            if (isTriggingEvent)
            {
                EventHelper.allPendingListeners.Enqueue(new EventHelper.ListenerInfo(true, type, listener));
            }
            else
            {
                List <GlobalEventHandler> list;
                bool flag = EventHelper.allListeners.TryGetValue((int)type, out list);
                if (flag)
                {
                    list.Add(listener);
                }
                else
                {
                    List <GlobalEventHandler> list2 = new List <GlobalEventHandler>();
                    list2.Add(listener);
                    EventHelper.allListeners.Add((int)type, list2);
                }
            }
        }
Example #29
0
        public void UnregisterEvent(EEvent evt, Action callback)
        {
            Delegate tempDelegate = callback;

            InterUnregisterEvent(evt, tempDelegate);
        }
Example #30
0
 public void RegisterEvent <T1, T2, T3, T4>(EEvent evt, Action <T1, T2, T3, T4> callback)
 {
     InterRegisterEvent(evt, callback);
 }
Example #31
0
 public void ProcessEvent(EEvent _event)
 {
     m_Event = _event;
     ProcessStateMachine();
 }
Example #32
0
 public CStateTransition(EState _state, EEvent _event, StateFunction _function)
 {
     m_State = _state; m_Event = _event; m_Function = _function;
 }