mirror of
https://github.com/Reuh/ubiquitousse.git
synced 2025-10-27 09:09:30 +00:00
226 lines
10 KiB
Lua
226 lines
10 KiB
Lua
local signal -- ./signal/signal.can:30
|
|
local registry_mt -- ./signal/signal.can:36
|
|
registry_mt = { -- ./signal/signal.can:36
|
|
["signals"] = {}, -- ./signal/signal.can:39
|
|
["chained"] = {}, -- ./signal/signal.can:43
|
|
["bind"] = function(self, name, fn) -- ./signal/signal.can:48
|
|
assert(not self:has(name, fn), ("function %s already bound to signal %s"):format(fn, name)) -- ./signal/signal.can:49
|
|
if not self["signals"][name] then -- ./signal/signal.can:50
|
|
self["signals"][name] = {} -- ./signal/signal.can:51
|
|
end -- ./signal/signal.can:51
|
|
table["insert"](self["signals"][name], fn) -- ./signal/signal.can:53
|
|
return self -- ./signal/signal.can:54
|
|
end, -- ./signal/signal.can:54
|
|
["has"] = function(self, name, fn) -- ./signal/signal.can:60
|
|
if not self["signals"][name] then -- ./signal/signal.can:61
|
|
return false -- ./signal/signal.can:62
|
|
end -- ./signal/signal.can:62
|
|
for _, f in ipairs(self["signals"][name]) do -- ./signal/signal.can:64
|
|
if f == fn then -- ./signal/signal.can:65
|
|
return true -- ./signal/signal.can:66
|
|
end -- ./signal/signal.can:66
|
|
end -- ./signal/signal.can:66
|
|
return false -- ./signal/signal.can:69
|
|
end, -- ./signal/signal.can:69
|
|
["unbind"] = function(self, name, fn) -- ./signal/signal.can:75
|
|
if not self["signals"][name] then -- ./signal/signal.can:76
|
|
self["signals"][name] = {} -- ./signal/signal.can:77
|
|
end -- ./signal/signal.can:77
|
|
for i = # self["signals"][name], 1, - 1 do -- ./signal/signal.can:79
|
|
local f = self["signals"][name][i] -- ./signal/signal.can:80
|
|
if f == fn then -- ./signal/signal.can:81
|
|
table["remove"](self["signals"][name], i) -- ./signal/signal.can:82
|
|
return self -- ./signal/signal.can:83
|
|
end -- ./signal/signal.can:83
|
|
end -- ./signal/signal.can:83
|
|
error(("function %s not bound to signal %s"):format(fn, name)) -- ./signal/signal.can:86
|
|
end, -- ./signal/signal.can:86
|
|
["unbindPattern"] = function(self, pat, fn) -- ./signal/signal.can:91
|
|
return self:_patternize("unbind", pat, fn) -- ./signal/signal.can:92
|
|
end, -- ./signal/signal.can:92
|
|
["clear"] = function(self, name) -- ./signal/signal.can:97
|
|
self["signals"][name] = nil -- ./signal/signal.can:98
|
|
end, -- ./signal/signal.can:98
|
|
["clearPattern"] = function(self, pat) -- ./signal/signal.can:102
|
|
return self:_patternize("clear", pat) -- ./signal/signal.can:103
|
|
end, -- ./signal/signal.can:103
|
|
["emit"] = function(self, name, ...) -- ./signal/signal.can:109
|
|
if self["signals"][name] then -- ./signal/signal.can:110
|
|
for _, fn in ipairs(self["signals"][name]) do -- ./signal/signal.can:111
|
|
fn(...) -- ./signal/signal.can:112
|
|
end -- ./signal/signal.can:112
|
|
end -- ./signal/signal.can:112
|
|
for _, c in ipairs(self["chained"]) do -- ./signal/signal.can:115
|
|
c:emit(name, ...) -- ./signal/signal.can:116
|
|
end -- ./signal/signal.can:116
|
|
return self -- ./signal/signal.can:118
|
|
end, -- ./signal/signal.can:118
|
|
["emitPattern"] = function(self, pat, ...) -- ./signal/signal.can:123
|
|
return self:_patternize("emit", pat, ...) -- ./signal/signal.can:124
|
|
end, -- ./signal/signal.can:124
|
|
["chain"] = function(self, registry) -- ./signal/signal.can:131
|
|
if not registry then -- ./signal/signal.can:132
|
|
registry = signal["new"]() -- ./signal/signal.can:133
|
|
end -- ./signal/signal.can:133
|
|
table["insert"](self["chained"], registry) -- ./signal/signal.can:135
|
|
return registry -- ./signal/signal.can:136
|
|
end, -- ./signal/signal.can:136
|
|
["unchain"] = function(self, registry) -- ./signal/signal.can:141
|
|
for i = # self["chained"], 1, - 1 do -- ./signal/signal.can:142
|
|
if self["chained"][i] == registry then -- ./signal/signal.can:143
|
|
table["remove"](self["chained"], i) -- ./signal/signal.can:144
|
|
return self -- ./signal/signal.can:145
|
|
end -- ./signal/signal.can:145
|
|
end -- ./signal/signal.can:145
|
|
error("the givent registry is not chained with this registry") -- ./signal/signal.can:148
|
|
end, -- ./signal/signal.can:148
|
|
["_patternize"] = function(self, method, pat, ...) -- ./signal/signal.can:151
|
|
for name in pairs(self["signals"]) do -- ./signal/signal.can:152
|
|
if name:match(pat) then -- ./signal/signal.can:153
|
|
self[method](self, name, ...) -- ./signal/signal.can:154
|
|
end -- ./signal/signal.can:154
|
|
end -- ./signal/signal.can:154
|
|
end -- ./signal/signal.can:154
|
|
} -- ./signal/signal.can:154
|
|
registry_mt["__index"] = registry_mt -- ./signal/signal.can:159
|
|
local group_mt -- ./signal/signal.can:172
|
|
group_mt = { -- ./signal/signal.can:172
|
|
["paused"] = false, -- ./signal/signal.can:175
|
|
["binds"] = {}, -- ./signal/signal.can:179
|
|
["bind"] = function(self, registry, name, fn) -- ./signal/signal.can:187
|
|
table["insert"](self["binds"], { -- ./signal/signal.can:188
|
|
registry, -- ./signal/signal.can:188
|
|
name, -- ./signal/signal.can:188
|
|
fn -- ./signal/signal.can:188
|
|
}) -- ./signal/signal.can:188
|
|
if not self["paused"] then -- ./signal/signal.can:189
|
|
registry:bind(name, fn) -- ./signal/signal.can:189
|
|
end -- ./signal/signal.can:189
|
|
end, -- ./signal/signal.can:189
|
|
["clear"] = function(self) -- ./signal/signal.can:193
|
|
if not self["paused"] then -- ./signal/signal.can:194
|
|
for _, b in ipairs(self["binds"]) do -- ./signal/signal.can:195
|
|
b[1]:unbind(b[2], b[3]) -- ./signal/signal.can:196
|
|
end -- ./signal/signal.can:196
|
|
end -- ./signal/signal.can:196
|
|
self["binds"] = {} -- ./signal/signal.can:199
|
|
end, -- ./signal/signal.can:199
|
|
["pause"] = function(self) -- ./signal/signal.can:204
|
|
assert(not self["paused"], "event group is already paused") -- ./signal/signal.can:205
|
|
self["paused"] = true -- ./signal/signal.can:206
|
|
for _, b in ipairs(self["binds"]) do -- ./signal/signal.can:207
|
|
b[1]:unbind(b[2], b[3]) -- ./signal/signal.can:208
|
|
end -- ./signal/signal.can:208
|
|
end, -- ./signal/signal.can:208
|
|
["resume"] = function(self) -- ./signal/signal.can:214
|
|
assert(self["paused"], "event group is not paused") -- ./signal/signal.can:215
|
|
self["paused"] = false -- ./signal/signal.can:216
|
|
for _, b in ipairs(self["binds"]) do -- ./signal/signal.can:217
|
|
b[1]:bind(b[2], b[3]) -- ./signal/signal.can:218
|
|
end -- ./signal/signal.can:218
|
|
end -- ./signal/signal.can:218
|
|
} -- ./signal/signal.can:218
|
|
group_mt["__index"] = group_mt -- ./signal/signal.can:222
|
|
signal = { -- ./signal/signal.can:228
|
|
["new"] = function() -- ./signal/signal.can:231
|
|
return setmetatable({ -- ./signal/signal.can:232
|
|
["signals"] = {}, -- ./signal/signal.can:232
|
|
["chained"] = {} -- ./signal/signal.can:232
|
|
}, registry_mt) -- ./signal/signal.can:232
|
|
end, -- ./signal/signal.can:232
|
|
["group"] = function() -- ./signal/signal.can:237
|
|
return setmetatable({ ["binds"] = {} }, group_mt) -- ./signal/signal.can:238
|
|
end, -- ./signal/signal.can:238
|
|
["signals"] = {}, -- ./signal/signal.can:242
|
|
["bind"] = function(...) -- ./signal/signal.can:243
|
|
return registry_mt["bind"](signal, ...) -- ./signal/signal.can:244
|
|
end, -- ./signal/signal.can:244
|
|
["has"] = function(...) -- ./signal/signal.can:246
|
|
return registry_mt["has"](signal, ...) -- ./signal/signal.can:247
|
|
end, -- ./signal/signal.can:247
|
|
["unbind"] = function(...) -- ./signal/signal.can:249
|
|
return registry_mt["unbind"](signal, ...) -- ./signal/signal.can:250
|
|
end, -- ./signal/signal.can:250
|
|
["unbindPattern"] = function(...) -- ./signal/signal.can:252
|
|
return registry_mt["unbindPattern"](signal, ...) -- ./signal/signal.can:253
|
|
end, -- ./signal/signal.can:253
|
|
["clear"] = function(...) -- ./signal/signal.can:255
|
|
return registry_mt["clear"](signal, ...) -- ./signal/signal.can:256
|
|
end, -- ./signal/signal.can:256
|
|
["clearPattern"] = function(...) -- ./signal/signal.can:258
|
|
return registry_mt["clearPattern"](signal, ...) -- ./signal/signal.can:259
|
|
end, -- ./signal/signal.can:259
|
|
["emit"] = function(...) -- ./signal/signal.can:261
|
|
return registry_mt["emit"](signal, ...) -- ./signal/signal.can:262
|
|
end, -- ./signal/signal.can:262
|
|
["emitPattern"] = function(...) -- ./signal/signal.can:264
|
|
return registry_mt["emitPattern"](signal, ...) -- ./signal/signal.can:265
|
|
end, -- ./signal/signal.can:265
|
|
["event"] = nil, -- ./signal/signal.can:286
|
|
["registerEvents"] = function() -- ./signal/signal.can:291
|
|
local callbacks = { -- ./signal/signal.can:292
|
|
"displayrotated", -- ./signal/signal.can:293
|
|
"draw", -- ./signal/signal.can:293
|
|
"load", -- ./signal/signal.can:293
|
|
"lowmemory", -- ./signal/signal.can:293
|
|
"quit", -- ./signal/signal.can:293
|
|
"update", -- ./signal/signal.can:293
|
|
"directorydropped", -- ./signal/signal.can:294
|
|
"filedropped", -- ./signal/signal.can:294
|
|
"focus", -- ./signal/signal.can:294
|
|
"mousefocus", -- ./signal/signal.can:294
|
|
"resize", -- ./signal/signal.can:294
|
|
"visible", -- ./signal/signal.can:294
|
|
"keypressed", -- ./signal/signal.can:295
|
|
"keyreleased", -- ./signal/signal.can:295
|
|
"textedited", -- ./signal/signal.can:295
|
|
"textinput", -- ./signal/signal.can:295
|
|
"mousemoved", -- ./signal/signal.can:296
|
|
"mousepressed", -- ./signal/signal.can:296
|
|
"mousereleased", -- ./signal/signal.can:296
|
|
"wheelmoved", -- ./signal/signal.can:296
|
|
"gamepadaxis", -- ./signal/signal.can:297
|
|
"gamepadpressed", -- ./signal/signal.can:297
|
|
"gamepadreleased", -- ./signal/signal.can:297
|
|
"joystickadded", -- ./signal/signal.can:298
|
|
"joystickaxis", -- ./signal/signal.can:298
|
|
"joystickhat", -- ./signal/signal.can:298
|
|
"joystickpressed", -- ./signal/signal.can:298
|
|
"joystickreleased", -- ./signal/signal.can:298
|
|
"joystickremoved", -- ./signal/signal.can:298
|
|
"touchmoved", -- ./signal/signal.can:299
|
|
"touchpressed", -- ./signal/signal.can:299
|
|
"touchreleased" -- ./signal/signal.can:299
|
|
} -- ./signal/signal.can:299
|
|
local event = signal["event"] -- ./signal/signal.can:301
|
|
for _, callback in ipairs(callbacks) do -- ./signal/signal.can:302
|
|
if callback == "update" then -- ./signal/signal.can:303
|
|
if love[callback] then -- ./signal/signal.can:304
|
|
local old = love[callback] -- ./signal/signal.can:305
|
|
love[callback] = function(dt) -- ./signal/signal.can:306
|
|
old(dt) -- ./signal/signal.can:307
|
|
event:emit(callback, dt) -- ./signal/signal.can:308
|
|
end -- ./signal/signal.can:308
|
|
else -- ./signal/signal.can:308
|
|
love[callback] = function(dt) -- ./signal/signal.can:311
|
|
event:emit(callback, dt) -- ./signal/signal.can:312
|
|
end -- ./signal/signal.can:312
|
|
end -- ./signal/signal.can:312
|
|
else -- ./signal/signal.can:312
|
|
if love[callback] then -- ./signal/signal.can:316
|
|
local old = love[callback] -- ./signal/signal.can:317
|
|
love[callback] = function(...) -- ./signal/signal.can:318
|
|
old(...) -- ./signal/signal.can:319
|
|
event:emit(callback, ...) -- ./signal/signal.can:320
|
|
end -- ./signal/signal.can:320
|
|
else -- ./signal/signal.can:320
|
|
love[callback] = function(...) -- ./signal/signal.can:323
|
|
event:emit(callback, ...) -- ./signal/signal.can:324
|
|
end -- ./signal/signal.can:324
|
|
end -- ./signal/signal.can:324
|
|
end -- ./signal/signal.can:324
|
|
end -- ./signal/signal.can:324
|
|
end -- ./signal/signal.can:324
|
|
} -- ./signal/signal.can:324
|
|
signal["event"] = signal["new"]() -- ./signal/signal.can:332
|
|
return signal -- ./signal/signal.can:334
|