예제 #1
0
 // Token: 0x06001279 RID: 4729 RVA: 0x000671F0 File Offset: 0x000653F0
 private void OnStartButtonPress()
 {
     if (m_LobbyView != null)
     {
         m_LobbyView.UnloadPreviewImageStreamedAssets();
         // MOD: tell the mod what level is being loaded
         MapModManager.SetMap(m_LobbyView.SelectedMap, GameMode.AISkirmish, m_LobbyView.ActiveTeamSetting, m_LobbyView.GetPlayerTeamIDs());
         // MOD
         mLevelManager.StartLoadLevel(GameMode.AISkirmish, ReplayMode.RecordingGame, m_LobbyView.SelectedMap, GetStartDependencies());
         return;
     }
     Log.Error(Log.Channel.UI, "Cannot start game. No lobby view specified!", new object[0]);
 }
        // Token: 0x06001822 RID: 6178 RVA: 0x00083DB0 File Offset: 0x00081FB0
        private void BeginLevelLoad()
        {
            DependencyContainer <SessionBase> dependencies = new DependencyContainer <SessionBase>(new NullSession());

            this.mLevelToLoad.Difficulty = this.mSelectedDifficulty;
            if (this.m_UseDefaultFleet != null)
            {
                this.mLevelToLoad.CampaignPersistenceToggled = !this.m_UseDefaultFleet.value;
            }
            else
            {
                Log.Error(Log.Channel.Data, "The UseDefaultFleet toggle has become unhooked from the MissionSelect window - The default fleet will always be used!", new object[0]);
            }
            // MOD
            MapModManager.SetMap(mLevelToLoad, GameMode.SinglePlayer, TeamSetting.Invalid, new Dictionary <CommanderID, TeamID>());
            // MOD
            this.mLevelManager.StartLoadLevel(GameMode.SinglePlayer, ReplayMode.ReplaysDisabled, this.mLevelToLoad, dependencies);
        }
예제 #3
0
        // Token: 0x06000912 RID: 2322 RVA: 0x000378B0 File Offset: 0x00035AB0
        protected virtual bool StartLoadingGame()
        {
            Log.Info(Log.Channel.Online, "Player {0} starting game...", new object[]
            {
                this.mLobby.LocalPlayerID
            });
            if (this.m_ClanChatPanel != null)
            {
                this.m_ClanChatPanel.Leave();
            }
            this.StopAllLobbyCoroutines();
            LevelDefinition level = this.mLevelManager.FindLevelByIndex(this.mSharedLobbyData.SelectedSceneIndex, GameMode.Multiplayer);
            // MOD
            Dictionary <CommanderID, TeamID> commanderTeamIDs;
            TeamSetting teamSettings;

            TryGetTeams(out commanderTeamIDs, out teamSettings);
            MapModManager.SetMap(level, GameMode.Multiplayer, teamSettings, commanderTeamIDs);
            // MOD
            this.mLevelManager.StartLoadLevel(GameMode.Multiplayer, ReplayMode.RecordingGame, level, this.GetStartDependencies());
            return(true);
        }
예제 #4
0
        // Token: 0x06000B87 RID: 2951 RVA: 0x0004090C File Offset: 0x0003EB0C
        private void LoadReplay()
        {
            LevelDefinition levelDefinition = this.mLevelManager.FindLevelFromSceneName(this.mSelectedReplay.SceneName, this.mSelectedReplay.GameSessionSettings.GameMode);

            if (levelDefinition != null)
            {
                // MOD: tell the mod what map is being loaded
                try {
                    byte[] replayX      = System.IO.File.ReadAllBytes(mSelectedReplay.FilePath + "x");
                    int    layoutLength = (replayX[0] << 0) + (replayX[1] << 8) + (replayX[2] << 16) + (replayX[3] << 24);
                    int    patchLength  = (replayX[4] << 0) + (replayX[5] << 8) + (replayX[6] << 16) + (replayX[7] << 24);
                    int    reserved0    = (replayX[8] << 0) + (replayX[9] << 8) + (replayX[10] << 16) + (replayX[11] << 24);
                    int    reserved1    = (replayX[12] << 0) + (replayX[13] << 8) + (replayX[14] << 16) + (replayX[15] << 24);
                    MapModManager.MapXml = Encoding.UTF8.GetString(replayX, 16, layoutLength);
                    Subsystem.AttributeLoader.PatchOverrideData = Encoding.UTF8.GetString(replayX, 16 + layoutLength, patchLength);
                } catch {}
                Dictionary <CommanderID, TeamID> teams = new Dictionary <CommanderID, TeamID>();
                foreach (var tuple in mSelectedReplay.SessionPlayers)
                {
                    teams[new CommanderID(tuple.CID)] = new TeamID(tuple.TeamID);
                }
                MapModManager.SetMap(levelDefinition, mSelectedReplay.GameSessionSettings.GameMode, mSelectedReplay.GameSessionSettings.TeamSetting, teams);
                // MOD

                Dictionary <CommanderID, PlayerSelection> dictionary = new Dictionary <CommanderID, PlayerSelection>(this.mSelectedReplay.SessionPlayers.Length);
                List <NetworkPlayerID> list = new List <NetworkPlayerID>(this.mSelectedReplay.SessionPlayers.Length);
                for (int i = 0; i < this.mSelectedReplay.SessionPlayers.Length; i++)
                {
                    ReplayHelpers.ReplayDataTuple replayDataTuple     = this.mSelectedReplay.SessionPlayers[i];
                    CommanderAttributes           commanderAttributes = null;
                    foreach (DLCAssetBundleBase dlcassetBundleBase in this.mDLCManager.GetAllLoadedHeadersOfType(DLCType.Faction))
                    {
                        UnitFactionDLCPack unitFactionDLCPack = dlcassetBundleBase as UnitFactionDLCPack;
                        if (unitFactionDLCPack != null && unitFactionDLCPack.CommanderAttrs != null && unitFactionDLCPack.CommanderAttrs.Name == replayDataTuple.CommanderAttributesName)
                        {
                            commanderAttributes = unitFactionDLCPack.CommanderAttrs;
                            break;
                        }
                    }
                    int j = 0;
                    if (commanderAttributes == null)
                    {
                        for (j = 0; j < this.mLevelManager.CommanderAttributes.Length; j++)
                        {
                            CommanderAttributes commanderAttributes2 = this.mLevelManager.CommanderAttributes[j];
                            if (commanderAttributes2.Name == replayDataTuple.CommanderAttributesName)
                            {
                                commanderAttributes = commanderAttributes2;
                                break;
                            }
                        }
                    }
                    if (commanderAttributes == null)
                    {
                        Log.Error(Log.Channel.Data, "Couldn't resolve commander attributes from saved replay.  The replay that was saved didn't have commander attributes that match the commander attributes in the level ({0})", new object[]
                        {
                            replayDataTuple.CommanderAttributesName
                        });
                    }
                    else
                    {
                        CommanderDescription commanderDescription = new CommanderDescription(replayDataTuple.PlayerName, new CommanderID(replayDataTuple.CID), replayDataTuple.PlayerID, replayDataTuple.SpawnIndex, j, new TeamID(replayDataTuple.TeamID), replayDataTuple.PlayerType, replayDataTuple.UnitColors, replayDataTuple.AIDifficulty, replayDataTuple.UnitSkinPack, replayDataTuple.RandomFaction);
                        dictionary.Add(commanderDescription.CommanderID, new PlayerSelection(commanderAttributes, commanderDescription));
                        if (replayDataTuple.PlayerID != NetworkPlayerID.kInvalidID)
                        {
                            list.Add(replayDataTuple.PlayerID);
                        }
                    }
                }
                DependencyContainer <GameStartSettings, ReplayHelpers.ReplayableGameSessionHeader, SessionBase> dependencies = new DependencyContainer <GameStartSettings, ReplayHelpers.ReplayableGameSessionHeader, SessionBase>(new GameStartSettings(dictionary, this.mSelectedReplay.GameSessionSettings.VictoryConditions, this.mSelectedReplay.GameSessionSettings.TeamSetting, this.mSelectedReplay.GameSessionSettings.GameModeSettings, this.mSelectedReplay.RandomSeed, false, false, AutomatchSizeType.ThreeVSThree), this.mSelectedReplay, new NullSession(list));
                this.mLevelManager.LoadLevelForSave(levelDefinition, this.mSelectedReplay.GameSessionSettings.GameMode, ReplayMode.ReplayingGame, dependencies);
                return;
            }
            Log.Error(Log.Channel.Data, "The level associated with {0} could not be found", new object[]
            {
                this.mSelectedReplay.SceneName
            });
        }