public IObserverContext _getContext(IGameEventListener o) { if (o == null) { throw new ArgumentNullException(); } if (o is IGamePlayer) { return(playerContexts[(IGamePlayer)o]); } else if (o is IGameEventListener) { return(monitorCtx); } throw new ArgumentException("Specified GameListener type is unknonw: " + o.GetType()); }
/// <summary> /// Unregisters a listener from this event /// </summary> /// <param name="Listener">The listener to unregister</param> public override void UnregisterListener(IGameEventListener listener) { if (isRaisingEvent) { listenerModTracker.RecordRemoveModification(listener); } else { Type listenerType = listener.GetType(); if (listenerType.IsAssignableFromGenericInterface(typeof(IGameEventListener <T>))) { listeners.Remove(listener); } else { paramListeners.Remove(listener as IGameEventListener <T>); } } }