/// <summary>
 /// Function that trigger every function associated
 /// to a registered event by its name with two arguments.
 /// </summary>
 /// <typeparam name="T">Any Types</typeparam>
 /// <typeparam name="U">Any Types</typeparam>
 /// <param name="eventID">Event's name</param>
 /// <param name="arg1">First Argument to pass</param>
 /// <param name="arg2">Second Argument to pass</param>
 public static void TriggerEvent <T, U>(EventsID eventID, T arg1, U arg2)
 {
     if (events.ContainsKey(eventID))
     {
         (events[eventID] as Callback <T, U>)?.Invoke(arg1, arg2);
     }
 }
 /// <summary>
 /// Function that trigger every function associated
 /// to a registered event by its name.
 /// </summary>
 /// <param name="eventID">Event's name</param>
 public static void TriggerEvent(EventsID eventID)
 {
     if (events.ContainsKey(eventID))
     {
         (events[eventID] as Callback)?.Invoke();
     }
 }
 /// <summary>
 /// Add a listener to specific event. If event is not
 /// registrated, then add it in the dictionary.
 /// </summary>
 /// <typeparam name="T">Any Types</typeparam>
 /// <param name="eventID">Event's name</param>
 /// <param name="listener">Function to execute when event is triggered</param>
 public static void StartListening <T>(EventsID eventID, Callback <T> listener)
 {
     if (!events.ContainsKey(eventID))
     {
         events.Add(eventID, null);
     }
     events[eventID] = (Callback <T>)events[eventID] + listener;
 }
    /// <summary>
    /// Delete a listener from a registered event. If event
    /// has no more listener, then will be removed.
    /// </summary>
    /// <typeparam name="T">Any Types</typeparam>
    /// <typeparam name="U">Any Types</typeparam>
    /// <param name="eventID">Event's name</param>
    /// <param name="handler">Function registered when listener was added</param>
    public static void StopListening <T, U>(EventsID eventID, Callback <T, U> handler)
    {
        if (events.ContainsKey(eventID))
        {
            events[eventID] = (Callback <T, U>)events[eventID] - handler;

            if (events[eventID] == null)
            {
                events.Remove(eventID);
            }
        }
    }
Exemple #5
0
        /// <summary>
        /// Removes the listener. Use to unregister listener.
        /// </summary>
        /// <param name="eventID">Event that object want to listen.</param>
        /// <param name="callback">Callback action.</param>
        public void RemoveListener(EventsID eventID, Action <object> callback)
        {
            // checking params
            Debug.Assert(callback != null, string.Format("RemoveListener, event {0}, callback is null.", eventID.ToString()));
            Debug.Assert(eventID != EventsID.None, "AddListener, event = None.");

            if (listenersDict.ContainsKey(eventID))
            {
                listenersDict[eventID] -= callback;
            }
            else
            {
                Debug.LogWarning("RemoveListener, tried to remove nonexistent key : " + eventID);
            }
        }
Exemple #6
0
        /// <summary>
        /// Register to listen for eventID.
        /// </summary>
        /// <param name="eventID">EventID that object want to listen</param>
        /// <param name="callback">Callback will be invoked when this eventID be raised</param>
        public void RegisterListener(EventsID eventID, Action <object> callback)
        {
            // checking params
            Debug.Assert(callback != null, string.Format("AddListener, event {0}, callback is null !!", eventID.ToString()));
            Debug.Assert(eventID != EventsID.None, "RegisterListener, event = None !!");

            // check if listener exist in distionary
            if (listenersDict.ContainsKey(eventID))
            {
                // add callback to our collection
                listenersDict[eventID] += callback;
            }
            else
            {
                // add new key-value pair
                listenersDict.Add(eventID, null);
                listenersDict[eventID] += callback;
            }
        }
Exemple #7
0
        /// <summary>
        /// Posts the event. This will notify all listener that has been registered for this event.
        /// </summary>
        /// <param name="eventID">Event that object want to listen.</param>
        /// <param name="param">Parameter. Listener can make a cast to get the data.</param>
        public void PostEvent(EventsID eventID, object param = null)
        {
            if (!listenersDict.ContainsKey(eventID))
            {
                Debug.Log("No listener for this event : " + eventID);
                return;
            }

            Action <object> callbacks = listenersDict[eventID];

            if (callbacks != null)
            {
                callbacks(param);
            }
            else
            {
                Debug.Log("PostEvent " + eventID + " but there is no remaining listener. Remove this key");
                listenersDict.Remove(eventID);
            }
        }