Example #1
0
 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>);
                }
            }
        }