public override void SendMessage <T>(T message) { for (int i = 0; i < listeners.Count; i++) { MatchMessageListener listener = listeners[i]; if (listener.MessageType == message.GetType()) { ((MatchMessageHandler <T>)listener.Handler).Invoke(message, 0); } } }
private void ReceiveMessage <T>(T message, double timestamp) where T : MatchMessage { float travelTime = (float)(NetTime.Now - timestamp); for (int i = 0; i < listeners.Count; i++) { MatchMessageListener listener = listeners[i]; if (listener.MessageType == message.GetType()) { ((MatchMessageHandler <T>)listener.Handler).Invoke(message, travelTime); } } }
/// <summary> /// Removes the first found listener (if any) matching to the supplied handler delegate. /// </summary> /// <typeparam name="T">Message type to look for.</typeparam> /// <param name="handler">Handler to remove.</param> /// <returns>True if a listener was removed, false if none found.</returns> public bool RemoveListener <T>(MatchMessageHandler <T> handler) where T : MatchMessage { for (int i = 0; i < listeners.Count; i++) { MatchMessageListener listenerEntry = listeners[i]; if (listenerEntry.MessageType == typeof(T) && (MatchMessageHandler <T>)listenerEntry.Handler == handler) { listeners.Remove(listenerEntry); return(true); } } return(false); }