fix: dlc world music fading out to main menu

This commit is contained in:
Fireblade
2026-08-02 19:08:14 -04:00
parent 8d3e02bc1f
commit 69009916ef
5 changed files with 48 additions and 5 deletions
+1 -1
View File
@@ -1 +1 @@
1.1.0b
1.1.1b
+38 -3
View File
@@ -472,6 +472,8 @@ SoundEngine::SoundEngine()
m_musicFadeLastUpdateTime = std::chrono::steady_clock::now();
m_bCurrentStreamIsCustom = false;
m_bCurrentStreamIsMenuMusic = true;
m_bPendingCustomMusicFade = false;
m_bPendingMenuMusicStart = false;
memset(CurrentSoundsPlaying,0,sizeof(int)*(eSoundType_MAX+eSFX_MAX));
memset(m_ListenerA,0,sizeof(AUDIO_LISTENER)*XUSER_MAX_COUNT);
@@ -854,10 +856,35 @@ void SoundEngine::playStreaming(const wstring& name, float x, float y, float z,
return;
}
bool bNextCustom = isCustomMusicRequest(name);
bool bCurrentCustom = m_musicStreamActive && m_bCurrentStreamIsCustom;
if (name.empty() && m_bPendingMenuMusicStart &&
(m_StreamState == eMusicStreamState_Playing || m_StreamState == eMusicStreamState_Fading))
{
return;
}
if(m_StreamState == eMusicStreamState_Playing)
const bool bNextCustom = isCustomMusicRequest(name);
const bool bCurrentCustom = m_musicStreamActive && m_bCurrentStreamIsCustom;
const bool bTransitioningFromCustomMusic = name.empty() && m_musicStreamActive && bCurrentCustom && !m_bCurrentStreamIsMenuMusic;
const bool bTransitioningFromNonMenuMusic = name.empty() && m_musicStreamActive && !m_bCurrentStreamIsMenuMusic;
if (bTransitioningFromNonMenuMusic && (m_StreamState == eMusicStreamState_Playing || m_StreamState == eMusicStreamState_Fading))
{
m_bPendingMenuMusicStart = true;
m_bCurrentStreamIsMenuMusic = false;
if (bTransitioningFromCustomMusic)
{
m_bPendingCustomMusicFade = true;
}
if (m_StreamState == eMusicStreamState_Playing)
{
m_StreamState = eMusicStreamState_Fading;
m_musicFadeSecondsRemaining = MUSIC_FADE_DURATION_SECONDS;
m_musicFadeLastUpdateTime = std::chrono::steady_clock::now();
}
return;
}
if (m_StreamState == eMusicStreamState_Playing)
{
if (bCurrentCustom != bNextCustom)
{
@@ -1534,7 +1561,15 @@ void SoundEngine::playMusicUpdate()
SetIsPlayingStreamingCDMusic(false);
SetIsPlayingStreamingGameMusic(false);
if (m_bPendingMenuMusicStart)
{
m_musicID = getMusicID(eMusicType_Menu);
m_bCurrentStreamIsMenuMusic = true;
m_iMusicDelay = 0;
m_bPendingMenuMusicStart = false;
}
m_StreamState = eMusicStreamState_Idle;
m_bPendingCustomMusicFade = false;
break;
case eMusicStreamState_Stopping:
break;
@@ -175,6 +175,8 @@ private:
std::chrono::steady_clock::time_point m_musicFadeLastUpdateTime;
bool m_bCurrentStreamIsCustom;
bool m_bCurrentStreamIsMenuMusic;
bool m_bPendingCustomMusicFade;
bool m_bPendingMenuMusicStart;
ma_engine m_engine;
ma_engine_config m_engineConfig;
+4 -1
View File
@@ -4571,7 +4571,10 @@ void Minecraft::setLevel(MultiPlayerLevel *level, int message /*=-1*/, shared_pt
if (hasCustomMusic || !isMenuMusic)
{
soundEngine->stopStreamingNow();
if (level != nullptr)
{
soundEngine->stopStreamingNow();
}
soundEngine->playStreaming(L"", 0, 0, 0, 1, 1);
}
}
@@ -9538,6 +9538,9 @@ All Ender Chests in a world are linked. Items placed into an Ender Chest are acc
<data name="IDS_DESC_BEETROOT_SEEDS"><value>Plant on Farmland.</value></data>
<data name="IDS_DESC_BEETROOT_SOUP"><value>Restores 3{*ICON_SHANK_01*}.</value></data>
<data name="IDS_ACHIEVE_NAME_AWARDED_ALL"><value>Awarded all achievements</value></data>
<data name="IDS_ACHIEVE_DESC_AWARDED_ALL"><value>All achievements have been awarded.</value></data>
<data name="IDS_ACHIEVE_NAME_TAKING_INVENTORY"><value>Taking Inventory</value></data>
<data name="IDS_ACHIEVE_DESC_TAKING_INVENTORY"><value>Open your inventory.</value></data>