fix: dlc world music fading out to main menu
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user