Fix getting another extra stage if pick extra stage is on and you play the chosen song.

This commit is contained in:
Steve Checkoway
2006-07-03 03:46:34 +00:00
parent 380f97f903
commit fae99b18f1
+22 -13
View File
@@ -966,6 +966,27 @@ bool GameState::HasEarnedExtraStage() const
if( m_bBackedOutOfFinalStage ) if( m_bBackedOutOfFinalStage )
return false; return false;
if( !IsFinalStage() && !IsExtraStage() )
return false;
bool bOnePassed = false;
FOREACH_EnabledPlayer( pn )
{
if( this->m_pCurSteps[pn]->GetDifficulty() != DIFFICULTY_HARD &&
this->m_pCurSteps[pn]->GetDifficulty() != DIFFICULTY_CHALLENGE )
continue; /* not hard enough! */
if( STATSMAN->m_CurStageStats.m_player[pn].GetGrade() <= Grade_Tier03 )
{
bOnePassed = true;
break;
}
}
if( !bOnePassed )
return false;
/* If PickExtraStage, allow EX2 if the chosen song was correct. */ /* If PickExtraStage, allow EX2 if the chosen song was correct. */
if( PREFSMAN->m_bPickExtraStage && this->IsExtraStage() ) if( PREFSMAN->m_bPickExtraStage && this->IsExtraStage() )
{ {
@@ -978,19 +999,7 @@ bool GameState::HasEarnedExtraStage() const
return stats.vpPlayedSongs.size() && stats.vpPlayedSongs.back() == pSong; return stats.vpPlayedSongs.size() && stats.vpPlayedSongs.back() == pSong;
} }
if( (this->IsFinalStage() || this->IsExtraStage()) ) return true;
{
FOREACH_EnabledPlayer( pn )
{
if( this->m_pCurSteps[pn]->GetDifficulty() != DIFFICULTY_HARD &&
this->m_pCurSteps[pn]->GetDifficulty() != DIFFICULTY_CHALLENGE )
continue; /* not hard enough! */
if( STATSMAN->m_CurStageStats.m_player[pn].GetGrade() <= Grade_Tier03 )
return true;
}
}
return false;
} }
PlayerNumber GameState::GetBestPlayer() const PlayerNumber GameState::GetBestPlayer() const