Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- public class NGUIEventBroadcaster : MonoBehaviour
- {
- #region Broadcaster Registration
- static Dictionary<string, NGUIEventBroadcaster> Broadcasters;
- static void RegisterBroadcaster(NGUIEventBroadcaster broadcaster)
- {
- if (Broadcasters == null)
- Broadcasters = new Dictionary<string, NGUIEventBroadcaster>();
- if (Broadcasters.ContainsKey(broadcaster.broadcasterID))
- Debug.LogError("Duplicate Broadcaster ID detected: " + broadcaster.broadcasterID);
- else
- Broadcasters.Add(broadcaster.broadcasterID, broadcaster);
- }
- static void DeregisterBroadcaster(NGUIEventBroadcaster broadcaster)
- {
- if (Broadcasters == null) return;
- if (Broadcasters.ContainsKey(broadcaster.broadcasterID))
- Broadcasters.Remove(broadcaster.broadcasterID);
- }
- public static NGUIEventBroadcaster BroadcasterFromID(string id)
- {
- if (Broadcasters != null && Broadcasters.ContainsKey(id))
- return Broadcasters[id];
- else
- return null;
- }
- #endregion
- #region Event Registration
- static Dictionary<string, List<Action>> EventListeners;
- public static void AddListener(string broadcasterID, Action eventDelegate)
- {
- if (broadcasterID == null || broadcasterID.Length == 0 || eventDelegate == null) return;
- if (EventListeners == null)
- EventListeners = new Dictionary<string, List<Action>>();
- if (EventListeners.ContainsKey(broadcasterID) == false)
- EventListeners.Add(broadcasterID, new List<Action>());
- if (EventListeners[broadcasterID].Contains(eventDelegate) == false)
- EventListeners[broadcasterID].Add(eventDelegate);
- }
- public static void RemoveListener(string broadcasterID, Action eventDelegate)
- {
- if (broadcasterID == null || broadcasterID.Length == 0 || eventDelegate == null) return;
- if (EventListeners == null) return;
- if (EventListeners.ContainsKey(broadcasterID) == false) return;
- if (EventListeners[broadcasterID].Contains(eventDelegate))
- EventListeners[broadcasterID].Remove(eventDelegate);
- }
- static Dictionary<string, List<Action<string>>> EventWithIDListeners;
- public static void AddListener(string broadcasterID, Action<string> eventDelegate)
- {
- if (broadcasterID == null || broadcasterID.Length == 0 || eventDelegate == null) return;
- if (EventWithIDListeners == null)
- EventWithIDListeners = new Dictionary<string, List<Action<string>>>();
- if (EventWithIDListeners.ContainsKey(broadcasterID) == false)
- EventWithIDListeners.Add(broadcasterID, new List<Action<string>>());
- if (EventWithIDListeners[broadcasterID].Contains(eventDelegate) == false)
- EventWithIDListeners[broadcasterID].Add(eventDelegate);
- }
- public static void RemoveListener(string broadcasterID, Action<string> eventDelegate)
- {
- if (broadcasterID == null || broadcasterID.Length == 0 || eventDelegate == null) return;
- if (EventWithIDListeners == null) return;
- if (EventWithIDListeners.ContainsKey(broadcasterID) == false) return;
- if (EventWithIDListeners[broadcasterID].Contains(eventDelegate))
- EventWithIDListeners[broadcasterID].Remove(eventDelegate);
- }
- #endregion
- #region Instance
- public string broadcasterID = "";
- void OnEnable()
- {
- RegisterBroadcaster(this);
- }
- void OnDisable()
- {
- DeregisterBroadcaster(this);
- }
- void OnClick()
- {
- if (broadcasterID.Length == 0) return;
- if (EventListeners != null && EventListeners.ContainsKey(broadcasterID))
- {
- for (int i = 0; i < EventListeners[broadcasterID].Count; i++)
- {
- if (EventListeners[broadcasterID][i] != null)
- EventListeners[broadcasterID][i]();
- }
- }
- if (EventWithIDListeners != null && EventWithIDListeners.ContainsKey(broadcasterID))
- {
- for (int i = 0; i < EventWithIDListeners[broadcasterID].Count; i++)
- {
- if (EventWithIDListeners[broadcasterID][i] != null)
- EventWithIDListeners[broadcasterID][i](broadcasterID);
- }
- }
- }
- #endregion
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement