Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
 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;
 }
Esempio n. 3
0
        public override void BuildGamePlayer(ProtocolObject svrInfo)
        {
            SCPKG_MULTGAME_BEGINLOAD svrGameInfo = (SCPKG_MULTGAME_BEGINLOAD)svrInfo;

            Singleton <GameContextEx> .GetInstance().InitMultiGame(svrGameInfo);

            this.PlayerBuilder.BuildMultiGamePlayers(svrGameInfo);
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
 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);
     }
 }
Esempio n. 7
0
        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);
                        }
                    }
                }
            }
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
            }
        }
Esempio n. 11
0
 public void StartMultiPlayerGame(SCPKG_MULTGAME_BEGINLOAD multiGameInfo)
 {
     this._gameBuilder.BuildMultiPlayerGame();
 }
Esempio n. 12
0
        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);
            }
        }