Exemplo n.º 1
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);
        }
Exemplo n.º 2
0
        public SingleGameContext(SCPKG_STARTSINGLEGAMERSP InMessage)
        {
            DebugHelper.Assert(InMessage != null, "输入不应该为null");
            base.RewardCount = (InMessage == null) ? 0 : ((int)InMessage.dwRewardNum);
            Singleton <ActorDataCenter> .instance.ClearHeroServerData();

            if (Singleton <GamePlayerCenter> .instance.GetAllPlayers().Count > 0)
            {
            }
            Singleton <GamePlayerCenter> .instance.ClearAllPlayers();

            if (((InMessage != null) && (InMessage.stDetail.stSingleGameSucc != null)) && (InMessage.stDetail.stSingleGameSucc.bNum >= 1))
            {
                this.DoNew9SlotCalc(InMessage);
                int num = Mathf.Min(InMessage.stDetail.stSingleGameSucc.bNum, InMessage.stDetail.stSingleGameSucc.astFighter.Length);
                for (int i = 0; i < num; i++)
                {
                    COMDT_PLAYERINFO comdt_playerinfo = InMessage.stDetail.stSingleGameSucc.astFighter[i];
                    if (comdt_playerinfo.bObjType != 0)
                    {
                        ulong uid = 0L;
                        uint  dwFakeLogicWorldID = 0;
                        uint  level = 1;
                        if (comdt_playerinfo.bObjType == 2)
                        {
                            if ((InMessage.bGameType == 1) && Convert.ToBoolean(InMessage.stGameParam.stSingleGameRspOfCombat.bIsWarmBattle))
                            {
                                uid = comdt_playerinfo.stDetail.stPlayerOfNpc.ullFakeUid;
                                dwFakeLogicWorldID = comdt_playerinfo.stDetail.stPlayerOfNpc.dwFakeLogicWorldID;
                                level = comdt_playerinfo.stDetail.stPlayerOfNpc.dwFakePvpLevel;
                            }
                            else
                            {
                                uid = 0L;
                                dwFakeLogicWorldID = 0;
                                level = comdt_playerinfo.dwLevel;
                            }
                        }
                        else
                        {
                            uid = (comdt_playerinfo.bObjType != 1) ? ((ulong)0L) : comdt_playerinfo.stDetail.stPlayerOfAcnt.ullUid;
                            dwFakeLogicWorldID = (comdt_playerinfo.bObjType != 1) ? 0 : ((uint)comdt_playerinfo.stDetail.stPlayerOfAcnt.iLogicWorldID);
                            level = comdt_playerinfo.dwLevel;
                        }
                        uint vipLv = 0;
                        if (comdt_playerinfo.stDetail.stPlayerOfAcnt != null)
                        {
                            vipLv = comdt_playerinfo.stDetail.stPlayerOfAcnt.stGameVip.dwCurLevel;
                        }
                        Player player = Singleton <GamePlayerCenter> .GetInstance().AddPlayer(comdt_playerinfo.dwObjId, (COM_PLAYERCAMP)comdt_playerinfo.bObjCamp, comdt_playerinfo.bPosOfCamp, level, comdt_playerinfo.bObjType != 1, StringHelper.UTF8BytesToString(ref comdt_playerinfo.szName), 0, (int)dwFakeLogicWorldID, uid, vipLv, null, 0);

                        if (player != null)
                        {
                            for (int j = 0; j < comdt_playerinfo.astChoiceHero.Length; j++)
                            {
                                uint dwHeroID = comdt_playerinfo.astChoiceHero[j].stBaseInfo.stCommonInfo.dwHeroID;
                                player.AddHero(dwHeroID);
                            }
                            player.isGM = LobbyMsgHandler.isHostGMAcnt;
                        }
                        Singleton <ActorDataCenter> .instance.AddHeroesServerData(comdt_playerinfo.dwObjId, comdt_playerinfo.astChoiceHero);
                    }
                    if (comdt_playerinfo.bObjType == 1)
                    {
                        Singleton <GamePlayerCenter> .GetInstance().SetHostPlayer(comdt_playerinfo.dwObjId);
                    }
                }
                if (InMessage.bGameType == 2)
                {
                    ResLevelCfgInfo dataByKey = GameDataMgr.levelDatabin.GetDataByKey(InMessage.iLevelId);
                    DebugHelper.Assert(dataByKey != null);
                    base.LevelContext = new SLevelContext();
                    base.LevelContext.Init(dataByKey, 1);
                    if (dataByKey.bGuideLevelSubType == 0)
                    {
                        base.LevelContext.isPVPLevel = true;
                        base.LevelContext.isPVPMode  = true;
                    }
                    else if (dataByKey.bGuideLevelSubType == 1)
                    {
                        base.LevelContext.isPVPLevel = false;
                        base.LevelContext.isPVPMode  = false;
                    }
                    base.LevelContext.GameType            = (COM_GAME_TYPE)InMessage.bGameType;
                    this.levelContext.bShowTrainingHelper = dataByKey.bShowTrainingHelper > 0;
                    this.m_LevelDesignFileName            = base.LevelContext.LevelDesignFileName;
                    this.m_LevelArtistFileName            = base.LevelContext.LevelArtistFileName;
                }
                else if (InMessage.bGameType == 0)
                {
                    ResLevelCfgInfo levelCfg = GameDataMgr.levelDatabin.GetDataByKey(InMessage.iLevelId);
                    DebugHelper.Assert(levelCfg != null);
                    base.LevelContext = new SLevelContext();
                    base.LevelContext.Init(levelCfg, Singleton <CAdventureSys> .instance.currentDifficulty);
                    base.LevelContext.GameType            = (COM_GAME_TYPE)InMessage.bGameType;
                    this.levelContext.bShowTrainingHelper = levelCfg.bShowTrainingHelper > 0;
                    this.m_LevelDesignFileName            = base.LevelContext.LevelDesignFileName;
                    this.m_LevelArtistFileName            = base.LevelContext.LevelArtistFileName;
                }
                else if (InMessage.bGameType == 7)
                {
                    ResLevelCfgInfo info3 = GameDataMgr.burnMap.GetDataByKey(Singleton <BurnExpeditionController> .GetInstance().model.Get_LevelID(Singleton <BurnExpeditionController> .GetInstance().model.curSelect_LevelIndex));
                    DebugHelper.Assert(info3 != null);
                    base.LevelContext = new SLevelContext();
                    base.LevelContext.Init(info3, 1);
                    base.LevelContext.GameType            = (COM_GAME_TYPE)InMessage.bGameType;
                    this.levelContext.bShowTrainingHelper = info3.bShowTrainingHelper > 0;
                    this.m_LevelDesignFileName            = base.LevelContext.LevelDesignFileName;
                    this.m_LevelArtistFileName            = base.LevelContext.LevelArtistFileName;
                }
                else if (InMessage.bGameType == 8)
                {
                    ResLevelCfgInfo info4 = GameDataMgr.arenaLevelDatabin.GetDataByKey(InMessage.iLevelId);
                    DebugHelper.Assert(info4 != null);
                    base.LevelContext = new SLevelContext();
                    base.LevelContext.Init(info4, 1);
                    base.LevelContext.GameType            = (COM_GAME_TYPE)InMessage.bGameType;
                    this.levelContext.bShowTrainingHelper = info4.bShowTrainingHelper > 0;
                    this.m_LevelDesignFileName            = base.LevelContext.LevelDesignFileName;
                    this.m_LevelArtistFileName            = base.LevelContext.LevelArtistFileName;
                }
                else if (InMessage.bGameType == 1)
                {
                    base.LevelContext          = CLevelCfgLogicManager.MakeMobaContext((uint)InMessage.iLevelId, COM_GAME_TYPE.COM_SINGLE_GAME_OF_COMBAT, 1);
                    base.LevelContext.GameType = (COM_GAME_TYPE)InMessage.bGameType;
                    ResAcntBattleLevelInfo info5 = GameDataMgr.pvpLevelDatabin.GetDataByKey((uint)InMessage.iLevelId);
                    if (info5 != null)
                    {
                        this.m_LevelDesignFileName = StringHelper.UTF8BytesToString(ref info5.stLevelCommonInfo.szDesignFileName);
                        if (info5.stLevelCommonInfo.szArtistFileName != null)
                        {
                            this.m_LevelArtistFileName = StringHelper.UTF8BytesToString(ref info5.stLevelCommonInfo.szArtistFileName);
                        }
                    }
                    else
                    {
                        ResCounterPartLevelInfo info6 = GameDataMgr.cpLevelDatabin.GetDataByKey((uint)InMessage.iLevelId);
                        this.m_LevelDesignFileName = StringHelper.UTF8BytesToString(ref info6.stLevelCommonInfo.szDesignFileName);
                        if (info6.stLevelCommonInfo.szArtistFileName != null)
                        {
                            this.m_LevelArtistFileName = StringHelper.UTF8BytesToString(ref info6.stLevelCommonInfo.szArtistFileName);
                        }
                    }
                    base.LevelContext.isWarmBattle      = Convert.ToBoolean(InMessage.stGameParam.stSingleGameRspOfCombat.bIsWarmBattle);
                    base.LevelContext.DynamicDifficulty = InMessage.stGameParam.stSingleGameRspOfCombat.bAILevel;
                    base.LevelContext.MapType           = InMessage.stGameParam.stSingleGameRspOfCombat.bMapType;
                }
            }
        }