fix stage counter increasing on BACK
This commit is contained in:
Glenn Maynard
2004-01-23 02:04:34 +00:00
parent f9a90cd361
commit c7257147a7
3 changed files with 15 additions and 9 deletions
+5
View File
@@ -442,6 +442,11 @@ void GameState::BeginStage()
}
}
void GameState::CancelStage()
{
m_iNumStagesOfThisSong = 0;
}
/* Called by ScreenSelectMusic (etc). Increment the stage counter if we just played a
* song. Might be called more than once. */
void GameState::FinishStage()
+1
View File
@@ -111,6 +111,7 @@ public:
int GetStageIndex() const;
void BeginStage();
void CancelStage();
void FinishStage();
int GetNumStagesLeft() const;
bool IsFinalStage() const;
+9 -9
View File
@@ -1794,6 +1794,9 @@ void ScreenGameplay::StageFinished()
// save current stage stats
g_vPlayedStageStats.push_back( g_CurStageStats );
/* Reset options. */
GAMESTATE->RestoreSelectedOptions();
}
void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
@@ -2114,8 +2117,8 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
SongFinished();
StageFinished();
/* Reset options. (Should this be done in ScreenSelect*?) */
GAMESTATE->RestoreSelectedOptions();
GAMESTATE->CancelStage();
SCREENMAN->SetNewScreen( PREV_SCREEN(GAMESTATE->m_PlayMode) );
break;
@@ -2123,9 +2126,6 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
SongFinished();
StageFinished();
/* Reset options. (Should this be done in ScreenSelect*?) */
GAMESTATE->RestoreSelectedOptions();
if( m_bChangedOffsetOrBPM )
{
m_bChangedOffsetOrBPM = false;
@@ -2178,9 +2178,6 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
SongFinished();
StageFinished();
/* Reset options. (Should this be done in ScreenSelect*?) */
GAMESTATE->RestoreSelectedOptions();
if( m_bChangedOffsetOrBPM )
{
m_bChangedOffsetOrBPM = false;
@@ -2201,7 +2198,10 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
}
else // the theme says just fail and go back to the song select for event mode
{
HandleScreenMessage( SM_GoToScreenAfterBack );
SCREENMAN->SetNewScreen( PREV_SCREEN(GAMESTATE->m_PlayMode) );
/* Don't do this; it'll call SongFinished, etc. again. -glenn */
// HandleScreenMessage( SM_GoToScreenAfterBack );
}
}
else if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() )