diff --git a/stepmania/src/Course.cpp b/stepmania/src/Course.cpp index 2801ad7bf4..e87b2ddda9 100644 --- a/stepmania/src/Course.cpp +++ b/stepmania/src/Course.cpp @@ -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; diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index cdaddb057e..70384f1419 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -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; pm_bPickExtraStage && GAMESTATE->IsExtraStage() && !GAMESTATE->m_bAllow2ndExtraStage ) + continue; + if( m_CurStageStats.GetGrade((PlayerNumber)p) >= GRADE_AA ) return true; } diff --git a/stepmania/src/GameState.h b/stepmania/src/GameState.h index 9f98094322..2baf0c97d0 100644 --- a/stepmania/src/GameState.h +++ b/stepmania/src/GameState.h @@ -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 diff --git a/stepmania/src/ScreenSelectMusic.cpp b/stepmania/src/ScreenSelectMusic.cpp index 3df04e74a8..d4978dd13f 100644 --- a/stepmania/src/ScreenSelectMusic.cpp +++ b/stepmania/src/ScreenSelectMusic.cpp @@ -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