2003-02-16 04:01:45 +00:00
# include "global.h"
2002-06-24 22:04:31 +00:00
/*
-----------------------------------------------------------------------------
Class: ScreenEvaluation
Desc: See header.
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
Chris Danford
-----------------------------------------------------------------------------
*/
# include "ScreenEvaluation.h"
# include "SongManager.h"
# include "ScreenManager.h"
# include "GameManager.h"
# include "RageUtil.h"
# include "GameConstantsAndTypes.h"
2003-08-03 00:13:55 +00:00
# include "Steps.h"
2002-07-23 01:41:40 +00:00
# include "PrefsManager.h"
2002-06-24 22:04:31 +00:00
# include "RageLog.h"
# include "AnnouncerManager.h"
2002-07-23 01:41:40 +00:00
# include "GameState.h"
2002-08-27 03:59:22 +00:00
# include "GrooveRadar.h"
2002-11-11 04:53:31 +00:00
# include "ThemeManager.h"
2003-07-26 22:53:22 +00:00
# include "RageSounds.h"
2003-04-15 02:47:24 +00:00
# include "ActorUtil.h"
2003-05-11 22:19:40 +00:00
# include "RageTimer.h"
2003-07-11 09:35:28 +00:00
# include "UnlockSystem.h"
2003-07-17 20:10:07 +00:00
# include "Course.h"
2003-11-16 04:45:12 +00:00
# include "LightsManager.h"
2003-12-07 07:09:13 +00:00
# include "ProfileManager.h"
2002-08-27 03:59:22 +00:00
2003-03-28 23:13:32 +00:00
const int NUM_SCORE_DIGITS = 9 ;
2003-03-28 05:47:42 +00:00
// metrics that are common to all ScreenEvaluation classes
# define BANNER_WIDTH THEME->GetMetricF("ScreenEvaluation","BannerWidth")
# define BANNER_HEIGHT THEME->GetMetricF("ScreenEvaluation","BannerHeight")
2003-10-27 22:24:33 +00:00
const char * JUDGE_STRING [ NUM_JUDGE_LINES ] =
{
" Marvelous " , " Perfect " , " Great " , " Good " , " Boo " , " Miss " , " OK " , " MaxCombo " , " TotalError "
} ;
2003-04-15 02:47:24 +00:00
# define SPIN_GRADES THEME->GetMetricB("ScreenEvaluation","SpinGrades")
# define CHEER_DELAY_SECONDS THEME->GetMetricF("ScreenEvaluation","CheerDelaySeconds")
# define BAR_ACTUAL_MAX_COMMAND THEME->GetMetric ("ScreenEvaluation","BarActualMaxCommand")
2003-05-22 01:34:03 +00:00
// #define JUDGE_SOUND_TIME( name ) THEME->GetMetricF( m_sName, ssprintf("JudgeSoundTime%s", name) );
// #define SOUND_ON_FULL_ALPHA THEME->GetMetricB( m_sName, "JudgeSoundIfJudgeGraphicsFullAlpha" )
2003-03-28 05:47:42 +00:00
// metrics that are specific to classes derived from ScreenEvaluation
2003-11-10 23:25:44 +00:00
# define FAILED_SCREEN THEME->GetMetric (m_sName, "FailedScreen")
2003-04-12 06:16:12 +00:00
# define NEXT_SCREEN THEME->GetMetric (m_sName,"NextScreen")
# define END_SCREEN THEME->GetMetric (m_sName,"EndScreen")
# define SHOW_BANNER_AREA THEME->GetMetricB(m_sName,"ShowBannerArea")
# define SHOW_GRADE_AREA THEME->GetMetricB(m_sName,"ShowGradeArea")
# define SHOW_POINTS_AREA THEME->GetMetricB(m_sName,"ShowPointsArea")
# define SHOW_BONUS_AREA THEME->GetMetricB(m_sName,"ShowBonusArea")
# define SHOW_SURVIVED_AREA THEME->GetMetricB(m_sName,"ShowSurvivedArea")
2003-04-15 02:47:24 +00:00
# define SHOW_WIN_AREA THEME->GetMetricB(m_sName,"ShowWinArea")
2003-04-12 06:16:12 +00:00
# define SHOW_JUDGMENT( l ) THEME->GetMetricB(m_sName,ssprintf("Show%s",JUDGE_STRING[l]))
# define SHOW_SCORE_AREA THEME->GetMetricB(m_sName,"ShowScoreArea")
# define SHOW_TIME_AREA THEME->GetMetricB(m_sName,"ShowTimeArea")
2003-10-23 06:28:17 +00:00
# define SHOW_GRAPH_AREA THEME->GetMetricB(m_sName,"ShowGraphArea")
# define SHOW_COMBO_AREA THEME->GetMetricB(m_sName,"ShowComboArea")
2003-10-31 03:10:31 +00:00
# define SHOW_FULL_COMBO THEME->GetMetricB(m_sName,"ShowFullCombo")
2003-10-23 06:28:17 +00:00
# define GRAPH_START_HEIGHT THEME->GetMetricF(m_sName,"GraphStartHeight")
2003-09-27 23:31:42 +00:00
# define TYPE THEME->GetMetric (m_sName,"Type")
2003-03-28 05:47:42 +00:00
2003-11-26 04:20:38 +00:00
static const int NUM_SHOWN_RADAR_CATEGORIES = 5 ;
2003-03-28 05:47:42 +00:00
const ScreenMessage SM_GoToSelectCourse = ScreenMessage ( SM_User + 3 ) ;
2003-10-15 01:05:20 +00:00
//const ScreenMessage SM_GoToEvaluationSummary = ScreenMessage(SM_User+4);
2003-03-28 05:47:42 +00:00
const ScreenMessage SM_GoToEndScreen = ScreenMessage ( SM_User + 5 ) ;
const ScreenMessage SM_PlayCheer = ScreenMessage ( SM_User + 6 ) ;
2002-06-24 22:04:31 +00:00
2003-09-27 23:31:42 +00:00
ScreenEvaluation : : ScreenEvaluation ( CString sClassName ) : Screen ( sClassName )
2002-06-24 22:04:31 +00:00
{
2003-01-24 02:43:07 +00:00
//
2003-03-24 21:37:13 +00:00
// debugging
2003-01-24 02:43:07 +00:00
//
2003-10-27 22:24:33 +00:00
/*
GAMESTATE->m_PlayMode = PLAY_MODE_ARCADE;
2003-03-24 21:37:13 +00:00
GAMESTATE->m_CurStyle = STYLE_DANCE_VERSUS;
GAMESTATE->m_MasterPlayerNumber = PLAYER_1;
2003-03-28 05:47:42 +00:00
GAMESTATE->m_pCurSong = SONGMAN->GetAllSongs()[0];
2003-10-27 22:24:33 +00:00
// GAMESTATE->m_pCurCourse = SONGMAN->m_pCourses[0];
GAMESTATE->m_pCurNotes[PLAYER_1] = GAMESTATE->m_pCurSong->m_apNotes[0];
GAMESTATE->m_pCurNotes[PLAYER_2] = GAMESTATE->m_pCurSong->m_apNotes[0];
2003-03-24 21:37:13 +00:00
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;
2003-03-28 05:47:42 +00:00
GAMESTATE->m_iCurrentStageIndex = 2;
2003-03-28 23:13:32 +00:00
*/
2003-03-24 21:37:13 +00:00
LOG - > Trace ( " ScreenEvaluation::ScreenEvaluation() " ) ;
2003-11-16 04:45:12 +00:00
LIGHTSMAN - > SetLightMode ( LIGHTMODE_MENU ) ;
2003-11-10 23:25:44 +00:00
m_bFailed = false ; // the evaluation is not showing failed results by default
2003-04-12 06:16:12 +00:00
m_sName = sClassName ;
2003-09-27 23:31:42 +00:00
if ( ! TYPE . CompareNoCase ( " stage " ) )
m_Type = stage ;
else if ( ! TYPE . CompareNoCase ( " summary " ) )
m_Type = summary ;
else if ( ! TYPE . CompareNoCase ( " course " ) )
m_Type = course ;
else
RageException : : Throw ( " Unknown evaluation type \" %s \" " , TYPE . c_str ( ) ) ;
2003-03-24 21:37:13 +00:00
int p ;
2002-06-24 22:04:31 +00:00
2003-01-24 02:43:07 +00:00
//
// Figure out which statistics and songs we're going to display
//
StageStats stageStats ;
2003-11-10 23:25:44 +00:00
if ( stageStats . AllFailed ( ) ) // if everyone failed
m_bFailed = true ; // flag it for this screen
2003-01-24 02:43:07 +00:00
vector < Song * > vSongsToShow ;
2003-03-24 21:37:13 +00:00
switch ( m_Type )
2002-06-24 22:04:31 +00:00
{
2003-03-24 21:37:13 +00:00
case summary :
2003-01-27 02:00:38 +00:00
GAMESTATE - > GetFinalEvalStatsAndSongs ( stageStats , vSongsToShow ) ;
2002-07-28 20:28:37 +00:00
break ;
2003-03-24 21:37:13 +00:00
case stage :
case course :
2003-07-31 20:34:01 +00:00
LOG - > Trace ( " We made it to stage " ) ;
2003-01-24 02:43:07 +00:00
stageStats = GAMESTATE - > m_CurStageStats ;
2002-07-23 01:41:40 +00:00
break ;
2003-01-24 02:43:07 +00:00
default :
ASSERT ( 0 ) ;
2002-06-24 22:04:31 +00:00
}
2003-10-23 06:28:17 +00:00
stageStats . Finish ( ) ;
2003-09-21 00:17:34 +00:00
LOG - > Trace ( " total error: %i, %i " , stageStats . iTotalError [ 0 ] , stageStats . iTotalError [ 1 ] ) ;
2002-06-24 22:04:31 +00:00
2003-03-28 23:13:32 +00:00
/*
2003-01-24 02:43:07 +00:00
//
2003-03-24 21:37:13 +00:00
// Debugging
2003-01-24 02:43:07 +00:00
//
2002-06-24 22:04:31 +00:00
{
2003-03-24 21:37:13 +00:00
for( int p=0; p<NUM_PLAYERS; p++ ) // foreach line
for( int r=0; r<NUM_RADAR_CATEGORIES; r++ ) // foreach line
2002-07-16 22:00:59 +00:00
{
2003-03-24 21:37:13 +00:00
stageStats.fRadarPossible[p][r] = 0.5f + r/10.0f;
stageStats.fRadarActual[p][r] = 0.5f + r/10.0f;
2002-06-24 22:04:31 +00:00
}
}
2003-03-28 23:13:32 +00:00
*/
2002-06-24 22:04:31 +00:00
2002-07-23 01:41:40 +00:00
//
// Calculate grades
//
2002-06-24 22:04:31 +00:00
Grade grade [ NUM_PLAYERS ] ;
2002-07-23 01:41:40 +00:00
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
{
2003-02-03 05:53:59 +00:00
if ( GAMESTATE - > IsPlayerEnabled ( p ) )
grade [ p ] = stageStats . GetGrade ( ( PlayerNumber ) p ) ;
2003-01-24 02:43:07 +00:00
else
2003-02-03 05:53:59 +00:00
grade [ p ] = GRADE_E ;
2003-08-11 12:14:26 +00:00
if ( PREFSMAN - > m_iScoringType = = PrefsManager : : SCORING_5TH )
{
int ScoreBonuses [ 9 ] = { 0 , 0 , 100 , 1000 , 10000 , 100000 , 1000000 , 10000000 , 10000000 } ;
GAMESTATE - > m_CurStageStats . iBonus [ p ] + = ScoreBonuses [ ( int ) grade [ p ] ] ;
2003-08-12 06:09:49 +00:00
stageStats . iBonus [ p ] + = ScoreBonuses [ ( int ) grade [ p ] ] ;
2003-08-11 12:14:26 +00:00
}
2002-07-23 01:41:40 +00:00
}
2002-07-28 20:28:37 +00:00
Grade max_grade = GRADE_NO_DATA ;
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
2003-08-07 10:15:16 +00:00
{
2002-07-28 20:28:37 +00:00
max_grade = max ( max_grade , grade [ p ] ) ;
2003-08-07 10:15:16 +00:00
// if its extra stage, update # passed stages
if ( PREFSMAN - > m_bUseUnlockSystem & &
( GAMESTATE - > IsExtraStage ( ) | | GAMESTATE - > IsExtraStage2 ( ) ) & &
grade [ p ] > GRADE_E & &
m_Type ! = summary )
2003-09-19 07:02:53 +00:00
UNLOCKSYS - > UnlockClearExtraStage ( ) ;
2003-08-07 10:15:16 +00:00
}
2002-06-24 22:04:31 +00:00
2003-01-24 02:43:07 +00:00
//
2002-08-27 16:53:25 +00:00
// update persistent statistics
2003-01-24 02:43:07 +00:00
//
2003-10-14 17:06:30 +00:00
int iPersonalHighScoreIndex [ NUM_PLAYERS ] ;
int iMachineHighScoreIndex [ NUM_PLAYERS ] ;
RankingCategory rc [ NUM_PLAYERS ] ;
memset ( iPersonalHighScoreIndex , - 1 , sizeof ( iPersonalHighScoreIndex ) ) ;
memset ( iMachineHighScoreIndex , - 1 , sizeof ( iMachineHighScoreIndex ) ) ;
memset ( rc , - 1 , sizeof ( rc ) ) ;
2002-07-31 04:59:49 +00:00
2003-02-16 10:12:03 +00:00
2003-10-14 17:06:30 +00:00
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
2003-02-14 21:42:44 +00:00
{
2003-11-15 20:51:51 +00:00
// only save scores for human players ;)
2003-10-14 17:06:30 +00:00
if ( ! GAMESTATE - > IsHumanPlayer ( p ) )
2003-11-15 20:51:51 +00:00
continue ;
// don't save scores if the player chose not to
2003-10-14 17:06:30 +00:00
if ( ! GAMESTATE - > m_SongOptions . m_bSaveScore )
2003-11-15 20:51:51 +00:00
continue ;
// whether or not to save scores when the stage was failed
// depends on if this is a course or not ... it's handled
// below in the switch
2003-10-14 17:06:30 +00:00
switch ( m_Type )
2003-02-16 10:12:03 +00:00
{
2003-10-14 17:06:30 +00:00
case stage :
2003-05-09 05:56:05 +00:00
{
2003-11-15 20:51:51 +00:00
// don't save scores for a failed song
if ( m_bFailed ) continue ;
2003-10-14 17:06:30 +00:00
ASSERT ( GAMESTATE - > m_pCurNotes [ p ] ) ;
Steps : : MemCardData : : HighScore hs ;
hs . grade = grade [ p ] ;
2003-10-22 12:51:19 +00:00
hs . iScore = stageStats . iScore [ p ] + stageStats . iBonus [ p ] ;
2003-10-20 01:06:26 +00:00
hs . fPercentDP = stageStats . GetPercentDancePoints ( ( PlayerNumber ) p ) ;
2003-12-10 11:49:44 +00:00
if ( hs . fPercentDP > PREFSMAN - > m_fMinPercentageForHighScore )
GAMESTATE - > m_pCurNotes [ p ] - > AddHighScore ( ( PlayerNumber ) p , hs , iPersonalHighScoreIndex [ p ] , iMachineHighScoreIndex [ p ] ) ;
2003-07-07 10:22:53 +00:00
2003-10-14 17:06:30 +00:00
// update unlock data if unlocks are on
if ( PREFSMAN - > m_bUseUnlockSystem )
{
UNLOCKSYS - > UnlockClearStage ( ) ;
UNLOCKSYS - > UnlockAddAP ( grade [ p ] ) ;
UNLOCKSYS - > UnlockAddSP ( grade [ p ] ) ;
2003-09-18 20:05:29 +00:00
2003-10-14 17:06:30 +00:00
// we want to save dance points here if we are in event mode.
// otherwise, dance points will never get saved except
// in nonstop mode.
if ( PREFSMAN - > m_bEventMode )
UNLOCKSYS - > UnlockAddDP ( ( float ) stageStats . iActualDancePoints [ p ] ) ;
2003-09-18 20:05:29 +00:00
2003-05-09 05:56:05 +00:00
}
}
2003-10-14 17:06:30 +00:00
break ;
case summary :
2003-02-16 10:12:03 +00:00
{
2003-11-15 20:51:51 +00:00
// don't save scores for a failed game
// (I'm not sure if this is a case that can actally
// happen -avh4)
if ( m_bFailed ) continue ;
2003-10-14 17:06:30 +00:00
StepsType nt = GAMESTATE - > GetCurrentStyleDef ( ) - > m_StepsType ;
2003-02-16 10:12:03 +00:00
float fAverageMeter = stageStats . iMeter [ p ] / ( float ) PREFSMAN - > m_iNumArcadeStages ;
2003-10-14 17:06:30 +00:00
rc [ p ] = AverageMeterToRankingCategory ( fAverageMeter ) ;
2003-12-07 07:09:13 +00:00
ProfileManager : : CategoryData : : HighScore hs ;
2003-10-14 17:06:30 +00:00
hs . iScore = stageStats . iScore [ p ] ;
2003-12-10 11:49:44 +00:00
hs . fPercentDP = stageStats . GetPercentDancePoints ( ( PlayerNumber ) p ) ;
if ( hs . fPercentDP > PREFSMAN - > m_fMinPercentageForHighScore )
PROFILEMAN - > AddHighScore ( nt , rc [ p ] , ( PlayerNumber ) p , hs , iMachineHighScoreIndex [ p ] ) ;
2003-10-14 17:06:30 +00:00
// If unlocking is enabled, save the dance points
if ( PREFSMAN - > m_bUseUnlockSystem )
2003-10-14 21:39:13 +00:00
UNLOCKSYS - > UnlockAddDP ( ( float ) stageStats . iActualDancePoints [ p ] ) ;
2003-02-16 10:12:03 +00:00
}
2003-10-14 17:06:30 +00:00
break ;
case course :
{
Course * pCourse = GAMESTATE - > m_pCurCourse ;
if ( pCourse )
{
2003-11-15 20:51:51 +00:00
// don't save scores for a failed Nonstop (is this
// correct? -avh4)
// DO save scores for a failed Oni/Endless
if ( m_bFailed & & pCourse - > IsNonstop ( ) ) continue ;
2003-10-14 17:06:30 +00:00
StepsType nt = GAMESTATE - > GetCurrentStyleDef ( ) - > m_StepsType ;
Course : : MemCardData : : HighScore hs ;
2003-12-10 11:49:44 +00:00
hs . iScore = stageStats . iScore [ p ] ;
hs . fPercentDP = stageStats . GetPercentDancePoints ( ( PlayerNumber ) p ) ;
2003-10-14 17:06:30 +00:00
hs . fSurviveTime = stageStats . fAliveSeconds [ p ] ;
2003-12-10 11:49:44 +00:00
if ( hs . fPercentDP > PREFSMAN - > m_fMinPercentageForHighScore )
pCourse - > AddHighScore ( nt , ( PlayerNumber ) p , hs , iPersonalHighScoreIndex [ p ] , iMachineHighScoreIndex [ p ] ) ;
2003-10-14 17:06:30 +00:00
}
2003-02-16 10:12:03 +00:00
2003-10-14 17:06:30 +00:00
// If unlocking is enabled, save the dance points
// (for courses)
if ( PREFSMAN - > m_bUseUnlockSystem )
{
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
{
if ( ! GAMESTATE - > IsPlayerEnabled ( ( PlayerNumber ) p ) )
continue ; // skip
2003-02-16 10:12:03 +00:00
2003-10-14 17:06:30 +00:00
UNLOCKSYS - > UnlockAddDP ( ( float ) stageStats . iActualDancePoints [ p ] ) ;
UNLOCKSYS - > UnlockAddAP ( ( float ) stageStats . iSongsPassed [ p ] ) ;
UNLOCKSYS - > UnlockAddSP ( ( float ) stageStats . iSongsPassed [ p ] ) ;
}
}
// cannot just use score since it may be nonstop mode
2003-05-09 05:56:05 +00:00
2003-10-14 17:06:30 +00:00
}
break ;
default :
ASSERT ( 0 ) ;
2003-02-16 10:12:03 +00:00
}
2003-10-14 17:06:30 +00:00
}
2003-02-16 10:12:03 +00:00
2003-10-14 17:06:30 +00:00
// If both players get a machine high score, a player
// whose score is added later may bump the players who were
// added earlier. Adjust for this.
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
{
if ( ! GAMESTATE - > IsHumanPlayer ( p ) )
continue ; // skip
if ( iMachineHighScoreIndex [ p ] = = - 1 ) // no record
continue ; // skip
2003-11-10 23:25:44 +00:00
if ( m_bFailed ) // both players failed
continue ; // skip
2003-10-14 17:06:30 +00:00
for ( int p2 = 0 ; p2 < p ; p2 + + )
{
if ( ! GAMESTATE - > IsHumanPlayer ( p2 ) )
continue ; // skip
if ( iMachineHighScoreIndex [ p2 ] = = - 1 ) // no record
continue ; // skip
bool bPlayedSameSteps ;
switch ( m_Type )
2003-10-05 00:33:05 +00:00
{
2003-10-14 17:06:30 +00:00
case stage :
bPlayedSameSteps = GAMESTATE - > m_pCurNotes [ p ] = = GAMESTATE - > m_pCurNotes [ p2 ] ;
break ;
case summary :
bPlayedSameSteps = rc [ p ] = = rc [ p2 ] ;
break ;
case course :
bPlayedSameSteps = true ;
break ;
2003-10-05 00:33:05 +00:00
}
2003-10-14 17:06:30 +00:00
if ( iMachineHighScoreIndex [ p ] > = iMachineHighScoreIndex [ p2 ] )
2003-07-11 09:35:28 +00:00
{
2003-10-14 17:06:30 +00:00
iMachineHighScoreIndex [ p2 ] + + ;
if ( iMachineHighScoreIndex [ p2 ] > = NUM_RANKING_LINES )
iMachineHighScoreIndex [ p2 ] = - 1 ;
2003-07-11 09:35:28 +00:00
}
2003-02-16 10:12:03 +00:00
}
2002-06-24 22:04:31 +00:00
}
2003-01-24 02:43:07 +00:00
m_bTryExtraStage =
GAMESTATE - > HasEarnedExtraStage ( ) & &
2003-03-24 21:37:13 +00:00
m_Type = = stage ;
2003-02-28 04:31:36 +00:00
2003-03-24 21:37:13 +00:00
2003-04-12 06:16:12 +00:00
m_Menu . Load ( m_sName ) ;
2003-03-24 21:37:13 +00:00
this - > AddChild ( & m_Menu ) ;
2003-11-10 23:25:44 +00:00
if ( m_bFailed & & m_Type = = stage )
{
m_bgFailedBack . LoadFromAniDir ( THEME - > GetPathToB ( " ScreenEvaluationStage Failed Background " ) ) ;
m_bgFailedOverlay . LoadFromAniDir ( THEME - > GetPathToB ( " ScreenEvaluationStage Failed Overlay " ) ) ;
}
else if ( m_Type = = stage )
{
// the themer can use the regular background for passed background
m_bgPassedOverlay . LoadFromAniDir ( THEME - > GetPathToB ( " ScreenEvaluationStage Passed Overlay " ) ) ;
}
2003-01-24 02:43:07 +00:00
//
2003-03-24 21:37:13 +00:00
// init banner area
2003-01-24 02:43:07 +00:00
//
2003-03-28 05:47:42 +00:00
if ( SHOW_BANNER_AREA )
2002-08-22 09:31:32 +00:00
{
2003-03-28 05:47:42 +00:00
switch ( m_Type )
2003-03-24 21:37:13 +00:00
{
2003-03-28 05:47:42 +00:00
case stage :
2002-07-23 01:41:40 +00:00
{
2003-03-28 05:47:42 +00:00
m_LargeBanner . LoadFromSong ( GAMESTATE - > m_pCurSong ) ;
2003-07-03 06:38:57 +00:00
m_LargeBanner . ScaleToClipped ( BANNER_WIDTH , BANNER_HEIGHT ) ;
2003-04-15 02:47:24 +00:00
m_LargeBanner . SetName ( " LargeBanner " ) ;
UtilSetXYAndOnCommand ( m_LargeBanner , " ScreenEvaluation " ) ;
2003-03-28 05:47:42 +00:00
this - > AddChild ( & m_LargeBanner ) ;
2003-04-12 17:39:27 +00:00
m_sprLargeBannerFrame . Load ( THEME - > GetPathToG ( " ScreenEvaluation banner frame " ) ) ;
2003-04-15 02:47:24 +00:00
m_sprLargeBannerFrame . SetName ( " LargeBanner " ) ;
UtilSetXYAndOnCommand ( m_sprLargeBannerFrame , " ScreenEvaluation " ) ;
2003-03-28 05:47:42 +00:00
this - > AddChild ( & m_sprLargeBannerFrame ) ;
2003-04-12 17:39:27 +00:00
m_sprStage . Load ( THEME - > GetPathToG ( " ScreenEvaluation stage " + GAMESTATE - > GetStageText ( ) ) ) ;
2003-04-15 02:47:24 +00:00
m_sprStage . SetName ( " Stage " ) ;
UtilSetXYAndOnCommand ( m_sprStage , " ScreenEvaluation " ) ;
2003-03-28 05:47:42 +00:00
this - > AddChild ( & m_sprStage ) ;
for ( int p = 0 ; p < NUM_PLAYERS ; p + + )
{
if ( ! GAMESTATE - > IsPlayerEnabled ( p ) )
continue ; // skip
2003-11-13 00:39:36 +00:00
# ifdef _XBOX
//shorten filenames for FATX
m_DifficultyIcon [ p ] . Load ( THEME - > GetPathToG ( " ScreenEvaluation diff icons 1x5 " ) ) ;
# else
2003-05-09 06:04:50 +00:00
m_DifficultyIcon [ p ] . Load ( THEME - > GetPathToG ( " ScreenEvaluation difficulty icons 1x5 " ) ) ;
2003-11-13 00:39:36 +00:00
# endif
2003-03-28 05:47:42 +00:00
m_DifficultyIcon [ p ] . SetFromNotes ( ( PlayerNumber ) p , GAMESTATE - > m_pCurNotes [ p ] ) ;
2003-04-15 02:47:24 +00:00
m_DifficultyIcon [ p ] . SetName ( ssprintf ( " DifficultyIconP%d " , p + 1 ) ) ;
UtilSetXYAndOnCommand ( m_DifficultyIcon [ p ] , " ScreenEvaluation " ) ;
2003-03-28 05:47:42 +00:00
this - > AddChild ( & m_DifficultyIcon [ p ] ) ;
2003-04-12 17:39:27 +00:00
m_textPlayerOptions [ p ] . LoadFromFont ( THEME - > GetPathToF ( " Common normal " ) ) ;
2003-03-28 05:47:42 +00:00
CString sPO = GAMESTATE - > m_PlayerOptions [ p ] . GetString ( ) ;
sPO . Replace ( " , " , " \n " ) ;
2003-04-15 02:47:24 +00:00
m_textPlayerOptions [ p ] . SetName ( ssprintf ( " PlayerOptionsP%d " , p + 1 ) ) ;
UtilSetXYAndOnCommand ( m_textPlayerOptions [ p ] , " ScreenEvaluation " ) ;
2003-03-28 05:47:42 +00:00
m_textPlayerOptions [ p ] . SetText ( sPO ) ;
this - > AddChild ( & m_textPlayerOptions [ p ] ) ;
}
2002-07-23 01:41:40 +00:00
}
2003-03-28 05:47:42 +00:00
break ;
case summary :
2002-07-17 19:24:27 +00:00
{
2003-03-28 05:47:42 +00:00
for ( unsigned i = 0 ; i < vSongsToShow . size ( ) ; i + + )
{
m_SmallBanner [ i ] . LoadFromSong ( vSongsToShow [ i ] ) ;
2003-07-03 06:38:57 +00:00
m_SmallBanner [ i ] . ScaleToClipped ( BANNER_WIDTH , BANNER_HEIGHT ) ;
2003-04-15 02:47:24 +00:00
m_SmallBanner [ i ] . SetName ( ssprintf ( " SmallBanner%d " , i + 1 ) ) ;
UtilSetXYAndOnCommand ( m_SmallBanner [ i ] , " ScreenEvaluation " ) ;
2003-03-28 05:47:42 +00:00
this - > AddChild ( & m_SmallBanner [ i ] ) ;
2003-04-12 17:39:27 +00:00
m_sprSmallBannerFrame [ i ] . Load ( THEME - > GetPathToG ( " ScreenEvaluation banner frame " ) ) ;
2003-04-15 02:47:24 +00:00
m_sprSmallBannerFrame [ i ] . SetName ( ssprintf ( " SmallBanner%d " , i + 1 ) ) ;
UtilSetXYAndOnCommand ( m_sprSmallBannerFrame [ i ] , " ScreenEvaluation " ) ;
2003-03-28 05:47:42 +00:00
this - > AddChild ( & m_sprSmallBannerFrame [ i ] ) ;
}
2002-07-17 19:24:27 +00:00
}
2003-03-28 05:47:42 +00:00
break ;
case course :
{
m_LargeBanner . LoadFromCourse ( GAMESTATE - > m_pCurCourse ) ;
2003-07-03 06:38:57 +00:00
m_LargeBanner . ScaleToClipped ( BANNER_WIDTH , BANNER_HEIGHT ) ;
2003-04-15 02:47:24 +00:00
m_LargeBanner . SetName ( " LargeBanner " ) ;
UtilSetXYAndOnCommand ( m_LargeBanner , " ScreenEvaluation " ) ;
2003-03-28 05:47:42 +00:00
this - > AddChild ( & m_LargeBanner ) ;
2003-04-12 17:39:27 +00:00
m_sprLargeBannerFrame . Load ( THEME - > GetPathToG ( " ScreenEvaluation banner frame " ) ) ;
2003-04-15 02:47:24 +00:00
m_sprLargeBannerFrame . SetName ( " LargeBanner " ) ;
UtilSetXYAndOnCommand ( m_sprLargeBannerFrame , " ScreenEvaluation " ) ;
2003-03-28 05:47:42 +00:00
this - > AddChild ( & m_sprLargeBannerFrame ) ;
}
break ;
default :
ASSERT ( 0 ) ;
2002-06-24 22:04:31 +00:00
}
2003-03-24 21:37:13 +00:00
}
2002-06-24 22:04:31 +00:00
2003-10-23 06:28:17 +00:00
//
// init graph area
//
if ( SHOW_GRAPH_AREA )
{
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
{
if ( ! GAMESTATE - > IsPlayerEnabled ( p ) )
continue ; // skip
m_Graph [ p ] . SetName ( ssprintf ( " GraphP%i " , p + 1 ) ) ;
m_Graph [ p ] . Load ( THEME - > GetPathToG ( ssprintf ( " %s graph p%i " , m_sName . c_str ( ) , p + 1 ) ) , GRAPH_START_HEIGHT ) ;
m_Graph [ p ] . LoadFromStageStats ( stageStats , ( PlayerNumber ) p ) ;
SET_XY_AND_ON_COMMAND ( m_Graph [ p ] ) ;
this - > AddChild ( & m_Graph [ p ] ) ;
}
}
if ( SHOW_COMBO_AREA )
{
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
{
if ( ! GAMESTATE - > IsPlayerEnabled ( p ) )
continue ; // skip
m_Combo [ p ] . SetName ( ssprintf ( " ComboP%i " , p + 1 ) ) ;
m_Combo [ p ] . Load ( ssprintf ( " ScreenEvaluationStage combo p%i " , p + 1 ) , stageStats , ( PlayerNumber ) p ) ;
SET_XY_AND_ON_COMMAND ( m_Combo [ p ] ) ;
this - > AddChild ( & m_Combo [ p ] ) ;
}
}
2003-03-24 21:37:13 +00:00
//
// init grade area
//
2003-03-28 05:47:42 +00:00
if ( SHOW_GRADE_AREA )
2003-03-24 21:37:13 +00:00
{
2003-03-28 05:47:42 +00:00
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
{
if ( ! GAMESTATE - > IsPlayerEnabled ( ( PlayerNumber ) p ) )
continue ; // skip
2003-03-24 21:37:13 +00:00
2003-07-04 18:42:53 +00:00
m_sprGradeFrame [ p ] . Load ( THEME - > GetPathToG ( ssprintf ( " ScreenEvaluation grade frame p%d " , p + 1 ) ) ) ;
2003-04-15 02:47:24 +00:00
m_sprGradeFrame [ p ] . SetName ( ssprintf ( " GradeFrameP%d " , p + 1 ) ) ;
UtilSetXYAndOnCommand ( m_sprGradeFrame [ p ] , " ScreenEvaluation " ) ;
2003-03-28 05:47:42 +00:00
this - > AddChild ( & m_sprGradeFrame [ p ] ) ;
2003-03-24 21:37:13 +00:00
2003-04-12 17:39:27 +00:00
m_Grades [ p ] . Load ( THEME - > GetPathToG ( " ScreenEvaluation grades " ) ) ;
2003-03-31 03:11:31 +00:00
m_Grades [ p ] . SetGrade ( ( PlayerNumber ) p , grade [ p ] ) ;
2003-04-15 02:47:24 +00:00
m_Grades [ p ] . SetName ( ssprintf ( " GradeP%d " , p + 1 ) ) ;
UtilSetXYAndOnCommand ( m_Grades [ p ] , " ScreenEvaluation " ) ;
2003-03-28 05:47:42 +00:00
if ( SPIN_GRADES )
2003-03-31 03:11:31 +00:00
m_Grades [ p ] . Spin ( ) ;
2003-03-28 05:47:42 +00:00
this - > AddChild ( & m_Grades [ p ] ) ;
2003-03-25 21:17:29 +00:00
}
2003-03-28 05:47:42 +00:00
}
//
// init points area
//
if ( SHOW_POINTS_AREA )
{
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
2003-03-25 21:17:29 +00:00
{
2003-10-13 04:43:36 +00:00
if ( ! GAMESTATE - > IsPlayerEnabled ( ( PlayerNumber ) p ) )
continue ; // skip
2003-04-15 02:47:24 +00:00
m_sprPercentFrame [ p ] . SetName ( ssprintf ( " PercentFrameP%d " , p + 1 ) ) ;
2003-10-05 23:00:26 +00:00
m_sprPercentFrame [ p ] . Load ( THEME - > GetPathToG ( ssprintf ( " ScreenEvaluation percent frame p%d " , p + 1 ) ) ) ;
2003-04-15 02:47:24 +00:00
UtilSetXYAndOnCommand ( m_sprPercentFrame [ p ] , " ScreenEvaluation " ) ;
2003-03-28 05:47:42 +00:00
this - > AddChild ( & m_sprPercentFrame [ p ] ) ;
2003-10-05 23:16:29 +00:00
/* Use "ScreenEvaluation Percent" for the [metric set], but position and
2003-10-05 00:33:05 +00:00
* tween it with "PercentP1X", etc. */
2003-10-05 23:16:29 +00:00
m_Percent [ p ] . SetName ( " ScreenEvaluation Percent " ) ;
2003-10-05 00:33:05 +00:00
m_Percent [ p ] . Load ( ( PlayerNumber ) p ) ;
m_Percent [ p ] . SetXY ( THEME - > GetMetricF ( " ScreenEvaluation " , ssprintf ( " PercentP%dX " , p + 1 ) ) ,
THEME - > GetMetricF ( " ScreenEvaluation " , ssprintf ( " PercentP%dY " , p + 1 ) ) ) ;
m_Percent [ p ] . Command ( THEME - > GetMetric ( " ScreenEvaluation " , ssprintf ( " PercentP%dOnCommand " , p + 1 ) ) ) ;
this - > AddChild ( & m_Percent [ p ] ) ;
2003-03-25 21:17:29 +00:00
}
2003-03-24 21:37:13 +00:00
}
//
// init bonus area
//
2003-03-28 05:47:42 +00:00
if ( SHOW_BONUS_AREA )
2003-03-24 21:37:13 +00:00
{
2003-03-28 05:47:42 +00:00
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
{
if ( ! GAMESTATE - > IsPlayerEnabled ( ( PlayerNumber ) p ) )
continue ; // skip
2003-03-24 21:37:13 +00:00
2003-07-04 18:42:53 +00:00
m_sprBonusFrame [ p ] . Load ( THEME - > GetPathToG ( ssprintf ( " ScreenEvaluation bonus frame p%d " , p + 1 ) ) ) ;
2003-04-15 02:47:24 +00:00
m_sprBonusFrame [ p ] . SetName ( ssprintf ( " BonusFrameP%d " , p + 1 ) ) ;
UtilSetXYAndOnCommand ( m_sprBonusFrame [ p ] , " ScreenEvaluation " ) ;
2003-03-28 05:47:42 +00:00
this - > AddChild ( & m_sprBonusFrame [ p ] ) ;
2003-03-24 21:37:13 +00:00
2003-11-26 04:20:38 +00:00
for ( int r = 0 ; r < NUM_SHOWN_RADAR_CATEGORIES ; r + + ) // foreach line
2003-03-28 05:47:42 +00:00
{
2003-07-04 20:15:15 +00:00
m_sprPossibleBar [ p ] [ r ] . Load ( THEME - > GetPathToG ( ssprintf ( " ScreenEvaluation bar possible p%d " , p + 1 ) ) ) ;
2003-03-28 05:47:42 +00:00
m_sprPossibleBar [ p ] [ r ] . SetWidth ( m_sprPossibleBar [ p ] [ r ] . GetUnzoomedWidth ( ) * stageStats . fRadarPossible [ p ] [ r ] ) ;
2003-04-15 02:47:24 +00:00
m_sprPossibleBar [ p ] [ r ] . SetName ( ssprintf ( " BarPossible%dP%d " , r + 1 , p + 1 ) ) ;
UtilSetXYAndOnCommand ( m_sprPossibleBar [ p ] [ r ] , " ScreenEvaluation " ) ;
2003-03-28 05:47:42 +00:00
this - > AddChild ( & m_sprPossibleBar [ p ] [ r ] ) ;
2003-07-04 20:15:15 +00:00
m_sprActualBar [ p ] [ r ] . Load ( THEME - > GetPathToG ( ssprintf ( " ScreenEvaluation bar actual p%d " , p + 1 ) ) ) ;
2003-07-24 13:35:20 +00:00
// should be out of the possible bar, not actual (whatever value that is at)
m_sprActualBar [ p ] [ r ] . SetWidth ( m_sprPossibleBar [ p ] [ r ] . GetUnzoomedWidth ( ) * stageStats . fRadarActual [ p ] [ r ] ) ;
float value = ( float ) 100 * m_sprActualBar [ p ] [ r ] . GetUnzoomedWidth ( ) / m_sprPossibleBar [ p ] [ r ] . GetUnzoomedWidth ( ) ;
LOG - > Trace ( " Radar bar %d of 5 - %f percent " , r , value ) ;
2003-04-15 02:47:24 +00:00
m_sprActualBar [ p ] [ r ] . SetName ( ssprintf ( " BarActual%dP%d " , r + 1 , p + 1 ) ) ;
UtilSetXYAndOnCommand ( m_sprActualBar [ p ] [ r ] , " ScreenEvaluation " ) ;
2003-07-24 13:35:20 +00:00
// .99999 is fairly close to 1.00, so we use that
if ( stageStats . fRadarActual [ p ] [ r ] > 0.99999f )
2003-03-28 05:47:42 +00:00
m_sprActualBar [ p ] [ r ] . Command ( BAR_ACTUAL_MAX_COMMAND ) ;
this - > AddChild ( & m_sprActualBar [ p ] [ r ] ) ;
}
2002-06-24 22:04:31 +00:00
}
2003-03-28 05:47:42 +00:00
}
2003-03-24 21:37:13 +00:00
2003-03-28 05:47:42 +00:00
//
// init survived area
//
if ( SHOW_SURVIVED_AREA )
{
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
{
if ( ! GAMESTATE - > IsPlayerEnabled ( ( PlayerNumber ) p ) )
continue ; // skip
2003-07-04 18:42:53 +00:00
m_sprSurvivedFrame [ p ] . Load ( THEME - > GetPathToG ( ssprintf ( " ScreenEvaluation survived frame p%d " , p + 1 ) ) ) ;
2003-04-15 02:47:24 +00:00
m_sprSurvivedFrame [ p ] . SetName ( ssprintf ( " SurvivedFrameP%d " , p + 1 ) ) ;
UtilSetXYAndOnCommand ( m_sprSurvivedFrame [ p ] , " ScreenEvaluation " ) ;
2003-03-28 05:47:42 +00:00
this - > AddChild ( & m_sprSurvivedFrame [ p ] ) ;
2003-04-12 17:39:27 +00:00
m_textSurvivedNumber [ p ] . LoadFromNumbers ( THEME - > GetPathToN ( " ScreenEvaluation stage " ) ) ;
2003-03-28 05:47:42 +00:00
m_textSurvivedNumber [ p ] . EnableShadow ( false ) ;
2003-07-06 10:01:59 +00:00
// curewater: edited the "# stages cleared" text so it deducts one if you failed.
// Should be accurate, but I'm not sure if its "standard" that (bool)true = 1. (assumption)
m_textSurvivedNumber [ p ] . SetText ( ssprintf ( " %02d " , stageStats . iSongsPlayed [ p ] - ( int ) stageStats . bFailed [ p ] ) ) ;
2003-04-15 02:47:24 +00:00
m_textSurvivedNumber [ p ] . SetName ( ssprintf ( " SurvivedNumberP%d " , p + 1 ) ) ;
UtilSetXYAndOnCommand ( m_textSurvivedNumber [ p ] , " ScreenEvaluation " ) ;
2003-03-28 05:47:42 +00:00
this - > AddChild ( & m_textSurvivedNumber [ p ] ) ;
}
2002-06-24 22:04:31 +00:00
}
2003-03-28 05:47:42 +00:00
2003-04-15 02:47:24 +00:00
//
// init win area
//
if ( SHOW_WIN_AREA )
{
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
{
if ( ! GAMESTATE - > IsPlayerEnabled ( ( PlayerNumber ) p ) )
continue ; // skip
2003-07-04 18:42:53 +00:00
m_sprWinFrame [ p ] . Load ( THEME - > GetPathToG ( ssprintf ( " ScreenEvaluation win frame p%d " , p + 1 ) ) ) ;
2003-04-15 02:47:24 +00:00
m_sprWinFrame [ p ] . SetName ( ssprintf ( " WinFrameP%d " , p + 1 ) ) ;
UtilSetXYAndOnCommand ( m_sprWinFrame [ p ] , " ScreenEvaluation " ) ;
this - > AddChild ( & m_sprWinFrame [ p ] ) ;
2003-07-04 18:42:53 +00:00
m_sprWin [ p ] . Load ( THEME - > GetPathToG ( ssprintf ( " ScreenEvaluation win p%d 1x3 " , p + 1 ) ) ) ;
2003-04-15 02:47:24 +00:00
m_sprWin [ p ] . StopAnimating ( ) ;
2003-07-04 18:42:53 +00:00
int iFrame = GAMESTATE - > GetStageResult ( ( PlayerNumber ) p ) ;
2003-04-21 02:41:10 +00:00
m_sprWin [ p ] . SetState ( iFrame ) ;
2003-04-15 02:47:24 +00:00
m_sprWin [ p ] . SetName ( ssprintf ( " WinP%d " , p + 1 ) ) ;
UtilSetXYAndOnCommand ( m_sprWin [ p ] , " ScreenEvaluation " ) ;
this - > AddChild ( & m_sprWin [ p ] ) ;
}
}
2003-01-24 02:43:07 +00:00
//
2003-03-28 05:47:42 +00:00
// init judgment area
2003-01-24 02:43:07 +00:00
//
2003-02-14 06:53:13 +00:00
int l ;
for ( l = 0 ; l < NUM_JUDGE_LINES ; l + + )
2002-09-10 08:21:55 +00:00
{
2003-05-22 01:34:03 +00:00
// m_TimeToPlayJudgeSound[l] = -1;
2003-07-25 08:05:29 +00:00
if ( l = = 0 & & ! GAMESTATE - > ShowMarvelous ( ) )
2003-04-11 00:12:07 +00:00
continue ; // skip
2003-03-28 05:47:42 +00:00
if ( SHOW_JUDGMENT ( l ) )
{
2003-10-27 22:24:33 +00:00
m_sprJudgeLabels [ l ] . Load ( THEME - > GetPathToG ( " ScreenEvaluation judge labels " ) ) ;
2003-03-28 05:47:42 +00:00
m_sprJudgeLabels [ l ] . StopAnimating ( ) ;
m_sprJudgeLabels [ l ] . SetState ( l ) ;
2003-04-15 02:47:24 +00:00
m_sprJudgeLabels [ l ] . SetName ( ssprintf ( " %sLabel " , JUDGE_STRING [ l ] ) ) ;
UtilSetXYAndOnCommand ( m_sprJudgeLabels [ l ] , " ScreenEvaluation " ) ;
2003-03-28 05:47:42 +00:00
this - > AddChild ( & m_sprJudgeLabels [ l ] ) ;
2002-09-10 08:21:55 +00:00
2003-11-13 00:39:36 +00:00
# ifdef _XBOX
//shorten filenames for FATX
// m_soundJudgeSound[l].Load( THEME->GetPathToS( ssprintf("ScreenEvaluation j %s", JUDGE_STRING[l]) ) );
# else
2003-05-22 01:34:03 +00:00
// m_soundJudgeSound[l].Load( THEME->GetPathToS( ssprintf("ScreenEvaluation JudgeSound %s", JUDGE_STRING[l]) ) );
2003-11-13 00:39:36 +00:00
# endif
2003-05-22 01:34:03 +00:00
// m_TimeToPlayJudgeSound[l] = JUDGE_SOUND_TIME( JUDGE_STRING[l] );
2003-05-11 22:19:40 +00:00
2003-03-28 05:47:42 +00:00
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
{
if ( ! GAMESTATE - > IsPlayerEnabled ( ( PlayerNumber ) p ) )
continue ; // skip
2002-09-10 08:21:55 +00:00
2003-04-12 17:39:27 +00:00
m_textJudgeNumbers [ l ] [ p ] . LoadFromNumbers ( THEME - > GetPathToN ( " ScreenEvaluation judge " ) ) ;
2003-03-28 05:47:42 +00:00
m_textJudgeNumbers [ l ] [ p ] . EnableShadow ( false ) ;
m_textJudgeNumbers [ l ] [ p ] . SetDiffuse ( PlayerToColor ( p ) ) ;
2003-04-15 02:47:24 +00:00
m_textJudgeNumbers [ l ] [ p ] . SetName ( ssprintf ( " %sNumberP%d " , JUDGE_STRING [ l ] , p + 1 ) ) ;
UtilSetXYAndOnCommand ( m_textJudgeNumbers [ l ] [ p ] , " ScreenEvaluation " ) ;
2003-03-28 05:47:42 +00:00
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 ;
2003-04-10 05:46:31 +00:00
case 6 : iValue = stageStats . iHoldNoteScores [ p ] [ HNS_OK ] ; break ;
2003-03-28 05:47:42 +00:00
case 7 : iValue = stageStats . iMaxCombo [ p ] ; break ;
2003-10-27 22:24:33 +00:00
case 8 : iValue = stageStats . iTotalError [ p ] ; break ;
2003-03-28 23:13:32 +00:00
default : iValue = 0 ; ASSERT ( 0 ) ;
2003-03-28 05:47:42 +00:00
}
m_textJudgeNumbers [ l ] [ p ] . SetText ( ssprintf ( " %4d " , iValue ) ) ;
}
2002-09-10 08:21:55 +00:00
}
2003-03-24 21:37:13 +00:00
}
2002-09-10 08:21:55 +00:00
2003-03-24 21:37:13 +00:00
//
// init score area
//
2003-03-28 05:47:42 +00:00
if ( SHOW_SCORE_AREA )
2003-03-24 21:37:13 +00:00
{
2003-04-15 02:47:24 +00:00
m_sprScoreLabel . Load ( THEME - > GetPathToG ( " ScreenEvaluation score labels 1x2 " ) ) ;
m_sprScoreLabel . SetState ( 0 ) ;
m_sprScoreLabel . StopAnimating ( ) ;
m_sprScoreLabel . SetName ( " ScoreLabel " ) ;
UtilSetXYAndOnCommand ( m_sprScoreLabel , " ScreenEvaluation " ) ;
this - > AddChild ( & m_sprScoreLabel ) ;
2003-03-28 05:47:42 +00:00
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
{
if ( ! GAMESTATE - > IsPlayerEnabled ( ( PlayerNumber ) p ) )
continue ; // skip
2003-04-12 17:39:27 +00:00
m_textScore [ p ] . LoadFromNumbers ( THEME - > GetPathToN ( " ScreenEvaluation score " ) ) ;
2003-03-28 23:13:32 +00:00
m_textScore [ p ] . EnableShadow ( false ) ;
m_textScore [ p ] . SetDiffuse ( PlayerToColor ( p ) ) ;
2003-04-15 02:47:24 +00:00
m_textScore [ p ] . SetName ( ssprintf ( " ScoreNumberP%d " , p + 1 ) ) ;
UtilSetXYAndOnCommand ( m_textScore [ p ] , " ScreenEvaluation " ) ;
2003-06-18 20:08:39 +00:00
m_textScore [ p ] . SetText ( ssprintf ( " %*.0i " , NUM_SCORE_DIGITS , stageStats . iScore [ p ] ) ) ;
2003-03-28 23:13:32 +00:00
this - > AddChild ( & m_textScore [ p ] ) ;
2003-03-28 05:47:42 +00:00
}
2002-09-10 08:21:55 +00:00
}
2003-03-28 05:47:42 +00:00
//
// init time area
//
if ( SHOW_TIME_AREA )
2003-03-24 21:37:13 +00:00
{
2003-04-12 17:39:27 +00:00
m_sprTimeLabel . Load ( THEME - > GetPathToG ( " ScreenEvaluation score labels 1x2 " ) ) ;
2003-03-28 05:47:42 +00:00
m_sprTimeLabel . SetState ( 1 ) ;
m_sprTimeLabel . StopAnimating ( ) ;
2003-04-15 02:47:24 +00:00
m_sprTimeLabel . SetName ( " TimeLabel " ) ;
UtilSetXYAndOnCommand ( m_sprTimeLabel , " ScreenEvaluation " ) ;
2003-03-28 05:47:42 +00:00
this - > AddChild ( & m_sprTimeLabel ) ;
2002-09-10 08:21:55 +00:00
2003-03-28 05:47:42 +00:00
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
2003-03-24 21:37:13 +00:00
{
2003-03-28 05:47:42 +00:00
if ( ! GAMESTATE - > IsPlayerEnabled ( ( PlayerNumber ) p ) )
continue ; // skip
2003-04-12 17:39:27 +00:00
m_textTime [ p ] . LoadFromNumbers ( THEME - > GetPathToN ( " ScreenEvaluation score " ) ) ;
2003-03-28 23:13:32 +00:00
m_textTime [ p ] . EnableShadow ( false ) ;
m_textTime [ p ] . SetDiffuse ( PlayerToColor ( p ) ) ;
2003-04-15 02:47:24 +00:00
m_textTime [ p ] . SetName ( ssprintf ( " ScoreNumberP%d " , p + 1 ) ) ;
UtilSetXYAndOnCommand ( m_textTime [ p ] , " ScreenEvaluation " ) ;
2003-03-28 23:13:32 +00:00
m_textTime [ p ] . SetText ( SecondsToTime ( stageStats . fAliveSeconds [ p ] ) ) ;
this - > AddChild ( & m_textTime [ p ] ) ;
2003-03-24 21:37:13 +00:00
}
2003-03-28 05:47:42 +00:00
}
2003-03-24 21:37:13 +00:00
2003-03-28 05:47:42 +00:00
//
// init extra area
//
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
{
2003-10-19 21:38:11 +00:00
if ( iMachineHighScoreIndex [ p ] ! = - 1 )
2003-03-24 21:37:13 +00:00
{
2003-11-09 22:06:36 +00:00
switch ( m_Type )
{
case stage :
m_sprMachineRecord [ p ] . Load ( THEME - > GetPathToG ( " ScreenEvaluation machine record " ) ) ;
m_sprMachineRecord [ p ] . SetName ( ssprintf ( " MachineRecordP%d " , p + 1 ) ) ;
break ;
case summary :
m_sprMachineRecord [ p ] . Load ( THEME - > GetPathToG ( " ScreenEvaluation category record " ) ) ;
m_sprMachineRecord [ p ] . SetName ( ssprintf ( " CategoryRecordP%d " , p + 1 ) ) ;
break ;
case course :
m_sprMachineRecord [ p ] . Load ( THEME - > GetPathToG ( " ScreenEvaluation course record " ) ) ;
m_sprMachineRecord [ p ] . SetName ( ssprintf ( " CourseRecordP%d " , p + 1 ) ) ;
break ;
default :
ASSERT ( 0 ) ;
}
2003-10-19 21:38:11 +00:00
m_sprMachineRecord [ p ] . SetState ( iMachineHighScoreIndex [ p ] ) ;
m_sprMachineRecord [ p ] . StopAnimating ( ) ;
UtilSetXYAndOnCommand ( m_sprMachineRecord [ p ] , " ScreenEvaluation " ) ;
this - > AddChild ( & m_sprMachineRecord [ p ] ) ;
}
if ( iPersonalHighScoreIndex [ p ] ! = - 1 )
{
m_sprPersonalRecord [ p ] . Load ( THEME - > GetPathToG ( " ScreenEvaluation personal record " ) ) ;
m_sprPersonalRecord [ p ] . SetState ( iPersonalHighScoreIndex [ p ] ) ;
m_sprPersonalRecord [ p ] . StopAnimating ( ) ;
m_sprPersonalRecord [ p ] . SetName ( ssprintf ( " PersonalRecordP%d " , p + 1 ) ) ;
UtilSetXYAndOnCommand ( m_sprPersonalRecord [ p ] , " ScreenEvaluation " ) ;
this - > AddChild ( & m_sprPersonalRecord [ p ] ) ;
2003-03-24 21:37:13 +00:00
}
2003-10-31 03:10:31 +00:00
if ( SHOW_FULL_COMBO & & stageStats . FullCombo ( ( PlayerNumber ) p ) )
{
m_FullCombo [ p ] . Load ( THEME - > GetPathToG ( ssprintf ( " ScreenEvaluation full combo P%i " , p + 1 ) ) ) ;
2003-10-31 03:53:12 +00:00
m_FullCombo [ p ] - > SetName ( ssprintf ( " FullComboP%d " , p + 1 ) ) ;
UtilSetXYAndOnCommand ( m_FullCombo [ p ] , " ScreenEvaluation " ) ;
2003-10-31 03:10:31 +00:00
this - > AddChild ( m_FullCombo [ p ] ) ;
}
2003-03-24 21:37:13 +00:00
}
2002-09-09 05:22:02 +00:00
2003-10-19 21:38:11 +00:00
bool bOneHasNewTopRecord = false ;
2002-09-09 05:22:02 +00:00
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
2003-10-19 23:12:51 +00:00
if ( GAMESTATE - > IsPlayerEnabled ( p ) & & ( iMachineHighScoreIndex [ p ] ! = - 1 | | iPersonalHighScoreIndex [ p ] ! = - 1 ) )
2003-10-19 21:38:11 +00:00
bOneHasNewTopRecord = true ;
2002-06-24 22:04:31 +00:00
2003-10-17 08:03:46 +00:00
if ( PREFSMAN - > m_bAllowExtraStage & & m_bTryExtraStage )
2002-06-24 22:04:31 +00:00
{
2003-04-12 17:39:27 +00:00
m_sprTryExtraStage . Load ( THEME - > GetPathToG ( GAMESTATE - > IsExtraStage ( ) ? " ScreenEvaluation try extra2 " : " ScreenEvaluation try extra1 " ) ) ;
2003-04-15 02:47:24 +00:00
m_sprTryExtraStage . SetName ( " TryExtraStage " ) ;
UtilSetXYAndOnCommand ( m_sprTryExtraStage , " ScreenEvaluation " ) ;
2002-09-03 22:31:06 +00:00
this - > AddChild ( & m_sprTryExtraStage ) ;
2002-06-24 22:04:31 +00:00
2003-03-12 01:26:44 +00:00
if ( GAMESTATE - > IsExtraStage ( ) )
2003-07-26 22:53:22 +00:00
SOUND - > PlayOnce ( THEME - > GetPathToS ( " ScreenEvaluation try extra2 " ) ) ;
2003-03-12 01:26:44 +00:00
else
2003-07-26 22:53:22 +00:00
SOUND - > PlayOnce ( THEME - > GetPathToS ( " ScreenEvaluation try extra1 " ) ) ;
2002-06-24 22:04:31 +00:00
}
2003-10-19 21:38:11 +00:00
else if ( bOneHasNewTopRecord & & ANNOUNCER - > HasSoundsFor ( " evaluation new record " ) )
2002-09-09 05:22:02 +00:00
{
2003-07-26 22:53:22 +00:00
SOUND - > PlayOnceFromDir ( ANNOUNCER - > GetPathTo ( " evaluation new record " ) ) ;
2002-09-09 05:22:02 +00:00
}
2002-06-24 22:04:31 +00:00
else
2003-03-28 05:47:42 +00:00
{
2003-03-24 21:37:13 +00:00
switch ( m_Type )
2002-06-24 22:04:31 +00:00
{
2003-03-24 21:37:13 +00:00
case stage :
2003-05-13 13:35:32 +00:00
switch ( GAMESTATE - > m_PlayMode )
{
2003-08-19 04:27:50 +00:00
case PLAY_MODE_BATTLE :
2003-05-13 13:35:32 +00:00
{
2003-06-30 18:08:27 +00:00
bool bWon = GAMESTATE - > GetStageResult ( GAMESTATE - > m_MasterPlayerNumber ) = = RESULT_WIN ;
2003-05-13 13:35:32 +00:00
if ( bWon )
2003-07-26 22:53:22 +00:00
SOUND - > PlayOnceFromDir ( ANNOUNCER - > GetPathTo ( " evaluation win " ) ) ;
2003-05-13 13:35:32 +00:00
else
2003-07-26 22:53:22 +00:00
SOUND - > PlayOnceFromDir ( ANNOUNCER - > GetPathTo ( " evaluation lose " ) ) ;
2003-05-13 13:35:32 +00:00
}
break ;
default :
2003-07-26 22:53:22 +00:00
SOUND - > PlayOnceFromDir ( ANNOUNCER - > GetPathTo ( " evaluation " + GradeToString ( max_grade ) ) ) ;
2003-05-13 13:35:32 +00:00
break ;
}
2002-07-23 01:41:40 +00:00
break ;
2003-03-24 21:37:13 +00:00
case course :
case summary :
2003-07-26 22:53:22 +00:00
SOUND - > PlayOnceFromDir ( ANNOUNCER - > GetPathTo ( " evaluation final " + GradeToString ( max_grade ) ) ) ;
2002-07-23 01:41:40 +00:00
break ;
2002-06-24 22:04:31 +00:00
default :
2002-07-23 01:41:40 +00:00
ASSERT ( 0 ) ;
2002-06-24 22:04:31 +00:00
}
}
2002-10-18 19:01:32 +00:00
switch ( max_grade )
{
case GRADE_AA :
case GRADE_AAA :
2003-01-11 08:55:21 +00:00
case GRADE_AAAA :
2003-04-15 02:47:24 +00:00
this - > PostScreenMessage ( SM_PlayCheer , CHEER_DELAY_SECONDS ) ;
2002-10-18 19:01:32 +00:00
break ;
}
2003-11-24 03:28:40 +00:00
this - > SortByZ ( ) ;
2002-08-27 16:53:25 +00:00
2003-07-26 22:53:22 +00:00
SOUND - > PlayMusic ( THEME - > GetPathToS ( " ScreenEvaluation music " ) ) ;
2003-05-11 22:19:40 +00:00
m_fScreenCreateTime = RageTimer : : GetTimeSinceStart ( ) ;
2002-06-24 22:04:31 +00:00
}
void ScreenEvaluation : : TweenOffScreen ( )
{
2003-03-24 21:37:13 +00:00
int p ;
2002-06-24 22:04:31 +00:00
2003-03-28 05:47:42 +00:00
// large banner area
2003-04-15 02:47:24 +00:00
UtilOffCommand ( m_LargeBanner , " ScreenEvaluation " ) ;
UtilOffCommand ( m_sprLargeBannerFrame , " ScreenEvaluation " ) ;
UtilOffCommand ( m_sprStage , " ScreenEvaluation " ) ;
2003-03-24 21:37:13 +00:00
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
{
2003-04-15 02:47:24 +00:00
if ( ! GAMESTATE - > IsPlayerEnabled ( p ) )
continue ;
UtilOffCommand ( m_DifficultyIcon [ p ] , " ScreenEvaluation " ) ;
UtilOffCommand ( m_textPlayerOptions [ p ] , " ScreenEvaluation " ) ;
2003-03-24 21:37:13 +00:00
}
2002-08-01 20:30:40 +00:00
2003-03-28 05:47:42 +00:00
// small banner area
2003-07-31 20:34:01 +00:00
for ( int i = 0 ; i < MAX_SONGS_TO_SHOW ; i + + )
2003-03-28 05:47:42 +00:00
{
2003-04-15 02:47:24 +00:00
UtilOffCommand ( m_SmallBanner [ i ] , " ScreenEvaluation " ) ;
UtilOffCommand ( m_sprSmallBannerFrame [ i ] , " ScreenEvaluation " ) ;
2003-03-28 05:47:42 +00:00
}
2003-03-24 21:37:13 +00:00
// grade area
2002-10-06 16:56:58 +00:00
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
2002-06-24 22:04:31 +00:00
{
2003-04-15 02:47:24 +00:00
if ( ! GAMESTATE - > IsPlayerEnabled ( p ) )
continue ;
UtilOffCommand ( m_sprGradeFrame [ p ] , " ScreenEvaluation " ) ;
UtilOffCommand ( m_Grades [ p ] , " ScreenEvaluation " ) ;
2003-03-28 05:47:42 +00:00
}
2003-10-23 06:28:17 +00:00
if ( SHOW_GRAPH_AREA )
{
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
{
if ( ! GAMESTATE - > IsPlayerEnabled ( p ) )
continue ; // skip
OFF_COMMAND ( m_Graph [ p ] ) ;
}
}
if ( SHOW_COMBO_AREA )
{
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
{
if ( ! GAMESTATE - > IsPlayerEnabled ( p ) )
continue ; // skip
OFF_COMMAND ( m_Combo [ p ] ) ;
}
}
2003-03-28 05:47:42 +00:00
// points area
2003-10-07 02:13:48 +00:00
if ( SHOW_POINTS_AREA )
2003-03-28 05:47:42 +00:00
{
2003-10-07 02:13:48 +00:00
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
{
2003-10-13 04:43:36 +00:00
if ( ! GAMESTATE - > IsPlayerEnabled ( ( PlayerNumber ) p ) )
continue ; // skip
2003-10-07 02:13:48 +00:00
UtilOffCommand ( m_sprPercentFrame [ p ] , " ScreenEvaluation " ) ;
m_Percent [ p ] . Command ( THEME - > GetMetric ( " ScreenEvaluation " , ssprintf ( " PercentP%dOffCommand " , p + 1 ) ) ) ;
m_Percent [ p ] . TweenOffScreen ( ) ;
}
2002-06-24 22:04:31 +00:00
}
2003-03-24 21:37:13 +00:00
// bonus area
2003-10-07 02:13:48 +00:00
if ( SHOW_BONUS_AREA )
2002-06-24 22:04:31 +00:00
{
2003-10-07 02:13:48 +00:00
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
2002-08-22 09:31:32 +00:00
{
2003-10-07 02:13:48 +00:00
if ( ! GAMESTATE - > IsPlayerEnabled ( p ) )
continue ;
UtilOffCommand ( m_sprBonusFrame [ p ] , " ScreenEvaluation " ) ;
2003-11-26 04:20:38 +00:00
for ( int r = 0 ; r < NUM_SHOWN_RADAR_CATEGORIES ; r + + ) // foreach line
2003-10-07 02:13:48 +00:00
{
UtilOffCommand ( m_sprPossibleBar [ p ] [ r ] , " ScreenEvaluation " ) ;
UtilOffCommand ( m_sprActualBar [ p ] [ r ] , " ScreenEvaluation " ) ;
}
2002-08-22 09:31:32 +00:00
}
2003-03-28 05:47:42 +00:00
}
// survived area
2003-10-07 02:13:48 +00:00
if ( SHOW_SURVIVED_AREA )
2003-03-28 05:47:42 +00:00
{
2003-10-07 02:13:48 +00:00
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
{
if ( ! GAMESTATE - > IsPlayerEnabled ( p ) )
continue ;
UtilOffCommand ( m_sprSurvivedFrame [ p ] , " ScreenEvaluation " ) ;
UtilOffCommand ( m_textSurvivedNumber [ p ] , " ScreenEvaluation " ) ;
}
2003-04-15 02:47:24 +00:00
}
2003-10-07 02:13:48 +00:00
2003-04-15 02:47:24 +00:00
// win area
2003-10-07 02:13:48 +00:00
if ( SHOW_WIN_AREA )
2003-04-15 02:47:24 +00:00
{
2003-10-07 02:13:48 +00:00
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
{
if ( ! GAMESTATE - > IsPlayerEnabled ( p ) )
continue ;
UtilOffCommand ( m_sprWinFrame [ p ] , " ScreenEvaluation " ) ;
UtilOffCommand ( m_sprWin [ p ] , " ScreenEvaluation " ) ;
}
2003-03-24 21:37:13 +00:00
}
2003-10-07 02:13:48 +00:00
2003-03-24 21:37:13 +00:00
// judgement area
int l ;
for ( l = 0 ; l < NUM_JUDGE_LINES ; l + + )
2003-04-15 02:47:24 +00:00
{
2003-10-07 02:13:48 +00:00
if ( ! SHOW_JUDGMENT ( l ) )
2003-04-15 02:47:24 +00:00
continue ;
2003-10-07 02:13:48 +00:00
UtilOffCommand ( m_sprJudgeLabels [ l ] , " ScreenEvaluation " ) ;
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
{
if ( ! GAMESTATE - > IsPlayerEnabled ( p ) )
continue ;
2003-04-15 02:47:24 +00:00
UtilOffCommand ( m_textJudgeNumbers [ l ] [ p ] , " ScreenEvaluation " ) ;
2003-10-07 02:13:48 +00:00
}
2003-04-15 02:47:24 +00:00
}
2002-09-15 23:41:26 +00:00
2003-03-24 21:37:13 +00:00
// score area
2003-10-07 02:13:48 +00:00
if ( SHOW_SCORE_AREA )
2003-04-15 02:47:24 +00:00
{
2003-10-07 02:13:48 +00:00
UtilOffCommand ( m_sprScoreLabel , " ScreenEvaluation " ) ;
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
{
if ( ! GAMESTATE - > IsPlayerEnabled ( p ) )
continue ;
UtilOffCommand ( m_textScore [ p ] , " ScreenEvaluation " ) ;
}
2003-04-15 02:47:24 +00:00
}
2003-03-28 05:47:42 +00:00
// time area
2003-10-07 02:13:48 +00:00
if ( SHOW_TIME_AREA )
2003-04-15 02:47:24 +00:00
{
2003-10-07 02:13:48 +00:00
UtilOffCommand ( m_sprTimeLabel , " ScreenEvaluation " ) ;
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
{
if ( ! GAMESTATE - > IsPlayerEnabled ( p ) )
continue ;
UtilOffCommand ( m_textTime [ p ] , " ScreenEvaluation " ) ;
}
2003-04-15 02:47:24 +00:00
}
2003-03-28 05:47:42 +00:00
// extra area
2003-03-24 21:37:13 +00:00
for ( p = 0 ; p < NUM_PLAYERS ; p + + )
2003-04-15 02:47:24 +00:00
{
if ( ! GAMESTATE - > IsPlayerEnabled ( p ) )
continue ;
2003-10-19 21:38:11 +00:00
UtilOffCommand ( m_sprMachineRecord [ p ] , " ScreenEvaluation " ) ;
UtilOffCommand ( m_sprPersonalRecord [ p ] , " ScreenEvaluation " ) ;
2003-10-31 03:53:12 +00:00
if ( m_FullCombo [ p ] . IsLoaded ( ) )
UtilOffCommand ( m_FullCombo [ p ] , " ScreenEvaluation " ) ;
2003-04-15 02:47:24 +00:00
}
UtilOffCommand ( m_sprTryExtraStage , " ScreenEvaluation " ) ;
2002-06-24 22:04:31 +00:00
}
void ScreenEvaluation : : Update ( float fDeltaTime )
{
Screen : : Update ( fDeltaTime ) ;
2003-05-11 22:19:40 +00:00
2003-11-10 23:25:44 +00:00
if ( m_bFailed & & m_Type = = stage )
{
m_bgFailedBack . Update ( fDeltaTime ) ;
m_bgFailedOverlay . Update ( fDeltaTime ) ;
}
else if ( m_Type = = stage )
m_bgPassedOverlay . Update ( fDeltaTime ) ;
2003-08-11 12:14:26 +00:00
for ( int p = 0 ; p < NUM_PLAYERS ; p + + )
{
if ( GAMESTATE - > m_CurStageStats . iBonus [ p ] = = 0 )
continue ;
2003-08-14 19:46:22 +00:00
if ( GAMESTATE - > IsCourseMode ( ) )
continue ;
2003-08-11 12:14:26 +00:00
// wait a few seconds before adding bonus
2003-08-11 20:59:02 +00:00
if ( RageTimer : : GetTimeSinceStart ( ) - m_fScreenCreateTime < 1.5f )
2003-08-11 12:14:26 +00:00
continue ;
int increment = GAMESTATE - > m_CurStageStats . iBonus [ p ] / 10 ;
2003-08-11 20:59:02 +00:00
if ( increment < 1 )
increment = min ( 1024 , GAMESTATE - > m_CurStageStats . iBonus [ p ] ) ;
2003-08-11 12:14:26 +00:00
GAMESTATE - > m_CurStageStats . iBonus [ p ] - = increment ;
GAMESTATE - > m_CurStageStats . iScore [ p ] + = increment ;
2003-10-07 02:13:48 +00:00
if ( SHOW_SCORE_AREA )
m_textScore [ p ] . SetText ( ssprintf ( " %*.0i " , NUM_SCORE_DIGITS , GAMESTATE - > m_CurStageStats . iScore [ p ] ) ) ;
2003-08-11 12:14:26 +00:00
}
2003-05-22 01:34:03 +00:00
/* for( int l=0; l<NUM_JUDGE_LINES; l++ )
2003-05-11 22:19:40 +00:00
{
2003-05-12 01:01:22 +00:00
if(!SHOW_JUDGMENT(l))
continue;
if(m_TimeToPlayJudgeSound[l] == -1)
continue;
2003-05-12 01:02:11 +00:00
if(RageTimer::GetTimeSinceStart() < m_fScreenCreateTime + m_TimeToPlayJudgeSound[l])
continue;
2003-05-12 01:04:28 +00:00
if(SOUND_ON_FULL_ALPHA)
2003-05-11 22:19:40 +00:00
{
2003-05-12 01:04:28 +00:00
if( m_sprJudgeLabels[l].GetDiffuse().a != 1.0f &&
m_textJudgeNumbers[l][PLAYER_1].GetDiffuse().a != 1.0f &&
m_textJudgeNumbers[l][PLAYER_2].GetDiffuse().a != 1.0f )
continue;
2003-05-11 22:19:40 +00:00
}
2003-05-12 01:02:11 +00:00
2003-05-12 01:04:28 +00:00
m_soundJudgeSound[l].Play();
m_TimeToPlayJudgeSound[l] = -1;
2003-05-22 01:34:03 +00:00
}*/
2002-06-24 22:04:31 +00:00
}
void ScreenEvaluation : : DrawPrimitives ( )
{
m_Menu . DrawBottomLayer ( ) ;
2003-11-10 23:25:44 +00:00
// draw the failed background here if the player(s) failed
if ( m_bFailed & & m_Type = = stage )
m_bgFailedBack . Draw ( ) ;
2002-06-24 22:04:31 +00:00
Screen : : DrawPrimitives ( ) ;
2003-11-10 23:25:44 +00:00
// draw the pass / failed overlays here respectively
if ( m_bFailed & & m_Type = = stage )
m_bgFailedOverlay . Draw ( ) ;
else if ( m_Type = = stage )
m_bgPassedOverlay . Draw ( ) ;
2002-06-24 22:04:31 +00:00
m_Menu . DrawTopLayer ( ) ;
}
void ScreenEvaluation : : Input ( const DeviceInput & DeviceI , const InputEventType type , const GameInput & GameI , const MenuInput & MenuI , const StyleInput & StyleI )
{
2002-09-06 00:33:51 +00:00
// LOG->Trace( "ScreenEvaluation::Input()" );
2002-06-24 22:04:31 +00:00
2003-03-09 00:55:49 +00:00
if ( m_Menu . IsTransitioning ( ) )
2002-06-24 22:04:31 +00:00
return ;
Screen : : Input ( DeviceI , type , GameI , MenuI , StyleI ) ;
}
void ScreenEvaluation : : HandleScreenMessage ( const ScreenMessage SM )
{
switch ( SM )
{
case SM_MenuTimer :
MenuStart ( PLAYER_INVALID ) ;
break ;
2003-03-28 05:47:42 +00:00
case SM_GoToNextScreen :
2003-11-11 18:05:28 +00:00
if ( m_bFailed & & ! PREFSMAN - > m_bEventMode & & ! ( GAMESTATE - > IsExtraStage ( ) | | GAMESTATE - > IsExtraStage2 ( ) ) & & GAMESTATE - > m_PlayMode = = PLAY_MODE_ARCADE ) // if failed and not in event mode go to gameover screen
2003-11-10 23:25:44 +00:00
SCREENMAN - > SetNewScreen ( FAILED_SCREEN ) ;
else
SCREENMAN - > SetNewScreen ( NEXT_SCREEN ) ;
2002-06-27 17:49:10 +00:00
break ;
2002-08-01 05:11:11 +00:00
case SM_GoToSelectCourse :
2002-08-27 03:59:22 +00:00
SCREENMAN - > SetNewScreen ( " ScreenSelectCourse " ) ;
2002-08-01 05:11:11 +00:00
break ;
2003-03-28 05:47:42 +00:00
case SM_GoToEndScreen :
2003-11-11 18:05:28 +00:00
if ( m_bFailed & & ! PREFSMAN - > m_bEventMode & & ! ( GAMESTATE - > IsExtraStage ( ) | | GAMESTATE - > IsExtraStage2 ( ) ) & & GAMESTATE - > m_PlayMode = = PLAY_MODE_ARCADE ) // if failed and not in event mode go to gameover screen
2003-11-10 23:25:44 +00:00
SCREENMAN - > SetNewScreen ( FAILED_SCREEN ) ;
else
SCREENMAN - > SetNewScreen ( END_SCREEN ) ;
2002-06-27 17:49:10 +00:00
break ;
2003-10-15 01:05:20 +00:00
// case SM_GoToEvaluationSummary:
// SCREENMAN->SetNewScreen( "ScreenEvaluationSummary" );
// break;
2002-10-18 19:01:32 +00:00
case SM_PlayCheer :
2003-07-26 22:53:22 +00:00
SOUND - > PlayOnceFromDir ( ANNOUNCER - > GetPathTo ( " evaluation cheer " ) ) ;
2002-10-18 19:01:32 +00:00
break ;
2002-06-24 22:04:31 +00:00
}
}
2002-12-21 10:04:25 +00:00
void ScreenEvaluation : : MenuLeft ( PlayerNumber pn )
{
2003-01-24 02:43:07 +00:00
// What is the purpose of this? I keep my feet on the pads and
// was wondering why the grades weren't spinning. -Chris
2003-01-24 22:21:48 +00:00
// To be able to see the grade without having to wait for it to
// stop spinning. (I was hitting left repeatedly and wondering
// why it kept spinning ...)
2003-01-24 02:43:07 +00:00
//m_Grades[pn].SettleQuickly();
2002-12-21 10:04:25 +00:00
}
void ScreenEvaluation : : MenuRight ( PlayerNumber pn )
{
2003-01-24 02:43:07 +00:00
// What is the purpose of this? I keep my feet on the pads and
// was wondering why the grades weren't spinning. -Chris
//m_Grades[pn].SettleQuickly();
2002-12-21 10:04:25 +00:00
}
2002-09-04 03:49:08 +00:00
void ScreenEvaluation : : MenuBack ( PlayerNumber pn )
2002-06-24 22:04:31 +00:00
{
2002-09-04 03:49:08 +00:00
MenuStart ( pn ) ;
2002-06-24 22:04:31 +00:00
}
2002-09-04 03:49:08 +00:00
void ScreenEvaluation : : MenuStart ( PlayerNumber pn )
2002-06-24 22:04:31 +00:00
{
TweenOffScreen ( ) ;
2003-03-25 22:23:58 +00:00
for ( int p = 0 ; p < NUM_PLAYERS ; p + + )
m_Grades [ p ] . SettleImmediately ( ) ;
2003-07-30 20:34:16 +00:00
GAMESTATE - > m_iRoundSeed = rand ( ) ;
2003-03-25 22:23:58 +00:00
2003-04-19 19:05:25 +00:00
if ( PREFSMAN - > m_bEventMode )
2002-06-29 11:59:09 +00:00
{
2003-05-05 04:13:39 +00:00
m_Menu . StartTransitioning ( SM_GoToNextScreen ) ;
2002-06-29 11:59:09 +00:00
}
2002-08-01 05:11:11 +00:00
else // not event mode
2002-06-27 17:49:10 +00:00
{
2003-03-24 21:37:13 +00:00
switch ( m_Type )
2002-12-19 20:01:53 +00:00
{
2003-03-24 21:37:13 +00:00
case stage :
2003-02-11 02:44:26 +00:00
if ( m_bTryExtraStage )
{
2003-03-28 05:47:42 +00:00
m_Menu . StartTransitioning ( SM_GoToNextScreen ) ;
2003-02-11 02:44:26 +00:00
}
else if ( GAMESTATE - > IsFinalStage ( ) | | GAMESTATE - > IsExtraStage ( ) | | GAMESTATE - > IsExtraStage2 ( ) )
2003-01-27 06:49:02 +00:00
{
/* Tween the screen out, but leave the MenuElements where they are.
2003-02-11 02:44:26 +00:00
* Play the "swoosh" sound manually (would normally be played by the ME
* tween out). */
2003-01-27 06:49:02 +00:00
TweenOffScreen ( ) ;
2003-10-15 01:05:20 +00:00
m_Menu . StartTransitioning ( SM_GoToEndScreen ) ;
2003-01-27 06:49:02 +00:00
}
2003-02-10 05:30:12 +00:00
else
{
2003-03-28 05:47:42 +00:00
m_Menu . StartTransitioning ( SM_GoToNextScreen ) ;
2003-02-10 05:30:12 +00:00
}
2003-02-11 02:44:26 +00:00
break ;
2003-03-24 21:37:13 +00:00
case summary :
2003-03-28 05:47:42 +00:00
m_Menu . StartTransitioning ( SM_GoToEndScreen ) ;
2003-02-11 02:44:26 +00:00
break ;
2003-03-24 21:37:13 +00:00
case course :
2003-03-28 05:47:42 +00:00
m_Menu . StartTransitioning ( SM_GoToEndScreen ) ;
2003-02-11 02:44:26 +00:00
break ;
}
2002-06-27 17:49:10 +00:00
}
2003-03-24 21:37:13 +00:00
switch ( m_Type )
2003-02-03 05:53:59 +00:00
{
2003-03-24 21:37:13 +00:00
case stage :
2003-02-10 05:30:12 +00:00
// Increment the stage counter.
int iNumStagesOfLastSong ;
iNumStagesOfLastSong = SongManager : : GetNumStagesForSong ( GAMESTATE - > m_pCurSong ) ;
2003-09-21 00:17:34 +00:00
if ( GAMESTATE - > IsExtraStage ( ) | | GAMESTATE - > IsExtraStage2 ( ) )
{
/* XXX: If it's an extra stage, always increment by one. This is because
* in some unusual cases we can pick a long or marathon song as an extra
* stage. The most common cause of this is when an entire group of songs
* is long/nonstop mixes.
*
* We can't simply not choose long songs as extra stages: if there are no
* regular songs to choose, we'll end up with no song to use as an extra stage. */
iNumStagesOfLastSong = 1 ;
}
2003-02-10 05:30:12 +00:00
GAMESTATE - > m_iCurrentStageIndex + = iNumStagesOfLastSong ;
2003-02-03 05:53:59 +00:00
2003-09-06 01:35:29 +00:00
// save current stage stats
2003-09-06 01:37:30 +00:00
GAMESTATE - > m_vPlayedStageStats . push_back ( GAMESTATE - > m_CurStageStats ) ; // Save this stage's stats
2003-02-03 05:53:59 +00:00
break ;
}
2002-06-24 22:04:31 +00:00
}