1
0
Fork 0
forked from Simnation/Main
Main/resources/[freizeit]/[gym]/ps-ui/client/menu.lua

64 lines
1.9 KiB
Lua
Raw Normal View History

2025-08-11 16:51:34 +02:00
local storedData = {}
---Creates a menu and registers its events.
---@param menuData table: Data for the menu, including items and submenus.
local function createMenu(menuData)
for _, item in ipairs(menuData) do
storedData[item.id] = item
if item.subMenu then
for _, subItem in ipairs(item.subMenu) do
storedData[subItem.id] = subItem
end
end
end
SendNUI("ShowMenu", nil, {
menuData = menuData
}, true)
end
--- Event handler for creating a menu from a network event.
--- @param menuData table: Data for the menu, including items and submenus.
RegisterNetEvent("ps-ui:CreateMenu", function(menuData)
if not menuData then
return
end
createMenu(menuData)
end)
--- Closes the current menu.
local function hideMenu()
SendNUI("HideMenu", nil, {}, false)
storedData = {}
end
--- NUI callback for closing the menu.
--- @param data any: Data from the NUI (not used in this function).
--- @param cb function: Callback function to signal completion of the NUI callback.
RegisterNUICallback('menuClose', function(data, cb)
SetNuiFocus(false, false)
storedData = {}
cb('ok')
end)
--- NUI callback for menu item selection.
--- @param data table: Data from the NUI, including event details.
--- @param cb function: Callback function to signal completion of the NUI callback. The callback should be called with a string status, e.g., 'ok' or an error message.
RegisterNUICallback('MenuSelect', function(data, cb)
local menuData = storedData[data.data.id]
if menuData then
if menuData.server then
TriggerServerEvent(menuData.event, table.unpack(menuData.args))
else
TriggerEvent(menuData.event, table.unpack(menuData.args))
end
SetNuiFocus(false, false)
storedData = {}
end
cb('ok')
end)
exports("CreateMenu", createMenu)
exports("HideMenu", hideMenu)