using Arrowgene.Ddon.GameServer.Dump; using Arrowgene.Ddon.Server; using Arrowgene.Ddon.Shared.Entity.PacketStructure; using Arrowgene.Logging; using Arrowgene.Ddon.Shared.Model; using System.Linq; namespace Arrowgene.Ddon.GameServer.Handler { public class MailSystemMailGetListDataHandler : GameRequestPacketHandler { private static readonly ServerLogger Logger = LogProvider.Logger(typeof(MailSystemMailGetListDataHandler)); public MailSystemMailGetListDataHandler(DdonGameServer server) : base(server) { } public override S2CMailSystemMailGetListDataRes Handle(GameClient client, C2SMailSystemMailGetListDataReq request) { // var pcap = new S2CMailSystemMailGetListDataRes.Serializer().Read(InGameDump.Dump_85.AsBuffer()); // var pcap = new S2CMailSystemMailGetListDataRes.Serializer().Read(pcap_data); S2CMailSystemMailGetListDataRes result = new S2CMailSystemMailGetListDataRes(); var messages = Server.Database.SelectSystemMailMessages(client.Character.CharacterId); foreach (var message in messages) { byte itemState = (byte) MailItemState.Exist; var attachments = Server.Database.SelectAttachmentsForSystemMail(message.MessageId); if (attachments.Count > 0) { // TODO: Should item state be based on attachment type? itemState = (byte)(attachments.All(x => x.IsReceived) ? MailItemState.Exist : MailItemState.Exist | MailItemState.Item); } result.MailInfo.Add(message.ToCDataMailInfo(itemState)); } return result; } public byte[] pcap_data = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xA8, 0x12, 0x8F, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x44, 0x44, 0x4F, 0x4E, 0xE9, 0x81, 0x8B, 0xE5, 0x96, 0xB6, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0x00, 0x3A, 0xE3, 0x83, 0x89, 0xE3, 0x83, 0xA9, 0xE3, 0x82, 0xB4, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xBA, 0xE3, 0x83, 0x89, 0xE3, 0x82, 0xB0, 0xE3, 0x83, 0x9E, 0x20, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0xA9, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0x92, 0xE3, 0x83, 0x97, 0xE3, 0x83, 0xAC, 0xE3, 0x82, 0xA4, 0xE3, 0x81, 0x8F, 0xE3, 0x81, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xE6, 0xCD, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xA8, 0x12, 0x8E, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x44, 0x44, 0x4F, 0x4E, 0xE9, 0x81, 0x8B, 0xE5, 0x96, 0xB6, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0x00, 0x3A, 0xE3, 0x83, 0x89, 0xE3, 0x83, 0xA9, 0xE3, 0x82, 0xB4, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xBA, 0xE3, 0x83, 0x89, 0xE3, 0x82, 0xB0, 0xE3, 0x83, 0x9E, 0x20, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0xA9, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0x92, 0xE3, 0x83, 0x97, 0xE3, 0x83, 0xAC, 0xE3, 0x82, 0xA4, 0xE3, 0x81, 0x8F, 0xE3, 0x81, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xE6, 0xCD, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xA8, 0x12, 0x8D, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x44, 0x44, 0x4F, 0x4E, 0xE9, 0x81, 0x8B, 0xE5, 0x96, 0xB6, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0x00, 0x3A, 0xE3, 0x83, 0x89, 0xE3, 0x83, 0xA9, 0xE3, 0x82, 0xB4, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xBA, 0xE3, 0x83, 0x89, 0xE3, 0x82, 0xB0, 0xE3, 0x83, 0x9E, 0x20, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0xA9, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0x92, 0xE3, 0x83, 0x97, 0xE3, 0x83, 0xAC, 0xE3, 0x82, 0xA4, 0xE3, 0x81, 0x8F, 0xE3, 0x81, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xE6, 0xCD, 0xE6, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xA8, 0x12, 0x8C, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x44, 0x44, 0x4F, 0x4E, 0xE9, 0x81, 0x8B, 0xE5, 0x96, 0xB6, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0x00, 0x3A, 0xE3, 0x83, 0x89, 0xE3, 0x83, 0xA9, 0xE3, 0x82, 0xB4, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xBA, 0xE3, 0x83, 0x89, 0xE3, 0x82, 0xB0, 0xE3, 0x83, 0x9E, 0x20, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0xA9, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0x92, 0xE3, 0x83, 0x97, 0xE3, 0x83, 0xAC, 0xE3, 0x82, 0xA4, 0xE3, 0x81, 0x8F, 0xE3, 0x81, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xE6, 0xCD, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xA8, 0x12, 0x8B, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x44, 0x44, 0x4F, 0x4E, 0xE9, 0x81, 0x8B, 0xE5, 0x96, 0xB6, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0x00, 0x3A, 0xE3, 0x83, 0x89, 0xE3, 0x83, 0xA9, 0xE3, 0x82, 0xB4, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xBA, 0xE3, 0x83, 0x89, 0xE3, 0x82, 0xB0, 0xE3, 0x83, 0x9E, 0x20, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0xA9, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0x92, 0xE3, 0x83, 0x97, 0xE3, 0x83, 0xAC, 0xE3, 0x82, 0xA4, 0xE3, 0x81, 0x8F, 0xE3, 0x81, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xE6, 0xCD, 0xE1, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x08, 0x00, 0x05, 0x00, 0x04 }; } }