metrics for combo logic
This commit is contained in:
@@ -15,6 +15,11 @@ OverlayScreens=ScreenSystemLayer,ScreenSyncOverlay,ScreenDebugOverlay
|
|||||||
EditMode=2
|
EditMode=2
|
||||||
MaxCourseEntriesBeforeShowVarious=6
|
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]
|
[Screen]
|
||||||
InitCommand=
|
InitCommand=
|
||||||
AllowOperatorMenuButton=1
|
AllowOperatorMenuButton=1
|
||||||
|
|||||||
@@ -33,6 +33,11 @@ void ScoreKeeperMAX2::Load(
|
|||||||
ASSERT( apSongs.size() == apSteps.size() );
|
ASSERT( apSongs.size() == apSteps.size() );
|
||||||
ASSERT( apSongs.size() == asModifiers.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
|
// Fill in STATSMAN->m_CurStageStats, calculate multiplier
|
||||||
//
|
//
|
||||||
@@ -357,32 +362,11 @@ void ScoreKeeperMAX2::HandleTapRowScore( TapNoteScore scoreOfLastTap, int iNumTa
|
|||||||
//
|
//
|
||||||
// Regular combo
|
// Regular combo
|
||||||
//
|
//
|
||||||
|
const int iComboCountIfHit = m_bComboIsPerRow? 1: iNumTapsInRow;
|
||||||
/*
|
if( scoreOfLastTap >= m_MinScoreToContinueCombo )
|
||||||
Your combo counter only increased with a "Marvelous/Perfect", and double Marvelous/Perfect steps (left and right, etc.)
|
m_pPlayerStageStats->iCurCombo += iComboCountIfHit;
|
||||||
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;
|
|
||||||
else
|
else
|
||||||
if( scoreOfLastTap < MinScoreToMaintainCombo )
|
if( scoreOfLastTap < m_MinScoreToMaintainCombo )
|
||||||
m_pPlayerStageStats->iCurCombo = 0;
|
m_pPlayerStageStats->iCurCombo = 0;
|
||||||
|
|
||||||
AddScore( scoreOfLastTap ); // only score once per row
|
AddScore( scoreOfLastTap ); // only score once per row
|
||||||
|
|||||||
@@ -22,6 +22,10 @@ class ScoreKeeperMAX2: public ScoreKeeper
|
|||||||
bool m_bIsLastSongInCourse;
|
bool m_bIsLastSongInCourse;
|
||||||
bool m_bIsBeginner;
|
bool m_bIsBeginner;
|
||||||
|
|
||||||
|
bool m_bComboIsPerRow;
|
||||||
|
TapNoteScore m_MinScoreToContinueCombo;
|
||||||
|
TapNoteScore m_MinScoreToMaintainCombo;
|
||||||
|
|
||||||
vector<Steps*> m_apSteps;
|
vector<Steps*> m_apSteps;
|
||||||
|
|
||||||
void AddScore( TapNoteScore score );
|
void AddScore( TapNoteScore score );
|
||||||
|
|||||||
Reference in New Issue
Block a user