diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index de80322dbc..d5d8873279 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -2686,6 +2686,7 @@ Line1="conf,AttractSoundFrequency" Line2="conf,SoundVolume" [ScreenAttract] +ResetGameState=true StartScreen=ScreenTitleBranch() Fallback="ScreenWithMenuElementsBlank" BackGoesToStartScreen=true @@ -2839,6 +2840,7 @@ Class="ScreenRankingLines" Fallback="ScreenAttract" NextScreen="ScreenUnlockStatus" PrevScreen="ScreenHowToPlay" +ResetGameState=false TimerSeconds=-1 StepsTypesToHide="dance-couple,dance-solo,dance-routine,pump-halfdouble,pump-couple" Type="Category" @@ -2987,6 +2989,7 @@ Fallback="ScreenAttract" TimerSeconds=25 NextScreen="ScreenDemonstration" PrevScreen="ScreenLogo" +ResetGameState=false SecondsToShow=25 UseLifeMeterBar=true LifeMeterBarX=SCREEN_CENTER_X+160 diff --git a/stepmania/src/ScreenAttract.cpp b/stepmania/src/ScreenAttract.cpp index fbcc8bd61e..cc9567ba8a 100644 --- a/stepmania/src/ScreenAttract.cpp +++ b/stepmania/src/ScreenAttract.cpp @@ -18,15 +18,17 @@ ThemeMetric BACK_GOES_TO_START_SCREEN( "ScreenAttract", "BackGoesToStartSc Preference g_fSoundVolumeAttract( "SoundVolumeAttract", 1.0f ); REGISTER_SCREEN_CLASS( ScreenAttract ); -ScreenAttract::ScreenAttract( bool bResetGameState ) +void ScreenAttract::Init() { - if( bResetGameState ) - GAMESTATE->Reset(); + RESET_GAME_STATE.Load( m_sName, "ResetGameState" ); + ScreenWithMenuElements::Init(); } - void ScreenAttract::BeginScreen() { + if( RESET_GAME_STATE ) + GAMESTATE->Reset(); + GAMESTATE->VisitAttractScreen( m_sName ); ScreenAttract::SetAttractVolume( true ); diff --git a/stepmania/src/ScreenAttract.h b/stepmania/src/ScreenAttract.h index a088210289..76311bdeef 100644 --- a/stepmania/src/ScreenAttract.h +++ b/stepmania/src/ScreenAttract.h @@ -10,7 +10,7 @@ AutoScreenMessage( SM_GoToStartScreen ) class ScreenAttract : public ScreenWithMenuElements { public: - ScreenAttract( bool bResetGameState=true ); + virtual void Init(); virtual void BeginScreen(); static void AttractInput( const InputEventPlus &input, ScreenWithMenuElements *pScreen ); @@ -29,6 +29,7 @@ public: protected: virtual void StartPlayingMusic(); + ThemeMetric RESET_GAME_STATE; }; diff --git a/stepmania/src/ScreenEnding.cpp b/stepmania/src/ScreenEnding.cpp index 56f8a8c198..1e5219044a 100644 --- a/stepmania/src/ScreenEnding.cpp +++ b/stepmania/src/ScreenEnding.cpp @@ -22,7 +22,7 @@ REGISTER_SCREEN_CLASS( ScreenEnding ); -ScreenEnding::ScreenEnding() : ScreenAttract( false/*dont reset GAMESTATE*/ ) +ScreenEnding::ScreenEnding() { if( PREFSMAN->m_bScreenTestMode ) { diff --git a/stepmania/src/ScreenRanking.cpp b/stepmania/src/ScreenRanking.cpp index f0e3cdfad4..e223ea8a75 100644 --- a/stepmania/src/ScreenRanking.cpp +++ b/stepmania/src/ScreenRanking.cpp @@ -87,11 +87,6 @@ REGISTER_SCREEN_CLASS( ScreenRanking ); REGISTER_SCREEN_CLASS( ScreenRankingScroller ); REGISTER_SCREEN_CLASS( ScreenRankingLines ); -ScreenRanking::ScreenRanking(): - ScreenAttract( false /*dont reset GAMESTATE*/ ) -{ -} - void ScreenRanking::Init() { // watch out: ThemeMetricStepsTypesToShow inverts the results diff --git a/stepmania/src/ScreenRanking.h b/stepmania/src/ScreenRanking.h index 00d7e961a1..91cf2fe7d1 100644 --- a/stepmania/src/ScreenRanking.h +++ b/stepmania/src/ScreenRanking.h @@ -36,7 +36,6 @@ PageType StringToPageType( const RString& s ); class ScreenRanking : public ScreenAttract { public: - ScreenRanking(); virtual void Init(); virtual void BeginScreen();