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 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
+9 -25
View File
@@ -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
+4
View File
@@ -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 );