From 7a94bb34d78f88c93e280da04dd8542b26686ed1 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 26 Aug 2017 20:06:09 +0300 Subject: Add support for getting attached money from mail message. --- src/enums/resources/notifytypes.h | 3 +++ src/gui/windows/mailviewwindow.cpp | 25 +++++++++++++++++++++++++ src/gui/windows/mailviewwindow.h | 2 ++ src/net/eathena/mail2recv.cpp | 27 ++++++++++++++++++++++++--- src/resources/notifications.h | 12 ++++++++++++ 5 files changed, 66 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/enums/resources/notifytypes.h b/src/enums/resources/notifytypes.h index 6513c4f4f..1c2dee843 100644 --- a/src/enums/resources/notifytypes.h +++ b/src/enums/resources/notifytypes.h @@ -245,6 +245,9 @@ namespace NotifyTypes MAIL_SEND_ITEM_ERROR, MAIL_SEND_RECEIVER_ERROR, MAIL_GET_ATTACH_FULL_ERROR, + MAIL_GET_MONEY_OK, + MAIL_GET_MONEY_ERROR, + MAIL_GET_MONEY_LIMIT_ERROR, TYPE_END }; diff --git a/src/gui/windows/mailviewwindow.cpp b/src/gui/windows/mailviewwindow.cpp index b250fad43..15c28480c 100644 --- a/src/gui/windows/mailviewwindow.cpp +++ b/src/gui/windows/mailviewwindow.cpp @@ -251,3 +251,28 @@ void MailViewWindow::removeItems(const int64_t mailId) if (mailWindow) mailWindow->refreshMailNames(); } + +void MailViewWindow::removeMoney(const int64_t mailId) +{ + if (mailId != mMessage->id) + return; + mMessage->type = static_cast( + CAST_S32(mMessage->type) | CAST_S32(MailMessageType::Money)); + mMessage->type = static_cast( + CAST_S32(mMessage->type) ^ CAST_S32(MailMessageType::Money)); + + mMessage->money = 0; + + if (mMoneyLabel == nullptr) + return; + + if (mGetMoneyButton) + mGetMoneyButton->setVisible(Visible_false); + + mMoneyLabel->setCaption(strprintf("%s %d", + // TRANSLATORS: mail view window label + _("Money:"), + 0)); + if (mailWindow) + mailWindow->refreshMailNames(); +} diff --git a/src/gui/windows/mailviewwindow.h b/src/gui/windows/mailviewwindow.h index 13ad25676..c3f691629 100644 --- a/src/gui/windows/mailviewwindow.h +++ b/src/gui/windows/mailviewwindow.h @@ -53,6 +53,8 @@ class MailViewWindow final : public Window, void removeItems(const int64_t mailId); + void removeMoney(const int64_t mailId); + private: void updateAttachButton(); diff --git a/src/net/eathena/mail2recv.cpp b/src/net/eathena/mail2recv.cpp index 392e679d6..0ed6f44f0 100644 --- a/src/net/eathena/mail2recv.cpp +++ b/src/net/eathena/mail2recv.cpp @@ -459,10 +459,31 @@ void Mail2Recv::processMailDelete(Net::MessageIn &msg) void Mail2Recv::processRequestMoney(Net::MessageIn &msg) { - UNIMPLEMENTEDPACKET; - msg.readInt64("mail id"); + const int64_t mailId = msg.readInt64("mail id"); msg.readUInt8("open type"); - msg.readUInt8("result"); + const int res = msg.readUInt8("result"); + switch (res) + { + case 0: + NotifyManager::notify( + NotifyTypes::MAIL_GET_MONEY_OK); + if (mailViewWindow) + mailViewWindow->removeMoney(mailId); + break; + case 1: + NotifyManager::notify( + NotifyTypes::MAIL_GET_MONEY_ERROR); + break; + case 2: + NotifyManager::notify( + NotifyTypes::MAIL_GET_MONEY_LIMIT_ERROR); + break; + default: + UNIMPLEMENTEDPACKETFIELD(res); + NotifyManager::notify( + NotifyTypes::MAIL_GET_MONEY_ERROR); + break; + } } void Mail2Recv::processRequestItems(Net::MessageIn &msg) diff --git a/src/resources/notifications.h b/src/resources/notifications.h index 08526bb81..84a738c79 100644 --- a/src/resources/notifications.h +++ b/src/resources/notifications.h @@ -897,6 +897,18 @@ namespace NotifyManager // TRANSLATORS: notification message N_("Error on getting attach. No space or weight too high."), NotifyFlags::EMPTY}, + {"mail get money ok", + // TRANSLATORS: notification message + N_("You got money from mail."), + NotifyFlags::EMPTY}, + {"mail get money error", + // TRANSLATORS: notification message + N_("Error on getting money attach."), + NotifyFlags::EMPTY}, + {"mail get money limit error", + // TRANSLATORS: notification message + N_("Error on getting money attach. Too many money."), + NotifyFlags::EMPTY}, }; } // namespace NotifyManager #endif // RESOURCES_NOTIFICATIONS_H -- cgit v1.2.3-60-g2f50