60 lines
1.8 KiB
Plaintext
60 lines
1.8 KiB
Plaintext
/pkg/iceball/event
|
|
==================
|
|
|
|
events = event_manager() @
|
|
Create a new event manager object.
|
|
@return event_manager instance
|
|
|
|
events.register(event_type, handler, order, cancelled) @
|
|
Register a new event handler.
|
|
@param event_type Event type name to be handled
|
|
@param handler Function with parameters (event_type, event_data)
|
|
@param order One of ORDER_* to determine the position in the list of handlers
|
|
@param cancelled Whether or not to received cancelled events
|
|
|
|
events.deregister(event_type, handler) @
|
|
Deregister a previously registered handler.
|
|
@param event_type Event type name previously registered
|
|
@param handler Function previously registered
|
|
|
|
events.fire(event_type, data) @
|
|
Fire an event.
|
|
Event data can contain a "cancelled" attribute.
|
|
@param event_type Event type name to be handled
|
|
@param data Event data table
|
|
@return data is returned for convenience
|
|
|
|
|
|
Example
|
|
=======
|
|
|
|
-- Create an event manager
|
|
events = event_manager()
|
|
|
|
-- Create a couple of handlers
|
|
function handler_one(event_type, event_data)
|
|
print("HANDLER 1! "..event_type)
|
|
print(event_data)
|
|
end
|
|
|
|
function handler_two(event_type, event_data)
|
|
print("HANDLER 2! "..event_type)
|
|
if event_data.foo then
|
|
event_data.foo = event_data.foo.."!"
|
|
end
|
|
end
|
|
|
|
-- Register our handlers
|
|
-- This handler will only received non-cancelled events
|
|
events.register("example_event", handler_one)
|
|
-- This handler will fire before default order ones, and also for cancelled events
|
|
events.register("example_event", handler_two, events.ORDER_EARLY, true)
|
|
|
|
-- We get the event data returned to us, so we can create it anonymously in the function call
|
|
data = events.fire("example_event", {foo="woop"})
|
|
print(data.foo)
|
|
|
|
-- ...or we can create a name instance and pass that in - the returned table is the exact same table
|
|
data = {cancelled=true}
|
|
events.fire("derp", data)
|