protected void ShootBullets(GameObjectPool pool, Magazine magazine, Nozzle nozzle, Unit owner, int cost = 1) { var rays = nozzle.GetRays(); int ammosTaken = magazine.TakeAtMost(rays.Count * cost); int count = Mathf.CeilToInt((float)ammosTaken / cost); for (int i = 0; i < count; i++) { ReleaseBullet(rays[i], pool, owner); } }
protected override void OnFire() { status = null; Magazine magazine = weapon.magazine; if (magazine.isEmpty) { return; } switch (magazine) { case BulletMagazine bulletMag: ShootBullets(bulletMag.heavyBulletPool, magazine, weapon.nozzle, weapon.owner, 20); break; case ElectricityMagazine electroMag: EmitLightnings(electroMag, weapon.nozzle, weapon.owner, 35); break; } }
private void Fire() { Magazine magazine = weapon.magazine; if (magazine.isEmpty) { return; } switch (magazine) { case BulletMagazine bulletMag: ShootBullets(bulletMag.bulletPool, magazine, weapon.nozzle, weapon.owner); break; case FireMagazine fireMag: ThrowFlames(fireMag, weapon.nozzle, weapon.owner); break; case ElectricityMagazine electroMag: EmitLightnings(electroMag, weapon.nozzle, weapon.owner); break; } }