diff --git a/stepmania/src/ScreenSelect.cpp b/stepmania/src/ScreenSelect.cpp index db37ade85b..e750a5e76e 100644 --- a/stepmania/src/ScreenSelect.cpp +++ b/stepmania/src/ScreenSelect.cpp @@ -32,8 +32,6 @@ void ScreenSelect::Init() { ScreenWithMenuElements::Init(); - m_bTimeToFinalizePlayers = false; - // // Load messages to update on // @@ -87,6 +85,13 @@ void ScreenSelect::Init() if( !m_aGameCommands.size() ) RageException::Throw( "Screen \"%s\" does not set any choices", m_sName.c_str() ); +} + +void ScreenSelect::BeginScreen() +{ + ScreenWithMenuElements::BeginScreen(); + + m_bTimeToFinalizePlayers = false; // derived classes can override if they want LIGHTSMAN->SetLightsMode( LIGHTSMODE_MENU ); diff --git a/stepmania/src/ScreenSelect.h b/stepmania/src/ScreenSelect.h index c8be4a15fd..f7a8301338 100644 --- a/stepmania/src/ScreenSelect.h +++ b/stepmania/src/ScreenSelect.h @@ -16,6 +16,7 @@ class ScreenSelect : public ScreenWithMenuElements public: ScreenSelect( CString sClassName ); virtual void Init(); + virtual void BeginScreen(); virtual ~ScreenSelect(); virtual void Update( float fDelta ); diff --git a/stepmania/src/ScreenSelectMaster.cpp b/stepmania/src/ScreenSelectMaster.cpp index a2e0ef401e..c580be8244 100644 --- a/stepmania/src/ScreenSelectMaster.cpp +++ b/stepmania/src/ScreenSelectMaster.cpp @@ -54,26 +54,6 @@ void ScreenSelectMaster::Init() { ScreenSelect::Init(); - // TODO: Move default choice to ScreenSelect - int iDefaultChoice = -1; - for( unsigned c=0; c vpns; if( SHARED_SELECTION ) { @@ -155,14 +135,6 @@ void ScreenSelectMaster::Init() LUA->UnsetGlobal( "ThisGameCommand" ); } - // position scroller items so that the items' will start from their resting - // position when they execute their OnCommand. - if( SHOW_SCROLLER ) - { - FOREACH( PlayerNumber, vpns, p ) - m_Scroller[*p].PositionItems(); - } - for( int page=0; pageGetPathG(m_sName, ssprintf("more page%d",page+1)) ); @@ -177,12 +149,6 @@ void ScreenSelectMaster::Init() } - FOREACH_PlayerNumber( p ) - { - CLAMP( m_iChoice[p], 0, (int)m_aGameCommands.size()-1 ); - m_bChosen[p] = false; - } - m_soundChange.Load( THEME->GetPathS(m_sName,"change"), true ); m_soundDifficult.Load( ANNOUNCER->GetPathTo("select difficulty challenge") ); m_soundStart.Load( THEME->GetPathS(m_sName,"start") ); @@ -238,6 +204,50 @@ void ScreenSelectMaster::Init() m_Next[dir][from] = to; } } +} + +void ScreenSelectMaster::BeginScreen() +{ + ScreenSelect::BeginScreen(); + + // TODO: Move default choice to ScreenSelect + int iDefaultChoice = -1; + for( unsigned c=0; c vpns; + if( SHARED_SELECTION ) + { + vpns.push_back( (PlayerNumber)0 ); + } + else + { + FOREACH_HumanPlayer( p ) + vpns.push_back( p ); + } + + // position scroller items so that the items' will start from their resting + // position when they execute their OnCommand. + if( SHOW_SCROLLER ) + { + FOREACH( PlayerNumber, vpns, p ) + m_Scroller[*p].PositionItems(); + } + this->UpdateSelectableChoices(); diff --git a/stepmania/src/ScreenSelectMaster.h b/stepmania/src/ScreenSelectMaster.h index 3c58cec5dd..21f0560e61 100644 --- a/stepmania/src/ScreenSelectMaster.h +++ b/stepmania/src/ScreenSelectMaster.h @@ -14,6 +14,7 @@ class ScreenSelectMaster : public ScreenSelect public: ScreenSelectMaster( CString sName ); virtual void Init(); + virtual void BeginScreen(); virtual void Update( float fDelta );