From 14bc4ae9f69117ce0234ba5be83759dc8464db82 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Sat, 22 Jan 2005 20:22:12 +0000 Subject: [PATCH] reduce use of 4s --- stepmania/src/NoteData.cpp | 55 ++++++++++++++++++++++++---------- stepmania/src/NoteData.h | 2 +- stepmania/src/NoteDataUtil.cpp | 10 +++---- 3 files changed, 44 insertions(+), 23 deletions(-) diff --git a/stepmania/src/NoteData.cpp b/stepmania/src/NoteData.cpp index 721659a7d2..053200aaf5 100644 --- a/stepmania/src/NoteData.cpp +++ b/stepmania/src/NoteData.cpp @@ -267,16 +267,38 @@ void NoteData::RemoveHoldNote( int iHoldIndex ) m_HoldNotes.erase(m_HoldNotes.begin()+iHoldIndex, m_HoldNotes.begin()+iHoldIndex+1); } -/* Get a hold note with the same track and end row as hn. */ -int NoteData::GetMatchingHoldNote( const HoldNote &hn ) const +/* Return true if a hold note lies on the given spot. Must be in 2sAnd3s. */ +bool NoteData::IsHoldNoteAtBeat( int iTrack, int iRow ) const { - for( int i=0; i= %i (to %i)", - iOriginalTrack, Original.GetNumTracks(), iOriginalTrackToTakeFrom[t])); + ASSERT_M( iOriginalTrack < in.GetNumTracks(), ssprintf("from %i >= %i (to %i)", + iOriginalTrack, in.GetNumTracks(), iOriginalTrackToTakeFrom[t])); if( iOriginalTrack == -1 ) continue; - m_TapNotes[t] = Original.m_TapNotes[iOriginalTrack]; + m_TapNotes[t] = in.m_TapNotes[iOriginalTrack]; } - Convert4sToHoldNotes(); + // copy holds + for( int i=0; iAddHoldNote( hn ); + } } void NoteData::MoveTapNoteTrack( int dest, int src ) diff --git a/stepmania/src/NoteData.h b/stepmania/src/NoteData.h index 6f069ebc85..9f7cf6e741 100644 --- a/stepmania/src/NoteData.h +++ b/stepmania/src/NoteData.h @@ -103,7 +103,7 @@ public: void RemoveHoldNote( int index ); HoldNote &GetHoldNote( int index ) { ASSERT( index < (int) m_HoldNotes.size() ); return m_HoldNotes[index]; } const HoldNote &GetHoldNote( int index ) const { ASSERT( index < (int) m_HoldNotes.size() ); return m_HoldNotes[index]; } - int GetMatchingHoldNote( const HoldNote &hn ) const; + bool IsHoldNoteAtBeat( int iTrack, int iRow ) const; /* must be in 2sAnd3s */ // // statistics diff --git a/stepmania/src/NoteDataUtil.cpp b/stepmania/src/NoteDataUtil.cpp index 7bb0802dfb..bb45157aa7 100644 --- a/stepmania/src/NoteDataUtil.cpp +++ b/stepmania/src/NoteDataUtil.cpp @@ -387,13 +387,11 @@ void NoteDataUtil::LoadTransformedLights( const NoteData &in, NoteData &out, int out.Init(); NoteData Original; - Original.To4s( in ); + Original.To2sAnd3s( in ); - out.Config(in); out.SetNumTracks( iNewNumTracks ); - int iLastRow = Original.GetLastRow(); - for( int r=0; r <= iLastRow; ++r ) + FOREACH_NONEMPTY_ROW_ALL_TRACKS( in, r ) { if( Original.IsRowEmpty( r ) ) continue; @@ -404,7 +402,7 @@ void NoteDataUtil::LoadTransformedLights( const NoteData &in, NoteData &out, int * don't write huge streams of tap notes. */ bool bHoldNoteOnThisRow = false; for( int t=0; t