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 "PlayerOptions.h"
#include "RageUtil.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")
#include "ActorUtil.h"
OptionIcon::OptionIcon()
{
@@ -29,21 +21,17 @@ OptionIcon::OptionIcon( const OptionIcon &cpy ):
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 );
m_sprEmpty.Load( THEME->GetPathG(sType,"icon empty") );
m_sprEmpty.Load( THEME->GetPathG(sMetricsGroup,"Empty") );
this->AddChild( m_sprEmpty );
m_text.LoadFromFont( THEME->GetPathF(sType,"icon") );
m_text.SetShadowLength( 0 );
m_text.SetZoom( TEXT_ZOOM );
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 );
m_text.LoadFromFont( THEME->GetPathF(sMetricsGroup,"Text") );
m_text.SetName( "Text" );
ActorUtil::SetXYAndOnCommand( m_text, sMetricsGroup );
this->AddChild( &m_text );
Set("");
@@ -65,9 +53,6 @@ void OptionIcon::Set( const RString &_sText )
if( 0==stricmp(sText,sStopWords[i]) )
sText = "";
if( UPPERCASE )
sText.MakeUpper();
sText.Replace( " ", "\n" );
bool bVacant = (sText=="");
@@ -75,8 +60,6 @@ void OptionIcon::Set( const RString &_sText )
m_sprEmpty->SetVisible( bVacant );
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 "PlayerNumber.h"
class OptionIcon : public ActorFrame
{
public:
OptionIcon();
OptionIcon( const OptionIcon &cpy );
void Load( RString sType );
void Load( RString sMetricsGroup );
void Set( const RString &sText );
protected:
+2 -1
View File
@@ -38,13 +38,14 @@ void OptionIconRow::Load( const RString &sMetricsGroup, PlayerNumber pn )
SPACING_X.Load(sMetricsGroup,"SpacingX");
SPACING_Y.Load(sMetricsGroup,"SpacingY");
NUM_OPTION_ICONS.Load(sMetricsGroup,"NumOptionIcons");
OPTION_ICON_METRICS_GROUP.Load(sMetricsGroup,"OptionIconMetricsGroup");
for( int i=0; i<NUM_OPTION_ICONS; i++ )
{
OptionIcon *p = new OptionIcon;
p->SetName( "OptionIcon" );
p->SetXY( i*SPACING_X, i*SPACING_Y );
p->Load( sMetricsGroup );
p->Load( OPTION_ICON_METRICS_GROUP );
ActorUtil::LoadAllCommands( p, sMetricsGroup );
m_vpOptionIcon.push_back( p );
this->AddChild( p );
+1
View File
@@ -35,6 +35,7 @@ protected:
ThemeMetric<float> SPACING_X;
ThemeMetric<float> SPACING_Y;
ThemeMetric<int> NUM_OPTION_ICONS;
ThemeMetric<RString> OPTION_ICON_METRICS_GROUP;
vector<OptionIcon*> m_vpOptionIcon;
};
+17 -16
View File
@@ -84,8 +84,8 @@ void OptionRowType::Load( const RString &sType, Actor *pParent )
{
m_sType = sType;
ROWFRAME_X .Load(sType,"RowFrameX");
ROWFRAME_ON_COMMAND .Load(sType,"RowFrameOnCommand");
FRAME_X .Load(sType,"FrameX");
FRAME_ON_COMMAND .Load(sType,"FrameOnCommand");
TITLE_X .Load(sType,"TitleX");
TITLE_ON_COMMAND .Load(sType,"TitleOnCommand");
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_OPTION_ICONS .Load(sType,"ShowOptionIcons");
SHOW_UNDERLINES .Load(sType,"ShowUnderlines");
OPTION_ICON_METRICS_GROUP .Load(sType,"OptionIconMetricsGroup");
m_textItem.LoadFromFont( THEME->GetPathF(sType,"item") );
if( SHOW_UNDERLINES )
@@ -118,10 +119,10 @@ void OptionRowType::Load( const RString &sType, Actor *pParent )
m_Underline[p].Load( sType, OptionsCursor::underline, p );
}
m_textTitle.LoadFromFont( THEME->GetPathF(sType,"title") );
m_sprRowFrameNormal.Load( ActorUtil::MakeActor( THEME->GetPathG(sType,"RowFrameNormal"), pParent ) );
m_sprRowFrameExit.Load( ActorUtil::MakeActor( THEME->GetPathG(sType,"RowFrameExit"), pParent ) );
m_sprFrameNormal.Load( ActorUtil::MakeActor( THEME->GetPathG(sType,"FrameNormal"), pParent ) );
m_sprFrameExit.Load( ActorUtil::MakeActor( THEME->GetPathG(sType,"FrameExit"), pParent ) );
if( SHOW_OPTION_ICONS )
m_OptionIcon.Load( sType );
m_OptionIcon.Load( OPTION_ICON_METRICS_GROUP );
}
void OptionRow::LoadNormal( OptionRowHandler *pHand, bool bFirstItemGoesDown )
@@ -255,14 +256,14 @@ void OptionRow::InitText( RowType type )
{
DEFAULT_FAIL( type );
case RowType_Normal:
m_sprRowFrame = m_pParentType->m_sprRowFrameNormal->Copy();
m_sprFrame = m_pParentType->m_sprFrameNormal->Copy();
break;
case RowType_Exit:
m_sprRowFrame = m_pParentType->m_sprRowFrameExit->Copy();
m_sprFrame = m_pParentType->m_sprFrameExit->Copy();
break;
}
m_sprRowFrame->SetDrawOrder(-1); // under title
m_Frame.AddChild( m_sprRowFrame );
m_sprFrame->SetDrawOrder(-1); // under title
m_Frame.AddChild( m_sprFrame );
if( m_pParentType->SHOW_OPTION_ICONS )
{
@@ -414,11 +415,11 @@ void OptionRow::InitText( RowType type )
switch( GetRowType() )
{
case OptionRow::RowType_Normal:
m_sprRowFrame->SetX( m_pParentType->ROWFRAME_X );
m_sprRowFrame->RunCommands( m_pParentType->ROWFRAME_ON_COMMAND );
m_sprFrame->SetX( m_pParentType->FRAME_X );
m_sprFrame->RunCommands( m_pParentType->FRAME_ON_COMMAND );
break;
case OptionRow::RowType_Exit:
m_sprRowFrame->SetVisible( false );
m_sprFrame->SetVisible( false );
break;
}
@@ -590,9 +591,9 @@ void OptionRow::UpdateEnabledDisabled()
else if( bRowEnabled ) color = m_pParentType->COLOR_NOT_SELECTED;
else color = m_pParentType->COLOR_DISABLED;
if( m_sprRowFrame != NULL )
m_sprRowFrame->SetGlobalDiffuseColor( color );
m_sprRowFrame->PlayCommand( bThisRowHasFocusByAny ? "GainFocus" : "LoseFocus" );
if( m_sprFrame != NULL )
m_sprFrame->SetGlobalDiffuseColor( color );
m_sprFrame->PlayCommand( bThisRowHasFocusByAny ? "GainFocus" : "LoseFocus" );
m_textTitle->SetGlobalDiffuseColor( color );
@@ -676,7 +677,7 @@ void OptionRow::SetOptionIcon( PlayerNumber pn, const RString &sText, GameComman
// update row frame
Message msg( "Refresh" );
msg.SetParam( "GameCommand", &gc );
m_sprRowFrame->HandleMessage( msg );
m_sprFrame->HandleMessage( msg );
if( m_OptionIcons[pn] != NULL )
m_OptionIcons[pn]->Set( sText );
}
+6 -5
View File
@@ -24,14 +24,14 @@ private:
BitmapText m_textItem;
OptionsCursor m_Underline[NUM_PLAYERS];
AutoActor m_sprRowFrameNormal;
AutoActor m_sprRowFrameExit;
AutoActor m_sprFrameNormal;
AutoActor m_sprFrameExit;
BitmapText m_textTitle;
OptionIcon m_OptionIcon;
// metrics
ThemeMetric<float> ROWFRAME_X;
ThemeMetric<apActorCommands> ROWFRAME_ON_COMMAND;
ThemeMetric<float> FRAME_X;
ThemeMetric<apActorCommands> FRAME_ON_COMMAND;
ThemeMetric<float> TITLE_X;
ThemeMetric<apActorCommands> TITLE_ON_COMMAND;
ThemeMetric<apActorCommands> TITLE_GAIN_FOCUS_COMMAND;
@@ -56,6 +56,7 @@ private:
ThemeMetric<bool> SHOW_BPM_IN_SPEED_TITLE;
ThemeMetric<bool> SHOW_OPTION_ICONS;
ThemeMetric<bool> SHOW_UNDERLINES;
ThemeMetric<RString> OPTION_ICON_METRICS_GROUP;
friend class OptionRow;
};
@@ -140,7 +141,7 @@ protected:
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
Actor *m_sprRowFrame;
Actor *m_sprFrame;
BitmapText *m_textTitle;
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 )
{
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 );
m_sprMiddle.Load( sPath );
+2 -1
View File
@@ -99,6 +99,7 @@ void ScreenOptions::Init()
ALLOW_REPEATING_CHANGE_VALUE_INPUT.Load( m_sName, "AllowRepeatingChangeValueInput" );
CURSOR_TWEEN_SECONDS.Load( m_sName, "CursorTweenSeconds" );
WRAP_VALUE_IN_ROW.Load( m_sName, "WrapValueInRow" );
OPTION_ROW_METRICS_GROUP.Load( m_sName, "OptionRowMetricsGroup" );
m_exprRowPositionTransformFunction.SetFromReference( THEME->GetMetricR(m_sName,"RowPositionTransformFunction") );
@@ -183,7 +184,7 @@ void ScreenOptions::Init()
m_sprMore->PlayCommand( "LoseFocus" );
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 )
+1
View File
@@ -145,6 +145,7 @@ protected: // derived classes need access to these
ThemeMetric<bool> ALLOW_REPEATING_CHANGE_VALUE_INPUT;
ThemeMetric<float> CURSOR_TWEEN_SECONDS;
ThemeMetric<bool> WRAP_VALUE_IN_ROW;
ThemeMetric<RString> OPTION_ROW_METRICS_GROUP;
};
#endif