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.
This commit is contained in:
143
SVSim.BattleEngine/Engine/Skill_fusion_metamorphose.cs
Normal file
143
SVSim.BattleEngine/Engine/Skill_fusion_metamorphose.cs
Normal file
@@ -0,0 +1,143 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using Wizard;
|
||||
using Wizard.Battle.UI;
|
||||
using Wizard.Battle.View.Vfx;
|
||||
|
||||
public class Skill_fusion_metamorphose : Skill_metamorphose
|
||||
{
|
||||
public const float METAMORPHOSE_EFFECT_TIME = 0.5f;
|
||||
|
||||
public const string FUSION_METAMORPHOSE_EFFECT_PATH = "cmn_card_fusionmetamorphose_2";
|
||||
|
||||
public const string FUSION_METAMORPHOSE_SE_PATH = "se_cmn_card_fusionmetamorphose_2";
|
||||
|
||||
public override bool IsShowSideLogSkillType => false;
|
||||
|
||||
public Skill_fusion_metamorphose(SkillParameter skillPrm, string option)
|
||||
: base(skillPrm, option)
|
||||
{
|
||||
}
|
||||
|
||||
public override VfxWithLoading Start(CallParameter parameter)
|
||||
{
|
||||
IEnumerable<BattleCardBase> enumerable = parameter.targetCards.Where((BattleCardBase c) => c.IsInHand);
|
||||
List<MetamorphoseCardPair> list = new List<MetamorphoseCardPair>();
|
||||
base.OptionValue.GetInt(SkillFilterCreator.ContentKeyword.random_count, -1);
|
||||
List<BattleCardBase> inplayTargets = enumerable.Where((BattleCardBase c) => c.IsInplay).ToList();
|
||||
if (_metamorphoseCardId == -1)
|
||||
{
|
||||
return NullVfxWithLoading.GetInstance();
|
||||
}
|
||||
if (!enumerable.Any())
|
||||
{
|
||||
return NullVfxWithLoading.GetInstance();
|
||||
}
|
||||
ParallelVfxPlayer parallelVfxPlayer = ParallelVfxPlayer.Create();
|
||||
ParallelVfxPlayer parallelVfxPlayer2 = ParallelVfxPlayer.Create();
|
||||
ParallelVfxPlayer parallelVfxPlayer3 = ParallelVfxPlayer.Create();
|
||||
ParallelVfxPlayer parallelVfxPlayer4 = ParallelVfxPlayer.Create();
|
||||
float num = 0f;
|
||||
int num2 = 0;
|
||||
foreach (BattleCardBase item in enumerable)
|
||||
{
|
||||
BattleCardBase originalCard = item.Card;
|
||||
BattleCardBase metamorphosedCard;
|
||||
if (GameMgr.GetIns().IsNetworkBattle && !GameMgr.GetIns().IsAINetwork && !BattleManagerBase.IsForecast && !GameMgr.GetIns().IsReplayBattle)
|
||||
{
|
||||
metamorphosedCard = BattleManagerBase.GetIns().MetamorphoseCard(_metamorphoseCardId, originalCard.IsPlayer, originalCard.Index, this, isFusion: true);
|
||||
}
|
||||
else
|
||||
{
|
||||
metamorphosedCard = originalCard.SelfBattlePlayer.CreateCard(_metamorphoseCardId, originalCard.Index);
|
||||
}
|
||||
if (!BattleManagerBase.GetIns().IsVirtualBattle && !BattleManagerBase.GetIns().IsRecovery)
|
||||
{
|
||||
metamorphosedCard.BattleCardView.CardWrapObject.SetActive(value: false);
|
||||
}
|
||||
originalCard.MetamorphoseCard = metamorphosedCard;
|
||||
metamorphosedCard.TransformInfo = new BattleCardBase.TransformInformation(BattleCardBase.TransformType.Metamorphose, originalCard);
|
||||
parallelVfxPlayer.Register(InstantVfx.Create(delegate
|
||||
{
|
||||
metamorphosedCard.BattleCardView.GameObject.SetActive(value: true);
|
||||
metamorphosedCard.BattleCardView.CardWrapObject.SetActive(value: false);
|
||||
metamorphosedCard.BattleCardView.Collider.enabled = false;
|
||||
metamorphosedCard.SetOnDraw(draw: false);
|
||||
}));
|
||||
parallelVfxPlayer2.Register(base.SkillPrm.ownerCard.SelfBattlePlayer.BattleMgr.LoadCardResources(new List<BattleCardBase> { metamorphosedCard }));
|
||||
parallelVfxPlayer3.Register(originalCard.Metamorphose(parameter.skillProcessor));
|
||||
MetamorphoseCardPair metamorphoseCardPair = new MetamorphoseCardPair(originalCard, metamorphosedCard);
|
||||
list.Add(metamorphoseCardPair);
|
||||
SequentialVfxPlayer sequentialVfxPlayer = SequentialVfxPlayer.Create();
|
||||
if (!BattleManagerBase.GetIns().IsRecovery && (originalCard.IsPlayer || GameMgr.GetIns().IsAdminWatch))
|
||||
{
|
||||
CanNotTouchCardVfx canNotTouchCardVfx = new CanNotTouchCardVfx();
|
||||
BattleManagerBase.GetIns().VfxMgr.RegisterImmediateVfx(canNotTouchCardVfx);
|
||||
_canNotTouchCardVfxList.Add(canNotTouchCardVfx);
|
||||
}
|
||||
sequentialVfxPlayer.Register(InstantVfx.Create(delegate
|
||||
{
|
||||
base.SkillPrm.ownerCard.SelfBattlePlayer.BattleView.PlayQueueView.ReplaceCard(metamorphosedCard.BattleCardView, originalCard.BattleCardView);
|
||||
}));
|
||||
sequentialVfxPlayer.Register(metamorphosedCard.SelfBattlePlayer.ReplaceInHand(originalCard, metamorphosedCard, parameter.skillProcessor));
|
||||
InstantVfx instantVfx = InstantVfx.Create(delegate
|
||||
{
|
||||
base.SkillPrm.selfBattlePlayer.BattleView.HandView.ReplaceCardInView(originalCard.BattleCardView, metamorphosedCard.BattleCardView);
|
||||
MotionUtils.SetLayerAll(metamorphosedCard.BattleCardView.GameObject, 31);
|
||||
});
|
||||
originalCard.BattleCardView.HideCanPlayEffect();
|
||||
VfxBase vfxBase = Skill_metamorphose.SetupMetamorphosedCardTransformVfx(originalCard, metamorphosedCard);
|
||||
ParallelVfxPlayer parallelVfxPlayer5 = ParallelVfxPlayer.Create(instantVfx, InstantVfx.Create(delegate
|
||||
{
|
||||
metamorphosedCard.BattleCardView.Transform.position = originalCard.BattleCardView.Transform.position;
|
||||
metamorphosedCard.BattleCardView.Transform.rotation = originalCard.BattleCardView.Transform.rotation;
|
||||
metamorphosedCard.BattleCardView.Transform.localScale = originalCard.BattleCardView.Transform.localScale;
|
||||
Skill_metamorphose.SwapMetamorphosedCardMesh(originalCard, metamorphosedCard);
|
||||
}));
|
||||
GameObject effectGameObject = null;
|
||||
WaitLoadEffectAndSetSeVfx loadingVfx = new WaitLoadEffectAndSetSeVfx("cmn_card_fusionmetamorphose_2", "se_cmn_card_fusionmetamorphose_2", delegate(GameObject e)
|
||||
{
|
||||
effectGameObject = e;
|
||||
});
|
||||
PlayEffectAndSeVfx playEffectAndSeVfx = new PlayEffectAndSeVfx(() => effectGameObject, metamorphosedCard.BattleCardView.Transform, isFollow: false, isFollowPosition: false, isFollowAll: true);
|
||||
VfxWithLoading vfxWithLoading = VfxWithLoading.Create(loadingVfx, playEffectAndSeVfx);
|
||||
parallelVfxPlayer2.Register(vfxWithLoading.LoadingVfx);
|
||||
base.SkillPrm.ownerCard.SelfBattlePlayer.BattleMgr.OperateMgr.CallOnEffect(base.SkillPrm.buildInfo);
|
||||
SequentialVfxPlayer morphVfx = SequentialVfxPlayer.Create(vfxBase, vfxWithLoading.MainVfx, InstantVfx.Create(delegate
|
||||
{
|
||||
MotionUtils.SetLayerAll(playEffectAndSeVfx.GetLoadedGameObject(), 31);
|
||||
}), WaitVfx.Create(0.5f), parallelVfxPlayer5);
|
||||
sequentialVfxPlayer.Register(Skill_metamorphose.AttachMetamorphoseCardToOriginalCardVfx(originalCard, metamorphosedCard));
|
||||
sequentialVfxPlayer.Register(WaitVfx.Create(num));
|
||||
num += 0.1f;
|
||||
sequentialVfxPlayer.Register(new MetamorphoseHandCardVfx(metamorphoseCardPair.NewCard, morphVfx, isFusion: true));
|
||||
sequentialVfxPlayer.Register(Skill_metamorphose.EnableMetamorphosedCardColliderVfx(metamorphosedCard));
|
||||
sequentialVfxPlayer.Register(TouchableUpdateVfx(originalCard.IsPlayer));
|
||||
parallelVfxPlayer4.Register(sequentialVfxPlayer);
|
||||
num2++;
|
||||
}
|
||||
IncreaseSkillMetamorphoseCount(inplayTargets);
|
||||
if (IsBattleLog)
|
||||
{
|
||||
BattleLogManager.GetInstance().AddLogSkillMetamorphose(list.ToList(), this, IsTargetInOpponentHand(), isFusion: true);
|
||||
}
|
||||
VfxBase vfxBase2 = parallelVfxPlayer2;
|
||||
vfxBase2 = UIManager.GetInstance().CreateNowLoadingVfx(parallelVfxPlayer2);
|
||||
VfxWithLoadingSequential vfxWithLoadingSequential = VfxWithLoadingSequential.Create(parallelVfxPlayer, parallelVfxPlayer3, parallelVfxPlayer4);
|
||||
vfxWithLoadingSequential.RegisterToLoadingVfx(vfxBase2);
|
||||
return vfxWithLoadingSequential;
|
||||
}
|
||||
|
||||
public bool IsShowFusionMetamorphoseFrameEffect(IEnumerable<BattleCardBase> selectedCards)
|
||||
{
|
||||
if (selectedCards.Count() == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
BattlePlayerReadOnlyInfoPair playerInfoPair = new BattlePlayerReadOnlyInfoPair(base.SkillPrm.ownerCard.SelfBattlePlayer, base.SkillPrm.ownerCard.OpponentBattlePlayer);
|
||||
SkillConditionCheckerOption skillConditionCheckerOption = new SkillConditionCheckerOption();
|
||||
skillConditionCheckerOption.FusionIngredientCards = BattlePlayerBase.ConvertToSkillInfoCollection(selectedCards);
|
||||
return CheckCondition(playerInfoPair, skillConditionCheckerOption, isPrePlay: true);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user