// 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); }
// 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); }
// 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 }); }