ui/PanelComponents/PauseMenu.razor
@using Sandbox;
@using Sandbox.UI;
@namespace SS1
@inherits PanelComponent

@*<root class="@(Manager.Instance.IsPauseMenuOpen && !Manager.Instance.IsGameOver ? "show" : "")">*@
<root class="@(Manager.Instance.IsPauseMenuOpen ? "show" : "")">

	@if(Manager.Instance.Difficulty != 0) {
		<label class="difficulty" style="color:@(Manager.GetDifficultyLabelColor(Manager.Instance.Difficulty).Rgba);">@Manager.GetNameForDifficulty(Manager.Instance.Difficulty)</label>
	}

	<label class="title">@(Manager.Instance.NumPlayers > 1 ? "Menu" : "Paused")</label>

	@{
		var time = Manager.Instance.IsGameOver
			? TimeSpan.FromSeconds( Manager.Instance.FinalRunTime )
			: TimeSpan.FromSeconds( Manager.Instance.TimeSinceRunStart.Relative );

		string timeStr = time.TotalSeconds > 3600 ? time.ToString(@"hh\:mm\:ss") : time.ToString(@"mm\:ss");
	}

	<label class="timer">@($"Run Time\n{timeStr}")</label>

	<div class="content">
		<button onclick=@(() => Manager.Instance.SetPaused(false))>Resume</button>
		<button class="red" onclick=@(() => Restart())>Restart</button>
		<button class="red" onclick=@(() => ReturnToMainMenu())>Quit to Main Menu</button>
	</div>
</root>

@code
{
	public static PauseMenu Instance { get; private set; }
	[Property] SceneFile GameScene { get; set; }
	[Property] SceneFile MenuScene { get; set; }

	protected override void OnAwake()
	{
		Instance = this;
	}

	// protected override void OnUpdate()
	// {
	// 	if(Input.EscapePressed)
	// 	{
	// 		IsOpen = !IsOpen;
	// 		Input.EscapePressed = false;
	// 	}
	// }

	public void Restart()
	{
		// Game.ActiveScene.Load(GameScene);
		Manager.Instance.Restart();
	}

	public void ReturnToMainMenu()
	{
		Game.ActiveScene.Load(MenuScene);
	}

	protected override int BuildHash()
	{
		var time = Manager.Instance.IsGameOver
			? TimeSpan.FromSeconds( Manager.Instance.FinalRunTime )
			: TimeSpan.FromSeconds( Manager.Instance.TimeSinceRunStart.Relative );

		return System.HashCode.Combine(
			Manager.Instance.IsPauseMenuOpen,
			time.Seconds
		);
	}
}