diff --git a/stepmania/src/ScreenSelectMusic.cpp b/stepmania/src/ScreenSelectMusic.cpp index f3f6d7f39e..6f076a2bf8 100644 --- a/stepmania/src/ScreenSelectMusic.cpp +++ b/stepmania/src/ScreenSelectMusic.cpp @@ -707,76 +707,66 @@ void ScreenSelectMusic::MenuStart( PlayerNumber pn ) return; // a song was selected - switch( m_MusicWheel.GetSelectedType() ) + if( m_MusicWheel.GetSelectedSong() != NULL ) { - case TYPE_SONG: - case TYPE_PORTAL: + const bool bIsNew = PROFILEMAN->IsSongNew( m_MusicWheel.GetSelectedSong() ); + bool bIsHard = false; + FOREACH_HumanPlayer( p ) { - const bool bIsNew = PROFILEMAN->IsSongNew( m_MusicWheel.GetSelectedSong() ); - bool bIsHard = false; - FOREACH_HumanPlayer( p ) - { - if( GAMESTATE->m_pCurSteps[p] && GAMESTATE->m_pCurSteps[p]->GetMeter() >= 10 ) - bIsHard = true; - } - - /* See if this song is a repeat. If we're in event mode, only check the last five songs. */ - bool bIsRepeat = false; - int i = 0; - if( GAMESTATE->IsEventMode() ) - i = max( 0, int(STATSMAN->m_vPlayedStageStats.size())-5 ); - for( ; i < (int)STATSMAN->m_vPlayedStageStats.size(); ++i ) - if( STATSMAN->m_vPlayedStageStats[i].vpPlayedSongs.back() == m_MusicWheel.GetSelectedSong() ) - bIsRepeat = true; - - /* Don't complain about repeats if the user didn't get to pick. */ - if( GAMESTATE->IsExtraStage() && !PREFSMAN->m_bPickExtraStage ) - bIsRepeat = false; - - if( bIsRepeat ) - SOUND->PlayOnceFromAnnouncer( "select music comment repeat" ); - else if( bIsNew ) - SOUND->PlayOnceFromAnnouncer( "select music comment new" ); - else if( bIsHard ) - SOUND->PlayOnceFromAnnouncer( "select music comment hard" ); - else - SOUND->PlayOnceFromAnnouncer( "select music comment general" ); - - m_bMadeChoice = true; - - /* If we're in event mode, we may have just played a course (putting us - * in course mode). Make sure we're in a single song mode. */ - if( GAMESTATE->IsCourseMode() ) - GAMESTATE->m_PlayMode.Set( PLAY_MODE_REGULAR ); + if( GAMESTATE->m_pCurSteps[p] && GAMESTATE->m_pCurSteps[p]->GetMeter() >= 10 ) + bIsHard = true; } - break; - case TYPE_COURSE: + /* See if this song is a repeat. If we're in event mode, only check the last five songs. */ + bool bIsRepeat = false; + int i = 0; + if( GAMESTATE->IsEventMode() ) + i = max( 0, int(STATSMAN->m_vPlayedStageStats.size())-5 ); + for( ; i < (int)STATSMAN->m_vPlayedStageStats.size(); ++i ) + if( STATSMAN->m_vPlayedStageStats[i].vpPlayedSongs.back() == m_MusicWheel.GetSelectedSong() ) + bIsRepeat = true; + + /* Don't complain about repeats if the user didn't get to pick. */ + if( GAMESTATE->IsExtraStage() && !PREFSMAN->m_bPickExtraStage ) + bIsRepeat = false; + + if( bIsRepeat ) + SOUND->PlayOnceFromAnnouncer( "select music comment repeat" ); + else if( bIsNew ) + SOUND->PlayOnceFromAnnouncer( "select music comment new" ); + else if( bIsHard ) + SOUND->PlayOnceFromAnnouncer( "select music comment hard" ); + else + SOUND->PlayOnceFromAnnouncer( "select music comment general" ); + + m_bMadeChoice = true; + + /* If we're in event mode, we may have just played a course (putting us + * in course mode). Make sure we're in a single song mode. */ + if( GAMESTATE->IsCourseMode() ) + GAMESTATE->m_PlayMode.Set( PLAY_MODE_REGULAR ); + } + else if( m_MusicWheel.GetSelectedCourse() != NULL ) + { + SOUND->PlayOnceFromAnnouncer( "select course comment general" ); + + Course *pCourse = m_MusicWheel.GetSelectedCourse(); + ASSERT( pCourse ); + GAMESTATE->m_PlayMode.Set( pCourse->GetPlayMode() ); + + // apply #LIVES + if( pCourse->m_iLives != -1 ) { - SOUND->PlayOnceFromAnnouncer( "select course comment general" ); - - Course *pCourse = m_MusicWheel.GetSelectedCourse(); - ASSERT( pCourse ); - GAMESTATE->m_PlayMode.Set( pCourse->GetPlayMode() ); - - // apply #LIVES - if( pCourse->m_iLives != -1 ) - { - SO_GROUP_ASSIGN( GAMESTATE->m_SongOptions, ModsLevel_Stage, m_LifeType, SongOptions::LIFE_BATTERY ); - SO_GROUP_ASSIGN( GAMESTATE->m_SongOptions, ModsLevel_Stage, m_iBatteryLives, pCourse->m_iLives ); - } - - m_bMadeChoice = true; + SO_GROUP_ASSIGN( GAMESTATE->m_SongOptions, ModsLevel_Stage, m_LifeType, SongOptions::LIFE_BATTERY ); + SO_GROUP_ASSIGN( GAMESTATE->m_SongOptions, ModsLevel_Stage, m_iBatteryLives, pCourse->m_iLives ); } - break; - case TYPE_SECTION: - case TYPE_ROULETTE: - case TYPE_RANDOM: - case TYPE_SORT: + + m_bMadeChoice = true; + } + else + { /* We havn't made a selection yet. */ return; - default: - ASSERT(0); } SCREENMAN->PlayStartSound();