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
);
}
}