UI/NameTags/PlayerNameTag.razor
@using Sandbox.UI
@inherits PanelComponent
<root>
@if ( _visible )
{
<img class="target" src="ui/crosshair/target.png" />
<label class="name">@_name</label>
}
</root>
<style>
PlayerNameTag {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
pointer-events: none;
}
.target {
width: 1024px;
height: 1024px;
background-tint: #ff4444;
}
.name {
font-family: "AzeretMono-Medium";
font-size: 64px;
color: white;
text-shadow: 3px 3px 6px black;
white-space: nowrap;
}
</style>
@code
{
private string _name = "";
private bool _visible = false;
protected override void OnUpdate()
{
var pawn = GameObject.Parent?.Components.Get<PlayerPawn>();
if ( pawn == null ) return;
_visible = pawn != LocalPlayer.Pawn && pawn.IsAlive;
_name = pawn.IsBot ? (pawn.BotName.Length > 0 ? pawn.BotName : "Bot") : (pawn.Network.Owner?.DisplayName ?? pawn.GameObject.Name);
}
protected override int BuildHash() => HashCode.Combine( _name, _visible, Time.Now );
}