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.
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();
}
}