public void AddEventListener(IComparable type, SkillEventListener listener) { HashSet <SkillEventListener> listenerSet = GetOrCreateListenerSet(type); if (listenerSet != null) { if (!listenerSet.Contains(listener)) { listenerSet.Add(listener); } } }
public void RemoveEventListener(IComparable type, SkillEventListener listener) { _listeners.TryGetValue(type, out HashSet <SkillEventListener> listenerSet); if (listenerSet != null) { if (!listenerSet.Contains(listener)) { listenerSet.Remove(listener); if (listenerSet.Count <= 0) { _listeners.Remove(type); } } } }