fixed: inaccurate boo timing, generous AAA grade, ugly scrolling grades on ScreenEvaluation

This commit is contained in:
Chris Danford
2003-01-12 02:10:55 +00:00
parent 0f7b5c2a6b
commit a88c866164
4 changed files with 17 additions and 9 deletions
+1 -1
View File
@@ -132,7 +132,7 @@ inline int TapNoteScoreToDancePoints( TapNoteScore tns )
{
switch( tns )
{
case TNS_MARVELOUS: return +3;
case TNS_MARVELOUS: return +2; // this should be +3, but only in Oni. Figure out how to support this later
case TNS_PERFECT: return +2;
case TNS_GREAT: return +1;
case TNS_GOOD: return +0;
+10 -2
View File
@@ -343,8 +343,16 @@ Grade GameState::GetCurrentGrade( PlayerNumber pn )
LOG->Trace( "iPossibleDancePoints: %i", m_iPossibleDancePoints[pn] );
LOG->Trace( "fPercentDancePoints: %f", fPercentDancePoints );
if ( fPercentDancePoints >= 1+1/3.0f ) return GRADE_AAAA;
if ( fPercentDancePoints >= 1.00 ) return GRADE_AAA;
// check for "AAAA"
if( m_TapNoteScores[pn][TNS_MARVELOUS] > 0 &&
m_TapNoteScores[pn][TNS_PERFECT] == 0 &&
m_TapNoteScores[pn][TNS_GREAT] == 0 &&
m_TapNoteScores[pn][TNS_GOOD] == 0 &&
m_TapNoteScores[pn][TNS_BOO] == 0 &&
m_TapNoteScores[pn][TNS_MISS] == 0 )
return GRADE_AAAA;
if ( fPercentDancePoints == 1.00 ) return GRADE_AAA;
else if( fPercentDancePoints >= 0.93 ) return GRADE_AA;
else if( fPercentDancePoints >= 0.80 ) return GRADE_A;
else if( fPercentDancePoints >= 0.65 ) return GRADE_B;
+4 -2
View File
@@ -19,14 +19,16 @@
const float SCROLL_TIME = 5.0f;
const float QUICK_SCROLL_TIME = .25f;
const int NUM_GRADE_FRAMES = 7;
const int NUM_GRADE_FRAMES = 8;
const float GRADE_FRAME_HEIGHT = 1/(float)NUM_GRADE_FRAMES;
const float GRADES_TO_SCROLL = NUM_GRADE_FRAMES*4;
GradeDisplay::GradeDisplay()
{
Load( THEME->GetPathTo("Graphics","evaluation grades 1x8") );
RageTextureID id( THEME->GetPathTo("Graphics",ssprintf("evaluation grades 1x%d",NUM_GRADE_FRAMES)) );
id.bStretch = true;
Load( id );
StopAnimating();
m_fTimeLeftInScroll = 0;
+2 -4
View File
@@ -400,9 +400,8 @@ void Player::Step( int col )
// compute the score for this hit
const float fStepBeat = NoteRowToBeat( (float)iIndexOverlappingNote );
const float fBeatsUntilStep = fStepBeat - fSongBeat;
const float fSecondsFromPerfect = fabsf( fBeatsUntilStep / GAMESTATE->m_fCurBPS );
// const float fPercentFromPerfect = fabsf( fBeatsUntilStep / GetMaxBeatDifference() );
const float fNoteOffset = fBeatsUntilStep / GAMESTATE->m_fCurBPS; //the offset from the actual step in seconds
const float fSecondsFromPerfect = fabsf( fNoteOffset );
TapNoteScore score;
@@ -412,8 +411,7 @@ void Player::Step( int col )
else if( fSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowPerfectSeconds ) score = TNS_PERFECT;
else if( fSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowGreatSeconds ) score = TNS_GREAT;
else if( fSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowGoodSeconds ) score = TNS_GOOD;
//we have to mark boo's as better than MISS's now that the window is expanded
else if( fSecondsFromPerfect <= 1.0f ) score = TNS_BOO;
else if( fSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowBooSeconds ) score = TNS_BOO;
else score = TNS_NONE;
if( !GAMESTATE->m_bEditing && (GAMESTATE->m_bDemonstration || PREFSMAN->m_bAutoPlay) )