/
elite-ger
/
luaf
Обзор
Документация
Войти
/
elite-ger
/
luaf
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
modules/signal.lua
48 строк
951 B
Elite
Hello!
26 июн 2026, 19:07
26 июн 2026, 19:07
2b5046d
Код
Авторство
О чём код?
Signal = {} Signal.__index = Signal function Signal.new() return setmetatable({ _callbacks = {}, _once = {} }, Signal) end function Signal:Connect(callback) table.insert(self._callbacks, callback) return { Disconnect = function() for i, cb in ipairs(self._callbacks) do if cb == callback then table.remove(self._callbacks, i) return end end end } end function Signal:Once(callback) table.insert(self._once, callback) end function Signal:Fire(...) for _, cb in ipairs(self._callbacks) do cb(...) end for i = #self._once, 1, -1 do self._once[i](...) table.remove(self._once, i) end end function Signal:DisconnectAll() self._callbacks = {} self._once = {} end function Signal:GetCount() return #self._callbacks + #self._once end return Signal