UI/GameMenu/Header/GameHeader.razor
@using Sandbox;
@using Sandbox.UI;
@using System;
@using System.Collections.Generic;

@namespace GuessIt

<root class="panel game-header">
    <div class="game-info">
        @if (Menu.LobbyState != LobbyState.WaitingForPlayers)
        {
            <div class="timer">@MathF.Floor(MathF.Max(GameTimer, 0))</div>
        }
        @if (Round > 0)
        {
            <div class="round">Round @(Round) of @(Rounds)</div>
        }
    </div>

    <div class="game-word">
        <GameWord @ref="WordPanel" />
    </div>

    <div class="game-settings">
        @if (Menu.LobbyState == LobbyState.WaitingForPlayers && Networking.IsHost)
        {
            <button class="@StartButtonClasses()" ToolTip=@StartButtonTooltip() [email protected]>Start Game</button>
        }
        @* <div class="settings" onclick=@OpenSettings>⚙️</div> *@
    </div>
</root>

@code
{
    public GameMenu Menu { get; set; }
    public GameWord WordPanel { get; set; }

    public int Round => Menu.CurrentRound;
    public int Rounds => Menu.TotalRounds;
    public float GameTimer => Menu.GameTimer;

    protected override void OnAfterTreeRender(bool firstTime)
    {
        base.OnAfterTreeRender(firstTime);

        if (firstTime)
        {
            WordPanel.SetOverride(Connection.All.Count() <= 1 ? "Waiting for players..." : "Waiting for host to begin...");
        }
    }

    string StartButtonTooltip()
    {
        if (Connection.All.Count() > 1) return "";
        return "Need one more player to start";
    }

    public string StartButtonClasses()
    {
        if (!Networking.IsHost) return "hidden";
        if (Connection.All.Count() > 1) return "";
        return "disabled";
    }

    void OpenSettings()
    {

    }

    protected override int BuildHash() => System.HashCode.Combine(Round, Rounds, MathF.Floor(GameTimer));
}