Example/Complex/PlayerWalkControllerComplex.Presets.cs
using Sandbox;
namespace XMovement;

public partial class PlayerWalkControllerComplex : Component
{
	// this is a kinda crappy way to do presets.

	/// <summary>
	/// Values from popular games.
	/// </summary>
	[Property, Group( "Quick Presets" ), Change( "SetupFromPreset" )] public MovementPresets MovementPreset { get; set; }

	private void SetupFromPreset()
	{
		if ( MovementPreset == MovementPresets.None ) return;
		switch ( MovementPreset )
		{
			case MovementPresets.None:
				break;
			case MovementPresets.HalfLife:
				Controller.Gravity = new Vector3( 0, 0, 800 );
				Controller.BaseFriction = 4f;
				Controller.StopSpeed = 100f;
				Controller.BaseAcceleration = 10f;
				Controller.AirAcceleration = 10f;

				EnableWalking = false;

				DefaultSpeed = 120f;

				RunByDefault = true;
				RunSpeed = 320f;

				CrouchSpeed = RunSpeed * 0.333f;

				JumpPower = 268.3281572999747f;
				break;
			case MovementPresets.HalfLife2:
				Controller.Gravity = new Vector3( 0, 0, 600 );
				Controller.BaseFriction = 4f;
				Controller.StopSpeed = 100f;
				Controller.BaseAcceleration = 10f;
				Controller.AirAcceleration = 10f;

				EnableWalking = true;
				WalkSpeed = 150f;

				DefaultSpeed = 190f;

				RunByDefault = false;
				RunSpeed = 320f;

				CrouchSpeed = DefaultSpeed * 0.333f;

				JumpPower = 160f;
				break;
			case MovementPresets.CounterStrikeSource:
				Controller.Gravity = new Vector3( 0, 0, 800 );
				Controller.BaseFriction = 4f;
				Controller.StopSpeed = 100f;
				Controller.BaseAcceleration = 10f;
				Controller.AirAcceleration = 10f;

				EnableWalking = false;

				DefaultSpeed = 100f;

				RunByDefault = true;
				RunSpeed = 320f;

				CrouchSpeed = RunSpeed * 0.34f;

				JumpPower = 268.3281572999747f;
				break;
			case MovementPresets.TroubleInTerroristTown:
				Controller.Gravity = new Vector3( 0, 0, 600 );
				Controller.BaseFriction = 8f;
				Controller.StopSpeed = 10f;
				Controller.BaseAcceleration = 10f;
				Controller.AirAcceleration = 50f;

				EnableWalking = false;

				DefaultSpeed = 120f;

				RunByDefault = true;
				RunSpeed = 220f;

				CrouchSpeed = 66f;

				JumpPower = 160;
				break;
			case MovementPresets.ThreeThievesTroubleInTerroristTown:
				Controller.Gravity = new Vector3( 0, 0, 800 );
				Controller.BaseFriction = 8f;
				Controller.StopSpeed = 10f;
				Controller.BaseAcceleration = 10f;
				Controller.AirAcceleration = 50f;

				EnableWalking = false;

				DefaultSpeed = 120f;

				RunByDefault = true;
				RunSpeed = 220f;

				CrouchSpeed = 66f;

				JumpPower = 268.3281572999747f;
				break;
			default:
				break;
		}
	}
	public enum MovementPresets
	{
		None,
		[Title( "Half-Life" )] HalfLife,
		[Title( "Half-Life 2" )] HalfLife2,
		[Title( "Counter-Strike: Source" )] CounterStrikeSource,
		[Title( "Trouble in Terrorist Town!" )] TroubleInTerroristTown,
		[Title( "Three Thieves: Trouble in Terrorist Town!" )] ThreeThievesTroubleInTerroristTown,
	}
}