UI/Nameplate.razor
@using Sandbox;
@using Sandbox.UI;
@inherits PanelComponent
@if (Player.IsValid() && !Player.IsLocalPlayer )
{
<root>
<div class="card">
@if ( !Player.IsBot )
{
<div class="avatar" style="background-image: url( avatar:@Player.SteamId )"></div>
}
else
{
<label class="name">🤖</label>
}
<label class="name">@Player.DisplayName</label>
@if ( IsVoicePlaying )
{
<div class="voice">volume_up</div>
}
</div>
</root>
}
@code
{
[Property] public Player Player;
Sandbox.Voice voiceComponent;
protected override void OnEnabled()
{
base.OnEnabled();
voiceComponent = GameObject.Root.Components.GetInDescendantsOrSelf<Voice>();
}
public bool IsVoicePlaying
{
get
{
if (voiceComponent is null) return false;
return voiceComponent.LastPlayed < 0.5f;
}
}
/// <summary>
/// Rebuild if the owner connection changes
/// </summary>
protected override int BuildHash() => System.HashCode.Combine(Network.Owner, IsVoicePlaying);
}