1 local event_interface = {}
3 function event_interface:init()
4 assert(self._task_manager)
5 self:clear_event_listeners()
8 function event_interface:fire_event(event, callback)
11 local listeners = self._event_listeners[eventtype]
13 self._task_manager:add_task(function()
14 for _, listener in ipairs(listeners) do
23 function event_interface:add_event_listener(eventtype, eventlistener)
24 self._event_listeners[eventtype] = self._event_listeners[eventtype] or {}
25 table.insert(self._event_listeners[eventtype], eventlistener)
28 function event_interface:remove_event_listener(eventtype, eventlistener)
29 local listeners = self._event_listeners[eventtype]
31 for k, listener in ipairs(listeners) do
32 if listener == eventlistener then
34 return self:removeEventListener(eventtype, eventlistener)
40 function event_interface:clear_event_listeners()
41 self._event_listeners = {}
44 return event_interface