From 594e839bd14c8dc00dba45147930c603009f3f61 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Tue, 3 Apr 2007 02:50:25 +0000 Subject: [PATCH] theme sort list --- stepmania/src/MusicWheel.cpp | 36 ++++++++++++++++++------------------ stepmania/src/MusicWheel.h | 1 + 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/stepmania/src/MusicWheel.cpp b/stepmania/src/MusicWheel.cpp index dfa98656ed..61cb755485 100644 --- a/stepmania/src/MusicWheel.cpp +++ b/stepmania/src/MusicWheel.cpp @@ -32,18 +32,6 @@ AutoScreenMessage( SM_SongChanged ) // TODO: Replace this with a Messag AutoScreenMessage( SM_SortOrderChanging ); AutoScreenMessage( SM_SortOrderChanged ); -static const SortOrder g_SongSortOrders[] = -{ - SORT_PREFERRED, - SORT_GROUP, - SORT_TITLE, - SORT_BPM, - SORT_POPULARITY, - SORT_ARTIST, - SORT_GENRE, -}; -const vector SONG_SORT_ORDERS( g_SongSortOrders, g_SongSortOrders + ARRAYLEN(g_SongSortOrders) ); - static SortOrder ForceAppropriateSort( PlayMode pm, SortOrder so ) { switch( pm ) @@ -85,6 +73,7 @@ void MusicWheel::Load( RString sType ) RANDOM_PICKS_LOCKED_SONGS .Load(sType,"RandomPicksLockedSongs"); MOST_PLAYED_SONGS_TO_SHOW .Load(sType,"MostPlayedSongsToShow"); MODE_MENU_CHOICE_NAMES .Load(sType,"ModeMenuChoiceNames"); + SORT_ORDERS .Load(sType,"SortOrders"); vector vsModeChoiceNames; split( MODE_MENU_CHOICE_NAMES, ",", vsModeChoiceNames ); CHOICE .Load(sType,CHOICE_NAME,vsModeChoiceNames); @@ -773,8 +762,6 @@ void MusicWheel::UpdateSwitch() SCREENMAN->PostMessageToTopScreen( SM_SongChanged, 0 ); RebuildWheelItems(); TweenOnScreenForSort(); - - SCREENMAN->ZeroNextUpdate(); } break; @@ -875,21 +862,34 @@ 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 + // don't allow NextSort when on the mode menu if( GAMESTATE->m_SortOrder == SORT_MODE_MENU ) return false; + vector aSortOrders; + { + Lua *L = LUA->Get(); + SORT_ORDERS.PushSelf( L ); + FOREACH_LUATABLEI( L, -1, i ) + { + SortOrder so = Enum::Check( L, -1, true ); + aSortOrders.push_back( so ); + } + lua_pop( L, 1 ); + LUA->Release(L); + } + // find the index of the current sort int cur = 0; - while( cur < int(SONG_SORT_ORDERS.size()) && SONG_SORT_ORDERS[cur] != GAMESTATE->m_SortOrder ) + while( cur < int(aSortOrders.size()) && aSortOrders[cur] != GAMESTATE->m_SortOrder ) ++cur; // move to the next sort with wrapping ++cur; - wrap( cur, SONG_SORT_ORDERS.size() ); + wrap( cur, aSortOrders.size() ); // apply new sort - SortOrder soNew = SONG_SORT_ORDERS[cur]; + SortOrder soNew = aSortOrders[cur]; return ChangeSort( soNew ); } diff --git a/stepmania/src/MusicWheel.h b/stepmania/src/MusicWheel.h index e01ec81097..a5b942ed6c 100644 --- a/stepmania/src/MusicWheel.h +++ b/stepmania/src/MusicWheel.h @@ -77,6 +77,7 @@ protected: ThemeMetric MODE_MENU_CHOICE_NAMES; ThemeMetricMap CHOICE; ThemeMetric1D SECTION_COLORS; + ThemeMetric SORT_ORDERS; }; #endif