From 27017e01dc4f3a945a7151928187bc90585c1e6c Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Sun, 11 Sep 2005 04:12:50 +0000 Subject: [PATCH] simplify: Type -> Summary, pick stage or course appropriately --- stepmania/src/ScreenEvaluation.cpp | 168 ++++++++++++----------------- stepmania/src/ScreenEvaluation.h | 6 +- 2 files changed, 70 insertions(+), 104 deletions(-) diff --git a/stepmania/src/ScreenEvaluation.cpp b/stepmania/src/ScreenEvaluation.cpp index 0cf8b9a0b2..73c46fd550 100644 --- a/stepmania/src/ScreenEvaluation.cpp +++ b/stepmania/src/ScreenEvaluation.cpp @@ -68,10 +68,6 @@ const char* STATS_STRING[NUM_STATS_LINES] = #define SHOW_TOTAL_SCORE_AREA THEME->GetMetricB(m_sName,"ShowTotalScoreArea") #define SHOW_TIME_AREA THEME->GetMetricB(m_sName,"ShowTimeArea") #define SHOW_RECORDS_AREA THEME->GetMetricB(m_sName,"ShowRecordsArea") -#define TYPE THEME->GetMetric (m_sName,"Type") -#define PASSED_SOUND_TIME THEME->GetMetricF(m_sName,"PassedSoundTime") -#define FAILED_SOUND_TIME THEME->GetMetricF(m_sName,"FailedSoundTime") -#define NUM_SEQUENCE_SOUNDS THEME->GetMetricI(m_sName,"NumSequenceSounds") #define MAX_COMBO_NUM_DIGITS THEME->GetMetricI(m_sName,"MaxComboNumDigits") #define PLAYER_OPTIONS_SEPARATOR THEME->GetMetric (m_sName,"PlayerOptionsSeparator") @@ -177,23 +173,14 @@ void ScreenEvaluation::Init() ZERO( m_bSavedScreenshot ); - CString sType = TYPE; - if( !sType.CompareNoCase("stage") ) - m_Type = stage; - else if( !sType.CompareNoCase("summary") ) - m_Type = summary; - else if( !sType.CompareNoCase("course") ) - m_Type = course; - else - RageException::Throw("Unknown evaluation type \"%s\"", TYPE.c_str() ); - + SUMMARY.Load( m_sName, "Summary" ); // // Figure out which statistics and songs we're going to display // STATSMAN->CalcAccumStageStats(); - if( m_Type == summary ) + if( SUMMARY ) STATSMAN->GetFinalEvalStageStats( STATSMAN->m_CurStageStats ); m_bFailed = STATSMAN->m_CurStageStats.AllFailed(); @@ -232,7 +219,7 @@ void ScreenEvaluation::Init() // // update persistent statistics // - STATSMAN->m_CurStageStats.CommitScores( m_Type == summary ); + STATSMAN->m_CurStageStats.CommitScores( SUMMARY ); FOREACH_HumanPlayer( p ) STATSMAN->m_CurStageStats.m_player[p].CalcAwards( p ); @@ -256,7 +243,7 @@ void ScreenEvaluation::Init() m_bTryExtraStage = GAMESTATE->HasEarnedExtraStage() && !GAMESTATE->IsCourseMode() && - m_Type != summary; + !SUMMARY; // @@ -270,91 +257,74 @@ void ScreenEvaluation::Init() // if( SHOW_BANNER_AREA ) { - switch( m_Type ) + if( SUMMARY ) { - case stage: - case course: + for( unsigned i=0; im_CurStageStats.vpPlayedSongs.size(); i++ ) { - if( GAMESTATE->IsCourseMode() ) - m_LargeBanner.LoadFromCourse( GAMESTATE->m_pCurCourse ); - else - m_LargeBanner.LoadFromSong( GAMESTATE->m_pCurSong ); - m_LargeBanner.ScaleToClipped( BANNER_WIDTH, BANNER_HEIGHT ); - m_LargeBanner.SetName( "LargeBanner" ); - SET_XY_AND_ON_COMMAND( m_LargeBanner ); - this->AddChild( &m_LargeBanner ); + Song *pSong = STATSMAN->m_CurStageStats.vpPlayedSongs[i]; - m_sprLargeBannerFrame.Load( THEME->GetPathG(m_sName,"banner frame") ); - m_sprLargeBannerFrame->SetName( "LargeBannerFrame" ); - SET_XY_AND_ON_COMMAND( m_sprLargeBannerFrame ); - this->AddChild( m_sprLargeBannerFrame ); + m_SmallBanner[i].LoadFromSong( pSong ); + m_SmallBanner[i].ScaleToClipped( BANNER_WIDTH, BANNER_HEIGHT ); + m_SmallBanner[i].SetName( ssprintf("SmallBanner%d",i+1) ); + SET_XY_AND_ON_COMMAND( m_SmallBanner[i] ); + this->AddChild( &m_SmallBanner[i] ); + + m_sprSmallBannerFrame[i].Load( THEME->GetPathG(m_sName,"banner frame") ); + m_sprSmallBannerFrame[i]->SetName( ssprintf("SmallBanner%d",i+1) ); + SET_XY_AND_ON_COMMAND( m_sprSmallBannerFrame[i] ); + this->AddChild( m_sprSmallBannerFrame[i] ); } - break; - case summary: - { - for( unsigned i=0; im_CurStageStats.vpPlayedSongs.size(); i++ ) - { - Song *pSong = STATSMAN->m_CurStageStats.vpPlayedSongs[i]; + } + else + { + if( GAMESTATE->IsCourseMode() ) + m_LargeBanner.LoadFromCourse( GAMESTATE->m_pCurCourse ); + else + m_LargeBanner.LoadFromSong( GAMESTATE->m_pCurSong ); + m_LargeBanner.ScaleToClipped( BANNER_WIDTH, BANNER_HEIGHT ); + m_LargeBanner.SetName( "LargeBanner" ); + SET_XY_AND_ON_COMMAND( m_LargeBanner ); + this->AddChild( &m_LargeBanner ); - m_SmallBanner[i].LoadFromSong( pSong ); - m_SmallBanner[i].ScaleToClipped( BANNER_WIDTH, BANNER_HEIGHT ); - m_SmallBanner[i].SetName( ssprintf("SmallBanner%d",i+1) ); - SET_XY_AND_ON_COMMAND( m_SmallBanner[i] ); - this->AddChild( &m_SmallBanner[i] ); - - m_sprSmallBannerFrame[i].Load( THEME->GetPathG(m_sName,"banner frame") ); - m_sprSmallBannerFrame[i]->SetName( ssprintf("SmallBanner%d",i+1) ); - SET_XY_AND_ON_COMMAND( m_sprSmallBannerFrame[i] ); - this->AddChild( m_sprSmallBannerFrame[i] ); - } - } - break; - default: - ASSERT(0); + m_sprLargeBannerFrame.Load( THEME->GetPathG(m_sName,"banner frame") ); + m_sprLargeBannerFrame->SetName( "LargeBannerFrame" ); + SET_XY_AND_ON_COMMAND( m_sprLargeBannerFrame ); + this->AddChild( m_sprLargeBannerFrame ); } } { - switch( m_Type ) + if( !SUMMARY ) { - case stage: - case course: + FOREACH_EnabledPlayer( p ) { - FOREACH_EnabledPlayer( p ) - { - m_DifficultyIcon[p].Load( THEME->GetPathG(m_sName,"difficulty icons") ); - if( GAMESTATE->IsCourseMode() ) - m_DifficultyIcon[p].SetFromTrail( p, GAMESTATE->m_pCurTrail[p] ); - else - m_DifficultyIcon[p].SetFromSteps( p, GAMESTATE->m_pCurSteps[p] ); - m_DifficultyIcon[p].SetName( ssprintf("DifficultyIconP%d",p+1) ); - SET_XY_AND_ON_COMMAND( m_DifficultyIcon[p] ); - this->AddChild( &m_DifficultyIcon[p] ); - - m_DifficultyMeter[p].SetName( ssprintf("DifficultyMeterP%d",p+1) ); - m_DifficultyMeter[p].Load( ssprintf("ScreenEvaluation DifficultyMeterP%d",p+1) ); - if( GAMESTATE->IsCourseMode() ) - m_DifficultyMeter[p].SetFromTrail( GAMESTATE->m_pCurTrail[p] ); - else - m_DifficultyMeter[p].SetFromSteps( GAMESTATE->m_pCurSteps[p] ); - SET_XY_AND_ON_COMMAND( m_DifficultyMeter[p] ); - this->AddChild( &m_DifficultyMeter[p] ); - - m_textPlayerOptions[p].LoadFromFont( THEME->GetPathF(m_sName,"PlayerOptions") ); - m_textPlayerOptions[p].SetName( ssprintf("PlayerOptionsP%d",p+1) ); - SET_XY_AND_ON_COMMAND( m_textPlayerOptions[p] ); - vector v; - GAMESTATE->m_pPlayerState[p]->m_PlayerOptions.GetThemedMods( v ); - CString sPO = join( PLAYER_OPTIONS_SEPARATOR, v ); - m_textPlayerOptions[p].SetText( sPO ); - this->AddChild( &m_textPlayerOptions[p] ); - } + m_DifficultyIcon[p].Load( THEME->GetPathG(m_sName,"difficulty icons") ); + if( GAMESTATE->IsCourseMode() ) + m_DifficultyIcon[p].SetFromTrail( p, GAMESTATE->m_pCurTrail[p] ); + else + m_DifficultyIcon[p].SetFromSteps( p, GAMESTATE->m_pCurSteps[p] ); + m_DifficultyIcon[p].SetName( ssprintf("DifficultyIconP%d",p+1) ); + SET_XY_AND_ON_COMMAND( m_DifficultyIcon[p] ); + this->AddChild( &m_DifficultyIcon[p] ); + + m_DifficultyMeter[p].SetName( ssprintf("DifficultyMeterP%d",p+1) ); + m_DifficultyMeter[p].Load( ssprintf("ScreenEvaluation DifficultyMeterP%d",p+1) ); + if( GAMESTATE->IsCourseMode() ) + m_DifficultyMeter[p].SetFromTrail( GAMESTATE->m_pCurTrail[p] ); + else + m_DifficultyMeter[p].SetFromSteps( GAMESTATE->m_pCurSteps[p] ); + SET_XY_AND_ON_COMMAND( m_DifficultyMeter[p] ); + this->AddChild( &m_DifficultyMeter[p] ); + + m_textPlayerOptions[p].LoadFromFont( THEME->GetPathF(m_sName,"PlayerOptions") ); + m_textPlayerOptions[p].SetName( ssprintf("PlayerOptionsP%d",p+1) ); + SET_XY_AND_ON_COMMAND( m_textPlayerOptions[p] ); + vector v; + GAMESTATE->m_pPlayerState[p]->m_PlayerOptions.GetThemedMods( v ); + CString sPO = join( PLAYER_OPTIONS_SEPARATOR, v ); + m_textPlayerOptions[p].SetText( sPO ); + this->AddChild( &m_textPlayerOptions[p] ); } - break; - case summary: - break; - default: - ASSERT(0); } } @@ -696,9 +666,12 @@ void ScreenEvaluation::Init() } else { - switch( m_Type ) + if( SUMMARY || GAMESTATE->IsCourseMode() ) + { + SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation final "+GradeToOldString(best_grade)) ); + } + else { - case stage: switch( GAMESTATE->m_PlayMode ) { case PLAY_MODE_BATTLE: @@ -714,13 +687,6 @@ void ScreenEvaluation::Init() SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation "+GradeToOldString(best_grade)) ); break; } - break; - case course: - case summary: - SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation final "+GradeToOldString(best_grade)) ); - break; - default: - ASSERT(0); } } @@ -978,9 +944,8 @@ void ScreenEvaluation::EndScreen() if( !GAMESTATE->IsEventMode() ) { - switch( m_Type ) + if( !SUMMARY && !GAMESTATE->IsCourseMode() ) { - case stage: if( !m_bTryExtraStage && (GAMESTATE->IsFinalStage() || GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2()) ) { /* Tween the screen out, but leave the MenuElements where they are. @@ -988,7 +953,6 @@ void ScreenEvaluation::EndScreen() * tween out). */ TweenOursOffScreen(); } - break; } } StartTransitioning( SM_GoToNextScreen ); diff --git a/stepmania/src/ScreenEvaluation.h b/stepmania/src/ScreenEvaluation.h index de83c60d04..8c9c330ca0 100644 --- a/stepmania/src/ScreenEvaluation.h +++ b/stepmania/src/ScreenEvaluation.h @@ -13,6 +13,7 @@ #include "PercentageDisplay.h" #include "ActorUtil.h" #include "RageSound.h" +#include "ThemeMetric.h" const int MAX_SONGS_TO_SHOW = 5; // In summary, we show last 3 stages, plus extra stages if passed enum JudgeLine { marvelous, perfect, great, good, boo, miss, ok, max_combo, error, NUM_JUDGE_LINES }; @@ -21,7 +22,6 @@ enum StatsLine { jumps, holds, mines, hands, rolls, NUM_STATS_LINES }; class ScreenEvaluation : public ScreenWithMenuElements { public: - enum Type { stage, summary, course }; ScreenEvaluation( CString sClassName ); virtual void Init(); virtual void Input( const InputEventPlus &input ); @@ -34,7 +34,7 @@ public: protected: void EndScreen(); - Type m_Type; + bool m_bSummary; // banner area Banner m_LargeBanner; @@ -97,6 +97,8 @@ protected: RageSound m_soundStart; // sound played if the player passes or fails + ThemeMetric SUMMARY; + bool m_bSavedScreenshot[NUM_PLAYERS]; };