1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-04-01 03:36:40 +00:00

Do not allow Lua's "stopMusic" to interrupt MWScript's music

This commit is contained in:
Andrei Kortunov 2024-06-02 13:18:06 +04:00
parent 402e725d87
commit 7b5146e824
4 changed files with 12 additions and 1 deletions

View file

@ -115,6 +115,8 @@ namespace MWBase
virtual void stopMusic() = 0;
///< Stops music if it's playing
virtual MWSound::MusicType getMusicType() const = 0;
virtual void streamMusic(VFS::Path::NormalizedView filename, MWSound::MusicType type, float fade = 1.f) = 0;
///< Play a soundifle
/// \param filename name of a sound file in the data directory.

View file

@ -157,7 +157,13 @@ namespace MWLua
api["isMusicPlaying"] = []() { return MWBase::Environment::get().getSoundManager()->isMusicPlaying(); };
api["stopMusic"] = []() { MWBase::Environment::get().getSoundManager()->stopMusic(); };
api["stopMusic"] = []() {
MWBase::SoundManager* sndMgr = MWBase::Environment::get().getSoundManager();
if (sndMgr->getMusicType() == MWSound::MusicType::MWScript)
return;
sndMgr->stopMusic();
};
lua["openmw_ambient"] = LuaUtil::makeReadOnly(api);
return lua["openmw_ambient"];

View file

@ -1257,6 +1257,7 @@ namespace MWSound
void SoundManager::clear()
{
stopMusic();
mMusicType = MusicType::Normal;
for (SoundMap::value_type& snd : mActiveSounds)
{

View file

@ -169,6 +169,8 @@ namespace MWSound
void stopMusic() override;
///< Stops music if it's playing
MWSound::MusicType getMusicType() const override { return mMusicType; }
void streamMusic(VFS::Path::NormalizedView filename, MWSound::MusicType type, float fade = 1.f) override;
///< Play a soundifle
/// \param filename name of a sound file in the data directory.