Allowed for systems to atach multiple times under different callbacks

This commit is contained in:
Justin van der Leij 2018-02-20 23:43:48 +01:00
parent 100d6320c7
commit fae3c4a427

View file

@ -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