From d78274b515740fff924c0daacb05a5cd9091a2d2 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Mon, 11 Dec 2006 14:20:08 +0000 Subject: [PATCH] add ComboStopped commands --- stepmania/Themes/default/metrics.ini | 2 ++ stepmania/src/NoteField.cpp | 12 ++++++++---- stepmania/src/Player.cpp | 6 ++++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 3c7c740e19..17970007cb 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -4775,3 +4775,5 @@ ShowBoard=false ShowBeatBars=false FadeBeforeTargetsPercent=0 BoardOnCommand= +ComboStoppedCommand= +BoardComboStoppedCommand= diff --git a/stepmania/src/NoteField.cpp b/stepmania/src/NoteField.cpp index 03883eda82..95b247d6e7 100644 --- a/stepmania/src/NoteField.cpp +++ b/stepmania/src/NoteField.cpp @@ -24,6 +24,8 @@ static ThemeMetric SHOW_BOARD( "NoteField", "ShowBoard" ); static ThemeMetric SHOW_BEAT_BARS( "NoteField", "ShowBeatBars" ); static ThemeMetric FADE_BEFORE_TARGETS_PERCENT( "NoteField", "FadeBeforeTargetsPercent" ); static ThemeMetric BOARD_ON_COMMAND( "NoteField", "BoardOnCommand" ); +static ThemeMetric COMBO_STOPPED_COMMAND( "NoteField", "ComboStoppedCommand" ); +static ThemeMetric BOARD_COMBO_STOPPED_COMMAND( "NoteField", "BoardComboStoppedCommand" ); NoteField::NoteField() { @@ -38,8 +40,9 @@ NoteField::NoteField() m_rectMarkerBar.SetEffectDiffuseShift( 2, RageColor(1,1,1,0.5f), RageColor(0.5f,0.5f,0.5f,0.5f) ); m_sprBoard.Load( THEME->GetPathG("NoteField","board") ); - m_sprBoard.StopAnimating(); m_sprBoard.RunCommands( BOARD_ON_COMMAND ); + m_sprBoard.AddCommand( "ComboStopped", BOARD_COMBO_STOPPED_COMMAND ); + this->AddChild( &m_sprBoard ); m_fBoardOffsetPixels = 0; m_fCurrentBeatLastUpdate = -1; @@ -52,6 +55,8 @@ NoteField::NoteField() m_iBeginMarker = m_iEndMarker = -1; m_fPercentFadeToFail = -1; + + this->AddCommand( "ComboStopped", COMBO_STOPPED_COMMAND ); } NoteField::~NoteField() @@ -185,11 +190,10 @@ void NoteField::Update( float fDeltaTime ) ActorFrame::Update( fDeltaTime ); - m_sprBoard.Update( fDeltaTime ); - // update m_fBoardOffsetPixels, m_fCurrentBeatLastUpdate, m_fYPosCurrentBeatLastUpdate const float fCurrentBeat = GAMESTATE->m_fSongBeat; - if( m_sprBoard.GetTweenTimeLeft() == 0 && m_fCurrentBeatLastUpdate != -1 ) + bool bTweeningOn = m_sprBoard.GetCurrentDiffuseAlpha() >= 0.98 && m_sprBoard.GetCurrentDiffuseAlpha() < 1.00; // HACK + if( !bTweeningOn && m_fCurrentBeatLastUpdate != -1 ) { const float fYOffsetLast = ArrowEffects::GetYOffset( m_pPlayerState, 0, m_fCurrentBeatLastUpdate ); const float fYPosLast = ArrowEffects::GetYPos( m_pPlayerState, 0, fYOffsetLast, m_fYReverseOffsetPixels ); diff --git a/stepmania/src/Player.cpp b/stepmania/src/Player.cpp index d354933235..e162e0c936 100644 --- a/stepmania/src/Player.cpp +++ b/stepmania/src/Player.cpp @@ -2009,7 +2009,13 @@ void Player::HandleTapRowScore( unsigned row ) const int iCurMissCombo = m_pPlayerStageStats ? m_pPlayerStageStats->m_iCurMissCombo : 0; if( iOldCombo > 50 && iCurCombo < 50 ) + { SCREENMAN->PostMessageToTopScreen( SM_ComboStopped, 0 ); + } + if( iOldCombo > 10 && iCurCombo < 10 ) + { + m_pNoteField->PlayCommand( "ComboStopped" ); + } SendComboMessage( iOldCombo, iOldMissCombo );