(f0d812055) v0.9.9.0

This commit is contained in:
Joonas Rikkonen
2020-04-23 19:19:37 +03:00
parent b647059b93
commit ac37a3b0e4
391 changed files with 15054 additions and 5420 deletions
@@ -57,6 +57,12 @@ namespace Barotrauma.Networking
protected set;
}
public bool ForceLocal
{
get;
set;
}
public DateTime LastReadTime
{
get;
@@ -76,7 +82,7 @@ namespace Barotrauma.Networking
QueueID = id;
CanSend = canSend;
CanReceive = canReceive;
LatestBufferID = BUFFER_COUNT-1;
LatestBufferID = BUFFER_COUNT - 1;
firstRead = true;
LastReadTime = DateTime.Now;
@@ -84,7 +90,7 @@ namespace Barotrauma.Networking
public void EnqueueBuffer(int length)
{
if (length > byte.MaxValue) return;
if (length > byte.MaxValue) { return; }
newestBufferInd = (newestBufferInd + 1) % BUFFER_COUNT;
@@ -92,17 +98,18 @@ namespace Barotrauma.Networking
bufferLengths[newestBufferInd] = length;
BufferToQueue.CopyTo(buffers[newestBufferInd], 0);
if ((enqueuedTotalLength+length)>0) LatestBufferID++;
if ((enqueuedTotalLength + length) > 0) { LatestBufferID++; }
}
public void RetrieveBuffer(int id,out int outSize,out byte[] outBuf)
public void RetrieveBuffer(int id, out int outSize, out byte[] outBuf)
{
lock (buffers)
{
if (id >= LatestBufferID - (BUFFER_COUNT - 1) && id <= LatestBufferID)
{
int index = (newestBufferInd - (LatestBufferID - id)); if (index < 0) index += BUFFER_COUNT;
int index = newestBufferInd - (LatestBufferID - id);
if (index < 0) { index += BUFFER_COUNT; }
outSize = bufferLengths[index];
outBuf = buffers[index];
return;
@@ -114,9 +121,10 @@ namespace Barotrauma.Networking
public virtual void Write(IWriteMessage msg)
{
if (!CanSend) throw new Exception("Called Write on a VoipQueue not set up for sending");
if (!CanSend) { throw new Exception("Called Write on a VoipQueue not set up for sending"); }
msg.Write((UInt16)LatestBufferID);
msg.Write(ForceLocal); msg.WritePadBits();
for (int i = 0; i < BUFFER_COUNT; i++)
{
int index = (newestBufferInd + i + 1) % BUFFER_COUNT;
@@ -126,13 +134,15 @@ namespace Barotrauma.Networking
}
}
public virtual bool Read(IReadMessage msg)
public virtual bool Read(IReadMessage msg, bool discardData = false)
{
if (!CanReceive) throw new Exception("Called Read on a VoipQueue not set up for receiving");
if (!CanReceive) { throw new Exception("Called Read on a VoipQueue not set up for receiving"); }
UInt16 incLatestBufferID = msg.ReadUInt16();
if (firstRead || NetIdUtils.IdMoreRecent(incLatestBufferID,LatestBufferID))
if ((firstRead || NetIdUtils.IdMoreRecent(incLatestBufferID, LatestBufferID)) && !discardData)
{
ForceLocal = msg.ReadBoolean(); msg.ReadPadBits();
firstRead = false;
for (int i = 0; i < BUFFER_COUNT; i++)
{
@@ -146,6 +156,7 @@ namespace Barotrauma.Networking
}
else
{
msg.ReadBoolean(); msg.ReadPadBits();
for (int i = 0; i < BUFFER_COUNT; i++)
{
byte len = msg.ReadByte();