/// <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); }
/// <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); }
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; }
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); }