using System.Collections.Generic;
using Cielonos.MainGame.Buffs.Character;
using Cielonos.MainGame.Characters;
using UnityEngine;
namespace Cielonos.MainGame
{
public partial class CombatManager
{
public partial class EnemySubmodule
{
///
/// 从已有的敌人列表中选取评分最高的目标。
///
public CharacterBase GetBestEnemy(List enemies)
{
if (enemies.Count == 0) return null;
if (enemies.Count == 1) return enemies[0];
List scores = GetScoredEnemies(float.MaxValue);
foreach (TargetingScore score in scores)
{
if (enemies.Contains(score.target))
{
return score.target;
}
}
return enemies[0];
}
///
/// 从已有的敌人列表中进行评分,返回完整的评分列表(按分数从高到低)。
/// 适合后续通过 ApplyScoreModifier 施加修正。
///
public List GetScoredEnemies(List enemies,
float radius = float.MaxValue, Transform origin = null)
{
List allScores = GetScoredEnemies(radius, origin);
if (enemies == null || enemies.Count == 0) return allScores;
List filtered = new List(enemies.Count);
foreach (TargetingScore score in allScores)
{
if (enemies.Contains(score.target))
{
filtered.Add(score);
}
}
return filtered;
}
///
/// 获取可被扰乱的敌人列表:
/// 目前获取的是当前可以受到Disruption打断,且有对应Buff(黄光,红光等)的敌人
///
public List GetDisruptableEnemies(List enemies,
Breakthrough.Type breakthroughType = Breakthrough.Type.Disruption)
{
List disruptableEnemies = new List();
foreach (CharacterBase enemy in enemies)
{
bool hasBuff = enemy.buffSm.HasBuff();
if (!enemy.reactionSc.breakthroughResistances[breakthroughType].Value && hasBuff)
{
disruptableEnemies.Add(enemy);
}
}
return disruptableEnemies;
}
}
}
}