From 40277568d095639a8925c76e4f2b0bc53b4b491c Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Tue, 3 Sep 2002 06:33:08 +0000 Subject: [PATCH] option icons are almost working... --- stepmania/src/Actor.cpp | 1 + stepmania/src/Actor.h | 4 +- stepmania/src/BitmapText.cpp | 10 +- stepmania/src/BitmapText.h | 2 + stepmania/src/GrooveRadar.cpp | 28 +-- stepmania/src/MusicWheel.cpp | 38 ++-- stepmania/src/OptionIcon.cpp | 25 ++- stepmania/src/OptionIcon.h | 1 + stepmania/src/OptionIconRow.cpp | 40 ++++ stepmania/src/OptionIconRow.h | 36 ++++ stepmania/src/ScreenMusicScroll.cpp | 4 +- stepmania/src/ScreenOptions.cpp | 47 +++-- stepmania/src/ScreenOptions.h | 3 + stepmania/src/ScreenSelectDifficulty.cpp | 2 +- stepmania/src/ScreenSelectMusic.cpp | 247 ++++++++++------------- stepmania/src/ScreenSelectMusic.h | 8 +- stepmania/src/ScreenSelectStyle.cpp | 12 +- stepmania/src/SongManager.cpp | 9 +- stepmania/src/StepMania.vcproj | 12 +- stepmania/src/ThemeManager.cpp | 6 +- stepmania/src/ThemeManager.h | 3 +- 21 files changed, 303 insertions(+), 235 deletions(-) create mode 100644 stepmania/src/OptionIconRow.cpp create mode 100644 stepmania/src/OptionIconRow.h diff --git a/stepmania/src/Actor.cpp b/stepmania/src/Actor.cpp index 073e77f94b..3e83808518 100644 --- a/stepmania/src/Actor.cpp +++ b/stepmania/src/Actor.cpp @@ -500,6 +500,7 @@ void Actor::Fade( float fSleepSeconds, CString sFadeString, float fFadeSeconds, mod.glow.a *= CONTAINS("glow")?1:0; + StopTweening(); m_current = bOnToScreenOrOffOfScreen ? original : mod; BeginTweening( fSleepSeconds ); BeginTweening( fFadeSeconds, tt ); diff --git a/stepmania/src/Actor.h b/stepmania/src/Actor.h index faa3fa5419..0f5615ae74 100644 --- a/stepmania/src/Actor.h +++ b/stepmania/src/Actor.h @@ -177,8 +177,8 @@ public: void Fade( float fSleepSeconds, CString sFadeString, float fFadeSeconds, bool bOnToScreenOrOffOfScreen ); - void FadeOntoScreen( float fSleepSeconds, CString sFadeString, float fFadeSeconds ) { Fade(fSleepSeconds,sFadeString,fFadeSeconds,false); }; - void FadeOffScreen( float fSleepSeconds, CString sFadeString, float fFadeSeconds ) { Fade(fSleepSeconds,sFadeString,fFadeSeconds,true); }; + void FadeOn( float fSleepSeconds, CString sFadeString, float fFadeSeconds ) { Fade(fSleepSeconds,sFadeString,fFadeSeconds,false); }; + void FadeOff( float fSleepSeconds, CString sFadeString, float fFadeSeconds ) { Fade(fSleepSeconds,sFadeString,fFadeSeconds,true); }; protected: diff --git a/stepmania/src/BitmapText.cpp b/stepmania/src/BitmapText.cpp index 2fbecf8bbe..dabee1f85e 100644 --- a/stepmania/src/BitmapText.cpp +++ b/stepmania/src/BitmapText.cpp @@ -80,6 +80,8 @@ bool BitmapText::LoadFromFont( CString sFontFilePath ) // load font m_pFont = FONT->LoadFont( sFontFilePath, "" ); + m_iLineHeight = m_pFont->m_pTexture->GetSourceFrameHeight(); + return true; } @@ -187,9 +189,9 @@ void BitmapText::DrawPrimitives() int iY; // the center position of the first row of characters switch( m_VertAlign ) { - case align_bottom: iY = -(m_iNumLines) * iHeight + iHeight/2; break; - case align_middle: iY = -(m_iNumLines-1) * iHeight/2; break; - case align_top: iY = + iHeight/2; break; + case align_bottom: iY = -(m_iNumLines) * m_iLineHeight + m_iLineHeight/2; break; + case align_middle: iY = -(m_iNumLines-1) * m_iLineHeight/2; break; + case align_top: iY = + m_iLineHeight/2; break; default: ASSERT( false ); } @@ -257,7 +259,7 @@ void BitmapText::DrawPrimitives() v[iNumV++].t = D3DXVECTOR2( frectTexCoords.right + fExtraTexCoords, frectTexCoords.bottom ); // bottom right } - iY += iHeight; + iY += m_iLineHeight; } diff --git a/stepmania/src/BitmapText.h b/stepmania/src/BitmapText.h index b39d617fc2..1b1f3b333b 100644 --- a/stepmania/src/BitmapText.h +++ b/stepmania/src/BitmapText.h @@ -33,6 +33,7 @@ public: int GetWidestLineWidthInSourcePixels() { return m_iWidestLineWidth; }; void CropToWidth( int iWidthInSourcePixels ); + void SetLineHeight( int iLineHeight ) { m_iLineHeight = iLineHeight; }; virtual void DrawPrimitives(); @@ -50,6 +51,7 @@ protected: int m_iNumLines; int m_iLineWidths[MAX_TEXT_LINES]; // in source pixels int m_iWidestLineWidth; // in source pixels + int m_iLineHeight; bool m_bRainbow; }; diff --git a/stepmania/src/GrooveRadar.cpp b/stepmania/src/GrooveRadar.cpp index b84c16f8c7..2149b00ae6 100644 --- a/stepmania/src/GrooveRadar.cpp +++ b/stepmania/src/GrooveRadar.cpp @@ -18,6 +18,12 @@ #include "GameConstantsAndTypes.h" + + +#define LABEL_OFFSET_X( i ) THEME->GetMetricF("GrooveRadar",ssprintf("Label%dOffsetX",i+1)) +#define LABEL_OFFSET_Y( i ) THEME->GetMetricF("GrooveRadar",ssprintf("Label%dOffsetY",i+1)) + + float RADAR_VALUE_ROTATION( int iValueIndex ) { return D3DX_PI/2 + D3DX_PI*2 / 5.0f * iValueIndex; } const float RADAR_EDGE_WIDTH = 3; @@ -28,28 +34,10 @@ GrooveRadar::GrooveRadar() for( int c=0; c 1 ) fX += fX/fabsf(fX) * 40; break; - case 2: - case 3: if( fabsf(fX) > 1 ) fX += fX/fabsf(fX) * 50; break; - default: ASSERT( false ); - } - - const float fY = -sinf(fRotation) * fRadius * 1.15f; - - - m_sprRadarLabels[c].Load( THEME->GetPathTo("Graphics","select music radar words") ); + m_sprRadarLabels[c].Load( THEME->GetPathTo("Graphics","select music radar labels 1x5") ); m_sprRadarLabels[c].StopAnimating(); m_sprRadarLabels[c].SetState( c ); - m_sprRadarLabels[c].SetXY( fX, fY ); + m_sprRadarLabels[c].SetXY( LABEL_OFFSET_X(c), LABEL_OFFSET_Y(c) ); this->AddChild( &m_sprRadarLabels[c] ); } } diff --git a/stepmania/src/MusicWheel.cpp b/stepmania/src/MusicWheel.cpp index d304fb9a61..5d5a634cd8 100644 --- a/stepmania/src/MusicWheel.cpp +++ b/stepmania/src/MusicWheel.cpp @@ -21,6 +21,7 @@ #include "GameConstantsAndTypes.h" #include "GameState.h" + // WheelItem stuff #define ICON_X THEME->GetMetricF("WheelItemDisplay","IconX") #define SONG_NAME_X THEME->GetMetricF("WheelItemDisplay","SongNameX") @@ -30,8 +31,7 @@ #define ROULETTE_ZOOM THEME->GetMetricF("WheelItemDisplay","RouletteZoom") #define COURSE_X THEME->GetMetricF("WheelItemDisplay","CourseX") #define COURSE_ZOOM THEME->GetMetricF("WheelItemDisplay","CourseZoom") -#define GRADE_P1_X THEME->GetMetricF("WheelItemDisplay","GradeP1X") -#define GRADE_P2_X THEME->GetMetricF("WheelItemDisplay","GradeP2Y") +#define GRADE_X( p ) THEME->GetMetricF("WheelItemDisplay",ssprintf("GradeP%dX",p+1)) // MusicWheel stuff @@ -43,27 +43,12 @@ #define LOCKED_INITIAL_VELOCITY THEME->GetMetricF("MusicWheel","LockedInitialVelocity") #define SCROLL_BAR_X THEME->GetMetricF("MusicWheel","ScrollBarX") #define SCROLL_BAR_HEIGHT THEME->GetMetricI("MusicWheel","ScrollBarHeight") -#define SECTION_COLOR_1 THEME->GetMetricC("MusicWheel","SectionColor1") -#define SECTION_COLOR_2 THEME->GetMetricC("MusicWheel","SectionColor2") -#define SECTION_COLOR_3 THEME->GetMetricC("MusicWheel","SectionColor3") -#define SECTION_COLOR_4 THEME->GetMetricC("MusicWheel","SectionColor4") -#define SECTION_COLOR_5 THEME->GetMetricC("MusicWheel","SectionColor5") -#define SECTION_COLOR_6 THEME->GetMetricC("MusicWheel","SectionColor6") -#define SECTION_COLOR_7 THEME->GetMetricC("MusicWheel","SectionColor7") -const int NUM_SECTION_COLORS = 7; +#define ITEM_SPACING_Y THEME->GetMetricF("MusicWheel","ItemSpacingY") +#define NUM_SECTION_COLORS THEME->GetMetricI("MusicWheel","NumSectionColors") +#define SECTION_COLORS( i ) THEME->GetMetricC("MusicWheel",ssprintf("SectionColor%d",i+1)) + +float g_fItemSpacingY; // cache -D3DXCOLOR SECTION_COLORS( int i ) { - switch( i ) { - case 0: return SECTION_COLOR_1; - case 1: return SECTION_COLOR_2; - case 2: return SECTION_COLOR_3; - case 3: return SECTION_COLOR_4; - case 4: return SECTION_COLOR_5; - case 5: return SECTION_COLOR_6; - case 6: return SECTION_COLOR_7; - default: ASSERT(0); return D3DXCOLOR(1,1,1,1); - } -} inline D3DXCOLOR GetNextSectionColor() { static int i=0; i = i % NUM_SECTION_COLORS; @@ -114,7 +99,7 @@ WheelItemDisplay::WheelItemDisplay() { m_GradeDisplay[p].Load( THEME->GetPathTo("Graphics","select music small grades 2x8") ); m_GradeDisplay[p].SetZoom( 1.0f ); - m_GradeDisplay[p].SetXY( p==PLAYER_1 ? GRADE_P1_X : GRADE_P2_X, 0 ); + m_GradeDisplay[p].SetXY( GRADE_X(p), 0 ); } m_textCourse.LoadFromFont( THEME->GetPathTo("Fonts","text banner") ); @@ -288,6 +273,11 @@ MusicWheel::MusicWheel() { LOG->Trace( "MusicWheel::MusicWheel()" ); + + // update theme metric cache + g_fItemSpacingY = ITEM_SPACING_Y; + + // for debugging if( GAMESTATE->m_CurStyle == STYLE_NONE ) GAMESTATE->m_CurStyle = STYLE_DANCE_SINGLE; @@ -620,7 +610,7 @@ void MusicWheel::SwitchSortOrder() float MusicWheel::GetBannerY( float fPosOffsetsFromMiddle ) { - return (float)roundf( fPosOffsetsFromMiddle*44 ); + return (float)roundf( fPosOffsetsFromMiddle*g_fItemSpacingY ); } float MusicWheel::GetBannerBrightness( float fPosOffsetsFromMiddle ) diff --git a/stepmania/src/OptionIcon.cpp b/stepmania/src/OptionIcon.cpp index 35fc3b410c..8e4182718e 100644 --- a/stepmania/src/OptionIcon.cpp +++ b/stepmania/src/OptionIcon.cpp @@ -14,30 +14,41 @@ #include "ThemeManager.h" #include "PlayerOptions.h" -#define TEXT_X THEME->GetMetricF("OptionIcon","TextX") -#define TEXT_Y THEME->GetMetricF("OptionIcon","TextY") +#define TEXT_OFFSET_X THEME->GetMetricF("OptionIcon","TextOffsetX") +#define TEXT_OFFSET_Y THEME->GetMetricF("OptionIcon","TextOffsetY") #define TEXT_H_ALIGN THEME->GetMetricI("OptionIcon","TextHAlign") #define TEXT_V_ALIGN THEME->GetMetricI("OptionIcon","TextVAlign") #define TEXT_WIDTH THEME->GetMetricI("OptionIcon","TextWidth") +#define TEXT_ZOOM THEME->GetMetricF("OptionIcon","TextZoom") OptionIcon::OptionIcon() { m_spr.Load( THEME->GetPathTo("Graphics","select music option icons 3x2") ); + m_spr.StopAnimating(); this->AddChild( &m_spr ); m_text.LoadFromFont( THEME->GetPathTo("Fonts","option icons") ); + m_text.TurnShadowOff(); + m_text.SetZoom( TEXT_ZOOM ); + m_text.SetXY( TEXT_OFFSET_X, TEXT_OFFSET_Y ); + m_text.SetHorizAlign( (Actor::HorizAlign)TEXT_H_ALIGN ); + m_text.SetVertAlign( (Actor::VertAlign)TEXT_V_ALIGN ); this->AddChild( &m_text ); } void OptionIcon::Load( PlayerNumber pn, CString sText, bool bHeader ) { bool bVacant = (sText==""); - m_spr.SetState( pn*3 + bVacant?1:2 ); + m_spr.SetState( pn*3 + (bHeader?0:(bVacant?1:2)) ); - m_text.SetText( sText ); + m_text.SetText( bHeader ? "" : sText ); + m_text.SetZoom( TEXT_ZOOM ); m_text.CropToWidth( TEXT_WIDTH ); - m_text.SetXY( TEXT_X, TEXT_Y ); - m_text.SetHorizAlign( (Actor::HorizAlign)TEXT_H_ALIGN ); - m_text.SetVertAlign( (Actor::VertAlign)TEXT_V_ALIGN ); } + +void OptionIcon::DrawPrimitives() +{ + ActorFrame::DrawPrimitives(); +} + diff --git a/stepmania/src/OptionIcon.h b/stepmania/src/OptionIcon.h index 356a6b3d07..162146bb11 100644 --- a/stepmania/src/OptionIcon.h +++ b/stepmania/src/OptionIcon.h @@ -23,6 +23,7 @@ public: OptionIcon(); void Load( PlayerNumber pn, CString sText, bool bHeader = false ); + void DrawPrimitives(); protected: BitmapText m_text; diff --git a/stepmania/src/OptionIconRow.cpp b/stepmania/src/OptionIconRow.cpp new file mode 100644 index 0000000000..ebe77ef115 --- /dev/null +++ b/stepmania/src/OptionIconRow.cpp @@ -0,0 +1,40 @@ +#include "stdafx.h" +/* +----------------------------------------------------------------------------- + Class: OptionIconRow + + Desc: A graphic displayed in the OptionIconRow during Dancing. + + Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. + Chris Danford +----------------------------------------------------------------------------- +*/ + +#include "OptionIconRow.h" +#include "ThemeManager.h" +#include "PlayerOptions.h" + + +#define SPACING_X THEME->GetMetricF("OptionIconRow","SpacingX") +#define SPACING_Y THEME->GetMetricF("OptionIconRow","SpacingY") + + +OptionIconRow::OptionIconRow() +{ + for( int i=0; iAddChild( &m_OptionIcon[i] ); + } +} + +void OptionIconRow::Refresh( PlayerNumber pn ) +{ + for( int i=0; iTrace( "ScreenMusicScroll::ScreenMusicScroll()" ); - int i; + int i; + + GAMESTATE->Reset(); // so that credits message for both players will show m_sprBackground.Load( THEME->GetPathTo("Graphics","music scroll background") ); m_sprBackground.StretchTo( CRect(SCREEN_LEFT,SCREEN_TOP,SCREEN_RIGHT,SCREEN_BOTTOM) ); diff --git a/stepmania/src/ScreenOptions.cpp b/stepmania/src/ScreenOptions.cpp index 8614199d4c..ca66109f62 100644 --- a/stepmania/src/ScreenOptions.cpp +++ b/stepmania/src/ScreenOptions.cpp @@ -21,18 +21,15 @@ #include "GameState.h" +#define ICONS_X( p ) THEME->GetMetricF("ScreenOptions",ssprintf("IconsP%dX",p+1)) +#define LABELS_X THEME->GetMetricF("ScreenOptions","LabelsX") +#define ITEMS_START_X THEME->GetMetricF("ScreenOptions","ItemsStartX") +#define ITEMS_GAP_X THEME->GetMetricF("ScreenOptions","ItemsGapX") +#define ITEMS_START_Y THEME->GetMetricF("ScreenOptions","ItemsStartY") +#define ITEMS_SPACING_Y THEME->GetMetricF("ScreenOptions","ItemsSpacingY") #define HELP_TEXT THEME->GetMetric("ScreenOptions","HelpText") #define TIMER_SECONDS THEME->GetMetricI("ScreenOptions","TimerSeconds") -const float HEADER_X = CENTER_X; -const float HEADER_Y = 50; -const float HELP_X = CENTER_X; -const float HELP_Y = SCREEN_HEIGHT-35; -const float ITEM_GAP_X = 14; -const float LABELS_X = 80; -const float LINE_START_Y = 80; -const float LINE_GAP_Y = 34; -const float ITEMS_START_X = 160; const ScreenMessage SM_PlaySample = ScreenMessage(SM_User-4); const ScreenMessage SM_GoToPrevScreen = ScreenMessage(SM_User-5); @@ -107,6 +104,9 @@ void ScreenOptions::Init( InputMode im, OptionLineData optionLineData[], int iNu { m_Underline[p][l].Load( (PlayerNumber)p, true ); m_framePage.AddChild( &m_Underline[p][l] ); + + m_OptionIcons[p][l].Load( (PlayerNumber)p, "BLAH", false ); + m_framePage.AddChild( &m_OptionIcons[p][l] ); } m_Highlight[p].Load( (PlayerNumber)p, false ); @@ -130,6 +130,7 @@ void ScreenOptions::Init( InputMode im, OptionLineData optionLineData[], int iNu InitOptionsText(); PositionUnderlines(); + PositionIcons(); PositionHighlights(); } @@ -152,19 +153,22 @@ void ScreenOptions::GetWidthXY( PlayerNumber p, int iRow, int &iWidthOut, int &i void ScreenOptions::InitOptionsText() { - const float fLineGap = LINE_GAP_Y - max(0, (m_iNumOptionLines-10)*2); + const float fLineGap = ITEMS_SPACING_Y - max(0, (m_iNumOptionLines-10)*2); // init m_textOptions from optionLines for( int i=0; iGetPathTo("Fonts","Header2") ); - title.SetText( optline.szTitle ); + title.SetLineHeight( 20 ); + CString sText = optline.szTitle; + sText.Replace( " ", "\n" ); + title.SetText( sText ); title.SetXY( LABELS_X, fY ); title.SetZoom( 0.7f ); title.SetVertAlign( Actor::align_middle ); @@ -186,7 +190,7 @@ void ScreenOptions::InitOptionsText() float fItemWidth = option.GetWidestLineWidthInSourcePixels() * option.GetZoomX(); fX += fItemWidth/2; option.SetXY( fX, fY ); - fX += fItemWidth/2 + ITEM_GAP_X; + fX += fItemWidth/2 + ITEMS_GAP_X; } } } @@ -240,6 +244,23 @@ void ScreenOptions::PositionUnderlines() } +void ScreenOptions::PositionIcons() +{ + // Set the position of the underscores showing the current choice for each option line. + for( int p=0; pGetMetricF("ScreenSelectMusic","BannerFrameX") -#define BANNER_FRAME_Y THEME->GetMetricF("ScreenSelectMusic","BannerFrameY") -#define BANNER_X THEME->GetMetricF("ScreenSelectMusic","BannerX") -#define BANNER_Y THEME->GetMetricF("ScreenSelectMusic","BannerY") -#define BANNER_WIDTH THEME->GetMetricF("ScreenSelectMusic","BannerWidth") -#define BANNER_HEIGHT THEME->GetMetricF("ScreenSelectMusic","BannerHeight") -#define BPM_X THEME->GetMetricF("ScreenSelectMusic","BPMX") -#define BPM_Y THEME->GetMetricF("ScreenSelectMusic","BPMY") -#define STAGE_X THEME->GetMetricF("ScreenSelectMusic","StageX") -#define STAGE_Y THEME->GetMetricF("ScreenSelectMusic","StageY") -#define CD_TITLE_X THEME->GetMetricF("ScreenSelectMusic","CDTitleX") -#define CD_TITLE_Y THEME->GetMetricF("ScreenSelectMusic","CDTitleY") -#define DIFFICULTY_X THEME->GetMetricF("ScreenSelectMusic","DifficultyX") -#define DIFFICULTY_Y THEME->GetMetricF("ScreenSelectMusic","DifficultyY") -#define ICON_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("IconP%dX",p+1)) -#define ICON_Y( i ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("IconP%dY",i+1)) -#define RADAR_X THEME->GetMetricF("ScreenSelectMusic","RadarX") -#define RADAR_Y THEME->GetMetricF("ScreenSelectMusic","RadarY") -#define SORT_ICON_X THEME->GetMetricF("ScreenSelectMusic","SortIconX") -#define SORT_ICON_Y THEME->GetMetricF("ScreenSelectMusic","SortIconY") -#define SCORE_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("ScoreP%dX",p+1)) -#define SCORE_Y( i ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("ScoreP%dY",i+1)) -#define METER_FRAME_X THEME->GetMetricF("ScreenSelectMusic","MeterFrameX") -#define METER_FRAME_Y THEME->GetMetricF("ScreenSelectMusic","MeterFrameY") -#define METER_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("MeterP%dX",p+1)) -#define METER_Y( i ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("MeterP%dY",i+1)) -#define WHEEL_X THEME->GetMetricF("ScreenSelectMusic","WheelX") -#define WHEEL_Y THEME->GetMetricF("ScreenSelectMusic","WheelY") -#define PLAYER_OPTIONS_X( p )THEME->GetMetricF("ScreenSelectMusic",ssprintf("PlayerOptionsP%dX",p+1)) -#define PLAYER_OPTIONS_Y( i )THEME->GetMetricF("ScreenSelectMusic",ssprintf("PlayerOptionsP%dY",i+1)) -#define SONG_OPTIONS_X THEME->GetMetricF("ScreenSelectMusic","SongOptionsX") -#define SONG_OPTIONS_Y THEME->GetMetricF("ScreenSelectMusic","SongOptionsY") -#define OPTION_ICONS_X THEME->GetMetricF("ScreenSelectMusic","OptionIconsX") -#define OPTION_ICONS_Y THEME->GetMetricF("ScreenSelectMusic","OptionIconsY") -#define HELP_TEXT THEME->GetMetric("ScreenSelectMusic","HelpText") -#define TIMER_SECONDS THEME->GetMetricI("ScreenSelectMusic","TimerSeconds") +#define BANNER_FRAME_X THEME->GetMetricF("ScreenSelectMusic","BannerFrameX") +#define BANNER_FRAME_Y THEME->GetMetricF("ScreenSelectMusic","BannerFrameY") +#define BANNER_X THEME->GetMetricF("ScreenSelectMusic","BannerX") +#define BANNER_Y THEME->GetMetricF("ScreenSelectMusic","BannerY") +#define BANNER_WIDTH THEME->GetMetricF("ScreenSelectMusic","BannerWidth") +#define BANNER_HEIGHT THEME->GetMetricF("ScreenSelectMusic","BannerHeight") +#define BPM_X THEME->GetMetricF("ScreenSelectMusic","BPMX") +#define BPM_Y THEME->GetMetricF("ScreenSelectMusic","BPMY") +#define STAGE_X THEME->GetMetricF("ScreenSelectMusic","StageX") +#define STAGE_Y THEME->GetMetricF("ScreenSelectMusic","StageY") +#define CD_TITLE_X THEME->GetMetricF("ScreenSelectMusic","CDTitleX") +#define CD_TITLE_Y THEME->GetMetricF("ScreenSelectMusic","CDTitleY") +#define DIFFICULTY_FRAME_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("DifficultyFrameP%dX",p+1)) +#define DIFFICULTY_FRAME_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("DifficultyFrameP%dY",p+1)) +#define DIFFICULTY_ICON_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("DifficultyIconP%dX",p+1)) +#define DIFFICULTY_ICON_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("DifficultyIconP%dY",p+1)) +#define RADAR_X THEME->GetMetricF("ScreenSelectMusic","RadarX") +#define RADAR_Y THEME->GetMetricF("ScreenSelectMusic","RadarY") +#define SORT_ICON_X THEME->GetMetricF("ScreenSelectMusic","SortIconX") +#define SORT_ICON_Y THEME->GetMetricF("ScreenSelectMusic","SortIconY") +#define SCORE_FRAME_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("ScoreFrameP%dX",p+1)) +#define SCORE_FRAME_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("ScoreFrameP%dY",p+1)) +#define SCORE_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("ScoreP%dX",p+1)) +#define SCORE_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("ScoreP%dY",p+1)) +#define METER_FRAME_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("MeterFrameP%dX",p+1)) +#define METER_FRAME_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("MeterFrameP%dY",p+1)) +#define METER_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("MeterP%dX",p+1)) +#define METER_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("MeterP%dY",p+1)) +#define WHEEL_X THEME->GetMetricF("ScreenSelectMusic","WheelX") +#define WHEEL_Y THEME->GetMetricF("ScreenSelectMusic","WheelY") +#define PLAYER_OPTIONS_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("PlayerOptionsP%dX",p+1)) +#define PLAYER_OPTIONS_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("PlayerOptionsP%dY",p+1)) +#define SONG_OPTIONS_X THEME->GetMetricF("ScreenSelectMusic","SongOptionsX") +#define SONG_OPTIONS_Y THEME->GetMetricF("ScreenSelectMusic","SongOptionsY") +#define OPTION_ICONS_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("OptionIconsP%dX",p+1)) +#define OPTION_ICONS_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("OptionIconsP%dY",p+1)) +#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; @@ -101,7 +103,6 @@ ScreenSelectMusic::ScreenSelectMusic() this->AddChild( &m_sprBannerFrame ); m_BPMDisplay.SetXY( BPM_X, BPM_Y ); - m_BPMDisplay.SetZoomX( 1.0f ); this->AddChild( &m_BPMDisplay ); m_textStage.LoadFromFont( THEME->GetPathTo("Fonts","Header2") ); @@ -117,13 +118,18 @@ ScreenSelectMusic::ScreenSelectMusic() m_sprCDTitle.SetXY( CD_TITLE_X, CD_TITLE_Y ); this->AddChild( &m_sprCDTitle ); - m_sprDifficultyFrame.Load( THEME->GetPathTo("Graphics","select music difficulty frame") ); - m_sprDifficultyFrame.SetXY( DIFFICULTY_X, DIFFICULTY_Y ); - this->AddChild( &m_sprDifficultyFrame ); - for( p=0; pIsPlayerEnabled(p) ) + continue; // skip + + m_sprDifficultyFrame[p].Load( THEME->GetPathTo("Graphics","select music difficulty frame 2x1") ); + m_sprDifficultyFrame[p].SetXY( DIFFICULTY_FRAME_X(p), DIFFICULTY_FRAME_Y(p) ); + m_sprDifficultyFrame[p].StopAnimating(); + m_sprDifficultyFrame[p].SetState( p ); + this->AddChild( &m_sprDifficultyFrame[p] ); + + m_DifficultyIcon[p].SetXY( DIFFICULTY_ICON_X(p), DIFFICULTY_ICON_Y(p) ); this->AddChild( &m_DifficultyIcon[p] ); } @@ -142,7 +148,7 @@ ScreenSelectMusic::ScreenSelectMusic() m_textSongOptions.SetDiffuse( D3DXCOLOR(1,1,1,1) ); // white this->AddChild( &m_textSongOptions ); - +/* for( p=0; pIsPlayerEnabled(p) ) @@ -158,14 +164,22 @@ ScreenSelectMusic::ScreenSelectMusic() m_textPlayerOptions[p].SetDiffuse( D3DXCOLOR(1,1,1,1) ); // white this->AddChild( &m_textPlayerOptions[p] ); } - - - m_sprMeterFrame.Load( THEME->GetPathTo("Graphics","select music meter frame") ); - m_sprMeterFrame.SetXY( METER_FRAME_X, METER_FRAME_Y ); - this->AddChild( &m_sprMeterFrame ); - +*/ for( p=0; pIsPlayerEnabled(p) ) + continue; + + m_OptionIconRow[p].SetXY( OPTION_ICONS_X(p), OPTION_ICONS_Y(p) ); + m_OptionIconRow[p].Refresh( (PlayerNumber)p ); + this->AddChild( &m_OptionIconRow[p] ); + + m_sprMeterFrame[p].Load( THEME->GetPathTo("Graphics","select music meter frame") ); + m_sprMeterFrame[p].SetXY( METER_FRAME_X(p), METER_FRAME_Y(p) ); + m_sprMeterFrame[p].StopAnimating(); + m_sprMeterFrame[p].SetState( p ); + this->AddChild( &m_sprMeterFrame[p] ); + m_FootMeter[p].LoadFromFont( THEME->GetPathTo("Fonts","meter") ); m_FootMeter[p].SetXY( METER_X(p), METER_Y(p) ); m_FootMeter[p].SetShadowLength( 2 ); @@ -241,72 +255,42 @@ void ScreenSelectMusic::DrawPrimitives() void ScreenSelectMusic::TweenOnScreen() { - float fOriginalZoomY; - int i; - CArray 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(); - apActorsInGroupInfoFrame[i]->SetX( fOriginalX-400 ); - apActorsInGroupInfoFrame[i]->BeginTweening( TWEEN_TIME, TWEEN_BOUNCE_END ); - apActorsInGroupInfoFrame[i]->SetTweenX( fOriginalX ); + m_sprDifficultyFrame[p].FadeOn( 0, "fade", TWEEN_TIME ); + m_sprMeterFrame[p].FadeOn( 0, "fade", TWEEN_TIME ); } - fOriginalZoomY = m_sprDifficultyFrame.GetZoomY(); - m_sprDifficultyFrame.BeginTweening( TWEEN_TIME ); - m_sprDifficultyFrame.SetTweenZoomY( fOriginalZoomY ); - - fOriginalZoomY = m_sprMeterFrame.GetZoomY(); - m_sprMeterFrame.BeginTweening( TWEEN_TIME ); - m_sprMeterFrame.SetTweenZoomY( fOriginalZoomY ); - m_GrooveRadar.TweenOnScreen(); - -// fOriginalZoomY = m_OptionIcons.GetZoomY(); -// m_OptionIcons.BeginTweening( TWEEN_TIME ); -// m_OptionIcons.SetTweenZoomY( fOriginalZoomY ); - fOriginalZoomY = m_textSongOptions.GetZoomY(); - m_textSongOptions.BeginTweening( TWEEN_TIME ); - m_textSongOptions.SetTweenZoomY( fOriginalZoomY ); + m_textSongOptions.FadeOn( 0, "fade", TWEEN_TIME ); for( int p=0; p apActorsInScore; for( p=0; pGetX(); - 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_sprHighScoreFrame[p].FadeOn( 0, SCORE_CONNECTED_TO_MUSIC_WHEEL?"accelerate right":"accelerate left", TWEEN_TIME ); + m_HighScore[p].FadeOn( 0, SCORE_CONNECTED_TO_MUSIC_WHEEL?"accelerate right":"accelerate left", TWEEN_TIME ); } m_MusicWheel.TweenOnScreen(); @@ -316,47 +300,34 @@ void ScreenSelectMusic::TweenOffScreen() { int i; - CArray apActorsInGroupInfoFrame; - apActorsInGroupInfoFrame.Add( &m_sprBannerFrame ); - apActorsInGroupInfoFrame.Add( &m_Banner ); - apActorsInGroupInfoFrame.Add( &m_BPMDisplay ); - apActorsInGroupInfoFrame.Add( &m_textStage ); - apActorsInGroupInfoFrame.Add( &m_sprCDTitle ); - for( i=0; iBeginTweening( TWEEN_TIME, TWEEN_BOUNCE_BEGIN ); - apActorsInGroupInfoFrame[i]->SetTweenX( apActorsInGroupInfoFrame[i]->GetX()-400 ); - } - - m_sprDifficultyFrame.BeginTweening( TWEEN_TIME ); - m_sprDifficultyFrame.SetTweenZoomY( 0 ); - - m_sprMeterFrame.BeginTweening( TWEEN_TIME ); - m_sprMeterFrame.SetTweenZoomY( 0 ); - - m_GrooveRadar.TweenOffScreen(); - -// m_OptionIcons.BeginTweening( TWEEN_TIME ); -// m_OptionIcons.SetTweenZoomY( 0 ); - - m_textSongOptions.BeginTweening( TWEEN_TIME ); - m_textSongOptions.SetTweenZoomY( 0 ); + m_sprBannerFrame.FadeOff( 0, "bounce left", TWEEN_TIME ); + m_Banner.FadeOff( 0, "bounce left", TWEEN_TIME ); + m_BPMDisplay.FadeOff( 0, "bounce left", TWEEN_TIME ); + m_textStage.FadeOff( 0, "bounce left", TWEEN_TIME ); + m_sprCDTitle.FadeOff( 0, "bounce left", TWEEN_TIME ); for( int p=0; p apActorsInScore; for( p=0; pm_PlayerOptions, &GAMESTATE->m_SongOptions ); +// m_PlayerOptionIcons.Refresh(); + for( int p=0; pIsPlayerEnabled(p) ) { CString s = GAMESTATE->m_PlayerOptions[p].GetString(); s.Replace( ", ", "\n" ); - m_textPlayerOptions[p].SetText( s ); +// m_textPlayerOptions[p].SetText( s ); } } diff --git a/stepmania/src/ScreenSelectMusic.h b/stepmania/src/ScreenSelectMusic.h index 5227dd75ad..135d632686 100644 --- a/stepmania/src/ScreenSelectMusic.h +++ b/stepmania/src/ScreenSelectMusic.h @@ -22,6 +22,7 @@ #include "GrooveRadar.h" #include "DifficultyIcon.h" #include "FootMeter.h" +#include "OptionIconRow.h" class ScreenSelectMusic : public Screen @@ -66,12 +67,13 @@ protected: BPMDisplay m_BPMDisplay; BitmapText m_textStage; Sprite m_sprCDTitle; - Sprite m_sprDifficultyFrame; + Sprite m_sprDifficultyFrame[NUM_PLAYERS]; DifficultyIcon m_DifficultyIcon[NUM_PLAYERS]; GrooveRadar m_GrooveRadar; - BitmapText m_textPlayerOptions[NUM_PLAYERS]; +// BitmapText m_textPlayerOptions[NUM_PLAYERS]; BitmapText m_textSongOptions; - Sprite m_sprMeterFrame; + OptionIconRow m_OptionIconRow[NUM_PLAYERS]; + Sprite m_sprMeterFrame[NUM_PLAYERS]; FootMeter m_FootMeter[NUM_PLAYERS]; MusicSortDisplay m_MusicSortDisplay; Sprite m_sprHighScoreFrame[NUM_PLAYERS]; diff --git a/stepmania/src/ScreenSelectStyle.cpp b/stepmania/src/ScreenSelectStyle.cpp index d25b5fc20c..fefb506342 100644 --- a/stepmania/src/ScreenSelectStyle.cpp +++ b/stepmania/src/ScreenSelectStyle.cpp @@ -275,9 +275,9 @@ void ScreenSelectStyle::MenuBack( PlayerNumber p ) void ScreenSelectStyle::TweenOnScreen() { for( int i=0; iGetMetricC("SongManager","GroupColor1") -#define GROUP_COLOR_2 THEME->GetMetricC("SongManager","GroupColor2") -#define GROUP_COLOR_3 THEME->GetMetricC("SongManager","GroupColor3") -#define GROUP_COLOR_4 THEME->GetMetricC("SongManager","GroupColor4") -#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 NUM_GROUP_COLORS THEME->GetMetricI("SongManager","NumGroupColors") +#define GROUP_COLOR( i ) THEME->GetMetricC("SongManager",ssprintf("GroupColor%d",i+1)) #define EXTRA_COLOR THEME->GetMetricC("SongManager","ExtraColor") const int NUM_GROUP_COLORS = 7; diff --git a/stepmania/src/StepMania.vcproj b/stepmania/src/StepMania.vcproj index d2355356eb..7c9b2b5629 100644 --- a/stepmania/src/StepMania.vcproj +++ b/stepmania/src/StepMania.vcproj @@ -698,18 +698,18 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ + + + + - - - - diff --git a/stepmania/src/ThemeManager.cpp b/stepmania/src/ThemeManager.cpp index 9c13f5ed43..5f788a50a8 100644 --- a/stepmania/src/ThemeManager.cpp +++ b/stepmania/src/ThemeManager.cpp @@ -31,7 +31,7 @@ ThemeManager::ThemeManager() m_pIniMetrics = new IniFile; /* Update the metric cache on the first call to GetMetric. */ - NextReloadCheck = -1; + m_uNextReloadTicks = -1; m_sCurThemeName = BASE_THEME_NAME; // Use te base theme for now. It's up to PrefsManager to change this. @@ -219,9 +219,9 @@ try_metric_again: CString sDefaultMetricPath = GetMetricsPathFromName(BASE_THEME_NAME); // Is our metric cache out of date? - if (NextReloadCheck == -1 || TIMER->GetTimeSinceStart() > NextReloadCheck) + if (m_uNextReloadTicks == -1 || ::GetTickCount() > m_uNextReloadTicks) { - NextReloadCheck = TIMER->GetTimeSinceStart()+1.0f; + m_uNextReloadTicks = GetTickCount()+1000; if( m_iHashForCurThemeMetrics != GetHashForFile(sCurMetricPath) || m_iHashForBaseThemeMetrics != GetHashForFile(sDefaultMetricPath) ) { diff --git a/stepmania/src/ThemeManager.h b/stepmania/src/ThemeManager.h index 18e012ce04..4c6a4981c2 100644 --- a/stepmania/src/ThemeManager.h +++ b/stepmania/src/ThemeManager.h @@ -18,8 +18,6 @@ class IniFile; class ThemeManager { - float NextReloadCheck; - public: ThemeManager(); ~ThemeManager(); @@ -48,6 +46,7 @@ protected: CString m_sCurThemeName; IniFile* m_pIniMetrics; // make this a pointer so we don't have to include IniFile in this header! + DWORD m_uNextReloadTicks; int m_iHashForCurThemeMetrics; int m_iHashForBaseThemeMetrics; };