Files

66 lines
2.2 KiB
Lua
Raw Permalink Normal View History

2026-06-28 10:15:55 +02:00
---@diagnostic disable: duplicate-set-field
local resourceName = "msk_core"
local configValue = BridgeClientConfig.ProgressBarSystem
if (configValue == "auto" and GetResourceState(resourceName) ~= "started") or (configValue ~= "auto" and configValue ~= resourceName) then return end
ProgressBar = ProgressBar or {}
---Converts bridge/ox-style progress options into the msk_core Progress.Start format.
---@param options table
---@return table
local function convertToMsk(options)
options = options or {}
-- QB exposes animation under .animation.animDict/.anim and disables under .controlDisables
local anim = options.anim or options.animation
local animation
if anim then
animation = {
dict = anim.dict or anim.animDict,
anim = anim.clip or anim.anim,
flag = anim.flag or anim.flags or 49,
}
end
-- ox uses options.disable.{move,car,combat,mouse}, QB uses options.controlDisables.*
local d = options.disable or options.controlDisables or {}
local disable = {
move = d.move or d.disableMovement,
vehicle = d.car or d.disableCarMovement,
combat = d.combat or d.disableCombat,
mouse = d.mouse or d.disableMouse,
}
return {
duration = options.duration,
text = options.label or options.text or '',
disable = disable,
animation = animation,
forceOverride = options.forceOverride,
}
end
---This will open a progress bar (blocking until it completes).
---@param options table
---@param cb any optional callback receiving the success boolean
---@param isQBInput boolean optional
---@return boolean success true if the progress completed without being cancelled
function ProgressBar.Open(options, cb, isQBInput)
local data = convertToMsk(options)
-- msk_core Progress.Start blocks for the full duration; if it is interrupted
-- it stops early. We treat a fully elapsed bar as success.
exports.msk_core:Progressbar(data)
local active = exports.msk_core:ProgressActive()
local success = not active
if cb then cb(success) end
return success
end
ProgressBar.GetResourceName = function()
return resourceName
end
return ProgressBar