diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index e4738f3399..07377277bb 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -2997,6 +2997,10 @@ NumberMaxZoom=0.9 NumberMaxZoomAt=300 PulseZoom=1.2 TweenSeconds=0.05 +FullComboGreatsCommand= +FullComboPerfectsCommand= +FullComboMarvelousesCommand= +FullComboBrokenCommand= [Player] ReceptorArrowsYStandard=96 diff --git a/stepmania/src/Combo.cpp b/stepmania/src/Combo.cpp index d547a7f4ad..2164650053 100644 --- a/stepmania/src/Combo.cpp +++ b/stepmania/src/Combo.cpp @@ -12,6 +12,9 @@ #include "Combo.h" #include "ThemeManager.h" +#include "StageStats.h" +#include "GameState.h" +#include "Song.h" CachedThemeMetricF LABEL_X ("Combo","LabelX"); @@ -28,6 +31,10 @@ CachedThemeMetricF NUMBER_MAX_ZOOM ("Combo","NumberMaxZoom"); CachedThemeMetricF NUMBER_MAX_ZOOM_AT ("Combo","NumberMaxZoomAt"); CachedThemeMetricF PULSE_ZOOM ("Combo","PulseZoom"); CachedThemeMetricF C_TWEEN_SECONDS ("Combo","TweenSeconds"); +CachedThemeMetricF FULL_COMBO_GREATS_COMMAND ("Combo","FullComboGreatsCommand"); +CachedThemeMetricF FULL_COMBO_PERFECTS_COMMAND ("Combo","FullComboPerfectsCommand"); +CachedThemeMetricF FULL_COMBO_MARVELOUSES_COMMAND ("Combo","FullComboMarvelousesCommand"); +CachedThemeMetricF FULL_COMBO_BROKEN_COMMAND ("Combo","FullComboBrokenCommand"); Combo::Combo() @@ -46,6 +53,10 @@ Combo::Combo() NUMBER_MAX_ZOOM_AT.Refresh(); PULSE_ZOOM.Refresh(); C_TWEEN_SECONDS.Refresh(); + FULL_COMBO_GREATS_COMMAND.Refresh(); + FULL_COMBO_PERFECTS_COMMAND.Refresh(); + FULL_COMBO_MARVELOUSES_COMMAND.Refresh(); + FULL_COMBO_BROKEN_COMMAND.Refresh(); m_sprCombo.Load( THEME->GetPathToG( "Combo label") ); m_sprCombo.EnableShadow( true ); @@ -88,6 +99,39 @@ void Combo::SetCombo( int iCombo ) m_sprCombo.SetZoom( PULSE_ZOOM ); m_sprCombo.BeginTweening( C_TWEEN_SECONDS ); m_sprCombo.SetZoom( 1 ); + + + bool bPastMidpoint = GAMESTATE->GetCourseSongIndex()>0 || + GAMESTATE->m_fMusicSeconds > GAMESTATE->m_pCurSong->m_fMusicLengthSeconds/2; + + if( bPastMidpoint ) + { + if( g_CurStageStats.FullComboOfScore(m_PlayerNumber,TNS_MARVELOUS) ) + { + m_sprCombo.Command( FULL_COMBO_MARVELOUSES_COMMAND ); + m_textComboNumber.Command( FULL_COMBO_MARVELOUSES_COMMAND ); + } + else if( bPastMidpoint && g_CurStageStats.FullComboOfScore(m_PlayerNumber,TNS_PERFECT) ) + { + m_sprCombo.Command( FULL_COMBO_PERFECTS_COMMAND ); + m_textComboNumber.Command( FULL_COMBO_PERFECTS_COMMAND ); + } + else if( bPastMidpoint && g_CurStageStats.FullComboOfScore(m_PlayerNumber,TNS_GREAT) ) + { + m_sprCombo.Command( FULL_COMBO_GREATS_COMMAND ); + m_textComboNumber.Command( FULL_COMBO_GREATS_COMMAND ); + } + else + { + m_sprCombo.Command( FULL_COMBO_BROKEN_COMMAND ); + m_textComboNumber.Command( FULL_COMBO_BROKEN_COMMAND ); + } + } + else + { + m_sprCombo.Command( FULL_COMBO_BROKEN_COMMAND ); + m_textComboNumber.Command( FULL_COMBO_BROKEN_COMMAND ); + } } else {