From 7355d9ef257d557a1bd5c115e7b83d3f5f6d6c04 Mon Sep 17 00:00:00 2001 From: Linden <65407488+thelindat@users.noreply.github.com> Date: Fri, 14 Oct 2022 11:01:57 +1100 Subject: [PATCH] refactor(keybinds): formatting and tweaks --- imports/keybinds/client.lua | 54 ++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/imports/keybinds/client.lua b/imports/keybinds/client.lua index 3d51708..1853459 100644 --- a/imports/keybinds/client.lua +++ b/imports/keybinds/client.lua @@ -2,7 +2,7 @@ ---@field name string ---@field description string ---@field keybind string ----@field disabled boolean +---@field disabled? boolean ---@field disable? fun(self: CKeybind, toggle: boolean) ---@field onPressed? fun(self: CKeybind) ---@field onReleased? fun(self: CKeybind) @@ -13,37 +13,41 @@ local function disableKeybind(self, toggle) keybinds[self.name].disabled = toggle end +local IsPauseMenuActive = IsPauseMenuActive + lib.keybinds = { + ---@param data CKeybind ---@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 + new = function(data) + data.keybind = data.keybind or '' + data.disabled = data.disabled or false + data.disable = disableKeybind + + RegisterCommand('+' .. data.name, function() + if not data.onReleased or data.disabled or IsPauseMenuActive() then return end + data:onPressed() 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 + + RegisterCommand('-' .. data.name, function() + if not data.onReleased or data.disabled or IsPauseMenuActive() then return end + data:onReleased() 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 + + RegisterKeyMapping('+' .. data.name, data.description, 'keyboard', data.keybind) + + SetTimeout(500, function() + TriggerEvent('chat:removeSuggestion', ('/+%s'):format(data.name)) + TriggerEvent('chat:removeSuggestion', ('/-%s'):format(data.name)) + end) + + keybinds[data.name] = data + return data end, - ---@return CKeybind | false + ---@return CKeybind? get = function(name) - return keybinds[name] or false + return keybinds[name] end } -return lib.keybinds \ No newline at end of file +return lib.keybinds