OK is worth a step, too.

This commit is contained in:
Glenn Maynard
2002-11-07 03:53:54 +00:00
parent 5fcbfa8881
commit cf2e68a72e
2 changed files with 30 additions and 16 deletions
+28 -16
View File
@@ -8,8 +8,12 @@ ScoreKeeperMAX2::ScoreKeeperMAX2(Notes *notes, NoteDataWithScoring &data, int pn
// Stats_DoublesCount = true;
int Meter = notes? notes->m_iMeter : 5;
int m_iNumTapNotes = data.GetNumTapNotes();
int sum = (m_iNumTapNotes * (m_iNumTapNotes + 1)) / 2;
/* Hold notes count as two tap notes. However, hold notes already count
* as 1 in GetNumTapNotes(), so only add 1*GetNumHoldNotes, not 2. */
int iNumTapNotes = data.GetNumTapNotes() + data.GetNumHoldNotes();
int sum = (iNumTapNotes * (iNumTapNotes + 1)) / 2;
if(sum)
m_fScoreMultiplier = float(Meter * 1000000) / sum;
@@ -22,6 +26,24 @@ ScoreKeeperMAX2::ScoreKeeperMAX2(Notes *notes, NoteDataWithScoring &data, int pn
m_lScore = 0;
}
void ScoreKeeperMAX2::AddScore( TapNoteScore score )
{
int p; // score multiplier
switch( score )
{
case TNS_PERFECT: p = 10; break;
case TNS_GREAT: p = 5; break;
default: p = 0; break;
}
m_lScore += p * ++m_iTapNotesHit;
ASSERT(m_lScore >= 0);
GAMESTATE->m_fScore[m_PlayerNumber] = m_lScore * m_fScoreMultiplier;
}
void ScoreKeeperMAX2::HandleNoteScore( TapNoteScore score, int iNumTapsInRow )
{
ScoreKeeper::HandleNoteScore(score, iNumTapsInRow);
@@ -69,21 +91,8 @@ void ScoreKeeperMAX2::HandleNoteScore( TapNoteScore score, int iNumTapsInRow )
keeping these seperate for as long as possible improves accuracy.
*/
int p; // score multiplier
switch( score )
{
case TNS_PERFECT: p = 10; break;
case TNS_GREAT: p = 5; break;
default: p = 0; break;
}
for( int i=0; i<iNumTapsInRow; i++ )
m_lScore += p * ++m_iTapNotesHit;
ASSERT(m_lScore >= 0);
GAMESTATE->m_fScore[m_PlayerNumber] = m_lScore * m_fScoreMultiplier;
AddScore( score );
}
@@ -92,4 +101,7 @@ void ScoreKeeperMAX2::HandleHoldNoteScore( HoldNoteScore score, TapNoteScore Tap
// update dance points totals
GAMESTATE->m_HoldNoteScores[m_PlayerNumber][score] ++;
GAMESTATE->m_iActualDancePoints[m_PlayerNumber] += HoldNoteScoreToDancePoints( score );
if( score == HNS_OK )
AddScore( TNS_PERFECT );
}
+2
View File
@@ -22,6 +22,8 @@ class ScoreKeeperMAX2: public ScoreKeeper
float m_fScoreMultiplier;
int m_iTapNotesHit; // number of notes judged so far, needed by scoring
void AddScore( TapNoteScore score );
public:
ScoreKeeperMAX2(Notes *notes, NoteDataWithScoring &data, int pn);