sasalka/Code/Inventory/Usable/UseableBase.cs
2025-06-10 02:09:21 +03:00

32 lines
498 B
C#

using Sandbox;
namespace Sasalka;
public abstract class UseableBase : Component, IUseable
{
[Property] public float Cooldown { get; set; } = 0.5f;
private TimeSince _timeSinceUsed;
protected override void OnStart()
{
_timeSinceUsed = Cooldown;
}
public virtual bool CanUse()
{
return _timeSinceUsed >= Cooldown && !Inventar.IsInventoryOpen;
}
public virtual void Use()
{
if ( !CanUse() )
return;
OnUse();
_timeSinceUsed = 0;
}
protected abstract void OnUse();
}