Skip to content

Create rbx2 #207

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
261 changes: 261 additions & 0 deletions rbx2
Original file line number Diff line number Diff line change
@@ -0,0 +1,261 @@

global function InitControlsMenu

struct
{
var menu
table<var,string> buttonDescriptions
var autoSprintSetting
array<var> advanceControlsDisableItems
array<var> advanceControlsVisibleItems
array<var> advanceControlsOffVisibleItems
var gamepadLayoutLabel
var itemDescriptionBox
} file

void function InitControlsMenu()
{
var menu = GetMenu( "ControlsMenu" )
file.menu = menu

AddMenuEventHandler( menu, eUIEvent.MENU_OPEN, OnOpenControlsMenu )
AddMenuEventHandler( menu, eUIEvent.MENU_CLOSE, OnCloseControlsMenu )

var button

file.itemDescriptionBox = Hud_GetChild( menu, "LblMenuItemDescription" )

#if PC_PROG
button = Hud_GetChild( menu, "ExtrasMenu" )
SetupButton( button, "Extras", "Enable and control hidden features" )
AddButtonEventHandler( button, UIE_CLICK, AdvanceMenuEventHandler( GetMenu( "ExtrasMenu" ) ) )

button = Hud_GetChild( menu, "BtnMouseKeyboardBindings" )
SetupButton( button, "#KEY_BINDINGS", "#MOUSE_KEYBOARD_MENU_CONTROLS_DESC" )
AddButtonEventHandler( button, UIE_CLICK, AdvanceMenuEventHandler( GetMenu( "MouseKeyboardBindingsMenu" ) ) )

SetupButton( Hud_GetChild( Hud_GetChild( menu, "SldMouseSensitivity" ), "BtnDropButton" ), "#MOUSE_SENSITIVITY", "#MOUSE_KEYBOARD_MENU_SENSITIVITY_DESC" )
SetupButton( Hud_GetChild( Hud_GetChild( menu, "SldMouseSensitivityZoomed" ), "BtnDropButton" ), "#MOUSE_SENSITIVITY_ZOOM", "#MOUSE_KEYBOARD_MENU_SENSITIVITY_ZOOM_DESC" )
SetupButton( Hud_GetChild( menu, "SwchMouseAcceleration" ), "#MOUSE_ACCELERATION", "#MOUSE_KEYBOARD_MENU_ACCELERATION_DESC" )
SetupButton( Hud_GetChild( menu, "SwchMouseInvertY" ), "#MOUSE_INVERT", "#MOUSE_KEYBOARD_MENU_INVERT_DESC" )
#endif //PC_PROG

button = Hud_GetChild( menu, "BtnGamepadLayout" )
SetupButton( button, "#BUTTON_STICK_LAYOUT", "#GAMEPAD_MENU_CONTROLS_DESC" )
AddButtonEventHandler( button, UIE_CLICK, AdvanceMenuEventHandler( GetMenu( "GamepadLayoutMenu" ) ) )

//button = Hud_GetChild( menu, "BtnControllerResetToDefaults" )
//SetupButton( button, "#RESET_CONTROLLER_TO_DEFAULT", "#RESET_CONTROLLER_TO_DEFAULT_DESC" )
//AddButtonEventHandler( button, UIE_CLICK, Controller_ResetToDefaultsDialog )

//BtnControllerOpenAdvancedMenu
button = Hud_GetChild( menu, "BtnControllerOpenAdvancedMenu" )
SetupButton( button, "#OPEN_ADVANCED_LOOK_CONTROLS", "#OPEN_ADVANCED_LOOK_CONTROLS_DESC" )
AddButtonEventHandler( button, UIE_CLICK, AdvanceMenuEventHandler( GetMenu( "ControlsAdvancedLookMenu" ) ) )

button = SetupButton( Hud_GetChild( menu, "SwchLookSensitivity" ), "#LOOK_SENSITIVITY", "#GAMEPAD_MENU_SENSITIVITY_DESC" )
file.advanceControlsDisableItems.append( button )

button = SetupButton( Hud_GetChild( menu, "SwchLookSensitivityADS" ), "#LOOK_SENSITIVITY_ADS", "#GAMEPAD_MENU_SENSITIVITY_ADS_DESC" )
file.advanceControlsDisableItems.append( button )

SetupButton( Hud_GetChild( menu, "SwchLookInvert" ), "#LOOK_INVERT", "#GAMEPAD_MENU_INVERT_DESC" )

button = SetupButton( Hud_GetChild( menu, "SwchLookDeadzone" ), "#LOOK_DRIFT_GUARD", "#GAMEPAD_MENU_DRIFT_GUARD_DESC" )
file.advanceControlsDisableItems.append( button )

SetupButton( Hud_GetChild( menu, "SwchMoveDeadzone" ), "#MOVE_DRIFT_GUARD", "#GAMEPAD_MENU_MOVE_DRIFT_GUARD_DESC" )

#if DURANGO_PROG
button = SetupButton( Hud_GetChild( menu, "SwchLookAiming" ), "#LOOKSTICK_AIMING", "#GAMEPAD_MENU_LOOK_AIMING_DESC_DURANGO" )
#else // #if DURANGO_PROG
button = SetupButton( Hud_GetChild( menu, "SwchLookAiming" ), "#LOOKSTICK_AIMING", "#GAMEPAD_MENU_LOOK_AIMING_DESC" )
#endif // #if DURANGO_PROG
file.advanceControlsDisableItems.append( button )

SetupButton( Hud_GetChild( menu, "SwchVibration" ), "#VIBRATION", "#GAMEPAD_MENU_VIBRATION_DESC" )
SetupButton( Hud_GetChild( menu, "SwchHoldToCrouch" ), "#HOLDTOCROUCH", "#GAMEPAD_MENU_HOLDTOCROUCH_DESC" )
SetupButton( Hud_GetChild( menu, "SwchToggleGamepadADS" ), "#GAMEPAD_TOGGLE_ADS", "#GAMEPAD_TOGGLE_ADS_DESC" )

file.autoSprintSetting = Hud_GetChild( menu, "SwchAutoSprint" )
SetupButton( file.autoSprintSetting, "#MENU_AUTOMATIC_SPRINT", "#OPTIONS_MENU_AUTOSPRINT_DESC" )

SetupButton( Hud_GetChild( menu, "SwchHoldToRodeo" ), "#MENU_HOLD_TO_RODEO", "#MENU_HOLD_TO_RODEO_DESC" )
SetupButton( Hud_GetChild( menu, "SwchEnableCheats" ), "Enable Cheats", "Enables extra options not usually available such as:\n\n- `1sv_gravity`0\n\n- `1host_timescale`0\n\n- `1thirdperson`0" )

file.advanceControlsVisibleItems.append( Hud_GetChild( menu, "SwchLookSensitivity_AdvLabel" ) )
file.advanceControlsVisibleItems.append( Hud_GetChild( menu, "SwchLookSensitivityADS_AdvLabel" ) )
file.advanceControlsVisibleItems.append( Hud_GetChild( menu, "SwchLookAiming_AdvLabel" ) )
file.advanceControlsVisibleItems.append( Hud_GetChild( menu, "SwchLookDeadzone_AdvLabel" ) )
file.advanceControlsVisibleItems.append( Hud_GetChild( menu, "LblAdvControllerOn" ) )

file.advanceControlsOffVisibleItems.append( Hud_GetChild( menu, "LblAdvControllerOff" ) )

file.gamepadLayoutLabel = Hud_GetChild( menu, "LblGamepadLayout" )

#if PC_PROG
AddEventHandlerToButtonClass( menu, "RuiFooterButtonClass", UIE_GET_FOCUS, FooterButton_Focused )
#endif //PC_PROG

AddMenuFooterOption( menu, BUTTON_A, "#A_BUTTON_SELECT" )
AddMenuFooterOption( menu, BUTTON_B, "#B_BUTTON_BACK", "#BACK" )
AddMenuFooterOption( menu, BUTTON_BACK, "#BACKBUTTON_RESTORE_DEFAULTS", "#RESET_CONTROLLER_TO_DEFAULT", Controller_ResetToDefaultsDialog )

#if CONSOLE_PROG
AddMenuFooterOption( menu, BUTTON_SHOULDER_LEFT, "#LS_BUTTON_REVIEW_TERMS", "#REVIEW_TERMS", OpenReviewTermsDialog, AreTermsAccepted ) // Console only, waiting on PC text
#endif // CONSOLE_PROG
#if DURANGO_PROG
AddMenuFooterOption( menu, BUTTON_Y, "#Y_BUTTON_XBOX_HELP", "", OpenXboxHelp )
#endif // DURANGO_PROG
}

bool function IsAffectedByAdvancedControls( var button )
{
foreach( var item in file.advanceControlsDisableItems )
{
if ( item == button )
return true
}
return false
}

void function SetStatesForCustomEnable()
{
bool customGamepadIsEnabled = GetConVarBool( "gamepad_custom_enabled" )

foreach( var item in file.advanceControlsDisableItems )
Hud_SetEnabled( item, !customGamepadIsEnabled )

foreach( var item in file.advanceControlsVisibleItems )
Hud_SetVisible( item, customGamepadIsEnabled )
foreach( var item in file.advanceControlsOffVisibleItems )
Hud_SetVisible( item, !customGamepadIsEnabled )
}

void function RefreshGamepadLayoutLabel()
{
Hud_SetText( file.gamepadLayoutLabel, GetGamepadButtonLayoutName() )

int id = GetConVarInt( "gamepad_button_layout" )
if ( id == 0 )
Hud_SetColor( file.gamepadLayoutLabel, 255, 255, 255, 127 )
else
Hud_SetColor( file.gamepadLayoutLabel, 244, 213, 166, 255 )
}

void function OnOpenControlsMenu()
{
UI_SetPresentationType( ePresentationType.NO_MODELS )

Hud_SetEnabled( file.autoSprintSetting, !IsAutoSprintForced() )

RefreshGamepadLayoutLabel()

SetStatesForCustomEnable()
}

void function OnCloseControlsMenu()
{
if ( IsConnected() )
{
int holdToRodeoState = GetConVarInt( "cl_hold_to_rodeo_enable" )
ClientCommand( "HoldToRodeo " + holdToRodeoState )
}

SavePlayerSettings()
}

void function OnOpenExtrasMenu()
{
UI_SetPresentationType( ePresentationType.NO_MODELS )

Hud_SetEnabled( file.autoSprintSetting, !IsAutoSprintForced() )

RefreshGamepadLayoutLabel()

SetStatesForCustomEnable()
}

void function OnCloseExtrasMenu()
{
if ( IsConnected() )
{
int holdToRodeoState = GetConVarInt( "cl_hold_to_rodeo_enable" )
ClientCommand( "HoldToRodeo " + holdToRodeoState )
}

SavePlayerSettings()
}

var function SetupButton( var button, string buttonText, string description )
{
SetButtonRuiText( button, buttonText )
file.buttonDescriptions[ button ] <- description
AddButtonEventHandler( button, UIE_GET_FOCUS, Button_Focused )
return button
}

void function Button_Focused( var button )
{
string description = file.buttonDescriptions[button]
RuiSetString( Hud_GetRui( file.itemDescriptionBox ), "description", description )
}

void function Controller_ResetToDefaultsDialog( var button )
{
DialogData dialogData
dialogData.header = "#RESET_CONTROLLER_TO_DEFAULT_DIALOG"
dialogData.message = "#RESET_CONTROLLER_TO_DEFAULT_DIALOG_DESC"
AddDialogButton( dialogData, "#RESTORE", Controller_ResetToDefaults )
AddDialogButton( dialogData, "#CANCEL" )
OpenDialog( dialogData )

EmitUISound( "menu_accept" )
}

void function Controller_ResetToDefaults()
{
SetConVarToDefault( "autosprint_type" )
SetConVarToDefault( "cl_hold_to_rodeo_enable" )
SetConVarToDefault( "sv_cheats" )

SetConVarToDefault( "gamepad_togglecrouch_hold" )
SetConVarToDefault( "gamepad_toggle_ads" )
SetConVarToDefault( "gamepad_aim_speed" )
SetConVarToDefault( "gamepad_aim_speed_ads" )
SetConVarToDefault( "joy_inverty" )
SetConVarToDefault( "gamepad_look_curve" )
SetConVarToDefault( "gamepad_deadzone_index_look" )
SetConVarToDefault( "gamepad_deadzone_index_move" )
SetConVarToDefault( "joy_rumble" )

SetConVarToDefault( "gamepad_button_layout" )
SetConVarToDefault( "gamepad_buttons_are_southpaw" )
SetConVarToDefault( "gamepad_stick_layout" )

SetConVarToDefault( "gamepad_custom_pilot" )
SetConVarToDefault( "gamepad_custom_titan" )

SetConVarToDefault( "gamepad_custom_enabled" )
SetStatesForCustomEnable()

ExecConfig( "gamepad_stick_layout_default.cfg" )
ExecConfig( "gamepad_button_layout_default.cfg" )

#if PC_PROG
SetConVarToDefault( "mouse_sensitivity" )
SetConVarToDefault( "mouse_sensitivity_zoomed" )
SetConVarToDefault( "m_acceleration" )
SetConVarToDefault( "m_invert_pitch" )
#endif //PC_PROG

RefreshGamepadLayoutLabel()
EmitUISound( "menu_advocategift_open" )
}

#if PC_PROG
void function FooterButton_Focused( var button )
{
RuiSetString( Hud_GetRui( file.itemDescriptionBox ), "description", "" )
}
#endif //PC_PROG