ui/RunTimerLabel.razor
@using Sandbox;
@using Sandbox.UI;
@inherits Panel
@attribute [StyleSheet("RunTimerLabel.razor.scss")]

<root style="opacity: @(Manager.Instance.GameState == GameState.BuyPhase ? 1f : 0.4f); right: @(70 + (Manager.Instance.IsMuted ? 112 : 60))px;">
	@{
		TimeSpan time = (Manager.Instance.GameState == GameState.Victory || Manager.Instance.GameState == GameState.Failure)
			? TimeSpan.FromSeconds(Manager.Instance.FinalRunTime)
			: TimeSpan.FromSeconds(Manager.Instance.TimeSinceRunStart.Relative);
	}
	
	<div class="message">
		@(time.TotalSeconds > 3600 ? time.ToString(@"hh\:mm\:ss") : time.ToString(@"mm\:ss"))
	</div>
</root>

@code
{
	protected override int BuildHash()
	{
		var seconds = MathX.FloorToInt(Manager.Instance.TimeSinceRunStart.Relative);

		return HashCode.Combine(
			seconds,
			Manager.Instance.GameState,
			Manager.Instance.IsMuted
		);
	}
}