diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-08-24 22:18:54 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-08-24 22:18:54 +0300 |
commit | 7ac081450de48581d6141c90f504130c42cb5341 (patch) | |
tree | f9d3f13e38621553ac72566405801db1744cd3bc /src/net/tmwa | |
parent | 699835e4664fd4e22d7178b40897e0fd4b366a93 (diff) | |
download | mv-7ac081450de48581d6141c90f504130c42cb5341.tar.gz mv-7ac081450de48581d6141c90f504130c42cb5341.tar.bz2 mv-7ac081450de48581d6141c90f504130c42cb5341.tar.xz mv-7ac081450de48581d6141c90f504130c42cb5341.zip |
Move receive code from buysellhandler into separate file.
Diffstat (limited to 'src/net/tmwa')
-rw-r--r-- | src/net/tmwa/buysellhandler.cpp | 54 | ||||
-rw-r--r-- | src/net/tmwa/buysellhandler.h | 5 | ||||
-rw-r--r-- | src/net/tmwa/buysellrecv.cpp | 92 | ||||
-rw-r--r-- | src/net/tmwa/buysellrecv.h | 39 |
4 files changed, 140 insertions, 50 deletions
diff --git a/src/net/tmwa/buysellhandler.cpp b/src/net/tmwa/buysellhandler.cpp index e41b1580e..1d15f4ad7 100644 --- a/src/net/tmwa/buysellhandler.cpp +++ b/src/net/tmwa/buysellhandler.cpp @@ -37,6 +37,9 @@ #include "net/chathandler.h" +#include "net/ea/buysellrecv.h" + +#include "net/tmwa/buysellrecv.h" #include "net/tmwa/protocol.h" #include "utils/timer.h" @@ -63,7 +66,7 @@ BuySellHandler::BuySellHandler() : }; handledMessages = _messages; buySellHandler = this; - mBuyDialog = nullptr; + Ea::BuySellRecv::mBuyDialog = nullptr; } void BuySellHandler::handleMessage(Net::MessageIn &msg) @@ -72,23 +75,23 @@ void BuySellHandler::handleMessage(Net::MessageIn &msg) switch (msg.getId()) { case SMSG_NPC_BUY_SELL_CHOICE: - processNpcBuySellChoice(msg); + Ea::BuySellRecv::processNpcBuySellChoice(msg); break; case SMSG_NPC_BUY: - processNpcBuy(msg); + BuySellRecv::processNpcBuy(msg); break; case SMSG_NPC_SELL: - processNpcSell(msg); + Ea::BuySellRecv::processNpcSell(msg); break; case SMSG_NPC_BUY_RESPONSE: - processNpcBuyResponse(msg); + Ea::BuySellRecv::processNpcBuyResponse(msg); break; case SMSG_NPC_SELL_RESPONSE: - processNpcSellResponse(msg); + BuySellRecv::processNpcSellResponse(msg); break; default: @@ -97,45 +100,6 @@ void BuySellHandler::handleMessage(Net::MessageIn &msg) BLOCK_END("BuySellHandler::handleMessage") } -void BuySellHandler::processNpcBuy(Net::MessageIn &msg) -{ - msg.readInt16("len"); - const unsigned int n_items = (msg.getLength() - 4U) / 11; - CREATEWIDGETV(mBuyDialog, BuyDialog, mNpcId); - mBuyDialog->setMoney(PlayerInfo::getAttribute(Attributes::MONEY)); - - for (unsigned int k = 0; k < n_items; k++) - { - const int value = msg.readInt32("price"); - msg.readInt32("dc value?"); - const int type = msg.readUInt8("type"); - const int itemId = msg.readInt16("item id"); - const ItemColor color = ItemColor_one; - mBuyDialog->addItem(itemId, type, color, 0, value); - } - mBuyDialog->sort(); -} - -void BuySellHandler::processNpcSellResponse(Net::MessageIn &msg) -{ - switch (msg.readUInt8("result")) - { - case 0: - NotifyManager::notify(NotifyTypes::SOLD); - break; - case 1: - default: - NotifyManager::notify(NotifyTypes::SELL_FAILED); - break; - case 2: - NotifyManager::notify(NotifyTypes::SELL_TRADE_FAILED); - break; - case 3: - NotifyManager::notify(NotifyTypes::SELL_UNSELLABLE_FAILED); - break; - } -} - void BuySellHandler::requestSellList(const std::string &nick) const { if (nick.empty() != 0 || !shopWindow) diff --git a/src/net/tmwa/buysellhandler.h b/src/net/tmwa/buysellhandler.h index 6547ef05b..d02497a1d 100644 --- a/src/net/tmwa/buysellhandler.h +++ b/src/net/tmwa/buysellhandler.h @@ -54,11 +54,6 @@ class BuySellHandler final : public MessageHandler, public Ea::BuySellHandler const int amount) const override final; void close() const override final; - - protected: - static void processNpcBuy(Net::MessageIn &msg); - - static void processNpcSellResponse(Net::MessageIn &msg); }; } // namespace TmwAthena diff --git a/src/net/tmwa/buysellrecv.cpp b/src/net/tmwa/buysellrecv.cpp new file mode 100644 index 000000000..78f55b378 --- /dev/null +++ b/src/net/tmwa/buysellrecv.cpp @@ -0,0 +1,92 @@ +/* + * The ManaPlus Client + * Copyright (C) 2004-2009 The Mana World Development Team + * Copyright (C) 2009-2010 The Mana Developers + * Copyright (C) 2011-2015 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "net/tmwa/buysellrecv.h" + +#include "configuration.h" +#include "notifymanager.h" + +#include "being/playerinfo.h" + +#include "enums/resources/notifytypes.h" + +#include "gui/windows/buydialog.h" +#include "gui/windows/chatwindow.h" +#include "gui/windows/shopwindow.h" + +#include "gui/widgets/createwidget.h" + +#include "net/chathandler.h" + +#include "net/ea/buysellrecv.h" + +#include "net/tmwa/protocol.h" + +#include "utils/timer.h" + +#include "debug.h" + +namespace TmwAthena +{ + +void BuySellRecv::processNpcBuy(Net::MessageIn &msg) +{ + msg.readInt16("len"); + const unsigned int n_items = (msg.getLength() - 4U) / 11; + CREATEWIDGETV(Ea::BuySellRecv::mBuyDialog, BuyDialog, + Ea::BuySellRecv::mNpcId); + Ea::BuySellRecv::mBuyDialog->setMoney( + PlayerInfo::getAttribute(Attributes::MONEY)); + + for (unsigned int k = 0; k < n_items; k++) + { + const int value = msg.readInt32("price"); + msg.readInt32("dc value?"); + const int type = msg.readUInt8("type"); + const int itemId = msg.readInt16("item id"); + const ItemColor color = ItemColor_one; + Ea::BuySellRecv::mBuyDialog->addItem(itemId, type, color, 0, value); + } + Ea::BuySellRecv::mBuyDialog->sort(); +} + +void BuySellRecv::processNpcSellResponse(Net::MessageIn &msg) +{ + switch (msg.readUInt8("result")) + { + case 0: + NotifyManager::notify(NotifyTypes::SOLD); + break; + case 1: + default: + NotifyManager::notify(NotifyTypes::SELL_FAILED); + break; + case 2: + NotifyManager::notify(NotifyTypes::SELL_TRADE_FAILED); + break; + case 3: + NotifyManager::notify(NotifyTypes::SELL_UNSELLABLE_FAILED); + break; + } +} + +} // namespace TmwAthena diff --git a/src/net/tmwa/buysellrecv.h b/src/net/tmwa/buysellrecv.h new file mode 100644 index 000000000..577f481e8 --- /dev/null +++ b/src/net/tmwa/buysellrecv.h @@ -0,0 +1,39 @@ +/* + * The ManaPlus Client + * Copyright (C) 2004-2009 The Mana World Development Team + * Copyright (C) 2009-2010 The Mana Developers + * Copyright (C) 2011-2015 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef NET_TMWA_BUYSELLRECV_H +#define NET_TMWA_BUYSELLRECV_H + +#include "net/ea/buysellhandler.h" + +#include "net/tmwa/messagehandler.h" + +namespace TmwAthena +{ + namespace BuySellRecv + { + void processNpcBuy(Net::MessageIn &msg); + void processNpcSellResponse(Net::MessageIn &msg); + } // namespace BuySellRecv +} // namespace TmwAthena + +#endif // NET_TMWA_BUYSELLRECV_H |