From b0055b0853adff2f72257ff319a73909f81fbdba Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Sun, 25 Jun 2006 18:11:09 +0000 Subject: [PATCH] simplify. Don't separate "next" and "cancel" as much: to cancel, set the next screen to PREV_SCREEN, and use SM_GoToNextScreen. --- stepmania/src/Screen.cpp | 12 +----------- stepmania/src/Screen.h | 4 ++-- stepmania/src/ScreenGameplay.cpp | 2 ++ stepmania/src/ScreenStage.cpp | 1 + stepmania/src/ScreenWithMenuElements.cpp | 2 ++ 5 files changed, 8 insertions(+), 13 deletions(-) diff --git a/stepmania/src/Screen.cpp b/stepmania/src/Screen.cpp index c9d96f698b..059cbe2961 100644 --- a/stepmania/src/Screen.cpp +++ b/stepmania/src/Screen.cpp @@ -72,7 +72,6 @@ void Screen::BeginScreen() /* Screens set these when they determine their next screen dynamically. Reset them * here, so a reused screen doesn't inherit these from the last time it was used. */ m_sNextScreen = RString(); - m_sPrevScreen = RString(); this->RunCommands( THEME->GetMetricA(m_sName, "ScreenOnCommand") ); } @@ -213,20 +212,13 @@ void Screen::HandleScreenMessage( const ScreenMessage SM ) FOREACH_HumanPlayer(p) MenuStart( p ); } - else if( SM == SM_GoToNextScreen ) + else if( SM == SM_GoToNextScreen || SM == SM_GoToPrevScreen ) { if( SCREENMAN->IsStackedScreen(this) ) SCREENMAN->PopTopScreen( m_smSendOnPop ); else SCREENMAN->SetNewScreen( GetNextScreen() ); } - else if( SM == SM_GoToPrevScreen ) - { - if( SCREENMAN->IsStackedScreen(this) ) - SCREENMAN->PopTopScreen( m_smSendOnPop ); - else - SCREENMAN->SetNewScreen( GetPrevScreen() ); - } } RString Screen::GetNextScreen() const @@ -238,8 +230,6 @@ RString Screen::GetNextScreen() const RString Screen::GetPrevScreen() const { - if( !m_sPrevScreen.empty() ) - return m_sPrevScreen; return PREV_SCREEN; } diff --git a/stepmania/src/Screen.h b/stepmania/src/Screen.h index c3fcf7adc7..6a421cf698 100644 --- a/stepmania/src/Screen.h +++ b/stepmania/src/Screen.h @@ -81,8 +81,8 @@ protected: RString GetNextScreen() const; RString GetPrevScreen() const; - // If these are left blank, the NextScreen and PrevScreen metrics will be used. - RString m_sNextScreen, m_sPrevScreen; + // If left blank, the NextScreen metric will be used. + RString m_sNextScreen; ScreenMessage m_smSendOnPop; public: diff --git a/stepmania/src/ScreenGameplay.cpp b/stepmania/src/ScreenGameplay.cpp index e804e9a429..702d330df1 100644 --- a/stepmania/src/ScreenGameplay.cpp +++ b/stepmania/src/ScreenGameplay.cpp @@ -2500,6 +2500,8 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) GAMESTATE->CancelStage(); + m_sNextScreen = GetPrevScreen(); + if( AdjustSync::IsSyncDataChanged() ) ScreenSaveSync::PromptSaveSync( SM_GoToPrevScreen ); else diff --git a/stepmania/src/ScreenStage.cpp b/stepmania/src/ScreenStage.cpp index c7b5332ecd..eca74b7681 100644 --- a/stepmania/src/ScreenStage.cpp +++ b/stepmania/src/ScreenStage.cpp @@ -107,6 +107,7 @@ void ScreenStage::MenuBack( PlayerNumber pn ) return; this->ClearMessageQueue(); + m_sNextScreen = GetPrevScreen(); m_Cancel.StartTransitioning( SM_GoToPrevScreen ); /* If a Back is buffered while we're prepping the screen (very common), we'll diff --git a/stepmania/src/ScreenWithMenuElements.cpp b/stepmania/src/ScreenWithMenuElements.cpp index 178cd6f22a..f7b444a1ec 100644 --- a/stepmania/src/ScreenWithMenuElements.cpp +++ b/stepmania/src/ScreenWithMenuElements.cpp @@ -285,6 +285,8 @@ void ScreenWithMenuElements::TweenOffScreen() void ScreenWithMenuElements::Cancel( ScreenMessage smSendWhenDone ) { + m_sNextScreen = GetPrevScreen(); + if( CANCEL_TRANSITIONS_OUT ) { SCREENMAN->PlayCancelSound();