Files
SVSimServer/SVSim.BattleEngine/Engine/NetworkBattleReceiver.cs
gamer147 0d9d8acae0 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.
2026-06-05 16:57:20 -04:00

2533 lines
79 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections.Generic;
using System.Linq;
using LitJson;
using UnityEngine;
using Wizard;
using Wizard.Battle.UI;
using Wizard.Battle.View;
using Wizard.RoomMatch;
public class NetworkBattleReceiver
{
public enum JudgeEndType
{
JUDGE = 1,
VALIDATE,
FIRSTCARD
}
public class ReceiveData
{
public long _timeSent;
public NetworkBattleDefine.NetworkBattleURI dataUri;
public NetworkBattleDefine.NetworkBattleURI receiveUri;
public int idx;
public bool isSelf;
public bool _isPlayerCard;
public NetworkBattleDefine.PlayActionType actionType;
public JudgeEndType judgeEndType;
public int playCardIndex;
public List<CardDataModel> unapprovedList = new List<CardDataModel>();
public List<CardDataModel> SkillConditionCheckList = new List<CardDataModel>();
public List<TargetData> OpponentTargetDataList = new List<TargetData>();
public List<TargetData> PlayerTargetDataList = new List<TargetData>();
public int oppoChatStamp;
public int playChatStamp;
public bool isWin;
public bool IsPlayerDead;
public bool IsEnemyDead;
public bool _isBurialRiteSelect;
public bool IsChoiceBraveSelect;
public List<CardDataModel> knownCardList = new List<CardDataModel>();
public List<CardDataModel> watchCardList = new List<CardDataModel>();
public RESULT_CODE result;
public NetworkBattleDefine.ReceiveNodeResultCode NodeResultCode;
public RESULT_CODE opponentResult;
public List<int> validateSkillIndexList = new List<int>();
public NetworkBattleSender.SELECT_SKILL_OPERATION _selectSkillOperation;
public int _selectedCardIndex;
public List<int> ActiveSelectSkillIndexList = new List<int>();
public List<int> _selectedChoiceCardIdList = new List<int>();
public bool _isEvolveTargetSelect;
public NetworkBattleSender.SELECT_OBJECT_TARGET_TYPE _selectObjectTargetType;
public bool _isShortenedTurn;
public bool _isNotTurnEndReady;
public NetworkBattleSender.SLIDE_OBJECT_TYPE _slideObjectType;
public bool IsTransformChoice;
public List<int> choiceIdList = new List<int>();
public List<int> burialRateList = new List<int>();
public int mutationAfterCardId;
public bool _isSettingMutationAfterCardId;
public int transformBeforeCardId;
public int mutationAfterCost;
public List<SendKeyActionDataManager.KeyActionType> keyActionType = new List<SendKeyActionDataManager.KeyActionType>();
public List<int> selfIdxList = new List<int>();
public List<int> oppoIdxList = new List<int>();
public int spin;
public bool IsChoice => keyActionType.Exists((SendKeyActionDataManager.KeyActionType x) => x == SendKeyActionDataManager.KeyActionType.Choice || x == SendKeyActionDataManager.KeyActionType.HaveBeforeSkillChoice);
public bool IsChoiceEvolution => keyActionType.Exists((SendKeyActionDataManager.KeyActionType x) => x == SendKeyActionDataManager.KeyActionType.ChoiceEvolution);
public bool IsChoiceBrave => keyActionType.Exists((SendKeyActionDataManager.KeyActionType x) => x == SendKeyActionDataManager.KeyActionType.ChoiceBrave);
public bool IsBurialRate => keyActionType.Exists((SendKeyActionDataManager.KeyActionType x) => x == SendKeyActionDataManager.KeyActionType.BurialRate);
public bool IsAcceleratedOrCrystallize => keyActionType.Exists((SendKeyActionDataManager.KeyActionType x) => x == SendKeyActionDataManager.KeyActionType.Accelerated || x == SendKeyActionDataManager.KeyActionType.Crystallize);
public bool IsFusion => keyActionType.Exists((SendKeyActionDataManager.KeyActionType x) => x == SendKeyActionDataManager.KeyActionType.Fusion);
public List<CardDataModel> GetReceiveCardList()
{
if (!GameMgr.GetIns().IsWatchBattle && !BattleManagerBase.GetIns().IsRecovery)
{
return knownCardList;
}
return watchCardList;
}
}
public class ReplayReceiveData : ReceiveData
{
public ReplayOperationType Operation;
public int AddPpTotalCount;
public int Pp;
public int Bp;
public int Ep;
public int CardIndex;
public List<int> CardIndexList;
public List<int> TargetIndexList;
public List<int> CardIdList;
public string SelectCard;
public string OwnerCardName;
public List<string> CardNameList = new List<string>();
public List<string> DestroyCardNameList = new List<string>();
public List<string> BanishCardNameList = new List<string>();
public List<string> IndestructibleCardNameList = new List<string>();
public List<string> EffectTargetCardNameList = new List<string>();
public string PlayVoiceOnDeathCard = string.Empty;
public CardInfo CardInfo;
public List<CardInfo> CardInfoList;
public EffectInfo EffectInfo;
public int Attack;
public int Life;
public int MultiplyAttack;
public int MultiplyLife;
public int MaxLife;
public List<int> RemoveCostChangeList;
public List<int> DepriveOffenseBuffList;
public List<int> DepriveLifeBuffList;
public int Cost;
public List<int> AddCostList;
public List<int> SetCostList;
public List<int> AddSpellChargeList;
public int TransformCardId;
public BattleCardBase.TransformType TransformType;
public bool IsOpen;
public bool IsOpenDrawSkill;
public bool IsReserved;
public List<int> DealDamageList;
public List<bool> IsReflectionDamage;
public List<int> HealList;
public bool IsAttackerDead;
public bool IsTargetDead;
public int ReceiveDamage;
public bool IsEvolve;
public bool IsActive;
public bool IsNotConsumeEp;
public int EvolveMeWhenAttackIndex;
public bool IsDeckSelf;
public bool IsBurialRite;
public int ChangeCount;
public bool IsDestroy;
public bool IsChange;
public List<bool> IsCostUpList;
public bool IsSpellCharge;
public bool IsOpenCard;
public bool IsHalf;
public bool IsAdd;
public bool IsTransformSelect;
public bool IsFusionNecromance;
public bool IsFusionMetamorphose;
public int FusionMetamorphoseCardId;
public int SkillHashCode;
public bool IsOnSummonSkill;
public bool IsInvoked;
public string SkillVoice;
public bool IsLastDrawOpenCard;
public bool IsOwnerEffect;
public bool IsIgnoreVoice;
public bool IsRandomVoice;
public bool IsEvoVoice;
public bool IsImmediate;
public bool BySkill;
public bool OnlyEffect;
public bool OnlyAttackEffect;
public bool UpdateAttackEffect;
public bool UseRecordAttackEffect;
public CardBasePrm.ClanType Clan;
public CardBasePrm.TribeInfo Tribe;
public ClassCharaPrm.EmotionType EmoteType;
public List<DestroyType> DestroyTypeList;
public SkillCollectionBase.WhenPlayEffectType WhenPlayEffectType;
public int BattleLogIndex;
public List<SideLogSkillInfo> SideLogSkillInfoList;
public StatusPanelInfo PlayerStatusPanelInfo;
public StatusPanelInfo EnemyStatusPanelInfo;
public ClassInfoUiInfo PlayerClassInfo;
public ClassInfoUiInfo EnemyClassInfo;
public List<MyRotationBonusInfo> MyRotationBonusInfoList = new List<MyRotationBonusInfo>();
public AvatarBattleDescriptionValueInfo PlayerAvatarBattleDescInfo;
public AvatarBattleDescriptionValueInfo EnemyAvatarBattleDescInfo;
public BattleManagerBase.FINISH_TYPE FinishType;
public RESULT_CODE ResultCode;
public int MaxSelectCount;
public bool CanFusionMetamorphose;
public bool IsChoiceBraveData;
}
public class CardInfo
{
public int Id;
public int Index;
public bool IsSelf;
public int Cost;
public bool IsEvolution;
public int ExecutedFixedUseCostIndex = -1;
public List<NewReplayBattleMgr.ParameterModifierInfo> ParameterModifierList = new List<NewReplayBattleMgr.ParameterModifierInfo>();
public List<int> UnionBurstModifierValueList = new List<int>();
public List<int> SkyboundArtModifierValueList = new List<int>();
public List<int> SuperSkyboundArtModifierValueList = new List<int>();
public List<int> FusionIngredientIdxList = new List<int>();
public HandCardFrameEffectType HandCardFrameEffectType;
public bool IsHandEffectActive;
public List<InplaySkillEffect> InplaySkillEffectList;
public int InductionNumber;
public bool Attackable;
public bool IsCantAttackClass;
public int AttackableCount;
public bool ForceHideAttackEffect;
public List<int> SkillDescriptionValueList;
public List<int> EvoSkillDescriptionValueList;
public List<ReplayBuffInfo> BuffInfoList = new List<ReplayBuffInfo>();
public List<string> NoConsumeEpBuffInfoNameList = new List<string>();
public List<ReplayBuffInfoLabel> BuffInfoLabelList = new List<ReplayBuffInfoLabel>();
public List<int> Tribe = new List<int>();
public bool IsSameBuff;
public bool IsOverflow;
public int SpellChargeCount = -1;
public int ChantCount;
public int WhiteRitualCount = -1;
public int MaxAttackableCount = -1;
public int MetamorphoseCount;
}
public class ReplayBuffInfo
{
public BuffCardInfo OwnerCardInfo;
public BuffCardInfo PreviousOwnerCardInfo;
public ReplayBuffType BuffType;
public int CardIdFrom;
public bool IsEvolutionSkill;
public bool IsPlayer;
public string DivergenceIdList;
public List<int> CopiedSkillDescriptionValueList = new List<int>();
public List<int> CopiedEvoSkillDescriptionValueList = new List<int>();
}
public class BuffCardInfo
{
public string CardName;
public int CardId;
public int MetamorphoseCount;
}
public class EffectInfo
{
public string EffectPath;
public EffectMgr.EngineType EngineType;
public string SePath;
public EffectMgr.MoveType EffectMoveType;
public EffectMgr.TargetType EffectTargetType;
public float EffectTime;
public bool IsFollowInHand;
public bool IsTargetPosition;
public bool IsWhenFusioned;
}
public class SideLogSkillInfo
{
public int Index;
public bool IsSelf;
public int CardId;
public int SkillHashCode;
public bool IsEvolve;
public bool IsOnSummonSkill;
public bool IsInvoked;
public bool IsPrivate;
public bool IsInDeck;
public CardInfo CardInfo;
}
public class StatusPanelInfo
{
public int HandCount;
public int CemetaryCount;
public int DeckCount;
public bool IsDrew;
}
public class ClassInfoUiInfo
{
public int TurnPlayCount;
public int CemetaryCount;
public int Life;
public bool IsForceBerserk;
public bool IsEnterForceBerserk;
public bool IsChangeResonance;
}
public class MyRotationBonusInfo
{
public string AbilityId;
public bool IsSelf;
public int RemainingIncreaseAddPptotalTurn;
public bool IsRemainIncreaseAddPptotalTurn;
public int RemainingSkillCount;
public bool IsRemainSkill;
}
public class AvatarBattleDescriptionValueInfo
{
public List<int> PassiveSkillDescriotionValueList = new List<int>();
public List<List<int>> ChoiceBraveDescriotionValueListList = new List<List<int>>();
}
public enum DestroyType
{
None,
BurialRite,
WhiteRitual,
ChantCount,
WhenDestroy,
Killer,
WhenDestroyAndKiller
}
public enum InplaySkillEffect
{
Guard,
Killer,
Untouchable,
NotBeAttacked,
Sneak,
SkillCantAtkAll,
Independent,
DamageCutProtection,
Indestructible,
ReflectionClass,
Drain,
Destroy,
WhiteRitual,
StackWhiteRitual,
Induction,
InductionNumber,
Geton,
GetonAfter
}
public enum ReplayReceiveDataType
{
Operation,
IsSelf,
SelfCards,
OppoCards,
AddPpTotalCount,
Pp,
Bp,
EpCount,
CardIndexList,
Index,
TargetIndexList,
CardInfo,
CardInfoList,
AddCostList,
SetCostList,
AddSpellChargeList,
Cost,
Attack,
Life,
MultiplyAttack,
MultiplyLife,
MaxLife,
RemoveCostChangeList,
DepriveOffenseBuffList,
DepriveLifeBuffList,
CardId,
CardIdList,
IsOpen,
IsOpenDrawSkill,
IsReserved,
DealDamageList,
ReceiveDamage,
IsReflectionDamage,
HealList,
IsAttackerDead,
IsTargetDead,
SelectCard,
OwnerCardName,
CardNameList,
DestroyCardNameList,
BanishCardNameList,
IndestructibleCardNameList,
EffectTargetCardNameList,
SkillSideLogList,
PlayVoiceOnDeathCard,
IsEvolve,
IsActive,
IsNotConsumeEp,
EvolveMeWhenAttackIndex,
TransformCardId,
TransformType,
IsDeckSelf,
IsInDeck,
IsPrivate,
IsBurialRite,
ChangeCount,
IsDestroy,
IsChange,
IsCostUpList,
IsSpellCharge,
IsOpenCard,
IsHalf,
IsAdd,
IsTransformSelect,
IsFusionNecromance,
IsFusionMetamorphose,
FusionMetamorphoseCardId,
EffectInfo,
DestroyTypeList,
WhenPlayEffectType,
AttachedCardList,
PlayerStatusPanelInfo,
EnemyStatusPanelInfo,
PlayerBattleInfo,
EnemyBattleInfo,
PlayerClassInfo,
EnemyClassInfo,
MyRotationBonusList,
PlayerAvatarBattleDescInfo,
EnemyAvatarBattleDescInfo,
BattleLogIndex,
IsWin,
IsPlayerDead,
IsEnemyDead,
FinishType,
ResultCode,
SkillHashCode,
IsOnSummonSkill,
IsInvoked,
SkillVoice,
IsLastDrawOpenCard,
IsOwnerEffect,
IsIgnoreVoice,
IsRandomVoice,
IsEvoVoice,
IsImmediate,
BySkill,
OnlyEffect,
OnlyAttackEffect,
UpdateAttackEffect,
UseRecordAttackEffect,
Clan,
Tribe,
TribeType,
TribeChangeType,
EmoteType,
EnemyTurnNum,
MaxSelectCount,
CanFusionMetamorphose,
IsChoiceBrave
}
public enum ReplayOperationType
{
MulliganStart,
MulliganEnd,
TurnStart,
TurnStartFinish,
TurnEnd,
TurnEndFinish,
AddPpTotal,
AddPp,
AddBp,
AddEp,
SetEp,
Draw,
TokenDraw,
Play,
ShowWhenPlayEffect,
SummonToken,
SummonCard,
AttackStart,
Attack,
CostChange,
RemoveCostChange,
PowerUp,
GainPowerDown,
SetPowerDown,
DepriveBuff,
SpellCharge,
Damage,
Heal,
Discard,
DestroyOrBanish,
Evolve,
SkillEvolve,
Return,
StartSelect,
Select,
CompSelect,
CancelSelect,
StartChoice,
CompChoice,
CancelChoice,
StartFusion,
SelectFusion,
CompFusion,
CancelFusion,
ChantCountChange,
ChangeWhiteRitualStack,
Necromance,
ChangeMaxAttackableCount,
UpdateDeck,
IndexChange,
Metamorphose,
Geton,
Getoff,
Unite,
OpenCard,
CreateReservedCard,
AttachSkill,
ShowSkillEffect,
ShowSkillInductionEffect,
ShowIndependentEffect,
ChangeAffiliation,
OnChangeUnionBurstAndSkyboundArt,
ShowRepeatSkillEffect,
GiveCantActivateFanfare,
DepriveCantActivateFanfare,
LoseSkill,
UpdateHandInfo,
UpdateInplayInfo,
UpdateDeckInfo,
UpdateAttachedCardInfo,
UpdateFusionCardInfo,
UpdateStatusPanel,
UpdateBattleInfo,
UpdateClassInfoUi,
UpdateMyRotationBonus,
UpdateAvatarBattleDescInfo,
UpdateAttackableEffect,
UpdateChoiceBraveButtonEffet,
SkillProcessStart,
SkillVfxStart,
SkillVfxEnd,
ClearSideLog,
ClearDestroyedCardList,
PlayEmotion,
AttachShortageDeckWin,
ShortageDeckWin,
ShortageDeckLose,
SpecialWin,
SpecialLose,
BattleFinish
}
public enum ReplayItemType
{
Id,
Index,
IsSelf,
Turn,
Cost,
Atk,
Life,
MaxLife,
IsEvolution,
ExecutedFixedUseCostIndex,
ParameterModifierList,
UnionBurstModifierValueList,
SkyboundArtModifierValueList,
SuperSkyboundArtModifierValueList,
FusionIngredientIdxList,
HandEffect,
IsHandEffectActive,
InplaySkillEffect,
InductionNumber,
Attackable,
IsCantAttackClass,
MaxAttackableCount,
AttackableCount,
ForceHideAttackEffect,
SkillDescriptionValueList,
EvoSkillDescriptionValueList,
PassiveSkillDescriptionValueList,
ChoiceBraveDescriptionValueListList,
BuffInfoList,
EffectPath,
EngineType,
SePath,
EffectMoveType,
EffectTargetType,
EffectTime,
IsFollowInHand,
IsTargetPosition,
IsWhenFusioned,
MaxPp,
Pp,
Bp,
Ep,
EpTotal,
CemetaryCount,
DeckCount,
HandCard,
InplayCard,
HandCount,
PlayCount,
Player,
Enemy,
IsDrew,
DeckCard,
CemetaryCard,
NecromanceZoneCard,
BanishCard,
FusionIngredientCard,
GetonCard,
UniteCard,
ReservedCard,
BlackHole,
ChoiceBraveCardList,
CardTotalNum,
Name,
LogType,
RightValue,
CardWithCount,
RandomArray,
LogItemType,
IsMinus,
IsNecromance,
IsDead,
IsDrain,
IsForceBerserk,
IsEnterForceBerserk,
IsChangeResonance,
BuffInfo,
BuffOwnerCardInfo,
PreviousBuffOwnerCardInfo,
CardName,
BuffType,
NoConsumeEpCardName,
BuffTextLabel,
BuffTextType,
BuffTextValue,
PreviousOwner,
DivergenceId,
CopiedSkillDescriptionValueList,
CopiedEvoSkillDescriptionValueList,
IsSameBuff,
IsOverFlow,
SpellChargeCount,
Tribe,
ChantCount,
WhiteRitualCount,
IsShortageDeckWin,
IsEpEvolveThisTurn,
CantActivateFanfareCount,
CumulativeEvolutionCount,
IsEvolutionSkill,
TextureOption,
PlayedCardList,
PlayedCardIdList,
DestroyedCardList,
FusionCardList,
IsPlayerSideTurn,
MulliganChangedCount,
CardIdFrom,
AbilityId,
RemainingIncreaseAddPptotalTurn,
IsRemainIncreaseAddPptotalTurn,
RemainingSkillCount,
IsRemainSkill,
Priority,
BattleInfoValue,
BattleInfoTargetCardList,
BattleInfoTargetCardIdList,
ParameterModifierType,
ParameterModifierValue,
MetamorphoseCount
}
public enum ReplayBuffType
{
None,
Copied,
SaveBurialRite,
Geton,
IsReserveTokenDrawSkill,
IsHiddenClassLogSkill
}
public enum ReplayBuffInfoTextType
{
Cost,
StatusBuff,
Quick,
Rush,
Killer,
Drain,
AttackCount,
IgnoreGuard,
ConsumeEpModifier,
AllDamageShield,
NextDamageShield,
SkillDamageShield,
SpellDamageShield,
AllDamageCut,
NextDamageCut,
SkillDamageCut,
DamageClipping
}
public enum ReplayParameterModifierType
{
OffenseAddModifier,
OffenseMultiplyModifier,
OffenseSetModifier,
LifeAddModifier,
LifeMultiplyModifier,
LifeSetModifier,
MaxLifeAddModifier,
MaxLifeSetModifier,
DamageCardParameterModifier,
HealCardParameterModifier,
CostHalfRoundUpModifier,
CostAddModifier,
CostSetModifier
}
public class TargetData
{
public int TargetIndex { get; private set; }
public int ViewId { get; private set; }
public bool IsSelf { get; private set; }
public List<int> SelectSkillIndexList { get; private set; }
public TargetData(int target, int viewId, bool isSelf, List<int> selectSkillIndexList)
{
TargetIndex = target;
ViewId = viewId;
IsSelf = isSelf;
SelectSkillIndexList = selectSkillIndexList;
}
}
public struct ReplayBuffInfoLabel
{
public ReplayBuffInfoTextType Type { get; set; }
public int Value { get; set; }
public ReplayBuffInfoLabel(ReplayBuffInfoTextType type, int value = -1)
{
Type = type;
Value = value;
}
}
public enum RESULT_CODE
{
NotFinish = 0,
NoContest = 1,
Invalid = 2,
LifeWin = 101,
LifeLose = 102,
DeckoutWin = 103,
DeckoutLose = 104,
RetireWin = 105,
RetireLose = 106,
SpecialWin = 107,
SpecialLose = 108,
DisconnectWin = 201,
DisconnectLose = 202,
FirstcardWin = 203,
FirstcardLose = 204,
TurnendWin = 205,
TurnendLose = 206,
TurnstartWin = 207,
TurnstartLose = 208,
MaxTurnLose = 210,
Error = 999
}
protected NetworkBattleManagerBase networkBattleMgr;
protected ReceiveData _receiveData;
protected ReplayReceiveData _replayReceiveData;
protected bool receiveStop;
public Action OnFinishSetupVirtualCard;
public NetworkBattleReceiver(NetworkBattleManagerBase battlemgr)
{
networkBattleMgr = battlemgr;
_receiveData = new ReceiveData();
}
public bool ReceivedMessage(NetworkBattleDefine.NetworkBattleURI uri, bool isHaveSequence, Dictionary<string, object> data, bool isPlayer = false, WatchDataHandler handler = null, bool checkBreakData = true)
{
if (!ConvertReceiveDataToMakeData(uri, isHaveSequence, data, isPlayer, handler) && !RealTimeNetworkAgent.IsFromResumeData(data) && checkBreakData)
{
return false;
}
if (receiveStop)
{
return true;
}
if (isHaveSequence)
{
networkBattleMgr.ConductReceiveData(_receiveData, isPlayer);
}
else
{
networkBattleMgr.ConductReceiveData_NotHaveSequence(_receiveData, isPlayer);
}
return true;
}
public void ReceivedReplayMessage(Dictionary<string, object> data)
{
ConvertReplayReceiveDataToMakeData(data);
if (!receiveStop)
{
networkBattleMgr.ConductReplayReceiveData(_replayReceiveData);
}
}
public virtual void ReceivedTouchData(NetworkBattleDefine.NetworkBattleURI uri, bool isHaveSequence, Dictionary<string, object> data, bool isPlayer = false, WatchDataHandler handler = null)
{
}
protected virtual bool ConvertReceiveDataToMakeData(NetworkBattleDefine.NetworkBattleURI uri, bool isHaveSequence, Dictionary<string, object> datas, bool isPlayer = false, WatchDataHandler handler = null)
{
if (isHaveSequence)
{
_receiveData = new ReceiveData();
}
_receiveData.dataUri = uri;
string text = "URI : " + uri;
try
{
foreach (KeyValuePair<string, object> data in datas)
{
if (!Enum.IsDefined(typeof(NetworkBattleDefine.NetworkParameter), data.Key.ToString()))
{
continue;
}
text = text + ", " + data.Key;
if (data.Value is List<object> list)
{
text += "[";
for (int i = 0; i < list.Count; i++)
{
if (!(list[i] is Dictionary<string, object> dictionary))
{
continue;
}
foreach (KeyValuePair<string, object> item in dictionary)
{
text = text + item.Key + " : " + item.Value.ToString() + ",";
}
}
text += "]";
}
else
{
text = text + " : " + data.Value.ToString();
}
switch ((NetworkBattleDefine.NetworkParameter)Enum.Parse(typeof(NetworkBattleDefine.NetworkParameter), data.Key.ToString()))
{
case NetworkBattleDefine.NetworkParameter.time:
_receiveData._timeSent = long.Parse(data.Value.ToString());
break;
case NetworkBattleDefine.NetworkParameter.idx:
_receiveData.idx = ConvertToInt(data.Value);
break;
case NetworkBattleDefine.NetworkParameter.self:
_receiveData.selfIdxList = MakeReceiveCardIndexSortList(data.Value as List<object>);
break;
case NetworkBattleDefine.NetworkParameter.oppo:
_receiveData.oppoIdxList = MakeReceiveCardIndexSortList(data.Value as List<object>);
break;
case NetworkBattleDefine.NetworkParameter.isSelf:
_receiveData.isSelf = ConvertToInt(data.Value) == 1;
break;
case NetworkBattleDefine.NetworkParameter.type:
_receiveData.actionType = (NetworkBattleDefine.PlayActionType)ConvertToInt(data.Value);
break;
case NetworkBattleDefine.NetworkParameter.endType:
_receiveData.judgeEndType = (JudgeEndType)ConvertToInt(data.Value);
break;
case NetworkBattleDefine.NetworkParameter.targetUri:
_receiveData.receiveUri = (NetworkBattleDefine.NetworkBattleURI)Enum.Parse(typeof(NetworkBattleDefine.NetworkBattleURI), data.Value.ToString());
break;
case NetworkBattleDefine.NetworkParameter.playIdx:
_receiveData.playCardIndex = ConvertToInt(data.Value);
break;
case NetworkBattleDefine.NetworkParameter.cards:
_receiveData.watchCardList = MakeReceiveCardDataList(data.Value as List<object>, networkBattleMgr, handler);
switch (uri)
{
case NetworkBattleDefine.NetworkBattleURI.Deal:
_receiveData.selfIdxList = (from model in _receiveData.watchCardList
where !model.isOpponent
orderby model.RedrawCardPosition
select model.Index).ToList();
_receiveData.oppoIdxList = (from model in _receiveData.watchCardList
where model.isOpponent
orderby model.RedrawCardPosition
select model.Index).ToList();
break;
case NetworkBattleDefine.NetworkBattleURI.Swap:
case NetworkBattleDefine.NetworkBattleURI.Ready:
_receiveData.selfIdxList = GetSwappedIndexList(isPlayer: true, _receiveData.watchCardList);
_receiveData.oppoIdxList = GetSwappedIndexList(isPlayer: false, _receiveData.watchCardList);
break;
}
break;
case NetworkBattleDefine.NetworkParameter.idxChangeSeed:
networkBattleMgr.CreateXorShift(ConvertToInt(data.Value));
break;
case NetworkBattleDefine.NetworkParameter.oppoIdxChangeSeed:
networkBattleMgr.CreateXorShift(-1, ConvertToInt(data.Value));
break;
case NetworkBattleDefine.NetworkParameter.targetList:
{
List<TargetData> list3 = CreateTargetList(data, isWatch: true, handler);
if (isPlayer)
{
_receiveData.PlayerTargetDataList = list3;
}
else
{
_receiveData.OpponentTargetDataList = list3;
}
break;
}
case NetworkBattleDefine.NetworkParameter.oppoTargetList:
_receiveData.OpponentTargetDataList = CreateTargetList(data);
break;
case NetworkBattleDefine.NetworkParameter.chatStamp:
if (data.Value is Dictionary<string, object> dictionary3)
{
int num2 = ConvertToInt(dictionary3[NetworkBattleDefine.NetworkParameterNames[NetworkBattleDefine.NetworkParameter.stamp]]);
if (isPlayer)
{
_receiveData.playChatStamp = num2;
}
else
{
_receiveData.oppoChatStamp = num2;
}
}
break;
case NetworkBattleDefine.NetworkParameter.isWin:
_receiveData.isWin = ((ConvertToInt(data.Value) != 0) ? true : false);
break;
case NetworkBattleDefine.NetworkParameter.knownList:
_receiveData.knownCardList = MakeReceiveCardDataList(data.Value as List<object>, networkBattleMgr, handler);
break;
case NetworkBattleDefine.NetworkParameter.uList:
_receiveData.unapprovedList = MakeReceiveCardDataList(data.Value as List<object>, networkBattleMgr, handler);
break;
case NetworkBattleDefine.NetworkParameter.result:
_receiveData.result = (RESULT_CODE)ConvertToInt(data.Value);
break;
case NetworkBattleDefine.NetworkParameter.resultCode:
_receiveData.NodeResultCode = (NetworkBattleDefine.ReceiveNodeResultCode)Convert.ToInt32(data.Value);
break;
case NetworkBattleDefine.NetworkParameter.keyAction:
{
List<object> obj = data.Value as List<object>;
bool flag = false;
foreach (object item2 in obj)
{
Dictionary<string, object> dictionary2 = item2 as Dictionary<string, object>;
SendKeyActionDataManager.KeyActionType keyActionType = (SendKeyActionDataManager.KeyActionType)Enum.Parse(typeof(SendKeyActionDataManager.KeyActionType), dictionary2[SendKeyActionDataManager.KeyActionParameter.type.ToString()].ToString());
_receiveData.keyActionType.Add(keyActionType);
if (dictionary2.ContainsKey(SendKeyActionDataManager.KeyActionParameter.cardId.ToString()) && (!flag || keyActionType != SendKeyActionDataManager.KeyActionType.Choice))
{
_receiveData.transformBeforeCardId = ConvertToInt(dictionary2[SendKeyActionDataManager.KeyActionParameter.cardId.ToString()]);
if (keyActionType == SendKeyActionDataManager.KeyActionType.Accelerated)
{
flag = true;
}
}
switch (keyActionType)
{
case SendKeyActionDataManager.KeyActionType.Choice:
case SendKeyActionDataManager.KeyActionType.HaveBeforeSkillChoice:
case SendKeyActionDataManager.KeyActionType.ChoiceEvolution:
{
_receiveData.choiceIdList = new List<int>();
if (dictionary2 != null && dictionary2.ContainsKey(SendKeyActionDataManager.KeyActionParameter.selectCard.ToString()))
{
_receiveData.choiceIdList = ConvertToListInt(dictionary2[SendKeyActionDataManager.KeyActionParameter.selectCard.ToString()]);
}
CardParameter cardParameterFromId = CardMaster.GetInstanceForBattle().GetCardParameterFromId(_receiveData.transformBeforeCardId);
BattleCardBase battleCardBase = BattleManagerBase.GetIns().CreateBattleCard(cardParameterFromId.BaseCardId, isPlayer: false, null, cardParameterFromId, BattleManagerBase.GetIns().BattlePlayer, 0);
UnityEngine.Object.DestroyImmediate(battleCardBase.BattleCardView.GameObject);
bool isEvol = _receiveData.actionType == NetworkBattleDefine.PlayActionType.EVOLUTION || _receiveData.actionType == NetworkBattleDefine.PlayActionType.EVOLUTION_SELECT;
if (!(NetworkBattleGenericTool.GetChoiceSkill(battleCardBase, isEvol) is Skill_transform))
{
break;
}
_receiveData.IsTransformChoice = true;
if (_receiveData.choiceIdList.Count <= 0)
{
break;
}
string text2 = BattleLogManager.ConvertPremiumIdToNormalId(_receiveData.choiceIdList[0]).ToString();
if (!(battleCardBase.Skills.FirstOrDefault((SkillBase s) => s is Skill_choice) as Skill_choice).OptionValue.GetString(SkillFilterCreator.ContentKeyword.card_id).Contains(text2))
{
LocalLog.AccumulateTraceLog("Illegal Choice Id Received !" + text2);
List<int> list2 = new List<int>();
for (int num = 0; num < _receiveData.choiceIdList.Count; num++)
{
list2.Add((_receiveData.choiceIdList[num] == 100011010) ? 100011020 : 100011010);
}
_receiveData.choiceIdList = list2;
}
break;
}
case SendKeyActionDataManager.KeyActionType.ChoiceBrave:
_receiveData.choiceIdList = new List<int>();
if (dictionary2 != null && dictionary2.ContainsKey(SendKeyActionDataManager.KeyActionParameter.selectCard.ToString()))
{
_receiveData.choiceIdList = ConvertToListInt(dictionary2[SendKeyActionDataManager.KeyActionParameter.selectCard.ToString()]);
}
break;
case SendKeyActionDataManager.KeyActionType.BurialRate:
_receiveData.burialRateList = ConvertToListInt(dictionary2[SendKeyActionDataManager.KeyActionParameter.cardIdx.ToString()]);
break;
}
}
break;
}
case NetworkBattleDefine.NetworkParameter.spin:
_receiveData.spin = GetSpinCount(data.Value);
break;
}
}
if (networkBattleMgr.IsRecovery && uri != NetworkBattleDefine.NetworkBattleURI.OppoDisconnect && uri != NetworkBattleDefine.NetworkBattleURI.RecoveryStart && uri != NetworkBattleDefine.NetworkBattleURI.RecoveryEnd)
{
networkBattleMgr._lastReceivedData = _receiveData;
}
return true;
}
catch
{
LocalLog.AccumulateLastTraceLog("ConvertReciveDataToMakeData Error\n" + text);
Debug.LogError("ConvertReciveDataToMakeData Error");
return false;
}
}
protected virtual void ConvertReplayReceiveDataToMakeData(Dictionary<string, object> data, bool isPlayer = false)
{
_replayReceiveData = new ReplayReceiveData();
try
{
for (int i = 0; i < data.Keys.Count; i++)
{
string text = data.Keys.ElementAt(i);
switch ((ReplayReceiveDataType)int.Parse(text))
{
case ReplayReceiveDataType.Operation:
_replayReceiveData.Operation = (ReplayOperationType)ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.IsSelf:
_replayReceiveData.isSelf = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.SelfCards:
{
List<object> list5 = data[text] as List<object>;
_replayReceiveData.CardInfoList = new List<CardInfo>();
for (int num4 = 0; num4 < list5.Count; num4++)
{
_replayReceiveData.CardInfoList.Add(CreateCardInfo(list5[num4] as JsonData));
}
_replayReceiveData.selfIdxList = _replayReceiveData.CardInfoList.Select((CardInfo c) => c.Index).ToList();
break;
}
case ReplayReceiveDataType.OppoCards:
_replayReceiveData.oppoIdxList = (data[text] as List<object>).Select((object o) => ConvertToInt(o)).ToList();
break;
case ReplayReceiveDataType.AddPpTotalCount:
_replayReceiveData.AddPpTotalCount = ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.Pp:
_replayReceiveData.Pp = ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.Bp:
_replayReceiveData.Bp = ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.EpCount:
_replayReceiveData.Ep = ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.CardIndexList:
_replayReceiveData.CardIndexList = (data[text] as List<object>).Select((object o) => ConvertToInt(o)).ToList();
break;
case ReplayReceiveDataType.Index:
_replayReceiveData.CardIndex = ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.TargetIndexList:
_replayReceiveData.TargetIndexList = (data[text] as List<object>).Select((object o) => ConvertToInt(o)).ToList();
break;
case ReplayReceiveDataType.CardInfo:
_replayReceiveData.CardInfo = CreateCardInfo(data[text] as JsonData);
break;
case ReplayReceiveDataType.CardInfoList:
{
List<object> list3 = data[text] as List<object>;
_replayReceiveData.CardInfoList = new List<CardInfo>();
for (int num2 = 0; num2 < list3.Count; num2++)
{
_replayReceiveData.CardInfoList.Add(CreateCardInfo(list3[num2] as JsonData));
}
break;
}
case ReplayReceiveDataType.RemoveCostChangeList:
_replayReceiveData.RemoveCostChangeList = (data[text] as List<object>).Select((object o) => ConvertToInt(o)).ToList();
break;
case ReplayReceiveDataType.DepriveOffenseBuffList:
_replayReceiveData.DepriveOffenseBuffList = (data[text] as List<object>).Select((object o) => ConvertToInt(o)).ToList();
break;
case ReplayReceiveDataType.DepriveLifeBuffList:
_replayReceiveData.DepriveLifeBuffList = (data[text] as List<object>).Select((object o) => ConvertToInt(o)).ToList();
break;
case ReplayReceiveDataType.AddCostList:
_replayReceiveData.AddCostList = (data[text] as List<object>).Select((object o) => ConvertToInt(o)).ToList();
break;
case ReplayReceiveDataType.SetCostList:
_replayReceiveData.SetCostList = (data[text] as List<object>).Select((object o) => ConvertToInt(o)).ToList();
break;
case ReplayReceiveDataType.AddSpellChargeList:
_replayReceiveData.AddSpellChargeList = (data[text] as List<object>).Select((object o) => ConvertToInt(o)).ToList();
break;
case ReplayReceiveDataType.Cost:
_replayReceiveData.Cost = ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.Attack:
_replayReceiveData.Attack = ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.Life:
_replayReceiveData.Life = ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.MultiplyAttack:
_replayReceiveData.MultiplyAttack = ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.MultiplyLife:
_replayReceiveData.MultiplyLife = ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.MaxLife:
_replayReceiveData.MaxLife = ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.CardIdList:
_replayReceiveData.CardIdList = (data[text] as List<object>).Select((object o) => ConvertToInt(o)).ToList();
break;
case ReplayReceiveDataType.IsOpen:
_replayReceiveData.IsOpen = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsOpenDrawSkill:
_replayReceiveData.IsOpenDrawSkill = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsReserved:
_replayReceiveData.IsReserved = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.DealDamageList:
_replayReceiveData.DealDamageList = (data[text] as List<object>).Select((object o) => ConvertToInt(o)).ToList();
break;
case ReplayReceiveDataType.ReceiveDamage:
_replayReceiveData.ReceiveDamage = ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.IsReflectionDamage:
{
List<object> list6 = data[text] as List<object>;
_replayReceiveData.IsReflectionDamage = new List<bool>();
for (int num5 = 0; num5 < list6.Count; num5++)
{
_replayReceiveData.IsReflectionDamage.Add(ConvertToInt(list6[num5]) == 1);
}
break;
}
case ReplayReceiveDataType.HealList:
_replayReceiveData.HealList = (data[text] as List<object>).Select((object o) => ConvertToInt(o)).ToList();
break;
case ReplayReceiveDataType.IsAttackerDead:
_replayReceiveData.IsAttackerDead = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsTargetDead:
_replayReceiveData.IsTargetDead = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.SelectCard:
_replayReceiveData.SelectCard = data[text].ToString();
break;
case ReplayReceiveDataType.OwnerCardName:
_replayReceiveData.OwnerCardName = data[text].ToString();
break;
case ReplayReceiveDataType.CardNameList:
_replayReceiveData.CardNameList = (data[text] as List<object>).Select((object o) => o.ToString()).ToList();
break;
case ReplayReceiveDataType.DestroyCardNameList:
_replayReceiveData.DestroyCardNameList = (data[text] as List<object>).Select((object o) => o.ToString()).ToList();
break;
case ReplayReceiveDataType.BanishCardNameList:
_replayReceiveData.BanishCardNameList = (data[text] as List<object>).Select((object o) => o.ToString()).ToList();
break;
case ReplayReceiveDataType.IndestructibleCardNameList:
_replayReceiveData.IndestructibleCardNameList = (data[text] as List<object>).Select((object o) => o.ToString()).ToList();
break;
case ReplayReceiveDataType.EffectTargetCardNameList:
_replayReceiveData.EffectTargetCardNameList = (data[text] as List<object>).Select((object o) => o.ToString()).ToList();
break;
case ReplayReceiveDataType.SkillSideLogList:
{
List<object> list4 = data[text] as List<object>;
_replayReceiveData.SideLogSkillInfoList = new List<SideLogSkillInfo>();
for (int num3 = 0; num3 < list4.Count; num3++)
{
_replayReceiveData.SideLogSkillInfoList.Add(CreateSideLogSkillInfo(list4[num3] as JsonData));
}
break;
}
case ReplayReceiveDataType.PlayVoiceOnDeathCard:
_replayReceiveData.PlayVoiceOnDeathCard = data[text].ToString();
break;
case ReplayReceiveDataType.IsEvolve:
_replayReceiveData.IsEvolve = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsActive:
_replayReceiveData.IsActive = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsNotConsumeEp:
_replayReceiveData.IsNotConsumeEp = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.EvolveMeWhenAttackIndex:
_replayReceiveData.EvolveMeWhenAttackIndex = ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.TransformCardId:
_replayReceiveData.TransformCardId = ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.TransformType:
_replayReceiveData.TransformType = (BattleCardBase.TransformType)ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.IsDeckSelf:
_replayReceiveData.IsDeckSelf = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsBurialRite:
_replayReceiveData.IsBurialRite = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.ChangeCount:
_replayReceiveData.ChangeCount = ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.IsDestroy:
_replayReceiveData.IsDestroy = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsChange:
_replayReceiveData.IsChange = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsCostUpList:
_replayReceiveData.IsCostUpList = (data[text] as List<object>).Select((object o) => ConvertToInt(o) == 1).ToList();
break;
case ReplayReceiveDataType.IsSpellCharge:
_replayReceiveData.IsSpellCharge = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsOpenCard:
_replayReceiveData.IsOpenCard = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsHalf:
_replayReceiveData.IsHalf = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsAdd:
_replayReceiveData.IsAdd = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsTransformSelect:
_replayReceiveData.IsTransformSelect = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsFusionNecromance:
_replayReceiveData.IsFusionNecromance = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsFusionMetamorphose:
_replayReceiveData.IsFusionMetamorphose = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.FusionMetamorphoseCardId:
_replayReceiveData.FusionMetamorphoseCardId = ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.EffectInfo:
_replayReceiveData.EffectInfo = CreateEffectInfo(data[text] as JsonData);
break;
case ReplayReceiveDataType.DestroyTypeList:
_replayReceiveData.DestroyTypeList = (data[text] as List<object>).Select((object o) => (DestroyType)ConvertToInt(o)).ToList();
break;
case ReplayReceiveDataType.WhenPlayEffectType:
_replayReceiveData.WhenPlayEffectType = (SkillCollectionBase.WhenPlayEffectType)ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.PlayerStatusPanelInfo:
_replayReceiveData.PlayerStatusPanelInfo = CreateStatusPanelInfo(data[text] as JsonData);
break;
case ReplayReceiveDataType.EnemyStatusPanelInfo:
_replayReceiveData.EnemyStatusPanelInfo = CreateStatusPanelInfo(data[text] as JsonData);
break;
case ReplayReceiveDataType.PlayerBattleInfo:
UpdateBattleInfo(data[text] as List<object>, isPlayer: true);
break;
case ReplayReceiveDataType.EnemyBattleInfo:
UpdateBattleInfo(data[text] as List<object>, isPlayer: false);
break;
case ReplayReceiveDataType.PlayerClassInfo:
_replayReceiveData.PlayerClassInfo = CreateClassInfo(data[text] as JsonData);
break;
case ReplayReceiveDataType.EnemyClassInfo:
_replayReceiveData.EnemyClassInfo = CreateClassInfo(data[text] as JsonData);
break;
case ReplayReceiveDataType.MyRotationBonusList:
{
List<object> list2 = data[text] as List<object>;
_replayReceiveData.MyRotationBonusInfoList = new List<MyRotationBonusInfo>();
for (int num = 0; num < list2.Count; num++)
{
_replayReceiveData.MyRotationBonusInfoList.Add(CreateMyRotationBonusInfo(list2[num] as JsonData));
}
break;
}
case ReplayReceiveDataType.PlayerAvatarBattleDescInfo:
_replayReceiveData.PlayerAvatarBattleDescInfo = CreateAvatarBattleDescriotionValueInfo(data[text] as JsonData);
break;
case ReplayReceiveDataType.EnemyAvatarBattleDescInfo:
_replayReceiveData.EnemyAvatarBattleDescInfo = CreateAvatarBattleDescriotionValueInfo(data[text] as JsonData);
break;
case ReplayReceiveDataType.BattleLogIndex:
_replayReceiveData.BattleLogIndex = ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.IsWin:
_replayReceiveData.isWin = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsPlayerDead:
_replayReceiveData.IsPlayerDead = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsEnemyDead:
_replayReceiveData.IsEnemyDead = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.FinishType:
_replayReceiveData.FinishType = (BattleManagerBase.FINISH_TYPE)ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.ResultCode:
_replayReceiveData.ResultCode = (RESULT_CODE)ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.SkillHashCode:
_replayReceiveData.SkillHashCode = ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.IsOnSummonSkill:
_replayReceiveData.IsOnSummonSkill = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsInvoked:
_replayReceiveData.IsInvoked = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.SkillVoice:
_replayReceiveData.SkillVoice = data[text].ToString();
break;
case ReplayReceiveDataType.IsLastDrawOpenCard:
_replayReceiveData.IsLastDrawOpenCard = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsOwnerEffect:
_replayReceiveData.IsOwnerEffect = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsIgnoreVoice:
_replayReceiveData.IsIgnoreVoice = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsRandomVoice:
_replayReceiveData.IsRandomVoice = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsEvoVoice:
_replayReceiveData.IsEvoVoice = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsImmediate:
_replayReceiveData.IsImmediate = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.BySkill:
_replayReceiveData.BySkill = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.OnlyEffect:
_replayReceiveData.OnlyEffect = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.OnlyAttackEffect:
_replayReceiveData.OnlyAttackEffect = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.UpdateAttackEffect:
_replayReceiveData.UpdateAttackEffect = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.UseRecordAttackEffect:
_replayReceiveData.UseRecordAttackEffect = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.Clan:
_replayReceiveData.Clan = (CardBasePrm.ClanType)ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.Tribe:
{
JsonData jsonData = data[text] as JsonData;
List<CardBasePrm.TribeType> list = new List<CardBasePrm.TribeType>();
JsonData jsonData2 = jsonData[103.ToString()];
for (int j = 0; j < jsonData2.Count; j++)
{
list.Add((CardBasePrm.TribeType)ConvertToInt(jsonData2[j]));
}
_replayReceiveData.Tribe = new CardBasePrm.TribeInfo(list, (CardBasePrm.TribeChangeType)ConvertToInt(jsonData[104.ToString()]));
break;
}
case ReplayReceiveDataType.EmoteType:
_replayReceiveData.EmoteType = (ClassCharaPrm.EmotionType)ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.MaxSelectCount:
_replayReceiveData.MaxSelectCount = ConvertToInt(data[text]);
break;
case ReplayReceiveDataType.CanFusionMetamorphose:
_replayReceiveData.CanFusionMetamorphose = ConvertToInt(data[text]) == 1;
break;
case ReplayReceiveDataType.IsChoiceBrave:
_replayReceiveData.IsChoiceBraveData = ConvertToInt(data[text]) == 1;
break;
}
}
}
catch
{
LocalLog.AccumulateLastTraceLog("ConvertReciveDataToMakeData Error");
Debug.LogError("ConvertReciveDataToMakeData Error");
}
}
public void UpdateBattleInfo(JsonData battleInfoData, bool isPlayer)
{
List<object> list = new List<object>();
for (int i = 0; i < battleInfoData.Count; i++)
{
list.Add(battleInfoData[i]);
}
UpdateBattleInfo(list, isPlayer);
}
public void UpdateBattleInfo(List<object> battleInfoData, bool isPlayer)
{
List<NewReplayBattleMgr.BattleInfoData> list = (isPlayer ? (networkBattleMgr as NewReplayBattleMgr).PlayerBattleInfoData : (networkBattleMgr as NewReplayBattleMgr).EnemyBattleInfoData);
list.Clear();
for (int i = 0; i < battleInfoData.Count; i++)
{
JsonData jsonData = battleInfoData[i] as JsonData;
list.Add(CreateBattleInfoData(jsonData));
}
}
public NewReplayBattleMgr.BattleInfoData CreateBattleInfoData(JsonData jsonData)
{
NewReplayBattleMgr.BattleInfoData battleInfoData = new NewReplayBattleMgr.BattleInfoData();
for (int i = 0; i < jsonData.Keys.Count; i++)
{
string text = jsonData.Keys.ElementAt(i);
switch ((ReplayItemType)int.Parse(text))
{
case ReplayItemType.Priority:
battleInfoData.Priority = ConvertToInt(jsonData[text]);
break;
case ReplayItemType.BattleInfoValue:
battleInfoData.Value = ConvertToInt(jsonData[text]);
break;
case ReplayItemType.BattleInfoTargetCardList:
{
battleInfoData.DisplayCardIndexList = new List<int>();
JsonData jsonData3 = jsonData[text];
for (int k = 0; k < jsonData3.Count; k++)
{
battleInfoData.DisplayCardIndexList.Add(ConvertToInt(jsonData3[k]));
}
break;
}
case ReplayItemType.BattleInfoTargetCardIdList:
{
battleInfoData.DisplayCardIdList = new List<int>();
JsonData jsonData2 = jsonData[text];
for (int j = 0; j < jsonData2.Count; j++)
{
battleInfoData.DisplayCardIdList.Add(ConvertToInt(jsonData2[j]));
}
break;
}
}
}
return battleInfoData;
}
public CardInfo CreateCardInfo(JsonData jsonData)
{
CardInfo cardInfo = new CardInfo();
for (int i = 0; i < jsonData.Keys.Count; i++)
{
string text = jsonData.Keys.ElementAt(i);
switch ((ReplayItemType)int.Parse(text))
{
case ReplayItemType.Id:
cardInfo.Id = ConvertToInt(jsonData[text]);
break;
case ReplayItemType.Index:
cardInfo.Index = ConvertToInt(jsonData[text]);
break;
case ReplayItemType.IsSelf:
cardInfo.IsSelf = ConvertToInt(jsonData[text]) == 1;
break;
case ReplayItemType.Cost:
cardInfo.Cost = ConvertToInt(jsonData[text]);
break;
case ReplayItemType.IsEvolution:
cardInfo.IsEvolution = ConvertToInt(jsonData[text]) == 1;
break;
case ReplayItemType.ExecutedFixedUseCostIndex:
cardInfo.ExecutedFixedUseCostIndex = ConvertToInt(jsonData[text]);
break;
case ReplayItemType.ParameterModifierList:
{
cardInfo.ParameterModifierList = new List<NewReplayBattleMgr.ParameterModifierInfo>();
JsonData jsonData14 = jsonData[text];
for (int num7 = 0; num7 < jsonData14.Count; num7++)
{
NewReplayBattleMgr.ParameterModifierInfo item2 = new NewReplayBattleMgr.ParameterModifierInfo((ReplayParameterModifierType)ConvertToInt(jsonData14[num7][117.ToString()]), ConvertToInt(jsonData14[num7][118.ToString()]));
cardInfo.ParameterModifierList.Add(item2);
}
break;
}
case ReplayItemType.UnionBurstModifierValueList:
{
cardInfo.UnionBurstModifierValueList = new List<int>();
JsonData jsonData12 = jsonData[text];
for (int num5 = 0; num5 < jsonData12.Count; num5++)
{
cardInfo.UnionBurstModifierValueList.Add(ConvertToInt(jsonData12[num5]));
}
break;
}
case ReplayItemType.SkyboundArtModifierValueList:
{
cardInfo.SkyboundArtModifierValueList = new List<int>();
JsonData jsonData11 = jsonData[text];
for (int num4 = 0; num4 < jsonData11.Count; num4++)
{
cardInfo.SkyboundArtModifierValueList.Add(ConvertToInt(jsonData11[num4]));
}
break;
}
case ReplayItemType.SuperSkyboundArtModifierValueList:
{
cardInfo.SuperSkyboundArtModifierValueList = new List<int>();
JsonData jsonData10 = jsonData[text];
for (int num3 = 0; num3 < jsonData10.Count; num3++)
{
cardInfo.SuperSkyboundArtModifierValueList.Add(ConvertToInt(jsonData10[num3]));
}
break;
}
case ReplayItemType.FusionIngredientIdxList:
{
cardInfo.FusionIngredientIdxList = new List<int>();
JsonData jsonData3 = jsonData[text];
for (int k = 0; k < jsonData3.Count; k++)
{
cardInfo.FusionIngredientIdxList.Add(ConvertToInt(jsonData3[k]));
}
break;
}
case ReplayItemType.HandEffect:
cardInfo.HandCardFrameEffectType = (HandCardFrameEffectType)ConvertToInt(jsonData[text]);
break;
case ReplayItemType.IsHandEffectActive:
cardInfo.IsHandEffectActive = ConvertToInt(jsonData[text]) == 1;
break;
case ReplayItemType.InplaySkillEffect:
{
cardInfo.InplaySkillEffectList = new List<InplaySkillEffect>();
JsonData jsonData16 = jsonData[text];
for (int num9 = 0; num9 < jsonData16.Count; num9++)
{
cardInfo.InplaySkillEffectList.Add((InplaySkillEffect)ConvertToInt(jsonData16[num9]));
}
break;
}
case ReplayItemType.InductionNumber:
cardInfo.InductionNumber = ConvertToInt(jsonData[text]);
break;
case ReplayItemType.Attackable:
cardInfo.Attackable = ConvertToInt(jsonData[text]) == 1;
break;
case ReplayItemType.IsCantAttackClass:
cardInfo.IsCantAttackClass = ConvertToInt(jsonData[text]) == 1;
break;
case ReplayItemType.AttackableCount:
cardInfo.AttackableCount = ConvertToInt(jsonData[text]);
break;
case ReplayItemType.ForceHideAttackEffect:
cardInfo.ForceHideAttackEffect = ConvertToInt(jsonData[text]) == 1;
break;
case ReplayItemType.SkillDescriptionValueList:
{
cardInfo.SkillDescriptionValueList = new List<int>();
JsonData jsonData15 = jsonData[text];
for (int num8 = 0; num8 < jsonData15.Count; num8++)
{
cardInfo.SkillDescriptionValueList.Add(ConvertToInt(jsonData15[num8]));
}
break;
}
case ReplayItemType.EvoSkillDescriptionValueList:
{
cardInfo.EvoSkillDescriptionValueList = new List<int>();
JsonData jsonData13 = jsonData[text];
for (int num6 = 0; num6 < jsonData13.Count; num6++)
{
cardInfo.EvoSkillDescriptionValueList.Add(ConvertToInt(jsonData13[num6]));
}
break;
}
case ReplayItemType.BuffInfoList:
{
JsonData jsonData4 = jsonData[text];
if (jsonData4.Keys.Contains(89.ToString()))
{
cardInfo.IsSameBuff = true;
break;
}
JsonData jsonData5 = jsonData4[76.ToString()];
for (int l = 0; l < jsonData5.Count; l++)
{
ReplayBuffInfo replayBuffInfo = new ReplayBuffInfo();
replayBuffInfo.OwnerCardInfo = CreateBuffCardInfo(jsonData5[l][77.ToString()]);
if (jsonData5[l].Keys.Contains(78.ToString()))
{
replayBuffInfo.PreviousOwnerCardInfo = CreateBuffCardInfo(jsonData5[l][78.ToString()]);
}
replayBuffInfo.BuffType = (ReplayBuffType)jsonData5[l][80.ToString()].ToInt();
replayBuffInfo.CardIdFrom = jsonData5[l][107.ToString()].ToInt();
replayBuffInfo.IsEvolutionSkill = jsonData5[l][99.ToString()].ToBoolean();
replayBuffInfo.IsPlayer = jsonData5[l][2.ToString()].ToBoolean();
replayBuffInfo.DivergenceIdList = jsonData5[l][86.ToString()].ToString();
if (jsonData5[l].Keys.Contains(87.ToString()))
{
new List<int>();
JsonData jsonData6 = jsonData5[l][87.ToString()];
for (int m = 0; m < jsonData6.Count; m++)
{
replayBuffInfo.CopiedSkillDescriptionValueList.Add(ConvertToInt(jsonData6[m]));
}
}
if (jsonData5[l].Keys.Contains(88.ToString()))
{
new List<int>();
JsonData jsonData7 = jsonData5[l][88.ToString()];
for (int n = 0; n < jsonData7.Count; n++)
{
replayBuffInfo.CopiedEvoSkillDescriptionValueList.Add(ConvertToInt(jsonData7[n]));
}
}
cardInfo.BuffInfoList.Add(replayBuffInfo);
}
JsonData jsonData8 = jsonData4[81.ToString()];
for (int num = 0; num < jsonData8.Count; num++)
{
cardInfo.NoConsumeEpBuffInfoNameList.Add(jsonData8[num].ToString());
}
JsonData jsonData9 = jsonData4[82.ToString()];
for (int num2 = 0; num2 < jsonData9.Count; num2++)
{
ReplayBuffInfoLabel item = new ReplayBuffInfoLabel
{
Type = (ReplayBuffInfoTextType)jsonData9[num2][83.ToString()].ToInt()
};
if (jsonData9[num2].Keys.Contains(84.ToString()))
{
item.Value = jsonData9[num2][84.ToString()].ToInt();
}
cardInfo.BuffInfoLabelList.Add(item);
}
break;
}
case ReplayItemType.IsOverFlow:
cardInfo.IsOverflow = ConvertToInt(jsonData[text]) == 1;
break;
case ReplayItemType.SpellChargeCount:
cardInfo.SpellChargeCount = ConvertToInt(jsonData[text]);
break;
case ReplayItemType.Tribe:
{
cardInfo.Tribe = new List<int>();
JsonData jsonData2 = jsonData[text];
for (int j = 0; j < jsonData2.Count; j++)
{
cardInfo.Tribe.Add(ConvertToInt(jsonData2[j]));
}
break;
}
case ReplayItemType.ChantCount:
cardInfo.ChantCount = ConvertToInt(jsonData[text]);
break;
case ReplayItemType.WhiteRitualCount:
cardInfo.WhiteRitualCount = ConvertToInt(jsonData[text]);
break;
case ReplayItemType.MaxAttackableCount:
cardInfo.MaxAttackableCount = ConvertToInt(jsonData[text]);
break;
case ReplayItemType.MetamorphoseCount:
cardInfo.MetamorphoseCount = ConvertToInt(jsonData[text]);
break;
}
}
return cardInfo;
}
private BuffCardInfo CreateBuffCardInfo(JsonData jsonData)
{
BuffCardInfo buffCardInfo = new BuffCardInfo();
for (int i = 0; i < jsonData.Keys.Count; i++)
{
string text = jsonData.Keys.ElementAt(i);
switch ((ReplayItemType)int.Parse(text))
{
case ReplayItemType.CardName:
buffCardInfo.CardName = jsonData[text].ToString();
break;
case ReplayItemType.Id:
buffCardInfo.CardId = ConvertToInt(jsonData[text]);
break;
case ReplayItemType.MetamorphoseCount:
buffCardInfo.MetamorphoseCount = ConvertToInt(jsonData[text]);
break;
}
}
return buffCardInfo;
}
private EffectInfo CreateEffectInfo(JsonData jsonData)
{
EffectInfo effectInfo = new EffectInfo();
for (int i = 0; i < jsonData.Keys.Count; i++)
{
string text = jsonData.Keys.ElementAt(i);
switch ((ReplayItemType)int.Parse(text))
{
case ReplayItemType.EffectPath:
effectInfo.EffectPath = jsonData[text].ToString();
effectInfo.SePath = "se_" + effectInfo.EffectPath;
break;
case ReplayItemType.EngineType:
effectInfo.EngineType = (EffectMgr.EngineType)ConvertToInt(jsonData[text]);
break;
case ReplayItemType.EffectMoveType:
effectInfo.EffectMoveType = (EffectMgr.MoveType)ConvertToInt(jsonData[text]);
break;
case ReplayItemType.EffectTargetType:
effectInfo.EffectTargetType = (EffectMgr.TargetType)ConvertToInt(jsonData[text]);
break;
case ReplayItemType.EffectTime:
effectInfo.EffectTime = float.Parse(jsonData[text].ToString());
break;
case ReplayItemType.IsFollowInHand:
effectInfo.IsFollowInHand = ConvertToInt(jsonData[text]) == 1;
break;
case ReplayItemType.IsTargetPosition:
effectInfo.IsTargetPosition = ConvertToInt(jsonData[text]) == 1;
break;
case ReplayItemType.IsWhenFusioned:
effectInfo.IsWhenFusioned = ConvertToInt(jsonData[text]) == 1;
break;
}
}
return effectInfo;
}
private SideLogSkillInfo CreateSideLogSkillInfo(JsonData jsonData)
{
SideLogSkillInfo sideLogSkillInfo = new SideLogSkillInfo();
for (int i = 0; i < jsonData.Keys.Count; i++)
{
string text = jsonData.Keys.ElementAt(i);
switch ((ReplayReceiveDataType)int.Parse(text))
{
case ReplayReceiveDataType.Index:
sideLogSkillInfo.Index = ConvertToInt(jsonData[text]);
break;
case ReplayReceiveDataType.IsSelf:
sideLogSkillInfo.IsSelf = ConvertToInt(jsonData[text]) == 1;
break;
case ReplayReceiveDataType.CardId:
sideLogSkillInfo.CardId = ConvertToInt(jsonData[text]);
break;
case ReplayReceiveDataType.SkillHashCode:
sideLogSkillInfo.SkillHashCode = ConvertToInt(jsonData[text]);
break;
case ReplayReceiveDataType.IsEvolve:
sideLogSkillInfo.IsEvolve = ConvertToInt(jsonData[text]) == 1;
break;
case ReplayReceiveDataType.IsOnSummonSkill:
sideLogSkillInfo.IsOnSummonSkill = ConvertToInt(jsonData[text]) == 1;
break;
case ReplayReceiveDataType.IsInvoked:
sideLogSkillInfo.IsInvoked = ConvertToInt(jsonData[text]) == 1;
break;
case ReplayReceiveDataType.IsInDeck:
sideLogSkillInfo.IsInDeck = ConvertToInt(jsonData[text]) == 1;
break;
case ReplayReceiveDataType.IsPrivate:
sideLogSkillInfo.IsPrivate = ConvertToInt(jsonData[text]) == 1;
break;
case ReplayReceiveDataType.CardInfo:
sideLogSkillInfo.CardInfo = CreateCardInfo(jsonData[text]);
break;
}
}
return sideLogSkillInfo;
}
private StatusPanelInfo CreateStatusPanelInfo(JsonData jsonData)
{
StatusPanelInfo statusPanelInfo = new StatusPanelInfo();
for (int i = 0; i < jsonData.Keys.Count; i++)
{
string text = jsonData.Keys.ElementAt(i);
switch ((ReplayItemType)int.Parse(text))
{
case ReplayItemType.HandCount:
statusPanelInfo.HandCount = ConvertToInt(jsonData[text]);
break;
case ReplayItemType.CemetaryCount:
statusPanelInfo.CemetaryCount = ConvertToInt(jsonData[text]);
break;
case ReplayItemType.DeckCount:
statusPanelInfo.DeckCount = ConvertToInt(jsonData[text]);
break;
case ReplayItemType.IsDrew:
statusPanelInfo.IsDrew = ConvertToInt(jsonData[text]) == 1;
break;
}
}
return statusPanelInfo;
}
public ClassInfoUiInfo CreateClassInfo(JsonData jsonData)
{
ClassInfoUiInfo classInfoUiInfo = new ClassInfoUiInfo();
for (int i = 0; i < jsonData.Keys.Count; i++)
{
string text = jsonData.Keys.ElementAt(i);
switch ((ReplayItemType)int.Parse(text))
{
case ReplayItemType.PlayCount:
classInfoUiInfo.TurnPlayCount = ConvertToInt(jsonData[text]);
break;
case ReplayItemType.CemetaryCount:
classInfoUiInfo.CemetaryCount = ConvertToInt(jsonData[text]);
break;
case ReplayItemType.Life:
classInfoUiInfo.Life = ConvertToInt(jsonData[text]);
break;
case ReplayItemType.IsForceBerserk:
classInfoUiInfo.IsForceBerserk = ConvertToInt(jsonData[text]) == 1;
break;
case ReplayItemType.IsEnterForceBerserk:
classInfoUiInfo.IsEnterForceBerserk = ConvertToInt(jsonData[text]) == 1;
break;
case ReplayItemType.IsChangeResonance:
classInfoUiInfo.IsChangeResonance = ConvertToInt(jsonData[text]) == 1;
break;
}
}
return classInfoUiInfo;
}
public MyRotationBonusInfo CreateMyRotationBonusInfo(JsonData jsonData)
{
MyRotationBonusInfo myRotationBonusInfo = new MyRotationBonusInfo();
for (int i = 0; i < jsonData.Keys.Count; i++)
{
string text = jsonData.Keys.ElementAt(i);
switch ((ReplayItemType)int.Parse(text))
{
case ReplayItemType.AbilityId:
myRotationBonusInfo.AbilityId = jsonData[text].ToString();
break;
case ReplayItemType.IsSelf:
myRotationBonusInfo.IsSelf = ConvertToInt(jsonData[text]) == 1;
break;
case ReplayItemType.RemainingIncreaseAddPptotalTurn:
myRotationBonusInfo.RemainingIncreaseAddPptotalTurn = ConvertToInt(jsonData[text]);
break;
case ReplayItemType.IsRemainIncreaseAddPptotalTurn:
myRotationBonusInfo.IsRemainIncreaseAddPptotalTurn = ConvertToInt(jsonData[text]) == 1;
break;
case ReplayItemType.RemainingSkillCount:
myRotationBonusInfo.RemainingSkillCount = ConvertToInt(jsonData[text]);
break;
case ReplayItemType.IsRemainSkill:
myRotationBonusInfo.IsRemainSkill = ConvertToInt(jsonData[text]) == 1;
break;
}
}
return myRotationBonusInfo;
}
public AvatarBattleDescriptionValueInfo CreateAvatarBattleDescriotionValueInfo(JsonData jsonData)
{
AvatarBattleDescriptionValueInfo avatarBattleDescriptionValueInfo = new AvatarBattleDescriptionValueInfo();
for (int i = 0; i < jsonData.Keys.Count; i++)
{
string text = jsonData.Keys.ElementAt(i);
switch ((ReplayItemType)int.Parse(text))
{
case ReplayItemType.PassiveSkillDescriptionValueList:
{
JsonData jsonData4 = jsonData[text];
for (int l = 0; l < jsonData4.Count; l++)
{
avatarBattleDescriptionValueInfo.PassiveSkillDescriotionValueList.Add(ConvertToInt(jsonData4[l]));
}
break;
}
case ReplayItemType.ChoiceBraveDescriptionValueListList:
{
JsonData jsonData2 = jsonData[text];
for (int j = 0; j < jsonData2.Count; j++)
{
JsonData jsonData3 = jsonData2[j];
List<int> list = new List<int>();
for (int k = 0; k < jsonData3.Count; k++)
{
list.Add(ConvertToInt(jsonData3[k]));
}
avatarBattleDescriptionValueInfo.ChoiceBraveDescriotionValueListList.Add(list);
}
break;
}
}
}
return avatarBattleDescriptionValueInfo;
}
protected void CreateSlideObjectReceiveData(string startPoint, string endPoint)
{
_receiveData._slideObjectType = (NetworkBattleSender.SLIDE_OBJECT_TYPE)Enum.Parse(typeof(NetworkBattleSender.SLIDE_OBJECT_TYPE), startPoint[0].ToString());
switch (_receiveData._slideObjectType)
{
case NetworkBattleSender.SLIDE_OBJECT_TYPE.Attack:
_receiveData.idx = int.Parse(startPoint.Substring(1, startPoint.Length - 1));
_receiveData._selectedCardIndex = int.Parse(endPoint);
break;
case NetworkBattleSender.SLIDE_OBJECT_TYPE.Evolve:
_receiveData._selectedCardIndex = int.Parse(endPoint);
break;
case NetworkBattleSender.SLIDE_OBJECT_TYPE.Cancel:
break;
}
}
private List<TargetData> CreateTargetList(KeyValuePair<string, object> data, bool isWatch = false, WatchDataHandler handler = null)
{
List<object> obj = data.Value as List<object>;
List<TargetData> list = new List<TargetData>();
_receiveData.validateSkillIndexList = new List<int>();
foreach (object item2 in obj)
{
int target = 0;
int num = 0;
bool isSelf = false;
Dictionary<string, object> dictionary = item2 as Dictionary<string, object>;
string key = NetworkBattleDefine.NetworkParameter.targetIdx.ToString();
if (dictionary.ContainsKey(key))
{
target = ConvertToInt(dictionary[key]);
}
if (isWatch)
{
key = NetworkBattleDefine.NetworkParameterNames[NetworkBattleDefine.NetworkParameter.vid];
if (dictionary.ContainsKey(key))
{
num = ConvertToInt(dictionary[key].ToString());
isSelf = ((!networkBattleMgr.IsRecovery) ? (!handler.isOwner(dictionary[key].ToString())) : ((num != PlayerStaticData.UserViewerID) ? true : false));
}
}
else
{
key = NetworkBattleDefine.NetworkParameterNames[NetworkBattleDefine.NetworkParameter.isSelf];
if (dictionary.ContainsKey(key))
{
isSelf = ConvertToInt(dictionary[key]) == 1;
}
}
key = NetworkBattleDefine.NetworkParameter.skillIndex.ToString();
if (dictionary.ContainsKey(key))
{
foreach (int item3 in ConvertToListInt(dictionary[key]))
{
_receiveData.validateSkillIndexList.Add(item3);
}
}
List<int> selectSkillIndexList = new List<int>();
key = NetworkBattleDefine.NetworkParameter.selectSkillIndex.ToString();
if (dictionary.ContainsKey(key))
{
selectSkillIndexList = ConvertToListInt(dictionary[key]);
}
TargetData item = new TargetData(target, num, isSelf, selectSkillIndexList);
list.Add(item);
}
return list;
}
public void ReceiveStop()
{
LocalLog.AccumulateLastTraceLog("ReceiveBattleFinish StopReceiveData");
receiveStop = true;
}
protected virtual void CheckDuplicateDataAddtoList(List<CardDataModel> list, CardDataModel cardDataModel)
{
list.Add(cardDataModel);
}
private List<int> MakeReceiveCardIndexSortList(List<object> mulliganList)
{
Dictionary<int, int> dictionary = new Dictionary<int, int>();
foreach (object mulligan in mulliganList)
{
Dictionary<string, object> dictionary2 = mulligan as Dictionary<string, object>;
int key = ConvertToInt(dictionary2[NetworkBattleDefine.NetworkParameterNames[NetworkBattleDefine.NetworkParameter.pos]]);
int value = ConvertToInt(dictionary2[NetworkBattleDefine.NetworkParameter.idx.ToString()]);
dictionary.Add(key, value);
}
return (from data in dictionary
orderby data.Key
select data.Value).ToList();
}
private List<int> GetSwappedIndexList(bool isPlayer, List<CardDataModel> cardList)
{
List<CardDataModel> list = (from param in cardList
where param.isOpponent == !isPlayer
where param.ToStateList.First() == NetworkBattleDefine.NetworkCardPlaceState.Hand
select param).ToList();
List<int> list2 = (isPlayer ? new List<int>(networkBattleMgr.MulliganMgr.PlayerMlgCtrl.DealIdxList) : new List<int>(networkBattleMgr.MulliganMgr.OpponentMlgCtrl.DealIdxList));
for (int num = 0; num < list.Count; num++)
{
int redrawCardPosition = list[num].RedrawCardPosition;
list2[redrawCardPosition] = list[num].Index;
}
return list2;
}
private List<CardDataModel> MakeReceiveCardDataList(List<object> cardData, BattleManagerBase mgr, WatchDataHandler handler)
{
List<CardDataModel> list = new List<CardDataModel>();
foreach (object cardDatum in cardData)
{
if (!(cardDatum as Dictionary<string, object>).ContainsKey(NetworkBattleDefine.NetworkParameterNames[NetworkBattleDefine.NetworkParameter.activate]) && !(cardDatum as Dictionary<string, object>).ContainsKey(NetworkBattleDefine.NetworkParameterNames[NetworkBattleDefine.NetworkParameter.count]) && !(cardDatum as Dictionary<string, object>).ContainsKey(NetworkBattleDefine.NetworkParameterNames[NetworkBattleDefine.NetworkParameter.callCount]) && !(cardDatum as Dictionary<string, object>).ContainsKey(NetworkBattleDefine.NetworkParameterNames[NetworkBattleDefine.NetworkParameter.param]))
{
foreach (CardDataModel item in MakeReceiveCardData(cardDatum, mgr, handler))
{
CheckDuplicateDataAddtoList(list, item);
}
continue;
}
foreach (CardDataModel item2 in MakeReceiveCardData(cardDatum, mgr, handler))
{
_receiveData.SkillConditionCheckList.Add(item2);
}
}
List<CardDataModel> list2 = new List<CardDataModel>();
foreach (CardDataModel skillConditionCheck in _receiveData.SkillConditionCheckList)
{
if (list2.Contains(skillConditionCheck))
{
continue;
}
int num = 0;
foreach (CardDataModel skillConditionCheck2 in _receiveData.SkillConditionCheckList)
{
if (skillConditionCheck.Index == skillConditionCheck2.Index && skillConditionCheck.publishedActiveSkillCount == skillConditionCheck2.publishedActiveSkillCount)
{
skillConditionCheck2.skillMovementNum = num;
num++;
list2.Add(skillConditionCheck2);
}
}
}
if (!_receiveData._isSettingMutationAfterCardId && _receiveData.IsAcceleratedOrCrystallize)
{
_receiveData._isSettingMutationAfterCardId = true;
_receiveData.mutationAfterCardId = list[0].CardId;
_receiveData.mutationAfterCost = list[0].playCardCost;
list[0].CardId = _receiveData.transformBeforeCardId;
}
return list;
}
protected virtual List<CardDataModel> MakeReceiveCardData(object cardData, BattleManagerBase mgr, WatchDataHandler handler)
{
Dictionary<string, object> dictionary = cardData as Dictionary<string, object>;
List<CardDataModel> list = new List<CardDataModel>();
List<int> list2 = new List<int>();
if (dictionary.ContainsKey(NetworkBattleDefine.NetworkParameterNames[NetworkBattleDefine.NetworkParameter.idx]))
{
list2.Add(ConvertToInt(dictionary[NetworkBattleDefine.NetworkParameterNames[NetworkBattleDefine.NetworkParameter.idx]]));
}
else if (dictionary.ContainsKey(NetworkBattleDefine.NetworkParameterNames[NetworkBattleDefine.NetworkParameter.idxList]))
{
list2 = ConvertToListInt(dictionary[NetworkBattleDefine.NetworkParameterNames[NetworkBattleDefine.NetworkParameter.idxList]]);
}
else
{
Debug.LogError("BaseMakeReceiveCardData Not idx ");
}
for (int i = 0; i < list2.Count; i++)
{
CardDataModel cardDataModel = new CardDataModel();
cardDataModel.Index = list2[i];
foreach (KeyValuePair<string, object> item in dictionary)
{
if (!Enum.IsDefined(typeof(NetworkBattleDefine.NetworkParameter), item.Key))
{
continue;
}
switch ((NetworkBattleDefine.NetworkParameter)Enum.Parse(typeof(NetworkBattleDefine.NetworkParameter), item.Key))
{
case NetworkBattleDefine.NetworkParameter.cardId:
cardDataModel.CardId = ConvertToInt(item.Value);
break;
case NetworkBattleDefine.NetworkParameter.to:
cardDataModel.ToStateList.Add((NetworkBattleDefine.NetworkCardPlaceState)ConvertToInt(item.Value));
break;
case NetworkBattleDefine.NetworkParameter.isSelf:
cardDataModel.isOpponent = ConvertToInt(item.Value) != 1;
break;
case NetworkBattleDefine.NetworkParameter.skillKeyCardIdx:
{
cardDataModel.skillKeyCardIdxList = new List<int>();
if (item.Value is List<object>)
{
cardDataModel.skillKeyCardIdxList = ConvertToListInt(item.Value);
break;
}
JsonData jsonData = item.Value as JsonData;
for (int j = 0; j < jsonData.Count; j++)
{
cardDataModel.skillKeyCardIdxList.Add(jsonData[j].ToInt());
}
break;
}
case NetworkBattleDefine.NetworkParameter.pos:
cardDataModel.RedrawCardPosition = ConvertToInt(item.Value);
break;
case NetworkBattleDefine.NetworkParameter.cost:
cardDataModel.playCardCost = ConvertToInt(item.Value);
break;
case NetworkBattleDefine.NetworkParameter.activate:
cardDataModel.activate = ConvertToInt(item.Value);
break;
case NetworkBattleDefine.NetworkParameter.addLife:
cardDataModel.AddLife = ConvertToInt(item.Value);
break;
case NetworkBattleDefine.NetworkParameter.setLife:
cardDataModel.SetLife = ConvertToInt(item.Value);
break;
case NetworkBattleDefine.NetworkParameter.addAtk:
cardDataModel.AddAtk = ConvertToInt(item.Value);
break;
case NetworkBattleDefine.NetworkParameter.setAtk:
cardDataModel.SetAtk = ConvertToInt(item.Value);
break;
case NetworkBattleDefine.NetworkParameter.clan:
cardDataModel.Clan = ConvertToInt(item.Value);
break;
case NetworkBattleDefine.NetworkParameter.tribe:
cardDataModel.Tribe = item.Value.ToString();
break;
case NetworkBattleDefine.NetworkParameter.skillIdx:
cardDataModel.SkillIndex = ConvertToInt(item.Value);
break;
case NetworkBattleDefine.NetworkParameter.skillCount:
cardDataModel.publishedActiveSkillCount = ConvertToInt(item.Value);
break;
case NetworkBattleDefine.NetworkParameter.count:
cardDataModel.activate = 1;
cardDataModel.SkillValueCount = ConvertToInt(item.Value);
break;
case NetworkBattleDefine.NetworkParameter.callCount:
cardDataModel.activate = 1;
cardDataModel.SkillCallCount = ConvertToInt(item.Value);
break;
case NetworkBattleDefine.NetworkParameter.param:
cardDataModel.activate = 1;
cardDataModel.SkillValueParameter = ConvertToInt(item.Value);
break;
case NetworkBattleDefine.NetworkParameter.attachTarget:
cardDataModel.SetAttachTarget(item.Value.ToString());
break;
case NetworkBattleDefine.NetworkParameter.highlander:
cardDataModel.IsHighlander = ConvertToInt(item.Value) == 1;
break;
case NetworkBattleDefine.NetworkParameter.spellboost:
cardDataModel.Spellboost = ConvertToInt(item.Value);
break;
case NetworkBattleDefine.NetworkParameter.addChantCount:
cardDataModel.AddChantCount = ConvertToInt(item.Value);
break;
case NetworkBattleDefine.NetworkParameter.setChantCount:
cardDataModel.SetChantCount = ConvertToInt(item.Value);
break;
case NetworkBattleDefine.NetworkParameter.unionburst:
cardDataModel.UnionBurstCount = ConvertToInt(item.Value);
break;
case NetworkBattleDefine.NetworkParameter.skyboundArt:
cardDataModel.SkyboundArtCount = ConvertToInt(item.Value);
break;
case NetworkBattleDefine.NetworkParameter.isInvoke:
cardDataModel.IsInvoked = ConvertToInt(item.Value) == 1;
break;
case NetworkBattleDefine.NetworkParameter.skill:
{
string[] array = item.Value.ToString().Split('|');
cardDataModel.skillCardIndex = int.Parse(array[0]);
cardDataModel.publishedActiveSkillCount = int.Parse(array[1]);
cardDataModel.skillMovementNum = int.Parse(array[2]);
break;
}
case NetworkBattleDefine.NetworkParameter.is_open:
cardDataModel.IsOpen = ConvertToInt(item.Value) == 1;
break;
case NetworkBattleDefine.NetworkParameter.randomTargetIdx:
{
List<int> list3 = ConvertToListInt(item.Value);
if (i < list3.Count)
{
cardDataModel.RandomTargetIndex = list3[i];
}
break;
}
case NetworkBattleDefine.NetworkParameter.fusion:
cardDataModel.FusionIngredientList = ConvertToListInt(item.Value);
break;
}
}
if (mgr != null)
{
if (dictionary.ContainsKey(NetworkBattleDefine.NetworkParameterNames[NetworkBattleDefine.NetworkParameter.from]))
{
cardDataModel.fromState = (NetworkBattleDefine.NetworkCardPlaceState)ConvertToInt(dictionary[NetworkBattleDefine.NetworkParameterNames[NetworkBattleDefine.NetworkParameter.from]]);
}
else
{
cardDataModel.fromState = NetworkBattleGenericTool.GetCardPlaceState(mgr.GetBattlePlayer(cardDataModel.isOpponent), cardDataModel.Index);
}
}
list.Add(cardDataModel);
}
return list;
}
protected virtual int ConvertToInt(object intStr)
{
return Convert.ToInt32(intStr.ToString());
}
protected int GetSpinCount(object receivedObject)
{
string s = receivedObject.ToString();
int result = 0;
if (int.TryParse(s, out result))
{
return ConvertToInt(receivedObject);
}
if (receivedObject is Dictionary<string, object> dictionary && dictionary.Keys.Contains("vid") && dictionary.Keys.Contains("value"))
{
int num = int.Parse(dictionary["vid"].ToString());
if (GameMgr.GetIns().GetNetworkUserInfoData().GetSelfViewerId() == num)
{
return int.Parse(dictionary["value"].ToString());
}
}
return 0;
}
private List<int> ConvertToListInt(object listObject)
{
List<object> obj = listObject as List<object>;
List<int> list = new List<int>();
foreach (object item in obj)
{
list.Add(ConvertToInt(item));
}
return list;
}
public void RecordReplayInfoInRecoveryExceptUriList(NetworkBattleDefine.NetworkBattleURI uri, bool isHaveSequence, Dictionary<string, object> data, bool isPlayer)
{
if (uri != NetworkBattleDefine.NetworkBattleURI.ChatStamp && uri != NetworkBattleDefine.NetworkBattleURI.SelectSkill)
{
return;
}
ConvertReceiveDataToMakeData(uri, isHaveSequence, data, isPlayer);
switch (_receiveData.dataUri)
{
case NetworkBattleDefine.NetworkBattleURI.ChatStamp:
{
if (Enum.TryParse<ClassCharaPrm.EmotionType>(isPlayer ? _receiveData.playChatStamp.ToString() : _receiveData.oppoChatStamp.ToString(), out var result) && !ClassCharaPrm.IsEvolutionEmotionType(result))
{
networkBattleMgr.GetBattlePlayer(isPlayer).CallOnEmotion(result);
}
break;
}
case NetworkBattleDefine.NetworkBattleURI.SelectSkill:
if (isPlayer)
{
networkBattleMgr.RecordSelectSkillInRecovery(_receiveData);
}
break;
}
}
public void CheckLatestReplayInfoInRecoveryExceptUriList()
{
networkBattleMgr.CheckLatestReplayInfoInRecovery();
}
}