local f0_local0 = function ( f1_arg0, f1_arg1 ) if not CoD.useMouse then return else f1_arg0.Options:setHandleMouse( true ) f1_arg0.Options:registerEventHandler( "leftclick_outside", function ( element, event ) CoD.PCUtil.SimulateButtonPress( event.controller, Enum.LUIButton.LUI_KEY_XBB_PSCIRCLE ) return true end ) end end local PostLoadFunc = function ( f3_arg0, f3_arg1 ) f0_local0( f3_arg0, f3_arg1 ) f3_arg0.disableBlur = true f3_arg0.disablePopupOpenCloseAnim = true Engine.SetModelValue( Engine.CreateModel( Engine.GetGlobalModel(), "GameSettingsFlyoutOpen" ), true ) LUI.OverrideFunction_CallOriginalSecond( f3_arg0, "close", function ( element ) Engine.SetModelValue( Engine.CreateModel( Engine.GetGlobalModel(), "GameSettingsFlyoutOpen" ), false ) end ) f3_arg0:registerEventHandler( "occlusion_change", function ( element, event ) local f5_local0 = element:getParent() if f5_local0 then local f5_local1 = f5_local0:getFirstChild() while f5_local1 ~= nil do if f5_local1.menuName == "Lobby" then break end f5_local1 = f5_local1:getNextSibling() end if f5_local1 then if event.occluded == true then f5_local1:setAlpha( 0 ) end f5_local1:setAlpha( 1 ) end end element:OcclusionChange( event ) end ) f3_arg0:subscribeToModel( Engine.CreateModel( Engine.GetGlobalModel(), "lobbyRoot.lobbyNav", true ), function ( model ) local f6_local0 = f3_arg0.occludedBy while f6_local0 do if f6_local0.occludedBy ~= nil then f6_local0 = f6_local0.occludedBy end while f6_local0 and f6_local0.menuName ~= "Lobby" do f6_local0 = GoBack( f6_local0, f3_arg1 ) end Engine.SendClientScriptNotify( f3_arg1, "menu_change" .. Engine.GetLocalClientNum( f3_arg1 ), "Main", "closeToMenu" ) return end GoBack( f3_arg0, f3_arg1 ) end, false ) end DataSources.GameSettingsFlyoutButtonsCustom = DataSourceHelpers.ListSetup( "GameSettingsFlyoutButtonsCustom", function ( f7_arg0 ) local f7_local0 = { { optionDisplay = "MPUI_CHANGE_MAP_CAPS", customId = "btnChangeMap", action = OpenChangeMap }, -- { -- optionDisplay = "MPUI_CHANGE_GAME_MODE_CAPS", -- customId = "btnChangeGameMode", -- action = OpenChangeGameMode -- }, { optionDisplay = "MENU_SETUP_BOTS_CAPS", customId = "btnSetupBots", action = OpenBotSettings }, { optionDisplay = "MPUI_EDIT_GAME_RULES_CAPS", customId = "btnEditGameRules", action = OpenEditGameRules } } -- if CoD.isPC and IsServerBrowserEnabled() then -- table.insert( f7_local0, { -- optionDisplay = "PLATFORM_SERVER_SETTINGS_CAPS", -- customID = "btnServerSettings", -- action = OpenServerSettings -- } ) -- end local f7_local1 = {} for f7_local5, f7_local6 in ipairs( f7_local0 ) do table.insert( f7_local1, { models = { displayText = Engine.Localize( f7_local6.optionDisplay ), customId = f7_local6.customId, disabled = f7_local6.disabled }, properties = { title = f7_local6.optionDisplay, desc = f7_local6.desc, action = f7_local6.action, actionParam = f7_local6.actionParam } } ) end return f7_local1 end, nil, nil, nil ) LUI.createMenu.GameSettingsFlyoutMPCustom = function ( controller ) local self = CoD.Menu.NewForUIEditor( "GameSettingsFlyoutMPCustom" ) if PreLoadFunc then PreLoadFunc( self, controller ) end self.soundSet = "default" self:setOwner( controller ) self:setLeftRight( true, true, 0, 0 ) self:setTopBottom( true, true, 0, 0 ) self:playSound( "menu_open", controller ) self.buttonModel = Engine.CreateModel( Engine.GetModelForController( controller ), "GameSettingsFlyoutMP.buttonPrompts" ) self.anyChildUsesUpdateState = true local Options = LUI.UIList.new( self, controller, -2, 0, nil, false, false, 0, 0, false, false ) Options:makeFocusable() Options:setLeftRight( true, false, 243.43, 523.43 ) Options:setTopBottom( true, false, 177.56, 329.56 ) Options:setYRot( 25 ) Options:setWidgetType( CoD.FE_List1ButtonLarge_PH ) Options:setVerticalCount( 3 ) Options:setSpacing( -2 ) Options:setDataSource( "GameSettingsFlyoutButtonsCustom" ) Options:registerEventHandler( "gain_focus", function ( element, event ) local f9_local0 = nil if element.gainFocus then f9_local0 = element:gainFocus( event ) elseif element.super.gainFocus then f9_local0 = element.super:gainFocus( event ) end CoD.Menu.UpdateButtonShownState( element, self, controller, Enum.LUIButton.LUI_KEY_XBA_PSCROSS ) return f9_local0 end ) Options:registerEventHandler( "lose_focus", function ( element, event ) local f10_local0 = nil if element.loseFocus then f10_local0 = element:loseFocus( event ) elseif element.super.loseFocus then f10_local0 = element.super:loseFocus( event ) end return f10_local0 end ) self:AddButtonCallbackFunction( Options, controller, Enum.LUIButton.LUI_KEY_XBA_PSCROSS, "ENTER", function ( element, menu, controller, model ) ProcessListAction( self, element, controller ) return true end, function ( element, menu, controller ) CoD.Menu.SetButtonLabel( menu, Enum.LUIButton.LUI_KEY_XBA_PSCROSS, "MENU_SELECT" ) return true end, false ) self:addElement( Options ) self.Options = Options self:mergeStateConditions( { { stateName = "Local", condition = function ( menu, element, event ) return IsLobbyNetworkModeLAN() end } } ) self:subscribeToModel( Engine.GetModel( Engine.GetGlobalModel(), "lobbyRoot.lobbyNetworkMode" ), function ( model ) local f14_local0 = self local f14_local1 = { controller = controller, name = "model_validation", modelValue = Engine.GetModelValue( model ), modelName = "lobbyRoot.lobbyNetworkMode" } CoD.Menu.UpdateButtonShownState( f14_local0, self, controller, Enum.LUIButton.LUI_KEY_XBY_PSTRIANGLE ) end ) self:subscribeToModel( Engine.GetModel( Engine.GetGlobalModel(), "lobbyRoot.lobbyNav" ), function ( model ) local f15_local0 = self local f15_local1 = { controller = controller, name = "model_validation", modelValue = Engine.GetModelValue( model ), modelName = "lobbyRoot.lobbyNav" } CoD.Menu.UpdateButtonShownState( f15_local0, self, controller, Enum.LUIButton.LUI_KEY_XBY_PSTRIANGLE ) end ) self:AddButtonCallbackFunction( self, controller, Enum.LUIButton.LUI_KEY_XBB_PSCIRCLE, nil, function ( element, menu, controller, model ) GoBack( self, controller ) ClearMenuSavedState( menu ) return true end, function ( element, menu, controller ) CoD.Menu.SetButtonLabel( menu, Enum.LUIButton.LUI_KEY_XBB_PSCIRCLE, "" ) return false end, false ) self:AddButtonCallbackFunction( self, controller, Enum.LUIButton.LUI_KEY_START, "M", function ( element, menu, controller, model ) GoBackAndOpenOverlayOnParent( self, "StartMenu_Main", controller ) return true end, function ( element, menu, controller ) CoD.Menu.SetButtonLabel( menu, Enum.LUIButton.LUI_KEY_START, "MENU_MENU" ) return true end, false ) self:AddButtonCallbackFunction( self, controller, Enum.LUIButton.LUI_KEY_XBY_PSTRIANGLE, "S", function ( element, menu, controller, model ) if not IsLAN() and not IsPlayerAGuest( controller ) and IsPlayerAllowedToPlayOnline( controller ) then GoBackAndOpenOverlayOnParent( self, "Social_Main", controller ) return true else end end, function ( element, menu, controller ) if not IsLAN() and not IsPlayerAGuest( controller ) and IsPlayerAllowedToPlayOnline( controller ) then CoD.Menu.SetButtonLabel( menu, Enum.LUIButton.LUI_KEY_XBY_PSTRIANGLE, "" ) return false else return false end end, false ) self:AddButtonCallbackFunction( self, controller, Enum.LUIButton.LUI_KEY_LB, nil, function ( element, menu, controller, model ) SendButtonPressToOccludedMenu( menu, controller, model, Enum.LUIButton.LUI_KEY_LB ) return true end, function ( element, menu, controller ) CoD.Menu.SetButtonLabel( menu, Enum.LUIButton.LUI_KEY_LB, "" ) return false end, false ) self:AddButtonCallbackFunction( self, controller, Enum.LUIButton.LUI_KEY_RB, nil, function ( element, menu, controller, model ) SendButtonPressToOccludedMenu( menu, controller, model, Enum.LUIButton.LUI_KEY_RB ) return true end, function ( element, menu, controller ) CoD.Menu.SetButtonLabel( menu, Enum.LUIButton.LUI_KEY_RB, "" ) return false end, false ) Options.id = "Options" self:processEvent( { name = "menu_loaded", controller = controller } ) self:processEvent( { name = "update_state", menu = self } ) if not self:restoreState() then self.Options:processEvent( { name = "gain_focus", controller = controller } ) end LUI.OverrideFunction_CallOriginalSecond( self, "close", function ( element ) element.Options:close() Engine.UnsubscribeAndFreeModel( Engine.GetModel( Engine.GetModelForController( controller ), "GameSettingsFlyoutMP.buttonPrompts" ) ) end ) if PostLoadFunc then PostLoadFunc( self, controller ) end return self end