From de23afa7f805da8f52d17ba291045b344b33912c Mon Sep 17 00:00:00 2001 From: Dominic <100990090+Waves966@users.noreply.github.com> Date: Thu, 13 Oct 2022 17:58:45 -0600 Subject: [PATCH] feat(imports): add keybinds manager (#124) --- imports/keybinds/client.lua | 49 +++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 imports/keybinds/client.lua diff --git a/imports/keybinds/client.lua b/imports/keybinds/client.lua new file mode 100644 index 0000000..3d51708 --- /dev/null +++ b/imports/keybinds/client.lua @@ -0,0 +1,49 @@ +---@class CKeybind +---@field name string +---@field description string +---@field keybind string +---@field disabled boolean +---@field disable? fun(self: CKeybind, toggle: boolean) +---@field onPressed? fun(self: CKeybind) +---@field onReleased? fun(self: CKeybind) + +local keybinds = {} + +local function disableKeybind(self, toggle) + keybinds[self.name].disabled = toggle +end + +lib.keybinds = { + ---@return CKeybind + new = function(self) + self.keybind = self.keybind or '' + self.disabled = self.disabled or false + self.disable = disableKeybind + + RegisterCommand('+'..self.name, function() + if IsPauseMenuActive() then return end + if keybinds[self.name].disabled then return end + if self.onPressed then self:onPressed() end + end) + + RegisterCommand('-'..self.name, function() + if IsPauseMenuActive() then return end + if keybinds[self.name].disabled then return end + if self.onReleased then self:onReleased() end + end) + + RegisterKeyMapping('+'..self.name, self.description, 'keyboard', self.keybind) + TriggerEvent('chat:removeSuggestion', ('/+%s'):format(self.name)) + TriggerEvent('chat:removeSuggestion', ('/-%s'):format(self.name)) + + keybinds[self.name] = self + return self + end, + + ---@return CKeybind | false + get = function(name) + return keybinds[name] or false + end +} + +return lib.keybinds \ No newline at end of file