diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 23f29c0ca7..011bebdf17 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -2170,6 +2170,8 @@ NextScreen=ScreenRanking [EditMenu] Arrows1X=SCREEN_CENTER_X-130 Arrows2X=SCREEN_CENTER_X+270 +ArrowsEnabledColor=1,1,1,1 +ArrowsDisabledColor=0.2,0.2,0.2,1 SongBannerX=SCREEN_CENTER_X+170 SongBannerY=SCREEN_CENTER_Y-110 SongBannerWidth=130 diff --git a/stepmania/src/EditMenu.cpp b/stepmania/src/EditMenu.cpp index da18ef4fbd..3b8c34ccf5 100644 --- a/stepmania/src/EditMenu.cpp +++ b/stepmania/src/EditMenu.cpp @@ -35,17 +35,22 @@ XToString( EditMenuAction, NUM_EDIT_MENU_ACTIONS ); XToThemedString( EditMenuAction, NUM_EDIT_MENU_ACTIONS ); StringToX( EditMenuAction ); +static CString ARROWS_X_NAME( size_t i ) { return ssprintf("Arrows%dX",i+1); } +static CString ROW_VALUE_X_NAME( size_t i ) { return ssprintf("RowValue%dX",i+1); } +static CString ROW_Y_NAME( size_t i ) { return ssprintf("Row%dY",i+1); } -#define ARROWS_X( i ) THEME->GetMetricF("EditMenu",ssprintf("Arrows%dX",i+1)) -#define SONG_BANNER_WIDTH THEME->GetMetricF("EditMenu","SongBannerWidth") -#define SONG_BANNER_HEIGHT THEME->GetMetricF("EditMenu","SongBannerHeight") -#define GROUP_BANNER_WIDTH THEME->GetMetricF("EditMenu","GroupBannerWidth") -#define GROUP_BANNER_HEIGHT THEME->GetMetricF("EditMenu","GroupBannerHeight") -#define ROW_LABELS_X THEME->GetMetricF("EditMenu","RowLabelsX") -#define ROW_LABEL_ON_COMMAND THEME->GetMetricA("EditMenu","RowLabelOnCommand") -#define ROW_VALUE_X( i ) THEME->GetMetricF("EditMenu",ssprintf("RowValue%dX",i+1)) -#define ROW_VALUE_ON_COMMAND THEME->GetMetricA("EditMenu","RowValueOnCommand") -#define ROW_Y( i ) THEME->GetMetricF("EditMenu",ssprintf("Row%dY",i+1)) +static ThemeMetric1D ARROWS_X ("EditMenu",ARROWS_X_NAME,NUM_ARROWS); +static ThemeMetric ARROWS_ENABLED_COLOR ("EditMenu","ArrowsEnabledColor"); +static ThemeMetric ARROWS_DISABLED_COLOR ("EditMenu","ArrowsDisabledColor"); +static ThemeMetric SONG_BANNER_WIDTH ("EditMenu","SongBannerWidth"); +static ThemeMetric SONG_BANNER_HEIGHT ("EditMenu","SongBannerHeight"); +static ThemeMetric GROUP_BANNER_WIDTH ("EditMenu","GroupBannerWidth"); +static ThemeMetric GROUP_BANNER_HEIGHT ("EditMenu","GroupBannerHeight"); +static ThemeMetric ROW_LABELS_X ("EditMenu","RowLabelsX"); +static ThemeMetric ROW_LABEL_ON_COMMAND("EditMenu","RowLabelOnCommand"); +static ThemeMetric1D ROW_VALUE_X ("EditMenu",ROW_VALUE_X_NAME,NUM_EDIT_MENU_ROWS); +static ThemeMetric ROW_VALUE_ON_COMMAND("EditMenu","RowValueOnCommand"); +static ThemeMetric1D ROW_Y ("EditMenu",ROW_Y_NAME,NUM_EDIT_MENU_ROWS); static void GetSongsToShowForGroup( const CString &sGroup, vector &vpSongsOut ) @@ -86,7 +91,7 @@ EditMenu::EditMenu() for( int i=0; i<2; i++ ) { m_sprArrows[i].Load( THEME->GetPathG("EditMenu",i==0?"left":"right") ); - m_sprArrows[i].SetX( ARROWS_X(i) ); + m_sprArrows[i].SetX( ARROWS_X.GetValue(i) ); this->AddChild( &m_sprArrows[i] ); } @@ -98,14 +103,14 @@ EditMenu::EditMenu() FOREACH_EditMenuRow( r ) { m_textLabel[r].LoadFromFont( THEME->GetPathF("EditMenu","title") ); - m_textLabel[r].SetXY( ROW_LABELS_X, ROW_Y(r) ); + m_textLabel[r].SetXY( ROW_LABELS_X, ROW_Y.GetValue(r) ); m_textLabel[r].SetText( EditMenuRowToThemedString(r) ); m_textLabel[r].RunCommands( ROW_LABEL_ON_COMMAND ); m_textLabel[r].SetHorizAlign( Actor::align_left ); this->AddChild( &m_textLabel[r] ); m_textValue[r].LoadFromFont( THEME->GetPathF("EditMenu","value") ); - m_textValue[r].SetXY( ROW_VALUE_X(r), ROW_Y(r) ); + m_textValue[r].SetXY( ROW_VALUE_X.GetValue(r), ROW_Y.GetValue(r) ); m_textValue[r].SetText( "blah" ); m_textValue[r].RunCommands( ROW_VALUE_ON_COMMAND ); this->AddChild( &m_textValue[r] ); @@ -326,19 +331,21 @@ void EditMenu::ChangeToRow( EditMenuRow newRow ) m_SelectedRow = newRow; for( int i=0; i<2; i++ ) - m_sprArrows[i].SetY( ROW_Y(newRow) ); - m_sprArrows[0].SetDiffuse( CanGoLeft()?RageColor(1,1,1,1):RageColor(0.2f,0.2f,0.2f,1) ); - m_sprArrows[1].SetDiffuse( CanGoRight()?RageColor(1,1,1,1):RageColor(0.2f,0.2f,0.2f,1) ); + m_sprArrows[i].SetY( ROW_Y.GetValue(newRow) ); + UpdateArrows(); +} + +void EditMenu::UpdateArrows() +{ + m_sprArrows[0].SetDiffuse( CanGoLeft() ? ARROWS_ENABLED_COLOR : ARROWS_DISABLED_COLOR ); + m_sprArrows[1].SetDiffuse( CanGoRight()? ARROWS_ENABLED_COLOR : ARROWS_DISABLED_COLOR ); m_sprArrows[0].EnableAnimation( CanGoLeft() ); m_sprArrows[1].EnableAnimation( CanGoRight() ); } void EditMenu::OnRowValueChanged( EditMenuRow row ) { - m_sprArrows[0].SetDiffuse( CanGoLeft()?RageColor(1,1,1,1):RageColor(0.2f,0.2f,0.2f,1) ); - m_sprArrows[1].SetDiffuse( CanGoRight()?RageColor(1,1,1,1):RageColor(0.2f,0.2f,0.2f,1) ); - m_sprArrows[0].EnableAnimation( CanGoLeft() ); - m_sprArrows[1].EnableAnimation( CanGoRight() ); + UpdateArrows(); switch( row ) { diff --git a/stepmania/src/EditMenu.h b/stepmania/src/EditMenu.h index e5e917a864..f7e73503f1 100644 --- a/stepmania/src/EditMenu.h +++ b/stepmania/src/EditMenu.h @@ -38,6 +38,7 @@ enum EditMenuAction const CString& EditMenuActionToString( EditMenuAction ema ); const CString& EditMenuActionToThemedString( EditMenuAction ema ); +const int NUM_ARROWS = 2; class EditMenu: public ActorFrame { @@ -72,7 +73,8 @@ public: EditMenuRow GetSelectedRow() const { return m_SelectedRow; } private: - Sprite m_sprArrows[2]; + void UpdateArrows(); + Sprite m_sprArrows[NUM_ARROWS]; EditMenuRow m_SelectedRow; int m_iSelection[NUM_EDIT_MENU_ROWS];