Reliablesender exception handling, buttons crashing multiplayer, using screwdrivers/wrenches with left click, RestoreCollision exception handling, nerfed c4, UpdateLimbCollisionCategories fix
This commit is contained in:
@@ -173,7 +173,7 @@ namespace Barotrauma.Networking
|
||||
// When this is set to true, we are approved and ready to go
|
||||
bool CanStart = false;
|
||||
|
||||
DateTime timeOut = DateTime.Now + new TimeSpan(0,0,15);
|
||||
DateTime timeOut = DateTime.Now + new TimeSpan(0,0,20);
|
||||
|
||||
// Loop until we are approved
|
||||
while (!CanStart && !connectCanceled)
|
||||
@@ -247,9 +247,9 @@ namespace Barotrauma.Networking
|
||||
}
|
||||
break;
|
||||
case NetIncomingMessageType.StatusChanged:
|
||||
NetConnectionStatus connectionStatus = (NetConnectionStatus)inc.ReadByte();
|
||||
Debug.WriteLine(connectionStatus);
|
||||
DebugConsole.NewMessage("Connection status changed: " + client.ConnectionStatus.ToString(), Color.Orange);
|
||||
|
||||
NetConnectionStatus connectionStatus = (NetConnectionStatus)inc.ReadByte();
|
||||
if (connectionStatus == NetConnectionStatus.Disconnected)
|
||||
{
|
||||
string denyMessage = inc.ReadString();
|
||||
@@ -284,6 +284,9 @@ namespace Barotrauma.Networking
|
||||
if (client.ConnectionStatus != NetConnectionStatus.Connected)
|
||||
{
|
||||
var reconnect = new GUIMessageBox("CONNECTION FAILED", "Failed to connect to server.", new string[] { "Retry", "Cancel" });
|
||||
|
||||
DebugConsole.NewMessage("Failed to connect to server - connection status: "+client.ConnectionStatus.ToString(), Color.Orange);
|
||||
|
||||
reconnect.Buttons[0].OnClicked += RetryConnection;
|
||||
reconnect.Buttons[0].OnClicked += reconnect.Close;
|
||||
reconnect.Buttons[1].OnClicked += SelectMainMenu;
|
||||
@@ -412,7 +415,7 @@ namespace Barotrauma.Networking
|
||||
case (byte)PacketTypes.StartGame:
|
||||
if (gameStarted) continue;
|
||||
|
||||
GameMain.ShowLoading(StartGame(inc));
|
||||
GameMain.ShowLoading(StartGame(inc), false);
|
||||
|
||||
break;
|
||||
case (byte)PacketTypes.EndGame:
|
||||
|
||||
@@ -248,6 +248,7 @@ namespace Barotrauma.Networking
|
||||
{
|
||||
EndButtonHit(null, null);
|
||||
AutoRestartTimer = 20.0f;
|
||||
UpdateNetLobby(null,null);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -705,7 +706,7 @@ namespace Barotrauma.Networking
|
||||
return false;
|
||||
}
|
||||
|
||||
GameMain.ShowLoading(StartGame(selectedSub));
|
||||
GameMain.ShowLoading(StartGame(selectedSub), false);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -19,14 +19,23 @@ namespace Barotrauma.Networking.ReliableMessages
|
||||
receiver = new ReliableReceiver(host);
|
||||
}
|
||||
|
||||
public ReliableMessage CreateMessage(int lengthBytes = 0)
|
||||
public ReliableMessage CreateMessage()
|
||||
{
|
||||
return sender.CreateMessage();
|
||||
}
|
||||
|
||||
public void SendMessage(ReliableMessage message, NetConnection receiver)
|
||||
{
|
||||
sender.SendMessage(message, receiver);
|
||||
try
|
||||
{
|
||||
sender.SendMessage(message, receiver);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
#if DEBUG
|
||||
DebugConsole.ThrowError("Sending a reliable message failed", e);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
public void HandleResendRequest(NetIncomingMessage inc)
|
||||
@@ -348,27 +357,34 @@ namespace Barotrauma.Networking.ReliableMessages
|
||||
return;
|
||||
}
|
||||
|
||||
Debug.WriteLine("Received ack message: " + messageId + ", need to rerequest messages");
|
||||
Debug.WriteLine("Received ack message: " + messageId + ", need to rerequest messages (last id: "+lastMessageID+")");
|
||||
|
||||
if (lastMessageID > ushort.MaxValue / 2 && messageId < short.MaxValue / 2)
|
||||
{
|
||||
for (ushort i = (ushort)Math.Min((int)lastMessageID + 1, ushort.MaxValue); i <= ushort.MaxValue; i++)
|
||||
{
|
||||
if (i == ushort.MaxValue && lastMessageID == ushort.MaxValue) break;
|
||||
if (!missingMessages.ContainsKey(i)) missingMessages.Add(i, new MissingMessage(i));
|
||||
QueueMissingMessage(i);
|
||||
if (i == ushort.MaxValue) break;
|
||||
}
|
||||
|
||||
for (ushort i = 1; i < messageId; i++)
|
||||
{
|
||||
if (!missingMessages.ContainsKey(i)) missingMessages.Add(i, new MissingMessage(i));
|
||||
QueueMissingMessage(i);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//we already wrapped around but message hasn't, so it's an old message
|
||||
if (lastMessageID < ushort.MaxValue / 2 && messageId > ushort.MaxValue / 2)
|
||||
{
|
||||
Debug.WriteLine("old already received message, ignore");
|
||||
return;
|
||||
}
|
||||
|
||||
for (ushort i = (ushort)Math.Min((int)lastMessageID+1, ushort.MaxValue); i <= messageId; i++)
|
||||
{
|
||||
if (!missingMessages.ContainsKey(i)) missingMessages.Add(i, new MissingMessage(i));
|
||||
QueueMissingMessage(i);
|
||||
if (i == ushort.MaxValue) break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user