From 5fc61f321cbe6c8f4a4e6529c27603302f3d5eba Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 15 Jul 2015 02:37:23 +0300 Subject: Update existing item after inserting card. --- src/net/eathena/inventoryhandler.cpp | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) (limited to 'src/net/eathena/inventoryhandler.cpp') diff --git a/src/net/eathena/inventoryhandler.cpp b/src/net/eathena/inventoryhandler.cpp index c73425874..015ff3c2c 100644 --- a/src/net/eathena/inventoryhandler.cpp +++ b/src/net/eathena/inventoryhandler.cpp @@ -30,6 +30,8 @@ #include "enums/resources/notifytypes.h" +#include "gui/popups/itempopup.h" + #include "gui/widgets/createwidget.h" #include "gui/windows/insertcarddialog.h" @@ -810,7 +812,7 @@ void InventoryHandler::processPlayerUseCard(Net::MessageIn &msg) void InventoryHandler::processPlayerInsertCard(Net::MessageIn &msg) { - msg.readInt16("item index"); + const int itemIndex = msg.readInt16("item index") - INVENTORY_OFFSET; const int cardIndex = msg.readInt16("card index") - INVENTORY_OFFSET; if (msg.readUInt8("flag")) { @@ -820,12 +822,21 @@ void InventoryHandler::processPlayerInsertCard(Net::MessageIn &msg) { NotifyManager::notify(NotifyTypes::CARD_INSERT_SUCCESS); Inventory *const inv = PlayerInfo::getInventory(); - Item *const item = inv->getItem(cardIndex); - if (!item) - return; - item->increaseQuantity(-1); - if (item->getQuantity() == 0) - inv->removeItemAt(cardIndex); + Item *const card = inv->getItem(cardIndex); + int cardId = 0; + if (card) + { + cardId = card->getId(); + card->increaseQuantity(-1); + if (card->getQuantity() == 0) + inv->removeItemAt(cardIndex); + } + Item *const item = inv->getItem(itemIndex); + if (item) + { + item->addCard(cardId); + itemPopup->resetPopup(); + } } } -- cgit v1.2.3-60-g2f50