Protocol: add defeat state bitfields to Sync packets
Signed-off-by: Paul Chote <pchote@users.noreply.github.com>
This commit is contained in:
@@ -31,13 +31,14 @@ namespace OpenRA.Network
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static byte[] SerializeSync(int sync)
|
||||
public static byte[] SerializeSync(int sync, ulong defeatState)
|
||||
{
|
||||
var ms = new MemoryStream(1 + 4);
|
||||
var ms = new MemoryStream(1 + 4 + 8);
|
||||
using (var writer = new BinaryWriter(ms))
|
||||
{
|
||||
writer.Write((byte)OrderType.SyncHash);
|
||||
writer.Write(sync);
|
||||
writer.Write(defeatState);
|
||||
}
|
||||
|
||||
return ms.GetBuffer();
|
||||
|
||||
@@ -192,9 +192,16 @@ namespace OpenRA.Network
|
||||
UnitOrders.ProcessOrder(this, World, order.Client, order.Order);
|
||||
|
||||
if (NetFrameNumber + FramesAhead >= GameSaveLastSyncFrame)
|
||||
Connection.SendSync(NetFrameNumber, OrderIO.SerializeSync(World.SyncHash()));
|
||||
{
|
||||
var defeatState = 0UL;
|
||||
for (var i = 0; i < World.Players.Length; i++)
|
||||
if (World.Players[i].WinState == WinState.Lost)
|
||||
defeatState |= 1UL << i;
|
||||
|
||||
Connection.SendSync(NetFrameNumber, OrderIO.SerializeSync(World.SyncHash(), defeatState));
|
||||
}
|
||||
else
|
||||
Connection.SendSync(NetFrameNumber, OrderIO.SerializeSync(0));
|
||||
Connection.SendSync(NetFrameNumber, OrderIO.SerializeSync(0, 0));
|
||||
|
||||
if (generateSyncReport)
|
||||
using (new PerfSample("sync_report"))
|
||||
|
||||
Reference in New Issue
Block a user