summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gui/windows/buydialog.cpp27
-rw-r--r--src/gui/windows/buydialog.h2
2 files changed, 19 insertions, 10 deletions
diff --git a/src/gui/windows/buydialog.cpp b/src/gui/windows/buydialog.cpp
index 068440c65..a71759840 100644
--- a/src/gui/windows/buydialog.cpp
+++ b/src/gui/windows/buydialog.cpp
@@ -471,16 +471,7 @@ void BuyDialog::action(const ActionEvent &event)
mAmountItems);
}
- // Update money and adjust the max number of items
- // that can be bought
- mMaxItems -= mAmountItems;
- setMoney(mMoney -
- mAmountItems * mShopItems->at(selectedItem)->getPrice());
-
- // Reset selection
- mAmountItems = 1;
- mSlider->setScale(1, mMaxItems);
- mSlider->setValue(1);
+ updateSlider(selectedItem);
}
else if (mNpcId == Nick)
{
@@ -492,6 +483,9 @@ void BuyDialog::action(const ActionEvent &event)
vendingHandler->buy(being,
item->getInvIndex(),
mAmountItems);
+ item->increaseQuantity(-mAmountItems);
+ item->update();
+ updateSlider(selectedItem);
}
}
else if (tradeWindow)
@@ -508,6 +502,19 @@ void BuyDialog::action(const ActionEvent &event)
}
}
+void BuyDialog::updateSlider(const int selectedItem)
+{
+ // Update money and adjust the max number of items
+ // that can be bought
+ mMaxItems -= mAmountItems;
+ setMoney(mMoney - mAmountItems * mShopItems->at(selectedItem)->getPrice());
+
+ // Reset selection
+ mAmountItems = 1;
+ mSlider->setScale(1, mMaxItems);
+ mSlider->setValue(1);
+}
+
void BuyDialog::valueChanged(const SelectionEvent &event A_UNUSED)
{
// Reset amount of items and update labels
diff --git a/src/gui/windows/buydialog.h b/src/gui/windows/buydialog.h
index d697eff5d..78df8ebf8 100644
--- a/src/gui/windows/buydialog.h
+++ b/src/gui/windows/buydialog.h
@@ -145,6 +145,8 @@ class BuyDialog final : public Window,
static void closeAll();
private:
+ void updateSlider(const int selectedItem);
+
typedef std::list<BuyDialog*> DialogList;
static DialogList instances;