From 146e057b7ec06bc772fd8b4f93232de71424d0ad Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Thu, 25 Mar 2004 08:32:47 +0000 Subject: [PATCH] Add OneGreat and OnePerfect awards --- stepmania/src/GameConstantsAndTypes.cpp | 2 ++ stepmania/src/GameConstantsAndTypes.h | 2 ++ stepmania/src/ScreenEvaluation.cpp | 5 +++++ stepmania/src/StageStats.cpp | 9 +++++++++ stepmania/src/StageStats.h | 1 + 5 files changed, 19 insertions(+) diff --git a/stepmania/src/GameConstantsAndTypes.cpp b/stepmania/src/GameConstantsAndTypes.cpp index 7f5dae05d0..8f9dd4097e 100644 --- a/stepmania/src/GameConstantsAndTypes.cpp +++ b/stepmania/src/GameConstantsAndTypes.cpp @@ -199,6 +199,8 @@ static const CString PerDifficultyAwardNames[NUM_PER_DIFFICULTY_AWARDS] = { "FullComboMarvelouses", "SingleDigitGreats", "SingleDigitPerfects", + "OneGreat", + "OnePerfect", "Greats80Percent", "Greats90Percent", "Greats100Percent", diff --git a/stepmania/src/GameConstantsAndTypes.h b/stepmania/src/GameConstantsAndTypes.h index 86486a96b8..01ea7d69c4 100644 --- a/stepmania/src/GameConstantsAndTypes.h +++ b/stepmania/src/GameConstantsAndTypes.h @@ -360,6 +360,8 @@ enum PerDifficultyAward AWARD_FULL_COMBO_MARVELOUSES, AWARD_SINGLE_DIGIT_GREATS, AWARD_SINGLE_DIGIT_PERFECTS, + AWARD_ONE_GREAT, + AWARD_ONE_PERFECT, AWARD_GREATS_80_PERCENT, AWARD_GREATS_90_PERCENT, AWARD_GREATS_100_PERCENT, diff --git a/stepmania/src/ScreenEvaluation.cpp b/stepmania/src/ScreenEvaluation.cpp index 4fb7c0fb21..6b1ad1e7e0 100644 --- a/stepmania/src/ScreenEvaluation.cpp +++ b/stepmania/src/ScreenEvaluation.cpp @@ -1075,6 +1075,11 @@ void ScreenEvaluation::CommitScores( vPdas.push_back( AWARD_SINGLE_DIGIT_PERFECTS ); if( stageStats.FullComboOfScore( (PlayerNumber)p, TNS_MARVELOUS ) ) vPdas.push_back( AWARD_FULL_COMBO_MARVELOUSES ); + + if( stageStats.OneOfScore( (PlayerNumber)p, TNS_GREAT ) ) + vPdas.push_back( AWARD_ONE_GREAT ); + if( stageStats.OneOfScore( (PlayerNumber)p, TNS_PERFECT ) ) + vPdas.push_back( AWARD_ONE_PERFECT ); float fPercentGreats = stageStats.GetPercentageOfTaps((PlayerNumber)p, TNS_GREAT); if( fPercentGreats >= 0.8f ) diff --git a/stepmania/src/StageStats.cpp b/stepmania/src/StageStats.cpp index 937e65f30b..e0c744b2e6 100644 --- a/stepmania/src/StageStats.cpp +++ b/stepmania/src/StageStats.cpp @@ -402,6 +402,9 @@ bool StageStats::FullComboOfScore( PlayerNumber pn, TapNoteScore tnsAllGreaterOr ASSERT( tnsAllGreaterOrEqual >= TNS_GREAT ); ASSERT( tnsAllGreaterOrEqual <= TNS_MARVELOUS ); + if( iHoldNoteScores[pn][HNS_NG] > 0 ) + return false; + for( int i=TNS_MISS; i 0 ) @@ -416,6 +419,12 @@ bool StageStats::SingleDigitsOfScore( PlayerNumber pn, TapNoteScore tnsAllGreate iTapNoteScores[pn][tnsAllGreaterOrEqual] < 10; } +bool StageStats::OneOfScore( PlayerNumber pn, TapNoteScore tnsAllGreaterOrEqual ) const +{ + return FullComboOfScore( pn, tnsAllGreaterOrEqual ) && + iTapNoteScores[pn][tnsAllGreaterOrEqual] == 1; +} + int StageStats::GetTotalTaps( PlayerNumber pn ) const { int iTotalTaps = 0; diff --git a/stepmania/src/StageStats.h b/stepmania/src/StageStats.h index e0c54b214d..320111a290 100644 --- a/stepmania/src/StageStats.h +++ b/stepmania/src/StageStats.h @@ -98,6 +98,7 @@ struct StageStats bool FullComboOfScore( PlayerNumber pn, TapNoteScore tnsAllGreaterOrEqual ) const; bool FullCombo( PlayerNumber pn ) const { return FullComboOfScore(pn,TNS_GREAT); } bool SingleDigitsOfScore( PlayerNumber pn, TapNoteScore tnsAllGreaterOrEqual ) const; + bool OneOfScore( PlayerNumber pn, TapNoteScore tnsAllGreaterOrEqual ) const; int GetTotalTaps( PlayerNumber pn ) const; float GetPercentageOfTaps( PlayerNumber pn, TapNoteScore tns ) const; void UpdateComboList( PlayerNumber pn, float pos, bool rollover );