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

137 lines
3.1 KiB
C#

namespace Wizard;
public class PlayedCardInfo
{
public int HandIndex;
public AIVirtualCard Card;
public int DrawCount;
public int UsedCost;
public int RestPp;
public PlaySimulationType PlayType;
public bool IsPassedPlayCondition;
public bool IsProcessed;
public bool IsPlayable
{
get
{
if (UsedCost >= 0 && RestPp >= 0)
{
return IsPassedPlayCondition;
}
return false;
}
}
public AISimulationPreprocessRecorder PreprocessRecorder { get; private set; }
public AIVirtualCard TransformCard { get; private set; }
public AIDiscardInfo DiscardInfo { get; private set; }
public AISelectedTargetInfoSet PreDecidedSelectTargets { get; private set; }
public bool HasPreDecidedSelectTargets
{
get
{
if (PreDecidedSelectTargets != null)
{
return PreDecidedSelectTargets.IsAnyTargetExists();
}
return false;
}
}
public PlayedCardInfo(int handIndex, AIVirtualCard card)
{
HandIndex = handIndex;
Card = card;
DrawCount = 0;
UsedCost = -1;
RestPp = -1;
PlayType = PlaySimulationType.Undefined;
IsPassedPlayCondition = false;
PreprocessRecorder = null;
TransformCard = null;
DiscardInfo = null;
PreDecidedSelectTargets = null;
IsProcessed = false;
}
public void CloneFromPartlyMatchedInfo(PlayedCardInfo original)
{
if (HandIndex == original.HandIndex && Card.IsSameCard(original.Card))
{
DrawCount = original.DrawCount;
UsedCost = original.UsedCost;
RestPp = original.RestPp;
PlayType = original.PlayType;
IsPassedPlayCondition = original.IsPassedPlayCondition;
TransformCard = original.TransformCard;
}
else
{
AIConsoleUtility.LogError("PlayedCardInfo.CloneFromPartlyMatchedInfo() error!! Cannot match to original!!!!!");
}
}
public void RegisterPreprocess(AISimulationPreprocessRecorder recorder)
{
PreprocessRecorder = recorder;
}
public void SetTransformCard(AIVirtualCard newActor)
{
TransformCard = newActor;
}
public void SetDiscardInfo(AIDiscardInfo info, AIScriptTokenArgType selectType)
{
DiscardInfo = info;
if (info.IsValuable && (selectType == AIScriptTokenArgType.TARGET_SELECT || selectType == AIScriptTokenArgType.SECOND_TARGET_SELECT))
{
AISelectedTargetInfo info2 = new AISelectedTargetInfo(info.TargetList, TargetSelectType.NormalRuleBase);
int num = -1;
switch (selectType)
{
case AIScriptTokenArgType.TARGET_SELECT:
num = 0;
break;
case AIScriptTokenArgType.SECOND_TARGET_SELECT:
num = 1;
break;
}
if (num >= 0)
{
RegisterPreDecidedTarget(info2, num);
}
}
}
public void RegisterPreDecidedPreprocessTarget(AISelectedTargetInfo info)
{
if (PreDecidedSelectTargets == null)
{
PreDecidedSelectTargets = new AISelectedTargetInfoSet();
}
PreDecidedSelectTargets.SetPreprocessTarget(info);
}
public void RegisterPreDecidedTarget(AISelectedTargetInfo info, int index)
{
if (PreDecidedSelectTargets == null)
{
PreDecidedSelectTargets = new AISelectedTargetInfoSet();
}
PreDecidedSelectTargets.Set(info, index);
}
}