remove SortOrder from WheelItemData. Use the SortOrder in m_Action instead.

This commit is contained in:
Chris Danford
2004-12-04 22:36:29 +00:00
parent 2684ff5124
commit 0bc5f079ca
4 changed files with 42 additions and 50 deletions
+11 -4
View File
@@ -2326,10 +2326,17 @@ Use3D=0
Wheel3DRadius=200 # Possibly safe defaults? Wheel3DRadius=200 # Possibly safe defaults?
CirclePercent=0.5 CirclePercent=0.5
MostPlayedSongsToShow=30 MostPlayedSongsToShow=30
SortMenuNames=GROUP:TITLE:BPM:PLAYERS' BEST:TOP GRADE:ARTIST:EASY METER:MEDIUM METER:HARD METER SortMenuChoiceNames=Group,Title,Bpm,Popularity,TopGrade,Artist,EasyMeter,MediumMeter,HardMeter
SortMenuActions=sort,GROUP:sort,TITLE:sort,BPM:sort,PLAYERS BEST:sort,TOP GRADE:sort,ARTIST:sort,EASY METER:sort,MEDIUM METER:sort,HARD METER ModeMenuChoiceNames=Group
ModeMenuNames=GROUP ChoiceGroup=name,GROUP;sort,GROUP
ModeMenuActions=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] [LifeMeterBar]
MeterWidth=260 MeterWidth=260
+29 -42
View File
@@ -49,10 +49,9 @@ ThemeMetric<bool> USE_3D ("MusicWheel","Use3D");
ThemeMetric<int> NUM_WHEEL_ITEMS_METRIC ("MusicWheel","NumWheelItems"); ThemeMetric<int> NUM_WHEEL_ITEMS_METRIC ("MusicWheel","NumWheelItems");
#define NUM_WHEEL_ITEMS min( MAX_WHEEL_ITEMS, (int) NUM_WHEEL_ITEMS_METRIC ) #define NUM_WHEEL_ITEMS min( MAX_WHEEL_ITEMS, (int) NUM_WHEEL_ITEMS_METRIC )
#define MOST_PLAYED_SONGS_TO_SHOW THEME->GetMetricI("MusicWheel","MostPlayedSongsToShow") #define MOST_PLAYED_SONGS_TO_SHOW THEME->GetMetricI("MusicWheel","MostPlayedSongsToShow")
#define SORT_MENU_NAMES THEME->GetMetric ("MusicWheel","SortMenuNames") #define SORT_MENU_CHOICE_NAMES THEME->GetMetric ("MusicWheel","SortMenuChoiceNames")
#define SORT_MENU_ACTIONS THEME->GetMetric ("MusicWheel","SortMenuActions") #define MODE_MENU_CHOICE_NAMES THEME->GetMetric ("MusicWheel","ModeMenuChoiceNames")
#define MODE_MENU_NAMES THEME->GetMetric ("MusicWheel","ModeMenuNames") #define CHOICE( sChoiceName ) THEME->GetMetricA("MusicWheel",ssprintf("Choice%s",sChoiceName.c_str()))
#define MODE_MENU_ACTIONS THEME->GetMetric ("MusicWheel","ModeMenuActions")
#define WHEEL_ITEM_ON_DELAY_CENTER THEME->GetMetricF("MusicWheel","WheelItemOnDelayCenter") #define WHEEL_ITEM_ON_DELAY_CENTER THEME->GetMetricF("MusicWheel","WheelItemOnDelayCenter")
#define WHEEL_ITEM_ON_DELAY_OFFSET THEME->GetMetricF("MusicWheel","WheelItemOnDelayOffset") #define WHEEL_ITEM_ON_DELAY_OFFSET THEME->GetMetricF("MusicWheel","WheelItemOnDelayOffset")
#define WHEEL_ITEM_OFF_DELAY_CENTER THEME->GetMetricF("MusicWheel","WheelItemOffDelayCenter") #define WHEEL_ITEM_OFF_DELAY_CENTER THEME->GetMetricF("MusicWheel","WheelItemOffDelayCenter")
@@ -320,7 +319,7 @@ bool MusicWheel::SelectSort( SortOrder so )
vector<WheelItemData> &from = m_WheelItemDatas[GAMESTATE->m_SortOrder]; vector<WheelItemData> &from = m_WheelItemDatas[GAMESTATE->m_SortOrder];
for( i=0; i<from.size(); i++ ) for( i=0; i<from.size(); i++ )
{ {
if( from[i].m_SortOrder != so ) if( from[i].m_Action.m_SortOrder != so )
continue; continue;
if( !from[i].m_Action.DescribesCurrentModeForAllPlayers() ) if( !from[i].m_Action.DescribesCurrentModeForAllPlayers() )
continue; continue;
@@ -335,7 +334,7 @@ bool MusicWheel::SelectSort( SortOrder so )
for( i=0; i<m_CurWheelItemData.size(); i++ ) for( i=0; i<m_CurWheelItemData.size(); i++ )
{ {
if( m_CurWheelItemData[i]->m_SortOrder != so ) if( m_CurWheelItemData[i]->m_Action.m_SortOrder != so )
continue; continue;
if( !m_CurWheelItemData[i]->m_Action.DescribesCurrentModeForAllPlayers() ) if( !m_CurWheelItemData[i]->m_Action.DescribesCurrentModeForAllPlayers() )
continue; continue;
@@ -412,32 +411,15 @@ void MusicWheel::BuildWheelItemDatas( vector<WheelItemData> &arrayWheelItemDatas
case SORT_MODE_MENU: case SORT_MODE_MENU:
{ {
arrayWheelItemDatas.clear(); // clear out the previous wheel items arrayWheelItemDatas.clear(); // clear out the previous wheel items
CString sNames = so==SORT_SORT_MENU ? SORT_MENU_NAMES : MODE_MENU_NAMES; CString sNames = (so==SORT_SORT_MENU) ? SORT_MENU_CHOICE_NAMES : MODE_MENU_CHOICE_NAMES;
CString sActions = so==SORT_SORT_MENU ? SORT_MENU_ACTIONS : MODE_MENU_ACTIONS; vector<CString> vsNames;
vector<CString> Names, Actions; split( sNames, ",", vsNames );
split( sNames, ":", Names ); for( unsigned i=0; i<vsNames.size(); ++i )
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<Names.size(); ++i )
{ {
/* Look for sort names. */ WheelItemData wid( TYPE_SORT, NULL, "", NULL, SORT_MENU_COLOR );
vector<CString> parts; wid.m_sLabel = vsNames[i];
split( Actions[i], ";", parts ); wid.m_Action.Load( i, CHOICE(vsNames[i]) );
wid.m_sLabel = wid.m_Action.m_sName;
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]) );
switch( so ) switch( so )
{ {
@@ -559,11 +541,11 @@ void MusicWheel::BuildWheelItemDatas( vector<WheelItemData> &arrayWheelItemDatas
{ {
RageColor colorSection = (so==SORT_GROUP) ? SONGMAN->GetGroupColor(pSong->m_sGroupName) : SECTION_COLORS(iSectionColorIndex); RageColor colorSection = (so==SORT_GROUP) ? SONGMAN->GetGroupColor(pSong->m_sGroupName) : SECTION_COLORS(iSectionColorIndex);
iSectionColorIndex = (iSectionColorIndex+1) % NUM_SECTION_COLORS; 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; 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 else
@@ -571,16 +553,16 @@ void MusicWheel::BuildWheelItemDatas( vector<WheelItemData> &arrayWheelItemDatas
for( unsigned i=0; i<arraySongs.size(); i++ ) for( unsigned i=0; i<arraySongs.size(); i++ )
{ {
Song* pSong = arraySongs[i]; Song* pSong = arraySongs[i];
arrayWheelItemDatas.push_back( WheelItemData(TYPE_SONG, pSong, "", NULL, SONGMAN->GetSongColor(pSong), SORT_INVALID) ); arrayWheelItemDatas.push_back( WheelItemData(TYPE_SONG, pSong, "", NULL, SONGMAN->GetSongColor(pSong)) );
} }
} }
if( so != SORT_ROULETTE ) if( so != SORT_ROULETTE )
{ {
if( SHOW_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 ) 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 ) if( SHOW_PORTAL )
{ {
@@ -590,7 +572,7 @@ void MusicWheel::BuildWheelItemDatas( vector<WheelItemData> &arrayWheelItemDatas
if( arrayWheelItemDatas[i].m_Type == TYPE_SONG ) if( arrayWheelItemDatas[i].m_Type == TYPE_SONG )
bFoundAnySong = true; bFoundAnySong = true;
if( bFoundAnySong ) 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<WheelItemData> &arrayWheelItemDatas
{ {
RageColor c = SECTION_COLORS(iSectionColorIndex); RageColor c = SECTION_COLORS(iSectionColorIndex);
iSectionColorIndex = (iSectionColorIndex+1) % NUM_SECTION_COLORS; 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; 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; break;
} }
@@ -717,7 +699,7 @@ void MusicWheel::BuildWheelItemDatas( vector<WheelItemData> &arrayWheelItemDatas
if( arrayWheelItemDatas.empty() ) 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: case TYPE_COURSE:
return true; return true;
case TYPE_SORT: 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(); 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; return false;
default: default:
ASSERT(0); ASSERT(0);
+1 -2
View File
@@ -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_Type = wit;
m_pSong = pSong; m_pSong = pSong;
@@ -36,7 +36,6 @@ WheelItemData::WheelItemData( WheelItemType wit, Song* pSong, CString sSectionNa
m_pCourse = pCourse; m_pCourse = pCourse;
m_color = color; m_color = color;
m_Flags = WheelNotifyIcon::Flags(); m_Flags = WheelNotifyIcon::Flags();
m_SortOrder = so;
} }
+1 -2
View File
@@ -66,7 +66,7 @@ enum WheelItemType
struct WheelItemData struct WheelItemData
{ {
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; WheelItemType m_Type;
CString m_sSectionName; CString m_sSectionName;
@@ -78,7 +78,6 @@ struct WheelItemData
// for TYPE_SORT // for TYPE_SORT
CString m_sLabel; CString m_sLabel;
GameCommand m_Action; GameCommand m_Action;
SortOrder m_SortOrder;
}; };
#endif #endif