From cc7e78d058626e078bb7333f8500c1e5b6798ded Mon Sep 17 00:00:00 2001 From: Steve Checkoway Date: Fri, 1 Sep 2006 08:19:44 +0000 Subject: [PATCH] Only restart the options the first time BeginScreen is called. If you want the options restarted, call it explicitly. This combined with grouping of options screens allows for a much more intuitive options interface. Hunting for the one option you need is already hard enough, being forced to keep scrolling down every time you back out of one of the option screens is beyond annoying. --- stepmania/src/ScreenOptions.cpp | 7 ++++++- stepmania/src/ScreenOptions.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/stepmania/src/ScreenOptions.cpp b/stepmania/src/ScreenOptions.cpp index 3adfbef3ef..788d26f5df 100644 --- a/stepmania/src/ScreenOptions.cpp +++ b/stepmania/src/ScreenOptions.cpp @@ -182,6 +182,7 @@ void ScreenOptions::Init() m_framePage.AddChild( m_sprMore ); m_OptionRowType.Load( m_sName ); + m_bFirstTime = true; } void ScreenOptions::InitMenu( const vector &vHands ) @@ -300,7 +301,11 @@ void ScreenOptions::BeginScreen() { ScreenWithMenuElements::BeginScreen(); - RestartOptions(); + if( m_bFirstTime ) + { + RestartOptions(); + m_bFirstTime = false; + } FOREACH_PlayerNumber( p ) m_bGotAtLeastOneStartPressed[p] = false; diff --git a/stepmania/src/ScreenOptions.h b/stepmania/src/ScreenOptions.h index fd30062c27..71b3fe6bee 100644 --- a/stepmania/src/ScreenOptions.h +++ b/stepmania/src/ScreenOptions.h @@ -103,6 +103,7 @@ protected: // derived classes need access to these int m_iFocusX[NUM_PLAYERS]; bool m_bWasOnExit[NUM_PLAYERS]; + bool m_bFirstTime; // TRICKY: People hold Start to get to PlayerOptions, then // the repeat events cause them to zip to the bottom. So, ignore