Extract OrderIO.SerializeOrders helper.
Note: This changes immediate orders to no longer be individually framed in their own packets.
This commit is contained in:
@@ -52,22 +52,12 @@ namespace OpenRA.Network
|
|||||||
|
|
||||||
public virtual void Send(int frame, IEnumerable<Order> orders)
|
public virtual void Send(int frame, IEnumerable<Order> orders)
|
||||||
{
|
{
|
||||||
var ms = new MemoryStream();
|
Send(OrderIO.SerializeOrders(frame, orders));
|
||||||
ms.WriteArray(BitConverter.GetBytes(frame));
|
|
||||||
foreach (var o in orders)
|
|
||||||
ms.WriteArray(o.Serialize());
|
|
||||||
Send(ms.ToArray());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void SendImmediate(IEnumerable<Order> orders)
|
public virtual void SendImmediate(IEnumerable<Order> orders)
|
||||||
{
|
{
|
||||||
foreach (var o in orders)
|
Send(OrderIO.SerializeOrders(0, orders));
|
||||||
{
|
|
||||||
var ms = new MemoryStream();
|
|
||||||
ms.WriteArray(BitConverter.GetBytes(0));
|
|
||||||
ms.WriteArray(o.Serialize());
|
|
||||||
Send(ms.ToArray());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void SendSync(int frame, int syncHash, ulong defeatState)
|
public virtual void SendSync(int frame, int syncHash, ulong defeatState)
|
||||||
|
|||||||
@@ -79,6 +79,15 @@ namespace OpenRA.Network
|
|||||||
return ms.GetBuffer();
|
return ms.GetBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static byte[] SerializeOrders(int frame, IEnumerable<Order> orders)
|
||||||
|
{
|
||||||
|
var ms = new MemoryStream();
|
||||||
|
ms.WriteArray(BitConverter.GetBytes(frame));
|
||||||
|
foreach (var o in orders)
|
||||||
|
ms.WriteArray(o.Serialize());
|
||||||
|
return ms.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
public static bool TryParseDisconnect(byte[] packet, out int clientId)
|
public static bool TryParseDisconnect(byte[] packet, out int clientId)
|
||||||
{
|
{
|
||||||
if (packet.Length == Order.DisconnectOrderLength + 4 && packet[4] == (byte)OrderType.Disconnect)
|
if (packet.Length == Order.DisconnectOrderLength + 4 && packet[4] == (byte)OrderType.Disconnect)
|
||||||
|
|||||||
Reference in New Issue
Block a user