diff options
Diffstat (limited to 'src/net/eathena')
-rw-r--r-- | src/net/eathena/buysellhandler.cpp | 55 | ||||
-rw-r--r-- | src/net/eathena/buysellhandler.h | 5 | ||||
-rw-r--r-- | src/net/eathena/buysellrecv.cpp | 87 | ||||
-rw-r--r-- | src/net/eathena/buysellrecv.h | 39 |
4 files changed, 135 insertions, 51 deletions
diff --git a/src/net/eathena/buysellhandler.cpp b/src/net/eathena/buysellhandler.cpp index 6e145a171..d5027335a 100644 --- a/src/net/eathena/buysellhandler.cpp +++ b/src/net/eathena/buysellhandler.cpp @@ -32,6 +32,9 @@ #include "gui/widgets/createwidget.h" +#include "net/ea/buysellrecv.h" + +#include "net/eathena/buysellrecv.h" #include "net/eathena/messageout.h" #include "net/eathena/protocol.h" @@ -57,7 +60,7 @@ BuySellHandler::BuySellHandler() : }; handledMessages = _messages; buySellHandler = this; - mBuyDialog = nullptr; + Ea::BuySellRecv::mBuyDialog = nullptr; } void BuySellHandler::handleMessage(Net::MessageIn &msg) @@ -65,23 +68,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: @@ -89,46 +92,6 @@ void BuySellHandler::handleMessage(Net::MessageIn &msg) } } -void BuySellHandler::processNpcBuy(Net::MessageIn &msg) -{ - msg.readInt16("len"); - const int sz = 11; - const int n_items = (msg.getLength() - 4) / sz; - CREATEWIDGETV(mBuyDialog, BuyDialog, mNpcId); - mBuyDialog->setMoney(PlayerInfo::getAttribute(Attributes::MONEY)); - - for (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 A_UNUSED) const { } diff --git a/src/net/eathena/buysellhandler.h b/src/net/eathena/buysellhandler.h index 5a967a55f..c2a94d7a5 100644 --- a/src/net/eathena/buysellhandler.h +++ b/src/net/eathena/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 EAthena diff --git a/src/net/eathena/buysellrecv.cpp b/src/net/eathena/buysellrecv.cpp new file mode 100644 index 000000000..23786a435 --- /dev/null +++ b/src/net/eathena/buysellrecv.cpp @@ -0,0 +1,87 @@ +/* + * 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/eathena/buysellrecv.h" + +#include "notifymanager.h" + +#include "being/playerinfo.h" + +#include "enums/resources/notifytypes.h" + +#include "gui/windows/buydialog.h" + +#include "gui/widgets/createwidget.h" + +#include "net/ea/buysellrecv.h" + +#include "net/eathena/messageout.h" +#include "net/eathena/protocol.h" + +#include "debug.h" + +namespace EAthena +{ + +void BuySellRecv::processNpcBuy(Net::MessageIn &msg) +{ + msg.readInt16("len"); + const int sz = 11; + const int n_items = (msg.getLength() - 4) / sz; + CREATEWIDGETV(Ea::BuySellRecv::mBuyDialog, BuyDialog, + Ea::BuySellRecv::mNpcId); + Ea::BuySellRecv::mBuyDialog->setMoney( + PlayerInfo::getAttribute(Attributes::MONEY)); + + for (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 EAthena diff --git a/src/net/eathena/buysellrecv.h b/src/net/eathena/buysellrecv.h new file mode 100644 index 000000000..6c524572f --- /dev/null +++ b/src/net/eathena/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_EATHENA_BUYSELLRECV_H +#define NET_EATHENA_BUYSELLRECV_H + +#include "net/ea/buysellhandler.h" + +#include "net/eathena/messagehandler.h" + +namespace EAthena +{ + namespace BuySellRecv + { + void processNpcBuy(Net::MessageIn &msg); + void processNpcSellResponse(Net::MessageIn &msg); + } // namespace BuySellRecv +} // namespace EAthena + +#endif // NET_EATHENA_BUYSELLRECV_H |