diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-04-28 00:56:19 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-04-29 14:10:27 +0300 |
commit | 65d433a88afd4106e86c19eb438efbe1a1925de8 (patch) | |
tree | 86fa7547e801e7ced3cbfce7a247029db89c5490 /src | |
parent | 2761e46993448da413c9da193f0bbc1c89fc1a85 (diff) | |
download | manaplus-65d433a88afd4106e86c19eb438efbe1a1925de8.tar.gz manaplus-65d433a88afd4106e86c19eb438efbe1a1925de8.tar.bz2 manaplus-65d433a88afd4106e86c19eb438efbe1a1925de8.tar.xz manaplus-65d433a88afd4106e86c19eb438efbe1a1925de8.zip |
eathena: impliment packet SMSG_MAIL_READ_MAIL.
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/mailmessage.h | 21 | ||||
-rw-r--r-- | src/net/eathena/mailhandler.cpp | 31 |
2 files changed, 36 insertions, 16 deletions
diff --git a/src/gui/mailmessage.h b/src/gui/mailmessage.h index 0558448b3..ce121963f 100644 --- a/src/gui/mailmessage.h +++ b/src/gui/mailmessage.h @@ -29,10 +29,20 @@ struct MailMessage final title(), sender(), strTime(), + text(), id(0), time(0), - unread(false) + money(0), + itemAmount(0), + itemId(0), + itemType(0), + itemAttribute(0U), + itemRefine(0U), + unread(false), + itemIdentify(false) { + for (int f = 0; f < 4; f ++) + card[f] = 0; } A_DELETE_COPY(MailMessage) @@ -40,8 +50,17 @@ struct MailMessage final std::string title; std::string sender; std::string strTime; + std::string text; + uint16_t card[4]; int id; int time; + int money; + int itemAmount; + int itemId; + int itemType; + uint8_t itemAttribute; + uint8_t itemRefine; bool unread; + bool itemIdentify; }; #endif // GUI_MAILMESSAGE_H diff --git a/src/net/eathena/mailhandler.cpp b/src/net/eathena/mailhandler.cpp index 1a24fcc86..f49cc8a5e 100644 --- a/src/net/eathena/mailhandler.cpp +++ b/src/net/eathena/mailhandler.cpp @@ -148,27 +148,28 @@ void MailHandler::processMailList(Net::MessageIn &msg) void MailHandler::processReadMail(Net::MessageIn &msg) { - UNIMPLIMENTEDPACKET; - const int sz = msg.readInt16("len") - 101; - msg.readInt32("message id"); - msg.readString(40, "title"); - msg.readString(24, "sender name"); - msg.readInt16("unused?"); + MailMessage *mail = new MailMessage; + mail->id = msg.readInt32("message id"); + mail->title = msg.readString(40, "title"); + mail->sender = msg.readString(24, "sender name"); msg.readInt32("unused"); - msg.readInt32("money"); - msg.readInt32("item amount"); - msg.readInt16("item id"); - msg.readInt16("item type"); - msg.readUInt8("identify"); - msg.readUInt8("attribute"); - msg.readUInt8("refine"); + mail->money = msg.readInt32("money"); + mail->itemAmount = msg.readInt32("item amount"); + mail->itemId = msg.readInt16("item id"); + mail->itemType = msg.readInt16("item type"); + mail->itemIdentify = msg.readUInt8("identify"); + mail->itemAttribute = msg.readUInt8("attribute"); + mail->itemRefine = msg.readUInt8("refine"); for (int f = 0; f < 4; f ++) - msg.readInt16("card"); + mail->card[f] = msg.readInt16("card"); const int msgLen = msg.readUInt8("msg len"); if (msgLen != sz) logger->log("error: wrong message size"); - msg.readString(sz, "message"); + mail->text = msg.readString(sz, "message"); + msg.readUInt8("zero"); + mail->strTime = timeToStr(mail->time); + mailWindow->showMessage(mail); } void MailHandler::processGetAttachment(Net::MessageIn &msg) |