/// <summary> /// Перебирает замки и проверяет, что в каждом замке есть ещё живые юниты /// </summary> /// <returns></returns> private IEnumerable <bool> BattleStat() { foreach (var castle in Castles) { yield return(Units.ByCastle(castle).All(unit => unit.IsHeartBeat)); } }
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); }
/// <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); }