UI/GameMenu/PlayerList/PlayerList.razor
@using Sandbox;
@using Sandbox.UI;
@using System;
@attribute [StyleSheet]

@namespace GuessIt

<root>
    @if (true)
    {
        var players = Scene.GetAllComponents<Player>().OrderBy(x => -x.Score).ToList();
        if (GameMenu.Instance?.CurrentlyDrawing is Player drawing)
        {
            <PlayerListEntry Player=@drawing Rank=@(players.IndexOf(drawing) + 1) />
        }
        for (int i = 0; i < players.Count; i++)
        {
            var player = players[i];
            if (player.IsDrawing) continue;
            <PlayerListEntry Player=@player Rank=@(i + 1) />
        }
    }
</root>

@code
{
    protected override int BuildHash()
    {
        int val = 0;
        val += HashCode.Combine(GameMenu.Instance?.CurrentlyDrawing);
        foreach (var player in Scene.GetAllComponents<Player>())
        {
            val += HashCode.Combine(player.Network.OwnerId, player.Score);
        }
        return val;
    }
}