feat(keys): implement a DisableControlAction wrapper

This commit is contained in:
Linden
2021-12-06 08:39:08 +11:00
parent d25cac3be4
commit ec1a98b83a
3 changed files with 57 additions and 12 deletions

View File

@@ -0,0 +1,54 @@
--- Call on frame to disable all stored keys.
--- ```
--- DisableControlActions()
--- ```
local DisableControlActions = {}
---@param ... number
function DisableControlActions:Add(...)
local keys = type(...) == 'table' and ... or {...}
for i=1, #keys do
local key = keys[i]
if self[key] then
self[key] += 1
else
self[key] = 1
end
end
end
---@param ... number
function DisableControlActions:Remove(...)
local keys = type(...) == 'table' and ... or {...}
for i=1, #keys do
local key = keys[i]
local exists = self[key]
if exists and exists > 1 then
self[key] -= 1
else
self[key] = nil
end
end
end
---@param ... number
function DisableControlActions:Clear(...)
local keys = type(...) == 'table' and ... or {...}
for i=1, #keys do
self[keys[i]] = nil
end
end
local Keys = {}
local DisableControlAction = DisableControlAction
local pairs = pairs
return setmetatable(DisableControlActions, {
__index = Keys,
__newindex = Keys,
__call = function()
for k in pairs(Keys) do
DisableControlAction(0, k, true)
end
end
})