Weapon sounds

This commit is contained in:
Marco 2025-04-08 17:59:20 +02:00
commit 3c531bbe04
14 changed files with 174 additions and 52 deletions

View file

@ -17,6 +17,14 @@ public partial class Weapon : Node2D
[Export]
public Marker2D Muzzle { get; set; }
[Signal]
public delegate void ShootingEventHandler();
[Signal]
public delegate void ReloadingEventHandler();
[Signal] public delegate void EmptyEventHandler();
public int Ammo { get; set; } = 0;
private int _loadedAmmo;
@ -60,6 +68,8 @@ public partial class Weapon : Node2D
public void Reload()
{
EmitSignalReloading();
_cooldownTimer.Start(WeaponData.ReloadTime);
if (WeaponData.InfiniteAmmo || string.IsNullOrWhiteSpace(WeaponData.AmmoKey))
@ -77,7 +87,8 @@ public partial class Weapon : Node2D
}
else
{
GD.Print("Out of ammo");
EmitSignalEmpty();
//GD.Print("Out of ammo");
}
}
}
@ -100,11 +111,12 @@ public partial class Weapon : Node2D
return;
}
EmitSignalShooting();
// TODO: Shoot at muzzle position, need to provide a way to turn it, on a radius?
float halfSpread = WeaponData.SpreadAngle / 2f;
float spreadStep = WeaponData.BulletsPerShot > 1 ? WeaponData.SpreadAngle / (WeaponData.BulletsPerShot - 1) : 0;
for (int i = 0; i < WeaponData.BulletsPerShot; i++)
{