From 1b5e2aafef39dd7366071fac198cde248c061ba0 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Mon, 24 May 2004 01:00:06 +0000 Subject: [PATCH] Explicitly make sure FinishStage is called. We need to do this before ResetGame, since it should be called before prompting to remove memory cards. --- stepmania/src/GameState.cpp | 8 ++++++++ stepmania/src/ScreenCredits.cpp | 3 +++ stepmania/src/ScreenEnding.cpp | 3 +++ stepmania/src/ScreenMusicScroll.cpp | 3 +++ 4 files changed, 17 insertions(+) diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index 8f049f0a4c..9995bf9de8 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -594,6 +594,14 @@ static int GetNumStagesForCurrentSong() /* Called by ScreenGameplay. Set the length of the current song. */ void GameState::BeginStage() { + /* This should only be called once per stage. */ + if( m_iNumStagesOfThisSong != 0 ) + LOG->Warn( "XXX: m_iNumStagesOfThisSong == %i?", m_iNumStagesOfThisSong ); + + /* Finish the last stage (if any), if we havn't already. (For example, we might + * have, for some reason, gone from gameplay to evaluation straight back to gameplay.) */ + FinishStage(); + m_iNumStagesOfThisSong = GetNumStagesForCurrentSong(); ASSERT( m_iNumStagesOfThisSong != -1 ); } diff --git a/stepmania/src/ScreenCredits.cpp b/stepmania/src/ScreenCredits.cpp index d63afbae21..6bdb7ad628 100644 --- a/stepmania/src/ScreenCredits.cpp +++ b/stepmania/src/ScreenCredits.cpp @@ -169,6 +169,9 @@ static const CreditLine CREDIT_LINES[] = ScreenCredits::ScreenCredits( CString sName ) : ScreenAttract( sName ) { + /* Make sure the last stage was finished. */ + GAMESTATE->FinishStage(); + vector arraySongs; SONGMAN->GetSongs( arraySongs ); SongUtil::SortSongPointerArrayByTitle( arraySongs ); diff --git a/stepmania/src/ScreenEnding.cpp b/stepmania/src/ScreenEnding.cpp index f25ad24191..909b16ffb9 100644 --- a/stepmania/src/ScreenEnding.cpp +++ b/stepmania/src/ScreenEnding.cpp @@ -66,6 +66,9 @@ CString GetStatsLineValue( PlayerNumber pn, int iLine ) ScreenEnding::ScreenEnding( CString sClassName ) : ScreenAttract( sClassName, false/*dont reset GAMESTATE*/ ) { + /* Make sure the last stage was finished. */ + GAMESTATE->FinishStage(); + vector arraySongs; SONGMAN->GetSongs( arraySongs ); SongUtil::SortSongPointerArrayByTitle( arraySongs ); diff --git a/stepmania/src/ScreenMusicScroll.cpp b/stepmania/src/ScreenMusicScroll.cpp index baf5a08f9d..1b4485db28 100644 --- a/stepmania/src/ScreenMusicScroll.cpp +++ b/stepmania/src/ScreenMusicScroll.cpp @@ -35,6 +35,9 @@ const unsigned NUM_CREDIT_LINES = sizeof(CREDIT_LINES) / sizeof(CString); ScreenMusicScroll::ScreenMusicScroll( CString sClassName ) : ScreenAttract( sClassName ) { + /* Make sure the last stage was finished. */ + GAMESTATE->FinishStage(); + vector arraySongs; SONGMAN->GetSongs( arraySongs ); SongUtil::SortSongPointerArrayByTitle( arraySongs );