/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)