Example #1
0
        public DefenceStrategy DefendEarth(IAlienInvasionWave invasionWave)
        {
            if (_cannons == null || cannonsDoNotMatchAssets(invasionWave.WeaponsAvailableForDefence))
            {
                _cannons = invasionWave.WeaponsAvailableForDefence.Select(a => new Cannon(a)).OrderBy(c => c.DefenceWeapon.DefenceWeaponType.ToString()).ToList();
            }

            foreach (var cannon in _cannons)
            {
                cannon.Reload();
            }

            var invaders    = invasionWave.AlienInvaders.Select(a => new Invader(a)).ToList();
            var assetsToUse = new List <IDefenceWeapon>();

            foreach (var cannon in _cannons)
            {
                if (cannon.BlastNext(invaders))
                {
                    assetsToUse.Add(cannon.DefenceWeapon);
                }

                if (invaders.Count == 0)
                {
                    break;
                }
            }

            return(new DefenceStrategy(assetsToUse));
        }
 public DefenceStrategy DefendEarth(IAlienInvasionWave invasionWave)
 {
     IEnumerable<IDefenceWeapon> weaponsToUse;
     weaponsToUse = invasionWave.WeaponsAvailableForDefence.Take(1);
     //weaponsToUse = invasionWave.WeaponsAvailableForDefence.Take(invasionWave.AlienInvaders.Count());
     return new DefenceStrategy(weaponsToUse);
 }
        public DefenceStrategy DefendEarth(IAlienInvasionWave invasionWave)
        {
            if (!_armouries.ContainsKey(invasionWave.WeaponsAvailableForDefence))
            {
                _armouries.Add(invasionWave.WeaponsAvailableForDefence, ArmouryBuilder.From(invasionWave.WeaponsAvailableForDefence));
            }

            var armoury = _armouries[invasionWave.WeaponsAvailableForDefence];
            return new DefenceStrategy(armoury.WeaponsFor(invasionWave.AlienInvaders));
        }
 public DefenceStrategy DefendEarth(IAlienInvasionWave invasionWave)
 {
     return new DefenceStrategy(invasionWave.WeaponsAvailableForDefence.Take(invasionWave.AlienInvaders.Count()));
 }