From 325d2169b7fda2ee728feffadf4e22c3fe186e3f Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Wed, 26 Nov 2003 04:31:29 +0000 Subject: [PATCH] better hands calc --- stepmania/src/NoteData.cpp | 31 +++++++++++++++++++++++++++++++ stepmania/src/NoteData.h | 2 +- stepmania/src/NoteDataUtil.cpp | 2 +- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/stepmania/src/NoteData.cpp b/stepmania/src/NoteData.cpp index a73299d9ce..416e4595f3 100644 --- a/stepmania/src/NoteData.cpp +++ b/stepmania/src/NoteData.cpp @@ -377,6 +377,37 @@ int NoteData::GetNumRowsWithTapOrHoldHead( float fStartBeat, float fEndBeat ) co return iNumNotes; } +int NoteData::GetNumHands( float fStartBeat, float fEndBeat ) const +{ + /* We want to count both three taps at the same time, a tap while two + * hold notes are being held, etc. */ + NoteData temp; + temp.To4s( temp ); + + if( fEndBeat == -1 ) + fEndBeat = temp.GetMaxBeat(); + + const int iStartIndex = BeatToNoteRow( fStartBeat ); + const int iEndIndex = BeatToNoteRow( fEndBeat ); + + int iNum = 0; + for( int i=iStartIndex; i<=iEndIndex; i++ ) + { + int iNumNotesThisIndex = 0; + for( int t=0; t= 3 ) + iNum++; + } + + return iNum; +} + int NoteData::GetNumN( int MinTaps, float fStartBeat, float fEndBeat ) const { if( fEndBeat == -1 ) diff --git a/stepmania/src/NoteData.h b/stepmania/src/NoteData.h index 63f5db6b0d..2edfca6b23 100644 --- a/stepmania/src/NoteData.h +++ b/stepmania/src/NoteData.h @@ -168,11 +168,11 @@ public: int GetLastRow() const; int GetNumTapNotes( const float fStartBeat = 0, const float fEndBeat = -1 ) const; int GetNumMines( const float fStartBeat = 0, const float fEndBeat = -1 ) const; + int GetNumHands( const float fStartBeat = 0, const float fEndBeat = -1 ) const; int GetNumRowsWithTap( const float fStartBeat = 0, const float fEndBeat = -1 ) const; int GetNumRowsWithTapOrHoldHead( const float fStartBeat = 0, const float fEndBeat = -1 ) const; int GetNumN( int MinTaps, const float fStartBeat = 0, const float fEndBeat = -1 ) const; int GetNumDoubles( const float fStartBeat = 0, const float fEndBeat = -1 ) const { return GetNumN( 2, fStartBeat, fEndBeat ); } - int GetNumTriples( const float fStartBeat = 0, const float fEndBeat = -1 ) const { return GetNumN( 3, fStartBeat, fEndBeat ); } /* optimization: for the default of start to end, use the second (faster) */ int GetNumHoldNotes( const float fStartBeat, const float fEndBeat = -1 ) const; int GetNumHoldNotes() const { return m_HoldNotes.size(); } diff --git a/stepmania/src/NoteDataUtil.cpp b/stepmania/src/NoteDataUtil.cpp index 486db66417..d475723f6c 100644 --- a/stepmania/src/NoteDataUtil.cpp +++ b/stepmania/src/NoteDataUtil.cpp @@ -281,7 +281,7 @@ float NoteDataUtil::GetRadarValue( const NoteData &in, RadarCategory rv, float f case RADAR_NUM_JUMPS: return (float) in.GetNumDoubles(); // should hands also count as a jump? case RADAR_NUM_HOLDS: return (float) in.GetNumHoldNotes(); case RADAR_NUM_MINES: return (float) in.GetNumMines(); - case RADAR_NUM_HANDS: return (float) in.GetNumTriples(); + case RADAR_NUM_HANDS: return (float) in.GetNumHands(); default: ASSERT(0); return 0; } }