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)); } }
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)); } }
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; } }
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)); } } }
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)); } } }