From 9b45ff8afe259e7753954cc101c7ba6abd114a79 Mon Sep 17 00:00:00 2001 From: Andrew Livy Date: Sun, 18 Aug 2002 00:15:03 +0000 Subject: [PATCH] Gametype ScreenStages now look like they do on their respective machines. Ez2dancer metric is still in the works though. --- stepmania/Themes/default/metrics.ini | 1 + stepmania/src/GameManager.cpp | 2 +- stepmania/src/ScreenStage.cpp | 177 ++++++++++++++++++++++++++- stepmania/src/ScreenStage.h | 18 ++- 4 files changed, 195 insertions(+), 3 deletions(-) diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index dce12b374a..9b050f4155 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -2,6 +2,7 @@ UseCautionOrSelectPlayer=0 UseNormalOrEZ2SelectStyle=0 SkipSelectDifficulty=0 +StageScreenType=0 [TitleMenu] ChoicesX=320 diff --git a/stepmania/src/GameManager.cpp b/stepmania/src/GameManager.cpp index 55f8f06412..eb506fbe66 100644 --- a/stepmania/src/GameManager.cpp +++ b/stepmania/src/GameManager.cpp @@ -603,7 +603,7 @@ StyleDef g_StyleDefs[NUM_STYLES] = { TRACK_2, GAME_CONTROLLER_1, EZ2_BUTTON_HANDUPLEFT, -EZ2_COL_SPACING*1 }, { TRACK_3, GAME_CONTROLLER_1, EZ2_BUTTON_FOOTDOWN, +EZ2_COL_SPACING*0 }, { TRACK_4, GAME_CONTROLLER_1, EZ2_BUTTON_HANDUPRIGHT, +EZ2_COL_SPACING*1 }, - { TRACK_5, GAME_CONTROLLER_1, EZ2_BUTTON_HANDUPRIGHT, +EZ2_COL_SPACING*2 }, + { TRACK_5, GAME_CONTROLLER_1, EZ2_BUTTON_FOOTUPRIGHT, +EZ2_COL_SPACING*2 }, }, { // PLAYER_2 { TRACK_1, GAME_CONTROLLER_2, EZ2_BUTTON_FOOTUPLEFT, -EZ2_COL_SPACING*2 }, diff --git a/stepmania/src/ScreenStage.cpp b/stepmania/src/ScreenStage.cpp index 95ce77d216..6197cca552 100644 --- a/stepmania/src/ScreenStage.cpp +++ b/stepmania/src/ScreenStage.cpp @@ -26,11 +26,20 @@ #include "AnnouncerManager.h" #include "GameState.h" +#define STAGE_SCREEN_TYPE THEME->GetMetricI("General","StageScreenType") + +enum StageScreenTypes // magic number nuker! for use with the metrics +{ + SCREENTYPE_DANCE, + SCREENTYPE_PUMP, + SCREENTYPE_EZ2 +}; const ScreenMessage SM_StartFadingOut = ScreenMessage(SM_User + 1); const ScreenMessage SM_DoneFadingIn = ScreenMessage(SM_User + 2); const ScreenMessage SM_GoToNextState = ScreenMessage(SM_User + 3); + enum StageType { TYPE_NORMAL, @@ -156,6 +165,164 @@ ScreenStage::ScreenStage() } m_sprStage.SetX( fStageCenterX ); + ///////////////////////// + // EZ2 TYPE DEFINITION // + ///////////////////////// + + if ( STAGE_SCREEN_TYPE == SCREENTYPE_EZ2) // Initialize and manipulate existing graphics for Ez2dancer Screen Type + { + + for( i=0; iGetPathTo("Fonts","stage") ); + m_ez2ukm[i].TurnShadowOff(); + } + + m_ez2ukm[0].SetXY( fStageCenterX-400, 0-220 ); // set the intiial UKMOVE positions + m_ez2ukm[1].SetXY( fStageCenterX+400, 0+220 ); + + 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); + } + + m_ez2ukm[0].SetTweenX(fStageCenterX+90); // set their new locations + m_ez2ukm[1].SetTweenX(fStageCenterX-170); + for (i=0; i<2; i++) + { + m_frameStage.AddSubActor( &m_ez2ukm[i] ); + } + + // Background Blocks rotate their way in + + for (i=0; i<3; i++) + { + m_sprbg[i].Load( THEME->GetPathTo("Graphics","stage elements") ); + m_sprbg[i].StopAnimating(); + m_sprbg[i].SetState( i ); + } + + m_sprbg[0].SetXY( fStageCenterX-30, 0+150); + m_sprbg[0].SetHeight( 100 ); + 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); + 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); + 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] ); + } + + // 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 ); + } + } + + 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 ); + else + m_sprScrollingBlobs[j][i].SetXY( fStageCenterX+(SCREEN_WIDTH/2)+500-((i*i)*4), 170 ); + } + } + + 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+20 ); + + 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; + } + + m_stagename.SetDiffuseColor( D3DXCOLOR(1.0f/225.0f*166.0f,1.0f/225.0f*83.0f,1/225.0f*16.0f,1) ); + 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; iEnableZBuffer(); - m_quadMask.Draw(); + + if ( STAGE_SCREEN_TYPE == SCREENTYPE_DANCE) // only DANCE uses the quadmask + m_quadMask.Draw(); + m_frameStage.Draw(); DISPLAY->DisableZBuffer(); m_Fade.Draw(); + + if ( STAGE_SCREEN_TYPE == SCREENTYPE_PUMP) // only PUMP uses the song background on the stage screen + m_sprSongBackground.Draw(); } void ScreenStage::HandleScreenMessage( const ScreenMessage SM ) diff --git a/stepmania/src/ScreenStage.h b/stepmania/src/ScreenStage.h index b1c7b3af5c..a3c17dabbf 100644 --- a/stepmania/src/ScreenStage.h +++ b/stepmania/src/ScreenStage.h @@ -13,7 +13,7 @@ #include "ActorFrame.h" #include "Actor.h" #include "TransitionFade.h" - +#include "Song.h" class ScreenStage : public Screen { @@ -26,15 +26,31 @@ public: private: + // Global Elements + ActorFrame m_frameStage; Sprite m_sprNumbers[4]; // up to 3 numbers and suffix Sprite m_sprStage; // "Stage" + // Ez2 Elements + + Sprite m_sprbg[3]; + Sprite m_sprScrollingBlobs[2][20]; + BitmapText m_ez2ukm[2]; + BitmapText m_stagename; + + // Pump Elements + + Sprite m_sprSongBackground; + Quad m_quadMask; // write this into ZBuffer as a mask TransitionFade m_Fade; Screen* m_pNextScreen; +protected: + Song* m_pSong; + };