add signal module
This commit is contained in:
30
data/scripts/types/signal.lua
Normal file
30
data/scripts/types/signal.lua
Normal file
@ -0,0 +1,30 @@
|
||||
local util = require "util"
|
||||
|
||||
local Signal = {}
|
||||
|
||||
Signal.__index = Signal
|
||||
|
||||
function Signal:connect(f)
|
||||
util.list_insert_once(self._connections, f)
|
||||
end
|
||||
|
||||
function Signal:disconnect(f)
|
||||
util.list_remove_value(self._connections, f)
|
||||
end
|
||||
|
||||
function Signal:emit(...)
|
||||
-- don't care about order
|
||||
for _, v in pairs(self._connections) do
|
||||
v(...)
|
||||
end
|
||||
end
|
||||
|
||||
function Signal.new()
|
||||
local s = {
|
||||
_connections = {},
|
||||
}
|
||||
|
||||
return setmetatable(s, Signal)
|
||||
end
|
||||
|
||||
return Signal
|
Reference in New Issue
Block a user