Cleanups and loggings and endings, oh my!

This commit is contained in:
Jason Felds
2006-07-22 16:09:47 +00:00
parent c690814aad
commit ba79c0bc88
+29 -22
View File
@@ -90,7 +90,7 @@ bool KSFLoader::LoadFromKSFFile( const RString &sPath, Steps &out, const Song &s
} }
else if( 0==stricmp(sValueName,"STEP") ) else if( 0==stricmp(sValueName,"STEP") )
{ {
continue; //This was handled in LoadGlobalData: no need to repeat. continue; // This was handled in LoadGlobalData: no need to repeat.
} }
else if( 0==stricmp(sValueName,"DIFFICULTY") ) else if( 0==stricmp(sValueName,"DIFFICULTY") )
{ {
@@ -116,22 +116,23 @@ bool KSFLoader::LoadFromKSFFile( const RString &sPath, Steps &out, const Song &s
sFName.find("crazydouble") != string::npos ) sFName.find("crazydouble") != string::npos )
{ {
out.SetDifficulty( DIFFICULTY_HARD ); out.SetDifficulty( DIFFICULTY_HARD );
if( !out.GetMeter() ) out.SetMeter( 8 ); if( !out.GetMeter() ) out.SetMeter( 14 ); // Set the meters to the Pump scale, not DDR.
} }
else if( sFName.find("hard") != string::npos || sFName.find("freestyle") != string::npos ) else if( sFName.find("hard") != string::npos || sFName.find("freestyle") != string::npos ||
sFName.find("double") != string::npos )
{ {
out.SetDifficulty( DIFFICULTY_MEDIUM ); out.SetDifficulty( DIFFICULTY_MEDIUM );
if( !out.GetMeter() ) out.SetMeter( 5 ); if( !out.GetMeter() ) out.SetMeter( 8 );
} }
else if( sFName.find("easy") != string::npos || sFName.find("normal") != string::npos ) else if( sFName.find("easy") != string::npos || sFName.find("normal") != string::npos )
{ {
out.SetDifficulty( DIFFICULTY_EASY ); out.SetDifficulty( DIFFICULTY_EASY );
if( !out.GetMeter() ) out.SetMeter( 2 ); if( !out.GetMeter() ) out.SetMeter( 4 );
} }
else else
{ {
out.SetDifficulty( DIFFICULTY_MEDIUM ); out.SetDifficulty( DIFFICULTY_MEDIUM );
if( !out.GetMeter() ) out.SetMeter( 5 ); if( !out.GetMeter() ) out.SetMeter( 8 );
} }
out.m_StepsType = STEPS_TYPE_PUMP_SINGLE; out.m_StepsType = STEPS_TYPE_PUMP_SINGLE;
@@ -156,9 +157,10 @@ bool KSFLoader::LoadFromKSFFile( const RString &sPath, Steps &out, const Song &s
default: FAIL_M( ssprintf("%i", out.m_StepsType) ); default: FAIL_M( ssprintf("%i", out.m_StepsType) );
} }
int t = 0;
int iHoldStartRow[13]; int iHoldStartRow[13];
for( int y=0; y<13; y++ ) for( t=0; t<13; t++ )
iHoldStartRow[y] = -1; iHoldStartRow[t] = -1;
m_bTickChangeNeeded = false; m_bTickChangeNeeded = false;
int newTick = -1; int newTick = -1;
@@ -173,17 +175,27 @@ bool KSFLoader::LoadFromKSFFile( const RString &sPath, Steps &out, const Song &s
continue; // skip continue; // skip
// All 2s indicates the end of the song. // All 2s indicates the end of the song.
/* In retrospect, we shouldn't break right away; there could be a hold
* that ends right before the terminal row. Perhaps that will be
* added in the future. */
if( sRowString == "2222222222222" ) if( sRowString == "2222222222222" )
{
// Finish any holds that didn't get...well, finished.
for( t=0; t < notedata.GetNumTracks(); t++ )
{
if( iHoldStartRow[t] != -1 ) // this ends the hold
{
if( iHoldStartRow[t] == BeatToNoteRow(prevBeat) )
notedata.SetTapNote( t, iHoldStartRow[t], TAP_ORIGINAL_TAP );
else
notedata.AddHoldNote( t, iHoldStartRow[t], BeatToNoteRow(prevBeat) , TAP_ORIGINAL_HOLD_HEAD );
}
}
break; break;
}
if( sRowString.size() != 13 ) if( sRowString.size() != 13 )
{ {
if (m_bKIUCompliant) if (m_bKIUCompliant)
{ {
LOG->Warn("File %s had Direct Move syntax (\"%s\") which can't be in KIU complient files.", LOG->Warn("File %s had illegal syntax (\"%s\") which can't be in KIU complient files.",
sPath.c_str(), sRowString.c_str()); sPath.c_str(), sRowString.c_str());
return false; return false;
} }
@@ -218,15 +230,13 @@ bool KSFLoader::LoadFromKSFFile( const RString &sPath, Steps &out, const Song &s
m_bTickChangeNeeded = false; m_bTickChangeNeeded = false;
} }
for( int t=0; t < notedata.GetNumTracks(); t++ ) for( t=0; t < notedata.GetNumTracks(); t++ )
{ {
if( sRowString[t] == '4' ) if( sRowString[t] == '4' )
{ {
/* Remember when each hold starts; ignore the middle. */ /* Remember when each hold starts; ignore the middle. */
if( iHoldStartRow[t] == -1 ) if( iHoldStartRow[t] == -1 )
iHoldStartRow[t] = BeatToNoteRow(m_bCurBeat); iHoldStartRow[t] = BeatToNoteRow(m_bCurBeat);
//iHoldStartRow[t] = row;
continue; continue;
} }
@@ -251,12 +261,10 @@ bool KSFLoader::LoadFromKSFFile( const RString &sPath, Steps &out, const Song &s
return false; return false;
} }
//notedata.SetTapNote(t, row, tap); notedata.SetTapNote(t, BeatToNoteRow(m_bCurBeat), tap);
notedata.SetTapNote(t, BeatToNoteRow(m_bCurBeat), tap); // More accurate for taps.
} }
prevBeat = m_bCurBeat; prevBeat = m_bCurBeat;
m_bCurBeat = prevBeat + 1.0f / m_bTickCount; m_bCurBeat = prevBeat + 1.0f / m_bTickCount;
} }
/* We need to remove holes where the BPM increases. */ /* We need to remove holes where the BPM increases. */
@@ -378,7 +386,7 @@ bool KSFLoader::LoadGlobalData( const RString &sPath, Song &out )
} }
else if ( 0==stricmp(sValueName,"TICKCOUNT") ) else if ( 0==stricmp(sValueName,"TICKCOUNT") )
{ {
/* TICKCOUNT is will be used if there are DM complient BPM changes and stops. /* TICKCOUNT is will be used below if there are DM complient BPM changes and stops.
* It will be called again in LoadFromKSFFile for the actual steps. */ * It will be called again in LoadFromKSFFile for the actual steps. */
m_bTickCount = atoi( sParams[1] ); m_bTickCount = atoi( sParams[1] );
m_bTickCount = m_bTickCount > 0 ? m_bTickCount : 2; m_bTickCount = m_bTickCount > 0 ? m_bTickCount : 2;
@@ -495,18 +503,17 @@ bool KSFLoader::LoadGlobalData( const RString &sPath, Song &out )
} }
if (m_bBPMChangeNeeded) if (m_bBPMChangeNeeded)
{ {
LOG->Trace( "Adding tempo change of %f BPM at beat %f", speedToChange, m_bCurBeat);
out.AddBPMSegment(BPMSegment(BeatToNoteRow(m_bCurBeat),speedToChange)); out.AddBPMSegment(BPMSegment(BeatToNoteRow(m_bCurBeat),speedToChange));
m_bBPMChangeNeeded = false; m_bBPMChangeNeeded = false;
} }
if (m_bBPMStopNeeded) if (m_bBPMStopNeeded)
{ {
LOG->Trace( "Adding tempo freeze of %f seconds at beat %f", timeToStop, m_bCurBeat);
out.AddStopSegment(StopSegment(BeatToNoteRow(m_bCurBeat),timeToStop)); out.AddStopSegment(StopSegment(BeatToNoteRow(m_bCurBeat),timeToStop));
m_bBPMStopNeeded = false; m_bBPMStopNeeded = false;
} }
m_bCurBeat += 1.0f / m_bTickCount; m_bCurBeat += 1.0f / m_bTickCount;
} }
} }