diff --git a/stepmania/src/ActiveAttackList.cpp b/stepmania/src/ActiveAttackList.cpp index 5aadaa6b0a..c9d0a2ce49 100644 --- a/stepmania/src/ActiveAttackList.cpp +++ b/stepmania/src/ActiveAttackList.cpp @@ -56,33 +56,7 @@ void ActiveAttackList::Update( float fDelta ) { CString& sMod = asMods[j]; - // Strip out the approach speed token - if( !sMod.empty() && sMod[0]=='*' ) - { - int iPos = sMod.Find(' '); - if( iPos != -1 ) - sMod.erase( sMod.begin(), sMod.begin()+iPos+1 ); - } - - // Strip out "100% " -#define PERCENT_100 "100% " - if( !strncmp( sMod, PERCENT_100, sizeof(PERCENT_100)) ) - { - sMod.erase( sMod.begin(), sMod.begin()+sizeof(PERCENT_100) ); - } - - // Capitalize all tokens - CStringArray asTokens; - split( sMod, " ", asTokens ); - for( unsigned i=0; iHasMetric( "OptionNames", asTokens.back() ) ) - asTokens.back() = THEME->GetMetric( "OptionNames", asTokens.back() ); - - sMod = join( " ", asTokens ); + sMod = PlayerOptions::ThemeMod( sMod ); if( s.empty() ) s = sMod; diff --git a/stepmania/src/PlayerOptions.cpp b/stepmania/src/PlayerOptions.cpp index 28d6fa8aa2..06c6fc9913 100644 --- a/stepmania/src/PlayerOptions.cpp +++ b/stepmania/src/PlayerOptions.cpp @@ -20,6 +20,7 @@ #include "song.h" #include "Course.h" #include "Steps.h" +#include "ThemeManager.h" #define ONE( arr ) { for( unsigned Z = 0; Z < ARRAYSIZE(arr); ++Z ) arr[Z]=1.0f; } @@ -583,3 +584,49 @@ bool PlayerOptions::IsEasierForCourse( Course* pCourse, StepsType st, CourseDiff } return false; } + +CString PlayerOptions::ThemeMod( CString sOneMod ) +{ + // Strip out the approach speed token + if( !sOneMod.empty() && sOneMod[0]=='*' ) + { + int iPos = sOneMod.Find(' '); + if( iPos != -1 ) + sOneMod.erase( sOneMod.begin(), sOneMod.begin()+iPos+1 ); + } + + // Strip out "100% " +#define PERCENT_100 "100% " + if( !strncmp( sOneMod, PERCENT_100, sizeof(PERCENT_100)) ) + { + sOneMod.erase( sOneMod.begin(), sOneMod.begin()+sizeof(PERCENT_100) ); + } + + // Capitalize all tokens + CStringArray asTokens; + split( sOneMod, " ", asTokens ); + for( unsigned i=0; iHasMetric( "OptionNames", asTokens.back() ) ) + asTokens.back() = THEME->GetMetric( "OptionNames", asTokens.back() ); + + return join( " ", asTokens ); +} + +CString PlayerOptions::GetThemedString() const +{ + CString sMods = GetString(); + + CStringArray asMods; + split( sMods, ", ", asMods ); + CStringArray asThemedMods; + for( unsigned j=0; j