fades music in and out when switching to background, also honors g_PauseOnFocusLoss
This was SVN commit r13352.
This commit is contained in:
parent
19ce9657bc
commit
b301d5c84d
@ -19,6 +19,8 @@
|
||||
#include "Globals.h"
|
||||
|
||||
#include "lib/external_libraries/libsdl.h"
|
||||
#include "network/NetClient.h"
|
||||
#include "ps/GameSetup/Config.h"
|
||||
#include "soundmanager/SoundManager.h"
|
||||
|
||||
bool g_app_minimized = false;
|
||||
@ -70,12 +72,12 @@ InReaction GlobalsInputHandler(const SDL_Event_* ev)
|
||||
if(ev->ev.active.state & SDL_APPACTIVE)
|
||||
{
|
||||
g_app_minimized = (ev->ev.active.gain == 0); // negated
|
||||
g_SoundManager->Pause( g_app_minimized );
|
||||
g_SoundManager->Pause( g_app_minimized && g_PauseOnFocusLoss && !g_NetClient );
|
||||
}
|
||||
if(ev->ev.active.state & SDL_APPINPUTFOCUS)
|
||||
{
|
||||
g_app_has_focus = (ev->ev.active.gain != 0);
|
||||
g_SoundManager->Pause( !g_app_has_focus );
|
||||
g_SoundManager->Pause( !g_app_has_focus && g_PauseOnFocusLoss && !g_NetClient );
|
||||
}
|
||||
if(ev->ev.active.state & SDL_APPMOUSEFOCUS)
|
||||
g_mouse_active = (ev->ev.active.gain != 0);
|
||||
|
@ -146,7 +146,7 @@ private:
|
||||
if (!GetEnabled())
|
||||
continue;
|
||||
|
||||
int pauseTime = 1000;
|
||||
int pauseTime = 500;
|
||||
if ( g_SoundManager->InDistress() )
|
||||
pauseTime = 50;
|
||||
|
||||
@ -663,12 +663,17 @@ void CSoundManager::Pause(bool pauseIt)
|
||||
|
||||
void CSoundManager::PauseMusic (bool pauseIt)
|
||||
{
|
||||
if (m_CurrentTune && pauseIt)
|
||||
m_CurrentTune->Pause();
|
||||
else if ( m_CurrentTune )
|
||||
m_CurrentTune->Resume();
|
||||
|
||||
m_MusicPaused = pauseIt;
|
||||
if (m_CurrentTune && pauseIt && !m_MusicPaused )
|
||||
{
|
||||
m_CurrentTune->FadeAndPause( 1.0 );
|
||||
}
|
||||
else if ( m_CurrentTune && m_MusicPaused && !pauseIt )
|
||||
{
|
||||
m_CurrentTune->SetGain(0);
|
||||
m_CurrentTune->Resume();
|
||||
m_CurrentTune->FadeToIn( m_MusicGain, 1.0);
|
||||
}
|
||||
m_MusicPaused = pauseIt;
|
||||
}
|
||||
|
||||
void CSoundManager::PauseAmbient (bool pauseIt)
|
||||
|
@ -86,6 +86,7 @@ void CSoundBase::ResetFade()
|
||||
m_StartVolume = 0;
|
||||
m_EndVolume = 0;
|
||||
m_ShouldBePlaying = false;
|
||||
m_PauseAfterFade = false;
|
||||
}
|
||||
|
||||
|
||||
@ -238,7 +239,12 @@ bool CSoundBase::HandleFade()
|
||||
ALfloat curGain = ((m_EndVolume - m_StartVolume) * pctDone) + m_StartVolume;
|
||||
|
||||
if (curGain == 0)
|
||||
Stop();
|
||||
{
|
||||
if ( m_PauseAfterFade )
|
||||
Pause();
|
||||
else
|
||||
Stop();
|
||||
}
|
||||
else if (curGain == m_EndVolume)
|
||||
{
|
||||
if (m_ALSource != 0)
|
||||
@ -306,6 +312,11 @@ void CSoundBase::PlayAndDelete()
|
||||
Play();
|
||||
}
|
||||
|
||||
void CSoundBase::FadeAndPause(double fadeTime)
|
||||
{
|
||||
m_PauseAfterFade = true;
|
||||
FadeToIn(0, fadeTime);
|
||||
}
|
||||
|
||||
void CSoundBase::FadeAndDelete(double fadeTime)
|
||||
{
|
||||
|
@ -38,7 +38,8 @@ protected:
|
||||
bool m_LastPlay;
|
||||
bool m_Looping;
|
||||
bool m_ShouldBePlaying;
|
||||
|
||||
bool m_PauseAfterFade;
|
||||
|
||||
double m_StartFadeTime;
|
||||
double m_EndFadeTime;
|
||||
double m_TouchTime;
|
||||
@ -87,6 +88,7 @@ public:
|
||||
virtual bool IsPlaying();
|
||||
virtual void SetLocation(const CVector3D& position);
|
||||
virtual void FadeAndDelete(double fadeTime);
|
||||
virtual void FadeAndPause(double fadeTime);
|
||||
virtual bool SoundStale();
|
||||
|
||||
void Pause();
|
||||
|
@ -57,6 +57,7 @@ public:
|
||||
virtual void StopAndDelete() = 0;
|
||||
virtual void FadeToIn(ALfloat newVolume, double fadeDuration) = 0;
|
||||
virtual void FadeAndDelete(double fadeTime) = 0;
|
||||
virtual void FadeAndPause(double fadeTime) = 0;
|
||||
virtual void PlayLoop() = 0;
|
||||
|
||||
virtual void SetCone(ALfloat innerCone, ALfloat outerCone, ALfloat coneGain) = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user