Input syncing between clients, inventory sync bugfix, structure sync bugfix, settings button highlight bugfix, spectating bugfixes, in-game chatbox not visible when joining a server when the round is running
This commit is contained in:
@@ -248,7 +248,7 @@ namespace Barotrauma.Networking
|
||||
|
||||
if (gameStarted && disconnectedClients[i].Character!=null)
|
||||
{
|
||||
disconnectedClients[i].Character.Remove();
|
||||
disconnectedClients[i].Character.Kill(CauseOfDeath.Damage, true);
|
||||
disconnectedClients[i].Character = null;
|
||||
}
|
||||
|
||||
@@ -609,7 +609,7 @@ namespace Barotrauma.Networking
|
||||
{
|
||||
if (NetworkEvent.Events.Count == 0) return;
|
||||
|
||||
List<Client> recipients = ConnectedClients.FindAll(c => c.Character != null);
|
||||
List<Client> recipients = ConnectedClients.FindAll(c => c.Character != null || c.Spectating);
|
||||
|
||||
if (recipients.Count == 0) return;
|
||||
|
||||
@@ -784,6 +784,7 @@ namespace Barotrauma.Networking
|
||||
var messageBox = new GUIMessageBox("The round has ended", endMessage, 400, 300);
|
||||
|
||||
Character.Controlled = null;
|
||||
myCharacter = null;
|
||||
GameMain.GameScreen.Cam.TargetPos = Vector2.Zero;
|
||||
GameMain.LightManager.LosEnabled = false;
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ namespace Barotrauma.Networking
|
||||
public const float IdSendInterval = 0.2f;
|
||||
public const float RerequestInterval = 0.2f;
|
||||
|
||||
public const int ResendAttempts = 8;
|
||||
public const int ReliableMessageBufferSize = 100;
|
||||
public const int ResendAttempts = 10;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,7 +201,7 @@ namespace Barotrauma.Networking
|
||||
}
|
||||
|
||||
|
||||
System.Diagnostics.Debug.WriteLine(e.ToString());
|
||||
//System.Diagnostics.Debug.WriteLine(e.ToString());
|
||||
|
||||
object data;
|
||||
|
||||
|
||||
@@ -229,7 +229,7 @@ namespace Barotrauma.Networking
|
||||
|
||||
public virtual void Draw(Microsoft.Xna.Framework.Graphics.SpriteBatch spriteBatch)
|
||||
{
|
||||
if (!gameStarted && Screen.Selected != GameMain.GameScreen) return;
|
||||
if (!gameStarted || Screen.Selected != GameMain.GameScreen) return;
|
||||
|
||||
inGameHUD.Draw(spriteBatch);
|
||||
}
|
||||
|
||||
@@ -97,14 +97,13 @@ namespace Barotrauma.Networking.ReliableMessages
|
||||
message.Write((byte)PacketTypes.ReliableMessage);
|
||||
message.Write(messageID);
|
||||
|
||||
int bufferSize=100;
|
||||
if (messageBuffer.Count>bufferSize)
|
||||
if (messageBuffer.Count > NetConfig.ReliableMessageBufferSize)
|
||||
{
|
||||
|
||||
int end = messageCount-bufferSize;
|
||||
int start = end - (messageBuffer.Count - bufferSize);
|
||||
|
||||
if (start<=0)
|
||||
int end = messageCount - NetConfig.ReliableMessageBufferSize;
|
||||
int start = end - (messageBuffer.Count - NetConfig.ReliableMessageBufferSize);
|
||||
|
||||
if (start<0)
|
||||
{
|
||||
int wrappedStart = start + ushort.MaxValue;
|
||||
if (wrappedStart==0) wrappedStart = ushort.MaxValue;
|
||||
@@ -119,7 +118,7 @@ namespace Barotrauma.Networking.ReliableMessages
|
||||
}
|
||||
}
|
||||
|
||||
for (ushort i = (ushort)Math.Max(start,1); i <= (ushort)Math.Max(end,1); i++)
|
||||
for (ushort i = (ushort)Math.Max(start,0); i <= (ushort)Math.Max(end,0); i++)
|
||||
{
|
||||
messageBuffer.Remove(i);
|
||||
if (i == ushort.MaxValue) break;
|
||||
@@ -219,12 +218,11 @@ namespace Barotrauma.Networking.ReliableMessages
|
||||
{
|
||||
foreach (var message in missingMessages.Where(m => m.Value.ResendRequestsSent > NetConfig.ResendAttempts).ToList())
|
||||
{
|
||||
Debug.WriteLine("Max rerequest attempts reached on message "+message.Value.ID);
|
||||
missingMessages.Remove(message.Key);
|
||||
}
|
||||
|
||||
int bufferSize = 20;
|
||||
|
||||
while (missingMessageIds.Count>bufferSize)
|
||||
while (missingMessageIds.Count>NetConfig.ReliableMessageBufferSize)
|
||||
{
|
||||
ushort id = missingMessageIds.Dequeue();
|
||||
|
||||
@@ -245,7 +243,8 @@ namespace Barotrauma.Networking.ReliableMessages
|
||||
resendRequest.Write((byte)PacketTypes.ResendRequest);
|
||||
resendRequest.Write(missingMessage.ID);
|
||||
|
||||
receiver.SendMessage(resendRequest, recipient, NetDeliveryMethod.Unreliable);
|
||||
receiver.SendMessage(resendRequest, recipient,
|
||||
missingMessage.ResendRequestsSent==0 ? NetDeliveryMethod.ReliableUnordered : NetDeliveryMethod.Unreliable);
|
||||
|
||||
|
||||
missingMessage.ResendTimer = Math.Max(recipient.AverageRoundtripTime, NetConfig.RerequestInterval);
|
||||
|
||||
Reference in New Issue
Block a user