From a8a99fe828292a51f9b49bec51421e5c763fb34b Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Wed, 28 Aug 2002 22:42:40 +0000 Subject: [PATCH] Moved more constants into theme metrics --- stepmania/NEWS | 2 + stepmania/Themes/default/metrics.ini | 52 +- stepmania/src/AnnouncerManager.cpp | 16 +- stepmania/src/BPMDisplay.cpp | 95 ++-- stepmania/src/BPMDisplay.h | 2 + stepmania/src/Background.cpp | 45 +- stepmania/src/GameState.cpp | 36 +- stepmania/src/GrayArrow.cpp | 16 +- stepmania/src/Judgement.cpp | 1 - stepmania/src/MusicWheel.cpp | 18 +- stepmania/src/Player.cpp | 56 +- stepmania/src/ScreenEvaluation.cpp | 62 +-- stepmania/src/ScreenEz2SelectStyle.cpp | 11 +- stepmania/src/ScreenGameplay.cpp | 214 ++++---- stepmania/src/ScreenHowToPlay.cpp | 7 +- stepmania/src/ScreenSelectCourse.cpp | 2 + stepmania/src/ScreenSelectDifficulty.cpp | 25 +- stepmania/src/ScreenSelectGroup.cpp | 16 +- stepmania/src/ScreenSelectMusic.cpp | 101 +++- stepmania/src/ScreenSelectMusic.h | 15 +- stepmania/src/ScreenSelectStyle.cpp | 11 +- stepmania/src/ScreenSelectStyle5th.cpp | 11 +- stepmania/src/ScreenStage.cpp | 639 ++++++++++++----------- stepmania/src/ScreenStage.h | 5 +- stepmania/src/SongManager.cpp | 2 +- stepmania/src/StepMania.dsp | 8 - stepmania/src/StepMania.vcproj | 6 - 27 files changed, 826 insertions(+), 648 deletions(-) diff --git a/stepmania/NEWS b/stepmania/NEWS index de18e5ef34..13f8221882 100644 --- a/stepmania/NEWS +++ b/stepmania/NEWS @@ -1,4 +1,6 @@ ------------------------CVS after 3.00 beta 6---------------- +CHANGE: After changing sort to "BEST", focus will be changed to the + the most-played song. CHANGE: Texture Hints have been removed in favor of smarter, automatic texture format chooser. CHANGE: New Nullsoft NSIS installer. diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 97320a7a88..8e32eff55f 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -102,7 +102,8 @@ CursorShadowLengthX=10 CursorShadowLengthY=10 HelpText=Use ! " to select, then press START TimerSeconds=40 -NextScreen=ScreenSelectGroup +NextScreenArcade=ScreenSelectGroup +NextScreenOni=ScreenHowToPlay [ScreenSelectGroup] FrameX=180 @@ -128,8 +129,7 @@ TitlesColumns=3 TitlesRows=10 HelpText=Use ! " to select, then press START TimerSeconds=40 -NextScreenArcade=ScreenHowToPlay -NextScreenOni=ScreenHowToPlay +NextScreen=ScreenHowToPlay [ScreenHowToPlay] NextScreenArcade=ScreenSelectMusic @@ -180,6 +180,7 @@ SongOptionsX=160 SongOptionsY=298 HelpText=! or " change music Hold ! and " then press START to change sort::## easier difficulty $$ harder difficulty::#$#$ to change sort TimerSeconds=60 +ScoreConnectedToMusicWheel=1 [ScreenSelectCourse] BannerFrameX=160 @@ -421,10 +422,51 @@ RainbowColor7=1.0,0.8,0.2,1 // orange [SongManager] GroupColor1=0.8,0.1,0.6,1 // pink -GroupColor2=0.5,0.3,0.7,1 // purple +GroupColor2=0.6,0.4,0.8,1 // purple GroupColor3=0.0,0.4,0.8,1 // sky blue GroupColor4=0.0,0.6,0.6,1 // sea green GroupColor5=0.1,0.7,0.3,1 // green GroupColor6=0.8,0.6,0.0,1 // orange GroupColor7=1.0,0.3,0.3,1 // light red -ExtraColor=1,0,0,1 // red +ExtraColor=1.0,0.0,0.0,1.0 // red + +[Background] +LeftEdge=20 +TopEdge=40 +RightEdge=620 +BottomEdge=424 + +[Player] +JudgePerfectZoomX=1.3 +JudgePerfectZoomY=1.3 +JudgeGreatZoomX=1.2 +JudgeGreatZoomY=1.2 +JudgeGoodZoomX=1.1 +JudgeGoodZoomY=1.1 +JudgeBooZoomX=1.0 +JudgeBooZoomY=1.0 +ComboJudgeTweenSeconds=0.1 + +[GameState] +StageColorDemo=0.3,1.0,0.3,1 // green +StageColorNormal=0.3,1.0,0.3,1 // green +StageColorFinal=1.0,0.1,0.1,1 // red +StageColorExtra1=1.0,1,0.3,1 // yellow +StageColorExtra2=1.0,1,0.3,1 // yellow +StageColorOni=0.3,1.0,0.3,1 // green +StageTextDemo=Demo +StageTextFinal=Final +StageTextExtra1=Extra +StageTextExtra2=Extra2 + +[BPMDisplay] +NormalColorTop=1.0,1.0,0.0,1 // yellow +NormalColorBottom=1.0,0.5,0.0,1 // orange +ChangeColorTop=1.0,0.0,0.0,1 // red +ChangeColorBottom=0.6,0.0,0.0,1 // dark red +ExtraColorTop=1.0,0.0,0.0,1 // red +ExtraColorBottom=0.6,0.0,0.0,1 // dark red + +[GrayArrow] +StepZoom=0.75 +StepSeconds=0.2 diff --git a/stepmania/src/AnnouncerManager.cpp b/stepmania/src/AnnouncerManager.cpp index 25746e5206..34f8c631f8 100644 --- a/stepmania/src/AnnouncerManager.cpp +++ b/stepmania/src/AnnouncerManager.cpp @@ -83,19 +83,19 @@ try_again: "The current announcer is missing the folder '%s'.\n" "It may be that these sounds were never implemented in this announcer,\n" "Or the folder may be misnamed.\n\n" - "Click Abort to automatically create the folder.\n" + "Click Abort to break.\n" "Click Retry after adding the folder menually.\n" - "Click to break.", sFolderName), MB_ABORTRETRYIGNORE ); + "Click Ignore to to automatically create the folder.\n\n", sFolderName), MB_ABORTRETRYIGNORE ); switch( iResult ) { case IDABORT: - CreateDirectory( sPathToFolderCurrent, NULL ); + DebugBreak(); break; case IDRETRY: goto try_again; break; case IDIGNORE: - DebugBreak(); + CreateDirectory( sPathToFolderCurrent, NULL ); break; } } @@ -105,19 +105,19 @@ try_again: ssprintf( "The empty announcer is missing the folder '%s'.\n" "This announcer should have empty folders for every saying.\n\n" - "Click Abort to automatically create the folder.\n" + "Click Abort to break.\n" "Click Retry after adding the folder menually.\n" - "Click to break.", sFolderName), MB_ABORTRETRYIGNORE ); + "Click Ignore to to automatically create the folder.\n\n", sFolderName), MB_ABORTRETRYIGNORE ); switch( iResult ) { case IDABORT: - CreateDirectory( sPathToFolderEmpty, NULL ); + DebugBreak(); break; case IDRETRY: goto try_again; break; case IDIGNORE: - DebugBreak(); + CreateDirectory( sPathToFolderEmpty, NULL ); break; } } diff --git a/stepmania/src/BPMDisplay.cpp b/stepmania/src/BPMDisplay.cpp index 08255f2277..7e516146a5 100644 --- a/stepmania/src/BPMDisplay.cpp +++ b/stepmania/src/BPMDisplay.cpp @@ -13,14 +13,23 @@ #include "RageUtil.h" #include "GameConstantsAndTypes.h" #include "PrefsManager.h" +#include "GameState.h" +#define NORMAL_COLOR_TOP THEME->GetMetricC("BPMDisplay","NormalColorTop") +#define NORMAL_COLOR_BOTTOM THEME->GetMetricC("BPMDisplay","NormalColorBottom") +#define CHANGE_COLOR_TOP THEME->GetMetricC("BPMDisplay","ChangeColorTop") +#define CHANGE_COLOR_BOTTOM THEME->GetMetricC("BPMDisplay","ChangeColorBottom") +#define EXTRA_COLOR_TOP THEME->GetMetricC("BPMDisplay","ExtraColorTop") +#define EXTRA_COLOR_BOTTOM THEME->GetMetricC("BPMDisplay","ExtraColorBottom") + BPMDisplay::BPMDisplay() { m_fCurrentBPM = m_fLowBPM = m_fHighBPM = 0; m_CountingState = holding_down; m_fTimeLeftInState = 0; + m_bExtraStage = GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2(); m_rectFrame.SetDiffuseColor( D3DXCOLOR(0,0,0,0.3f) ); m_rectFrame.SetZoomX( 120 ); @@ -32,8 +41,8 @@ BPMDisplay::BPMDisplay() //m_textBPM.SetSequence( ssprintf("999") ); m_textBPM.SetXY( -23, 0 ); m_textBPM.SetZoom( 1.0f ); - m_textBPM.SetDiffuseColorTopEdge( D3DXCOLOR(1,1,0,1) ); // yellow - m_textBPM.SetDiffuseColorBottomEdge( D3DXCOLOR(1,0.5f,0,1) ); // orange + m_textBPM.SetDiffuseColorTopEdge( NORMAL_COLOR_TOP ); // yellow + m_textBPM.SetDiffuseColorBottomEdge( NORMAL_COLOR_BOTTOM ); // orange m_textLabel.LoadFromFont( THEME->GetPathTo("Fonts","header1") ); m_textLabel.TurnShadowOff(); @@ -41,8 +50,8 @@ BPMDisplay::BPMDisplay() m_textLabel.SetText( "BPM" ); m_textLabel.SetZoom( 0.7f ); m_textLabel.SetZoomX( 0.5f ); - m_textLabel.SetDiffuseColorTopEdge( D3DXCOLOR(1,1,0,1) ); // yellow - m_textLabel.SetDiffuseColorBottomEdge( D3DXCOLOR(1,0.5f,0,1) ); // orange + m_textLabel.SetDiffuseColorTopEdge( NORMAL_COLOR_TOP ); // yellow + m_textLabel.SetDiffuseColorBottomEdge( NORMAL_COLOR_BOTTOM ); // orange //this->AddSubActor( &m_rectFrame ); this->AddSubActor( &m_textBPM ); @@ -54,28 +63,40 @@ void BPMDisplay::Update( float fDeltaTime ) { ActorFrame::Update( fDeltaTime ); - m_fTimeLeftInState -= fDeltaTime; - if( m_fTimeLeftInState < 0 ) + if( m_bExtraStage ) { - // go to next state + m_fTimeLeftInState -= fDeltaTime; + if( m_fTimeLeftInState < 0 ) + { + m_textBPM.SetText( (RandomFloat(0,1)>0.90) ? "???" : ssprintf("%03.0f",RandomFloat(0,600)) ); + m_fTimeLeftInState = 0.2f; // reset timer + } + } + else // !m_bExtraStage + { + m_fTimeLeftInState -= fDeltaTime; + if( m_fTimeLeftInState < 0 ) + { + // go to next state + switch( m_CountingState ) + { + case counting_up: m_CountingState = holding_up; break; + case holding_up: m_CountingState = counting_down; break; + case counting_down: m_CountingState = holding_down; break; + case holding_down: m_CountingState = counting_up; break; + } + m_fTimeLeftInState = 1; // reset timer + } + switch( m_CountingState ) { - case counting_up: m_CountingState = holding_up; break; - case holding_up: m_CountingState = counting_down; break; - case counting_down: m_CountingState = holding_down; break; - case holding_down: m_CountingState = counting_up; break; + case counting_down: m_fCurrentBPM = m_fLowBPM + (m_fHighBPM-m_fLowBPM)*m_fTimeLeftInState; break; + case counting_up: m_fCurrentBPM = m_fHighBPM + (m_fLowBPM-m_fHighBPM)*m_fTimeLeftInState; break; + case holding_up: m_fCurrentBPM = m_fHighBPM; break; + case holding_down: m_fCurrentBPM = m_fLowBPM; break; } - m_fTimeLeftInState = 1; // reset timer + m_textBPM.SetText( ssprintf("%03.0f", m_fCurrentBPM) ); } - - switch( m_CountingState ) - { - case counting_down: m_fCurrentBPM = m_fLowBPM + (m_fHighBPM-m_fLowBPM)*m_fTimeLeftInState; break; - case counting_up: m_fCurrentBPM = m_fHighBPM + (m_fLowBPM-m_fHighBPM)*m_fTimeLeftInState; break; - case holding_up: m_fCurrentBPM = m_fHighBPM; break; - case holding_down: m_fCurrentBPM = m_fLowBPM; break; - } - m_textBPM.SetText( ssprintf("%03.0f", m_fCurrentBPM) ); } @@ -89,23 +110,29 @@ void BPMDisplay::SetBPMRange( float fLowBPM, float fHighBPM ) m_CountingState = counting_up; m_fTimeLeftInState = 1; - if( m_fLowBPM != m_fHighBPM ) + m_textBPM.BeginTweening(0.5f); + m_textLabel.BeginTweening(0.5f); + + if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() ) { - m_textBPM.BeginTweening(0.5f); - m_textBPM.SetTweenDiffuseColorTopEdge( D3DXCOLOR(1,0,0,1) ); // red - m_textBPM.SetTweenDiffuseColorBottomEdge( D3DXCOLOR(0.6f,0,0,1) ); // dark red - m_textLabel.BeginTweening(0.5f); - m_textLabel.SetTweenDiffuseColorTopEdge( D3DXCOLOR(1,0,0,1) ); // red - m_textLabel.SetTweenDiffuseColorBottomEdge( D3DXCOLOR(0.6f,0,0,1) ); // dark red + m_textBPM.SetTweenDiffuseColorTopEdge( EXTRA_COLOR_TOP ); + m_textBPM.SetTweenDiffuseColorBottomEdge( EXTRA_COLOR_BOTTOM ); + m_textLabel.SetTweenDiffuseColorTopEdge( EXTRA_COLOR_TOP ); + m_textLabel.SetTweenDiffuseColorBottomEdge( EXTRA_COLOR_BOTTOM ); + } + else if( m_fLowBPM != m_fHighBPM ) + { + m_textBPM.SetTweenDiffuseColorTopEdge( CHANGE_COLOR_TOP ); + m_textBPM.SetTweenDiffuseColorBottomEdge( CHANGE_COLOR_BOTTOM ); + m_textLabel.SetTweenDiffuseColorTopEdge( CHANGE_COLOR_TOP ); + m_textLabel.SetTweenDiffuseColorBottomEdge( CHANGE_COLOR_BOTTOM ); } else { - m_textBPM.BeginTweening(0.5f); - m_textBPM.SetTweenDiffuseColorTopEdge( D3DXCOLOR(1,1,0,1) ); // yellow - m_textBPM.SetTweenDiffuseColorBottomEdge( D3DXCOLOR(1,0.5f,0,1) ); // orange - m_textLabel.BeginTweening(0.5f); - m_textLabel.SetTweenDiffuseColorTopEdge( D3DXCOLOR(1,1,0,1) ); // yellow - m_textLabel.SetTweenDiffuseColorBottomEdge( D3DXCOLOR(1,0.5f,0,1) ); // orange + m_textBPM.SetTweenDiffuseColorTopEdge( NORMAL_COLOR_TOP ); + m_textBPM.SetTweenDiffuseColorBottomEdge( NORMAL_COLOR_BOTTOM ); + m_textLabel.SetTweenDiffuseColorTopEdge( NORMAL_COLOR_TOP ); + m_textLabel.SetTweenDiffuseColorBottomEdge( NORMAL_COLOR_BOTTOM ); } } \ No newline at end of file diff --git a/stepmania/src/BPMDisplay.h b/stepmania/src/BPMDisplay.h index 29c8391c88..b450856ead 100644 --- a/stepmania/src/BPMDisplay.h +++ b/stepmania/src/BPMDisplay.h @@ -37,6 +37,8 @@ protected: enum CountingState{ counting_up, holding_up, counting_down, holding_down }; CountingState m_CountingState; float m_fTimeLeftInState; + + bool m_bExtraStage; // cycle BPM through random values if extra stage }; #endif \ No newline at end of file diff --git a/stepmania/src/Background.cpp b/stepmania/src/Background.cpp index 3aeae89c25..f881ae98f2 100644 --- a/stepmania/src/Background.cpp +++ b/stepmania/src/Background.cpp @@ -26,12 +26,12 @@ const CString VISUALIZATIONS_DIR = "Visualizations\\"; const CString RANDOMMOVIES_DIR = "RandomMovies\\"; // TODO: Move these into theme metrics -const int BACKGROUND_LEFT = 0; -const int BACKGROUND_TOP = 0; -const int BACKGROUND_RIGHT = 640; -const int BACKGROUND_BOTTOM = 480; +#define LEFT_EDGE THEME->GetMetricI("Background","LeftEdge") +#define TOP_EDGE THEME->GetMetricI("Background","TopEdge") +#define RIGHT_EDGE THEME->GetMetricI("Background","RightEdge") +#define BOTTOM_EDGE THEME->GetMetricI("Background","BottomEdge") -#define RECT_BACKGROUND CRect(BACKGROUND_LEFT,BACKGROUND_TOP,BACKGROUND_RIGHT,BACKGROUND_BOTTOM) +#define RECT_BACKGROUND CRect(LEFT_EDGE,TOP_EDGE,RIGHT_EDGE,BOTTOM_EDGE) int CompareBGSegments(const void *arg1, const void *arg2) { @@ -75,14 +75,14 @@ Background::Background() m_quadBGBrightness.StretchTo( RECT_BACKGROUND ); m_quadBGBrightness.SetDiffuseColor( D3DXCOLOR(0,0,0,1-0.5f) ); - m_quadBorder[0].StretchTo( CRect(SCREEN_LEFT,SCREEN_TOP,BACKGROUND_LEFT,SCREEN_BOTTOM) ); - m_quadBorder[0].SetDiffuseColor( D3DXCOLOR(0,0,0,0) ); - m_quadBorder[1].StretchTo( CRect(BACKGROUND_LEFT,SCREEN_TOP,BACKGROUND_RIGHT,BACKGROUND_TOP) ); - m_quadBorder[1].SetDiffuseColor( D3DXCOLOR(0,0,0,0) ); - m_quadBorder[2].StretchTo( CRect(BACKGROUND_RIGHT,SCREEN_TOP,SCREEN_RIGHT,SCREEN_BOTTOM) ); - m_quadBorder[2].SetDiffuseColor( D3DXCOLOR(0,0,0,0) ); - m_quadBorder[3].StretchTo( CRect(BACKGROUND_LEFT,SCREEN_TOP,BACKGROUND_RIGHT,BACKGROUND_TOP) ); - m_quadBorder[3].SetDiffuseColor( D3DXCOLOR(0,0,0,0) ); + m_quadBorder[0].StretchTo( CRect(SCREEN_LEFT,SCREEN_TOP,LEFT_EDGE,SCREEN_BOTTOM) ); + m_quadBorder[0].SetDiffuseColor( D3DXCOLOR(0,0,0,1) ); + m_quadBorder[1].StretchTo( CRect(LEFT_EDGE,SCREEN_TOP,RIGHT_EDGE,TOP_EDGE) ); + m_quadBorder[1].SetDiffuseColor( D3DXCOLOR(0,0,0,1) ); + m_quadBorder[2].StretchTo( CRect(RIGHT_EDGE,SCREEN_TOP,SCREEN_RIGHT,SCREEN_BOTTOM) ); + m_quadBorder[2].SetDiffuseColor( D3DXCOLOR(0,0,0,1) ); + m_quadBorder[3].StretchTo( CRect(LEFT_EDGE,BOTTOM_EDGE,RIGHT_EDGE,SCREEN_BOTTOM) ); + m_quadBorder[3].SetDiffuseColor( D3DXCOLOR(0,0,0,1) ); } Background::~Background() @@ -95,6 +95,8 @@ void Background::Unload() for( int i=0; i0; i++ ) + for( int i=arrayPossibleAnims.GetSize()-1; i>=0; i-- ) + if( 0==stricmp(arrayPossibleAnims[i].Right(3),"cvs") ) + arrayPossibleAnims.RemoveAt(i); + for( i=0; i<4 && arrayPossibleAnims.GetSize()>0; i++ ) { int index = rand() % arrayPossibleAnims.GetSize(); pTempBGA = new BackgroundAnimation; @@ -327,7 +338,11 @@ void Background::LoadFromSong( Song* pSong ) } - + for( int i=0; iSetXY( (float)LEFT_EDGE, (float)TOP_EDGE ); + m_BackgroundAnimations[i]->SetZoom( fZoom ); + } } diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index 7dcde3a9cf..ba4c245ac9 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -21,6 +21,18 @@ GameState* GAMESTATE = NULL; // global and accessable from anywhere in our program +#define STAGE_COLOR_DEMO THEME->GetMetricC("GameState","StageColorDemo") +#define STAGE_COLOR_NORMAL THEME->GetMetricC("GameState","StageColorNormal") +#define STAGE_COLOR_FINAL THEME->GetMetricC("GameState","StageColorFinal") +#define STAGE_COLOR_EXTRA1 THEME->GetMetricC("GameState","StageColorExtra1") +#define STAGE_COLOR_EXTRA2 THEME->GetMetricC("GameState","StageColorExtra2") +#define STAGE_COLOR_ONI THEME->GetMetricC("GameState","StageColorOni") +#define STAGE_TEXT_DEMO THEME->GetMetric("GameState","StageTextDemo") +#define STAGE_TEXT_FINAL THEME->GetMetric("GameState","StageTextFinal") +#define STAGE_TEXT_EXTRA1 THEME->GetMetric("GameState","StageTextExtra1") +#define STAGE_TEXT_EXTRA2 THEME->GetMetric("GameState","StageTextExtra2") + + GameState::GameState() { m_CurGame = GAME_DANCE; @@ -210,14 +222,10 @@ bool GameState::IsExtraStage2() CString GameState::GetStageText() { - if( m_bDemonstration ) - return "Demo"; - else if( IsFinalStage() ) - return "Final"; - else if( IsExtraStage() ) - return "Extra"; - else if( IsExtraStage2() ) - return "Extra 2"; + if( m_bDemonstration ) return STAGE_TEXT_DEMO; + else if( IsFinalStage() ) return STAGE_TEXT_FINAL; + else if( IsExtraStage() ) return STAGE_TEXT_EXTRA1; + else if( IsExtraStage2() ) return STAGE_TEXT_EXTRA2; int iStageNo = m_iCurrentStageIndex+1; @@ -243,12 +251,12 @@ CString GameState::GetStageText() D3DXCOLOR GameState::GetStageColor() { - if( IsFinalStage() ) - return D3DXCOLOR(1,0.1f,0.1f,1); // red - else if( IsExtraStage() || IsExtraStage2() ) - return D3DXCOLOR(1,1,0.3f,1); // yellow - else - return D3DXCOLOR(0.3f,1,0.3f,1); // green + if( m_bDemonstration ) return STAGE_COLOR_DEMO; + else if( m_PlayMode==PLAY_MODE_ONI || m_PlayMode==PLAY_MODE_ENDLESS ) return STAGE_COLOR_ONI; + else if( IsFinalStage() ) return STAGE_COLOR_FINAL; + else if( IsExtraStage() ) return STAGE_COLOR_EXTRA1; + else if( IsExtraStage2() ) return STAGE_COLOR_EXTRA2; + else return STAGE_COLOR_NORMAL; } GameDef* GameState::GetCurrentGameDef() diff --git a/stepmania/src/GrayArrow.cpp b/stepmania/src/GrayArrow.cpp index 044607171d..83951af6e2 100644 --- a/stepmania/src/GrayArrow.cpp +++ b/stepmania/src/GrayArrow.cpp @@ -16,16 +16,24 @@ #include "GameState.h" -const float GRAY_ARROW_POP_UP_TIME = 0.15f; +#define STEP_SECONDS THEME->GetMetricF("GrayArrow","StepSeconds") +#define STEP_ZOOM THEME->GetMetricF("GrayArrow","StepZoom") + +float g_fStepSeconds, g_fStepZoom; GrayArrow::GrayArrow() { + g_fStepSeconds = STEP_SECONDS; + g_fStepZoom = STEP_ZOOM; + StopAnimating(); } void GrayArrow::Update( float fDeltaTime ) { + ASSERT( Sprite::GetNumStates() > 0 ); // you forgot to call Load() + Sprite::Update( fDeltaTime ); float fPercentIntoBeat = fmodf(GAMESTATE->m_fSongBeat,1); @@ -38,7 +46,7 @@ void GrayArrow::Update( float fDeltaTime ) void GrayArrow::Step() { - SetZoom( 0.75f ); - BeginTweening( GRAY_ARROW_POP_UP_TIME ); - SetTweenZoom( 1.0f ); + SetZoom( g_fStepZoom ); + BeginTweening( g_fStepSeconds ); + SetTweenZoom( 1 ); } diff --git a/stepmania/src/Judgement.cpp b/stepmania/src/Judgement.cpp index 93f878634a..1476dd94e3 100644 --- a/stepmania/src/Judgement.cpp +++ b/stepmania/src/Judgement.cpp @@ -82,7 +82,6 @@ void Judgement::SetJudgement( TapNoteScore score ) { // falling down m_sprJudgement.SetY( -20 ); - //m_sprJudgement.SetZoom( 1.0f ); m_sprJudgement.BeginTweening( JUDGEMENT_DISPLAY_TIME ); m_sprJudgement.SetTweenY( 20 ); } diff --git a/stepmania/src/MusicWheel.cpp b/stepmania/src/MusicWheel.cpp index 7bcb304ffc..e58f905f71 100644 --- a/stepmania/src/MusicWheel.cpp +++ b/stepmania/src/MusicWheel.cpp @@ -161,9 +161,6 @@ void WheelItemDisplay::LoadFromWheelItemData( WheelItemData* pWID ) { m_TextBanner.LoadFromSong( m_pSong ); D3DXCOLOR color = m_color; - color.r += 0.15f; - color.g += 0.15f; - color.b += 0.15f; m_TextBanner.SetDiffuseColor( color ); m_MusicStatusDisplay.SetType( m_IconType ); RefreshGrades(); @@ -814,6 +811,21 @@ void MusicWheel::Update( float fDeltaTime ) } } + // If changed sort to "BEST", put selection on most popular song + if( GAMESTATE->m_SongSortOrder == SORT_MOST_PLAYED ) + { + for( i=0; iSendMessageToTopScreen( SM_SongChanged, 0 ); + RebuildWheelItemDisplays(); TweenOnScreen(); diff --git a/stepmania/src/Player.cpp b/stepmania/src/Player.cpp index 92ae37fa2a..bc31100b65 100644 --- a/stepmania/src/Player.cpp +++ b/stepmania/src/Player.cpp @@ -24,6 +24,28 @@ #include "RageLog.h" +#define JUDGE_PERFECT_ZOOM_X THEME->GetMetricF("Player","JudgePerfectZoomX") +#define JUDGE_PERFECT_ZOOM_Y THEME->GetMetricF("Player","JudgePerfectZoomY") +#define JUDGE_GREAT_ZOOM_X THEME->GetMetricF("Player","JudgeGreatZoomX") +#define JUDGE_GREAT_ZOOM_Y THEME->GetMetricF("Player","JudgeGreatZoomY") +#define JUDGE_GOOD_ZOOM_X THEME->GetMetricF("Player","JudgeGoodZoomX") +#define JUDGE_GOOD_ZOOM_Y THEME->GetMetricF("Player","JudgeGoodZoomY") +#define JUDGE_BOO_ZOOM_X THEME->GetMetricF("Player","JudgeBooZoomX") +#define JUDGE_BOO_ZOOM_Y THEME->GetMetricF("Player","JudgeBooZoomY") +#define COMBO_JUDGE_TWEEN_SECONDS THEME->GetMetricF("Player","ComboJudgeTweenSeconds") + + +// cache because reading from theme metrics is slow +float g_fJudgePerfectZoomX, + g_fJudgePerfectZoomY, + g_fJudgeGreatZoomX, + g_fJudgeGreatZoomY, + g_fJudgeGoodZoomX, + g_fJudgeGoodZoomY, + g_fJudgeBooZoomX, + g_fJudgeBooZoomY, + g_fComboJudgeTweenSeconds; + // these two items are in the const float FRAME_JUDGE_AND_COMBO_Y = CENTER_Y; const float JUDGEMENT_Y_OFFSET = -26; @@ -39,6 +61,18 @@ const float HOLD_ARROW_NG_TIME = 0.18f; Player::Player() { + // Update theme metrics cache + g_fJudgePerfectZoomX = JUDGE_PERFECT_ZOOM_X; + g_fJudgePerfectZoomY = JUDGE_PERFECT_ZOOM_Y; + g_fJudgeGreatZoomX = JUDGE_GREAT_ZOOM_X; + g_fJudgeGreatZoomY = JUDGE_GREAT_ZOOM_Y; + g_fJudgeGoodZoomX = JUDGE_GOOD_ZOOM_X; + g_fJudgeGoodZoomY = JUDGE_GOOD_ZOOM_Y; + g_fJudgeBooZoomX = JUDGE_BOO_ZOOM_X; + g_fJudgeBooZoomY = JUDGE_BOO_ZOOM_Y; + g_fComboJudgeTweenSeconds = COMBO_JUDGE_TWEEN_SECONDS; + + m_PlayerNumber = PLAYER_INVALID; m_pLifeMeter = NULL; @@ -352,7 +386,7 @@ void Player::Step( int col ) if( GAMESTATE->m_bDemonstration || PREFSMAN->m_bAutoPlay ) score = TNS_PERFECT; - bDestroyedNote = score >= TNS_GOOD; + bDestroyedNote = (score >= TNS_GOOD); bool bRowDestroyed = true; @@ -418,20 +452,22 @@ void Player::OnRowDestroyed( int col, int iIndexThatWasSteppedOn ) m_Judgement.SetJudgement( score ); // zoom the judgement and combo like a heart beat - float fStartZoom; + float fStartZoomX, fStartZoomY; switch( score ) { - case TNS_PERFECT: fStartZoom = 1.3f; break; - case TNS_GREAT: fStartZoom = 1.2f; break; - case TNS_GOOD: fStartZoom = 1.1f; break; - case TNS_BOO: fStartZoom = 1.0f; break; + case TNS_PERFECT: fStartZoomX = g_fJudgePerfectZoomX; fStartZoomY = g_fJudgePerfectZoomY; break; + case TNS_GREAT: fStartZoomX = g_fJudgeGreatZoomX; fStartZoomY = g_fJudgeGreatZoomY; break; + case TNS_GOOD: fStartZoomX = g_fJudgeGoodZoomX; fStartZoomY = g_fJudgeGoodZoomY; break; + case TNS_BOO: fStartZoomX = g_fJudgeBooZoomX; fStartZoomY = g_fJudgeBooZoomY; break; } - m_frameJudgement.SetZoom( fStartZoom ); - m_frameJudgement.BeginTweening( 0.1f ); + m_frameJudgement.SetZoomX( fStartZoomX ); + m_frameJudgement.SetZoomY( fStartZoomY ); + m_frameJudgement.BeginTweening( g_fComboJudgeTweenSeconds ); m_frameJudgement.SetTweenZoom( 1 ); - m_frameCombo.SetZoom( fStartZoom ); - m_frameCombo.BeginTweening( 0.1f ); + m_frameCombo.SetZoomX( fStartZoomX ); + m_frameCombo.SetZoomY( fStartZoomY ); + m_frameCombo.BeginTweening( g_fComboJudgeTweenSeconds ); m_frameCombo.SetTweenZoom( 1 ); } diff --git a/stepmania/src/ScreenEvaluation.cpp b/stepmania/src/ScreenEvaluation.cpp index 6869700972..bcc239ce85 100644 --- a/stepmania/src/ScreenEvaluation.cpp +++ b/stepmania/src/ScreenEvaluation.cpp @@ -744,24 +744,27 @@ void ScreenEvaluation::TweenOnScreen() apActorsInBonusOrStageInfo[i]->SetTweenX( fOriginalX ); } - m_sprGradeFrame[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); - m_sprGradeFrame[p].SetTweenZoomY( 0 ); - - m_Grades[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); - m_Grades[p].SetTweenZoomY( 0 ); - - m_textOniPercentLarge[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); - m_textOniPercentLarge[p].SetTweenZoomY( 0 ); - - m_textOniPercentSmall[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); - m_textOniPercentSmall[p].SetTweenZoomY( 0 ); - - m_textNewRecord[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); - m_textNewRecord[p].SetTweenZoomY( 0 ); + CArray apActorsInGradeOrPercentFrame; + apActorsInGradeOrPercentFrame.Add( &m_sprBonusFrame[p] ); + apActorsInGradeOrPercentFrame.Add( &m_sprGradeFrame[p] ); + apActorsInGradeOrPercentFrame.Add( &m_Grades[p] ); + apActorsInGradeOrPercentFrame.Add( &m_sprPercentFrame[p] ); + apActorsInGradeOrPercentFrame.Add( &m_textOniPercentLarge[p] ); + apActorsInGradeOrPercentFrame.Add( &m_textOniPercentSmall[p] ); + apActorsInGradeOrPercentFrame.Add( &m_textNewRecord[p] ); + for( i=0; iGetZoomY(); + apActorsInGradeOrPercentFrame[i]->SetZoomY( 0 ); + apActorsInGradeOrPercentFrame[i]->BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); + apActorsInGradeOrPercentFrame[i]->SetTweenZoomY( fOriginalZoomY ); + } } + float fOriginalZoomY = m_textTryExtraStage.GetZoomY(); + m_textTryExtraStage.SetZoomY( 0 ); m_textTryExtraStage.BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); - m_textTryExtraStage.SetTweenZoomY( 0 ); + m_textTryExtraStage.SetTweenZoomY( fOriginalZoomY ); } void ScreenEvaluation::TweenOffScreen() @@ -821,22 +824,21 @@ void ScreenEvaluation::TweenOffScreen() apActorsInBonusOrStageInfo[i]->SetTweenZoomY( 0 ); } - m_sprGradeFrame[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); - m_sprGradeFrame[p].SetTweenZoomY( 0 ); - - m_Grades[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); - m_Grades[p].SetTweenZoomY( 0 ); - - m_textOniPercentLarge[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); - m_textOniPercentLarge[p].SetTweenZoomY( 0 ); - - m_textOniPercentSmall[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); - m_textOniPercentSmall[p].SetTweenZoomY( 0 ); - - m_textNewRecord[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); - m_textNewRecord[p].SetTweenZoomY( 0 ); + CArray apActorsInGradeOrPercentFrame; + apActorsInGradeOrPercentFrame.Add( &m_sprBonusFrame[p] ); + apActorsInGradeOrPercentFrame.Add( &m_sprGradeFrame[p] ); + apActorsInGradeOrPercentFrame.Add( &m_Grades[p] ); + apActorsInGradeOrPercentFrame.Add( &m_sprPercentFrame[p] ); + apActorsInGradeOrPercentFrame.Add( &m_textOniPercentLarge[p] ); + apActorsInGradeOrPercentFrame.Add( &m_textOniPercentSmall[p] ); + apActorsInGradeOrPercentFrame.Add( &m_textNewRecord[p] ); + for( i=0; iBeginTweening( MENU_ELEMENTS_TWEEN_TIME ); + apActorsInGradeOrPercentFrame[i]->SetTweenZoomY( 0 ); + } } - + m_textTryExtraStage.BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); m_textTryExtraStage.SetTweenZoomY( 0 ); } diff --git a/stepmania/src/ScreenEz2SelectStyle.cpp b/stepmania/src/ScreenEz2SelectStyle.cpp index 7d83a285b7..49fd36013a 100644 --- a/stepmania/src/ScreenEz2SelectStyle.cpp +++ b/stepmania/src/ScreenEz2SelectStyle.cpp @@ -340,11 +340,12 @@ void ScreenEz2SelectStyle::MenuStart( PlayerNumber p ) // GAMESTATE->m_bPlayersCanJoin = false; CString sCurStyleName = GAMESTATE->GetCurrentStyleDef()->m_szName; - if( 0==stricmp(sCurStyleName,"single") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment single") ); - else if( 0==stricmp(sCurStyleName,"versus") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment versus") ); - else if( 0==stricmp(sCurStyleName,"double") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment double") ); - else if( 0==stricmp(sCurStyleName,"couple") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment couple") ); - else if( 0==stricmp(sCurStyleName,"solo") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment solo") ); + sCurStyleName.MakeLower(); + if( -1!=sCurStyleName.Find("single") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment single") ); + else if( -1!=sCurStyleName.Find("versus") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment versus") ); + else if( -1!=sCurStyleName.Find("double") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment double") ); + else if( -1!=sCurStyleName.Find("couple") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment couple") ); + else if( -1!=sCurStyleName.Find("solo") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment solo") ); m_Menu.TweenOffScreenToMenu( SM_GoToNextScreen ); diff --git a/stepmania/src/ScreenGameplay.cpp b/stepmania/src/ScreenGameplay.cpp index 9567bada66..409a747427 100644 --- a/stepmania/src/ScreenGameplay.cpp +++ b/stepmania/src/ScreenGameplay.cpp @@ -196,6 +196,13 @@ ScreenGameplay::ScreenGameplay() { LOG->Trace( "ScreenGameplay::ScreenGameplay()" ); + for( int p=0; pStop(); GAMESTATE->ResetStageStatistics(); // clear values @@ -295,21 +302,7 @@ ScreenGameplay::ScreenGameplay() m_pLifeMeter[p]->Load( (PlayerNumber)p ); m_pLifeMeter[p]->SetXY( LIFE_X(p), LIFE_Y(p,bExtra) ); - this->AddSubActor( m_pLifeMeter[p] ); - - /* - Chris: EZ2 should change positions via Theme metrics - - if( GAMESTATE->m_CurGame == GAME_EZ2 ) - { - m_pScoreDisplay[p] = new ScoreDisplayNormal; - m_pScoreDisplay[p]->SetXY( SCORE_LOCALEZ2_X[p], SCORE_LOCALEZ2_Y[p] ); - m_pScoreDisplay[p]->SetZoom( 0.5f ); - m_pScoreDisplay[p]->SetDiffuseColor( PlayerToColor(p) ); - m_frameTop.AddSubActor( m_pScoreDisplay[p] ); - } - */ - + this->AddSubActor( m_pLifeMeter[p] ); } // TopFrame goes above LifeMeter @@ -330,7 +323,7 @@ ScreenGameplay::ScreenGameplay() m_textCourseSongNumber[p].TurnShadowOff(); m_textCourseSongNumber[p].SetXY( SONG_NUMBER_X(p), SONG_NUMBER_Y(p,bExtra) ); m_textCourseSongNumber[p].SetText( "" ); - m_textCourseSongNumber[p].SetDiffuseColor( D3DXCOLOR(0.8f,0.8f,1,1) ); // light blue + m_textCourseSongNumber[p].SetDiffuseColor( GAMESTATE->GetStageColor() ); // light blue } switch( GAMESTATE->m_PlayMode ) @@ -349,70 +342,36 @@ ScreenGameplay::ScreenGameplay() } - ////////////////////////////////// - // Add all Actors to m_frameBottom - ////////////////////////////////// + // + // Add all Actors in bottom frame + // m_sprBottomFrame.Load( THEME->GetPathTo("Graphics",bExtra?"gameplay extra bottom frame":"gameplay bottom frame") ); m_sprBottomFrame.SetXY( BOTTOM_FRAME_X, bExtra ? BOTTOM_FRAME_EXTRA_Y : BOTTOM_FRAME_Y ); this->AddSubActor( &m_sprBottomFrame ); - - /* - Chris: Change this position using theme metrics - - if( GAMESTATE->m_CurGame != GAME_EZ2 ) - { - m_sprBottomFrame.Load( THEME->GetPathTo(GRAPHIC_GAMEPLAY_BOTTOM_FRAME) ); - m_frameBottom.AddSubActor( &m_sprBottomFrame ); - m_frameBottom.SetXY( CENTER_X, SCREEN_BOTTOM - m_sprBottomFrame.GetZoomedHeight()/2 ); - } - */ - - for( p=0; pm_CurGame != GAME_EZ2 ) - { - */ - switch( GAMESTATE->m_PlayMode ) - { - case PLAY_MODE_ARCADE: - m_pScoreDisplay[p] = new ScoreDisplayNormal; - break; - case PLAY_MODE_ONI: - case PLAY_MODE_ENDLESS: - m_pScoreDisplay[p] = new ScoreDisplayOni; - break; - default: - ASSERT(0); - } - - m_pScoreDisplay[p]->Init( (PlayerNumber)p ); - m_pScoreDisplay[p]->SetXY( SCORE_X(p), SCORE_Y(p,bExtra) ); - m_pScoreDisplay[p]->SetZoom( 0.8f ); - m_pScoreDisplay[p]->SetDiffuseColor( PlayerToColor(p) ); - this->AddSubActor( m_pScoreDisplay[p] ); - /* - } - */ - - m_textPlayerOptions[p].LoadFromFont( THEME->GetPathTo("Fonts","normal") ); - if( !GAMESTATE->IsPlayerEnabled(PlayerNumber(p)) ) continue; - /* Chris: EZ2 should control this with theme metrics - - if( GAMESTATE->m_CurGame != GAME_EZ2 ) + switch( GAMESTATE->m_PlayMode ) { - */ - m_pScoreDisplay[p]->SetXY( SCORE_X(p), SCORE_Y(p,bExtra) ); - m_pScoreDisplay[p]->SetZoom( 0.8f ); - m_pScoreDisplay[p]->SetDiffuseColor( PlayerToColor(p) ); - this->AddSubActor( m_pScoreDisplay[p] ); - // } + case PLAY_MODE_ARCADE: + m_pScoreDisplay[p] = new ScoreDisplayNormal; + break; + case PLAY_MODE_ONI: + case PLAY_MODE_ENDLESS: + m_pScoreDisplay[p] = new ScoreDisplayOni; + break; + default: + ASSERT(0); + } + + m_pScoreDisplay[p]->Init( (PlayerNumber)p ); + m_pScoreDisplay[p]->SetXY( SCORE_X(p), SCORE_Y(p,bExtra) ); + m_pScoreDisplay[p]->SetZoom( 0.8f ); + m_pScoreDisplay[p]->SetDiffuseColor( PlayerToColor(p) ); + this->AddSubActor( m_pScoreDisplay[p] ); m_textPlayerOptions[p].LoadFromFont( THEME->GetPathTo("Fonts","normal") ); m_textPlayerOptions[p].TurnShadowOff(); @@ -421,7 +380,6 @@ ScreenGameplay::ScreenGameplay() m_textPlayerOptions[p].SetDiffuseColor( D3DXCOLOR(1,1,1,1) ); m_textPlayerOptions[p].SetText( GAMESTATE->m_PlayerOptions[p].GetString() ); this->AddSubActor( &m_textPlayerOptions[p] ); - //} } m_textSongOptions.LoadFromFont( THEME->GetPathTo("Fonts","normal") ); @@ -441,30 +399,6 @@ ScreenGameplay::ScreenGameplay() if( !GAMESTATE->IsPlayerEnabled(PlayerNumber(p)) ) continue; -// CONFLICT RESOLUTION: -// BY ANDY -// <<<<<<< ScreenGameplay.cpp -// ======= -// YOURS: -/* - float fDifficultyY = DIFFICULTY_Y[p]; - if( GAMESTATE->m_PlayerOptions[p].m_bReverseScroll ) - fDifficultyY = SCREEN_HEIGHT - DIFFICULTY_Y[p] -10; // HACK: move difficulty banner up 10 if reverse - m_DifficultyBanner[p].SetXY( DIFFICULTY_X[p], fDifficultyY ); - this->AddSubActor( &m_DifficultyBanner[p] ); -*/ -//>>>>>>> 1.32 MINE - /* - if( GAMESTATE->m_CurGame != GAME_EZ2 ) - { - float fDifficultyY = DIFFICULTY_Y[p]; - if( GAMESTATE->m_PlayerOptions[p].m_bReverseScroll ) - fDifficultyY = SCREEN_HEIGHT - DIFFICULTY_Y[p]; - m_DifficultyBanner[p].SetXY( DIFFICULTY_X[p], fDifficultyY ); - this->AddSubActor( &m_DifficultyBanner[p] ); - } -*/ -// HOW I THINK IT SHOULD BE FIXED: m_DifficultyBanner[p].SetXY( DIFFICULTY_X(p), DIFFICULTY_Y(p,bReverse[p],bExtra) ); this->AddSubActor( &m_DifficultyBanner[p] ); } @@ -540,36 +474,37 @@ ScreenGameplay::ScreenGameplay() if( !GAMESTATE->m_bDemonstration ) // don't load sounds if just playing demonstration { - m_soundFail.Load( THEME->GetPathTo("Sounds","gameplay failed") ); - m_soundOniDie.Load( THEME->GetPathTo("Sounds","gameplay oni die") ); - m_announcerReady.Load( ANNOUNCER->GetPathTo("gameplay ready") ); + m_soundFail.Load( THEME->GetPathTo("Sounds","gameplay failed") ); + m_soundOniDie.Load( THEME->GetPathTo("Sounds","gameplay oni die") ); + m_announcerReady.Load( ANNOUNCER->GetPathTo("gameplay ready") ); if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() ) m_announcerHereWeGo.Load( ANNOUNCER->GetPathTo("gameplay here we go extra") ); else if( GAMESTATE->IsFinalStage() ) m_announcerHereWeGo.Load( ANNOUNCER->GetPathTo("gameplay here we go final") ); else m_announcerHereWeGo.Load( ANNOUNCER->GetPathTo("gameplay here we go normal") ); - m_announcerDanger.Load( ANNOUNCER->GetPathTo("gameplay comment danger") ); - m_announcerGood.Load( ANNOUNCER->GetPathTo("gameplay comment goood") ); - m_announcerHot.Load( ANNOUNCER->GetPathTo("gameplay comment hot") ); + m_announcerDanger.Load( ANNOUNCER->GetPathTo("gameplay comment danger") ); + m_announcerGood.Load( ANNOUNCER->GetPathTo("gameplay comment good") ); + m_announcerHot.Load( ANNOUNCER->GetPathTo("gameplay comment hot") ); - m_announcer100Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 100 combo") ); - m_announcer200Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 200 combo") ); - m_announcer300Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 300 combo") ); - m_announcer400Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 400 combo") ); - m_announcer500Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 500 combo") ); - m_announcer600Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 600 combo") ); - m_announcer700Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 700 combo") ); - m_announcer800Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 800 combo") ); - m_announcer900Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 900 combo") ); - m_announcer1000Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 1000 combo") ); - m_announcerComboStopped.Load( ANNOUNCER->GetPathTo("gameplay comment combo stopped") ); + m_announcer100Combo.Load( ANNOUNCER->GetPathTo("gameplay 100 combo") ); + m_announcer200Combo.Load( ANNOUNCER->GetPathTo("gameplay 200 combo") ); + m_announcer300Combo.Load( ANNOUNCER->GetPathTo("gameplay 300 combo") ); + m_announcer400Combo.Load( ANNOUNCER->GetPathTo("gameplay 400 combo") ); + m_announcer500Combo.Load( ANNOUNCER->GetPathTo("gameplay 500 combo") ); + m_announcer600Combo.Load( ANNOUNCER->GetPathTo("gameplay 600 combo") ); + m_announcer700Combo.Load( ANNOUNCER->GetPathTo("gameplay 700 combo") ); + m_announcer800Combo.Load( ANNOUNCER->GetPathTo("gameplay 800 combo") ); + m_announcer900Combo.Load( ANNOUNCER->GetPathTo("gameplay 900 combo") ); + m_announcer1000Combo.Load( ANNOUNCER->GetPathTo("gameplay 1000 combo") ); + m_announcerComboStopped.Load( ANNOUNCER->GetPathTo("gameplay combo stopped") ); } m_iRowLastCrossed = -1; m_soundAssistTick.Load( THEME->GetPathTo("Sounds","gameplay assist tick") ); + TweenOnScreen(); LoadNextSong( true ); @@ -594,8 +529,8 @@ ScreenGameplay::~ScreenGameplay() for( int p=0; p GAMESTATE->m_pCurSong->m_fLastBeat+4 && !m_soundMusic.IsPlaying() ) + if( fSongBeat > GAMESTATE->m_pCurSong->m_fLastBeat+2 && !m_soundMusic.IsPlaying() ) { GAMESTATE->m_fSongBeat = 0; m_soundMusic.Stop(); @@ -898,7 +833,6 @@ void ScreenGameplay::Update( float fDeltaTime ) if( !GAMESTATE->IsPlayerEnabled( (PlayerNumber)p ) ) continue; // skip - m_Player[p].CrossedRow( r ); bAnyoneHasANote |= m_Player[p].IsThereANoteAtRow( r ); break; // this will only play the tick for the first player that is joined } @@ -1478,7 +1412,55 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) void ScreenGameplay::TweenOnScreen() { + int i, p; + CArray apActorsInTopFrame; + apActorsInTopFrame.Add( &m_sprTopFrame ); + for( p=0; pGetY(); + apActorsInTopFrame[i]->SetY( fOriginalY-100 ); + if( !GAMESTATE->m_bDemonstration ) + apActorsInTopFrame[i]->BeginTweeningQueued( 0.5f ); // sleep + apActorsInTopFrame[i]->BeginTweeningQueued( 1 ); + apActorsInTopFrame[i]->SetTweenY( fOriginalY ); + } + + + CArray apActorsInBottomFrame; + apActorsInBottomFrame.Add( &m_sprBottomFrame ); + for( p=0; pIsPlayerEnabled(p) ) + continue; + apActorsInBottomFrame.Add( m_pScoreDisplay[p] ); + apActorsInBottomFrame.Add( &m_textPlayerOptions[p] ); + } + apActorsInBottomFrame.Add( &m_textSongOptions ); + for( i=0; iGetY(); + apActorsInBottomFrame[i]->SetY( fOriginalY+100 ); + if( !GAMESTATE->m_bDemonstration ) + apActorsInBottomFrame[i]->BeginTweeningQueued( 0.5f ); // sleep + apActorsInBottomFrame[i]->BeginTweeningQueued( 1 ); + apActorsInBottomFrame[i]->SetTweenY( fOriginalY ); + } + + for( p=0; pm_bDemonstration ) + m_DifficultyBanner[p].BeginTweeningQueued( 0.5f ); // sleep + m_DifficultyBanner[p].BeginTweeningQueued( 1 ); + m_DifficultyBanner[p].SetTweenX( fOriginalX ); + } } void ScreenGameplay::TweenOffScreen() diff --git a/stepmania/src/ScreenHowToPlay.cpp b/stepmania/src/ScreenHowToPlay.cpp index 6c67da0a08..8ef29bf0a7 100644 --- a/stepmania/src/ScreenHowToPlay.cpp +++ b/stepmania/src/ScreenHowToPlay.cpp @@ -26,7 +26,8 @@ #define NEXT_SCREEN_ONI THEME->GetMetric("ScreenHowToPlay","NextScreenOni") -const ScreenMessage SM_GoToNextScreen = ScreenMessage(SM_User + 1); +const ScreenMessage SM_GoToPrevScreen = ScreenMessage(SM_User+1); +const ScreenMessage SM_GoToNextScreen = ScreenMessage(SM_User+2); ScreenHowToPlay::ScreenHowToPlay() @@ -102,6 +103,9 @@ void ScreenHowToPlay::HandleScreenMessage( const ScreenMessage SM ) case SM_MenuTimer: this->MenuStart(PLAYER_1); break; + case SM_GoToPrevScreen: + SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); + break; case SM_GoToNextScreen: switch( GAMESTATE->m_PlayMode ) { @@ -121,6 +125,7 @@ void ScreenHowToPlay::HandleScreenMessage( const ScreenMessage SM ) void ScreenHowToPlay::MenuBack( PlayerNumber p ) { + m_Menu.TweenOffScreenToBlack( SM_GoToPrevScreen, true ); } void ScreenHowToPlay::MenuStart( PlayerNumber p ) diff --git a/stepmania/src/ScreenSelectCourse.cpp b/stepmania/src/ScreenSelectCourse.cpp index 7a86d51ae8..87efee1032 100644 --- a/stepmania/src/ScreenSelectCourse.cpp +++ b/stepmania/src/ScreenSelectCourse.cpp @@ -96,10 +96,12 @@ ScreenSelectCourse::ScreenSelectCourse() m_textNumStages.LoadFromFont( THEME->GetPathTo("Fonts","header1") ); m_textNumStages.SetXY( STAGES_X, STAGES_Y ); + m_textNumStages.TurnShadowOff(); this->AddSubActor( &m_textNumStages ); m_textTime.LoadFromFont( THEME->GetPathTo("Fonts","header1") ); m_textTime.SetXY( TIME_X, TIME_Y ); + m_textTime.TurnShadowOff(); this->AddSubActor( &m_textTime ); m_CourseContentsFrame.SetXY( CONTENTS_X, CONTENTS_Y ); diff --git a/stepmania/src/ScreenSelectDifficulty.cpp b/stepmania/src/ScreenSelectDifficulty.cpp index 0b56749b7c..072ae40580 100644 --- a/stepmania/src/ScreenSelectDifficulty.cpp +++ b/stepmania/src/ScreenSelectDifficulty.cpp @@ -50,7 +50,8 @@ const float LOCK_INPUT_TIME = 0.30f; // lock input while waiting for tweening to #define CURSOR_SHADOW_LENGTH_Y THEME->GetMetricF("ScreenSelectDifficulty","CursorShadowLengthY") #define HELP_TEXT THEME->GetMetric("ScreenSelectDifficulty","HelpText") #define TIMER_SECONDS THEME->GetMetricI("ScreenSelectDifficulty","TimerSeconds") -#define NEXT_SCREEN THEME->GetMetric("ScreenSelectDifficulty","NextScreen") +#define NEXT_SCREEN_ARCADE THEME->GetMetric("ScreenSelectDifficulty","NextScreenArcade") +#define NEXT_SCREEN_ONI THEME->GetMetric("ScreenSelectDifficulty","NextScreenOni") float MORE_X( int iIndex ) { @@ -277,9 +278,9 @@ void ScreenSelectDifficulty::HandleScreenMessage( const ScreenMessage SM ) for( int p=0; pm_PreferredDifficultyClass[p] = CLASS_EASY; break; + case 0: GAMESTATE->m_PreferredDifficultyClass[p] = CLASS_EASY; break; case 1: GAMESTATE->m_PreferredDifficultyClass[p] = CLASS_MEDIUM; break; - case 2: GAMESTATE->m_PreferredDifficultyClass[p] = CLASS_HARD; break; + case 2: GAMESTATE->m_PreferredDifficultyClass[p] = CLASS_HARD; break; } } @@ -300,12 +301,18 @@ void ScreenSelectDifficulty::HandleScreenMessage( const ScreenMessage SM ) ASSERT(0); // bad selection } - if(GAMESTATE->m_PlayMode == PLAY_MODE_ONI || - GAMESTATE->m_PlayMode == PLAY_MODE_ENDLESS) - SCREENMAN->SetNewScreen( "ScreenSelectCourse" ); - else - SCREENMAN->SetNewScreen( "ScreenSelectGroup" ); - + switch( GAMESTATE->m_PlayMode ) + { + case PLAY_MODE_ARCADE: + SCREENMAN->SetNewScreen( NEXT_SCREEN_ARCADE ); + break; + case PLAY_MODE_ONI: + case PLAY_MODE_ENDLESS: + SCREENMAN->SetNewScreen( NEXT_SCREEN_ONI ); + break; + default: + ASSERT(0); + } break; case SM_StartTweeningOffScreen: TweenOffScreen(); diff --git a/stepmania/src/ScreenSelectGroup.cpp b/stepmania/src/ScreenSelectGroup.cpp index 40af1d1ff4..18af6b86f0 100644 --- a/stepmania/src/ScreenSelectGroup.cpp +++ b/stepmania/src/ScreenSelectGroup.cpp @@ -37,8 +37,7 @@ #define CONTENTS_Y THEME->GetMetricF("ScreenSelectGroup","ContentsY") #define HELP_TEXT THEME->GetMetric("ScreenSelectGroup","HelpText") #define TIMER_SECONDS THEME->GetMetricI("ScreenSelectGroup","TimerSeconds") -#define NEXT_SCREEN_ARCADE THEME->GetMetric("ScreenSelectGroup","NextScreenArcade") -#define NEXT_SCREEN_ONI THEME->GetMetric("ScreenSelectGroup","NextScreenOni") +#define NEXT_SCREEN THEME->GetMetric("ScreenSelectGroup","NextScreen") const ScreenMessage SM_GoToPrevScreen = ScreenMessage(SM_User + 1); @@ -206,18 +205,7 @@ void ScreenSelectGroup::HandleScreenMessage( const ScreenMessage SM ) SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); break; case SM_GoToNextScreen: - switch( GAMESTATE->m_PlayMode ) - { - case PLAY_MODE_ARCADE: - SCREENMAN->SetNewScreen( NEXT_SCREEN_ARCADE ); - break; - case PLAY_MODE_ONI: - case PLAY_MODE_ENDLESS: - SCREENMAN->SetNewScreen( NEXT_SCREEN_ONI ); - break; - default: - ASSERT(0); - } + SCREENMAN->SetNewScreen( NEXT_SCREEN ); break; case SM_StartFadingOut: m_Menu.TweenOffScreenToMenu( SM_GoToNextScreen ); diff --git a/stepmania/src/ScreenSelectMusic.cpp b/stepmania/src/ScreenSelectMusic.cpp index b5f545ba00..eeb0229e17 100644 --- a/stepmania/src/ScreenSelectMusic.cpp +++ b/stepmania/src/ScreenSelectMusic.cpp @@ -69,6 +69,7 @@ #define SONG_OPTIONS_Y THEME->GetMetricF("ScreenSelectMusic","SongOptionsY") #define HELP_TEXT THEME->GetMetric("ScreenSelectMusic","HelpText") #define TIMER_SECONDS THEME->GetMetricI("ScreenSelectMusic","TimerSeconds") +#define SCORE_CONNECTED_TO_MUSIC_WHEEL THEME->GetMetricB("ScreenSelectMusic","ScoreConnectedToMusicWheel") const float TWEEN_TIME = 0.5f; @@ -290,16 +291,20 @@ void ScreenSelectMusic::DrawPrimitives() void ScreenSelectMusic::TweenOnScreen() { float fOriginalZoomY; - - Actor* pActorsInGroupInfoFrame[] = { &m_sprBannerFrame, &m_Banner, &m_BPMDisplay, &m_textStage, &m_sprCDTitle }; - const int iNumActorsInGroupInfoFrame = sizeof(pActorsInGroupInfoFrame) / sizeof(Actor*); int i; - for( i=0; i apActorsInGroupInfoFrame; + apActorsInGroupInfoFrame.Add( &m_sprBannerFrame ); + apActorsInGroupInfoFrame.Add( &m_Banner ); + apActorsInGroupInfoFrame.Add( &m_BPMDisplay ); + apActorsInGroupInfoFrame.Add( &m_textStage ); + apActorsInGroupInfoFrame.Add( &m_sprCDTitle ); + for( i=0; iGetX(); - pActorsInGroupInfoFrame[i]->SetX( fOriginalX-400 ); - pActorsInGroupInfoFrame[i]->BeginTweening( TWEEN_TIME, TWEEN_BOUNCE_END ); - pActorsInGroupInfoFrame[i]->SetTweenX( fOriginalX ); + float fOriginalX = apActorsInGroupInfoFrame[i]->GetX(); + apActorsInGroupInfoFrame[i]->SetX( fOriginalX-400 ); + apActorsInGroupInfoFrame[i]->BeginTweening( TWEEN_TIME, TWEEN_BOUNCE_END ); + apActorsInGroupInfoFrame[i]->SetTweenX( fOriginalX ); } fOriginalZoomY = m_sprDifficultyFrame.GetZoomY(); @@ -335,14 +340,18 @@ void ScreenSelectMusic::TweenOnScreen() m_MusicSortDisplay.BeginTweening( TWEEN_TIME ); m_MusicSortDisplay.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,1) ); - Actor* pActorsInScore[] = { &m_sprHighScoreFrame[0], &m_sprHighScoreFrame[1], &m_HighScore[0], &m_HighScore[1] }; - const int iNumActorsInScore = sizeof(pActorsInScore) / sizeof(Actor*); - for( i=0; i apActorsInScore; + for( int p=0; pGetX(); - pActorsInScore[i]->SetX( fOriginalX+400 ); - pActorsInScore[i]->BeginTweening( TWEEN_TIME, TWEEN_BIAS_END ); - pActorsInScore[i]->SetTweenX( fOriginalX ); + apActorsInScore.Add( &m_sprHighScoreFrame[p] ); + apActorsInScore.Add( &m_HighScore[p] ); + } + for( i=0; iGetX(); + apActorsInScore[i]->SetX( SCORE_CONNECTED_TO_MUSIC_WHEEL ? fOriginalX+400 : fOriginalX-400 ); + apActorsInScore[i]->BeginTweening( TWEEN_TIME, TWEEN_BIAS_END ); + apActorsInScore[i]->SetTweenX( fOriginalX ); } m_MusicWheel.TweenOnScreen(); @@ -350,13 +359,18 @@ void ScreenSelectMusic::TweenOnScreen() void ScreenSelectMusic::TweenOffScreen() { - Actor* pActorsInGroupInfoFrame[] = { &m_sprBannerFrame, &m_Banner, &m_BPMDisplay, &m_textStage, &m_sprCDTitle }; - const int iNumActorsInGroupInfoFrame = sizeof(pActorsInGroupInfoFrame) / sizeof(Actor*); int i; - for( i=0; i apActorsInGroupInfoFrame; + apActorsInGroupInfoFrame.Add( &m_sprBannerFrame ); + apActorsInGroupInfoFrame.Add( &m_Banner ); + apActorsInGroupInfoFrame.Add( &m_BPMDisplay ); + apActorsInGroupInfoFrame.Add( &m_textStage ); + apActorsInGroupInfoFrame.Add( &m_sprCDTitle ); + for( i=0; iBeginTweeningQueued( TWEEN_TIME, TWEEN_BOUNCE_BEGIN ); - pActorsInGroupInfoFrame[i]->SetTweenX( pActorsInGroupInfoFrame[i]->GetX()-400 ); + apActorsInGroupInfoFrame[i]->BeginTweeningQueued( TWEEN_TIME, TWEEN_BOUNCE_BEGIN ); + apActorsInGroupInfoFrame[i]->SetTweenX( apActorsInGroupInfoFrame[i]->GetX()-400 ); } m_sprDifficultyFrame.BeginTweening( TWEEN_TIME ); @@ -386,17 +400,45 @@ void ScreenSelectMusic::TweenOffScreen() m_MusicSortDisplay.BeginTweening( TWEEN_TIME ); m_MusicSortDisplay.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) ); - Actor* pActorsInScore[] = { &m_sprHighScoreFrame[0], &m_sprHighScoreFrame[1], &m_HighScore[0], &m_HighScore[1] }; - const int iNumActorsInScore = sizeof(pActorsInScore) / sizeof(Actor*); - for( i=0; i apActorsInScore; + for( int p=0; pBeginTweening( TWEEN_TIME, TWEEN_BIAS_BEGIN ); - pActorsInScore[i]->SetTweenX( pActorsInScore[i]->GetX()+400 ); + apActorsInScore.Add( &m_sprHighScoreFrame[p] ); + apActorsInScore.Add( &m_HighScore[p] ); + } + for( i=0; iBeginTweening( TWEEN_TIME, TWEEN_BIAS_END ); + apActorsInScore[i]->SetTweenX( SCORE_CONNECTED_TO_MUSIC_WHEEL ? apActorsInScore[i]->GetX()+400 : apActorsInScore[i]->GetX()-400 ); } m_MusicWheel.TweenOffScreen(); } +void ScreenSelectMusic::TweenScoreOnAndOffAfterChangeSort() +{ + if( !SCORE_CONNECTED_TO_MUSIC_WHEEL ) + return; // do nothing + + CArray apActorsInScore; + for( int p=0; pBeginTweening( TWEEN_TIME, TWEEN_BIAS_END ); // tween off screen + apActorsInScore[i]->SetTweenX( fOriginalX+400 ); + + apActorsInScore[i]->BeginTweeningQueued( 0.6f ); // sleep + + apActorsInScore[i]->BeginTweeningQueued( 1, TWEEN_BIAS_BEGIN ); // tween back on screen + apActorsInScore[i]->SetTweenX( fOriginalX ); + } +} + void ScreenSelectMusic::Update( float fDeltaTime ) { Screen::Update( fDeltaTime ); @@ -493,10 +535,11 @@ void ScreenSelectMusic::Input( const DeviceInput& DeviceI, const InputEventType if( m_MusicWheel.NextSort() ) { MUSIC->Stop(); - // tween music sort off screen - //m_MusicSortDisplay.SetEffectNone(); + m_MusicSortDisplay.BeginTweening( 0.3f ); m_MusicSortDisplay.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) ); + + TweenScoreOnAndOffAfterChangeSort(); } return; } @@ -631,10 +674,10 @@ void ScreenSelectMusic::MenuStart( PlayerNumber p ) { MUSIC->Stop(); - // tween music sort off screen - //m_MusicSortDisplay.SetEffectNone(); m_MusicSortDisplay.BeginTweening( 0.3f ); m_MusicSortDisplay.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) ); + + TweenScoreOnAndOffAfterChangeSort(); } } return; diff --git a/stepmania/src/ScreenSelectMusic.h b/stepmania/src/ScreenSelectMusic.h index 3d0bab8d3b..608298f461 100644 --- a/stepmania/src/ScreenSelectMusic.h +++ b/stepmania/src/ScreenSelectMusic.h @@ -36,15 +36,16 @@ public: virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); virtual void HandleScreenMessage( const ScreenMessage SM ); - void TweenOnScreen(); - void TweenOffScreen(); - - void MenuLeft( PlayerNumber p, const InputEventType type ); - void MenuRight( PlayerNumber p, const InputEventType type ); - void MenuStart( PlayerNumber p ); - void MenuBack( PlayerNumber p ); + virtual void MenuLeft( PlayerNumber p, const InputEventType type ); + virtual void MenuRight( PlayerNumber p, const InputEventType type ); + virtual void MenuStart( PlayerNumber p ); + virtual void MenuBack( PlayerNumber p ); protected: + void TweenOnScreen(); + void TweenOffScreen(); + void TweenScoreOnAndOffAfterChangeSort(); + void EasierDifficulty( PlayerNumber p ); void HarderDifficulty( PlayerNumber p ); diff --git a/stepmania/src/ScreenSelectStyle.cpp b/stepmania/src/ScreenSelectStyle.cpp index a1ac373171..77dd3be9f4 100644 --- a/stepmania/src/ScreenSelectStyle.cpp +++ b/stepmania/src/ScreenSelectStyle.cpp @@ -244,11 +244,12 @@ void ScreenSelectStyle::MenuStart( PlayerNumber p ) GAMESTATE->m_CurStyle = GetSelectedStyle(); CString sCurStyleName = GAMESTATE->GetCurrentStyleDef()->m_szName; - if( 0==stricmp(sCurStyleName,"single") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment single") ); - else if( 0==stricmp(sCurStyleName,"versus") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment versus") ); - else if( 0==stricmp(sCurStyleName,"double") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment double") ); - else if( 0==stricmp(sCurStyleName,"couple") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment couple") ); - else if( 0==stricmp(sCurStyleName,"solo") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment solo") ); + sCurStyleName.MakeLower(); + if( -1!=sCurStyleName.Find("single") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment single") ); + else if( -1!=sCurStyleName.Find("versus") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment versus") ); + else if( -1!=sCurStyleName.Find("double") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment double") ); + else if( -1!=sCurStyleName.Find("couple") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment couple") ); + else if( -1!=sCurStyleName.Find("solo") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment solo") ); m_Menu.TweenOffScreenToMenu( SM_GoToNextScreen ); diff --git a/stepmania/src/ScreenSelectStyle5th.cpp b/stepmania/src/ScreenSelectStyle5th.cpp index e6958f24ce..d025d13457 100644 --- a/stepmania/src/ScreenSelectStyle5th.cpp +++ b/stepmania/src/ScreenSelectStyle5th.cpp @@ -273,11 +273,12 @@ void ScreenSelectStyle5th::MenuStart( PlayerNumber p ) GAMESTATE->m_MasterPlayerNumber = p; CString sCurStyleName = GAMESTATE->GetCurrentStyleDef()->m_szName; - if( 0==stricmp(sCurStyleName,"single") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment single") ); - else if( 0==stricmp(sCurStyleName,"versus") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment versus") ); - else if( 0==stricmp(sCurStyleName,"double") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment double") ); - else if( 0==stricmp(sCurStyleName,"couple") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment couple") ); - else if( 0==stricmp(sCurStyleName,"solo") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment solo") ); + sCurStyleName.MakeLower(); + if( -1!=sCurStyleName.Find("single") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment single") ); + else if( -1!=sCurStyleName.Find("versus") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment versus") ); + else if( -1!=sCurStyleName.Find("double") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment double") ); + else if( -1!=sCurStyleName.Find("couple") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment couple") ); + else if( -1!=sCurStyleName.Find("solo") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment solo") ); this->ClearMessageQueue(); diff --git a/stepmania/src/ScreenStage.cpp b/stepmania/src/ScreenStage.cpp index 24f17dafb5..e1d155a1bb 100644 --- a/stepmania/src/ScreenStage.cpp +++ b/stepmania/src/ScreenStage.cpp @@ -54,32 +54,11 @@ enum StageMode ScreenStage::ScreenStage() { - g_StageType = (StageType)STAGE_TYPE; - MUSIC->Stop(); - // - // Init common graphics - // - for( int i=0; i<4; i++ ) - { - m_sprNumbers[i].Load( THEME->GetPathTo("Graphics","stage numbers") ); - m_sprNumbers[i].StopAnimating(); - } - m_sprStage.Load( THEME->GetPathTo("Graphics","stage stage") ); // we may load a different graphic into here later - const float fStageHeight = m_sprStage.GetUnzoomedHeight(); + g_StageType = (StageType)STAGE_TYPE; - const float fStageOffScreenY = CENTER_Y+fStageHeight; - m_quadMask.SetDiffuseColor( D3DXCOLOR(0,0,0,0) ); - m_quadMask.StretchTo( CRect(SCREEN_LEFT, roundf(fStageOffScreenY-fStageHeight/2), SCREEN_RIGHT, roundf(fStageOffScreenY+fStageHeight/2)) ); - m_quadMask.SetZ( -1 ); // important: fill Z buffer with values that will cause subsequent draws to fail the Z test - - m_frameStage.SetXY( CENTER_X, fStageOffScreenY ); - m_frameStage.BeginTweening(0.8f, Actor::TWEEN_BIAS_BEGIN ); - m_frameStage.SetTweenY( CENTER_Y ); - - StageMode stage_mode; if( GAMESTATE->m_PlayMode == PLAY_MODE_ONI ) stage_mode = MODE_ONI; else if( GAMESTATE->m_PlayMode == PLAY_MODE_ENDLESS ) stage_mode = MODE_ENDLESS; @@ -117,28 +96,22 @@ ScreenStage::ScreenStage() } - // Andy - - // Is all this stuff only supposed to be initializing in MODE_NORMAL? - // The final stage screens look goofy in TYPE_PUMP and TYPE_EZ2 because of this. - // I'm going to make changes, but feel free to correct anything I good up. - // - Chris - int ez2Final=0; // if we're 0 it's not a final stage. if we're 1 it is. - // why do this? Ez2dancer uses NORMAL for it's final stage but just re-arranges - // the elements. so the following takes us into NORMAL and just re-arranges stuff - // the ez2Final is so that when we're in normal we can go and see if we're really - // FINAL or not. at the end of normal, if we WERE FINAL, we set it back to final - // hacky or what? =) - if( g_StageType == STAGE_TYPE_EZ2 && stage_mode == MODE_FINAL ) + // + // Init common graphics + // + this->AddSubActor( &m_sprSongBackground ); // add background first so it draws bottom-most + this->AddSubActor( &m_quadMask ); // add quad mask before stage so that it will block out the stage sprites + this->AddSubActor( &m_frameStage ); + + for( int i=0; i<4; i++ ) { - for( int i=0; i<4; i++ ) - { - m_sprNumbers[i].Load( THEME->GetPathTo("Graphics","stage numbers final") ); - m_sprNumbers[i].StopAnimating(); - } - ez2Final=1; - stage_mode = MODE_NORMAL; + m_sprNumbers[i].Load( THEME->GetPathTo("Graphics","stage numbers") ); + m_sprNumbers[i].StopAnimating(); } + m_sprStage.Load( THEME->GetPathTo("Graphics","stage stage") ); // we may load a different graphic into here later + + switch( stage_mode ) { @@ -186,259 +159,9 @@ ScreenStage::ScreenStage() } m_sprStage.SetX( fStageCenterX ); - ///////////////////////// - // EZ2 TYPE DEFINITION // - ///////////////////////// - - if ( g_StageType == STAGE_TYPE_EZ2) // Initialize and manipulate existing graphics for Ez2dancer Screen Type - { - for( i=0; iGetPathTo("Graphics","stage elements") ); - m_sprbg[i].StopAnimating(); - m_sprbg[i].SetState( i+bg_modeoffset ); - } - if (ez2Final == 1) - { - m_sprbgxtra.Load( THEME->GetPathTo("Graphics","stage elements") ); - m_sprbgxtra.StopAnimating(); - m_sprbgxtra.SetState( bg_modeoffset ); - m_sprbgxtra.SetXY( fStageCenterX-30, 0+180); - m_sprbgxtra.SetHeight( 30 ); - m_sprbgxtra.SetWidth( SCREEN_WIDTH + 50 ); - m_sprbgxtra.SetRotation( -20 ); - m_sprbgxtra.BeginTweening(0.3f); - m_sprbgxtra.SetTweenRotationZ( 0 ); - } - - - m_sprbg[0].SetXY( fStageCenterX-30, 0+150); - if (ez2Final == 1) - m_sprbg[0].SetXY( fStageCenterX-30, 0-160); - m_sprbg[0].SetHeight( 100 ); - if (ez2Final == 1) - m_sprbg[0].SetHeight( 30 ); - m_sprbg[0].SetWidth( SCREEN_WIDTH + 50 ); - m_sprbg[0].SetRotation( -20 ); - m_sprbg[0].BeginTweening(0.3f); - m_sprbg[0].SetTweenRotationZ( 0 ); - - m_sprbg[1].SetXY( fStageCenterX-(SCREEN_WIDTH/2)-20, 0+element_y_offsets); - m_sprbg[1].SetHeight( SCREEN_HEIGHT - 140 ); - m_sprbg[1].SetWidth( 130 ); - m_sprbg[1].SetRotation( -20 ); - m_sprbg[1].BeginTweening(0.3f); - m_sprbg[1].SetTweenRotationZ( 0 ); - - m_sprbg[2].SetXY( fStageCenterX+430, 0+element_y_offsets); - m_sprbg[2].SetHeight( SCREEN_HEIGHT - 140 ); - m_sprbg[2].SetWidth( SCREEN_WIDTH + 50 ); - m_sprbg[2].SetRotation( -20 ); - m_sprbg[2].BeginTweening(0.3f); - m_sprbg[2].SetTweenX( fStageCenterX - 30 ); - m_sprbg[2].SetTweenRotationZ( 0 ); - - for (i=3; i>=0; i--) // work backwards as we wanna add em in reverse - { - m_frameStage.AddSubActor( &m_sprbg[i] ); - } - if (ez2Final == 1) - { - m_frameStage.AddSubActor( &m_sprbgxtra ); - } - - // scroll in the name of the game (ez2dancer ukmove) across the top of the screen - - for (i=0; i<2; i++) // specify the font file. - { - m_ez2ukm[i].LoadFromFont( THEME->GetPathTo("Fonts","stage") ); - m_ez2ukm[i].TurnShadowOff(); - m_stagedesc[i].LoadFromFont( THEME->GetPathTo("Fonts","stage") ); - m_stagedesc[i].TurnShadowOff(); - } - - m_ez2ukm[0].SetXY( fStageCenterX-400, 0-220 ); // set the intiial UKMOVE positions - m_ez2ukm[1].SetXY( fStageCenterX+400, 0+220 ); - m_stagedesc[0].SetXY( fStageCenterX-400, 0-150+element_y_offsets ); // set the intiial desc positions - m_stagedesc[1].SetXY( fStageCenterX+400, 0+70+element_y_offsets ); - - if (ez2Final == 1) - { - m_stagedesc[1].SetY( 140.0f ); - } - - for (i=0; i<2; i++) // initialize the UK MOVE text and positions - { - m_ez2ukm[i].SetText( "STEPMANIA EZ2 MOVE" ); - m_ez2ukm[i].SetDiffuseColor( D3DXCOLOR(1,1,1,1) ); - m_ez2ukm[i].BeginTweening(0.5f); - if (ez2Final == 1) - { - m_stagedesc[i].SetText( "FINAL FINAL FINAL FINAL FINAL FINAL FINAL FINAL FINAL FINAL" ); - m_stagedesc[i].SetDiffuseColor( D3DXCOLOR(1.0f/225.0f*227.0f,1.0f/225.0f*228.0f,1/225.0f*255.0f,1) ); - } - else - { - m_stagedesc[i].SetText( "NEXT NEXT NEXT NEXT NEXT NEXT NEXT NEXT NEXT NEXT NEXT" ); - m_stagedesc[i].SetDiffuseColor( D3DXCOLOR(1.0f/225.0f*166.0f,1.0f/225.0f*83.0f,1/225.0f*16.0f,1) ); - } - m_stagedesc[i].BeginTweening(0.5f); - - } - - m_ez2ukm[0].SetTweenX(fStageCenterX+90); // set their new locations - m_ez2ukm[1].SetTweenX(fStageCenterX-170); - m_stagedesc[0].SetTweenX(fStageCenterX+10); // set their new locations - m_stagedesc[1].SetTweenX(fStageCenterX-100); - - for (i=0; i<2; i++) - { - m_frameStage.AddSubActor( &m_ez2ukm[i] ); - m_frameStage.AddSubActor( &m_stagedesc[i] ); - } - - - - - // 20 Scrolling Blobs come in one at a time from either side at the bottom in the following code: - for( int j=0; j<2; j++) - { - for (i=0; i<20; i++) - { - m_sprScrollingBlobs[j][i].Load( THEME->GetPathTo("Graphics","stage elements") ); - m_sprScrollingBlobs[j][i].StopAnimating(); - m_sprScrollingBlobs[j][i].SetState( 3+bg_modeoffset ); - } - } - - for( j=0; j<2; j++) - { - for (i=0; i<20; i++) - { - if (j == 0) - { - m_sprScrollingBlobs[j][i].SetXY( fStageCenterX-(SCREEN_WIDTH/2)-500-((i*i)*4), 135 ); - if (ez2Final == 1) - { - m_sprScrollingBlobs[j][i].SetY( 0-160); - } - } - else - { - m_sprScrollingBlobs[j][i].SetXY( fStageCenterX+(SCREEN_WIDTH/2)+500-((i*i)*4), 170 ); - if (ez2Final == 1) - { - m_sprScrollingBlobs[j][i].SetY( 180 ); - } - } - } - } - - for( j=0; j<2; j++) - { - for (i=0; i<20; i++) - { - m_sprScrollingBlobs[j][i].BeginTweening(0.2f * i / 7); - if (j == 0) - m_sprScrollingBlobs[j][i].SetTweenX(fStageCenterX-(SCREEN_WIDTH/2)+(i*30.0f)); - else - m_sprScrollingBlobs[j][i].SetTweenX(fStageCenterX+(SCREEN_WIDTH/2)-70-(i*30.0f)); - - m_frameStage.AddSubActor( &m_sprScrollingBlobs[j][i] ); - } - } - - // write the stage name - m_stagename.LoadFromFont( THEME->GetPathTo("Fonts","stage") ); - m_stagename.TurnShadowOff(); - - m_stagename.SetXY( fStageCenterX+400, 0-30+element_y_offsets ); - - switch (iStageNo) - { - case 0: m_stagename.SetText( "THE NEXT STAGE" ); break; - case 1: m_stagename.SetText( "THE FIRST STAGE" ); break; - case 2: m_stagename.SetText( "THE SECOND STAGE" ); break; - case 3: m_stagename.SetText( "THE THIRD STAGE" ); break; - case 4: m_stagename.SetText( "THE FOURTH STAGE" ); break; - case 5: m_stagename.SetText( "THE FIFTH STAGE" ); break; - case 6: m_stagename.SetText( "THE SIXTH STAGE" ); break; - case 7: m_stagename.SetText( "THE SEVENTH STAGE" ); break; - default: m_stagename.SetText("THE NEXT STAGE"); break; - } - - if (iStageNo > 9) // if we're in two digits or more - { - m_stagename.SetText( "" ); // make this text disappear. - } - - m_stagename.SetDiffuseColor( D3DXCOLOR(1.0f/225.0f*166.0f,1.0f/225.0f*83.0f,1/225.0f*16.0f,1) ); - - if (ez2Final == 1) - { - m_stagename.SetDiffuseColor( D3DXCOLOR(1.0f/225.0f*227.0f,1.0f/225.0f*228.0f,1/225.0f*255.0f,1) ); - m_stagename.SetText( "THE FINAL STAGE" ); - stage_mode = MODE_FINAL; // set back to final again. - ez2Final = 0; - } - - m_stagename.BeginTweening(0.5f); - - m_stagename.SetTweenX(fStageCenterX+70); // set their new locations - m_frameStage.AddSubActor( &m_stagename ); - - } - - //////////////////////////// - // END EZ2 TYPE DEFINITION// - //////////////////////////// - - //////////////// - // PUMP STUFF // - //////////////// - m_pSong = GAMESTATE->m_pCurSong; - m_sprSongBackground.Load( m_pSong->HasBackground() ? m_pSong->GetBackgroundPath() : THEME->GetPathTo("Graphics","fallback background"), true, 4, 0, true ); - m_sprSongBackground.StretchTo( CRect(SCREEN_LEFT,SCREEN_TOP,SCREEN_RIGHT,SCREEN_BOTTOM) ); - for( i=0; iAddSubActor( &m_Fade ); // fade should draw last, on top of everything else m_Fade.SetOpened(); + + // + // Init dance-specific graphics + // + if( g_StageType == STAGE_TYPE_MAX ) + { + const float fStageHeight = m_sprStage.GetUnzoomedHeight(); + + const float fStageOffScreenY = CENTER_Y+fStageHeight; + + m_quadMask.SetDiffuseColor( D3DXCOLOR(0,0,0,0) ); + m_quadMask.StretchTo( CRect(SCREEN_LEFT, roundf(fStageOffScreenY-fStageHeight/2), SCREEN_RIGHT, roundf(fStageOffScreenY+fStageHeight/2)) ); + m_quadMask.SetZ( -1 ); // important: fill Z buffer with values that will cause subsequent draws to fail the Z test + + m_frameStage.SetXY( CENTER_X, fStageOffScreenY ); + m_frameStage.BeginTweening(0.8f, Actor::TWEEN_BIAS_BEGIN ); + m_frameStage.SetTweenY( CENTER_Y ); + } + + + // + // Init pump-sepecific graphics + // + if( g_StageType == STAGE_TYPE_PUMP ) + { + Song* pSong = GAMESTATE->m_pCurSong; + m_sprSongBackground.Load( (pSong && pSong->HasBackground()) ? pSong->GetBackgroundPath() : THEME->GetPathTo("Graphics","fallback background") ); + m_sprSongBackground.StretchTo( CRect(SCREEN_LEFT,SCREEN_TOP,SCREEN_RIGHT,SCREEN_BOTTOM) ); + + m_frameStage.SetXY( CENTER_X, CENTER_Y+160 ); + m_frameStage.SetZoom( 0.5f ); + } + + + // + // Init ez2-specific graphics + // + if( g_StageType == STAGE_TYPE_EZ2 ) + { + /* + int ez2Final=0; // if we're 0 it's not a final stage. if we're 1 it is. + // why do this? Ez2dancer uses NORMAL for it's final stage but just re-arranges + // the elements. so the following takes us into NORMAL and just re-arranges stuff + // the ez2Final is so that when we're in normal we can go and see if we're really + // FINAL or not. at the end of normal, if we WERE FINAL, we set it back to final + // hacky or what? =) + if( g_StageType == STAGE_TYPE_EZ2 && stage_mode == MODE_FINAL ) + { + for( int i=0; i<4; i++ ) + { + m_sprNumbers[i].Load( THEME->GetPathTo("Graphics","stage numbers final") ); + m_sprNumbers[i].StopAnimating(); + } + ez2Final=1; + stage_mode = MODE_NORMAL; + } + + + // + // Init Ez2 type-sepcific elements + // + + ///////////////////////// + // EZ2 TYPE DEFINITION // + ///////////////////////// + + if ( g_StageType == STAGE_TYPE_EZ2) // Initialize and manipulate existing graphics for Ez2dancer Screen Type + { + for( i=0; iGetPathTo("Graphics","stage elements") ); + m_sprbg[i].StopAnimating(); + m_sprbg[i].SetState( i+bg_modeoffset ); + } + if (ez2Final == 1) + { + m_sprbgxtra.Load( THEME->GetPathTo("Graphics","stage elements") ); + m_sprbgxtra.StopAnimating(); + m_sprbgxtra.SetState( bg_modeoffset ); + m_sprbgxtra.SetXY( fStageCenterX-30, 0+180); + m_sprbgxtra.SetHeight( 30 ); + m_sprbgxtra.SetWidth( SCREEN_WIDTH + 50 ); + m_sprbgxtra.SetRotation( -20 ); + m_sprbgxtra.BeginTweening(0.3f); + m_sprbgxtra.SetTweenRotationZ( 0 ); + } + + + m_sprbg[0].SetXY( fStageCenterX-30, 0+150); + if (ez2Final == 1) + m_sprbg[0].SetXY( fStageCenterX-30, 0-160); + m_sprbg[0].SetHeight( 100 ); + if (ez2Final == 1) + m_sprbg[0].SetHeight( 30 ); + m_sprbg[0].SetWidth( SCREEN_WIDTH + 50 ); + m_sprbg[0].SetRotation( -20 ); + m_sprbg[0].BeginTweening(0.3f); + m_sprbg[0].SetTweenRotationZ( 0 ); + + m_sprbg[1].SetXY( fStageCenterX-(SCREEN_WIDTH/2)-20, 0+element_y_offsets); + m_sprbg[1].SetHeight( SCREEN_HEIGHT - 140 ); + m_sprbg[1].SetWidth( 130 ); + m_sprbg[1].SetRotation( -20 ); + m_sprbg[1].BeginTweening(0.3f); + m_sprbg[1].SetTweenRotationZ( 0 ); + + m_sprbg[2].SetXY( fStageCenterX+430, 0+element_y_offsets); + m_sprbg[2].SetHeight( SCREEN_HEIGHT - 140 ); + m_sprbg[2].SetWidth( SCREEN_WIDTH + 50 ); + m_sprbg[2].SetRotation( -20 ); + m_sprbg[2].BeginTweening(0.3f); + m_sprbg[2].SetTweenX( fStageCenterX - 30 ); + m_sprbg[2].SetTweenRotationZ( 0 ); + + for (i=3; i>=0; i--) // work backwards as we wanna add em in reverse + { + m_frameStage.AddSubActor( &m_sprbg[i] ); + } + if (ez2Final == 1) + { + m_frameStage.AddSubActor( &m_sprbgxtra ); + } + + // scroll in the name of the game (ez2dancer ukmove) across the top of the screen + + for (i=0; i<2; i++) // specify the font file. + { + m_ez2ukm[i].LoadFromFont( THEME->GetPathTo("Fonts","stage") ); + m_ez2ukm[i].TurnShadowOff(); + m_stagedesc[i].LoadFromFont( THEME->GetPathTo("Fonts","stage") ); + m_stagedesc[i].TurnShadowOff(); + } + + m_ez2ukm[0].SetXY( fStageCenterX-400, 0-220 ); // set the intiial UKMOVE positions + m_ez2ukm[1].SetXY( fStageCenterX+400, 0+220 ); + m_stagedesc[0].SetXY( fStageCenterX-400, 0-150+element_y_offsets ); // set the intiial desc positions + m_stagedesc[1].SetXY( fStageCenterX+400, 0+70+element_y_offsets ); + + if (ez2Final == 1) + { + m_stagedesc[1].SetY( 140.0f ); + } + + for (i=0; i<2; i++) // initialize the UK MOVE text and positions + { + m_ez2ukm[i].SetText( "STEPMANIA EZ2 MOVE" ); + m_ez2ukm[i].SetDiffuseColor( D3DXCOLOR(1,1,1,1) ); + m_ez2ukm[i].BeginTweening(0.5f); + if (ez2Final == 1) + { + m_stagedesc[i].SetText( "FINAL FINAL FINAL FINAL FINAL FINAL FINAL FINAL FINAL FINAL" ); + m_stagedesc[i].SetDiffuseColor( D3DXCOLOR(1.0f/225.0f*227.0f,1.0f/225.0f*228.0f,1/225.0f*255.0f,1) ); + } + else + { + m_stagedesc[i].SetText( "NEXT NEXT NEXT NEXT NEXT NEXT NEXT NEXT NEXT NEXT NEXT" ); + m_stagedesc[i].SetDiffuseColor( D3DXCOLOR(1.0f/225.0f*166.0f,1.0f/225.0f*83.0f,1/225.0f*16.0f,1) ); + } + m_stagedesc[i].BeginTweening(0.5f); + + } + + m_ez2ukm[0].SetTweenX(fStageCenterX+90); // set their new locations + m_ez2ukm[1].SetTweenX(fStageCenterX-170); + m_stagedesc[0].SetTweenX(fStageCenterX+10); // set their new locations + m_stagedesc[1].SetTweenX(fStageCenterX-100); + + for (i=0; i<2; i++) + { + m_frameStage.AddSubActor( &m_ez2ukm[i] ); + m_frameStage.AddSubActor( &m_stagedesc[i] ); + } + + + + + // 20 Scrolling Blobs come in one at a time from either side at the bottom in the following code: + for( int j=0; j<2; j++) + { + for (i=0; i<20; i++) + { + m_sprScrollingBlobs[j][i].Load( THEME->GetPathTo("Graphics","stage elements") ); + m_sprScrollingBlobs[j][i].StopAnimating(); + m_sprScrollingBlobs[j][i].SetState( 3+bg_modeoffset ); + } + } + + for( j=0; j<2; j++) + { + for (i=0; i<20; i++) + { + if (j == 0) + { + m_sprScrollingBlobs[j][i].SetXY( fStageCenterX-(SCREEN_WIDTH/2)-500-((i*i)*4), 135 ); + if (ez2Final == 1) + { + m_sprScrollingBlobs[j][i].SetY( 0-160); + } + } + else + { + m_sprScrollingBlobs[j][i].SetXY( fStageCenterX+(SCREEN_WIDTH/2)+500-((i*i)*4), 170 ); + if (ez2Final == 1) + { + m_sprScrollingBlobs[j][i].SetY( 180 ); + } + } + } + } + + for( j=0; j<2; j++) + { + for (i=0; i<20; i++) + { + m_sprScrollingBlobs[j][i].BeginTweening(0.2f * i / 7); + if (j == 0) + m_sprScrollingBlobs[j][i].SetTweenX(fStageCenterX-(SCREEN_WIDTH/2)+(i*30.0f)); + else + m_sprScrollingBlobs[j][i].SetTweenX(fStageCenterX+(SCREEN_WIDTH/2)-70-(i*30.0f)); + + m_frameStage.AddSubActor( &m_sprScrollingBlobs[j][i] ); + } + } + + // write the stage name + m_stagename.LoadFromFont( THEME->GetPathTo("Fonts","stage") ); + m_stagename.TurnShadowOff(); + + m_stagename.SetXY( fStageCenterX+400, 0-30+element_y_offsets ); + + switch (iStageNo) + { + case 0: m_stagename.SetText( "THE NEXT STAGE" ); break; + case 1: m_stagename.SetText( "THE FIRST STAGE" ); break; + case 2: m_stagename.SetText( "THE SECOND STAGE" ); break; + case 3: m_stagename.SetText( "THE THIRD STAGE" ); break; + case 4: m_stagename.SetText( "THE FOURTH STAGE" ); break; + case 5: m_stagename.SetText( "THE FIFTH STAGE" ); break; + case 6: m_stagename.SetText( "THE SIXTH STAGE" ); break; + case 7: m_stagename.SetText( "THE SEVENTH STAGE" ); break; + default: m_stagename.SetText("THE NEXT STAGE"); break; + } + + if (iStageNo > 9) // if we're in two digits or more + { + m_stagename.SetText( "" ); // make this text disappear. + } + + m_stagename.SetDiffuseColor( D3DXCOLOR(1.0f/225.0f*166.0f,1.0f/225.0f*83.0f,1/225.0f*16.0f,1) ); + + if (ez2Final == 1) + { + m_stagename.SetDiffuseColor( D3DXCOLOR(1.0f/225.0f*227.0f,1.0f/225.0f*228.0f,1/225.0f*255.0f,1) ); + m_stagename.SetText( "THE FINAL STAGE" ); + stage_mode = MODE_FINAL; // set back to final again. + ez2Final = 0; + } + + m_stagename.BeginTweening(0.5f); + + m_stagename.SetTweenX(fStageCenterX+70); // set their new locations + m_frameStage.AddSubActor( &m_stagename ); + } + */ + } + + this->SendScreenMessage( SM_DoneFadingIn, 1.0f ); this->SendScreenMessage( SM_StartFadingOut, 4.0f ); } @@ -474,35 +500,18 @@ ScreenStage::ScreenStage() void ScreenStage::Update( float fDeltaTime ) { Screen::Update( fDeltaTime ); - - m_quadMask.Update( fDeltaTime ); - m_frameStage.Update( fDeltaTime ); - m_Fade.Update( fDeltaTime ); - m_sprSongBackground.Update( fDeltaTime ); } void ScreenStage::DrawPrimitives() { - switch( g_StageType ) - { - case STAGE_TYPE_MAX: + // Enable Zbuffering for the mask in the dance mode + if( g_StageType == STAGE_TYPE_MAX ) DISPLAY->EnableZBuffer(); - m_quadMask.Draw(); - m_frameStage.Draw(); + + Screen::DrawPrimitives(); + + if( g_StageType == STAGE_TYPE_MAX ) DISPLAY->DisableZBuffer(); - break; - case STAGE_TYPE_PUMP: - m_sprSongBackground.Draw(); - break; - case STAGE_TYPE_EZ2: - m_frameStage.Draw(); - // m_sprSongBackground.Draw(); - break; - default: - ASSERT(0); - } - - m_Fade.Draw(); } void ScreenStage::HandleScreenMessage( const ScreenMessage SM ) diff --git a/stepmania/src/ScreenStage.h b/stepmania/src/ScreenStage.h index 64017437c9..9ec160a928 100644 --- a/stepmania/src/ScreenStage.h +++ b/stepmania/src/ScreenStage.h @@ -26,11 +26,11 @@ public: private: - // Global Elements + // Common Elements ActorFrame m_frameStage; Sprite m_sprNumbers[4]; // up to 3 numbers and suffix - Sprite m_sprStage; // "Stage" + Sprite m_sprStage; // "Stage", "Final Stage", etc. // Ez2 Elements @@ -50,7 +50,6 @@ private: TransitionFade m_Fade; protected: - Song* m_pSong; }; diff --git a/stepmania/src/SongManager.cpp b/stepmania/src/SongManager.cpp index 285972d4f4..7a98f2b2f4 100644 --- a/stepmania/src/SongManager.cpp +++ b/stepmania/src/SongManager.cpp @@ -32,7 +32,7 @@ const CString g_sStatisticsFileName = "statistics.ini"; #define GROUP_COLOR_5 THEME->GetMetricC("SongManager","GroupColor5") #define GROUP_COLOR_6 THEME->GetMetricC("SongManager","GroupColor6") #define GROUP_COLOR_7 THEME->GetMetricC("SongManager","GroupColor7") -#define EXTRA_COLOR THEME->GetMetricC("SongManager","GroupColor7") +#define EXTRA_COLOR THEME->GetMetricC("SongManager","ExtraColor") const int NUM_GROUP_COLORS = 7; D3DXCOLOR GROUP_COLORS[NUM_GROUP_COLORS]; diff --git a/stepmania/src/StepMania.dsp b/stepmania/src/StepMania.dsp index 6f6aae483c..7e3431d240 100644 --- a/stepmania/src/StepMania.dsp +++ b/stepmania/src/StepMania.dsp @@ -624,14 +624,6 @@ SOURCE=.\GrooveRadar.h # End Source File # Begin Source File -SOURCE=.\GroupInfoFrame.cpp -# End Source File -# Begin Source File - -SOURCE=.\GroupInfoFrame.h -# End Source File -# Begin Source File - SOURCE=.\GroupList.cpp # End Source File # Begin Source File diff --git a/stepmania/src/StepMania.vcproj b/stepmania/src/StepMania.vcproj index 0d3713042a..4ac8c688c7 100644 --- a/stepmania/src/StepMania.vcproj +++ b/stepmania/src/StepMania.vcproj @@ -628,12 +628,6 @@ - - - -