| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine.Events;
- namespace ProjectBase.Event
- {
- public delegate void EventHandler(BaseEventData eventData);
- public class EventCenter : BaseManager<EventCenter>
- {
- public const int Infinity = 999999;
- private Dictionary<string, EventHandlerItem> eventsDic = new Dictionary<string, EventHandlerItem>();
- /// <summary>
- /// 添加事件
- /// </summary>
- /// <param name="key"></param>
- /// <param name="handler"></param>
- /// <param name="time"></param>
- /// <param name="dic"></param>
- public void RegisterEvent(string key, EventHandler handler, int time = Infinity, Dictionary<string, EventHandlerItem> dic = null)
- {
- Dictionary<string, EventHandlerItem> refDic = dic == null ? eventsDic : dic;
- EventHandlerItem eventHandlerItem = null;
- if (eventsDic.TryGetValue(key, out eventHandlerItem))
- {
- eventHandlerItem.AddEventHandler(handler, time);
- }
- else
- {
- eventsDic.Add(key, new EventHandlerItem(key, handler, time));
- }
- }
- /// <summary>
- /// 移除事件
- /// </summary>
- /// <param name="key"></param>
- /// <param name="handler"></param>
- /// <param name="dic"></param>
- public void UnregisterEvent(string key, EventHandler handler,
- Dictionary<string, EventHandlerItem> dic = null)
- {
- Dictionary<string, EventHandlerItem> refDic = dic == null ? eventsDic : dic;
- EventHandlerItem eventHandlerItem = null;
- if (eventsDic.TryGetValue(key, out eventHandlerItem))
- {
- eventHandlerItem.RemoveEventHandler(handler);
- }
- }
- /// <summary>
- /// 触发事件
- /// </summary>
- /// <param name="key"></param>
- /// <param name="dic"></param>
- public void RunEvent(string key, BaseEventData eventData,
- Dictionary<string, EventHandlerItem> dic = null)
- {
- Dictionary<string, EventHandlerItem> refDic = dic == null ? eventsDic : dic;
- EventHandlerItem eventHandlerItem = null;
- if (eventsDic.TryGetValue(key, out eventHandlerItem))
- {
- eventHandlerItem.EventHandlerTrigger(eventData);
- }
- }
- /// <summary>
- /// 删除
- /// </summary>
- /// <param name="key"></param>
- /// <param name="dic"></param>
- public void DeleteEventByKey(string key,
- Dictionary<string, EventHandlerItem> dic = null)
- {
- Dictionary<string, EventHandlerItem> refDic = dic == null ? eventsDic : dic;
- refDic.Remove(key);
- }
- /// <summary>
- /// 重置
- /// </summary>
- /// <param name="dic"></param>
- public void Reset(Dictionary<string, EventHandlerItem> dic = null)
- {
- Dictionary<string, EventHandlerItem> refDic = dic == null ? eventsDic : dic;
- refDic.Clear();
- }
- }
- }
|