[splittiming] Write out the #SPEEDS tag.

We're not incrementing the version due to 0.70
being the main one with Split Timing.

If requested, maybe a version 0.64 or something.
This commit is contained in:
Jason Felds
2011-05-15 15:24:36 -04:00
parent e2da0c4527
commit 3b684e8c20
5 changed files with 95 additions and 0 deletions
+42
View File
@@ -126,6 +126,48 @@ void SSCLoader::ProcessCombos( TimingData &out, const RString sParam )
}
}
void SSCLoader::ProcessSpeeds( TimingData &out, const RString sParam )
{
vector<RString> vs1;
split( sParam, ",", vs1 );
FOREACH_CONST( RString, vs1, s1 )
{
vector<RString> vs2;
split( *s1, "=", vs2 );
if( vs2[0] == 0 ) // First one always seems to have 2.
{
vs2.push_back(0);
}
if( vs2.size() < 3 )
{
LOG->UserLog( "Song file", "(UNKNOWN)", "has an speed change with %i values.", (int)vs2.size() );
continue;
}
const float fBeat = StringToFloat( vs2[0] );
SpeedSegment seg( fBeat, StringToFloat( vs2[1] ), StringToFloat( vs2[2] ));
if( fBeat < 0 )
{
LOG->UserLog( "Song file", "(UNKNOWN)", "has an speed change with beat %f.", fBeat );
continue;
}
if( seg.m_fWait < 0 )
{
LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid time signature change with beat %f, fWait %f.", fBeat, seg.m_fWait );
continue;
}
out.AddSpeedSegment( seg );
}
}
bool SSCLoader::LoadFromSSCFile( const RString &sPath, Song &out, bool bFromCache )
{
LOG->Trace( "Song::LoadFromSSCFile(%s)", sPath.c_str() );