public static void Dispatch(EventID eventId) { BaseEvents baseEvents; if (Instance.eventDictionary.TryGetValue(eventId, out baseEvents)) { baseEvents.isLock = true; GenericEvents0 impEvents = baseEvents as GenericEvents0; int count = impEvents.eventList.Count; for (int i = 0; i < count; ++i) { EventFun0 dlgt = impEvents.eventList[i]; dlgt(); } if (impEvents.deleteRequests.Count > 0) { for (int i = 0; i < impEvents.deleteRequests.Count; ++i) { impEvents.eventList.Remove(impEvents.deleteRequests[i]); } impEvents.deleteRequests.Clear(); } baseEvents.isLock = false; } }
public static void AddListener(EventID eventId, EventFun0 listener) { BaseEvents baseEvents = null; if (!Instance.eventDictionary.TryGetValue(eventId, out baseEvents)) { baseEvents = new GenericEvents0(); Instance.eventDictionary.Add(eventId, baseEvents); } ((GenericEvents0)baseEvents).eventList.Add(listener); }
public static void RemoveListener(EventID eventId, EventFun0 listener) { BaseEvents baseEvents; if (Instance.eventDictionary.TryGetValue(eventId, out baseEvents)) { GenericEvents0 impEvents = baseEvents as GenericEvents0; if (!impEvents.isLock) { impEvents.eventList.Remove(listener); } else { impEvents.deleteRequests.Add(listener); } } }