LoadTransformed, LoadTransformedSlidingWindow const fix.

This commit is contained in:
Glenn Maynard
2003-10-04 04:14:30 +00:00
parent 45fcce6e07
commit 5f61050ce8
2 changed files with 20 additions and 26 deletions
+18 -21
View File
@@ -12,6 +12,7 @@
#include "NoteData.h" #include "NoteData.h"
#include "RageUtil.h" #include "RageUtil.h"
#include "RageLog.h"
NoteData::NoteData() NoteData::NoteData()
@@ -436,60 +437,57 @@ void NoteData::ConvertHoldNotesTo4s()
} }
// -1 for iOriginalTracksToTakeFrom means no track // -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 // reset all notes
Init(); Init();
pOriginal->ConvertHoldNotesTo4s(); NoteData Original;
Original.To4s( *pOriginal );
Config(*pOriginal); Config( Original );
m_iNumTracks = iNewNumTracks; m_iNumTracks = iNewNumTracks;
// copy tracks // copy tracks
for( int t=0; t<m_iNumTracks; t++ ) for( int t=0; t<m_iNumTracks; t++ )
{ {
const int iOriginalTrack = iOriginalTrackToTakeFrom[t]; const int iOriginalTrack = iOriginalTrackToTakeFrom[t];
ASSERT( iOriginalTrack < Original.m_iNumTracks );
ASSERT( iOriginalTrack < pOriginal->m_iNumTracks );
if( iOriginalTrack == -1 ) if( iOriginalTrack == -1 )
continue; continue;
m_TapNotes[t] = pOriginal->m_TapNotes[iOriginalTrack]; m_TapNotes[t] = Original.m_TapNotes[iOriginalTrack];
} }
pOriginal->Convert4sToHoldNotes();
Convert4sToHoldNotes(); Convert4sToHoldNotes();
} }
#include "RageLog.h"
void NoteData::LoadTransformedSlidingWindow( NoteData* pOriginal, int iNewNumTracks ) void NoteData::LoadTransformedSlidingWindow( const NoteData* pOriginal, int iNewNumTracks )
{ {
// reset all notes // reset all notes
Init(); Init();
pOriginal->ConvertHoldNotesTo4s(); NoteData Original;
Original.To4s( *pOriginal );
Config(*pOriginal); Config(*pOriginal);
m_iNumTracks = iNewNumTracks; m_iNumTracks = iNewNumTracks;
int iCurTrackOffset = 0; int iCurTrackOffset = 0;
int iTrackOffsetMin = 0; int iTrackOffsetMin = 0;
int iTrackOffsetMax = abs( iNewNumTracks - pOriginal->m_iNumTracks ); int iTrackOffsetMax = abs( iNewNumTracks - Original.m_iNumTracks );
int bOffsetIncreasing = true; int bOffsetIncreasing = true;
int iLastRow = pOriginal->GetLastRow(); int iLastRow = Original.GetLastRow();
for( int r=0; r<=iLastRow; ) for( int r=0; r<=iLastRow; )
{ {
// copy notes in this measure // copy notes in this measure
for( int t=0; t<pOriginal->m_iNumTracks; t++ ) for( int t=0; t<Original.m_iNumTracks; t++ )
{ {
int iOldTrack = t; int iOldTrack = t;
int iNewTrack = (iOldTrack + iCurTrackOffset) % iNewNumTracks; int iNewTrack = (iOldTrack + iCurTrackOffset) % iNewNumTracks;
this->SetTapNote(iNewTrack, r, pOriginal->GetTapNote(iOldTrack, r)); this->SetTapNote(iNewTrack, r, Original.GetTapNote(iOldTrack, r));
} }
r++; r++;
@@ -499,10 +497,10 @@ void NoteData::LoadTransformedSlidingWindow( NoteData* pOriginal, int iNewNumTra
bool bHoldCrossesThisMeasure = false; bool bHoldCrossesThisMeasure = false;
if( r ) 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 && if( Original.GetTapNote(t, r) == TAP_HOLD &&
pOriginal->GetTapNote(t, r-1) == TAP_HOLD) Original.GetTapNote(t, r-1) == TAP_HOLD)
{ {
bHoldCrossesThisMeasure = true; bHoldCrossesThisMeasure = true;
break; break;
@@ -520,7 +518,6 @@ void NoteData::LoadTransformedSlidingWindow( NoteData* pOriginal, int iNewNumTra
} }
} }
pOriginal->Convert4sToHoldNotes();
Convert4sToHoldNotes(); Convert4sToHoldNotes();
} }
+2 -5
View File
@@ -124,8 +124,8 @@ public:
int GetNumHoldNotes() const { return m_HoldNotes.size(); } int GetNumHoldNotes() const { return m_HoldNotes.size(); }
// Transformations // Transformations
void LoadTransformed( NoteData* pOriginal, int iNewNumTracks, const int iOriginalTrackToTakeFrom[] ); // -1 for iOriginalTracksToTakeFrom means no track void LoadTransformed( const NoteData* pOriginal, int iNewNumTracks, const int iOriginalTrackToTakeFrom[] ); // -1 for iOriginalTracksToTakeFrom means no track
void LoadTransformedSlidingWindow( NoteData* pOriginal, int iNewNumTracks ); // used by autogen void LoadTransformedSlidingWindow( const NoteData* pOriginal, int iNewNumTracks ); // used by autogen
// Convert between HoldNote representation and '2' and '3' markers in TapNotes // Convert between HoldNote representation and '2' and '3' markers in TapNotes
void Convert2sAnd3sToHoldNotes(); void Convert2sAnd3sToHoldNotes();
@@ -138,9 +138,6 @@ public:
void To4s( const NoteData &out ); void To4s( const NoteData &out );
void From4s( 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 ); void EliminateAllButOneTap( int row );
}; };