From a31a9e51d3e3b853ca02db3d667fd417dbf2d5df Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 12 May 2012 14:29:49 +0200 Subject: [PATCH] add the sound for item drag&drop --- apps/openmw/mwclass/misc.cpp | 15 ++++++++++----- apps/openmw/mwgui/container.cpp | 20 ++++++++++++++------ 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/apps/openmw/mwclass/misc.cpp b/apps/openmw/mwclass/misc.cpp index 70ba16c031..936dc4558d 100644 --- a/apps/openmw/mwclass/misc.cpp +++ b/apps/openmw/mwclass/misc.cpp @@ -138,11 +138,18 @@ namespace MWClass ptr.get(); MWGui::ToolTipInfo info; - info.caption = ref->base->name + MWGui::ToolTips::getCountString(ptr.getRefData().getCount()); - info.icon = ref->base->icon; const ESMS::ESMStore& store = MWBase::Environment::get().getWorld()->getStore(); + int count = ptr.getRefData().getCount(); + // gold has count both as reference count and as value, multiply them together to get real count + bool isGold = (ref->base->name == store.gameSettings.search("sGold")->str); + if (isGold) + count *= ref->base->data.value; + + info.caption = ref->base->name + MWGui::ToolTips::getCountString(count); + info.icon = ref->base->icon; + if (ref->ref.soul != "") { const ESM::Creature *creature = store.creatures.search(ref->ref.soul); @@ -151,9 +158,7 @@ namespace MWClass std::string text; - if (ref->base->name == store.gameSettings.search("sGold")->str) - info.caption += " (" + boost::lexical_cast(ref->base->data.value) + ")"; - else + if (!isGold) { text += "\n" + store.gameSettings.search("sWeight")->str + ": " + MWGui::ToolTips::toString(ref->base->data.weight); text += MWGui::ToolTips::getValueString(ref->base->data.value, store.gameSettings.search("sValue")->str); diff --git a/apps/openmw/mwgui/container.cpp b/apps/openmw/mwgui/container.cpp index 0b264d48ce..661495559e 100644 --- a/apps/openmw/mwgui/container.cpp +++ b/apps/openmw/mwgui/container.cpp @@ -12,6 +12,7 @@ #include "../mwworld/player.hpp" #include "../mwclass/container.hpp" #include "../mwinput/inputmanager.hpp" +#include "../mwsound/soundmanager.hpp" #include #include @@ -53,34 +54,41 @@ void ContainerBase::onSelectedItem(MyGUI::Widget* _sender) int count = 0; MWWorld::ContainerStore& containerStore = MWWorld::Class::get(mContainer).getContainerStore(mContainer); + MWWorld::Ptr object; for (MWWorld::ContainerStoreIterator iter (containerStore.begin()); iter!=containerStore.end(); ++iter) { count++; if(count == item->mPos) { mDragAndDrop->mStore.add(*iter); + object = *iter; iter->getRefData().setCount(0); break; } } - //containerStore. - //std::cout << mContainerWidget->getParent()->getParent()->getName(); + + std::string sound = MWWorld::Class::get(object).getUpSoundId(object); + MWBase::Environment::get().getSoundManager()->playSound (sound, 1.0, 1.0); + _sender->setUserString("drag","on"); mDragAndDrop->mDraggedWidget = _sender; mDragAndDrop->mContainerWindow = const_cast(this); drawItems(); - std::cout << "selected!"; } } void ContainerBase::onContainerClicked(MyGUI::Widget* _sender) { - std::cout << "container clicked"; if(mDragAndDrop->mIsOnDragAndDrop) //drop widget here { ItemWidget* item = static_cast(mDragAndDrop->mDraggedWidget); - std::cout << item->mPos << (*mDragAndDrop->mStore.begin()).getTypeName(); - if((*item->getUserData()).getContainerStore() == 0) std::cout << "nocontainer!"; + + MWWorld::Ptr object = *item->getUserData(); + assert(object.getContainerStore() && "Item is not in a container!"); + + std::string sound = MWWorld::Class::get(object).getDownSoundId(object); + MWBase::Environment::get().getSoundManager()->playSound (sound, 1.0, 1.0); + MWWorld::ContainerStore& containerStore = MWWorld::Class::get(mContainer).getContainerStore(mContainer); containerStore.add(*mDragAndDrop->mStore.begin()); mDragAndDrop->mStore.clear();