using System; using System.Collections.Generic; public class WeaponModel : IDisposable { public Weapon CurrentWeapon; public List Weapons; public event Action OnUpdate; public event Action OnWeaponChanged; public event Action OnNoAmmo; public int TotalAmmo { get { int sum = 0; foreach (var weapon in Weapons) sum += weapon.Ammo; return sum; } } public WeaponModel(Weapon currentWeapon, List weapons) { CurrentWeapon = currentWeapon; Weapons = weapons; foreach (var weapon in Weapons) weapon.OnShoot += ShootHandler; } public void ShootHandler(AbstractProjectile obj) { OnUpdate?.Invoke(this); if (TotalAmmo == 0) OnNoAmmo?.Invoke(); } public void WeaponChangeHandler(Weapon weapon) { CurrentWeapon = weapon; OnUpdate?.Invoke(this); OnWeaponChanged?.Invoke(weapon); } public void Dispose() { foreach (var weapon in Weapons) if(weapon!= null) weapon.OnShoot -= ShootHandler; } }