From 49da33a12981b1af7a91c5d1bd5e91fdc97537b6 Mon Sep 17 00:00:00 2001 From: kuyondo Date: Mon, 4 Oct 2021 08:12:15 +0800 Subject: [PATCH 1/7] comiit --- apps/openmw/mwgui/tradewindow.cpp | 23 +++++++++++++++++++++-- apps/openmw/mwgui/tradewindow.hpp | 1 + 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwgui/tradewindow.cpp b/apps/openmw/mwgui/tradewindow.cpp index 19ea383483..d236305f37 100644 --- a/apps/openmw/mwgui/tradewindow.cpp +++ b/apps/openmw/mwgui/tradewindow.cpp @@ -52,6 +52,7 @@ namespace MWGui , mItemToSell(-1) , mCurrentBalance(0) , mCurrentMerchantOffer(0) + , mReceiveMoney(false) { getWidget(mFilterAll, "AllButton"); getWidget(mFilterWeapon, "WeaponButton"); @@ -405,10 +406,15 @@ namespace MWGui void TradeWindow::onBalanceValueChanged(int value) { + int previousBalance = mCurrentBalance; + // Entering a "-" sign inverts the buying/selling state mCurrentBalance = (mCurrentBalance >= 0 ? 1 : -1) * value; updateLabels(); + if (mReceiveMoney && mCurrentBalance == 0) + mCurrentBalance = previousBalance; + if (value != std::abs(value)) mTotalBalance->setValue(std::abs(value)); } @@ -434,10 +440,23 @@ namespace MWGui { MWWorld::Ptr player = MWMechanics::getPlayer(); int playerGold = player.getClass().getContainerStore(player).count(MWWorld::ContainerStore::sGoldId); - mPlayerGold->setCaptionWithReplacing("#{sYourGold} " + MyGUI::utility::toString(playerGold)); - if (mCurrentBalance < 0) + TradeItemModel* playerTradeModel = MWBase::Environment::get().getWindowManager()->getInventoryWindow()->getTradeModel(); + const std::vector& playerBorrowed = playerTradeModel->getItemsBorrowedToUs(); + const std::vector& merchantBorrowed = mTradeModel->getItemsBorrowedToUs(); + + if (playerBorrowed.empty() && merchantBorrowed.empty()) { + mCurrentBalance = 0; + } + else if (playerBorrowed.empty()) { + mReceiveMoney = false; + } + else if (merchantBorrowed.empty()) { + mReceiveMoney = true; + } + + if (mCurrentBalance < 0 || mReceiveMoney) { mTotalBalanceLabel->setCaptionWithReplacing("#{sTotalCost}"); } diff --git a/apps/openmw/mwgui/tradewindow.hpp b/apps/openmw/mwgui/tradewindow.hpp index f82d7b0f72..523cb84098 100644 --- a/apps/openmw/mwgui/tradewindow.hpp +++ b/apps/openmw/mwgui/tradewindow.hpp @@ -79,6 +79,7 @@ namespace MWGui int mCurrentBalance; int mCurrentMerchantOffer; + bool mReceiveMoney; void sellToNpc(const MWWorld::Ptr& item, int count, bool boughtItem); ///< only used for adjusting the gold balance void buyFromNpc(const MWWorld::Ptr& item, int count, bool soldItem); ///< only used for adjusting the gold balance From 0c1b78c42a3d4a93471fdd70db4492e76d9cb305 Mon Sep 17 00:00:00 2001 From: Kindi <2538602-Kuyondo@users.noreply.gitlab.com> Date: Mon, 4 Oct 2021 02:16:01 +0000 Subject: [PATCH 2/7] Update tradewindow.cpp curly --- apps/openmw/mwgui/tradewindow.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwgui/tradewindow.cpp b/apps/openmw/mwgui/tradewindow.cpp index 4b8279065c..35466059a2 100644 --- a/apps/openmw/mwgui/tradewindow.cpp +++ b/apps/openmw/mwgui/tradewindow.cpp @@ -446,13 +446,16 @@ namespace MWGui const std::vector& playerBorrowed = playerTradeModel->getItemsBorrowedToUs(); const std::vector& merchantBorrowed = mTradeModel->getItemsBorrowedToUs(); - if (playerBorrowed.empty() && merchantBorrowed.empty()) { + if (playerBorrowed.empty() && merchantBorrowed.empty()) + { mCurrentBalance = 0; } - else if (playerBorrowed.empty()) { + else if (playerBorrowed.empty()) + { mReceiveMoney = false; } - else if (merchantBorrowed.empty()) { + else if (merchantBorrowed.empty()) + { mReceiveMoney = true; } From f28d6738bf5c946e8b3789342d0922f39458f537 Mon Sep 17 00:00:00 2001 From: Kindi <2538602-Kuyondo@users.noreply.gitlab.com> Date: Mon, 4 Oct 2021 20:44:56 +0000 Subject: [PATCH 3/7] Update tradewindow.cpp --- apps/openmw/mwgui/tradewindow.cpp | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/apps/openmw/mwgui/tradewindow.cpp b/apps/openmw/mwgui/tradewindow.cpp index 35466059a2..48457ee6d9 100644 --- a/apps/openmw/mwgui/tradewindow.cpp +++ b/apps/openmw/mwgui/tradewindow.cpp @@ -52,7 +52,6 @@ namespace MWGui , mItemToSell(-1) , mCurrentBalance(0) , mCurrentMerchantOffer(0) - , mReceiveMoney(false) { getWidget(mFilterAll, "AllButton"); getWidget(mFilterWeapon, "WeaponButton"); @@ -412,7 +411,7 @@ namespace MWGui mCurrentBalance = (mCurrentBalance >= 0 ? 1 : -1) * value; updateLabels(); - if (mReceiveMoney && mCurrentBalance == 0) + if (mCurrentBalance == 0) mCurrentBalance = previousBalance; if (value != std::abs(value)) @@ -424,6 +423,7 @@ namespace MWGui // prevent overflows, and prevent entering INT_MIN since abs(INT_MIN) is undefined if (mCurrentBalance == std::numeric_limits::max() || mCurrentBalance == std::numeric_limits::min()+1) return; + if (mTotalBalance->getValue() == 0) mCurrentBalance = 0; if (mCurrentBalance < 0) mCurrentBalance -= 1; else mCurrentBalance += 1; updateLabels(); @@ -431,6 +431,7 @@ namespace MWGui void TradeWindow::onDecreaseButtonTriggered() { + if (mTotalBalance->getValue() == 0) mCurrentBalance = 0; if (mCurrentBalance < 0) mCurrentBalance += 1; else mCurrentBalance -= 1; updateLabels(); @@ -450,16 +451,8 @@ namespace MWGui { mCurrentBalance = 0; } - else if (playerBorrowed.empty()) - { - mReceiveMoney = false; - } - else if (merchantBorrowed.empty()) - { - mReceiveMoney = true; - } - if (mCurrentBalance < 0 || mReceiveMoney) + if (mCurrentBalance < 0) { mTotalBalanceLabel->setCaptionWithReplacing("#{sTotalCost}"); } From d9b254178f6ee2da388d95bb6ab1d04b3c73bc07 Mon Sep 17 00:00:00 2001 From: Kindi <2538602-Kuyondo@users.noreply.gitlab.com> Date: Mon, 4 Oct 2021 20:47:45 +0000 Subject: [PATCH 4/7] Update tradewindow.hpp remover redundant --- apps/openmw/mwgui/tradewindow.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/openmw/mwgui/tradewindow.hpp b/apps/openmw/mwgui/tradewindow.hpp index e39d1ebd8e..5ace09e8e2 100644 --- a/apps/openmw/mwgui/tradewindow.hpp +++ b/apps/openmw/mwgui/tradewindow.hpp @@ -81,7 +81,6 @@ namespace MWGui int mCurrentBalance; int mCurrentMerchantOffer; - bool mReceiveMoney; void sellToNpc(const MWWorld::Ptr& item, int count, bool boughtItem); ///< only used for adjusting the gold balance void buyFromNpc(const MWWorld::Ptr& item, int count, bool soldItem); ///< only used for adjusting the gold balance From 2a1cb939baadc0a0ad3c015a202099055ff83f16 Mon Sep 17 00:00:00 2001 From: Kindi <2538602-Kuyondo@users.noreply.gitlab.com> Date: Mon, 4 Oct 2021 20:50:40 +0000 Subject: [PATCH 5/7] Update CHANGELOG.md --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b7ef5b62a..44b7634ebb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -46,12 +46,14 @@ Bug #6184: Command and Calm and Demoralize and Frenzy and Rally magic effects inconsistencies with vanilla Bug #6197: Infinite Casting Loop Bug #6223: Some Constant Effect Bound Items inconsistencies + Bug #6258: Barter menu glitches out when modifying prices Bug #6273: Respawning NPCs rotation is inconsistent Bug #6282: Laura craft doesn't follow the player character Bug #6283: Avis Dorsey follows you after her death Bug #6289: Keyword search in dialogues expected the text to be all ASCII characters Bug #6302: Teleporting disabled actor breaks its disabled state Bug #6307: Pathfinding in Infidelities quest from Tribunal addon is broken + Bug #6322: Total sold/cost should reset to 0 when there are no items offered Feature #890: OpenMW-CS: Column filtering Feature #2554: Modifying an object triggers the instances table to scroll to the corresponding record Feature #2780: A way to see current OpenMW version in the console From 4ce8c1e1ab4797126cf1ac59e9df9ce51ac50152 Mon Sep 17 00:00:00 2001 From: Kindi <2538602-Kuyondo@users.noreply.gitlab.com> Date: Mon, 4 Oct 2021 20:54:28 +0000 Subject: [PATCH 6/7] Update AUTHORS.md --- AUTHORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS.md b/AUTHORS.md index 2080f12a99..8ca9db90b9 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -177,6 +177,7 @@ Programmers PlutonicOverkill Radu-Marius Popovici (rpopovici) Rafael Moura (dhustkoder) + Randy Davin (Kindi) rdimesio rexelion riothamus From ce54edf011c7a36f7a0fee5736d5593021f26472 Mon Sep 17 00:00:00 2001 From: Kindi <2538602-Kuyondo@users.noreply.gitlab.com> Date: Tue, 5 Oct 2021 18:00:53 +0000 Subject: [PATCH 7/7] Update tradewindow.cpp Additional check --- apps/openmw/mwgui/tradewindow.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/openmw/mwgui/tradewindow.cpp b/apps/openmw/mwgui/tradewindow.cpp index 48457ee6d9..8e08a417f8 100644 --- a/apps/openmw/mwgui/tradewindow.cpp +++ b/apps/openmw/mwgui/tradewindow.cpp @@ -265,6 +265,8 @@ namespace MWGui const MWWorld::Store &gmst = MWBase::Environment::get().getWorld()->getStore().get(); + if (mTotalBalance->getValue() == 0) mCurrentBalance = 0; + // were there any items traded at all? const std::vector& playerBought = playerItemModel->getItemsBorrowedToUs(); const std::vector& merchantBought = mTradeModel->getItemsBorrowedToUs();