From 1543a0ce4c856127d6ceb225c414f91dfc1b134c Mon Sep 17 00:00:00 2001 From: MihailRis Date: Tue, 29 Oct 2024 21:34:40 +0300 Subject: [PATCH] update events system --- res/scripts/stdlib.lua | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/res/scripts/stdlib.lua b/res/scripts/stdlib.lua index 2dcb91ed..5f3a9d74 100644 --- a/res/scripts/stdlib.lua +++ b/res/scripts/stdlib.lua @@ -17,16 +17,17 @@ events = { } function events.on(event, func) - -- why an array? length is always = 1 - -- FIXME: temporary fixed - events.handlers[event] = {} -- events.handlers[event] or {} - table.insert(events.handlers[event], func) + events.handlers[event] = func end function events.remove_by_prefix(prefix) for name, handlers in pairs(events.handlers) do - if name:sub(1, #prefix) == prefix then - events.handlers[name] = nil + local actualname = name + if type(name) == 'table' then + actualname = name[1] + end + if actualname:sub(1, #prefix+1) == prefix..':' then + events.handlers[actualname] = nil end end end @@ -38,9 +39,7 @@ end function events.emit(event, ...) result = nil if events.handlers[event] then - for _, func in ipairs(events.handlers[event]) do - result = result or func(...) - end + result = result or events.handlers[event](...) end return result end