class Athena::EventDispatcher::EventDispatcher
inherits Reference
#
Included modules
Athena::EventDispatcher::EventDispatcherInterface
Class methods#
.new(listeners : Array(AED::EventListenerInterface))
#
(listeners : Array(AED::EventListenerInterface))
Initializes self
with the provided listeners.
This overload is mainly intended for DI or to manually configure the listeners that should be listened on.
.new
#
Initializes self
automatically via macros. This overload is mainly intended for
use cases where the listener types don't have any dependencies, and/or all listeners should listen.
Methods#
#add_listener(event : AED::Event.class, listener : AED::EventListenerType, priority : Int32 = 0) : Nil
#
(event : AED::Event.class, listener : AED::EventListenerType, priority : Int32 = 0) : Nil
Adds the provided listener as a listener for event, optionally with the provided priority.
#dispatch(event : AED::Event) : Nil
#
(event : AED::Event) : Nil
Dispatches event to all listeners registered on self
that are listening on that event.
AED::EventListenerInterface
's are executed based on the listener's priority; the higher the value the sooner it gets executed.
#has_listeners?(event : AED::Event.class? = nil) : Bool
#
(event : AED::Event.class? = nil) : Bool
Returns true
if there are any listeners listening on the provided event.
If no event is provided, returns true
if there are ANY listeners registered on self
.
#listener_priority(event : AED::Event.class, listener : AED::EventListenerInterface.class) : Int32?
#
(event : AED::Event.class, listener : AED::EventListenerInterface.class) : Int32?
Returns the listener priority for the provided event. Returns nil
if no listeners are listening on the provided event or
if listener isn't listening on event.
#listeners(event : AED::Event.class? = nil) : Array(AED::EventListener)
#
(event : AED::Event.class? = nil) : Array(AED::EventListener)
Returns the listeners listening on the provided event. If no event is provided, returns all listeners.
#remove_listener(event : AED::Event.class, listener : AED::EventListenerInterface.class) : Nil
#
(event : AED::Event.class, listener : AED::EventListenerInterface.class) : Nil
Removes the provided event from the provided listener.
#remove_listener(event : AED::Event.class, listener : AED::EventListenerType) : Nil
#
(event : AED::Event.class, listener : AED::EventListenerType) : Nil
Removes the provided event from the provided listener.