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

View File

@@ -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();