RMafia/MafiaCommon/Packets/PacketConverter.cs

57 lines
2.2 KiB
C#

using System;
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 Packet toPacket(String json)
{
PacketType packetType = ((JObject)JsonConvert.DeserializeObject(json)).GetValue("PacketType").ToObject<PacketType>();
Packet packet = null;
switch (packetType)
{
case PacketType.ServerShutdown:
packet = JsonConvert.DeserializeObject<ServerShutdownPacket>(json);
break;
case PacketType.Connect:
packet = JsonConvert.DeserializeObject<ConnectPacket>(json);
break;
case PacketType.Welcome:
packet = JsonConvert.DeserializeObject<WelcomePacket>(json);
break;
case PacketType.Disconnect:
packet = JsonConvert.DeserializeObject<DisconnectPacket>(json);
break;
case PacketType.PlayerConnected:
packet = JsonConvert.DeserializeObject<PlayerConnectedPacket>(json);
break;
case PacketType.PlayerDisconnected:
packet = JsonConvert.DeserializeObject<PlayerDisconnectedPacket>(json);
break;
case PacketType.MessageReceivePacket:
packet = JsonConvert.DeserializeObject<MessageReceivePacket>(json);
break;
case PacketType.MessageSendPacket:
packet = JsonConvert.DeserializeObject<MessageSendPacket>(json);
break;
case PacketType.GameStartPacket:
packet = JsonConvert.DeserializeObject<GameStartPacket>(json);
break;
case PacketType.EndGame:
packet = JsonConvert.DeserializeObject<EndGamePacket>(json);
break;
}
return packet;
}
}
}