From b51b0cfb4c032da4d5ea587e8e7b8a6b84f8fe58 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Wed, 23 Feb 2005 06:29:05 +0000 Subject: [PATCH] Use Init() for all screens, so we can set state before the base class members are loaded--they'll see resets, score finalization, etc. It also results in smaller code, due to a g++ bug that causes constructors to be emitted several times. --- stepmania/src/ScreenAttract.cpp | 13 ++++++++----- stepmania/src/ScreenAttract.h | 1 + stepmania/src/ScreenBookkeeping.cpp | 7 ++++++- stepmania/src/ScreenBookkeeping.h | 1 + stepmania/src/ScreenEdit.cpp | 5 +++++ stepmania/src/ScreenEdit.h | 1 + stepmania/src/ScreenEnding.cpp | 6 +++++- stepmania/src/ScreenEnding.h | 1 + stepmania/src/ScreenEvaluation.cpp | 13 +++++++------ stepmania/src/ScreenEvaluation.h | 2 +- stepmania/src/ScreenEz2SelectMusic.cpp | 5 +++++ stepmania/src/ScreenEz2SelectMusic.h | 1 + stepmania/src/ScreenEz2SelectPlayer.cpp | 6 ++++++ stepmania/src/ScreenEz2SelectPlayer.h | 3 ++- stepmania/src/ScreenHowToPlay.cpp | 5 +++++ stepmania/src/ScreenHowToPlay.h | 1 + stepmania/src/ScreenInstructions.cpp | 5 +++++ stepmania/src/ScreenInstructions.h | 1 + stepmania/src/ScreenLogo.cpp | 6 ++++++ stepmania/src/ScreenLogo.h | 1 + stepmania/src/ScreenMapControllers.cpp | 5 +++++ stepmania/src/ScreenMapControllers.h | 1 + stepmania/src/ScreenMusicScroll.cpp | 6 ++++++ stepmania/src/ScreenMusicScroll.h | 1 + stepmania/src/ScreenNameEntryTraditional.cpp | 5 +++++ stepmania/src/ScreenNameEntryTraditional.h | 3 ++- stepmania/src/ScreenNetEvaluation.cpp | 6 ++++++ stepmania/src/ScreenNetEvaluation.h | 2 ++ stepmania/src/ScreenNetRoom.cpp | 7 ++++++- stepmania/src/ScreenNetRoom.h | 1 + stepmania/src/ScreenNetSelectBase.cpp | 6 ++++++ stepmania/src/ScreenNetSelectBase.h | 1 + stepmania/src/ScreenNetSelectMusic.cpp | 5 +++++ stepmania/src/ScreenNetSelectMusic.h | 1 + stepmania/src/ScreenNetworkOptions.cpp | 5 +++++ stepmania/src/ScreenNetworkOptions.h | 1 + stepmania/src/ScreenOptions.cpp | 5 +++++ stepmania/src/ScreenOptions.h | 1 + stepmania/src/ScreenOptionsMaster.cpp | 5 +++++ stepmania/src/ScreenOptionsMaster.h | 1 + stepmania/src/ScreenPackages.cpp | 8 +++++++- stepmania/src/ScreenPackages.h | 1 + stepmania/src/ScreenPlayerOptions.cpp | 5 +++++ stepmania/src/ScreenPlayerOptions.h | 1 + stepmania/src/ScreenProfileOptions.cpp | 5 +++++ stepmania/src/ScreenProfileOptions.h | 1 + stepmania/src/ScreenPrompt.cpp | 8 +++++++- stepmania/src/ScreenPrompt.h | 3 ++- stepmania/src/ScreenRanking.cpp | 6 ++++++ stepmania/src/ScreenRanking.h | 1 + stepmania/src/ScreenReloadSongs.cpp | 6 ++++++ stepmania/src/ScreenReloadSongs.h | 1 + stepmania/src/ScreenSMOnlineLogin.cpp | 5 +++++ stepmania/src/ScreenSMOnlineLogin.h | 4 +++- stepmania/src/ScreenSelect.cpp | 5 +++++ stepmania/src/ScreenSelect.h | 1 + stepmania/src/ScreenSelectCharacter.cpp | 5 +++++ stepmania/src/ScreenSelectCharacter.h | 1 + stepmania/src/ScreenSelectDifficulty.cpp | 7 ++++++- stepmania/src/ScreenSelectDifficulty.h | 1 + stepmania/src/ScreenSelectGroup.cpp | 4 ++++ stepmania/src/ScreenSelectGroup.h | 1 + stepmania/src/ScreenSelectMaster.cpp | 5 +++++ stepmania/src/ScreenSelectMaster.h | 1 + stepmania/src/ScreenSelectMode.cpp | 6 ++++++ stepmania/src/ScreenSelectMode.h | 1 + stepmania/src/ScreenSelectMusic.cpp | 10 ++++++++-- stepmania/src/ScreenSelectMusic.h | 1 + stepmania/src/ScreenSelectStyle.cpp | 9 +++++++-- stepmania/src/ScreenSelectStyle.h | 1 + stepmania/src/ScreenSetTime.cpp | 7 ++++++- stepmania/src/ScreenSetTime.h | 1 + stepmania/src/ScreenSongOptions.cpp | 7 +++++++ stepmania/src/ScreenSongOptions.h | 1 + stepmania/src/ScreenSplash.cpp | 6 ++++++ stepmania/src/ScreenSplash.h | 1 + stepmania/src/ScreenStage.cpp | 6 ++++++ stepmania/src/ScreenStage.h | 1 + stepmania/src/ScreenStyleSplash.cpp | 6 ++++++ stepmania/src/ScreenStyleSplash.h | 1 + stepmania/src/ScreenSystemLayer.cpp | 6 ++++++ stepmania/src/ScreenSystemLayer.h | 1 + stepmania/src/ScreenTest.cpp | 6 ++++++ stepmania/src/ScreenTest.h | 1 + stepmania/src/ScreenTestFonts.cpp | 6 ++++++ stepmania/src/ScreenTestFonts.h | 1 + stepmania/src/ScreenTestInput.cpp | 6 +++++- stepmania/src/ScreenTestInput.h | 1 + stepmania/src/ScreenTestLights.cpp | 10 +++++++--- stepmania/src/ScreenTestLights.h | 1 + stepmania/src/ScreenTestSound.cpp | 6 ++++++ stepmania/src/ScreenTestSound.h | 1 + stepmania/src/ScreenTextEntry.cpp | 9 +++++++-- stepmania/src/ScreenTextEntry.h | 2 ++ stepmania/src/ScreenTitleMenu.cpp | 4 ++++ stepmania/src/ScreenTitleMenu.h | 1 + stepmania/src/ScreenUnlock.cpp | 11 ++++++++--- stepmania/src/ScreenUnlock.h | 1 + stepmania/src/ScreenWithMenuElements.cpp | 13 +++++++------ stepmania/src/ScreenWithMenuElements.h | 1 + 100 files changed, 349 insertions(+), 42 deletions(-) diff --git a/stepmania/src/ScreenAttract.cpp b/stepmania/src/ScreenAttract.cpp index 8bb99810c1..7a0bbcebec 100644 --- a/stepmania/src/ScreenAttract.cpp +++ b/stepmania/src/ScreenAttract.cpp @@ -24,17 +24,20 @@ REGISTER_SCREEN_CLASS( ScreenAttract ); ScreenAttract::ScreenAttract( CString sName, bool bResetGameState ) : Screen( sName ) { - LOG->Trace( "ScreenAttract::ScreenAttract(%s)", m_sName.c_str() ); + if( bResetGameState ) + GAMESTATE->Reset(); // increment times through attract count if( m_sName == INITIAL_SCREEN.GetValue() ) GAMESTATE->m_iNumTimesThroughAttract++; +} - if( bResetGameState ) - GAMESTATE->Reset(); +void ScreenAttract::Init() +{ + LOG->Trace( "ScreenAttract::ScreenAttract(%s)", m_sName.c_str() ); + + Screen::Init(); - // We have to do initialization in the first update because this->GetElementName() won't - // work until the object has been fully constructed. m_In.Load( THEME->GetPathB(m_sName,"in") ); m_In.StartTransitioning(); m_In.SetDrawOrder( DRAW_ORDER_TRANSITIONS ); diff --git a/stepmania/src/ScreenAttract.h b/stepmania/src/ScreenAttract.h index e0dc9a4275..d25558c1df 100644 --- a/stepmania/src/ScreenAttract.h +++ b/stepmania/src/ScreenAttract.h @@ -11,6 +11,7 @@ class ScreenAttract : public Screen { public: ScreenAttract( CString sName, bool bResetGameState=true ); + virtual void Init(); virtual ~ScreenAttract(); virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); diff --git a/stepmania/src/ScreenBookkeeping.cpp b/stepmania/src/ScreenBookkeeping.cpp index 70716850d4..0e5fab7fbf 100644 --- a/stepmania/src/ScreenBookkeeping.cpp +++ b/stepmania/src/ScreenBookkeeping.cpp @@ -19,7 +19,12 @@ REGISTER_SCREEN_CLASS( ScreenBookkeeping ); ScreenBookkeeping::ScreenBookkeeping( CString sClassName ) : ScreenWithMenuElements( sClassName ) { LOG->Trace( "ScreenBookkeeping::ScreenBookkeeping()" ); - +} + +void ScreenBookkeeping::Init() +{ + ScreenWithMenuElements::Init(); + m_textTitle.LoadFromFont( THEME->GetPathF("Common","title") ); m_textTitle.SetText( "header" ); m_textTitle.SetXY( SCREEN_CENTER_X, 60 ); diff --git a/stepmania/src/ScreenBookkeeping.h b/stepmania/src/ScreenBookkeeping.h index 6906866c1f..9b70e50bfd 100644 --- a/stepmania/src/ScreenBookkeeping.h +++ b/stepmania/src/ScreenBookkeeping.h @@ -15,6 +15,7 @@ class ScreenBookkeeping : public ScreenWithMenuElements { public: ScreenBookkeeping( CString sName ); + virtual void Init(); virtual ~ScreenBookkeeping(); virtual void DrawPrimitives(); diff --git a/stepmania/src/ScreenEdit.cpp b/stepmania/src/ScreenEdit.cpp index c3f45d9200..b088df47a2 100644 --- a/stepmania/src/ScreenEdit.cpp +++ b/stepmania/src/ScreenEdit.cpp @@ -489,6 +489,11 @@ REGISTER_SCREEN_CLASS( ScreenEdit ); ScreenEdit::ScreenEdit( CString sName ) : Screen( sName ) { LOG->Trace( "ScreenEdit::ScreenEdit()" ); +} + +void ScreenEdit::Init() +{ + Screen::Init(); InitEditMappings(); diff --git a/stepmania/src/ScreenEdit.h b/stepmania/src/ScreenEdit.h index 181f445af6..b7062940ef 100644 --- a/stepmania/src/ScreenEdit.h +++ b/stepmania/src/ScreenEdit.h @@ -123,6 +123,7 @@ class ScreenEdit : public Screen { public: ScreenEdit( CString sName ); + virtual void Init(); virtual ~ScreenEdit(); virtual void Update( float fDeltaTime ); virtual void DrawPrimitives(); diff --git a/stepmania/src/ScreenEnding.cpp b/stepmania/src/ScreenEnding.cpp index 84262efb1f..eb20c9e1fb 100644 --- a/stepmania/src/ScreenEnding.cpp +++ b/stepmania/src/ScreenEnding.cpp @@ -191,9 +191,13 @@ ScreenEnding::ScreenEnding( CString sClassName ) : ScreenAttract( sClassName, fa } - // Update final profile stats before we load them for display below. + // Update final profile stats before we load them for display. GAMESTATE->FinishStage(); +} +void ScreenEnding::Init() +{ + ScreenAttract::Init(); vector arraySongs; SONGMAN->GetSongs( arraySongs ); diff --git a/stepmania/src/ScreenEnding.h b/stepmania/src/ScreenEnding.h index dd390689f2..504f2febe3 100644 --- a/stepmania/src/ScreenEnding.h +++ b/stepmania/src/ScreenEnding.h @@ -24,6 +24,7 @@ class ScreenEnding : public ScreenAttract { public: ScreenEnding( CString sName ); + virtual void Init(); ~ScreenEnding(); void Update( float fDeltaTime ); diff --git a/stepmania/src/ScreenEvaluation.cpp b/stepmania/src/ScreenEvaluation.cpp index bd9fbc9d3f..eb2df02eb6 100644 --- a/stepmania/src/ScreenEvaluation.cpp +++ b/stepmania/src/ScreenEvaluation.cpp @@ -90,11 +90,6 @@ REGISTER_SCREEN_CLASS( ScreenEvaluation ); ScreenEvaluation::ScreenEvaluation( CString sClassName ) : ScreenWithMenuElements(sClassName) { LOG->Trace( "ScreenEvaluation::ScreenEvaluation" ); -} - -void ScreenEvaluation::Init() -{ - Screen::Init(); // // debugging @@ -178,8 +173,14 @@ void ScreenEvaluation::Init() STATSMAN->m_vPlayedStageStats.clear(); } +} - LOG->Trace( "ScreenEvaluation::ScreenEvaluation()" ); + +void ScreenEvaluation::Init() +{ + LOG->Trace( "ScreenEvaluation::Init()" ); + + Screen::Init(); LIGHTSMAN->SetLightsMode( LIGHTSMODE_MENU ); diff --git a/stepmania/src/ScreenEvaluation.h b/stepmania/src/ScreenEvaluation.h index efa85e19b7..7b5b1ecd1e 100644 --- a/stepmania/src/ScreenEvaluation.h +++ b/stepmania/src/ScreenEvaluation.h @@ -36,6 +36,7 @@ class ScreenEvaluation : public ScreenWithMenuElements public: enum Type { stage, summary, course }; ScreenEvaluation( CString sClassName ); + virtual void Init(); virtual void Update( float fDeltaTime ); virtual void DrawPrimitives(); virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); @@ -49,7 +50,6 @@ public: virtual void MenuStart( PlayerNumber pn ); protected: - virtual void Init(); void CommitScores( const StageStats &stageStats, int iPersonalHighScoreIndexOut[NUM_PLAYERS], diff --git a/stepmania/src/ScreenEz2SelectMusic.cpp b/stepmania/src/ScreenEz2SelectMusic.cpp index 4069f4af03..1093699ff3 100644 --- a/stepmania/src/ScreenEz2SelectMusic.cpp +++ b/stepmania/src/ScreenEz2SelectMusic.cpp @@ -71,6 +71,11 @@ ScreenEz2SelectMusic::ScreenEz2SelectMusic( CString sName ) : ScreenWithMenuElem { /* Finish any previous stage. It's OK to call this when we havn't played a stage yet. */ GAMESTATE->FinishStage(); +} + +void ScreenEz2SelectMusic::Init() +{ + ScreenWithMenuElements::Init(); i_SkipAheadOffset = 0; LastInputTime = 0; diff --git a/stepmania/src/ScreenEz2SelectMusic.h b/stepmania/src/ScreenEz2SelectMusic.h index 42710e29c3..00afd9a52a 100644 --- a/stepmania/src/ScreenEz2SelectMusic.h +++ b/stepmania/src/ScreenEz2SelectMusic.h @@ -14,6 +14,7 @@ class ScreenEz2SelectMusic : public ScreenWithMenuElements { public: ScreenEz2SelectMusic( CString sName ); + virtual void Init(); virtual void DrawPrimitives(); virtual void Update( float fDeltaTime ); diff --git a/stepmania/src/ScreenEz2SelectPlayer.cpp b/stepmania/src/ScreenEz2SelectPlayer.cpp index cc17281608..ff8e8c6a9a 100644 --- a/stepmania/src/ScreenEz2SelectPlayer.cpp +++ b/stepmania/src/ScreenEz2SelectPlayer.cpp @@ -45,6 +45,12 @@ ScreenEz2SelectPlayer::ScreenEz2SelectPlayer( CString sName ) : ScreenWithMenuEl GAMESTATE->m_bSideIsJoined[p] = false; LOG->Trace( "ScreenEz2SelectPlayer::ScreenEz2SelectPlayer()" ); +} + + +void ScreenEz2SelectPlayer::Init() +{ + ScreenWithMenuElements::Init(); FOREACH_PlayerNumber( p ) { diff --git a/stepmania/src/ScreenEz2SelectPlayer.h b/stepmania/src/ScreenEz2SelectPlayer.h index 3041fc961d..708b0901cd 100644 --- a/stepmania/src/ScreenEz2SelectPlayer.h +++ b/stepmania/src/ScreenEz2SelectPlayer.h @@ -11,7 +11,8 @@ class ScreenEz2SelectPlayer : public ScreenWithMenuElements { public: ScreenEz2SelectPlayer( CString sName ); - virtual ~ScreenEz2SelectPlayer(); // Destructor + virtual void Init(); + virtual ~ScreenEz2SelectPlayer(); /* Public Function Prototypes */ virtual void Update( float fDeltaTime ); diff --git a/stepmania/src/ScreenHowToPlay.cpp b/stepmania/src/ScreenHowToPlay.cpp index 53e4cb7d25..1034efe794 100644 --- a/stepmania/src/ScreenHowToPlay.cpp +++ b/stepmania/src/ScreenHowToPlay.cpp @@ -74,6 +74,11 @@ ScreenHowToPlay::ScreenHowToPlay( CString sName ) : ScreenAttract( sName ) m_pLifeMeterBar = NULL; m_pmCharacter = NULL; m_pmDancePad = NULL; +} + +void ScreenHowToPlay::Init() +{ + ScreenAttract::Init(); m_In.Load( THEME->GetPathB("ScreenHowToPlay","in") ); m_In.StartTransitioning(); diff --git a/stepmania/src/ScreenHowToPlay.h b/stepmania/src/ScreenHowToPlay.h index 296482c5ec..f05def88d8 100644 --- a/stepmania/src/ScreenHowToPlay.h +++ b/stepmania/src/ScreenHowToPlay.h @@ -13,6 +13,7 @@ class ScreenHowToPlay : public ScreenAttract { public: ScreenHowToPlay( CString sName ); + virtual void Init(); ~ScreenHowToPlay(); virtual void Update( float fDelta ); diff --git a/stepmania/src/ScreenInstructions.cpp b/stepmania/src/ScreenInstructions.cpp index 4ee051c7fe..44b41d10fd 100644 --- a/stepmania/src/ScreenInstructions.cpp +++ b/stepmania/src/ScreenInstructions.cpp @@ -39,6 +39,11 @@ ScreenInstructions::ScreenInstructions( CString sName ) : ScreenWithMenuElements if( GAMESTATE->m_PlayMode == PLAY_MODE_INVALID ) RageException::Throw( "The PlayMode has not been set. A theme must set the PlayMode before showing ScreenInstructions." ); +} + +void ScreenInstructions::Init() +{ + ScreenWithMenuElements::Init(); m_sprHowToPlay.Load( THEME->GetPathG(m_sName,PlayModeToString(GAMESTATE->m_PlayMode)) ); m_sprHowToPlay.SetXY( SCREEN_CENTER_X, SCREEN_CENTER_Y ); diff --git a/stepmania/src/ScreenInstructions.h b/stepmania/src/ScreenInstructions.h index 8ffe7203e8..f75e2b9378 100644 --- a/stepmania/src/ScreenInstructions.h +++ b/stepmania/src/ScreenInstructions.h @@ -9,6 +9,7 @@ class ScreenInstructions : public ScreenWithMenuElements { public: ScreenInstructions( CString sName ); + virtual void Init(); virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); diff --git a/stepmania/src/ScreenLogo.cpp b/stepmania/src/ScreenLogo.cpp index c1cba1854e..e20374c7c7 100644 --- a/stepmania/src/ScreenLogo.cpp +++ b/stepmania/src/ScreenLogo.cpp @@ -8,6 +8,12 @@ REGISTER_SCREEN_CLASS( ScreenLogo ); ScreenLogo::ScreenLogo( CString sName ) : ScreenAttract( sName ) { +} + +void ScreenLogo::Init() +{ + ScreenAttract::Init(); + m_sprLogo.SetName( "Logo" ); m_sprLogo.Load( THEME->GetPathG("ScreenLogo",GAMESTATE->GetCurrentGame()->m_szName) ); SET_XY_AND_ON_COMMAND( m_sprLogo ); diff --git a/stepmania/src/ScreenLogo.h b/stepmania/src/ScreenLogo.h index c15ecbc3af..e2849ed727 100644 --- a/stepmania/src/ScreenLogo.h +++ b/stepmania/src/ScreenLogo.h @@ -9,6 +9,7 @@ class ScreenLogo : public ScreenAttract { public: ScreenLogo( CString sName ); + virtual void Init(); protected: Sprite m_sprLogo; diff --git a/stepmania/src/ScreenMapControllers.cpp b/stepmania/src/ScreenMapControllers.cpp index 68bab3d826..a2b61fecf9 100644 --- a/stepmania/src/ScreenMapControllers.cpp +++ b/stepmania/src/ScreenMapControllers.cpp @@ -39,6 +39,11 @@ REGISTER_SCREEN_CLASS( ScreenMapControllers ); ScreenMapControllers::ScreenMapControllers( CString sClassName ) : ScreenWithMenuElements( sClassName ) { LOG->Trace( "ScreenMapControllers::ScreenMapControllers()" ); +} + +void ScreenMapControllers::Init() +{ + ScreenWithMenuElements::Init(); #ifdef _XBOX CStringArray strArray; diff --git a/stepmania/src/ScreenMapControllers.h b/stepmania/src/ScreenMapControllers.h index 33b1914948..b5513002eb 100644 --- a/stepmania/src/ScreenMapControllers.h +++ b/stepmania/src/ScreenMapControllers.h @@ -14,6 +14,7 @@ class ScreenMapControllers : public ScreenWithMenuElements { public: ScreenMapControllers( CString sName ); + virtual void Init(); virtual ~ScreenMapControllers(); virtual void Update( float fDeltaTime ); diff --git a/stepmania/src/ScreenMusicScroll.cpp b/stepmania/src/ScreenMusicScroll.cpp index e8fc7fd4b6..1697ef653b 100644 --- a/stepmania/src/ScreenMusicScroll.cpp +++ b/stepmania/src/ScreenMusicScroll.cpp @@ -24,6 +24,12 @@ const unsigned NUM_CREDIT_LINES = sizeof(CREDIT_LINES) / sizeof(CString); REGISTER_SCREEN_CLASS( ScreenMusicScroll ); ScreenMusicScroll::ScreenMusicScroll( CString sClassName ) : ScreenAttract( sClassName ) { +} + +void ScreenMusicScroll::Init() +{ + ScreenAttract::Init(); + vector arraySongs; SONGMAN->GetSongs( arraySongs ); SongUtil::SortSongPointerArrayByTitle( arraySongs ); diff --git a/stepmania/src/ScreenMusicScroll.h b/stepmania/src/ScreenMusicScroll.h index 53871c3a7f..78c1442a55 100644 --- a/stepmania/src/ScreenMusicScroll.h +++ b/stepmania/src/ScreenMusicScroll.h @@ -10,6 +10,7 @@ class ScreenMusicScroll : public ScreenAttract { public: ScreenMusicScroll( CString sName ); + virtual void Init(); virtual ~ScreenMusicScroll(); virtual void Update( float fDeltaTime ); diff --git a/stepmania/src/ScreenNameEntryTraditional.cpp b/stepmania/src/ScreenNameEntryTraditional.cpp index 727a802cf2..d4afdce69b 100644 --- a/stepmania/src/ScreenNameEntryTraditional.cpp +++ b/stepmania/src/ScreenNameEntryTraditional.cpp @@ -173,6 +173,11 @@ ScreenNameEntryTraditional::ScreenNameEntryTraditional( CString sClassName ) : S MAX_RANKING_NAME_LENGTH.Load( m_sName, "MaxRankingNameLength" ); FEAT_INTERVAL.Load( m_sName, "FeatInterval" ); KEYBOARD_LETTERS.Load( m_sName, "KeyboardLetters" ); +} + +void ScreenNameEntryTraditional::Init() +{ + ScreenWithMenuElements::Init(); // Find out if players deserve to enter their name FOREACH_PlayerNumber( p ) diff --git a/stepmania/src/ScreenNameEntryTraditional.h b/stepmania/src/ScreenNameEntryTraditional.h index 7e2a8bbb95..4360edc3ae 100644 --- a/stepmania/src/ScreenNameEntryTraditional.h +++ b/stepmania/src/ScreenNameEntryTraditional.h @@ -41,7 +41,8 @@ class ScreenNameEntryTraditional : public ScreenWithMenuElements { public: ScreenNameEntryTraditional( CString sName ); - ~ScreenNameEntryTraditional(); + virtual void Init(); + virtual ~ScreenNameEntryTraditional(); void Update( float fDeltaTime ); void DrawPrimitives(); diff --git a/stepmania/src/ScreenNetEvaluation.cpp b/stepmania/src/ScreenNetEvaluation.cpp index 4d08596eba..339cf33a9d 100644 --- a/stepmania/src/ScreenNetEvaluation.cpp +++ b/stepmania/src/ScreenNetEvaluation.cpp @@ -22,6 +22,12 @@ const ScreenMessage SM_GotEval = ScreenMessage(SM_User+6); REGISTER_SCREEN_CLASS( ScreenNetEvaluation ); ScreenNetEvaluation::ScreenNetEvaluation (const CString & sClassName) : ScreenEvaluation( sClassName ) { +} + +void ScreenNetEvaluation::Init() +{ + ScreenEvaluation::Init(); + m_bHasStats = false; m_pActivePlayer = PLAYER_1; m_iCurrentPlayer = 0; diff --git a/stepmania/src/ScreenNetEvaluation.h b/stepmania/src/ScreenNetEvaluation.h index 2e188dff24..4b898c9d08 100644 --- a/stepmania/src/ScreenNetEvaluation.h +++ b/stepmania/src/ScreenNetEvaluation.h @@ -8,6 +8,8 @@ class ScreenNetEvaluation: public ScreenEvaluation { public: ScreenNetEvaluation (const CString& sClassName); + virtual void Init(); + protected: virtual void MenuLeft( PlayerNumber pn, const InputEventType type ); virtual void MenuUp( PlayerNumber pn, const InputEventType type ); diff --git a/stepmania/src/ScreenNetRoom.cpp b/stepmania/src/ScreenNetRoom.cpp index 26584ea5ac..d368d8a129 100644 --- a/stepmania/src/ScreenNetRoom.cpp +++ b/stepmania/src/ScreenNetRoom.cpp @@ -29,6 +29,12 @@ REGISTER_SCREEN_CLASS( ScreenNetRoom ); ScreenNetRoom::ScreenNetRoom( const CString& sName ) : ScreenNetSelectBase( sName ) { GAMESTATE->FinishStage(); +} + +void ScreenNetRoom::Init() +{ + ScreenNetSelectBase::Init(); + m_soundChangeSel.Load( THEME->GetPathS("ScreenNetRoom","change sel")); m_iRoomPlace = 0; @@ -77,7 +83,6 @@ ScreenNetRoom::ScreenNetRoom( const CString& sName ) : ScreenNetSelectBase( sNam this->AddChild( &m_sprCreateRoom ); NSMAN->ReportNSSOnOff(7); - return; } void ScreenNetRoom::Input( const DeviceInput& DeviceI, const InputEventType type, diff --git a/stepmania/src/ScreenNetRoom.h b/stepmania/src/ScreenNetRoom.h index 855d9e2735..c629e5185b 100644 --- a/stepmania/src/ScreenNetRoom.h +++ b/stepmania/src/ScreenNetRoom.h @@ -25,6 +25,7 @@ class ScreenNetRoom : public ScreenNetSelectBase { public: ScreenNetRoom( const CString& sName ); + virtual void Init(); virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput& GameI, const MenuInput& MenuI, const StyleInput& StyleI ); diff --git a/stepmania/src/ScreenNetSelectBase.cpp b/stepmania/src/ScreenNetSelectBase.cpp index 01bb9447f7..6708387175 100644 --- a/stepmania/src/ScreenNetSelectBase.cpp +++ b/stepmania/src/ScreenNetSelectBase.cpp @@ -32,6 +32,12 @@ const ScreenMessage SM_SMOnlinePack = ScreenMessage(SM_User+8); //Unused, but sh REGISTER_SCREEN_CLASS( ScreenNetSelectBase ); ScreenNetSelectBase::ScreenNetSelectBase( const CString& sName ) : ScreenWithMenuElements( sName ) { +} + +void ScreenNetSelectBase::Init() +{ + ScreenWithMenuElements::Init(); + //ChatBox m_sprChatInputBox.SetName( "ChatInputBox" ); m_sprChatInputBox.Load( THEME->GetPathG( m_sName, "ChatInputBox" ) ); diff --git a/stepmania/src/ScreenNetSelectBase.h b/stepmania/src/ScreenNetSelectBase.h index 76988a64ff..4315a2ff2d 100644 --- a/stepmania/src/ScreenNetSelectBase.h +++ b/stepmania/src/ScreenNetSelectBase.h @@ -12,6 +12,7 @@ class ScreenNetSelectBase : public ScreenWithMenuElements { public: ScreenNetSelectBase( const CString& sName ); + virtual void Init(); void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput& GameI, const MenuInput& MenuI, diff --git a/stepmania/src/ScreenNetSelectMusic.cpp b/stepmania/src/ScreenNetSelectMusic.cpp index fe62c6ceda..ee86d1ed95 100644 --- a/stepmania/src/ScreenNetSelectMusic.cpp +++ b/stepmania/src/ScreenNetSelectMusic.cpp @@ -38,6 +38,11 @@ ScreenNetSelectMusic::ScreenNetSelectMusic( const CString& sName ) : ScreenNetSe { /* Finish any previous stage. It's OK to call this when we havn't played a stage yet. */ GAMESTATE->FinishStage(); +} + +void ScreenNetSelectMusic::Init() +{ + ScreenNetSelectBase::Init(); //Diff Icon background m_sprDiff.Load( THEME->GetPathG( m_sName, "DiffBG" ) ); diff --git a/stepmania/src/ScreenNetSelectMusic.h b/stepmania/src/ScreenNetSelectMusic.h index 49fdd8f171..782472e68a 100644 --- a/stepmania/src/ScreenNetSelectMusic.h +++ b/stepmania/src/ScreenNetSelectMusic.h @@ -22,6 +22,7 @@ class ScreenNetSelectMusic : public ScreenNetSelectBase { public: ScreenNetSelectMusic( const CString& sName ); + virtual void Init(); virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput& GameI, const MenuInput& MenuI, diff --git a/stepmania/src/ScreenNetworkOptions.cpp b/stepmania/src/ScreenNetworkOptions.cpp index f7adc21fb3..88c58c8fa0 100644 --- a/stepmania/src/ScreenNetworkOptions.cpp +++ b/stepmania/src/ScreenNetworkOptions.cpp @@ -40,6 +40,11 @@ ScreenNetworkOptions::ScreenNetworkOptions( CString sClassName ) : ScreenOptions LOG->Trace( "ScreenNetworkOptions::ScreenNetworkOptions()" ); m_sClassName = sClassName; +} + +void ScreenNetworkOptions::Init() +{ + ScreenOptions::Init(); g_NetworkOptionsLines[PO_CONNECTION].choices.clear(); if ( NSMAN->useSMserver ) diff --git a/stepmania/src/ScreenNetworkOptions.h b/stepmania/src/ScreenNetworkOptions.h index c69c5a7f14..b4f7e741ee 100644 --- a/stepmania/src/ScreenNetworkOptions.h +++ b/stepmania/src/ScreenNetworkOptions.h @@ -7,6 +7,7 @@ class ScreenNetworkOptions : public ScreenOptions { public: ScreenNetworkOptions( CString sName ); + virtual void Init(); virtual void HandleScreenMessage( const ScreenMessage SM ); diff --git a/stepmania/src/ScreenOptions.cpp b/stepmania/src/ScreenOptions.cpp index 94087604a1..ca6d785995 100644 --- a/stepmania/src/ScreenOptions.cpp +++ b/stepmania/src/ScreenOptions.cpp @@ -113,8 +113,13 @@ ScreenOptions::ScreenOptions( CString sClassName ) : ScreenWithMenuElements(sCla CAPITALIZE_ALL_OPTION_NAMES (m_sName,"CapitalizeAllOptionNames") { LOG->Trace( "ScreenOptions::ScreenOptions()" ); +} +void ScreenOptions::Init() +{ + ScreenWithMenuElements::Init(); + m_OptionsNavigation = PREFSMAN->m_bArcadeOptionsNavigation? NAV_THREE_KEY:NAV_FIVE_KEY; m_SoundChangeCol.Load( THEME->GetPathS(m_sName,"change"), true ); diff --git a/stepmania/src/ScreenOptions.h b/stepmania/src/ScreenOptions.h index 06c3f58abb..abb16a8f4a 100644 --- a/stepmania/src/ScreenOptions.h +++ b/stepmania/src/ScreenOptions.h @@ -22,6 +22,7 @@ class ScreenOptions : public ScreenWithMenuElements { public: ScreenOptions( CString sClassName ); + virtual void Init(); void InitMenu( InputMode im, OptionRowDefinition defs[], int iNumOptionLines, bool bShowUnderlines = true ); virtual ~ScreenOptions(); virtual void Update( float fDeltaTime ); diff --git a/stepmania/src/ScreenOptionsMaster.cpp b/stepmania/src/ScreenOptionsMaster.cpp index 786714b5c4..7347781e41 100644 --- a/stepmania/src/ScreenOptionsMaster.cpp +++ b/stepmania/src/ScreenOptionsMaster.cpp @@ -458,6 +458,11 @@ ScreenOptionsMaster::ScreenOptionsMaster( CString sClassName ): ScreenOptions( sClassName ) { LOG->Trace("ScreenOptionsMaster::ScreenOptionsMaster(%s)", m_sName.c_str() ); +} + +void ScreenOptionsMaster::Init() +{ + ScreenOptions::Init(); CStringArray asLineNames; split( LINE_NAMES, ",", asLineNames ); diff --git a/stepmania/src/ScreenOptionsMaster.h b/stepmania/src/ScreenOptionsMaster.h index ba7f56f7e0..3c73652857 100644 --- a/stepmania/src/ScreenOptionsMaster.h +++ b/stepmania/src/ScreenOptionsMaster.h @@ -19,6 +19,7 @@ class ScreenOptionsMaster: public ScreenOptions { public: ScreenOptionsMaster( CString sName ); + virtual void Init(); virtual ~ScreenOptionsMaster(); void Update( float fDelta ); diff --git a/stepmania/src/ScreenPackages.cpp b/stepmania/src/ScreenPackages.cpp index 6969591e2e..70b1eaaeb3 100644 --- a/stepmania/src/ScreenPackages.cpp +++ b/stepmania/src/ScreenPackages.cpp @@ -24,11 +24,17 @@ const ScreenMessage SM_BackFromURL = ScreenMessage(SM_User+2); REGISTER_SCREEN_CLASS( ScreenPackages ); ScreenPackages::ScreenPackages( CString sClassName ) : ScreenWithMenuElements( sClassName ) { +} + +void ScreenPackages::Init() +{ + ScreenWithMenuElements::Init(); + m_iPackagesPos = 0; m_iLinksPos = 0; m_iDLorLST = 0; m_bIsDownloading = false; - m_bCanDL = THEME->GetMetricB( sClassName, "CanDL" ); + m_bCanDL = THEME->GetMetricB( m_sName, "CanDL" ); m_sStatus = ""; m_fLastUpdate = 0; m_iTotalBytes = 0; diff --git a/stepmania/src/ScreenPackages.h b/stepmania/src/ScreenPackages.h index 2ae0fef334..7543c4150c 100644 --- a/stepmania/src/ScreenPackages.h +++ b/stepmania/src/ScreenPackages.h @@ -12,6 +12,7 @@ class ScreenPackages : public ScreenWithMenuElements { public: ScreenPackages( CString sName ); + virtual void Init(); virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); virtual void HandleScreenMessage( const ScreenMessage SM ); diff --git a/stepmania/src/ScreenPlayerOptions.cpp b/stepmania/src/ScreenPlayerOptions.cpp index d3d155b30d..64e6042ba2 100644 --- a/stepmania/src/ScreenPlayerOptions.cpp +++ b/stepmania/src/ScreenPlayerOptions.cpp @@ -22,6 +22,11 @@ ScreenPlayerOptions::ScreenPlayerOptions( CString sClassName ) : ScreenOptionsMaster( sClassName ) { LOG->Trace( "ScreenPlayerOptions::ScreenPlayerOptions()" ); +} + +void ScreenPlayerOptions::Init() +{ + ScreenOptionsMaster::Init(); m_bAskOptionsMessage = !GAMESTATE->m_bEditing && PREFSMAN->m_ShowSongOptions == PrefsManager::ASK; diff --git a/stepmania/src/ScreenPlayerOptions.h b/stepmania/src/ScreenPlayerOptions.h index 25903a4a4f..ce88089856 100644 --- a/stepmania/src/ScreenPlayerOptions.h +++ b/stepmania/src/ScreenPlayerOptions.h @@ -7,6 +7,7 @@ class ScreenPlayerOptions : public ScreenOptionsMaster { public: ScreenPlayerOptions( CString sName ); + virtual void Init(); virtual void Update( float fDelta ); virtual void DrawPrimitives(); diff --git a/stepmania/src/ScreenProfileOptions.cpp b/stepmania/src/ScreenProfileOptions.cpp index 2236d7075e..e1ff9a2f12 100644 --- a/stepmania/src/ScreenProfileOptions.cpp +++ b/stepmania/src/ScreenProfileOptions.cpp @@ -40,6 +40,11 @@ REGISTER_SCREEN_CLASS( ScreenProfileOptions ); ScreenProfileOptions::ScreenProfileOptions( CString sClassName ) : ScreenOptions( sClassName ) { LOG->Trace( "ScreenProfileOptions::ScreenProfileOptions()" ); +} + +void ScreenProfileOptions::Init() +{ + ScreenOptions::Init(); g_ProfileOptionsLines[PO_PLAYER1].choices.clear(); g_ProfileOptionsLines[PO_PLAYER1].choices.push_back( "-NONE-" ); diff --git a/stepmania/src/ScreenProfileOptions.h b/stepmania/src/ScreenProfileOptions.h index a8139eeed4..7b81baf031 100644 --- a/stepmania/src/ScreenProfileOptions.h +++ b/stepmania/src/ScreenProfileOptions.h @@ -7,6 +7,7 @@ class ScreenProfileOptions : public ScreenOptions { public: ScreenProfileOptions( CString sName ); + virtual void Init(); virtual void HandleScreenMessage( const ScreenMessage SM ); diff --git a/stepmania/src/ScreenPrompt.cpp b/stepmania/src/ScreenPrompt.cpp index d79b2876fc..c2a45ad4ee 100644 --- a/stepmania/src/ScreenPrompt.cpp +++ b/stepmania/src/ScreenPrompt.cpp @@ -28,13 +28,19 @@ ScreenPrompt::ScreenPrompt( CString sText, bool bYesNoPrompt, bool bDefaultAnswe m_pOnYes = OnYes; m_pOnNo = OnNo; m_pCallbackData = pCallbackData; + m_sText = sText; +} + +void ScreenPrompt::Init() +{ + Screen::Init(); m_Background.LoadFromAniDir( THEME->GetPathB("ScreenPrompt","background") ); m_Background.PlayCommand("On"); this->AddChild( &m_Background ); m_textQuestion.LoadFromFont( THEME->GetPathF("Common","normal") ); - m_textQuestion.SetText( sText ); + m_textQuestion.SetText( m_sText ); m_textQuestion.SetXY( QUESTION_X, QUESTION_Y ); this->AddChild( &m_textQuestion ); diff --git a/stepmania/src/ScreenPrompt.h b/stepmania/src/ScreenPrompt.h index 679516d1cb..7c8db36ad8 100644 --- a/stepmania/src/ScreenPrompt.h +++ b/stepmania/src/ScreenPrompt.h @@ -15,6 +15,7 @@ class ScreenPrompt : public Screen { public: ScreenPrompt( CString sName ); + virtual void Init(); ScreenPrompt( CString sText, bool bYesNoPrompt=false, bool bDefaultAnswer = false, void(*OnYes)(void*) = NULL, void(*OnNo)(void*) = NULL, void* pCallbackData = NULL ); virtual void Update( float fDeltaTime ); @@ -30,7 +31,7 @@ protected: void MenuBack( PlayerNumber pn ); void MenuStart( PlayerNumber pn ); - + CString m_sText; BGAnimation m_Background; BitmapText m_textQuestion; Quad m_rectAnswerBox; diff --git a/stepmania/src/ScreenRanking.cpp b/stepmania/src/ScreenRanking.cpp index 9f977f7d05..86a0b1a1e4 100644 --- a/stepmania/src/ScreenRanking.cpp +++ b/stepmania/src/ScreenRanking.cpp @@ -90,6 +90,12 @@ const ScreenMessage SM_HidePage = (ScreenMessage)(SM_User+68); REGISTER_SCREEN_CLASS( ScreenRanking ); ScreenRanking::ScreenRanking( CString sClassName ) : ScreenAttract( sClassName ) { +} + +void ScreenRanking::Init() +{ + ScreenAttract::Init(); + // init Actors for category and course { m_Banner.SetName( "Banner" ); diff --git a/stepmania/src/ScreenRanking.h b/stepmania/src/ScreenRanking.h index 5d2ba0b301..844f50c81c 100644 --- a/stepmania/src/ScreenRanking.h +++ b/stepmania/src/ScreenRanking.h @@ -30,6 +30,7 @@ class ScreenRanking : public ScreenAttract { public: ScreenRanking( CString sName ); + virtual void Init(); ~ScreenRanking(); void HandleScreenMessage( const ScreenMessage SM ); diff --git a/stepmania/src/ScreenReloadSongs.cpp b/stepmania/src/ScreenReloadSongs.cpp index 0a2e8036f9..7901d0d6ba 100644 --- a/stepmania/src/ScreenReloadSongs.cpp +++ b/stepmania/src/ScreenReloadSongs.cpp @@ -49,6 +49,12 @@ public: REGISTER_SCREEN_CLASS( ScreenReloadSongs ); ScreenReloadSongs::ScreenReloadSongs( CString sClassName ): Screen(sClassName) { +} + +void ScreenReloadSongs::Init() +{ + Screen::Init(); + m_iUpdates = 0; m_Loading.LoadFromFont( THEME->GetPathF("Common", "normal") ); diff --git a/stepmania/src/ScreenReloadSongs.h b/stepmania/src/ScreenReloadSongs.h index 1a4d34b527..04dde73509 100644 --- a/stepmania/src/ScreenReloadSongs.h +++ b/stepmania/src/ScreenReloadSongs.h @@ -9,6 +9,7 @@ class ScreenReloadSongs: public Screen { public: ScreenReloadSongs( CString sClassName ); + virtual void Init(); ~ScreenReloadSongs(); void Update( float fDeltaTime ); diff --git a/stepmania/src/ScreenSMOnlineLogin.cpp b/stepmania/src/ScreenSMOnlineLogin.cpp index 4b335bb626..f8fcd06289 100644 --- a/stepmania/src/ScreenSMOnlineLogin.cpp +++ b/stepmania/src/ScreenSMOnlineLogin.cpp @@ -28,6 +28,11 @@ OptionRowDefinition g_ProfileLine[1] = { ScreenSMOnlineLogin::ScreenSMOnlineLogin(CString sClassName) : ScreenOptions(sClassName) { LOG->Trace( "ScreenSMOnlineLogin::ScreenSMOnlineLogin()" ); +} + +void ScreenSMOnlineLogin::Init() +{ + ScreenOptions::Init(); g_ProfileLine[0].choices.clear(); PROFILEMAN->GetLocalProfileNames( g_ProfileLine[0].choices ); diff --git a/stepmania/src/ScreenSMOnlineLogin.h b/stepmania/src/ScreenSMOnlineLogin.h index 62dbea6c4c..12f69edca6 100644 --- a/stepmania/src/ScreenSMOnlineLogin.h +++ b/stepmania/src/ScreenSMOnlineLogin.h @@ -3,9 +3,11 @@ #include "ScreenOptions.h" -class ScreenSMOnlineLogin : public ScreenOptions { +class ScreenSMOnlineLogin : public ScreenOptions +{ public: ScreenSMOnlineLogin(CString sName); + virtual void Init(); virtual void HandleScreenMessage(const ScreenMessage SM); virtual void MenuStart(PlayerNumber pn,const InputEventType type); void SendLogin(CString sPassword); diff --git a/stepmania/src/ScreenSelect.cpp b/stepmania/src/ScreenSelect.cpp index 7a9e05da15..bfb9c855bf 100644 --- a/stepmania/src/ScreenSelect.cpp +++ b/stepmania/src/ScreenSelect.cpp @@ -34,6 +34,11 @@ ScreenSelect::ScreenSelect( CString sClassName ) : IDLE_TIMEOUT_SECONDS(m_sName,"IdleTimeoutSeconds") { LOG->Trace( "ScreenSelect::ScreenSelect()" ); +} + +void ScreenSelect::Init() +{ + ScreenWithMenuElements::Init(); // // Load choices diff --git a/stepmania/src/ScreenSelect.h b/stepmania/src/ScreenSelect.h index 316b799992..510c493460 100644 --- a/stepmania/src/ScreenSelect.h +++ b/stepmania/src/ScreenSelect.h @@ -15,6 +15,7 @@ class ScreenSelect : public ScreenWithMenuElements { public: ScreenSelect( CString sClassName ); + virtual void Init(); virtual ~ScreenSelect(); virtual void Update( float fDelta ); diff --git a/stepmania/src/ScreenSelectCharacter.cpp b/stepmania/src/ScreenSelectCharacter.cpp index 3fc62641f1..e6912665b6 100644 --- a/stepmania/src/ScreenSelectCharacter.cpp +++ b/stepmania/src/ScreenSelectCharacter.cpp @@ -77,7 +77,12 @@ ScreenSelectCharacter::ScreenSelectCharacter( CString sClassName ) : ScreenWithM return; } } +} + +void ScreenSelectCharacter::Init() +{ + ScreenWithMenuElements::Init(); FOREACH_PlayerNumber( p ) { diff --git a/stepmania/src/ScreenSelectCharacter.h b/stepmania/src/ScreenSelectCharacter.h index 6ed44fa453..cdbc0c8074 100644 --- a/stepmania/src/ScreenSelectCharacter.h +++ b/stepmania/src/ScreenSelectCharacter.h @@ -17,6 +17,7 @@ class ScreenSelectCharacter : public ScreenWithMenuElements { public: ScreenSelectCharacter( CString sName ); + virtual void Init(); virtual ~ScreenSelectCharacter(); virtual void DrawPrimitives(); diff --git a/stepmania/src/ScreenSelectDifficulty.cpp b/stepmania/src/ScreenSelectDifficulty.cpp index 11adb0c672..77b600e633 100644 --- a/stepmania/src/ScreenSelectDifficulty.cpp +++ b/stepmania/src/ScreenSelectDifficulty.cpp @@ -31,6 +31,11 @@ REGISTER_SCREEN_CLASS( ScreenSelectDifficulty ); ScreenSelectDifficulty::ScreenSelectDifficulty( CString sClassName ) : ScreenSelect( sClassName ) { m_CurrentPage = PAGE_1; +} + +void ScreenSelectDifficulty::Init() +{ + ScreenSelect::Init(); FOREACH_PlayerNumber( p ) { @@ -38,7 +43,7 @@ ScreenSelectDifficulty::ScreenSelectDifficulty( CString sClassName ) : ScreenSel m_bChosen[p] = false; } - unsigned c; // GCC is bitching again. + unsigned c; for( c=0; c aAllSongs; SONGMAN->GetSongs( aAllSongs ); diff --git a/stepmania/src/ScreenSelectGroup.h b/stepmania/src/ScreenSelectGroup.h index c362e8669f..4fcebf88b2 100644 --- a/stepmania/src/ScreenSelectGroup.h +++ b/stepmania/src/ScreenSelectGroup.h @@ -15,6 +15,7 @@ class ScreenSelectGroup : public ScreenWithMenuElements { public: ScreenSelectGroup( CString sName ); + virtual void Init(); virtual void DrawPrimitives(); virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); diff --git a/stepmania/src/ScreenSelectMaster.cpp b/stepmania/src/ScreenSelectMaster.cpp index 0f964d86e9..7b7a8ce9a8 100644 --- a/stepmania/src/ScreenSelectMaster.cpp +++ b/stepmania/src/ScreenSelectMaster.cpp @@ -43,6 +43,11 @@ ScreenSelectMaster::ScreenSelectMaster( CString sClassName ) : ScreenSelect( sCl SCROLLER_SPACING_Y(m_sName,"ScrollerSpacingY"), DEFAULT_CHOICE(m_sName,"DefaultChoice") { +} + +void ScreenSelectMaster::Init() +{ + ScreenSelect::Init(); // TODO: Move default choice to ScreenSelect int iDefaultChoice = -1; diff --git a/stepmania/src/ScreenSelectMaster.h b/stepmania/src/ScreenSelectMaster.h index 971a32c7d0..f0cb9e8cef 100644 --- a/stepmania/src/ScreenSelectMaster.h +++ b/stepmania/src/ScreenSelectMaster.h @@ -18,6 +18,7 @@ class ScreenSelectMaster : public ScreenSelect { public: ScreenSelectMaster( CString sName ); + virtual void Init(); virtual void Update( float fDelta ); diff --git a/stepmania/src/ScreenSelectMode.cpp b/stepmania/src/ScreenSelectMode.cpp index 72b3cf57dc..38f3874f16 100644 --- a/stepmania/src/ScreenSelectMode.cpp +++ b/stepmania/src/ScreenSelectMode.cpp @@ -34,6 +34,12 @@ Desc: Sets up the screen display REGISTER_SCREEN_CLASS( ScreenSelectMode ); ScreenSelectMode::ScreenSelectMode( CString sClassName ) : ScreenSelect( sClassName ) { +} + +void ScreenSelectMode::Init() +{ + ScreenSelect::Init(); + m_b2DAvailable = m_bCharsAvailable = false; int pn; diff --git a/stepmania/src/ScreenSelectMode.h b/stepmania/src/ScreenSelectMode.h index 9786b8a36e..35e765e0f7 100644 --- a/stepmania/src/ScreenSelectMode.h +++ b/stepmania/src/ScreenSelectMode.h @@ -24,6 +24,7 @@ class ScreenSelectMode : public ScreenSelect { public: ScreenSelectMode( CString sName ); // Constructor + virtual void Init(); virtual ~ScreenSelectMode(); // Destructor virtual void MenuLeft( PlayerNumber pn ); virtual void MenuRight( PlayerNumber pn ); diff --git a/stepmania/src/ScreenSelectMusic.cpp b/stepmania/src/ScreenSelectMusic.cpp index f2e3c7de39..5b971079a0 100644 --- a/stepmania/src/ScreenSelectMusic.cpp +++ b/stepmania/src/ScreenSelectMusic.cpp @@ -68,11 +68,17 @@ ScreenSelectMusic::ScreenSelectMusic( CString sClassName ) : ScreenWithMenuEleme LIGHTSMAN->SetLightsMode( LIGHTSMODE_MENU ); - m_DisplayMode = GAMESTATE->IsCourseMode() ? DISPLAY_COURSES : DISPLAY_SONGS; - /* Finish any previous stage. It's OK to call this when we havn't played a stage yet. * Do this before anything that might look at GAMESTATE->m_iCurrentStageIndex. */ GAMESTATE->FinishStage(); +} + + +void ScreenSelectMusic::Init() +{ + ScreenWithMenuElements::Init(); + + m_DisplayMode = GAMESTATE->IsCourseMode() ? DISPLAY_COURSES : DISPLAY_SONGS; /* Cache: */ g_sFallbackCDTitlePath = THEME->GetPathG(m_sName,"fallback cdtitle"); diff --git a/stepmania/src/ScreenSelectMusic.h b/stepmania/src/ScreenSelectMusic.h index c3a83ee346..d13532941f 100644 --- a/stepmania/src/ScreenSelectMusic.h +++ b/stepmania/src/ScreenSelectMusic.h @@ -31,6 +31,7 @@ class ScreenSelectMusic : public ScreenWithMenuElements public: ScreenSelectMusic( CString sName ); virtual ~ScreenSelectMusic(); + virtual void Init(); virtual void DrawPrimitives(); diff --git a/stepmania/src/ScreenSelectStyle.cpp b/stepmania/src/ScreenSelectStyle.cpp index 19f8cdd109..9e201aa6f2 100644 --- a/stepmania/src/ScreenSelectStyle.cpp +++ b/stepmania/src/ScreenSelectStyle.cpp @@ -22,9 +22,14 @@ REGISTER_SCREEN_CLASS( ScreenSelectStyle ); ScreenSelectStyle::ScreenSelectStyle( CString sClassName ) : ScreenSelect( sClassName ) { - m_iSelection = 0; - LIGHTSMAN->SetLightsMode( LIGHTSMODE_MENU ); +} + +void ScreenSelectStyle::Init() +{ + ScreenSelect::Init(); + + m_iSelection = 0; for( unsigned i=0; iTrace( "ScreenSetTime::ScreenSetTime()" ); - +} + +void ScreenSetTime::Init() +{ + ScreenWithMenuElements::Init(); + m_Selection = hour; FOREACH_PlayerNumber( pn ) diff --git a/stepmania/src/ScreenSetTime.h b/stepmania/src/ScreenSetTime.h index 5099fcb1ed..17eb414b09 100644 --- a/stepmania/src/ScreenSetTime.h +++ b/stepmania/src/ScreenSetTime.h @@ -19,6 +19,7 @@ class ScreenSetTime : public ScreenWithMenuElements { public: ScreenSetTime( CString sName ); + virtual void Init(); virtual void Update( float fDelta ); virtual void DrawPrimitives(); diff --git a/stepmania/src/ScreenSongOptions.cpp b/stepmania/src/ScreenSongOptions.cpp index c19afdc601..4db8b3e072 100644 --- a/stepmania/src/ScreenSongOptions.cpp +++ b/stepmania/src/ScreenSongOptions.cpp @@ -20,6 +20,13 @@ REGISTER_SCREEN_CLASS( ScreenSongOptions ); ScreenSongOptions::ScreenSongOptions( CString sClassName ) : ScreenOptionsMaster( sClassName ) { +} + + +void ScreenSongOptions::Init() +{ + ScreenOptionsMaster::Init(); + /* Hack: If we're coming in from "press start for more options", we need a different * fade in. */ if(PREFSMAN->m_ShowSongOptions == PrefsManager::ASK) diff --git a/stepmania/src/ScreenSongOptions.h b/stepmania/src/ScreenSongOptions.h index 466a3f3935..edf7223f77 100644 --- a/stepmania/src/ScreenSongOptions.h +++ b/stepmania/src/ScreenSongOptions.h @@ -7,6 +7,7 @@ class ScreenSongOptions : public ScreenOptionsMaster { public: ScreenSongOptions( CString sName ); + virtual void Init(); static CString GetNextScreen(); private: diff --git a/stepmania/src/ScreenSplash.cpp b/stepmania/src/ScreenSplash.cpp index 29c33d1110..2c6e3df114 100644 --- a/stepmania/src/ScreenSplash.cpp +++ b/stepmania/src/ScreenSplash.cpp @@ -13,6 +13,12 @@ ScreenSplash::ScreenSplash( CString sClassName ) : ScreenWithMenuElements( sClas PREV_SCREEN (m_sName,"PrevScreen"), MINIMUM_LOAD_DELAY_SECONDS (m_sName,"MinimumLoadDelaySeconds") { +} + +void ScreenSplash::Init() +{ + ScreenWithMenuElements::Init(); + /* Prep the new screen once m_sprOverlay is complete. */ this->PostScreenMessage( SM_PrepScreen, m_In.GetTweenTimeLeft() ); } diff --git a/stepmania/src/ScreenSplash.h b/stepmania/src/ScreenSplash.h index 4d24a27faa..3ed168b568 100644 --- a/stepmania/src/ScreenSplash.h +++ b/stepmania/src/ScreenSplash.h @@ -10,6 +10,7 @@ class ScreenSplash : public ScreenWithMenuElements { public: ScreenSplash( CString sName ); + virtual void Init(); virtual void HandleScreenMessage( const ScreenMessage SM ); virtual void MenuBack( PlayerNumber pn ); diff --git a/stepmania/src/ScreenStage.cpp b/stepmania/src/ScreenStage.cpp index 551d857075..3441366b57 100644 --- a/stepmania/src/ScreenStage.cpp +++ b/stepmania/src/ScreenStage.cpp @@ -24,6 +24,12 @@ const ScreenMessage SM_PrepScreen = (ScreenMessage)(SM_User+0); REGISTER_SCREEN_CLASS( ScreenStage ); ScreenStage::ScreenStage( CString sClassName ) : Screen( sClassName ) { +} + +void ScreenStage::Init() +{ + Screen::Init(); + m_bZeroDeltaOnNextUpdate = false; SOUND->StopMusic(); diff --git a/stepmania/src/ScreenStage.h b/stepmania/src/ScreenStage.h index d120959289..d17837e3c3 100644 --- a/stepmania/src/ScreenStage.h +++ b/stepmania/src/ScreenStage.h @@ -14,6 +14,7 @@ class ScreenStage : public Screen { public: ScreenStage( CString sName ); + virtual void Init(); virtual void HandleScreenMessage( const ScreenMessage SM ); virtual void Update( float fDeltaTime ); diff --git a/stepmania/src/ScreenStyleSplash.cpp b/stepmania/src/ScreenStyleSplash.cpp index 608e9a6777..36f4233ad4 100644 --- a/stepmania/src/ScreenStyleSplash.cpp +++ b/stepmania/src/ScreenStyleSplash.cpp @@ -23,6 +23,12 @@ const ScreenMessage SM_StartClosing = ScreenMessage(SM_User-8); REGISTER_SCREEN_CLASS( ScreenStyleSplash ); ScreenStyleSplash::ScreenStyleSplash( CString sName ) : ScreenWithMenuElements( sName ) { +} + +void ScreenStyleSplash::Init() +{ + ScreenWithMenuElements::Init(); + SOUND->StopMusic(); CString sGameName = GAMESTATE->GetCurrentGame()->m_szName; diff --git a/stepmania/src/ScreenStyleSplash.h b/stepmania/src/ScreenStyleSplash.h index 66494f4256..ef92b57086 100644 --- a/stepmania/src/ScreenStyleSplash.h +++ b/stepmania/src/ScreenStyleSplash.h @@ -9,6 +9,7 @@ class ScreenStyleSplash : public ScreenWithMenuElements { public: ScreenStyleSplash( CString sName ); + virtual void Init(); virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); virtual void HandleScreenMessage( const ScreenMessage SM ); diff --git a/stepmania/src/ScreenSystemLayer.cpp b/stepmania/src/ScreenSystemLayer.cpp index 32e5e3e44e..351b1a3534 100644 --- a/stepmania/src/ScreenSystemLayer.cpp +++ b/stepmania/src/ScreenSystemLayer.cpp @@ -31,6 +31,12 @@ //REGISTER_SCREEN_CLASS( ScreenSystemLayer ); ScreenSystemLayer::ScreenSystemLayer() : Screen("ScreenSystemLayer") { +} + +void ScreenSystemLayer::Init() +{ + Screen::Init(); + this->AddChild(&m_textMessage); this->AddChild(&m_textStats); this->AddChild(&m_textTime); diff --git a/stepmania/src/ScreenSystemLayer.h b/stepmania/src/ScreenSystemLayer.h index 6c2f371b92..906934b067 100644 --- a/stepmania/src/ScreenSystemLayer.h +++ b/stepmania/src/ScreenSystemLayer.h @@ -28,6 +28,7 @@ class ScreenSystemLayer : public Screen public: ScreenSystemLayer(); + virtual void Init(); void SystemMessage( const CString &sMessage ); void SystemMessageNoAnimate( const CString &sMessage ); void ReloadCreditsText(); diff --git a/stepmania/src/ScreenTest.cpp b/stepmania/src/ScreenTest.cpp index e54ec7e721..1c322eff0b 100644 --- a/stepmania/src/ScreenTest.cpp +++ b/stepmania/src/ScreenTest.cpp @@ -31,6 +31,12 @@ REGISTER_SCREEN_CLASS( ScreenTest ); ScreenTest::ScreenTest( CString sClassName ) : Screen( sClassName ) { current = NULL; +} + +void ScreenTest::Init() +{ + Screen::Init(); + cur_screen = -1; SOUND->StopMusic(); diff --git a/stepmania/src/ScreenTest.h b/stepmania/src/ScreenTest.h index 48cc6f60dc..c9a99962f6 100644 --- a/stepmania/src/ScreenTest.h +++ b/stepmania/src/ScreenTest.h @@ -8,6 +8,7 @@ class ScreenTest : public Screen public: ScreenTest( CString sName ); ~ScreenTest(); + virtual void Init(); virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); virtual void HandleScreenMessage( const ScreenMessage SM ); diff --git a/stepmania/src/ScreenTestFonts.cpp b/stepmania/src/ScreenTestFonts.cpp index a6540e397d..7f3a4c9a9d 100644 --- a/stepmania/src/ScreenTestFonts.cpp +++ b/stepmania/src/ScreenTestFonts.cpp @@ -28,6 +28,12 @@ void ScreenTestFonts::HandleScreenMessage( const ScreenMessage SM ) REGISTER_SCREEN_CLASS( ScreenTestFonts ); ScreenTestFonts::ScreenTestFonts( CString sClassName ) : Screen( sClassName ) { +} + +void ScreenTestFonts::Init() +{ + Screen::Init(); + Hline.SetXY(SCREEN_CENTER_X, SCREEN_CENTER_Y); Hline.SetZoomX(LineWidth); Hline.SetDiffuse( RageColor(1, 1, 1, 1) ); diff --git a/stepmania/src/ScreenTestFonts.h b/stepmania/src/ScreenTestFonts.h index 5d69ee5178..ea78244396 100644 --- a/stepmania/src/ScreenTestFonts.h +++ b/stepmania/src/ScreenTestFonts.h @@ -9,6 +9,7 @@ class ScreenTestFonts: public Screen { public: ScreenTestFonts( CString sName ); + virtual void Init(); void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); void Draw(); diff --git a/stepmania/src/ScreenTestInput.cpp b/stepmania/src/ScreenTestInput.cpp index eb4cc5baf1..dbf7666390 100644 --- a/stepmania/src/ScreenTestInput.cpp +++ b/stepmania/src/ScreenTestInput.cpp @@ -15,7 +15,11 @@ REGISTER_SCREEN_CLASS( ScreenTestInput ); ScreenTestInput::ScreenTestInput( CString sClassName ) : ScreenWithMenuElements( sClassName ) { LOG->Trace( "ScreenTestInput::ScreenTestInput()" ); - +} + +void ScreenTestInput::Init() +{ + ScreenWithMenuElements::Init(); m_textInputs.LoadFromFont( THEME->GetPathF("Common","normal") ); m_textInputs.SetText( "" ); diff --git a/stepmania/src/ScreenTestInput.h b/stepmania/src/ScreenTestInput.h index eb1c6def03..876ccb17d0 100644 --- a/stepmania/src/ScreenTestInput.h +++ b/stepmania/src/ScreenTestInput.h @@ -11,6 +11,7 @@ class ScreenTestInput : public ScreenWithMenuElements { public: ScreenTestInput( CString sName ); + virtual void Init(); virtual ~ScreenTestInput(); virtual void DrawPrimitives(); diff --git a/stepmania/src/ScreenTestLights.cpp b/stepmania/src/ScreenTestLights.cpp index ce2fbc15f3..9f762fcd5e 100644 --- a/stepmania/src/ScreenTestLights.cpp +++ b/stepmania/src/ScreenTestLights.cpp @@ -15,7 +15,13 @@ REGISTER_SCREEN_CLASS( ScreenTestLights ); ScreenTestLights::ScreenTestLights( CString sClassName ) : ScreenWithMenuElements( sClassName ) { LOG->Trace( "ScreenTestLights::ScreenTestLights()" ); - + + LIGHTSMAN->SetLightsMode( LIGHTSMODE_TEST ); +} + +void ScreenTestLights::Init() +{ + ScreenWithMenuElements::Init(); m_textInputs.LoadFromFont( THEME->GetPathF("Common","normal") ); m_textInputs.SetText( "" ); @@ -25,8 +31,6 @@ ScreenTestLights::ScreenTestLights( CString sClassName ) : ScreenWithMenuElement this->AddChild( &m_textInputs ); SOUND->PlayMusic( THEME->GetPathS("ScreenTestLights","music") ); - - LIGHTSMAN->SetLightsMode( LIGHTSMODE_TEST ); } diff --git a/stepmania/src/ScreenTestLights.h b/stepmania/src/ScreenTestLights.h index 85d4f98f4e..32c71293d0 100644 --- a/stepmania/src/ScreenTestLights.h +++ b/stepmania/src/ScreenTestLights.h @@ -9,6 +9,7 @@ class ScreenTestLights : public ScreenWithMenuElements { public: ScreenTestLights( CString sName ); + virtual void Init(); virtual ~ScreenTestLights(); virtual void DrawPrimitives(); diff --git a/stepmania/src/ScreenTestSound.cpp b/stepmania/src/ScreenTestSound.cpp index 2d244ba703..8a5c0e3f62 100644 --- a/stepmania/src/ScreenTestSound.cpp +++ b/stepmania/src/ScreenTestSound.cpp @@ -9,6 +9,12 @@ REGISTER_SCREEN_CLASS( ScreenTestSound ); ScreenTestSound::ScreenTestSound( CString sClassName ) : Screen( sClassName ) { +} + +void ScreenTestSound::Init() +{ + Screen::Init(); + this->AddChild(&HEEEEEEEEELP); HEEEEEEEEELP.SetXY(450, 400); diff --git a/stepmania/src/ScreenTestSound.h b/stepmania/src/ScreenTestSound.h index f7887994df..8cf3cc3ce5 100644 --- a/stepmania/src/ScreenTestSound.h +++ b/stepmania/src/ScreenTestSound.h @@ -11,6 +11,7 @@ class ScreenTestSound : public Screen { public: ScreenTestSound( CString sName ); + virtual void Init(); ~ScreenTestSound(); virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); diff --git a/stepmania/src/ScreenTextEntry.cpp b/stepmania/src/ScreenTextEntry.cpp index b31ef95828..70188e622e 100644 --- a/stepmania/src/ScreenTextEntry.cpp +++ b/stepmania/src/ScreenTextEntry.cpp @@ -34,8 +34,8 @@ bool ScreenTextEntry::s_bCancelledLast = false; ScreenTextEntry::ScreenTextEntry( CString sClassName, CString sQuestion, CString sInitialAnswer, void(*OnOK)(CString sAnswer), void(*OnCancel)(), bool bPassword ) : Screen( sClassName ) { - m_bPassword = bPassword; // Added Password Support -APL 1/20/05 m_bIsTransparent = true; // draw screens below us + m_bPassword = bPassword; m_pOnOK = OnOK; m_pOnCancel = OnCancel; @@ -43,11 +43,16 @@ ScreenTextEntry::ScreenTextEntry( CString sClassName, CString sQuestion, CString m_sAnswer = CStringToWstring(sInitialAnswer); m_bCancelled = false; + m_sQuestion = sQuestion; +} + +void ScreenTextEntry::Init() +{ m_Background.LoadFromAniDir( THEME->GetPathB("ScreenPrompt","background") ); this->AddChild( &m_Background ); m_textQuestion.LoadFromFont( THEME->GetPathF("Common","normal") ); - m_textQuestion.SetText( sQuestion ); + m_textQuestion.SetText( m_sQuestion ); m_textQuestion.SetXY( QUESTION_X, QUESTION_Y ); this->AddChild( &m_textQuestion ); diff --git a/stepmania/src/ScreenTextEntry.h b/stepmania/src/ScreenTextEntry.h index 201d581389..11c00a271b 100644 --- a/stepmania/src/ScreenTextEntry.h +++ b/stepmania/src/ScreenTextEntry.h @@ -14,6 +14,7 @@ class ScreenTextEntry : public Screen { public: ScreenTextEntry( CString sName, CString sQuestion, CString sInitialAnswer, void(*OnOK)(CString sAnswer) = NULL, void(*OnCanel)() = NULL, bool bPassword = false ); + virtual void Init(); virtual void Update( float fDeltaTime ); virtual void DrawPrimitives(); @@ -31,6 +32,7 @@ protected: void UpdateText(); + CString m_sQuestion; bool m_bPassword; BGAnimation m_Background; BitmapText m_textQuestion; diff --git a/stepmania/src/ScreenTitleMenu.cpp b/stepmania/src/ScreenTitleMenu.cpp index 113f21137b..2b3f247d60 100644 --- a/stepmania/src/ScreenTitleMenu.cpp +++ b/stepmania/src/ScreenTitleMenu.cpp @@ -52,7 +52,11 @@ ScreenTitleMenu::ScreenTitleMenu( CString sScreenName ) : // TRICKY: Do this after GameState::Reset. LIGHTSMAN->SetLightsMode( LIGHTSMODE_JOINING ); +} +void ScreenTitleMenu::Init() +{ + ScreenSelectMaster::Init(); m_sprLogo.Load( THEME->GetPathG(m_sName,GAMESTATE->GetCurrentGame()->m_szName) ); m_sprLogo->SetName( "Logo" ); diff --git a/stepmania/src/ScreenTitleMenu.h b/stepmania/src/ScreenTitleMenu.h index e50c8fdf76..04945325f2 100644 --- a/stepmania/src/ScreenTitleMenu.h +++ b/stepmania/src/ScreenTitleMenu.h @@ -15,6 +15,7 @@ class ScreenTitleMenu : public ScreenSelectMaster { public: ScreenTitleMenu( CString sName ); + virtual void Init(); virtual ~ScreenTitleMenu(); virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); diff --git a/stepmania/src/ScreenUnlock.cpp b/stepmania/src/ScreenUnlock.cpp index 551a798782..40a6481990 100644 --- a/stepmania/src/ScreenUnlock.cpp +++ b/stepmania/src/ScreenUnlock.cpp @@ -32,15 +32,20 @@ ScreenUnlock::ScreenUnlock( CString sClassName ) : ScreenAttract( sClassName ) { LOG->Trace("ScreenUnlock::ScreenUnlock()"); - unsigned NumUnlocks = NUM_UNLOCKS; - if (UNLOCKMAN->m_SongEntries.size() < NumUnlocks) - NumUnlocks = UNLOCKMAN->m_SongEntries.size(); + unsigned NumUnlocks = min( (unsigned) NUM_UNLOCKS, UNLOCKMAN->m_SongEntries.size() ); if (!PREFSMAN->m_bUseUnlockSystem || NumUnlocks == 0) { this->HandleScreenMessage( SM_GoToNextScreen ); return; } +} + +void ScreenUnlock::Init() +{ + ScreenAttract::Init(); + + unsigned NumUnlocks = min( (unsigned) NUM_UNLOCKS, UNLOCKMAN->m_SongEntries.size() ); PointsUntilNextUnlock.LoadFromFont( THEME->GetPathF("Common","normal") ); PointsUntilNextUnlock.SetHorizAlign( Actor::align_left ); diff --git a/stepmania/src/ScreenUnlock.h b/stepmania/src/ScreenUnlock.h index 36973a6221..c76087be5b 100644 --- a/stepmania/src/ScreenUnlock.h +++ b/stepmania/src/ScreenUnlock.h @@ -11,6 +11,7 @@ class ScreenUnlock : public ScreenAttract { public: ScreenUnlock( CString sName ); + virtual void Init(); ~ScreenUnlock(); protected: diff --git a/stepmania/src/ScreenWithMenuElements.cpp b/stepmania/src/ScreenWithMenuElements.cpp index 7ab09f6397..ca8938a788 100644 --- a/stepmania/src/ScreenWithMenuElements.cpp +++ b/stepmania/src/ScreenWithMenuElements.cpp @@ -18,18 +18,19 @@ //REGISTER_SCREEN_CLASS( ScreenWithMenuElements ); ScreenWithMenuElements::ScreenWithMenuElements( CString sClassName ) : Screen( sClassName ) { - LOG->Trace( "ScreenWithMenuElements::ScreenWithMenuElements()" ); - m_MenuTimer = new MenuTimer; m_textHelp = new HelpDisplay; +} - m_FirstUpdateCommand.Load( sClassName, "FirstUpdateCommand" ); +void ScreenWithMenuElements::Init() +{ + LOG->Trace( "ScreenWithMenuElements::Init()" ); - LOG->Trace( "MenuElements::MenuElements()" ); + Screen::Init(); - ASSERT( this->m_SubActors.empty() ); // don't call Load twice! + m_FirstUpdateCommand.Load( m_sName, "FirstUpdateCommand" ); - this->SetName( sClassName ); + ASSERT( this->m_SubActors.empty() ); // don't call Init twice! m_autoHeader.Load( THEME->GetPathG(m_sName,"header") ); m_autoHeader->SetName("Header"); diff --git a/stepmania/src/ScreenWithMenuElements.h b/stepmania/src/ScreenWithMenuElements.h index 3ed8baa398..c383a3033e 100644 --- a/stepmania/src/ScreenWithMenuElements.h +++ b/stepmania/src/ScreenWithMenuElements.h @@ -16,6 +16,7 @@ class ScreenWithMenuElements : public Screen { public: ScreenWithMenuElements( CString sName ); + virtual void Init(); virtual ~ScreenWithMenuElements(); void Update( float fDeltaTime );