diff options
-rw-r--r-- | src/gui/windows/buydialog.cpp | 27 | ||||
-rw-r--r-- | src/gui/windows/buydialog.h | 2 |
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; |