diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index b4a2409ca7..7b3346331e 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -157,6 +157,7 @@ namespace MWSound void SoundManager::streamMusic(const std::string& filename) { + std::cout <<"Playing "<findResourceNames(Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, + "Music/"+mCurrentPlaylist+"/*"); + if(!filelist->size()) + return; + + int i = rand()%filelist->size(); + streamMusic((*filelist)[i]); } bool SoundManager::isMusicPlaying() @@ -178,8 +187,10 @@ namespace MWSound return mMusic && mMusic->isPlaying(); } - void SoundManager::playPlaylist(std::string playlist) + void SoundManager::playPlaylist(const std::string &playlist) { + mCurrentPlaylist = playlist; + startRandomTitle(); } void SoundManager::say(MWWorld::Ptr ptr, const std::string& filename) @@ -385,7 +396,7 @@ namespace MWSound timePassed = 0.0f; // Make sure music is still playing - if(!mMusic || !mMusic->isPlaying()) + if(!isMusicPlaying()) startRandomTitle(); Ogre::Camera *cam = mEnvironment.mWorld->getPlayer().getRenderer()->getCamera(); diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index 2f850b569d..206b7a1b92 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -44,6 +44,7 @@ namespace MWSound std::auto_ptr mOutput; boost::shared_ptr mMusic; + std::string mCurrentPlaylist; typedef boost::shared_ptr SoundPtr; typedef std::map IDMap; @@ -83,7 +84,7 @@ namespace MWSound bool isMusicPlaying(); ///< Returns true if music is playing - void playPlaylist(std::string playlist); + void playPlaylist(const std::string &playlist); ///< Start playing music from the selected folder /// \param name of the folder that contains the playlist