-
Notifications
You must be signed in to change notification settings - Fork 15
Events
Events are a way for modules and parts of the core to communicate with each other without having to know exactly what communication should take place. Events are represented by strings. There are a number of uses for events, with these rough naming conventions:
-
e/[vendor]/[module]/[event-name]
: Simple announcement events, just saying that something has occurred. Possible Examples:e/lotgd/core/startup
. -
h/[vendor]/[module]/[event-name]
: Hooks, or events that are designed to seek input from other parts of the system (like modules). Possible examples:h/lotgd/core/get-attack-value
. -
a/[vendor]/[module]/[event-name]
: Analytic events, those only for tracking purposes. Possible examples:a/lotgd/core/startup-perf
,a/lotgd/core/motd-new
.
Events are handled by a class that implements the EventHandler
interface and
has been previously subscribed to events by calling $game->getEventManager()->subscribe()
.
Subscriptions use regular expressions: subscribers provide a regex
to match against event names and any published event that matches the regex
triggers a call to the class's handleEvent()
method. See the Sample Crate and
the Hello World Module for an example.
Events are published via $game->getEventManager()->publish()
and can pass an
array()
which represents the context of the event. This array()
is a so-called
"in-out" variable, so changes made to the array()
in handleEvent()
calls will
be visible to the publisher. This is how hooks will communicate their input to
the publisher.