summaryrefslogtreecommitdiff
path: root/src/net/tmwa/tradehandler.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-10-09 17:41:22 +0300
committerAndrei Karas <akaras@inbox.ru>2014-10-09 17:41:22 +0300
commit88d251067ab061177df644dd1acb5c6d74a5e79f (patch)
tree7da6c0c5ef97385470ee1ab06c557444e5d5763a /src/net/tmwa/tradehandler.cpp
parentebd2dfb76cb92bbae9e5a22e1ec6869fba4961c2 (diff)
downloadmanaplus-88d251067ab061177df644dd1acb5c6d74a5e79f.tar.gz
manaplus-88d251067ab061177df644dd1acb5c6d74a5e79f.tar.bz2
manaplus-88d251067ab061177df644dd1acb5c6d74a5e79f.tar.xz
manaplus-88d251067ab061177df644dd1acb5c6d74a5e79f.zip
Move processTradeItemAddResponse from ea namespace into eathena and tmwa.
Diffstat (limited to 'src/net/tmwa/tradehandler.cpp')
-rw-r--r--src/net/tmwa/tradehandler.cpp56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/net/tmwa/tradehandler.cpp b/src/net/tmwa/tradehandler.cpp
index a07b58c15..4ee77a7ec 100644
--- a/src/net/tmwa/tradehandler.cpp
+++ b/src/net/tmwa/tradehandler.cpp
@@ -22,7 +22,9 @@
#include "net/tmwa/tradehandler.h"
+#include "inventory.h"
#include "item.h"
+#include "notifymanager.h"
#include "being/playerinfo.h"
@@ -33,6 +35,10 @@
#include "net/ea/eaprotocol.h"
+#include "resources/notifytypes.h"
+
+#include "utils/stringutils.h"
+
#include "debug.h"
extern Net::TradeHandler *tradeHandler;
@@ -178,4 +184,54 @@ void TradeHandler::processTradeItemAdd(Net::MessageIn &msg)
}
}
+void TradeHandler::processTradeItemAddResponse(Net::MessageIn &msg)
+{
+ // Trade: New Item add response (was 0x00ea, now 01b1)
+ const int index = msg.readInt16() - INVENTORY_OFFSET;
+ Item *item = nullptr;
+ if (PlayerInfo::getInventory())
+ item = PlayerInfo::getInventory()->getItem(index);
+
+ if (!item)
+ {
+ if (tradeWindow)
+ tradeWindow->receivedOk(true);
+ return;
+ }
+ const int quantity = msg.readInt16();
+
+ const uint8_t res = msg.readUInt8();
+ switch (res)
+ {
+ case 0:
+ // Successfully added item
+ if (tradeWindow)
+ {
+ tradeWindow->addItem2(item->getId(), true,
+ quantity, item->getRefine(), item->getColor(),
+ item->isEquipment());
+ }
+ item->increaseQuantity(-quantity);
+ break;
+ case 1:
+ // Add item failed - player overweighted
+ NotifyManager::notify(NotifyTypes::
+ TRADE_ADD_PARTNER_OVER_WEIGHT);
+ break;
+ case 2:
+ // Add item failed - player has no free slot
+ NotifyManager::notify(NotifyTypes::TRADE_ADD_PARTNER_NO_SLOTS);
+ break;
+ case 3:
+ // Add item failed - non tradable item
+ NotifyManager::notify(NotifyTypes::TRADE_ADD_UNTRADABLE_ITEM);
+ break;
+ default:
+ NotifyManager::notify(NotifyTypes::TRADE_ADD_ERROR);
+ logger->log("QQQ SMSG_TRADE_ITEM_ADD_RESPONSE: "
+ + toString(res));
+ break;
+ }
+}
+
} // namespace TmwAthena