mirror of
https://github.com/esx-framework/esx_core.git
synced 2026-08-30 09:48:52 +00:00
94 lines
3.1 KiB
Lua
94 lines
3.1 KiB
Lua
ESX.Modules['menu_dialog'] = {};
|
|
local self = ESX.Modules['menu_dialog']
|
|
local Input = ESX.Modules['input']
|
|
|
|
self.Timeouts = {}
|
|
self.OpenedMenus = {}
|
|
self.MenuType = 'dialog'
|
|
|
|
self.RegisterControls = function()
|
|
|
|
Input.RegisterControl(Input.Groups.LOOK, Input.Controls.LOOK_LR)
|
|
Input.RegisterControl(Input.Groups.LOOK, Input.Controls.LOOK_UD)
|
|
Input.RegisterControl(Input.Groups.LOOK, Input.Controls.MELEE_ATTACK_ALTERNATE)
|
|
Input.RegisterControl(Input.Groups.LOOK, Input.Controls.VEH_MOUSE_CONTROL_OVERRIDE)
|
|
Input.RegisterControl(Input.Groups.LOOK, Input.Controls.WEAPON_WHEEL_UD)
|
|
Input.RegisterControl(Input.Groups.LOOK, Input.Controls.WEAPON_WHEEL_NEXT)
|
|
Input.RegisterControl(Input.Groups.LOOK, Input.Controls.WEAPON_WHEEL_PREV)
|
|
Input.RegisterControl(Input.Groups.LOOK, Input.Controls.SELECT_NEXT_WEAPON)
|
|
Input.RegisterControl(Input.Groups.LOOK, Input.Controls.SELECT_PREV_WEAPON)
|
|
|
|
end
|
|
|
|
self.EnableControls = function()
|
|
|
|
Input.EnableControl(Input.Groups.LOOK, Input.Controls.LOOK_LR)
|
|
Input.EnableControl(Input.Groups.LOOK, Input.Controls.LOOK_UD)
|
|
Input.EnableControl(Input.Groups.LOOK, Input.Controls.MELEE_ATTACK_ALTERNATE)
|
|
Input.EnableControl(Input.Groups.LOOK, Input.Controls.VEH_MOUSE_CONTROL_OVERRIDE)
|
|
Input.EnableControl(Input.Groups.LOOK, Input.Controls.WEAPON_WHEEL_UD)
|
|
Input.EnableControl(Input.Groups.LOOK, Input.Controls.WEAPON_WHEEL_NEXT)
|
|
Input.EnableControl(Input.Groups.LOOK, Input.Controls.WEAPON_WHEEL_PREV)
|
|
Input.EnableControl(Input.Groups.LOOK, Input.Controls.SELECT_NEXT_WEAPON)
|
|
Input.EnableControl(Input.Groups.LOOK, Input.Controls.SELECT_PREV_WEAPON)
|
|
|
|
end
|
|
|
|
self.DisableControls = function()
|
|
|
|
Input.DisableControl(Input.Groups.LOOK, Input.Controls.LOOK_LR)
|
|
Input.DisableControl(Input.Groups.LOOK, Input.Controls.LOOK_UD)
|
|
Input.DisableControl(Input.Groups.LOOK, Input.Controls.MELEE_ATTACK_ALTERNATE)
|
|
Input.DisableControl(Input.Groups.LOOK, Input.Controls.VEH_MOUSE_CONTROL_OVERRIDE)
|
|
Input.DisableControl(Input.Groups.LOOK, Input.Controls.WEAPON_WHEEL_UD)
|
|
Input.DisableControl(Input.Groups.LOOK, Input.Controls.WEAPON_WHEEL_NEXT)
|
|
Input.DisableControl(Input.Groups.LOOK, Input.Controls.WEAPON_WHEEL_PREV)
|
|
Input.DisableControl(Input.Groups.LOOK, Input.Controls.SELECT_NEXT_WEAPON)
|
|
Input.DisableControl(Input.Groups.LOOK, Input.Controls.SELECT_PREV_WEAPON)
|
|
|
|
end
|
|
|
|
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)
|
|
|
|
self.DisableControls()
|
|
|
|
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
|
|
self.EnableControls()
|
|
SetNuiFocus(false)
|
|
end
|
|
|
|
end
|
|
|