metrics for combo logic

This commit is contained in:
Glenn Maynard
2005-06-16 07:44:24 +00:00
parent 1338593f54
commit 92dce8ef1b
3 changed files with 18 additions and 25 deletions
+5
View File
@@ -15,6 +15,11 @@ OverlayScreens=ScreenSystemLayer,ScreenSyncOverlay,ScreenDebugOverlay
EditMode=2
MaxCourseEntriesBeforeShowVarious=6
[Gameplay]
ComboIsPerRow=GAMESTATE:GetPlayMode() == PLAY_MODE_REGULAR
MinScoreToContinueCombo=%function() if GAMESTATE:GetPlayMode() == PLAY_MODE_ONI then return TNS_PERFECT else return TNS_GREAT end end
MinScoreToMaintainCombo=TNS_GREAT
[Screen]
InitCommand=
AllowOperatorMenuButton=1
+9 -25
View File
@@ -33,6 +33,11 @@ void ScoreKeeperMAX2::Load(
ASSERT( apSongs.size() == apSteps.size() );
ASSERT( apSongs.size() == asModifiers.size() );
/* True if a jump is one to combo, false if combo is purely based on tap count. */
m_bComboIsPerRow = THEME->GetMetricB( "Gameplay", "ComboIsPerRow" );
m_MinScoreToContinueCombo = (TapNoteScore) THEME->GetMetricI( "Gameplay", "MinScoreToContinueCombo" );
m_MinScoreToMaintainCombo = (TapNoteScore) THEME->GetMetricI( "Gameplay", "MinScoreToMaintainCombo" );
//
// Fill in STATSMAN->m_CurStageStats, calculate multiplier
//
@@ -357,32 +362,11 @@ void ScoreKeeperMAX2::HandleTapRowScore( TapNoteScore scoreOfLastTap, int iNumTa
//
// Regular combo
//
/*
Your combo counter only increased with a "Marvelous/Perfect", and double Marvelous/Perfect steps (left and right, etc.)
only add 1 to your combo instead of 2. The combo counter thus becomes a "Marvelous/Perfect" counter.
*/
/* True if a jump is one to combo, false if combo is purely based on tap count. */
bool ComboIsPerRow = true;
switch( PREFSMAN->m_ScoringType )
{
case PrefsManager::SCORING_MAX2:
ComboIsPerRow = (GAMESTATE->m_PlayMode == PLAY_MODE_ONI);
break;
case PrefsManager::SCORING_5TH:
ComboIsPerRow = true;
break;
default:
ASSERT(0);
}
const int ComboCountIfHit = ComboIsPerRow? 1: iNumTapsInRow;
TapNoteScore MinScoreToContinueCombo = GAMESTATE->m_PlayMode == PLAY_MODE_ONI? TNS_PERFECT:TNS_GREAT;
TapNoteScore MinScoreToMaintainCombo = TNS_GREAT;
if( scoreOfLastTap >= MinScoreToContinueCombo )
m_pPlayerStageStats->iCurCombo += ComboCountIfHit;
const int iComboCountIfHit = m_bComboIsPerRow? 1: iNumTapsInRow;
if( scoreOfLastTap >= m_MinScoreToContinueCombo )
m_pPlayerStageStats->iCurCombo += iComboCountIfHit;
else
if( scoreOfLastTap < MinScoreToMaintainCombo )
if( scoreOfLastTap < m_MinScoreToMaintainCombo )
m_pPlayerStageStats->iCurCombo = 0;
AddScore( scoreOfLastTap ); // only score once per row
+4
View File
@@ -22,6 +22,10 @@ class ScoreKeeperMAX2: public ScoreKeeper
bool m_bIsLastSongInCourse;
bool m_bIsBeginner;
bool m_bComboIsPerRow;
TapNoteScore m_MinScoreToContinueCombo;
TapNoteScore m_MinScoreToMaintainCombo;
vector<Steps*> m_apSteps;
void AddScore( TapNoteScore score );