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

221 lines
8.2 KiB
C#

using System.Collections.Generic;
using System.Linq;
using Wizard.Battle;
public class SkillConditionCheckerOption
{
public class SkillAndSelectTarget
{
public BattleCardBase SelectCard { get; private set; }
public SkillBase SelectSkill { get; private set; }
public SkillAndSelectTarget(BattleCardBase card, SkillBase skill)
{
SelectCard = card;
SelectSkill = skill;
}
}
private int _skillTargetConditionIndex;
public BattleCardBase PlayedCard { get; set; }
public BattleCardBase EnhanceCard { get; set; }
public BattleCardBase AcceleratedCard { get; set; }
public BattleCardBase CrystallizedCard { get; set; }
public BattleCardBase SummonedCard { get; set; }
public BattleCardBase AttackerCard { get; set; }
public BattleCardBase AttackTargetCard { get; set; }
public BattleCardBase DestroyedCard { get; set; }
public BattleCardBase BanishedCard { get; set; }
public BattleCardBase NecromanceCard { get; set; }
public List<IReadOnlyBattleCardInfo> LeftCards { get; set; }
public int NecromanceCount { get; set; }
public int LastUsedWhiteRitualStackCount { get; set; }
public List<BattleCardBase> BurialRiteCards { get; set; }
public List<BattleCardBase> GetOffCards { get; set; }
public List<int> ChosenCards { get; set; }
public List<IReadOnlyBattleCardInfo> InHandCard { get; set; }
public List<IReadOnlyBattleCardInfo> SkillDrewCards { get; set; }
public List<IReadOnlyBattleCardInfo> SkillUpdatedDeckCards { get; set; }
public List<BattlePlayerBase.CardAndValue> HealingCardAndValue { get; set; }
public List<IReadOnlyBattleCardInfo> DamageCards { get; set; }
public List<IReadOnlyBattleCardInfo> EvolutionCards { get; set; }
public List<IReadOnlyBattleCardInfo> FusionIngredientCards { get; set; }
public List<IReadOnlyBattleCardInfo> Discards { get; set; }
public List<SkillAndSelectTarget> SelectedCards { get; set; }
public List<IReadOnlyBattleCardInfo> ReturnCards { get; set; }
public List<IReadOnlyBattleCardInfo> CantAttackAllReturnCards { get; set; }
public List<IReadOnlyBattleCardInfo> NextTargetCards { get; set; }
public List<IReadOnlyBattleCardInfo> ReanimatedCards { get; set; }
public List<IReadOnlyBattleCardInfo> DeckSelfSummonedCards { get; set; }
public List<IReadOnlyBattleCardInfo> TokenDrewCards { get; set; }
public List<IReadOnlyBattleCardInfo> DeckDrewCards { get; set; }
public List<IReadOnlyBattleCardInfo> DrewOverHandLimitCards { get; set; }
public List<IReadOnlyBattleCardInfo> InplayBuffingCards { get; set; }
public List<IReadOnlyBattleCardInfo> InplayDebuffingCards { get; set; }
public List<IReadOnlyBattleCardInfo> ChantCountChangeCard { get; set; }
public List<IReadOnlyBattleCardInfo> ShortageDeckWinCards { get; set; }
public DamageInfo DefaultDamage { get; set; }
public DamageInfo FixedDamage { get; set; }
public List<SkillBase> ProcessSkillList { get; set; }
public AttachingAbilityInfo AttachingAbility { get; set; }
public int AddChargeCount { get; set; }
public int AddOddChargeCount { get; set; }
public int AddEvenChargeCount { get; set; }
public bool IsRefPrev { get; set; }
public bool IsSkipPpCheck { get; set; }
public bool IsSkipPrivateCardCheck { get; set; }
public List<List<string>> SkillTargetConditionList { get; set; }
public List<string> PopSkillTargetCondition()
{
List<string> result = new List<string> { string.Empty };
if (SkillTargetConditionList.Count > _skillTargetConditionIndex)
{
result = SkillTargetConditionList[_skillTargetConditionIndex];
_skillTargetConditionIndex++;
}
return result;
}
public SkillConditionCheckerOption()
{
ReturnCards = new List<IReadOnlyBattleCardInfo>();
CantAttackAllReturnCards = new List<IReadOnlyBattleCardInfo>();
InHandCard = new List<IReadOnlyBattleCardInfo>();
SkillDrewCards = new List<IReadOnlyBattleCardInfo>();
SkillUpdatedDeckCards = new List<IReadOnlyBattleCardInfo>();
HealingCardAndValue = new List<BattlePlayerBase.CardAndValue>();
DamageCards = new List<IReadOnlyBattleCardInfo>();
EvolutionCards = new List<IReadOnlyBattleCardInfo>();
Discards = new List<IReadOnlyBattleCardInfo>();
NextTargetCards = new List<IReadOnlyBattleCardInfo>();
ReanimatedCards = new List<IReadOnlyBattleCardInfo>();
DeckSelfSummonedCards = new List<IReadOnlyBattleCardInfo>();
TokenDrewCards = new List<IReadOnlyBattleCardInfo>();
DeckDrewCards = new List<IReadOnlyBattleCardInfo>();
DrewOverHandLimitCards = new List<IReadOnlyBattleCardInfo>();
ChantCountChangeCard = new List<IReadOnlyBattleCardInfo>();
ShortageDeckWinCards = new List<IReadOnlyBattleCardInfo>();
SelectedCards = new List<SkillAndSelectTarget>();
BurialRiteCards = new List<BattleCardBase>();
GetOffCards = new List<BattleCardBase>();
ChosenCards = new List<int>();
DefaultDamage = new DamageInfo(null, -1);
FixedDamage = new DamageInfo(null, -1);
ProcessSkillList = new List<SkillBase>();
AttachingAbility = new AttachingAbilityInfo(null, new List<IReadOnlyBattleCardInfo>());
SkillTargetConditionList = new List<List<string>>();
_skillTargetConditionIndex = 0;
}
public SkillConditionCheckerOption ShallowCopy()
{
return new SkillConditionCheckerOption
{
PlayedCard = PlayedCard,
EnhanceCard = EnhanceCard,
AcceleratedCard = AcceleratedCard,
CrystallizedCard = CrystallizedCard,
SummonedCard = SummonedCard,
AttackerCard = AttackerCard,
AttackTargetCard = AttackTargetCard,
DestroyedCard = DestroyedCard,
NecromanceCard = NecromanceCard,
BurialRiteCards = new List<BattleCardBase>(BurialRiteCards),
GetOffCards = new List<BattleCardBase>(GetOffCards),
ChosenCards = new List<int>(ChosenCards),
InHandCard = new List<IReadOnlyBattleCardInfo>(InHandCard),
SkillDrewCards = new List<IReadOnlyBattleCardInfo>(SkillDrewCards),
SkillUpdatedDeckCards = new List<IReadOnlyBattleCardInfo>(SkillUpdatedDeckCards),
HealingCardAndValue = new List<BattlePlayerBase.CardAndValue>(HealingCardAndValue),
DamageCards = new List<IReadOnlyBattleCardInfo>(DamageCards),
EvolutionCards = new List<IReadOnlyBattleCardInfo>(EvolutionCards),
Discards = new List<IReadOnlyBattleCardInfo>(Discards),
SelectedCards = new List<SkillAndSelectTarget>(SelectedCards),
ReturnCards = new List<IReadOnlyBattleCardInfo>(ReturnCards),
CantAttackAllReturnCards = new List<IReadOnlyBattleCardInfo>(CantAttackAllReturnCards),
NextTargetCards = new List<IReadOnlyBattleCardInfo>(NextTargetCards),
ReanimatedCards = new List<IReadOnlyBattleCardInfo>(ReanimatedCards),
DeckSelfSummonedCards = new List<IReadOnlyBattleCardInfo>(DeckSelfSummonedCards),
TokenDrewCards = new List<IReadOnlyBattleCardInfo>(TokenDrewCards),
DeckDrewCards = new List<IReadOnlyBattleCardInfo>(DeckDrewCards),
DrewOverHandLimitCards = new List<IReadOnlyBattleCardInfo>(DrewOverHandLimitCards),
ChantCountChangeCard = new List<IReadOnlyBattleCardInfo>(ChantCountChangeCard),
ShortageDeckWinCards = new List<IReadOnlyBattleCardInfo>(ShortageDeckWinCards),
DefaultDamage = DefaultDamage,
FixedDamage = FixedDamage,
ProcessSkillList = new List<SkillBase>(ProcessSkillList),
AttachingAbility = new AttachingAbilityInfo(AttachingAbility.Skill, new List<IReadOnlyBattleCardInfo>(AttachingAbility.TargetCards)),
SkillTargetConditionList = new List<List<string>>(SkillTargetConditionList),
_skillTargetConditionIndex = _skillTargetConditionIndex,
AddChargeCount = AddChargeCount,
AddEvenChargeCount = AddEvenChargeCount,
AddOddChargeCount = AddOddChargeCount,
IsRefPrev = IsRefPrev
};
}
public void SetCheckerOptionTransientValue(BattlePlayerBase selfBattlePlayer, BattlePlayerBase opponentBattlePlayer)
{
if (selfBattlePlayer.ReturnList.Count > 0)
{
ReturnCards.AddRange(BattlePlayerBase.ConvertToSkillInfoCollection(selfBattlePlayer.ReturnList));
ReturnCards = ReturnCards.Distinct().ToList();
}
if (opponentBattlePlayer.ReturnList.Count > 0)
{
ReturnCards.AddRange(BattlePlayerBase.ConvertToSkillInfoCollection(opponentBattlePlayer.ReturnList));
ReturnCards = ReturnCards.Distinct().ToList();
}
}
}