using System.Collections.Generic; namespace Wizard; public class AIMaxAttackSelectLogicArgument : AISelectLogicArgumentBase { public override AIScriptTokenArgType LogicType => AIScriptTokenArgType.MAX_ATTACK_LOGIC; public AIMaxAttackSelectLogicArgument(List args) : base(args) { } public override AIVirtualCard SelectSingleTarget(List candidates, AIVirtualCard tagOwner, AIVirtualField field, List playPtn, AISituationInfo situation, AISelectTargetPattern worstOrBest) { AIVirtualCard aIVirtualCard = null; int compare = 0; for (int i = 0; i < candidates.Count; i++) { AIVirtualCard aIVirtualCard2 = candidates[i]; if (aIVirtualCard2.IsUnit && (aIVirtualCard == null || IsWellChosenTarget(aIVirtualCard2, compare, worstOrBest))) { aIVirtualCard = aIVirtualCard2; compare = aIVirtualCard2.Attack; } } return aIVirtualCard; } public override List SelectMultipleSelectedTargets(List candidates, int selectCount, AIVirtualCard tagOwner, AIVirtualField field, List playPtn, AISituationInfo situation, AISelectTargetPattern worstOrBest) { LogNotImplementMultipleSelect(); return null; } private bool IsWellChosenTarget(AIVirtualCard target, int compare, AISelectTargetPattern worstOrBest) { return worstOrBest switch { AISelectTargetPattern.Best => target.Attack > compare, AISelectTargetPattern.Worst => target.Attack < compare, _ => false, }; } }