Ejemplo n.º 1
0
        public void RegisterListener(int eventId, IEventListener listener, int priority = 0)
        {
            if (!m_eventListenerContainers.ContainsKey(eventId))
            {
                m_eventListenerContainers[eventId] = new List <ListenerContainer>();
            }

            List <ListenerContainer> listeners = m_eventListenerContainers[eventId];
            int listenerCount = listeners.Count;

            for (int i = 0; i < listenerCount; i++)
            {
                if (listeners[i].Listener == listener)
                {
                    JSLDebug.LogException(new Exception("[EventManager] - Listener is already registered for this object."));
                    return;
                }
            }

            listeners.Add(new ListenerContainer(listener, priority));
            listeners.Sort();

            m_eventListenerContainers[eventId] = listeners;

            if (m_eventListenerArrays.ContainsKey(eventId))
            {
                m_eventListenerArrays[eventId] = listeners.ToArray();
            }
            else
            {
                m_eventListenerArrays.Add(eventId, listeners.ToArray());
            }
        }