using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace OpenRa.Game { static class OrderIO { static void Write(this Stream s, byte[] buf) { s.Write(buf, 0, buf.Length); } public static void WriteFrameData(this Stream s, IEnumerable orders, int frameNumber) { var ms = new MemoryStream(); ms.Write(BitConverter.GetBytes(frameNumber)); foreach (var order in orders) ms.Write(order.Serialize()); s.Write(BitConverter.GetBytes((int)ms.Length)); ms.WriteTo(s); } public static List ToOrderList(this byte[] bytes) { var ms = new MemoryStream(bytes); var reader = new BinaryReader(ms); var ret = new List(); while (ms.Position < ms.Length) ret.Add(Order.Deserialize(reader)); return ret; } } }