mirror of
https://github.com/esx-framework/esx_core.git
synced 2026-09-04 16:23:21 +00:00
single resource concept + first attempt to reorganize code
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
local self = ESX.Modules['menu_dialog']
|
||||
|
||||
AddEventHandler('esx:nui_ready', function()
|
||||
ESX.CreateFrame('menu_dialog', 'nui://' .. GetCurrentResourceName() .. '/modules/menu_dialog/data/html/ui.html')
|
||||
end)
|
||||
|
||||
AddEventHandler('menu_dialog:message:menu_submit', function(data)
|
||||
|
||||
local menu = ESX.UI.Menu.GetOpened(self.MenuType, data._namespace, data._name)
|
||||
local cancel = false
|
||||
|
||||
if menu.submit then
|
||||
-- is the submitted data a number?
|
||||
if tonumber(data.value) then
|
||||
data.value = ESX.Math.Round(tonumber(data.value))
|
||||
|
||||
-- check for negative value
|
||||
if tonumber(data.value) <= 0 then
|
||||
cancel = true
|
||||
end
|
||||
end
|
||||
|
||||
data.value = ESX.Math.Trim(data.value)
|
||||
|
||||
-- don't submit if the value is negative or if it's 0
|
||||
if cancel then
|
||||
ESX.ShowNotification('That input is not allowed!')
|
||||
else
|
||||
menu.submit(data, menu)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
AddEventHandler('menu_dialog:message:menu_cancel', function(data)
|
||||
local menu = ESX.UI.Menu.GetOpened(self.MenuType, data._namespace, data._name)
|
||||
|
||||
if menu.cancel ~= nil then
|
||||
menu.cancel(data, menu)
|
||||
end
|
||||
end)
|
||||
|
||||
AddEventHandler('menu_dialog:message:menu_change', function(data)
|
||||
local menu = ESX.UI.Menu.GetOpened(self.MenuType, data._namespace, data._name)
|
||||
|
||||
if menu.change ~= nil then
|
||||
menu.change(data, menu)
|
||||
end
|
||||
end)
|
||||
@@ -0,0 +1,24 @@
|
||||
|
||||
local self = ESX.Modules['menu_dialog']
|
||||
|
||||
ESX.UI.Menu.RegisterType(self.MenuType, self.openMenu, self.closeMenu)
|
||||
|
||||
Citizen.CreateThread(function()
|
||||
while true do
|
||||
Citizen.Wait(10)
|
||||
|
||||
if ESX.Table.SizeOf(self.OpenedMenus) > 0 then
|
||||
DisableControlAction(0, 1, true) -- LookLeftRight
|
||||
DisableControlAction(0, 2, true) -- LookUpDown
|
||||
DisableControlAction(0, 142, true) -- MeleeAttackAlternate
|
||||
DisableControlAction(0, 106, true) -- VehicleMouseControlOverride
|
||||
DisableControlAction(0, 12, true) -- WeaponWheelUpDown
|
||||
DisableControlAction(0, 14, true) -- WeaponWheelNext
|
||||
DisableControlAction(0, 15, true) -- WeaponWheelPrev
|
||||
DisableControlAction(0, 16, true) -- SelectNextWeapon
|
||||
DisableControlAction(0, 17, true) -- SelectPrevWeapon
|
||||
else
|
||||
Citizen.Wait(500)
|
||||
end
|
||||
end
|
||||
end)
|
||||
@@ -0,0 +1,46 @@
|
||||
ESX.Modules['menu_dialog'] = {};
|
||||
local self = ESX.Modules['menu_dialog']
|
||||
|
||||
self.Timeouts = {}
|
||||
self.OpenedMenus = {}
|
||||
self.MenuType = 'dialog'
|
||||
|
||||
self.openMenu = function(namespace, name, data)
|
||||
|
||||
for i=1, #self.Timeouts, 1 do
|
||||
ESX.ClearTimeout(self.Timeouts[i])
|
||||
end
|
||||
|
||||
self.OpenedMenus[namespace .. '_' .. name] = true
|
||||
|
||||
ESX.SendFrameMessage('menu_dialog', {
|
||||
action = 'openMenu',
|
||||
namespace = namespace,
|
||||
name = name,
|
||||
data = data
|
||||
})
|
||||
|
||||
local timeoutId = ESX.SetTimeout(200, function()
|
||||
ESX.FocusFrame('menu_dialog', true, true)
|
||||
end)
|
||||
|
||||
table.insert(self.Timeouts, timeoutId)
|
||||
end
|
||||
|
||||
self.closeMenu = function(namespace, name)
|
||||
|
||||
self.OpenedMenus[namespace .. '_' .. name] = nil
|
||||
|
||||
ESX.SendFrameMessage('menu_dialog', {
|
||||
action = 'closeMenu',
|
||||
namespace = namespace,
|
||||
name = name,
|
||||
data = data
|
||||
})
|
||||
|
||||
if ESX.Table.SizeOf(self.OpenedMenus) == 0 then
|
||||
SetNuiFocus(false)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user