From e76b50d49994d55f022f0a321eb9812fda27a740 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Thu, 17 Mar 2005 17:54:46 +0000 Subject: [PATCH] don't calculate NextScreen until options have been exported --- stepmania/src/ScreenOptionsMaster.cpp | 22 +++++++++++----------- stepmania/src/ScreenOptionsMaster.h | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/stepmania/src/ScreenOptionsMaster.cpp b/stepmania/src/ScreenOptionsMaster.cpp index 2fd3554050..76db20d05a 100644 --- a/stepmania/src/ScreenOptionsMaster.cpp +++ b/stepmania/src/ScreenOptionsMaster.cpp @@ -122,7 +122,7 @@ void ScreenOptionsMaster::BeginFadingOut() { /* If the selection is on a LIST, and the selected LIST option sets the screen, * honor it. */ - m_sNextScreen = ""; + m_sExportedNextScreen = ""; int iCurRow = this->GetCurrentRow(); ASSERT( iCurRow >= 0 && iCurRow < (int)m_Rows.size() ); @@ -134,14 +134,11 @@ void ScreenOptionsMaster::BeginFadingOut() OptionRowHandler *pHand = OptionRowHandlers[iCurRow]; CString sScreen = pHand->GetAndEraseScreen( iChoice ); if( !sScreen.empty() ) - m_sNextScreen = sScreen; + m_sExportedNextScreen = sScreen; } - // NEXT_SCREEN; - if( m_sNextScreen == "" ) - m_sNextScreen = NEXT_SCREEN; - - if( !m_sNextScreen.empty() ) + // If options set a NextScreen or one is specified in metrics, then fade out + if( m_sExportedNextScreen != "" || NEXT_SCREEN != "" ) ScreenOptions::BeginFadingOut(); } @@ -149,8 +146,10 @@ void ScreenOptionsMaster::GoToNextScreen() { if( GAMESTATE->m_bEditing ) SCREENMAN->PopTopScreen(); - else if( m_sNextScreen != "" ) - SCREENMAN->SetNewScreen( m_sNextScreen ); + else if( m_sExportedNextScreen != "" ) + SCREENMAN->SetNewScreen( m_sExportedNextScreen ); + else if( NEXT_SCREEN != "" ) + SCREENMAN->SetNewScreen( NEXT_SCREEN ); } void ScreenOptionsMaster::GoToPrevScreen() @@ -247,7 +246,7 @@ void ScreenOptionsMaster::HandleScreenMessage( const ScreenMessage SM ) if( m_iChangeMask & OPT_RESET_GAME ) { ResetGame(); - m_sNextScreen = ""; + m_sExportedNextScreen = ""; } if( m_iChangeMask & OPT_APPLY_SOUND ) @@ -259,7 +258,8 @@ void ScreenOptionsMaster::HandleScreenMessage( const ScreenMessage SM ) SONGMAN->SetPreferences(); CHECKPOINT; - this->GoToNextScreen(); + if( !(m_iChangeMask & OPT_RESET_GAME) ) + this->GoToNextScreen(); } break; default: diff --git a/stepmania/src/ScreenOptionsMaster.h b/stepmania/src/ScreenOptionsMaster.h index 10b3c7da73..4fdc52d56a 100644 --- a/stepmania/src/ScreenOptionsMaster.h +++ b/stepmania/src/ScreenOptionsMaster.h @@ -14,7 +14,7 @@ public: protected: int m_iChangeMask; - CString m_sNextScreen; + CString m_sExportedNextScreen; // from an OptionRowHandler vector OptionRowHandlers;