UI/GameState.razor
@using Sandbox;
@using System.Linq;
@inherits PanelComponent
<root>
<div class="main">
<div class="top">
<div class="game">Deathmatch</div>
<div class="timer">@TimeLeft</div>
</div>
@if ( !Player.Local.IsValid() )
{
return;
}
<div class="scorebars">
@{
var players = Scene.GetAll<PlayerData>().OrderByDescending(p => p.Kills).ToList();
var localPlayer = Player.Local.PlayerData;
var leader = players.FirstOrDefault();
var secondBar = localPlayer == leader
? players.Skip(1).FirstOrDefault()
: localPlayer;
}
@if (leader != null)
{
<GameStatePlayer [email protected] Player=@leader IsLocalPlayer=@(leader == localPlayer) />
}
@if (secondBar != null && secondBar != leader)
{
<GameStatePlayer [email protected] Player=@secondBar IsLocalPlayer=@(secondBar == localPlayer) />
}
</div>
</div>
</root>
@code
{
protected override int BuildHash() => HashCode.Combine(Time.Now);
protected string TimeLeft => TimeSpan.FromSeconds(GameManager.Current.GameTimeRemaining).ToString(@"mm\:ss");
private long GetSteamId(PlayerData player)
{
if (player.IsBot) return 76561198006096289;
return player.SteamId;
}
}