From f2d603d2f0803a7b54272575f60f64539f7c93d4 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Sun, 9 Jul 2017 20:19:53 +0300 Subject: [PATCH] Fixed issue #15 (sub/shuttle lists being empty at the client's side after joining a server). The clients would ignore the initial update message if they happened to receive one of the normal update messages before the initial one. --- .../Source/Networking/GameClient.cs | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/Barotrauma/BarotraumaClient/Source/Networking/GameClient.cs b/Barotrauma/BarotraumaClient/Source/Networking/GameClient.cs index cfc994bc7..d4e719ec9 100644 --- a/Barotrauma/BarotraumaClient/Source/Networking/GameClient.cs +++ b/Barotrauma/BarotraumaClient/Source/Networking/GameClient.cs @@ -755,7 +755,7 @@ namespace Barotrauma.Networking yield return CoroutineStatus.Success; } - private void ReadInitialUpdate(NetIncomingMessage inc, bool isDuplicate) + private void ReadInitialUpdate(NetIncomingMessage inc) { myID = inc.ReadByte(); @@ -776,19 +776,17 @@ namespace Barotrauma.Networking submarines.Add(new Submarine(Path.Combine(Submarine.SavePath, subName), subHash, false)); } } - - if (!isDuplicate) - { - GameMain.NetLobbyScreen.UpdateSubList(GameMain.NetLobbyScreen.SubList, submarines); - GameMain.NetLobbyScreen.UpdateSubList(GameMain.NetLobbyScreen.ShuttleList.ListBox, submarines); - } + + GameMain.NetLobbyScreen.UpdateSubList(GameMain.NetLobbyScreen.SubList, submarines); + GameMain.NetLobbyScreen.UpdateSubList(GameMain.NetLobbyScreen.ShuttleList.ListBox, submarines); + gameStarted = inc.ReadBoolean(); bool allowSpectating = inc.ReadBoolean(); SetPermissions((ClientPermissions)inc.ReadByte()); - if (gameStarted && !isDuplicate) + if (gameStarted) { new GUIMessageBox("Please wait", (allowSpectating) ? @@ -822,7 +820,7 @@ namespace Barotrauma.Networking { DebugConsole.NewMessage("Received initial lobby update, ID: " + updateID + ", last ID: " + GameMain.NetLobbyScreen.LastUpdateID, Color.Gray); } - ReadInitialUpdate(inc, !NetIdUtils.IdMoreRecent(updateID, GameMain.NetLobbyScreen.LastUpdateID)); + ReadInitialUpdate(inc); } string selectSubName = inc.ReadString();