1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-02-22 13:09:41 +00:00

Play the item up/down sound when readying/unreadying weapons

This commit is contained in:
Chris Robinson 2013-05-15 01:45:47 -07:00
parent b459a010b0
commit 66f55b3178

View file

@ -29,6 +29,7 @@
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include "../mwbase/soundmanager.hpp"
#include "../mwworld/player.hpp" #include "../mwworld/player.hpp"
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
@ -346,13 +347,14 @@ void CharacterController::update(float duration, Movement &movement)
{ {
NpcStats &stats = cls.getNpcStats(mPtr); NpcStats &stats = cls.getNpcStats(mPtr);
WeaponType weaptype = WeapType_None; WeaponType weaptype = WeapType_None;
MWWorld::InventoryStore &inv = cls.getInventoryStore(mPtr);
MWWorld::ContainerStoreIterator weapon = inv.end();
if(stats.getDrawState() == DrawState_Spell) if(stats.getDrawState() == DrawState_Spell)
weaptype = WeapType_Spell; weaptype = WeapType_Spell;
else if(stats.getDrawState() == MWMechanics::DrawState_Weapon) else if(stats.getDrawState() == MWMechanics::DrawState_Weapon)
{ {
MWWorld::InventoryStore &inv = cls.getInventoryStore(mPtr); weapon = inv.getSlot(MWWorld::InventoryStore::Slot_CarriedRight);
MWWorld::ContainerStoreIterator weapon = inv.getSlot(MWWorld::InventoryStore::Slot_CarriedRight);
if(weapon == inv.end()) if(weapon == inv.end())
weaptype = WeapType_HandToHand; weaptype = WeapType_HandToHand;
else else
@ -396,6 +398,8 @@ void CharacterController::update(float duration, Movement &movement)
} }
} }
} }
else
weapon = inv.getSlot(MWWorld::InventoryStore::Slot_CarriedRight);
if(weaptype != mWeaponType) if(weaptype != mWeaponType)
{ {
@ -418,6 +422,18 @@ void CharacterController::update(float duration, Movement &movement)
mWeaponType = weaptype; mWeaponType = weaptype;
forceStateUpdate(); forceStateUpdate();
if(weapon != inv.end())
{
std::string soundid = (mWeaponType == WeapType_None) ?
MWWorld::Class::get(*weapon).getDownSoundId(*weapon) :
MWWorld::Class::get(*weapon).getUpSoundId(*weapon);
if(!soundid.empty())
{
MWBase::SoundManager *sndMgr = MWBase::Environment::get().getSoundManager();
sndMgr->playSound3D(mPtr, soundid, 1.0f, 1.0f);
}
}
} }
} }
} }