diff --git a/src/NotesLoaderSM.cpp b/src/NotesLoaderSM.cpp index bdb8a332ea..859ff6951e 100644 --- a/src/NotesLoaderSM.cpp +++ b/src/NotesLoaderSM.cpp @@ -493,6 +493,35 @@ void SMLoader::ProcessSpeeds( TimingData &out, const RString line, const int row } } +void SMLoader::ProcessFakes( TimingData &out, const RString line, const int rowsPerBeat ) +{ + vector arrayFakeExpressions; + split( line, ",", arrayFakeExpressions ); + + for( unsigned b=0; b arrayFakeValues; + split( arrayFakeExpressions[b], "=", arrayFakeValues ); + // XXX: Hard to tell which file caused this. + if( arrayFakeValues.size() != 2 ) + { + LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid #FAKES value \"%s\" (must have exactly one '='), ignored.", + arrayFakeExpressions[b].c_str() ); + continue; + } + + const float fBeat = RowToBeat( arrayFakeValues[0], rowsPerBeat ); + const float fNewBeat = StringToFloat( arrayFakeValues[1] ); + + if(fNewBeat > 0) + out.AddFakeSegment( FakeSegment(fBeat, fNewBeat) ); + else + { + LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid Fake at beat %f, BPM %f.", fBeat, fNewBeat ); + } + } +} + bool SMLoader::LoadFromBGChangesString( BackgroundChange &change, const RString &sBGChangeExpression ) { vector aBGChangeValues; diff --git a/src/NotesLoaderSM.h b/src/NotesLoaderSM.h index e63e80acdb..0a85448022 100644 --- a/src/NotesLoaderSM.h +++ b/src/NotesLoaderSM.h @@ -91,6 +91,15 @@ struct SMLoader const RString line, const int rowsPerBeat = -1) {} + /** + * @brief Process the Fake Segments from the string. + * @param out the TimingData being modified. + * @param line the string in question. + * @param rowsPerBeat the number of rows per beat for this purpose. */ + virtual void ProcessFakes(TimingData & out, + const RString line, + const int rowsPerBeat = -1); + virtual void ProcessBGChanges( Song &out, const RString &sValueName, const RString &sPath, const RString &sParam ); void ProcessAttacks( Song &out, MsdFile::value_t sParams ); diff --git a/src/NotesLoaderSMA.cpp b/src/NotesLoaderSMA.cpp index f5b726626f..aa148933bc 100644 --- a/src/NotesLoaderSMA.cpp +++ b/src/NotesLoaderSMA.cpp @@ -142,35 +142,6 @@ void SMALoader::ProcessSpeeds( TimingData &out, const RString line, const int ro } } -void SMALoader::ProcessFakes( TimingData &out, const int iRowsPerBeat, const RString sParam ) -{ - vector arrayFakeExpressions; - split( sParam, ",", arrayFakeExpressions ); - - for( unsigned b=0; b arrayFakeValues; - split( arrayFakeExpressions[b], "=", arrayFakeValues ); - // XXX: Hard to tell which file caused this. - if( arrayFakeValues.size() != 2 ) - { - LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid #FAKES value \"%s\" (must have exactly one '='), ignored.", - arrayFakeExpressions[b].c_str() ); - continue; - } - - const float fBeat = RowToBeat( arrayFakeValues[0], iRowsPerBeat ); - const float fNewBeat = StringToFloat( arrayFakeValues[1] ); - - if(fNewBeat > 0) - out.AddFakeSegment( FakeSegment(fBeat, fNewBeat) ); - else - { - LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid Fake at beat %f, BPM %f.", fBeat, fNewBeat ); - } - } -} - bool SMALoader::LoadFromSMAFile( const RString &sPath, Song &out ) { LOG->Trace( "Song::LoadFromSMAFile(%s)", sPath.c_str() ); @@ -438,7 +409,7 @@ bool SMALoader::LoadFromSMAFile( const RString &sPath, Song &out ) { TimingData &timing = (state == SMA_GETTING_STEP_INFO ? pNewNotes->m_Timing : out.m_SongTiming); - ProcessFakes( timing, iRowsPerBeat, sParams[1] ); + ProcessFakes( timing, sParams[1], iRowsPerBeat ); } else if( sValueName=="METERTYPE" ) diff --git a/src/NotesLoaderSMA.h b/src/NotesLoaderSMA.h index a38a07752f..223b489571 100644 --- a/src/NotesLoaderSMA.h +++ b/src/NotesLoaderSMA.h @@ -31,7 +31,6 @@ struct SMALoader : public SMLoader void ProcessBeatsPerMeasure( TimingData &out, const RString sParam ); void ProcessMultipliers( TimingData &out, const int iRowsPerBeat, const RString sParam ); virtual void ProcessSpeeds( TimingData &out, const RString line, const int rowsPerBeat ); - void ProcessFakes( TimingData &out, const int iRowsPerBeat, const RString sParam ); }; #endif diff --git a/src/NotesLoaderSSC.cpp b/src/NotesLoaderSSC.cpp index 1482054bb9..f4bce60d21 100644 --- a/src/NotesLoaderSSC.cpp +++ b/src/NotesLoaderSSC.cpp @@ -149,35 +149,6 @@ void SSCLoader::ProcessScrolls( TimingData &out, const RString sParam ) } } -void SSCLoader::ProcessFakes( TimingData &out, const RString sParam ) -{ - vector arrayFakeExpressions; - split( sParam, ",", arrayFakeExpressions ); - - for( unsigned b=0; b arrayFakeValues; - split( arrayFakeExpressions[b], "=", arrayFakeValues ); - // XXX: Hard to tell which file caused this. - if( arrayFakeValues.size() != 2 ) - { - LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid #FAKES value \"%s\" (must have exactly one '='), ignored.", - arrayFakeExpressions[b].c_str() ); - continue; - } - - const float fBeat = StringToFloat( arrayFakeValues[0] ); - const float fNewBeat = StringToFloat( arrayFakeValues[1] ); - - if(fNewBeat > 0) - out.AddFakeSegment( FakeSegment(fBeat, fNewBeat) ); - else - { - LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid Fake at beat %f, BPM %f.", fBeat, fNewBeat ); - } - } -} - bool SSCLoader::LoadFromSSCFile( const RString &sPath, Song &out, bool bFromCache ) { diff --git a/src/NotesLoaderSSC.h b/src/NotesLoaderSSC.h index 29cf560458..88fc17842a 100644 --- a/src/NotesLoaderSSC.h +++ b/src/NotesLoaderSSC.h @@ -76,7 +76,6 @@ struct SSCLoader : public SMLoader void ProcessLabels( TimingData &, const RString ); virtual void ProcessCombos( TimingData &, const RString, const int = -1 ); void ProcessScrolls( TimingData &, const RString ); - void ProcessFakes( TimingData &, const RString ); }; #endif