update events system

This commit is contained in:
MihailRis 2024-10-29 21:34:40 +03:00
parent 44fd5416a9
commit 1543a0ce4c

View File

@ -17,16 +17,17 @@ events = {
} }
function events.on(event, func) function events.on(event, func)
-- why an array? length is always = 1 events.handlers[event] = func
-- FIXME: temporary fixed
events.handlers[event] = {} -- events.handlers[event] or {}
table.insert(events.handlers[event], func)
end end
function events.remove_by_prefix(prefix) function events.remove_by_prefix(prefix)
for name, handlers in pairs(events.handlers) do for name, handlers in pairs(events.handlers) do
if name:sub(1, #prefix) == prefix then local actualname = name
events.handlers[name] = nil if type(name) == 'table' then
actualname = name[1]
end
if actualname:sub(1, #prefix+1) == prefix..':' then
events.handlers[actualname] = nil
end end
end end
end end
@ -38,9 +39,7 @@ end
function events.emit(event, ...) function events.emit(event, ...)
result = nil result = nil
if events.handlers[event] then if events.handlers[event] then
for _, func in ipairs(events.handlers[event]) do result = result or events.handlers[event](...)
result = result or func(...)
end
end end
return result return result
end end