From 4b9a4e117b05435d2c014badfed57b0c10c0d8d4 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Thu, 10 Mar 2005 23:57:53 +0000 Subject: [PATCH] add MaxCourseEntriesBeforeShowVarious so that Artist doesn't scroll through 10s of values and BPM display doesn't display a meaningless range for endless courses --- stepmania/src/BPMDisplay.cpp | 22 +++++++++++++++++++--- stepmania/src/CommonMetrics.cpp | 19 ++++++++++--------- stepmania/src/CommonMetrics.h | 1 + stepmania/src/ScreenOptions.cpp | 5 ++++- stepmania/src/ScreenSelectMusic.cpp | 8 ++++++++ 5 files changed, 42 insertions(+), 13 deletions(-) diff --git a/stepmania/src/BPMDisplay.cpp b/stepmania/src/BPMDisplay.cpp index e5f1edc4da..3e443e838a 100644 --- a/stepmania/src/BPMDisplay.cpp +++ b/stepmania/src/BPMDisplay.cpp @@ -7,6 +7,7 @@ #include "Course.h" #include "Style.h" #include "ActorUtil.h" +#include "CommonMetrics.h" BPMDisplay::BPMDisplay() { @@ -67,8 +68,11 @@ void BPMDisplay::Update( float fDeltaTime ) { m_fBPMFrom = -1; m_textBPM.SetText( (RandomFloat(0,1)>0.90) ? CString("xxx") : ssprintf("%03.0f",RandomFloat(0,600)) ); - } else if(m_fBPMFrom == -1) + } + else if(m_fBPMFrom == -1) + { m_fBPMFrom = m_fBPMTo; + } } // update m_textBPM @@ -84,8 +88,17 @@ void BPMDisplay::SetBPMRange( const DisplayBpms &bpms ) { ASSERT( !bpms.vfBpms.empty() ); + m_BPMS.clear(); + const vector &BPMS = bpms.vfBpms; + if( BPMS.size() > MAX_COURSE_ENTRIES_BEFORE_VARIOUS ) + { + m_BPMS.push_back( -1 ); + m_textBPM.SetText( "Various" ); + return; + } + bool AllIdentical = true; for( unsigned i = 0; i < BPMS.size(); ++i ) { @@ -110,9 +123,12 @@ void BPMDisplay::SetBPMRange( const DisplayBpms &bpms ) m_textBPM.SetText( ssprintf("%i", MinBPM) ); } else + { m_textBPM.SetText( ssprintf("%i%s%i", MinBPM, SEPARATOR.GetValue().c_str(), MaxBPM) ); - } else { - m_BPMS.clear(); + } + } + else + { for( unsigned i = 0; i < BPMS.size(); ++i ) { m_BPMS.push_back(BPMS[i]); diff --git a/stepmania/src/CommonMetrics.cpp b/stepmania/src/CommonMetrics.cpp index 1b9ca492c5..ac8d9a7ebc 100644 --- a/stepmania/src/CommonMetrics.cpp +++ b/stepmania/src/CommonMetrics.cpp @@ -6,15 +6,16 @@ CString PLAYER_COLOR_NAME( size_t p ) { return ssprintf("ColorP%d",p+1); } -ThemeMetric INITIAL_SCREEN ("Common","InitialScreen"); -ThemeMetric FIRST_RUN_INITIAL_SCREEN ("Common","FirstRunInitialScreen"); -ThemeMetric DEFAULT_MODIFIERS ("Common","DefaultModifiers" ); -ThemeMetric DEFAULT_CPU_MODIFIERS ("Common","DefaultCpuModifiers" ); -ThemeMetric1D PLAYER_COLOR ("Common",PLAYER_COLOR_NAME,NUM_PLAYERS); -ThemeMetric JOIN_PAUSE_SECONDS ("Common","JoinPauseSeconds"); -ThemeMetric WINDOW_TITLE ("Common","WindowTitle"); -ThemeMetric HOME_EDIT_MODE ("Common","HomeEditMode"); -ThemeMetric MAX_STEPS_LOADED_FROM_PROFILE ("Common","MaxStepsLoadedFromProfile"); +ThemeMetric INITIAL_SCREEN ("Common","InitialScreen"); +ThemeMetric FIRST_RUN_INITIAL_SCREEN ("Common","FirstRunInitialScreen"); +ThemeMetric DEFAULT_MODIFIERS ("Common","DefaultModifiers" ); +ThemeMetric DEFAULT_CPU_MODIFIERS ("Common","DefaultCpuModifiers" ); +ThemeMetric1D PLAYER_COLOR ("Common",PLAYER_COLOR_NAME,NUM_PLAYERS); +ThemeMetric JOIN_PAUSE_SECONDS ("Common","JoinPauseSeconds"); +ThemeMetric WINDOW_TITLE ("Common","WindowTitle"); +ThemeMetric HOME_EDIT_MODE ("Common","HomeEditMode"); +ThemeMetric MAX_STEPS_LOADED_FROM_PROFILE ("Common","MaxStepsLoadedFromProfile"); +ThemeMetric MAX_COURSE_ENTRIES_BEFORE_VARIOUS ("Common","MaxCourseEntriesBeforeShowVarious"); class ThemeMetricDifficultiesToShow : ThemeMetric diff --git a/stepmania/src/CommonMetrics.h b/stepmania/src/CommonMetrics.h index 4b7d28223d..7a869bec09 100644 --- a/stepmania/src/CommonMetrics.h +++ b/stepmania/src/CommonMetrics.h @@ -16,6 +16,7 @@ extern ThemeMetric JOIN_PAUSE_SECONDS; extern ThemeMetric WINDOW_TITLE; extern ThemeMetric HOME_EDIT_MODE; extern ThemeMetric MAX_STEPS_LOADED_FROM_PROFILE; +extern ThemeMetric MAX_COURSE_ENTRIES_BEFORE_VARIOUS; namespace CommonMetrics { diff --git a/stepmania/src/ScreenOptions.cpp b/stepmania/src/ScreenOptions.cpp index e7fe8ac235..926964d66d 100644 --- a/stepmania/src/ScreenOptions.cpp +++ b/stepmania/src/ScreenOptions.cpp @@ -15,6 +15,7 @@ #include "Style.h" #include "ScreenDimensions.h" #include "Command.h" +#include "CommonMetrics.h" /* @@ -338,7 +339,9 @@ CString ScreenOptions::GetExplanationTitle( int iRow ) const pTrail->GetDisplayBpms( bpms ); } - if( bpms.IsSecret() ) + if( bpms.vfBpms.size() > MAX_COURSE_ENTRIES_BEFORE_VARIOUS ) + {} // add nothing + else if( bpms.IsSecret() ) sTitle += ssprintf( " (??" "?)" ); /* split so gcc doesn't think this is a trigraph */ else if( bpms.BpmIsConstant() ) sTitle += ssprintf( " (%.0f)", bpms.GetMin() ); diff --git a/stepmania/src/ScreenSelectMusic.cpp b/stepmania/src/ScreenSelectMusic.cpp index c89b9e5ba1..582feca4ce 100644 --- a/stepmania/src/ScreenSelectMusic.cpp +++ b/stepmania/src/ScreenSelectMusic.cpp @@ -1726,6 +1726,14 @@ void ScreenSelectMusic::AfterMusicChange() // update stage counter display (long versions/marathons) m_sprStage.Load( THEME->GetPathG(m_sName,"stage "+GAMESTATE->GetStageText()) ); + if( m_Artists.size() > MAX_COURSE_ENTRIES_BEFORE_VARIOUS ) + { + m_Artists.clear(); + m_AltArtists.clear(); + m_Artists.push_back( "Various Artists" ); + m_AltArtists.push_back( "Various Artists" ); + } + m_Artist.SetTips( m_Artists, m_AltArtists ); FOREACH_HumanPlayer( p )