support approach speeds for speed mods
This commit is contained in:
@@ -195,32 +195,12 @@ void PlayerOptions::FromString( CString sOptions, bool bWarnOnInvalid )
|
|||||||
CStringArray asBits;
|
CStringArray asBits;
|
||||||
split( sOptions, ",", asBits, true );
|
split( sOptions, ",", asBits, true );
|
||||||
|
|
||||||
for( unsigned i=0; i<asBits.size(); i++ )
|
FOREACH( CString, asBits, bit )
|
||||||
{
|
{
|
||||||
CString& sBit = asBits[i];
|
CString& sBit = *bit;
|
||||||
TrimLeft(sBit);
|
TrimLeft(sBit);
|
||||||
TrimRight(sBit);
|
TrimRight(sBit);
|
||||||
|
|
||||||
int i1;
|
|
||||||
|
|
||||||
Regex mult("^([0-9]+(\\.[0-9]+)?)x$");
|
|
||||||
vector<CString> matches;
|
|
||||||
if( mult.Compare(sBit, matches) )
|
|
||||||
{
|
|
||||||
m_fTimeSpacing = 0.0f;
|
|
||||||
char *p = NULL;
|
|
||||||
m_fScrollSpeed = strtof( matches[0], &p );
|
|
||||||
ASSERT( p != matches[0] );
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if( sscanf( sBit, "c%d", &i1 ) == 1 )
|
|
||||||
{
|
|
||||||
m_fTimeSpacing = 1.0f;
|
|
||||||
m_fScrollBPM = (float) i1;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* "drunk"
|
/* "drunk"
|
||||||
* "no drunk"
|
* "no drunk"
|
||||||
* "150% drunk"
|
* "150% drunk"
|
||||||
@@ -251,11 +231,27 @@ void PlayerOptions::FromString( CString sOptions, bool bWarnOnInvalid )
|
|||||||
sscanf( *s, "*%f", &speed );
|
sscanf( *s, "*%f", &speed );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
sBit = asParts.back();
|
sBit = asParts.back();
|
||||||
|
|
||||||
#define SET_FLOAT( opt ) { m_ ## opt = level; m_Speed ## opt = speed; }
|
#define SET_FLOAT( opt ) { m_ ## opt = level; m_Speed ## opt = speed; }
|
||||||
const bool on = (level > 0.5f);
|
const bool on = (level > 0.5f);
|
||||||
if( sBit == "clearall" ) Init();
|
|
||||||
|
Regex mult("^([0-9]+(\\.[0-9]+)?)x$");
|
||||||
|
vector<CString> matches;
|
||||||
|
if( mult.Compare(sBit, matches) )
|
||||||
|
{
|
||||||
|
char *p = NULL;
|
||||||
|
level = strtof( matches[0], &p );
|
||||||
|
ASSERT( p != matches[0] );
|
||||||
|
SET_FLOAT( fScrollSpeed )
|
||||||
|
}
|
||||||
|
else if( sscanf( sBit, "c%f", &level ) == 1 )
|
||||||
|
{
|
||||||
|
SET_FLOAT( fScrollBPM )
|
||||||
|
}
|
||||||
|
else if( sBit == "clearall" ) Init();
|
||||||
else if( sBit == "boost" ) SET_FLOAT( fAccels[ACCEL_BOOST] )
|
else if( sBit == "boost" ) SET_FLOAT( fAccels[ACCEL_BOOST] )
|
||||||
else if( sBit == "brake" || sBit == "land" ) SET_FLOAT( fAccels[ACCEL_BRAKE] )
|
else if( sBit == "brake" || sBit == "land" ) SET_FLOAT( fAccels[ACCEL_BRAKE] )
|
||||||
else if( sBit == "wave" ) SET_FLOAT( fAccels[ACCEL_WAVE] )
|
else if( sBit == "wave" ) SET_FLOAT( fAccels[ACCEL_WAVE] )
|
||||||
|
|||||||
Reference in New Issue
Block a user