1using Kestrel.Framework.Server;
2using LiteNetLib;
3using LiteNetLib.Utils;
4
5namespace Kestrel.Framework.Networking.Packets;
6
7public enum Packet : byte
8{
9 C2SPlayerLoginRequest = 1,
10 C2SPlayerMove = 2,
11 C2SChunkRequest = 3,
12
13 S2CPlayerLoginSuccess = 127,
14 S2CBroadcastEntityMove = 128,
15 S2CBroadcastEntitySpawn = 129,
16 S2CChunkResponse = 130,
17}
18
19public interface IPacket
20{
21 Packet PacketId { get; }
22 void Serialize(NetDataWriter writer);
23 void Deserialize(NetDataReader reader);
24
25 public static byte[] Serialize(IPacket packet)
26 {
27 NetDataWriter writer = new();
28 writer.Put((byte)packet.PacketId);
29 packet.Serialize(writer);
30 return writer.Data;
31 }
32}