From c86c5af9f82ad1e39fa8cb961212ce192947e5df Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Fri, 13 Dec 2002 23:34:37 +0000 Subject: [PATCH] move more stuff to NoteDataUtil --- stepmania/src/NoteData.cpp | 528 ++++++++++++++++++----------------- stepmania/src/NoteData.h | 25 +- stepmania/src/Player.cpp | 6 +- stepmania/src/ScreenEdit.cpp | 2 +- 4 files changed, 284 insertions(+), 277 deletions(-) diff --git a/stepmania/src/NoteData.cpp b/stepmania/src/NoteData.cpp index a87ce7a420..26ad4a3369 100644 --- a/stepmania/src/NoteData.cpp +++ b/stepmania/src/NoteData.cpp @@ -296,210 +296,6 @@ int NoteData::GetPossibleDancePoints() GetNumHoldNotes()*HoldNoteScoreToDancePoints(HNS_OK); } -void NoteData::RemoveHoldNotes() -{ - // turn all the HoldNotes into TapNotes - for( int i=0; iGetCurrentStyleDef()->m_NotesType ) - { - case NOTES_TYPE_DANCE_SINGLE: - case NOTES_TYPE_DANCE_DOUBLE: - case NOTES_TYPE_DANCE_COUPLE: - iTakeFromTrack[0] = 2; - iTakeFromTrack[1] = 0; - iTakeFromTrack[2] = 3; - iTakeFromTrack[3] = 1; - iTakeFromTrack[4] = 6; - iTakeFromTrack[5] = 4; - iTakeFromTrack[6] = 7; - iTakeFromTrack[7] = 5; - break; - case NOTES_TYPE_DANCE_SOLO: - iTakeFromTrack[0] = 5; - iTakeFromTrack[1] = 4; - iTakeFromTrack[2] = 0; - iTakeFromTrack[3] = 3; - iTakeFromTrack[4] = 1; - iTakeFromTrack[5] = 2; - break; - case NOTES_TYPE_PUMP_SINGLE: - case NOTES_TYPE_PUMP_COUPLE: - iTakeFromTrack[0] = 3; - iTakeFromTrack[1] = 4; - iTakeFromTrack[2] = 2; - iTakeFromTrack[3] = 0; - iTakeFromTrack[4] = 1; - iTakeFromTrack[5] = 8; - iTakeFromTrack[6] = 9; - iTakeFromTrack[7] = 7; - iTakeFromTrack[8] = 5; - iTakeFromTrack[9] = 6; - break; - case NOTES_TYPE_PUMP_DOUBLE: - iTakeFromTrack[0] = 8; - iTakeFromTrack[1] = 9; - iTakeFromTrack[2] = 7; - iTakeFromTrack[3] = 5; - iTakeFromTrack[4] = 6; - iTakeFromTrack[5] = 3; - iTakeFromTrack[6] = 4; - iTakeFromTrack[7] = 2; - iTakeFromTrack[8] = 0; - iTakeFromTrack[9] = 1; - break; - case NOTES_TYPE_EZ2_SINGLE: - case NOTES_TYPE_EZ2_DOUBLE: - case NOTES_TYPE_EZ2_REAL: - // identity transform. What should we do here? - iTakeFromTrack[0] = 0; - iTakeFromTrack[1] = 1; - iTakeFromTrack[2] = 2; - iTakeFromTrack[3] = 3; - iTakeFromTrack[4] = 4; - iTakeFromTrack[5] = 5; - iTakeFromTrack[6] = 6; - iTakeFromTrack[7] = 7; - iTakeFromTrack[8] = 8; - iTakeFromTrack[9] = 9; - iTakeFromTrack[10]= 10; - iTakeFromTrack[11]= 11; - break; - } - break; - case PlayerOptions::TURN_SHUFFLE: - case PlayerOptions::TURN_SUPER_SHUFFLE: // use this code to shuffle the HoldNotes - { - CArray aiTracksLeftToMap; - for( t=0; tConvertHoldNotesTo2sAnd3s(); - - // transform notes - for( t=0; tCopyAll( &tempNoteData ); // copy note data from newData back into this - this->Convert2sAnd3sToHoldNotes(); - - - - - - if( tt == PlayerOptions::TURN_SUPER_SHUFFLE ) - { - // We already did the normal shuffling code above, which did a good job - // of shuffling HoldNotes without creating impossible patterns. - // Now, go in and shuffle the TapNotes some more. - - // clear tempNoteData because we're going to use it as a scratch buffer again - tempNoteData.Init(); - tempNoteData.Config(*this); - - // copy all HoldNotes before copying taps - for( int i=0; iGetNumHoldNotes(); i++ ) - tempNoteData.AddHoldNote( this->GetHoldNote(i) ); - - this->ConvertHoldNotesTo4s(); - - for( int r=0; r<=this->GetLastRow(); r++ ) // foreach row - { - if( this->IsRowEmpty(r) ) - continue; // no need to super shuffle this row - - // shuffle this row - CArray aiTracksThatCouldHaveTapNotes; - for( t=0; tCopyAll( &tempNoteData ); // copy note data from newData back into this - } -} - -void NoteData::MakeLittle() -{ - // filter out all non-quarter notes - for( int i=0; i tracks, rows; + + // turn all the HoldNotes into TapNotes + for( int i=0; iGetCurrentStyleDef()->m_NotesType ) + { + case NOTES_TYPE_DANCE_SINGLE: + case NOTES_TYPE_DANCE_DOUBLE: + case NOTES_TYPE_DANCE_COUPLE: + iTakeFromTrack[0] = 2; + iTakeFromTrack[1] = 0; + iTakeFromTrack[2] = 3; + iTakeFromTrack[3] = 1; + iTakeFromTrack[4] = 6; + iTakeFromTrack[5] = 4; + iTakeFromTrack[6] = 7; + iTakeFromTrack[7] = 5; + break; + case NOTES_TYPE_DANCE_SOLO: + iTakeFromTrack[0] = 5; + iTakeFromTrack[1] = 4; + iTakeFromTrack[2] = 0; + iTakeFromTrack[3] = 3; + iTakeFromTrack[4] = 1; + iTakeFromTrack[5] = 2; + break; + case NOTES_TYPE_PUMP_SINGLE: + case NOTES_TYPE_PUMP_COUPLE: + iTakeFromTrack[0] = 3; + iTakeFromTrack[1] = 4; + iTakeFromTrack[2] = 2; + iTakeFromTrack[3] = 0; + iTakeFromTrack[4] = 1; + iTakeFromTrack[5] = 8; + iTakeFromTrack[6] = 9; + iTakeFromTrack[7] = 7; + iTakeFromTrack[8] = 5; + iTakeFromTrack[9] = 6; + break; + case NOTES_TYPE_PUMP_DOUBLE: + iTakeFromTrack[0] = 8; + iTakeFromTrack[1] = 9; + iTakeFromTrack[2] = 7; + iTakeFromTrack[3] = 5; + iTakeFromTrack[4] = 6; + iTakeFromTrack[5] = 3; + iTakeFromTrack[6] = 4; + iTakeFromTrack[7] = 2; + iTakeFromTrack[8] = 0; + iTakeFromTrack[9] = 1; + break; + case NOTES_TYPE_EZ2_SINGLE: + case NOTES_TYPE_EZ2_DOUBLE: + case NOTES_TYPE_EZ2_REAL: + // identity transform. What should we do here? + iTakeFromTrack[0] = 0; + iTakeFromTrack[1] = 1; + iTakeFromTrack[2] = 2; + iTakeFromTrack[3] = 3; + iTakeFromTrack[4] = 4; + iTakeFromTrack[5] = 5; + iTakeFromTrack[6] = 6; + iTakeFromTrack[7] = 7; + iTakeFromTrack[8] = 8; + iTakeFromTrack[9] = 9; + iTakeFromTrack[10]= 10; + iTakeFromTrack[11]= 11; + break; + } + break; + case PlayerOptions::TURN_SHUFFLE: + case PlayerOptions::TURN_SUPER_SHUFFLE: // use this code to shuffle the HoldNotes + { + CArray aiTracksLeftToMap; + for( t=0; t aiTracksThatCouldHaveTapNotes; + for( t=0; t m_HoldNotes; + /* Pad m_TapNotes so it includes the row "rows". */ + void PadTapNotes(int rows); + +public: /* Set up to hold the data in From; same number of tracks, same * divisor. Doesn't allocate or copy anything. */ void Config( const NoteData &From ); -public: + int m_iNumTracks; + NoteData(); ~NoteData(); void Init(); - int m_iNumTracks; - void Compress(); void Decompress(); @@ -57,8 +60,6 @@ public: } int GetTapNoteIncrement() const { return TapRowDivisor; } void MoveTapNoteTrack(int dest, int src); - /* Pad m_TapNotes so it includes the row "rows". */ - void PadTapNotes(int rows); void SetTapNote(int track, int row, TapNote t); void ClearRange( int iNoteIndexBegin, int iNoteIndexEnd ); @@ -99,13 +100,6 @@ public: 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 RemoveHoldNotes(); - void Turn( PlayerOptions::TurnType tt ); - void MakeLittle(); - - void SnapToNearestNoteType( NoteType nt, float fBeginBeat, float fEndBeat ) { SnapToNearestNoteType( nt, (NoteType)-1, fBeginBeat, fEndBeat ); } - void SnapToNearestNoteType( NoteType nt1, NoteType nt2, float fBeginBeat, float fEndBeat ); - // Convert between HoldNote representation and '2' and '3' markers in TapNotes void Convert2sAnd3sToHoldNotes(); void ConvertHoldNotesTo2sAnd3s(); @@ -132,6 +126,13 @@ namespace NoteDataUtil // radar values - return between 0.0 and 1.2 float GetRadarValue( const NoteData &in, RadarCategory rv, float fSongSeconds ); + + void RemoveHoldNotes(NoteData &in); + void Turn( NoteData &in, PlayerOptions::TurnType tt ); + void MakeLittle(NoteData &in); + + void SnapToNearestNoteType( NoteData &in, NoteType nt1, NoteType nt2, float fBeginBeat, float fEndBeat ); + inline void SnapToNearestNoteType( NoteData &in, NoteType nt, float fBeginBeat, float fEndBeat ) { SnapToNearestNoteType( in, nt, (NoteType)-1, fBeginBeat, fEndBeat ); } }; #endif diff --git a/stepmania/src/Player.cpp b/stepmania/src/Player.cpp index 32ad2cfcd2..92881935c0 100644 --- a/stepmania/src/Player.cpp +++ b/stepmania/src/Player.cpp @@ -146,12 +146,12 @@ void Player::Load( PlayerNumber pn, NoteData* pNoteData, LifeMeter* pLM, ScoreDi m_pScore->Init( pn ); if( !GAMESTATE->m_PlayerOptions[pn].m_bHoldNotes ) - this->RemoveHoldNotes(); + NoteDataUtil::RemoveHoldNotes(*this); - this->Turn( GAMESTATE->m_PlayerOptions[pn].m_TurnType ); + NoteDataUtil::Turn( *this, GAMESTATE->m_PlayerOptions[pn].m_TurnType ); if( GAMESTATE->m_PlayerOptions[pn].m_bLittle ) - this->MakeLittle(); + NoteDataUtil::MakeLittle(*this); int iPixelsToDrawBefore = 96; int iPixelsToDrawAfter = 384; diff --git a/stepmania/src/ScreenEdit.cpp b/stepmania/src/ScreenEdit.cpp index c3ca8400f4..1a511332c9 100644 --- a/stepmania/src/ScreenEdit.cpp +++ b/stepmania/src/ScreenEdit.cpp @@ -901,7 +901,7 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ default: ASSERT( false ); return; } - m_NoteFieldEdit.SnapToNearestNoteType( noteType1, noteType2, m_NoteFieldEdit.m_fBeginMarker, m_NoteFieldEdit.m_fEndMarker ); + NoteDataUtil::SnapToNearestNoteType( m_NoteFieldEdit, noteType1, noteType2, m_NoteFieldEdit.m_fBeginMarker, m_NoteFieldEdit.m_fEndMarker ); } } break;