buldthensnip/docs/lib_event.txt
2015-03-08 22:48:40 +00:00

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)