Have OptionRow load from its own metrics group rather than from ScreeOptions. The purpose of some elements isn't clear from the element name when everything loads from one group.

This commit is contained in:
Chris Danford
2008-04-27 19:47:50 +00:00
parent c7d3d1c0e3
commit c8d8b8925d
9 changed files with 38 additions and 50 deletions
+7 -24
View File
@@ -3,15 +3,7 @@
#include "ThemeManager.h" #include "ThemeManager.h"
#include "PlayerOptions.h" #include "PlayerOptions.h"
#include "RageUtil.h" #include "RageUtil.h"
#include "ActorUtil.h"
#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")
#define UPPERCASE THEME->GetMetricB("OptionIcon","Uppercase")
OptionIcon::OptionIcon() OptionIcon::OptionIcon()
{ {
@@ -29,21 +21,17 @@ OptionIcon::OptionIcon( const OptionIcon &cpy ):
this->AddChild( &m_text ); this->AddChild( &m_text );
} }
void OptionIcon::Load( RString sType ) void OptionIcon::Load( RString sMetricsGroup )
{ {
m_sprFilled.Load( THEME->GetPathG(sType,"icon filled") ); m_sprFilled.Load( THEME->GetPathG(sMetricsGroup,"Filled") );
this->AddChild( m_sprFilled ); this->AddChild( m_sprFilled );
m_sprEmpty.Load( THEME->GetPathG(sType,"icon empty") ); m_sprEmpty.Load( THEME->GetPathG(sMetricsGroup,"Empty") );
this->AddChild( m_sprEmpty ); this->AddChild( m_sprEmpty );
m_text.LoadFromFont( THEME->GetPathF(sType,"icon") ); m_text.LoadFromFont( THEME->GetPathF(sMetricsGroup,"Text") );
m_text.SetShadowLength( 0 ); m_text.SetName( "Text" );
m_text.SetZoom( TEXT_ZOOM ); ActorUtil::SetXYAndOnCommand( m_text, sMetricsGroup );
m_text.SetXY( TEXT_OFFSET_X, TEXT_OFFSET_Y );
// XXX: Hack to make this call the correct function.
((Actor&)m_text).SetHorizAlign( (HorizAlign)TEXT_H_ALIGN );
((Actor&)m_text).SetVertAlign( (VertAlign)TEXT_V_ALIGN );
this->AddChild( &m_text ); this->AddChild( &m_text );
Set(""); Set("");
@@ -65,9 +53,6 @@ void OptionIcon::Set( const RString &_sText )
if( 0==stricmp(sText,sStopWords[i]) ) if( 0==stricmp(sText,sStopWords[i]) )
sText = ""; sText = "";
if( UPPERCASE )
sText.MakeUpper();
sText.Replace( " ", "\n" ); sText.Replace( " ", "\n" );
bool bVacant = (sText==""); bool bVacant = (sText=="");
@@ -75,8 +60,6 @@ void OptionIcon::Set( const RString &_sText )
m_sprEmpty->SetVisible( bVacant ); m_sprEmpty->SetVisible( bVacant );
m_text.SetText( sText ); m_text.SetText( sText );
m_text.SetZoom( TEXT_ZOOM );
m_text.CropToWidth( TEXT_WIDTH );
} }
/* /*
+1 -2
View File
@@ -8,13 +8,12 @@
#include "BitmapText.h" #include "BitmapText.h"
#include "PlayerNumber.h" #include "PlayerNumber.h"
class OptionIcon : public ActorFrame class OptionIcon : public ActorFrame
{ {
public: public:
OptionIcon(); OptionIcon();
OptionIcon( const OptionIcon &cpy ); OptionIcon( const OptionIcon &cpy );
void Load( RString sType ); void Load( RString sMetricsGroup );
void Set( const RString &sText ); void Set( const RString &sText );
protected: protected:
+2 -1
View File
@@ -38,13 +38,14 @@ void OptionIconRow::Load( const RString &sMetricsGroup, PlayerNumber pn )
SPACING_X.Load(sMetricsGroup,"SpacingX"); SPACING_X.Load(sMetricsGroup,"SpacingX");
SPACING_Y.Load(sMetricsGroup,"SpacingY"); SPACING_Y.Load(sMetricsGroup,"SpacingY");
NUM_OPTION_ICONS.Load(sMetricsGroup,"NumOptionIcons"); NUM_OPTION_ICONS.Load(sMetricsGroup,"NumOptionIcons");
OPTION_ICON_METRICS_GROUP.Load(sMetricsGroup,"OptionIconMetricsGroup");
for( int i=0; i<NUM_OPTION_ICONS; i++ ) for( int i=0; i<NUM_OPTION_ICONS; i++ )
{ {
OptionIcon *p = new OptionIcon; OptionIcon *p = new OptionIcon;
p->SetName( "OptionIcon" ); p->SetName( "OptionIcon" );
p->SetXY( i*SPACING_X, i*SPACING_Y ); p->SetXY( i*SPACING_X, i*SPACING_Y );
p->Load( sMetricsGroup ); p->Load( OPTION_ICON_METRICS_GROUP );
ActorUtil::LoadAllCommands( p, sMetricsGroup ); ActorUtil::LoadAllCommands( p, sMetricsGroup );
m_vpOptionIcon.push_back( p ); m_vpOptionIcon.push_back( p );
this->AddChild( p ); this->AddChild( p );
+1
View File
@@ -35,6 +35,7 @@ protected:
ThemeMetric<float> SPACING_X; ThemeMetric<float> SPACING_X;
ThemeMetric<float> SPACING_Y; ThemeMetric<float> SPACING_Y;
ThemeMetric<int> NUM_OPTION_ICONS; ThemeMetric<int> NUM_OPTION_ICONS;
ThemeMetric<RString> OPTION_ICON_METRICS_GROUP;
vector<OptionIcon*> m_vpOptionIcon; vector<OptionIcon*> m_vpOptionIcon;
}; };
+17 -16
View File
@@ -84,8 +84,8 @@ void OptionRowType::Load( const RString &sType, Actor *pParent )
{ {
m_sType = sType; m_sType = sType;
ROWFRAME_X .Load(sType,"RowFrameX"); FRAME_X .Load(sType,"FrameX");
ROWFRAME_ON_COMMAND .Load(sType,"RowFrameOnCommand"); FRAME_ON_COMMAND .Load(sType,"FrameOnCommand");
TITLE_X .Load(sType,"TitleX"); TITLE_X .Load(sType,"TitleX");
TITLE_ON_COMMAND .Load(sType,"TitleOnCommand"); TITLE_ON_COMMAND .Load(sType,"TitleOnCommand");
TITLE_GAIN_FOCUS_COMMAND .Load(sType,"TitleGainFocusCommand"); TITLE_GAIN_FOCUS_COMMAND .Load(sType,"TitleGainFocusCommand");
@@ -110,6 +110,7 @@ void OptionRowType::Load( const RString &sType, Actor *pParent )
SHOW_BPM_IN_SPEED_TITLE .Load(sType,"ShowBpmInSpeedTitle"); SHOW_BPM_IN_SPEED_TITLE .Load(sType,"ShowBpmInSpeedTitle");
SHOW_OPTION_ICONS .Load(sType,"ShowOptionIcons"); SHOW_OPTION_ICONS .Load(sType,"ShowOptionIcons");
SHOW_UNDERLINES .Load(sType,"ShowUnderlines"); SHOW_UNDERLINES .Load(sType,"ShowUnderlines");
OPTION_ICON_METRICS_GROUP .Load(sType,"OptionIconMetricsGroup");
m_textItem.LoadFromFont( THEME->GetPathF(sType,"item") ); m_textItem.LoadFromFont( THEME->GetPathF(sType,"item") );
if( SHOW_UNDERLINES ) if( SHOW_UNDERLINES )
@@ -118,10 +119,10 @@ void OptionRowType::Load( const RString &sType, Actor *pParent )
m_Underline[p].Load( sType, OptionsCursor::underline, p ); m_Underline[p].Load( sType, OptionsCursor::underline, p );
} }
m_textTitle.LoadFromFont( THEME->GetPathF(sType,"title") ); m_textTitle.LoadFromFont( THEME->GetPathF(sType,"title") );
m_sprRowFrameNormal.Load( ActorUtil::MakeActor( THEME->GetPathG(sType,"RowFrameNormal"), pParent ) ); m_sprFrameNormal.Load( ActorUtil::MakeActor( THEME->GetPathG(sType,"FrameNormal"), pParent ) );
m_sprRowFrameExit.Load( ActorUtil::MakeActor( THEME->GetPathG(sType,"RowFrameExit"), pParent ) ); m_sprFrameExit.Load( ActorUtil::MakeActor( THEME->GetPathG(sType,"FrameExit"), pParent ) );
if( SHOW_OPTION_ICONS ) if( SHOW_OPTION_ICONS )
m_OptionIcon.Load( sType ); m_OptionIcon.Load( OPTION_ICON_METRICS_GROUP );
} }
void OptionRow::LoadNormal( OptionRowHandler *pHand, bool bFirstItemGoesDown ) void OptionRow::LoadNormal( OptionRowHandler *pHand, bool bFirstItemGoesDown )
@@ -255,14 +256,14 @@ void OptionRow::InitText( RowType type )
{ {
DEFAULT_FAIL( type ); DEFAULT_FAIL( type );
case RowType_Normal: case RowType_Normal:
m_sprRowFrame = m_pParentType->m_sprRowFrameNormal->Copy(); m_sprFrame = m_pParentType->m_sprFrameNormal->Copy();
break; break;
case RowType_Exit: case RowType_Exit:
m_sprRowFrame = m_pParentType->m_sprRowFrameExit->Copy(); m_sprFrame = m_pParentType->m_sprFrameExit->Copy();
break; break;
} }
m_sprRowFrame->SetDrawOrder(-1); // under title m_sprFrame->SetDrawOrder(-1); // under title
m_Frame.AddChild( m_sprRowFrame ); m_Frame.AddChild( m_sprFrame );
if( m_pParentType->SHOW_OPTION_ICONS ) if( m_pParentType->SHOW_OPTION_ICONS )
{ {
@@ -414,11 +415,11 @@ void OptionRow::InitText( RowType type )
switch( GetRowType() ) switch( GetRowType() )
{ {
case OptionRow::RowType_Normal: case OptionRow::RowType_Normal:
m_sprRowFrame->SetX( m_pParentType->ROWFRAME_X ); m_sprFrame->SetX( m_pParentType->FRAME_X );
m_sprRowFrame->RunCommands( m_pParentType->ROWFRAME_ON_COMMAND ); m_sprFrame->RunCommands( m_pParentType->FRAME_ON_COMMAND );
break; break;
case OptionRow::RowType_Exit: case OptionRow::RowType_Exit:
m_sprRowFrame->SetVisible( false ); m_sprFrame->SetVisible( false );
break; break;
} }
@@ -590,9 +591,9 @@ void OptionRow::UpdateEnabledDisabled()
else if( bRowEnabled ) color = m_pParentType->COLOR_NOT_SELECTED; else if( bRowEnabled ) color = m_pParentType->COLOR_NOT_SELECTED;
else color = m_pParentType->COLOR_DISABLED; else color = m_pParentType->COLOR_DISABLED;
if( m_sprRowFrame != NULL ) if( m_sprFrame != NULL )
m_sprRowFrame->SetGlobalDiffuseColor( color ); m_sprFrame->SetGlobalDiffuseColor( color );
m_sprRowFrame->PlayCommand( bThisRowHasFocusByAny ? "GainFocus" : "LoseFocus" ); m_sprFrame->PlayCommand( bThisRowHasFocusByAny ? "GainFocus" : "LoseFocus" );
m_textTitle->SetGlobalDiffuseColor( color ); m_textTitle->SetGlobalDiffuseColor( color );
@@ -676,7 +677,7 @@ void OptionRow::SetOptionIcon( PlayerNumber pn, const RString &sText, GameComman
// update row frame // update row frame
Message msg( "Refresh" ); Message msg( "Refresh" );
msg.SetParam( "GameCommand", &gc ); msg.SetParam( "GameCommand", &gc );
m_sprRowFrame->HandleMessage( msg ); m_sprFrame->HandleMessage( msg );
if( m_OptionIcons[pn] != NULL ) if( m_OptionIcons[pn] != NULL )
m_OptionIcons[pn]->Set( sText ); m_OptionIcons[pn]->Set( sText );
} }
+6 -5
View File
@@ -24,14 +24,14 @@ private:
BitmapText m_textItem; BitmapText m_textItem;
OptionsCursor m_Underline[NUM_PLAYERS]; OptionsCursor m_Underline[NUM_PLAYERS];
AutoActor m_sprRowFrameNormal; AutoActor m_sprFrameNormal;
AutoActor m_sprRowFrameExit; AutoActor m_sprFrameExit;
BitmapText m_textTitle; BitmapText m_textTitle;
OptionIcon m_OptionIcon; OptionIcon m_OptionIcon;
// metrics // metrics
ThemeMetric<float> ROWFRAME_X; ThemeMetric<float> FRAME_X;
ThemeMetric<apActorCommands> ROWFRAME_ON_COMMAND; ThemeMetric<apActorCommands> FRAME_ON_COMMAND;
ThemeMetric<float> TITLE_X; ThemeMetric<float> TITLE_X;
ThemeMetric<apActorCommands> TITLE_ON_COMMAND; ThemeMetric<apActorCommands> TITLE_ON_COMMAND;
ThemeMetric<apActorCommands> TITLE_GAIN_FOCUS_COMMAND; ThemeMetric<apActorCommands> TITLE_GAIN_FOCUS_COMMAND;
@@ -56,6 +56,7 @@ private:
ThemeMetric<bool> SHOW_BPM_IN_SPEED_TITLE; ThemeMetric<bool> SHOW_BPM_IN_SPEED_TITLE;
ThemeMetric<bool> SHOW_OPTION_ICONS; ThemeMetric<bool> SHOW_OPTION_ICONS;
ThemeMetric<bool> SHOW_UNDERLINES; ThemeMetric<bool> SHOW_UNDERLINES;
ThemeMetric<RString> OPTION_ICON_METRICS_GROUP;
friend class OptionRow; friend class OptionRow;
}; };
@@ -140,7 +141,7 @@ protected:
vector<BitmapText *> m_textItems; // size depends on m_bRowIsLong and which players are joined vector<BitmapText *> m_textItems; // size depends on m_bRowIsLong and which players are joined
vector<OptionsCursor *> m_Underline[NUM_PLAYERS]; // size depends on m_bRowIsLong and which players are joined vector<OptionsCursor *> m_Underline[NUM_PLAYERS]; // size depends on m_bRowIsLong and which players are joined
Actor *m_sprRowFrame; Actor *m_sprFrame;
BitmapText *m_textTitle; BitmapText *m_textTitle;
OptionIcon *m_OptionIcons[NUM_PLAYERS]; OptionIcon *m_OptionIcons[NUM_PLAYERS];
+1 -1
View File
@@ -39,7 +39,7 @@ OptionsCursorPlus::OptionsCursorPlus( const OptionsCursorPlus &cpy ):
void OptionsCursor::Load( const RString &sType, Element elem, PlayerNumber pn ) void OptionsCursor::Load( const RString &sType, Element elem, PlayerNumber pn )
{ {
RString sElem = ssprintf( "%s %s 3x1", elem==cursor?"cursor":"underline", PlayerNumberToString(pn).c_str() ); RString sElem = ssprintf( "%s %s", elem==cursor?"cursor":"underline", PlayerNumberToString(pn).c_str() );
RString sPath = THEME->GetPathG( sType, sElem ); RString sPath = THEME->GetPathG( sType, sElem );
m_sprMiddle.Load( sPath ); m_sprMiddle.Load( sPath );
+2 -1
View File
@@ -99,6 +99,7 @@ void ScreenOptions::Init()
ALLOW_REPEATING_CHANGE_VALUE_INPUT.Load( m_sName, "AllowRepeatingChangeValueInput" ); ALLOW_REPEATING_CHANGE_VALUE_INPUT.Load( m_sName, "AllowRepeatingChangeValueInput" );
CURSOR_TWEEN_SECONDS.Load( m_sName, "CursorTweenSeconds" ); CURSOR_TWEEN_SECONDS.Load( m_sName, "CursorTweenSeconds" );
WRAP_VALUE_IN_ROW.Load( m_sName, "WrapValueInRow" ); WRAP_VALUE_IN_ROW.Load( m_sName, "WrapValueInRow" );
OPTION_ROW_METRICS_GROUP.Load( m_sName, "OptionRowMetricsGroup" );
m_exprRowPositionTransformFunction.SetFromReference( THEME->GetMetricR(m_sName,"RowPositionTransformFunction") ); m_exprRowPositionTransformFunction.SetFromReference( THEME->GetMetricR(m_sName,"RowPositionTransformFunction") );
@@ -183,7 +184,7 @@ void ScreenOptions::Init()
m_sprMore->PlayCommand( "LoseFocus" ); m_sprMore->PlayCommand( "LoseFocus" );
m_framePage.AddChild( m_sprMore ); m_framePage.AddChild( m_sprMore );
m_OptionRowType.Load( m_sName, this ); m_OptionRowType.Load( OPTION_ROW_METRICS_GROUP, this );
} }
void ScreenOptions::InitMenu( const vector<OptionRowHandler*> &vHands ) void ScreenOptions::InitMenu( const vector<OptionRowHandler*> &vHands )
+1
View File
@@ -145,6 +145,7 @@ protected: // derived classes need access to these
ThemeMetric<bool> ALLOW_REPEATING_CHANGE_VALUE_INPUT; ThemeMetric<bool> ALLOW_REPEATING_CHANGE_VALUE_INPUT;
ThemeMetric<float> CURSOR_TWEEN_SECONDS; ThemeMetric<float> CURSOR_TWEEN_SECONDS;
ThemeMetric<bool> WRAP_VALUE_IN_ROW; ThemeMetric<bool> WRAP_VALUE_IN_ROW;
ThemeMetric<RString> OPTION_ROW_METRICS_GROUP;
}; };
#endif #endif