Example #1
0
        /// <summary>
        /// 注册事件
        /// </summary>
        /// <param name="id">事件id枚举</param>
        /// <param name="objHashId">对象id标识</param>
        /// <param name="handleFun">对象函数</param>
        /// <returns>注册成功与否</returns>
        public static bool RegisterEvent(HLEventId id, int objHashId, EventHandleFun handleFun)
        {
            bool _ret = true;

            if (id < 0 && id >= HLEventId.MAX_EVENT)
            {
                _ret = false;
                Debug.Log(string.Format(String.Format("EventManager, EventID is Out of Range")));
                return(_ret);
            }
            Dictionary <int, EventHandleFun> _eventHandler;

            if (EventPool.TryGetValue(id, out _eventHandler))
            {
                EventHandleFun _handleFun;
                if (!_eventHandler.TryGetValue(objHashId, out _handleFun))
                {
                    _eventHandler.Add(objHashId, handleFun);
                }
                else
                {
                    _ret = false;
                    Debug.Log(string.Format(String.Format("HLEventManager, Obj {0} Do Not Register Twice in Event {1}", objHashId.ToString(), id.ToString())));
                }
            }
            else
            {
                EventPool[id] = new Dictionary <int, EventHandleFun>();
                EventPool[id].Add(objHashId, handleFun);
            }
            return(_ret);
        }
Example #2
0
        /// <summary>
        /// 发送事件
        /// </summary>
        /// <param name="id">事件id枚举</param>
        /// <param name="args">事件参数</param>
        /// <returns>发送成功与否</returns>
        public static bool SendEvent(HLEventId id, EventArgs args)
        {
            bool _ret = true;

            if (id < 0 || id >= HLEventId.MAX_EVENT)
            {
                _ret = false;
                Debug.Log(string.Format(String.Format("HLEventManager, EventID {0} is Out of Range", id)));
            }
            Dictionary <int, EventHandleFun> _eventHandler;

            if (EventPool.TryGetValue(id, out _eventHandler))
            {
                Dictionary <int, EventHandleFun> .Enumerator _enumerator = _eventHandler.GetEnumerator();
                while (_enumerator.MoveNext())
                {
                    if (BCacheAll)
                    {
                        EventCacheQueue.Enqueue(new KeyValuePair <EventHandleFun, EventArgs>(_enumerator.Current.Value, args));
                    }
                    else
                    {
                        EventHandleFun _handleFun = _enumerator.Current.Value;
                        _handleFun(args);
                    }
                }
                _enumerator.Dispose();
            }
            else
            {
                _ret = false;
                Debug.Log(string.Format("HLEventManager, EventPool Do Not Register Event {0} Register", id));
            }
            return(_ret);
        }
Example #3
0
 public TimerItem(long interval, long delay, long callTime, long timerId, bool loop, EventHandleFun fun, EventArgs args)
 {
     m_interval = interval;
     m_delay    = delay;
     m_callTime = callTime;
     m_timerId  = timerId;
     m_bLoop    = loop;
     m_func     = fun;
     m_args     = args;
     m_status   = TimerStatus.BORNING;
 }
Example #4
0
        public static long StartTimer(long interval, bool loop, EventArgs args, EventHandleFun func, long delay)
        {
            long _callTime = GetCurrentMilliSecond() + interval + delay;
            long _timeId   = ManagerTimerId;

            ++ManagerTimerId;
            TimerItem item = new TimerItem(interval, delay, _callTime, _timeId, loop, func, args);

            AddTimerItem(item);
            return(_timeId);
        }