diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 03c4f4f028..3464e5e838 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -1951,6 +1951,8 @@ BrightGhostComboThreshold=100 StartDrawingAtPixels=-60 StopDrawingAtPixels=350 MaxProTimingError=100 +TapJudgmentsUnderField=0 +HoldJudgmentsUnderField=0 [ProTimingDisplay] MarvelousCommand=shadowlength,4;diffuse,1,1,0,1;zoom,2.6;linear,0.05;zoom,2;sleep,0.8;linear,0;diffusealpha,0;glowblink;effectperiod,0.05;effectcolor1,1,1,1,0;effectcolor2,1,1,1,0.8 diff --git a/stepmania/src/Player.cpp b/stepmania/src/Player.cpp index 0cfa497b2b..c50239c4a9 100644 --- a/stepmania/src/Player.cpp +++ b/stepmania/src/Player.cpp @@ -46,6 +46,8 @@ CachedThemeMetricF GRAY_ARROWS_Y_REVERSE ("Player","GrayArrowsYReverse"); CachedThemeMetricF HOLD_JUDGMENT_Y_STANDARD ("Player","HoldJudgmentYStandard"); CachedThemeMetricF HOLD_JUDGMENT_Y_REVERSE ("Player","HoldJudgmentYReverse"); CachedThemeMetricI BRIGHT_GHOST_COMBO_THRESHOLD("Player","BrightGhostComboThreshold"); +CachedThemeMetricB TAP_JUDGMENTS_UNDER_FIELD ("Player","TapJudgmentsUnderField"); +CachedThemeMetricB HOLD_JUDGMENTS_UNDER_FIELD ("Player","HoldJudgmentsUnderField"); #define START_DRAWING_AT_PIXELS THEME->GetMetricI("Player","StartDrawingAtPixels") #define STOP_DRAWING_AT_PIXELS THEME->GetMetricI("Player","StopDrawingAtPixels") #define MAX_PRO_TIMING_ERROR THEME->GetMetricI("Player","MaxProTimingError") @@ -64,7 +66,9 @@ PlayerMinus::PlayerMinus() HOLD_JUDGMENT_Y_STANDARD.Refresh(); HOLD_JUDGMENT_Y_REVERSE.Refresh(); BRIGHT_GHOST_COMBO_THRESHOLD.Refresh(); - + TAP_JUDGMENTS_UNDER_FIELD.Refresh(); + HOLD_JUDGMENTS_UNDER_FIELD.Refresh(); + m_PlayerNumber = PLAYER_INVALID; m_pLifeMeter = NULL; @@ -429,6 +433,12 @@ void PlayerMinus::DrawPrimitives() if( GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_fBlind == 0 ) m_Combo.Draw(); + if( TAP_JUDGMENTS_UNDER_FIELD ) + DrawTapJudgments(); + + if( HOLD_JUDGMENTS_UNDER_FIELD ) + DrawHoldJudgments(); + float fTilt = GAMESTATE->m_CurrentPlayerOptions[m_PlayerNumber].m_fPerspectiveTilt; float fSkew = GAMESTATE->m_CurrentPlayerOptions[m_PlayerNumber].m_fSkew; bool bReverse = GAMESTATE->m_CurrentPlayerOptions[m_PlayerNumber].GetReversePercentForColumn(0)>0.5; @@ -470,14 +480,26 @@ void PlayerMinus::DrawPrimitives() DISPLAY->PopMatrix(); - if( GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_fBlind == 0 ) - { - if( GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_bProTiming ) - m_ProTimingDisplay.Draw(); - else - m_Judgment.Draw(); - } + if( !TAP_JUDGMENTS_UNDER_FIELD ) + DrawTapJudgments(); + if( !TAP_JUDGMENTS_UNDER_FIELD ) + DrawHoldJudgments(); +} + +void PlayerMinus::DrawTapJudgments() +{ + if( GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_fBlind ) + return; + + if( GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_bProTiming ) + m_ProTimingDisplay.Draw(); + else + m_Judgment.Draw(); +} + +void PlayerMinus::DrawHoldJudgments() +{ for( int c=0; c