Example #1
0
 /// <summary>
 /// Перебирает замки и проверяет, что в каждом замке есть ещё живые юниты
 /// </summary>
 /// <returns></returns>
 private IEnumerable <bool> BattleStat()
 {
     foreach (var castle in Castles)
     {
         yield return(Units.ByCastle(castle).All(unit => unit.IsHeartBeat));
     }
 }
Example #2
0
        public void SelectorByCastleShouldGetOnlyCastleUnits()
        {
            var castles = new List <Castle>
            {
                new Castle("Оплот", new [] { "Кентавр", "Эльф", "Пегас" }),
                new Castle("Некрополис", new [] { "Скелет", "Зомби", "Вампир" })
            };

            var units = new Units
            {
                new HeroUnit(castles, "Кентавр"),
                new HeroUnit(castles, "Эльф"),
                new HeroUnit(castles, "Пегас"),

                new HeroUnit(castles, "Скелет"),
                new HeroUnit(castles, "Зомби"),
                new HeroUnit(castles, "Вампир")
            };

            var someCastle = castles.First();
            var elements   = units.ByCastle(castles.First()).Select(unit => unit.Home);

            elements.First().Id = Guid.NewGuid();
            elements.Should().AllBeEquivalentTo(someCastle);
        }
Example #3
0
        /// <summary>
        /// Замок признаёт поражение
        /// </summary>
        /// <param name="attackGroup"></param>
        /// <param name="enemyGroup"></param>
        /// <param name="statusReporter"></param>
        /// <returns>возврат - повторить ход</returns>
        public bool GiveUp(Units attackGroup, Units enemyGroup, IStatusReporter statusReporter)
        {
            statusReporter.WriteLine($"Замок {attackGroup.First().Home} признаёт поражение.");
            foreach (var defeatUnit in Units.ByCastle(attackGroup.First().Home))
            {
                defeatUnit.Life = 0;
            }

            return(false);
        }