2023-04-08 18:33:43 -04:00
|
|
|
local IsGamescomDemo = function()
|
|
|
|
return Dvar.ui_execdemo_gamescom:get()
|
|
|
|
end
|
|
|
|
|
|
|
|
local IsBetaDemo = function()
|
|
|
|
return Dvar.ui_execdemo_beta:get()
|
|
|
|
end
|
|
|
|
|
|
|
|
local SetButtonState = function(button, state)
|
|
|
|
if state == nil then
|
|
|
|
return
|
|
|
|
elseif state == CoD.LobbyButtons.DISABLED then
|
|
|
|
button.disabled = true
|
|
|
|
elseif state == CoD.LobbyButtons.HIDDEN then
|
|
|
|
button.hidden = true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2023-04-11 13:46:45 -04:00
|
|
|
local RemoveButton = function(buttonTable, button)
|
2023-04-22 22:55:30 -04:00
|
|
|
if not button then
|
|
|
|
return
|
|
|
|
end
|
2023-04-11 13:46:45 -04:00
|
|
|
for id, v in pairs(buttonTable) do
|
2023-04-12 17:39:36 -04:00
|
|
|
if buttonTable[id].optionDisplay == button.stringRef then
|
|
|
|
table.remove(buttonTable, id)
|
|
|
|
end
|
2023-04-11 13:46:45 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
local RemoveSpaces = function(buttonTable)
|
|
|
|
for id, v in pairs(buttonTable) do
|
|
|
|
buttonTable[id].isLastButtonInGroup = false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
local GetButtonIndex = function(buttonTable, button)
|
2023-04-22 22:55:30 -04:00
|
|
|
if not button then
|
|
|
|
return nil
|
|
|
|
end
|
2023-04-11 13:46:45 -04:00
|
|
|
for id, v in pairs(buttonTable) do
|
|
|
|
if buttonTable[id].optionDisplay == button.stringRef then
|
2023-04-12 17:39:36 -04:00
|
|
|
return id
|
|
|
|
end
|
2023-04-11 13:46:45 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2023-04-08 18:33:43 -04:00
|
|
|
local AddButton = function(controller, options, button, isLargeButton, index)
|
|
|
|
if button == nil then
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
|
|
|
button.disabled = false
|
|
|
|
button.hidden = false
|
|
|
|
button.selected = false
|
|
|
|
button.warning = false
|
|
|
|
if button.defaultState ~= nil then
|
|
|
|
if button.defaultState == CoD.LobbyButtons.DISABLED then
|
|
|
|
button.disabled = true
|
|
|
|
elseif button.defaultState == CoD.LobbyButtons.HIDDEN then
|
|
|
|
button.hidden = true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
if button.disabledFunc ~= nil then
|
|
|
|
button.disabled = button.disabledFunc(controller)
|
|
|
|
end
|
|
|
|
if button.visibleFunc ~= nil then
|
|
|
|
button.hidden = not button.visibleFunc(controller)
|
|
|
|
end
|
|
|
|
if IsBetaDemo() then
|
|
|
|
SetButtonState(button, button.demo_beta)
|
|
|
|
elseif IsGamescomDemo() then
|
|
|
|
SetButtonState(button, button.demo_gamescom)
|
|
|
|
end
|
|
|
|
if button.hidden then
|
|
|
|
return
|
|
|
|
end
|
|
|
|
local lobbyNav = LobbyData.GetLobbyNav()
|
|
|
|
if button.selectedFunc ~= nil then
|
|
|
|
button.selected = button.selectedFunc(button.selectedParam)
|
|
|
|
elseif CoD.LobbyMenus.History[lobbyNav] ~= nil then
|
|
|
|
button.selected = CoD.LobbyMenus.History[lobbyNav] == button.customId
|
|
|
|
end
|
|
|
|
if button.newBreadcrumbFunc then
|
|
|
|
local f8_local1 = button.newBreadcrumbFunc
|
|
|
|
if type(f8_local1) == "string" then
|
|
|
|
f8_local1 = LUI.getTableFromPath(f8_local1)
|
|
|
|
end
|
|
|
|
if f8_local1 then
|
|
|
|
button.isBreadcrumbNew = f8_local1(controller)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
if button.warningFunc ~= nil then
|
|
|
|
button.warning = button.warningFunc(controller)
|
|
|
|
end
|
|
|
|
if button.starterPack == CoD.LobbyButtons.STARTERPACK_UPGRADE then
|
|
|
|
button.starterPackUpgrade = true
|
|
|
|
if IsStarterPack() then
|
|
|
|
button.disabled = false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
if index ~= nil then
|
|
|
|
table.insert(options, index, {
|
|
|
|
optionDisplay = button.stringRef,
|
|
|
|
action = button.action,
|
|
|
|
param = button.param,
|
|
|
|
customId = button.customId,
|
|
|
|
isLargeButton = isLargeButton,
|
|
|
|
isLastButtonInGroup = false,
|
|
|
|
disabled = button.disabled,
|
|
|
|
selected = button.selected,
|
|
|
|
isBreadcrumbNew = button.isBreadcrumbNew,
|
|
|
|
warning = button.warning,
|
|
|
|
requiredChunk = button.selectedParam,
|
|
|
|
starterPackUpgrade = button.starterPackUpgrade,
|
|
|
|
unloadMod = button.unloadMod
|
|
|
|
})
|
|
|
|
else
|
|
|
|
table.insert(options, {
|
|
|
|
optionDisplay = button.stringRef,
|
|
|
|
action = button.action,
|
|
|
|
param = button.param,
|
|
|
|
customId = button.customId,
|
|
|
|
isLargeButton = isLargeButton,
|
|
|
|
isLastButtonInGroup = false,
|
|
|
|
disabled = button.disabled,
|
|
|
|
selected = button.selected,
|
|
|
|
isBreadcrumbNew = button.isBreadcrumbNew,
|
|
|
|
warning = button.warning,
|
|
|
|
requiredChunk = button.selectedParam,
|
|
|
|
starterPackUpgrade = button.starterPackUpgrade,
|
|
|
|
unloadMod = button.unloadMod
|
|
|
|
})
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
local AddLargeButton = function(controller, options, button, index)
|
|
|
|
AddButton(controller, options, button, true, index)
|
|
|
|
end
|
|
|
|
|
|
|
|
local AddSmallButton = function(controller, options, button, index)
|
|
|
|
AddButton(controller, options, button, false, index)
|
|
|
|
end
|
|
|
|
|
|
|
|
local AddSpacer = function(options, index)
|
|
|
|
if index ~= nil then
|
|
|
|
options[index].isLastButtonInGroup = true
|
|
|
|
elseif 0 < #options then
|
|
|
|
options[#options].isLastButtonInGroup = true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
return {
|
|
|
|
AddButton = AddButton,
|
|
|
|
AddLargeButton = AddLargeButton,
|
|
|
|
AddSmallButton = AddSmallButton,
|
2023-04-11 13:46:45 -04:00
|
|
|
AddSpacer = AddSpacer,
|
|
|
|
RemoveButton = RemoveButton,
|
|
|
|
RemoveSpaces = RemoveSpaces,
|
|
|
|
GetButtonIndex = GetButtonIndex
|
2023-04-08 18:33:43 -04:00
|
|
|
}
|