From 628d58a4f9d7000d1b44f62e8a89063594b4b719 Mon Sep 17 00:00:00 2001 From: joseupp Date: Mon, 13 Mar 2023 09:33:36 +0100 Subject: [PATCH] Add features in public lobby --- data/ui_scripts/stats/__init__.lua | 116 +++++++++++++++++++++++------ 1 file changed, 93 insertions(+), 23 deletions(-) diff --git a/data/ui_scripts/stats/__init__.lua b/data/ui_scripts/stats/__init__.lua index 8fa3bc88..ad9dbe80 100644 --- a/data/ui_scripts/stats/__init__.lua +++ b/data/ui_scripts/stats/__init__.lua @@ -16,9 +16,9 @@ DataSources.MPStatsSettings = DataSourceHelpers.ListSetup( "MPStatsSettings", fu if dvarName == "cg_unlockall_loot" then Engine.SetDvar( "ui_enableAllHeroes", f1_arg1.value ) end - end + end - table.insert( optionsTable, CoD.OptionsUtility.CreateDvarSettings( controller, "Unlock All Loot", "Whether loot should be locked based on the player's stats or always unlocked.", "MPStatsSettings_unlock_loot", "cg_unlockall_loot", { + table.insert( optionsTable, CoD.OptionsUtility.CreateDvarSettings( controller, "Unlock All Loot", "Whether loot should be locked based on the player's stats or always unlocked.", "MPStatsSettings_unlock_loot", "cg_unlockall_loot", { { option = "MENU_DISABLED", value = 0, @@ -42,7 +42,7 @@ DataSources.MPStatsSettings = DataSourceHelpers.ListSetup( "MPStatsSettings", fu }, }, nil, updateDvar )) end - table.insert( optionsTable, CoD.OptionsUtility.CreateDvarSettings( controller, "Unlock All Attachments", "All attachments on weapons are unlocked.", "MPStatsSettings_unlockall_attachments", "cg_unlockall_attachments", { + table.insert( optionsTable, CoD.OptionsUtility.CreateDvarSettings( controller, "Unlock All Attachments", "All attachments on weapons are unlocked.", "MPStatsSettings_unlockall_attachments", "cg_unlockall_attachments", { { option = "MENU_DISABLED", value = 0, @@ -188,7 +188,7 @@ DataSources.MPStatsSettings = DataSourceHelpers.ListSetup( "MPStatsSettings", fu } }) - return optionsTable + return optionsTable end) if Dvar.cg_unlockall_loot:get() == true then @@ -208,7 +208,7 @@ LUI.createMenu.BoiiiStatsMenu = function ( controller ) self.buttonModel = Engine.CreateModel( Engine.GetModelForController( controller ), "BoiiiStatsMenu.buttonPrompts" ) self.anyChildUsesUpdateState = true - local GameSettingsBackground = CoD.GameSettings_Background.new( self, controller ) + local GameSettingsBackground = CoD.GameSettings_Background.new( self, controller ) GameSettingsBackground:setLeftRight( true, true, 0, 0 ) GameSettingsBackground:setTopBottom( true, true, 0, 0 ) GameSettingsBackground.MenuFrame.titleLabel:setText( Engine.Localize( "STATS SETTINGS" ) ) @@ -218,7 +218,7 @@ LUI.createMenu.BoiiiStatsMenu = function ( controller ) self:addElement( GameSettingsBackground ) self.GameSettingsBackground = GameSettingsBackground - local Options = CoD.Competitive_SettingsList.new( self, controller ) + local Options = CoD.Competitive_SettingsList.new( self, controller ) Options:setLeftRight( true, false, 26, 741 ) Options:setTopBottom( true, false, 135, 720 ) Options.Title.DescTitle:setText( Engine.Localize( "Stats" ) ) @@ -227,7 +227,7 @@ LUI.createMenu.BoiiiStatsMenu = function ( controller ) self:addElement( Options ) self.Options = Options - self:AddButtonCallbackFunction( self, controller, Enum.LUIButton.LUI_KEY_XBB_PSCIRCLE, nil, function ( element, menu, controller, model ) + self:AddButtonCallbackFunction( self, controller, Enum.LUIButton.LUI_KEY_XBB_PSCIRCLE, nil, function ( element, menu, controller, model ) GoBack( self, controller ) SetPerControllerTableProperty( controller, "disableGameSettingsOptions", nil ) return true @@ -236,10 +236,10 @@ LUI.createMenu.BoiiiStatsMenu = function ( controller ) return true end, false ) - GameSettingsBackground.MenuFrame:setModel( self.buttonModel, controller ) - Options.id = "Options" + GameSettingsBackground.MenuFrame:setModel( self.buttonModel, controller ) + Options.id = "Options" - self:processEvent( { + self:processEvent( { name = "menu_loaded", controller = controller } ) @@ -247,24 +247,24 @@ LUI.createMenu.BoiiiStatsMenu = function ( controller ) name = "update_state", menu = self } ) - if not self:restoreState() then + if not self:restoreState() then self.Options:processEvent( { name = "gain_focus", controller = controller } ) end - LUI.OverrideFunction_CallOriginalSecond( self, "close", function ( element ) + LUI.OverrideFunction_CallOriginalSecond( self, "close", function ( element ) element.GameSettingsBackground:close() element.Options:close() Engine.UnsubscribeAndFreeModel( Engine.GetModel( Engine.GetModelForController( controller ), "BoiiiStatsMenu.buttonPrompts" ) ) end ) - if PostLoadFunc then + if PostLoadFunc then PostLoadFunc( self, controller ) end - return self + return self end CoD.LobbyButtons.MP_STATS = { @@ -272,10 +272,34 @@ CoD.LobbyButtons.MP_STATS = { action = function ( self, element, controller, param, menu ) SetPerControllerTableProperty( controller, "disableGameSettingsOptions", true ) OpenPopup( menu, "BoiiiStatsMenu", controller ) - end, + end, customId = "btnMPStats" } +CoD.LobbyButtons.MP_START_GAME = { + stringRef = "MENU_START_GAME_CAPS", + action = function ( self, element, controller, param, menu ) + --Engine.SetDvar( "bot_difficulty", 3 ) + Engine.SetDvar( "party_minplayers", 1 ) + Engine.Exec( nil, "launchgame" ) + end, + customId = "btnStartGame" +} + +CoD.LobbyButtons.SETTING_UP_BOTS = { + stringRef = "MENU_SETUP_BOTS_CAPS", + action = function ( self, element, controller, param, menu ) + SetPerControllerTableProperty( controller, "disableGameSettingsOptions", true ) + OpenPopup( menu, "GameSettings_Bots", controller ) + end, + customId = "btnSettingUpBots" +} + +CoD.LobbyButtons.MP_CUSTOM_SETUP_GAME = { + stringRef = "MPUI_SETUP_GAME_CAPS", + action = OpenSetupGameMP, + customId = "btnSetupGame", +} local IsGamescomDemo = function () return Dvar.ui_execdemo_gamescom:get() @@ -302,7 +326,7 @@ local AddButton = function ( controller, options, button, isLargeButton ) button.warning = false if button.defaultState ~= nil then if button.defaultState == CoD.LobbyButtons.DISABLED then - button.disabled = true + button.disabled = true elseif button.defaultState == CoD.LobbyButtons.HIDDEN then button.hidden = true end @@ -376,6 +400,8 @@ local AddSpacer = function ( options ) end end +local MapVote = 0 + CoD.LobbyMenus.MPButtonsOnline = function ( f26_arg0, f26_arg1, f26_arg2 ) if f26_arg2 == 1 then AddLargeButton( f26_arg0, f26_arg1, CoD.LobbyButtons.MP_FIND_MATCH ) @@ -398,8 +424,52 @@ CoD.LobbyMenus.MPButtonsOnline = function ( f26_arg0, f26_arg1, f26_arg2 ) if not DisableBlackMarket() then AddSmallButton( f26_arg0, f26_arg1, CoD.LobbyButtons.BLACK_MARKET ) end - AddSpacer( f26_arg1 ) - AddSmallButton( f26_arg0, f26_arg1, CoD.LobbyButtons.MP_STATS ) + AddSpacer( f26_arg1 ) + AddSmallButton( f26_arg0, f26_arg1, CoD.LobbyButtons.MP_STATS ) + MapVote = 1 +end + +CoD.LobbyMenus.MPButtonsOnlinePublic = function ( f27_arg0, f27_arg1, f27_arg2 ) + if MapVote == 1 then + Engine.Exec(nil, "LobbyStopDemo") -- Enable map vote at start lobby + MapVote = 0 + end + AddLargeButton( f27_arg0, f27_arg1, CoD.LobbyButtons.MP_START_GAME ) --Launch match button + AddSpacer( f27_arg1 ) + AddLargeButton( f27_arg0, f27_arg1, CoD.LobbyButtons.MP_CAC ) + AddLargeButton( f27_arg0, f27_arg1, CoD.LobbyButtons.MP_SPECIALISTS ) + AddLargeButton( f27_arg0, f27_arg1, CoD.LobbyButtons.MP_SCORESTREAKS ) + if Engine.DvarBool( nil, "inventory_test_button_visible" ) then + AddLargeButton( f27_arg0, f27_arg1, CoD.LobbyButtons.MP_INVENTORY_TEST ) + end +--[[local f27_local0 = Engine.GetPlaylistInfoByID( Engine.GetPlaylistID() ) + if f27_local0 then + local f27_local1 = f27_local0.playlist.category + if f27_local1 == Engine.GetPlaylistCategoryIdByName( "core" ) or f27_local1 == Engine.GetPlaylistCategoryIdByName( "hardcore" ) then + AddSpacer( f27_arg1 ) + AddSmallButton( f27_arg0, f27_arg1, CoD.LobbyButtons.MP_PUBLIC_LOBBY_LEADERBOARD ) + end + end +]] if not DisableBlackMarket() then + AddSpacer( f27_arg1 ) + AddLargeButton( f27_arg0, f27_arg1, CoD.LobbyButtons.BLACK_MARKET ) + end + AddSpacer( f27_arg1 ) + AddSmallButton( f27_arg0, f27_arg1, CoD.LobbyButtons.MP_CUSTOM_SETUP_GAME ) --Setup game in public lobby +end + +CoD.LobbyMenus.MPButtonsArenaGame = function ( f31_arg0, f31_arg1, f31_arg2 ) + AddLargeButton( f31_arg0, f31_arg1, CoD.LobbyButtons.MP_START_GAME ) --Launch match button + AddSpacer( f31_arg1 ) + AddLargeButton( f31_arg0, f31_arg1, CoD.LobbyButtons.MP_CAC ) + AddLargeButton( f31_arg0, f31_arg1, CoD.LobbyButtons.MP_SPECIALISTS ) + AddLargeButton( f31_arg0, f31_arg1, CoD.LobbyButtons.MP_SCORESTREAKS ) + if not DisableBlackMarket() then + AddSpacer( f31_arg1 ) + AddLargeButton( f31_arg0, f31_arg1, CoD.LobbyButtons.BLACK_MARKET ) + end + AddSpacer( f31_arg1 ) + AddSmallButton( f31_arg0, f31_arg1, CoD.LobbyButtons.SETTING_UP_BOTS ) --Bot setting button in public lobby end CoD.LobbyMenus.ZMButtonsOnline = function ( f33_arg0, f33_arg1, f33_arg2 ) @@ -414,12 +484,11 @@ CoD.LobbyMenus.ZMButtonsOnline = function ( f33_arg0, f33_arg1, f33_arg2 ) AddSpacer( f33_arg1 ) end AddLargeButton( f33_arg0, f33_arg1, CoD.LobbyButtons.ZM_BUBBLEGUM_BUFFS ) - -- Disable these for now, demonware emulation still needs to be implemented - --AddLargeButton( f33_arg0, f33_arg1, CoD.LobbyButtons.ZM_MEGACHEW_FACTORY ) - --AddLargeButton( f33_arg0, f33_arg1, CoD.LobbyButtons.ZM_GOBBLEGUM_RECIPES ) + AddLargeButton( f33_arg0, f33_arg1, CoD.LobbyButtons.ZM_MEGACHEW_FACTORY ) + AddLargeButton( f33_arg0, f33_arg1, CoD.LobbyButtons.ZM_GOBBLEGUM_RECIPES ) AddLargeButton( f33_arg0, f33_arg1, CoD.LobbyButtons.ZM_BUILD_KITS ) - AddSpacer( f33_arg1 ) - AddSmallButton( f33_arg0, f33_arg1, CoD.LobbyButtons.MP_STATS ) + AddSpacer( f33_arg1 ) + AddSmallButton( f33_arg0, f33_arg1, CoD.LobbyButtons.MP_STATS ) end local targetButtons = { @@ -455,6 +524,7 @@ local targetButtons = { [LobbyData.UITargets.UI_MPLOBBYONLINETHEATER.id] = CoD.LobbyMenus.ButtonsTheaterGame, [LobbyData.UITargets.UI_ZMLOBBYONLINETHEATER.id] = CoD.LobbyMenus.ButtonsTheaterGame } + CoD.LobbyMenus.AddButtonsForTarget = function ( controller, id ) local buttonFunc = targetButtons[id] local model = nil