39 lines
787 B
Lua
39 lines
787 B
Lua
local eventClass = {}
|
|
eventClass.__index = eventClass
|
|
|
|
function eventClass.new()
|
|
local self = {
|
|
eventSubs = {}
|
|
}
|
|
|
|
return setmetatable(self, eventClass)
|
|
end
|
|
|
|
function eventClass:newQueue(name)
|
|
self.eventSubs[name] = {}
|
|
end
|
|
|
|
--Data is the individualized table to pass to each subscriber (or middleware)
|
|
function eventClass:sub(name, func, data)
|
|
self.eventSubs[name][func] = {func = func, data = data}
|
|
|
|
return func
|
|
end
|
|
|
|
function eventClass:unsub(name, func)
|
|
self.eventSubs[name][func] = nil
|
|
end
|
|
|
|
function eventClass:push(name, evntData)
|
|
local pushData = evntData
|
|
for i, e in pairs(self.eventSubs[name]) do
|
|
if self.eventSubs[name].beforeEach then
|
|
pushData = self.eventSubs[name].beforeEach(e.data, evntData) or evntData
|
|
end
|
|
|
|
e.func(pushData)
|
|
end
|
|
end
|
|
|
|
|
|
return eventClass |