using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace Core { public class EnterRoomResponsePacket : IPacket { public StatusCode Code { get; set; } public EnterRoomResponsePacket(StatusCode code) { Code = code; } public EnterRoomResponsePacket(byte[] buffer) { Code = (StatusCode)IPAddress.NetworkToHostOrder(BitConverter.ToInt32(buffer, 2)); } public byte[] Serialize() { // 2bytes header // data: 2bytes packetType + code byte[] packetType = BitConverter.GetBytes(IPAddress.HostToNetworkOrder((short)PacketType.EnterRoomResponse)); byte[] code = BitConverter.GetBytes(IPAddress.HostToNetworkOrder((int)Code)); short dataSize = (short)(packetType.Length + code.Length); byte[] header = BitConverter.GetBytes(IPAddress.HostToNetworkOrder(dataSize)); byte[] buffer = new byte[2 + dataSize]; int cursor = 0; Array.Copy(header, 0, buffer, cursor, header.Length); cursor += header.Length; Array.Copy(packetType, 0, buffer, cursor, packetType.Length); cursor += packetType.Length; Array.Copy(code, 0, buffer, cursor, code.Length); return buffer; } } }