From 0bc5f079ca357e09f112d065ddbebff13a898d69 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Sat, 4 Dec 2004 22:36:29 +0000 Subject: [PATCH] remove SortOrder from WheelItemData. Use the SortOrder in m_Action instead. --- stepmania/Themes/default/metrics.ini | 15 ++++-- stepmania/src/MusicWheel.cpp | 71 ++++++++++++---------------- stepmania/src/MusicWheelItem.cpp | 3 +- stepmania/src/MusicWheelItem.h | 3 +- 4 files changed, 42 insertions(+), 50 deletions(-) diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 4e2c800f5e..8e30bbdf9e 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -2326,10 +2326,17 @@ Use3D=0 Wheel3DRadius=200 # Possibly safe defaults? CirclePercent=0.5 MostPlayedSongsToShow=30 -SortMenuNames=GROUP:TITLE:BPM:PLAYERS' BEST:TOP GRADE:ARTIST:EASY METER:MEDIUM METER:HARD METER -SortMenuActions=sort,GROUP:sort,TITLE:sort,BPM:sort,PLAYERS BEST:sort,TOP GRADE:sort,ARTIST:sort,EASY METER:sort,MEDIUM METER:sort,HARD METER -ModeMenuNames=GROUP -ModeMenuActions=sort,GROUP +SortMenuChoiceNames=Group,Title,Bpm,Popularity,TopGrade,Artist,EasyMeter,MediumMeter,HardMeter +ModeMenuChoiceNames=Group +ChoiceGroup=name,GROUP;sort,GROUP +ChoiceTitle=name,TITLE;sort,TITLE +ChoiceBpm=name,BPM;sort,BPM +ChoicePopularity=name,PLAYERS' BEST;sort,PLAYERS' BEST +ChoiceTopGrade=name,TOP GRADE;sort,TOP GRADE +ChoiceArtist=name,ARTIST;sort,ARTIST +ChoiceEasyMeter=name,EASY METER;sort,EASY METER +ChoiceMediumMeter=name,MEDIUM METER;sort,MEDIUM METER +ChoiceHardMeter=name,HARD METER;sort,HARD METER [LifeMeterBar] MeterWidth=260 diff --git a/stepmania/src/MusicWheel.cpp b/stepmania/src/MusicWheel.cpp index be483e6f29..6b26aeec52 100644 --- a/stepmania/src/MusicWheel.cpp +++ b/stepmania/src/MusicWheel.cpp @@ -49,10 +49,9 @@ ThemeMetric USE_3D ("MusicWheel","Use3D"); ThemeMetric NUM_WHEEL_ITEMS_METRIC ("MusicWheel","NumWheelItems"); #define NUM_WHEEL_ITEMS min( MAX_WHEEL_ITEMS, (int) NUM_WHEEL_ITEMS_METRIC ) #define MOST_PLAYED_SONGS_TO_SHOW THEME->GetMetricI("MusicWheel","MostPlayedSongsToShow") -#define SORT_MENU_NAMES THEME->GetMetric ("MusicWheel","SortMenuNames") -#define SORT_MENU_ACTIONS THEME->GetMetric ("MusicWheel","SortMenuActions") -#define MODE_MENU_NAMES THEME->GetMetric ("MusicWheel","ModeMenuNames") -#define MODE_MENU_ACTIONS THEME->GetMetric ("MusicWheel","ModeMenuActions") +#define SORT_MENU_CHOICE_NAMES THEME->GetMetric ("MusicWheel","SortMenuChoiceNames") +#define MODE_MENU_CHOICE_NAMES THEME->GetMetric ("MusicWheel","ModeMenuChoiceNames") +#define CHOICE( sChoiceName ) THEME->GetMetricA("MusicWheel",ssprintf("Choice%s",sChoiceName.c_str())) #define WHEEL_ITEM_ON_DELAY_CENTER THEME->GetMetricF("MusicWheel","WheelItemOnDelayCenter") #define WHEEL_ITEM_ON_DELAY_OFFSET THEME->GetMetricF("MusicWheel","WheelItemOnDelayOffset") #define WHEEL_ITEM_OFF_DELAY_CENTER THEME->GetMetricF("MusicWheel","WheelItemOffDelayCenter") @@ -320,7 +319,7 @@ bool MusicWheel::SelectSort( SortOrder so ) vector &from = m_WheelItemDatas[GAMESTATE->m_SortOrder]; for( i=0; im_SortOrder != so ) + if( m_CurWheelItemData[i]->m_Action.m_SortOrder != so ) continue; if( !m_CurWheelItemData[i]->m_Action.DescribesCurrentModeForAllPlayers() ) continue; @@ -412,32 +411,15 @@ void MusicWheel::BuildWheelItemDatas( vector &arrayWheelItemDatas case SORT_MODE_MENU: { arrayWheelItemDatas.clear(); // clear out the previous wheel items - CString sNames = so==SORT_SORT_MENU ? SORT_MENU_NAMES : MODE_MENU_NAMES; - CString sActions = so==SORT_SORT_MENU ? SORT_MENU_ACTIONS : MODE_MENU_ACTIONS; - vector Names, Actions; - split( sNames, ":", Names ); - split( sActions, ":", Actions ); - if( Names.size() != Actions.size() ) - RageException::Throw("MusicWheel::MenuNames and MusicWheel::MenuActions must have the same number of components"); - - for( unsigned i=0; i vsNames; + split( sNames, ",", vsNames ); + for( unsigned i=0; i parts; - split( Actions[i], ";", parts ); - - SortOrder so = SORT_GROUP; - for( unsigned j = 0; j < parts.size(); ++j ) - { - CStringArray asBits; - split( parts[j], ",", asBits ); - if( !asBits[0].CompareNoCase("sort") ) - so = StringToSortOrder( asBits[1] ); - } - - WheelItemData wid( TYPE_SORT, NULL, "", NULL, SORT_MENU_COLOR, so ); - wid.m_sLabel = Names[i]; - wid.m_Action.Load( i, ParseCommands(Actions[i]) ); + WheelItemData wid( TYPE_SORT, NULL, "", NULL, SORT_MENU_COLOR ); + wid.m_sLabel = vsNames[i]; + wid.m_Action.Load( i, CHOICE(vsNames[i]) ); + wid.m_sLabel = wid.m_Action.m_sName; switch( so ) { @@ -559,11 +541,11 @@ void MusicWheel::BuildWheelItemDatas( vector &arrayWheelItemDatas { RageColor colorSection = (so==SORT_GROUP) ? SONGMAN->GetGroupColor(pSong->m_sGroupName) : SECTION_COLORS(iSectionColorIndex); iSectionColorIndex = (iSectionColorIndex+1) % NUM_SECTION_COLORS; - arrayWheelItemDatas.push_back( WheelItemData(TYPE_SECTION, NULL, sThisSection, NULL, colorSection, SORT_INVALID) ); + arrayWheelItemDatas.push_back( WheelItemData(TYPE_SECTION, NULL, sThisSection, NULL, colorSection) ); sLastSection = sThisSection; } - arrayWheelItemDatas.push_back( WheelItemData( TYPE_SONG, pSong, sThisSection, NULL, SONGMAN->GetSongColor(pSong), SORT_INVALID) ); + arrayWheelItemDatas.push_back( WheelItemData( TYPE_SONG, pSong, sThisSection, NULL, SONGMAN->GetSongColor(pSong)) ); } } else @@ -571,16 +553,16 @@ void MusicWheel::BuildWheelItemDatas( vector &arrayWheelItemDatas for( unsigned i=0; iGetSongColor(pSong), SORT_INVALID) ); + arrayWheelItemDatas.push_back( WheelItemData(TYPE_SONG, pSong, "", NULL, SONGMAN->GetSongColor(pSong)) ); } } if( so != SORT_ROULETTE ) { if( SHOW_ROULETTE ) - arrayWheelItemDatas.push_back( WheelItemData(TYPE_ROULETTE, NULL, "", NULL, RageColor(1,0,0,1), SORT_INVALID) ); + arrayWheelItemDatas.push_back( WheelItemData(TYPE_ROULETTE, NULL, "", NULL, RageColor(1,0,0,1)) ); if( SHOW_RANDOM ) - arrayWheelItemDatas.push_back( WheelItemData(TYPE_RANDOM, NULL, "", NULL, RageColor(1,0,0,1), SORT_INVALID) ); + arrayWheelItemDatas.push_back( WheelItemData(TYPE_RANDOM, NULL, "", NULL, RageColor(1,0,0,1)) ); if( SHOW_PORTAL ) { @@ -590,7 +572,7 @@ void MusicWheel::BuildWheelItemDatas( vector &arrayWheelItemDatas if( arrayWheelItemDatas[i].m_Type == TYPE_SONG ) bFoundAnySong = true; if( bFoundAnySong ) - arrayWheelItemDatas.push_back( WheelItemData(TYPE_PORTAL, NULL, "", NULL, RageColor(1,0,0,1), SORT_INVALID) ); + arrayWheelItemDatas.push_back( WheelItemData(TYPE_PORTAL, NULL, "", NULL, RageColor(1,0,0,1)) ); } } @@ -681,11 +663,11 @@ void MusicWheel::BuildWheelItemDatas( vector &arrayWheelItemDatas { RageColor c = SECTION_COLORS(iSectionColorIndex); iSectionColorIndex = (iSectionColorIndex+1) % NUM_SECTION_COLORS; - arrayWheelItemDatas.push_back( WheelItemData(TYPE_SECTION, NULL, sThisSection, NULL, c, SORT_INVALID) ); + arrayWheelItemDatas.push_back( WheelItemData(TYPE_SECTION, NULL, sThisSection, NULL, c) ); sLastSection = sThisSection; } - arrayWheelItemDatas.push_back( WheelItemData(TYPE_COURSE, NULL, sThisSection, pCourse, pCourse->GetColor(), SORT_INVALID) ); + arrayWheelItemDatas.push_back( WheelItemData(TYPE_COURSE, NULL, sThisSection, pCourse, pCourse->GetColor()) ); } break; } @@ -717,7 +699,7 @@ void MusicWheel::BuildWheelItemDatas( vector &arrayWheelItemDatas if( arrayWheelItemDatas.empty() ) { - arrayWheelItemDatas.push_back( WheelItemData(TYPE_SECTION, NULL, "- EMPTY -", NULL, RageColor(1,0,0,1), SORT_INVALID) ); + arrayWheelItemDatas.push_back( WheelItemData(TYPE_SECTION, NULL, "- EMPTY -", NULL, RageColor(1,0,0,1)) ); } } @@ -1247,9 +1229,14 @@ bool MusicWheel::Select() // return true if this selection ends the screen case TYPE_COURSE: return true; case TYPE_SORT: + LOG->Trace("New sort order selected: %s - %d", + 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(); - LOG->Trace("New sort order selected: %s - %d", m_CurWheelItemData[m_iSelection]->m_sLabel.c_str(), m_CurWheelItemData[m_iSelection]->m_SortOrder ); - ChangeSort( m_CurWheelItemData[m_iSelection]->m_SortOrder ); return false; default: ASSERT(0); diff --git a/stepmania/src/MusicWheelItem.cpp b/stepmania/src/MusicWheelItem.cpp index e9fa7a9ebd..7a07575489 100644 --- a/stepmania/src/MusicWheelItem.cpp +++ b/stepmania/src/MusicWheelItem.cpp @@ -28,7 +28,7 @@ -WheelItemData::WheelItemData( WheelItemType wit, Song* pSong, CString sSectionName, Course* pCourse, RageColor color, SortOrder so ) +WheelItemData::WheelItemData( WheelItemType wit, Song* pSong, CString sSectionName, Course* pCourse, RageColor color ) { m_Type = wit; m_pSong = pSong; @@ -36,7 +36,6 @@ WheelItemData::WheelItemData( WheelItemType wit, Song* pSong, CString sSectionNa m_pCourse = pCourse; m_color = color; m_Flags = WheelNotifyIcon::Flags(); - m_SortOrder = so; } diff --git a/stepmania/src/MusicWheelItem.h b/stepmania/src/MusicWheelItem.h index 3bb1bae975..94367dc262 100644 --- a/stepmania/src/MusicWheelItem.h +++ b/stepmania/src/MusicWheelItem.h @@ -66,7 +66,7 @@ enum WheelItemType struct WheelItemData { WheelItemData() {} - WheelItemData( WheelItemType wit, Song* pSong, CString sSectionName, Course* pCourse, RageColor color, SortOrder so ); + WheelItemData( WheelItemType wit, Song* pSong, CString sSectionName, Course* pCourse, RageColor color ); WheelItemType m_Type; CString m_sSectionName; @@ -78,7 +78,6 @@ struct WheelItemData // for TYPE_SORT CString m_sLabel; GameCommand m_Action; - SortOrder m_SortOrder; }; #endif