swb_hud/RootDisplay.cs
using Sandbox.Sboku.Arena;
using Sandbox.UI;
using SWB.Base;
using SWB.Player;
using System;
namespace SWB.HUD;
[Group( "SWB" )]
[Title( "RootDisplay" )]
public class RootDisplay : PanelComponent
{
[Property] public PlayerBase Player { get; set; }
Chatbox chatbox;
Killfeed killfeed;
Hitmarker hitmarker;
protected override void OnAwake()
{
if (Player == null)
{
Player = GetComponentInParent<PlayerBase>();
}
}
protected override void OnStart()
{
if ( IsProxy )
{
this.GameObject.Destroy();
return;
}
Panel.StyleSheet.Load( "/swb_hud/RootDisplay.cs.scss" );
Panel.AddChild( new HealthDisplay( Player ) );
Panel.AddChild( new AmmoDisplay( Player ) );
Panel.AddChild( new InventoryDisplay( Player ) );
Panel.AddChild( new Scoreboard() );
Panel.AddChild( new KeyDisplay( Player ) );
//Panel.AddChild( new ArmorDisplay( Player ) );
//Panel.AddChild( new RoundDisplay( Player, Scene.GetComponentInChildren<RoundManager>() ) );
//Panel.AddChild( new TimerDisplay( Player, Scene.GetComponentInChildren<RoundManager>() ) );
chatbox = new Chatbox( Player );
Panel.AddChild( chatbox );
killfeed = new Killfeed( Player );
Panel.AddChild( killfeed );
hitmarker = new Hitmarker();
Panel.AddChild( hitmarker );
}
protected override void OnUpdate()
{
if ( Player is null || !Player.IsValid ) return;
// Hide UI when weapon is scoping
var weapon = Player.Inventory.Active?.Components.Get<Weapon>();
if ( weapon is not null )
Panel.SetClass( "hide", weapon.IsScoping );
}
public void AddToKillFeed( Guid attackerId, Guid victimId, string inflictor )
{
killfeed?.AddKillEntry( attackerId, victimId, inflictor );
}
public void AddChatEntry( Guid senderId, string msg )
{
chatbox.AddEntry( senderId, msg );
}
public void CreateHitmarker( bool isKill )
{
hitmarker.Create( isKill );
}
}