Class EventHandler

java.lang.Object
com.deco2800.game.events.EventHandler

public class EventHandler extends Object
Send and receive events between objects. EventHandler provides an implementation of the Observer pattern, also known as an event system or publish/subscribe. When an event is triggered with trigger(), all listeners are notified of the event.

Currently supports up to 3 arguments for an event. More can be added, but consider instead passing a class with required fields.

If you get a ClassCastException from an event, trigger is being called with different arguments than the listeners expect.

  • Constructor Details

    • EventHandler

      public EventHandler()
  • Method Details

    • addListener

      public void addListener(String eventName, EventListener0 listener)
      Add a listener to an event with zero arguments
      Parameters:
      eventName - name of the event
      listener - function to call when event fires
    • addListener

      public <T> void addListener(String eventName, EventListener1<T> listener)
      Add a listener to an event with one argument
      Type Parameters:
      T - argument type
      Parameters:
      eventName - name of the event
      listener - function to call when event fires
    • addListener

      public <T0, T1> void addListener(String eventName, EventListener2<T0,T1> listener)
      Add a listener to an event with two arguments
      Type Parameters:
      T0 - Type of arg 0
      T1 - Type of arg 1
      Parameters:
      eventName - name of the event
      listener - function to call when event fires
    • addListener

      public <T0, T1, T2> void addListener(String eventName, EventListener3<T0,T1,T2> listener)
      Add a listener to an event with three arguments
      Type Parameters:
      T0 - Type of arg 0
      T1 - Type of arg 1
      T2 - Type of arg 2
      Parameters:
      eventName - name of the event
      listener - function to call when event fires
    • trigger

      public void trigger(String eventName)
      Trigger an event with no arguments
      Parameters:
      eventName - name of the event
    • trigger

      public <T> void trigger(String eventName, T arg0)
      Trigger an event with one argument
      Type Parameters:
      T - argument type
      Parameters:
      eventName - name of the event
      arg0 - arg to pass to event
    • trigger

      public <T0, T1> void trigger(String eventName, T0 arg0, T1 arg1)
      Trigger an event with one argument
      Type Parameters:
      T0 - Type of arg 0
      T1 - Type of arg 1 bruh(entityToRemove);
      Parameters:
      eventName - name of the event
      arg0 - arg 0 to pass to event
      arg1 - arg 1 to pass to event
    • trigger

      public <T0, T1, T2> void trigger(String eventName, T0 arg0, T1 arg1, T2 arg2)
      Trigger an event with one argument
      Type Parameters:
      T0 - Type of arg 0
      T1 - Type of arg 1
      T2 - Type of arg 2
      Parameters:
      eventName - name of the event
      arg0 - arg 0 to pass to event
      arg1 - arg 1 to pass to event
      arg2 - arg 2 to pass to event
    • removeAllListeners

      public void removeAllListeners(String eventName)
      Removes all listeners from an event.
      Parameters:
      eventName - Name of the event from which to remove listeners
    • getNumberOfListeners

      public int getNumberOfListeners(String eventName)
      Gets the number of listeners for an eventname.
      Parameters:
      eventName - name of an event
      Returns:
      integer number of listeners on an event or -1 if no event registered