SongSortOrder -> SortOrder

save/restore last sort with Profile
clean up GameConstants
This commit is contained in:
Chris Danford
2004-03-12 08:31:40 +00:00
parent 6faa757683
commit 28f4764ed2
16 changed files with 253 additions and 279 deletions
+129 -190
View File
@@ -15,109 +15,106 @@
#include "RageUtil.h" #include "RageUtil.h"
#include "ThemeManager.h" #include "ThemeManager.h"
const static CString EMPTY_STRING;
CString RadarCategoryToString( RadarCategory cat ) #define XToString(X) \
{ const CString& X##ToString( X x ) \
switch( cat ) { \
{ if( x == ARRAYSIZE(X##Names)+1 ) \
case RADAR_STREAM: return "stream"; return EMPTY_STRING; \
case RADAR_VOLTAGE: return "voltage"; ASSERT(unsigned(x) < ARRAYSIZE(X##Names)); \
case RADAR_AIR: return "air"; return X##Names[x]; \
case RADAR_FREEZE: return "freeze";
case RADAR_CHAOS: return "chaos";
case RADAR_NUM_TAPS_AND_HOLDS: return "taps";
case RADAR_NUM_JUMPS: return "jumps";
case RADAR_NUM_HOLDS: return "holds";
case RADAR_NUM_MINES: return "mines";
case RADAR_NUM_HANDS: return "hands";
default: ASSERT(0); return ""; // invalid
} }
}
CString DifficultyToString( Difficulty dc ) #define XToThemedString(X) \
{ CString X##ToThemedString( X x ) \
switch( dc ) { \
{ return THEME->GetMetric( #X, X##ToString(x) ); \
case DIFFICULTY_BEGINNER: return "beginner";
case DIFFICULTY_EASY: return "easy";
case DIFFICULTY_MEDIUM: return "medium";
case DIFFICULTY_HARD: return "hard";
case DIFFICULTY_CHALLENGE: return "challenge";
case DIFFICULTY_EDIT: return "edit";
default: ASSERT(0); return ""; // invalid Difficulty
} }
}
#define StringToX(X) \
X StringTo##X( const CString& s ) \
{ \
CString s2 = s; \
s2.MakeLower(); \
for( unsigned i = 0; i < ARRAYSIZE(X##Names); ++i ) \
if( !s2.CompareNoCase(X##Names[i]) ) \
return (X)i; \
return (X)(i+1); /*invalid*/ \
}
static const CString RadarCategoryNames[NUM_RADAR_CATEGORIES] = {
"stream",
"voltage",
"air",
"freeze",
"chaos",
"taps",
"jumps",
"holds",
"mines",
"hands",
};
XToString( RadarCategory );
static const CString DifficultyNames[NUM_RADAR_CATEGORIES] = {
"beginner",
"easy",
"medium",
"hard",
"challenge",
"edit",
};
XToString( Difficulty );
/* We prefer the above names; recognize a number of others, too. (They'l /* We prefer the above names; recognize a number of others, too. (They'l
* get normalized when written to SMs, etc.) */ * get normalized when written to SMs, etc.) */
Difficulty StringToDifficulty( CString sDC ) Difficulty StringToDifficulty( const CString& sDC )
{ {
sDC.MakeLower(); CString s2 = sDC;
s2.MakeLower();
if( sDC == "beginner" ) return DIFFICULTY_BEGINNER; if( sDC == "beginner" ) return DIFFICULTY_BEGINNER;
else if( sDC == "easy" ) return DIFFICULTY_EASY; else if( s2 == "easy" ) return DIFFICULTY_EASY;
else if( sDC == "basic" ) return DIFFICULTY_EASY; else if( s2 == "basic" ) return DIFFICULTY_EASY;
else if( sDC == "light" ) return DIFFICULTY_EASY; else if( s2 == "light" ) return DIFFICULTY_EASY;
else if( sDC == "medium" ) return DIFFICULTY_MEDIUM; else if( s2 == "medium" ) return DIFFICULTY_MEDIUM;
else if( sDC == "another" ) return DIFFICULTY_MEDIUM; else if( s2 == "another" ) return DIFFICULTY_MEDIUM;
else if( sDC == "trick" ) return DIFFICULTY_MEDIUM; else if( s2 == "trick" ) return DIFFICULTY_MEDIUM;
else if( sDC == "standard" ) return DIFFICULTY_MEDIUM; else if( s2 == "standard" ) return DIFFICULTY_MEDIUM;
else if( sDC == "difficult") return DIFFICULTY_MEDIUM; else if( s2 == "difficult") return DIFFICULTY_MEDIUM;
else if( sDC == "hard" ) return DIFFICULTY_HARD; else if( s2 == "hard" ) return DIFFICULTY_HARD;
else if( sDC == "ssr" ) return DIFFICULTY_HARD; else if( s2 == "ssr" ) return DIFFICULTY_HARD;
else if( sDC == "maniac" ) return DIFFICULTY_HARD; else if( s2 == "maniac" ) return DIFFICULTY_HARD;
else if( sDC == "heavy" ) return DIFFICULTY_HARD; else if( s2 == "heavy" ) return DIFFICULTY_HARD;
else if( sDC == "smaniac" ) return DIFFICULTY_CHALLENGE; else if( s2 == "smaniac" ) return DIFFICULTY_CHALLENGE;
else if( sDC == "challenge" ) return DIFFICULTY_CHALLENGE; else if( s2 == "challenge" )return DIFFICULTY_CHALLENGE;
else if( sDC == "expert" ) return DIFFICULTY_CHALLENGE; else if( s2 == "expert" ) return DIFFICULTY_CHALLENGE;
else if( sDC == "oni" ) return DIFFICULTY_CHALLENGE; else if( s2 == "oni" ) return DIFFICULTY_CHALLENGE;
else if( sDC == "edit" ) return DIFFICULTY_EDIT; else if( s2 == "edit" ) return DIFFICULTY_EDIT;
else return DIFFICULTY_INVALID; else return DIFFICULTY_INVALID;
} }
CString CourseDifficultyToString( CourseDifficulty dc ) static const CString CourseDifficultyNames[NUM_COURSE_DIFFICULTIES] = {
{ "regular",
switch( dc ) "difficult",
{ };
case COURSE_DIFFICULTY_REGULAR: return "regular"; XToString( CourseDifficulty );
case COURSE_DIFFICULTY_DIFFICULT: return "difficult"; StringToX( CourseDifficulty );
default: ASSERT(0); return ""; // invalid Difficulty
}
}
/* We prefer the above names; recognize a number of others, too. (They'l
* get normalized when written to SMs, etc.) */
CourseDifficulty StringToCourseDifficulty( CString sDC )
{
sDC.MakeLower();
if( sDC == "regular" ) return COURSE_DIFFICULTY_REGULAR;
else if( sDC == "difficult" ) return COURSE_DIFFICULTY_DIFFICULT;
else return COURSE_DIFFICULTY_INVALID;
}
CString PlayModeToString( PlayMode pm ) static const CString PlayModeNames[NUM_PLAY_MODES] = {
{ "arcade",
switch( pm ) "oni",
{ "nonstop",
case PLAY_MODE_ARCADE: return "arcade"; "endless",
case PLAY_MODE_ONI: return "oni"; "battle",
case PLAY_MODE_NONSTOP: return "nonstop"; "rave",
case PLAY_MODE_ENDLESS: return "endless"; };
case PLAY_MODE_BATTLE: return "battle"; XToString( PlayMode );
case PLAY_MODE_RAVE: return "rave"; StringToX( PlayMode );
default: ASSERT(0); return "";
}
}
PlayMode StringToPlayMode( CString s )
{
for( int i=0; i<NUM_PLAY_MODES; i++ )
if( PlayModeToString((PlayMode)i).CompareNoCase(s) == 0 )
return (PlayMode)i;
return PLAY_MODE_INVALID;
}
RankingCategory AverageMeterToRankingCategory( float fAverageMeter ) RankingCategory AverageMeterToRankingCategory( float fAverageMeter )
@@ -128,39 +125,26 @@ RankingCategory AverageMeterToRankingCategory( float fAverageMeter )
else return RANKING_D; else return RANKING_D;
} }
CString RankingCategoryToString( RankingCategory rc )
{
switch( rc )
{
case RANKING_A: return "A";
case RANKING_B: return "B";
case RANKING_C: return "C";
case RANKING_D: return "D";
default: FAIL_M( ssprintf("%i", rc) );
}
}
RankingCategory StringToRankingCategory( CString rc ) static const CString RankingCategoryNames[NUM_RANKING_CATEGORIES] = {
{ "a",
if( rc == "A" ) return RANKING_A; "b",
if( rc == "B" ) return RANKING_B; "c",
if( rc == "C" ) return RANKING_C; "d",
if( rc == "D" ) return RANKING_D; };
return RANKING_INVALID; XToString( RankingCategory );
} StringToX( RankingCategory );
CString CoinModeToString( CoinMode cm )
{
switch( cm )
{
case COIN_HOME: return "home";
case COIN_PAY: return "pay";
case COIN_FREE: return "free";
default: ASSERT(0); return "";
}
}
static const char *SongSortOrderNames[NUM_SORT_ORDERS] = { static const CString CoinModeNames[NUM_COIN_MODES] = {
"home",
"pay",
"free",
};
XToString( CoinMode );
static const CString SortOrderNames[NUM_SORT_ORDERS] = {
"PREFERRED", "PREFERRED",
"GROUP", "GROUP",
"TITLE", "TITLE",
@@ -180,78 +164,33 @@ static const char *SongSortOrderNames[NUM_SORT_ORDERS] = {
"ENDLESS", "ENDLESS",
"ROULETTE" "ROULETTE"
}; };
XToString( SortOrder );
CString SongSortOrderToString( SongSortOrder so ) StringToX( SortOrder );
{
ASSERT(so < NUM_SORT_ORDERS);
return SongSortOrderNames[so];
}
SongSortOrder StringToSongSortOrder( CString str )
{
for( unsigned i = 0; i < NUM_SORT_ORDERS; ++i)
if( !str.CompareNoCase(SongSortOrderNames[i]) )
return (SongSortOrder)i;
return SORT_INVALID;
}
CString TapNoteScoreToString( TapNoteScore tns ) static const CString TapNoteScoreNames[NUM_TAP_NOTE_SCORES] = {
{ "None",
switch( tns ) "HitMine",
{ "Miss",
case TNS_NONE: return "None"; "Boo",
case TNS_HIT_MINE: return "HitMine"; "Good",
case TNS_MISS: return "Miss"; "Great",
case TNS_BOO: return "Boo"; "Perfect",
case TNS_GOOD: return "Good"; "Marvelous",
case TNS_GREAT: return "Great"; };
case TNS_PERFECT: return "Perfect"; XToString( TapNoteScore );
case TNS_MARVELOUS: return "Marvelous";
default: ASSERT(0); return ""; // invalid
}
}
CString MemoryCardStateToString( MemoryCardState mcs )
{
switch( mcs )
{
case MEMORY_CARD_STATE_READY: return "ready";
case MEMORY_CARD_STATE_TOO_LATE: return "late";
case MEMORY_CARD_STATE_WRITE_ERROR: return "error";
case MEMORY_CARD_STATE_NO_CARD: return "none";
default: ASSERT(0); return "";
}
}
static const CString MemoryCardStateNames[NUM_MEMORY_CARD_STATES] = {
#define XToString(X) \ "ready",
CString X##ToString( X x ) \ "late",
{ \ "error",
ASSERT(unsigned(x) < ARRAYSIZE(X##Names)); \ "none",
return X##Names[x]; \ };
} XToString( MemoryCardState );
#define XToThemedString(X) \
CString X##ToThemedString( X x ) \
{ \
return THEME->GetMetric( #X, X##ToString(x) ); \
}
#define StringToX(X) \
X StringTo##X( CString s ) \
{ \
unsigned i; \
for( i = 0; i < ARRAYSIZE(X##Names); ++i ) \
if( !s.CompareNoCase(X##Names[i]) ) \
return (X)i; \
return (X)i; \
}
static const char *PerDifficultyAwardNames[NUM_PER_DIFFICULTY_AWARDS] = { static const CString PerDifficultyAwardNames[NUM_PER_DIFFICULTY_AWARDS] = {
"FullComboGreats", "FullComboGreats",
"FullComboPerfects", "FullComboPerfects",
"FullComboMarvelouses", "FullComboMarvelouses",
@@ -261,15 +200,16 @@ static const char *PerDifficultyAwardNames[NUM_PER_DIFFICULTY_AWARDS] = {
"Greats90Percent", "Greats90Percent",
"Greats100Percent", "Greats100Percent",
}; };
XToString( PerDifficultyAward ); XToString( PerDifficultyAward );
XToThemedString( PerDifficultyAward ); XToThemedString( PerDifficultyAward );
StringToX( PerDifficultyAward ); StringToX( PerDifficultyAward );
// The number is not at the front so that these strings can be used as XML entity names
// The number is not at the back so that "1000" and "10000" don't conflict when // Numbers are intentially not at the front of these strings so that the
// searching for theme elements. // strings can be used as XML entity names.
static const char *PeakComboAwardNames[NUM_PEAK_COMBO_AWARDS] = { // Numbers are intentially not at the back so that "1000" and "10000" don't
// conflict when searching for theme elements.
static const CString PeakComboAwardNames[NUM_PEAK_COMBO_AWARDS] = {
"Peak1000Combo", "Peak1000Combo",
"Peak2000Combo", "Peak2000Combo",
"Peak3000Combo", "Peak3000Combo",
@@ -281,7 +221,6 @@ static const char *PeakComboAwardNames[NUM_PEAK_COMBO_AWARDS] = {
"Peak9000Combo", "Peak9000Combo",
"Peak10000Combo", "Peak10000Combo",
}; };
XToString( PeakComboAward ); XToString( PeakComboAward );
XToThemedString( PeakComboAward ); XToThemedString( PeakComboAward );
StringToX( PeakComboAward ); StringToX( PeakComboAward );
+23 -22
View File
@@ -62,7 +62,7 @@ enum RadarCategory
}; };
#define FOREACH_RadarCategory( rc ) FOREACH_ENUM( RadarCategory, NUM_RADAR_CATEGORIES, rc ) #define FOREACH_RadarCategory( rc ) FOREACH_ENUM( RadarCategory, NUM_RADAR_CATEGORIES, rc )
CString RadarCategoryToString( RadarCategory cat ); const CString& RadarCategoryToString( RadarCategory cat );
struct RadarValues struct RadarValues
{ {
@@ -99,8 +99,8 @@ enum Difficulty
}; };
#define FOREACH_Difficulty( dc ) FOREACH_ENUM( Difficulty, NUM_DIFFICULTIES, dc ) #define FOREACH_Difficulty( dc ) FOREACH_ENUM( Difficulty, NUM_DIFFICULTIES, dc )
CString DifficultyToString( Difficulty dc ); const CString& DifficultyToString( Difficulty dc );
Difficulty StringToDifficulty( CString sDC ); Difficulty StringToDifficulty( const CString& sDC );
enum CourseDifficulty enum CourseDifficulty
@@ -112,8 +112,8 @@ enum CourseDifficulty
}; };
#define FOREACH_CourseDifficulty( cd ) FOREACH_ENUM( CourseDifficulty, NUM_COURSE_DIFFICULTIES, cd ) #define FOREACH_CourseDifficulty( cd ) FOREACH_ENUM( CourseDifficulty, NUM_COURSE_DIFFICULTIES, cd )
CString CourseDifficultyToString( CourseDifficulty dc ); const CString& CourseDifficultyToString( CourseDifficulty dc );
CourseDifficulty StringToCourseDifficulty( CString sDC ); CourseDifficulty StringToCourseDifficulty( const CString& sDC );
enum StepsType enum StepsType
@@ -166,13 +166,13 @@ enum PlayMode
}; };
#define FOREACH_PlayMode( pm ) FOREACH_ENUM( PlayMode, NUM_PLAY_MODES, pm ) #define FOREACH_PlayMode( pm ) FOREACH_ENUM( PlayMode, NUM_PLAY_MODES, pm )
CString PlayModeToString( PlayMode pm ); const CString& PlayModeToString( PlayMode pm );
PlayMode StringToPlayMode( CString s ); PlayMode StringToPlayMode( const CString& s );
enum SongSortOrder { enum SortOrder {
SORT_PREFERRED, SORT_PREFERRED,
SORT_GROUP, SORT_GROUP,
SORT_TITLE, SORT_TITLE,
@@ -194,13 +194,14 @@ enum SongSortOrder {
NUM_SORT_ORDERS, NUM_SORT_ORDERS,
SORT_INVALID SORT_INVALID
}; };
const SongSortOrder MAX_SELECTABLE_SORT = (SongSortOrder)(SORT_ROULETTE-1); const SortOrder MAX_SELECTABLE_SORT = (SortOrder)(SORT_ROULETTE-1);
#define FOREACH_SongSortOrder( so ) FOREACH_ENUM( SongSortOrder, NUM_SORT_ORDERS, so ) #define FOREACH_SortOrder( so ) FOREACH_ENUM( SortOrder, NUM_SORT_ORDERS, so )
CString SongSortOrderToString( SongSortOrder so ); const CString& SortOrderToString( SortOrder so );
SongSortOrder StringToSongSortOrder( CString str ); SortOrder StringToSortOrder( const CString& str );
inline bool IsSongSort( SortOrder so ) { return so >= SORT_PREFERRED && so <= SORT_CHALLENGE_METER; }
// //
// Scoring stuff // Scoring stuff
@@ -219,7 +220,7 @@ enum TapNoteScore {
}; };
#define FOREACH_TapNoteScore( tns ) FOREACH_ENUM( TapNoteScore, NUM_TAP_NOTE_SCORES, tns ) #define FOREACH_TapNoteScore( tns ) FOREACH_ENUM( TapNoteScore, NUM_TAP_NOTE_SCORES, tns )
CString TapNoteScoreToString( TapNoteScore tns ); const CString& TapNoteScoreToString( TapNoteScore tns );
//enum TapNoteTiming { //enum TapNoteTiming {
// TNT_NONE, // TNT_NONE,
@@ -262,7 +263,7 @@ enum MemoryCardState
MEMORY_CARD_STATE_INVALID, MEMORY_CARD_STATE_INVALID,
}; };
CString MemoryCardStateToString( MemoryCardState mcs ); const CString& MemoryCardStateToString( MemoryCardState mcs );
// //
@@ -278,11 +279,11 @@ enum RankingCategory
RANKING_INVALID RANKING_INVALID
}; };
#define FOREACH_RankingCategory( rc ) FOREACH_ENUM( RankingCategory, NUM_RANKING_CATEGORIES, rc ) #define FOREACH_RankingCategory( rc ) FOREACH_ENUM( RankingCategory, NUM_RANKING_CATEGORIES, rc )
CString RankingCategoryToString( RankingCategory rc ); const CString& RankingCategoryToString( RankingCategory rc );
RankingCategory StringToRankingCategory( CString rc ); RankingCategory StringToRankingCategory( const CString& rc );
const CString RANKING_TO_FILL_IN_MARKER[NUM_PLAYERS] = {"#P1#","#P2#"}; const CString RANKING_TO_FILL_IN_MARKER[NUM_PLAYERS] = {"#P1#","#P2#"};
inline bool IsRankingToFillIn( CString sName ) { return !sName.empty() && sName[0]=='#'; } inline bool IsRankingToFillIn( const CString& sName ) { return !sName.empty() && sName[0]=='#'; }
RankingCategory AverageMeterToRankingCategory( float fAverageMeter ); RankingCategory AverageMeterToRankingCategory( float fAverageMeter );
@@ -345,7 +346,7 @@ const int ITEM_NONE = -1;
enum CoinMode { COIN_HOME, COIN_PAY, COIN_FREE, NUM_COIN_MODES }; enum CoinMode { COIN_HOME, COIN_PAY, COIN_FREE, NUM_COIN_MODES };
CString CoinModeToString( CoinMode cm ); const CString& CoinModeToString( CoinMode cm );
// //
@@ -366,9 +367,9 @@ enum PerDifficultyAward
PER_DIFFICULTY_AWARD_INVALID, PER_DIFFICULTY_AWARD_INVALID,
}; };
#define FOREACH_PerDifficultyAward( pma ) FOREACH_ENUM( PerDifficultyAward, NUM_PER_DIFFICULTY_AWARDS, pma ) #define FOREACH_PerDifficultyAward( pma ) FOREACH_ENUM( PerDifficultyAward, NUM_PER_DIFFICULTY_AWARDS, pma )
CString PerDifficultyAwardToString( PerDifficultyAward pma ); const CString& PerDifficultyAwardToString( PerDifficultyAward pma );
CString PerDifficultyAwardToThemedString( PerDifficultyAward pma ); CString PerDifficultyAwardToThemedString( PerDifficultyAward pma );
PerDifficultyAward StringToPerDifficultyAward( CString pma ); PerDifficultyAward StringToPerDifficultyAward( const CString& pma );
enum PeakComboAward enum PeakComboAward
@@ -387,9 +388,9 @@ enum PeakComboAward
PEAK_COMBO_AWARD_INVALID, PEAK_COMBO_AWARD_INVALID,
}; };
#define FOREACH_PeakComboAward( pca ) FOREACH_ENUM( PeakComboAward, NUM_PEAK_COMBO_AWARDS, pca ) #define FOREACH_PeakComboAward( pca ) FOREACH_ENUM( PeakComboAward, NUM_PEAK_COMBO_AWARDS, pca )
CString PeakComboAwardToString( PeakComboAward pma ); const CString& PeakComboAwardToString( PeakComboAward pma );
CString PeakComboAwardToThemedString( PeakComboAward pma ); CString PeakComboAwardToThemedString( PeakComboAward pma );
PeakComboAward StringToPeakComboAward( CString pma ); PeakComboAward StringToPeakComboAward( const CString& pma );
#endif #endif
+1 -1
View File
@@ -93,7 +93,7 @@ void GameState::Reset()
m_PreferredDifficulty[p] = DIFFICULTY_INVALID; m_PreferredDifficulty[p] = DIFFICULTY_INVALID;
m_CourseDifficulty[p] = COURSE_DIFFICULTY_REGULAR; m_CourseDifficulty[p] = COURSE_DIFFICULTY_REGULAR;
} }
m_SongSortOrder = SORT_INVALID; m_SortOrder = SORT_INVALID;
m_PlayMode = PLAY_MODE_INVALID; m_PlayMode = PLAY_MODE_INVALID;
m_bEditing = false; m_bEditing = false;
m_bDemonstrationOrJukebox = false; m_bDemonstrationOrJukebox = false;
+1 -1
View File
@@ -102,7 +102,7 @@ public:
CString m_sPreferredGroup; // GROUP_ALL_MUSIC denotes no preferred group CString m_sPreferredGroup; // GROUP_ALL_MUSIC denotes no preferred group
bool m_bChangedFailType; // true if FailType was changed in the song options screen bool m_bChangedFailType; // true if FailType was changed in the song options screen
Difficulty m_PreferredDifficulty[NUM_PLAYERS]; Difficulty m_PreferredDifficulty[NUM_PLAYERS];
SongSortOrder m_SongSortOrder; // used by MusicWheel SortOrder m_SortOrder; // used by MusicWheel
bool m_bEditing; // NoteField does special stuff when this is true bool m_bEditing; // NoteField does special stuff when this is true
bool m_bDemonstrationOrJukebox; // ScreenGameplay does special stuff when this is true bool m_bDemonstrationOrJukebox; // ScreenGameplay does special stuff when this is true
bool m_bJukeboxUsesModifiers; bool m_bJukeboxUsesModifiers;
+2 -2
View File
@@ -23,7 +23,7 @@ MusicSortDisplay::MusicSortDisplay()
{ {
} }
void MusicSortDisplay::Set( SongSortOrder so ) void MusicSortDisplay::Set( SortOrder so )
{ {
Load( THEME->GetPathToG(ssprintf("MusicSortDisplay %s",SongSortOrderToString(so).c_str())) ); Load( THEME->GetPathToG(ssprintf("MusicSortDisplay %s",SortOrderToString(so).c_str())) );
} }
+1 -1
View File
@@ -23,7 +23,7 @@ class MusicSortDisplay : public Sprite
{ {
public: public:
MusicSortDisplay(); MusicSortDisplay();
void Set( SongSortOrder so ); void Set( SortOrder so );
protected: protected:
+67 -39
View File
@@ -33,6 +33,7 @@
#include "UnlockSystem.h" #include "UnlockSystem.h"
#include "ModeChoice.h" #include "ModeChoice.h"
#include "ActorUtil.h" #include "ActorUtil.h"
#include "ProfileManager.h"
#define FADE_SECONDS THEME->GetMetricF("MusicWheel","FadeSeconds") #define FADE_SECONDS THEME->GetMetricF("MusicWheel","FadeSeconds")
@@ -72,7 +73,7 @@ CachedThemeMetricI NUM_WHEEL_ITEMS_METRIC ("MusicWheel","NumWheelItems");
const int MAX_WHEEL_SOUND_SPEED = 15; const int MAX_WHEEL_SOUND_SPEED = 15;
static const SongSortOrder SortOrder[] = static const SortOrder SORT_ORDERS[] =
{ {
SORT_GROUP, SORT_GROUP,
SORT_TITLE, SORT_TITLE,
@@ -130,7 +131,7 @@ void MusicWheel::Load()
m_iSelection = 0; m_iSelection = 0;
m_LastSongSortOrder = SORT_INVALID; m_LastSortOrder = SORT_INVALID;
m_WheelState = STATE_SELECTING_MUSIC; m_WheelState = STATE_SELECTING_MUSIC;
m_fTimeLeftInState = 0; m_fTimeLeftInState = 0;
@@ -172,16 +173,32 @@ void MusicWheel::Load()
GAMESTATE->m_SongOptions = so; GAMESTATE->m_SongOptions = so;
} }
if( GAMESTATE->m_SongSortOrder == SORT_INVALID ) if( GAMESTATE->m_SortOrder == SORT_INVALID )
{ {
switch( GAMESTATE->m_PlayMode ) switch( GAMESTATE->m_PlayMode )
{ {
case PLAY_MODE_ONI: GAMESTATE->m_SongSortOrder = SORT_ONI_COURSES; break; case PLAY_MODE_ONI: GAMESTATE->m_SortOrder = SORT_ONI_COURSES; break;
case PLAY_MODE_NONSTOP: GAMESTATE->m_SongSortOrder = SORT_NONSTOP_COURSES; break; case PLAY_MODE_NONSTOP: GAMESTATE->m_SortOrder = SORT_NONSTOP_COURSES; break;
case PLAY_MODE_ENDLESS: GAMESTATE->m_SongSortOrder = SORT_ENDLESS_COURSES; break; case PLAY_MODE_ENDLESS: GAMESTATE->m_SortOrder = SORT_ENDLESS_COURSES; break;
default: default:
GAMESTATE->m_SongSortOrder = StringToSongSortOrder( DEFAULT_SORT ); // look for a player's saved sort
ASSERT( GAMESTATE->m_SongSortOrder != SORT_INVALID ); FOREACH_HumanPlayer( pn )
{
if( PROFILEMAN->IsUsingProfile(pn) )
{
GAMESTATE->m_SortOrder = PROFILEMAN->GetProfile(pn)->m_SortOrder;
if( GAMESTATE->m_SortOrder != SORT_INVALID ) // we found one
break; // stop searching
}
}
// 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 );
}
break; break;
} }
} }
@@ -200,7 +217,7 @@ void MusicWheel::Load()
* the extra stage, so it knows to always display it. */ * the extra stage, so it knows to always display it. */
for( int so=0; so<NUM_SORT_ORDERS; so++ ) for( int so=0; so<NUM_SORT_ORDERS; so++ )
{ {
BuildWheelItemDatas( m_WheelItemDatas[so], SongSortOrder(so) ); BuildWheelItemDatas( m_WheelItemDatas[so], SortOrder(so) );
times += ssprintf( "%i:%.3f ", so, timer.GetDeltaTime() ); times += ssprintf( "%i:%.3f ", so, timer.GetDeltaTime() );
} }
LOG->Trace( "took: %s", times.c_str() ); LOG->Trace( "took: %s", times.c_str() );
@@ -238,7 +255,7 @@ bool MusicWheel::SelectSongOrCourse()
return true; return true;
// Select the first selectable song based on the sort order... // Select the first selectable song based on the sort order...
vector<WheelItemData> &wiWheelItems = m_WheelItemDatas[GAMESTATE->m_SongSortOrder]; vector<WheelItemData> &wiWheelItems = m_WheelItemDatas[GAMESTATE->m_SortOrder];
for( unsigned i = 0; i < wiWheelItems.size(); i++ ) for( unsigned i = 0; i < wiWheelItems.size(); i++ )
{ {
if( wiWheelItems[i].m_pSong ) if( wiWheelItems[i].m_pSong )
@@ -259,7 +276,7 @@ bool MusicWheel::SelectSong( Song *p )
GAMESTATE->m_pCurSong = p; GAMESTATE->m_pCurSong = p;
unsigned i; unsigned i;
vector<WheelItemData> &from = m_WheelItemDatas[GAMESTATE->m_SongSortOrder]; 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_pSong == p ) if( from[i].m_pSong == p )
@@ -289,7 +306,7 @@ bool MusicWheel::SelectCourse( Course *p )
GAMESTATE->m_pCurCourse = p; GAMESTATE->m_pCurCourse = p;
unsigned i; unsigned i;
vector<WheelItemData> &from = m_WheelItemDatas[GAMESTATE->m_SongSortOrder]; 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_pCourse == p ) if( from[i].m_pCourse == p )
@@ -312,16 +329,16 @@ bool MusicWheel::SelectCourse( Course *p )
return true; return true;
} }
bool MusicWheel::SelectSort( SongSortOrder so ) bool MusicWheel::SelectSort( SortOrder so )
{ {
if(so == SORT_INVALID) if(so == SORT_INVALID)
return false; return false;
unsigned i; unsigned i;
vector<WheelItemData> &from = m_WheelItemDatas[GAMESTATE->m_SongSortOrder]; 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_SongSortOrder != so ) if( from[i].m_SortOrder != so )
continue; continue;
if( !from[i].m_Action.DescribesCurrentModeForAllPlayers() ) if( !from[i].m_Action.DescribesCurrentModeForAllPlayers() )
continue; continue;
@@ -336,7 +353,7 @@ bool MusicWheel::SelectSort( SongSortOrder so )
for( i=0; i<m_CurWheelItemData.size(); i++ ) for( i=0; i<m_CurWheelItemData.size(); i++ )
{ {
if( m_CurWheelItemData[i]->m_SongSortOrder != so ) if( m_CurWheelItemData[i]->m_SortOrder != so )
continue; continue;
if( !m_CurWheelItemData[i]->m_Action.DescribesCurrentModeForAllPlayers() ) if( !m_CurWheelItemData[i]->m_Action.DescribesCurrentModeForAllPlayers() )
continue; continue;
@@ -347,7 +364,7 @@ bool MusicWheel::SelectSort( SongSortOrder so )
return true; return true;
} }
void MusicWheel::GetSongList(vector<Song*> &arraySongs, SongSortOrder so, CString sPreferredGroup ) void MusicWheel::GetSongList(vector<Song*> &arraySongs, SortOrder so, CString sPreferredGroup )
{ {
vector<Song*> apAllSongs; vector<Song*> apAllSongs;
// if( so==SORT_PREFERRED && GAMESTATE->m_sPreferredGroup!=GROUP_ALL_MUSIC) // if( so==SORT_PREFERRED && GAMESTATE->m_sPreferredGroup!=GROUP_ALL_MUSIC)
@@ -393,7 +410,7 @@ void MusicWheel::GetSongList(vector<Song*> &arraySongs, SongSortOrder so, CStrin
void MusicWheel::BuildWheelItemDatas( vector<WheelItemData> &arrayWheelItemDatas, SongSortOrder so ) void MusicWheel::BuildWheelItemDatas( vector<WheelItemData> &arrayWheelItemDatas, SortOrder so )
{ {
unsigned i; unsigned i;
@@ -417,13 +434,13 @@ void MusicWheel::BuildWheelItemDatas( vector<WheelItemData> &arrayWheelItemDatas
vector<CString> parts; vector<CString> parts;
split( Actions[i], ";", parts ); split( Actions[i], ";", parts );
SongSortOrder so = SORT_GROUP; SortOrder so = SORT_GROUP;
for( unsigned j = 0; j < parts.size(); ++j ) for( unsigned j = 0; j < parts.size(); ++j )
{ {
CStringArray asBits; CStringArray asBits;
split( parts[j], ",", asBits ); split( parts[j], ",", asBits );
if( !asBits[0].CompareNoCase("sort") ) if( !asBits[0].CompareNoCase("sort") )
so = StringToSongSortOrder( asBits[1] ); so = StringToSortOrder( asBits[1] );
} }
WheelItemData wid( TYPE_SORT, NULL, "", NULL, SORT_MENU_COLOR, so ); WheelItemData wid( TYPE_SORT, NULL, "", NULL, SORT_MENU_COLOR, so );
@@ -894,14 +911,14 @@ void MusicWheel::Update( float fDeltaTime )
SCREENMAN->PostMessageToTopScreen( SM_SortOrderChanged, 0 ); SCREENMAN->PostMessageToTopScreen( SM_SortOrderChanged, 0 );
SetOpenGroup(GetSectionNameFromSongAndSort( pPrevSelectedSong, GAMESTATE->m_SongSortOrder )); SetOpenGroup(GetSectionNameFromSongAndSort( pPrevSelectedSong, GAMESTATE->m_SortOrder ));
m_iSelection = 0; m_iSelection = 0;
// //
// Select the previously selected item // Select the previously selected item
// //
switch( GAMESTATE->m_SongSortOrder ) switch( GAMESTATE->m_SortOrder )
{ {
default: default:
// Look for the last selected song or course // Look for the last selected song or course
@@ -909,7 +926,7 @@ void MusicWheel::Update( float fDeltaTime )
break; break;
case SORT_SORT_MENU: case SORT_SORT_MENU:
case SORT_MODE_MENU: case SORT_MODE_MENU:
SelectSort( m_LastSongSortOrder ); SelectSort( m_LastSortOrder );
break; break;
} }
@@ -917,7 +934,7 @@ void MusicWheel::Update( float fDeltaTime )
// Change difficulty for sorts by meter // Change difficulty for sorts by meter
// //
Difficulty dc = DIFFICULTY_INVALID; Difficulty dc = DIFFICULTY_INVALID;
switch( GAMESTATE->m_SongSortOrder ) switch( GAMESTATE->m_SortOrder )
{ {
case SORT_EASY_METER: dc = DIFFICULTY_EASY; break; case SORT_EASY_METER: dc = DIFFICULTY_EASY; break;
case SORT_MEDIUM_METER: dc = DIFFICULTY_MEDIUM; break; case SORT_MEDIUM_METER: dc = DIFFICULTY_MEDIUM; break;
@@ -939,7 +956,7 @@ void MusicWheel::Update( float fDeltaTime )
* back on the default song. From the CVS commit, this looks like it * back on the default song. From the CVS commit, this looks like it
* was originally to fix ScreenOptionsMaster difficulty display, and * was originally to fix ScreenOptionsMaster difficulty display, and
* isn't needed anymore ... -glenn */ * isn't needed anymore ... -glenn */
/* switch( GAMESTATE->m_SongSortOrder ) /* switch( GAMESTATE->m_SortOrder )
{ {
case SORT_PREFERRED: case SORT_PREFERRED:
case SORT_GROUP: case SORT_GROUP:
@@ -1130,10 +1147,10 @@ void MusicWheel::ChangeMusic(int dist)
m_soundChangeMusic.Play(); m_soundChangeMusic.Play();
} }
bool MusicWheel::ChangeSort( SongSortOrder new_so ) // return true if change successful bool MusicWheel::ChangeSort( SortOrder new_so ) // return true if change successful
{ {
ASSERT( new_so < NUM_SORT_ORDERS ); ASSERT( new_so < NUM_SORT_ORDERS );
if( GAMESTATE->m_SongSortOrder == new_so ) if( GAMESTATE->m_SortOrder == new_so )
return false; return false;
switch( m_WheelState ) switch( m_WheelState )
@@ -1151,8 +1168,19 @@ bool MusicWheel::ChangeSort( SongSortOrder new_so ) // return true if change suc
TweenOffScreen(true); TweenOffScreen(true);
m_LastSongSortOrder = GAMESTATE->m_SongSortOrder; m_LastSortOrder = GAMESTATE->m_SortOrder;
GAMESTATE->m_SongSortOrder = new_so; GAMESTATE->m_SortOrder = new_so;
// Save the new sort to all profiles
// HACK: Don't save course sorts
if( IsSongSort(new_so) )
{
FOREACH_HumanPlayer( pn )
{
if( PROFILEMAN->IsUsingProfile(pn) )
PROFILEMAN->GetProfile(pn)->m_SortOrder = new_so;
}
}
m_WheelState = STATE_FLYING_OFF_BEFORE_NEXT_SORT; m_WheelState = STATE_FLYING_OFF_BEFORE_NEXT_SORT;
return true; return true;
@@ -1161,7 +1189,7 @@ bool MusicWheel::ChangeSort( SongSortOrder new_so ) // return true if change suc
bool MusicWheel::NextSort() // return true if change successful 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 sort menu or mode menu
switch( GAMESTATE->m_SongSortOrder ) switch( GAMESTATE->m_SortOrder )
{ {
case SORT_SORT_MENU: case SORT_SORT_MENU:
case SORT_MODE_MENU: case SORT_MODE_MENU:
@@ -1170,15 +1198,15 @@ bool MusicWheel::NextSort() // return true if change successful
// find the index of the current sort // find the index of the current sort
int cur = 0; int cur = 0;
while( cur < int(ARRAYSIZE(SortOrder)) && SortOrder[cur] != GAMESTATE->m_SongSortOrder ) while( cur < int(ARRAYSIZE(SORT_ORDERS)) && SORT_ORDERS[cur] != GAMESTATE->m_SortOrder )
++cur; ++cur;
// move to the next sort with wrapping // move to the next sort with wrapping
++cur; ++cur;
wrap( cur, ARRAYSIZE(SortOrder) ); wrap( cur, ARRAYSIZE(SORT_ORDERS) );
// apply new sort // apply new sort
SongSortOrder soNew = SortOrder[cur]; SortOrder soNew = SORT_ORDERS[cur];
return ChangeSort( soNew ); return ChangeSort( soNew );
} }
@@ -1239,8 +1267,8 @@ bool MusicWheel::Select() // return true if this selection ends the screen
return true; return true;
case TYPE_SORT: case TYPE_SORT:
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_SongSortOrder ); 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_SongSortOrder ); ChangeSort( m_CurWheelItemData[m_iSelection]->m_SortOrder );
return false; return false;
default: default:
ASSERT(0); ASSERT(0);
@@ -1254,7 +1282,7 @@ void MusicWheel::StartRoulette()
m_Moving = 1; m_Moving = 1;
m_TimeBeforeMovingBegins = 0; m_TimeBeforeMovingBegins = 0;
m_SpinSpeed = 1.0f/ROULETTE_SWITCH_SECONDS; m_SpinSpeed = 1.0f/ROULETTE_SWITCH_SECONDS;
SetOpenGroup("", SongSortOrder(SORT_ROULETTE)); SetOpenGroup("", SortOrder(SORT_ROULETTE));
} }
void MusicWheel::StartRandom() void MusicWheel::StartRandom()
@@ -1265,7 +1293,7 @@ void MusicWheel::StartRandom()
RandomGen rnd; RandomGen rnd;
random_shuffle( m_WheelItemDatas[SORT_ROULETTE].begin(), m_WheelItemDatas[SORT_ROULETTE].end(), rnd ); random_shuffle( m_WheelItemDatas[SORT_ROULETTE].begin(), m_WheelItemDatas[SORT_ROULETTE].end(), rnd );
SetOpenGroup("", SongSortOrder(SORT_ROULETTE)); SetOpenGroup("", SortOrder(SORT_ROULETTE));
m_Moving = -1; m_Moving = -1;
m_TimeBeforeMovingBegins = 0; m_TimeBeforeMovingBegins = 0;
@@ -1287,10 +1315,10 @@ void MusicWheel::StartRandom()
} }
} }
void MusicWheel::SetOpenGroup(CString group, SongSortOrder so) void MusicWheel::SetOpenGroup(CString group, SortOrder so)
{ {
if( so == SORT_INVALID) if( so == SORT_INVALID)
so = GAMESTATE->m_SongSortOrder; so = GAMESTATE->m_SortOrder;
m_sExpandedSectionName = group; m_sExpandedSectionName = group;
+6 -6
View File
@@ -54,7 +54,7 @@ public:
virtual void TweenOffScreen() { TweenOffScreen(false); } virtual void TweenOffScreen() { TweenOffScreen(false); }
void Move(int n); void Move(int n);
bool ChangeSort( SongSortOrder new_so ); // return true if change successful bool ChangeSort( SortOrder new_so ); // return true if change successful
bool NextSort(); // return true if change successful bool NextSort(); // return true if change successful
void StartRoulette(); void StartRoulette();
void StartRandom(); void StartRandom();
@@ -77,13 +77,13 @@ public:
void RebuildMusicWheelItems(); void RebuildMusicWheelItems();
protected: protected:
void GetSongList(vector<Song*> &arraySongs, SongSortOrder so, CString sPreferredGroup ); void GetSongList(vector<Song*> &arraySongs, SortOrder so, CString sPreferredGroup );
void BuildWheelItemDatas( vector<WheelItemData> &arrayWheelItems, SongSortOrder so ); void BuildWheelItemDatas( vector<WheelItemData> &arrayWheelItems, SortOrder so );
void SetOpenGroup(CString group, SongSortOrder so = SORT_INVALID); void SetOpenGroup(CString group, SortOrder so = SORT_INVALID);
bool SelectSongOrCourse(); bool SelectSongOrCourse();
bool SelectSong( Song *p ); bool SelectSong( Song *p );
bool SelectCourse( Course *p ); bool SelectCourse( Course *p );
bool SelectSort( SongSortOrder so ); bool SelectSort( SortOrder so );
void ChangeMusic(int dist); /* +1 or -1 */ void ChangeMusic(int dist); /* +1 or -1 */
ScrollBar m_ScrollBar; ScrollBar m_ScrollBar;
@@ -96,7 +96,7 @@ protected:
int m_iSelection; // index into m_CurWheelItemData int m_iSelection; // index into m_CurWheelItemData
CString m_sExpandedSectionName; CString m_sExpandedSectionName;
SongSortOrder m_LastSongSortOrder; SortOrder m_LastSortOrder;
int m_iSwitchesLeftInSpinDown; int m_iSwitchesLeftInSpinDown;
float m_fLockedWheelVelocity; float m_fLockedWheelVelocity;
+2 -2
View File
@@ -42,7 +42,7 @@
WheelItemData::WheelItemData( WheelItemType wit, Song* pSong, CString sSectionName, Course* pCourse, RageColor color, SongSortOrder so ) WheelItemData::WheelItemData( WheelItemType wit, Song* pSong, CString sSectionName, Course* pCourse, RageColor color, SortOrder so )
{ {
m_Type = wit; m_Type = wit;
m_pSong = pSong; m_pSong = pSong;
@@ -50,7 +50,7 @@ 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_SongSortOrder = so; m_SortOrder = so;
} }
+2 -2
View File
@@ -65,7 +65,7 @@ enum WheelItemType { TYPE_SECTION, TYPE_SONG, TYPE_ROULETTE, TYPE_RANDOM, TYPE_C
struct WheelItemData struct WheelItemData
{ {
WheelItemData() {} WheelItemData() {}
WheelItemData( WheelItemType wit, Song* pSong, CString sSectionName, Course* pCourse, RageColor color, SongSortOrder so ); WheelItemData( WheelItemType wit, Song* pSong, CString sSectionName, Course* pCourse, RageColor color, SortOrder so );
bool HasBanner() const; bool HasBanner() const;
CString GetBanner() const; CString GetBanner() const;
@@ -80,7 +80,7 @@ struct WheelItemData
// for TYPE_SORT // for TYPE_SORT
CString m_sLabel; CString m_sLabel;
ModeChoice m_Action; ModeChoice m_Action;
SongSortOrder m_SongSortOrder; SortOrder m_SortOrder;
}; };
#endif #endif
+1 -1
View File
@@ -344,7 +344,7 @@ void PaneDisplay::SetFromGameState()
PaneModes PaneDisplay::GetMode() const PaneModes PaneDisplay::GetMode() const
{ {
switch( GAMESTATE->m_SongSortOrder ) switch( GAMESTATE->m_SortOrder )
{ {
case SORT_ALL_COURSES: case SORT_ALL_COURSES:
case SORT_NONSTOP_COURSES: case SORT_NONSTOP_COURSES:
+5
View File
@@ -68,6 +68,7 @@ void Profile::InitGeneralData()
{ {
m_bUsingProfileDefaultModifiers = false; m_bUsingProfileDefaultModifiers = false;
m_sDefaultModifiers = ""; m_sDefaultModifiers = "";
m_SortOrder = SORT_INVALID;
m_iTotalPlays = 0; m_iTotalPlays = 0;
m_iTotalPlaySeconds = 0; m_iTotalPlaySeconds = 0;
m_iTotalGameplaySeconds = 0; m_iTotalGameplaySeconds = 0;
@@ -566,6 +567,7 @@ XNode* Profile::SaveGeneralDataCreateNode() const
pGeneralDataNode->AppendChild( "UsingProfileDefaultModifiers", m_bUsingProfileDefaultModifiers ); pGeneralDataNode->AppendChild( "UsingProfileDefaultModifiers", m_bUsingProfileDefaultModifiers );
pGeneralDataNode->AppendChild( "DefaultModifiers", m_sDefaultModifiers ); pGeneralDataNode->AppendChild( "DefaultModifiers", m_sDefaultModifiers );
pGeneralDataNode->AppendChild( "SortOrder", SortOrderToString(m_SortOrder) );
pGeneralDataNode->AppendChild( "TotalPlays", m_iTotalPlays ); pGeneralDataNode->AppendChild( "TotalPlays", m_iTotalPlays );
pGeneralDataNode->AppendChild( "TotalPlaySeconds", m_iTotalPlaySeconds ); pGeneralDataNode->AppendChild( "TotalPlaySeconds", m_iTotalPlaySeconds );
pGeneralDataNode->AppendChild( "TotalGameplaySeconds", m_iTotalGameplaySeconds ); pGeneralDataNode->AppendChild( "TotalGameplaySeconds", m_iTotalGameplaySeconds );
@@ -700,6 +702,9 @@ void Profile::LoadGeneralDataFromNode( const XNode* pNode )
pNode->GetChildValue( "UsingProfileDefaultModifiers", m_bUsingProfileDefaultModifiers ); pNode->GetChildValue( "UsingProfileDefaultModifiers", m_bUsingProfileDefaultModifiers );
pNode->GetChildValue( "DefaultModifiers", m_sDefaultModifiers ); pNode->GetChildValue( "DefaultModifiers", m_sDefaultModifiers );
CString sSortOrder;
pNode->GetChildValue( "SortOrder", sSortOrder );
m_SortOrder = StringToSortOrder( sSortOrder );
pNode->GetChildValue( "TotalPlays", m_iTotalPlays ); pNode->GetChildValue( "TotalPlays", m_iTotalPlays );
pNode->GetChildValue( "TotalPlaySeconds", m_iTotalPlaySeconds ); pNode->GetChildValue( "TotalPlaySeconds", m_iTotalPlaySeconds );
pNode->GetChildValue( "TotalGameplaySeconds", m_iTotalGameplaySeconds ); pNode->GetChildValue( "TotalGameplaySeconds", m_iTotalGameplaySeconds );
+1
View File
@@ -88,6 +88,7 @@ public:
// //
bool m_bUsingProfileDefaultModifiers; bool m_bUsingProfileDefaultModifiers;
CString m_sDefaultModifiers; CString m_sDefaultModifiers;
SortOrder m_SortOrder;
int m_iTotalPlays; int m_iTotalPlays;
int m_iTotalPlaySeconds; int m_iTotalPlaySeconds;
int m_iTotalGameplaySeconds; int m_iTotalGameplaySeconds;
+6 -6
View File
@@ -288,7 +288,7 @@ ScreenSelectMusic::ScreenSelectMusic( CString sClassName ) : Screen( sClassName
} }
m_MusicSortDisplay.SetName( "SortIcon" ); m_MusicSortDisplay.SetName( "SortIcon" );
m_MusicSortDisplay.Set( GAMESTATE->m_SongSortOrder ); m_MusicSortDisplay.Set( GAMESTATE->m_SortOrder );
SET_XY( m_MusicSortDisplay ); SET_XY( m_MusicSortDisplay );
this->AddChild( &m_MusicSortDisplay ); this->AddChild( &m_MusicSortDisplay );
@@ -499,7 +499,7 @@ void ScreenSelectMusic::TweenOnScreen()
TweenSongPartsOnScreen( true ); TweenSongPartsOnScreen( true );
TweenCoursePartsOnScreen( true ); TweenCoursePartsOnScreen( true );
switch( GAMESTATE->m_SongSortOrder ) switch( GAMESTATE->m_SortOrder )
{ {
case SORT_ALL_COURSES: case SORT_ALL_COURSES:
case SORT_NONSTOP_COURSES: case SORT_NONSTOP_COURSES:
@@ -552,7 +552,7 @@ void ScreenSelectMusic::TweenOnScreen()
void ScreenSelectMusic::TweenOffScreen() void ScreenSelectMusic::TweenOffScreen()
{ {
switch( GAMESTATE->m_SongSortOrder ) switch( GAMESTATE->m_SortOrder )
{ {
case SORT_ALL_COURSES: case SORT_ALL_COURSES:
case SORT_NONSTOP_COURSES: case SORT_NONSTOP_COURSES:
@@ -632,7 +632,7 @@ void ScreenSelectMusic::TweenScoreOnAndOffAfterChangeSort()
m_sprHighScoreFrame[p].Command( SCORE_FRAME_SORT_CHANGE_COMMAND(p) ); m_sprHighScoreFrame[p].Command( SCORE_FRAME_SORT_CHANGE_COMMAND(p) );
} }
switch( GAMESTATE->m_SongSortOrder ) switch( GAMESTATE->m_SortOrder )
{ {
case SORT_ALL_COURSES: case SORT_ALL_COURSES:
case SORT_NONSTOP_COURSES: case SORT_NONSTOP_COURSES:
@@ -1498,9 +1498,9 @@ void ScreenSelectMusic::UpdateOptionsDisplays()
void ScreenSelectMusic::SortOrderChanged() void ScreenSelectMusic::SortOrderChanged()
{ {
m_MusicSortDisplay.Set( GAMESTATE->m_SongSortOrder ); m_MusicSortDisplay.Set( GAMESTATE->m_SortOrder );
switch( GAMESTATE->m_SongSortOrder ) switch( GAMESTATE->m_SortOrder )
{ {
case SORT_ALL_COURSES: case SORT_ALL_COURSES:
case SORT_NONSTOP_COURSES: case SORT_NONSTOP_COURSES:
+2 -2
View File
@@ -1393,7 +1393,7 @@ void SortSongPointerArrayByNumPlays( vector<Song*> &arraySongPointers, const Pro
song_sort_val.clear(); song_sort_val.clear();
} }
CString GetSectionNameFromSongAndSort( const Song* pSong, SongSortOrder so ) CString GetSectionNameFromSongAndSort( const Song* pSong, SortOrder so )
{ {
if( pSong == NULL ) if( pSong == NULL )
return ""; return "";
@@ -1488,7 +1488,7 @@ CString GetSectionNameFromSongAndSort( const Song* pSong, SongSortOrder so )
} }
} }
void SortSongPointerArrayBySectionName( vector<Song*> &arraySongPointers, SongSortOrder so ) void SortSongPointerArrayBySectionName( vector<Song*> &arraySongPointers, SortOrder so )
{ {
for(unsigned i = 0; i < arraySongPointers.size(); ++i) for(unsigned i = 0; i < arraySongPointers.size(); ++i)
{ {
+2 -2
View File
@@ -215,8 +215,8 @@ void SortSongPointerArrayByGroupAndTitle( vector<Song*> &arraySongPointers );
void SortSongPointerArrayByNumPlays( vector<Song*> &arraySongPointers, ProfileSlot slot, bool bDescending ); void SortSongPointerArrayByNumPlays( vector<Song*> &arraySongPointers, ProfileSlot slot, bool bDescending );
void SortSongPointerArrayByNumPlays( vector<Song*> &arraySongPointers, const Profile* pProfile, bool bDescending ); void SortSongPointerArrayByNumPlays( vector<Song*> &arraySongPointers, const Profile* pProfile, bool bDescending );
void SortSongPointerArrayByMeter( vector<Song*> &arraySongPointers, Difficulty dc ); void SortSongPointerArrayByMeter( vector<Song*> &arraySongPointers, Difficulty dc );
CString GetSectionNameFromSongAndSort( const Song* pSong, SongSortOrder so ); CString GetSectionNameFromSongAndSort( const Song* pSong, SortOrder so );
void SortSongPointerArrayBySectionName( vector<Song*> &arraySongPointers, SongSortOrder so ); void SortSongPointerArrayBySectionName( vector<Song*> &arraySongPointers, SortOrder so );