diff --git a/fluid/eventManager.lua b/fluid/eventManager.lua index d4b14f1..61d0066 100644 --- a/fluid/eventManager.lua +++ b/fluid/eventManager.lua @@ -15,14 +15,14 @@ function EventManager:emit(name, ...) if listeners then for i = 1, #listeners do local listener = listeners[i] - listener[name](listener, ...) + listener[1][listener[2]](listener[1], ...) end end return self end -function EventManager:register(name, listener) +function EventManager:register(name, listener, callback) local listeners = self.listeners[name] if not listeners then @@ -31,17 +31,17 @@ function EventManager:register(name, listener) end listeners.count = listeners.count + 1 - listeners[listeners.count] = listener + listeners[listeners.count] = {listener, callback or name} return self end -function EventManager:deregister(name, listener) +function EventManager:deregister(name, listener, callback) local listeners = self.listeners[name] if listeners then for index, other in ipairs(listeners) do - if listener == other then + if listener[1] == other and listener[2] == (callback or name) then table.remove(listeners, index) listeners.count = listeners.count - 1