From 5f1678131c75d2cd22ba4ba90101ac9f37d0ee4d Mon Sep 17 00:00:00 2001 From: Linden <65407488+thelindat@users.noreply.github.com> Date: Fri, 24 Feb 2023 00:26:17 +1100 Subject: [PATCH] feat(client/radial): support refreshing menus --- resource/interface/client/radial.lua | 50 ++++++++++++++++++---------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/resource/interface/client/radial.lua b/resource/interface/client/radial.lua index aca3680..52778dc 100644 --- a/resource/interface/client/radial.lua +++ b/resource/interface/client/radial.lua @@ -23,16 +23,6 @@ local menuHistory = {} ---@type RadialMenuProps? local currentRadial = nil ----Registers a radial sub menu with predefined options. ----@param radial RadialMenuProps -function lib.registerRadial(radial) - menus[radial.id] = radial -end - -function lib.getCurrentRadialId() - return currentRadial and currentRadial.id -end - ---Open a registered radial submenu with the given id. ---@param id string local function showRadial(id) @@ -62,6 +52,36 @@ local function showRadial(id) }) end +---Refresh the global menu items or current submenu. +local function refreshRadial() + if not isOpen then return end + + if currentRadial then + return showRadial(currentRadial.id) + end + + SendNUIMessage({ + action = 'refreshItems', + data = menuItems + }) +end + +---Registers a radial sub menu with predefined options. +---@param radial RadialMenuProps +function lib.registerRadial(radial) + menus[radial.id] = radial + + if currentRadial and radial.id == currentRadial.id then + currentRadial = radial + + refreshRadial() + end +end + +function lib.getCurrentRadialId() + return currentRadial and currentRadial.id +end + function lib.hideRadial() if not isOpen then return end @@ -96,10 +116,7 @@ function lib.addRadialItem(items) end if isOpen and not currentRadial then - SendNUIMessage({ - action = 'refreshItems', - data = menuItems - }) + refreshRadial() end end @@ -149,10 +166,7 @@ function lib.removeRadialItem(id) }) end else - SendNUIMessage({ - action = 'refreshItems', - data = menuItems - }) + refreshRadial() end end end