using System; using System.Collections.Generic; using System.Text; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace MafiaCommon.Packets { public class PacketConverter { public static byte[] toBytes(Packet packet) { return Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(packet)+","); } public static List toPacket(String jsons) { List packets = new List(); jsons = jsons.Substring(0, jsons.Length - 1); jsons = "[" + jsons + "]"; foreach (JObject packet in (JArray) JsonConvert.DeserializeObject(jsons)) { packets.Add(ConvertPacket(packet)); } return packets; } public static Packet ConvertPacket(JObject json) { PacketType packetType = json.GetValue("PacketType") .ToObject(); Packet packet = null; switch (packetType) { case PacketType.ServerShutdown: packet = json.ToObject(); break; case PacketType.Connect: packet = json.ToObject(); break; case PacketType.Welcome: packet = json.ToObject(); break; case PacketType.Disconnect: packet = json.ToObject(); break; case PacketType.PlayerConnected: packet = json.ToObject(); break; case PacketType.PlayerDisconnected: packet = json.ToObject(); break; case PacketType.MessageReceivePacket: packet = json.ToObject(); break; case PacketType.MessageSendPacket: packet = json.ToObject(); break; case PacketType.GameStartPacket: packet = json.ToObject(); break; case PacketType.EndGame: packet = json.ToObject(); break; case PacketType.DisconnectPlayer: packet = json.ToObject(); break; case PacketType.Vote: packet = json.ToObject(); break; case PacketType.GameStateChanged: packet = json.ToObject(); break; } return packet; } } }