mirror of
https://github.com/jimathy/jim_bridge.git
synced 2026-08-16 21:46:03 +01:00
Add starting support for lation_ui
Added support for: - Menus - Draw Text - Notifications - Skillchecks - ProgressBar TODO: - Input dialogs
This commit is contained in:
@@ -47,48 +47,7 @@
|
||||
--- })
|
||||
--- ```
|
||||
function openMenu(Menu, data)
|
||||
if Config.System.Menu == "jim" then
|
||||
if data.onBack then
|
||||
table.insert(Menu, 1, {
|
||||
icon = "fas fa-circle-arrow-left",
|
||||
header = " ",
|
||||
txt = "Return",
|
||||
params = {
|
||||
isAction = true,
|
||||
event = data.onBack,
|
||||
},
|
||||
})
|
||||
elseif data.canClose then
|
||||
table.insert(Menu, 1, {
|
||||
icon = "fas fa-circle-xmark",
|
||||
header = " ",
|
||||
txt = "Close",
|
||||
params = {
|
||||
isAction = true,
|
||||
event = data.onExit and data.onExit or (function() exports[QBMenuExport]:closeMenu() end),
|
||||
},
|
||||
})
|
||||
end
|
||||
if data.header ~= nil then
|
||||
local tempMenu = {}
|
||||
for k, v in pairs(Menu) do tempMenu[k + 1] = v end
|
||||
tempMenu[1] = { header = data.header, txt = data.headertxt or "", isMenuHeader = true }
|
||||
Menu = tempMenu
|
||||
end
|
||||
for k in pairs(Menu) do
|
||||
if not Menu[k].params or not Menu[k].params.event then
|
||||
Menu[k].params = {
|
||||
isAction = true,
|
||||
event = Menu[k].onSelect or function() end,
|
||||
}
|
||||
end
|
||||
if not Menu[k].header then Menu[k].header = " " end
|
||||
if Menu[k].arrow then Menu[k].icon = "fas fa-angle-right" end
|
||||
Menu[k].isMenuHeader = Menu[k].isMenuHeader or Menu[k].disable
|
||||
end
|
||||
TriggerEvent("jim_bridge:client:openMenu", Menu)
|
||||
|
||||
elseif Config.System.Menu == "ox" then
|
||||
if Config.System.Menu == "ox" then
|
||||
local index = nil
|
||||
if data.onBack and not data.onSelected then
|
||||
table.insert(Menu, 1, {
|
||||
@@ -286,11 +245,56 @@ function openMenu(Menu, data)
|
||||
function(data, menu)
|
||||
menu.close()
|
||||
end)
|
||||
|
||||
elseif Config.System.Menu == "lation" then
|
||||
if data.onBack then
|
||||
table.insert(Menu, 1, {
|
||||
icon = "fas fa-circle-arrow-left",
|
||||
onSelect = data.onBack,
|
||||
header = "Return",
|
||||
})
|
||||
end
|
||||
|
||||
for k in pairs(Menu) do
|
||||
if data.onSelected and Menu[k].arrow then
|
||||
Menu[k].icon = "fas fa-angle-right"
|
||||
end
|
||||
-- If no title, use header or txt as title/label.
|
||||
if not Menu[k].title then
|
||||
if Menu[k].header ~= nil and Menu[k].header ~= "" then
|
||||
Menu[k].title = Menu[k].header
|
||||
Menu[k].label = Menu[k].header
|
||||
if Menu[k].txt then Menu[k].description = Menu[k].txt else Menu[k].description = "" end
|
||||
else
|
||||
Menu[k].title = Menu[k].txt
|
||||
Menu[k].label = Menu[k].txt
|
||||
end
|
||||
end
|
||||
-- Copy parameters from 'params' if available.
|
||||
if Menu[k].params then
|
||||
Menu[k].event = Menu[k].params.event
|
||||
Menu[k].args = Menu[k].params.args or {}
|
||||
end
|
||||
if Menu[k].isMenuHeader then
|
||||
Menu[k].readOnly = true
|
||||
end
|
||||
end
|
||||
|
||||
exports.lation_ui:registerMenu({
|
||||
id = 'menu',
|
||||
title = data.header,
|
||||
subtitle = (data.headertxt and data.headertxt or ""),
|
||||
options = Menu,
|
||||
})
|
||||
|
||||
-- Show menu
|
||||
exports.lation_ui:showMenu('menu')
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
--- A line break constant used for menu header formatting.
|
||||
br = (Config.System.Menu == "ox" or Config.System.Menu == "gta") and "\n" or "<br>"
|
||||
br = (Config.System.Menu == "ox" or Config.System.Menu == "gta" or Config.System.Menu == "lation") and "\n" or "<br>"
|
||||
|
||||
--- Checks if the current menu system is 'ox' or 'gta' for formatting purposes.
|
||||
--- @return boolean boolean True if using ox or gta menus, otherwise false.
|
||||
|
||||
@@ -35,11 +35,26 @@ function drawText(image, input, style, oxStyleTable)
|
||||
|
||||
elseif Config.System.drawText == "ox" then
|
||||
-- Append newline spacing to each input line.
|
||||
local inputnum = countTable(input)
|
||||
for k, v in pairs(input) do
|
||||
input[k] = v.." \n"
|
||||
input[k] = v..(inputnum ~= k and " \n" or "")
|
||||
end
|
||||
lib.showTextUI(table.concat(input), { icon = (image and radarTable[image] or image) or nil, position = 'left-center', style = oxStyleTable })
|
||||
|
||||
elseif Config.System.drawText == "lation" then
|
||||
local inputnum = countTable(input)
|
||||
for k, v in pairs(input) do
|
||||
input[k] = v..(inputnum ~= k and " \n" or "")
|
||||
end
|
||||
exports.lation_ui:showText({
|
||||
--title = " ",
|
||||
description = table.concat(input),
|
||||
keybind = nil,
|
||||
icon = (image and radarTable[image] or image) or nil,
|
||||
iconColor = '#3B82F6',
|
||||
position = 'center-left'
|
||||
})
|
||||
|
||||
elseif Config.System.drawText == "gta" then
|
||||
-- Concatenate input lines and apply GTA style formatting.
|
||||
for i = 1, #input do
|
||||
@@ -88,6 +103,8 @@ function hideText()
|
||||
exports[QBExport]:HideText()
|
||||
elseif Config.System.drawText == "ox" then
|
||||
lib.hideTextUI()
|
||||
elseif Config.System.drawText == "lation" then
|
||||
exports.lation_ui:hideText()
|
||||
elseif Config.System.drawText == "gta" then
|
||||
ClearAllHelpMessages()
|
||||
elseif Config.System.drawText == "esx" then
|
||||
|
||||
@@ -135,6 +135,34 @@ function progressBar(data)
|
||||
end
|
||||
})
|
||||
|
||||
elseif Config.System.ProgressBar == "lation" then
|
||||
if exports.lation_ui:progressBar({
|
||||
label = data.label,
|
||||
description = nil,
|
||||
duration = debugMode and 1000 or data.time,
|
||||
icon = data.icon,
|
||||
useWhileDead = data.dead or false,
|
||||
disable = {
|
||||
combat = data.combat or true,
|
||||
move = data.disableMovement or false,
|
||||
car = data.disableMovement or false,
|
||||
},
|
||||
anim = {
|
||||
dict = data.dict,
|
||||
clip = data.anim,
|
||||
},
|
||||
prop = {
|
||||
model = data.prop and data.prop.model,
|
||||
pos = data.prop and (data.prop.pos or vec3(0, 0, 0)),
|
||||
rot = data.prop and (data.prop.rot or vec3(0, 0, 0)),
|
||||
bone = data.prop and (data.prop.bone or 0)
|
||||
}
|
||||
}) then
|
||||
result = true
|
||||
else
|
||||
result = true
|
||||
end
|
||||
|
||||
elseif Config.System.ProgressBar == "red" then
|
||||
-- Currently only uses jim-redui if you choose this option
|
||||
if exports["jim_bridge"]:redProgressBar({
|
||||
@@ -204,6 +232,8 @@ function stopProgressBar()
|
||||
exports[OXLibExport]:cancelProgress()
|
||||
elseif Config.System.ProgressBar == "qb" then
|
||||
TriggerEvent("progressbar:client:cancel")
|
||||
elseif Config.System.ProgressBar == "lation" then
|
||||
exports.lation_ui:cancelProgress()
|
||||
elseif Config.System.ProgressBar == "gta" or Config.System.ProgressBar == "red" then
|
||||
exports["jim_bridge"]:stopProgressBar()
|
||||
end
|
||||
|
||||
@@ -62,6 +62,20 @@ function triggerNotify(title, message, type, src)
|
||||
else
|
||||
TriggerClientEvent(getScript()..":DisplayESXNotify", src, type, message)
|
||||
end
|
||||
elseif Config.System.Notify == "lation" then
|
||||
if not src then
|
||||
exports.lation_ui:notify({
|
||||
title = title,
|
||||
message = message,
|
||||
type = type or "success",
|
||||
})
|
||||
else
|
||||
TriggerClientEvent("lation_ui:notify", src, {
|
||||
title = title,
|
||||
message = message,
|
||||
type = type or "success",
|
||||
})
|
||||
end
|
||||
|
||||
elseif Config.System.Notify == "red" then
|
||||
if isStarted("jim-redui") then
|
||||
|
||||
@@ -32,6 +32,25 @@ function skillCheck(data)
|
||||
elseif Config.System.skillCheck == "gta" then
|
||||
exports.jim_bridge:skillCheck()
|
||||
|
||||
elseif Config.System.skillCheck == "lation" then
|
||||
local Skillbar = exports.lation_ui:skillCheck("",
|
||||
{
|
||||
"easy",
|
||||
"easy",
|
||||
"easy"
|
||||
},
|
||||
{
|
||||
"1",
|
||||
"2",
|
||||
"3",
|
||||
"4"
|
||||
})
|
||||
|
||||
if Skillbar then
|
||||
result = true
|
||||
else
|
||||
result = false
|
||||
end
|
||||
else
|
||||
result = true
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user