summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gui/sell.cpp27
-rw-r--r--src/shopitem.cpp19
-rw-r--r--src/shopitem.h3
3 files changed, 41 insertions, 8 deletions
diff --git a/src/gui/sell.cpp b/src/gui/sell.cpp
index 1b149cd48..c918971ab 100644
--- a/src/gui/sell.cpp
+++ b/src/gui/sell.cpp
@@ -234,7 +234,11 @@ void SellDialog::action(const gcn::ActionEvent &event)
mAmountItems = 1;
mSlider->setValue(0);
- if (!mMaxItems)
+ if (mMaxItems)
+ {
+ updateButtonsAndLabels();
+ }
+ else
{
// All were sold
mShopItemList->setSelected(-1);
@@ -280,14 +284,23 @@ void SellDialog::updateButtonsAndLabels()
{
int selectedItem = mShopItemList->getSelected();
int income = 0;
+ ShopItem *item = 0;
if (selectedItem > -1 && mShopItems->at(selectedItem))
{
- mMaxItems = mShopItems->at(selectedItem)->getQuantity();
- if (mAmountItems > mMaxItems)
- mAmountItems = mMaxItems;
-
- income = mAmountItems * mShopItems->at(selectedItem)->getPrice();
+ item = mShopItems->at(selectedItem);
+ if (item)
+ {
+ mMaxItems = item->getQuantity();
+ if (mAmountItems > mMaxItems)
+ mAmountItems = mMaxItems;
+ income = mAmountItems * mShopItems->at(selectedItem)->getPrice();
+ }
+ else
+ {
+ mMaxItems = 0;
+ mAmountItems = 0;
+ }
}
else
{
@@ -306,6 +319,8 @@ void SellDialog::updateButtonsAndLabels()
mMoneyLabel->setCaption(strprintf(_("Price: %s / Total: %s"),
Units::formatCurrency(income).c_str(),
Units::formatCurrency(mPlayerMoney + income).c_str()));
+ if (item)
+ item->update();
}
void SellDialog::setVisible(bool visible)
diff --git a/src/shopitem.cpp b/src/shopitem.cpp
index 56fec1fac..4ed0459de 100644
--- a/src/shopitem.cpp
+++ b/src/shopitem.cpp
@@ -30,7 +30,8 @@
ShopItem::ShopItem(int inventoryIndex, int id,
int quantity, int price) :
Item(id, 0),
- mPrice(price)
+ mPrice(price),
+ mShowQuantity(true)
{
mDisplayName = getInfo().getName() + " ("
+ Units::formatCurrency(mPrice).c_str() + ") ";
@@ -41,7 +42,10 @@ ShopItem::ShopItem(int inventoryIndex, int id,
addDuplicate(inventoryIndex, quantity);
}
-ShopItem::ShopItem (int id, int price) : Item (id, 0), mPrice(price)
+ShopItem::ShopItem (int id, int price) :
+ Item (id, 0),
+ mPrice(price),
+ mShowQuantity(false)
{
mDisplayName = getInfo().getName() +
" (" + Units::formatCurrency(mPrice).c_str() + ")";
@@ -59,6 +63,17 @@ ShopItem::~ShopItem()
}
}
+void ShopItem::update()
+{
+ if (mShowQuantity)
+ {
+ mDisplayName = getInfo().getName() + " ("
+ + Units::formatCurrency(mPrice).c_str() + ") ";
+ if (mQuantity > 0)
+ mDisplayName += "[" + toString(mQuantity) + "]";
+ }
+}
+
void ShopItem::addDuplicate(int inventoryIndex, int quantity)
{
DuplicateItem* di = new DuplicateItem;
diff --git a/src/shopitem.h b/src/shopitem.h
index 04d26df8f..f2cd3d566 100644
--- a/src/shopitem.h
+++ b/src/shopitem.h
@@ -72,6 +72,8 @@ class ShopItem : public Item
*/
void addDuplicate();
+ void update();
+
/**
* Gets the quantity of the currently topmost duplicate.
*
@@ -125,6 +127,7 @@ class ShopItem : public Item
protected:
int mPrice;
std::string mDisplayName;
+ bool mShowQuantity;
/**
* Struct to keep track of duplicates.