diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index 8164915509..b0ca0de327 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -933,6 +933,7 @@ ComboUnderField=ComboUnderField() PenalizeTapScoreNone=false JudgeHoldNotesOnSameRowTogether=(GAMESTATE:GetCurrentGame():GetName() == "pump") HoldCheckpoints=(GAMESTATE:GetCurrentGame():GetName() == "pump") +CheckpointsUseTickcounts=(GAMESTATE:GetCurrentGame():GetName() == "pump") CheckpointsUseTimeSignatures=(GAMESTATE:GetCurrentGame():GetName() == "pump") CheckpointsTapsSeparateJudgment=CheckpointsTapsSeparateJudgment() CheckpointsFlashOnHold=false diff --git a/src/Player.cpp b/src/Player.cpp index ef1c9bd241..c3dfb492ba 100644 --- a/src/Player.cpp +++ b/src/Player.cpp @@ -128,6 +128,7 @@ ThemeMetric MAX_HOLD_LIFE ( "Player", "MaxHoldLife" ); // sm-ssc additio ThemeMetric PENALIZE_TAP_SCORE_NONE ( "Player", "PenalizeTapScoreNone" ); ThemeMetric JUDGE_HOLD_NOTES_ON_SAME_ROW_TOGETHER ( "Player", "JudgeHoldNotesOnSameRowTogether" ); ThemeMetric HOLD_CHECKPOINTS ( "Player", "HoldCheckpoints" ); +ThemeMetric CHECKPOINTS_USE_TICKCOUNTS ( "Player", "CheckpointsUseTickcounts" ); ThemeMetric CHECKPOINTS_USE_TIME_SIGNATURES ( "Player", "CheckpointsUseTimeSignatures" ); ThemeMetric CHECKPOINTS_FLASH_ON_HOLD ( "Player", "CheckpointsFlashOnHold" ); // sm-ssc addition ThemeMetric IMMEDIATE_HOLD_LET_GO ( "Player", "ImmediateHoldLetGo" ); @@ -2779,7 +2780,11 @@ void Player::CrossedRows( int iLastRowCrossed, const RageTimer &now ) if( HOLD_CHECKPOINTS ) { int iCheckpointFrequencyRows = ROWS_PER_BEAT/2; - if( CHECKPOINTS_USE_TIME_SIGNATURES ) + if( CHECKPOINTS_USE_TICKCOUNTS ) + { + iCheckpointFrequencyRows = ROWS_PER_BEAT / GAMESTATE->m_pCurSong->m_Timing.GetTickcountAtRow( iLastRowCrossed ); + } + else if( CHECKPOINTS_USE_TIME_SIGNATURES ) { TimeSignatureSegment tSignature = GAMESTATE->m_pCurSong->m_Timing.GetTimeSignatureSegmentAtBeat( NoteRowToBeat( iLastRowCrossed ) );