using System.Collections.Generic; namespace Wizard; public abstract class AISelectLogicArgumentBase { protected List _argumentList; public virtual AIScriptTokenArgType LogicType { get; } public AISelectLogicArgumentBase(List args) { InitializeArgument(args); } public virtual void InitializeArgument(List args) { if (args != null && args.Count > 0) { _argumentList = new List(); for (int i = 0; i < args.Count; i++) { _argumentList.Add(new AIPolishConvertedExpression(args[i])); } } } public void SetSelectTarget(List candidates, int selectCount, AIVirtualCard tagOwner, AIVirtualField field, AIScriptTokenArgType whichSelectType, List playPtn, AISituationInfo situation) { if (candidates == null || candidates.Count <= 0) { return; } if (selectCount <= 0) { AIConsoleUtility.LogError($"AISelectLogicArgumentBase error!! selectCount == {selectCount}"); } else if (selectCount == 1) { AIVirtualCard aIVirtualCard = SelectSingleTarget(candidates, tagOwner, field, playPtn, situation, AISelectTargetPattern.Best); if (aIVirtualCard != null) { situation.SetSingleTargetInInfo(aIVirtualCard, TargetSelectType.Default, whichSelectType); } } else { List list = SelectMultipleSelectedTargets(candidates, selectCount, tagOwner, field, playPtn, situation, AISelectTargetPattern.Best); if (list != null && list.Count > 0) { situation.SetMultipleTargetsInInfo(list, TargetSelectType.Default, AIRemovalType.None, whichSelectType); } } } protected void LogNotImplementMultipleSelect() { AIConsoleUtility.LogError($"{LogicType}: 複数ターゲット選択が未対応です。"); } public abstract AIVirtualCard SelectSingleTarget(List candidates, AIVirtualCard tagOwner, AIVirtualField field, List playPtn, AISituationInfo situation, AISelectTargetPattern worstOrBest); public abstract List SelectMultipleSelectedTargets(List candidates, int selectCount, AIVirtualCard tagOwner, AIVirtualField field, List playPtn, AISituationInfo situation, AISelectTargetPattern worstOrBest); }