fix ScreenPlayerOptions explanation text

This commit is contained in:
Chris Danford
2003-11-06 09:54:40 +00:00
parent 28e00326cf
commit 49e87f0f64
4 changed files with 50 additions and 47 deletions
+2 -2
View File
@@ -1741,8 +1741,8 @@ ExplanationTogetherX=70
ExplanationTogetherY=412
ExplanationTogetherOnCommand=wrapwidthpixels,1000;horizalign,left;cropright,1;linear,0.5;cropright,0
ExplanationZoom=0.5
ExplanationP1OnCommand=wrapwidthpixels,600;horizalign,left
ExplanationP2OnCommand=wrapwidthpixels,600;horizalign,right
ExplanationP1OnCommand=wrapwidthpixels,600;horizalign,left;cropright,1;linear,0.5;cropright,0
ExplanationP2OnCommand=wrapwidthpixels,600;horizalign,right;cropright,1;linear,0.5;cropright,0
ColorSelected=1,1,1,1 // normal
ColorNotSelected=0.5,0.5,0.5,1 // grayed
NumShownItems=10
+42 -41
View File
@@ -35,7 +35,7 @@ const float ITEM_X[NUM_PLAYERS] = { 260, 420 };
#define ITEMS_SPACING_Y THEME->GetMetricF("ScreenOptions","ItemsSpacingY")
#define EXPLANATION_X(p) THEME->GetMetricF("ScreenOptions",ssprintf("ExplanationP%dX",p+1))
#define EXPLANATION_Y(p) THEME->GetMetricF("ScreenOptions",ssprintf("ExplanationP%dY",p+1))
#define EXPLANATION_ON_COMMAND(p) THEME->GetMetric ("ScreenOptions",ssprintf("ExplanationOnCommandP%dY",p+1))
#define EXPLANATION_ON_COMMAND(p) THEME->GetMetric ("ScreenOptions",ssprintf("ExplanationP%dOnCommand",p+1))
#define EXPLANATION_TOGETHER_X THEME->GetMetricF("ScreenOptions","ExplanationTogetherX")
#define EXPLANATION_TOGETHER_Y THEME->GetMetricF("ScreenOptions","ExplanationTogetherY")
#define EXPLANATION_TOGETHER_ON_COMMAND THEME->GetMetric ("ScreenOptions","ExplanationTogetherOnCommand")
@@ -258,7 +258,8 @@ void ScreenOptions::Init( InputMode im, OptionRow OptionRows[], int iNumOptionLi
CHECKPOINT;
UpdateEnabledDisabled();
CHECKPOINT;
OnChange();
for( p=0; p<NUM_PLAYERS; p++ )
OnChange( (PlayerNumber)p );
CHECKPOINT;
/* It's tweening into position, but on the initial tween-in we only want to
@@ -751,8 +752,11 @@ void ScreenOptions::PositionItems()
}
void ScreenOptions::OnChange()
void ScreenOptions::OnChange( PlayerNumber pn )
{
if( !GAMESTATE->IsHumanPlayer(pn) )
return;
/* Update m_fRowY[] and m_bRowIsHidden[]. */
PositionItems();
@@ -762,43 +766,40 @@ void ScreenOptions::OnChange()
PositionIcons();
UpdateEnabledDisabled();
for( int p=0; p<NUM_PLAYERS; p++ )
TweenCursor( pn );
int iCurRow = m_iCurrentRow[pn];
bool bIsExitRow = iCurRow == m_iNumOptionRows;
BitmapText *pText = NULL;
switch( m_InputMode )
{
TweenCursor( (PlayerNumber)p );
case INPUTMODE_INDIVIDUAL:
pText = &m_textExplanation[pn];
pText->FinishTweening();
pText->Command( EXPLANATION_ON_COMMAND(pn) );
break;
case INPUTMODE_TOGETHER:
pText = &m_textExplanation[pn];
pText->FinishTweening();
pText->Command( EXPLANATION_TOGETHER_ON_COMMAND );
break;
}
int iCurRow = m_iCurrentRow[p];
bool bIsExitRow = iCurRow == m_iNumOptionRows;
BitmapText *pText = NULL;
switch( m_InputMode )
{
case INPUTMODE_INDIVIDUAL:
pText = &m_textExplanation[p];
pText->FinishTweening();
pText->Command( EXPLANATION_ON_COMMAND(p) );
break;
case INPUTMODE_TOGETHER:
pText = &m_textExplanation[0];
pText->FinishTweening();
pText->Command( EXPLANATION_TOGETHER_ON_COMMAND );
break;
}
if( bIsExitRow )
{
pText->SetText( "" );
}
else
{
CString sLineName = m_OptionRow[iCurRow].name;
if( sLineName=="" )
sLineName = m_OptionRow[iCurRow].choices[0];
sLineName.Replace("\n-","");
sLineName.Replace("\n","");
sLineName.Replace(" ","");
pText->SetText( THEME->GetMetric(m_sName,sLineName) );
}
if( bIsExitRow )
{
pText->SetText( "" );
}
else
{
CString sLineName = m_OptionRow[iCurRow].name;
if( sLineName=="" )
sLineName = m_OptionRow[iCurRow].choices[0];
sLineName.Replace("\n-","");
sLineName.Replace("\n","");
sLineName.Replace(" ","");
pText->SetText( THEME->GetMetric(m_sName,sLineName) );
}
}
@@ -888,9 +889,9 @@ void ScreenOptions::ChangeValue( PlayerNumber pn, int iDelta )
m_iSelectedOption[p][iCurRow] = iNewSel;
UpdateText( (PlayerNumber)p, iCurRow );
}
OnChange( pn );
}
m_SoundChangeCol.Play();
OnChange();
}
@@ -905,9 +906,9 @@ void ScreenOptions::MenuUp( PlayerNumber pn )
m_iCurrentRow[p] = m_iNumOptionRows; // on exit
else
m_iCurrentRow[p]--;
OnChange( pn );
}
m_SoundPrevRow.Play();
OnChange();
}
@@ -922,7 +923,7 @@ void ScreenOptions::MenuDown( PlayerNumber pn )
m_iCurrentRow[p] = 0; // on first row
else
m_iCurrentRow[p]++;
OnChange( pn );
}
m_SoundNextRow.Play();
OnChange();
}
+1 -1
View File
@@ -74,7 +74,7 @@ protected:
void TweenCursor( PlayerNumber player_no );
void UpdateText( PlayerNumber player_no, int row );
void UpdateEnabledDisabled();
virtual void OnChange();
virtual void OnChange( PlayerNumber pn );
virtual void MenuBack( PlayerNumber pn );
virtual void MenuStart( PlayerNumber pn );
+5 -3
View File
@@ -419,14 +419,16 @@ try_metric_again:
if( DISPLAY->IsWindowed() )
{
CString sMessage = ssprintf( "The theme metric '%s-%s' is missing. Correct this and click Retry, or Cancel to break.",sClassName.c_str(),sValueName.c_str() );
switch( HOOKS->MessageBoxRetryCancel(sMessage) )
switch( HOOKS->MessageBoxAbortRetryIgnore(sMessage) )
{
case ArchHooks::abort:
break; // fall through
case ArchHooks::retry:
FlushDirCache();
ReloadMetricsIfNecessary();
goto try_metric_again;
case ArchHooks::cancel:
break; // fall through
case ArchHooks::ignore:
return "";
default:
ASSERT(0);
}