UI/Scoreboard.razor
@using Sandbox;
@using Sandbox.UI;
@inherits PanelComponent
<root>
<div class="table">
<div class="header row">
<div class="name">Name</div>
<div class="stat">⏲️</div>
</div>
@foreach ( var entry in Connection.All )
{
string specialClass = "";
if (entry == Connection.Local) specialClass = "me";
<div class="row @specialClass">
<div class="name">
@if ( entry.IsHost )
{
<div>👑</div>
}
@entry.DisplayName
</div>
<div class="stat">@GetTime( entry )</div>
</div>
}
</div>
</root>
@code
{
string GetTime( Connection c )
{
TimeSpan time = DateTime.UtcNow - c.ConnectionTime;
if (time.TotalMinutes < 60)
return time.ToString("mm\\m\\ s\\s");
return time.ToString("hh\\h\\ \\m\\m");
}
protected override void OnUpdate()
{
SetClass( "hidden", !Input.Down( "score" ) );
}
/// <summary>
/// update every second
/// </summary>
protected override int BuildHash() => System.HashCode.Combine( RealTime.Now.CeilToInt() );
}