private void onReconnectGame(CSPkg msg) { switch (msg.stPkgData.stReconnGameNtf.bState) { case 1: this.HeroSelectReconectBanStep(msg.stPkgData.stReconnGameNtf.stStateData.stBanInfo); Singleton <CUIManager> .GetInstance().CloseSendMsgAlert(); break; case 2: this.HeroSelectReconectPickStep(msg.stPkgData.stReconnGameNtf.stStateData.stPickInfo); Singleton <CUIManager> .GetInstance().CloseSendMsgAlert(); break; case 3: this.HeroSelectReconectSwapStep(msg.stPkgData.stReconnGameNtf.stStateData.stAdjustInfo); Singleton <CUIManager> .GetInstance().CloseSendMsgAlert(); break; case 4: { if (Singleton <LobbyLogic> .instance.inMultiGame) { return; } Singleton <LobbyLogic> .instance.inMultiGame = true; Singleton <LobbyLogic> .instance.inMultiRoom = true; SCPKG_MULTGAME_BEGINLOAD stBeginLoad = msg.stPkgData.stReconnGameNtf.stStateData.stLoadingInfo.stBeginLoad; Singleton <GameBuilder> .instance.StartGame(new MultiGameContext(stBeginLoad)); Singleton <CUIManager> .GetInstance().CloseSendMsgAlert(); break; } case 5: this.g_fBeginReconnectTime = Time.time; Singleton <LobbyLogic> .GetInstance().inMultiRoom = true; Singleton <LobbyLogic> .GetInstance().reconnGameInfo = msg.stPkgData.stReconnGameNtf.stStateData.stGamingInfo; MonoSingleton <VoiceSys> .instance.SyncReconnectData(Singleton <LobbyLogic> .GetInstance().reconnGameInfo); MonoSingleton <Reconnection> .GetInstance().RequestRelaySyncCacheFrames(false); break; case 6: MonoSingleton <Reconnection> .GetInstance().ExitMultiGame(); break; default: DebugHelper.Assert(false); break; } }
private void _InitSynchrConfig(SCPKG_MULTGAME_BEGINLOAD svrGameInfo) { this._gameContextMobaData.RandomSeed = svrGameInfo.dwRandomSeed; this._gameContextMobaData.KFrapsLater = svrGameInfo.bKFrapsLater; this._gameContextMobaData.KFrapsFreqMs = svrGameInfo.dwKFrapsFreqMs; this._gameContextMobaData.PreActFrap = svrGameInfo.bPreActFrap; }
public override void BuildGamePlayer(ProtocolObject svrInfo) { SCPKG_MULTGAME_BEGINLOAD svrGameInfo = (SCPKG_MULTGAME_BEGINLOAD)svrInfo; Singleton <GameContextEx> .GetInstance().InitMultiGame(svrGameInfo); this.PlayerBuilder.BuildMultiGamePlayers(svrGameInfo); }
private void BeginRecord(SCPKG_MULTGAME_BEGINLOAD beginLoadPkg) { this.ClearRecord(); if (beginLoadPkg == null) { return; } CRoleInfo masterRoleInfo = Singleton <CRoleInfoManager> .get_instance().GetMasterRoleInfo(); if (masterRoleInfo == null) { return; } ApolloAccountInfo accountInfo = Singleton <ApolloHelper> .GetInstance().GetAccountInfo(false); if (accountInfo == null) { return; } uint num = 0u; for (int i = 0; i < beginLoadPkg.astCampInfo.Length; i++) { CSDT_CAMPINFO cSDT_CAMPINFO = beginLoadPkg.astCampInfo[i]; for (uint num2 = 0u; num2 < cSDT_CAMPINFO.dwPlayerNum; num2 += 1u) { CSDT_CAMPPLAYERINFO cSDT_CAMPPLAYERINFO = cSDT_CAMPINFO.astCampPlayerInfo[(int)((UIntPtr)num2)]; if (Utility.UTF8Convert(cSDT_CAMPPLAYERINFO.szOpenID) == accountInfo.get_OpenId()) { num = cSDT_CAMPPLAYERINFO.stPlayerInfo.astChoiceHero[0].stBaseInfo.stCommonInfo.dwHeroID; break; } } if (num > 0u) { break; } } if (num > 0u) { this.recordStream = new MemoryStream(1048576); this.recordWriter = new BinaryWriter(this.recordStream); this.recordWriter.Write(CVersion.GetAppVersion()); this.recordWriter.Write(CVersion.GetUsedResourceVersion()); this.recordWriter.Write(CVersion.GetRevisonNumber()); this.recordWriter.Write(num); this.recordWriter.Write(DateTime.get_Now().get_Ticks()); this.recordWriter.Write(beginLoadPkg.stDeskInfo.bMapType); this.recordWriter.Write(beginLoadPkg.stDeskInfo.dwMapId); this.recordWriter.Write(masterRoleInfo.Name); this.recordWriter.Write(masterRoleInfo.HeadUrl); this.recordWriter.Write(masterRoleInfo.m_rankGrade); this.recordWriter.Write(masterRoleInfo.m_rankClass); } }
public MultiGameContext(SCPKG_MULTGAME_BEGINLOAD InMessage) { this.MessageRef = InMessage; uint dwMapId = this.MessageRef.stDeskInfo.dwMapId; base.LevelContext = CLevelCfgLogicManager.MakeMobaContext(dwMapId, (COM_GAME_TYPE)InMessage.bGameType, 1); base.LevelContext.isWarmBattle = Convert.ToBoolean(InMessage.stDeskInfo.bIsWarmBattle); base.LevelContext.DynamicDifficulty = InMessage.stDeskInfo.bAILevel; DebugHelper.Assert(base.LevelContext != null); CLevelCfgLogicManager.SetMultiGameContextLevelName(this, dwMapId, (COM_GAME_TYPE)InMessage.bGameType); }
public void InitMultiGame(SCPKG_MULTGAME_BEGINLOAD svrGameInfo) { this._ResetAllInfo(); if (svrGameInfo != null) { uint dwMapId = svrGameInfo.stDeskInfo.dwMapId; byte bMapType = svrGameInfo.stDeskInfo.bMapType; bool isWarmBattle = svrGameInfo.stDeskInfo.bIsWarmBattle > 0; byte bAILevel = svrGameInfo.stDeskInfo.bAILevel; this._InitMultiGame(svrGameInfo.bGameType, (int)bMapType, dwMapId, isWarmBattle, (int)bAILevel); this._InitSynchrConfig(svrGameInfo); } }
private void BeginRecord(SCPKG_MULTGAME_BEGINLOAD beginLoadPkg) { this.ClearRecord(); if (beginLoadPkg != null) { CRoleInfo masterRoleInfo = Singleton <CRoleInfoManager> .instance.GetMasterRoleInfo(); if (masterRoleInfo != null) { ApolloAccountInfo accountInfo = Singleton <ApolloHelper> .GetInstance().GetAccountInfo(false); if (accountInfo != null) { uint dwHeroID = 0; for (int i = 0; i < beginLoadPkg.astCampInfo.Length; i++) { CSDT_CAMPINFO csdt_campinfo = beginLoadPkg.astCampInfo[i]; for (uint j = 0; j < csdt_campinfo.dwPlayerNum; j++) { CSDT_CAMPPLAYERINFO csdt_campplayerinfo = csdt_campinfo.astCampPlayerInfo[j]; if (Utility.UTF8Convert(csdt_campplayerinfo.szOpenID) == accountInfo.OpenId) { dwHeroID = csdt_campplayerinfo.stPlayerInfo.astChoiceHero[0].stBaseInfo.stCommonInfo.dwHeroID; break; } } if (dwHeroID > 0) { break; } } if (dwHeroID > 0) { this.recordStream = new MemoryStream(0x100000); this.recordWriter = new BinaryWriter(this.recordStream); this.recordWriter.Write(CVersion.GetAppVersion()); this.recordWriter.Write(CVersion.GetUsedResourceVersion()); this.recordWriter.Write(dwHeroID); this.recordWriter.Write(DateTime.Now.Ticks); this.recordWriter.Write(beginLoadPkg.stDeskInfo.bMapType); this.recordWriter.Write(beginLoadPkg.stDeskInfo.dwMapId); this.recordWriter.Write(masterRoleInfo.Name); this.recordWriter.Write(masterRoleInfo.HeadUrl); this.recordWriter.Write(masterRoleInfo.m_rankGrade); this.recordWriter.Write(masterRoleInfo.m_rankClass); } } } } }
public MultiGameContext(SCPKG_MULTGAME_BEGINLOAD InMessage) { this.MessageRef = InMessage; if (CheatCommandReplayEntry.heroPerformanceTest) { this.InitPerformanceTest(); } uint dwMapId = this.MessageRef.stDeskInfo.dwMapId; byte bMapType = this.MessageRef.stDeskInfo.bMapType; base.LevelContext = CLevelCfgLogicManager.CreatePvpLevelContext(bMapType, dwMapId, (COM_GAME_TYPE)InMessage.bGameType, 1); base.LevelContext.m_isWarmBattle = Convert.ToBoolean(InMessage.stDeskInfo.bIsWarmBattle); base.LevelContext.SetWarmHeroAiDiff(InMessage.stDeskInfo.bAILevel); Singleton <GameLogic> .GetInstance().HashCheckFreq = InMessage.dwHaskChkFreq; FrameTracer.Initial(InMessage.dwCltLogMask, InMessage.dwCltLogSize); }
public void BuildMultiGamePlayers(SCPKG_MULTGAME_BEGINLOAD svrGameInfo) { if (Singleton <GamePlayerCenter> .get_instance().GetAllPlayers().get_Count() > 0) { } Singleton <GamePlayerCenter> .get_instance().ClearAllPlayers(); uint num = 0u; for (int i = 0; i < 2; i++) { int num2 = 0; while ((long)num2 < (long)((ulong)svrGameInfo.astCampInfo[i].dwPlayerNum)) { uint dwObjId = svrGameInfo.astCampInfo[i].astCampPlayerInfo[num2].stPlayerInfo.dwObjId; Player player = Singleton <GamePlayerCenter> .GetInstance().GetPlayer(dwObjId); DebugHelper.Assert(player == null, "你tm肯定在逗我"); if (num == 0u && i + 1 == 1) { num = dwObjId; } bool flag = svrGameInfo.astCampInfo[i].astCampPlayerInfo[num2].stPlayerInfo.bObjType == 2; if (player == null) { string openId = string.Empty; uint vipLv = 0u; int honorId = 0; int honorLevel = 0; ulong uid; uint logicWrold; uint level; if (flag) { if (Convert.ToBoolean(svrGameInfo.stDeskInfo.bIsWarmBattle)) { uid = svrGameInfo.astCampInfo[i].astCampPlayerInfo[num2].stPlayerInfo.stDetail.get_stPlayerOfNpc().ullFakeUid; logicWrold = svrGameInfo.astCampInfo[i].astCampPlayerInfo[num2].stPlayerInfo.stDetail.get_stPlayerOfNpc().dwFakeLogicWorldID; level = svrGameInfo.astCampInfo[i].astCampPlayerInfo[num2].stPlayerInfo.stDetail.get_stPlayerOfNpc().dwFakePvpLevel; openId = string.Empty; } else { uid = 0uL; logicWrold = 0u; level = svrGameInfo.astCampInfo[i].astCampPlayerInfo[num2].stPlayerInfo.dwLevel; openId = string.Empty; } } else { uid = svrGameInfo.astCampInfo[i].astCampPlayerInfo[num2].stPlayerInfo.stDetail.get_stPlayerOfAcnt().ullUid; logicWrold = (uint)svrGameInfo.astCampInfo[i].astCampPlayerInfo[num2].stPlayerInfo.stDetail.get_stPlayerOfAcnt().iLogicWorldID; level = svrGameInfo.astCampInfo[i].astCampPlayerInfo[num2].stPlayerInfo.dwLevel; openId = Utility.UTF8Convert(svrGameInfo.astCampInfo[i].astCampPlayerInfo[num2].szOpenID); vipLv = svrGameInfo.astCampInfo[i].astCampPlayerInfo[num2].stPlayerInfo.stDetail.get_stPlayerOfAcnt().stGameVip.dwCurLevel; honorId = svrGameInfo.astCampInfo[i].astCampPlayerInfo[num2].stPlayerInfo.stDetail.get_stPlayerOfAcnt().iHonorID; honorLevel = svrGameInfo.astCampInfo[i].astCampPlayerInfo[num2].stPlayerInfo.stDetail.get_stPlayerOfAcnt().iHonorLevel; } player = Singleton <GamePlayerCenter> .GetInstance().AddPlayer(dwObjId, i + 1, (int)svrGameInfo.astCampInfo[i].astCampPlayerInfo[num2].stPlayerInfo.bPosOfCamp, level, flag, Utility.UTF8Convert(svrGameInfo.astCampInfo[i].astCampPlayerInfo[num2].stPlayerInfo.szName), 0, (int)logicWrold, uid, vipLv, openId, svrGameInfo.astCampInfo[i].astCampPlayerInfo[num2].dwGradeOfRank, svrGameInfo.astCampInfo[i].astCampPlayerInfo[num2].dwClassOfRank, honorId, honorLevel, null); if (player != null) { player.isGM = (svrGameInfo.astCampInfo[i].astCampPlayerInfo[num2].bIsGM > 0); } } for (int j = 0; j < svrGameInfo.astCampInfo[i].astCampPlayerInfo[num2].stPlayerInfo.astChoiceHero.Length; j++) { COMDT_CHOICEHERO cOMDT_CHOICEHERO = svrGameInfo.astCampInfo[i].astCampPlayerInfo[num2].stPlayerInfo.astChoiceHero[j]; int dwHeroID = (int)cOMDT_CHOICEHERO.stBaseInfo.stCommonInfo.dwHeroID; if (dwHeroID != 0) { bool arg_38B_0 = (cOMDT_CHOICEHERO.stBaseInfo.stCommonInfo.dwMaskBits & 4u) > 0u && (cOMDT_CHOICEHERO.stBaseInfo.stCommonInfo.dwMaskBits & 1u) == 0u; if (player != null) { player.AddHero((uint)dwHeroID); } } } num2++; } } if (Singleton <WatchController> .GetInstance().IsWatching) { Singleton <GamePlayerCenter> .GetInstance().SetHostPlayer(num); } else if (Singleton <GameReplayModule> .HasInstance() && Singleton <GameReplayModule> .get_instance().isReplay) { Singleton <GamePlayerCenter> .GetInstance().SetHostPlayer(num); } else { Player playerByUid = Singleton <GamePlayerCenter> .GetInstance().GetPlayerByUid(Singleton <CRoleInfoManager> .get_instance().masterUUID); DebugHelper.Assert(playerByUid != null, "load multi game but hostPlayer is null"); Singleton <GamePlayerCenter> .GetInstance().SetHostPlayer(playerByUid.PlayerId); } Singleton <ActorDataCenter> .get_instance().ClearHeroServerData(); for (int k = 0; k < svrGameInfo.astCampInfo.Length; k++) { CSDT_CAMPINFO cSDT_CAMPINFO = svrGameInfo.astCampInfo[k]; int num3 = Mathf.Min(cSDT_CAMPINFO.astCampPlayerInfo.Length, (int)cSDT_CAMPINFO.dwPlayerNum); for (int l = 0; l < num3; l++) { COMDT_PLAYERINFO stPlayerInfo = cSDT_CAMPINFO.astCampPlayerInfo[l].stPlayerInfo; Singleton <ActorDataCenter> .get_instance().AddHeroesServerData(stPlayerInfo.dwObjId, stPlayerInfo.astChoiceHero); } } }
private void BeginRecord(SCPKG_MULTGAME_BEGINLOAD beginLoadPkg, WatchEntryData watchEntry = null) { this.ClearRecord(); if (beginLoadPkg == null) { return; } CRoleInfo masterRoleInfo = Singleton <CRoleInfoManager> .instance.GetMasterRoleInfo(); if (masterRoleInfo == null) { return; } ApolloAccountInfo accountInfo = Singleton <ApolloHelper> .GetInstance().GetAccountInfo(false); if (accountInfo == null) { return; } uint num = 0u; string text = masterRoleInfo.Name; string headUrl = masterRoleInfo.HeadUrl; byte b = masterRoleInfo.m_rankGrade; uint num2 = masterRoleInfo.m_rankClass; if (watchEntry == null) { if (Singleton <WatchController> .GetInstance().IsWatching) { CSDT_CAMPPLAYERINFO cSDT_CAMPPLAYERINFO = beginLoadPkg.astCampInfo[0].astCampPlayerInfo[0]; text = StringHelper.UTF8BytesToString(ref cSDT_CAMPPLAYERINFO.stPlayerInfo.szName); b = (byte)cSDT_CAMPPLAYERINFO.dwShowGradeOfRank; num2 = cSDT_CAMPPLAYERINFO.dwClassOfRank; num = cSDT_CAMPPLAYERINFO.stPlayerInfo.astChoiceHero[0].stBaseInfo.stCommonInfo.dwHeroID; } else { for (int i = 0; i < beginLoadPkg.astCampInfo.Length; i++) { CSDT_CAMPINFO cSDT_CAMPINFO = beginLoadPkg.astCampInfo[i]; for (uint num3 = 0u; num3 < cSDT_CAMPINFO.dwPlayerNum; num3 += 1u) { CSDT_CAMPPLAYERINFO cSDT_CAMPPLAYERINFO2 = cSDT_CAMPINFO.astCampPlayerInfo[(int)((uint)((UIntPtr)num3))]; if (Utility.UTF8Convert(cSDT_CAMPPLAYERINFO2.szOpenID) == accountInfo.OpenId) { num = cSDT_CAMPPLAYERINFO2.stPlayerInfo.astChoiceHero[0].stBaseInfo.stCommonInfo.dwHeroID; break; } } if (num > 0u) { break; } } } } else { num = watchEntry.usedHeroId; text = watchEntry.name; headUrl = watchEntry.headUrl; b = watchEntry.rankGrade; num2 = watchEntry.rankClass; } if (num > 0u) { this.recordStream = new MemoryStream(1048576); this.recordWriter = new BinaryWriter(this.recordStream); this.recordWriter.Write(CVersion.GetAppVersion()); this.recordWriter.Write(CVersion.GetUsedResourceVersion()); this.recordWriter.Write(CVersion.GetRevisonNumber()); this.recordWriter.Write(num); this.recordWriter.Write(DateTime.get_Now().get_Ticks()); this.recordWriter.Write(beginLoadPkg.stDeskInfo.bMapType); this.recordWriter.Write(beginLoadPkg.stDeskInfo.dwMapId); this.recordWriter.Write(text); this.recordWriter.Write(headUrl); this.recordWriter.Write(b); this.recordWriter.Write(num2); } }
public void StartMultiPlayerGame(SCPKG_MULTGAME_BEGINLOAD multiGameInfo) { this._gameBuilder.BuildMultiPlayerGame(); }
private void onReconnectGame(CSPkg msg) { CSDT_RECONN_PICKINFO stPickInfo; stUIEventParams @params; switch (msg.stPkgData.stReconnGameNtf.bState) { case 1: OnRelayStatePick(ref msg); stPickInfo = msg.stPkgData.stReconnGameNtf.stStateData.stPickInfo; @params = new stUIEventParams(); if (stPickInfo.stDeskInfo.bMapType != 3) { if (stPickInfo.stDeskInfo.bMapType == 4) { @params.heroSelectGameType = enSelectHeroType.enLuanDou; } else if (stPickInfo.stDeskInfo.bMapType == 5) { @params.heroSelectGameType = enSelectHeroType.enUnion; } else { @params.heroSelectGameType = enSelectHeroType.enPVP; } break; } @params.heroSelectGameType = enSelectHeroType.enLadder; break; case 2: if (!Singleton <LobbyLogic> .instance.inMultiGame) { Singleton <LobbyLogic> .instance.inMultiGame = true; Singleton <LobbyLogic> .instance.inMultiRoom = true; SCPKG_MULTGAME_BEGINLOAD stBeginLoad = msg.stPkgData.stReconnGameNtf.stStateData.stLoadingInfo.stBeginLoad; Singleton <GameBuilder> .instance.StartGame(new MultiGameContext(stBeginLoad)); return; } return; case 3: this.g_fBeginReconnectTime = Time.time; Singleton <LobbyLogic> .GetInstance().inMultiRoom = true; MonoSingleton <Reconnection> .GetInstance().RequestRelaySyncCacheFrames(false); return; case 4: MonoSingleton <Reconnection> .GetInstance().ExitMultiGame(); return; default: DebugHelper.Assert(false); return; } Singleton <CUIEventManager> .GetInstance().DispatchUIEvent(enUIEventID.HeroSelect_OpenForm, @params); Singleton <CUIManager> .GetInstance().CloseSendMsgAlert(); if ((@params.heroSelectGameType == enSelectHeroType.enLuanDou) || ((@params.heroSelectGameType == enSelectHeroType.enUnion) && CLevelCfgLogicManager.IsLuanDouRuleWithUnion(stPickInfo.stDeskInfo.dwMapId))) { CHeroSelectSystem.RefreshHeroSel(Singleton <CRoomSystem> .instance.roomInfo.GetMasterMemberInfo()); Singleton <CHeroSelectSystem> .instance.RefreshSkinPanel(null); } }