2003-02-16 04:01:45 +00:00
# include "global.h"
2002-06-24 22:04:31 +00:00
# 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-11-11 04:53:31 +00:00
# include "ThemeManager.h"
2004-07-08 00:10:34 +00:00
# include "GameSoundManager.h"
2003-04-15 02:47:24 +00:00
# include "ActorUtil.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"
2005-07-01 05:07:22 +00:00
# include "Profile.h"
2003-12-18 03:14:39 +00:00
# include "song.h"
2005-02-16 03:25:45 +00:00
# include "StatsManager.h"
2004-02-11 22:34:04 +00:00
# include "Grade.h"
2004-02-12 09:44:16 +00:00
# include "CodeDetector.h"
# include "RageDisplay.h"
# include "StepMania.h"
2004-02-17 01:16:57 +00:00
# include "CryptManager.h"
2004-10-03 05:27:52 +00:00
# include "MemoryCardManager.h"
2004-12-20 06:25:59 +00:00
# include "PlayerState.h"
2005-02-12 21:03:39 +00:00
# include "CommonMetrics.h"
2005-10-08 02:10:32 +00:00
# include "ScoreKeeperNormal.h"
2005-09-05 02:26:50 +00:00
# include "InputEventPlus.h"
2002-08-27 03:59:22 +00:00
2006-01-27 21:31:56 +00:00
const int NUM_SCORE_DIGITS = 9 ;
2003-03-28 23:13:32 +00:00
2003-12-19 09:30:54 +00:00
2003-03-28 05:47:42 +00:00
// metrics that are common to all ScreenEvaluation classes
2006-01-27 21:31:56 +00:00
# define BANNER_WIDTH THEME->GetMetricF(m_sName,"BannerWidth")
# define BANNER_HEIGHT THEME->GetMetricF(m_sName,"BannerHeight")
2006-01-04 22:30:51 +00:00
static const char * JudgeLineNames [ ] =
2003-10-27 22:24:33 +00:00
{
2006-07-07 18:45:15 +00:00
" W1 " , " W2 " , " W3 " , " W4 " , " W5 " , " Miss " , " Held " , " MaxCombo "
2003-10-27 22:24:33 +00:00
} ;
2006-10-15 00:09:18 +00:00
XToString ( JudgeLine ) ;
2006-10-07 08:56:58 +00:00
# define FOREACH_JudgeLine( rc ) FOREACH_ENUM( JudgeLine, rc )
2005-10-09 04:30:59 +00:00
2006-01-04 22:30:51 +00:00
static const char * StatLineNames [ NUM_StatLine ] =
2003-12-16 10:04:37 +00:00
{
2005-05-09 06:15:59 +00:00
" Jumps " , " Holds " , " Mines " , " Hands " , " Rolls " ,
2003-12-16 10:04:37 +00:00
} ;
2006-10-15 00:09:18 +00:00
XToString ( StatLine ) ;
2006-10-07 08:56:58 +00:00
# define FOREACH_StatLine( rc ) FOREACH_ENUM( StatLine, rc )
2003-12-16 10:04:37 +00:00
2006-01-27 21:31:56 +00:00
# define CHEER_DELAY_SECONDS THEME->GetMetricF(m_sName,"CheerDelaySeconds")
# define BAR_ACTUAL_MAX_COMMAND THEME->GetMetricA(m_sName,"BarActualMaxCommand")
2003-04-15 02:47:24 +00:00
2003-03-28 05:47:42 +00:00
// metrics that are specific to classes derived from ScreenEvaluation
2006-01-27 21:31:56 +00:00
# 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")
# define SHOW_WIN_AREA THEME->GetMetricB(m_sName,"ShowWinArea")
# define SHOW_JUDGMENT_LABELS THEME->GetMetricB(m_sName,"ShowJudgmentLabels")
# define SHOW_JUDGMENT( l ) THEME->GetMetricB(m_sName,"Show"+JudgeLineToString(l))
# define SHOW_STATS_LABELS THEME->GetMetricB(m_sName,"ShowStatsLabels")
2005-09-10 21:00:28 +00:00
2006-07-05 21:53:12 +00:00
# define SHOW_STAT( s ) THEME->GetMetricB(m_sName,"Show"+StatLineToString(s))
2006-01-27 21:31:56 +00:00
# define SHOW_SCORE_AREA THEME->GetMetricB(m_sName,"ShowScoreArea")
# define SHOW_TOTAL_SCORE_AREA THEME->GetMetricB(m_sName,"ShowTotalScoreArea")
# define SHOW_TIME_AREA THEME->GetMetricB(m_sName,"ShowTimeArea")
# define SHOW_RECORDS_AREA THEME->GetMetricB(m_sName,"ShowRecordsArea")
# define MAX_COMBO_NUM_DIGITS THEME->GetMetricI(m_sName,"MaxComboNumDigits")
# define PLAYER_OPTIONS_SEPARATOR THEME->GetMetric (m_sName,"PlayerOptionsSeparator")
2004-02-11 22:34:04 +00:00
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
2005-03-28 08:01:36 +00:00
AutoScreenMessage ( SM_PlayCheer )
AutoScreenMessage ( SM_AddBonus )
2002-06-24 22:04:31 +00:00
2006-01-15 20:46:15 +00:00
REGISTER_SCREEN_CLASS ( ScreenEvaluation ) ;
2006-01-15 18:54:03 +00:00
ScreenEvaluation : : ScreenEvaluation ( )
2004-02-18 02:31:43 +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-12-20 00:20:21 +00:00
if ( PREFSMAN - > m_bScreenTestMode )
{
2004-08-09 05:01:24 +00:00
PROFILEMAN - > LoadFirstAvailableProfile ( PLAYER_1 ) ;
PROFILEMAN - > LoadFirstAvailableProfile ( PLAYER_2 ) ;
2004-02-17 01:16:57 +00:00
2005-07-25 03:59:24 +00:00
GAMESTATE - > m_PlayMode . Set ( PLAY_MODE_REGULAR ) ;
2006-09-30 22:22:26 +00:00
GAMESTATE - > SetCurrentStyle ( GAMEMAN - > GameAndStringToStyle ( GAMEMAN - > GetDefaultGame ( ) , " versus " ) ) ;
2005-02-23 21:13:09 +00:00
STATSMAN - > m_CurStageStats . playMode = GAMESTATE - > m_PlayMode ;
2006-09-30 22:22:26 +00:00
STATSMAN - > m_CurStageStats . pStyle = GAMESTATE - > GetCurrentStyle ( ) ;
2005-02-23 21:13:09 +00:00
STATSMAN - > m_CurStageStats . StageType = StageStats : : STAGE_NORMAL ;
2003-12-20 00:20:21 +00:00
GAMESTATE - > m_MasterPlayerNumber = PLAYER_1 ;
2005-02-24 12:27:30 +00:00
GAMESTATE - > m_pCurSong . Set ( SONGMAN - > GetRandomSong ( ) ) ;
2005-04-20 06:13:06 +00:00
STATSMAN - > m_CurStageStats . vpPlayedSongs . push_back ( GAMESTATE - > m_pCurSong ) ;
2005-05-05 05:06:44 +00:00
STATSMAN - > m_CurStageStats . vpPossibleSongs . push_back ( GAMESTATE - > m_pCurSong ) ;
2005-05-18 07:14:19 +00:00
GAMESTATE - > m_pCurCourse . Set ( SONGMAN - > GetRandomCourse ( ) ) ;
2004-03-20 02:59:08 +00:00
GAMESTATE - > m_iCurrentStageIndex = 0 ;
2005-05-05 05:06:44 +00:00
FOREACH_PlayerNumber ( p )
{
2006-06-26 12:14:30 +00:00
if ( RandomInt ( 2 ) )
2006-08-05 08:02:49 +00:00
PO_GROUP_ASSIGN_N ( GAMESTATE - > m_pPlayerState [ p ] - > m_PlayerOptions , ModsLevel_Stage , m_bTransforms , PlayerOptions : : TRANSFORM_ECHO , true ) ; // show "disqualified"
2005-05-05 05:06:44 +00:00
2006-09-15 05:56:43 +00:00
GAMESTATE - > JoinPlayer ( p ) ;
2005-05-05 05:06:44 +00:00
GAMESTATE - > m_pCurSteps [ p ] . Set ( GAMESTATE - > m_pCurSong - > GetAllSteps ( ) [ 0 ] ) ;
2005-05-06 13:47:33 +00:00
vector < Trail * > apTrails ;
GAMESTATE - > m_pCurCourse - > GetAllTrails ( apTrails ) ;
2005-07-12 19:23:22 +00:00
if ( apTrails . size ( ) )
GAMESTATE - > m_pCurTrail [ p ] . Set ( apTrails [ 0 ] ) ;
2005-05-05 05:06:44 +00:00
STATSMAN - > m_CurStageStats . m_player [ p ] . vpPlayedSteps . push_back ( GAMESTATE - > m_pCurSteps [ PLAYER_1 ] ) ;
STATSMAN - > m_CurStageStats . m_player [ p ] . vpPossibleSteps . push_back ( GAMESTATE - > m_pCurSteps [ PLAYER_1 ] ) ;
2006-08-05 02:38:05 +00:00
2006-08-05 08:02:49 +00:00
PO_GROUP_ASSIGN ( GAMESTATE - > m_pPlayerState [ p ] - > m_PlayerOptions , ModsLevel_Stage , m_fScrollSpeed , 2.0f ) ;
PO_GROUP_CALL ( GAMESTATE - > m_pPlayerState [ p ] - > m_PlayerOptions , ModsLevel_Stage , ChooseRandomModifiers ) ;
2005-05-05 05:06:44 +00:00
}
2003-12-22 01:55:03 +00:00
for ( float f = 0 ; f < 100.0f ; f + = 1.0f )
2003-12-21 08:55:59 +00:00
{
2003-12-22 01:55:03 +00:00
float fP1 = fmodf ( f / 100 * 4 + .3f , 1 ) ;
2005-02-16 03:25:45 +00:00
STATSMAN - > m_CurStageStats . m_player [ PLAYER_1 ] . SetLifeRecordAt ( fP1 , f ) ;
STATSMAN - > m_CurStageStats . m_player [ PLAYER_2 ] . SetLifeRecordAt ( 1 - fP1 , f ) ;
2003-12-21 08:55:59 +00:00
}
2003-12-22 01:55:03 +00:00
2005-05-08 22:03:41 +00:00
FOREACH_PlayerNumber ( p )
2004-06-22 08:41:25 +00:00
{
2005-09-26 19:08:45 +00:00
float fSeconds = GAMESTATE - > m_pCurSong - > GetStepsSeconds ( ) ;
2006-06-26 12:14:30 +00:00
STATSMAN - > m_CurStageStats . m_player [ p ] . iActualDancePoints = RandomInt ( 3 ) ;
2005-05-08 22:03:41 +00:00
STATSMAN - > m_CurStageStats . m_player [ p ] . iPossibleDancePoints = 2 ;
2006-06-26 12:14:30 +00:00
if ( RandomInt ( 2 ) )
2005-09-26 19:08:45 +00:00
STATSMAN - > m_CurStageStats . m_player [ p ] . iCurCombo = 11000 ;
else
STATSMAN - > m_CurStageStats . m_player [ p ] . iCurCombo = 0 ;
STATSMAN - > m_CurStageStats . m_player [ p ] . UpdateComboList ( 0 , true ) ;
STATSMAN - > m_CurStageStats . m_player [ p ] . iCurCombo + = 50 ;
STATSMAN - > m_CurStageStats . m_player [ p ] . UpdateComboList ( 0.10f * fSeconds , false ) ;
2005-05-08 22:03:41 +00:00
STATSMAN - > m_CurStageStats . m_player [ p ] . iCurCombo = 0 ;
2005-09-26 19:08:45 +00:00
STATSMAN - > m_CurStageStats . m_player [ p ] . UpdateComboList ( 0.15f * fSeconds , false ) ;
2005-05-08 22:03:41 +00:00
STATSMAN - > m_CurStageStats . m_player [ p ] . iCurCombo = 1 ;
2005-09-26 19:08:45 +00:00
STATSMAN - > m_CurStageStats . m_player [ p ] . UpdateComboList ( 0.25f * fSeconds , false ) ;
2005-05-08 22:03:41 +00:00
STATSMAN - > m_CurStageStats . m_player [ p ] . iCurCombo = 50 ;
2005-09-26 19:08:45 +00:00
STATSMAN - > m_CurStageStats . m_player [ p ] . UpdateComboList ( 0.35f * fSeconds , false ) ;
STATSMAN - > m_CurStageStats . m_player [ p ] . iCurCombo = 0 ;
STATSMAN - > m_CurStageStats . m_player [ p ] . UpdateComboList ( 0.45f * fSeconds , false ) ;
STATSMAN - > m_CurStageStats . m_player [ p ] . iCurCombo = 1 ;
STATSMAN - > m_CurStageStats . m_player [ p ] . UpdateComboList ( 0.50f * fSeconds , false ) ;
STATSMAN - > m_CurStageStats . m_player [ p ] . iCurCombo = 100 ;
STATSMAN - > m_CurStageStats . m_player [ p ] . UpdateComboList ( 1.00f * fSeconds , false ) ;
2006-06-26 12:14:30 +00:00
if ( RandomInt ( 5 ) = = 0 )
2005-05-08 22:03:41 +00:00
{
STATSMAN - > m_CurStageStats . m_player [ p ] . bFailedEarlier = true ;
}
2006-06-26 12:14:30 +00:00
STATSMAN - > m_CurStageStats . m_player [ p ] . iTapNoteScores [ TNS_W1 ] = RandomInt ( 3 ) ;
STATSMAN - > m_CurStageStats . m_player [ p ] . iTapNoteScores [ TNS_W2 ] = RandomInt ( 3 ) ;
STATSMAN - > m_CurStageStats . m_player [ p ] . iTapNoteScores [ TNS_W3 ] = RandomInt ( 3 ) ;
2005-10-09 04:30:59 +00:00
STATSMAN - > m_CurStageStats . m_player [ p ] . iPossibleGradePoints = 4 * ScoreKeeperNormal : : TapNoteScoreToGradePoints ( TNS_W1 , false ) ;
2005-05-08 22:03:41 +00:00
STATSMAN - > m_CurStageStats . m_player [ p ] . fLifeRemainingSeconds = randomf ( 90 , 580 ) ;
2004-06-22 08:41:25 +00:00
}
2004-01-22 07:22:45 +00:00
2005-02-16 03:25:45 +00:00
STATSMAN - > m_vPlayedStageStats . clear ( ) ;
2003-12-20 00:20:21 +00:00
}
2005-02-23 06:29:05 +00:00
}
2003-12-20 00:20:21 +00:00
2005-02-23 06:29:05 +00:00
void ScreenEvaluation : : Init ( )
{
LOG - > Trace ( " ScreenEvaluation::Init() " ) ;
2005-02-23 19:18:11 +00:00
/* Commit stats to the profile, so any profile stats displayed on this screen
* include the last game. */
GAMESTATE - > CommitStageStats ( ) ;
2004-03-23 06:11:10 +00:00
LIGHTSMAN - > SetLightsMode ( LIGHTSMODE_MENU ) ;
2003-11-16 04:45:12 +00:00
2004-02-12 09:44:16 +00:00
ZERO ( m_bSavedScreenshot ) ;
2005-09-11 04:12:50 +00:00
SUMMARY . Load ( m_sName , " Summary " ) ;
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
//
2006-07-03 00:04:30 +00:00
STATSMAN - > CalcAccumPlayedStageStats ( ) ;
2005-02-16 19:40:09 +00:00
2005-09-11 04:12:50 +00:00
if ( SUMMARY )
2005-09-11 01:02:53 +00:00
STATSMAN - > GetFinalEvalStageStats ( STATSMAN - > m_CurStageStats ) ;
2005-09-11 01:03:28 +00:00
m_bFailed = STATSMAN - > m_CurStageStats . AllFailed ( ) ;
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
{
2004-05-24 06:10:11 +00:00
FOREACH_PlayerNumber( p ) // foreach line
2006-01-07 04:11:29 +00:00
for( int r=0; r<NUM_RadarCategory; r++ ) // foreach line
2002-07-16 22:00:59 +00:00
{
2005-09-11 01:46:55 +00:00
STATSMAN->m_CurStageStats.radarPossible[p][r] = 0.5f + r/10.0f;
STATSMAN->m_CurStageStats.radarActual[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
2006-10-07 07:43:18 +00:00
if ( PREFSMAN - > m_ScoringType = = SCORING_OLD )
2002-07-23 01:41:40 +00:00
{
2005-09-11 00:38:16 +00:00
FOREACH_PlayerNumber ( p )
2004-05-04 00:00:17 +00:00
{
const int ScoreBonuses [ ] = { 10000000 , 10000000 , 1000000 , 100000 , 10000 , 1000 , 100 } ;
2005-09-11 01:46:55 +00:00
Grade g = STATSMAN - > m_CurStageStats . m_player [ p ] . GetGrade ( ) ;
2006-09-13 03:11:38 +00:00
if ( g < ( int ) ARRAYLEN ( ScoreBonuses ) )
2004-02-27 01:54:55 +00:00
{
2005-09-11 00:38:16 +00:00
STATSMAN - > m_CurStageStats . m_player [ p ] . iBonus + = ScoreBonuses [ ( int ) g ] ;
2005-09-11 01:46:55 +00:00
STATSMAN - > m_CurStageStats . m_player [ p ] . iBonus + = ScoreBonuses [ ( int ) g ] ;
2004-02-27 01:54:55 +00:00
}
2003-08-11 12:14:26 +00:00
}
2002-07-23 01:41:40 +00:00
}
2005-09-11 01:25:58 +00:00
//
// update persistent statistics
//
2005-09-11 04:12:50 +00:00
STATSMAN - > m_CurStageStats . CommitScores ( SUMMARY ) ;
2005-09-11 01:44:13 +00:00
2005-09-11 01:25:58 +00:00
FOREACH_HumanPlayer ( p )
2005-10-01 00:18:13 +00:00
STATSMAN - > m_CurStageStats . m_player [ p ] . CalcAwards ( p , STATSMAN - > m_CurStageStats . bGaveUp , STATSMAN - > m_CurStageStats . bUsedAutoplay ) ;
2005-09-11 01:25:58 +00:00
2005-09-11 02:10:33 +00:00
// Run this here, so STATSMAN->m_CurStageStats is available to overlays.
ScreenWithMenuElements : : Init ( ) ;
2005-09-11 01:24:28 +00:00
//
// Calculate grades
//
Grade grade [ NUM_PLAYERS ] ;
FOREACH_PlayerNumber ( p )
{
if ( GAMESTATE - > IsPlayerEnabled ( p ) )
2005-09-11 01:25:58 +00:00
grade [ p ] = STATSMAN - > m_CurStageStats . m_player [ p ] . GetGrade ( ) ;
2005-09-11 01:24:28 +00:00
else
grade [ p ] = Grade_Failed ;
}
2003-01-24 02:43:07 +00:00
m_bTryExtraStage =
GAMESTATE - > HasEarnedExtraStage ( ) & &
2005-09-11 03:15:22 +00:00
! GAMESTATE - > IsCourseMode ( ) & &
2005-09-11 04:12:50 +00:00
! SUMMARY ;
2003-02-28 04:31:36 +00:00
2003-03-24 21:37:13 +00:00
2004-01-11 07:01:06 +00:00
//
2005-08-31 23:23:24 +00:00
// load sounds
2004-01-11 07:01:06 +00:00
//
2005-03-16 02:36:34 +00:00
m_soundStart . Load ( THEME - > GetPathS ( m_sName , " start " ) ) ;
2004-01-11 07:01:06 +00:00
2004-05-31 06:04:30 +00:00
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
{
2005-09-11 04:12:50 +00:00
if ( SUMMARY )
2003-03-24 21:37:13 +00:00
{
2005-09-11 04:12:50 +00:00
for ( unsigned i = 0 ; i < STATSMAN - > m_CurStageStats . vpPlayedSongs . size ( ) ; i + + )
2002-07-23 01:41:40 +00:00
{
2005-09-11 04:12:50 +00:00
Song * pSong = STATSMAN - > m_CurStageStats . vpPlayedSongs [ i ] ;
m_SmallBanner [ i ] . LoadFromSong ( pSong ) ;
m_SmallBanner [ i ] . ScaleToClipped ( BANNER_WIDTH , BANNER_HEIGHT ) ;
m_SmallBanner [ i ] . SetName ( ssprintf ( " SmallBanner%d " , i + 1 ) ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( m_SmallBanner [ i ] , m_sName ) ;
SET_XY ( m_SmallBanner [ i ] ) ;
2005-09-11 04:12:50 +00:00
this - > AddChild ( & m_SmallBanner [ i ] ) ;
m_sprSmallBannerFrame [ i ] . Load ( THEME - > GetPathG ( m_sName , " banner frame " ) ) ;
m_sprSmallBannerFrame [ i ] - > SetName ( ssprintf ( " SmallBanner%d " , i + 1 ) ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( * m_sprSmallBannerFrame [ i ] , m_sName ) ;
SET_XY ( m_sprSmallBannerFrame [ i ] ) ;
2005-09-11 04:12:50 +00:00
this - > AddChild ( m_sprSmallBannerFrame [ i ] ) ;
2002-07-17 19:24:27 +00:00
}
2005-09-11 04:12:50 +00:00
}
else
{
if ( GAMESTATE - > IsCourseMode ( ) )
m_LargeBanner . LoadFromCourse ( GAMESTATE - > m_pCurCourse ) ;
else
m_LargeBanner . LoadFromSong ( GAMESTATE - > m_pCurSong ) ;
m_LargeBanner . ScaleToClipped ( BANNER_WIDTH , BANNER_HEIGHT ) ;
m_LargeBanner . SetName ( " LargeBanner " ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( m_LargeBanner , m_sName ) ;
SET_XY ( m_LargeBanner ) ;
2005-09-11 04:12:50 +00:00
this - > AddChild ( & m_LargeBanner ) ;
m_sprLargeBannerFrame . Load ( THEME - > GetPathG ( m_sName , " banner frame " ) ) ;
m_sprLargeBannerFrame - > SetName ( " LargeBannerFrame " ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( * m_sprLargeBannerFrame , m_sName ) ;
SET_XY ( m_sprLargeBannerFrame ) ;
2005-09-11 04:12:50 +00:00
this - > AddChild ( m_sprLargeBannerFrame ) ;
2002-06-24 22:04:31 +00:00
}
2005-08-29 10:31:27 +00:00
}
2004-03-20 07:46:56 +00:00
2005-08-29 10:31:27 +00:00
{
2005-09-11 04:12:50 +00:00
if ( ! SUMMARY )
2004-03-20 07:46:56 +00:00
{
2005-09-11 04:12:50 +00:00
FOREACH_EnabledPlayer ( p )
2004-03-20 07:46:56 +00:00
{
2005-09-11 04:12:50 +00:00
m_DifficultyIcon [ p ] . Load ( THEME - > GetPathG ( m_sName , " difficulty icons " ) ) ;
if ( GAMESTATE - > IsCourseMode ( ) )
m_DifficultyIcon [ p ] . SetFromTrail ( p , GAMESTATE - > m_pCurTrail [ p ] ) ;
else
m_DifficultyIcon [ p ] . SetFromSteps ( p , GAMESTATE - > m_pCurSteps [ p ] ) ;
m_DifficultyIcon [ p ] . SetName ( ssprintf ( " DifficultyIconP%d " , p + 1 ) ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( m_DifficultyIcon [ p ] , m_sName ) ;
SET_XY ( m_DifficultyIcon [ p ] ) ;
2005-09-11 04:12:50 +00:00
this - > AddChild ( & m_DifficultyIcon [ p ] ) ;
m_DifficultyMeter [ p ] . SetName ( ssprintf ( " DifficultyMeterP%d " , p + 1 ) ) ;
m_DifficultyMeter [ p ] . Load ( ssprintf ( " ScreenEvaluation DifficultyMeterP%d " , p + 1 ) ) ;
if ( GAMESTATE - > IsCourseMode ( ) )
m_DifficultyMeter [ p ] . SetFromTrail ( GAMESTATE - > m_pCurTrail [ p ] ) ;
else
m_DifficultyMeter [ p ] . SetFromSteps ( GAMESTATE - > m_pCurSteps [ p ] ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( m_DifficultyMeter [ p ] , m_sName ) ;
SET_XY ( m_DifficultyMeter [ p ] ) ;
2005-09-11 04:12:50 +00:00
this - > AddChild ( & m_DifficultyMeter [ p ] ) ;
m_textPlayerOptions [ p ] . LoadFromFont ( THEME - > GetPathF ( m_sName , " PlayerOptions " ) ) ;
m_textPlayerOptions [ p ] . SetName ( ssprintf ( " PlayerOptionsP%d " , p + 1 ) ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( m_textPlayerOptions [ p ] , m_sName ) ;
SET_XY ( m_textPlayerOptions [ p ] ) ;
2006-01-22 01:00:06 +00:00
vector < RString > v ;
2006-08-05 02:38:05 +00:00
GAMESTATE - > m_pPlayerState [ p ] - > m_PlayerOptions . GetStage ( ) . GetLocalizedMods ( v ) ;
2006-01-22 01:00:06 +00:00
RString sPO = join ( PLAYER_OPTIONS_SEPARATOR , v ) ;
2005-09-11 04:12:50 +00:00
m_textPlayerOptions [ p ] . SetText ( sPO ) ;
this - > AddChild ( & m_textPlayerOptions [ p ] ) ;
2004-03-20 07:46:56 +00:00
}
}
2003-03-24 21:37:13 +00:00
}
2002-06-24 22:04:31 +00:00
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
{
2004-05-02 11:35:13 +00:00
FOREACH_EnabledPlayer ( p )
2003-03-28 05:47:42 +00:00
{
2005-02-15 19:44:34 +00:00
m_sprGradeFrame [ p ] . Load ( THEME - > GetPathG ( m_sName , ssprintf ( " grade frame p%d " , p + 1 ) ) ) ;
2004-05-30 21:34:42 +00:00
m_sprGradeFrame [ p ] - > SetName ( ssprintf ( " GradeFrameP%d " , p + 1 ) ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( * m_sprGradeFrame [ p ] , m_sName ) ;
SET_XY ( m_sprGradeFrame [ p ] ) ;
2004-05-30 21:34:42 +00:00
this - > AddChild ( m_sprGradeFrame [ p ] ) ;
2003-03-24 21:37:13 +00:00
2005-02-15 19:44:34 +00:00
m_Grades [ p ] . Load ( THEME - > GetPathG ( m_sName , " grades " ) ) ;
2005-09-11 01:24:28 +00:00
m_Grades [ p ] . SetGrade ( p , grade [ p ] ) ;
2003-04-15 02:47:24 +00:00
m_Grades [ p ] . SetName ( ssprintf ( " GradeP%d " , p + 1 ) ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( m_Grades [ p ] , m_sName ) ;
SET_XY ( m_Grades [ p ] ) ;
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 )
{
2004-05-02 11:35:13 +00:00
FOREACH_EnabledPlayer ( p )
2003-03-25 21:17:29 +00:00
{
2005-02-15 19:44:34 +00:00
m_sprPercentFrame [ p ] . Load ( THEME - > GetPathG ( m_sName , ssprintf ( " percent frame p%d " , p + 1 ) ) ) ;
2004-05-30 21:34:42 +00:00
m_sprPercentFrame [ p ] - > SetName ( ssprintf ( " PercentFrameP%d " , p + 1 ) ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( * m_sprPercentFrame [ p ] , m_sName ) ;
SET_XY ( m_sprPercentFrame [ p ] ) ;
2004-05-30 21:34:42 +00:00
this - > AddChild ( m_sprPercentFrame [ p ] ) ;
2003-03-28 05:47:42 +00:00
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. */
2005-02-16 23:03:01 +00:00
m_Percent [ p ] . SetName ( ssprintf ( " PercentP%d " , p + 1 ) ) ;
2005-08-23 21:04:35 +00:00
m_Percent [ p ] . Load ( GAMESTATE - > m_pPlayerState [ p ] , & STATSMAN - > m_CurStageStats . m_player [ p ] , " ScreenEvaluation Percent " , true ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( m_Percent [ p ] , m_sName ) ;
SET_XY ( m_Percent [ p ] ) ;
2003-10-05 00:33:05 +00:00
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
{
2004-05-02 11:35:13 +00:00
FOREACH_EnabledPlayer ( p )
2003-03-28 05:47:42 +00:00
{
2005-02-15 19:44:34 +00:00
m_sprBonusFrame [ p ] . Load ( THEME - > GetPathG ( m_sName , ssprintf ( " bonus frame p%d " , p + 1 ) ) ) ;
2004-05-30 21:34:42 +00:00
m_sprBonusFrame [ p ] - > SetName ( ssprintf ( " BonusFrameP%d " , p + 1 ) ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( * m_sprBonusFrame [ p ] , m_sName ) ;
SET_XY ( m_sprBonusFrame [ p ] ) ;
2004-05-30 21:34: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
{
2005-02-15 19:44:34 +00:00
m_sprPossibleBar [ p ] [ r ] . Load ( THEME - > GetPathG ( m_sName , ssprintf ( " bar possible p%d " , p + 1 ) ) ) ;
2005-09-11 01:46:55 +00:00
m_sprPossibleBar [ p ] [ r ] . SetWidth ( m_sprPossibleBar [ p ] [ r ] . GetUnzoomedWidth ( ) * STATSMAN - > m_CurStageStats . m_player [ p ] . radarPossible [ r ] ) ;
2003-04-15 02:47:24 +00:00
m_sprPossibleBar [ p ] [ r ] . SetName ( ssprintf ( " BarPossible%dP%d " , r + 1 , p + 1 ) ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( m_sprPossibleBar [ p ] [ r ] , m_sName ) ;
SET_XY ( m_sprPossibleBar [ p ] [ r ] ) ;
2003-03-28 05:47:42 +00:00
this - > AddChild ( & m_sprPossibleBar [ p ] [ r ] ) ;
2005-02-15 19:44:34 +00:00
m_sprActualBar [ p ] [ r ] . Load ( THEME - > GetPathG ( m_sName , ssprintf ( " 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)
2005-09-11 01:46:55 +00:00
m_sprActualBar [ p ] [ r ] . SetWidth ( m_sprPossibleBar [ p ] [ r ] . GetUnzoomedWidth ( ) * STATSMAN - > m_CurStageStats . m_player [ p ] . radarActual [ r ] ) ;
2003-07-24 13:35:20 +00:00
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 ) ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( m_sprActualBar [ p ] [ r ] , m_sName ) ;
SET_XY ( m_sprActualBar [ p ] [ r ] ) ;
2003-07-24 13:35:20 +00:00
// .99999 is fairly close to 1.00, so we use that
2005-09-11 01:46:55 +00:00
if ( STATSMAN - > m_CurStageStats . m_player [ p ] . radarActual [ r ] > 0.99999f )
2004-12-03 05:19:46 +00:00
m_sprActualBar [ p ] [ r ] . RunCommands ( BAR_ACTUAL_MAX_COMMAND ) ;
2003-03-28 05:47:42 +00:00
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 )
{
2004-05-02 11:35:13 +00:00
FOREACH_EnabledPlayer ( p )
2003-03-28 05:47:42 +00:00
{
2005-02-15 19:44:34 +00:00
m_sprSurvivedFrame [ p ] . Load ( THEME - > GetPathG ( m_sName , ssprintf ( " survived frame p%d " , p + 1 ) ) ) ;
2004-05-30 21:34:42 +00:00
m_sprSurvivedFrame [ p ] - > SetName ( ssprintf ( " SurvivedFrameP%d " , p + 1 ) ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( * m_sprSurvivedFrame [ p ] , m_sName ) ;
SET_XY ( m_sprSurvivedFrame [ p ] ) ;
2004-05-30 21:34:42 +00:00
this - > AddChild ( m_sprSurvivedFrame [ p ] ) ;
2003-03-28 05:47:42 +00:00
2004-07-25 07:22:31 +00:00
m_textSurvivedNumber [ p ] . LoadFromFont ( THEME - > GetPathF ( m_sName , " stage " ) ) ;
2004-03-20 02:59:08 +00:00
m_textSurvivedNumber [ p ] . SetShadowLength ( 0 ) ;
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)
2005-10-02 20:01:53 +00:00
m_textSurvivedNumber [ p ] . SetText ( ssprintf ( " %02d " , STATSMAN - > m_CurStageStats . m_player [ p ] . iSongsPassed ) ) ;
2003-04-15 02:47:24 +00:00
m_textSurvivedNumber [ p ] . SetName ( ssprintf ( " SurvivedNumberP%d " , p + 1 ) ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( m_textSurvivedNumber [ p ] , m_sName ) ;
SET_XY ( m_textSurvivedNumber [ p ] ) ;
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 )
{
2004-05-02 11:35:13 +00:00
FOREACH_EnabledPlayer ( p )
2003-04-15 02:47:24 +00:00
{
2004-06-01 05:46:21 +00:00
m_sprWinFrame [ p ] . Load ( THEME - > GetPathG ( m_sName , ssprintf ( " win frame p%d " , p + 1 ) ) ) ;
2004-05-30 21:34:42 +00:00
m_sprWinFrame [ p ] - > SetName ( ssprintf ( " WinFrameP%d " , p + 1 ) ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( * m_sprWinFrame [ p ] , m_sName ) ;
SET_XY ( m_sprWinFrame [ p ] ) ;
2004-05-30 21:34:42 +00:00
this - > AddChild ( m_sprWinFrame [ p ] ) ;
2003-04-15 02:47:24 +00:00
2004-06-01 05:46:21 +00:00
m_sprWin [ p ] . Load ( THEME - > GetPathG ( m_sName , ssprintf ( " win p%d 1x3 " , p + 1 ) ) ) ;
2003-04-15 02:47:24 +00:00
m_sprWin [ p ] . StopAnimating ( ) ;
2004-05-30 21:34:42 +00:00
int iFrame = GAMESTATE - > GetStageResult ( 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 ) ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( m_sprWin [ p ] , m_sName ) ;
SET_XY ( m_sprWin [ p ] ) ;
2003-04-15 02:47:24 +00:00
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
//
2005-10-09 04:30:59 +00:00
FOREACH_JudgeLine ( l )
2002-09-10 08:21:55 +00:00
{
2005-10-09 04:30:59 +00:00
if ( l = = 0 & & ! GAMESTATE - > ShowW1 ( ) )
2003-04-11 00:12:07 +00:00
continue ; // skip
2003-03-28 05:47:42 +00:00
if ( SHOW_JUDGMENT ( l ) )
{
2005-09-10 21:00:28 +00:00
if ( SHOW_JUDGMENT_LABELS )
{
m_sprJudgeLabels [ l ] . Load ( THEME - > GetPathG ( m_sName , " judge labels " ) ) ;
m_sprJudgeLabels [ l ] . StopAnimating ( ) ;
m_sprJudgeLabels [ l ] . SetState ( l ) ;
2005-10-09 04:30:59 +00:00
m_sprJudgeLabels [ l ] . SetName ( JudgeLineToString ( l ) + " Label " ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( m_sprJudgeLabels [ l ] , m_sName ) ;
SET_XY ( m_sprJudgeLabels [ l ] ) ;
2005-09-10 21:00:28 +00:00
this - > AddChild ( & m_sprJudgeLabels [ l ] ) ;
}
2002-09-10 08:21:55 +00:00
2004-05-02 11:35:13 +00:00
FOREACH_EnabledPlayer ( p )
2003-03-28 05:47:42 +00:00
{
2004-07-25 07:22:31 +00:00
m_textJudgeNumbers [ l ] [ p ] . LoadFromFont ( THEME - > GetPathF ( m_sName , " judge " ) ) ;
2004-03-20 02:59:08 +00:00
m_textJudgeNumbers [ l ] [ p ] . SetShadowLength ( 0 ) ;
2005-10-27 05:16:19 +00:00
m_textJudgeNumbers [ l ] [ p ] . RunCommands ( CommonMetrics : : PLAYER_COLOR . GetValue ( p ) ) ;
2005-10-09 04:30:59 +00:00
m_textJudgeNumbers [ l ] [ p ] . SetName ( JudgeLineToString ( l ) + ssprintf ( " NumberP%d " , p + 1 ) ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( m_textJudgeNumbers [ l ] [ p ] , m_sName ) ;
SET_XY ( m_textJudgeNumbers [ l ] [ p ] ) ;
2003-03-28 05:47:42 +00:00
this - > AddChild ( & m_textJudgeNumbers [ l ] [ p ] ) ;
int iValue ;
switch ( l )
{
2006-07-07 19:34:51 +00:00
case JudgeLine_W1 : iValue = STATSMAN - > m_CurStageStats . m_player [ p ] . iTapNoteScores [ TNS_W1 ] ; break ;
case JudgeLine_W2 : iValue = STATSMAN - > m_CurStageStats . m_player [ p ] . iTapNoteScores [ TNS_W2 ] ; break ;
case JudgeLine_W3 : iValue = STATSMAN - > m_CurStageStats . m_player [ p ] . iTapNoteScores [ TNS_W3 ] ; break ;
case JudgeLine_W4 : iValue = STATSMAN - > m_CurStageStats . m_player [ p ] . iTapNoteScores [ TNS_W4 ] ; break ;
case JudgeLine_W5 : iValue = STATSMAN - > m_CurStageStats . m_player [ p ] . iTapNoteScores [ TNS_W5 ] ; break ;
2005-10-09 04:30:59 +00:00
case JudgeLine_Miss : iValue = STATSMAN - > m_CurStageStats . m_player [ p ] . iTapNoteScores [ TNS_Miss ] ; break ;
case JudgeLine_Held : iValue = STATSMAN - > m_CurStageStats . m_player [ p ] . iHoldNoteScores [ HNS_Held ] ; break ;
2006-07-07 19:34:51 +00:00
case JudgeLine_MaxCombo : iValue = STATSMAN - > m_CurStageStats . m_player [ p ] . GetMaxCombo ( ) . cnt ; break ;
DEFAULT_FAIL ( l ) ;
2003-03-28 05:47:42 +00:00
}
2004-03-20 02:59:08 +00:00
// UGLY... generalize this
2005-10-09 04:30:59 +00:00
int iNumDigits = ( l = = JudgeLine_MaxCombo ) ? MAX_COMBO_NUM_DIGITS : 4 ;
2004-03-20 02:59:08 +00:00
m_textJudgeNumbers [ l ] [ p ] . SetText ( ssprintf ( " %*d " , iNumDigits , iValue ) ) ;
2003-03-28 05:47:42 +00:00
}
2002-09-10 08:21:55 +00:00
}
2003-03-24 21:37:13 +00:00
}
2002-09-10 08:21:55 +00:00
2005-10-09 04:30:59 +00:00
FOREACH_StatLine ( l )
2003-12-16 10:04:37 +00:00
{
if ( ! SHOW_STAT ( l ) )
continue ;
2005-09-10 21:00:28 +00:00
if ( SHOW_STATS_LABELS )
{
2005-10-09 04:30:59 +00:00
m_sprStatsLabel [ l ] . Load ( THEME - > GetPathG ( m_sName , " label " + StatLineToString ( l ) ) ) ;
2005-09-10 21:00:28 +00:00
m_sprStatsLabel [ l ] - > StopAnimating ( ) ;
2005-10-09 04:30:59 +00:00
m_sprStatsLabel [ l ] - > SetName ( StatLineToString ( l ) + " Label " ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( * m_sprStatsLabel [ l ] , m_sName ) ;
SET_XY ( m_sprStatsLabel [ l ] ) ;
2005-09-10 21:00:28 +00:00
this - > AddChild ( m_sprStatsLabel [ l ] ) ;
}
2003-12-16 10:04:37 +00:00
2004-05-02 11:35:13 +00:00
FOREACH_EnabledPlayer ( p )
2003-12-16 10:04:37 +00:00
{
2005-02-15 19:44:34 +00:00
m_textStatsText [ l ] [ p ] . LoadFromFont ( THEME - > GetPathF ( m_sName , " stats " ) ) ;
2005-10-27 05:16:19 +00:00
m_textStatsText [ l ] [ p ] . RunCommands ( CommonMetrics : : PLAYER_COLOR . GetValue ( p ) ) ;
2005-10-09 04:30:59 +00:00
m_textStatsText [ l ] [ p ] . SetName ( StatLineToString ( l ) + ssprintf ( " TextP%d " , p + 1 ) ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( m_textStatsText [ l ] [ p ] , m_sName ) ;
SET_XY ( m_textStatsText [ l ] [ p ] ) ;
2003-12-16 10:04:37 +00:00
this - > AddChild ( & m_textStatsText [ l ] [ p ] ) ;
2005-10-09 04:30:59 +00:00
static const int indeces [ NUM_StatLine ] =
2003-12-16 10:04:37 +00:00
{
2005-12-24 20:18:56 +00:00
RadarCategory_Jumps , RadarCategory_Holds , RadarCategory_Mines , RadarCategory_Hands , RadarCategory_Rolls
2003-12-16 10:04:37 +00:00
} ;
const int ind = indeces [ l ] ;
2005-09-11 01:46:55 +00:00
const int iActual = ( int ) roundf ( STATSMAN - > m_CurStageStats . m_player [ p ] . radarActual [ ind ] ) ;
const int iPossible = ( int ) roundf ( STATSMAN - > m_CurStageStats . m_player [ p ] . radarPossible [ ind ] ) ;
2003-12-16 10:04:37 +00:00
2004-03-20 02:59:08 +00:00
m_textStatsText [ l ] [ p ] . SetText ( ssprintf ( " %3d/%3d " , iActual , iPossible ) ) ;
2003-12-16 10:04:37 +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
{
2005-02-15 19:44:34 +00:00
m_sprScoreLabel . Load ( THEME - > GetPathG ( m_sName , " score label " ) ) ;
2004-05-30 21:34:42 +00:00
m_sprScoreLabel - > SetName ( " ScoreLabel " ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( * m_sprScoreLabel , m_sName ) ;
SET_XY ( m_sprScoreLabel ) ;
2004-05-30 21:34:42 +00:00
this - > AddChild ( m_sprScoreLabel ) ;
2003-03-28 05:47:42 +00:00
2004-05-02 11:35:13 +00:00
FOREACH_EnabledPlayer ( p )
2003-03-28 05:47:42 +00:00
{
2004-07-25 07:22:31 +00:00
m_textScore [ p ] . LoadFromFont ( THEME - > GetPathF ( m_sName , " score " ) ) ;
2004-03-20 02:59:08 +00:00
m_textScore [ p ] . SetShadowLength ( 0 ) ;
2005-10-27 05:16:19 +00:00
m_textScore [ p ] . RunCommands ( CommonMetrics : : PLAYER_COLOR . GetValue ( p ) ) ;
2003-04-15 02:47:24 +00:00
m_textScore [ p ] . SetName ( ssprintf ( " ScoreNumberP%d " , p + 1 ) ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( m_textScore [ p ] , m_sName ) ;
SET_XY ( m_textScore [ p ] ) ;
2005-09-11 01:46:55 +00:00
m_textScore [ p ] . SetText ( ssprintf ( " %*.0i " , NUM_SCORE_DIGITS , STATSMAN - > m_CurStageStats . m_player [ p ] . iScore ) ) ;
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-12-19 09:30:54 +00:00
if ( SHOW_TOTAL_SCORE_AREA )
{
2005-02-15 19:44:34 +00:00
m_sprTotalScoreLabel . Load ( THEME - > GetPathG ( m_sName , " totalscore label " ) ) ;
2004-05-30 21:34:42 +00:00
m_sprTotalScoreLabel - > SetName ( " TotalScoreLabel " ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( * m_sprTotalScoreLabel , m_sName ) ;
SET_XY ( m_sprTotalScoreLabel ) ;
2004-05-30 21:34:42 +00:00
this - > AddChild ( m_sprTotalScoreLabel ) ;
2003-12-19 09:30:54 +00:00
2004-05-02 11:35:13 +00:00
FOREACH_EnabledPlayer ( p )
2003-12-19 09:30:54 +00:00
{
int iTotalScore = 0 ;
2005-02-16 03:25:45 +00:00
for ( unsigned i = 0 ; i < STATSMAN - > m_vPlayedStageStats . size ( ) ; i + + )
iTotalScore + = STATSMAN - > m_vPlayedStageStats [ i ] . m_player [ p ] . iScore ;
2003-12-19 09:30:54 +00:00
2005-09-11 01:46:55 +00:00
//iTotalScore += STATSMAN->m_CurStageStats.m_player[p].iScore;
2003-12-19 09:30:54 +00:00
2004-07-25 07:22:31 +00:00
m_textTotalScore [ p ] . LoadFromFont ( THEME - > GetPathF ( m_sName , " totalscore " ) ) ;
2004-03-20 02:59:08 +00:00
m_textTotalScore [ p ] . SetShadowLength ( 0 ) ;
2005-10-27 05:16:19 +00:00
m_textTotalScore [ p ] . RunCommands ( CommonMetrics : : PLAYER_COLOR . GetValue ( p ) ) ;
2003-12-19 09:30:54 +00:00
m_textTotalScore [ p ] . SetName ( ssprintf ( " TotalScoreNumberP%d " , p + 1 ) ) ;
m_textTotalScore [ p ] . SetText ( ssprintf ( " %*.0i " , NUM_SCORE_DIGITS + 2 , iTotalScore ) ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( m_textTotalScore [ p ] , m_sName ) ;
SET_XY ( m_textTotalScore [ p ] ) ;
2003-12-19 09:30:54 +00:00
this - > AddChild ( & m_textTotalScore [ p ] ) ;
}
}
2003-03-28 05:47:42 +00:00
//
// init time area
//
if ( SHOW_TIME_AREA )
2003-03-24 21:37:13 +00:00
{
2005-02-15 19:44:34 +00:00
m_sprTimeLabel . Load ( THEME - > GetPathG ( m_sName , " time label " ) ) ;
2004-05-30 21:34:42 +00:00
m_sprTimeLabel - > SetName ( " TimeLabel " ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( * m_sprTimeLabel , m_sName ) ;
SET_XY ( m_sprTimeLabel ) ;
2004-05-30 21:34:42 +00:00
this - > AddChild ( m_sprTimeLabel ) ;
2002-09-10 08:21:55 +00:00
2004-05-02 11:35:13 +00:00
FOREACH_EnabledPlayer ( p )
2003-03-24 21:37:13 +00:00
{
2004-07-25 07:22:31 +00:00
m_textTime [ p ] . LoadFromFont ( THEME - > GetPathF ( m_sName , " time " ) ) ;
2004-03-20 02:59:08 +00:00
m_textTime [ p ] . SetShadowLength ( 0 ) ;
2005-10-27 05:16:19 +00:00
m_textTime [ p ] . RunCommands ( CommonMetrics : : PLAYER_COLOR . GetValue ( p ) ) ;
2003-12-21 04:19:51 +00:00
m_textTime [ p ] . SetName ( ssprintf ( " TimeNumberP%d " , p + 1 ) ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( m_textTime [ p ] , m_sName ) ;
SET_XY ( m_textTime [ p ] ) ;
2005-09-11 01:46:55 +00:00
m_textTime [ p ] . SetText ( SecondsToMMSSMsMs ( STATSMAN - > m_CurStageStats . m_player [ p ] . fAliveSeconds ) ) ;
2003-03-28 23:13:32 +00:00
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
//
2005-09-10 16:37:58 +00:00
// init records area
2003-03-28 05:47:42 +00:00
//
2005-09-10 16:37:58 +00:00
if ( SHOW_RECORDS_AREA )
2003-03-28 05:47:42 +00:00
{
2005-09-10 16:37:58 +00:00
FOREACH_EnabledPlayer ( p )
2003-10-19 21:38:11 +00:00
{
2005-09-11 01:44:13 +00:00
if ( STATSMAN - > m_CurStageStats . m_player [ p ] . m_iMachineHighScoreIndex ! = - 1 )
2005-09-10 16:37:58 +00:00
{
2005-09-11 01:44:13 +00:00
m_sprMachineRecord [ p ] . Load ( THEME - > GetPathG ( m_sName , ssprintf ( " MachineRecord %02d " , STATSMAN - > m_CurStageStats . m_player [ p ] . m_iMachineHighScoreIndex + 1 ) ) ) ;
2005-09-10 16:37:58 +00:00
m_sprMachineRecord [ p ] - > SetName ( ssprintf ( " MachineRecordP%d " , p + 1 ) ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( * m_sprMachineRecord [ p ] , m_sName ) ;
SET_XY ( m_sprMachineRecord [ p ] ) ;
2005-09-10 16:37:58 +00:00
this - > AddChild ( m_sprMachineRecord [ p ] ) ;
}
2005-09-11 01:44:13 +00:00
if ( STATSMAN - > m_CurStageStats . m_player [ p ] . m_iPersonalHighScoreIndex ! = - 1 )
2005-09-10 16:37:58 +00:00
{
2005-09-11 01:44:13 +00:00
m_sprPersonalRecord [ p ] . Load ( THEME - > GetPathG ( m_sName , ssprintf ( " PersonalRecord %02d " , STATSMAN - > m_CurStageStats . m_player [ p ] . m_iPersonalHighScoreIndex + 1 ) ) ) ;
2005-09-10 16:37:58 +00:00
m_sprPersonalRecord [ p ] - > SetName ( ssprintf ( " PersonalRecordP%d " , p + 1 ) ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( * m_sprPersonalRecord [ p ] , m_sName ) ;
SET_XY ( m_sprPersonalRecord [ p ] ) ;
2005-09-10 16:37:58 +00:00
this - > AddChild ( m_sprPersonalRecord [ 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 ;
2004-05-04 00:00:17 +00:00
FOREACH_PlayerNumber ( p )
2005-09-11 01:44:13 +00:00
if ( GAMESTATE - > IsPlayerEnabled ( p ) & & ( STATSMAN - > m_CurStageStats . m_player [ p ] . m_iMachineHighScoreIndex ! = - 1 | | STATSMAN - > m_CurStageStats . m_player [ p ] . m_iPersonalHighScoreIndex ! = - 1 ) )
2004-05-04 00:00:17 +00:00
bOneHasNewTopRecord = true ;
2004-01-22 02:39:55 +00:00
2005-08-14 11:38:31 +00:00
Grade best_grade = Grade_NoData ;
2004-05-04 00:00:17 +00:00
FOREACH_PlayerNumber ( p )
2005-09-11 01:24:28 +00:00
best_grade = min ( best_grade , grade [ p ] ) ;
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
{
2005-02-15 19:44:34 +00:00
m_sprTryExtraStage . Load ( THEME - > GetPathG ( m_sName , GAMESTATE - > IsExtraStage ( ) ? " try extra2 " : " try extra1 " ) ) ;
2004-05-30 21:34:42 +00:00
m_sprTryExtraStage - > SetName ( " TryExtraStage " ) ;
2006-09-23 03:37:45 +00:00
ActorUtil : : LoadAllCommands ( * m_sprTryExtraStage , m_sName ) ;
SET_XY ( m_sprTryExtraStage ) ;
2004-05-30 21:34:42 +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 ( ) )
2005-02-15 19:44:34 +00:00
SOUND - > PlayOnce ( THEME - > GetPathS ( m_sName , " try extra2 " ) ) ;
2003-03-12 01:26:44 +00:00
else
2005-02-15 19:44:34 +00:00
SOUND - > PlayOnce ( THEME - > GetPathS ( m_sName , " 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
{
2005-09-11 04:12:50 +00:00
if ( SUMMARY | | GAMESTATE - > IsCourseMode ( ) )
{
SOUND - > PlayOnceFromDir ( ANNOUNCER - > GetPathTo ( " evaluation final " + GradeToOldString ( best_grade ) ) ) ;
}
else
2002-06-24 22:04:31 +00:00
{
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 :
2004-04-23 02:37:09 +00:00
SOUND - > PlayOnceFromDir ( ANNOUNCER - > GetPathTo ( " evaluation " + GradeToOldString ( best_grade ) ) ) ;
2003-05-13 13:35:32 +00:00
break ;
}
2002-06-24 22:04:31 +00:00
}
}
2004-01-20 07:09:44 +00:00
switch ( best_grade )
2002-10-18 19:01:32 +00:00
{
2005-08-14 11:38:31 +00:00
case Grade_Tier01 :
case Grade_Tier02 :
case Grade_Tier03 :
2003-04-15 02:47:24 +00:00
this - > PostScreenMessage ( SM_PlayCheer , CHEER_DELAY_SECONDS ) ;
2002-10-18 19:01:32 +00:00
break ;
}
2004-05-02 03:01:27 +00:00
this - > SortByDrawOrder ( ) ;
2002-08-27 16:53:25 +00:00
2005-03-21 20:14:08 +00:00
this - > PostScreenMessage ( SM_AddBonus , 1.5f ) ;
2005-09-10 23:28:23 +00:00
}
2002-06-24 22:04:31 +00:00
2005-09-05 02:26:50 +00:00
void ScreenEvaluation : : Input ( const InputEventPlus & input )
2002-06-24 22:04:31 +00:00
{
2004-05-01 23:19:33 +00:00
if ( IsTransitioning ( ) )
2002-06-24 22:04:31 +00:00
return ;
2005-09-05 02:26:50 +00:00
if ( input . GameI . IsValid ( ) )
2004-02-12 09:44:16 +00:00
{
2005-09-05 02:26:50 +00:00
if ( CodeDetector : : EnteredCode ( input . GameI . controller , CODE_SAVE_SCREENSHOT1 ) | |
CodeDetector : : EnteredCode ( input . GameI . controller , CODE_SAVE_SCREENSHOT2 ) )
2004-02-12 09:44:16 +00:00
{
2006-09-13 10:02:58 +00:00
PlayerNumber pn = input . pn ;
2004-02-12 09:44:16 +00:00
if ( ! m_bSavedScreenshot [ pn ] & & // only allow one screenshot
2005-05-09 08:44:01 +00:00
PROFILEMAN - > IsPersistentProfile ( pn ) )
2004-02-12 09:44:16 +00:00
{
2005-01-27 20:06:20 +00:00
if ( PROFILEMAN - > ProfileWasLoadedFromMemoryCard ( pn ) )
2004-10-03 05:27:52 +00:00
MEMCARDMAN - > MountCard ( pn ) ;
2004-02-22 05:04:11 +00:00
Profile * pProfile = PROFILEMAN - > GetProfile ( pn ) ;
2006-01-22 01:00:06 +00:00
RString sDir = PROFILEMAN - > GetProfileDir ( ( ProfileSlot ) pn ) + " Screenshots/ " ;
2004-02-22 05:04:11 +00:00
int iScreenshotIndex = pProfile - > GetNextScreenshotIndex ( ) ;
2006-01-22 01:00:06 +00:00
RString sFileName = StepMania : : SaveScreenshot ( sDir , true , true , iScreenshotIndex ) ;
RString sPath = sDir + sFileName ;
2004-02-17 01:16:57 +00:00
if ( ! sFileName . empty ( ) )
{
2005-10-17 00:50:06 +00:00
const HighScore & hs = STATSMAN - > m_CurStageStats . m_player [ pn ] . m_HighScore ;
2004-06-12 07:01:07 +00:00
Screenshot screenshot ;
2004-02-17 01:16:57 +00:00
screenshot . sFileName = sFileName ;
2006-05-16 00:47:02 +00:00
screenshot . sMD5 = CRYPTMAN - > GetMD5ForFile ( sPath ) ;
2004-06-12 07:01:07 +00:00
screenshot . highScore = hs ;
2004-02-17 01:16:57 +00:00
pProfile - > AddScreenshot ( screenshot ) ;
}
2005-04-28 20:42:42 +00:00
if ( PROFILEMAN - > ProfileWasLoadedFromMemoryCard ( pn ) )
MEMCARDMAN - > UnmountCard ( pn ) ;
2004-02-12 09:44:16 +00:00
m_bSavedScreenshot [ pn ] = true ;
return ; // handled
}
}
}
2005-09-05 02:26:50 +00:00
ScreenWithMenuElements : : Input ( input ) ;
2002-06-24 22:04:31 +00:00
}
void ScreenEvaluation : : HandleScreenMessage ( const ScreenMessage SM )
{
2005-03-23 08:48:38 +00:00
if ( SM = = SM_MenuTimer )
2002-06-24 22:04:31 +00:00
{
2004-01-12 23:18:38 +00:00
EndScreen ( ) ;
2005-03-23 08:48:38 +00:00
}
else if ( SM = = SM_PlayCheer )
{
2003-07-26 22:53:22 +00:00
SOUND - > PlayOnceFromDir ( ANNOUNCER - > GetPathTo ( " evaluation cheer " ) ) ;
2005-03-23 08:48:38 +00:00
}
else if ( SM = = SM_AddBonus )
{
2005-03-21 20:14:08 +00:00
FOREACH_EnabledPlayer ( p )
{
if ( STATSMAN - > m_CurStageStats . m_player [ p ] . iBonus = = 0 )
continue ;
if ( GAMESTATE - > IsCourseMode ( ) )
continue ;
int increment = STATSMAN - > m_CurStageStats . m_player [ p ] . iBonus / 10 ;
if ( increment < 1 )
increment = min ( 1024 , STATSMAN - > m_CurStageStats . m_player [ p ] . iBonus ) ;
STATSMAN - > m_CurStageStats . m_player [ p ] . iBonus - = increment ;
STATSMAN - > m_CurStageStats . m_player [ p ] . iScore + = increment ;
if ( SHOW_SCORE_AREA )
m_textScore [ p ] . SetText ( ssprintf ( " %*.0i " , NUM_SCORE_DIGITS , STATSMAN - > m_CurStageStats . m_player [ p ] . iScore ) ) ;
}
2002-06-24 22:04:31 +00:00
}
2005-07-12 06:56:09 +00:00
ScreenWithMenuElements : : HandleScreenMessage ( SM ) ;
2002-06-24 22:04:31 +00:00
}
2006-09-15 01:47:24 +00:00
void ScreenEvaluation : : MenuBack ( const InputEventPlus & input )
2002-06-24 22:04:31 +00:00
{
2006-09-15 01:47:24 +00:00
MenuStart ( input ) ;
2002-06-24 22:04:31 +00:00
}
2006-09-15 01:47:24 +00:00
void ScreenEvaluation : : MenuStart ( const InputEventPlus & input )
2004-01-12 23:18:38 +00:00
{
m_soundStart . Play ( ) ;
EndScreen ( ) ;
}
void ScreenEvaluation : : EndScreen ( )
2002-06-24 22:04:31 +00:00
{
2004-05-24 06:10:11 +00:00
FOREACH_PlayerNumber ( p )
2003-03-25 22:23:58 +00:00
m_Grades [ p ] . SettleImmediately ( ) ;
2005-10-13 22:17:13 +00:00
StartTransitioningScreen ( SM_GoToNextScreen ) ;
2002-06-24 22:04:31 +00:00
}
2004-06-08 05:22:33 +00:00
/*
* (c) 2001-2004 Chris Danford
* All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, and/or sell copies of the Software, and to permit persons to
* whom the Software is furnished to do so, provided that the above
* copyright notice(s) and this permission notice appear in all copies of
* the Software and that both the above copyright notice(s) and this
* permission notice appear in supporting documentation.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/