swb_hud/KeyDisplay.cs
using Sandbox.UI;
using Sandbox.UI.Construct;
using SWB.Base;
using SWB.Shared;

namespace SWB.HUD;

public class KeyDisplay : Panel
{
	IPlayerBase player;

	public KeyDisplay( IPlayerBase player )
	{
		this.player = player;
		StyleSheet.Load( "/swb_hud/KeyDisplay.cs.scss" );

		var keyIcon = this.Add.Image( "", "keyIcon" );
		var buttonTexture = Input.GetGlyph( InputButtonHelper.Menu, style: GlyphStyle.Dark );
		keyIcon.Texture = buttonTexture;

		this.Add.Label( "Customization", "label" );
	}

	public override void Tick()
	{
		var activeGO = player.Inventory.Active;

		if ( activeGO is null )
		{
			SetClass( "hide", true );
			return;
		}

		var activeWeapon = activeGO.Components.Get<Weapon>();
		var isValidWeapon = activeWeapon is not null;
		SetClass( "hide", !isValidWeapon );
		if ( !isValidWeapon ) return;

		var hideKey = activeWeapon.Attachments.Count == 0 || activeWeapon.IsCustomizing || !WeaponSettings.Instance.Customization;
		SetClass( "hide", hideKey );
	}
}