Files
SVSimServer/SVSim.BattleEngine/Engine/WatchPlayCardAction.cs
gamer147 824309ec44 feat(battle-engine): close the AI-simulation subsystem (verbatim)
Copied the 89 uncopied AI*SimulationUtility/extension files defining the
AIVirtualCard/AIVirtualField extension methods; the compile loop then auto-closed
the revealed type deps (~3049 files total, drift-clean). 10.0k -> 62 errors.
2026-06-05 20:30:59 -04:00

106 lines
5.0 KiB
C#

using System.Collections.Generic;
using System.Linq;
using Wizard.Battle.View.Vfx;
public class WatchPlayCardAction : PlayHandCardReflection
{
public WatchPlayCardAction(BattleManagerBase battleMgr, OperateMgr operateMgr, NetworkBattleData networkBattleData)
: base(battleMgr, operateMgr, networkBattleData)
{
}
protected override void PlayMove(BattleCardBase playedCard, bool isPlayer = false, List<int> choiceId = null, bool isChoice = false)
{
if (isChoice && choiceId != null && (isPlayer || GameMgr.GetIns().IsAdmin))
{
return;
}
if (!GameMgr.GetIns().IsAdminWatch && !isPlayer)
{
base.PlayMove(playedCard, isPlayer, choiceId, isChoice);
return;
}
SequentialVfxPlayer sequentialVfxPlayer = SequentialVfxPlayer.Create();
if (_networkBattleData.GetReceiveData().mutationAfterCardId != 0)
{
sequentialVfxPlayer.Register(InstantVfx.Create(delegate
{
playedCard.BattleCardView.HideHandCardInfo();
playedCard.BattleCardView.HideCanPlayEffect();
}));
}
sequentialVfxPlayer.Register(_operateMgr.InitSetCard(playedCard, isPlayer));
sequentialVfxPlayer.Register(_operateMgr.PlayCard(playedCard, isPlayer, null, isRecovery: false, choiceId));
_battleMgr.VfxMgr.RegisterSequentialVfx(sequentialVfxPlayer);
}
protected override void PlayActionMove(BattleCardBase receivedCard, List<BattleCardBase> targetCards, bool isPlayer = false, List<int> choiceId = null)
{
if (!isPlayer && !GameMgr.GetIns().IsAdmin)
{
base.PlayActionMove(receivedCard, targetCards, isPlayer, choiceId);
}
}
protected override void SendEcho(BattleCardBase receivedCard, NetworkBattleDefine.PlayActionType actionType)
{
}
public override void StartSelect(int actingCardIndex, bool isPlayer = true)
{
SequentialVfxPlayer sequentialVfxPlayer = SequentialVfxPlayer.Create();
BattleCardBase playedCard = NetworkBattleGenericTool.GetIndexToCardBase(_battleMgr, _battleMgr.GetBattlePlayer(isPlayer), actingCardIndex);
Skill_transform accelerateOrCrystallizeTransformSkill = playedCard.GetAccelerateOrCrystallizeTransformSkill();
bool isAccelerateSelect = accelerateOrCrystallizeTransformSkill != null;
sequentialVfxPlayer.Register(InstantVfx.Create(delegate
{
playedCard.BattleCardView.HideHandCardInfo();
if (!isPlayer && GameMgr.GetIns().IsAdminWatch)
{
_battleMgr.BattleEnemy.UpdateHandCardsPlayability(areArrowsForcedOff: true);
}
}));
sequentialVfxPlayer.Register(_operateMgr.InitSetCard(playedCard, isPlayer, isSelect: true, isRecovery: false, isChoiceSelect: false, isAccelerateSelect));
sequentialVfxPlayer.Register(CreateStartSelectVfx(playedCard, isEvolve: false, isChoice: false, accelerateOrCrystallizeTransformSkill));
_battleMgr.VfxMgr.RegisterSequentialVfx(sequentialVfxPlayer);
}
public override void StartChoiceSelect(int actingCardIndex, bool isPlayer = true)
{
SequentialVfxPlayer sequentialVfxPlayer = SequentialVfxPlayer.Create();
BattleCardBase indexToCardBase = NetworkBattleGenericTool.GetIndexToCardBase(_battleMgr, _battleMgr.GetBattlePlayer(isPlayer), actingCardIndex);
Skill_transform accelerateOrCrystallizeTransformSkill = indexToCardBase.GetAccelerateOrCrystallizeTransformSkill();
BattleCardBase battleCardBase = null;
if (accelerateOrCrystallizeTransformSkill != null)
{
int tokenId = accelerateOrCrystallizeTransformSkill.TransformId + (accelerateOrCrystallizeTransformSkill.SkillPrm.ownerCard.BaseParameter.IsFoil ? 1 : 0);
battleCardBase = _battleMgr.CreateTransformCardRegisterVfx(indexToCardBase, tokenId, isPlayer);
}
SkillBase choiceSkill = GetSelectSkills((battleCardBase != null) ? battleCardBase : indexToCardBase, isEvolve: false).FirstOrDefault();
sequentialVfxPlayer.Register(CreateStartChoiceSelectVfx(indexToCardBase, choiceSkill, isEvolve: false, battleCardBase));
_battleMgr.VfxMgr.RegisterSequentialVfx(sequentialVfxPlayer);
}
public override void StartSelectFusion(int actingCardIndex, bool isPlayer = true)
{
SequentialVfxPlayer sequentialVfxPlayer = SequentialVfxPlayer.Create();
BattleCardBase playedCard = NetworkBattleGenericTool.GetIndexToCardBase(_battleMgr, _battleMgr.GetBattlePlayer(isPlayer), actingCardIndex);
sequentialVfxPlayer.Register(InstantVfx.Create(delegate
{
playedCard.BattleCardView.HideHandCardInfo();
if (!isPlayer && GameMgr.GetIns().IsAdminWatch)
{
_battleMgr.BattleEnemy.UpdateHandCardsPlayability(areArrowsForcedOff: true);
}
}));
sequentialVfxPlayer.Register((_battleMgr as NetworkWatchBattleMgr).CreateVfxResetPositionByCardBase(playedCard, null));
sequentialVfxPlayer.Register(CreateStartFusionSelectVfx(playedCard));
_battleMgr.VfxMgr.RegisterSequentialVfx(sequentialVfxPlayer);
}
protected override VfxBase CreateAfterSelectVfx(BattleCardBase actingCard, List<int> selectedChoiceCardIds, bool isPlayer, bool isChoiceBrave)
{
return _operateMgr.PlayCard(actingCard, isPlayer, _selectedCards, isRecovery: false, selectedChoiceCardIds, isChoiceBrave);
}
}