예제 #1
0
 /// <summary>
 ///     Проверить, может ли один юнит атаковать другого.
 /// </summary>
 /// <param name="attackingUnit">Юнит, который собирается совершить атаку.</param>
 /// <param name="targetUnit">Юнит, который является целью.</param>
 /// <returns>
 ///     <see langvalue="true" />, если атака возможна
 ///     <see langvalue="false" /> - иначе.
 /// </returns>
 public bool CanAttackUnit(object attackingUnit, object targetUnit)
 {
     //если хотя бы один из участников не я/я играбельным юнитом - исключение
     if (!(targetUnit is PlayableUnit TargetPlayableUnit) ||
         !(attackingUnit is PlayableUnit AttackingPlayableUnit))
     {
         throw new ArgumentException("Неизвестный тип");
     }
     //возвращаем да, если атакующий игрок не пытается ударить сам себя и если может атаковать цель
     return(AttackingPlayableUnit.CanAtack(TargetPlayableUnit));
 }
예제 #2
0
        /// <summary>
        ///     Атаковать указанного юнита.
        /// </summary>
        /// <param name="attackingUnit">Юнит, который собирается совершить атаку.</param>
        /// <param name="targetUnit">Юнит, который является целью.</param>
        public void AttackUnit(object attackingUnit, object targetUnit)
        {
            if (!CanAttackUnit(attackingUnit, targetUnit))
            {
                return;
            }

            if (!(attackingUnit is PlayableUnit AttackingPlayableUnit) ||
                !(targetUnit is PlayableUnit TargetPlayableUnit))
            {
                throw new ArgumentException("Неизвестный тип");
            }
            AttackingPlayableUnit.Attack(TargetPlayableUnit);
        }