From f1254b50deb2d518f3c6909ba8162c3d563d1004 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Tue, 27 Jul 2004 04:31:01 +0000 Subject: [PATCH] vector<> for members --- stepmania/src/GhostArrowRow.cpp | 93 ++++++++++++++++++++------------- stepmania/src/GhostArrowRow.h | 8 +-- 2 files changed, 63 insertions(+), 38 deletions(-) diff --git a/stepmania/src/GhostArrowRow.cpp b/stepmania/src/GhostArrowRow.cpp index e6cea90b02..9f94dece4d 100644 --- a/stepmania/src/GhostArrowRow.cpp +++ b/stepmania/src/GhostArrowRow.cpp @@ -14,9 +14,11 @@ GhostArrowRow::GhostArrowRow() { m_iNumCols = 0; } - +#include "RageLog.h" void GhostArrowRow::Load( PlayerNumber pn, CString NoteSkin, float fYReverseOffset ) { + Unload(); + m_PlayerNumber = pn; m_fYReverseOffsetPixels = fYReverseOffset; @@ -24,6 +26,7 @@ void GhostArrowRow::Load( PlayerNumber pn, CString NoteSkin, float fYReverseOffs m_iNumCols = pStyle->m_iColsPerPlayer; + LOG->Trace("xxxsz: %i, %i", sizeof(GhostArrow), sizeof(HoldGhostArrow)); // init arrows for( int c=0; cSetName( "GhostArrowDim" ); + m_GhostBright[c]->SetName( "GhostArrowBright" ); + m_HoldGhost[c]->SetName( "HoldGhostArrow" ); + + m_GhostDim[c]->Init( pn ); + m_GhostBright[c]->Init( pn ); + //m_HoldGhost[c]->Init( pn ); + + m_GhostDim[c]->Load( NoteSkin, Button, "tap explosion dim" ); + m_GhostBright[c]->Load( NoteSkin, Button, "tap explosion bright" ); + m_HoldGhost[c]->Load( NoteSkin, Button, "hold explosion" ); } } +void GhostArrowRow::Unload() +{ + for( int i = 0; i < m_iNumCols; ++i ) + { + delete m_GhostDim[i]; + delete m_GhostBright[i]; + delete m_HoldGhost[i]; + } + + m_GhostDim.clear(); + m_GhostBright.clear(); + m_HoldGhost.clear(); + + m_iNumCols = 0; +} + void GhostArrowRow::Update( float fDeltaTime ) { for( int c=0; cUpdate( fDeltaTime ); + m_GhostBright[c]->Update( fDeltaTime ); + m_HoldGhost[c]->Update( fDeltaTime ); const float fX = ArrowGetXPos( m_PlayerNumber, c, 0 ); const float fY = ArrowGetYPos( m_PlayerNumber, c, 0, m_fYReverseOffsetPixels ); const float fZ = ArrowGetZPos( m_PlayerNumber, c, 0 ); - m_GhostDim[c].SetX( fX ); - m_GhostBright[c].SetX( fX ); - m_HoldGhost[c].SetX( fX ); + m_GhostDim[c]->SetX( fX ); + m_GhostBright[c]->SetX( fX ); + m_HoldGhost[c]->SetX( fX ); - m_GhostDim[c].SetY( fY ); - m_GhostBright[c].SetY( fY ); - m_HoldGhost[c].SetY( fY ); + m_GhostDim[c]->SetY( fY ); + m_GhostBright[c]->SetY( fY ); + m_HoldGhost[c]->SetY( fY ); - m_GhostDim[c].SetZ( fZ ); - m_GhostBright[c].SetZ( fZ ); - m_HoldGhost[c].SetZ( fZ ); + m_GhostDim[c]->SetZ( fZ ); + m_GhostBright[c]->SetZ( fZ ); + m_HoldGhost[c]->SetZ( fZ ); const float fZoom = ArrowGetZoom( m_PlayerNumber ); - m_GhostDim[c].SetZoom( fZoom ); - m_GhostBright[c].SetZoom( fZoom ); - m_HoldGhost[c].SetZoom( fZoom ); + m_GhostDim[c]->SetZoom( fZoom ); + m_GhostBright[c]->SetZoom( fZoom ); + m_HoldGhost[c]->SetZoom( fZoom ); } } @@ -84,9 +107,9 @@ void GhostArrowRow::DrawPrimitives() { g_NoteFieldMode[m_PlayerNumber].BeginDrawTrack(c); - m_GhostDim[c].Draw(); - m_GhostBright[c].Draw(); - m_HoldGhost[c].Draw(); + m_GhostDim[c]->Draw(); + m_GhostBright[c]->Draw(); + m_HoldGhost[c]->Draw(); g_NoteFieldMode[m_PlayerNumber].EndDrawTrack(c); } @@ -97,24 +120,24 @@ void GhostArrowRow::DidTapNote( int iCol, TapNoteScore score, bool bBright ) { ASSERT( iCol >= 0 && iCol < m_iNumCols ); if( bBright ) - m_GhostBright[iCol].Step( score ); + m_GhostBright[iCol]->Step( score ); else - m_GhostDim[iCol].Step( score ); + m_GhostDim[iCol]->Step( score ); } void GhostArrowRow::SetHoldIsActive( int iCol ) { ASSERT( iCol >= 0 && iCol < m_iNumCols ); - m_HoldGhost[iCol].SetHoldIsActive( true ); + m_HoldGhost[iCol]->SetHoldIsActive( true ); } void GhostArrowRow::CopyTweening( const GhostArrowRow &from ) { for( int c=0; cCopyTweening( *from.m_GhostDim[c] ); + m_GhostBright[c]->CopyTweening( *from.m_GhostBright[c] ); + m_HoldGhost[c]->CopyTweening( *from.m_HoldGhost[c] ); } ActorFrame::CopyTweening( from ); } diff --git a/stepmania/src/GhostArrowRow.h b/stepmania/src/GhostArrowRow.h index 06acf36dfd..4bb347347e 100644 --- a/stepmania/src/GhostArrowRow.h +++ b/stepmania/src/GhostArrowRow.h @@ -15,11 +15,13 @@ class GhostArrowRow : public ActorFrame { public: GhostArrowRow(); + virtual ~GhostArrowRow() { Unload(); } virtual void Update( float fDeltaTime ); virtual void DrawPrimitives(); virtual void CopyTweening( const GhostArrowRow &from ); void Load( PlayerNumber pn, CString NoteSkin, float fYReverseOffset ); + void Unload(); void DidTapNote( int iCol, TapNoteScore score, bool bBright ); void SetHoldIsActive( int iCol ); @@ -29,9 +31,9 @@ protected: float m_fYReverseOffsetPixels; PlayerNumber m_PlayerNumber; - GhostArrow m_GhostDim[MAX_NOTE_TRACKS]; - GhostArrow m_GhostBright[MAX_NOTE_TRACKS]; - HoldGhostArrow m_HoldGhost[MAX_NOTE_TRACKS]; + vector m_GhostDim; + vector m_GhostBright; + vector m_HoldGhost; };