Change FailEndOfSong to fail after the current song in courses.

This commit is contained in:
Chris Danford
2003-11-01 06:23:59 +00:00
parent c1eb81d73f
commit 04680abf76
+36 -33
View File
@@ -1603,7 +1603,17 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
GAMESTATE->m_CurStageStats.iSongsPassed[p]++; GAMESTATE->m_CurStageStats.iSongsPassed[p]++;
} }
if( !IsLastSong() ) if( GAMESTATE->m_SongOptions.m_FailType == SongOptions::FAIL_END_OF_SONG && AllAreFailing() )
{
if( m_DancingState == STATE_OUTRO ) // ScreenGameplay already ended
return; // ignore
m_DancingState = STATE_OUTRO;
GAMESTATE->RemoveAllActiveAttacks();
this->PostScreenMessage( SM_BeginFailed, 0 );
}
else if( !IsLastSong() )
{ {
for( p=0; p<NUM_PLAYERS; p++ ) for( p=0; p<NUM_PLAYERS; p++ )
if( GAMESTATE->IsPlayerEnabled(p) && !GAMESTATE->m_CurStageStats.bFailed[p] ) if( GAMESTATE->IsPlayerEnabled(p) && !GAMESTATE->m_CurStageStats.bFailed[p] )
@@ -1636,47 +1646,40 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
GAMESTATE->RemoveAllActiveAttacks(); GAMESTATE->RemoveAllActiveAttacks();
if( GAMESTATE->m_SongOptions.m_FailType == SongOptions::FAIL_END_OF_SONG && AllAreFailing() ) // do they deserve an extra stage?
if( GAMESTATE->HasEarnedExtraStage() )
{ {
this->PostScreenMessage( SM_BeginFailed, 0 ); TweenOffScreen();
m_Extra.StartTransitioning( SM_GoToStateAfterCleared );
SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("gameplay extra") );
} }
else // ! failed else
{ {
// do they deserve an extra stage? TweenOffScreen();
if( GAMESTATE->HasEarnedExtraStage() )
{
TweenOffScreen();
m_Extra.StartTransitioning( SM_GoToStateAfterCleared );
SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("gameplay extra") );
}
else
{
TweenOffScreen();
switch( GAMESTATE->m_PlayMode ) switch( GAMESTATE->m_PlayMode )
{
case PLAY_MODE_BATTLE:
case PLAY_MODE_RAVE:
{ {
case PLAY_MODE_BATTLE: PlayerNumber winner = GAMESTATE->GetBestPlayer();
case PLAY_MODE_RAVE: switch( winner )
{ {
PlayerNumber winner = GAMESTATE->GetBestPlayer(); case PLAYER_INVALID:
switch( winner ) m_Draw.StartTransitioning( SM_GoToStateAfterCleared );
{ break;
case PLAYER_INVALID: default:
m_Draw.StartTransitioning( SM_GoToStateAfterCleared ); m_Win[winner].StartTransitioning( SM_GoToStateAfterCleared );
break; break;
default:
m_Win[winner].StartTransitioning( SM_GoToStateAfterCleared );
break;
}
} }
break;
default:
m_Cleared.StartTransitioning( SM_GoToStateAfterCleared );
break;
} }
break;
SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("gameplay cleared") ); default:
m_Cleared.StartTransitioning( SM_GoToStateAfterCleared );
break;
} }
SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("gameplay cleared") );
} }
} }
} }