diff --git a/stepmania/src/Banner.cpp b/stepmania/src/Banner.cpp index 121d478f72..aada9e42fb 100644 --- a/stepmania/src/Banner.cpp +++ b/stepmania/src/Banner.cpp @@ -27,7 +27,6 @@ void Banner::CacheGlobalBanners() TEXTUREMAN->CacheTexture( SongBannerTexture(THEME->GetPathG("Common","fallback banner")) ); TEXTUREMAN->CacheTexture( SongBannerTexture(THEME->GetPathG("Banner","roulette")) ); TEXTUREMAN->CacheTexture( SongBannerTexture(THEME->GetPathG("Banner","random")) ); - TEXTUREMAN->CacheTexture( SongBannerTexture(THEME->GetPathG("Banner","Sort")) ); TEXTUREMAN->CacheTexture( SongBannerTexture(THEME->GetPathG("Banner","Mode")) ); } @@ -95,12 +94,6 @@ void Banner::LoadAllMusic() m_bScrolling = false; } -void Banner::LoadSort() -{ - Load( THEME->GetPathG("Banner","Sort") ); - m_bScrolling = false; -} - void Banner::LoadMode() { Load( THEME->GetPathG("Banner","Mode") ); diff --git a/stepmania/src/Banner.h b/stepmania/src/Banner.h index 59531dd4c9..1ecf09ff0f 100644 --- a/stepmania/src/Banner.h +++ b/stepmania/src/Banner.h @@ -21,7 +21,6 @@ public: void LoadFromSong( Song* pSong ); // NULL means no song void LoadAllMusic(); - void LoadSort(); void LoadMode(); void LoadFromGroup( CString sGroupName ); void LoadFromCourse( Course* pCourse ); diff --git a/stepmania/src/FadingBanner.cpp b/stepmania/src/FadingBanner.cpp index ffa14aed0c..6fc3972484 100644 --- a/stepmania/src/FadingBanner.cpp +++ b/stepmania/src/FadingBanner.cpp @@ -158,12 +158,6 @@ void FadingBanner::LoadAllMusic() m_Banner[m_iIndexLatest].LoadAllMusic(); } -void FadingBanner::LoadSort() -{ - BeforeChange(); - m_Banner[m_iIndexLatest].LoadSort(); -} - void FadingBanner::LoadMode() { BeforeChange(); diff --git a/stepmania/src/FadingBanner.h b/stepmania/src/FadingBanner.h index 5c4e8d47da..8651c04eef 100644 --- a/stepmania/src/FadingBanner.h +++ b/stepmania/src/FadingBanner.h @@ -17,7 +17,6 @@ public: bool Load( RageTextureID ID ); void LoadFromSong( const Song* pSong ); // NULL means no song void LoadAllMusic(); - void LoadSort(); void LoadMode(); void LoadFromGroup( CString sGroupName ); void LoadFromCourse( const Course* pCourse ); diff --git a/stepmania/src/GameCommand.cpp b/stepmania/src/GameCommand.cpp index 402267d15a..38628b68f4 100644 --- a/stepmania/src/GameCommand.cpp +++ b/stepmania/src/GameCommand.cpp @@ -114,7 +114,7 @@ bool GameCommand::DescribesCurrentMode( PlayerNumber pn ) const return false; if( m_pTrail && GAMESTATE->m_pCurTrail[pn] != m_pTrail ) return false; - if( m_SortOrder != SORT_INVALID && GAMESTATE->m_SortOrder != m_SortOrder ) + if( m_SortOrder != SORT_INVALID && GAMESTATE->m_PreferredSortOrder != m_SortOrder ) return false; return true; @@ -593,7 +593,7 @@ void GameCommand::Apply( const vector &vpns ) const if( !m_sSongGroup.empty() ) GAMESTATE->m_sPreferredSongGroup = m_sSongGroup; if( m_SortOrder != SORT_INVALID ) - GAMESTATE->m_SortOrder = m_SortOrder; + GAMESTATE->m_PreferredSortOrder = m_SortOrder; if( m_iUnlockIndex != -1 ) UNLOCKMAN->UnlockCode( m_iUnlockIndex ); if( m_sSoundPath != "" ) diff --git a/stepmania/src/GameConstantsAndTypes.cpp b/stepmania/src/GameConstantsAndTypes.cpp index 4f7169bf8c..395a2e8665 100644 --- a/stepmania/src/GameConstantsAndTypes.cpp +++ b/stepmania/src/GameConstantsAndTypes.cpp @@ -84,7 +84,6 @@ static const CString SortOrderNames[NUM_SORT_ORDERS] = { "MediumMeter", "HardMeter", "ChallengeMeter", - "Sort", "Mode", "Courses", "Nonstop", diff --git a/stepmania/src/GameConstantsAndTypes.h b/stepmania/src/GameConstantsAndTypes.h index 96eecab589..6cd1420c73 100644 --- a/stepmania/src/GameConstantsAndTypes.h +++ b/stepmania/src/GameConstantsAndTypes.h @@ -105,7 +105,6 @@ enum SortOrder { SORT_MEDIUM_METER, SORT_HARD_METER, SORT_CHALLENGE_METER, - SORT_SORT_MENU, SORT_MODE_MENU, SORT_ALL_COURSES, SORT_NONSTOP_COURSES, diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index 6c65e71ffa..6d6151713a 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -131,7 +131,7 @@ void GameState::Reset() m_PreferredDifficulty[p] = DIFFICULTY_INVALID; m_PreferredCourseDifficulty[p] = DIFFICULTY_MEDIUM; } - m_SortOrder = SORT_INVALID; + m_PreferredSortOrder = SORT_INVALID; m_PlayMode = PLAY_MODE_INVALID; m_bEditing = false; m_bDemonstrationOrJukebox = false; @@ -255,8 +255,8 @@ void GameState::PlayersFinalized() GAMESTATE->ApplyModifiers( pn, sModifiers ); } // Only set the sort order if it wasn't already set by a GameCommand (or by an earlier profile) - if( m_SortOrder == SORT_INVALID && pProfile->m_SortOrder != SORT_INVALID ) - m_SortOrder = pProfile->m_SortOrder; + if( m_PreferredSortOrder == SORT_INVALID && pProfile->m_SortOrder != SORT_INVALID ) + m_PreferredSortOrder = pProfile->m_SortOrder; if( pProfile->m_LastDifficulty != DIFFICULTY_INVALID ) m_PreferredDifficulty[pn] = pProfile->m_LastDifficulty; if( pProfile->m_LastCourseDifficulty != DIFFICULTY_INVALID ) @@ -388,8 +388,8 @@ void GameState::SaveCurrentSettingsToProfile( PlayerNumber pn ) Profile* pProfile = PROFILEMAN->GetProfile(pn); pProfile->SetDefaultModifiers( this->m_pCurGame, m_pPlayerState[pn]->m_PlayerOptions.GetSavedPrefsString() ); - if( IsSongSort(m_SortOrder) ) - pProfile->m_SortOrder = m_SortOrder; + if( IsSongSort(m_PreferredSortOrder) ) + pProfile->m_SortOrder = m_PreferredSortOrder; if( m_PreferredDifficulty[pn] != DIFFICULTY_INVALID ) pProfile->m_LastDifficulty = m_PreferredDifficulty[pn]; if( m_PreferredCourseDifficulty[pn] != DIFFICULTY_INVALID ) diff --git a/stepmania/src/GameState.h b/stepmania/src/GameState.h index 56a8d9885a..51ee8007a7 100644 --- a/stepmania/src/GameState.h +++ b/stepmania/src/GameState.h @@ -99,7 +99,7 @@ public: CString m_sPreferredSongGroup; // GROUP_ALL_MUSIC denotes no preferred group bool m_bChangedFailType; // true if FailType was changed in the song options screen Difficulty m_PreferredDifficulty[NUM_PLAYERS]; - SortOrder m_SortOrder; // used by MusicWheel + SortOrder m_PreferredSortOrder; // used by MusicWheel bool m_bEditing; // NoteField does special stuff when this is true bool m_bDemonstrationOrJukebox; // ScreenGameplay does special stuff when this is true bool m_bJukeboxUsesModifiers; diff --git a/stepmania/src/MusicWheel.cpp b/stepmania/src/MusicWheel.cpp index 43ab54323a..d46474346f 100644 --- a/stepmania/src/MusicWheel.cpp +++ b/stepmania/src/MusicWheel.cpp @@ -50,7 +50,6 @@ ThemeMetric USE_3D ("MusicWheel","Use3D"); ThemeMetric NUM_WHEEL_ITEMS_TO_DRAW ("MusicWheel","NumWheelItems"); #define NUM_WHEEL_ITEMS ((int)ceil(NUM_WHEEL_ITEMS_TO_DRAW+2)) #define MOST_PLAYED_SONGS_TO_SHOW THEME->GetMetricI("MusicWheel","MostPlayedSongsToShow") -#define SORT_MENU_CHOICE_NAMES THEME->GetMetric ("MusicWheel","SortMenuChoiceNames") #define MODE_MENU_CHOICE_NAMES THEME->GetMetric ("MusicWheel","ModeMenuChoiceNames") #define CHOICE( sChoiceName ) THEME->GetMetricM("MusicWheel",ssprintf("Choice%s",sChoiceName.c_str())) #define WHEEL_ITEM_ON_DELAY_CENTER THEME->GetMetricF("MusicWheel","WheelItemOnDelayCenter") @@ -79,6 +78,38 @@ MusicWheel::MusicWheel() { } +SortOrder ForceAppropriateSort( PlayMode pm, SortOrder so ) +{ + switch( pm ) + { + // in course modes, force a particular sort + case PLAY_MODE_ONI: return SORT_ONI_COURSES; + case PLAY_MODE_NONSTOP: return SORT_NONSTOP_COURSES; + case PLAY_MODE_ENDLESS: return SORT_ENDLESS_COURSES; + } + + /* If we're not in a course mode, don't start in a course sort. */ + switch( so ) + { + case SORT_ONI_COURSES: + case SORT_NONSTOP_COURSES: + case SORT_ENDLESS_COURSES: + so = SORT_INVALID; + break; + } + + // if no preferred sort, fall back to theme default + if( so == SORT_INVALID ) + { + so = StringToSortOrder( DEFAULT_SORT ); + ASSERT( so != SORT_INVALID ); + return so; + } + + return so; +} + + void MusicWheel::Load() { LOG->Trace( "MusicWheel::MusicWheel()" ); @@ -113,7 +144,6 @@ void MusicWheel::Load() m_iSelection = 0; - m_LastSortOrder = SORT_INVALID; m_WheelState = STATE_SELECTING_MUSIC; m_fTimeLeftInState = 0; @@ -152,31 +182,13 @@ void MusicWheel::Load() GAMESTATE->m_SongOptions = so; } - /* Never start in the sort or mode menu. We won't have a valid m_LastSortOrder - * and some elements may not initialize correctly. */ - switch( GAMESTATE->m_SortOrder ) - { - case SORT_SORT_MENU: - case SORT_MODE_MENU: - GAMESTATE->m_SortOrder = SORT_INVALID; - } + m_SortOrder = GAMESTATE->m_PreferredSortOrder; - switch( GAMESTATE->m_PlayMode ) - { - // in course modes, force a particular sort - case PLAY_MODE_ONI: GAMESTATE->m_SortOrder = SORT_ONI_COURSES; break; - case PLAY_MODE_NONSTOP: GAMESTATE->m_SortOrder = SORT_NONSTOP_COURSES; break; - case PLAY_MODE_ENDLESS: GAMESTATE->m_SortOrder = SORT_ENDLESS_COURSES; break; - default: - // if no player preferred sort, fall back to theme default - if( GAMESTATE->m_SortOrder == SORT_INVALID ) - { - GAMESTATE->m_SortOrder = StringToSortOrder( DEFAULT_SORT ); - ASSERT( GAMESTATE->m_SortOrder != SORT_INVALID ); - } + /* Never start in the mode menu; some elements may not initialize correctly. */ + if( m_SortOrder == SORT_MODE_MENU ) + m_SortOrder = SORT_INVALID; - break; - } + m_SortOrder = ForceAppropriateSort( GAMESTATE->m_PlayMode, m_SortOrder ); /* Update for SORT_MOST_PLAYED. */ SONGMAN->UpdateBest(); @@ -197,6 +209,19 @@ void MusicWheel::Load() } LOG->Trace( "took: %s", times.c_str() ); + /* Set m_LastModeMenuItem to the first item that matches the current mode. (Do this + * after building wheel item data.) */ + { + const vector &from = m_WheelItemDatas[SORT_MODE_MENU]; + for( unsigned i=0; i &wiWheelItems = m_WheelItemDatas[GAMESTATE->m_SortOrder]; + vector &wiWheelItems = m_WheelItemDatas[m_SortOrder]; for( unsigned i = 0; i < wiWheelItems.size(); i++ ) { if( wiWheelItems[i].m_pSong ) @@ -271,7 +296,7 @@ bool MusicWheel::SelectSong( Song *p ) return false; unsigned i; - vector &from = m_WheelItemDatas[GAMESTATE->m_SortOrder]; + vector &from = m_WheelItemDatas[m_SortOrder]; for( i=0; im_pCurCourse = p; unsigned i; - vector &from = m_WheelItemDatas[GAMESTATE->m_SortOrder]; + vector &from = m_WheelItemDatas[m_SortOrder]; for( i=0; im_SortOrder; - GAMESTATE->m_SortOrder = so; - bool bRet = gc.DescribesCurrentModeForAllPlayers(); - GAMESTATE->m_SortOrder = OldSortOrder; - return bRet; -} - -bool MusicWheel::SelectSort( SortOrder so ) -{ - if(so == SORT_INVALID) - return false; - - const vector &from = m_WheelItemDatas[GAMESTATE->m_SortOrder]; - + /* Select the last-chosen option. */ + const vector &from = m_WheelItemDatas[m_SortOrder]; unsigned i; for( i=0; im_Action, so) ) + if( m_CurWheelItemData[i]->m_Action.m_sName != m_sLastModeMenuItem ) continue; m_iSelection = i; // select it break; @@ -437,11 +453,10 @@ void MusicWheel::BuildWheelItemDatas( vector &arrayWheelItemDatas { switch( so ) { - case SORT_SORT_MENU: case SORT_MODE_MENU: { arrayWheelItemDatas.clear(); // clear out the previous wheel items - CString sNames = (so==SORT_SORT_MENU) ? SORT_MENU_CHOICE_NAMES : MODE_MENU_CHOICE_NAMES; + CString sNames = MODE_MENU_CHOICE_NAMES; vector vsNames; split( sNames, ",", vsNames ); for( unsigned i=0; iPostMessageToTopScreen( SM_SortOrderChanged, 0 ); - SetOpenGroup(SongUtil::GetSectionNameFromSongAndSort( pPrevSelectedSong, GAMESTATE->m_SortOrder )); + SetOpenGroup(SongUtil::GetSectionNameFromSongAndSort( pPrevSelectedSong, m_SortOrder )); m_iSelection = 0; // // Select the previously selected item // - switch( GAMESTATE->m_SortOrder ) + switch( m_SortOrder ) { default: // Look for the last selected song or course SelectSongOrCourse(); break; - case SORT_SORT_MENU: case SORT_MODE_MENU: - SelectSort( m_LastSortOrder ); + SelectModeMenuItem(); break; } // - // Change difficulty for sorts by meter + // Change difficulty for sorts by meter - XXX: with GameCommand? // Difficulty dc = DIFFICULTY_INVALID; - switch( GAMESTATE->m_SortOrder ) + switch( m_SortOrder ) { case SORT_EASY_METER: dc = DIFFICULTY_EASY; break; case SORT_MEDIUM_METER: dc = DIFFICULTY_MEDIUM; break; @@ -1142,18 +1156,12 @@ void MusicWheel::ChangeMusic(int dist) bool MusicWheel::ChangeSort( SortOrder new_so ) // return true if change successful { ASSERT( new_so < NUM_SORT_ORDERS ); - if( GAMESTATE->m_SortOrder == new_so ) + if( m_SortOrder == new_so ) return false; - /* Don't change to SORT_SORT_MENU or SORT_MODE_MENU if they don't have at least - * two choices. */ - switch( new_so ) - { - case SORT_SORT_MENU: - case SORT_MODE_MENU: - if( m_WheelItemDatas[new_so].size() < 2 ) - return false; - } + /* Don't change to SORT_MODE_MENU if it doesn't have at least two choices. */ + if( new_so == SORT_MODE_MENU && m_WheelItemDatas[new_so].size() < 2 ) + return false; switch( m_WheelState ) { @@ -1170,8 +1178,11 @@ bool MusicWheel::ChangeSort( SortOrder new_so ) // return true if change success TweenOffScreen(true); - m_LastSortOrder = GAMESTATE->m_SortOrder; - GAMESTATE->m_SortOrder = new_so; + /* Save the new preference. */ + if( IsSongSort(new_so) ) + GAMESTATE->m_PreferredSortOrder = new_so; + + m_SortOrder = new_so; m_WheelState = STATE_FLYING_OFF_BEFORE_NEXT_SORT; return true; @@ -1180,16 +1191,12 @@ bool MusicWheel::ChangeSort( SortOrder new_so ) // return true if change success bool MusicWheel::NextSort() // return true if change successful { // don't allow NextSort when on the sort menu or mode menu - switch( GAMESTATE->m_SortOrder ) - { - case SORT_SORT_MENU: - case SORT_MODE_MENU: + if( m_SortOrder == SORT_MODE_MENU ) return false; - } // find the index of the current sort int cur = 0; - while( cur < int(ARRAYSIZE(SORT_ORDERS)) && SORT_ORDERS[cur] != GAMESTATE->m_SortOrder ) + while( cur < int(ARRAYSIZE(SORT_ORDERS)) && SORT_ORDERS[cur] != m_SortOrder ) ++cur; // move to the next sort with wrapping @@ -1263,11 +1270,9 @@ bool MusicWheel::Select() // return true if this selection ends the screen LOG->Trace("New sort order selected: %s - %s", m_CurWheelItemData[m_iSelection]->m_sLabel.c_str(), SortOrderToString(m_CurWheelItemData[m_iSelection]->m_Action.m_SortOrder).c_str() ); - ChangeSort( m_CurWheelItemData[m_iSelection]->m_Action.m_SortOrder ); - - // Do this after ChangeSort so that be don't mess with - // GAMESTATE->m_SortOrder before ChangeSort gets a crack at it. m_CurWheelItemData[m_iSelection]->m_Action.ApplyToAllPlayers(); + ChangeSort( GAMESTATE->m_PreferredSortOrder ); + m_sLastModeMenuItem = m_CurWheelItemData[m_iSelection]->m_Action.m_sName; return false; default: ASSERT(0); @@ -1307,7 +1312,7 @@ void MusicWheel::StartRandom() void MusicWheel::SetOpenGroup(CString group, SortOrder so) { if( so == SORT_INVALID) - so = GAMESTATE->m_SortOrder; + so = m_SortOrder; m_sExpandedSectionName = group; @@ -1544,7 +1549,7 @@ Song *MusicWheel::GetPreferredSelectionForRandomOrPortal() } CString sPreferredGroup = m_sExpandedSectionName; - vector &wid = m_WheelItemDatas[GAMESTATE->m_SortOrder]; + vector &wid = m_WheelItemDatas[m_SortOrder]; StepsType st = GAMESTATE->GetCurrentStyle()->m_StepsType; diff --git a/stepmania/src/MusicWheel.h b/stepmania/src/MusicWheel.h index a32b386b27..a3cf126351 100644 --- a/stepmania/src/MusicWheel.h +++ b/stepmania/src/MusicWheel.h @@ -74,13 +74,14 @@ public: bool SelectSong( Song *p ); bool SelectSection( const CString & SectionName ); void SetOpenGroup(CString group, SortOrder so = SORT_INVALID); + SortOrder GetSortOrder() const { return m_SortOrder; } protected: void GetSongList(vector &arraySongs, SortOrder so, CString sPreferredGroup ); void BuildWheelItemDatas( vector &arrayWheelItems, SortOrder so ); bool SelectSongOrCourse(); bool SelectCourse( Course *p ); - bool SelectSort( SortOrder so ); + bool SelectModeMenuItem(); void ChangeMusic(int dist); /* +1 or -1 */ ScrollBar m_ScrollBar; @@ -93,7 +94,8 @@ protected: int m_iSelection; // index into m_CurWheelItemData CString m_sExpandedSectionName; - SortOrder m_LastSortOrder; + CString m_sLastModeMenuItem; + SortOrder m_SortOrder; int m_iSwitchesLeftInSpinDown; float m_fLockedWheelVelocity; diff --git a/stepmania/src/PaneDisplay.cpp b/stepmania/src/PaneDisplay.cpp index 80bf0451b6..bbd4b71e16 100644 --- a/stepmania/src/PaneDisplay.cpp +++ b/stepmania/src/PaneDisplay.cpp @@ -328,8 +328,9 @@ done: } } -void PaneDisplay::SetFromGameState() +void PaneDisplay::SetFromGameState( SortOrder so ) { + m_SortOrder = so; m_CurMode = GetMode(); if( PaneMode[m_CurPane] != m_CurMode ) SetFocus( GetNext( m_PreferredPaneForMode[m_CurMode], 0 ) ); @@ -345,14 +346,13 @@ void PaneDisplay::SetFromGameState() PaneModes PaneDisplay::GetMode() const { - switch( GAMESTATE->m_SortOrder ) + switch( m_SortOrder ) { case SORT_ALL_COURSES: case SORT_NONSTOP_COURSES: case SORT_ONI_COURSES: case SORT_ENDLESS_COURSES: return PANEMODE_COURSE; - case SORT_SORT_MENU: case SORT_MODE_MENU: return m_CurMode; // leave it default: @@ -386,7 +386,7 @@ void PaneDisplay::SetFocus( PaneTypes NewPane ) m_CurPane = NewPane; m_PreferredPaneForMode[m_CurMode] = NewPane; - SetFromGameState(); + SetFromGameState( m_SortOrder ); } bool PaneDisplay::PaneIsValid( PaneTypes p ) const diff --git a/stepmania/src/PaneDisplay.h b/stepmania/src/PaneDisplay.h index b38bebafb9..b005291ce1 100644 --- a/stepmania/src/PaneDisplay.h +++ b/stepmania/src/PaneDisplay.h @@ -72,7 +72,7 @@ public: PaneDisplay(); void Load( PlayerNumber pn ); - void SetFromGameState(); + void SetFromGameState( SortOrder so ); void Move( int dir ); void Update( float fDeltaTime ); @@ -85,6 +85,7 @@ private: PaneModes GetMode() const; void SetContent( PaneContents c ); + SortOrder m_SortOrder; AutoActor m_sprPaneUnder; AutoActor m_sprPaneOver; diff --git a/stepmania/src/ScreenNetSelectMusic.cpp b/stepmania/src/ScreenNetSelectMusic.cpp index 9bad49396d..6fc8f57a86 100644 --- a/stepmania/src/ScreenNetSelectMusic.cpp +++ b/stepmania/src/ScreenNetSelectMusic.cpp @@ -125,12 +125,12 @@ void ScreenNetSelectMusic::Input( const DeviceInput& DeviceI, const InputEventTy if ( bHoldingCtrl && ( c >= 'A' ) && ( c <= 'Z' ) ) { - SortOrder so = GAMESTATE->m_SortOrder; + SortOrder so = GAMESTATE->m_PreferredSortOrder; if ( ( so != SORT_TITLE ) && ( so != SORT_ARTIST ) ) so = SORT_TITLE; - GAMESTATE->m_SortOrder = so; + GAMESTATE->m_PreferredSortOrder = so; m_MusicWheel.SetOpenGroup( ssprintf("%c", c ), so ); m_MusicWheel.SelectSection( ssprintf("%c", c ) ); m_MusicWheel.Move( +1 ); @@ -280,7 +280,7 @@ void ScreenNetSelectMusic::MenuLeft( PlayerNumber pn, const InputEventType type if ( type == IET_FIRST_PRESS ) if ( bLeftAndRightPressed ) - m_MusicWheel.ChangeSort( SORT_SORT_MENU ); + m_MusicWheel.ChangeSort( SORT_MODE_MENU ); else m_MusicWheel.Move( -1 ); } @@ -293,7 +293,7 @@ void ScreenNetSelectMusic::MenuRight( PlayerNumber pn, const InputEventType type if ( type == IET_FIRST_PRESS ) if ( bLeftAndRightPressed ) - m_MusicWheel.ChangeSort( SORT_SORT_MENU ); + m_MusicWheel.ChangeSort( SORT_MODE_MENU ); else m_MusicWheel.Move( +1 ); } diff --git a/stepmania/src/ScreenSelectMusic.cpp b/stepmania/src/ScreenSelectMusic.cpp index 172e4d6a12..333e9420f5 100644 --- a/stepmania/src/ScreenSelectMusic.cpp +++ b/stepmania/src/ScreenSelectMusic.cpp @@ -279,7 +279,7 @@ ScreenSelectMusic::ScreenSelectMusic( CString sClassName ) : ScreenWithMenuEleme } m_MusicSortDisplay.SetName( "SortIcon" ); - m_MusicSortDisplay.Set( GAMESTATE->m_SortOrder ); + m_MusicSortDisplay.Set( m_MusicWheel.GetSortOrder() ); SET_XY( m_MusicSortDisplay ); this->AddChild( &m_MusicSortDisplay ); @@ -470,7 +470,7 @@ void ScreenSelectMusic::TweenOnScreen() TweenSongPartsOnScreen( true ); TweenCoursePartsOnScreen( true ); - switch( GAMESTATE->m_SortOrder ) + switch( m_MusicWheel.GetSortOrder() ) { case SORT_ALL_COURSES: case SORT_NONSTOP_COURSES: @@ -526,7 +526,7 @@ void ScreenSelectMusic::TweenOnScreen() void ScreenSelectMusic::TweenOffScreen() { - switch( GAMESTATE->m_SortOrder ) + switch( m_MusicWheel.GetSortOrder() ) { case SORT_ALL_COURSES: case SORT_NONSTOP_COURSES: @@ -619,7 +619,7 @@ void ScreenSelectMusic::TweenScoreOnAndOffAfterChangeSort() m_sprHighScoreFrame[p].RunCommands( SCORE_FRAME_SORT_CHANGE_COMMAND(p) ); } - switch( GAMESTATE->m_SortOrder ) + switch( m_MusicWheel.GetSortOrder() ) { case SORT_ALL_COURSES: case SORT_NONSTOP_COURSES: @@ -627,7 +627,6 @@ void ScreenSelectMusic::TweenScoreOnAndOffAfterChangeSort() case SORT_ENDLESS_COURSES: SwitchDisplayMode( DISPLAY_COURSES ); break; - case SORT_SORT_MENU: case SORT_MODE_MENU: SwitchDisplayMode( DISPLAY_MODES ); break; @@ -873,19 +872,6 @@ void ScreenSelectMusic::Input( const DeviceInput& DeviceI, InputEventType type, ChangeDifficulty( pn, +1 ); return; } - if( CodeDetector::EnteredSortMenu(GameI.controller) ) - { - /* Ignore the SortMenu when in course mode. However, still check for the code, so - * if people try pressing left+right+start in course mode, we don't pick the selected - * course on them. */ - if( GAMESTATE->IsCourseMode() ) - ; /* nothing */ - else if( ( GAMESTATE->IsExtraStage() && !PREFSMAN->m_bPickExtraStage ) || GAMESTATE->IsExtraStage2() ) - m_soundLocked.Play(); - else - m_MusicWheel.ChangeSort( SORT_SORT_MENU ); - return; - } if( CodeDetector::EnteredModeMenu(GameI.controller) ) { if( ( GAMESTATE->IsExtraStage() && !PREFSMAN->m_bPickExtraStage ) || GAMESTATE->IsExtraStage2() ) @@ -1259,7 +1245,7 @@ void ScreenSelectMusic::AfterStepsChange( PlayerNumber pn ) m_GrooveRadar.SetFromSteps( pn, pSteps ); m_MusicWheel.NotesOrTrailChanged( pn ); if( SHOW_PANES ) - m_PaneDisplay[pn].SetFromGameState(); + m_PaneDisplay[pn].SetFromGameState( m_MusicWheel.GetSortOrder() ); } void ScreenSelectMusic::AfterTrailChange( PlayerNumber pn ) @@ -1304,7 +1290,7 @@ void ScreenSelectMusic::AfterTrailChange( PlayerNumber pn ) m_GrooveRadar.SetEmpty( pn ); m_MusicWheel.NotesOrTrailChanged( pn ); if( SHOW_PANES ) - m_PaneDisplay[pn].SetFromGameState(); + m_PaneDisplay[pn].SetFromGameState( m_MusicWheel.GetSortOrder() ); } void ScreenSelectMusic::SwitchToPreferredDifficulty() @@ -1451,11 +1437,8 @@ void ScreenSelectMusic::AfterMusicChange() break; case TYPE_SORT: bWantBanner = false; /* we load it ourself */ - switch( GAMESTATE->m_SortOrder ) + switch( m_MusicWheel.GetSortOrder() ) { - case SORT_SORT_MENU: - m_Banner.LoadSort(); - break; case SORT_MODE_MENU: m_Banner.LoadMode(); break; @@ -1729,15 +1712,17 @@ void ScreenSelectMusic::UpdateOptionsDisplays() void ScreenSelectMusic::SortOrderChanged() { - m_MusicSortDisplay.Set( GAMESTATE->m_SortOrder ); + m_MusicSortDisplay.Set( m_MusicWheel.GetSortOrder() ); + if( SHOW_PANES ) + FOREACH_HumanPlayer(pn) + m_PaneDisplay[pn].SetFromGameState( m_MusicWheel.GetSortOrder() ); - switch( GAMESTATE->m_SortOrder ) + switch( m_MusicWheel.GetSortOrder() ) { case SORT_ALL_COURSES: case SORT_NONSTOP_COURSES: case SORT_ONI_COURSES: case SORT_ENDLESS_COURSES: - case SORT_SORT_MENU: case SORT_MODE_MENU: // do nothing break; diff --git a/stepmania/src/SongUtil.cpp b/stepmania/src/SongUtil.cpp index 0d0a1d2709..684c50271f 100644 --- a/stepmania/src/SongUtil.cpp +++ b/stepmania/src/SongUtil.cpp @@ -282,7 +282,6 @@ CString SongUtil::GetSectionNameFromSongAndSort( const Song* pSong, SortOrder so return ssprintf("%02d", pSteps->GetMeter() ); return "N/A"; } - case SORT_SORT_MENU: case SORT_MODE_MENU: return ""; case SORT_ALL_COURSES: