diff --git a/OpenRA.Game/Network/GameSave.cs b/OpenRA.Game/Network/GameSave.cs index 33c650bf23..cf6cb1a833 100644 --- a/OpenRA.Game/Network/GameSave.cs +++ b/OpenRA.Game/Network/GameSave.cs @@ -188,7 +188,7 @@ namespace OpenRA.Network public void DispatchOrders(Connection conn, int frame, byte[] data) { // Sync packet - we only care about the last value - if (data.Length > 0 && data[0] == 0x65 && frame > LastSyncFrame) + if (data.Length > 0 && data[0] == (byte)OrderType.SyncHash && frame > LastSyncFrame) { LastSyncFrame = frame; lastSyncPacket = data; diff --git a/OpenRA.Game/Network/Order.cs b/OpenRA.Game/Network/Order.cs index f8e3842d20..d38a8796fd 100644 --- a/OpenRA.Game/Network/Order.cs +++ b/OpenRA.Game/Network/Order.cs @@ -16,6 +16,13 @@ using OpenRA.Traits; namespace OpenRA { + public enum OrderType : byte + { + SyncHash = 0x65, + Disconnect = 0xBF, + Fields = 0xFF + } + [Flags] enum OrderFields : byte { @@ -68,10 +75,10 @@ namespace OpenRA { try { - var magic = r.ReadByte(); - switch (magic) + var type = (OrderType)r.ReadByte(); + switch (type) { - case 0xFF: + case OrderType.Fields: { var order = r.ReadString(); var flags = (OrderFields)r.ReadByte(); @@ -152,7 +159,7 @@ namespace OpenRA default: { - Log.Write("debug", "Received unknown order with magic {0}", magic); + Log.Write("debug", "Received unknown order with type {0}", type); return null; } } @@ -236,7 +243,7 @@ namespace OpenRA var ret = new MemoryStream(minLength); var w = new BinaryWriter(ret); - w.Write((byte)0xFF); + w.Write((byte)OrderType.Fields); w.Write(OrderString); var fields = OrderFields.None; diff --git a/OpenRA.Game/Network/OrderIO.cs b/OpenRA.Game/Network/OrderIO.cs index 895627f5ef..58d4bbafc5 100644 --- a/OpenRA.Game/Network/OrderIO.cs +++ b/OpenRA.Game/Network/OrderIO.cs @@ -36,7 +36,7 @@ namespace OpenRA.Network var ms = new MemoryStream(1 + 4); using (var writer = new BinaryWriter(ms)) { - writer.Write((byte)0x65); + writer.Write((byte)OrderType.SyncHash); writer.Write(sync); } diff --git a/OpenRA.Game/Network/OrderManager.cs b/OpenRA.Game/Network/OrderManager.cs index 73f2313fcb..60e349e997 100644 --- a/OpenRA.Game/Network/OrderManager.cs +++ b/OpenRA.Game/Network/OrderManager.cs @@ -123,9 +123,9 @@ namespace OpenRA.Network (clientId, packet) => { var frame = BitConverter.ToInt32(packet, 0); - if (packet.Length == 5 && packet[4] == 0xBF) + if (packet.Length == 5 && packet[4] == (byte)OrderType.Disconnect) frameData.ClientQuit(clientId, frame); - else if (packet.Length >= 5 && packet[4] == 0x65) + else if (packet.Length >= 5 && packet[4] == (byte)OrderType.SyncHash) CheckSync(packet); else if (frame == 0) immediatePackets.Add(Pair.New(clientId, packet)); diff --git a/OpenRA.Game/Network/ReplayConnection.cs b/OpenRA.Game/Network/ReplayConnection.cs index f0c5b16c91..a1bee68e72 100644 --- a/OpenRA.Game/Network/ReplayConnection.cs +++ b/OpenRA.Game/Network/ReplayConnection.cs @@ -65,9 +65,9 @@ namespace OpenRA.Network (!lastClientsFrame.ContainsKey(client) || frame > lastClientsFrame[client])) lastClientsFrame[client] = frame; - if (packet.Length == 5 && packet[4] == 0xBF) + if (packet.Length == 5 && packet[4] == (byte)OrderType.Disconnect) continue; // disconnect - else if (packet.Length >= 5 && packet[4] == 0x65) + else if (packet.Length >= 5 && packet[4] == (byte)OrderType.SyncHash) continue; // sync else if (frame == 0) { @@ -110,7 +110,7 @@ namespace OpenRA.Network continue; var packet = tmpPacketPair.Second; - if (packet.Length == 5 && packet[4] == 0xBF) + if (packet.Length == 5 && packet[4] == (byte)OrderType.Disconnect) { var lastClientFrame = lastClientsFrame[client]; var lastFramePacket = BitConverter.GetBytes(lastClientFrame); diff --git a/OpenRA.Game/Network/ReplayRecorder.cs b/OpenRA.Game/Network/ReplayRecorder.cs index abf011b58f..5cb713356e 100644 --- a/OpenRA.Game/Network/ReplayRecorder.cs +++ b/OpenRA.Game/Network/ReplayRecorder.cs @@ -25,9 +25,9 @@ namespace OpenRA.Network static bool IsGameStart(byte[] data) { - if (data.Length == 5 && data[4] == 0xbf) + if (data.Length == 5 && data[4] == (byte)OrderType.Disconnect) return false; - if (data.Length >= 5 && data[4] == 0x65) + if (data.Length >= 5 && data[4] == (byte)OrderType.SyncHash) return false; var frame = BitConverter.ToInt32(data, 0); diff --git a/OpenRA.Game/Server/Server.cs b/OpenRA.Game/Server/Server.cs index 29a7857d5a..f54729eb1a 100644 --- a/OpenRA.Game/Server/Server.cs +++ b/OpenRA.Game/Server/Server.cs @@ -834,7 +834,7 @@ namespace OpenRA.Server } } - DispatchOrders(toDrop, toDrop.MostRecentFrame, new byte[] { 0xbf }); + DispatchOrders(toDrop, toDrop.MostRecentFrame, new[] { (byte)OrderType.Disconnect }); // All clients have left: clean up if (!Conns.Any()) @@ -944,7 +944,7 @@ namespace OpenRA.Server foreach (var c in Conns) foreach (var d in Conns) - DispatchOrdersToClient(c, d.PlayerIndex, 0x7FFFFFFF, new byte[] { 0xBF }); + DispatchOrdersToClient(c, d.PlayerIndex, 0x7FFFFFFF, new[] { (byte)OrderType.Disconnect }); if (GameSave == null && LobbyInfo.GlobalSettings.GameSavesEnabled) GameSave = new GameSave();