Introduced new client modules for helptext, notify, and progressbar using ZSX_UIV2. Updated client and shared configuration files to include ZSX_UIV2 as an option for ProgressBarSystem, Notify, and HelpText. Bumped fxmanifest version to 0.13.2.
121 lines
3.7 KiB
Lua
121 lines
3.7 KiB
Lua
---@diagnostic disable: duplicate-set-field
|
|
local resourceName = "ZSX_UIV2"
|
|
local configValue = BridgeClientConfig.ProgressBarSystem
|
|
if (configValue == "auto" and GetResourceState(resourceName) ~= "started") or (configValue ~= "auto" and configValue ~= resourceName) then return end
|
|
|
|
ProgressBar = ProgressBar or {}
|
|
|
|
ProgressBar.GetResourceName = function()
|
|
return "ZSX_UIV2"
|
|
end
|
|
|
|
---This function converts an Ox progress bar options table to ZSX_UIV2 format.
|
|
---@param options table
|
|
---@return table
|
|
local function convertFromOx(options)
|
|
if not options then return options end
|
|
local prop1 = options.prop?[1] or options.prop or {}
|
|
local prop2 = options.prop?[2] or {}
|
|
|
|
return {
|
|
label = options.label,
|
|
duration = options.duration,
|
|
canCancel = options.canCancel,
|
|
disableControls = {
|
|
disable_mouse = options.disable?.mouse,
|
|
disable_walk = options.disable?.move,
|
|
disable_driving = options.disable?.car,
|
|
disable_combat = options.disable?.combat
|
|
},
|
|
anim = options.anim and {
|
|
dict = options.anim.dict,
|
|
clip = options.anim.clip,
|
|
flag = options.anim.flag or 49
|
|
} or nil,
|
|
prop1 = prop1.model and {
|
|
model = prop1.model,
|
|
bone = prop1.bone,
|
|
pos = prop1.pos,
|
|
rot = prop1.rot
|
|
} or nil,
|
|
prop2 = prop2.model and {
|
|
model = prop2.model,
|
|
bone = prop2.bone,
|
|
pos = prop2.pos,
|
|
rot = prop2.rot
|
|
} or nil
|
|
}
|
|
end
|
|
|
|
---This function converts a QB progress bar options table to ZSX_UIV2 format.
|
|
---@param options table
|
|
---@return table
|
|
local function convertFromQB(options)
|
|
if not options then return options end
|
|
|
|
return {
|
|
label = options.label,
|
|
duration = options.duration,
|
|
canCancel = options.canCancel,
|
|
disableControls = {
|
|
disable_mouse = options.controlDisables?.disableMouse,
|
|
disable_walk = options.controlDisables?.disableMovement,
|
|
disable_driving = options.controlDisables?.disableCarMovement,
|
|
disable_combat = options.controlDisables?.disableCombat
|
|
},
|
|
anim = options.animation and {
|
|
dict = options.animation.animDict,
|
|
clip = options.animation.anim,
|
|
flag = options.animation.flags or 49
|
|
} or nil,
|
|
prop1 = options.prop and options.prop.model and {
|
|
model = options.prop.model,
|
|
bone = options.prop.bone,
|
|
pos = options.prop.coords,
|
|
rot = options.prop.rotation
|
|
} or nil,
|
|
prop2 = options.propTwo and options.propTwo.model and {
|
|
model = options.propTwo.model,
|
|
bone = options.propTwo.bone,
|
|
pos = options.propTwo.coords,
|
|
rot = options.propTwo.rotation
|
|
} or nil
|
|
}
|
|
end
|
|
|
|
---This function opens a progress bar.
|
|
---@param options table
|
|
---@param cb any
|
|
---@param qbFormat boolean
|
|
---@return boolean boolean
|
|
function ProgressBar.Open(options, cb, qbFormat)
|
|
if not exports['ZSX_UIV2'] then return false end
|
|
|
|
if qbFormat then
|
|
options = convertFromQB(options)
|
|
else
|
|
options = convertFromOx(options)
|
|
end
|
|
local prom = promise.new()
|
|
exports['ZSX_UIV2']:ProgressBar(
|
|
'fas fa-circle-notch',
|
|
options.label,
|
|
options.duration or 5000,
|
|
function()
|
|
if cb then cb(true) end
|
|
prom:resolve(true)
|
|
end,
|
|
function()
|
|
if cb then cb(false) end
|
|
prom:resolve(false)
|
|
end,
|
|
options.canCancel,
|
|
options.disableControls,
|
|
options.anim,
|
|
options.prop1,
|
|
options.prop2
|
|
)
|
|
return Citizen.Await(prom)
|
|
end
|
|
|
|
return ProgressBar |