metrics for combo logic
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 );
|
||||
|
||||
Reference in New Issue
Block a user