diff options
Diffstat (limited to 'src/net/ea/buysellhandler.cpp')
-rw-r--r-- | src/net/ea/buysellhandler.cpp | 77 |
1 files changed, 3 insertions, 74 deletions
diff --git a/src/net/ea/buysellhandler.cpp b/src/net/ea/buysellhandler.cpp index a69d04738..0b8734d49 100644 --- a/src/net/ea/buysellhandler.cpp +++ b/src/net/ea/buysellhandler.cpp @@ -35,6 +35,7 @@ #include "gui/widgets/createwidget.h" +#include "net/ea/buysellrecv.h" #include "net/ea/eaprotocol.h" #include "debug.h" @@ -42,82 +43,10 @@ namespace Ea { -BeingId BuySellHandler::mNpcId = BeingId_zero; -BuyDialog *BuySellHandler::mBuyDialog = nullptr; - BuySellHandler::BuySellHandler() { - mNpcId = BeingId_zero; - mBuyDialog = nullptr; -} - -void BuySellHandler::processNpcBuySellChoice(Net::MessageIn &msg) -{ - if (!BuySellDialog::isActive()) - { - mNpcId = msg.readBeingId("npc id"); - CREATEWIDGET(BuySellDialog, mNpcId); - } -} - -void BuySellHandler::processNpcSell(Net::MessageIn &msg) -{ - msg.readInt16("len"); - const int n_items = (msg.getLength() - 4) / 10; - if (n_items > 0) - { - SellDialog *const dialog = CREATEWIDGETR(NpcSellDialog, mNpcId); - dialog->setMoney(PlayerInfo::getAttribute(Attributes::MONEY)); - - for (int k = 0; k < n_items; k++) - { - const int index = msg.readInt16("index") - INVENTORY_OFFSET; - const int value = msg.readInt32("value"); - msg.readInt32("value?"); - - const Item *const item = PlayerInfo::getInventory() - ->getItem(index); - - if (item && item->isEquipped() == Equipped_false) - dialog->addItem(item, value); - } - } - else - { - NotifyManager::notify(NotifyTypes::SELL_LIST_EMPTY); - } -} - -void BuySellHandler::processNpcBuyResponse(Net::MessageIn &msg) -{ - const uint8_t response = msg.readUInt8("response"); - if (response == 0U) - { - NotifyManager::notify(NotifyTypes::BUY_DONE); - return; - } - // Reset player money since buy dialog already assumed purchase - // would go fine - if (mBuyDialog) - mBuyDialog->setMoney(PlayerInfo::getAttribute(Attributes::MONEY)); - switch (response) - { - case 1: - NotifyManager::notify(NotifyTypes::BUY_FAILED_NO_MONEY); - break; - - case 2: - NotifyManager::notify(NotifyTypes::BUY_FAILED_OVERWEIGHT); - break; - - case 3: - NotifyManager::notify(NotifyTypes::BUY_FAILED_TOO_MANY_ITEMS); - break; - - default: - NotifyManager::notify(NotifyTypes::BUY_FAILED); - break; - }; + BuySellRecv::mNpcId = BeingId_zero; + BuySellRecv::mBuyDialog = nullptr; } } // namespace Ea |