From 762768e534d286acd857b363ba1e69208ec71855 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Fri, 14 May 2004 06:49:46 +0000 Subject: [PATCH] change DifficultyMeter when difficulty changes and on Roulette --- stepmania/src/DifficultyMeter.cpp | 38 +++++++++++++++++++++++++---- stepmania/src/DifficultyMeter.h | 2 ++ stepmania/src/ScreenSelectMusic.cpp | 19 ++++++++++----- 3 files changed, 48 insertions(+), 11 deletions(-) diff --git a/stepmania/src/DifficultyMeter.cpp b/stepmania/src/DifficultyMeter.cpp index 2c790f5c16..8aee796cc6 100644 --- a/stepmania/src/DifficultyMeter.cpp +++ b/stepmania/src/DifficultyMeter.cpp @@ -145,14 +145,42 @@ void DifficultyMeter::Unset() SetDifficulty( "None" ); } +void DifficultyMeter::SetFromDifficulty( Difficulty dc ) +{ + m_textFeet.SetEffectNone(); + if( FEET_IS_DIFFICULTY_COLOR ) + m_textFeet.SetDiffuse( RageColor(0.8f,0.8f,0.8f,1) ); + SetMeter( 0, DIFFICULTY_BEGINNER ); + SetDifficulty( DifficultyToString( dc ) ); +} + +void DifficultyMeter::SetFromCourseDifficulty( CourseDifficulty cd ) +{ + m_textFeet.SetEffectNone(); + if( FEET_IS_DIFFICULTY_COLOR ) + m_textFeet.SetDiffuse( RageColor(0.8f,0.8f,0.8f,1) ); + SetMeter( 0, DIFFICULTY_BEGINNER ); + SetDifficulty( CourseDifficultyToString( cd ) ); +} + void DifficultyMeter::SetFromGameState( PlayerNumber pn ) { - if( GAMESTATE->m_pCurNotes[pn] ) - SetFromNotes( GAMESTATE->m_pCurNotes[pn] ); - else if( GAMESTATE->m_pCurCourse ) - SetFromCourse( GAMESTATE->m_pCurCourse, pn ); + if( GAMESTATE->IsCourseMode() ) + { + Course* pCourse = GAMESTATE->m_pCurCourse; + if( pCourse ) + SetFromCourse( pCourse, pn ); + else + SetFromCourseDifficulty( GAMESTATE->m_PreferredCourseDifficulty[pn] ); + } else - Unset(); + { + Steps* pSteps = GAMESTATE->m_pCurNotes[pn]; + if( pSteps ) + SetFromNotes( pSteps ); + else + SetFromDifficulty( GAMESTATE->m_PreferredDifficulty[pn] ); + } } void DifficultyMeter::SetMeter( int iMeter, Difficulty dc ) diff --git a/stepmania/src/DifficultyMeter.h b/stepmania/src/DifficultyMeter.h index 2c752d5501..af1b3c3c57 100644 --- a/stepmania/src/DifficultyMeter.h +++ b/stepmania/src/DifficultyMeter.h @@ -28,6 +28,8 @@ public: void Load(); void SetFromGameState( PlayerNumber pn ); + void SetFromDifficulty( Difficulty dc ); + void SetFromCourseDifficulty( CourseDifficulty cd ); void SetFromNotes( const Steps* pNotes ); void SetFromCourse( const Course* pCourse, PlayerNumber pn ); void Unset(); diff --git a/stepmania/src/ScreenSelectMusic.cpp b/stepmania/src/ScreenSelectMusic.cpp index 627276e853..9ae9be6138 100644 --- a/stepmania/src/ScreenSelectMusic.cpp +++ b/stepmania/src/ScreenSelectMusic.cpp @@ -907,14 +907,12 @@ void ScreenSelectMusic::ChangeDifficulty( PlayerNumber pn, int dir ) else m_soundDifficultyHarder.Play(); + FOREACH_HumanPlayer( p ) { - FOREACH_HumanPlayer( p ) + if( pn == p || GAMESTATE->DifficultiesLocked() ) { - if( pn == p || GAMESTATE->DifficultiesLocked() ) - { - m_iSelection[p] = m_iSelection[pn]; - AfterNotesChange( p ); - } + m_iSelection[p] = m_iSelection[pn]; + AfterNotesChange( p ); } } break; @@ -940,6 +938,15 @@ void ScreenSelectMusic::ChangeDifficulty( PlayerNumber pn, int dir ) else m_soundDifficultyHarder.Play(); AfterMusicChange(); + + FOREACH_HumanPlayer( p ) + { + if( pn == p || GAMESTATE->DifficultiesLocked() ) + { + m_iSelection[p] = m_iSelection[pn]; + AfterNotesChange( p ); + } + } } break; }