From 6d072975883ca8f520838f9bd57f362ea045ccf4 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Tue, 8 Mar 2005 00:32:49 +0000 Subject: [PATCH] per-row explanation text in ScreenEditMenu --- stepmania/src/EditMenu.h | 8 +++--- stepmania/src/ScreenEditMenu.cpp | 42 +++++++++++++++++++++++++------- stepmania/src/ScreenEditMenu.h | 2 ++ 3 files changed, 40 insertions(+), 12 deletions(-) diff --git a/stepmania/src/EditMenu.h b/stepmania/src/EditMenu.h index 6a2bfbe6bb..4dfdeb1ce8 100644 --- a/stepmania/src/EditMenu.h +++ b/stepmania/src/EditMenu.h @@ -23,9 +23,9 @@ enum EditMenuRow ROW_ACTION, NUM_EDIT_MENU_ROWS }; -#define FOREACH_EditMenuRow( emr ) FOREACH_ENUM( EditMenuRow, NUM_EDIT_MENU_ROWS, emr ) -const CString& RadarCategoryToString( RadarCategory cat ); -const CString& RadarCategoryToThemedString( RadarCategory cat ); +#define FOREACH_EditMenuRow( r ) FOREACH_ENUM( EditMenuRow, NUM_EDIT_MENU_ROWS, r ) +const CString& EditMenuRowToString( EditMenuRow r ); +const CString& EditMenuRowToThemedString( EditMenuRow r ); class EditMenu: public ActorFrame @@ -58,6 +58,8 @@ public: Difficulty GetSelectedDifficulty(); Difficulty GetSelectedSourceDifficulty(); + EditMenuRow GetSelectedRow() const { return m_SelectedRow; } + private: Sprite m_sprArrows[2]; diff --git a/stepmania/src/ScreenEditMenu.cpp b/stepmania/src/ScreenEditMenu.cpp index 65804afe5a..a9d96028ad 100644 --- a/stepmania/src/ScreenEditMenu.cpp +++ b/stepmania/src/ScreenEditMenu.cpp @@ -13,9 +13,9 @@ #include "Steps.h" #include "song.h" -#define PREV_SCREEN THEME->GetMetric(m_sName,"PrevScreen") -#define EXPLANATION_TEXT THEME->GetMetric(m_sName,"ExplanationText") -#define HELP_TEXT THEME->GetMetric(m_sName,"HelpText") +#define PREV_SCREEN THEME->GetMetric(m_sName,"PrevScreen") +#define EXPLANATION_TEXT( row ) THEME->GetMetric(m_sName,"Explanation"+EditMenuRowToString(row)) +#define HELP_TEXT THEME->GetMetric(m_sName,"HelpText") const ScreenMessage SM_RefreshSelector = (ScreenMessage)(SM_User+1); @@ -40,8 +40,8 @@ void ScreenEditMenu::Init() m_textExplanation.SetName( "Explanation" ); m_textExplanation.LoadFromFont( THEME->GetPathF(m_sName,"explanation") ); - SET_XY_AND_ON_COMMAND( m_textExplanation ); - m_textExplanation.SetText( EXPLANATION_TEXT ); + SET_XY( m_textExplanation ); + RefreshExplanationText(); this->AddChild( &m_textExplanation ); this->SortByDrawOrder(); @@ -67,22 +67,38 @@ void ScreenEditMenu::HandleScreenMessage( const ScreenMessage SM ) void ScreenEditMenu::MenuUp( PlayerNumber pn ) { - m_Selector.Up(); + if( m_Selector.CanGoUp() ) + { + m_Selector.Up(); + RefreshExplanationText(); + } } void ScreenEditMenu::MenuDown( PlayerNumber pn ) { - m_Selector.Down(); + if( m_Selector.CanGoDown() ) + { + m_Selector.Down(); + RefreshExplanationText(); + } } void ScreenEditMenu::MenuLeft( PlayerNumber pn, const InputEventType type ) { - m_Selector.Left(); + if( m_Selector.CanGoLeft() ) + { + m_Selector.Left(); + RefreshExplanationText(); + } } void ScreenEditMenu::MenuRight( PlayerNumber pn, const InputEventType type ) { - m_Selector.Right(); + if( m_Selector.CanGoRight() ) + { + m_Selector.Right(); + RefreshExplanationText(); + } } @@ -221,6 +237,14 @@ void ScreenEditMenu::MenuBack( PlayerNumber pn ) SOUND->StopMusic(); } +void ScreenEditMenu::RefreshExplanationText() +{ + m_textExplanation.SetText( EXPLANATION_TEXT(m_Selector.GetSelectedRow()) ); + m_textExplanation.StopTweening(); + ON_COMMAND( m_textExplanation ); +} + + /* * (c) 2002-2004 Chris Danford * All rights reserved. diff --git a/stepmania/src/ScreenEditMenu.h b/stepmania/src/ScreenEditMenu.h index e89cd2632f..d4073142ba 100644 --- a/stepmania/src/ScreenEditMenu.h +++ b/stepmania/src/ScreenEditMenu.h @@ -22,6 +22,8 @@ private: void MenuBack( PlayerNumber pn ); void MenuStart( PlayerNumber pn ); + void RefreshExplanationText(); + EditMenu m_Selector; BitmapText m_textExplanation;