mirror of
https://github.com/CommunityOx/ox_lib.git
synced 2026-08-18 07:26:02 +01:00
feat(keys): implement a DisableControlAction wrapper
This commit is contained in:
54
imports/controls/client.lua
Normal file
54
imports/controls/client.lua
Normal 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
|
||||
})
|
||||
Reference in New Issue
Block a user