diff --git a/Docs/Changelog_sm-ssc.txt b/Docs/Changelog_sm-ssc.txt index 555d71f8c0..e722f656fc 100644 --- a/Docs/Changelog_sm-ssc.txt +++ b/Docs/Changelog_sm-ssc.txt @@ -13,6 +13,19 @@ _____________________________________________________________________________ -------- * [MusicWheelItem] Gave NormalPart/ColorPart names, so metrics can be used to manipulate them. [freem] +* [EditMenu] Converted old non-specific metrics to more specific metrics. [freem] + {Metric Changes} + SongBannerWidth,SongBannerHeight -> SongBannerOnCommand + GroupBannerWidth,GroupBannerHeight -> GroupBannerOnCommand + RowLabelsX -> Label#X + RowLabelOnCommand -> Label#OnCommand + RowValue#X -> Value#X + RowValueOnCommand -> Row#OnCommand + {Metric Additions} + SongBannerChangeCommand/GroupBannerChangeCommand - runs when song/group + banner is changed. + Label#GainFocus/LoseFocusCommand and Value#GainFocus/LoseFocusCommand - runs + when the Label and Value gain/lose focus. ================================================================================ sm-ssc v1.1 | 20101120 diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index 5223639570..d670274d0f 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -3336,37 +3336,30 @@ Line4="gamecommand;screen,ScreenOptionsManageCourses;name,Edit Courses" [EditMenu] EditMode="EditMode_Full" -TextBannerType="TextBannerEditMode" ShowGroups=true + Arrows1X=SCREEN_CENTER_X-130 Arrows2X=SCREEN_CENTER_X+270 ArrowsEnabledCommand=diffuse,color("1,1,1,1");shadowlengthy,1;shadowcolor,color("#002740"); ArrowsDisabledCommand=diffuse,color("0.45,0.45,0.45,1");shadowlengthy,1;shadowcolor,color("#002740"); -SongBannerX=SCREEN_CENTER_X+170 -SongBannerY=SCREEN_CENTER_Y-90 -SongBannerWidth=128 -SongBannerHeight=40 -SongTextBannerX=SCREEN_CENTER_X-64 -SongTextBannerY=SCREEN_CENTER_Y-90 + GroupBannerX=SCREEN_CENTER_X+170 GroupBannerY=SCREEN_CENTER_Y-140 -GroupBannerWidth=128 -GroupBannerHeight=40 +GroupBannerOnCommand=scaletoclipped,128,40 + +SongBannerX=SCREEN_CENTER_X+170 +SongBannerY=SCREEN_CENTER_Y-90 +SongBannerOnCommand=scaletoclipped,128,40 + +TextBannerType="TextBannerEditMode" +SongTextBannerX=SCREEN_CENTER_X-64 +SongTextBannerY=SCREEN_CENTER_Y-90 + StepsDisplayX=SCREEN_CENTER_X+170 StepsDisplayY=SCREEN_CENTER_Y-0 StepsDisplaySourceX=SCREEN_CENTER_X+170 StepsDisplaySourceY=SCREEN_CENTER_Y+80 -RowLabelsX=SCREEN_CENTER_X-250 -RowLabelOnCommand=shadowlength,1;zoom,0.75 -RowValue1X=SCREEN_CENTER_X -RowValue2X=SCREEN_CENTER_X+60 -RowValue3X=SCREEN_CENTER_X+60 -RowValue4X=SCREEN_CENTER_X -RowValue5X=SCREEN_CENTER_X+60 -RowValue6X=SCREEN_CENTER_X -RowValue7X=SCREEN_CENTER_X+60 -RowValueOnCommand=shadowlength,1;zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65 Row1Y=SCREEN_CENTER_Y-140 Row2Y=SCREEN_CENTER_Y-90 Row3Y=SCREEN_CENTER_Y-40 @@ -3375,6 +3368,64 @@ Row5Y=SCREEN_CENTER_Y+40 Row6Y=SCREEN_CENTER_Y+80 Row7Y=SCREEN_CENTER_Y+120 +Label1X=SCREEN_CENTER_X-250 +Label1Y=THEME:GetMetric("EditMode","Row1Y") +Label1OnCommand=shadowlength,1;zoom,0.75 +Label1OffCommand= +Label2X=SCREEN_CENTER_X-250 +Label2Y=THEME:GetMetric("EditMode","Row2Y") +Label2OnCommand=shadowlength,1;zoom,0.75 +Label2OffCommand= +Label3X=SCREEN_CENTER_X-250 +Label3Y=THEME:GetMetric("EditMode","Row3Y") +Label3OnCommand=shadowlength,1;zoom,0.75 +Label3OffCommand= +Label4X=SCREEN_CENTER_X-250 +Label4Y=THEME:GetMetric("EditMode","Row4Y") +Label4OnCommand=shadowlength,1;zoom,0.75 +Label4OffCommand= +Label5X=SCREEN_CENTER_X-250 +Label5Y=THEME:GetMetric("EditMode","Row5Y") +Label5OnCommand=shadowlength,1;zoom,0.75 +Label5OffCommand= +Label6X=SCREEN_CENTER_X-250 +Label6Y=THEME:GetMetric("EditMode","Row6Y") +Label6OnCommand=shadowlength,1;zoom,0.75 +Label6OffCommand= +Label7X=SCREEN_CENTER_X-250 +Label7Y=THEME:GetMetric("EditMode","Row7Y") +Label7OnCommand=shadowlength,1;zoom,0.75 +Label7OffCommand= + +Value1X=SCREEN_CENTER_X +Value1Y=THEME:GetMetric("EditMode","Row1Y") +Value1OnCommand=shadowlength,1;zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65 +Value1OffCommand= +Value2X=SCREEN_CENTER_X+60 +Value2Y=THEME:GetMetric("EditMode","Row2Y") +Value2OnCommand=shadowlength,1;zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65 +Value2OffCommand= +Value3X=SCREEN_CENTER_X+60 +Value3Y=THEME:GetMetric("EditMode","Row3Y") +Value3OnCommand=shadowlength,1;zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65 +Value3OffCommand= +Value4X=SCREEN_CENTER_X +Value4Y=THEME:GetMetric("EditMode","Row4Y") +Value4OnCommand=shadowlength,1;zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65 +Value4OffCommand= +Value5X=SCREEN_CENTER_X+60 +Value5Y=THEME:GetMetric("EditMode","Row5Y") +Value5OnCommand=shadowlength,1;zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65 +Value5OffCommand= +Value6X=SCREEN_CENTER_X +Value6Y=THEME:GetMetric("EditMode","Row6Y") +Value6OnCommand=shadowlength,1;zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65 +Value6OffCommand= +Value7X=SCREEN_CENTER_X+60 +Value7Y=THEME:GetMetric("EditMode","Row7Y") +Value7OnCommand=shadowlength,1;zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65 +Value7OffCommand= + [TextBannerEditMode] Fallback="TextBanner" diff --git a/src/EditMenu.cpp b/src/EditMenu.cpp index 77a1c77651..df779a3dbd 100644 --- a/src/EditMenu.cpp +++ b/src/EditMenu.cpp @@ -14,7 +14,6 @@ #include "UnlockManager.h" #include "SongUtil.h" - static const char *EditMenuRowNames[] = { "Group", "Song", @@ -38,10 +37,8 @@ XToLocalizedString( EditMenuAction ); StringToX( EditMenuAction ); static RString ARROWS_X_NAME( size_t i ) { return ssprintf("Arrows%dX",int(i+1)); } -static RString ROW_VALUE_X_NAME( size_t i ) { return ssprintf("RowValue%dX",int(i+1)); } static RString ROW_Y_NAME( size_t i ) { return ssprintf("Row%dY",int(i+1)); } - void EditMenu::StripLockedStepsAndDifficulty( vector &v ) { const Song *pSong = GetSelectedSong(); @@ -110,14 +107,6 @@ void EditMenu::Load( const RString &sType ) ARROWS_X.Load(sType,ARROWS_X_NAME,NUM_ARROWS); ARROWS_ENABLED_COMMAND.Load(sType,"ArrowsEnabledCommand"); ARROWS_DISABLED_COMMAND.Load(sType,"ArrowsDisabledCommand"); - SONG_BANNER_WIDTH.Load(sType,"SongBannerWidth"); - SONG_BANNER_HEIGHT.Load(sType,"SongBannerHeight"); - GROUP_BANNER_WIDTH.Load(sType,"GroupBannerWidth"); - GROUP_BANNER_HEIGHT.Load(sType,"GroupBannerHeight"); - ROW_LABELS_X.Load(sType,"RowLabelsX"); - ROW_LABEL_ON_COMMAND.Load(sType,"RowLabelOnCommand"); - ROW_VALUE_X.Load(sType,ROW_VALUE_X_NAME,NUM_EditMenuRow); - ROW_VALUE_ON_COMMAND.Load(sType,"RowValueOnCommand"); ROW_Y.Load(sType,ROW_Y_NAME,NUM_EditMenuRow); EDIT_MODE.Load(sType,"EditMode"); TEXT_BANNER_TYPE.Load( m_sName, "TextBannerType" ); @@ -133,39 +122,39 @@ void EditMenu::Load( const RString &sType ) ZERO( m_iSelection ); - FOREACH_EditMenuRow( r ) { + m_textLabel[r].SetName(ssprintf("Label%i",r+1)); m_textLabel[r].LoadFromFont( THEME->GetPathF(sType,"title") ); - m_textLabel[r].SetXY( ROW_LABELS_X, ROW_Y.GetValue(r) ); m_textLabel[r].SetText( EditMenuRowToLocalizedString(r) ); - m_textLabel[r].RunCommands( ROW_LABEL_ON_COMMAND ); - m_textLabel[r].SetHorizAlign( align_left ); + ActorUtil::LoadAllCommandsAndSetXY( m_textLabel[r], sType ); + //m_textLabel[r].SetHorizAlign( align_left ); this->AddChild( &m_textLabel[r] ); + m_textValue[r].SetName(ssprintf("Value%i",r+1)); m_textValue[r].LoadFromFont( THEME->GetPathF(sType,"value") ); - 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 ); + ActorUtil::LoadAllCommandsAndSetXY( m_textValue[r], sType ); this->AddChild( &m_textValue[r] ); } m_textLabel[ROW_GROUP].SetVisible( SHOW_GROUPS.GetValue() ); m_textValue[ROW_GROUP].SetVisible( SHOW_GROUPS.GetValue() ); - - /* Load low-res banners, if needed. */ + // Load low-res banners, if needed. BANNERCACHE->Demand(); if( SHOW_GROUPS.GetValue() ) { m_GroupBanner.SetName( "GroupBanner" ); ActorUtil::SetXY( m_GroupBanner, sType ); + ActorUtil::LoadAllCommands( m_GroupBanner, sType ); this->AddChild( &m_GroupBanner ); } m_SongBanner.SetName( "SongBanner" ); ActorUtil::SetXY( m_SongBanner, sType ); + ActorUtil::LoadAllCommands( m_SongBanner, sType ); this->AddChild( &m_SongBanner ); m_SongTextBanner.SetName( "SongTextBanner" ); @@ -173,12 +162,12 @@ void EditMenu::Load( const RString &sType ) ActorUtil::SetXY( m_SongTextBanner, sType ); ActorUtil::LoadAllCommands( m_SongTextBanner, sType ); this->AddChild( &m_SongTextBanner ); - + m_StepsDisplay.SetName( "StepsDisplay" ); m_StepsDisplay.Load( "StepsDisplayEdit", NULL ); ActorUtil::SetXY( m_StepsDisplay, sType ); this->AddChild( &m_StepsDisplay ); - + m_StepsDisplaySource.SetName( "StepsDisplaySource" ); m_StepsDisplaySource.Load( "StepsDisplayEdit", NULL ); ActorUtil::SetXY( m_StepsDisplaySource, sType ); @@ -187,13 +176,10 @@ void EditMenu::Load( const RString &sType ) m_soundChangeRow.Load( THEME->GetPathS(sType,"row"), true ); m_soundChangeValue.Load( THEME->GetPathS(sType,"value"), true ); - // // fill in data structures - // GetGroupsToShow( m_sGroups ); m_StepsTypes = CommonMetrics::STEPS_TYPES_TO_SHOW.GetValue(); - RefreshAll(); } @@ -253,7 +239,7 @@ bool EditMenu::CanGoDown() bool EditMenu::CanGoLeft() { if( m_SelectedRow == ROW_SONG || m_SelectedRow == ROW_GROUP ) - return true; /* wraps */ + return true; // wraps return m_iSelection[m_SelectedRow] != 0; } @@ -261,12 +247,12 @@ int EditMenu::GetRowSize( EditMenuRow er ) const { switch( er ) { - case ROW_GROUP: return m_sGroups.size(); + case ROW_GROUP: return m_sGroups.size(); case ROW_SONG: return m_pSongs.size(); - case ROW_STEPS_TYPE: return m_StepsTypes.size(); - case ROW_STEPS: return m_vpSteps.size(); + case ROW_STEPS_TYPE: return m_StepsTypes.size(); + case ROW_STEPS: return m_vpSteps.size(); case ROW_SOURCE_STEPS_TYPE: return m_StepsTypes.size(); - case ROW_SOURCE_STEPS: return m_vpSourceSteps.size(); + case ROW_SOURCE_STEPS: return m_vpSourceSteps.size(); case ROW_ACTION: return m_Actions.size(); default: FAIL_M( ssprintf("%i", er) ); } @@ -276,7 +262,7 @@ int EditMenu::GetRowSize( EditMenuRow er ) const bool EditMenu::CanGoRight() { if( m_SelectedRow == ROW_SONG || m_SelectedRow == ROW_GROUP ) - return true; /* wraps */ + return true; // wraps return m_iSelection[m_SelectedRow] != GetRowSize(m_SelectedRow)-1; } @@ -344,9 +330,13 @@ void EditMenu::Right() } } - void EditMenu::ChangeToRow( EditMenuRow newRow ) { + m_textLabel[newRow].PlayCommand("GainFocus"); + m_textValue[newRow].PlayCommand("GainFocus"); + m_textLabel[m_SelectedRow].PlayCommand("LoseFocus"); + m_textValue[m_SelectedRow].PlayCommand("LoseFocus"); + m_SelectedRow = newRow; for( int i=0; i<2; i++ ) @@ -374,7 +364,7 @@ void EditMenu::OnRowValueChanged( EditMenuRow row ) if( SHOW_GROUPS.GetValue() ) { m_GroupBanner.LoadFromSongGroup( GetSelectedGroup() ); - m_GroupBanner.ScaleToClipped( GROUP_BANNER_WIDTH, GROUP_BANNER_HEIGHT ); + m_GroupBanner.PlayCommand("Changed"); } m_pSongs.clear(); GetSongsToShowForGroup( GetSelectedGroup(), m_pSongs ); @@ -383,7 +373,7 @@ void EditMenu::OnRowValueChanged( EditMenuRow row ) case ROW_SONG: m_textValue[ROW_SONG].SetText( "" ); m_SongBanner.LoadFromSong( GetSelectedSong() ); - m_SongBanner.ScaleToClipped( SONG_BANNER_WIDTH, SONG_BANNER_HEIGHT ); + m_SongBanner.PlayCommand("Changed"); m_SongTextBanner.SetFromSong( GetSelectedSong() ); // fall through @@ -461,7 +451,7 @@ void EditMenu::OnRowValueChanged( EditMenuRow row ) } } StripLockedStepsAndDifficulty( m_vpSteps ); - + FOREACH( StepsAndDifficulty, m_vpSteps, s ) { if( s->dc == dcOld ) @@ -572,7 +562,6 @@ void EditMenu::OnRowValueChanged( EditMenuRow row ) } } - /* * (c) 2001-2004 Chris Danford * All rights reserved. diff --git a/src/EditMenu.h b/src/EditMenu.h index b816250a9e..0d03ef1e04 100644 --- a/src/EditMenu.h +++ b/src/EditMenu.h @@ -97,7 +97,6 @@ private: StepsDisplay m_StepsDisplay; StepsDisplay m_StepsDisplaySource; - struct StepsAndDifficulty { StepsAndDifficulty( Steps *s, Difficulty d ) { pSteps = s; dc = d; } @@ -122,16 +121,6 @@ private: ThemeMetric1D ARROWS_X; ThemeMetric ARROWS_ENABLED_COMMAND; ThemeMetric ARROWS_DISABLED_COMMAND; - // todo: remove these next 4 metrics in favor of commands -aj - ThemeMetric SONG_BANNER_WIDTH; - ThemeMetric SONG_BANNER_HEIGHT; - ThemeMetric GROUP_BANNER_WIDTH; - ThemeMetric GROUP_BANNER_HEIGHT; - // - ThemeMetric ROW_LABELS_X; - ThemeMetric ROW_LABEL_ON_COMMAND; - ThemeMetric1D ROW_VALUE_X; - ThemeMetric ROW_VALUE_ON_COMMAND; ThemeMetric1D ROW_Y; public: ThemeMetric EDIT_MODE;