UI/Panels/GameHud/GameHud.razor
@using System;
@using Sandbox;
@using Sandbox.UI;
@namespace Battlebugs
@inherits Panel
@attribute [StyleSheet]
<root>
<div class="header">
@if (GameManager.Instance.Boards.Count > 0)
{
<PlayerHud [email protected](0) />
}
<div class="middle">
<div class="bar">
@if (GameManager.Instance.Boards.Count > 0)
{
var fill = GameManager.Instance.Boards.ElementAt(0).GetScorePercent() * 100f;
<div class="fill" style="width: @(fill)%" />
}
</div>
<div class="banner">
<label>@GetHeader()</label>
<div class="timer-bar @(GameManager.Instance.IsFiring ? "show" : "")">
<div class="fill" style="width: @(100f - GameManager.Instance.TimeSinceTurnStart / 15f * 100f)%" />
</div>
</div>
</div>
@if (GameManager.Instance.Boards.Count > 1)
{
<PlayerHud [email protected](1) />
}
</div>
</root>
@code
{
public static GameHud Instance { get; private set; }
protected override void OnAfterTreeRender(bool firstTime)
{
base.OnAfterTreeRender(firstTime);
if (firstTime)
{
Instance = this;
}
}
string GetHeader()
{
if (!BoardManager.Local.IsValid() && GameManager.Instance.Boards.Count >= 2)
{
if (GameManager.Instance.State == GameState.Placing)
{
return "Waiting for players to place bugs...";
}
else if (GameManager.Instance.CurrentPlayer == GameManager.Instance.Boards.FirstOrDefault())
{
return $"It's {GameManager.Instance.Boards.FirstOrDefault().GameObject.Name}'s turn!";
}
return $"It's {GameManager.Instance.Boards.LastOrDefault().GameObject.Name}'s turn!";
}
if (GameManager.Instance.State == GameState.Placing)
{
return "Place your bugs!";
}
if (GameManager.Instance.CurrentPlayer == BoardManager.Local)
{
return "It's your turn!";
}
return "Your opponent is thinking...";
}
protected override int BuildHash() => System.HashCode.Combine(GameManager.Instance.State, GameManager.Instance.IsFiring ? GameManager.Instance.TimeSinceTurnStart.ToString() : "");
}