From 1d2a5be21316b794ab7a002e63fd36687c4b0f61 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Sat, 12 Mar 2005 05:04:24 +0000 Subject: [PATCH] cache Noteskins from scripted course mods at song load time, not in first update after load --- stepmania/src/NoteField.h | 3 +-- stepmania/src/Player.cpp | 3 +++ stepmania/src/ScreenGameplay.cpp | 4 ++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/stepmania/src/NoteField.h b/stepmania/src/NoteField.h index 1c3d7c87f5..b11fc31665 100644 --- a/stepmania/src/NoteField.h +++ b/stepmania/src/NoteField.h @@ -41,6 +41,7 @@ public: void DidTapNote( int iCol, TapNoteScore score, bool bBright ); void DidHoldNote( int iCol ); + void RefreshBeatToNoteSkin(); protected: void DrawBeatBar( const float fBeat ); @@ -51,8 +52,6 @@ protected: void DrawBGChangeText( const float fBeat, const CString sNewBGName ); float GetWidth(); - void RefreshBeatToNoteSkin(); - const NoteData *m_pNoteData; float m_fPercentFadeToFail; // -1 of not fading to fail diff --git a/stepmania/src/Player.cpp b/stepmania/src/Player.cpp index 474c7c8ad4..b41ca4a1d9 100644 --- a/stepmania/src/Player.cpp +++ b/stepmania/src/Player.cpp @@ -526,6 +526,9 @@ void Player::ApplyWaitingTransforms() NoteDataUtil::TransformNoteData( m_NoteData, po, GAMESTATE->GetCurrentStyle()->m_StepsType, BeatToNoteRow(fStartBeat), BeatToNoteRow(fEndBeat) ); } m_pPlayerState->m_ModsToApply.clear(); + + // Cache used NoteSkins now, not on the next update. + m_pNoteField->RefreshBeatToNoteSkin(); } void Player::DrawPrimitives() diff --git a/stepmania/src/ScreenGameplay.cpp b/stepmania/src/ScreenGameplay.cpp index 6245311e20..df5c2c18b5 100644 --- a/stepmania/src/ScreenGameplay.cpp +++ b/stepmania/src/ScreenGameplay.cpp @@ -861,6 +861,10 @@ void ScreenGameplay::SetupSong( PlayerNumber p, int iSongIndex ) GAMESTATE->m_SongOptions.FromString( a.sModifier ); } + // UGLY: Force updating the BeatToNoteSkin mapping and cache NoteSkins now, or else + // we'll do it on the first update and skip. + m_Player[p].ApplyWaitingTransforms(); + /* Now that course options are applied, load any needed note skins and unload old ones. */ m_Player[p].CacheAllUsedNoteSkins( true );