split off GetGradeFromPercent

This commit is contained in:
Chris Danford
2005-03-31 06:13:40 +00:00
parent 41820054f1
commit d39fa29164
2 changed files with 32 additions and 19 deletions
+27 -15
View File
@@ -4,10 +4,12 @@
#include "PrefsManager.h" #include "PrefsManager.h"
#include "ThemeManager.h" #include "ThemeManager.h"
#include "Foreach.h" #include "Foreach.h"
#include "LuaFunctions.h"
#include "LuaManager.h"
#include <float.h> #include <float.h>
#define GRADE_PERCENT_TIER(i) THEME->GetMetricF("PlayerStageStats",ssprintf("GradePercent%s",GradeToString((Grade)i).c_str())) #define GRADE_PERCENT_TIER(i) THEME->GetMetricF("PlayerStageStats",ssprintf("GradePercent%s",GradeToString((Grade)i).c_str()))
#define GRADE_TIER_02_IS_ALL_PERFECTS THEME->GetMetricB("PlayerStageStats","GradeTier02IsAllPerfects") #define GRADE_TIER02_IS_ALL_PERFECTS THEME->GetMetricB("PlayerStageStats","GradeTier02IsAllPerfects")
void PlayerStageStats::Init() void PlayerStageStats::Init()
{ {
@@ -98,6 +100,21 @@ void PlayerStageStats::AddStats( const PlayerStageStats& other )
} }
} }
Grade PlayerStageStats::GetGradeFromPercent( float fPercent )
{
Grade grade = GRADE_FAILED;
FOREACH_Grade(g)
{
if( fPercent >= GRADE_PERCENT_TIER(g) )
{
grade = g;
break;
}
}
return g;
}
Grade PlayerStageStats::GetGrade() const Grade PlayerStageStats::GetGrade() const
{ {
if( bFailedEarlier ) if( bFailedEarlier )
@@ -142,21 +159,13 @@ Grade PlayerStageStats::GetGrade() const
LOG->Trace( "GetGrade: Actual: %f, Possible: %f", Actual, Possible ); LOG->Trace( "GetGrade: Actual: %f, Possible: %f", Actual, Possible );
Grade grade = GRADE_FAILED;
float fPercent = (Possible == 0) ? 0 : Actual / Possible; float fPercent = (Possible == 0) ? 0 : Actual / Possible;
FOREACH_Grade(g) Grade grade = GetGradeFromPercent( fPercent );
{
if( fPercent >= GRADE_PERCENT_TIER(g) )
{
grade = g;
break;
}
}
LOG->Trace( "GetGrade: Grade: %s, %i", GradeToString(grade).c_str(), GRADE_TIER_02_IS_ALL_PERFECTS ); LOG->Trace( "GetGrade: Grade: %s, %i", GradeToString(grade).c_str(), GRADE_TIER02_IS_ALL_PERFECTS );
if( GRADE_TIER_02_IS_ALL_PERFECTS ) if( GRADE_TIER02_IS_ALL_PERFECTS )
{ {
if( iTapNoteScores[TNS_MARVELOUS] > 0 && if( iTapNoteScores[TNS_MARVELOUS] > 0 &&
iTapNoteScores[TNS_PERFECT] == 0 && iTapNoteScores[TNS_PERFECT] == 0 &&
@@ -166,7 +175,7 @@ Grade PlayerStageStats::GetGrade() const
iTapNoteScores[TNS_MISS] == 0 && iTapNoteScores[TNS_MISS] == 0 &&
iTapNoteScores[TNS_HIT_MINE] == 0 && iTapNoteScores[TNS_HIT_MINE] == 0 &&
iHoldNoteScores[HNS_NG] == 0 ) iHoldNoteScores[HNS_NG] == 0 )
return GRADE_TIER_01; return GRADE_TIER01;
if( iTapNoteScores[TNS_PERFECT] > 0 && if( iTapNoteScores[TNS_PERFECT] > 0 &&
iTapNoteScores[TNS_GREAT] == 0 && iTapNoteScores[TNS_GREAT] == 0 &&
@@ -175,9 +184,9 @@ Grade PlayerStageStats::GetGrade() const
iTapNoteScores[TNS_MISS] == 0 && iTapNoteScores[TNS_MISS] == 0 &&
iTapNoteScores[TNS_HIT_MINE] == 0 && iTapNoteScores[TNS_HIT_MINE] == 0 &&
iHoldNoteScores[HNS_NG] == 0 ) iHoldNoteScores[HNS_NG] == 0 )
return GRADE_TIER_02; return GRADE_TIER02;
return max( grade, GRADE_TIER_03 ); return max( grade, GRADE_TIER03 );
} }
return grade; return grade;
@@ -381,6 +390,9 @@ float PlayerStageStats::GetPercentageOfTaps( TapNoteScore tns ) const
} }
LuaFunction_Float( GetGradeFromPercent, PlayerStageStats::GetGradeFromPercent(a1) )
// lua start // lua start
#include "LuaBinding.h" #include "LuaBinding.h"
+1
View File
@@ -17,6 +17,7 @@ struct PlayerStageStats
void AddStats( const PlayerStageStats& other ); // accumulate void AddStats( const PlayerStageStats& other ); // accumulate
static Grade GetGradeFromPercent( float fPercent );
Grade GetGrade() const; Grade GetGrade() const;
float GetPercentDancePoints() const; float GetPercentDancePoints() const;
vector<Steps*> vpSteps; vector<Steps*> vpSteps;