Example #1
0
        /// <summary>
        /// Adds a new subscriber to a certain event.
        /// </summary>
        /// <param name="_listener">listener.</param>
        /// <typeparam name="MiniEvent">The event type.</typeparam>
        public static void AddListener <MiniEvent>(MiniEventListener <MiniEvent> _listener) where MiniEvent : struct
        {
            Type eventType = typeof(MiniEvent);

            if (!_subscribersList.ContainsKey(eventType))
            {
                _subscribersList[eventType] = new List <MiniEventListenerBase>();
            }

            if (!SubscriptionExists(eventType, _listener))
            {
                var l = _subscribersList[eventType];
                if (!l.Contains(_listener))
                {
                    _subscribersList[eventType].Add(_listener);
                }
            }
        }
Example #2
0
        /// <summary>
        /// Removes a subscriber from a certain event.
        /// </summary>
        /// <param name="_listener">listener.</param>
        /// <typeparam name="MiniMEvent">The event type.</typeparam>
        public static void RemoveListener <MiniMEvent>(MiniEventListener <MiniMEvent> _listener) where MiniMEvent : struct
        {
            Type eventType = typeof(MiniMEvent);

            if (!_subscribersList.ContainsKey(eventType))
            {
                                #if EVENTROUTER_THROWEXCEPTIONS
                throw new ArgumentException(string.Format("Removing listener \"{0}\", but the event type \"{1}\" isn't registered.", _listener, eventType.ToString()));
                                #else
                return;
                                #endif
            }

            List <MiniEventListenerBase> subscriberList = _subscribersList[eventType];
            bool listenerFound = false;

            for (int i = 0; i < subscriberList.Count; i++)
            {
                if (subscriberList[i] == _listener)
                {
                    subscriberList.Remove(subscriberList[i]);
                    listenerFound = true;

                    if (subscriberList.Count == 0)
                    {
                        _subscribersList.Remove(eventType);
                    }

                    return;
                }
            }

                        #if EVENTROUTER_THROWEXCEPTIONS
            if (!listenerFound)
            {
                throw new ArgumentException(string.Format("Removing listener, but the supplied receiver isn't subscribed to event type \"{0}\".", eventType.ToString()));
            }
                        #endif
        }
Example #3
0
 public static void MiniEventStopListening <EventType>(this MiniEventListener <EventType> caller) where EventType : struct
 {
     MiniEventManager.RemoveListener <EventType>(caller);
 }