Revert AdjustSync to 69c7cfa.

This needs more help and care than I am capable of at this point.
For now, AutoSync may not work as intended.
This commit is contained in:
Jason Felds
2011-05-19 18:56:23 -04:00
parent fdd23c1526
commit 8cf6286207
2 changed files with 11 additions and 66 deletions
+10 -64
View File
@@ -35,7 +35,6 @@
#include "global.h"
#include "Song.h"
#include "Steps.h"
#include "AdjustSync.h"
#include "GameState.h"
#include "LocalizedString.h"
@@ -43,7 +42,7 @@
#include "ScreenManager.h"
#include "Foreach.h"
vector<TimingData *> AdjustSync::s_vTimingDataOriginal;
TimingData *AdjustSync::s_pTimingDataOriginal = NULL;
float AdjustSync::s_fGlobalOffsetSecondsOriginal = 0.0f;
int AdjustSync::s_iAutosyncOffsetSample = 0;
float AdjustSync::s_fAutosyncOffset[AdjustSync::OFFSET_SAMPLE_COUNT];
@@ -55,31 +54,13 @@ int AdjustSync::s_iStepsFiltered = 0;
void AdjustSync::ResetOriginalSyncData()
{
if( s_vTimingDataOriginal.empty() )
{
s_vTimingDataOriginal.push_back(new TimingData);
s_vTimingDataOriginal.resize(1);
}
else if( s_vTimingDataOriginal[0] == NULL )
{
s_vTimingDataOriginal[0] = new TimingData;
s_vTimingDataOriginal.resize(1);
}
if( s_pTimingDataOriginal == NULL )
s_pTimingDataOriginal = new TimingData;
const vector<Steps*>& vpSteps = GAMESTATE->m_pCurSong->GetAllSteps();
if( GAMESTATE->m_pCurSong )
{
s_vTimingDataOriginal.push_back(&GAMESTATE->m_pCurSong->m_SongTiming);
FOREACH( Steps*, const_cast<vector<Steps*>&>(vpSteps), s )
{
s_vTimingDataOriginal.push_back(&(*s)->m_Timing);
}
}
*s_pTimingDataOriginal = GAMESTATE->m_pCurSong->m_SongTiming;
else
{
s_vTimingDataOriginal.push_back(new TimingData);
// No Steps here to even grab.
}
*s_pTimingDataOriginal = TimingData();
s_fGlobalOffsetSecondsOriginal = PREFSMAN->m_fGlobalOffsetSeconds;
ResetAutosync();
@@ -89,7 +70,6 @@ void AdjustSync::ResetAutosync()
{
s_iAutosyncOffsetSample = 0;
s_vAutosyncTempoData.clear();
// TODO: Add a call to s_vTimingDataOriginal?
}
bool AdjustSync::IsSyncDataChanged()
@@ -107,7 +87,7 @@ void AdjustSync::SaveSyncChanges()
{
if( GAMESTATE->IsCourseMode() )
return;
if( GAMESTATE->m_pCurSong && *s_vTimingDataOriginal[0] != GAMESTATE->m_pCurSong->m_SongTiming )
if( GAMESTATE->m_pCurSong && *s_pTimingDataOriginal != GAMESTATE->m_pCurSong->m_SongTiming )
{
if( GAMESTATE->IsEditing() )
{
@@ -130,15 +110,7 @@ void AdjustSync::RevertSyncChanges()
if( GAMESTATE->IsCourseMode() )
return;
PREFSMAN->m_fGlobalOffsetSeconds.Set( s_fGlobalOffsetSecondsOriginal );
GAMESTATE->m_pCurSong->m_SongTiming = *s_vTimingDataOriginal[0];
const vector<Steps*>& vpSteps = GAMESTATE->m_pCurSong->GetAllSteps();
unsigned index = 1;
FOREACH( Steps*, const_cast<vector<Steps*>&>(vpSteps), s )
{
(*s)->m_Timing = *s_vTimingDataOriginal[index];
index++;
}
GAMESTATE->m_pCurSong->m_SongTiming = *s_pTimingDataOriginal;
ResetOriginalSyncData();
s_fStandardDeviation = 0.0f;
s_fAverageError = 0.0f;
@@ -214,15 +186,8 @@ void AdjustSync::AutosyncOffset()
switch( GAMESTATE->m_SongOptions.GetCurrent().m_AutosyncType )
{
case SongOptions::AUTOSYNC_SONG:
{
GAMESTATE->m_pCurSong->m_SongTiming.m_fBeat0OffsetInSeconds += mean;
const vector<Steps*>& vpSteps = GAMESTATE->m_pCurSong->GetAllSteps();
FOREACH( Steps*, const_cast<vector<Steps*>&>(vpSteps), s )
{
(*s)->m_Timing.m_fBeat0OffsetInSeconds += mean;
}
break;
}
case SongOptions::AUTOSYNC_MACHINE:
PREFSMAN->m_fGlobalOffsetSeconds.Set( PREFSMAN->m_fGlobalOffsetSeconds + mean );
break;
@@ -250,8 +215,6 @@ void AdjustSync::AutosyncTempo()
s_vAutosyncTempoData.clear();
return;
}
// TODO: Make this work with Steps timing.
if( s_fAverageError < ERROR_TOO_HIGH )
{
@@ -279,23 +242,6 @@ void AdjustSync::AutosyncTempo()
// change to the stops.
FOREACH( StopSegment, GAMESTATE->m_pCurSong->m_SongTiming.m_StopSegments, i )
i->m_fStopSeconds *= 1.0f - fSlope;
// Now the fun part: doing the same as above, but for each step.
const vector<Steps*>& vpSteps = GAMESTATE->m_pCurSong->GetAllSteps();
FOREACH( Steps*, const_cast<vector<Steps*>&>(vpSteps), s )
{
TimingData &timing = (*s)->m_Timing;
timing.m_fBeat0OffsetInSeconds += fIntercept;
FOREACH( BPMSegment, timing.m_BPMSegments, i )
{
i->SetBPM( i->GetBPM() * fScaleBPM );
}
FOREACH( StopSegment, timing.m_StopSegments, i )
{
i->m_fStopSeconds *= 1.0f - fSlope;
}
}
SCREENMAN->SystemMessage( AUTOSYNC_CORRECTION_APPLIED.GetValue() );
}
@@ -349,7 +295,7 @@ void AdjustSync::GetSyncChangeTextSong( vector<RString> &vsAddTo )
unsigned int iOriginalSize = vsAddTo.size();
{
float fOld = Quantize( AdjustSync::s_vTimingDataOriginal[0]->m_fBeat0OffsetInSeconds, 0.001f );
float fOld = Quantize( AdjustSync::s_pTimingDataOriginal->m_fBeat0OffsetInSeconds, 0.001f );
float fNew = Quantize( GAMESTATE->m_pCurSong->m_SongTiming.m_fBeat0OffsetInSeconds, 0.001f );
float fDelta = fNew - fOld;
@@ -365,7 +311,7 @@ void AdjustSync::GetSyncChangeTextSong( vector<RString> &vsAddTo )
for( unsigned i=0; i<GAMESTATE->m_pCurSong->m_SongTiming.m_BPMSegments.size(); i++ )
{
float fOld = Quantize( AdjustSync::s_vTimingDataOriginal[0]->m_BPMSegments[i].GetBPM(), 0.001f );
float fOld = Quantize( AdjustSync::s_pTimingDataOriginal->m_BPMSegments[i].GetBPM(), 0.001f );
float fNew = Quantize( GAMESTATE->m_pCurSong->m_SongTiming.m_BPMSegments[i].GetBPM(), 0.001f );
float fDelta = fNew - fOld;
@@ -386,7 +332,7 @@ void AdjustSync::GetSyncChangeTextSong( vector<RString> &vsAddTo )
for( unsigned i=0; i<GAMESTATE->m_pCurSong->m_SongTiming.m_StopSegments.size(); i++ )
{
float fOld = Quantize( AdjustSync::s_vTimingDataOriginal[0]->m_StopSegments[i].m_fStopSeconds, 0.001f );
float fOld = Quantize( AdjustSync::s_pTimingDataOriginal->m_StopSegments[i].m_fStopSeconds, 0.001f );
float fNew = Quantize( GAMESTATE->m_pCurSong->m_SongTiming.m_StopSegments[i].m_fStopSeconds, 0.001f );
float fDelta = fNew - fOld;