Example #1
0
 public OrderInvalidReason Validate(IEnumerable <Unit> ConvoyOrder)
 {
     if (ConvoyOrder == null)
     {
         return(OrderInvalidReason.DEPLOYMENT_CONVOY_ORDER);
     }
     if (!Units.All(i => ConvoyOrder.Any(j => i == j || j.Passenger == i)))
     {
         return(OrderInvalidReason.DEPLOYMENT_CONVOY_ORDER);
     }
     if (Units.Where(i => i.Configuration.IsPassenger)
         .Any(i => (i.Configuration.Movement == 0 || IsStrictConvoy) && i.Carrier == null))
     {
         return(OrderInvalidReason.DEPLOYMENT_CONVOY_ORDER);
     }
     return(OrderInvalidReason.NONE);
 }
Example #2
0
        /// <summary>
        /// Атака одной группы героев на другую
        /// </summary>
        /// <param name="attackGroup"></param>
        /// <param name="enemyGroup"></param>
        /// <param name="statusReporter"></param>
        /// <returns>возврат - повторить ход</returns>
        public bool Attack(Units attackGroup, Units enemyGroup, IStatusReporter statusReporter)
        {
            if (attackGroup.First().GroupIndex == enemyGroup.First().GroupIndex)
            {
                statusReporter.WriteLine("Нельзя нанести урон самому себе");
                return(false);
            }

            var damage = attackGroup.UnitsOperatoin.GetDamage();

            enemyGroup.ForEach((enemyGroupUnit) => {
                enemyGroupUnit.GetDamage(damage);
            });

            /*Можно дать имена группам и транслировать их тут*/
            /*можно поменять способ доступа к транслятору имён - как удобно*/
            statusReporter.WriteLine($"герои группы {attackGroup.GroupNamesTranslator[attackGroup.First().GroupIndex]} нанесли урон героям группы {enemyGroup.GroupNamesTranslator[enemyGroup.First().GroupIndex]}.");
            if (enemyGroup.All(enemyUnit => false == enemyUnit.IsHeartBeat))
            {
                statusReporter.WriteLine($"замок {enemyGroup.First().Home} теряет группу {enemyGroup.GroupNamesTranslator[enemyGroup.First().GroupIndex].Replace($"({enemyGroup.First().Home})", "").ClearSpaces()}");
            }

            return(false);
        }
 public override bool IsConfigured()
 {
     return(Units.All(i => i.Position != null));
 }
Example #4
0
 public bool IsCountOfUnitsForGeneratorsGreaterOrEqualThan(int number)
 {
     return(Units.All(unit => unit.Value.TotalCount >= number));
 }