Player/PlayerPawn.Weapons.cs

Partial PlayerPawn class handling equipment state. It listens for EquipmentDeployedEvent and EquipmentHolsteredEvent to track the currently equipped item, exposes CurrentEquipment, and provides SetCurrentEquipment to holster the existing equipment and deploy a new one.

Reflection
using Sandbox.Events;

namespace KOTH;

// TODO : revisit!!

public partial class PlayerPawn :
	IGameEventHandler<EquipmentDeployedEvent>,
	IGameEventHandler<EquipmentHolsteredEvent>
{
	[Property, ReadOnly] public Equipment CurrentEquipment { get; private set; }

	void IGameEventHandler<EquipmentDeployedEvent>.OnGameEvent(EquipmentDeployedEvent eventArgs)
	{
		CurrentEquipment = eventArgs.Equipment;
	}

	void IGameEventHandler<EquipmentHolsteredEvent>.OnGameEvent(EquipmentHolsteredEvent eventArgs)
	{
		if (eventArgs.Equipment == CurrentEquipment)
			CurrentEquipment = null;
	}

	public void SetCurrentEquipment(Equipment Weapon)
	{
		if (CurrentEquipment.IsValid())
		{
			CurrentEquipment.Holster();
		}

		Weapon.Deploy();
	}
}