Files
SVSimServer/SVSim.BattleEngine/Engine/Wizard/AISelectedTargetInfoSet.cs
gamer147 0d9d8acae0 feat(battle-engine): M1 auto-copy closure (782 battle-logic files)
Compile-driven bulk-copy loop (tools/engine-port/m1_copy_loop.py) pulled the precise reference closure of the battle-core roots, stopping at the classify god-object/View-VFX-UI boundary. 782 files; no re-explosion (M0 had estimated ~order 1000). Residual frontier = 52 shim-classified + 80 external (Unity/BCL) types to author next.
2026-06-05 16:57:20 -04:00

233 lines
5.3 KiB
C#

using System.Collections.Generic;
namespace Wizard;
public class AISelectedTargetInfoSet
{
public static readonly int LENGTH = 2;
private AISelectedTargetInfo[] _set;
public AISelectedTargetInfo PreprocessTarget { get; private set; }
public AISelectedTargetInfo ChoiceTarget { get; private set; }
public bool HasChoiceTarget
{
get
{
if (ChoiceTarget != null)
{
return ChoiceTarget.HasTarget;
}
return false;
}
}
public AISelectedTargetInfoSet()
{
_set = new AISelectedTargetInfo[LENGTH];
}
public AISelectedTargetInfoSet Clone()
{
return new AISelectedTargetInfoSet(this);
}
private AISelectedTargetInfoSet(AISelectedTargetInfoSet set)
{
_set = new AISelectedTargetInfo[LENGTH];
for (int i = 0; i < LENGTH; i++)
{
AISelectedTargetInfo aISelectedTargetInfo = set.Get(i);
_set[i] = aISelectedTargetInfo;
}
PreprocessTarget = set.PreprocessTarget;
ChoiceTarget = set.ChoiceTarget;
}
public AISelectedTargetInfo Get(int index)
{
if (index < 0 || index > 1)
{
return null;
}
return _set[index];
}
public void Set(AISelectedTargetInfo info, int index)
{
if (index >= 0 && index <= 1)
{
_set[index] = info;
}
}
public void SetPreprocessTarget(AISelectedTargetInfo info)
{
PreprocessTarget = info;
}
public void SetChoiceTarget(AISelectedTargetInfo info)
{
ChoiceTarget = info;
}
public bool IsTargetExist(int index)
{
if (index < 0 || index > 1)
{
return false;
}
return _set[index]?.HasTarget ?? false;
}
public bool IsAnyTargetExists()
{
if (PreprocessTarget != null && PreprocessTarget.HasTarget)
{
return true;
}
if (HasChoiceTarget)
{
return true;
}
AISelectedTargetInfo[] set = _set;
foreach (AISelectedTargetInfo aISelectedTargetInfo in set)
{
if (aISelectedTargetInfo != null && aISelectedTargetInfo.HasTarget)
{
return true;
}
}
return false;
}
public AISelectedTargetInfo GetChoiceInfo()
{
if (HasChoiceTarget)
{
return ChoiceTarget;
}
AISelectedTargetInfo[] set = _set;
foreach (AISelectedTargetInfo aISelectedTargetInfo in set)
{
if (aISelectedTargetInfo != null && aISelectedTargetInfo.Type == TargetSelectType.Choice)
{
return aISelectedTargetInfo;
}
}
return null;
}
public AISelectedTargetInfoSet GetSimilarTargetInfoSet(AIVirtualField field)
{
AISelectedTargetInfoSet aISelectedTargetInfoSet = new AISelectedTargetInfoSet();
if (PreprocessTarget != null)
{
AISelectedTargetInfo similarTargetInfo = PreprocessTarget.GetSimilarTargetInfo(field);
aISelectedTargetInfoSet.SetPreprocessTarget(similarTargetInfo);
}
if (ChoiceTarget != null)
{
AISelectedTargetInfo similarTargetInfo2 = ChoiceTarget.GetSimilarTargetInfo(field);
aISelectedTargetInfoSet.SetChoiceTarget(similarTargetInfo2);
}
for (int i = 0; i < _set.Length; i++)
{
AISelectedTargetInfo aISelectedTargetInfo = _set[i];
AISelectedTargetInfo info = null;
if (aISelectedTargetInfo != null)
{
info = aISelectedTargetInfo.GetSimilarTargetInfo(field);
}
aISelectedTargetInfoSet.Set(info, i);
}
return aISelectedTargetInfoSet;
}
public bool IsDuplicate(AISelectedTargetInfoSet compare)
{
if (compare == null)
{
return false;
}
if (PreprocessTarget == null)
{
if (compare.PreprocessTarget != null)
{
return false;
}
}
else if (!PreprocessTarget.IsDuplicate(compare.PreprocessTarget))
{
return false;
}
if (ChoiceTarget == null)
{
if (compare.ChoiceTarget != null)
{
return false;
}
}
else if (!ChoiceTarget.IsDuplicate(compare.ChoiceTarget))
{
return false;
}
for (int i = 0; i < LENGTH; i++)
{
AISelectedTargetInfo aISelectedTargetInfo = _set[i];
AISelectedTargetInfo aISelectedTargetInfo2 = compare.Get(i);
if (aISelectedTargetInfo == null)
{
if (aISelectedTargetInfo2 != null)
{
return false;
}
}
else if (!aISelectedTargetInfo.IsDuplicate(aISelectedTargetInfo2))
{
return false;
}
}
return true;
}
public List<int> GetTargetIdList(AIScriptTokenArgType selectType)
{
AISelectedTargetInfo aISelectedTargetInfo;
switch (selectType)
{
case AIScriptTokenArgType.CHOICED_TARGET:
aISelectedTargetInfo = ChoiceTarget;
break;
case AIScriptTokenArgType.SELECTED_TARGET:
aISelectedTargetInfo = _set[0];
break;
case AIScriptTokenArgType.SECOND_SELECTED_TARGET:
aISelectedTargetInfo = _set[1];
break;
default:
AIConsoleUtility.LogError("AISelectedTargetInfoSet.GetTargetIdList() error!! selectType = " + selectType);
aISelectedTargetInfo = null;
break;
}
return aISelectedTargetInfo?.GetTargetIdList();
}
public void UpdateRemovalType(AIScriptTokenArgType whichTarget, AIRemovalType removalType)
{
if (whichTarget != AIScriptTokenArgType.TARGET_SELECT && whichTarget != AIScriptTokenArgType.SECOND_TARGET_SELECT)
{
AIConsoleUtility.LogError($"whichTarget=={whichTarget} is invalid!!");
return;
}
int num = ((whichTarget != AIScriptTokenArgType.TARGET_SELECT) ? 1 : 0);
AISelectedTargetInfo aISelectedTargetInfo = _set[num];
if (aISelectedTargetInfo != null)
{
aISelectedTargetInfo.RemovalType = removalType;
}
}
}