2026-05-25 14:48:16 +03:00

60 lines
1.3 KiB
C#

using System;
using System.Collections.Generic;
public class WeaponModel : IDisposable
{
public Weapon CurrentWeapon;
public List<Weapon> Weapons;
public event Action<WeaponModel> OnUpdate;
public event Action<Weapon> 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<Weapon> weapons)
{
CurrentWeapon = currentWeapon;
Weapons = weapons;
foreach (var weapon in Weapons)
{
weapon.OnShoot += ShootHandler;
weapon.AmmoChanged += Weapon_AmmoChanged;
}
}
private void Weapon_AmmoChanged(int obj)
{
OnUpdate?.Invoke(this);
}
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;
}
}