diff --git a/stepmania/src/NoteData.cpp b/stepmania/src/NoteData.cpp index 3d060799f0..a756d4ff75 100644 --- a/stepmania/src/NoteData.cpp +++ b/stepmania/src/NoteData.cpp @@ -12,6 +12,7 @@ #include "NoteData.h" #include "RageUtil.h" +#include "RageLog.h" NoteData::NoteData() @@ -436,60 +437,57 @@ void NoteData::ConvertHoldNotesTo4s() } // -1 for iOriginalTracksToTakeFrom means no track -void NoteData::LoadTransformed( NoteData* pOriginal, int iNewNumTracks, const int iOriginalTrackToTakeFrom[] ) +void NoteData::LoadTransformed( const NoteData* pOriginal, int iNewNumTracks, const int iOriginalTrackToTakeFrom[] ) { // reset all notes Init(); - pOriginal->ConvertHoldNotesTo4s(); + NoteData Original; + Original.To4s( *pOriginal ); - Config(*pOriginal); + Config( Original ); m_iNumTracks = iNewNumTracks; // copy tracks for( int t=0; tm_iNumTracks ); - - + ASSERT( iOriginalTrack < Original.m_iNumTracks ); if( iOriginalTrack == -1 ) continue; - m_TapNotes[t] = pOriginal->m_TapNotes[iOriginalTrack]; + m_TapNotes[t] = Original.m_TapNotes[iOriginalTrack]; } - pOriginal->Convert4sToHoldNotes(); Convert4sToHoldNotes(); } -#include "RageLog.h" -void NoteData::LoadTransformedSlidingWindow( NoteData* pOriginal, int iNewNumTracks ) +void NoteData::LoadTransformedSlidingWindow( const NoteData* pOriginal, int iNewNumTracks ) { // reset all notes Init(); - pOriginal->ConvertHoldNotesTo4s(); + NoteData Original; + Original.To4s( *pOriginal ); + Config(*pOriginal); m_iNumTracks = iNewNumTracks; int iCurTrackOffset = 0; int iTrackOffsetMin = 0; - int iTrackOffsetMax = abs( iNewNumTracks - pOriginal->m_iNumTracks ); + int iTrackOffsetMax = abs( iNewNumTracks - Original.m_iNumTracks ); int bOffsetIncreasing = true; - int iLastRow = pOriginal->GetLastRow(); + int iLastRow = Original.GetLastRow(); for( int r=0; r<=iLastRow; ) { // copy notes in this measure - for( int t=0; tm_iNumTracks; t++ ) + for( int t=0; tSetTapNote(iNewTrack, r, pOriginal->GetTapNote(iOldTrack, r)); + this->SetTapNote(iNewTrack, r, Original.GetTapNote(iOldTrack, r)); } r++; @@ -499,10 +497,10 @@ void NoteData::LoadTransformedSlidingWindow( NoteData* pOriginal, int iNewNumTra bool bHoldCrossesThisMeasure = false; if( r ) - for( int t=0; t<=pOriginal->m_iNumTracks; t++ ) + for( int t=0; t<=Original.m_iNumTracks; t++ ) { - if( pOriginal->GetTapNote(t, r) == TAP_HOLD && - pOriginal->GetTapNote(t, r-1) == TAP_HOLD) + if( Original.GetTapNote(t, r) == TAP_HOLD && + Original.GetTapNote(t, r-1) == TAP_HOLD) { bHoldCrossesThisMeasure = true; break; @@ -520,7 +518,6 @@ void NoteData::LoadTransformedSlidingWindow( NoteData* pOriginal, int iNewNumTra } } - pOriginal->Convert4sToHoldNotes(); Convert4sToHoldNotes(); } diff --git a/stepmania/src/NoteData.h b/stepmania/src/NoteData.h index 043396c6b8..d7987ac781 100644 --- a/stepmania/src/NoteData.h +++ b/stepmania/src/NoteData.h @@ -124,8 +124,8 @@ public: int GetNumHoldNotes() const { return m_HoldNotes.size(); } // Transformations - void LoadTransformed( NoteData* pOriginal, int iNewNumTracks, const int iOriginalTrackToTakeFrom[] ); // -1 for iOriginalTracksToTakeFrom means no track - void LoadTransformedSlidingWindow( NoteData* pOriginal, int iNewNumTracks ); // used by autogen + void LoadTransformed( const NoteData* pOriginal, int iNewNumTracks, const int iOriginalTrackToTakeFrom[] ); // -1 for iOriginalTracksToTakeFrom means no track + void LoadTransformedSlidingWindow( const NoteData* pOriginal, int iNewNumTracks ); // used by autogen // Convert between HoldNote representation and '2' and '3' markers in TapNotes void Convert2sAnd3sToHoldNotes(); @@ -138,9 +138,6 @@ public: void To4s( const NoteData &out ); void From4s( const NoteData &out ); - // True if no notes in row that aren't true in the mask - bool RowPassesValidMask( int row, bool bValidMask[] ); - void EliminateAllButOneTap( int row ); };