Use generic names for TapNoteScore values since they are treated genericly by the code.
Theme changes coming...
This commit is contained in:
@@ -64,8 +64,8 @@ void CombinedLifeMeterTug::ChangeLife( PlayerNumber pn, HoldNoteScore score, Tap
|
|||||||
{
|
{
|
||||||
/* The initial tap note score (which we happen to have in have in
|
/* The initial tap note score (which we happen to have in have in
|
||||||
* tscore) has already been reported to the above function. If the
|
* tscore) has already been reported to the above function. If the
|
||||||
* hold end result was an NG, count it as a miss; if the end result
|
* hold end result was an LetGo, count it as a miss; if the end result
|
||||||
* was an OK, count a perfect. (Remember, this is just life meter
|
* was a Held, count a tier2. (Remember, this is just life meter
|
||||||
* computation, not scoring.) */
|
* computation, not scoring.) */
|
||||||
float fPercentToMove = 0;
|
float fPercentToMove = 0;
|
||||||
switch( score )
|
switch( score )
|
||||||
|
|||||||
@@ -268,9 +268,9 @@ static const CString PerDifficultyAwardNames[] = {
|
|||||||
"SingleDigitTier2",
|
"SingleDigitTier2",
|
||||||
"OneTier2",
|
"OneTier2",
|
||||||
"FullComboTier1",
|
"FullComboTier1",
|
||||||
"Tier3s80Percent",
|
"Percent80Tier3",
|
||||||
"Tier3s90Percent",
|
"Percent90Tier3",
|
||||||
"Tier3s100Percent",
|
"Percent100Tier3",
|
||||||
};
|
};
|
||||||
XToString( PerDifficultyAward, NUM_PER_DIFFICULTY_AWARDS );
|
XToString( PerDifficultyAward, NUM_PER_DIFFICULTY_AWARDS );
|
||||||
XToThemedString( PerDifficultyAward, NUM_PER_DIFFICULTY_AWARDS );
|
XToThemedString( PerDifficultyAward, NUM_PER_DIFFICULTY_AWARDS );
|
||||||
|
|||||||
@@ -293,16 +293,16 @@ const CString& PremiumToString( Premium p );
|
|||||||
|
|
||||||
enum PerDifficultyAward
|
enum PerDifficultyAward
|
||||||
{
|
{
|
||||||
AWARD_FULL_COMBO_GREATS,
|
AWARD_FULL_COMBO_TIER3,
|
||||||
AWARD_SINGLE_DIGIT_GREATS,
|
AWARD_SINGLE_DIGIT_TIER3,
|
||||||
AWARD_ONE_GREAT,
|
AWARD_ONE_TIER3,
|
||||||
AWARD_FULL_COMBO_PERFECTS,
|
AWARD_FULL_COMBO_TIER2,
|
||||||
AWARD_SINGLE_DIGIT_PERFECTS,
|
AWARD_SINGLE_DIGIT_TIER2,
|
||||||
AWARD_ONE_PERFECT,
|
AWARD_ONE_TIER2,
|
||||||
AWARD_FULL_COMBO_MARVELOUSES,
|
AWARD_FULL_COMBO_TIER1,
|
||||||
AWARD_GREATS_80_PERCENT,
|
AWARD_PERCENT_80_TIER3,
|
||||||
AWARD_GREATS_90_PERCENT,
|
AWARD_PERCENT_90_TIER3,
|
||||||
AWARD_GREATS_100_PERCENT,
|
AWARD_PERCENT_100_TIER3,
|
||||||
NUM_PER_DIFFICULTY_AWARDS,
|
NUM_PER_DIFFICULTY_AWARDS,
|
||||||
PER_DIFFICULTY_AWARD_INVALID,
|
PER_DIFFICULTY_AWARD_INVALID,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ void LifeMeterBar::ChangeLife( TapNoteScore score )
|
|||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
}
|
}
|
||||||
if( IsHot() && score < TNS_Tier4 )
|
if( IsHot() && score < TNS_Tier4 )
|
||||||
fDeltaLife = -0.10f; // make it take a while to get back to "doing great"
|
fDeltaLife = -0.10f; // make it take a while to get back to "hot"
|
||||||
break;
|
break;
|
||||||
case SongOptions::DRAIN_NO_RECOVER:
|
case SongOptions::DRAIN_NO_RECOVER:
|
||||||
switch( score )
|
switch( score )
|
||||||
@@ -179,8 +179,8 @@ void LifeMeterBar::ChangeLife( HoldNoteScore score, TapNoteScore tscore )
|
|||||||
{
|
{
|
||||||
/* The initial tap note score (which we happen to have in have in
|
/* The initial tap note score (which we happen to have in have in
|
||||||
* tscore) has already been reported to the above function. If the
|
* tscore) has already been reported to the above function. If the
|
||||||
* hold end result was an NG, count it as a miss; if the end result
|
* hold end result was an LetGo, count it as a miss; if the end result
|
||||||
* was an OK, count a perfect. (Remember, this is just life meter
|
* was an OK, count a tier2. (Remember, this is just life meter
|
||||||
* computation, not scoring.) */
|
* computation, not scoring.) */
|
||||||
float fDeltaLife=0.f;
|
float fDeltaLife=0.f;
|
||||||
switch( GAMESTATE->m_SongOptions.m_DrainType )
|
switch( GAMESTATE->m_SongOptions.m_DrainType )
|
||||||
@@ -194,7 +194,7 @@ void LifeMeterBar::ChangeLife( HoldNoteScore score, TapNoteScore tscore )
|
|||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
}
|
}
|
||||||
if( IsHot() && score == HNS_LetGo )
|
if( IsHot() && score == HNS_LetGo )
|
||||||
fDeltaLife = -0.10f; // make it take a while to get back to "doing great"
|
fDeltaLife = -0.10f; // make it take a while to get back to "hot"
|
||||||
break;
|
break;
|
||||||
case SongOptions::DRAIN_NO_RECOVER:
|
case SongOptions::DRAIN_NO_RECOVER:
|
||||||
switch( score )
|
switch( score )
|
||||||
@@ -237,7 +237,7 @@ void LifeMeterBar::ChangeLife( float fDeltaLife )
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
fDeltaLife *= 1 + (float)m_iProgressiveLifebar/8 * m_iMissCombo;
|
fDeltaLife *= 1 + (float)m_iProgressiveLifebar/8 * m_iMissCombo;
|
||||||
// do this after; only successive boo/miss will
|
// do this after; only successive tier5/miss will
|
||||||
// increase the amount of life lost.
|
// increase the amount of life lost.
|
||||||
m_iMissCombo++;
|
m_iMissCombo++;
|
||||||
/* Increase by m_iRegenComboAfterMiss; never push it beyond m_iMaxRegenComboAfterMiss
|
/* Increase by m_iRegenComboAfterMiss; never push it beyond m_iMaxRegenComboAfterMiss
|
||||||
@@ -392,7 +392,7 @@ void LifeMeterBar::UpdateNonstopLifebar(const int cleared,
|
|||||||
* Life 16+: 200 %
|
* Life 16+: 200 %
|
||||||
*
|
*
|
||||||
* Note there is 200%, because boos take off 1/2 as much as
|
* Note there is 200%, because boos take off 1/2 as much as
|
||||||
* a miss, and a boo would suck up half of your lifebar.
|
* a miss, and a tier5 would suck up half of your lifebar.
|
||||||
*
|
*
|
||||||
* Everything past 7 is intended mainly for nonstop mode.
|
* Everything past 7 is intended mainly for nonstop mode.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ private:
|
|||||||
float m_fLifeDifficulty; // essentially same as pref
|
float m_fLifeDifficulty; // essentially same as pref
|
||||||
|
|
||||||
int m_iProgressiveLifebar; // cached from prefs
|
int m_iProgressiveLifebar; // cached from prefs
|
||||||
int m_iMissCombo; // current number of progressive boo/miss
|
int m_iMissCombo; // current number of progressive tier5/miss
|
||||||
|
|
||||||
int m_iComboToRegainLife; // combo needed before lifebar starts filling up after fail
|
int m_iComboToRegainLife; // combo needed before lifebar starts filling up after fail
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -954,8 +954,8 @@ bool BMSLoader::LoadFromDir( CString sDir, Song &out )
|
|||||||
ReadGlobalTags( aBMSData[iMainDataIndex], out );
|
ReadGlobalTags( aBMSData[iMainDataIndex], out );
|
||||||
|
|
||||||
// Override what that global tag said about the title if we have a good substring.
|
// Override what that global tag said about the title if we have a good substring.
|
||||||
// Prevents clobbering and catches "D2R (7keys)" / "D2R (Another) (7keys)"
|
// Prevents clobbering and catches "MySong (7keys)" / "MySong (Another) (7keys)"
|
||||||
// Also catches "D2R (7keys)" / "D2R (14keys)"
|
// Also catches "MySong (7keys)" / "MySong (14keys)"
|
||||||
if( commonSubstring != "" )
|
if( commonSubstring != "" )
|
||||||
GetMainAndSubTitlesFromFullTitle( commonSubstring, out.m_sMainTitle, out.m_sSubTitle );
|
GetMainAndSubTitlesFromFullTitle( commonSubstring, out.m_sMainTitle, out.m_sSubTitle );
|
||||||
|
|
||||||
|
|||||||
@@ -1396,7 +1396,7 @@ void Player::DisplayJudgedRow( int iIndexThatWasSteppedOn, TapNoteScore score, i
|
|||||||
{
|
{
|
||||||
TapNote tn = m_NoteData.GetTapNote(iTrack, iIndexThatWasSteppedOn);
|
TapNote tn = m_NoteData.GetTapNote(iTrack, iIndexThatWasSteppedOn);
|
||||||
|
|
||||||
// If the score is great or better, remove the note from the screen to
|
// If the score is tier3 or better, remove the note from the screen to
|
||||||
// indicate success. (Or always if blind is on.)
|
// indicate success. (Or always if blind is on.)
|
||||||
if( score >= TNS_Tier3 || m_pPlayerState->m_PlayerOptions.m_fBlind )
|
if( score >= TNS_Tier3 || m_pPlayerState->m_PlayerOptions.m_fBlind )
|
||||||
{
|
{
|
||||||
@@ -1426,8 +1426,8 @@ void Player::OnRowCompletelyJudged( int iIndexThatWasSteppedOn )
|
|||||||
/* Find the minimum score of the row. This will never be TNS_None, since this
|
/* Find the minimum score of the row. This will never be TNS_None, since this
|
||||||
* function is only called when a row is completed. */
|
* function is only called when a row is completed. */
|
||||||
/* Instead, use the last tap score.
|
/* Instead, use the last tap score.
|
||||||
/* I'm not sure this is right, either. Can you really jump a boo and a perfect
|
/* I'm not sure this is right, either. Can you really jump a tier5 and a tier2
|
||||||
* and get scored for a perfect? (That's so loose, you can gallop jumps.) -glenn */
|
* and get scored for a tier2? (That's so loose, you can gallop jumps.) -glenn */
|
||||||
/* Instead of grading individual columns, maybe set a "was pressed recently"
|
/* Instead of grading individual columns, maybe set a "was pressed recently"
|
||||||
* countdown every time you step on a column. When you step on the first note of
|
* countdown every time you step on a column. When you step on the first note of
|
||||||
* the jump, it sets the first "was pressed recently" timer. Then, when you do
|
* the jump, it sets the first "was pressed recently" timer. Then, when you do
|
||||||
|
|||||||
@@ -527,28 +527,28 @@ void PlayerStageStats::CalcAwards( PlayerNumber p, bool bGaveUp, bool bUsedAutop
|
|||||||
if( !GAMESTATE->IsDisqualified(p) )
|
if( !GAMESTATE->IsDisqualified(p) )
|
||||||
{
|
{
|
||||||
if( FullComboOfScore( TNS_Tier3 ) )
|
if( FullComboOfScore( TNS_Tier3 ) )
|
||||||
vPdas.push_back( AWARD_FULL_COMBO_GREATS );
|
vPdas.push_back( AWARD_FULL_COMBO_TIER3 );
|
||||||
if( SingleDigitsOfScore( TNS_Tier3 ) )
|
if( SingleDigitsOfScore( TNS_Tier3 ) )
|
||||||
vPdas.push_back( AWARD_SINGLE_DIGIT_GREATS );
|
vPdas.push_back( AWARD_SINGLE_DIGIT_TIER3 );
|
||||||
if( FullComboOfScore( TNS_Tier2 ) )
|
if( FullComboOfScore( TNS_Tier2 ) )
|
||||||
vPdas.push_back( AWARD_FULL_COMBO_PERFECTS );
|
vPdas.push_back( AWARD_FULL_COMBO_TIER2 );
|
||||||
if( SingleDigitsOfScore( TNS_Tier2 ) )
|
if( SingleDigitsOfScore( TNS_Tier2 ) )
|
||||||
vPdas.push_back( AWARD_SINGLE_DIGIT_PERFECTS );
|
vPdas.push_back( AWARD_SINGLE_DIGIT_TIER2 );
|
||||||
if( FullComboOfScore( TNS_Tier1 ) )
|
if( FullComboOfScore( TNS_Tier1 ) )
|
||||||
vPdas.push_back( AWARD_FULL_COMBO_MARVELOUSES );
|
vPdas.push_back( AWARD_FULL_COMBO_TIER1 );
|
||||||
|
|
||||||
if( OneOfScore( TNS_Tier3 ) )
|
if( OneOfScore( TNS_Tier3 ) )
|
||||||
vPdas.push_back( AWARD_ONE_GREAT );
|
vPdas.push_back( AWARD_ONE_TIER3 );
|
||||||
if( OneOfScore( TNS_Tier2 ) )
|
if( OneOfScore( TNS_Tier2 ) )
|
||||||
vPdas.push_back( AWARD_ONE_PERFECT );
|
vPdas.push_back( AWARD_ONE_TIER2 );
|
||||||
|
|
||||||
float fPercentTier3s = GetPercentageOfTaps( TNS_Tier3 );
|
float fPercentTier3s = GetPercentageOfTaps( TNS_Tier3 );
|
||||||
if( fPercentTier3s >= 0.8f )
|
if( fPercentTier3s >= 0.8f )
|
||||||
vPdas.push_back( AWARD_GREATS_80_PERCENT );
|
vPdas.push_back( AWARD_PERCENT_80_TIER3 );
|
||||||
if( fPercentTier3s >= 0.9f )
|
if( fPercentTier3s >= 0.9f )
|
||||||
vPdas.push_back( AWARD_GREATS_90_PERCENT );
|
vPdas.push_back( AWARD_PERCENT_90_TIER3 );
|
||||||
if( fPercentTier3s >= 1.f )
|
if( fPercentTier3s >= 1.f )
|
||||||
vPdas.push_back( AWARD_GREATS_100_PERCENT );
|
vPdas.push_back( AWARD_PERCENT_100_TIER3 );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Max one PDA per stage
|
// Max one PDA per stage
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ public:
|
|||||||
Preference<bool> m_bMinimum1FullSongInCourses; // FEoS for 1st song, FailImmediate thereafter
|
Preference<bool> m_bMinimum1FullSongInCourses; // FEoS for 1st song, FailImmediate thereafter
|
||||||
Preference<bool> m_bFailOffInBeginner;
|
Preference<bool> m_bFailOffInBeginner;
|
||||||
Preference<bool> m_bFailOffForFirstStageEasy;
|
Preference<bool> m_bFailOffForFirstStageEasy;
|
||||||
Preference<bool> m_bMercifulBeginner; // don't subtract from percent score or grade DP, larger boo window
|
Preference<bool> m_bMercifulBeginner; // don't subtract from percent score or grade DP, larger tier5 window
|
||||||
|
|
||||||
// percent score (the number that is shown on the screen and saved to memory card)
|
// percent score (the number that is shown on the screen and saved to memory card)
|
||||||
Preference<int> m_iPercentScoreWeightTier1;
|
Preference<int> m_iPercentScoreWeightTier1;
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ ProfileLoadResult ProfileManager::LoadProfile( PlayerNumber pn, CString sProfile
|
|||||||
|
|
||||||
if( lr == ProfileLoadResult_Success )
|
if( lr == ProfileLoadResult_Success )
|
||||||
{
|
{
|
||||||
/* Next time the profile is written, move this good profile into LastGood. */
|
/* Next time the profile is written, move this tier4 profile into LastGood. */
|
||||||
m_bNeedToBackUpLastLoad[pn] = true;
|
m_bNeedToBackUpLastLoad[pn] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -299,8 +299,8 @@ bool ProfileManager::SaveProfile( PlayerNumber pn ) const
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* If the profile we're writing was loaded from the primary (non-backup)
|
* If the profile we're writing was loaded from the primary (non-backup)
|
||||||
* data, then we've validated it and know it's good. Before writing our
|
* data, then we've validated it and know it's tier4. Before writing our
|
||||||
* new data, move the old, good data to the backup. (Only do this once;
|
* new data, move the old, tier4 data to the backup. (Only do this once;
|
||||||
* if we save the profile more than once, we havn't re-validated the
|
* if we save the profile more than once, we havn't re-validated the
|
||||||
* newly written data.)
|
* newly written data.)
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -500,11 +500,11 @@ void ScreenEvaluation::Init()
|
|||||||
int iValue;
|
int iValue;
|
||||||
switch( l )
|
switch( l )
|
||||||
{
|
{
|
||||||
case marvelous: iValue = STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_Tier1]; break;
|
case tier1: iValue = STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_Tier1]; break;
|
||||||
case perfect: iValue = STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_Tier2]; break;
|
case tier2: iValue = STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_Tier2]; break;
|
||||||
case great: iValue = STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_Tier3]; break;
|
case tier3: iValue = STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_Tier3]; break;
|
||||||
case good: iValue = STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_Tier4]; break;
|
case tier4: iValue = STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_Tier4]; break;
|
||||||
case boo: iValue = STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_Tier5]; break;
|
case tier5: iValue = STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_Tier5]; break;
|
||||||
case miss: iValue = STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_Miss]; break;
|
case miss: iValue = STATSMAN->m_CurStageStats.m_player[p].iTapNoteScores[TNS_Miss]; break;
|
||||||
case ok: iValue = STATSMAN->m_CurStageStats.m_player[p].iHoldNoteScores[HNS_Held]; break;
|
case ok: iValue = STATSMAN->m_CurStageStats.m_player[p].iHoldNoteScores[HNS_Held]; break;
|
||||||
case max_combo: iValue = STATSMAN->m_CurStageStats.m_player[p].GetMaxCombo().cnt; break;
|
case max_combo: iValue = STATSMAN->m_CurStageStats.m_player[p].GetMaxCombo().cnt; break;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
#include "ThemeMetric.h"
|
#include "ThemeMetric.h"
|
||||||
|
|
||||||
const int MAX_SONGS_TO_SHOW = 5; // In summary, we show last 3 stages, plus extra stages if passed
|
const int MAX_SONGS_TO_SHOW = 5; // In summary, we show last 3 stages, plus extra stages if passed
|
||||||
enum JudgeLine { marvelous, perfect, great, good, boo, miss, ok, max_combo, error, NUM_JUDGE_LINES };
|
enum JudgeLine { tier1, tier2, tier3, tier4, tier5, miss, ok, max_combo, error, NUM_JUDGE_LINES };
|
||||||
enum StatsLine { jumps, holds, mines, hands, rolls, NUM_STATS_LINES };
|
enum StatsLine { jumps, holds, mines, hands, rolls, NUM_STATS_LINES };
|
||||||
|
|
||||||
class ScreenEvaluation : public ScreenWithMenuElements
|
class ScreenEvaluation : public ScreenWithMenuElements
|
||||||
|
|||||||
Reference in New Issue
Block a user