Files
SVSimServer/SVSim.BattleEngine/Engine/Wizard/EnemyHandVirtualCard.cs
gamer147 957af3d1ec feat(battle-engine): full Unity/VFX/god-object shims + expanded copy closure (2570 files)
Authored Unity primitive/object-model shim, VFX layer (control-flow-preserving, InstantVfx never invokes its action -- headless suppression), god-object stubs (GameMgr/EffectMgr/UIManager with faithfully-extracted nested enums), View/UI/Touch tree, LitJson+BetterList+Tuple copied, third-party stubs. Discovered Roslyn header-error masking: fixing class-header type errors unmasks body references, so the true copy closure is ~2570 files (was 782 under masking). Errors: masked-25720 -> 268; our shim files compile clean. Remaining: ~50 residual shim/external types, 24 NGUI UI-base overrides, static-type fixes, plus likely 1-2 more unmask waves.
2026-06-05 17:22:20 -04:00

87 lines
2.6 KiB
C#

using System.Collections.Generic;
namespace Wizard;
public class EnemyHandVirtualCard : AIVirtualCard
{
public EnemyHandVirtualCard(BattleCardBase card, AIVirtualField field)
{
_field = field;
base.IsInHand = true;
base.IsOnField = false;
base.IsAlly = false;
InitializeFromBattleCardBase(card);
base.TagCollectionContainer = new AIEnemyHandTagCollectionContainer();
base.FusionIngredients = new AIVirtualFusionIngredientsInfo();
if (card.SkillApplyInformation.FusionIngredients != null && card.SkillApplyInformation.FusionIngredients.Count > 0)
{
base.FusionIngredients.CopyFusionIngredientsFromBattleCard(card.SkillApplyInformation.FusionIngredients, _field);
}
}
public EnemyHandVirtualCard(EnemyHandVirtualCard original, AIVirtualField field)
{
base.BaseCard = original.BaseCard;
_field = field;
base.IsInHand = true;
base.IsOnField = false;
base.IsAlly = false;
base.CardIndex = original.CardIndex;
base.BaseId = original.BaseId;
base.Clan = original.Clan;
IsPlayer = original.IsPlayer;
IsUnit = original.IsUnit;
IsSpell = original.IsSpell;
IsAmulet = original.IsAmulet;
IsCountdownAmulet = original.IsCountdownAmulet;
base.TagCollectionContainer = new AIEnemyHandTagCollectionContainer(original.TagCollectionContainer, this);
if (original._tribeList != null)
{
_tribeList = new List<CardBasePrm.TribeType>(original._tribeList);
}
if (original.FusionIngredients != null)
{
base.FusionIngredients = new AIVirtualFusionIngredientsInfo(original.FusionIngredients);
}
}
protected override void InitializeFromBattleCardBase(BattleCardBase origin)
{
InitializeFromBattleCardBaseBasic(origin);
Cost = origin.Cost;
base.CardIndex = origin.Index;
IsPlayer = origin.IsPlayer;
base.BattleSkills = origin.Skills;
base.BattleSkillHashList = CardSkillHashUtility.GetSingleSkillHashStringList(base.BattleSkills);
IsUnit = origin.IsUnit;
IsSpell = origin.IsSpell;
IsAmulet = origin.IsField;
IsCountdownAmulet = origin.IsChantField;
if (origin.Tribe != null && origin.Tribe.Count > 0)
{
for (int i = 0; i < origin.Tribe.Count; i++)
{
AppendTribe(origin.Tribe[i]);
}
}
}
public override void InitializeTags(AIParamQuery query, AIAttachedTagCollection attachedTagCollection, AIRemovedTagCollection removedTagCollection)
{
base.TagCollectionContainer.InitTags(this, query);
}
public override bool IsFollower(List<int> playPtn)
{
if (IsUnit)
{
if (!this.IsAccelerated(_field, null))
{
return !this.IsCrystalize(_field, null);
}
return false;
}
return false;
}
}