63 lines
2.5 KiB
C#
63 lines
2.5 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;
|
|
case PacketType.DisconnectPlayer:
|
|
packet = JsonConvert.DeserializeObject<DisconnectPacket>(json);
|
|
break;
|
|
case PacketType.Vote:
|
|
packet = JsonConvert.DeserializeObject<VotePacket>(json);
|
|
break;
|
|
}
|
|
|
|
return packet;
|
|
}
|
|
}
|
|
} |