From 342a244e31a5a59713cc0b58ee17d8152761db42 Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 18 May 2012 17:36:20 +0200 Subject: [PATCH] NPC now doesn't buy items of types that he shouldn't accept. --- apps/openmw/mwgui/container.cpp | 12 ++++++++++++ apps/openmw/mwgui/inventorywindow.cpp | 9 +++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwgui/container.cpp b/apps/openmw/mwgui/container.cpp index e51e22ecdb..7d9fd43636 100644 --- a/apps/openmw/mwgui/container.cpp +++ b/apps/openmw/mwgui/container.cpp @@ -123,6 +123,18 @@ void ContainerBase::onSelectedItem(MyGUI::Widget* _sender) MWWorld::Ptr object = (*_sender->getUserData()); int count = object.getRefData().getCount(); + if (isInventory()) + { + // the player is trying to sell an item, check if the merchant accepts it + if (!MWBase::Environment::get().getWindowManager()->getTradeWindow()->npcAcceptsItem(object)) + { + // user notification "i don't buy this item" + MWBase::Environment::get().getWindowManager()-> + messageBox(MWBase::Environment::get().getWorld()->getStore().gameSettings.search("sBarterDialog4")->str, std::vector()); + return; + } + } + if (std::find(mBoughtItems.begin(), mBoughtItems.end(), object) != mBoughtItems.end()) { if (MyGUI::InputManager::getInstance().isShiftPressed() || count == 1) diff --git a/apps/openmw/mwgui/inventorywindow.cpp b/apps/openmw/mwgui/inventorywindow.cpp index 856ff1896e..e08a2ba4f5 100644 --- a/apps/openmw/mwgui/inventorywindow.cpp +++ b/apps/openmw/mwgui/inventorywindow.cpp @@ -92,11 +92,14 @@ namespace MWGui void InventoryWindow::openInventory() { - onWindowResize(static_cast(mMainWidget)); - updateEncumbranceBar(); mTrading = false; + + mBoughtItems.clear(); + mSoldItems.clear(); + + onWindowResize(static_cast(mMainWidget)); } void InventoryWindow::onWindowResize(MyGUI::Window* _sender) @@ -252,7 +255,5 @@ namespace MWGui void InventoryWindow::startTrade() { mTrading = true; - mBoughtItems.clear(); - mSoldItems.clear(); } }