From da62e18b4af50ca8985eb74364c0ba88589ef54f Mon Sep 17 00:00:00 2001 From: Tom Jackson Date: Thu, 24 Oct 2002 23:22:43 +0000 Subject: [PATCH] Fixed my score code. Sorry about that. --- stepmania/src/GameState.cpp | 1 - stepmania/src/GameState.h | 2 -- stepmania/src/Player.cpp | 14 ++++++++------ stepmania/src/Player.h | 2 ++ 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index 1ab7946918..99e5b522cb 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -96,7 +96,6 @@ void GameState::Reset() for( s=0; sGetNumTapNotes(); m_iTapNotesHit = 0; + m_lScore = 0; m_iMeter = GAMESTATE->m_pCurNotes[m_PlayerNumber] ? GAMESTATE->m_pCurNotes[m_PlayerNumber]->m_iMeter : 5; - + m_fScoreMultiplier = (double)(m_iMeter * 1000000) / (double)((m_iNumTapNotes * (m_iNumTapNotes + 1)) >> 1); + ASSERT(m_fScoreMultiplier >= 0.0); if( m_pScore ) @@ -624,7 +626,6 @@ void Player::HandleNoteScore( TapNoteScore score, int iNumTapsInRow ) // lScore == p * n // m_fScoreMultiplier = (B/S) // keeping these seperate for as long as possible improves accuracy. - long &lScore = GAMESTATE->m_lScore[m_PlayerNumber]; int p; // score multiplier switch( score ) @@ -635,11 +636,12 @@ void Player::HandleNoteScore( TapNoteScore score, int iNumTapsInRow ) } for( int i=0; i 0); - GAMESTATE->m_fScoreMultiplier = 0; // XXX this isn't being set anywhere + m_lScore += p * ++m_iTapNotesHit; + + ASSERT(m_lScore >= 0); + if (m_pScore) - m_pScore->SetScore(GAMESTATE->m_fScore[m_PlayerNumber] = lScore * GAMESTATE->m_fScoreMultiplier); + m_pScore->SetScore(GAMESTATE->m_fScore[m_PlayerNumber] = m_lScore * m_fScoreMultiplier); } diff --git a/stepmania/src/Player.h b/stepmania/src/Player.h index 7eafb89b84..1c7a0a21f3 100644 --- a/stepmania/src/Player.h +++ b/stepmania/src/Player.h @@ -62,6 +62,8 @@ protected: int m_iNumTapNotes; // num of TapNotes for the current notes needed by scoring int m_iTapNotesHit; // number of notes judged so far, needed by scoring int m_iMeter; // meter of current steps, needed by scoring + long m_lScore; + float m_fScoreMultiplier; float m_fOffset[SAMPLE_COUNT];//for AutoAdjust int m_iOffsetSample; //