Add ScreenExit.

This commit is contained in:
Glenn Maynard
2003-09-27 00:14:38 +00:00
parent c3df5b5984
commit 2903e02f74
4 changed files with 78 additions and 0 deletions
+2
View File
@@ -298,6 +298,7 @@ void Screen::ClearMessageQueue( const ScreenMessage SM )
#include "ScreenSelectMaster.h"
#include "ScreenEditCoursesMenu.h"
#include "ScreenProfileOptions.h"
#include "ScreenExit.h"
Screen* Screen::Create( CString sClassName )
{
@@ -366,6 +367,7 @@ Screen* Screen::Create( CString sClassName )
IF_RETURN( ScreenSelectMaster );
IF_RETURN( ScreenEditCoursesMenu );
IF_RETURN( ScreenProfileOptions );
IF_RETURN( ScreenExit );
RageException::Throw( "Invalid Screen class name '%s'", sClassName.c_str() );
}
+52
View File
@@ -0,0 +1,52 @@
#include "global.h"
#include "ScreenExit.h"
#include "RageUtil.h"
#include "RageSoundManager.h"
#include "RageSounds.h"
#include "RageSound.h"
#include "RageLog.h"
#include "StepMania.h"
ScreenExit::ScreenExit(): Screen("ScreenExit")
{
m_Exited = false;
/* It'd be better for any previous screen playing music to fade it out as it fades
* out the screen. XXX: Check to see if it's fading out; if it'll stop playing in
* reasonable time, let it. */
SOUND->StopMusic();
}
void ScreenExit::Update( float fDelta )
{
if( m_Exited )
return;
/* Grab the list of playing sounds, and see if it's empty. */
const set<RageSound *> &PlayingSounds = SOUNDMAN->GetPlayingSounds();
bool DoQuit = PlayingSounds.empty();
/* As a safety precaution, don't wait indefinitely, in case some sound was
* inadvertently set to play too long. */
if( !DoQuit && m_ShutdownTimer.PeekDeltaTime() > 3 )
{
DoQuit = true;
CString warn = ssprintf("ScreenExit: %i sound%s failed to finish playing quickly: ",
PlayingSounds.size() );
for( set<RageSound *>::const_iterator i = PlayingSounds.begin();
i != PlayingSounds.end(); ++i )
{
warn += (*i)->GetLoadedFilePath() + "; ";
}
LOG->Warn("%s", warn.c_str() );
}
if( DoQuit )
{
m_Exited = true;
LOG->Trace("ScreenExit: shutting down");
ExitGame();
}
}
+18
View File
@@ -0,0 +1,18 @@
#ifndef SCREEN_EXIT_H
#define SCREEN_EXIT_H
#include "Screen.h"
#include "RageTimer.h"
class ScreenExit: public Screen
{
bool m_Exited;
RageTimer m_ShutdownTimer;
public:
ScreenExit();
void Update( float fDelta );
};
#endif
+6
View File
@@ -247,6 +247,12 @@ cl /Zl /nologo /c verstub.cpp /Fo&quot;$(IntDir)&quot;\
<File
RelativePath="ScreenEvaluation.h">
</File>
<File
RelativePath="ScreenExit.cpp">
</File>
<File
RelativePath="ScreenExit.h">
</File>
<File
RelativePath="ScreenEz2SelectMusic.cpp">
</File>