From 89ba014f155ef5eb5785da606552f597c5fe07e8 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Fri, 28 Mar 2003 05:47:42 +0000 Subject: [PATCH] Simplifed ScreenEvaluation Fix problems in SMMAX2 theme --- .../ScreenEvaluationEndless in.redir | 1 + .../ScreenEvaluationEndless out.redir | 1 + .../ScreenEvaluationNonstop in.redir | 1 + .../ScreenEvaluationNonstop out.redir | 1 + .../BGAnimations/ScreenEvaluationOni in.redir | 1 + .../ScreenEvaluationOni out.redir | 1 + .../ScreenEvaluationEndless footer.redir | 1 + .../ScreenEvaluationEndless header.redir | 1 + .../ScreenEvaluationNonstop footer.redir | 1 + .../ScreenEvaluationNonstop header.redir | 1 + .../Graphics/ScreenEvaluationOni footer.redir | 1 + .../Graphics/ScreenEvaluationOni header.redir | 1 + stepmania/src/Screen.cpp | 4 +- stepmania/src/ScreenEvaluation.cpp | 750 +++++++++--------- stepmania/src/ScreenEvaluation.h | 52 +- stepmania/src/ScreenGameplay.cpp | 12 +- 16 files changed, 432 insertions(+), 398 deletions(-) create mode 100644 stepmania/Themes/default/BGAnimations/ScreenEvaluationEndless in.redir create mode 100644 stepmania/Themes/default/BGAnimations/ScreenEvaluationEndless out.redir create mode 100644 stepmania/Themes/default/BGAnimations/ScreenEvaluationNonstop in.redir create mode 100644 stepmania/Themes/default/BGAnimations/ScreenEvaluationNonstop out.redir create mode 100644 stepmania/Themes/default/BGAnimations/ScreenEvaluationOni in.redir create mode 100644 stepmania/Themes/default/BGAnimations/ScreenEvaluationOni out.redir create mode 100644 stepmania/Themes/default/Graphics/ScreenEvaluationEndless footer.redir create mode 100644 stepmania/Themes/default/Graphics/ScreenEvaluationEndless header.redir create mode 100644 stepmania/Themes/default/Graphics/ScreenEvaluationNonstop footer.redir create mode 100644 stepmania/Themes/default/Graphics/ScreenEvaluationNonstop header.redir create mode 100644 stepmania/Themes/default/Graphics/ScreenEvaluationOni footer.redir create mode 100644 stepmania/Themes/default/Graphics/ScreenEvaluationOni header.redir diff --git a/stepmania/Themes/default/BGAnimations/ScreenEvaluationEndless in.redir b/stepmania/Themes/default/BGAnimations/ScreenEvaluationEndless in.redir new file mode 100644 index 0000000000..4ac71acd6e --- /dev/null +++ b/stepmania/Themes/default/BGAnimations/ScreenEvaluationEndless in.redir @@ -0,0 +1 @@ +ScreenEvaluationStage in \ No newline at end of file diff --git a/stepmania/Themes/default/BGAnimations/ScreenEvaluationEndless out.redir b/stepmania/Themes/default/BGAnimations/ScreenEvaluationEndless out.redir new file mode 100644 index 0000000000..bbdb19fddf --- /dev/null +++ b/stepmania/Themes/default/BGAnimations/ScreenEvaluationEndless out.redir @@ -0,0 +1 @@ +ScreenEvaluationSummary out \ No newline at end of file diff --git a/stepmania/Themes/default/BGAnimations/ScreenEvaluationNonstop in.redir b/stepmania/Themes/default/BGAnimations/ScreenEvaluationNonstop in.redir new file mode 100644 index 0000000000..4ac71acd6e --- /dev/null +++ b/stepmania/Themes/default/BGAnimations/ScreenEvaluationNonstop in.redir @@ -0,0 +1 @@ +ScreenEvaluationStage in \ No newline at end of file diff --git a/stepmania/Themes/default/BGAnimations/ScreenEvaluationNonstop out.redir b/stepmania/Themes/default/BGAnimations/ScreenEvaluationNonstop out.redir new file mode 100644 index 0000000000..bbdb19fddf --- /dev/null +++ b/stepmania/Themes/default/BGAnimations/ScreenEvaluationNonstop out.redir @@ -0,0 +1 @@ +ScreenEvaluationSummary out \ No newline at end of file diff --git a/stepmania/Themes/default/BGAnimations/ScreenEvaluationOni in.redir b/stepmania/Themes/default/BGAnimations/ScreenEvaluationOni in.redir new file mode 100644 index 0000000000..4ac71acd6e --- /dev/null +++ b/stepmania/Themes/default/BGAnimations/ScreenEvaluationOni in.redir @@ -0,0 +1 @@ +ScreenEvaluationStage in \ No newline at end of file diff --git a/stepmania/Themes/default/BGAnimations/ScreenEvaluationOni out.redir b/stepmania/Themes/default/BGAnimations/ScreenEvaluationOni out.redir new file mode 100644 index 0000000000..bbdb19fddf --- /dev/null +++ b/stepmania/Themes/default/BGAnimations/ScreenEvaluationOni out.redir @@ -0,0 +1 @@ +ScreenEvaluationSummary out \ No newline at end of file diff --git a/stepmania/Themes/default/Graphics/ScreenEvaluationEndless footer.redir b/stepmania/Themes/default/Graphics/ScreenEvaluationEndless footer.redir new file mode 100644 index 0000000000..81b63f5281 --- /dev/null +++ b/stepmania/Themes/default/Graphics/ScreenEvaluationEndless footer.redir @@ -0,0 +1 @@ +_shared footer.png \ No newline at end of file diff --git a/stepmania/Themes/default/Graphics/ScreenEvaluationEndless header.redir b/stepmania/Themes/default/Graphics/ScreenEvaluationEndless header.redir new file mode 100644 index 0000000000..cc40be9fcd --- /dev/null +++ b/stepmania/Themes/default/Graphics/ScreenEvaluationEndless header.redir @@ -0,0 +1 @@ +ScreenEvaluationStage header.png \ No newline at end of file diff --git a/stepmania/Themes/default/Graphics/ScreenEvaluationNonstop footer.redir b/stepmania/Themes/default/Graphics/ScreenEvaluationNonstop footer.redir new file mode 100644 index 0000000000..81b63f5281 --- /dev/null +++ b/stepmania/Themes/default/Graphics/ScreenEvaluationNonstop footer.redir @@ -0,0 +1 @@ +_shared footer.png \ No newline at end of file diff --git a/stepmania/Themes/default/Graphics/ScreenEvaluationNonstop header.redir b/stepmania/Themes/default/Graphics/ScreenEvaluationNonstop header.redir new file mode 100644 index 0000000000..cc40be9fcd --- /dev/null +++ b/stepmania/Themes/default/Graphics/ScreenEvaluationNonstop header.redir @@ -0,0 +1 @@ +ScreenEvaluationStage header.png \ No newline at end of file diff --git a/stepmania/Themes/default/Graphics/ScreenEvaluationOni footer.redir b/stepmania/Themes/default/Graphics/ScreenEvaluationOni footer.redir new file mode 100644 index 0000000000..81b63f5281 --- /dev/null +++ b/stepmania/Themes/default/Graphics/ScreenEvaluationOni footer.redir @@ -0,0 +1 @@ +_shared footer.png \ No newline at end of file diff --git a/stepmania/Themes/default/Graphics/ScreenEvaluationOni header.redir b/stepmania/Themes/default/Graphics/ScreenEvaluationOni header.redir new file mode 100644 index 0000000000..cc40be9fcd --- /dev/null +++ b/stepmania/Themes/default/Graphics/ScreenEvaluationOni header.redir @@ -0,0 +1 @@ +ScreenEvaluationStage header.png \ No newline at end of file diff --git a/stepmania/src/Screen.cpp b/stepmania/src/Screen.cpp index 65f360e996..6bd5fad4c0 100644 --- a/stepmania/src/Screen.cpp +++ b/stepmania/src/Screen.cpp @@ -282,7 +282,9 @@ Screen* Screen::Create( CString sClassName ) else if( 0==stricmp(sClassName, "ScreenEditMenu") ) ret = new ScreenEditMenu; else if( 0==stricmp(sClassName, "ScreenEvaluationStage") ) ret = new ScreenEvaluationStage; else if( 0==stricmp(sClassName, "ScreenEvaluationSummary") ) ret = new ScreenEvaluationSummary; - else if( 0==stricmp(sClassName, "ScreenEvaluationCourse") ) ret = new ScreenEvaluationCourse; + else if( 0==stricmp(sClassName, "ScreenEvaluationNonstop") ) ret = new ScreenEvaluationNonstop; + else if( 0==stricmp(sClassName, "ScreenEvaluationOni") ) ret = new ScreenEvaluationOni; + else if( 0==stricmp(sClassName, "ScreenEvaluationEndless") ) ret = new ScreenEvaluationEndless; else if( 0==stricmp(sClassName, "ScreenEz2SelectPlayer") ) ret = new ScreenEz2SelectPlayer; else if( 0==stricmp(sClassName, "ScreenSelectMode") ) ret = new ScreenSelectMode; else if( 0==stricmp(sClassName, "ScreenGameOver") ) ret = new ScreenGameOver; diff --git a/stepmania/src/ScreenEvaluation.cpp b/stepmania/src/ScreenEvaluation.cpp index a345d8dcc2..bc80dbc8ae 100644 --- a/stepmania/src/ScreenEvaluation.cpp +++ b/stepmania/src/ScreenEvaluation.cpp @@ -25,84 +25,98 @@ #include "ThemeManager.h" #include "RageSoundManager.h" -// If a metric isn't present in the category m_sClassName, fall back to "ScreenEvaluation" -#define GET_THEME_METRIC_FALLBACK(metric) (THEME->HasMetric(m_sClassName,metric)?THEME->GetMetric(m_sClassName,metric):THEME->GetMetric("ScreenEvaluation",metric)) -#define GET_THEME_ELEMENT_FALLBACK(cat,suffix) (THEME->GetPathToOptional(cat,m_sClassName+(suffix))!="" ? THEME->GetPathTo(cat,m_sClassName+(suffix)) : THEME->GetPathTo(cat,CString("ScreenEvaluation")+(suffix))) - - -#define SONGSEL_SCREEN GET_THEME_METRIC_FALLBACK("SongSelectScreen") -#define ENDGAME_SCREEN GET_THEME_METRIC_FALLBACK("EndGameScreen") -#define BANNER_ON_COMMAND( i ) GET_THEME_METRIC_FALLBACK(ssprintf("Banner%dOnCommand",i+1)) -#define BANNER_OFF_COMMAND( i ) GET_THEME_METRIC_FALLBACK(ssprintf("Banner%dOffCommand",i+1)) -#define BANNER_WIDTH float(atof(GET_THEME_METRIC_FALLBACK("BannerWidth"))) -#define BANNER_HEIGHT float(atof(GET_THEME_METRIC_FALLBACK("BannerHeight"))) -#define STAGE_ON_COMMAND GET_THEME_METRIC_FALLBACK("StageOnCommand") -#define STAGE_OFF_COMMAND GET_THEME_METRIC_FALLBACK("StageOffCommand") -#define DIFFICULTY_ICON_ON_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("DifficultyIconP%dOnCommand",p+1)) -#define DIFFICULTY_ICON_OFF_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("DifficultyIconP%dOffCommand",p+1)) -#define PLAYER_OPTIONS_ON_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("PlayerOptionsP%dOnCommand",p+1)) -#define PLAYER_OPTIONS_OFF_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("PlayerOptionsP%dOffCommand",p+1)) -#define GRADE_FRAME_ON_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("GradeFrameP%dOnCommand",p+1)) -#define GRADE_FRAME_OFF_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("GradeFrameP%dOffCommand",p+1)) -#define GRADE_ON_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("GradeP%dOnCommand",p+1)) -#define GRADE_OFF_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("GradeP%dOffCommand",p+1)) -#define PERCENT_WHOLE_ON_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("PercentWholeP%dOnCommand",p+1)) -#define PERCENT_WHOLE_OFF_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("PercentWholeP%dOffCommand",p+1)) -#define PERCENT_REMAINDER_ON_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("PercentRemainderP%dOnCommand",p+1)) -#define PERCENT_REMAINDER_OFF_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("PercentRemainderP%dOffCommand",p+1)) -#define DANCE_POINTS_ON_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("DancePointsP%dOnCommand",p+1)) -#define DANCE_POINTS_OFF_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("DancePointsP%dOffCommand",p+1)) +// metrics that are common to all ScreenEvaluation classes +#define BANNER_WIDTH THEME->GetMetricF("ScreenEvaluation","BannerWidth") +#define BANNER_HEIGHT THEME->GetMetricF("ScreenEvaluation","BannerHeight") +#define LARGE_BANNER_ON_COMMAND THEME->GetMetric ("ScreenEvaluation","LargeBannerOnCommand") +#define LARGE_BANNER_OFF_COMMAND THEME->GetMetric ("ScreenEvaluation","LargeBannerOffCommand") +#define STAGE_ON_COMMAND THEME->GetMetric ("ScreenEvaluation","StageOnCommand") +#define STAGE_OFF_COMMAND THEME->GetMetric ("ScreenEvaluation","StageOffCommand") +#define DIFFICULTY_ICON_ON_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("DifficultyIconP%dOnCommand",p+1)) +#define DIFFICULTY_ICON_OFF_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("DifficultyIconP%dOffCommand",p+1)) +#define PLAYER_OPTIONS_ON_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("PlayerOptionsP%dOnCommand",p+1)) +#define PLAYER_OPTIONS_OFF_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("PlayerOptionsP%dOffCommand",p+1)) +#define SMALL_BANNER_ON_COMMAND( i ) THEME->GetMetric ("ScreenEvaluation",ssprintf("SmallBanner%dOnCommand",i+1)) +#define SMALL_BANNER_OFF_COMMAND( i ) THEME->GetMetric ("ScreenEvaluation",ssprintf("SmallBanner%dOffCommand",i+1)) +#define GRADE_FRAME_ON_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("GradeFrameP%dOnCommand",p+1)) +#define GRADE_FRAME_OFF_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("GradeFrameP%dOffCommand",p+1)) +#define GRADE_ON_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("GradeP%dOnCommand",p+1)) +#define GRADE_OFF_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("GradeP%dOffCommand",p+1)) +#define PERCENT_FRAME_ON_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("PercentFrameP%dOnCommand",p+1)) +#define PERCENT_FRAME_OFF_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("PercentFrameP%dOffCommand",p+1)) +#define PERCENT_WHOLE_ON_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("PercentWholeP%dOnCommand",p+1)) +#define PERCENT_WHOLE_OFF_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("PercentWholeP%dOffCommand",p+1)) +#define PERCENT_REMAINDER_ON_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("PercentRemainderP%dOnCommand",p+1)) +#define PERCENT_REMAINDER_OFF_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("PercentRemainderP%dOffCommand",p+1)) +#define DANCE_POINTS_ON_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("DancePointsP%dOnCommand",p+1)) +#define DANCE_POINTS_OFF_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("DancePointsP%dOffCommand",p+1)) const char* JUDGE_STRING[NUM_JUDGE_LINES] = { "Marvelous", "Perfect", "Great", "Good", "Boo", "Miss", "OK", "MaxCombo" }; -#define JUDGE_LABEL_ON_COMMAND( l ) GET_THEME_METRIC_FALLBACK(ssprintf("%sLabelOnCommand",JUDGE_STRING[l])) -#define JUDGE_LABEL_OFF_COMMAND( l ) GET_THEME_METRIC_FALLBACK(ssprintf("%sLabelOffCommand",JUDGE_STRING[l])) -#define JUDGE_NUMBER_ON_COMMAND( l, p ) GET_THEME_METRIC_FALLBACK(ssprintf("%sNumberP%dOnCommand",JUDGE_STRING[l],p+1)) -#define JUDGE_NUMBER_OFF_COMMAND( l, p ) GET_THEME_METRIC_FALLBACK(ssprintf("%sNumberP%dOffCommand",JUDGE_STRING[l],p+1)) -const char* SCORE_STRING[NUM_SCORE_LINES] = { "Score", "Time" }; -#define SCORE_LABEL_ON_COMMAND( l ) GET_THEME_METRIC_FALLBACK(ssprintf("%sLabelOnCommand",SCORE_STRING[l])) -#define SCORE_LABEL_OFF_COMMAND( l ) GET_THEME_METRIC_FALLBACK(ssprintf("%sLabelOffCommand",SCORE_STRING[l])) -#define SCORE_NUMBER_ON_COMMAND( l, p ) GET_THEME_METRIC_FALLBACK(ssprintf("%sNumberP%dOnCommand",SCORE_STRING[l],p+1)) -#define SCORE_NUMBER_OFF_COMMAND( l, p ) GET_THEME_METRIC_FALLBACK(ssprintf("%sNumberP%dOffCommand",SCORE_STRING[l],p+1)) -#define BONUS_FRAME_ON_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("BonusFrameP%dOnCommand",p+1)) -#define BONUS_FRAME_OFF_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("BonusFrameP%dOffCommand",p+1)) -#define BAR_POSSIBLE_ON_COMMAND( i, p ) GET_THEME_METRIC_FALLBACK(ssprintf("BarPossible%dP%dOnCommand",i+1,p+1)) -#define BAR_POSSIBLE_OFF_COMMAND( i, p ) GET_THEME_METRIC_FALLBACK(ssprintf("BarPossible%dP%dOffCommand",i+1,p+1)) -#define BAR_ACTUAL_ON_COMMAND( i, p ) GET_THEME_METRIC_FALLBACK(ssprintf("BarActual%dP%dOnCommand",i+1,p+1)) -#define BAR_ACTUAL_OFF_COMMAND( i, p ) GET_THEME_METRIC_FALLBACK(ssprintf("BarActual%dP%dOffCommand",i+1,p+1)) -#define BAR_ACTUAL_MAX_COMMAND GET_THEME_METRIC_FALLBACK("BarActualMaxCommand") -#define SONGS_SURVIVED_ON_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("SongsSurvivedP%dOnCommand",p+1)) -#define SONGS_SURVIVED_OFF_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("SongsSurvivedP%dOffCommand",p+1)) -#define NEW_RECORD_ON_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("NewRecordP%dOnCommand",p+1)) -#define NEW_RECORD_OFF_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("NewRecordP%dOffCommand",p+1)) -#define TRY_EXTRA_STAGE_ON_COMMAND GET_THEME_METRIC_FALLBACK(ssprintf("TryExtraStageOnCommand")) -#define TRY_EXTRA_STAGE_OFF_COMMAND GET_THEME_METRIC_FALLBACK(ssprintf("TryExtraStageOffCommand")) -#define SPIN_GRADES 0!=atoi(GET_THEME_METRIC_FALLBACK("SpinGrades")) +#define JUDGE_LABEL_ON_COMMAND( l ) THEME->GetMetric ("ScreenEvaluation",ssprintf("%sLabelOnCommand",JUDGE_STRING[l])) +#define JUDGE_LABEL_OFF_COMMAND( l ) THEME->GetMetric ("ScreenEvaluation",ssprintf("%sLabelOffCommand",JUDGE_STRING[l])) +#define JUDGE_NUMBER_ON_COMMAND( l, p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("%sNumberP%dOnCommand",JUDGE_STRING[l],p+1)) +#define JUDGE_NUMBER_OFF_COMMAND( l, p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("%sNumberP%dOffCommand",JUDGE_STRING[l],p+1)) +#define SCORE_LABEL_ON_COMMAND THEME->GetMetric ("ScreenEvaluation","ScoreLabelOnCommand") +#define SCORE_LABEL_OFF_COMMAND THEME->GetMetric ("ScreenEvaluation","ScoreLabelOffCommand") +#define SCORE_NUMBER_ON_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("ScoreNumberP%dOnCommand",p+1)) +#define SCORE_NUMBER_OFF_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("ScoreNumberP%dOffCommand",p+1)) +#define TIME_LABEL_ON_COMMAND THEME->GetMetric ("ScreenEvaluation","TimeLabelOnCommand") +#define TIME_LABEL_OFF_COMMAND THEME->GetMetric ("ScreenEvaluation","TimeLabelOffCommand") +#define TIME_NUMBER_ON_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("TimeNumberP%dOnCommand",p+1)) +#define TIME_NUMBER_OFF_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("TimeNumberP%dOffCommand",p+1)) +#define BONUS_FRAME_ON_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("BonusFrameP%dOnCommand",p+1)) +#define BONUS_FRAME_OFF_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("BonusFrameP%dOffCommand",p+1)) +#define BAR_POSSIBLE_ON_COMMAND( i, p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("BarPossible%dP%dOnCommand",i+1,p+1)) +#define BAR_POSSIBLE_OFF_COMMAND( i, p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("BarPossible%dP%dOffCommand",i+1,p+1)) +#define BAR_ACTUAL_ON_COMMAND( i, p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("BarActual%dP%dOnCommand",i+1,p+1)) +#define BAR_ACTUAL_OFF_COMMAND( i, p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("BarActual%dP%dOffCommand",i+1,p+1)) +#define BAR_ACTUAL_MAX_COMMAND THEME->GetMetric ("ScreenEvaluation","BarActualMaxCommand") +#define SURVIVED_FRAME_ON_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("SurvivedFrameP%dOnCommand",p+1)) +#define SURVIVED_FRAME_OFF_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("SurvivedFrameP%dOffCommand",p+1)) +#define SURVIVED_NUMBER_ON_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("SurvivedNumberP%dOnCommand",p+1)) +#define SURVIVED_NUMBER_OFF_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("SurvivedNumberP%dOffCommand",p+1)) +#define NEW_RECORD_ON_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("NewRecordP%dOnCommand",p+1)) +#define NEW_RECORD_OFF_COMMAND( p ) THEME->GetMetric ("ScreenEvaluation",ssprintf("NewRecordP%dOffCommand",p+1)) +#define TRY_EXTRA_STAGE_ON_COMMAND THEME->GetMetric ("ScreenEvaluation",ssprintf("TryExtraStageOnCommand")) +#define TRY_EXTRA_STAGE_OFF_COMMAND THEME->GetMetric ("ScreenEvaluation",ssprintf("TryExtraStageOffCommand")) +#define SPIN_GRADES THEME->GetMetricB("ScreenEvaluation","SpinGrades") + +// metrics that are specific to classes derived from ScreenEvaluation +#define NEXT_SCREEN THEME->GetMetric (m_sClassName,"NextScreen") +#define END_SCREEN THEME->GetMetric (m_sClassName,"EndScreen") +#define SHOW_BANNER_AREA THEME->GetMetricB(m_sClassName,"ShowBannerArea") +#define SHOW_GRADE_AREA THEME->GetMetricB(m_sClassName,"ShowGradeArea") +#define SHOW_POINTS_AREA THEME->GetMetricB(m_sClassName,"ShowPointsArea") +#define SHOW_BONUS_AREA THEME->GetMetricB(m_sClassName,"ShowBonusArea") +#define SHOW_SURVIVED_AREA THEME->GetMetricB(m_sClassName,"ShowSurvivedArea") +#define SHOW_JUDGMENT( l ) THEME->GetMetricB(m_sClassName,ssprintf("Show%s",JUDGE_STRING[l])) +#define SHOW_SCORE_AREA THEME->GetMetricB(m_sClassName,"ShowScoreArea") +#define SHOW_TIME_AREA THEME->GetMetricB(m_sClassName,"ShowTimeArea") -const ScreenMessage SM_GoToSelectMusic = ScreenMessage(SM_User+1); -const ScreenMessage SM_GoToSelectCourse = ScreenMessage(SM_User+3); +const ScreenMessage SM_GoToSelectCourse = ScreenMessage(SM_User+3); const ScreenMessage SM_GoToEvaluationSummary = ScreenMessage(SM_User+4); -const ScreenMessage SM_GoToGameFinished = ScreenMessage(SM_User+5); -const ScreenMessage SM_PlayCheer = ScreenMessage(SM_User+6); +const ScreenMessage SM_GoToEndScreen = ScreenMessage(SM_User+5); +const ScreenMessage SM_PlayCheer = ScreenMessage(SM_User+6); ScreenEvaluation::ScreenEvaluation( CString sClassName, Type type ) { - /* // // debugging // GAMESTATE->m_PlayMode = PLAY_MODE_NONSTOP; GAMESTATE->m_CurStyle = STYLE_DANCE_VERSUS; GAMESTATE->m_MasterPlayerNumber = PLAYER_1; + GAMESTATE->m_pCurSong = SONGMAN->GetAllSongs()[0]; GAMESTATE->m_pCurCourse = SONGMAN->m_pCourses[0]; -// GAMESTATE->m_pCurNotes[PLAYER_1] = GAMESTATE->m_pCurSong->GetNotes( NOTES_TYPE_DANCE_SINGLE, DIFFICULTY_HARD ); -// GAMESTATE->m_pCurNotes[PLAYER_2] = GAMESTATE->m_pCurSong->GetNotes( NOTES_TYPE_DANCE_SINGLE, DIFFICULTY_HARD ); + GAMESTATE->m_pCurNotes[PLAYER_1] = GAMESTATE->m_pCurSong->GetNotes( NOTES_TYPE_DANCE_SINGLE, DIFFICULTY_HARD ); + GAMESTATE->m_pCurNotes[PLAYER_2] = GAMESTATE->m_pCurSong->GetNotes( NOTES_TYPE_DANCE_SINGLE, DIFFICULTY_HARD ); GAMESTATE->m_PlayerOptions[PLAYER_1].m_bHoldNotes = false; GAMESTATE->m_PlayerOptions[PLAYER_2].m_bHoldNotes = false; GAMESTATE->m_PlayerOptions[PLAYER_1].m_fScrollSpeed = 2; GAMESTATE->m_PlayerOptions[PLAYER_2].m_fScrollSpeed = 2; -// GAMESTATE->m_iCurrentStageIndex = 2; -*/ + GAMESTATE->m_iCurrentStageIndex = 2; + LOG->Trace( "ScreenEvaluation::ScreenEvaluation()" ); @@ -130,7 +144,6 @@ ScreenEvaluation::ScreenEvaluation( CString sClassName, Type type ) ASSERT(0); } -/* // // Debugging // @@ -142,7 +155,6 @@ ScreenEvaluation::ScreenEvaluation( CString sClassName, Type type ) stageStats.fRadarActual[p][r] = 0.5f + r/10.0f; } } -*/ // // Calculate grades @@ -233,235 +245,309 @@ ScreenEvaluation::ScreenEvaluation( CString sClassName, Type type ) // // init banner area // - switch( m_Type ) + if( SHOW_BANNER_AREA ) { - case stage: + switch( m_Type ) { - m_Banner[0].SetCroppedSize( BANNER_WIDTH, BANNER_HEIGHT ); - m_Banner[0].LoadFromSong( GAMESTATE->m_pCurSong ); - m_Banner[0].Command( BANNER_ON_COMMAND(0) ); - this->AddChild( &m_Banner[0] ); - - m_sprBannerFrame[0].Load( GET_THEME_ELEMENT_FALLBACK("Graphics"," banner frame") ); - m_sprBannerFrame[0].Command( BANNER_ON_COMMAND(0) ); - this->AddChild( &m_sprBannerFrame[0] ); - - m_sprStage.Load( GET_THEME_ELEMENT_FALLBACK("Graphics"," stage "+GAMESTATE->GetStageText()) ); - m_sprStage.Command( STAGE_ON_COMMAND ); - this->AddChild( &m_sprStage ); - - for( int p=0; pIsPlayerEnabled(p) ) - continue; // skip + m_LargeBanner.SetCroppedSize( BANNER_WIDTH, BANNER_HEIGHT ); + m_LargeBanner.LoadFromSong( GAMESTATE->m_pCurSong ); + m_LargeBanner.Command( LARGE_BANNER_ON_COMMAND ); + this->AddChild( &m_LargeBanner ); - m_DifficultyIcon[p].Load( GET_THEME_ELEMENT_FALLBACK("Graphics"," difficulty icons 1x5") ); - m_DifficultyIcon[p].SetFromNotes( (PlayerNumber)p, GAMESTATE->m_pCurNotes[p] ); - m_DifficultyIcon[p].Command( DIFFICULTY_ICON_ON_COMMAND(p) ); - this->AddChild( &m_DifficultyIcon[p] ); - - m_textPlayerOptions[p].LoadFromFont( THEME->GetPathTo("Fonts","normal") ); - CString sPO = GAMESTATE->m_PlayerOptions[p].GetString(); - sPO.Replace( ", ", "\n" ); - m_textPlayerOptions[p].Command( PLAYER_OPTIONS_ON_COMMAND(p) ); - m_textPlayerOptions[p].SetText( sPO ); - this->AddChild( &m_textPlayerOptions[p] ); + m_sprLargeBannerFrame.Load( THEME->GetPathTo("Graphics","ScreenEvaluation banner frame") ); + m_sprLargeBannerFrame.Command( LARGE_BANNER_ON_COMMAND ); + this->AddChild( &m_sprLargeBannerFrame ); + + m_sprStage.Load( THEME->GetPathTo("Graphics","ScreenEvaluation stage "+GAMESTATE->GetStageText()) ); + m_sprStage.Command( STAGE_ON_COMMAND ); + this->AddChild( &m_sprStage ); + + for( int p=0; pIsPlayerEnabled(p) ) + continue; // skip + + m_DifficultyIcon[p].Load( THEME->GetPathTo("Graphics","ScreenEvaluation difficulty icons 1x5") ); + m_DifficultyIcon[p].SetFromNotes( (PlayerNumber)p, GAMESTATE->m_pCurNotes[p] ); + m_DifficultyIcon[p].Command( DIFFICULTY_ICON_ON_COMMAND(p) ); + this->AddChild( &m_DifficultyIcon[p] ); + + m_textPlayerOptions[p].LoadFromFont( THEME->GetPathTo("Fonts","normal") ); + CString sPO = GAMESTATE->m_PlayerOptions[p].GetString(); + sPO.Replace( ", ", "\n" ); + m_textPlayerOptions[p].Command( PLAYER_OPTIONS_ON_COMMAND(p) ); + m_textPlayerOptions[p].SetText( sPO ); + this->AddChild( &m_textPlayerOptions[p] ); + } } - } - break; - case summary: - { - for( unsigned i=0; iAddChild( &m_Banner[i] ); + for( unsigned i=0; iAddChild( &m_SmallBanner[i] ); - m_sprBannerFrame[i].Load( GET_THEME_ELEMENT_FALLBACK("Graphics"," banner frame") ); - m_sprBannerFrame[i].Command( BANNER_ON_COMMAND(i) ); - this->AddChild( &m_sprBannerFrame[i] ); + m_sprSmallBannerFrame[i].Load( THEME->GetPathTo("Graphics","ScreenEvaluation banner frame") ); + m_sprSmallBannerFrame[i].Command( SMALL_BANNER_ON_COMMAND(i) ); + this->AddChild( &m_sprSmallBannerFrame[i] ); + } } - } - break; - case course: - { - m_Banner[0].SetCroppedSize( BANNER_WIDTH, BANNER_HEIGHT ); - m_Banner[0].LoadFromCourse( GAMESTATE->m_pCurCourse ); - m_Banner[0].Command( BANNER_ON_COMMAND(0) ); - this->AddChild( &m_Banner[0] ); + break; + case course: + { + m_LargeBanner.SetCroppedSize( BANNER_WIDTH, BANNER_HEIGHT ); + m_LargeBanner.LoadFromCourse( GAMESTATE->m_pCurCourse ); + m_LargeBanner.Command( LARGE_BANNER_ON_COMMAND ); + this->AddChild( &m_LargeBanner ); - m_sprBannerFrame[0].Load( GET_THEME_ELEMENT_FALLBACK("Graphics"," banner frame") ); - m_sprBannerFrame[0].Command( BANNER_ON_COMMAND(0) ); - this->AddChild( &m_sprBannerFrame[0] ); + m_sprLargeBannerFrame.Load( THEME->GetPathTo("Graphics","ScreenEvaluation banner frame") ); + m_sprLargeBannerFrame.Command( LARGE_BANNER_ON_COMMAND ); + this->AddChild( &m_sprLargeBannerFrame ); + } + break; + default: + ASSERT(0); } - break; - default: - ASSERT(0); } - // // init grade area // - for( p=0; pIsPlayerEnabled( (PlayerNumber)p ) ) - continue; // skip - - m_sprGradeFrame[p].Load( GET_THEME_ELEMENT_FALLBACK("Graphics"," grade frame 1x2") ); - m_sprGradeFrame[p].StopAnimating(); - m_sprGradeFrame[p].SetState( p ); - m_sprGradeFrame[p].Command( GRADE_FRAME_ON_COMMAND(p) ); - this->AddChild( &m_sprGradeFrame[p] ); - - if( SPIN_GRADES ) - m_Grades[p].SpinAndSettleOn( grade[p] ); - else - m_Grades[p].SetGrade( (PlayerNumber)p, grade[p] ); - m_Grades[p].Command( GRADE_ON_COMMAND(p) ); - this->AddChild( &m_Grades[p] ); - - if( !PREFSMAN->m_bDancePointsForOni ) + for( p=0; pAddChild( &m_textPercentWhole[p] ); + if( !GAMESTATE->IsPlayerEnabled( (PlayerNumber)p ) ) + continue; // skip - m_textPercentRemainder[p].LoadFromNumbers( GET_THEME_ELEMENT_FALLBACK("Numbers"," percent numbers") ); - m_textPercentRemainder[p].EnableShadow( false ); - m_textPercentRemainder[p].Command( PERCENT_REMAINDER_ON_COMMAND(p) ); - this->AddChild( &m_textPercentRemainder[p] ); + m_sprGradeFrame[p].Load( THEME->GetPathTo("Graphics","ScreenEvaluation grade frame 1x2") ); + m_sprGradeFrame[p].StopAnimating(); + m_sprGradeFrame[p].SetState( p ); + m_sprGradeFrame[p].Command( GRADE_FRAME_ON_COMMAND(p) ); + this->AddChild( &m_sprGradeFrame[p] ); - stageStats.iPossibleDancePoints[p] = max( 1, stageStats.iPossibleDancePoints[p] ); - float fPercentDancePoints = stageStats.iActualDancePoints[p] / (float)stageStats.iPossibleDancePoints[p] + 0.0001f; // correct for rounding errors - fPercentDancePoints = max( fPercentDancePoints, 0 ); - int iPercentWhole = int(fPercentDancePoints*100); - int iPercentRemainder = int( (fPercentDancePoints*100 - int(fPercentDancePoints*100)) * 10 ); - m_textPercentWhole[p].SetText( ssprintf("%02d", iPercentWhole) ); - m_textPercentRemainder[p].SetText( ssprintf(".%01d%%", iPercentRemainder) ); - } - else // PREFSMAN->m_bDancePointsForOni - { - m_textDancePoints[p].LoadFromNumbers( GET_THEME_ELEMENT_FALLBACK("Numbers"," percent numbers") ); - m_textDancePoints[p].EnableShadow( false ); - m_textDancePoints[p].SetText( ssprintf("%d", stageStats.iActualDancePoints[p]) ); - m_textDancePoints[p].Command( DANCE_POINTS_ON_COMMAND(p) ); - this->AddChild( &m_textDancePoints[p] ); + if( SPIN_GRADES ) + m_Grades[p].SpinAndSettleOn( grade[p] ); + else + m_Grades[p].SetGrade( (PlayerNumber)p, grade[p] ); + m_Grades[p].Command( GRADE_ON_COMMAND(p) ); + this->AddChild( &m_Grades[p] ); } } + // + // init points area + // + if( SHOW_POINTS_AREA ) + { + for( p=0; pGetPathTo("Graphics","ScreenEvaluation percent frame 1x2") ); + m_sprPercentFrame[p].StopAnimating(); + m_sprPercentFrame[p].SetState( p ); + m_sprPercentFrame[p].Command( PERCENT_FRAME_ON_COMMAND(p) ); + this->AddChild( &m_sprPercentFrame[p] ); + + if( !PREFSMAN->m_bDancePointsForOni ) + { + m_textPercentWhole[p].LoadFromNumbers( THEME->GetPathTo("Numbers","ScreenEvaluation percent numbers") ); + m_textPercentWhole[p].EnableShadow( false ); + m_textPercentWhole[p].Command( PERCENT_WHOLE_ON_COMMAND(p) ); + this->AddChild( &m_textPercentWhole[p] ); + + m_textPercentRemainder[p].LoadFromNumbers( THEME->GetPathTo("Numbers","ScreenEvaluation percent numbers") ); + m_textPercentRemainder[p].EnableShadow( false ); + m_textPercentRemainder[p].Command( PERCENT_REMAINDER_ON_COMMAND(p) ); + this->AddChild( &m_textPercentRemainder[p] ); + + stageStats.iPossibleDancePoints[p] = max( 1, stageStats.iPossibleDancePoints[p] ); + float fPercentDancePoints = stageStats.iActualDancePoints[p] / (float)stageStats.iPossibleDancePoints[p] + 0.0001f; // correct for rounding errors + fPercentDancePoints = max( fPercentDancePoints, 0 ); + int iPercentWhole = int(fPercentDancePoints*100); + int iPercentRemainder = int( (fPercentDancePoints*100 - int(fPercentDancePoints*100)) * 10 ); + m_textPercentWhole[p].SetText( ssprintf("%02d", iPercentWhole) ); + m_textPercentRemainder[p].SetText( ssprintf(".%01d%%", iPercentRemainder) ); + } + else // PREFSMAN->m_bDancePointsForOni + { + m_textDancePoints[p].LoadFromNumbers( THEME->GetPathTo("Numbers","ScreenEvaluation percent numbers") ); + m_textDancePoints[p].EnableShadow( false ); + m_textDancePoints[p].SetText( ssprintf("%d", stageStats.iActualDancePoints[p]) ); + m_textDancePoints[p].Command( DANCE_POINTS_ON_COMMAND(p) ); + this->AddChild( &m_textDancePoints[p] ); + } + } + } // // init bonus area // - for( p=0; pIsPlayerEnabled( (PlayerNumber)p ) ) - continue; // skip - - m_sprBonusFrame[p].Load( GET_THEME_ELEMENT_FALLBACK("Graphics"," bonus frame 2x1") ); - m_sprBonusFrame[p].StopAnimating(); - m_sprBonusFrame[p].SetState( p ); - m_sprBonusFrame[p].Command( BONUS_FRAME_ON_COMMAND(p) ); - this->AddChild( &m_sprBonusFrame[p] ); - - for( int r=0; rAddChild( &m_sprPossibleBar[p][r] ); + if( !GAMESTATE->IsPlayerEnabled( (PlayerNumber)p ) ) + continue; // skip - m_sprActualBar[p][r].Load( GET_THEME_ELEMENT_FALLBACK("Graphics"," bars actual 1x2") ); - m_sprActualBar[p][r].StopAnimating(); - m_sprActualBar[p][r].SetState( p ); - m_sprActualBar[p][r].SetWidth( m_sprActualBar[p][r].GetUnzoomedWidth() * stageStats.fRadarActual[p][r] ); - m_sprActualBar[p][r].Command( BAR_ACTUAL_ON_COMMAND(r,p) ); - if( stageStats.fRadarActual[p][r] == stageStats.fRadarPossible[p][r] ) - m_sprActualBar[p][r].Command( BAR_ACTUAL_MAX_COMMAND ); - this->AddChild( &m_sprActualBar[p][r] ); + m_sprBonusFrame[p].Load( THEME->GetPathTo("Graphics","ScreenEvaluation bonus frame 2x1") ); + m_sprBonusFrame[p].StopAnimating(); + m_sprBonusFrame[p].SetState( p ); + m_sprBonusFrame[p].Command( BONUS_FRAME_ON_COMMAND(p) ); + this->AddChild( &m_sprBonusFrame[p] ); + + for( int r=0; rGetPathTo("Graphics","ScreenEvaluation bars possible 1x2") ); + m_sprPossibleBar[p][r].StopAnimating(); + m_sprPossibleBar[p][r].SetState( p ); + m_sprPossibleBar[p][r].SetWidth( m_sprPossibleBar[p][r].GetUnzoomedWidth() * stageStats.fRadarPossible[p][r] ); + m_sprPossibleBar[p][r].Command( BAR_POSSIBLE_ON_COMMAND(r,p) ); + this->AddChild( &m_sprPossibleBar[p][r] ); + + m_sprActualBar[p][r].Load( THEME->GetPathTo("Graphics","ScreenEvaluation bars actual 1x2") ); + m_sprActualBar[p][r].StopAnimating(); + m_sprActualBar[p][r].SetState( p ); + m_sprActualBar[p][r].SetWidth( m_sprActualBar[p][r].GetUnzoomedWidth() * stageStats.fRadarActual[p][r] ); + m_sprActualBar[p][r].Command( BAR_ACTUAL_ON_COMMAND(r,p) ); + if( stageStats.fRadarActual[p][r] == stageStats.fRadarPossible[p][r] ) + m_sprActualBar[p][r].Command( BAR_ACTUAL_MAX_COMMAND ); + this->AddChild( &m_sprActualBar[p][r] ); + } } - - m_textSongsSurvived[p].LoadFromNumbers( GET_THEME_ELEMENT_FALLBACK("Numbers"," stage numbers") ); - m_textSongsSurvived[p].EnableShadow( false ); - m_textSongsSurvived[p].SetText( ssprintf("%02d", stageStats.iSongsPlayed[p]) ); - m_textSongsSurvived[p].Command( SONGS_SURVIVED_ON_COMMAND(p) ); - this->AddChild( &m_textSongsSurvived[p] ); } - + // - // init judgement area + // init survived area + // + if( SHOW_SURVIVED_AREA ) + { + for( p=0; pIsPlayerEnabled( (PlayerNumber)p ) ) + continue; // skip + + m_sprSurvivedFrame[p].Load( THEME->GetPathTo("Graphics","ScreenEvaluation survived frame 2x1") ); + m_sprSurvivedFrame[p].StopAnimating(); + m_sprSurvivedFrame[p].SetState( p ); + m_sprSurvivedFrame[p].Command( SURVIVED_FRAME_ON_COMMAND(p) ); + this->AddChild( &m_sprSurvivedFrame[p] ); + + m_textSurvivedNumber[p].LoadFromNumbers( THEME->GetPathTo("Numbers","ScreenEvaluation stage numbers") ); + m_textSurvivedNumber[p].EnableShadow( false ); + m_textSurvivedNumber[p].SetText( ssprintf("%02d", stageStats.iSongsPlayed[p]) ); + m_textSurvivedNumber[p].Command( SURVIVED_NUMBER_ON_COMMAND(p) ); + this->AddChild( &m_textSurvivedNumber[p] ); + } + } + + // + // init judgment area // int l; for( l=0; lAddChild( &m_sprJudgeLabels[l] ); - } - - for( p=0; pIsPlayerEnabled( (PlayerNumber)p ) ) - continue; // skip - - for( l=0; lAddChild( &m_textJudgeNumbers[l][p] ); + m_sprJudgeLabels[l].Load( THEME->GetPathTo("Graphics","ScreenEvaluation judge labels 1x8") ); + m_sprJudgeLabels[l].StopAnimating(); + m_sprJudgeLabels[l].SetState( l ); + m_sprJudgeLabels[l].Command( JUDGE_LABEL_ON_COMMAND(l) ); + this->AddChild( &m_sprJudgeLabels[l] ); + + for( p=0; pIsPlayerEnabled( (PlayerNumber)p ) ) + continue; // skip + + m_textJudgeNumbers[l][p].LoadFromNumbers( THEME->GetPathTo("Numbers","ScreenEvaluation judge numbers") ); + m_textJudgeNumbers[l][p].EnableShadow( false ); + m_textJudgeNumbers[l][p].SetDiffuse( PlayerToColor(p) ); + m_textJudgeNumbers[l][p].Command( JUDGE_NUMBER_ON_COMMAND(l,p) ); + this->AddChild( &m_textJudgeNumbers[l][p] ); + + int iValue; + switch( l ) + { + case 0: iValue = stageStats.iTapNoteScores[p][TNS_MARVELOUS]; break; + case 1: iValue = stageStats.iTapNoteScores[p][TNS_PERFECT]; break; + case 2: iValue = stageStats.iTapNoteScores[p][TNS_GREAT]; break; + case 3: iValue = stageStats.iTapNoteScores[p][TNS_GOOD]; break; + case 4: iValue = stageStats.iTapNoteScores[p][TNS_BOO]; break; + case 5: iValue = stageStats.iTapNoteScores[p][TNS_MISS]; break; + case 6: iValue = stageStats.iTapNoteScores[p][HNS_OK]; break; + case 7: iValue = stageStats.iMaxCombo[p]; break; + default: ASSERT(0); + } + m_textJudgeNumbers[l][p].SetText( ssprintf("%4d",iValue) ); + } } - - m_textJudgeNumbers[0][p].SetText( ssprintf("%4d", stageStats.iTapNoteScores[p][TNS_MARVELOUS]) ); - m_textJudgeNumbers[1][p].SetText( ssprintf("%4d", stageStats.iTapNoteScores[p][TNS_PERFECT]) ); - m_textJudgeNumbers[2][p].SetText( ssprintf("%4d", stageStats.iTapNoteScores[p][TNS_GREAT]) ); - m_textJudgeNumbers[3][p].SetText( ssprintf("%4d", stageStats.iTapNoteScores[p][TNS_GOOD]) ); - m_textJudgeNumbers[4][p].SetText( ssprintf("%4d", stageStats.iTapNoteScores[p][TNS_BOO]) ); - m_textJudgeNumbers[5][p].SetText( ssprintf("%4d", stageStats.iTapNoteScores[p][TNS_MISS]) ); - m_textJudgeNumbers[6][p].SetText( ssprintf("%4d", stageStats.iHoldNoteScores[p][HNS_OK]) ); - m_textJudgeNumbers[7][p].SetText( ssprintf("%4d", stageStats.iMaxCombo[p]) ); } - // // init score area // - int s; - for( s=0; sAddChild( &m_sprScoreLabel[s] ); - } - - for( p=0; pIsPlayerEnabled( (PlayerNumber)p ) ) - continue; // skip - - for( int s=0; sAddChild( &m_ScoreDisplay[s][p] ); + m_sprScoreLabel.Load( THEME->GetPathTo("Graphics","ScreenEvaluation score labels 1x2") ); + m_sprScoreLabel.SetState( s ); + m_sprScoreLabel.StopAnimating(); + m_sprScoreLabel.Command( SCORE_LABEL_ON_COMMAND ); + this->AddChild( &m_sprScoreLabel ); } - m_ScoreDisplay[0][p].SetScore( stageStats.fScore[p] ); - m_ScoreDisplay[1][p].SetText( SecondsToTime(stageStats.fAliveSeconds[p]) ); + for( p=0; pIsPlayerEnabled( (PlayerNumber)p ) ) + continue; // skip + m_ScoreDisplay[p].Init( (PlayerNumber)p ); + m_ScoreDisplay[p].Command( SCORE_NUMBER_ON_COMMAND(p) ); + m_ScoreDisplay[p].SetScore( stageStats.fScore[p] ); + this->AddChild( &m_ScoreDisplay[p] ); + + } + } + + // + // init time area + // + if( SHOW_TIME_AREA ) + { + m_sprTimeLabel.Load( THEME->GetPathTo("Graphics","ScreenEvaluation score labels 1x2") ); + m_sprTimeLabel.SetState( 1 ); + m_sprTimeLabel.StopAnimating(); + m_sprTimeLabel.Command( TIME_LABEL_ON_COMMAND ); + this->AddChild( &m_sprTimeLabel ); + + for( p=0; pIsPlayerEnabled( (PlayerNumber)p ) ) + continue; // skip + + m_TimeDisplay[p].Init( (PlayerNumber)p ); + m_TimeDisplay[p].Command( TIME_NUMBER_ON_COMMAND(p) ); + m_TimeDisplay[p].SetText( SecondsToTime(stageStats.fAliveSeconds[p]) ); + this->AddChild( &m_TimeDisplay[p] ); + } + } + + + // + // init extra area + // + for( p=0; pGetPathTo("Graphics","ScreenEvaluation new record") ); m_sprNewRecord[p].Command( NEW_RECORD_ON_COMMAND(p) ); this->AddChild( &m_sprNewRecord[p] ); } @@ -474,22 +560,21 @@ ScreenEvaluation::ScreenEvaluation( CString sClassName, Type type ) if( m_bTryExtraStage ) { - m_sprTryExtraStage.Load( GET_THEME_ELEMENT_FALLBACK("Graphics",GAMESTATE->IsExtraStage()?" try extra2":" try extra1") ); + m_sprTryExtraStage.Load( THEME->GetPathTo("Graphics",GAMESTATE->IsExtraStage()?" try extra2":" try extra1") ); m_sprTryExtraStage.Command( TRY_EXTRA_STAGE_ON_COMMAND ); this->AddChild( &m_sprTryExtraStage ); if( GAMESTATE->IsExtraStage() ) - SOUNDMAN->PlayOnce( GET_THEME_ELEMENT_FALLBACK("Sounds"," try extra2") ); + SOUNDMAN->PlayOnce( THEME->GetPathTo("Sounds","ScreenEvaluation try extra2") ); else - SOUNDMAN->PlayOnce( GET_THEME_ELEMENT_FALLBACK("Sounds"," try extra1") ); + SOUNDMAN->PlayOnce( THEME->GetPathTo("Sounds","ScreenEvaluation try extra1") ); } else if( bOneHasNewRecord && ANNOUNCER->HasSoundsFor("evaluation new record") ) { SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation new record") ); } else - { - + { switch( m_Type ) { case stage: @@ -514,126 +599,17 @@ ScreenEvaluation::ScreenEvaluation( CString sClassName, Type type ) } - SOUNDMAN->PlayMusic( GET_THEME_ELEMENT_FALLBACK("Sounds"," music") ); + SOUNDMAN->PlayMusic( THEME->GetPathTo("Sounds","ScreenEvaluation music") ); } -/* -void ScreenEvaluation::TweenOnScreen() -{ - int i, p; - -// m_Menu.TweenOnScreenFromBlack( SM_None ); - - float fOriginalX, fOriginalY; - - for( i=0; i apActorsInBonusOrStageInfo; - apActorsInBonusOrStageInfo.push_back( &m_sprBonusFrame[p] ); - for( i=0; iGetX(); - apActorsInBonusOrStageInfo[i]->SetX( fOriginalX + SCREEN_WIDTH/2*(p==PLAYER_1 ? 1 : -1) ); - apActorsInBonusOrStageInfo[i]->BeginTweening( 0.2f ); - apActorsInBonusOrStageInfo[i]->BeginTweening( MENU_ELEMENTS_TWEEN_TIME, Actor::TWEEN_ACCELERATE ); - apActorsInBonusOrStageInfo[i]->SetTweenX( fOriginalX ); - } - - vector apActorsInGradeOrPercentFrame; - apActorsInGradeOrPercentFrame.push_back( &m_sprBonusFrame[p] ); - apActorsInGradeOrPercentFrame.push_back( &m_sprGradeFrame[p] ); - apActorsInGradeOrPercentFrame.push_back( &m_Grades[p] ); - apActorsInGradeOrPercentFrame.push_back( &m_sprPercentFrame[p] ); - apActorsInGradeOrPercentFrame.push_back( &m_textPercentWhole[p] ); - apActorsInGradeOrPercentFrame.push_back( &m_textPercentRemainder[p] ); - apActorsInGradeOrPercentFrame.push_back( &m_sprNewRecord[p] ); - for( i=0; iGetZoomY(); - apActorsInGradeOrPercentFrame[i]->SetZoomY( 0 ); - apActorsInGradeOrPercentFrame[i]->BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); - apActorsInGradeOrPercentFrame[i]->SetTweenZoomY( fOriginalZoomY ); - } - } - - float fOriginalZoomY = m_sprTryExtraStage.GetZoomY(); - m_sprTryExtraStage.SetZoomY( 0 ); - m_sprTryExtraStage.BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); - m_sprTryExtraStage.SetTweenZoomY( fOriginalZoomY ); -} -*/ void ScreenEvaluation::TweenOffScreen() { int p; - // banner area - for( unsigned i=0; iSetNewScreen( "ScreenSelectMusic" ); - SCREENMAN->SetNewScreen( SONGSEL_SCREEN ); + case SM_GoToNextScreen: + SCREENMAN->SetNewScreen( NEXT_SCREEN ); break; case SM_GoToSelectCourse: SCREENMAN->SetNewScreen( "ScreenSelectCourse" ); break; - case SM_GoToGameFinished: - // SCREENMAN->SetNewScreen( "ScreenNameEntry" ); - SCREENMAN->SetNewScreen( ENDGAME_SCREEN ); + case SM_GoToEndScreen: + SCREENMAN->SetNewScreen( END_SCREEN ); break; case SM_GoToEvaluationSummary: SCREENMAN->SetNewScreen( "ScreenEvaluationSummary" ); @@ -770,7 +766,7 @@ void ScreenEvaluation::MenuStart( PlayerNumber pn ) switch( GAMESTATE->m_PlayMode ) { case PLAY_MODE_ARCADE: - m_Menu.StartTransitioning( SM_GoToSelectMusic ); + m_Menu.StartTransitioning( SM_GoToNextScreen ); break; case PLAY_MODE_NONSTOP: case PLAY_MODE_ONI: @@ -788,7 +784,7 @@ void ScreenEvaluation::MenuStart( PlayerNumber pn ) case stage: if( m_bTryExtraStage ) { - m_Menu.StartTransitioning( SM_GoToSelectMusic ); + m_Menu.StartTransitioning( SM_GoToNextScreen ); } else if( GAMESTATE->IsFinalStage() || GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() ) { @@ -800,14 +796,14 @@ void ScreenEvaluation::MenuStart( PlayerNumber pn ) } else { - m_Menu.StartTransitioning( SM_GoToSelectMusic ); + m_Menu.StartTransitioning( SM_GoToNextScreen ); } break; case summary: - m_Menu.StartTransitioning( SM_GoToGameFinished ); + m_Menu.StartTransitioning( SM_GoToEndScreen ); break; case course: - m_Menu.StartTransitioning( SM_GoToGameFinished ); + m_Menu.StartTransitioning( SM_GoToEndScreen ); break; } } diff --git a/stepmania/src/ScreenEvaluation.h b/stepmania/src/ScreenEvaluation.h index 31ccc4f327..c97e0c7acd 100644 --- a/stepmania/src/ScreenEvaluation.h +++ b/stepmania/src/ScreenEvaluation.h @@ -49,43 +49,47 @@ protected: MenuElements m_Menu; - // // banner area - // - Banner m_Banner[MAX_SONGS_TO_SHOW]; - Sprite m_sprBannerFrame[MAX_SONGS_TO_SHOW]; + Banner m_LargeBanner; + Sprite m_sprLargeBannerFrame; Sprite m_sprStage; DifficultyIcon m_DifficultyIcon[NUM_PLAYERS]; BitmapText m_textPlayerOptions[NUM_PLAYERS]; + Banner m_SmallBanner[MAX_SONGS_TO_SHOW]; + Sprite m_sprSmallBannerFrame[MAX_SONGS_TO_SHOW]; - // // grade area - // Sprite m_sprGradeFrame[NUM_PLAYERS]; GradeDisplay m_Grades[NUM_PLAYERS]; + + // points area + Sprite m_sprPercentFrame[NUM_PLAYERS]; BitmapText m_textPercentWhole[NUM_PLAYERS]; BitmapText m_textPercentRemainder[NUM_PLAYERS]; BitmapText m_textDancePoints[NUM_PLAYERS]; - // // bonus area - // Sprite m_sprBonusFrame[NUM_PLAYERS]; Sprite m_sprPossibleBar[NUM_PLAYERS][NUM_RADAR_CATEGORIES]; Sprite m_sprActualBar[NUM_PLAYERS][NUM_RADAR_CATEGORIES]; - BitmapText m_textSongsSurvived[NUM_PLAYERS]; - // - // judgement area - // + // survived area + Sprite m_sprSurvivedFrame[NUM_PLAYERS]; + BitmapText m_textSurvivedNumber[NUM_PLAYERS]; + + // judgment area Sprite m_sprJudgeLabels[NUM_JUDGE_LINES]; BitmapText m_textJudgeNumbers[NUM_JUDGE_LINES][NUM_PLAYERS]; - // // score area - // - Sprite m_sprScoreLabel[NUM_SCORE_LINES]; - ScoreDisplayNormal m_ScoreDisplay[NUM_SCORE_LINES][NUM_PLAYERS]; + Sprite m_sprScoreLabel; + ScoreDisplayNormal m_ScoreDisplay[NUM_PLAYERS]; + + // time area + Sprite m_sprTimeLabel; + ScoreDisplayNormal m_TimeDisplay[NUM_PLAYERS]; + + // extra area Sprite m_sprNewRecord[NUM_PLAYERS]; bool m_bTryExtraStage; Sprite m_sprTryExtraStage; @@ -103,10 +107,22 @@ public: ScreenEvaluationSummary() : ScreenEvaluation("ScreenEvaluationSummary",ScreenEvaluation::summary) {}; }; -class ScreenEvaluationCourse : public ScreenEvaluation +class ScreenEvaluationNonstop : public ScreenEvaluation { public: - ScreenEvaluationCourse() : ScreenEvaluation("ScreenEvaluationCourse",ScreenEvaluation::course) {}; + ScreenEvaluationNonstop() : ScreenEvaluation("ScreenEvaluationNonstop",ScreenEvaluation::course) {}; +}; + +class ScreenEvaluationOni : public ScreenEvaluation +{ +public: + ScreenEvaluationOni() : ScreenEvaluation("ScreenEvaluationOni",ScreenEvaluation::course) {}; +}; + +class ScreenEvaluationEndless : public ScreenEvaluation +{ +public: + ScreenEvaluationEndless() : ScreenEvaluation("ScreenEvaluationEndless",ScreenEvaluation::course) {}; }; diff --git a/stepmania/src/ScreenGameplay.cpp b/stepmania/src/ScreenGameplay.cpp index 5ce9e416cc..0f7c8b4cb4 100644 --- a/stepmania/src/ScreenGameplay.cpp +++ b/stepmania/src/ScreenGameplay.cpp @@ -1440,9 +1440,13 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) SCREENMAN->SetNewScreen( "ScreenEvaluationStage" ); break; case PLAY_MODE_NONSTOP: + SCREENMAN->SetNewScreen( "ScreenEvaluationNonstop" ); + break; case PLAY_MODE_ONI: + SCREENMAN->SetNewScreen( "ScreenEvaluationOni" ); + break; case PLAY_MODE_ENDLESS: - SCREENMAN->SetNewScreen( "ScreenEvaluationCourse" ); + SCREENMAN->SetNewScreen( "ScreenEvaluationEndless" ); break; default: ASSERT(0); @@ -1502,9 +1506,13 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) SCREENMAN->SetNewScreen( "ScreenGameOver" ); break; case PLAY_MODE_NONSTOP: + SCREENMAN->SetNewScreen( "ScreenEvaluationNonstop" ); + break; case PLAY_MODE_ONI: + SCREENMAN->SetNewScreen( "ScreenEvaluationOni" ); + break; case PLAY_MODE_ENDLESS: - SCREENMAN->SetNewScreen( "ScreenEvaluationCourse" ); + SCREENMAN->SetNewScreen( "ScreenEvaluationEndless" ); break; default: ASSERT(0);