From 9be90b76adb1518c4ffe0e365a18c5afcc3158f2 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 23 Dec 2014 01:27:45 +0300 Subject: Add item type to item object. --- src/gui/models/shopitems.cpp | 27 ++++++++++++++++++--------- src/gui/models/shopitems.h | 23 ++++++++++++++++------- src/gui/widgets/itemcontainer.cpp | 3 ++- src/gui/widgets/selldialog.cpp | 21 ++++++++++++++++----- src/gui/widgets/selldialog.h | 7 +++++-- src/gui/windows/buydialog.cpp | 9 ++++++--- src/gui/windows/buydialog.h | 7 +++++-- src/gui/windows/itemamountwindow.cpp | 2 +- src/gui/windows/npcdialog.cpp | 3 ++- src/gui/windows/shopwindow.cpp | 22 ++++++++++++++-------- src/gui/windows/tradewindow.cpp | 6 ++++-- src/gui/windows/tradewindow.h | 2 ++ 12 files changed, 91 insertions(+), 41 deletions(-) (limited to 'src/gui') diff --git a/src/gui/models/shopitems.cpp b/src/gui/models/shopitems.cpp index 58bfe0023..e6bbeb787 100644 --- a/src/gui/models/shopitems.cpp +++ b/src/gui/models/shopitems.cpp @@ -50,23 +50,32 @@ std::string ShopItems::getElementAt(int i) return mShopItems.at(i)->getDisplayName(); } -void ShopItems::addItem(const int id, const unsigned char color, - const int amount, const int price) +void ShopItems::addItem(const int id, + const int type, + const unsigned char color, + const int amount, + const int price) { - mShopItems.push_back(new ShopItem(-1, id, color, amount, price)); + mShopItems.push_back(new ShopItem(-1, id, type, color, amount, price)); } -void ShopItems::addItemNoDup(const int id, const unsigned char color, - const int amount, const int price) +void ShopItems::addItemNoDup(const int id, + const int type, + const unsigned char color, + const int amount, + const int price) { const ShopItem *const item = findItem(id, color); if (!item) - mShopItems.push_back(new ShopItem(-1, id, color, amount, price)); + mShopItems.push_back(new ShopItem(-1, id, type, color, amount, price)); } -void ShopItems::addItem2(const int inventoryIndex, const int id, +void ShopItems::addItem2(const int inventoryIndex, + const int id, + const int type, const unsigned char color, - const int quantity, const int price) + const int quantity, + const int price) { ShopItem *item = nullptr; if (mMergeDuplicates) @@ -78,7 +87,7 @@ void ShopItems::addItem2(const int inventoryIndex, const int id, } else { - item = new ShopItem(inventoryIndex, id, color, quantity, price); + item = new ShopItem(inventoryIndex, id, type, color, quantity, price); mShopItems.push_back(item); } } diff --git a/src/gui/models/shopitems.h b/src/gui/models/shopitems.h index 5e8fb2b97..68048c65c 100644 --- a/src/gui/models/shopitems.h +++ b/src/gui/models/shopitems.h @@ -59,8 +59,11 @@ class ShopItems final : public ListModel /** * Adds an item to the list. */ - void addItem(const int id, const unsigned char color, - const int amount, const int price); + void addItem(const int id, + const int type, + const unsigned char color, + const int amount, + const int price); /** * Adds an item to the list (used by sell dialog). Looks for @@ -71,12 +74,18 @@ class ShopItems final : public ListModel * @param quantity number of available copies of the item * @param price price of the item */ - void addItem2(const int inventoryIndex, const int id, + void addItem2(const int inventoryIndex, + const int id, + const int type, const unsigned char color, - const int amount, const int price); - - void addItemNoDup(const int id, const unsigned char color, - const int amount, const int price); + const int amount, + const int price); + + void addItemNoDup(const int id, + const int type, + const unsigned char color, + const int amount, + const int price); /** * Returns the number of items in the shop. diff --git a/src/gui/widgets/itemcontainer.cpp b/src/gui/widgets/itemcontainer.cpp index 732e9e738..952da11c2 100644 --- a/src/gui/widgets/itemcontainer.cpp +++ b/src/gui/widgets/itemcontainer.cpp @@ -552,7 +552,8 @@ void ItemContainer::mouseReleased(MouseEvent &event) const Item *const item = inventory->getItem(dragDrop.getTag()); if (item && !PlayerInfo::isItemProtected(item->getId())) { - mInventory->addItem(item->getId(), 1, 1, item->getColor(), + mInventory->addItem(item->getId(), item->getType(), + 1, 1, item->getColor(), item->getIdentified(), item->getDamaged(), item->getFavorite(), false, false); diff --git a/src/gui/widgets/selldialog.cpp b/src/gui/widgets/selldialog.cpp index 2d45c39f8..4e289e93e 100644 --- a/src/gui/widgets/selldialog.cpp +++ b/src/gui/widgets/selldialog.cpp @@ -182,16 +182,27 @@ void SellDialog::addItem(const Item *const item, const int price) if (!item) return; - mShopItems->addItem2(item->getInvIndex(), item->getId(), - item->getColor(), item->getQuantity(), price); + mShopItems->addItem2(item->getInvIndex(), + item->getId(), + item->getType(), + item->getColor(), + item->getQuantity(), + price); mShopItemList->adjustSize(); } -void SellDialog::addItem(const int id, const unsigned char color, - const int amount, const int price) +void SellDialog::addItem(const int id, + const int type, + const unsigned char color, + const int amount, + const int price) { - mShopItems->addItem(id, color, amount, price); + mShopItems->addItem(id, + type, + color, + amount, + price); mShopItemList->adjustSize(); } diff --git a/src/gui/widgets/selldialog.h b/src/gui/widgets/selldialog.h index d147947b5..a3f6137fb 100644 --- a/src/gui/widgets/selldialog.h +++ b/src/gui/widgets/selldialog.h @@ -90,8 +90,11 @@ class SellDialog notfinal : public Window, */ void setVisible(bool visible) override final; - void addItem(const int id, const unsigned char color, - const int amount, const int price); + void addItem(const int id, + const int type, + const unsigned char color, + const int amount, + const int price); /** * Returns true if any instances exist. diff --git a/src/gui/windows/buydialog.cpp b/src/gui/windows/buydialog.cpp index 61b5d7233..4340a671f 100644 --- a/src/gui/windows/buydialog.cpp +++ b/src/gui/windows/buydialog.cpp @@ -335,10 +335,13 @@ void BuyDialog::reset() setMoney(0); } -void BuyDialog::addItem(const int id, const unsigned char color, - const int amount, const int price) +void BuyDialog::addItem(const int id, + const int type, + const unsigned char color, + const int amount, + const int price) { - mShopItems->addItem(id, color, amount, price); + mShopItems->addItem(id, type, color, amount, price); mShopItemList->adjustSize(); } diff --git a/src/gui/windows/buydialog.h b/src/gui/windows/buydialog.h index 02862187c..af63432f7 100644 --- a/src/gui/windows/buydialog.h +++ b/src/gui/windows/buydialog.h @@ -91,8 +91,11 @@ class BuyDialog final : public Window, /** * Adds an item to the shop inventory. */ - void addItem(const int id, const unsigned char color, - const int amount, const int price); + void addItem(const int id, + const int type, + const unsigned char color, + const int amount, + const int price); /** * Called when receiving actions from the widgets. diff --git a/src/gui/windows/itemamountwindow.cpp b/src/gui/windows/itemamountwindow.cpp index 6eb51de98..548baa01d 100644 --- a/src/gui/windows/itemamountwindow.cpp +++ b/src/gui/windows/itemamountwindow.cpp @@ -319,7 +319,7 @@ void ItemAmountWindow::action(const ActionEvent &event) const int id = ItemDB::get(mItemsModal->getElementAt( mItemDropDown->getSelected())).getId(); - mItem = new Item(id, 10000, 0, 1, true, false, false, false, false); + mItem = new Item(id, 0, 10000, 0, 1, true, false, false, false, false); if (mUsage == ShopBuyAdd) mMax = 10000; diff --git a/src/gui/windows/npcdialog.cpp b/src/gui/windows/npcdialog.cpp index 71290ef22..c99a4898d 100644 --- a/src/gui/windows/npcdialog.cpp +++ b/src/gui/windows/npcdialog.cpp @@ -468,7 +468,8 @@ void NpcDialog::action(const ActionEvent &event) const Item *const item = inventoryWindow->getSelectedItem(); if (item) { - mInventory->addItem(item->getId(), 1, 1, item->getColor(), + mInventory->addItem(item->getId(), item->getType(), + 1, 1, item->getColor(), item->getIdentified(), item->getDamaged(), item->getFavorite(), false, false); diff --git a/src/gui/windows/shopwindow.cpp b/src/gui/windows/shopwindow.cpp index d72dab6b8..534218601 100644 --- a/src/gui/windows/shopwindow.cpp +++ b/src/gui/windows/shopwindow.cpp @@ -328,7 +328,10 @@ void ShopWindow::addBuyItem(const Item *const item, const int amount, return; const bool emp = isShopEmpty(); mBuyShopItems->addItemNoDup(item->getId(), - item->getColor(), amount, price); + item->getType(), + item->getColor(), + amount, + price); if (emp && localPlayer) localPlayer->updateStatus(); @@ -342,7 +345,10 @@ void ShopWindow::addSellItem(const Item *const item, const int amount, return; const bool emp = isShopEmpty(); mSellShopItems->addItemNoDup(item->getId(), - item->getColor(), amount, price); + item->getType(), + item->getColor(), + amount, + price); if (emp && localPlayer) localPlayer->updateStatus(); @@ -390,12 +396,12 @@ void ShopWindow::loadList() if (tokens[1] && tokens[2] && mBuyShopItems) { mBuyShopItems->addItem( - tokens[0], 1, tokens[1], tokens[2]); + tokens[0], 0, 1, tokens[1], tokens[2]); } if (tokens[3] && tokens[4] && mSellShopItems) { mSellShopItems->addItem( - tokens[0], 1, tokens[3], tokens[4]); + tokens[0], 0, 1, tokens[3], tokens[4]); } } } @@ -663,7 +669,7 @@ void ShopWindow::showList(const std::string &nick, std::string data) int amount = decodeStr(data.substr(f + 6, 3)); // +++ need impliment colors? if (buyDialog && amount > 0) - buyDialog->addItem(id, 1, amount, price); + buyDialog->addItem(id, 0, 1, amount, price); if (sellDialog) { // +++ need support for colors @@ -673,9 +679,9 @@ void ShopWindow::showList(const std::string &nick, std::string data) if (item->getQuantity() < amount) amount = item->getQuantity(); if (amount > 0) - sellDialog->addItem(id, 1, amount, price); + sellDialog->addItem(id, 0, 1, amount, price); else - sellDialog->addItem(id, 1, -1, price); + sellDialog->addItem(id, 0, 1, -1, price); } } } @@ -736,7 +742,7 @@ void ShopWindow::processRequest(const std::string &nick, std::string data, delete mTradeItem; // +++ need impliment colors? - mTradeItem = new ShopItem(-1, id, 1, amount, price); + mTradeItem = new ShopItem(-1, id, 0, 1, amount, price); if (mode == BUY) { diff --git a/src/gui/windows/tradewindow.cpp b/src/gui/windows/tradewindow.cpp index c7cd1712d..ba1285366 100644 --- a/src/gui/windows/tradewindow.cpp +++ b/src/gui/windows/tradewindow.cpp @@ -191,6 +191,7 @@ void TradeWindow::setMoney(const int amount) } void TradeWindow::addItem(const int id, + const int type, const bool own, const int quantity, const uint8_t refine, @@ -200,11 +201,12 @@ void TradeWindow::addItem(const int id, const bool favorite) const { Inventory *inv = own ? mMyInventory.get() : mPartnerInventory.get(); - inv->addItem(id, quantity, refine, color, + inv->addItem(id, type, quantity, refine, color, identified, damaged, favorite, false, false); } void TradeWindow::addItem2(const int id, + const int type, const int *const cards, const int sz, const bool own, @@ -217,7 +219,7 @@ void TradeWindow::addItem2(const int id, const bool equipment) const { Inventory *inv = own ? mMyInventory.get() : mPartnerInventory.get(); - const int slot = inv->addItem(id, quantity, refine, color, + const int slot = inv->addItem(id, type, quantity, refine, color, identified, damaged, favorite, equipment, false); if (slot >= 0) inv->setCards(slot, cards, sz); diff --git a/src/gui/windows/tradewindow.h b/src/gui/windows/tradewindow.h index 5c782cf07..9dcfe91c1 100644 --- a/src/gui/windows/tradewindow.h +++ b/src/gui/windows/tradewindow.h @@ -68,6 +68,7 @@ class TradeWindow final : public Window, * Add an item to the trade window. */ void addItem(const int id, + const int type, const bool own, const int quantity, const uint8_t refine, @@ -85,6 +86,7 @@ class TradeWindow final : public Window, * Add an item to the trade window. */ void addItem2(const int id, + const int type, const int *const cards, const int sz, const bool own, -- cgit v1.2.3-70-g09d2