UI/SpawnMenu/UtilitiesPage.razor
@using Sandbox;
@using Sandbox.UI;
@inherits UtilityPage
@namespace Sandbox
@attribute [Icon( "🔧" )]
@attribute [Title( "#spawnmenu.utility.utilities" )]
@attribute [Group( "#spawnmenu.utility.group.utilities" )]
@attribute [Order( 0 )]
<root class="page" style="flex-direction: column;">
<ControlSheet Target="@Settings" PropertyFilter="@FilterProperties" />
</root>
@code
{
readonly LocalPlayerSettings Settings = new();
static bool FilterProperties( SerializedProperty property ) => property.HasAttribute<PropertyAttribute>();
// Write through the console system so Saved and UserInfo convar behavior is preserved.
sealed class LocalPlayerSettings
{
[Property, Title( "#spawnmenu.utility.view_tilt" ), Group( "#spawnmenu.utility.camera" )]
[Description( "#spawnmenu.utility.view_tilt_description" ), Range( 0f, 1f ), Step( 0.05f ), Order( 0 )]
public float ViewTilt
{
get => GamePreferences.ViewTilt;
set => ConsoleSystem.SetValue( "sandbox.viewtilt", value.Clamp( 0f, 1f ) );
}
[Property, Title( "#spawnmenu.utility.view_bobbing" ), Group( "#spawnmenu.utility.camera" ), Order( 1 )]
[Description( "#spawnmenu.utility.view_bobbing_description" )]
public bool ViewBobbing
{
get => GamePreferences.ViewBobbing;
set => ConsoleSystem.SetValue( "sandbox.viewbob", value );
}
[Property, Title( "#spawnmenu.utility.screen_shake" ), Group( "#spawnmenu.utility.camera" )]
[Range( 0.1f, 2f ), Step( 0.1f ), Order( 2 )]
public float ScreenShake
{
get => GamePreferences.Screenshake;
set => ConsoleSystem.SetValue( "sandbox.screenshake", value.Clamp( 0.1f, 2f ) );
}
[Property, Title( "#spawnmenu.utility.auto_switch" ), Group( "#spawnmenu.utility.weapons" )]
[Description( "#spawnmenu.utility.auto_switch_description" ), Order( 3 )]
public bool AutoSwitch
{
get => GamePreferences.AutoSwitch;
set => ConsoleSystem.SetValue( "sandbox.autoswitch", value );
}
[Property, Title( "#spawnmenu.utility.show_hints" ), Group( "#spawnmenu.utility.interface" ), Order( 5 )]
public bool ShowHints
{
get => Hints.ShowHints;
set => ConsoleSystem.SetValue( "sandbox.showhints", value );
}
}
}