From 2385dc342f2735b1274d4fbf58342dd08dc37fee Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Sun, 3 Jun 2007 03:33:40 +0000 Subject: [PATCH] fix PO updating (fixes note skins in courses) --- stepmania/src/PlayerOptions.cpp | 14 ++++++++++++++ stepmania/src/PlayerState.cpp | 7 ++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/stepmania/src/PlayerOptions.cpp b/stepmania/src/PlayerOptions.cpp index 8a2e157353..61a71b5c17 100644 --- a/stepmania/src/PlayerOptions.cpp +++ b/stepmania/src/PlayerOptions.cpp @@ -46,6 +46,8 @@ void PlayerOptions::Approach( const PlayerOptions& other, float fDeltaSeconds ) { #define APPROACH( opt ) \ fapproach( m_ ## opt, other.m_ ## opt, fDeltaSeconds * other.m_Speed ## opt ); +#define DO_COPY( x ) \ + x = other.x; APPROACH( fTimeSpacing ); APPROACH( fScrollSpeed ); @@ -65,7 +67,19 @@ void PlayerOptions::Approach( const PlayerOptions& other, float fDeltaSeconds ) APPROACH( fSkew ); APPROACH( fPassmark ); APPROACH( fRandomSpeed ); + + DO_COPY( m_bSetScrollSpeed ); + DO_COPY( m_bSetTiltOrSkew ); + for( int i=0; i &AddTo, float level, RString name ) diff --git a/stepmania/src/PlayerState.cpp b/stepmania/src/PlayerState.cpp index 24d9d738cc..58c30a499c 100644 --- a/stepmania/src/PlayerState.cpp +++ b/stepmania/src/PlayerState.cpp @@ -48,8 +48,6 @@ void PlayerState::Reset() void PlayerState::Update( float fDelta ) { - m_PlayerOptions.Update( fDelta ); - // TRICKY: GAMESTATE->Update is run before any of the Screen update's, // so we'll clear these flags here and let them get turned on later m_bAttackBeganThisUpdate = false; @@ -88,6 +86,9 @@ void PlayerState::Update( float fDelta ) if( bRebuildPlayerOptions ) RebuildPlayerOptionsFromActiveAttacks(); + /* Update after enabling attacks, so we appraoch the new state. */ + m_PlayerOptions.Update( fDelta ); + if( m_fSecondsUntilAttacksPhasedOut > 0 ) m_fSecondsUntilAttacksPhasedOut = max( 0, m_fSecondsUntilAttacksPhasedOut - fDelta ); } @@ -103,7 +104,7 @@ void PlayerState::ResetToDefaultPlayerOptions( ModsLevel l ) * is set. This is also called by GameState::Update when activating a queued attack. */ void PlayerState::LaunchAttack( const Attack& a ) { - LOG->Trace( "Launch attack '%s' against P%d at %f", a.sModifiers.c_str(), m_mp+1, a.fStartSecond ); + LOG->Trace( "Launch attack '%s' against P%d at %f", a.sModifiers.c_str(), m_PlayerNumber+1, a.fStartSecond ); Attack attack = a;