From b7d51d5b55f8c3099ddde0e6ea7992e3709031b0 Mon Sep 17 00:00:00 2001 From: Kevin Slaughter Date: Fri, 2 May 2003 08:26:43 +0000 Subject: [PATCH] Added much more scripting and configurability to ScreenSelectDifficultyEX.. See my TODO --- stepmania/TODO.miryokuteki | 10 +++- stepmania/Themes/default/metrics.ini | 70 +++++++++++++++++----- stepmania/src/ScreenSelectDifficultyEX.cpp | 70 +++++++++++++--------- 3 files changed, 106 insertions(+), 44 deletions(-) diff --git a/stepmania/TODO.miryokuteki b/stepmania/TODO.miryokuteki index bb5890ad93..601484a5a9 100644 --- a/stepmania/TODO.miryokuteki +++ b/stepmania/TODO.miryokuteki @@ -2,11 +2,17 @@ // Miryokuteki's Todo/Done Record // //////////////////////////////////// -// Last Updated May 1st, 2003 +// Last Updated May 2nd, 2003 Todo List: ** Find a way to get the length of a movie being played, so ScreenIntroMovie does not have to have a pre-determined length (I.e: exits when the movie is finished playing) - ** Adding support for "BEGINNER HELP".. The thing that has a character showing where to step during the song, only on beginner mode. IE: Replaces the BG with this dynamic image sequence, showing what arrow to hit as it comes up on screen. You can see this in the BG of a DDRExtreme song if you pick "beginner" difficulty. + +Done as of 05/02/03: + ** Added more scripting to SSDEX, now supporting icon bar/icons/text/pic/info scripting. Having small probs with the highlight bar for each player, scripting-wise. Will work on this later + + + + Done as of 05/01/03: ** Re-coded my ScreenSelectDifficultyEX, to support the icon bar like the arcade does, and added scripting support and much more configuration. Will add even more later tonight. diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 857eebf258..6d15cf2851 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -294,38 +294,74 @@ CursorP2OffsetXFromPicture=+40 CursorP2OffsetYFromPicture=188 DifficultyIcon1X=50 DifficultyIcon1Y=405 -DifficultyIcon1COLOR=1,1,1,1 //white +DifficultyIcon1OFFCommand=linear,0.3;zoom,3;diffusealpha,0 +DifficultyIcon1ONCommand=diffusealpha,0;zoom,3;sleep,0.3;linear,0.3;zoom,1;diffusealpha,1 +DifficultyText1COLOR=1,1,1,1 //white +DifficultyText1OFFCommand=linear,0.3;zoomx,0 +DifficultyText1ONCommand=linear,0.3;zoomx,0.5 DifficultyIcon2X=230 DifficultyIcon2Y=405 -DifficultyIcon2COLOR=1,1,1,1 //white +DifficultyIcon2OFFCommand=linear,0.3;zoom,3;diffusealpha,0 +DifficultyIcon2ONCommand=diffusealpha,0;zoom,3;sleep,0.3;linear,0.3;zoom,1;diffusealpha,1 +DifficultyText2COLOR=1,1,1,1 //white +DifficultyText2OFFCommand=linear,0.3;zoomx,0 +DifficultyText2ONCommand=linear,0.3;zoomx,0.5 DifficultyIcon3X=380 DifficultyIcon3Y=405 -DifficultyIcon3COLOR=1,1,1,1 //white +DifficultyIcon3OFFCommand=linear,0.3;zoom,3;diffusealpha,0 +DifficultyIcon3ONCommand=diffusealpha,0;zoom,3;sleep,0.3;linear,0.3;zoom,1;diffusealpha,1 +DifficultyText3COLOR=1,1,1,1 //white +DifficultyText3OFFCommand=linear,0.3;zoomx,0 +DifficultyText3ONCommand=linear,0.3;zoomx,0.5 DifficultyIcon4X=540 DifficultyIcon4Y=405 -DifficultyIcon4COLOR=1,1,1,1 //white +DifficultyIcon4OFFCommand=linear,0.3;zoom,3;diffusealpha,0 +DifficultyIcon4ONCommand=diffusealpha,0;zoom,3;sleep,0.3;linear,0.3;zoom,1;diffusealpha,1 +DifficultyText4COLOR=1,1,1,1 //white +DifficultyText4OFFCommand=linear,0.3;zoomx,0 +DifficultyText4ONCommand=linear,0.3;zoomx,0.5 DifficultyIcon5X=50 DifficultyIcon5Y=435 -DifficultyIcon5COLOR=1,0,0,1 //red +DifficultyIcon5OFFCommand=linear,0.3;zoom,3;diffusealpha,0 +DifficultyIcon5ONCommand=diffusealpha,0;zoom,3;sleep,0.3;linear,0.3;zoom,1;diffusealpha,1 +DifficultyText5COLOR=1,0,0,1 //red +DifficultyText5OFFCommand=linear,0.3;zoomx,0 +DifficultyText5ONCommand=linear,0.3;zoomx,0.5 DifficultyIcon6X=230 DifficultyIcon6Y=435 -DifficultyIcon6COLOR=1,0,0,1 //red +DifficultyIcon6OFFCommand=linear,0.3;zoom,3;diffusealpha,0 +DifficultyIcon6ONCommand=diffusealpha,0;zoom,3;sleep,0.3;linear,0.3;zoom,1;diffusealpha,1 +DifficultyText6COLOR=1,0,0,1 //red +DifficultyText6OFFCommand=linear,0.3;zoomx,0 +DifficultyText6ONCommand=linear,0.3;zoomx,0.5 DifficultyIcon7X=380 DifficultyIcon7Y=435 -DifficultyIcon7COLOR=1,0,0,1 //red +DifficultyIcon7OFFCommand=linear,0.3;zoom,3;diffusealpha,0 +DifficultyIcon7ONCommand=diffusealpha,0;zoom,3;sleep,0.3;linear,0.3;zoom,1;diffusealpha,1 +DifficultyText7COLOR=1,0,0,1 //red +DifficultyText7OFFCommand=linear,0.3;zoomx,0 +DifficultyText7ONCommand=linear,0.3;zoomx,0.5 DifficultyIcon8X=540 DifficultyIcon8Y=435 -DifficultyIcon8COLOR=1,0,0,1 //red +DifficultyIcon8OFFCommand=linear,0.3;zoom,3;diffusealpha,0 +DifficultyIcon8ONCommand=diffusealpha,0;zoom,3;sleep,0.3;linear,0.3;zoom,1;diffusealpha,1 +DifficultyText8COLOR=1,0,0,1 //red +DifficultyText8OFFCommand=linear,0.3;zoomx,0 +DifficultyText8ONCommand=linear,0.3;zoomx,0.5 DisabledColor=0.2,0.2,0.2,1 HelpText=Use &LEFT; &RIGHT; to select, then press START -IconBarX=320 -IconBarY=420 +IconBarOFFCommand=linear,0.5;diffusealpha,0 +IconBarONCommand=y,420;x,-320;accelerate,0.3;x,320 +InfoP1OFFCommand=sleep,0.15;linear,0.15;zoomy,0 +InfoP1ONCommand=zoomy,0;linear,0.15;zoomy,1 InfoXP1=200 -InfoYP1=100 //150 +InfoYP1=100 +InfoP2OFFCommand=sleep,0.15;linear,0.15;zoomy,0 +InfoP2ONCommand=zoomy,0;linear,0.15;zoomy,1 InfoXP2=440 -InfoYP2=100//150 +InfoYP2=100 InitialChoice=0 -LockInputSeconds=0.8 +LockInputSeconds=0.4 NextScreen1=ScreenSelectGroup NextScreen2=ScreenSelectGroup NextScreen3=ScreenSelectGroup @@ -338,10 +374,14 @@ NextScreenArcade=ScreenSelectGroup NextScreenOni=ScreenInstructions NextScreenBattle=ScreenInstructions NextScreenRave=ScreenInstructions +PictureP1OFFCommand=linear,0.15;zoomy,0 +PictureP1ONCommand=zoomy,0;sleep,0.15;linear,0.15;zoomy,1 PictureXP1=200 -PictureYP1=245 //295 +PictureYP1=245 +PictureP2OFFCommand=linear,0.15;zoomy,0 +PictureP2ONCommand=zoomy,0;sleep,0.15;linear,0.15;zoomy,1 PictureXP2=440 -PictureYP2=245 //295 +PictureYP2=245 SleepAfterChoiceSeconds=0.3 SleepAfterTweenOffSeconds=0.8 TimerSeconds=60 diff --git a/stepmania/src/ScreenSelectDifficultyEX.cpp b/stepmania/src/ScreenSelectDifficultyEX.cpp index 095998e1fa..2d1a40669e 100644 --- a/stepmania/src/ScreenSelectDifficultyEX.cpp +++ b/stepmania/src/ScreenSelectDifficultyEX.cpp @@ -29,15 +29,23 @@ #define ANIMATE_MODE_SWITCH_PICTURE_ON_COMMAND THEME->GetMetric("ScreenSelectDifficultyEX","AnimateModeSwitchPictureONCommand") #define CURSOR_OFFSET_X_FROM_PICTURE( p ) THEME->GetMetricF("ScreenSelectDifficultyEX",ssprintf("CursorP%dOffsetXFromPicture",p+1)) #define CURSOR_OFFSET_Y_FROM_PICTURE( p ) THEME->GetMetricF("ScreenSelectDifficultyEX",ssprintf("CursorP%dOffsetYFromPicture",p+1)) +#define DIFFICULTYICON_OFF_COMMAND( p ) THEME->GetMetric("ScreenSelectDifficultyEX",ssprintf("DifficultyIcon%dOFFCommand",p+1)) +#define DIFFICULTYICON_ON_COMMAND( p ) THEME->GetMetric("ScreenSelectDifficultyEX",ssprintf("DifficultyIcon%dONCommand",p+1)) #define DIFFICULTYICON_X( p ) THEME->GetMetricF("ScreenSelectDifficultyEX",ssprintf("DifficultyIcon%dX",p+1)) #define DIFFICULTYICON_Y( p ) THEME->GetMetricF("ScreenSelectDifficultyEX",ssprintf("DifficultyIcon%dY",p+1)) -#define DIFFICULTYICON_COLOR( p ) THEME->GetMetricC("ScreenSelectDifficultyEX",ssprintf("DifficultyIcon%dCOLOR",p+1)) +#define DIFFICULTYTEXT_COLOR( p ) THEME->GetMetricC("ScreenSelectDifficultyEX",ssprintf("DifficultyText%dCOLOR",p+1)) +#define DIFFICULTYTEXT_OFF_COMMAND( p ) THEME->GetMetric("ScreenSelectDifficultyEX",ssprintf("DifficultyText%dOFFCommand",p+1)) +#define DIFFICULTYTEXT_ON_COMMAND( p ) THEME->GetMetric("ScreenSelectDifficultyEX",ssprintf("DifficultyText%dONCommand",p+1)) #define DISABLED_COLOR THEME->GetMetricC("ScreenSelectDifficultyEX","DisabledColor") -#define ICONBAR_X THEME->GetMetricF("ScreenSelectDifficultyEX","IconBarX") -#define ICONBAR_Y THEME->GetMetricF("ScreenSelectDifficultyEX","IconBarY") +#define ICONBAR_OFF_COMMAND THEME->GetMetric("ScreenSelectDifficultyEX","IconBarOFFCommand") +#define ICONBAR_ON_COMMAND THEME->GetMetric("ScreenSelectDifficultyEX","IconBarONCommand") +#define INFO_OFF_COMMAND( p ) THEME->GetMetric("ScreenSelectDifficultyEX",ssprintf("InfoP%dOFFCommand",p+1)) +#define INFO_ON_COMMAND( p ) THEME->GetMetric("ScreenSelectDifficultyEX",ssprintf("InfoP%dONCommand",p+1)) #define INFO_X( p ) THEME->GetMetricF("ScreenSelectDifficultyEX",ssprintf("InfoXP%d",p+1)) #define INFO_Y( p ) THEME->GetMetricF("ScreenSelectDifficultyEX",ssprintf("InfoYP%d",p+1)) #define LOCK_INPUT_SECONDS THEME->GetMetricF("ScreenSelectDifficultyEX","LockInputSeconds") +#define PICTURE_OFF_COMMAND( p ) THEME->GetMetric("ScreenSelectDifficultyEX",ssprintf("PictureP%dOFFCommand",p+1)) +#define PICTURE_ON_COMMAND( p ) THEME->GetMetric("ScreenSelectDifficultyEX",ssprintf("PictureP%dONCommand",p+1)) #define PICTURE_X( p ) THEME->GetMetricF("ScreenSelectDifficultyEX",ssprintf("PictureXP%d",p+1)) #define PICTURE_Y( p ) THEME->GetMetricF("ScreenSelectDifficultyEX",ssprintf("PictureYP%d",p+1)) #define SLEEP_AFTER_CHOICE_SECONDS THEME->GetMetricF("ScreenSelectDifficultyEX","SleepAfterChoiceSeconds") @@ -62,7 +70,6 @@ ScreenSelectDifficultyEX::ScreenSelectDifficultyEX() : ScreenSelect( "ScreenSele } m_sprIconBar.Load( THEME->GetPathToG("ScreenSelectDifficultyEX icon bar.png") ); - m_sprIconBar.SetXY( ICONBAR_X, ICONBAR_Y ); this->AddChild( &m_sprIconBar ); for( unsigned k=0; k < NUM_MODES || k <= 7 ; k++ ) @@ -82,8 +89,8 @@ ScreenSelectDifficultyEX::ScreenSelectDifficultyEX() : ScreenSelect( "ScreenSele m_textDifficultyText[k].SetX( DIFFICULTYICON_X(k) + 20 ); m_textDifficultyText[k].SetY( DIFFICULTYICON_Y(k) ); m_textDifficultyText[k].SetZoom( .5 ); - m_textDifficultyText[k].SetShadowLength( 1 ); - m_textDifficultyText[k].SetDiffuse( DIFFICULTYICON_COLOR(k) ); + m_textDifficultyText[k].SetShadowLength( 1 ); //No shadow, jus outline + m_textDifficultyText[k].SetDiffuse( DIFFICULTYTEXT_COLOR(k) ); this->AddChild( &m_textDifficultyText[k] ); } } @@ -95,8 +102,6 @@ ScreenSelectDifficultyEX::ScreenSelectDifficultyEX() : ScreenSelect( "ScreenSele { m_sprHighlight[p].SetHorizAlign( Actor::align_left ); m_sprHighlight[p].Load( (PlayerNumber)p, false ); - m_sprHighlight[p].SetX( DIFFICULTYICON_X(0) ); - m_sprHighlight[p].SetY( DIFFICULTYICON_Y(0) ); this->AddChild( &m_sprHighlight[p] ); this->MoveToHead( &m_sprHighlight[p] ); } @@ -112,42 +117,36 @@ ScreenSelectDifficultyEX::ScreenSelectDifficultyEX() : ScreenSelect( "ScreenSele CString sPictureFile = ssprintf( "ScreenSelectDifficultyEX picture %s", m_ModeChoices[0].name ); m_sprPicture[p].Load( THEME->GetPathToG(sPictureFile) ); - m_sprPicture[p].SetX( PICTURE_X(p) ); - - m_sprPicture[p].SetY( PICTURE_Y(p) ); + m_sprPicture[p].SetXY( PICTURE_X(p), PICTURE_Y(p) ); m_framePages.AddChild( &m_sprPicture[p] ); m_sprInfo[p].Load( THEME->GetPathToG(sInfoFile) ); - m_sprInfo[p].SetX( INFO_X(p) ); - m_sprInfo[p].SetY( INFO_Y(p) ); + m_sprInfo[p].SetXY( INFO_X(p), INFO_Y(p) ); m_framePages.AddChild( &m_sprInfo[p] ); m_sprCursor[p].Load( THEME->GetPathToG( "ScreenSelectDifficultyEX cursor 2x1") ); m_sprCursor[p].SetZoom( 0 ); m_sprCursor[p].StopAnimating(); m_sprCursor[p].SetState( p ); - m_sprCursor[p].SetX( fCursorX ); - m_sprCursor[p].SetY( fCursorY ); + m_sprCursor[p].SetXY( fCursorX, fCursorY ); m_framePages.AddChild( &m_sprCursor[p] ); m_sprOK[p].Load( THEME->GetPathToG( "ScreenSelectDifficultyEX ok 2x1") ); m_sprOK[p].SetState( p ); m_sprOK[p].StopAnimating(); m_sprOK[p].SetDiffuse( RageColor(1,1,1,1) ); - m_sprOK[p].SetX( fCursorX ); - m_sprOK[p].SetY( fCursorY ); + m_sprOK[p].SetXY( fCursorX, fCursorY ); m_framePages.AddChild( &m_sprOK[p] ); } this->AddChild( &m_framePages ); - m_soundChange.Load( THEME->GetPathToS( "ScreenSelectDifficulty change") ); m_soundSelect.Load( THEME->GetPathToS( "Common start") ); m_soundDifficult.Load( ANNOUNCER->GetPathTo("select difficulty challenge") ); - m_fLockInputTime = LOCK_INPUT_SECONDS; - TweenOnScreen(); + + SetAllPlayersSelection( 0, false ); } void ScreenSelectDifficultyEX::Update( float fDelta ) @@ -354,7 +353,7 @@ void ScreenSelectDifficultyEX::SetDifficultyIconText( bool bDisplayCourseItems ) MMNAME.Replace( "rave", "Rave"); m_textDifficultyText[k].SetText( MMNAME.c_str() ); - m_textDifficultyText[k].SetDiffuse( DIFFICULTYICON_COLOR(k) ); + m_textDifficultyText[k].SetDiffuse( DIFFICULTYTEXT_COLOR(k) ); } } @@ -429,7 +428,18 @@ void ScreenSelectDifficultyEX::TweenOnScreen() float fCursorX = GetCursorX( (PlayerNumber)p ); float fCursorY = GetCursorY( (PlayerNumber)p ); - m_sprCursor[p].SetXY( fCursorX, fCursorY ); + m_sprInfo[p].Command( INFO_ON_COMMAND(p) ); + m_sprPicture[p].Command( PICTURE_ON_COMMAND(p) ); + + m_sprHighlight[p].SetXY( DIFFICULTYICON_X(1) + 30, DIFFICULTYICON_Y(1) ); + m_sprHighlight[p].Command( "diffusealpha,0;linear,0.3;diffusealpha,1" ); + } + + m_sprIconBar.Command( ICONBAR_ON_COMMAND ); + for( unsigned di=0; di < m_aModeChoices.size(); di++ ) + { + m_sprDifficultyIcon[di].Command( DIFFICULTYICON_ON_COMMAND(di) ); + m_textDifficultyText[di].Command( DIFFICULTYTEXT_ON_COMMAND(di) ); } } @@ -438,12 +448,18 @@ void ScreenSelectDifficultyEX::TweenOffScreen() for( int p=0; pIsPlayerEnabled((PlayerNumber)p) ) { continue; } - - m_sprPicture[p].FadeOff( 0.0, "fade", 0.5f ); - m_sprInfo[p].FadeOff( 0.0, "fade", 0.5f ); - m_sprCursor[p].FadeOff( 0.0, "fade", 0.5f ); - m_sprOK[p].FadeOff( 0.0, "fade", 0.5f ); + m_sprInfo[p].Command( INFO_OFF_COMMAND(p) ); + m_sprPicture[p].Command( PICTURE_OFF_COMMAND(p) ); + m_sprHighlight[p].SetXY( -600,-600 ); + m_sprOK[p].Command( "linear,0.3;diffusealpha,0" ); + } + + m_sprIconBar.Command( ICONBAR_OFF_COMMAND ); + for( unsigned di=0; di < m_aModeChoices.size(); di++ ) + { + m_sprDifficultyIcon[di].Command( DIFFICULTYICON_OFF_COMMAND(di) ); + m_textDifficultyText[di].Command( DIFFICULTYTEXT_OFF_COMMAND(di) ); } }