using Arrowgene.Ddon.Shared.Entity; using Arrowgene.Ddon.Shared.Network; using Arrowgene.Logging; namespace Arrowgene.Ddon.Server.Network { public abstract class StructurePacketHandler : PacketHandler where TClient : Client where TReqStruct : class, IPacketStructure, new() { private static readonly ServerLogger Logger = LogProvider.Logger(typeof(StructurePacketHandler)); protected StructurePacketHandler(DdonServer server) : base(server) { // Create a instance to obtain PacketId information. Id = new TReqStruct().Id; #if DEBUG if (!EntitySerializer.Contains(typeof(TReqStruct))) { Logger.Error($"StructurePacketHandler missing serializer for {typeof(TReqStruct).Name}"); } #endif } public override PacketId Id { get; } public abstract void Handle(TClient client, StructurePacket packet); public override void Handle(TClient client, IPacket packet) { Handle(client, new StructurePacket(packet)); } } }