Ejemplo n.º 1
0
    public static void RemoveListener <T1, T2, T3, T4>(MessageMediatType type, Act <T1, T2, T3, T4> listenerBeingRemoved)
    {
        if (messageTable.ContainsKey(type))
        {
            Delegate d = messageTable[type];

            if (d == null)
            {
                //Debug.LogError(string.Format("Attempting to remove listener with for event type \"{0}\" but current listener is null.", type));
            }
            else if (d.GetType() != listenerBeingRemoved.GetType())
            {
                //Debug.LogError(string.Format("Attempting to remove listener with inconsistent signature for event type {0}. Current listeners have type {1} and listener being removed has type {2}", type, d.GetType().Name, listenerBeingRemoved.GetType().Name));
            }
            else
            {
                messageTable[type] = (Act <T1, T2, T3, T4>)messageTable[type] - listenerBeingRemoved;
                if (d == null)
                {
                    messageTable.Remove(type);
                }
            }
        }
        else
        {
            //Debug.LogError(string.Format("Attempting to remove listener for type \"{0}\" but Messenger doesn't know about this event type.", type));
        }
    }
Ejemplo n.º 2
0
 public static void RemoveAllListener(MessageMediatType type)
 {
     if (messageTable.ContainsKey(type))
     {
         messageTable[type] = null;
         messageTable.Remove(type);
     }
     else
     {
         //Debug.LogError(string.Format("Attempting to remove listener for type \"{0}\" but Messenger doesn't know about this event type.", type));
     }
 }
Ejemplo n.º 3
0
    public static void AddListener <T1, T2, T3>(MessageMediatType type, Act <T1, T2, T3> act)
    {
        if (!messageTable.ContainsKey(type))
        {
            messageTable.Add(type, null);
        }

        Delegate d = messageTable[type];

        if (d != null && d.GetType() != act.GetType())
        {
            //Debug.LogError(string.Format("Attempting to add listener with inconsistent signature for event type {0}. Current listeners have type {1} and listener being added has type {2}", type, d.GetType().Name, act.GetType().Name));
        }
        else
        {
            messageTable[type] = (Act <T1, T2, T3>)messageTable[type] + act;
        }
    }
Ejemplo n.º 4
0
    public static void Dispatch <T1, T2, T3, T4>(MessageMediatType type, T1 param1, T2 param2, T3 param3, T4 param4)
    {
        if (!messageTable.ContainsKey(type))
        {
            return;
        }

        Delegate d;

        if (messageTable.TryGetValue(type, out d))
        {
            Act <T1, T2, T3, T4> callback = d as Act <T1, T2, T3, T4>;

            if (callback != null)
            {
                callback(param1, param2, param3, param4);
            }
            else
            {
                //Debug.LogError(string.Format("no such event type {0}", type));
            }
        }
    }
Ejemplo n.º 5
0
    public static void Dispatch(MessageMediatType type)
    {
        if (!messageTable.ContainsKey(type))
        {
            return;
        }

        Delegate d;

        if (messageTable.TryGetValue(type, out d))
        {
            Act callback = d as Act;

            if (callback != null)
            {
                callback();
            }
            else
            {
                //Debug.LogError(string.Format("no such event type {0}", type));
            }
        }
    }