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.
This commit is contained in:
86
SVSim.BattleEngine/Engine/Wizard/EnemyHandVirtualCard.cs
Normal file
86
SVSim.BattleEngine/Engine/Wizard/EnemyHandVirtualCard.cs
Normal file
@@ -0,0 +1,86 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user