public IEnumerable<IDefenceWeapon> WeaponsFor(IAlienInvader[] alienInvaders) { var weaponsToFire = new List<IDefenceWeapon>(); var invaderCount = alienInvaders.Count(); NewWaveIncoming(); foreach (var weapon in _weaponsAvailableForDefence) { if (!weapon.IsReloading()) weapon.DeployTo(weaponsToFire); if (invaderCount == weaponsToFire.Count) break; } return weaponsToFire; }