diff --git a/stepmania/src/MusicWheel.cpp b/stepmania/src/MusicWheel.cpp index 3d0034c9d5..4ae041537c 100644 --- a/stepmania/src/MusicWheel.cpp +++ b/stepmania/src/MusicWheel.cpp @@ -897,6 +897,9 @@ void MusicWheel::Update( float fDeltaTime ) m_iSelection = 0; + // + // Select the previously selected item + // switch( GAMESTATE->m_SongSortOrder ) { case SORT_PREFERRED: @@ -929,7 +932,9 @@ void MusicWheel::Update( float fDeltaTime ) ASSERT(0); } + // // Change difficulty for sorts by meter + // Difficulty dc = DIFFICULTY_INVALID; switch( GAMESTATE->m_SongSortOrder ) { @@ -939,9 +944,40 @@ void MusicWheel::Update( float fDeltaTime ) case SORT_CHALLENGE_METER: dc = DIFFICULTY_CHALLENGE; break; } if( dc != DIFFICULTY_INVALID ) + { for( int p=0; pIsPlayerEnabled(p) ) GAMESTATE->m_PreferredDifficulty[p] = dc; + } + + // + // Unselect the current song if this is a course mode. + // Unselect the current course if this is a song sort. + // + switch( GAMESTATE->m_SongSortOrder ) + { + case SORT_PREFERRED: + case SORT_GROUP: + case SORT_TITLE: + case SORT_BPM: + case SORT_GRADE: + case SORT_ARTIST: + case SORT_MOST_PLAYED: + case SORT_ROULETTE: + case SORT_EASY_METER: + case SORT_MEDIUM_METER: + case SORT_HARD_METER: + case SORT_CHALLENGE_METER: + GAMESTATE->m_pCurCourse = NULL; + break; + case SORT_ALL_COURSES: + case SORT_NONSTOP_COURSES: + case SORT_ONI_COURSES: + case SORT_ENDLESS_COURSES: + GAMESTATE->m_pCurSong = NULL; + break; + } + SCREENMAN->PostMessageToTopScreen( SM_SongChanged, 0 ); RebuildMusicWheelItems(); diff --git a/stepmania/src/ScreenOptionsMaster.cpp b/stepmania/src/ScreenOptionsMaster.cpp index bd46a61b66..9148550fed 100644 --- a/stepmania/src/ScreenOptionsMaster.cpp +++ b/stepmania/src/ScreenOptionsMaster.cpp @@ -107,7 +107,7 @@ void ScreenOptionsMaster::SetStep( OptionRowData &row, OptionRowHandler &hand ) row.choices.push_back( "" ); hand.ListEntries.push_back( ModeChoice() ); } - else if( GAMESTATE->m_pCurCourse ) // playing a course + else if( GAMESTATE->IsCourseMode() ) // playing a course { row.bOneChoiceForAllPlayers = PREFSMAN->m_bLockCourseDifficulties; @@ -127,7 +127,7 @@ void ScreenOptionsMaster::SetStep( OptionRowData &row, OptionRowHandler &hand ) } } } - else if( GAMESTATE->m_pCurSong ) // playing a song + else // !GAMESTATE->IsCourseMode(), playing a song { vector vSteps; GAMESTATE->m_pCurSong->GetSteps( vSteps, GAMESTATE->GetCurrentStyleDef()->m_StepsType ); @@ -148,10 +148,6 @@ void ScreenOptionsMaster::SetStep( OptionRowData &row, OptionRowHandler &hand ) hand.ListEntries.push_back( mc ); } } - else - { - row.choices.push_back( ENTRY_NAME("N/A") ); - } }