From 02197dab9c3b29f851a6ffab85ae0e2b4070bf2a Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Fri, 18 Mar 2005 04:43:59 +0000 Subject: [PATCH] like Player, split NoteField loading into Load and Init, with Init having the expensive part, which we do only once --- stepmania/src/NoteField.cpp | 18 ++++++++++-------- stepmania/src/NoteField.h | 5 ++--- stepmania/src/Player.cpp | 7 ++++--- stepmania/src/ScreenEdit.cpp | 8 +++++--- 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/stepmania/src/NoteField.cpp b/stepmania/src/NoteField.cpp index 2365e33db2..362f852543 100644 --- a/stepmania/src/NoteField.cpp +++ b/stepmania/src/NoteField.cpp @@ -59,8 +59,8 @@ void NoteField::CacheNoteSkin( CString skin ) return; LOG->Trace("NoteField::CacheNoteSkin: cache %s", skin.c_str() ); - NoteDisplayCols *nd = new NoteDisplayCols( m_pNoteData->GetNumTracks() ); - for( int c=0; cGetNumTracks(); c++ ) + NoteDisplayCols *nd = new NoteDisplayCols( GAMESTATE->GetCurrentStyle()->m_iColsPerPlayer ); + for( int c=0; cGetCurrentStyle()->m_iColsPerPlayer; c++ ) nd->display[c].Load( c, m_pPlayerState, skin, m_fYReverseOffsetPixels ); nd->m_ReceptorArrowRow.Load( m_pPlayerState, skin, m_fYReverseOffsetPixels ); nd->m_GhostArrowRow.Load( m_pPlayerState, skin, m_fYReverseOffsetPixels ); @@ -78,25 +78,27 @@ void NoteField::CacheAllUsedNoteSkins() CacheNoteSkin( skins[i] ); } +void NoteField::Init( const PlayerState* pPlayerState, float fYReverseOffsetPixels ) +{ + m_pPlayerState = pPlayerState; + m_fYReverseOffsetPixels = fYReverseOffsetPixels; + CacheAllUsedNoteSkins(); +} + void NoteField::Load( const NoteData *pNoteData, - const PlayerState* pPlayerState, int iFirstPixelToDraw, - int iLastPixelToDraw, - float fYReverseOffsetPixels ) + int iLastPixelToDraw ) { m_pNoteData = pNoteData; - m_pPlayerState = pPlayerState; m_iStartDrawingPixel = iFirstPixelToDraw; m_iEndDrawingPixel = iLastPixelToDraw; - m_fYReverseOffsetPixels = fYReverseOffsetPixels; m_fPercentFadeToFail = -1; m_LastSeenBeatToNoteSkinRev = -1; ASSERT( m_pNoteData->GetNumTracks() == GAMESTATE->GetCurrentStyle()->m_iColsPerPlayer ); - CacheAllUsedNoteSkins(); RefreshBeatToNoteSkin(); } diff --git a/stepmania/src/NoteField.h b/stepmania/src/NoteField.h index 2708825cfd..27bfffca74 100644 --- a/stepmania/src/NoteField.h +++ b/stepmania/src/NoteField.h @@ -22,12 +22,11 @@ public: virtual void Update( float fDeltaTime ); virtual void DrawPrimitives(); + virtual void Init( const PlayerState* pPlayerState, float fYReverseOffsetPixels ); virtual void Load( const NoteData* pNoteData, - const PlayerState* pPlayerState, int iStartDrawingPixel, - int iEndDrawingPixel, - float fYReverseOffsetPixels ); + int iEndDrawingPixel ); virtual void Unload(); int m_iBeginMarker, m_iEndMarker; // only used with MODE_EDIT diff --git a/stepmania/src/Player.cpp b/stepmania/src/Player.cpp index f7da5727fa..6b3ec4d59b 100644 --- a/stepmania/src/Player.cpp +++ b/stepmania/src/Player.cpp @@ -158,6 +158,9 @@ void Player::Init( m_Combo.SetName( "Combo" ); m_Combo.Load( pn ); + m_fNoteFieldHeight = GRAY_ARROWS_Y_REVERSE-GRAY_ARROWS_Y_STANDARD; + m_pNoteField->Init( m_pPlayerState, m_fNoteFieldHeight ); + ActorUtil::OnCommand( m_Combo, sType ); } @@ -234,9 +237,7 @@ void Player::Load( const NoteData& noteData ) if( m_pNoteField ) m_pNoteField->SetY( fNoteFieldMiddle ); - m_fNoteFieldHeight = GRAY_ARROWS_Y_REVERSE-GRAY_ARROWS_Y_STANDARD; - if( m_pNoteField ) - m_pNoteField->Load( &m_NoteData, m_pPlayerState, iStartDrawingAtPixels, iStopDrawingAtPixels, m_fNoteFieldHeight ); + m_pNoteField->Load( &m_NoteData, iStartDrawingAtPixels, iStopDrawingAtPixels ); const bool bReverse = GAMESTATE->m_pPlayerState[pn]->m_PlayerOptions.GetReversePercentForColumn(0) == 1; bool bPlayerUsingBothSides = GAMESTATE->GetCurrentStyle()->m_StyleType==ONE_PLAYER_TWO_SIDES; diff --git a/stepmania/src/ScreenEdit.cpp b/stepmania/src/ScreenEdit.cpp index 728ce7315b..4d10ee5aaa 100644 --- a/stepmania/src/ScreenEdit.cpp +++ b/stepmania/src/ScreenEdit.cpp @@ -555,14 +555,16 @@ void ScreenEdit::Init() m_NoteFieldEdit.SetZoom( 0.5f ); m_NoteDataEdit.CopyAll( noteData ); - m_NoteFieldEdit.Load( &m_NoteDataEdit, GAMESTATE->m_pPlayerState[PLAYER_1], -240, 800, PLAYER_HEIGHT*2 ); + m_NoteFieldEdit.Init( GAMESTATE->m_pPlayerState[PLAYER_1], PLAYER_HEIGHT*2 ); + m_NoteFieldEdit.Load( &m_NoteDataEdit, -240, 800 ); m_rectRecordBack.StretchTo( RectF(SCREEN_LEFT, SCREEN_TOP, SCREEN_RIGHT, SCREEN_BOTTOM) ); m_rectRecordBack.SetDiffuse( RageColor(0,0,0,0) ); m_NoteFieldRecord.SetXY( EDIT_X, PLAYER_Y ); m_NoteDataRecord.CopyAll( noteData ); - m_NoteFieldRecord.Load( &m_NoteDataRecord, GAMESTATE->m_pPlayerState[PLAYER_1], -150, 350, 350 ); + m_NoteFieldRecord.Init( GAMESTATE->m_pPlayerState[PLAYER_1], 350 ); + m_NoteFieldRecord.Load( &m_NoteDataRecord, -150, 350 ); m_Clipboard.SetNumTracks( m_NoteDataEdit.GetNumTracks() ); @@ -2235,7 +2237,7 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers ) // initialize m_NoteFieldRecord m_NoteDataRecord.SetNumTracks( m_NoteDataEdit.GetNumTracks() ); m_NoteDataRecord.CopyAll( m_NoteDataEdit ); - m_NoteFieldRecord.Load( &m_NoteDataRecord, GAMESTATE->m_pPlayerState[PLAYER_1], -150, 350, 350 ); + m_NoteFieldRecord.Load( &m_NoteDataRecord, -150, 350 ); m_rectRecordBack.StopTweening(); m_rectRecordBack.BeginTweening( 0.5f );