diff options
Diffstat (limited to 'src/gui/buy.cpp')
-rw-r--r-- | src/gui/buy.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/gui/buy.cpp b/src/gui/buy.cpp index 031c53dd..faa86cc9 100644 --- a/src/gui/buy.cpp +++ b/src/gui/buy.cpp @@ -199,8 +199,10 @@ void BuyDialog::action(const gcn::ActionEvent &event) // Update money and adjust the max number of items that can be bought mMaxItems -= mAmountItems; - setMoney(mMoney - - mAmountItems * mShopItems->at(selectedItem)->getPrice()); + int price = mShopItems->at(selectedItem)->getPrice(); + if (price < 0) + price = 0; + setMoney(mMoney - mAmountItems * price); // Reset selection mAmountItems = 1; @@ -229,12 +231,20 @@ void BuyDialog::updateButtonsAndLabels() int itemPrice = mShopItems->at(selectedItem)->getPrice(); // Calculate how many the player can afford - mMaxItems = mMoney / itemPrice; - if (mAmountItems > mMaxItems) + if (itemPrice > 0) { - mAmountItems = mMaxItems; + mMaxItems = mMoney / itemPrice; + } + else + { + // Let the player no more than 1 of them at a time, since it + // shouldn't be a permitted case. + mMaxItems = 1; } + if (mAmountItems > mMaxItems) + mAmountItems = mMaxItems; + // Calculate price of pending purchase price = mAmountItems * itemPrice; } |