From 848d48d9ea6a8e5e9cefb0ba394d8ce4f213673b Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Thu, 14 Jul 2011 13:10:02 -0400 Subject: [PATCH] [timing] More progress. Need a lunch break. --- src/AdjustSync.cpp | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/src/AdjustSync.cpp b/src/AdjustSync.cpp index bc0425293d..7e7ec96247 100644 --- a/src/AdjustSync.cpp +++ b/src/AdjustSync.cpp @@ -266,14 +266,23 @@ void AdjustSync::AutosyncTempo() GAMESTATE->m_pCurSong->m_SongTiming.m_fBeat0OffsetInSeconds += fIntercept; const float fScaleBPM = 1.0f/(1.0f - fSlope); - FOREACH( BPMSegment, GAMESTATE->m_pCurSong->m_SongTiming.m_BPMSegments, i ) - i->SetBPM( i->GetBPM() * fScaleBPM ); + TimingData &timing = GAMESTATE->m_pCurSong->m_SongTiming; + vector &bpms = timing.allTimingSegments[SEGMENT_BPM]; + for (unsigned i = 0; i < bpms.size(); i++) + { + BPMSegment *b = static_cast(bpms[i]); + b->SetBPM(b->GetBPM() * fScaleBPM); + } /* We assume that the stops were measured as a number of beats. * Therefore, if we change the bpms, we need to make a similar * change to the stops. */ - FOREACH( StopSegment, GAMESTATE->m_pCurSong->m_SongTiming.m_StopSegments, i ) - i->SetPause(i->GetPause() * (1.0f - fSlope)); + vector &stops = timing.allTimingSegments[SEGMENT_STOP_DELAY]; + for (unsigned i = 0; i < stops.size(); i++) + { + StopSegment *s = static_cast(stops[i]); + s->SetPause(s->GetPause() * (1.0f - fSlope)); + } SCREENMAN->SystemMessage( AUTOSYNC_CORRECTION_APPLIED.GetValue() ); } @@ -343,10 +352,14 @@ void AdjustSync::GetSyncChangeTextSong( vector &vsAddTo ) } } - for( unsigned i=0; i< testing.m_BPMSegments.size(); i++ ) + vector &bpmTest = testing.allTimingSegments[SEGMENT_BPM]; + vector &bpmOrig = original.allTimingSegments[SEGMENT_BPM]; + for( unsigned i=0; i< bpmTest.size(); i++ ) { - float fOld = Quantize( original.m_BPMSegments[i].GetBPM(), 0.001f ); - float fNew = Quantize( testing.m_BPMSegments[i].GetBPM(), 0.001f ); + BPMSegment *bT = static_cast(bpmTest[i]); + BPMSegment *bO = static_cast(bpmOrig[i]); + float fOld = Quantize( bO->GetBPM(), 0.001f ); + float fNew = Quantize( bT->GetBPM(), 0.001f ); float fDelta = fNew - fOld; if( fabsf(fDelta) > 0.0001f ) @@ -364,10 +377,14 @@ void AdjustSync::GetSyncChangeTextSong( vector &vsAddTo ) } } - for( unsigned i=0; i< testing.m_StopSegments.size(); i++ ) + vector &stopTest = testing.allTimingSegments[SEGMENT_STOP_DELAY]; + vector &stopOrig = original.allTimingSegments[SEGMENT_STOP_DELAY]; + for( unsigned i=0; i< stopTest.size(); i++ ) { - float fOld = Quantize( original.m_StopSegments[i].GetPause(), 0.001f ); - float fNew = Quantize( testing.m_StopSegments[i].GetPause(), 0.001f ); + StopSegment *sT = static_cast(stopTest[i]); + StopSegment *sO = static_cast(stopOrig[i]); + float fOld = Quantize( sO->GetPause(), 0.001f ); + float fNew = Quantize( sT->GetPause(), 0.001f ); float fDelta = fNew - fOld; if( fabsf(fDelta) > 0.0001f )