(3a5d98b) v0.9.6.0

This commit is contained in:
Regalis
2019-12-17 14:38:24 +01:00
parent 5c95c53118
commit a3569b8bf0
95 changed files with 1579 additions and 728 deletions
@@ -483,6 +483,8 @@ namespace Barotrauma.Networking
if (DateTime.Now > timeOut)
{
clientPeer?.Close(Lidgren.Network.NetConnection.NoResponseMessage);
var msgBox = new GUIMessageBox(TextManager.Get("ConnectionFailed"), TextManager.Get("CouldNotConnectToServer"));
msgBox.Buttons[0].OnClicked += ReturnToPreviousMenu;
reconnectBox?.Close(); reconnectBox = null;
break;
}
@@ -1232,7 +1234,9 @@ namespace Barotrauma.Networking
if (Level.Loaded.EqualityCheckVal != levelEqualityCheckVal)
{
string errorMsg = "Level equality check failed. The level generated at your end doesn't match the level generated by the server (seed " + Level.Loaded.Seed + ").";
string errorMsg = "Level equality check failed. The level generated at your end doesn't match the level generated by the server (seed: " + Level.Loaded.Seed +
", sub: " + Submarine.MainSub.Name + " (" + Submarine.MainSub.MD5Hash.ShortHash + ")" +
", mirrored: " + Level.Loaded.Mirrored + ").";
DebugConsole.ThrowError(errorMsg, createMessageBox: true);
GameAnalyticsManager.AddErrorEventOnce("GameClient.StartGame:LevelsDontMatch" + levelSeed, GameAnalyticsSDK.Net.EGAErrorSeverity.Error, errorMsg);
CoroutineManager.StartCoroutine(EndGame(""));
@@ -1274,6 +1278,7 @@ namespace Barotrauma.Networking
gameStarted = false;
Character.Controlled = null;
SpawnAsTraitor = false;
GameMain.GameScreen.Cam.TargetPos = Vector2.Zero;
GameMain.LightManager.LosEnabled = false;
respawnManager = null;
@@ -1432,6 +1437,8 @@ namespace Barotrauma.Networking
}
}
private bool initialUpdateReceived;
private void ReadLobbyUpdate(IReadMessage inc)
{
ServerNetObject objHeader;
@@ -1452,13 +1459,15 @@ namespace Barotrauma.Networking
UInt16 settingsLen = inc.ReadUInt16();
byte[] settingsData = inc.ReadBytes(settingsLen);
if (inc.ReadBoolean())
bool isInitialUpdate = inc.ReadBoolean();
if (isInitialUpdate)
{
if (GameSettings.VerboseLogging)
{
DebugConsole.NewMessage("Received initial lobby update, ID: " + updateID + ", last ID: " + GameMain.NetLobbyScreen.LastUpdateID, Color.Gray);
}
ReadInitialUpdate(inc);
initialUpdateReceived = true;
}
string selectSubName = inc.ReadString();
@@ -1489,7 +1498,9 @@ namespace Barotrauma.Networking
float autoRestartTimer = autoRestartEnabled ? inc.ReadSingle() : 0.0f;
//ignore the message if we already a more up-to-date one
if (NetIdUtils.IdMoreRecent(updateID, GameMain.NetLobbyScreen.LastUpdateID))
//or if we're still waiting for the initial update
if (NetIdUtils.IdMoreRecent(updateID, GameMain.NetLobbyScreen.LastUpdateID) &&
(isInitialUpdate || initialUpdateReceived))
{
ReadWriteMessage settingsBuf = new ReadWriteMessage();
settingsBuf.Write(settingsData, 0, settingsLen); settingsBuf.BitPosition = 0;
@@ -2248,12 +2259,10 @@ namespace Barotrauma.Networking
{
if (gameStarted)
{
tickBox.Visible = false;
tickBox.Parent.Visible = false;
return false;
}
Vote(VoteType.StartRound, tickBox.Selected);
return true;
}