self-registering screen classes

This commit is contained in:
Chris Danford
2004-11-26 17:28:47 +00:00
parent b333841085
commit 7f336c2ce6
74 changed files with 147 additions and 43 deletions
+2
View File
@@ -271,9 +271,11 @@ Actor* MakeActor( const RageTextureID &ID )
return pBGA; return pBGA;
} }
else else
{
RageException::Throw("File \"%s\" has unknown type, \"%s\"", RageException::Throw("File \"%s\" has unknown type, \"%s\"",
ID.filename.c_str(), sExt.c_str() ); ID.filename.c_str(), sExt.c_str() );
} }
}
void UtilSetXY( Actor& actor, const CString &sClassName ) void UtilSetXY( Actor& actor, const CString &sClassName )
{ {
+10 -2
View File
@@ -9,7 +9,16 @@
#include "GameInput.h" #include "GameInput.h"
#include "MenuInput.h" #include "MenuInput.h"
#include "StyleInput.h" #include "StyleInput.h"
#include "ScreenManager.h"
// Each Screen class should have a REGISTER_SCREEN_CLASS in its CPP file.
#define REGISTER_SCREEN_CLASS( className ) \
Screen* Create##className( const CString &sName ) { return new className( sName ); } \
class Register##className { \
public: \
Register##className() { SCREENMAN->Register(#className,Create##className); } \
}; \
static Register##className registera;
class Screen : public ActorFrame class Screen : public ActorFrame
{ {
@@ -21,13 +30,12 @@ public:
virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI );
virtual void HandleScreenMessage( const ScreenMessage SM ); virtual void HandleScreenMessage( const ScreenMessage SM );
void PostScreenMessage( const ScreenMessage SM, const float fDelay ); void PostScreenMessage( const ScreenMessage SM, float fDelay );
void ClearMessageQueue(); void ClearMessageQueue();
void ClearMessageQueue( const ScreenMessage SM ); // clear of a specific SM void ClearMessageQueue( const ScreenMessage SM ); // clear of a specific SM
bool IsTransparent() const { return m_bIsTransparent; } bool IsTransparent() const { return m_bIsTransparent; }
static Screen* Create( CString sClassName );
static bool ChangeCoinModeInput( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); // return true if CoinMode changed static bool ChangeCoinModeInput( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); // return true if CoinMode changed
static bool JoinInput( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); // return true if a player joined static bool JoinInput( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); // return true if a player joined
+1
View File
@@ -19,6 +19,7 @@
#define NEXT_SCREEN THEME->GetMetric (m_sName,"NextScreen") #define NEXT_SCREEN THEME->GetMetric (m_sName,"NextScreen")
REGISTER_SCREEN_CLASS( ScreenAttract );
ScreenAttract::ScreenAttract( CString sName, bool bResetGameState ) : Screen( sName ) ScreenAttract::ScreenAttract( CString sName, bool bResetGameState ) : Screen( sName )
{ {
LOG->Trace( "ScreenAttract::ScreenAttract(%s)", m_sName.c_str() ); LOG->Trace( "ScreenAttract::ScreenAttract(%s)", m_sName.c_str() );
+1 -2
View File
@@ -11,7 +11,7 @@
class ScreenAttract : public Screen class ScreenAttract : public Screen
{ {
public: public:
ScreenAttract( CString sClassName, bool bResetGameState=true ); ScreenAttract( CString sName, bool bResetGameState=true );
virtual ~ScreenAttract(); virtual ~ScreenAttract();
virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI );
@@ -20,7 +20,6 @@ public:
virtual void HandleScreenMessage( const ScreenMessage SM ); virtual void HandleScreenMessage( const ScreenMessage SM );
protected: protected:
BGAnimation m_Background; BGAnimation m_Background;
Transition m_In; Transition m_In;
Transition m_Out; Transition m_Out;
+1
View File
@@ -15,6 +15,7 @@
#include "ScreenDimensions.h" #include "ScreenDimensions.h"
REGISTER_SCREEN_CLASS( ScreenBookkeeping );
ScreenBookkeeping::ScreenBookkeeping( CString sClassName ) : ScreenWithMenuElements( sClassName ) ScreenBookkeeping::ScreenBookkeeping( CString sClassName ) : ScreenWithMenuElements( sClassName )
{ {
LOG->Trace( "ScreenBookkeeping::ScreenBookkeeping()" ); LOG->Trace( "ScreenBookkeeping::ScreenBookkeeping()" );
+1
View File
@@ -11,6 +11,7 @@
#define CONDITION(choice) THEME->GetMetric (m_sName,"Condition"+choice) #define CONDITION(choice) THEME->GetMetric (m_sName,"Condition"+choice)
#define NEXT_SCREEN(choice) THEME->GetMetric (m_sName,"NextScreen"+choice) #define NEXT_SCREEN(choice) THEME->GetMetric (m_sName,"NextScreen"+choice)
REGISTER_SCREEN_CLASS( ScreenBranch );
ScreenBranch::ScreenBranch( CString sClassName ) : Screen( sClassName ) ScreenBranch::ScreenBranch( CString sClassName ) : Screen( sClassName )
{ {
LOG->Trace( "ScreenBranch::ScreenBranch()" ); LOG->Trace( "ScreenBranch::ScreenBranch()" );
+1 -1
View File
@@ -7,7 +7,6 @@
#include "GameSoundManager.h" #include "GameSoundManager.h"
#include "ThemeManager.h" #include "ThemeManager.h"
#define NEXT_SCREEN THEME->GetMetric(m_sName,"NextScreen") #define NEXT_SCREEN THEME->GetMetric(m_sName,"NextScreen")
@@ -15,6 +14,7 @@ const ScreenMessage SM_DoneOpening = ScreenMessage(SM_User-7);
const ScreenMessage SM_StartClosing = ScreenMessage(SM_User-8); const ScreenMessage SM_StartClosing = ScreenMessage(SM_User-8);
REGISTER_SCREEN_CLASS( ScreenCaution );
ScreenCaution::ScreenCaution( CString sName ) : Screen( sName ) ScreenCaution::ScreenCaution( CString sName ) : Screen( sName )
{ {
if(!PREFSMAN->m_bShowDontDie) if(!PREFSMAN->m_bShowDontDie)
+1
View File
@@ -10,6 +10,7 @@
#include "HelpDisplay.h" #include "HelpDisplay.h"
#include "ScreenDimensions.h" #include "ScreenDimensions.h"
REGISTER_SCREEN_CLASS( ScreenCenterImage );
ScreenCenterImage::ScreenCenterImage( CString sClassName ) : ScreenWithMenuElements( sClassName ) ScreenCenterImage::ScreenCenterImage( CString sClassName ) : ScreenWithMenuElements( sClassName )
{ {
LOG->Trace( "ScreenCenterImage::ScreenCenterImage()" ); LOG->Trace( "ScreenCenterImage::ScreenCenterImage()" );
@@ -6,6 +6,7 @@
#define NEXT_SCREEN THEME->GetMetric(m_sName,"NextScreen") #define NEXT_SCREEN THEME->GetMetric(m_sName,"NextScreen")
REGISTER_SCREEN_CLASS( ScreenClearBookkeepingData );
ScreenClearBookkeepingData::ScreenClearBookkeepingData( CString sName ): Screen( sName ) ScreenClearBookkeepingData::ScreenClearBookkeepingData( CString sName ): Screen( sName )
{ {
BOOKKEEPER->ClearAll(); BOOKKEEPER->ClearAll();
@@ -6,6 +6,7 @@
#define NEXT_SCREEN THEME->GetMetric(m_sName,"NextScreen") #define NEXT_SCREEN THEME->GetMetric(m_sName,"NextScreen")
REGISTER_SCREEN_CLASS( ScreenClearMachineStats );
ScreenClearMachineStats::ScreenClearMachineStats( CString sName ): Screen( sName ) ScreenClearMachineStats::ScreenClearMachineStats( CString sName ): Screen( sName )
{ {
Profile* pProfile = PROFILEMAN->GetMachineProfile(); Profile* pProfile = PROFILEMAN->GetMachineProfile();
+1
View File
@@ -156,6 +156,7 @@ static const CreditLine CREDIT_LINES[] =
{1,"and help us out!"}, {1,"and help us out!"},
}; };
REGISTER_SCREEN_CLASS( ScreenCredits );
ScreenCredits::ScreenCredits( CString sName ) : ScreenAttract( sName ) ScreenCredits::ScreenCredits( CString sName ) : ScreenAttract( sName )
{ {
vector<Song*> arraySongs; vector<Song*> arraySongs;
+1
View File
@@ -33,6 +33,7 @@ bool PrepareForDemonstration() // always return true.
return true; return true;
} }
REGISTER_SCREEN_CLASS( ScreenDemonstration );
ScreenDemonstration::ScreenDemonstration( CString sName ) : ScreenJukebox( sName, PrepareForDemonstration() ) // this is a hack to get some code to execute before the ScreenGameplay constructor ScreenDemonstration::ScreenDemonstration( CString sName ) : ScreenJukebox( sName, PrepareForDemonstration() ) // this is a hack to get some code to execute before the ScreenGameplay constructor
{ {
LOG->Trace( "ScreenDemonstration::ScreenDemonstration()" ); LOG->Trace( "ScreenDemonstration::ScreenDemonstration()" );
@@ -34,6 +34,7 @@ static void SaveMachineStatsToFirstMemCard()
SCREENMAN->SystemMessage( "Stats not saved - No memory cards ready." ); SCREENMAN->SystemMessage( "Stats not saved - No memory cards ready." );
} }
REGISTER_SCREEN_CLASS( ScreenDownloadMachineStats );
ScreenDownloadMachineStats::ScreenDownloadMachineStats( CString sName ): Screen( sName ) ScreenDownloadMachineStats::ScreenDownloadMachineStats( CString sName ): Screen( sName )
{ {
SaveMachineStatsToFirstMemCard(); SaveMachineStatsToFirstMemCard();
+1 -1
View File
@@ -26,7 +26,6 @@
#include "ScreenDimensions.h" #include "ScreenDimensions.h"
#include "ThemeMetric.h" #include "ThemeMetric.h"
const float RECORD_HOLD_SECONDS = 0.3f; const float RECORD_HOLD_SECONDS = 0.3f;
@@ -376,6 +375,7 @@ DeviceInput TranslateInput(const DeviceInput& DeviceI, const InputEventType type
} }
#endif #endif
REGISTER_SCREEN_CLASS( ScreenEdit );
ScreenEdit::ScreenEdit( CString sName ) : Screen( sName ) ScreenEdit::ScreenEdit( CString sName ) : Screen( sName )
{ {
LOG->Trace( "ScreenEdit::ScreenEdit()" ); LOG->Trace( "ScreenEdit::ScreenEdit()" );
+1
View File
@@ -17,6 +17,7 @@
const ScreenMessage SM_RefreshSelector = (ScreenMessage)(SM_User+1); const ScreenMessage SM_RefreshSelector = (ScreenMessage)(SM_User+1);
REGISTER_SCREEN_CLASS( ScreenEditCoursesMenu );
ScreenEditCoursesMenu::ScreenEditCoursesMenu( CString sName ) : ScreenWithMenuElements( sName ) ScreenEditCoursesMenu::ScreenEditCoursesMenu( CString sName ) : ScreenWithMenuElements( sName )
{ {
LOG->Trace( "ScreenEditCoursesMenu::ScreenEditCoursesMenu()" ); LOG->Trace( "ScreenEditCoursesMenu::ScreenEditCoursesMenu()" );
+1 -1
View File
@@ -13,12 +13,12 @@
#include "Steps.h" #include "Steps.h"
#include "song.h" #include "song.h"
#define EXPLANATION_TEXT THEME->GetMetric(m_sName,"ExplanationText") #define EXPLANATION_TEXT THEME->GetMetric(m_sName,"ExplanationText")
#define HELP_TEXT THEME->GetMetric(m_sName,"HelpText") #define HELP_TEXT THEME->GetMetric(m_sName,"HelpText")
const ScreenMessage SM_RefreshSelector = (ScreenMessage)(SM_User+1); const ScreenMessage SM_RefreshSelector = (ScreenMessage)(SM_User+1);
REGISTER_SCREEN_CLASS( ScreenEditMenu );
ScreenEditMenu::ScreenEditMenu( CString sName ) : ScreenWithMenuElements( sName ) ScreenEditMenu::ScreenEditMenu( CString sName ) : ScreenWithMenuElements( sName )
{ {
LOG->Trace( "ScreenEditMenu::ScreenEditMenu()" ); LOG->Trace( "ScreenEditMenu::ScreenEditMenu()" );
+1
View File
@@ -133,6 +133,7 @@ CString GetStatsLineValue( PlayerNumber pn, EndingStatsLine line )
} }
REGISTER_SCREEN_CLASS( ScreenEnding );
ScreenEnding::ScreenEnding( CString sClassName ) : ScreenAttract( sClassName, false/*dont reset GAMESTATE*/ ) ScreenEnding::ScreenEnding( CString sClassName ) : ScreenAttract( sClassName, false/*dont reset GAMESTATE*/ )
{ {
if( PREFSMAN->m_bScreenTestMode ) if( PREFSMAN->m_bScreenTestMode )
+1
View File
@@ -6,6 +6,7 @@
//TODO:: Add scripting support //TODO:: Add scripting support
REGISTER_SCREEN_CLASS( ScreenEndlessBreak );
ScreenEndlessBreak::ScreenEndlessBreak( CString sName ) : Screen( sName ) ScreenEndlessBreak::ScreenEndlessBreak( CString sName ) : Screen( sName )
{ {
LOG->Trace("ScreenEndlessBreak()"); LOG->Trace("ScreenEndlessBreak()");
+1
View File
@@ -83,6 +83,7 @@ static const int NUM_SHOWN_RADAR_CATEGORIES = 5;
const ScreenMessage SM_PlayCheer = ScreenMessage(SM_User+6); const ScreenMessage SM_PlayCheer = ScreenMessage(SM_User+6);
REGISTER_SCREEN_CLASS( ScreenEvaluation );
ScreenEvaluation::ScreenEvaluation( CString sClassName ) : ScreenWithMenuElements(sClassName) ScreenEvaluation::ScreenEvaluation( CString sClassName ) : ScreenWithMenuElements(sClassName)
{ {
LOG->Trace( "ScreenEvaluation::ScreenEvaluation" ); LOG->Trace( "ScreenEvaluation::ScreenEvaluation" );
+1
View File
@@ -11,6 +11,7 @@
* is annoying, because sounds might be deleted at any time; they aren't ours to have * is annoying, because sounds might be deleted at any time; they aren't ours to have
* references to. Also, it's better to quit on command instead of waiting several seconds * references to. Also, it's better to quit on command instead of waiting several seconds
* for a sound to stop. */ * for a sound to stop. */
REGISTER_SCREEN_CLASS( ScreenExit );
ScreenExit::ScreenExit( CString sName ): Screen( sName ) ScreenExit::ScreenExit( CString sName ): Screen( sName )
{ {
m_Exited = false; m_Exited = false;
+1
View File
@@ -62,6 +62,7 @@ const float TWEEN_TIME = 0.5f;
const ScreenMessage SM_NoSongs = ScreenMessage(SM_User+3); const ScreenMessage SM_NoSongs = ScreenMessage(SM_User+3);
REGISTER_SCREEN_CLASS( ScreenEz2SelectMusic );
ScreenEz2SelectMusic::ScreenEz2SelectMusic( CString sName ) : ScreenWithMenuElements( sName ) ScreenEz2SelectMusic::ScreenEz2SelectMusic( CString sName ) : ScreenWithMenuElements( sName )
{ {
/* Finish any previous stage. It's OK to call this when we havn't played a stage yet. */ /* Finish any previous stage. It's OK to call this when we havn't played a stage yet. */
+1 -3
View File
@@ -16,9 +16,6 @@
#include "ScreenDimensions.h" #include "ScreenDimensions.h"
/* Constants */ /* Constants */
#define JOIN_FRAME_X( p ) THEME->GetMetricF("ScreenEz2SelectPlayer",ssprintf("JoinFrameP%dX",p+1)) #define JOIN_FRAME_X( p ) THEME->GetMetricF("ScreenEz2SelectPlayer",ssprintf("JoinFrameP%dX",p+1))
#define JOIN_FRAME_Y( i ) THEME->GetMetricF("ScreenEz2SelectPlayer",ssprintf("JoinFrameP%dY",i+1)) #define JOIN_FRAME_Y( i ) THEME->GetMetricF("ScreenEz2SelectPlayer",ssprintf("JoinFrameP%dY",i+1))
#define JOIN_MESSAGE_X( p ) THEME->GetMetricF("ScreenEz2SelectPlayer",ssprintf("JoinMessageP%dX",p+1)) #define JOIN_MESSAGE_X( p ) THEME->GetMetricF("ScreenEz2SelectPlayer",ssprintf("JoinMessageP%dX",p+1))
@@ -38,6 +35,7 @@ ScreenEz2SelectPlayer (Constructor)
Desc: Sets up the screen display Desc: Sets up the screen display
************************************/ ************************************/
REGISTER_SCREEN_CLASS( ScreenEz2SelectPlayer );
ScreenEz2SelectPlayer::ScreenEz2SelectPlayer( CString sName ) : ScreenWithMenuElements( sName ) ScreenEz2SelectPlayer::ScreenEz2SelectPlayer( CString sName ) : ScreenWithMenuElements( sName )
{ {
// Unjoin the players, then let them join back in on this screen // Unjoin the players, then let them join back in on this screen
+1 -1
View File
@@ -5,7 +5,6 @@
#include "GameSoundManager.h" #include "GameSoundManager.h"
#include "ThemeManager.h" #include "ThemeManager.h"
const ScreenMessage SM_StartFadingOut = ScreenMessage(SM_User + 1); const ScreenMessage SM_StartFadingOut = ScreenMessage(SM_User + 1);
const ScreenMessage SM_PlayAnnouncer = ScreenMessage(SM_User + 3); const ScreenMessage SM_PlayAnnouncer = ScreenMessage(SM_User + 3);
@@ -13,6 +12,7 @@ const ScreenMessage SM_PlayAnnouncer = ScreenMessage(SM_User + 3);
#define NEXT_SCREEN THEME->GetMetric("ScreenGameOver","NextScreen") #define NEXT_SCREEN THEME->GetMetric("ScreenGameOver","NextScreen")
REGISTER_SCREEN_CLASS( ScreenGameOver );
ScreenGameOver::ScreenGameOver( CString sName ) : Screen( sName ) ScreenGameOver::ScreenGameOver( CString sName ) : Screen( sName )
{ {
m_Background.LoadFromAniDir( THEME->GetPathToB("ScreenGameOver background") ); m_Background.LoadFromAniDir( THEME->GetPathToB("ScreenGameOver background") );
+1
View File
@@ -84,6 +84,7 @@ const ScreenMessage SM_StartHereWeGo = ScreenMessage(SM_User+40);
const ScreenMessage SM_StopHereWeGo = ScreenMessage(SM_User+41); const ScreenMessage SM_StopHereWeGo = ScreenMessage(SM_User+41);
REGISTER_SCREEN_CLASS( ScreenGameplay );
ScreenGameplay::ScreenGameplay( CString sName, bool bDemonstration ) : Screen(sName) ScreenGameplay::ScreenGameplay( CString sName, bool bDemonstration ) : Screen(sName)
{ {
m_bDemonstration = bDemonstration; m_bDemonstration = bDemonstration;
+1
View File
@@ -65,6 +65,7 @@ static bool HaveAllCharAnimations()
return true; return true;
} }
REGISTER_SCREEN_CLASS( ScreenHowToPlay );
ScreenHowToPlay::ScreenHowToPlay( CString sName ) : ScreenAttract( sName ) ScreenHowToPlay::ScreenHowToPlay( CString sName ) : ScreenAttract( sName )
{ {
m_iPerfects = 0; m_iPerfects = 0;
+1
View File
@@ -14,6 +14,7 @@ static void SaveMachineStatsToFirstMemCard()
InsertCredit(); InsertCredit();
} }
REGISTER_SCREEN_CLASS( ScreenInsertCredit );
ScreenInsertCredit::ScreenInsertCredit( CString sName ): Screen( sName ) ScreenInsertCredit::ScreenInsertCredit( CString sName ): Screen( sName )
{ {
SaveMachineStatsToFirstMemCard(); SaveMachineStatsToFirstMemCard();
+1
View File
@@ -11,6 +11,7 @@
#include "ScreenDimensions.h" #include "ScreenDimensions.h"
REGISTER_SCREEN_CLASS( ScreenInstructions );
ScreenInstructions::ScreenInstructions( CString sName ) : ScreenWithMenuElements( sName ) ScreenInstructions::ScreenInstructions( CString sName ) : ScreenWithMenuElements( sName )
{ {
LOG->Trace( "ScreenInstructions::ScreenInstructions()" ); LOG->Trace( "ScreenInstructions::ScreenInstructions()" );
+1
View File
@@ -21,6 +21,7 @@
const ScreenMessage SM_NotesEnded = ScreenMessage(SM_User+10); // MUST be same as in ScreenGameplay const ScreenMessage SM_NotesEnded = ScreenMessage(SM_User+10); // MUST be same as in ScreenGameplay
REGISTER_SCREEN_CLASS( ScreenJukebox );
bool ScreenJukebox::SetSong( bool bDemonstration ) bool ScreenJukebox::SetSong( bool bDemonstration )
{ {
vector<Song*> vSongs; vector<Song*> vSongs;
+1
View File
@@ -18,6 +18,7 @@
#define EXPLANATION_TEXT THEME->GetMetric("ScreenJukeboxMenu","ExplanationText") #define EXPLANATION_TEXT THEME->GetMetric("ScreenJukeboxMenu","ExplanationText")
REGISTER_SCREEN_CLASS( ScreenJukeboxMenu );
ScreenJukeboxMenu::ScreenJukeboxMenu( CString sClassName ) : ScreenWithMenuElements( sClassName ) ScreenJukeboxMenu::ScreenJukeboxMenu( CString sClassName ) : ScreenWithMenuElements( sClassName )
{ {
LOG->Trace( "ScreenJukeboxMenu::ScreenJukeboxMenu()" ); LOG->Trace( "ScreenJukeboxMenu::ScreenJukeboxMenu()" );
+1
View File
@@ -5,6 +5,7 @@
#include "GameState.h" #include "GameState.h"
#include "Game.h" #include "Game.h"
REGISTER_SCREEN_CLASS( ScreenLogo );
ScreenLogo::ScreenLogo( CString sName ) : ScreenAttract( sName ) ScreenLogo::ScreenLogo( CString sName ) : ScreenAttract( sName )
{ {
m_sprLogo.SetName( "Logo" ); m_sprLogo.SetName( "Logo" );
+37 -10
View File
@@ -32,6 +32,22 @@
ScreenManager* SCREENMAN = NULL; // global and accessable from anywhere in our program ScreenManager* SCREENMAN = NULL; // global and accessable from anywhere in our program
// Screen registration
static map<CString,CreateScreenFn> *g_pmapRegistrees = NULL;
void ScreenManager::Register( const CString& sClassName, CreateScreenFn pfn )
{
if( g_pmapRegistrees == NULL )
g_pmapRegistrees = new map<CString,CreateScreenFn>;
map<CString,CreateScreenFn>::iterator iter = g_pmapRegistrees->find( sClassName );
ASSERT_M( iter == g_pmapRegistrees->end(), ssprintf("Screen class '%s' already registered.") );
(*g_pmapRegistrees)[sClassName] = pfn;
}
ScreenManager::ScreenManager() ScreenManager::ScreenManager()
{ {
m_SystemLayer = NULL; m_SystemLayer = NULL;
@@ -186,7 +202,7 @@ void ScreenManager::Input( const DeviceInput& DeviceI, const InputEventType type
} }
Screen* ScreenManager::MakeNewScreen( CString sClassName ) Screen* ScreenManager::MakeNewScreen( const CString &sName )
{ {
/* By default, RageSounds handles the song timer. When we change screens, reset this; /* By default, RageSounds handles the song timer. When we change screens, reset this;
* screens turn this off in SM_GainFocus if they handle timers themselves (edit). * screens turn this off in SM_GainFocus if they handle timers themselves (edit).
@@ -198,9 +214,20 @@ Screen* ScreenManager::MakeNewScreen( CString sClassName )
SONGMAN->Cleanup(); SONGMAN->Cleanup();
RageTimer t; RageTimer t;
LOG->Trace( "Loading screen %s", sClassName.c_str() ); LOG->Trace( "Loading screen name '%s'", sName.c_str() );
Screen *ret = Screen::Create( sClassName );
LOG->Trace( "Loaded %s in %f", sClassName.c_str(), t.GetDeltaTime()); CString sClassName = sName;
// Look up the class in the metrics group sName
if( THEME->HasMetric(sClassName,"Class") )
sClassName = THEME->GetMetric(sClassName,"Class");
map<CString,CreateScreenFn>::iterator iter = g_pmapRegistrees->find( sClassName );
ASSERT_M( iter != g_pmapRegistrees->end(), ssprintf("Screen '%s' has an invalid class '%s'",sName.c_str(),sClassName.c_str()) )
CreateScreenFn pfn = iter->second;
Screen* ret = pfn( sName );
LOG->Trace( "Loaded '%s' ('%s') in %f", sName.c_str(), sClassName.c_str(), t.GetDeltaTime());
/* Loading probably took a little while. Let's reset stats. This prevents us /* Loading probably took a little while. Let's reset stats. This prevents us
* from displaying an unnaturally low FPS value, and the next FPS value we * from displaying an unnaturally low FPS value, and the next FPS value we
@@ -211,7 +238,7 @@ Screen* ScreenManager::MakeNewScreen( CString sClassName )
return ret; return ret;
} }
void ScreenManager::PrepNewScreen( CString sClassName ) void ScreenManager::PrepNewScreen( const CString &sClassName )
{ {
ASSERT(m_ScreenBuffered == NULL); ASSERT(m_ScreenBuffered == NULL);
m_ScreenBuffered = MakeNewScreen(sClassName); m_ScreenBuffered = MakeNewScreen(sClassName);
@@ -258,7 +285,7 @@ void ScreenManager::SetFromNewScreen( Screen *pNewScreen, bool Stack )
PostMessageToTopScreen( SM_GainFocus, 0 ); PostMessageToTopScreen( SM_GainFocus, 0 );
} }
void ScreenManager::SetNewScreen( CString sClassName ) void ScreenManager::SetNewScreen( const CString &sClassName )
{ {
m_DelayedScreen = sClassName; m_DelayedScreen = sClassName;
@@ -328,7 +355,7 @@ retry:
SetFromNewScreen( pNewScreen, false ); SetFromNewScreen( pNewScreen, false );
} }
void ScreenManager::AddNewScreenToTop( CString sClassName, ScreenMessage messageSendOnPop ) void ScreenManager::AddNewScreenToTop( const CString &sClassName, ScreenMessage messageSendOnPop )
{ {
/* Send this before making the new screen, since it might set things that will be re-set /* Send this before making the new screen, since it might set things that will be re-set
* in the new screen's ctor. */ * in the new screen's ctor. */
@@ -344,7 +371,7 @@ void ScreenManager::AddNewScreenToTop( CString sClassName, ScreenMessage message
#include "ScreenTextEntry.h" #include "ScreenTextEntry.h"
#include "ScreenMiniMenu.h" #include "ScreenMiniMenu.h"
void ScreenManager::Prompt( ScreenMessage SM_SendWhenDone, CString sText, bool bYesNo, bool bDefaultAnswer, void(*OnYes)(void*), void(*OnNo)(void*), void* pCallbackData ) void ScreenManager::Prompt( ScreenMessage SM_SendWhenDone, const CString &sText, bool bYesNo, bool bDefaultAnswer, void(*OnYes)(void*), void(*OnNo)(void*), void* pCallbackData )
{ {
if( m_ScreenStack.size() ) if( m_ScreenStack.size() )
m_ScreenStack.back()->HandleScreenMessage( SM_LoseFocus ); m_ScreenStack.back()->HandleScreenMessage( SM_LoseFocus );
@@ -410,13 +437,13 @@ void ScreenManager::SendMessageToTopScreen( ScreenMessage SM )
} }
void ScreenManager::SystemMessage( CString sMessage ) void ScreenManager::SystemMessage( const CString &sMessage )
{ {
LOG->Trace( "%s", sMessage.c_str() ); LOG->Trace( "%s", sMessage.c_str() );
m_SystemLayer->SystemMessage( sMessage ); m_SystemLayer->SystemMessage( sMessage );
} }
void ScreenManager::SystemMessageNoAnimate( CString sMessage ) void ScreenManager::SystemMessageNoAnimate( const CString &sMessage )
{ {
// LOG->Trace( "%s", sMessage.c_str() ); // don't log because the caller is likely calling us every frame // LOG->Trace( "%s", sMessage.c_str() ); // don't log because the caller is likely calling us every frame
m_SystemLayer->SystemMessageNoAnimate( sMessage ); m_SystemLayer->SystemMessageNoAnimate( sMessage );
+16 -9
View File
@@ -1,7 +1,7 @@
/* ScreenManager - Manager/container for Screens. */ /* ScreenManager - Manager/container for Screens. */
#ifndef SCREENMANAGER_H #ifndef ScreenManager_H
#define SCREENMANAGER_H #define ScreenManager_H
#include "RageInputDevice.h" #include "RageInputDevice.h"
#include "ScreenMessage.h" #include "ScreenMessage.h"
@@ -17,9 +17,15 @@ struct Menu;
class ScreenSystemLayer; class ScreenSystemLayer;
typedef Screen* (*CreateScreenFn)(const CString&);
class ScreenManager class ScreenManager
{ {
public: public:
// Every screen should register its class at program initialization.
static void Register( const CString& sClassName, CreateScreenFn pfn );
ScreenManager(); ScreenManager();
~ScreenManager(); ~ScreenManager();
@@ -28,17 +34,17 @@ public:
void Draw(); void Draw();
void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI );
void PrepNewScreen( CString sClassName ); void PrepNewScreen( const CString &sName );
void LoadPreppedScreen(); void LoadPreppedScreen();
void DeletePreppedScreen(); void DeletePreppedScreen();
void SetNewScreen( CString sClassName ); void SetNewScreen( const CString &sName );
void AddNewScreenToTop( CString sClassName, ScreenMessage messageSendOnPop ); void AddNewScreenToTop( const CString &sName, ScreenMessage messageSendOnPop );
void Prompt( ScreenMessage SM_SendWhenDone, CString sText, bool bYesNo = false, bool bDefaultAnswer = false, void(*OnYes)(void*) = NULL, void(*OnNo)(void*) = NULL, void* pCallbackData = NULL ); void Prompt( ScreenMessage SM_SendWhenDone, const CString &sText, bool bYesNo = false, bool bDefaultAnswer = false, void(*OnYes)(void*) = NULL, void(*OnNo)(void*) = NULL, void* pCallbackData = NULL );
void TextEntry( ScreenMessage SM_SendWhenDone, CString sQuestion, CString sInitialAnswer, void(*OnOK)(CString sAnswer) = NULL, void(*OnCanel)() = NULL ); void TextEntry( ScreenMessage SM_SendWhenDone, CString sQuestion, CString sInitialAnswer, void(*OnOK)(CString sAnswer) = NULL, void(*OnCanel)() = NULL );
void MiniMenu( Menu* pDef, ScreenMessage SM_SendOnOK, ScreenMessage SM_SendOnCancel = SM_None ); void MiniMenu( Menu* pDef, ScreenMessage SM_SendOnOK, ScreenMessage SM_SendOnCancel = SM_None );
void PopTopScreen( ScreenMessage SM = SM_None ); void PopTopScreen( ScreenMessage SM = SM_None );
void SystemMessage( CString sMessage ); void SystemMessage( const CString &sMessage );
void SystemMessageNoAnimate( CString sMessage ); void SystemMessageNoAnimate( const CString &sMessage );
void PostMessageToTopScreen( ScreenMessage SM, float fDelay ); void PostMessageToTopScreen( ScreenMessage SM, float fDelay );
void SendMessageToTopScreen( ScreenMessage SM ); void SendMessageToTopScreen( ScreenMessage SM );
@@ -60,7 +66,7 @@ private:
Screen *m_ScreenBuffered; Screen *m_ScreenBuffered;
ScreenSystemLayer *m_SystemLayer; ScreenSystemLayer *m_SystemLayer;
Screen* MakeNewScreen( CString sClassName ); Screen* MakeNewScreen( const CString &sName );
void SetFromNewScreen( Screen *pNewScreen, bool Stack ); void SetFromNewScreen( Screen *pNewScreen, bool Stack );
CString m_DelayedScreen; CString m_DelayedScreen;
void ClearScreenStack(); void ClearScreenStack();
@@ -73,6 +79,7 @@ public:
void PlayInvalidSound(); void PlayInvalidSound();
void PlayScreenshotSound(); void PlayScreenshotSound();
void PlayBackSound(); void PlayBackSound();
private: private:
RageSound m_soundStart; RageSound m_soundStart;
RageSound m_soundCoin; RageSound m_soundCoin;
+1
View File
@@ -34,6 +34,7 @@ const float BUTTON_COLUMN_X[NUM_GAME_TO_DEVICE_SLOTS*MAX_GAME_CONTROLLERS] =
}; };
REGISTER_SCREEN_CLASS( ScreenMapControllers );
ScreenMapControllers::ScreenMapControllers( CString sClassName ) : ScreenWithMenuElements( sClassName ) ScreenMapControllers::ScreenMapControllers( CString sClassName ) : ScreenWithMenuElements( sClassName )
{ {
LOG->Trace( "ScreenMapControllers::ScreenMapControllers()" ); LOG->Trace( "ScreenMapControllers::ScreenMapControllers()" );
+1
View File
@@ -28,6 +28,7 @@ int ScreenMiniMenu::s_iLastLine;
int ScreenMiniMenu::s_iLastAnswers[MAX_MENU_ROWS]; int ScreenMiniMenu::s_iLastAnswers[MAX_MENU_ROWS];
//REGISTER_SCREEN_CLASS( ScreenMiniMenu );
ScreenMiniMenu::ScreenMiniMenu( Menu* pDef, ScreenMessage SM_SendOnOK, ScreenMessage SM_SendOnCancel ) : ScreenMiniMenu::ScreenMiniMenu( Menu* pDef, ScreenMessage SM_SendOnOK, ScreenMessage SM_SendOnCancel ) :
Screen("ScreenMiniMenu") Screen("ScreenMiniMenu")
{ {
+1
View File
@@ -21,6 +21,7 @@ const CString CREDIT_LINES[] =
const unsigned NUM_CREDIT_LINES = sizeof(CREDIT_LINES) / sizeof(CString); const unsigned NUM_CREDIT_LINES = sizeof(CREDIT_LINES) / sizeof(CString);
REGISTER_SCREEN_CLASS( ScreenMusicScroll );
ScreenMusicScroll::ScreenMusicScroll( CString sClassName ) : ScreenAttract( sClassName ) ScreenMusicScroll::ScreenMusicScroll( CString sClassName ) : ScreenAttract( sClassName )
{ {
vector<Song*> arraySongs; vector<Song*> arraySongs;
+1
View File
@@ -86,6 +86,7 @@ float GetClosestCharYPos( float fFakeBeat )
} }
REGISTER_SCREEN_CLASS( ScreenNameEntry );
ScreenNameEntry::ScreenNameEntry( CString sClassName ) : Screen( sClassName ) ScreenNameEntry::ScreenNameEntry( CString sClassName ) : Screen( sClassName )
{ {
LOG->Trace( "ScreenNameEntry::ScreenNameEntry()" ); LOG->Trace( "ScreenNameEntry::ScreenNameEntry()" );
@@ -124,6 +124,7 @@ float HighScoreWheel::Scroll()
return GetTweenTimeLeft(); return GetTweenTimeLeft();
} }
REGISTER_SCREEN_CLASS( ScreenNameEntryTraditional );
ScreenNameEntryTraditional::ScreenNameEntryTraditional( CString sClassName ) : ScreenWithMenuElements( sClassName ) ScreenNameEntryTraditional::ScreenNameEntryTraditional( CString sClassName ) : ScreenWithMenuElements( sClassName )
{ {
LOG->Trace( "ScreenNameEntryTraditional::ScreenNameEntryTraditional()" ); LOG->Trace( "ScreenNameEntryTraditional::ScreenNameEntryTraditional()" );
+1
View File
@@ -18,6 +18,7 @@ const int NUM_SCORE_DIGITS = 9;
const ScreenMessage SM_GotEval = ScreenMessage(SM_User+6); const ScreenMessage SM_GotEval = ScreenMessage(SM_User+6);
REGISTER_SCREEN_CLASS( ScreenNetEvaluation );
ScreenNetEvaluation::ScreenNetEvaluation (const CString & sClassName) : ScreenEvaluation( sClassName ) ScreenNetEvaluation::ScreenNetEvaluation (const CString & sClassName) : ScreenEvaluation( sClassName )
{ {
m_bHasStats = false; m_bHasStats = false;
+1
View File
@@ -15,6 +15,7 @@
const ScreenMessage SM_SMOnlinePack = ScreenMessage(SM_User+8); //Unused, but should be known const ScreenMessage SM_SMOnlinePack = ScreenMessage(SM_User+8); //Unused, but should be known
REGISTER_SCREEN_CLASS( ScreenNetRoom );
ScreenNetRoom::ScreenNetRoom( const CString& sName ) : ScreenNetSelectBase( sName ) ScreenNetRoom::ScreenNetRoom( const CString& sName ) : ScreenNetSelectBase( sName )
{ {
GAMESTATE->FinishStage(); GAMESTATE->FinishStage();
+1
View File
@@ -29,6 +29,7 @@ const ScreenMessage SM_AddToChat = ScreenMessage(SM_User+4);
const ScreenMessage SM_UsersUpdate = ScreenMessage(SM_User+7); const ScreenMessage SM_UsersUpdate = ScreenMessage(SM_User+7);
const ScreenMessage SM_SMOnlinePack = ScreenMessage(SM_User+8); //Unused, but should be known const ScreenMessage SM_SMOnlinePack = ScreenMessage(SM_User+8); //Unused, but should be known
REGISTER_SCREEN_CLASS( ScreenNetSelectBase );
ScreenNetSelectBase::ScreenNetSelectBase( const CString& sName ) : ScreenWithMenuElements( sName ) ScreenNetSelectBase::ScreenNetSelectBase( const CString& sName ) : ScreenWithMenuElements( sName )
{ {
//ChatBox //ChatBox
+1
View File
@@ -35,6 +35,7 @@ const ScreenMessage SM_SMOnlinePack = ScreenMessage(SM_User+8); //Unused, but sh
const CString AllGroups = "[ALL MUSIC]"; const CString AllGroups = "[ALL MUSIC]";
REGISTER_SCREEN_CLASS( ScreenNetSelectMusic );
ScreenNetSelectMusic::ScreenNetSelectMusic( const CString& sName ) : ScreenNetSelectBase( sName ) ScreenNetSelectMusic::ScreenNetSelectMusic( const CString& sName ) : ScreenNetSelectBase( sName )
{ {
/* Finish any previous stage. It's OK to call this when we havn't played a stage yet. */ /* Finish any previous stage. It's OK to call this when we havn't played a stage yet. */
+1
View File
@@ -35,6 +35,7 @@ OptionRowData g_NetworkOptionsLines[NUM_NETWORK_OPTIONS_LINES] = {
const ScreenMessage SM_DoneConnecting = ScreenMessage(SM_User+1); const ScreenMessage SM_DoneConnecting = ScreenMessage(SM_User+1);
const ScreenMessage SM_ServerNameEnter = ScreenMessage(SM_User+2); const ScreenMessage SM_ServerNameEnter = ScreenMessage(SM_User+2);
REGISTER_SCREEN_CLASS( ScreenNetworkOptions );
ScreenNetworkOptions::ScreenNetworkOptions( CString sClassName ) : ScreenOptions( sClassName ) ScreenNetworkOptions::ScreenNetworkOptions( CString sClassName ) : ScreenOptions( sClassName )
{ {
LOG->Trace( "ScreenNetworkOptions::ScreenNetworkOptions()" ); LOG->Trace( "ScreenNetworkOptions::ScreenNetworkOptions()" );
+1
View File
@@ -96,6 +96,7 @@ const float ITEM_X[NUM_PLAYERS] = { 260, 420 };
* in player options menus, but it should in the options menu. * in player options menus, but it should in the options menu.
*/ */
//REGISTER_SCREEN_CLASS( ScreenOptions );
ScreenOptions::ScreenOptions( CString sClassName ) : ScreenWithMenuElements(sClassName) ScreenOptions::ScreenOptions( CString sClassName ) : ScreenWithMenuElements(sClassName)
{ {
LOG->Trace( "ScreenOptions::ScreenOptions()" ); LOG->Trace( "ScreenOptions::ScreenOptions()" );
+1
View File
@@ -194,6 +194,7 @@ void ScreenOptionsMaster::SetCharacter( OptionRowData &row, OptionRowHandler &ha
} }
} }
REGISTER_SCREEN_CLASS( ScreenOptionsMaster );
ScreenOptionsMaster::ScreenOptionsMaster( CString sClassName ): ScreenOptionsMaster::ScreenOptionsMaster( CString sClassName ):
ScreenOptions( sClassName ) ScreenOptions( sClassName )
{ {
+1
View File
@@ -24,6 +24,7 @@
const ScreenMessage SM_BackFromURL = ScreenMessage(SM_User+2); const ScreenMessage SM_BackFromURL = ScreenMessage(SM_User+2);
REGISTER_SCREEN_CLASS( ScreenPackages );
ScreenPackages::ScreenPackages( CString sClassName ) : ScreenWithMenuElements( sClassName ) ScreenPackages::ScreenPackages( CString sClassName ) : ScreenWithMenuElements( sClassName )
{ {
m_iPackagesPos = 0; m_iPackagesPos = 0;
+1
View File
@@ -15,6 +15,7 @@
#define PREV_SCREEN THEME->GetMetric ("ScreenPlayerOptions","PrevScreen") #define PREV_SCREEN THEME->GetMetric ("ScreenPlayerOptions","PrevScreen")
#define NEXT_SCREEN THEME->GetMetric ("ScreenPlayerOptions","NextScreen") #define NEXT_SCREEN THEME->GetMetric ("ScreenPlayerOptions","NextScreen")
REGISTER_SCREEN_CLASS( ScreenPlayerOptions );
ScreenPlayerOptions::ScreenPlayerOptions( CString sClassName ) : ScreenPlayerOptions::ScreenPlayerOptions( CString sClassName ) :
ScreenOptionsMaster( sClassName ) ScreenOptionsMaster( sClassName )
{ {
+1
View File
@@ -39,6 +39,7 @@ const ScreenMessage SM_DoneCreating = ScreenMessage(SM_User+1);
const ScreenMessage SM_DoneRenaming = ScreenMessage(SM_User+2); const ScreenMessage SM_DoneRenaming = ScreenMessage(SM_User+2);
const ScreenMessage SM_DoneDeleting = ScreenMessage(SM_User+3); const ScreenMessage SM_DoneDeleting = ScreenMessage(SM_User+3);
REGISTER_SCREEN_CLASS( ScreenProfileOptions );
ScreenProfileOptions::ScreenProfileOptions( CString sClassName ) : ScreenOptions( sClassName ) ScreenProfileOptions::ScreenProfileOptions( CString sClassName ) : ScreenOptions( sClassName )
{ {
LOG->Trace( "ScreenProfileOptions::ScreenProfileOptions()" ); LOG->Trace( "ScreenProfileOptions::ScreenProfileOptions()" );
+1
View File
@@ -16,6 +16,7 @@
bool ScreenPrompt::s_bLastAnswer = false; bool ScreenPrompt::s_bLastAnswer = false;
//REGISTER_SCREEN_CLASS( ScreenPrompt );
ScreenPrompt::ScreenPrompt( CString sText, bool bYesNoPrompt, bool bDefaultAnswer, void(*OnYes)(void*), void(*OnNo)(void*), void* pCallbackData ) : ScreenPrompt::ScreenPrompt( CString sText, bool bYesNoPrompt, bool bDefaultAnswer, void(*OnYes)(void*), void(*OnNo)(void*), void* pCallbackData ) :
Screen("ScreenPrompt") Screen("ScreenPrompt")
{ {
+1
View File
@@ -87,6 +87,7 @@ const ScreenMessage SM_ShowNextPage = (ScreenMessage)(SM_User+67);
const ScreenMessage SM_HidePage = (ScreenMessage)(SM_User+68); const ScreenMessage SM_HidePage = (ScreenMessage)(SM_User+68);
REGISTER_SCREEN_CLASS( ScreenRanking );
ScreenRanking::ScreenRanking( CString sClassName ) : ScreenAttract( sClassName ) ScreenRanking::ScreenRanking( CString sClassName ) : ScreenAttract( sClassName )
{ {
// init Actors for category and course // init Actors for category and course
+1
View File
@@ -44,6 +44,7 @@ public:
* this for the initial load, since we don't want to start up the display * this for the initial load, since we don't want to start up the display
* until we finish loading songs; that way, people can continue to use their * until we finish loading songs; that way, people can continue to use their
* computer while songs load. */ * computer while songs load. */
REGISTER_SCREEN_CLASS( ScreenReloadSongs );
ScreenReloadSongs::ScreenReloadSongs( CString sClassName ): Screen(sClassName) ScreenReloadSongs::ScreenReloadSongs( CString sClassName ): Screen(sClassName)
{ {
m_iUpdates = 0; m_iUpdates = 0;
+1
View File
@@ -7,6 +7,7 @@
#define NEXT_SCREEN THEME->GetMetric(m_sName,"NextScreen") #define NEXT_SCREEN THEME->GetMetric(m_sName,"NextScreen")
REGISTER_SCREEN_CLASS( ScreenResetToDefaults );
ScreenResetToDefaults::ScreenResetToDefaults( CString sName ): Screen( sName ) ScreenResetToDefaults::ScreenResetToDefaults( CString sName ): Screen( sName )
{ {
PREFSMAN->ResetToFactoryDefaults(); PREFSMAN->ResetToFactoryDefaults();
+1
View File
@@ -13,6 +13,7 @@
#include "RageLog.h" #include "RageLog.h"
REGISTER_SCREEN_CLASS( ScreenSandbox );
ScreenSandbox::ScreenSandbox( CString sClassName ) : Screen( sClassName ) ScreenSandbox::ScreenSandbox( CString sClassName ) : Screen( sClassName )
{ {
} }
+1
View File
@@ -47,6 +47,7 @@ const PlayerNumber CPU_PLAYER[NUM_PLAYERS] = { PLAYER_2, PLAYER_1 };
REGISTER_SCREEN_CLASS( ScreenSelectCharacter );
ScreenSelectCharacter::ScreenSelectCharacter( CString sClassName ) : ScreenWithMenuElements( sClassName ) ScreenSelectCharacter::ScreenSelectCharacter( CString sClassName ) : ScreenWithMenuElements( sClassName )
{ {
LOG->Trace( "ScreenSelectCharacter::ScreenSelectCharacter()" ); LOG->Trace( "ScreenSelectCharacter::ScreenSelectCharacter()" );
+1
View File
@@ -26,6 +26,7 @@
#define IGNORED_ELEMENT_COMMAND THEME->GetMetricA(m_sName,"IgnoredElementOnCommand") #define IGNORED_ELEMENT_COMMAND THEME->GetMetricA(m_sName,"IgnoredElementOnCommand")
REGISTER_SCREEN_CLASS( ScreenSelectDifficulty );
ScreenSelectDifficulty::ScreenSelectDifficulty( CString sClassName ) : ScreenSelect( sClassName ) ScreenSelectDifficulty::ScreenSelectDifficulty( CString sClassName ) : ScreenSelect( sClassName )
{ {
m_CurrentPage = PAGE_1; m_CurrentPage = PAGE_1;
+1
View File
@@ -22,6 +22,7 @@
#define SLEEP_AFTER_TWEEN_OFF_SECONDS THEME->GetMetricF("ScreenSelectGroup","SleepAfterTweenOffSeconds") #define SLEEP_AFTER_TWEEN_OFF_SECONDS THEME->GetMetricF("ScreenSelectGroup","SleepAfterTweenOffSeconds")
REGISTER_SCREEN_CLASS( ScreenSelectGroup );
ScreenSelectGroup::ScreenSelectGroup( CString sClassName ) : ScreenWithMenuElements( sClassName ) ScreenSelectGroup::ScreenSelectGroup( CString sClassName ) : ScreenWithMenuElements( sClassName )
{ {
LOG->Trace( "ScreenSelectGroup::ScreenSelectGroup()" ); LOG->Trace( "ScreenSelectGroup::ScreenSelectGroup()" );
+1
View File
@@ -38,6 +38,7 @@ const char *ScreenSelectMaster::dirs[NUM_DIRS] =
const ScreenMessage SM_PlayPostSwitchPage = (ScreenMessage)(SM_User+1); const ScreenMessage SM_PlayPostSwitchPage = (ScreenMessage)(SM_User+1);
REGISTER_SCREEN_CLASS( ScreenSelectMaster );
ScreenSelectMaster::ScreenSelectMaster( CString sClassName ) : ScreenSelect( sClassName ) ScreenSelectMaster::ScreenSelectMaster( CString sClassName ) : ScreenSelect( sClassName )
{ {
int iDefaultChoice = -1; int iDefaultChoice = -1;
+1
View File
@@ -31,6 +31,7 @@ ScreenSelectMode (Constructor)
Desc: Sets up the screen display Desc: Sets up the screen display
************************************/ ************************************/
REGISTER_SCREEN_CLASS( ScreenSelectMode );
ScreenSelectMode::ScreenSelectMode( CString sClassName ) : ScreenSelect( sClassName ) ScreenSelectMode::ScreenSelectMode( CString sClassName ) : ScreenSelect( sClassName )
{ {
m_b2DAvailable = m_bCharsAvailable = false; m_b2DAvailable = m_bCharsAvailable = false;
+1
View File
@@ -59,6 +59,7 @@ static bool g_bBannerWaiting = false;
static bool g_bSampleMusicWaiting = false; static bool g_bSampleMusicWaiting = false;
static RageTimer g_StartedLoadingAt(RageZeroTimer); static RageTimer g_StartedLoadingAt(RageZeroTimer);
REGISTER_SCREEN_CLASS( ScreenSelectMusic );
ScreenSelectMusic::ScreenSelectMusic( CString sClassName ) : ScreenWithMenuElements( sClassName ) ScreenSelectMusic::ScreenSelectMusic( CString sClassName ) : ScreenWithMenuElements( sClassName )
{ {
LOG->Trace( "ScreenSelectMusic::ScreenSelectMusic()" ); LOG->Trace( "ScreenSelectMusic::ScreenSelectMusic()" );
+1
View File
@@ -18,6 +18,7 @@
#define DISABLED_COLOR THEME->GetMetricC(m_sName,"DisabledColor") #define DISABLED_COLOR THEME->GetMetricC(m_sName,"DisabledColor")
REGISTER_SCREEN_CLASS( ScreenSelectStyle );
ScreenSelectStyle::ScreenSelectStyle( CString sClassName ) : ScreenSelect( sClassName ) ScreenSelectStyle::ScreenSelectStyle( CString sClassName ) : ScreenSelect( sClassName )
{ {
m_iSelection = 0; m_iSelection = 0;
+1
View File
@@ -36,6 +36,7 @@ static float GetTitleY( SetTimeSelection s ) { return g_Y[s]; }
static float GetValueX( SetTimeSelection s ) { return g_X[s] + 80; } static float GetValueX( SetTimeSelection s ) { return g_X[s] + 80; }
static float GetValueY( SetTimeSelection s ) { return g_Y[s]; } static float GetValueY( SetTimeSelection s ) { return g_Y[s]; }
REGISTER_SCREEN_CLASS( ScreenSetTime );
ScreenSetTime::ScreenSetTime( CString sClassName ) : ScreenWithMenuElements( sClassName ) ScreenSetTime::ScreenSetTime( CString sClassName ) : ScreenWithMenuElements( sClassName )
{ {
LOG->Trace( "ScreenSetTime::ScreenSetTime()" ); LOG->Trace( "ScreenSetTime::ScreenSetTime()" );
+1
View File
@@ -16,6 +16,7 @@ CString ScreenSongOptions::GetNextScreen()
} }
REGISTER_SCREEN_CLASS( ScreenSongOptions );
ScreenSongOptions::ScreenSongOptions( CString sClassName ) : ScreenSongOptions::ScreenSongOptions( CString sClassName ) :
ScreenOptionsMaster( sClassName ) ScreenOptionsMaster( sClassName )
{ {
+1
View File
@@ -22,6 +22,7 @@
const ScreenMessage SM_PrepScreen = (ScreenMessage)(SM_User+0); const ScreenMessage SM_PrepScreen = (ScreenMessage)(SM_User+0);
REGISTER_SCREEN_CLASS( ScreenStage );
ScreenStage::ScreenStage( CString sClassName ) : Screen( sClassName ) ScreenStage::ScreenStage( CString sClassName ) : Screen( sClassName )
{ {
m_bZeroDeltaOnNextUpdate = false; m_bZeroDeltaOnNextUpdate = false;
+1
View File
@@ -19,6 +19,7 @@ const ScreenMessage SM_DoneOpening = ScreenMessage(SM_User-7);
const ScreenMessage SM_StartClosing = ScreenMessage(SM_User-8); const ScreenMessage SM_StartClosing = ScreenMessage(SM_User-8);
REGISTER_SCREEN_CLASS( ScreenStyleSplash );
ScreenStyleSplash::ScreenStyleSplash( CString sName ) : ScreenWithMenuElements( sName ) ScreenStyleSplash::ScreenStyleSplash( CString sName ) : ScreenWithMenuElements( sName )
{ {
SOUND->StopMusic(); SOUND->StopMusic();
+4 -3
View File
@@ -25,6 +25,7 @@
#define CREDITS_JOIN_ONLY THEME->GetMetricB("ScreenSystemLayer","CreditsJoinOnly") #define CREDITS_JOIN_ONLY THEME->GetMetricB("ScreenSystemLayer","CreditsJoinOnly")
//REGISTER_SCREEN_CLASS( ScreenSystemLayer );
ScreenSystemLayer::ScreenSystemLayer() : Screen("ScreenSystemLayer") ScreenSystemLayer::ScreenSystemLayer() : Screen("ScreenSystemLayer")
{ {
this->AddChild(&m_textMessage); this->AddChild(&m_textMessage);
@@ -93,14 +94,14 @@ void ScreenSystemLayer::ReloadCreditsText()
} }
} }
void ScreenSystemLayer::SystemMessage( CString sMessage ) void ScreenSystemLayer::SystemMessage( const CString &sMessage )
{ {
m_textMessage.SetText( sMessage ); m_textMessage.SetText( sMessage );
static const ActorCommands cmds = ParseActorCommands("finishtweening;diffusealpha,1;addx,-640;linear,0.5;addx,+640;sleep,5;linear,0.5;diffusealpha,0"); static const ActorCommands cmds = ParseActorCommands("finishtweening;diffusealpha,1;addx,-640;linear,0.5;addx,+640;sleep,5;linear,0.5;diffusealpha,0");
m_textMessage.Command( cmds ); m_textMessage.Command( cmds );
} }
void ScreenSystemLayer::SystemMessageNoAnimate( CString sMessage ) void ScreenSystemLayer::SystemMessageNoAnimate( const CString &sMessage )
{ {
m_textMessage.FinishTweening(); m_textMessage.FinishTweening();
m_textMessage.SetText( sMessage ); m_textMessage.SetText( sMessage );
@@ -209,7 +210,7 @@ void ScreenSystemLayer::RefreshCreditsMessages()
} }
} }
void ScreenSystemLayer::AddTimestampLine( const CString &txt, RageColor color ) void ScreenSystemLayer::AddTimestampLine( const CString &txt, const RageColor &color )
{ {
m_textSkips[m_LastSkip].SetText( txt ); m_textSkips[m_LastSkip].SetText( txt );
m_textSkips[m_LastSkip].StopTweening(); m_textSkips[m_LastSkip].StopTweening();
+3 -3
View File
@@ -23,13 +23,13 @@ class ScreenSystemLayer : public Screen
Quad m_SkipBackground; Quad m_SkipBackground;
RageTimer SkipTimer; RageTimer SkipTimer;
void AddTimestampLine( const CString &txt, RageColor color ); void AddTimestampLine( const CString &txt, const RageColor &color );
void UpdateTimestampAndSkips(); void UpdateTimestampAndSkips();
public: public:
ScreenSystemLayer(); ScreenSystemLayer();
void SystemMessage( CString sMessage ); void SystemMessage( const CString &sMessage );
void SystemMessageNoAnimate( CString sMessage ); void SystemMessageNoAnimate( const CString &sMessage );
void ReloadCreditsText(); void ReloadCreditsText();
void RefreshCreditsMessages(); void RefreshCreditsMessages();
void Update( float fDeltaTime ); void Update( float fDeltaTime );
+1
View File
@@ -25,6 +25,7 @@ void ScreenTest::SetScreen(int num)
current=new ScreenTestFonts("ScreenTestFonts"); current=new ScreenTestFonts("ScreenTestFonts");
} }
REGISTER_SCREEN_CLASS( ScreenTest );
ScreenTest::ScreenTest( CString sClassName ) : Screen( sClassName ) ScreenTest::ScreenTest( CString sClassName ) : Screen( sClassName )
{ {
current = NULL; current = NULL;
+1
View File
@@ -25,6 +25,7 @@ void ScreenTestFonts::HandleScreenMessage( const ScreenMessage SM )
SetText(CustomText); SetText(CustomText);
} }
REGISTER_SCREEN_CLASS( ScreenTestFonts );
ScreenTestFonts::ScreenTestFonts( CString sClassName ) : Screen( sClassName ) ScreenTestFonts::ScreenTestFonts( CString sClassName ) : Screen( sClassName )
{ {
Hline.SetXY(SCREEN_CENTER_X, SCREEN_CENTER_Y); Hline.SetXY(SCREEN_CENTER_X, SCREEN_CENTER_Y);
+1
View File
@@ -10,6 +10,7 @@
#include "ScreenDimensions.h" #include "ScreenDimensions.h"
REGISTER_SCREEN_CLASS( ScreenTestInput );
ScreenTestInput::ScreenTestInput( CString sClassName ) : ScreenWithMenuElements( sClassName ) ScreenTestInput::ScreenTestInput( CString sClassName ) : ScreenWithMenuElements( sClassName )
{ {
LOG->Trace( "ScreenTestInput::ScreenTestInput()" ); LOG->Trace( "ScreenTestInput::ScreenTestInput()" );
+1
View File
@@ -11,6 +11,7 @@
#include "ScreenDimensions.h" #include "ScreenDimensions.h"
REGISTER_SCREEN_CLASS( ScreenTestLights );
ScreenTestLights::ScreenTestLights( CString sClassName ) : ScreenWithMenuElements( sClassName ) ScreenTestLights::ScreenTestLights( CString sClassName ) : ScreenWithMenuElements( sClassName )
{ {
LOG->Trace( "ScreenTestLights::ScreenTestLights()" ); LOG->Trace( "ScreenTestLights::ScreenTestLights()" );
+1
View File
@@ -6,6 +6,7 @@
#include "ThemeManager.h" #include "ThemeManager.h"
#include "RageUtil.h" #include "RageUtil.h"
REGISTER_SCREEN_CLASS( ScreenTestSound );
ScreenTestSound::ScreenTestSound( CString sClassName ) : Screen( sClassName ) ScreenTestSound::ScreenTestSound( CString sClassName ) : Screen( sClassName )
{ {
this->AddChild(&HEEEEEEEEELP); this->AddChild(&HEEEEEEEEELP);
+1
View File
@@ -34,6 +34,7 @@ bool ScreenTextEntry::s_bCancelledLast = false;
* Handle UTF-8. Right now, we need to at least be able to backspace * Handle UTF-8. Right now, we need to at least be able to backspace
* a whole UTF-8 character. Better would be to operate in longchars. * a whole UTF-8 character. Better would be to operate in longchars.
*/ */
//REGISTER_SCREEN_CLASS( ScreenTextEntry );
ScreenTextEntry::ScreenTextEntry( CString sClassName, CString sQuestion, CString sInitialAnswer, void(*OnOK)(CString sAnswer), void(*OnCancel)() ) : ScreenTextEntry::ScreenTextEntry( CString sClassName, CString sQuestion, CString sInitialAnswer, void(*OnOK)(CString sAnswer), void(*OnCancel)() ) :
Screen( sClassName ) Screen( sClassName )
{ {
+1
View File
@@ -54,6 +54,7 @@
const ScreenMessage SM_PlayComment = ScreenMessage(SM_User+1); const ScreenMessage SM_PlayComment = ScreenMessage(SM_User+1);
const ScreenMessage SM_GoToAttractLoop = ScreenMessage(SM_User+13); const ScreenMessage SM_GoToAttractLoop = ScreenMessage(SM_User+13);
REGISTER_SCREEN_CLASS( ScreenTitleMenu );
ScreenTitleMenu::ScreenTitleMenu( CString sClassName ) : ScreenSelect( sClassName ) ScreenTitleMenu::ScreenTitleMenu( CString sClassName ) : ScreenSelect( sClassName )
{ {
LOG->Trace( "ScreenTitleMenu::ScreenTitleMenu()" ); LOG->Trace( "ScreenTitleMenu::ScreenTitleMenu()" );
+1
View File
@@ -27,6 +27,7 @@
#define POINTS_ZOOM THEME->GetMetricF("ScreenUnlock","PointsZoom") #define POINTS_ZOOM THEME->GetMetricF("ScreenUnlock","PointsZoom")
#define USE_UNLOCKS_DAT THEME->GetMetricI("ScreenUnlock","UseUnlocksDat") #define USE_UNLOCKS_DAT THEME->GetMetricI("ScreenUnlock","UseUnlocksDat")
REGISTER_SCREEN_CLASS( ScreenUnlock );
ScreenUnlock::ScreenUnlock( CString sClassName ) : ScreenAttract( sClassName ) ScreenUnlock::ScreenUnlock( CString sClassName ) : ScreenAttract( sClassName )
{ {
LOG->Trace("ScreenUnlock::ScreenUnlock()"); LOG->Trace("ScreenUnlock::ScreenUnlock()");
+1
View File
@@ -13,6 +13,7 @@
#define STYLE_ICON THEME->GetMetricB(m_sName,"StyleIcon") #define STYLE_ICON THEME->GetMetricB(m_sName,"StyleIcon")
#define MEMORY_CARD_ICONS THEME->GetMetricB(m_sName,"MemoryCardIcons") #define MEMORY_CARD_ICONS THEME->GetMetricB(m_sName,"MemoryCardIcons")
//REGISTER_SCREEN_CLASS( ScreenWithMenuElements );
ScreenWithMenuElements::ScreenWithMenuElements( CString sClassName ) : Screen( sClassName ) ScreenWithMenuElements::ScreenWithMenuElements( CString sClassName ) : Screen( sClassName )
{ {
LOG->Trace( "ScreenWithMenuElements::ScreenWithMenuElements()" ); LOG->Trace( "ScreenWithMenuElements::ScreenWithMenuElements()" );