/
Lachklen
/
MYtgstation
Обзор
Документация
Войти
/
Lachklen
/
MYtgstation
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
lua/handler_group.lua
48 строк
1 KB
Y0SH1M4S73R
Replaces Auxlua with the byondapi-based Dreamluau (#84810)
28 июл 2024, 21:45
Не верифицирован
28 июл 2024, 21:45
d1ccb53
Код
Авторство
О чём код?
local SS13 = require("SS13") local HandlerGroup = {} HandlerGroup.__index = HandlerGroup function HandlerGroup.new() return setmetatable({ registered = {}, }, HandlerGroup) end -- Registers a signal on a datum for this handler group instance. function HandlerGroup:register_signal(datum, signal, func) local registered_successfully = SS13.register_signal(datum, signal, func) if not registered_successfully then return end table.insert(self.registered, { datum = datum, signal = signal, func = func }) end -- Clears all the signals that have been registered on this HandlerGroup function HandlerGroup:clear() for _, data in self.registered do if not data.func or not SS13.is_valid(data.datum) then continue end SS13.unregister_signal(data.datum, data.signal, data.func) end table.clear(self.registered) end -- Clears all the signals that have been registered on this HandlerGroup when a specific signal is sent on a datum. function HandlerGroup:clear_on(datum, signal, func) SS13.register_signal(datum, signal, function(...) if func then func(...) end self:clear() end) end -- Registers a signal on a datum and clears it after it is called once. function HandlerGroup.register_once(datum, signal, func) local callback = HandlerGroup.new() callback:clear_on(datum, signal, func) return callback end return HandlerGroup