55 lines
1.4 KiB
Lua
55 lines
1.4 KiB
Lua
return function()
|
|
local events = {}
|
|
|
|
local event = {
|
|
registerEvent = function(self, _event, func)
|
|
if (events[_event] == nil) then
|
|
events[_event] = {}
|
|
end
|
|
table.insert(events[_event], func)
|
|
end,
|
|
|
|
removeEvent = function(self, _event, index)
|
|
events[_event][index[_event]] = nil
|
|
end,
|
|
|
|
hasEvent = function(self, _event)
|
|
return events[_event]~=nil
|
|
end,
|
|
|
|
getEventCount = function(self, _event)
|
|
return events[_event]~=nil and #events[_event] or 0
|
|
end,
|
|
|
|
getEvents = function(self)
|
|
local t = {}
|
|
for k,v in pairs(events)do
|
|
table.insert(t, k)
|
|
end
|
|
return t
|
|
end,
|
|
|
|
clearEvent = function(self, _event)
|
|
events[_event] = nil
|
|
end,
|
|
|
|
clear = function(self, _event)
|
|
events = {}
|
|
end,
|
|
|
|
sendEvent = function(self, _event, ...)
|
|
local returnValue
|
|
if (events[_event] ~= nil) then
|
|
for _, value in pairs(events[_event]) do
|
|
local val = value(...)
|
|
if(val==false)then
|
|
returnValue = val
|
|
end
|
|
end
|
|
end
|
|
return returnValue
|
|
end,
|
|
}
|
|
event.__index = event
|
|
return event
|
|
end |