From 82e7c04c0a267549aac3a380e4d45d81d3d8f8ab Mon Sep 17 00:00:00 2001 From: Douglas Diniz Date: Sun, 19 Aug 2012 20:11:50 -0300 Subject: [PATCH] Changing sounds to Action. Adding onActor to Action to choose between playSound and playSound3D. --- apps/openmw/mwclass/apparatus.cpp | 9 ++++---- apps/openmw/mwclass/armor.cpp | 14 +++++++----- apps/openmw/mwclass/clothing.cpp | 16 +++++++------ apps/openmw/mwclass/container.cpp | 11 ++++----- apps/openmw/mwclass/door.cpp | 36 +++++++++++++++++++++--------- apps/openmw/mwclass/ingredient.cpp | 8 +++---- apps/openmw/mwclass/light.cpp | 13 ++++++----- apps/openmw/mwclass/lockpick.cpp | 14 +++++++----- apps/openmw/mwclass/misc.cpp | 8 +++---- apps/openmw/mwclass/potion.cpp | 9 ++++---- apps/openmw/mwclass/probe.cpp | 14 +++++++----- apps/openmw/mwclass/repair.cpp | 8 +++---- apps/openmw/mwclass/weapon.cpp | 14 +++++++----- apps/openmw/mwworld/action.cpp | 19 +++++++++++++--- apps/openmw/mwworld/action.hpp | 3 ++- 15 files changed, 121 insertions(+), 75 deletions(-) diff --git a/apps/openmw/mwclass/apparatus.cpp b/apps/openmw/mwclass/apparatus.cpp index 8a117af5d..3d362e8c8 100644 --- a/apps/openmw/mwclass/apparatus.cpp +++ b/apps/openmw/mwclass/apparatus.cpp @@ -5,7 +5,6 @@ #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" -#include "../mwbase/soundmanager.hpp" #include "../mwbase/windowmanager.hpp" #include "../mwworld/ptr.hpp" @@ -63,10 +62,12 @@ namespace MWClass boost::shared_ptr Apparatus::activate (const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor) const { - MWBase::Environment::get().getSoundManager()->playSound3D (ptr, getUpSoundId(ptr), 1.0, 1.0, MWBase::SoundManager::Play_NoTrack); + boost::shared_ptr action( + new MWWorld::ActionTake (ptr)); - return boost::shared_ptr ( - new MWWorld::ActionTake (ptr)); + action->setSound(getUpSoundId(ptr)); + + return action; } std::string Apparatus::getScript (const MWWorld::Ptr& ptr) const diff --git a/apps/openmw/mwclass/armor.cpp b/apps/openmw/mwclass/armor.cpp index c48d7ff4d..f1400dc01 100644 --- a/apps/openmw/mwclass/armor.cpp +++ b/apps/openmw/mwclass/armor.cpp @@ -7,7 +7,6 @@ #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" -#include "../mwbase/soundmanager.hpp" #include "../mwbase/windowmanager.hpp" #include "../mwworld/ptr.hpp" @@ -66,10 +65,11 @@ namespace MWClass boost::shared_ptr Armor::activate (const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor) const { - MWBase::Environment::get().getSoundManager()->playSound3D (ptr, getUpSoundId(ptr), 1.0, 1.0, MWBase::SoundManager::Play_NoTrack); + boost::shared_ptr action(new MWWorld::ActionTake (ptr)); - return boost::shared_ptr ( - new MWWorld::ActionTake (ptr)); + action->setSound(getUpSoundId(ptr)); + + return action; } bool Armor::hasItemHealth (const MWWorld::Ptr& ptr) const @@ -271,9 +271,11 @@ namespace MWClass boost::shared_ptr Armor::use (const MWWorld::Ptr& ptr) const { - MWBase::Environment::get().getSoundManager()->playSound (getUpSoundId(ptr), 1.0, 1.0); + boost::shared_ptr action(new MWWorld::ActionEquip(ptr)); - return boost::shared_ptr(new MWWorld::ActionEquip(ptr)); + action->setSound(getUpSoundId(ptr)); + + return action; } MWWorld::Ptr diff --git a/apps/openmw/mwclass/clothing.cpp b/apps/openmw/mwclass/clothing.cpp index 597eb22fe..21069e667 100644 --- a/apps/openmw/mwclass/clothing.cpp +++ b/apps/openmw/mwclass/clothing.cpp @@ -5,7 +5,6 @@ #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" -#include "../mwbase/soundmanager.hpp" #include "../mwbase/windowmanager.hpp" #include "../mwworld/ptr.hpp" @@ -62,12 +61,13 @@ namespace MWClass } boost::shared_ptr Clothing::activate (const MWWorld::Ptr& ptr, - const MWWorld::Ptr& actor) const + const MWWorld::Ptr& actor) const { - MWBase::Environment::get().getSoundManager()->playSound3D (ptr, getUpSoundId(ptr), 1.0, 1.0, MWBase::SoundManager::Play_NoTrack); + boost::shared_ptr action(new MWWorld::ActionTake (ptr)); - return boost::shared_ptr ( - new MWWorld::ActionTake (ptr)); + action->setSound(getUpSoundId(ptr)); + + return action; } std::string Clothing::getScript (const MWWorld::Ptr& ptr) const @@ -222,9 +222,11 @@ namespace MWClass boost::shared_ptr Clothing::use (const MWWorld::Ptr& ptr) const { - MWBase::Environment::get().getSoundManager()->playSound (getUpSoundId(ptr), 1.0, 1.0); + boost::shared_ptr action(new MWWorld::ActionEquip(ptr)); - return boost::shared_ptr(new MWWorld::ActionEquip(ptr)); + action->setSound(getUpSoundId(ptr)); + + return action; } MWWorld::Ptr diff --git a/apps/openmw/mwclass/container.cpp b/apps/openmw/mwclass/container.cpp index ad6da90dd..608fc6122 100644 --- a/apps/openmw/mwclass/container.cpp +++ b/apps/openmw/mwclass/container.cpp @@ -5,7 +5,6 @@ #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" -#include "../mwbase/soundmanager.hpp" #include "../mwbase/windowmanager.hpp" #include "../mwworld/ptr.hpp" @@ -93,8 +92,9 @@ namespace MWClass { // TODO check for key std::cout << "Locked container" << std::endl; - MWBase::Environment::get().getSoundManager()->playSound3D (ptr, lockedSound, 1.0, 1.0); - return boost::shared_ptr (new MWWorld::NullAction); + boost::shared_ptr action(new MWWorld::NullAction); + action->setSound(lockedSound); + return action; } else { @@ -109,9 +109,10 @@ namespace MWClass { // Trap activation goes here std::cout << "Activated trap: " << ptr.getCellRef().trap << std::endl; - MWBase::Environment::get().getSoundManager()->playSound3D (ptr, trapActivationSound, 1.0, 1.0); + boost::shared_ptr action(new MWWorld::NullAction); + action->setSound(trapActivationSound); ptr.getCellRef().trap = ""; - return boost::shared_ptr (new MWWorld::NullAction); + return action; } } } diff --git a/apps/openmw/mwclass/door.cpp b/apps/openmw/mwclass/door.cpp index 3b283a9d1..bf5dd4bba 100644 --- a/apps/openmw/mwclass/door.cpp +++ b/apps/openmw/mwclass/door.cpp @@ -5,8 +5,9 @@ #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" -#include "../mwbase/soundmanager.hpp" #include "../mwbase/windowmanager.hpp" +#include "../mwbase/soundmanager.hpp" + #include "../mwworld/player.hpp" #include "../mwworld/ptr.hpp" @@ -80,17 +81,25 @@ namespace MWClass // TODO check for key // TODO report failure to player (message, sound?). Look up behaviour of original MW. std::cout << "Locked!" << std::endl; - MWBase::Environment::get().getSoundManager()->playSound3D (ptr, lockedSound, 1.0, 1.0); - return boost::shared_ptr (new MWWorld::NullAction); + + boost::shared_ptr action(new MWWorld::NullAction); + + action->setSound(lockedSound); + + return action; } if(!ptr.getCellRef().trap.empty()) { // Trap activation std::cout << "Activated trap: " << ptr.getCellRef().trap << std::endl; - MWBase::Environment::get().getSoundManager()->playSound3D(ptr, trapActivationSound, 1.0, 1.0); + + boost::shared_ptr action(new MWWorld::NullAction); + + action->setSound(trapActivationSound); ptr.getCellRef().trap = ""; - return boost::shared_ptr (new MWWorld::NullAction); + + return action; } if (ref->ref.teleport) @@ -101,9 +110,13 @@ namespace MWClass { // the player is using the door // The reason this is not 3D is that it would get interrupted when you teleport - MWBase::Environment::get().getSoundManager()->playSound(openSound, 1.0, 1.0); - return boost::shared_ptr ( - new MWWorld::ActionTeleport (ref->ref.destCell, ref->ref.doorDest)); + //MWBase::Environment::get().getSoundManager()->playSound3D(ptr,openSound, 1.0, 1.0); + + boost::shared_ptr action(new MWWorld::ActionTeleport (ref->ref.destCell, ref->ref.doorDest)); + + action->setSound(openSound, true); + + return action; } else { @@ -117,8 +130,11 @@ namespace MWClass // TODO return action for rotating the door // This is a little pointless, but helps with testing - MWBase::Environment::get().getSoundManager()->playSound3D (ptr, openSound, 1.0, 1.0); - return boost::shared_ptr (new MWWorld::NullAction); + boost::shared_ptr action(new MWWorld::NullAction); + + action->setSound(openSound); + + return action; } } diff --git a/apps/openmw/mwclass/ingredient.cpp b/apps/openmw/mwclass/ingredient.cpp index 8f9f8a315..f0354de76 100644 --- a/apps/openmw/mwclass/ingredient.cpp +++ b/apps/openmw/mwclass/ingredient.cpp @@ -5,7 +5,6 @@ #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" -#include "../mwbase/soundmanager.hpp" #include "../mwbase/windowmanager.hpp" #include "../mwworld/ptr.hpp" @@ -62,10 +61,11 @@ namespace MWClass boost::shared_ptr Ingredient::activate (const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor) const { - MWBase::Environment::get().getSoundManager()->playSound3D (ptr, getUpSoundId(ptr), 1.0, 1.0, MWBase::SoundManager::Play_NoTrack); + boost::shared_ptr action(new MWWorld::ActionTake (ptr)); - return boost::shared_ptr ( - new MWWorld::ActionTake (ptr)); + action->setSound(getUpSoundId(ptr)); + + return action; } std::string Ingredient::getScript (const MWWorld::Ptr& ptr) const diff --git a/apps/openmw/mwclass/light.cpp b/apps/openmw/mwclass/light.cpp index 40ecf0a0f..570221503 100644 --- a/apps/openmw/mwclass/light.cpp +++ b/apps/openmw/mwclass/light.cpp @@ -94,10 +94,11 @@ namespace MWClass if (!(ref->base->data.flags & ESM::Light::Carry)) return boost::shared_ptr (new MWWorld::NullAction); - MWBase::Environment::get().getSoundManager()->playSound3D (ptr, getUpSoundId(ptr), 1.0, 1.0, MWBase::SoundManager::Play_NoTrack); + boost::shared_ptr action(new MWWorld::ActionTake (ptr)); - return boost::shared_ptr ( - new MWWorld::ActionTake (ptr)); + action->setSound(getUpSoundId(ptr)); + + return action; } std::string Light::getScript (const MWWorld::Ptr& ptr) const @@ -191,9 +192,11 @@ namespace MWClass boost::shared_ptr Light::use (const MWWorld::Ptr& ptr) const { - MWBase::Environment::get().getSoundManager()->playSound (getUpSoundId(ptr), 1.0, 1.0); + boost::shared_ptr action(new MWWorld::ActionEquip(ptr)); - return boost::shared_ptr(new MWWorld::ActionEquip(ptr)); + action->setSound(getUpSoundId(ptr)); + + return action; } MWWorld::Ptr diff --git a/apps/openmw/mwclass/lockpick.cpp b/apps/openmw/mwclass/lockpick.cpp index 8fdd95760..44498e479 100644 --- a/apps/openmw/mwclass/lockpick.cpp +++ b/apps/openmw/mwclass/lockpick.cpp @@ -5,7 +5,6 @@ #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" -#include "../mwbase/soundmanager.hpp" #include "../mwbase/windowmanager.hpp" #include "../mwworld/ptr.hpp" @@ -64,10 +63,11 @@ namespace MWClass boost::shared_ptr Lockpick::activate (const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor) const { - MWBase::Environment::get().getSoundManager()->playSound3D (ptr, getUpSoundId(ptr), 1.0, 1.0, MWBase::SoundManager::Play_NoTrack); + boost::shared_ptr action(new MWWorld::ActionTake (ptr)); - return boost::shared_ptr ( - new MWWorld::ActionTake (ptr)); + action->setSound(getUpSoundId(ptr)); + + return action; } std::string Lockpick::getScript (const MWWorld::Ptr& ptr) const @@ -160,9 +160,11 @@ namespace MWClass boost::shared_ptr Lockpick::use (const MWWorld::Ptr& ptr) const { - MWBase::Environment::get().getSoundManager()->playSound (getUpSoundId(ptr), 1.0, 1.0); + boost::shared_ptr action(new MWWorld::ActionEquip(ptr)); - return boost::shared_ptr(new MWWorld::ActionEquip(ptr)); + action->setSound(getUpSoundId(ptr)); + + return action; } MWWorld::Ptr diff --git a/apps/openmw/mwclass/misc.cpp b/apps/openmw/mwclass/misc.cpp index 2cd0f63a1..eb44b8103 100644 --- a/apps/openmw/mwclass/misc.cpp +++ b/apps/openmw/mwclass/misc.cpp @@ -7,7 +7,6 @@ #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" -#include "../mwbase/soundmanager.hpp" #include "../mwbase/windowmanager.hpp" #include "../mwworld/ptr.hpp" @@ -67,10 +66,11 @@ namespace MWClass boost::shared_ptr Miscellaneous::activate (const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor) const { - MWBase::Environment::get().getSoundManager()->playSound3D (ptr, getUpSoundId(ptr), 1.0, 1.0, MWBase::SoundManager::Play_NoTrack); + boost::shared_ptr action(new MWWorld::ActionTake (ptr)); - return boost::shared_ptr ( - new MWWorld::ActionTake (ptr)); + action->setSound(getUpSoundId(ptr)); + + return action; } std::string Miscellaneous::getScript (const MWWorld::Ptr& ptr) const diff --git a/apps/openmw/mwclass/potion.cpp b/apps/openmw/mwclass/potion.cpp index 6bff85553..8fef163b1 100644 --- a/apps/openmw/mwclass/potion.cpp +++ b/apps/openmw/mwclass/potion.cpp @@ -5,7 +5,6 @@ #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" -#include "../mwbase/soundmanager.hpp" #include "../mwbase/windowmanager.hpp" #include "../mwworld/ptr.hpp" @@ -64,10 +63,12 @@ namespace MWClass boost::shared_ptr Potion::activate (const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor) const { - MWBase::Environment::get().getSoundManager()->playSound3D (ptr, getUpSoundId(ptr), 1.0, 1.0, MWBase::SoundManager::Play_NoTrack); + boost::shared_ptr action( + new MWWorld::ActionTake (ptr)); - return boost::shared_ptr ( - new MWWorld::ActionTake (ptr)); + action->setSound (getUpSoundId(ptr)); + + return action; } std::string Potion::getScript (const MWWorld::Ptr& ptr) const diff --git a/apps/openmw/mwclass/probe.cpp b/apps/openmw/mwclass/probe.cpp index 25aae445b..73258e528 100644 --- a/apps/openmw/mwclass/probe.cpp +++ b/apps/openmw/mwclass/probe.cpp @@ -5,7 +5,6 @@ #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" -#include "../mwbase/soundmanager.hpp" #include "../mwbase/windowmanager.hpp" #include "../mwworld/ptr.hpp" @@ -63,10 +62,11 @@ namespace MWClass boost::shared_ptr Probe::activate (const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor) const { - MWBase::Environment::get().getSoundManager()->playSound3D (ptr, getUpSoundId(ptr), 1.0, 1.0, MWBase::SoundManager::Play_NoTrack); + boost::shared_ptr action(new MWWorld::ActionTake (ptr)); - return boost::shared_ptr ( - new MWWorld::ActionTake (ptr)); + action->setSound(getUpSoundId(ptr)); + + return action; } std::string Probe::getScript (const MWWorld::Ptr& ptr) const @@ -159,9 +159,11 @@ namespace MWClass boost::shared_ptr Probe::use (const MWWorld::Ptr& ptr) const { - MWBase::Environment::get().getSoundManager()->playSound (getUpSoundId(ptr), 1.0, 1.0); + boost::shared_ptr action(new MWWorld::ActionEquip(ptr)); - return boost::shared_ptr(new MWWorld::ActionEquip(ptr)); + action->setSound(getUpSoundId(ptr)); + + return action; } MWWorld::Ptr diff --git a/apps/openmw/mwclass/repair.cpp b/apps/openmw/mwclass/repair.cpp index ebba8c44e..a4240d0c4 100644 --- a/apps/openmw/mwclass/repair.cpp +++ b/apps/openmw/mwclass/repair.cpp @@ -5,7 +5,6 @@ #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" -#include "../mwbase/soundmanager.hpp" #include "../mwbase/windowmanager.hpp" #include "../mwworld/ptr.hpp" @@ -62,10 +61,11 @@ namespace MWClass boost::shared_ptr Repair::activate (const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor) const { - MWBase::Environment::get().getSoundManager()->playSound3D (ptr, getUpSoundId(ptr), 1.0, 1.0, MWBase::SoundManager::Play_NoTrack); + boost::shared_ptr action(new MWWorld::ActionTake (ptr)); - return boost::shared_ptr ( - new MWWorld::ActionTake (ptr)); + action->setSound(getUpSoundId(ptr)); + + return action; } std::string Repair::getScript (const MWWorld::Ptr& ptr) const diff --git a/apps/openmw/mwclass/weapon.cpp b/apps/openmw/mwclass/weapon.cpp index 2a9863cdf..b2397f4af 100644 --- a/apps/openmw/mwclass/weapon.cpp +++ b/apps/openmw/mwclass/weapon.cpp @@ -5,7 +5,6 @@ #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" -#include "../mwbase/soundmanager.hpp" #include "../mwbase/windowmanager.hpp" #include "../mwworld/ptr.hpp" @@ -64,10 +63,11 @@ namespace MWClass boost::shared_ptr Weapon::activate (const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor) const { - MWBase::Environment::get().getSoundManager()->playSound3D (ptr, getUpSoundId(ptr), 1.0, 1.0, MWBase::SoundManager::Play_NoTrack); + boost::shared_ptr action(new MWWorld::ActionTake (ptr)); - return boost::shared_ptr ( - new MWWorld::ActionTake (ptr)); + action->setSound(getUpSoundId(ptr)); + + return action; } bool Weapon::hasItemHealth (const MWWorld::Ptr& ptr) const @@ -360,9 +360,11 @@ namespace MWClass boost::shared_ptr Weapon::use (const MWWorld::Ptr& ptr) const { - MWBase::Environment::get().getSoundManager()->playSound (getUpSoundId(ptr), 1.0, 1.0); + boost::shared_ptr action(new MWWorld::ActionEquip(ptr)); - return boost::shared_ptr(new MWWorld::ActionEquip(ptr)); + action->setSound(getUpSoundId(ptr)); + + return action; } MWWorld::Ptr diff --git a/apps/openmw/mwworld/action.cpp b/apps/openmw/mwworld/action.cpp index c142294bb..15bae4cd4 100644 --- a/apps/openmw/mwworld/action.cpp +++ b/apps/openmw/mwworld/action.cpp @@ -11,13 +11,26 @@ MWWorld::Action::~Action() {} void MWWorld::Action::execute (const Ptr& actor) { if (!mSoundId.empty()) - MWBase::Environment::get().getSoundManager()->playSound3D (actor, mSoundId, 1.0, 1.0, - MWBase::SoundManager::Play_NoTrack); + { + if (onActor) + { + std::cout << "Douglas - Som Normal" << std::endl; + MWBase::Environment::get().getSoundManager()->playSound(mSoundId, 1.0, 1.0, + MWBase::SoundManager::Play_NoTrack); + } + else + { + std::cout << "Douglas - Som 3D" << std::endl; + MWBase::Environment::get().getSoundManager()->playSound3D (actor, mSoundId, 1.0, 1.0, + MWBase::SoundManager::Play_NoTrack); + } + } executeImp (actor); } -void MWWorld::Action::setSound (const std::string& id) +void MWWorld::Action::setSound (const std::string& id, const bool onActorValue) { mSoundId = id; + onActor = onActorValue; } diff --git a/apps/openmw/mwworld/action.hpp b/apps/openmw/mwworld/action.hpp index a00f67951..f9ad975d3 100644 --- a/apps/openmw/mwworld/action.hpp +++ b/apps/openmw/mwworld/action.hpp @@ -11,6 +11,7 @@ namespace MWWorld class Action { std::string mSoundId; + bool onActor; // not implemented Action (const Action& action); @@ -26,7 +27,7 @@ namespace MWWorld void execute (const Ptr& actor); - void setSound (const std::string& id); + void setSound (const std::string& id, const bool onActor = false); }; }