From 59570b25d125fd1bc58673a42c7dd0796d855af9 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Wed, 12 Oct 2005 04:05:54 +0000 Subject: [PATCH] send HoldingOn/HoldingOff to allow implementing hold explosions generically --- stepmania/src/GhostArrowRow.cpp | 15 +++++++++++++++ stepmania/src/GhostArrowRow.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/stepmania/src/GhostArrowRow.cpp b/stepmania/src/GhostArrowRow.cpp index 79a056f1db..a6e37e47c9 100644 --- a/stepmania/src/GhostArrowRow.cpp +++ b/stepmania/src/GhostArrowRow.cpp @@ -32,6 +32,9 @@ void GhostArrowRow::Load( const PlayerState* pPlayerState, float fYReverseOffset m_HoldGhost[c]->SetName( "HoldGhostArrow" ); m_HoldGhost[c]->Load( sButton, "hold explosion" ); + m_bHoldIsActive.push_back( false ); + m_bHoldWasActive.push_back( false ); + m_Ghost.push_back( ActorUtil::MakeActor( NOTESKIN->GetPath(sButton, "tap explosion") ) ); m_Ghost[c]->SetName( "GhostArrow" ); } @@ -71,6 +74,16 @@ void GhostArrowRow::Update( float fDeltaTime ) m_Ghost[c]->SetZoom( fZoom ); m_HoldGhost[c]->SetZoom( fZoom ); } + + for( unsigned i = 0; i < m_bHoldIsActive.size(); ++i ) + { + if( !m_bHoldWasActive[i] && m_bHoldIsActive[i] ) + m_Ghost[i]->PlayCommand( "HoldingOn" ); + else if( m_bHoldWasActive[i] && !m_bHoldIsActive[i] ) + m_Ghost[i]->PlayCommand( "HoldingOff" ); + m_bHoldWasActive[i] = m_bHoldIsActive[i]; + m_bHoldIsActive[i] = false; + } } void GhostArrowRow::DrawPrimitives() @@ -118,7 +131,9 @@ void GhostArrowRow::DidHoldNote( int iCol, HoldNoteScore hns, bool bBright ) void GhostArrowRow::SetHoldIsActive( int iCol ) { ASSERT( iCol >= 0 && iCol < (int) m_Ghost.size() ); + m_HoldGhost[iCol]->SetHoldIsActive( true ); + m_bHoldIsActive[iCol] = true; } /* diff --git a/stepmania/src/GhostArrowRow.h b/stepmania/src/GhostArrowRow.h index aa77d8108c..6deb352982 100644 --- a/stepmania/src/GhostArrowRow.h +++ b/stepmania/src/GhostArrowRow.h @@ -29,6 +29,8 @@ protected: vector m_Ghost; vector m_HoldGhost; + vector m_bHoldIsActive; + vector m_bHoldWasActive; };