//---------------------------------------------------------------------- private void ReplaceWithNull(IGameEventReceiver <TMessage> r) { var oldIndex = IndexOf(r); if (oldIndex >= 0) { m_array[oldIndex] = null; } }
private int IndexOf(IGameEventReceiver <TMessage> t) { if (m_array == null) { return(-1); } return(Array.IndexOf(m_array, t, 0, m_length)); }
//---------------------------------------------------------------------- public void Add(IGameEventReceiver <TMessage> r) { var oldIndex = IndexOf(r); if (oldIndex < 0) { var newIndex = m_length; Array.Resize(ref m_array, ++m_length); m_array[newIndex] = r; } }
private void RemoveFromArray(IGameEventReceiver <TMessage> r) { for (int o = 0, n = m_length; o < n; ++o) { if (m_array[o] == r) { for (int i = o + 1; i < n; ++o, ++i) { m_array[o] = m_array[i]; } m_length -= 1; return; } } }
public void Remove(IGameEventReceiver <TMessage> r) { if (m_array == null) { return; } if (m_invocationInProgress) { ReplaceWithNull(r); } else { RemoveFromArray(r); } }
public static void RegisterEventListener(GameEventType aType, IGameEventReceiver aListener) { if(aListener == null) { return; } switch(aType) { case GameEventType.GAME: instance.m_GameEventListener.Add(aListener); break; case GameEventType.UNIT: instance.m_UnitEventListener.Add(aListener); break; case GameEventType.TRIGGER: instance.m_TriggerEventListener.Add(aListener); break; } }
public static void Add(IGameEventReceiver <object> receiver) { s_receivers.Add(receiver); }
public static void Remove(IGameEventReceiver <object> receiver) { s_receivers.Remove(receiver); }