Progress on multiplayer campaign:

- Moved SaveUtils to the shared project.
- Moved the "new game"/"load game" menu logic to a separate class.
- Somewhat functional campaign UI in the server lobby (only the map view is usable atm though).
This commit is contained in:
Joonas Rikkonen
2017-08-31 18:53:37 +03:00
parent c7ae91da42
commit c1f5e3cbda
18 changed files with 856 additions and 601 deletions
@@ -1128,8 +1128,16 @@ namespace Barotrauma.Networking
int teamCount = 1;
byte hostTeam = 1;
string levelSeed = GameMain.NetLobbyScreen.LevelSeed;
MultiplayerCampaign campaign = GameMain.GameSession?.GameMode as MultiplayerCampaign;
GameMain.GameSession = new GameSession(selectedSub, "", selectedMode, Mission.MissionTypes[GameMain.NetLobbyScreen.MissionTypeIndex]);
//don't instantiate a new gamesession if we're playing a campaign
if (campaign == null || GameMain.GameSession == null)
{
GameMain.GameSession = new GameSession(selectedSub, "", selectedMode, Mission.MissionTypes[GameMain.NetLobbyScreen.MissionTypeIndex]);
}
if (GameMain.GameSession.GameMode.Mission != null &&
GameMain.GameSession.GameMode.Mission.AssignTeamIDs(connectedClients, out hostTeam))
@@ -1141,7 +1149,14 @@ namespace Barotrauma.Networking
connectedClients.ForEach(c => c.TeamID = hostTeam);
}
GameMain.GameSession.StartRound(GameMain.NetLobbyScreen.LevelSeed, teamCount > 1);
if (campaign != null)
{
GameMain.GameSession.StartRound(campaign.Map.SelectedConnection.Level, true, teamCount > 1);
}
else
{
GameMain.GameSession.StartRound(GameMain.NetLobbyScreen.LevelSeed, teamCount > 1);
}
GameServer.Log("Starting a new round...", ServerLog.MessageType.ServerMessage);
GameServer.Log("Submarine: " + selectedSub.Name, ServerLog.MessageType.ServerMessage);