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

<root>
	@*@if(Manager.Instance.IsGameOver || !(Manager.Instance.HasSpawnedBoss && Manager.Instance.IsPauseMenuOpen))*@
	<TimerPanel></TimerPanel>

	<PlayerNametags></PlayerNametags>

	@{
		var hoveredStatus = Manager.Instance.HoveredStatus;
	}

	@if (hoveredStatus != null)
	{
		<StatusTooltip Status=@hoveredStatus style="left:@(Mouse.Position.x * Panel.ScaleFromScreen + 50)px; top:@(Mouse.Position.y * Panel.ScaleFromScreen - 50)px;"></StatusTooltip>
	}

	@if (Manager.Instance.IsGameOver && Manager.Instance.ShowFinalPanel)
	{
		<DeathPanel />
	}

	@if (Manager.Instance.HasSpawnedBoss && Manager.Instance.Boss != null && !Manager.Instance.IsBossDead)
	{
		<BossNametag [email protected] [email protected] />
	}

	@if (Manager.Instance.ElapsedTime < 0.75f)
	{
		<div class="fade_in"></div>
	}
</root>

@code
{
	public static Hud Instance { get; private set; }
	TimeSince fadeTime = 0;

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

	public void FadeIn()
	{
		fadeTime = 0;
	}

	protected override int BuildHash()
	{
		var hoveredStatusHash = Manager.Instance.HoveredStatus != null ? Time.Now : 0f;

		return System.HashCode.Combine(
			fadeTime < 0.8f, 
			Manager.Instance.IsGameOver, 
			Manager.Instance.HasSpawnedBoss,
			Manager.Instance.IsBossDead,
			Manager.Instance.ShowFinalPanel,
			hoveredStatusHash
		);
	}
}