diff --git a/source/frontend/StarTitleScreen.cpp b/source/frontend/StarTitleScreen.cpp index e7fa573..842efc9 100644 --- a/source/frontend/StarTitleScreen.cpp +++ b/source/frontend/StarTitleScreen.cpp @@ -126,7 +126,9 @@ void TitleScreen::update() { if (!finishedState()) { if (auto audioSample = m_musicTrackManager.updateAmbient(m_musicTrack, m_skyBackdrop->isDayTime())) { + m_currentMusicTrack = audioSample; audioSample->setMixerGroup(MixerGroup::Music); + audioSample->setLoops(0); m_mixer->play(audioSample); } } @@ -153,6 +155,8 @@ bool TitleScreen::finishedState() const { void TitleScreen::resetState() { switchState(TitleState::Main); + if (m_currentMusicTrack) + m_currentMusicTrack->setVolume(1.0f, 4.0f); } void TitleScreen::goToMultiPlayerSelectCharacter(bool skipConnection) { @@ -161,7 +165,8 @@ void TitleScreen::goToMultiPlayerSelectCharacter(bool skipConnection) { } void TitleScreen::stopMusic() { - m_musicTrackManager.cancelAll(); + if (m_currentMusicTrack) + m_currentMusicTrack->stop(8.0f); } PlayerPtr TitleScreen::currentlySelectedPlayer() const { diff --git a/source/frontend/StarTitleScreen.hpp b/source/frontend/StarTitleScreen.hpp index baad200..5ce000d 100644 --- a/source/frontend/StarTitleScreen.hpp +++ b/source/frontend/StarTitleScreen.hpp @@ -124,6 +124,7 @@ private: SkyPtr m_skyBackdrop; AmbientNoisesDescriptionPtr m_musicTrack; + AudioInstancePtr m_currentMusicTrack; AmbientManager m_musicTrackManager; };