t7x/data/ui_scripts/frontend_menus/DataSources_GameSettingsFlyoutButtons.lua
2023-04-11 21:33:50 -02:30

252 lines
8.7 KiB
Lua

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