MP campaign fixes

This commit is contained in:
Joonas Rikkonen
2017-09-13 18:37:17 +03:00
parent 8949871f00
commit 348d81a66f
10 changed files with 88 additions and 375 deletions
@@ -684,6 +684,8 @@ namespace Barotrauma.Networking
inc.ReadPadBits();
GameModePreset gameMode = GameModePreset.list.Find(gm => gm.Name == modeName);
MultiplayerCampaign campaign = GameMain.NetLobbyScreen.SelectedMode == GameMain.GameSession?.GameMode.Preset ?
GameMain.GameSession?.GameMode as MultiplayerCampaign : null;
if (gameMode == null)
{
@@ -691,24 +693,31 @@ namespace Barotrauma.Networking
yield return CoroutineStatus.Success;
}
if (!GameMain.NetLobbyScreen.TrySelectSub(subName, subHash, GameMain.NetLobbyScreen.SubList))
if (campaign == null)
{
yield return CoroutineStatus.Success;
}
if (!GameMain.NetLobbyScreen.TrySelectSub(subName, subHash, GameMain.NetLobbyScreen.SubList))
{
yield return CoroutineStatus.Success;
}
if (!GameMain.NetLobbyScreen.TrySelectSub(shuttleName, shuttleHash, GameMain.NetLobbyScreen.ShuttleList.ListBox))
{
yield return CoroutineStatus.Success;
if (!GameMain.NetLobbyScreen.TrySelectSub(shuttleName, shuttleHash, GameMain.NetLobbyScreen.ShuttleList.ListBox))
{
yield return CoroutineStatus.Success;
}
}
Rand.SetSyncedSeed(seed);
if (gameMode.Name != "Campaign")
if (campaign == null)
{
GameMain.GameSession = new GameSession(GameMain.NetLobbyScreen.SelectedSub, "", gameMode, Mission.MissionTypes[missionTypeIndex]);
GameMain.GameSession.StartRound(levelSeed, loadSecondSub);
}
GameMain.GameSession.StartRound(levelSeed, loadSecondSub);
else
{
GameMain.GameSession.StartRound(campaign.Map.SelectedConnection.Level, true, false);
}
if (respawnAllowed) respawnManager = new RespawnManager(this, GameMain.NetLobbyScreen.SelectedShuttle);
if (isTraitor)
@@ -1113,6 +1122,10 @@ namespace Barotrauma.Networking
GameMain.GameSession.Submarine = new Submarine(subPath, "");
}
else
{
SaveUtil.DecompressToDirectory(GameMain.GameSession.SavePath, SaveUtil.TempPath, null);
}
break;
}