Player/Inventory/PlayerInventory.EquipState.cs
public partial class PlayerInventory
{
public enum EquippedState
{
Deploying,
Ready,
Holstering
}
public BaseWeapon QueuedWeapon { get; set; }
public EquippedState EquipState { get; private set; } = EquippedState.Ready;
public TimeSince TimeSinceDeployed { get; private set; } = 1;
public TimeSince TimeSinceHolstered { get; private set; } = 1;
public float EquipTime => 0.25f;
/// <summary>
/// Tries to holster the current weapon.
/// </summary>
public void Holster()
{
TimeSinceHolstered = 0;
EquipState = EquippedState.Holstering;
}
/// <summary>
/// Tries to deploy the current weapon.
/// </summary>
public void Deploy()
{
TimeSinceDeployed = 0;
EquipState = EquippedState.Deploying;
}
private void UpdateEquipState()
{
if ( EquipState == EquippedState.Ready ) return;
if ( EquipState == EquippedState.Holstering && TimeSinceHolstered >= EquipTime )
{
if ( QueuedWeapon.IsValid() )
{
Log.Info( "Holstered" );
SetCurrent( QueuedWeapon );
QueuedWeapon = null;
return;
}
EquipState = EquippedState.Ready;
}
if ( EquipState == EquippedState.Deploying && TimeSinceDeployed >= EquipTime )
{
Log.Info( "Deployed" );
EquipState = EquippedState.Ready;
}
}
}