better hands calc
This commit is contained in:
@@ -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<m_iNumTracks; t++ )
|
||||
{
|
||||
if( temp.GetTapNote(t, i) == TAP_MINE )
|
||||
continue; // mines don't count
|
||||
if( temp.GetTapNote(t, i) != TAP_EMPTY )
|
||||
iNumNotesThisIndex++;
|
||||
}
|
||||
if( iNumNotesThisIndex >= 3 )
|
||||
iNum++;
|
||||
}
|
||||
|
||||
return iNum;
|
||||
}
|
||||
|
||||
int NoteData::GetNumN( int MinTaps, float fStartBeat, float fEndBeat ) const
|
||||
{
|
||||
if( fEndBeat == -1 )
|
||||
|
||||
@@ -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(); }
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user