Files
SVSimServer/SVSim.BattleEngine/Engine/Wizard/BattleCardRealTargetInformation.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

154 lines
4.1 KiB
C#

using System.Collections.Generic;
namespace Wizard;
public class BattleCardRealTargetInformation
{
public enum TargetRange
{
Default,
DestroyedCardList
}
private class SingleSkillTargetInformation
{
public List<BattleCardBase> TargetList;
public TargetRange VirtualCardSearchRange;
private bool CheckCreateTokenIdCondition(AITokenType type)
{
if (type == AITokenType.Reanimate)
{
bool num = VirtualCardSearchRange == TargetRange.DestroyedCardList;
if (!num)
{
AIConsoleUtility.LogError("SingleSkillTargetInformation.CheckCreateTokenIdCondition() error!! Reanimate target search range = " + VirtualCardSearchRange);
}
return num;
}
return true;
}
public List<int> CreateTokenIdList(AIVirtualCard owner, AITokenType tokenType)
{
if (!CheckCreateTokenIdCondition(tokenType))
{
return null;
}
List<int> list = new List<int>();
AITokenManager tokenManager = owner.SelfField.AI.tokenManager;
for (int i = 0; i < TargetList.Count; i++)
{
BattleCardBase battleCardBase = TargetList[i];
int baseCardId = battleCardBase.BaseParameter.BaseCardId;
bool isAlly = battleCardBase.IsPlayer == owner.IsPlayer;
list.Add(baseCardId);
tokenManager.AddTokenFromId(baseCardId, isAlly, tokenType == AITokenType.Choice);
}
return list;
}
}
public BattleCardBase SkillOwner;
private List<SingleSkillTargetInformation> _targetInformationList;
public bool HasAnyTarget
{
get
{
if (_targetInformationList != null)
{
return _targetInformationList.Count > 0;
}
return false;
}
}
public BattleCardRealTargetInformation(BattleCardBase owner)
{
SkillOwner = owner;
_targetInformationList = null;
}
public void AddTargetList(List<BattleCardBase> newAddedList, ISkillTargetFilter targetFilter)
{
SingleSkillTargetInformation element = new SingleSkillTargetInformation
{
TargetList = newAddedList,
VirtualCardSearchRange = GetTargetRange(targetFilter)
};
_targetInformationList = AIParamQuery.AddElementToList(element, _targetInformationList);
}
private TargetRange GetTargetRange(ISkillTargetFilter targetFilter)
{
if (targetFilter is SkillTargetDestroyedCardListFilter)
{
return TargetRange.DestroyedCardList;
}
return TargetRange.Default;
}
public List<int> DequeueFirstTargetInfoAndCreateTokenIdList(AIVirtualCard owner, AITokenType tokenType)
{
if (!HasAnyTarget)
{
return null;
}
SingleSkillTargetInformation singleSkillTargetInformation = _targetInformationList[0];
_targetInformationList.RemoveAt(0);
return singleSkillTargetInformation.CreateTokenIdList(owner, tokenType);
}
public bool IsTarget(AIVirtualCard virtualTarget)
{
if (!HasAnyTarget)
{
return false;
}
for (int i = 0; i < _targetInformationList.Count; i++)
{
SingleSkillTargetInformation singleSkillTargetInformation = _targetInformationList[i];
int num = 0;
while (num < singleSkillTargetInformation.TargetList.Count)
{
if (virtualTarget.IsEqual(singleSkillTargetInformation.TargetList[i]))
{
return true;
}
i++;
}
}
return false;
}
public AIVirtualCardRealTargetInformation CreateAIVirtualTargetInformation(AIVirtualField field, AIVirtualCard owner, AIVirtualField.AIVirtualFieldSearchCardOption searchOption)
{
if (!HasAnyTarget)
{
return null;
}
List<AIVirtualCard> list = null;
for (int i = 0; i < _targetInformationList.Count; i++)
{
SingleSkillTargetInformation singleSkillTargetInformation = _targetInformationList[i];
searchOption.OptionalSearchRange = singleSkillTargetInformation.VirtualCardSearchRange;
for (int j = 0; j < singleSkillTargetInformation.TargetList.Count; j++)
{
AIVirtualCard aIVirtualCard = field.SearchVirtualCard(singleSkillTargetInformation.TargetList[j], searchOption);
if (aIVirtualCard != null)
{
list = AIParamQuery.AddElementToList(aIVirtualCard, list);
}
}
}
if (list != null && list.Count > 0)
{
return new AIVirtualCardRealTargetInformation(owner, list);
}
return null;
}
}