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.

This commit is contained in:
Joonas Rikkonen
2017-07-09 20:19:53 +03:00
parent cbe7200ff6
commit f2d603d2f0
@@ -755,7 +755,7 @@ namespace Barotrauma.Networking
yield return CoroutineStatus.Success; yield return CoroutineStatus.Success;
} }
private void ReadInitialUpdate(NetIncomingMessage inc, bool isDuplicate) private void ReadInitialUpdate(NetIncomingMessage inc)
{ {
myID = inc.ReadByte(); myID = inc.ReadByte();
@@ -776,19 +776,17 @@ namespace Barotrauma.Networking
submarines.Add(new Submarine(Path.Combine(Submarine.SavePath, subName), subHash, false)); 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(); gameStarted = inc.ReadBoolean();
bool allowSpectating = inc.ReadBoolean(); bool allowSpectating = inc.ReadBoolean();
SetPermissions((ClientPermissions)inc.ReadByte()); SetPermissions((ClientPermissions)inc.ReadByte());
if (gameStarted && !isDuplicate) if (gameStarted)
{ {
new GUIMessageBox("Please wait", new GUIMessageBox("Please wait",
(allowSpectating) ? (allowSpectating) ?
@@ -822,7 +820,7 @@ namespace Barotrauma.Networking
{ {
DebugConsole.NewMessage("Received initial lobby update, ID: " + updateID + ", last ID: " + GameMain.NetLobbyScreen.LastUpdateID, Color.Gray); 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(); string selectSubName = inc.ReadString();