From ab85bc0e83d0a75cab768795172072e765a769d6 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Tue, 12 Dec 2006 00:19:35 +0000 Subject: [PATCH] remove hard-coded loading of Board commands and make generic --- stepmania/src/NoteField.cpp | 30 ++++++++++++++++-------------- stepmania/src/NoteField.h | 6 +++--- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/stepmania/src/NoteField.cpp b/stepmania/src/NoteField.cpp index 95b247d6e7..a3f5407ecd 100644 --- a/stepmania/src/NoteField.cpp +++ b/stepmania/src/NoteField.cpp @@ -23,9 +23,7 @@ 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() { @@ -40,9 +38,8 @@ 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.RunCommands( BOARD_ON_COMMAND ); - m_sprBoard.AddCommand( "ComboStopped", BOARD_COMBO_STOPPED_COMMAND ); - this->AddChild( &m_sprBoard ); + m_sprBoard->PlayCommand( "On" ); + this->AddChild( m_sprBoard ); m_fBoardOffsetPixels = 0; m_fCurrentBeatLastUpdate = -1; @@ -192,7 +189,7 @@ void NoteField::Update( float fDeltaTime ) // update m_fBoardOffsetPixels, m_fCurrentBeatLastUpdate, m_fYPosCurrentBeatLastUpdate const float fCurrentBeat = GAMESTATE->m_fSongBeat; - bool bTweeningOn = m_sprBoard.GetCurrentDiffuseAlpha() >= 0.98 && m_sprBoard.GetCurrentDiffuseAlpha() < 1.00; // HACK + 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 ); @@ -202,7 +199,7 @@ void NoteField::Update( float fDeltaTime ) //LOG->Trace( "speed = %f, %f, %f, %f, %f, %f", fSpeed, fYOffsetAtCurrent, fYOffsetAtNext, fSecondsAtCurrent, fSecondsAtNext, fPixelDifference, fSecondsDifference ); m_fBoardOffsetPixels += fPixelDifference; - wrap( m_fBoardOffsetPixels, m_sprBoard.GetUnzoomedHeight() ); + wrap( m_fBoardOffsetPixels, m_sprBoard->GetUnzoomedHeight() ); } m_fCurrentBeatLastUpdate = fCurrentBeat; const float fYOffsetCurrent = ArrowEffects::GetYOffset( m_pPlayerState, 0, m_fCurrentBeatLastUpdate ); @@ -318,23 +315,28 @@ void NoteField::DrawBoard( int iDrawDistanceAfterTargetsPixels, int iDrawDistanc // Draw the board centered on fYPosAt0 so that the board doesn't slide as the draw distance changes with modifiers. - RectF rect = *m_sprBoard.GetCurrentTextureCoordRect(); - const float fBoardGraphicHeightPixels = m_sprBoard.GetUnzoomedHeight(); + Sprite *pSprite = dynamic_cast( (Actor*)m_sprBoard ); + if( pSprite == NULL ) + RageException::Throw( "Board must be a Sprite" ); + + + RectF rect = *pSprite->GetCurrentTextureCoordRect(); + const float fBoardGraphicHeightPixels = pSprite->GetUnzoomedHeight(); float fTexCoordOffset = m_fBoardOffsetPixels / fBoardGraphicHeightPixels; { // top half const float fHeight = iDrawDistanceBeforeTargetsPixels - iDrawDistanceAfterTargetsPixels; const float fY = fYPosAt0 - ((iDrawDistanceBeforeTargetsPixels + iDrawDistanceAfterTargetsPixels) / 2.0f); - m_sprBoard.ZoomToHeight( fHeight ); - m_sprBoard.SetY( fY ); + pSprite->ZoomToHeight( fHeight ); + pSprite->SetY( fY ); rect.top = -fTexCoordOffset-(iDrawDistanceBeforeTargetsPixels/fBoardGraphicHeightPixels); rect.bottom = -fTexCoordOffset+(-iDrawDistanceAfterTargetsPixels/fBoardGraphicHeightPixels); - m_sprBoard.SetCustomTextureRect( rect ); + pSprite->SetCustomTextureRect( rect ); float fFadeTop = FADE_BEFORE_TARGETS_PERCENT * iDrawDistanceBeforeTargetsPixels / (iDrawDistanceBeforeTargetsPixels-iDrawDistanceAfterTargetsPixels); - m_sprBoard.SetFadeTop( fFadeTop ); - m_sprBoard.Draw(); + pSprite->SetFadeTop( fFadeTop ); + pSprite->Draw(); } } diff --git a/stepmania/src/NoteField.h b/stepmania/src/NoteField.h index acc47359d4..ae69b4b138 100644 --- a/stepmania/src/NoteField.h +++ b/stepmania/src/NoteField.h @@ -83,11 +83,11 @@ protected: /* All loaded note displays, mapped by their name. */ map m_NoteDisplays; - NoteDisplayCols *m_pCurDisplay; - NoteDisplayCols *m_pDisplays[NUM_PlayerNumber]; + NoteDisplayCols *m_pCurDisplay; + NoteDisplayCols *m_pDisplays[NUM_PlayerNumber]; // decorations, mostly used in MODE_EDIT - Sprite m_sprBoard; + AutoActor m_sprBoard; float m_fBoardOffsetPixels; float m_fCurrentBeatLastUpdate; // -1 on first update float m_fYPosCurrentBeatLastUpdate; // -1 on first update