private void ProcessTargetSearch(Character currentCharacter)
        {
            var availableTargets =this.characterList
                .Where(t => this.IsWithinRange(currentCharacter.X, currentCharacter.Y, t.X, t.Y, currentCharacter.Range))
                .ToList();

            if (availableTargets.Count == 0)
            {
                return;
            }

            var target = currentCharacter.GetTarget(availableTargets);
            if (target == null)
            {
                return;
            }

            this.ProcessInteraction(currentCharacter, target);
        }
 private void ProcessInteraction(Character currentCharacter, Character target)
 {
     if (currentCharacter is IHeal)
     {
         target.HealthPoints += (currentCharacter as IHeal).HealingPoints;
     }
     else if (currentCharacter is IAttack)
     {
         target.HealthPoints -= (currentCharacter as IAttack).AttackPoints - target.DefensePoints;
         if (target.HealthPoints <= 0)
         {
             target.IsAlive = false;
         }
     }
 }