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 local RemoveButton = function(buttonTable, button) if not button then return end for id, v in pairs(buttonTable) do if buttonTable[id].optionDisplay == button.stringRef then table.remove(buttonTable, id) end end end local RemoveSpaces = function(buttonTable) for id, v in pairs(buttonTable) do buttonTable[id].isLastButtonInGroup = false end end local GetButtonIndex = function(buttonTable, button) if not button then return nil end for id, v in pairs(buttonTable) do if buttonTable[id].optionDisplay == button.stringRef then return id end end end 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, AddSpacer = AddSpacer, RemoveButton = RemoveButton, RemoveSpaces = RemoveSpaces, GetButtonIndex = GetButtonIndex }