public static void Invoke(EventType eventTypeType, object sender = null, EventArgs e = null) { if (EventDictionary.TryGetValue(eventTypeType, out var thisEvent)) { thisEvent.Invoke(sender, e); } }
// Starts listening to this action. Will override any previous action, unsubscribing it in the process public void StartListening(Action <object, EventArgs> action, EventType eventType) { eventListener?.Unsubscribe(currentEventType); // Unsubscribe if we already have an event eventListener = action; currentEventType = eventType; name = $"__eventListener ({eventType.ToString()})"; // Set gameObject.name eventListener.Subscribe(eventType); }
public static void Subscribe(this Action <object, EventArgs> listener, EventType eventTypeType) { if (EventDictionary.TryGetValue(eventTypeType, out var thisEvent)) { thisEvent += listener; EventDictionary[eventTypeType] = thisEvent; } else { thisEvent += listener; EventDictionary.Add(eventTypeType, thisEvent); } }
public static void Unsubscribe(this Action <object, EventArgs> listener, EventType eventTypeType) { if (EventDictionary.TryGetValue(eventTypeType, out var thisEvent)) { thisEvent -= listener; if (thisEvent == null) { EventDictionary.Remove(eventTypeType); } else { EventDictionary[eventTypeType] = thisEvent; } } }
private void Awake() { rb = GetComponent <Rigidbody2D>(); eventType = PlayerOne ? Constants.EventType.Player1Damage : Constants.EventType.Player2Damage; Stats = GetComponent <PlayerStats>(); }
// Creates an object subscribed to an event. This subscription automatically handled when parent is enabled/disabled/destroyed. public static Listener CreateListener(Transform parent, Action <object, EventArgs> action, EventType eventType) { GameObject go = new GameObject("__eventListener", typeof(Listener)); go.transform.parent = parent; Listener listener = go.GetComponent <Listener>(); listener.StartListening(action, eventType); return(listener); }