using Godot; using SupaLidlGame.Characters; namespace SupaLidlGame.Items { public abstract partial class Weapon : Item { public double RemainingUseTime { get; protected set; } = 0; public bool IsUsing => RemainingUseTime > 0; /// /// How much damage in HP that this weapon deals. /// [Export] public float Damage { get; set; } = 0; /// /// The time in seconds it takes for this weapon to become available /// again after using. /// [Export] public double UseTime { get; set; } = 0; /// /// The magnitude of the knockback force of the weapon. /// [Export] public float Knockback { get; set; } = 0; /// /// The initial velocity of any projectile the weapon may spawn. /// [Export] public float InitialVelocity { get; set; } = 0; public Character Character { get; set; } public override void Equip(Character character) { Character = character; } public override void Unequip(Character character) { Character = null; } public override void Use() { RemainingUseTime = UseTime; } public override void Deuse() { } public override void _Process(double delta) { if (RemainingUseTime > 0) { if ((RemainingUseTime -= delta) <= 0) { Deuse(); } } } } }