public void PlayAppropriateAbility(Direction direction, List <MovableCharacter> targets)
 {
     if (MovementMembers.Any(mm => mm.Direction == direction))
     {
         AnimatedAbility.AnimatedAbility ability = MovementMembers.First(mm => mm.Direction == direction).Ability;
         ability.Play(targets.Cast <AnimatedCharacter>().ToList());
         ability.Play(targets.Where(t => t.GhostShadow != null).Cast <AnimatedCharacter>().ToList());
     }
 }
        public void AddMovementMember(Direction direction, AnimatedAbility.AnimatedAbility ability)
        {
            MovementMember member = new MovementMemberImpl();

            member.Direction = direction;
            member.Name      = direction.ToString();
            if (ability == null)
            {
                ability      = new AnimatedAbilityImpl();
                ability.Name = GetDefaultMemberAbilityName(direction);
            }
            member.Ability = ability;
            MovementMembers.Add(member);
        }