From ca74ac58d16c92b8f18c10009f2cdd6baaa515dc Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Fri, 15 Jul 2005 02:06:46 +0000 Subject: [PATCH] work on BeginScreen, TweenOnScreen. (screen isn't correct yet; there's no way to reuse the screen with different available options, etc., only with the same settings) --- stepmania/src/ScreenOptions.cpp | 57 +++++++++++++++++++++------------ stepmania/src/ScreenOptions.h | 3 ++ 2 files changed, 40 insertions(+), 20 deletions(-) diff --git a/stepmania/src/ScreenOptions.cpp b/stepmania/src/ScreenOptions.cpp index 599e2a3939..e86752e501 100644 --- a/stepmania/src/ScreenOptions.cpp +++ b/stepmania/src/ScreenOptions.cpp @@ -115,17 +115,6 @@ void ScreenOptions::Init() // add everything to m_framePage so we can animate everything at once m_framePage.SetName( "Frame" ); this->AddChild( &m_framePage ); - - m_bMoreShown = false; - FOREACH_PlayerNumber( p ) - { - m_iCurrentRow[p] = -1; - m_iFocusX[p] = -1; - m_bWasOnExit[p] = false; - m_bGotAtLeastOneStartPressed[p] = false; - } - - ON_COMMAND( m_framePage ); } void ScreenOptions::LoadOptionIcon( PlayerNumber pn, int iRow, CString sText ) @@ -165,7 +154,7 @@ void ScreenOptions::InitMenu( InputMode im, const vector &v m_sprPage.Load( THEME->GetPathG(m_sName,"page") ); m_sprPage->SetName( "Page" ); - SET_XY_AND_ON_COMMAND( m_sprPage ); + SET_XY( m_sprPage ); m_framePage.AddChild( m_sprPage ); // init line line highlights @@ -175,7 +164,6 @@ void ScreenOptions::InitMenu( InputMode im, const vector &v m_sprLineHighlight[p].SetName( "LineHighlight" ); m_sprLineHighlight[p].SetX( LINE_HIGHLIGHT_X ); m_framePage.AddChild( &m_sprLineHighlight[p] ); - ON_COMMAND( m_sprLineHighlight[p] ); } // init cursors @@ -225,8 +213,7 @@ void ScreenOptions::InitMenu( InputMode im, const vector &v m_sprMore.Load( THEME->GetPathG( m_sName,"more") ); m_sprMore->SetName( "More" ); - SET_XY_AND_ON_COMMAND( m_sprMore ); - COMMAND( m_sprMore, m_bMoreShown? "ShowMore":"HideMore" ); + SET_XY( m_sprMore ); m_framePage.AddChild( m_sprMore ); switch( m_InputMode ) @@ -248,7 +235,7 @@ void ScreenOptions::InitMenu( InputMode im, const vector &v { m_sprDisqualify[p].Load( THEME->GetPathG(m_sName,"disqualify") ); m_sprDisqualify[p]->SetName( ssprintf("DisqualifyP%i",p+1) ); - SET_XY_AND_ON_COMMAND( m_sprDisqualify[p] ); + SET_XY( m_sprDisqualify[p] ); m_sprDisqualify[p]->SetHidden( true ); // unhide later if handicapping options are discovered m_framePage.AddChild( m_sprDisqualify[p] ); } @@ -259,6 +246,24 @@ void ScreenOptions::InitMenu( InputMode im, const vector &v GetExplanationText( r ); } + this->SortByDrawOrder(); +} + +void ScreenOptions::BeginScreen() +{ + ScreenWithMenuElements::BeginScreen(); + + ON_COMMAND( m_framePage ); + + m_bMoreShown = false; + FOREACH_PlayerNumber( p ) + { + m_iCurrentRow[p] = -1; + m_iFocusX[p] = -1; + m_bWasOnExit[p] = false; + m_bGotAtLeastOneStartPressed[p] = false; + } + // put focus on the first enabled row FOREACH_PlayerNumber( p ) { @@ -275,8 +280,7 @@ void ScreenOptions::InitMenu( InputMode im, const vector &v // Hide highlight if no rows are enabled. FOREACH_HumanPlayer( p ) - if( m_iCurrentRow[p] == -1 ) - m_sprLineHighlight[p].SetHidden( true ); + m_sprLineHighlight[p].SetHidden( m_iCurrentRow[p] == -1 ); CHECKPOINT; @@ -302,9 +306,22 @@ void ScreenOptions::InitMenu( InputMode im, const vector &v row.FinishTweening(); } - m_sprMore->FinishTweening(); +} - this->SortByDrawOrder(); +void ScreenOptions::TweenOnScreen() +{ + ScreenWithMenuElements::TweenOnScreen(); + + ON_COMMAND( m_sprPage ); + FOREACH_HumanPlayer( p ) + ON_COMMAND( m_sprLineHighlight[p] ); + + COMMAND( m_sprMore, m_bMoreShown? "ShowMore":"HideMore" ); + m_sprMore->FinishTweening(); + ON_COMMAND( m_sprMore ); + + FOREACH_PlayerNumber( p ) + ON_COMMAND( m_sprDisqualify[p] ); } ScreenOptions::~ScreenOptions() diff --git a/stepmania/src/ScreenOptions.h b/stepmania/src/ScreenOptions.h index 15610c5164..3be78d863e 100644 --- a/stepmania/src/ScreenOptions.h +++ b/stepmania/src/ScreenOptions.h @@ -28,6 +28,7 @@ class ScreenOptions : public ScreenWithMenuElements public: ScreenOptions( CString sClassName ); virtual void Init(); + virtual void BeginScreen(); void InitMenu( InputMode im, const vector &vDefs, const vector &vHands ); virtual ~ScreenOptions(); virtual void Update( float fDeltaTime ); @@ -35,6 +36,8 @@ public: virtual void HandleScreenMessage( const ScreenMessage SM ); protected: + virtual void TweenOnScreen(); + virtual void ImportOptions( int iRow, const vector &vpns ) = 0; virtual void ExportOptions( int iRow, const vector &vpns ) = 0;