public class NewReplayOperateReceive : OperateReceive { private bool _isFirstMulligan = true; public NewReplayOperateReceive(NetworkBattleManagerBase networkBattleMgr, RegisterActionManager registerCardList, OperateMgr operateMgr, NetworkBattleData networkBattleData) : base(networkBattleMgr, registerCardList, operateMgr, networkBattleData) { } protected override PlayHandCardReflection CreateNetworkPlayCardAction() { return new ReplayPlayCardAction(_battleMgr, _operateMgr, _networkBattleData); } protected override InPlayCardReflection CreateNetworkInPlayAction() { return new ReplayInPlayAction(_battleMgr, _operateMgr); } public void StartReplayOperate(NewReplayOperationCollection networkOperationCollection, NetworkBattleReceiver.ReplayReceiveData receiveData) { switch (receiveData.Operation) { case NetworkBattleReceiver.ReplayOperationType.MulliganStart: networkOperationCollection.DealOperation(); break; case NetworkBattleReceiver.ReplayOperationType.MulliganEnd: if (_isFirstMulligan) { _isFirstMulligan = false; networkOperationCollection.SwapOperation(OnReceiveOpponentMulligan, OnReceivePlayerMulligan); } else { _isFirstMulligan = true; networkOperationCollection.SecondMulliganOperation(OnReceiveOpponentMulligan, OnReceivePlayerMulligan, OnEndMulligan); } break; case NetworkBattleReceiver.ReplayOperationType.TurnStart: networkOperationCollection.TurnStartOperation(); break; case NetworkBattleReceiver.ReplayOperationType.TurnStartFinish: networkOperationCollection.TurnStartFinishOperation(); break; case NetworkBattleReceiver.ReplayOperationType.TurnEnd: networkOperationCollection.TurnEndOperation(); break; case NetworkBattleReceiver.ReplayOperationType.TurnEndFinish: networkOperationCollection.TurnEndFinishOperation(); break; case NetworkBattleReceiver.ReplayOperationType.AddPpTotal: networkOperationCollection.AddPpTotalOperation(); break; case NetworkBattleReceiver.ReplayOperationType.AddPp: networkOperationCollection.AddPpOperation(); break; case NetworkBattleReceiver.ReplayOperationType.AddBp: networkOperationCollection.AddBpOperation(); break; case NetworkBattleReceiver.ReplayOperationType.AddEp: networkOperationCollection.AddEpOperation(); break; case NetworkBattleReceiver.ReplayOperationType.SetEp: networkOperationCollection.SetEpOperation(); break; case NetworkBattleReceiver.ReplayOperationType.Draw: networkOperationCollection.DrawCardOperation(); break; case NetworkBattleReceiver.ReplayOperationType.TokenDraw: networkOperationCollection.TokenDrawCardOperation(); break; case NetworkBattleReceiver.ReplayOperationType.CreateReservedCard: networkOperationCollection.CreateReservedCardOperation(); break; case NetworkBattleReceiver.ReplayOperationType.Play: if (receiveData.IsChoiceBraveData) { networkOperationCollection.PlayChoiceBraveCardOperation(); } else { networkOperationCollection.PlayHandCardOperation(); } break; case NetworkBattleReceiver.ReplayOperationType.ShowWhenPlayEffect: networkOperationCollection.ShowWhenPlayEffectOperation(); break; case NetworkBattleReceiver.ReplayOperationType.SummonToken: networkOperationCollection.SummonTokenOperation(); break; case NetworkBattleReceiver.ReplayOperationType.SummonCard: networkOperationCollection.SummonCardOperation(); break; case NetworkBattleReceiver.ReplayOperationType.AttackStart: networkOperationCollection.AttackStartOperation(); break; case NetworkBattleReceiver.ReplayOperationType.Attack: networkOperationCollection.AttackOperation(); break; case NetworkBattleReceiver.ReplayOperationType.CostChange: networkOperationCollection.CostChangeOperation(); break; case NetworkBattleReceiver.ReplayOperationType.RemoveCostChange: networkOperationCollection.RemoveCostChangeOperation(); break; case NetworkBattleReceiver.ReplayOperationType.PowerUp: networkOperationCollection.PowerUpOperation(); break; case NetworkBattleReceiver.ReplayOperationType.GainPowerDown: networkOperationCollection.GainPowerDownOperation(); break; case NetworkBattleReceiver.ReplayOperationType.SetPowerDown: networkOperationCollection.SetPowerDownOperation(); break; case NetworkBattleReceiver.ReplayOperationType.DepriveBuff: networkOperationCollection.DepriveBuffOperation(); break; case NetworkBattleReceiver.ReplayOperationType.SpellCharge: networkOperationCollection.SpellChargeOperation(); break; case NetworkBattleReceiver.ReplayOperationType.Damage: networkOperationCollection.DamageOperation(); break; case NetworkBattleReceiver.ReplayOperationType.Heal: networkOperationCollection.HealOperation(); break; case NetworkBattleReceiver.ReplayOperationType.Discard: networkOperationCollection.DiscardOperation(); break; case NetworkBattleReceiver.ReplayOperationType.DestroyOrBanish: networkOperationCollection.DestroyOrBanishOperation(); break; case NetworkBattleReceiver.ReplayOperationType.Evolve: networkOperationCollection.EvolveOperation(); break; case NetworkBattleReceiver.ReplayOperationType.SkillEvolve: networkOperationCollection.SkillEvolveOperation(); break; case NetworkBattleReceiver.ReplayOperationType.Return: networkOperationCollection.ReturnOperation(); break; case NetworkBattleReceiver.ReplayOperationType.StartSelect: networkOperationCollection.StartSelectOperation(); break; case NetworkBattleReceiver.ReplayOperationType.Select: networkOperationCollection.SelectOperation(); break; case NetworkBattleReceiver.ReplayOperationType.CompSelect: networkOperationCollection.CompleteSelectOperation(); break; case NetworkBattleReceiver.ReplayOperationType.CancelSelect: networkOperationCollection.CancelSelectOperation(); break; case NetworkBattleReceiver.ReplayOperationType.StartChoice: networkOperationCollection.StartChoiceOperation(); break; case NetworkBattleReceiver.ReplayOperationType.CompChoice: networkOperationCollection.CompleteChoiceOperation(); break; case NetworkBattleReceiver.ReplayOperationType.CancelChoice: networkOperationCollection.CancelChoiceOperation(); break; case NetworkBattleReceiver.ReplayOperationType.StartFusion: networkOperationCollection.StartFusionOperation(); break; case NetworkBattleReceiver.ReplayOperationType.SelectFusion: networkOperationCollection.SelectFusionOperation(); break; case NetworkBattleReceiver.ReplayOperationType.CompFusion: networkOperationCollection.CompleteFusionOperation(); break; case NetworkBattleReceiver.ReplayOperationType.CancelFusion: networkOperationCollection.CancelFusionOperation(); break; case NetworkBattleReceiver.ReplayOperationType.ChantCountChange: networkOperationCollection.ChantCountChangeOperation(); break; case NetworkBattleReceiver.ReplayOperationType.ChangeWhiteRitualStack: networkOperationCollection.ChangeWhiteRitualStackOperation(); break; case NetworkBattleReceiver.ReplayOperationType.Necromance: networkOperationCollection.Necromance(); break; case NetworkBattleReceiver.ReplayOperationType.ChangeMaxAttackableCount: networkOperationCollection.ChangeMaxAttackableCountOperation(); break; case NetworkBattleReceiver.ReplayOperationType.UpdateDeck: networkOperationCollection.UpdateDeckOperation(); break; case NetworkBattleReceiver.ReplayOperationType.IndexChange: networkOperationCollection.IndexChangeOperation(); break; case NetworkBattleReceiver.ReplayOperationType.Metamorphose: networkOperationCollection.MetamorphoseOperation(); break; case NetworkBattleReceiver.ReplayOperationType.Geton: networkOperationCollection.GetonOperation(); break; case NetworkBattleReceiver.ReplayOperationType.Getoff: networkOperationCollection.GetoffOperation(); break; case NetworkBattleReceiver.ReplayOperationType.Unite: networkOperationCollection.UniteOperation(); break; case NetworkBattleReceiver.ReplayOperationType.OpenCard: networkOperationCollection.OpenCardOperation(); break; case NetworkBattleReceiver.ReplayOperationType.AttachSkill: networkOperationCollection.ShowSkillEffectOperation(); break; case NetworkBattleReceiver.ReplayOperationType.ShowSkillEffect: networkOperationCollection.ShowSkillEffectOperation(); break; case NetworkBattleReceiver.ReplayOperationType.ShowSkillInductionEffect: networkOperationCollection.ShowSkillInductionEffect(); break; case NetworkBattleReceiver.ReplayOperationType.ShowIndependentEffect: networkOperationCollection.ShowIndependentEffect(); break; case NetworkBattleReceiver.ReplayOperationType.ChangeAffiliation: networkOperationCollection.ChangeAffiliationOperation(); break; case NetworkBattleReceiver.ReplayOperationType.OnChangeUnionBurstAndSkyboundArt: networkOperationCollection.ShowChangeUnionBurstAndSkyboundArtEffect(); break; case NetworkBattleReceiver.ReplayOperationType.ShowRepeatSkillEffect: networkOperationCollection.ShowRepeatSkillEffect(); break; case NetworkBattleReceiver.ReplayOperationType.GiveCantActivateFanfare: networkOperationCollection.GiveCantActivateFanfareOperation(); break; case NetworkBattleReceiver.ReplayOperationType.DepriveCantActivateFanfare: networkOperationCollection.DepriveCantActivateFanfareOperation(); break; case NetworkBattleReceiver.ReplayOperationType.LoseSkill: networkOperationCollection.LoseSkillOperation(); break; case NetworkBattleReceiver.ReplayOperationType.UpdateHandInfo: networkOperationCollection.UpdateHandInfo(); break; case NetworkBattleReceiver.ReplayOperationType.UpdateChoiceBraveButtonEffet: networkOperationCollection.UpdateChoiceBraveButtonEffet(); break; case NetworkBattleReceiver.ReplayOperationType.UpdateInplayInfo: networkOperationCollection.UpdateInplayInfo(); break; case NetworkBattleReceiver.ReplayOperationType.UpdateDeckInfo: networkOperationCollection.UpdateDeckInfo(); break; case NetworkBattleReceiver.ReplayOperationType.UpdateAttachedCardInfo: networkOperationCollection.UpdateAttachedCardInfo(); break; case NetworkBattleReceiver.ReplayOperationType.UpdateFusionCardInfo: networkOperationCollection.UpdateFusionCardInfo(); break; case NetworkBattleReceiver.ReplayOperationType.UpdateStatusPanel: networkOperationCollection.UpdateStatusPanel(); break; case NetworkBattleReceiver.ReplayOperationType.UpdateBattleInfo: networkOperationCollection.UpdateBattleLog(); break; case NetworkBattleReceiver.ReplayOperationType.UpdateClassInfoUi: networkOperationCollection.UpdateClassInfoUi(); break; case NetworkBattleReceiver.ReplayOperationType.UpdateMyRotationBonus: networkOperationCollection.UpdateMyRotationBonus(); break; case NetworkBattleReceiver.ReplayOperationType.UpdateAvatarBattleDescInfo: networkOperationCollection.UpdateAvatarBattleDescValueList(); break; case NetworkBattleReceiver.ReplayOperationType.UpdateAttackableEffect: networkOperationCollection.UpdateAttackableEffect(); break; case NetworkBattleReceiver.ReplayOperationType.SkillProcessStart: networkOperationCollection.SkillProcessStart(); break; case NetworkBattleReceiver.ReplayOperationType.SkillVfxStart: networkOperationCollection.SkillVfxStart(); break; case NetworkBattleReceiver.ReplayOperationType.SkillVfxEnd: networkOperationCollection.SkillVfxEnd(); break; case NetworkBattleReceiver.ReplayOperationType.ClearSideLog: networkOperationCollection.ClearSideLog(); break; case NetworkBattleReceiver.ReplayOperationType.ClearDestroyedCardList: networkOperationCollection.ClearDestroyedCardList(); break; case NetworkBattleReceiver.ReplayOperationType.PlayEmotion: networkOperationCollection.PlayEmotion(); break; case NetworkBattleReceiver.ReplayOperationType.AttachShortageDeckWin: networkOperationCollection.AttachShortageDeckWin(); break; case NetworkBattleReceiver.ReplayOperationType.ShortageDeckWin: networkOperationCollection.ShortageDeckWin(); break; case NetworkBattleReceiver.ReplayOperationType.ShortageDeckLose: networkOperationCollection.ShortageDeckLose(); break; case NetworkBattleReceiver.ReplayOperationType.SpecialWin: networkOperationCollection.SpecialWin(); break; case NetworkBattleReceiver.ReplayOperationType.SpecialLose: networkOperationCollection.SpecialLose(); break; case NetworkBattleReceiver.ReplayOperationType.BattleFinish: networkOperationCollection.BattleFinish(); break; } } }