Change Extra stage handling to behave like DDR Extreme

This commit is contained in:
Laurence Hartje
2003-02-05 09:01:09 +00:00
parent 4e4307e3d0
commit 162120da47
4 changed files with 35 additions and 0 deletions
+3
View File
@@ -294,6 +294,9 @@ void Course::GetPlayerOptions( int iStage, PlayerOptions* pPO_out ) const
void Course::GetSongOptions( SongOptions* pSO_out ) const
{
*pSO_out = SongOptions();
//hack: The lifebar modifiers were not showing up (in the extra stages) - had to add it here.
if( entries.size() > 0 )
pSO_out->FromString( entries[0].modifiers );
pSO_out->m_LifeType = (m_iLives==-1) ? SongOptions::LIFE_BAR : SongOptions::LIFE_BATTERY;
if( m_iLives != -1 )
pSO_out->m_iBatteryLives = m_iLives;
+4
View File
@@ -69,6 +69,7 @@ void GameState::Reset()
m_bEditing = false;
m_bDemonstration = false;
m_iCurrentStageIndex = 0;
m_bAllow2ndExtraStage = true;
m_pCurSong = NULL;
for( p=0; p<NUM_PLAYERS; p++ )
@@ -220,6 +221,9 @@ bool GameState::HasEarnedExtraStage()
* if the chosen stage was the EX we would have chosen (the hardest
* song or extra1.crs). Also, that song should be highlighted in the
* music wheel. */
if( PREFSMAN->m_bPickExtraStage && GAMESTATE->IsExtraStage() && !GAMESTATE->m_bAllow2ndExtraStage )
continue;
if( m_CurStageStats.GetGrade((PlayerNumber)p) >= GRADE_AA )
return true;
}
+1
View File
@@ -116,6 +116,7 @@ public:
bool HasEarnedExtraStage();
bool m_bAllow2ndExtraStage; //only used when "Allow Selection of Extra Stage is on"
// Filled in by ScreenNameEntry and used by ScreenRanking to flash the recent high scores
+27
View File
@@ -442,6 +442,33 @@ void ScreenSelectMusic::Input( const DeviceInput& DeviceI, InputEventType type,
SOUNDMAN->PlayOnce( THEME->GetPathTo("Sounds","menu start") );
return;
}
if( GAMESTATE->IsExtraStage() && PREFSMAN->m_bPickExtraStage && MenuI.button == MENU_BUTTON_START )
{
//Check if user selected the extrastage from the course file
Song* pSongSel; //Song user selected
Song* pSongCourse; //Song from the Extra Course or that we picked
Notes* pNotes;
PlayerOptions po;
SongOptions so;
SONGMAN->GetExtraStageInfo( false, GAMESTATE->m_pCurSong->m_sGroupName, GAMESTATE->GetCurrentStyleDef(), pSongCourse, pNotes, po, so );
if( pSongCourse == NULL )
{
//no song defined, so allow anyways... This means there was no course, and we couldn't find an applicable song for EX1
GAMESTATE->m_bAllow2ndExtraStage = true;
}
else
{
pSongSel = m_MusicWheel.GetSelectedSong();
/*Enable 2nd extra stage if user chose the correct song*/
if( pSongSel == pSongCourse )
GAMESTATE->m_bAllow2ndExtraStage = true;
else
GAMESTATE->m_bAllow2ndExtraStage = false;
}
}
if( m_Menu.IsClosing() ) return; // ignore