public bool Subscribe(int inID, IGameEventSubscriber inSubscriber) { List <IGameEventSubscriber> subscriberList; if (subscriberDic.TryGetValue(inID, out subscriberList)) { if (subscriberList.Contains(inSubscriber)) { Debug.LogError("GameEventRouter already contains subscriber! : " + inID + "[" + inSubscriber + "]"); return(false); } } else { subscriberList = new List <IGameEventSubscriber>(); subscriberDic.Add(inID, subscriberList); if (publisher != null) { publisher.Subscribe(inID, this); } } subscriberList.Add(inSubscriber); return(true); }
public bool UnSubscribe(int inID, IGameEventSubscriber inSubscriber) { List <IGameEventSubscriber> subscriberList; if (subscriberDic.TryGetValue(inID, out subscriberList)) { if (!subscriberList.Contains(inSubscriber)) { Debug.LogError("GameEventRouter not contains subscriber! : " + inID + "[" + inSubscriber + "]"); return(false); } } else { Debug.LogError("GameEventRouter not contains subscriber! : " + inID + "[" + inSubscriber + "]"); return(false); } subscriberList.Remove(inSubscriber); if (subscriberList.Count == 0) { subscriberDic.Remove(inID); if (publisher != null) { publisher.UnSubscribe(inID, this); } } return(true); }
public bool UnSubscribe(int inID, IGameEventSubscriber inSubscriber) { return(gameEventRouter.UnSubscribe(inID, inSubscriber)); }
public void AddSubscriber(IGameEventSubscriber subscriber) { _subscribers.Add(subscriber); }