OptionRow: member name cleanup, add focus commands
This commit is contained in:
+75
-51
@@ -120,12 +120,16 @@ void OptionRow::LoadMetrics( const CString &sType )
|
|||||||
ARROWS_X .Load(m_sType,"ArrowsX");
|
ARROWS_X .Load(m_sType,"ArrowsX");
|
||||||
LABELS_X .Load(m_sType,"LabelsX");
|
LABELS_X .Load(m_sType,"LabelsX");
|
||||||
LABELS_ON_COMMAND .Load(m_sType,"LabelsOnCommand");
|
LABELS_ON_COMMAND .Load(m_sType,"LabelsOnCommand");
|
||||||
|
LABEL_GAIN_FOCUS_COMMAND .Load(m_sType,"LabelGainFocusCommand");
|
||||||
|
LABEL_LOSE_FOCUS_COMMAND .Load(m_sType,"LabelLoseFocusCommand");
|
||||||
ITEMS_START_X .Load(m_sType,"ItemsStartX");
|
ITEMS_START_X .Load(m_sType,"ItemsStartX");
|
||||||
ITEMS_END_X .Load(m_sType,"ItemsEndX");
|
ITEMS_END_X .Load(m_sType,"ItemsEndX");
|
||||||
ITEMS_GAP_X .Load(m_sType,"ItemsGapX");
|
ITEMS_GAP_X .Load(m_sType,"ItemsGapX");
|
||||||
ITEMS_LONG_ROW_X .Load(m_sType,ITEMS_LONG_ROW_X_NAME,NUM_PLAYERS);
|
ITEMS_LONG_ROW_X .Load(m_sType,ITEMS_LONG_ROW_X_NAME,NUM_PLAYERS);
|
||||||
ITEMS_LONG_ROW_SHARED_X .Load(m_sType,"ItemsLongRowSharedX");
|
ITEMS_LONG_ROW_SHARED_X .Load(m_sType,"ItemsLongRowSharedX");
|
||||||
ITEMS_ON_COMMAND .Load(m_sType,"ItemsOnCommand");
|
ITEMS_ON_COMMAND .Load(m_sType,"ItemsOnCommand");
|
||||||
|
ITEM_GAIN_FOCUS_COMMAND .Load(m_sType,"ItemGainFocusCommand");
|
||||||
|
ITEM_LOSE_FOCUS_COMMAND .Load(m_sType,"ItemLoseFocusCommand");
|
||||||
ICONS_X .Load(m_sType,ICONS_X_NAME,NUM_PLAYERS);
|
ICONS_X .Load(m_sType,ICONS_X_NAME,NUM_PLAYERS);
|
||||||
ICONS_ON_COMMAND .Load(m_sType,"IconsOnCommand");
|
ICONS_ON_COMMAND .Load(m_sType,"IconsOnCommand");
|
||||||
COLOR_SELECTED .Load(m_sType,"ColorSelected");
|
COLOR_SELECTED .Load(m_sType,"ColorSelected");
|
||||||
@@ -161,17 +165,17 @@ void OptionRow::LoadNormal( const OptionRowDefinition &def, OptionRowHandler *pH
|
|||||||
{
|
{
|
||||||
vector<bool> &vbSelected = m_vbSelected[p];
|
vector<bool> &vbSelected = m_vbSelected[p];
|
||||||
vbSelected.resize( 0 );
|
vbSelected.resize( 0 );
|
||||||
vbSelected.resize( m_RowDef.choices.size(), false );
|
vbSelected.resize( m_RowDef.m_vsChoices.size(), false );
|
||||||
|
|
||||||
// set select the first item if a SELECT_ONE row
|
// set select the first item if a SELECT_ONE row
|
||||||
if( vbSelected.size() && m_RowDef.selectType == SELECT_ONE )
|
if( vbSelected.size() && m_RowDef.m_selectType == SELECT_ONE )
|
||||||
vbSelected[0] = true;
|
vbSelected[0] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TRICKY: Insert a down arrow as the first choice in the row.
|
// TRICKY: Insert a down arrow as the first choice in the row.
|
||||||
if( m_bFirstItemGoesDown )
|
if( m_bFirstItemGoesDown )
|
||||||
{
|
{
|
||||||
m_RowDef.choices.insert( m_RowDef.choices.begin(), NEXT_ROW_NAME );
|
m_RowDef.m_vsChoices.insert( m_RowDef.m_vsChoices.begin(), NEXT_ROW_NAME );
|
||||||
FOREACH_PlayerNumber( p )
|
FOREACH_PlayerNumber( p )
|
||||||
m_vbSelected[p].insert( m_vbSelected[p].begin(), false );
|
m_vbSelected[p].insert( m_vbSelected[p].begin(), false );
|
||||||
}
|
}
|
||||||
@@ -179,7 +183,7 @@ void OptionRow::LoadNormal( const OptionRowDefinition &def, OptionRowHandler *pH
|
|||||||
|
|
||||||
CString OptionRow::GetRowTitle() const
|
CString OptionRow::GetRowTitle() const
|
||||||
{
|
{
|
||||||
CString sLineName = m_RowDef.name;
|
CString sLineName = m_RowDef.m_sName;
|
||||||
CString sTitle = OptionTitle(sLineName);
|
CString sTitle = OptionTitle(sLineName);
|
||||||
|
|
||||||
// HACK: tack the BPM onto the name of the speed line
|
// HACK: tack the BPM onto the name of the speed line
|
||||||
@@ -230,7 +234,7 @@ void OptionRow::AfterImportOptions()
|
|||||||
// Make all selections the same if bOneChoiceForAllPlayers
|
// Make all selections the same if bOneChoiceForAllPlayers
|
||||||
// Hack: we only import active players, so if only player 2 is imported,
|
// Hack: we only import active players, so if only player 2 is imported,
|
||||||
// we need to copy p2 to p1, not p1 to p2.
|
// we need to copy p2 to p1, not p1 to p2.
|
||||||
if( m_RowDef.bOneChoiceForAllPlayers )
|
if( m_RowDef.m_bOneChoiceForAllPlayers )
|
||||||
{
|
{
|
||||||
PlayerNumber pnCopyFrom = GAMESTATE->m_MasterPlayerNumber;
|
PlayerNumber pnCopyFrom = GAMESTATE->m_MasterPlayerNumber;
|
||||||
if( GAMESTATE->m_MasterPlayerNumber == PLAYER_INVALID )
|
if( GAMESTATE->m_MasterPlayerNumber == PLAYER_INVALID )
|
||||||
@@ -241,7 +245,7 @@ void OptionRow::AfterImportOptions()
|
|||||||
|
|
||||||
FOREACH_PlayerNumber( p )
|
FOREACH_PlayerNumber( p )
|
||||||
{
|
{
|
||||||
switch( m_RowDef.selectType )
|
switch( m_RowDef.m_selectType )
|
||||||
{
|
{
|
||||||
case SELECT_ONE:
|
case SELECT_ONE:
|
||||||
{
|
{
|
||||||
@@ -283,20 +287,20 @@ void OptionRow::AfterImportOptions()
|
|||||||
|
|
||||||
float fX = ITEMS_START_X;
|
float fX = ITEMS_START_X;
|
||||||
|
|
||||||
for( unsigned c=0; c<m_RowDef.choices.size(); c++ )
|
for( unsigned c=0; c<m_RowDef.m_vsChoices.size(); c++ )
|
||||||
{
|
{
|
||||||
CString sText = m_RowDef.choices[c];
|
CString sText = m_RowDef.m_vsChoices[c];
|
||||||
PrepareItemText( sText );
|
PrepareItemText( sText );
|
||||||
bt.SetText( sText );
|
bt.SetText( sText );
|
||||||
|
|
||||||
fX += bt.GetZoomedWidth();
|
fX += bt.GetZoomedWidth();
|
||||||
|
|
||||||
if( c != m_RowDef.choices.size()-1 )
|
if( c != m_RowDef.m_vsChoices.size()-1 )
|
||||||
fX += ITEMS_GAP_X;
|
fX += ITEMS_GAP_X;
|
||||||
|
|
||||||
if( fX > ITEMS_END_X )
|
if( fX > ITEMS_END_X )
|
||||||
{
|
{
|
||||||
m_RowDef.layoutType = LAYOUT_SHOW_ONE_IN_ROW;
|
m_RowDef.m_layoutType = LAYOUT_SHOW_ONE_IN_ROW;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -305,7 +309,7 @@ void OptionRow::AfterImportOptions()
|
|||||||
//
|
//
|
||||||
// load m_textItems
|
// load m_textItems
|
||||||
//
|
//
|
||||||
switch( m_RowDef.layoutType )
|
switch( m_RowDef.m_layoutType )
|
||||||
{
|
{
|
||||||
case LAYOUT_SHOW_ONE_IN_ROW:
|
case LAYOUT_SHOW_ONE_IN_ROW:
|
||||||
// init text
|
// init text
|
||||||
@@ -317,13 +321,13 @@ void OptionRow::AfterImportOptions()
|
|||||||
const int iChoiceInRowWithFocus = m_iChoiceInRowWithFocus[p];
|
const int iChoiceInRowWithFocus = m_iChoiceInRowWithFocus[p];
|
||||||
|
|
||||||
bt->LoadFromFont( THEME->GetPathF(m_sType,"item") );
|
bt->LoadFromFont( THEME->GetPathF(m_sType,"item") );
|
||||||
CString sText = (iChoiceInRowWithFocus==-1) ? "" : m_RowDef.choices[iChoiceInRowWithFocus];
|
CString sText = (iChoiceInRowWithFocus==-1) ? "" : m_RowDef.m_vsChoices[iChoiceInRowWithFocus];
|
||||||
PrepareItemText( sText );
|
PrepareItemText( sText );
|
||||||
bt->SetText( sText );
|
bt->SetText( sText );
|
||||||
bt->RunCommands( ITEMS_ON_COMMAND );
|
bt->RunCommands( ITEMS_ON_COMMAND );
|
||||||
bt->SetShadowLength( 0 );
|
bt->SetShadowLength( 0 );
|
||||||
|
|
||||||
if( m_RowDef.bOneChoiceForAllPlayers )
|
if( m_RowDef.m_bOneChoiceForAllPlayers )
|
||||||
{
|
{
|
||||||
bt->SetX( ITEMS_LONG_ROW_SHARED_X );
|
bt->SetX( ITEMS_LONG_ROW_SHARED_X );
|
||||||
break; // only initialize one item since it's shared
|
break; // only initialize one item since it's shared
|
||||||
@@ -351,13 +355,13 @@ void OptionRow::AfterImportOptions()
|
|||||||
case LAYOUT_SHOW_ALL_IN_ROW:
|
case LAYOUT_SHOW_ALL_IN_ROW:
|
||||||
{
|
{
|
||||||
float fX = ITEMS_START_X;
|
float fX = ITEMS_START_X;
|
||||||
for( unsigned c=0; c<m_RowDef.choices.size(); c++ )
|
for( unsigned c=0; c<m_RowDef.m_vsChoices.size(); c++ )
|
||||||
{
|
{
|
||||||
// init text
|
// init text
|
||||||
BitmapText *bt = new BitmapText;
|
BitmapText *bt = new BitmapText;
|
||||||
m_textItems.push_back( bt );
|
m_textItems.push_back( bt );
|
||||||
bt->LoadFromFont( THEME->GetPathF(m_sType,"item") );
|
bt->LoadFromFont( THEME->GetPathF(m_sType,"item") );
|
||||||
CString sText = m_RowDef.choices[c];
|
CString sText = m_RowDef.m_vsChoices[c];
|
||||||
PrepareItemText( sText );
|
PrepareItemText( sText );
|
||||||
bt->SetText( sText );
|
bt->SetText( sText );
|
||||||
bt->RunCommands( ITEMS_ON_COMMAND );
|
bt->RunCommands( ITEMS_ON_COMMAND );
|
||||||
@@ -415,8 +419,8 @@ void OptionRow::AfterImportOptions()
|
|||||||
void OptionRow::LoadExit()
|
void OptionRow::LoadExit()
|
||||||
{
|
{
|
||||||
m_RowType = OptionRow::ROW_EXIT;
|
m_RowType = OptionRow::ROW_EXIT;
|
||||||
m_RowDef.name = EXIT_NAME;
|
m_RowDef.m_sName = EXIT_NAME;
|
||||||
m_RowDef.choices.push_back( "" );
|
m_RowDef.m_vsChoices.push_back( "" );
|
||||||
|
|
||||||
BitmapText *bt = new BitmapText;
|
BitmapText *bt = new BitmapText;
|
||||||
m_textItems.push_back( bt );
|
m_textItems.push_back( bt );
|
||||||
@@ -443,15 +447,15 @@ void OptionRow::PositionUnderlines( PlayerNumber pn )
|
|||||||
|
|
||||||
vector<OptionsCursor*> &vpUnderlines = m_Underline[pn];
|
vector<OptionsCursor*> &vpUnderlines = m_Underline[pn];
|
||||||
|
|
||||||
PlayerNumber pnTakeSelectedFrom = m_RowDef.bOneChoiceForAllPlayers ? PLAYER_1 : pn;
|
PlayerNumber pnTakeSelectedFrom = m_RowDef.m_bOneChoiceForAllPlayers ? PLAYER_1 : pn;
|
||||||
|
|
||||||
const int iNumUnderlines = (m_RowDef.layoutType == LAYOUT_SHOW_ONE_IN_ROW) ? 1 : vpUnderlines.size();
|
const int iNumUnderlines = (m_RowDef.m_layoutType == LAYOUT_SHOW_ONE_IN_ROW) ? 1 : vpUnderlines.size();
|
||||||
|
|
||||||
for( int i=0; i<iNumUnderlines; i++ )
|
for( int i=0; i<iNumUnderlines; i++ )
|
||||||
{
|
{
|
||||||
OptionsCursor& ul = *vpUnderlines[i];
|
OptionsCursor& ul = *vpUnderlines[i];
|
||||||
|
|
||||||
int iChoiceWithFocus = (m_RowDef.layoutType == LAYOUT_SHOW_ONE_IN_ROW) ? m_iChoiceInRowWithFocus[pnTakeSelectedFrom] : i;
|
int iChoiceWithFocus = (m_RowDef.m_layoutType == LAYOUT_SHOW_ONE_IN_ROW) ? m_iChoiceInRowWithFocus[pnTakeSelectedFrom] : i;
|
||||||
|
|
||||||
/* Don't tween X movement and color changes. */
|
/* Don't tween X movement and color changes. */
|
||||||
int iWidth, iX, iY;
|
int iWidth, iX, iY;
|
||||||
@@ -459,7 +463,7 @@ void OptionRow::PositionUnderlines( PlayerNumber pn )
|
|||||||
ul.SetGlobalX( (float)iX );
|
ul.SetGlobalX( (float)iX );
|
||||||
ul.SetGlobalDiffuseColor( RageColor(1,1,1, 1.0f) );
|
ul.SetGlobalDiffuseColor( RageColor(1,1,1, 1.0f) );
|
||||||
|
|
||||||
ASSERT( m_vbSelected[pnTakeSelectedFrom].size() == m_RowDef.choices.size() );
|
ASSERT( m_vbSelected[pnTakeSelectedFrom].size() == m_RowDef.m_vsChoices.size() );
|
||||||
|
|
||||||
bool bSelected = (iChoiceWithFocus==-1) ? false : m_vbSelected[pnTakeSelectedFrom][ iChoiceWithFocus ];
|
bool bSelected = (iChoiceWithFocus==-1) ? false : m_vbSelected[pnTakeSelectedFrom][ iChoiceWithFocus ];
|
||||||
bool bHidden = !bSelected || m_bHidden;
|
bool bHidden = !bSelected || m_bHidden;
|
||||||
@@ -489,15 +493,15 @@ void OptionRow::PositionIcons()
|
|||||||
|
|
||||||
void OptionRow::UpdateText()
|
void OptionRow::UpdateText()
|
||||||
{
|
{
|
||||||
switch( m_RowDef.layoutType )
|
switch( m_RowDef.m_layoutType )
|
||||||
{
|
{
|
||||||
case LAYOUT_SHOW_ONE_IN_ROW:
|
case LAYOUT_SHOW_ONE_IN_ROW:
|
||||||
FOREACH_HumanPlayer( p )
|
FOREACH_HumanPlayer( p )
|
||||||
{
|
{
|
||||||
unsigned pn = m_RowDef.bOneChoiceForAllPlayers ? 0 : p;
|
unsigned pn = m_RowDef.m_bOneChoiceForAllPlayers ? 0 : p;
|
||||||
int iChoiceWithFocus = m_iChoiceInRowWithFocus[pn];
|
int iChoiceWithFocus = m_iChoiceInRowWithFocus[pn];
|
||||||
|
|
||||||
CString sText = m_RowDef.choices[iChoiceWithFocus];
|
CString sText = m_RowDef.m_vsChoices[iChoiceWithFocus];
|
||||||
PrepareItemText( sText );
|
PrepareItemText( sText );
|
||||||
|
|
||||||
// If player_no is 2 and there is no player 1:
|
// If player_no is 2 and there is no player 1:
|
||||||
@@ -519,13 +523,6 @@ void OptionRow::SetRowFocus( bool bRowHasFocus[NUM_PLAYERS] )
|
|||||||
|
|
||||||
void OptionRow::UpdateEnabledDisabled()
|
void OptionRow::UpdateEnabledDisabled()
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
COLOR_SELECTED,
|
|
||||||
COLOR_NOT_SELECTED,
|
|
||||||
COLOR_DISABLED,
|
|
||||||
TWEEN_SECONDS
|
|
||||||
*/
|
|
||||||
|
|
||||||
bool bThisRowHasFocusByAny = false;
|
bool bThisRowHasFocusByAny = false;
|
||||||
FOREACH_HumanPlayer( p )
|
FOREACH_HumanPlayer( p )
|
||||||
bThisRowHasFocusByAny |= m_bRowHasFocus[p];
|
bThisRowHasFocusByAny |= m_bRowHasFocus[p];
|
||||||
@@ -542,6 +539,11 @@ void OptionRow::UpdateEnabledDisabled()
|
|||||||
m_Frame.SetY( m_fY );
|
m_Frame.SetY( m_fY );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( bThisRowHasFocusByAny )
|
||||||
|
m_textTitle.RunCommands( LABEL_GAIN_FOCUS_COMMAND );
|
||||||
|
else
|
||||||
|
m_textTitle.RunCommands( LABEL_LOSE_FOCUS_COMMAND );
|
||||||
|
|
||||||
/* Don't tween selection colors at all. */
|
/* Don't tween selection colors at all. */
|
||||||
RageColor color;
|
RageColor color;
|
||||||
if( bThisRowHasFocusByAny ) color = COLOR_SELECTED;
|
if( bThisRowHasFocusByAny ) color = COLOR_SELECTED;
|
||||||
@@ -554,7 +556,29 @@ void OptionRow::UpdateEnabledDisabled()
|
|||||||
m_sprBullet.SetGlobalDiffuseColor( color );
|
m_sprBullet.SetGlobalDiffuseColor( color );
|
||||||
m_textTitle.SetGlobalDiffuseColor( color );
|
m_textTitle.SetGlobalDiffuseColor( color );
|
||||||
|
|
||||||
switch( m_RowDef.layoutType )
|
|
||||||
|
for( unsigned j=0; j<m_textItems.size(); j++ )
|
||||||
|
{
|
||||||
|
bool bThisItemHasFocusByAny = false;
|
||||||
|
FOREACH_HumanPlayer( p )
|
||||||
|
{
|
||||||
|
if( m_bRowHasFocus[p] )
|
||||||
|
{
|
||||||
|
if( (int)j == GetChoiceInRowWithFocus(p) )
|
||||||
|
{
|
||||||
|
bThisItemHasFocusByAny = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( bThisItemHasFocusByAny )
|
||||||
|
m_textItems[j]->RunCommands( ITEM_GAIN_FOCUS_COMMAND );
|
||||||
|
else
|
||||||
|
m_textItems[j]->RunCommands( ITEM_LOSE_FOCUS_COMMAND );
|
||||||
|
}
|
||||||
|
|
||||||
|
switch( m_RowDef.m_layoutType )
|
||||||
{
|
{
|
||||||
case LAYOUT_SHOW_ALL_IN_ROW:
|
case LAYOUT_SHOW_ALL_IN_ROW:
|
||||||
for( unsigned j=0; j<m_textItems.size(); j++ )
|
for( unsigned j=0; j<m_textItems.size(); j++ )
|
||||||
@@ -579,7 +603,7 @@ void OptionRow::UpdateEnabledDisabled()
|
|||||||
if( m_bHidden )
|
if( m_bHidden )
|
||||||
color.a = 0;
|
color.a = 0;
|
||||||
|
|
||||||
unsigned item_no = m_RowDef.bOneChoiceForAllPlayers ? 0 : pn;
|
unsigned item_no = m_RowDef.m_bOneChoiceForAllPlayers ? 0 : pn;
|
||||||
|
|
||||||
// If player_no is 2 and there is no player 1:
|
// If player_no is 2 and there is no player 1:
|
||||||
item_no = min( item_no, m_textItems.size()-1 );
|
item_no = min( item_no, m_textItems.size()-1 );
|
||||||
@@ -632,9 +656,9 @@ BitmapText &OptionRow::GetTextItemForRow( PlayerNumber pn, int iChoiceOnRow )
|
|||||||
if( m_RowType == OptionRow::ROW_EXIT )
|
if( m_RowType == OptionRow::ROW_EXIT )
|
||||||
return *m_textItems[0];
|
return *m_textItems[0];
|
||||||
|
|
||||||
bool bOneChoice = m_RowDef.bOneChoiceForAllPlayers;
|
bool bOneChoice = m_RowDef.m_bOneChoiceForAllPlayers;
|
||||||
int index = -1;
|
int index = -1;
|
||||||
switch( m_RowDef.layoutType )
|
switch( m_RowDef.m_layoutType )
|
||||||
{
|
{
|
||||||
case LAYOUT_SHOW_ONE_IN_ROW:
|
case LAYOUT_SHOW_ONE_IN_ROW:
|
||||||
index = bOneChoice ? 0 : pn;
|
index = bOneChoice ? 0 : pn;
|
||||||
@@ -699,9 +723,9 @@ void OptionRow::SetOneSharedSelection( int iChoice )
|
|||||||
|
|
||||||
int OptionRow::GetChoiceInRowWithFocus( PlayerNumber pn ) const
|
int OptionRow::GetChoiceInRowWithFocus( PlayerNumber pn ) const
|
||||||
{
|
{
|
||||||
if( m_RowDef.bOneChoiceForAllPlayers )
|
if( m_RowDef.m_bOneChoiceForAllPlayers )
|
||||||
pn = PLAYER_1;
|
pn = PLAYER_1;
|
||||||
if( m_RowDef.choices.empty() )
|
if( m_RowDef.m_vsChoices.empty() )
|
||||||
return -1;
|
return -1;
|
||||||
int iChoice = m_iChoiceInRowWithFocus[pn];
|
int iChoice = m_iChoiceInRowWithFocus[pn];
|
||||||
return iChoice;
|
return iChoice;
|
||||||
@@ -714,9 +738,9 @@ int OptionRow::GetChoiceInRowWithFocusShared() const
|
|||||||
|
|
||||||
void OptionRow::SetChoiceInRowWithFocus( PlayerNumber pn, int iChoice )
|
void OptionRow::SetChoiceInRowWithFocus( PlayerNumber pn, int iChoice )
|
||||||
{
|
{
|
||||||
if( m_RowDef.bOneChoiceForAllPlayers )
|
if( m_RowDef.m_bOneChoiceForAllPlayers )
|
||||||
pn = PLAYER_1;
|
pn = PLAYER_1;
|
||||||
ASSERT(iChoice >= 0 && iChoice < (int)m_RowDef.choices.size());
|
ASSERT(iChoice >= 0 && iChoice < (int)m_RowDef.m_vsChoices.size());
|
||||||
m_iChoiceInRowWithFocus[pn] = iChoice;
|
m_iChoiceInRowWithFocus[pn] = iChoice;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -755,15 +779,15 @@ void OptionRow::Reload( const OptionRowDefinition &def )
|
|||||||
m_RowDef = def;
|
m_RowDef = def;
|
||||||
else
|
else
|
||||||
m_pHand->Reload( m_RowDef );
|
m_pHand->Reload( m_RowDef );
|
||||||
ASSERT( !m_RowDef.choices.empty() );
|
ASSERT( !m_RowDef.m_vsChoices.empty() );
|
||||||
|
|
||||||
FOREACH_PlayerNumber( p )
|
FOREACH_PlayerNumber( p )
|
||||||
m_vbSelected[p].resize( m_RowDef.choices.size(), false );
|
m_vbSelected[p].resize( m_RowDef.m_vsChoices.size(), false );
|
||||||
|
|
||||||
// TODO: Nothing uses this yet and it causes skips when changing options.
|
// TODO: Nothing uses this yet and it causes skips when changing options.
|
||||||
//ImportOptions( vpns );
|
//ImportOptions( vpns );
|
||||||
|
|
||||||
switch( m_RowDef.selectType )
|
switch( m_RowDef.m_selectType )
|
||||||
{
|
{
|
||||||
case SELECT_ONE:
|
case SELECT_ONE:
|
||||||
FOREACH_HumanPlayer( p )
|
FOREACH_HumanPlayer( p )
|
||||||
@@ -775,7 +799,7 @@ void OptionRow::Reload( const OptionRowDefinition &def )
|
|||||||
break;
|
break;
|
||||||
case SELECT_MULTIPLE:
|
case SELECT_MULTIPLE:
|
||||||
FOREACH_HumanPlayer( p )
|
FOREACH_HumanPlayer( p )
|
||||||
CLAMP( m_iChoiceInRowWithFocus[p], 0, m_RowDef.choices.size()-1 );
|
CLAMP( m_iChoiceInRowWithFocus[p], 0, m_RowDef.m_vsChoices.size()-1 );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
@@ -838,7 +862,7 @@ void OptionRow::ImportOptions( const vector<PlayerNumber> &vpns )
|
|||||||
if( m_pHand == NULL )
|
if( m_pHand == NULL )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ASSERT( m_RowDef.choices.size() > 0 );
|
ASSERT( m_RowDef.m_vsChoices.size() > 0 );
|
||||||
|
|
||||||
FOREACH_CONST( PlayerNumber, vpns, iter )
|
FOREACH_CONST( PlayerNumber, vpns, iter )
|
||||||
{
|
{
|
||||||
@@ -847,7 +871,7 @@ void OptionRow::ImportOptions( const vector<PlayerNumber> &vpns )
|
|||||||
FOREACH( bool, m_vbSelected[p], b )
|
FOREACH( bool, m_vbSelected[p], b )
|
||||||
*b = false;
|
*b = false;
|
||||||
|
|
||||||
ASSERT( m_vbSelected[p].size() == m_RowDef.choices.size() );
|
ASSERT( m_vbSelected[p].size() == m_RowDef.m_vsChoices.size() );
|
||||||
ERASE_ONE_BOOL_AT_FRONT_IF_NEEDED( m_vbSelected[p] );
|
ERASE_ONE_BOOL_AT_FRONT_IF_NEEDED( m_vbSelected[p] );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -858,7 +882,7 @@ void OptionRow::ImportOptions( const vector<PlayerNumber> &vpns )
|
|||||||
PlayerNumber p = *iter;
|
PlayerNumber p = *iter;
|
||||||
|
|
||||||
INSERT_ONE_BOOL_AT_FRONT_IF_NEEDED( m_vbSelected[p] );
|
INSERT_ONE_BOOL_AT_FRONT_IF_NEEDED( m_vbSelected[p] );
|
||||||
VerifySelected( m_RowDef.selectType, m_vbSelected[p], m_RowDef.name );
|
VerifySelected( m_RowDef.m_selectType, m_vbSelected[p], m_RowDef.m_sName );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -867,7 +891,7 @@ int OptionRow::ExportOptions( const vector<PlayerNumber> &vpns, bool bRowHasFocu
|
|||||||
if( m_pHand == NULL )
|
if( m_pHand == NULL )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
ASSERT( m_RowDef.choices.size() > 0 );
|
ASSERT( m_RowDef.m_vsChoices.size() > 0 );
|
||||||
|
|
||||||
int iChangeMask = 0;
|
int iChangeMask = 0;
|
||||||
|
|
||||||
@@ -876,14 +900,14 @@ int OptionRow::ExportOptions( const vector<PlayerNumber> &vpns, bool bRowHasFocu
|
|||||||
PlayerNumber p = *iter;
|
PlayerNumber p = *iter;
|
||||||
bool bFocus = bRowHasFocus[p];
|
bool bFocus = bRowHasFocus[p];
|
||||||
|
|
||||||
VerifySelected( m_RowDef.selectType, m_vbSelected[p], m_RowDef.name );
|
VerifySelected( m_RowDef.m_selectType, m_vbSelected[p], m_RowDef.m_sName );
|
||||||
ASSERT( m_vbSelected[p].size() == m_RowDef.choices.size() );
|
ASSERT( m_vbSelected[p].size() == m_RowDef.m_vsChoices.size() );
|
||||||
ERASE_ONE_BOOL_AT_FRONT_IF_NEEDED( m_vbSelected[p] );
|
ERASE_ONE_BOOL_AT_FRONT_IF_NEEDED( m_vbSelected[p] );
|
||||||
|
|
||||||
// SELECT_NONE rows get exported if they have focus when the user presses
|
// SELECT_NONE rows get exported if they have focus when the user presses
|
||||||
// Start.
|
// Start.
|
||||||
int iChoice = GetChoiceInRowWithFocus( p );
|
int iChoice = GetChoiceInRowWithFocus( p );
|
||||||
if( m_RowDef.selectType == SELECT_NONE && bFocus )
|
if( m_RowDef.m_selectType == SELECT_NONE && bFocus )
|
||||||
m_vbSelected[p][iChoice] = true;
|
m_vbSelected[p][iChoice] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -895,7 +919,7 @@ int OptionRow::ExportOptions( const vector<PlayerNumber> &vpns, bool bRowHasFocu
|
|||||||
bool bFocus = bRowHasFocus[p];
|
bool bFocus = bRowHasFocus[p];
|
||||||
|
|
||||||
int iChoice = GetChoiceInRowWithFocus( p );
|
int iChoice = GetChoiceInRowWithFocus( p );
|
||||||
if( m_RowDef.selectType == SELECT_NONE && bFocus )
|
if( m_RowDef.m_selectType == SELECT_NONE && bFocus )
|
||||||
m_vbSelected[p][iChoice] = false;
|
m_vbSelected[p][iChoice] = false;
|
||||||
|
|
||||||
INSERT_ONE_BOOL_AT_FRONT_IF_NEEDED( m_vbSelected[p] );
|
INSERT_ONE_BOOL_AT_FRONT_IF_NEEDED( m_vbSelected[p] );
|
||||||
|
|||||||
+21
-17
@@ -34,11 +34,11 @@ LayoutType StringToLayoutType( const CString& s );
|
|||||||
|
|
||||||
struct OptionRowDefinition
|
struct OptionRowDefinition
|
||||||
{
|
{
|
||||||
CString name;
|
CString m_sName;
|
||||||
bool bOneChoiceForAllPlayers;
|
bool m_bOneChoiceForAllPlayers;
|
||||||
SelectType selectType;
|
SelectType m_selectType;
|
||||||
LayoutType layoutType;
|
LayoutType m_layoutType;
|
||||||
vector<CString> choices;
|
vector<CString> m_vsChoices;
|
||||||
set<PlayerNumber> m_vEnabledForPlayers; // only players in this set may change focus to this row
|
set<PlayerNumber> m_vEnabledForPlayers; // only players in this set may change focus to this row
|
||||||
bool m_bExportOnChange;
|
bool m_bExportOnChange;
|
||||||
bool m_bAllowThemeItems; // if false, ignores ScreenOptions::THEME_ITEMS
|
bool m_bAllowThemeItems; // if false, ignores ScreenOptions::THEME_ITEMS
|
||||||
@@ -54,11 +54,11 @@ struct OptionRowDefinition
|
|||||||
OptionRowDefinition() { Init(); }
|
OptionRowDefinition() { Init(); }
|
||||||
void Init()
|
void Init()
|
||||||
{
|
{
|
||||||
name = "";
|
m_sName = "";
|
||||||
bOneChoiceForAllPlayers = false;
|
m_bOneChoiceForAllPlayers = false;
|
||||||
selectType = SELECT_ONE;
|
m_selectType = SELECT_ONE;
|
||||||
layoutType = LAYOUT_SHOW_ALL_IN_ROW;
|
m_layoutType = LAYOUT_SHOW_ALL_IN_ROW;
|
||||||
choices.clear();
|
m_vsChoices.clear();
|
||||||
m_vEnabledForPlayers.clear();
|
m_vEnabledForPlayers.clear();
|
||||||
FOREACH_PlayerNumber( pn )
|
FOREACH_PlayerNumber( pn )
|
||||||
m_vEnabledForPlayers.insert( pn );
|
m_vEnabledForPlayers.insert( pn );
|
||||||
@@ -72,11 +72,11 @@ struct OptionRowDefinition
|
|||||||
OptionRowDefinition( const char *n, bool b, const char *c0=NULL, const char *c1=NULL, const char *c2=NULL, const char *c3=NULL, const char *c4=NULL, const char *c5=NULL, const char *c6=NULL, const char *c7=NULL, const char *c8=NULL, const char *c9=NULL, const char *c10=NULL, const char *c11=NULL, const char *c12=NULL, const char *c13=NULL, const char *c14=NULL, const char *c15=NULL, const char *c16=NULL, const char *c17=NULL, const char *c18=NULL, const char *c19=NULL )
|
OptionRowDefinition( const char *n, bool b, const char *c0=NULL, const char *c1=NULL, const char *c2=NULL, const char *c3=NULL, const char *c4=NULL, const char *c5=NULL, const char *c6=NULL, const char *c7=NULL, const char *c8=NULL, const char *c9=NULL, const char *c10=NULL, const char *c11=NULL, const char *c12=NULL, const char *c13=NULL, const char *c14=NULL, const char *c15=NULL, const char *c16=NULL, const char *c17=NULL, const char *c18=NULL, const char *c19=NULL )
|
||||||
{
|
{
|
||||||
Init();
|
Init();
|
||||||
name=n;
|
m_sName=n;
|
||||||
bOneChoiceForAllPlayers=b;
|
m_bOneChoiceForAllPlayers=b;
|
||||||
selectType=SELECT_ONE;
|
m_selectType=SELECT_ONE;
|
||||||
layoutType=LAYOUT_SHOW_ALL_IN_ROW;
|
m_layoutType=LAYOUT_SHOW_ALL_IN_ROW;
|
||||||
#define PUSH( c ) if(c) choices.push_back(c);
|
#define PUSH( c ) if(c) m_vsChoices.push_back(c);
|
||||||
PUSH(c0);PUSH(c1);PUSH(c2);PUSH(c3);PUSH(c4);PUSH(c5);PUSH(c6);PUSH(c7);PUSH(c8);PUSH(c9);PUSH(c10);PUSH(c11);PUSH(c12);PUSH(c13);PUSH(c14);PUSH(c15);PUSH(c16);PUSH(c17);PUSH(c18);PUSH(c19);
|
PUSH(c0);PUSH(c1);PUSH(c2);PUSH(c3);PUSH(c4);PUSH(c5);PUSH(c6);PUSH(c7);PUSH(c8);PUSH(c9);PUSH(c10);PUSH(c11);PUSH(c12);PUSH(c13);PUSH(c14);PUSH(c15);PUSH(c16);PUSH(c17);PUSH(c18);PUSH(c19);
|
||||||
#undef PUSH
|
#undef PUSH
|
||||||
}
|
}
|
||||||
@@ -120,13 +120,13 @@ public:
|
|||||||
|
|
||||||
bool GetSelected( PlayerNumber pn, int iChoice ) const
|
bool GetSelected( PlayerNumber pn, int iChoice ) const
|
||||||
{
|
{
|
||||||
if( m_RowDef.bOneChoiceForAllPlayers )
|
if( m_RowDef.m_bOneChoiceForAllPlayers )
|
||||||
pn = PLAYER_1;
|
pn = PLAYER_1;
|
||||||
return m_vbSelected[pn][iChoice];
|
return m_vbSelected[pn][iChoice];
|
||||||
}
|
}
|
||||||
void SetSelected( PlayerNumber pn, int iChoice, bool b )
|
void SetSelected( PlayerNumber pn, int iChoice, bool b )
|
||||||
{
|
{
|
||||||
if( m_RowDef.bOneChoiceForAllPlayers )
|
if( m_RowDef.m_bOneChoiceForAllPlayers )
|
||||||
pn = PLAYER_1;
|
pn = PLAYER_1;
|
||||||
m_vbSelected[pn][iChoice] = b;
|
m_vbSelected[pn][iChoice] = b;
|
||||||
}
|
}
|
||||||
@@ -190,12 +190,16 @@ protected:
|
|||||||
ThemeMetric<float> ARROWS_X;
|
ThemeMetric<float> ARROWS_X;
|
||||||
ThemeMetric<float> LABELS_X;
|
ThemeMetric<float> LABELS_X;
|
||||||
ThemeMetric<apActorCommands> LABELS_ON_COMMAND;
|
ThemeMetric<apActorCommands> LABELS_ON_COMMAND;
|
||||||
|
ThemeMetric<apActorCommands> LABEL_GAIN_FOCUS_COMMAND;
|
||||||
|
ThemeMetric<apActorCommands> LABEL_LOSE_FOCUS_COMMAND;
|
||||||
ThemeMetric<float> ITEMS_START_X;
|
ThemeMetric<float> ITEMS_START_X;
|
||||||
ThemeMetric<float> ITEMS_END_X;
|
ThemeMetric<float> ITEMS_END_X;
|
||||||
ThemeMetric<float> ITEMS_GAP_X;
|
ThemeMetric<float> ITEMS_GAP_X;
|
||||||
ThemeMetric1D<float> ITEMS_LONG_ROW_X;
|
ThemeMetric1D<float> ITEMS_LONG_ROW_X;
|
||||||
ThemeMetric<float> ITEMS_LONG_ROW_SHARED_X;
|
ThemeMetric<float> ITEMS_LONG_ROW_SHARED_X;
|
||||||
ThemeMetric<apActorCommands> ITEMS_ON_COMMAND;
|
ThemeMetric<apActorCommands> ITEMS_ON_COMMAND;
|
||||||
|
ThemeMetric<apActorCommands> ITEM_GAIN_FOCUS_COMMAND;
|
||||||
|
ThemeMetric<apActorCommands> ITEM_LOSE_FOCUS_COMMAND;
|
||||||
ThemeMetric1D<float> ICONS_X;
|
ThemeMetric1D<float> ICONS_X;
|
||||||
ThemeMetric<apActorCommands> ICONS_ON_COMMAND;
|
ThemeMetric<apActorCommands> ICONS_ON_COMMAND;
|
||||||
ThemeMetric<RageColor> COLOR_SELECTED;
|
ThemeMetric<RageColor> COLOR_SELECTED;
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ public:
|
|||||||
|
|
||||||
m_bUseModNameForIcon = true;
|
m_bUseModNameForIcon = true;
|
||||||
|
|
||||||
defOut.name = sParam;
|
defOut.m_sName = sParam;
|
||||||
|
|
||||||
Default.Load( -1, ParseCommands(ENTRY_DEFAULT(sParam)) );
|
Default.Load( -1, ParseCommands(ENTRY_DEFAULT(sParam)) );
|
||||||
|
|
||||||
@@ -92,18 +92,18 @@ public:
|
|||||||
if( cmds.v.size() < 1 )
|
if( cmds.v.size() < 1 )
|
||||||
RageException::Throw( "Parse error in ScreenOptionsMaster::%s", sParam.c_str() );
|
RageException::Throw( "Parse error in ScreenOptionsMaster::%s", sParam.c_str() );
|
||||||
|
|
||||||
defOut.bOneChoiceForAllPlayers = false;
|
defOut.m_bOneChoiceForAllPlayers = false;
|
||||||
const int NumCols = atoi( cmds.v[0].m_vsArgs[0] );
|
const int NumCols = atoi( cmds.v[0].m_vsArgs[0] );
|
||||||
for( unsigned i=1; i<cmds.v.size(); i++ )
|
for( unsigned i=1; i<cmds.v.size(); i++ )
|
||||||
{
|
{
|
||||||
const Command &cmd = cmds.v[i];
|
const Command &cmd = cmds.v[i];
|
||||||
CString sName = cmd.GetName();
|
CString sName = cmd.GetName();
|
||||||
|
|
||||||
if( sName == "together" ) defOut.bOneChoiceForAllPlayers = true;
|
if( sName == "together" ) defOut.m_bOneChoiceForAllPlayers = true;
|
||||||
else if( sName == "selectmultiple" ) defOut.selectType = SELECT_MULTIPLE;
|
else if( sName == "selectmultiple" ) defOut.m_selectType = SELECT_MULTIPLE;
|
||||||
else if( sName == "selectone" ) defOut.selectType = SELECT_ONE;
|
else if( sName == "selectone" ) defOut.m_selectType = SELECT_ONE;
|
||||||
else if( sName == "selectnone" ) defOut.selectType = SELECT_NONE;
|
else if( sName == "selectnone" ) defOut.m_selectType = SELECT_NONE;
|
||||||
else if( sName == "showoneinrow" ) defOut.layoutType = LAYOUT_SHOW_ONE_IN_ROW;
|
else if( sName == "showoneinrow" ) defOut.m_layoutType = LAYOUT_SHOW_ONE_IN_ROW;
|
||||||
else if( sName == "reloadrowmessages" )
|
else if( sName == "reloadrowmessages" )
|
||||||
{
|
{
|
||||||
for( unsigned a=1; a<cmd.m_vsArgs.size(); a++ )
|
for( unsigned a=1; a<cmd.m_vsArgs.size(); a++ )
|
||||||
@@ -150,7 +150,7 @@ public:
|
|||||||
|
|
||||||
CString sName = mc.m_sName;
|
CString sName = mc.m_sName;
|
||||||
CString sChoice = mc.m_sName;
|
CString sChoice = mc.m_sName;
|
||||||
defOut.choices.push_back( sChoice );
|
defOut.m_vsChoices.push_back( sChoice );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void ImportOption( const OptionRowDefinition &def, const vector<PlayerNumber> &vpns, vector<bool> vbSelectedOut[NUM_PLAYERS] ) const
|
void ImportOption( const OptionRowDefinition &def, const vector<PlayerNumber> &vpns, vector<bool> vbSelectedOut[NUM_PLAYERS] ) const
|
||||||
@@ -174,17 +174,17 @@ public:
|
|||||||
/* The entry has no effect. This is usually a default "none of the
|
/* The entry has no effect. This is usually a default "none of the
|
||||||
* above" entry. It will always return true for DescribesCurrentMode().
|
* above" entry. It will always return true for DescribesCurrentMode().
|
||||||
* It's only the selected choice if nothing else matches. */
|
* It's only the selected choice if nothing else matches. */
|
||||||
if( def.selectType != SELECT_MULTIPLE )
|
if( def.m_selectType != SELECT_MULTIPLE )
|
||||||
iFallbackOption = e;
|
iFallbackOption = e;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( def.bOneChoiceForAllPlayers )
|
if( def.m_bOneChoiceForAllPlayers )
|
||||||
{
|
{
|
||||||
if( mc.DescribesCurrentModeForAllPlayers() )
|
if( mc.DescribesCurrentModeForAllPlayers() )
|
||||||
{
|
{
|
||||||
bUseFallbackOption = false;
|
bUseFallbackOption = false;
|
||||||
if( def.selectType != SELECT_MULTIPLE )
|
if( def.m_selectType != SELECT_MULTIPLE )
|
||||||
SelectExactlyOne( e, vbSelOut );
|
SelectExactlyOne( e, vbSelOut );
|
||||||
else
|
else
|
||||||
vbSelOut[e] = true;
|
vbSelOut[e] = true;
|
||||||
@@ -195,7 +195,7 @@ public:
|
|||||||
if( mc.DescribesCurrentMode( p) )
|
if( mc.DescribesCurrentMode( p) )
|
||||||
{
|
{
|
||||||
bUseFallbackOption = false;
|
bUseFallbackOption = false;
|
||||||
if( def.selectType != SELECT_MULTIPLE )
|
if( def.m_selectType != SELECT_MULTIPLE )
|
||||||
SelectExactlyOne( e, vbSelOut );
|
SelectExactlyOne( e, vbSelOut );
|
||||||
else
|
else
|
||||||
vbSelOut[e] = true;
|
vbSelOut[e] = true;
|
||||||
@@ -203,7 +203,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( def.selectType == SELECT_ONE && bUseFallbackOption )
|
if( def.m_selectType == SELECT_ONE && bUseFallbackOption )
|
||||||
{
|
{
|
||||||
if( iFallbackOption == -1 )
|
if( iFallbackOption == -1 )
|
||||||
{
|
{
|
||||||
@@ -216,7 +216,7 @@ public:
|
|||||||
SelectExactlyOne( iFallbackOption, vbSelOut );
|
SelectExactlyOne( iFallbackOption, vbSelOut );
|
||||||
}
|
}
|
||||||
|
|
||||||
VerifySelected( def.selectType, vbSelOut, def.name );
|
VerifySelected( def.m_selectType, vbSelOut, def.m_sName );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -243,7 +243,7 @@ public:
|
|||||||
{
|
{
|
||||||
return m_bUseModNameForIcon ?
|
return m_bUseModNameForIcon ?
|
||||||
ListEntries[iFirstSelection].m_sModifiers :
|
ListEntries[iFirstSelection].m_sModifiers :
|
||||||
def.choices[iFirstSelection];
|
def.m_vsChoices[iFirstSelection];
|
||||||
}
|
}
|
||||||
virtual bool HasScreen( int iChoice ) const
|
virtual bool HasScreen( int iChoice ) const
|
||||||
{
|
{
|
||||||
@@ -259,8 +259,8 @@ public:
|
|||||||
ASSERT( sParam.size() );
|
ASSERT( sParam.size() );
|
||||||
m_sName = sParam;
|
m_sName = sParam;
|
||||||
|
|
||||||
defOut.name = "NoteSkins";
|
defOut.m_sName = "NoteSkins";
|
||||||
defOut.bOneChoiceForAllPlayers = false;
|
defOut.m_bOneChoiceForAllPlayers = false;
|
||||||
defOut.m_bAllowThemeItems = false; // we theme the text ourself
|
defOut.m_bAllowThemeItems = false; // we theme the text ourself
|
||||||
|
|
||||||
CStringArray arraySkinNames;
|
CStringArray arraySkinNames;
|
||||||
@@ -272,7 +272,7 @@ public:
|
|||||||
GameCommand mc;
|
GameCommand mc;
|
||||||
mc.m_sModifiers = arraySkinNames[skin];
|
mc.m_sModifiers = arraySkinNames[skin];
|
||||||
ListEntries.push_back( mc );
|
ListEntries.push_back( mc );
|
||||||
defOut.choices.push_back( arraySkinNames[skin] );
|
defOut.m_vsChoices.push_back( arraySkinNames[skin] );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -284,19 +284,19 @@ public:
|
|||||||
ASSERT( sParam.size() );
|
ASSERT( sParam.size() );
|
||||||
m_sName = sParam;
|
m_sName = sParam;
|
||||||
|
|
||||||
defOut.name = "Steps";
|
defOut.m_sName = "Steps";
|
||||||
defOut.bOneChoiceForAllPlayers = bLockedTogether;
|
defOut.m_bOneChoiceForAllPlayers = bLockedTogether;
|
||||||
defOut.m_bAllowThemeItems = false; // we theme the text ourself
|
defOut.m_bAllowThemeItems = false; // we theme the text ourself
|
||||||
|
|
||||||
// fill in difficulty names
|
// fill in difficulty names
|
||||||
if( GAMESTATE->m_bEditing )
|
if( GAMESTATE->m_bEditing )
|
||||||
{
|
{
|
||||||
defOut.choices.push_back( "" );
|
defOut.m_vsChoices.push_back( "" );
|
||||||
ListEntries.push_back( GameCommand() );
|
ListEntries.push_back( GameCommand() );
|
||||||
}
|
}
|
||||||
else if( GAMESTATE->IsCourseMode() ) // playing a course
|
else if( GAMESTATE->IsCourseMode() ) // playing a course
|
||||||
{
|
{
|
||||||
defOut.bOneChoiceForAllPlayers = (bool)PREFSMAN->m_bLockCourseDifficulties;
|
defOut.m_bOneChoiceForAllPlayers = (bool)PREFSMAN->m_bLockCourseDifficulties;
|
||||||
|
|
||||||
vector<Trail*> vTrails;
|
vector<Trail*> vTrails;
|
||||||
GAMESTATE->m_pCurCourse->GetTrails( vTrails, GAMESTATE->GetCurrentStyle()->m_StepsType );
|
GAMESTATE->m_pCurCourse->GetTrails( vTrails, GAMESTATE->GetCurrentStyle()->m_StepsType );
|
||||||
@@ -306,7 +306,7 @@ public:
|
|||||||
|
|
||||||
CString s = CourseDifficultyToThemedString( pTrail->m_CourseDifficulty );
|
CString s = CourseDifficultyToThemedString( pTrail->m_CourseDifficulty );
|
||||||
s += ssprintf( " %d", pTrail->GetMeter() );
|
s += ssprintf( " %d", pTrail->GetMeter() );
|
||||||
defOut.choices.push_back( s );
|
defOut.m_vsChoices.push_back( s );
|
||||||
GameCommand mc;
|
GameCommand mc;
|
||||||
mc.m_pTrail = pTrail;
|
mc.m_pTrail = pTrail;
|
||||||
ListEntries.push_back( mc );
|
ListEntries.push_back( mc );
|
||||||
@@ -329,7 +329,7 @@ public:
|
|||||||
else
|
else
|
||||||
s = DifficultyToThemedString( pSteps->GetDifficulty() );
|
s = DifficultyToThemedString( pSteps->GetDifficulty() );
|
||||||
s += ssprintf( " %d", pSteps->GetMeter() );
|
s += ssprintf( " %d", pSteps->GetMeter() );
|
||||||
defOut.choices.push_back( s );
|
defOut.m_vsChoices.push_back( s );
|
||||||
GameCommand mc;
|
GameCommand mc;
|
||||||
mc.m_pSteps = pSteps;
|
mc.m_pSteps = pSteps;
|
||||||
mc.m_dc = pSteps->GetDifficulty();
|
mc.m_dc = pSteps->GetDifficulty();
|
||||||
@@ -346,13 +346,13 @@ public:
|
|||||||
ASSERT( sParam.size() );
|
ASSERT( sParam.size() );
|
||||||
m_sName = sParam;
|
m_sName = sParam;
|
||||||
|
|
||||||
defOut.bOneChoiceForAllPlayers = false;
|
defOut.m_bOneChoiceForAllPlayers = false;
|
||||||
defOut.m_bAllowThemeItems = false;
|
defOut.m_bAllowThemeItems = false;
|
||||||
defOut.name = "Characters";
|
defOut.m_sName = "Characters";
|
||||||
Default.m_pCharacter = GAMESTATE->GetDefaultCharacter();
|
Default.m_pCharacter = GAMESTATE->GetDefaultCharacter();
|
||||||
|
|
||||||
{
|
{
|
||||||
defOut.choices.push_back( "Off" );
|
defOut.m_vsChoices.push_back( "Off" );
|
||||||
GameCommand mc;
|
GameCommand mc;
|
||||||
mc.m_pCharacter = NULL;
|
mc.m_pCharacter = NULL;
|
||||||
ListEntries.push_back( mc );
|
ListEntries.push_back( mc );
|
||||||
@@ -366,7 +366,7 @@ public:
|
|||||||
CString s = pCharacter->m_sName;
|
CString s = pCharacter->m_sName;
|
||||||
s.MakeUpper();
|
s.MakeUpper();
|
||||||
|
|
||||||
defOut.choices.push_back( s );
|
defOut.m_vsChoices.push_back( s );
|
||||||
GameCommand mc;
|
GameCommand mc;
|
||||||
mc.m_pCharacter = pCharacter;
|
mc.m_pCharacter = pCharacter;
|
||||||
ListEntries.push_back( mc );
|
ListEntries.push_back( mc );
|
||||||
@@ -381,8 +381,8 @@ public:
|
|||||||
ASSERT( sParam.size() );
|
ASSERT( sParam.size() );
|
||||||
m_sName = sParam;
|
m_sName = sParam;
|
||||||
|
|
||||||
defOut.bOneChoiceForAllPlayers = true;
|
defOut.m_bOneChoiceForAllPlayers = true;
|
||||||
defOut.name = "Style";
|
defOut.m_sName = "Style";
|
||||||
defOut.m_bAllowThemeItems = false; // we theme the text ourself
|
defOut.m_bAllowThemeItems = false; // we theme the text ourself
|
||||||
|
|
||||||
vector<const Style*> vStyles;
|
vector<const Style*> vStyles;
|
||||||
@@ -390,7 +390,7 @@ public:
|
|||||||
ASSERT( vStyles.size() );
|
ASSERT( vStyles.size() );
|
||||||
FOREACH_CONST( const Style*, vStyles, s )
|
FOREACH_CONST( const Style*, vStyles, s )
|
||||||
{
|
{
|
||||||
defOut.choices.push_back( GAMEMAN->StyleToThemedString(*s) );
|
defOut.m_vsChoices.push_back( GAMEMAN->StyleToThemedString(*s) );
|
||||||
GameCommand mc;
|
GameCommand mc;
|
||||||
mc.m_pStyle = *s;
|
mc.m_pStyle = *s;
|
||||||
ListEntries.push_back( mc );
|
ListEntries.push_back( mc );
|
||||||
@@ -407,9 +407,9 @@ public:
|
|||||||
ASSERT( sParam.size() );
|
ASSERT( sParam.size() );
|
||||||
m_sName = sParam;
|
m_sName = sParam;
|
||||||
|
|
||||||
defOut.bOneChoiceForAllPlayers = true;
|
defOut.m_bOneChoiceForAllPlayers = true;
|
||||||
defOut.m_bAllowThemeItems = false; // we theme the text ourself
|
defOut.m_bAllowThemeItems = false; // we theme the text ourself
|
||||||
defOut.name = "Group";
|
defOut.m_sName = "Group";
|
||||||
Default.m_sSongGroup = GROUP_ALL;
|
Default.m_sSongGroup = GROUP_ALL;
|
||||||
|
|
||||||
vector<CString> vSongGroups;
|
vector<CString> vSongGroups;
|
||||||
@@ -417,7 +417,7 @@ public:
|
|||||||
ASSERT( vSongGroups.size() );
|
ASSERT( vSongGroups.size() );
|
||||||
|
|
||||||
{
|
{
|
||||||
defOut.choices.push_back( "AllGroups" );
|
defOut.m_vsChoices.push_back( "AllGroups" );
|
||||||
GameCommand mc;
|
GameCommand mc;
|
||||||
mc.m_sSongGroup = GROUP_ALL;
|
mc.m_sSongGroup = GROUP_ALL;
|
||||||
ListEntries.push_back( mc );
|
ListEntries.push_back( mc );
|
||||||
@@ -425,7 +425,7 @@ public:
|
|||||||
|
|
||||||
FOREACH_CONST( CString, vSongGroups, g )
|
FOREACH_CONST( CString, vSongGroups, g )
|
||||||
{
|
{
|
||||||
defOut.choices.push_back( *g );
|
defOut.m_vsChoices.push_back( *g );
|
||||||
GameCommand mc;
|
GameCommand mc;
|
||||||
mc.m_sSongGroup = *g;
|
mc.m_sSongGroup = *g;
|
||||||
ListEntries.push_back( mc );
|
ListEntries.push_back( mc );
|
||||||
@@ -440,13 +440,13 @@ public:
|
|||||||
ASSERT( sParam.size() );
|
ASSERT( sParam.size() );
|
||||||
m_sName = sParam;
|
m_sName = sParam;
|
||||||
|
|
||||||
defOut.bOneChoiceForAllPlayers = true;
|
defOut.m_bOneChoiceForAllPlayers = true;
|
||||||
defOut.name = "Difficulty";
|
defOut.m_sName = "Difficulty";
|
||||||
Default.m_dc = DIFFICULTY_INVALID;
|
Default.m_dc = DIFFICULTY_INVALID;
|
||||||
defOut.m_bAllowThemeItems = false; // we theme the text ourself
|
defOut.m_bAllowThemeItems = false; // we theme the text ourself
|
||||||
|
|
||||||
{
|
{
|
||||||
defOut.choices.push_back( "AllDifficulties" );
|
defOut.m_vsChoices.push_back( "AllDifficulties" );
|
||||||
GameCommand mc;
|
GameCommand mc;
|
||||||
mc.m_dc = DIFFICULTY_INVALID;
|
mc.m_dc = DIFFICULTY_INVALID;
|
||||||
ListEntries.push_back( mc );
|
ListEntries.push_back( mc );
|
||||||
@@ -456,7 +456,7 @@ public:
|
|||||||
{
|
{
|
||||||
CString s = DifficultyToThemedString( *d );
|
CString s = DifficultyToThemedString( *d );
|
||||||
|
|
||||||
defOut.choices.push_back( s );
|
defOut.m_vsChoices.push_back( s );
|
||||||
GameCommand mc;
|
GameCommand mc;
|
||||||
mc.m_dc = *d;
|
mc.m_dc = *d;
|
||||||
ListEntries.push_back( mc );
|
ListEntries.push_back( mc );
|
||||||
@@ -477,14 +477,14 @@ public:
|
|||||||
if( GAMESTATE->m_pCurSong == NULL )
|
if( GAMESTATE->m_pCurSong == NULL )
|
||||||
GAMESTATE->m_pCurSong.Set( vpSongs[0] );
|
GAMESTATE->m_pCurSong.Set( vpSongs[0] );
|
||||||
|
|
||||||
defOut.name = "SongsInCurrentSongGroup";
|
defOut.m_sName = "SongsInCurrentSongGroup";
|
||||||
defOut.bOneChoiceForAllPlayers = true;
|
defOut.m_bOneChoiceForAllPlayers = true;
|
||||||
defOut.layoutType = LAYOUT_SHOW_ONE_IN_ROW;
|
defOut.m_layoutType = LAYOUT_SHOW_ONE_IN_ROW;
|
||||||
defOut.m_bExportOnChange = true;
|
defOut.m_bExportOnChange = true;
|
||||||
|
|
||||||
FOREACH_CONST( Song*, vpSongs, p )
|
FOREACH_CONST( Song*, vpSongs, p )
|
||||||
{
|
{
|
||||||
defOut.choices.push_back( (*p)->GetTranslitFullTitle() );
|
defOut.m_vsChoices.push_back( (*p)->GetTranslitFullTitle() );
|
||||||
GameCommand mc;
|
GameCommand mc;
|
||||||
mc.m_pSong = *p;
|
mc.m_pSong = *p;
|
||||||
ListEntries.push_back( mc );
|
ListEntries.push_back( mc );
|
||||||
@@ -529,13 +529,13 @@ public:
|
|||||||
const char *pStr = lua_tostring( L, -1 );
|
const char *pStr = lua_tostring( L, -1 );
|
||||||
if( pStr == NULL )
|
if( pStr == NULL )
|
||||||
RageException::Throw( "\"%s\" \"Name\" entry is not a string", sLuaFunction.c_str() );
|
RageException::Throw( "\"%s\" \"Name\" entry is not a string", sLuaFunction.c_str() );
|
||||||
defOut.name = pStr;
|
defOut.m_sName = pStr;
|
||||||
lua_pop( L, 1 );
|
lua_pop( L, 1 );
|
||||||
|
|
||||||
|
|
||||||
lua_pushstring( L, "OneChoiceForAllPlayers" );
|
lua_pushstring( L, "OneChoiceForAllPlayers" );
|
||||||
lua_gettable( L, -2 );
|
lua_gettable( L, -2 );
|
||||||
defOut.bOneChoiceForAllPlayers = !!lua_toboolean( L, -1 );
|
defOut.m_bOneChoiceForAllPlayers = !!lua_toboolean( L, -1 );
|
||||||
lua_pop( L, 1 );
|
lua_pop( L, 1 );
|
||||||
|
|
||||||
|
|
||||||
@@ -550,8 +550,8 @@ public:
|
|||||||
pStr = lua_tostring( L, -1 );
|
pStr = lua_tostring( L, -1 );
|
||||||
if( pStr == NULL )
|
if( pStr == NULL )
|
||||||
RageException::Throw( "\"%s\" \"LayoutType\" entry is not a string", sLuaFunction.c_str() );
|
RageException::Throw( "\"%s\" \"LayoutType\" entry is not a string", sLuaFunction.c_str() );
|
||||||
defOut.layoutType = StringToLayoutType( pStr );
|
defOut.m_layoutType = StringToLayoutType( pStr );
|
||||||
ASSERT( defOut.layoutType != LAYOUT_INVALID );
|
ASSERT( defOut.m_layoutType != LAYOUT_INVALID );
|
||||||
lua_pop( L, 1 );
|
lua_pop( L, 1 );
|
||||||
|
|
||||||
|
|
||||||
@@ -560,8 +560,8 @@ public:
|
|||||||
pStr = lua_tostring( L, -1 );
|
pStr = lua_tostring( L, -1 );
|
||||||
if( pStr == NULL )
|
if( pStr == NULL )
|
||||||
RageException::Throw( "\"%s\" \"SelectType\" entry is not a string", sLuaFunction.c_str() );
|
RageException::Throw( "\"%s\" \"SelectType\" entry is not a string", sLuaFunction.c_str() );
|
||||||
defOut.selectType = StringToSelectType( pStr );
|
defOut.m_selectType = StringToSelectType( pStr );
|
||||||
ASSERT( defOut.selectType != SELECT_INVALID );
|
ASSERT( defOut.m_selectType != SELECT_INVALID );
|
||||||
lua_pop( L, 1 );
|
lua_pop( L, 1 );
|
||||||
|
|
||||||
|
|
||||||
@@ -580,7 +580,7 @@ public:
|
|||||||
RageException::Throw( "\"%s\" Column entry is not a string", sLuaFunction.c_str() );
|
RageException::Throw( "\"%s\" Column entry is not a string", sLuaFunction.c_str() );
|
||||||
// LOG->Trace( "'%s'", pValue);
|
// LOG->Trace( "'%s'", pValue);
|
||||||
|
|
||||||
defOut.choices.push_back( pValue );
|
defOut.m_vsChoices.push_back( pValue );
|
||||||
|
|
||||||
lua_pop( L, 1 ); /* removes `value'; keeps `key' for next iteration */
|
lua_pop( L, 1 ); /* removes `value'; keeps `key' for next iteration */
|
||||||
}
|
}
|
||||||
@@ -723,7 +723,7 @@ public:
|
|||||||
lua_pushstring( L, "LoadSelections" );
|
lua_pushstring( L, "LoadSelections" );
|
||||||
lua_gettable( L, -2 );
|
lua_gettable( L, -2 );
|
||||||
if( !lua_isfunction( L, -1 ) )
|
if( !lua_isfunction( L, -1 ) )
|
||||||
RageException::Throw( "\"%s\" \"LoadSelections\" entry is not a function", def.name.c_str() );
|
RageException::Throw( "\"%s\" \"LoadSelections\" entry is not a function", def.m_sName.c_str() );
|
||||||
|
|
||||||
/* Argument 1 (self): */
|
/* Argument 1 (self): */
|
||||||
m_pLuaTable->PushSelf( L );
|
m_pLuaTable->PushSelf( L );
|
||||||
@@ -777,7 +777,7 @@ public:
|
|||||||
lua_pushstring( L, "SaveSelections" );
|
lua_pushstring( L, "SaveSelections" );
|
||||||
lua_gettable( L, -2 );
|
lua_gettable( L, -2 );
|
||||||
if( !lua_isfunction( L, -1 ) )
|
if( !lua_isfunction( L, -1 ) )
|
||||||
RageException::Throw( "\"%s\" \"SaveSelections\" entry is not a function", def.name.c_str() );
|
RageException::Throw( "\"%s\" \"SaveSelections\" entry is not a function", def.m_sName.c_str() );
|
||||||
|
|
||||||
/* Argument 1 (self): */
|
/* Argument 1 (self): */
|
||||||
m_pLuaTable->PushSelf( L );
|
m_pLuaTable->PushSelf( L );
|
||||||
@@ -825,7 +825,7 @@ public:
|
|||||||
defOut.Init();
|
defOut.Init();
|
||||||
|
|
||||||
/* Configuration values are never per-player. */
|
/* Configuration values are never per-player. */
|
||||||
defOut.bOneChoiceForAllPlayers = true;
|
defOut.m_bOneChoiceForAllPlayers = true;
|
||||||
|
|
||||||
ConfOption *pConfOption = ConfOption::Find( sParam );
|
ConfOption *pConfOption = ConfOption::Find( sParam );
|
||||||
if( pConfOption == NULL )
|
if( pConfOption == NULL )
|
||||||
@@ -834,9 +834,9 @@ public:
|
|||||||
pConfOption->UpdateAvailableOptions();
|
pConfOption->UpdateAvailableOptions();
|
||||||
|
|
||||||
opt = pConfOption;
|
opt = pConfOption;
|
||||||
opt->MakeOptionsList( defOut.choices );
|
opt->MakeOptionsList( defOut.m_vsChoices );
|
||||||
|
|
||||||
defOut.name = opt->name;
|
defOut.m_sName = opt->name;
|
||||||
}
|
}
|
||||||
virtual void ImportOption( const OptionRowDefinition &def, const vector<PlayerNumber> &vpns, vector<bool> vbSelectedOut[NUM_PLAYERS] ) const
|
virtual void ImportOption( const OptionRowDefinition &def, const vector<PlayerNumber> &vpns, vector<bool> vbSelectedOut[NUM_PLAYERS] ) const
|
||||||
{
|
{
|
||||||
@@ -917,9 +917,9 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_sName = sParam;
|
m_sName = sParam;
|
||||||
defOut.name = sParam;
|
defOut.m_sName = sParam;
|
||||||
defOut.bOneChoiceForAllPlayers = true;
|
defOut.m_bOneChoiceForAllPlayers = true;
|
||||||
defOut.layoutType = LAYOUT_SHOW_ONE_IN_ROW;
|
defOut.m_layoutType = LAYOUT_SHOW_ONE_IN_ROW;
|
||||||
defOut.m_bExportOnChange = true;
|
defOut.m_bExportOnChange = true;
|
||||||
defOut.m_bAllowThemeItems = false; // we theme the text ourself
|
defOut.m_bAllowThemeItems = false; // we theme the text ourself
|
||||||
|
|
||||||
@@ -929,7 +929,7 @@ public:
|
|||||||
FOREACH_CONST( StepsType, m_vStepsTypesToShow, st )
|
FOREACH_CONST( StepsType, m_vStepsTypesToShow, st )
|
||||||
{
|
{
|
||||||
CString s = GAMEMAN->StepsTypeToThemedString( *st );
|
CString s = GAMEMAN->StepsTypeToThemedString( *st );
|
||||||
defOut.choices.push_back( s );
|
defOut.m_vsChoices.push_back( s );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( *m_pstToFill == STEPS_TYPE_INVALID )
|
if( *m_pstToFill == STEPS_TYPE_INVALID )
|
||||||
@@ -1019,9 +1019,9 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_sName = sParam;
|
m_sName = sParam;
|
||||||
defOut.name = sParam;
|
defOut.m_sName = sParam;
|
||||||
defOut.bOneChoiceForAllPlayers = true;
|
defOut.m_bOneChoiceForAllPlayers = true;
|
||||||
defOut.layoutType = LAYOUT_SHOW_ONE_IN_ROW;
|
defOut.m_layoutType = LAYOUT_SHOW_ONE_IN_ROW;
|
||||||
defOut.m_bExportOnChange = true;
|
defOut.m_bExportOnChange = true;
|
||||||
defOut.m_bAllowThemeItems = false; // we theme the text ourself
|
defOut.m_bAllowThemeItems = false; // we theme the text ourself
|
||||||
m_vsReloadRowMessages.push_back( MessageToString(MESSAGE_CURRENT_SONG_CHANGED) );
|
m_vsReloadRowMessages.push_back( MessageToString(MESSAGE_CURRENT_SONG_CHANGED) );
|
||||||
@@ -1062,14 +1062,14 @@ public:
|
|||||||
{
|
{
|
||||||
s = DifficultyToThemedString( dc );
|
s = DifficultyToThemedString( dc );
|
||||||
}
|
}
|
||||||
defOut.choices.push_back( s );
|
defOut.m_vsChoices.push_back( s );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_vDifficulties.push_back( DIFFICULTY_EDIT );
|
m_vDifficulties.push_back( DIFFICULTY_EDIT );
|
||||||
m_vSteps.push_back( NULL );
|
m_vSteps.push_back( NULL );
|
||||||
defOut.choices.push_back( "none" );
|
defOut.m_vsChoices.push_back( "none" );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( m_pDifficultyToFill )
|
if( m_pDifficultyToFill )
|
||||||
|
|||||||
@@ -58,23 +58,23 @@ void ScreenCourseManager::Init()
|
|||||||
vector<OptionRowHandler*> vHands;
|
vector<OptionRowHandler*> vHands;
|
||||||
|
|
||||||
OptionRowDefinition def;
|
OptionRowDefinition def;
|
||||||
def.layoutType = LAYOUT_SHOW_ONE_IN_ROW;
|
def.m_layoutType = LAYOUT_SHOW_ONE_IN_ROW;
|
||||||
|
|
||||||
def.name = "Group";
|
def.m_sName = "Group";
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
SONGMAN->GetCourseGroupNames( def.choices );
|
SONGMAN->GetCourseGroupNames( def.m_vsChoices );
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
|
|
||||||
def.name = "Course Group";
|
def.m_sName = "Course Group";
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
def.choices.push_back( "" );
|
def.m_vsChoices.push_back( "" );
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
|
|
||||||
def.name = "Action";
|
def.m_sName = "Action";
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
def.choices.push_back( "" );
|
def.m_vsChoices.push_back( "" );
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
|
|
||||||
@@ -102,7 +102,7 @@ void ScreenCourseManager::AfterChangeValueInRow( PlayerNumber pn )
|
|||||||
{
|
{
|
||||||
OptionRow &row = *m_pRows[ROW_COURSE_GROUP];
|
OptionRow &row = *m_pRows[ROW_COURSE_GROUP];
|
||||||
int iChoice = row.GetChoiceInRowWithFocus(pn);
|
int iChoice = row.GetChoiceInRowWithFocus(pn);
|
||||||
CString sCourseGroup = row.GetRowDef().choices[iChoice];
|
CString sCourseGroup = row.GetRowDef().m_vsChoices[iChoice];
|
||||||
GAMESTATE->m_sPreferredCourseGroup.Set( sCourseGroup );
|
GAMESTATE->m_sPreferredCourseGroup.Set( sCourseGroup );
|
||||||
}
|
}
|
||||||
// Refresh courses
|
// Refresh courses
|
||||||
@@ -111,10 +111,10 @@ void ScreenCourseManager::AfterChangeValueInRow( PlayerNumber pn )
|
|||||||
vector<Course*> vpCourses;
|
vector<Course*> vpCourses;
|
||||||
SONGMAN->GetCoursesInGroup( vpCourses, GAMESTATE->m_sPreferredCourseGroup.Get(), false );
|
SONGMAN->GetCoursesInGroup( vpCourses, GAMESTATE->m_sPreferredCourseGroup.Get(), false );
|
||||||
OptionRowDefinition def = row.GetRowDef();
|
OptionRowDefinition def = row.GetRowDef();
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
FOREACH_CONST( Course*, vpCourses, c )
|
FOREACH_CONST( Course*, vpCourses, c )
|
||||||
def.choices.push_back( (*c)->GetTranslitFullTitle() );
|
def.m_vsChoices.push_back( (*c)->GetTranslitFullTitle() );
|
||||||
def.choices.push_back( NULL ); // new course
|
def.m_vsChoices.push_back( NULL ); // new course
|
||||||
row.Reload( def );
|
row.Reload( def );
|
||||||
}
|
}
|
||||||
// fall through
|
// fall through
|
||||||
@@ -132,11 +132,11 @@ void ScreenCourseManager::AfterChangeValueInRow( PlayerNumber pn )
|
|||||||
{
|
{
|
||||||
OptionRow &row = *m_pRows[ROW_ACTION];
|
OptionRow &row = *m_pRows[ROW_ACTION];
|
||||||
OptionRowDefinition def = row.GetRowDef();
|
OptionRowDefinition def = row.GetRowDef();
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
vector<CourseManagerAction> vActions;
|
vector<CourseManagerAction> vActions;
|
||||||
GetPossibleActions( vActions );
|
GetPossibleActions( vActions );
|
||||||
FOREACH_CONST( CourseManagerAction, vActions, a )
|
FOREACH_CONST( CourseManagerAction, vActions, a )
|
||||||
def.choices.push_back( CourseManagerActionToString(*a) );
|
def.m_vsChoices.push_back( CourseManagerActionToString(*a) );
|
||||||
row.Reload( def );
|
row.Reload( def );
|
||||||
}
|
}
|
||||||
// fall through
|
// fall through
|
||||||
|
|||||||
@@ -67,59 +67,59 @@ void ScreenEditCourse::Init()
|
|||||||
vector<OptionRowHandler*> vHands;
|
vector<OptionRowHandler*> vHands;
|
||||||
|
|
||||||
OptionRowDefinition def;
|
OptionRowDefinition def;
|
||||||
def.layoutType = LAYOUT_SHOW_ONE_IN_ROW;
|
def.m_layoutType = LAYOUT_SHOW_ONE_IN_ROW;
|
||||||
|
|
||||||
def.name = "Title";
|
def.m_sName = "Title";
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
def.choices.push_back( pCourse->GetTranslitFullTitle() );
|
def.m_vsChoices.push_back( pCourse->GetTranslitFullTitle() );
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
|
|
||||||
def.name = "Repeat";
|
def.m_sName = "Repeat";
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
def.choices.push_back( "NO" );
|
def.m_vsChoices.push_back( "NO" );
|
||||||
def.choices.push_back( "YES" );
|
def.m_vsChoices.push_back( "YES" );
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
|
|
||||||
def.name = "Randomize";
|
def.m_sName = "Randomize";
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
def.choices.push_back( "NO" );
|
def.m_vsChoices.push_back( "NO" );
|
||||||
def.choices.push_back( "YES" );
|
def.m_vsChoices.push_back( "YES" );
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
|
|
||||||
def.name = "Lives";
|
def.m_sName = "Lives";
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
def.choices.push_back( "Use Bar Life" );
|
def.m_vsChoices.push_back( "Use Bar Life" );
|
||||||
for( int i=1; i<=10; i++ )
|
for( int i=1; i<=10; i++ )
|
||||||
def.choices.push_back( ssprintf("%d",i) );
|
def.m_vsChoices.push_back( ssprintf("%d",i) );
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
|
|
||||||
def.name = "Type";
|
def.m_sName = "Type";
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
FOREACH_CONST( StepsType, STEPS_TYPES_TO_SHOW.GetValue(), st )
|
FOREACH_CONST( StepsType, STEPS_TYPES_TO_SHOW.GetValue(), st )
|
||||||
def.choices.push_back( GAMEMAN->StepsTypeToString(*st) );
|
def.m_vsChoices.push_back( GAMEMAN->StepsTypeToString(*st) );
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
|
|
||||||
def.name = "Type Meter";
|
def.m_sName = "Type Meter";
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
for( int i=MIN_METER; i<=MAX_METER; i++ )
|
for( int i=MIN_METER; i<=MAX_METER; i++ )
|
||||||
def.choices.push_back( ssprintf("%d",i) );
|
def.m_vsChoices.push_back( ssprintf("%d",i) );
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
|
|
||||||
def.name = "Edit Entry";
|
def.m_sName = "Edit Entry";
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
for( unsigned i=0; i<pCourse->m_vEntries.size(); i++ )
|
for( unsigned i=0; i<pCourse->m_vEntries.size(); i++ )
|
||||||
def.choices.push_back( ssprintf("%u of %u",i+1,pCourse->m_vEntries.size()) );
|
def.m_vsChoices.push_back( ssprintf("%u of %u",i+1,pCourse->m_vEntries.size()) );
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
|
|
||||||
def.name = "Insert Entry";
|
def.m_sName = "Insert Entry";
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
for( unsigned i=0; i<=pCourse->m_vEntries.size(); i++ )
|
for( unsigned i=0; i<=pCourse->m_vEntries.size(); i++ )
|
||||||
{
|
{
|
||||||
CString s;
|
CString s;
|
||||||
@@ -127,15 +127,15 @@ void ScreenEditCourse::Init()
|
|||||||
s = ssprintf("After %u",i);
|
s = ssprintf("After %u",i);
|
||||||
else
|
else
|
||||||
s = ssprintf("Before %u",i+1);
|
s = ssprintf("Before %u",i+1);
|
||||||
def.choices.push_back( s );
|
def.m_vsChoices.push_back( s );
|
||||||
}
|
}
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
|
|
||||||
def.name = "Delete Entry";
|
def.m_sName = "Delete Entry";
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
for( unsigned i=0; i<pCourse->m_vEntries.size(); i++ )
|
for( unsigned i=0; i<pCourse->m_vEntries.size(); i++ )
|
||||||
def.choices.push_back( ssprintf("%u of %u",i+1,pCourse->m_vEntries.size()) );
|
def.m_vsChoices.push_back( ssprintf("%u of %u",i+1,pCourse->m_vEntries.size()) );
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
|
|
||||||
@@ -173,9 +173,9 @@ void ScreenEditCourse::AfterChangeValueInRow( PlayerNumber pn )
|
|||||||
{
|
{
|
||||||
OptionRow &row = *m_pRows[ROW_TYPE];
|
OptionRow &row = *m_pRows[ROW_TYPE];
|
||||||
OptionRowDefinition def = row.GetRowDef();
|
OptionRowDefinition def = row.GetRowDef();
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
vector<StepsTypeAndDifficulty> vThrowAway;
|
vector<StepsTypeAndDifficulty> vThrowAway;
|
||||||
GetStepsTypeAndDifficulty( vThrowAway, def.choices );
|
GetStepsTypeAndDifficulty( vThrowAway, def.m_vsChoices );
|
||||||
row.Reload( def );
|
row.Reload( def );
|
||||||
}
|
}
|
||||||
// fall through
|
// fall through
|
||||||
|
|||||||
@@ -43,65 +43,65 @@ void ScreenEditCourseEntry::Init()
|
|||||||
vector<OptionRowHandler*> vHands;
|
vector<OptionRowHandler*> vHands;
|
||||||
|
|
||||||
OptionRowDefinition def;
|
OptionRowDefinition def;
|
||||||
def.layoutType = LAYOUT_SHOW_ONE_IN_ROW;
|
def.m_layoutType = LAYOUT_SHOW_ONE_IN_ROW;
|
||||||
|
|
||||||
def.name = "Song Group";
|
def.m_sName = "Song Group";
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
vector<CString> vsSongGroups;
|
vector<CString> vsSongGroups;
|
||||||
SONGMAN->GetSongGroupNames( vsSongGroups );
|
SONGMAN->GetSongGroupNames( vsSongGroups );
|
||||||
def.choices.push_back( "(any)" );
|
def.m_vsChoices.push_back( "(any)" );
|
||||||
FOREACH_CONST( CString, vsSongGroups, s )
|
FOREACH_CONST( CString, vsSongGroups, s )
|
||||||
def.choices.push_back( *s );
|
def.m_vsChoices.push_back( *s );
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
|
|
||||||
def.name = "Song";
|
def.m_sName = "Song";
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
def.choices.push_back( "" );
|
def.m_vsChoices.push_back( "" );
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
|
|
||||||
def.name = "Base Difficulty";
|
def.m_sName = "Base Difficulty";
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
def.choices.push_back( "(any)" );
|
def.m_vsChoices.push_back( "(any)" );
|
||||||
FOREACH_CONST( Difficulty, DIFFICULTIES_TO_SHOW.GetValue(), dc )
|
FOREACH_CONST( Difficulty, DIFFICULTIES_TO_SHOW.GetValue(), dc )
|
||||||
def.choices.push_back( DifficultyToThemedString(*dc) );
|
def.m_vsChoices.push_back( DifficultyToThemedString(*dc) );
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
|
|
||||||
def.name = "Low Meter";
|
def.m_sName = "Low Meter";
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
def.choices.push_back( "(any)" );
|
def.m_vsChoices.push_back( "(any)" );
|
||||||
for( int i=MIN_METER; i<=MAX_METER; i++ )
|
for( int i=MIN_METER; i<=MAX_METER; i++ )
|
||||||
def.choices.push_back( ssprintf("%i",i) );
|
def.m_vsChoices.push_back( ssprintf("%i",i) );
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
|
|
||||||
def.name = "High Meter";
|
def.m_sName = "High Meter";
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
def.choices.push_back( "(any)" );
|
def.m_vsChoices.push_back( "(any)" );
|
||||||
for( int i=MIN_METER; i<=MAX_METER; i++ )
|
for( int i=MIN_METER; i<=MAX_METER; i++ )
|
||||||
def.choices.push_back( ssprintf("%i",i) );
|
def.m_vsChoices.push_back( ssprintf("%i",i) );
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
|
|
||||||
def.name = "Sort";
|
def.m_sName = "Sort";
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
FOREACH_SongSort( i )
|
FOREACH_SongSort( i )
|
||||||
def.choices.push_back( SongSortToThemedString(i) );
|
def.m_vsChoices.push_back( SongSortToThemedString(i) );
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
|
|
||||||
def.name = "Choose";
|
def.m_sName = "Choose";
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
for( int i=0; i<20; i++ )
|
for( int i=0; i<20; i++ )
|
||||||
def.choices.push_back( FormatNumberAndSuffix(i+1) );
|
def.m_vsChoices.push_back( FormatNumberAndSuffix(i+1) );
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
|
|
||||||
def.name = "Set Mods";
|
def.m_sName = "Set Mods";
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
def.choices.push_back( "Set Mods" );
|
def.m_vsChoices.push_back( "Set Mods" );
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
|
|
||||||
@@ -131,21 +131,21 @@ void ScreenEditCourseEntry::AfterChangeValueInRow( PlayerNumber pn )
|
|||||||
if( iChoice == 0 )
|
if( iChoice == 0 )
|
||||||
ce.sSongGroup = "";
|
ce.sSongGroup = "";
|
||||||
else
|
else
|
||||||
ce.sSongGroup = row.GetRowDef().choices[ iChoice ];
|
ce.sSongGroup = row.GetRowDef().m_vsChoices[ iChoice ];
|
||||||
}
|
}
|
||||||
// refresh songs
|
// refresh songs
|
||||||
{
|
{
|
||||||
OptionRow &row = *m_pRows[ROW_SONG];
|
OptionRow &row = *m_pRows[ROW_SONG];
|
||||||
OptionRowDefinition def = row.GetRowDef();
|
OptionRowDefinition def = row.GetRowDef();
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
def.choices.push_back( "(any)" );
|
def.m_vsChoices.push_back( "(any)" );
|
||||||
vector<Song*> vpSongs;
|
vector<Song*> vpSongs;
|
||||||
if( ce.sSongGroup.empty() )
|
if( ce.sSongGroup.empty() )
|
||||||
SONGMAN->GetSongs( vpSongs );
|
SONGMAN->GetSongs( vpSongs );
|
||||||
else
|
else
|
||||||
SONGMAN->GetSongs( vpSongs, ce.sSongGroup );
|
SONGMAN->GetSongs( vpSongs, ce.sSongGroup );
|
||||||
FOREACH_CONST( Song*, vpSongs, s )
|
FOREACH_CONST( Song*, vpSongs, s )
|
||||||
def.choices.push_back( (*s)->GetTranslitFullTitle() );
|
def.m_vsChoices.push_back( (*s)->GetTranslitFullTitle() );
|
||||||
vector<Song*>::const_iterator iter = find( vpSongs.begin(), vpSongs.end(), ce.pSong );
|
vector<Song*>::const_iterator iter = find( vpSongs.begin(), vpSongs.end(), ce.pSong );
|
||||||
if( iter != vpSongs.end() )
|
if( iter != vpSongs.end() )
|
||||||
{
|
{
|
||||||
@@ -235,11 +235,11 @@ void ScreenEditCourseEntry::ImportAllOptions()
|
|||||||
// import song group
|
// import song group
|
||||||
{
|
{
|
||||||
OptionRow &row = *m_pRows[ROW_SONG_GROUP];
|
OptionRow &row = *m_pRows[ROW_SONG_GROUP];
|
||||||
FOREACH_CONST( CString, row.GetRowDef().choices, s )
|
FOREACH_CONST( CString, row.GetRowDef().m_vsChoices, s )
|
||||||
{
|
{
|
||||||
if( *s == ce.sSongGroup )
|
if( *s == ce.sSongGroup )
|
||||||
{
|
{
|
||||||
int iChoice = s - row.GetRowDef().choices.begin();
|
int iChoice = s - row.GetRowDef().m_vsChoices.begin();
|
||||||
row.SetOneSharedSelection( iChoice );
|
row.SetOneSharedSelection( iChoice );
|
||||||
AfterChangeValueInRow( GAMESTATE->m_MasterPlayerNumber );
|
AfterChangeValueInRow( GAMESTATE->m_MasterPlayerNumber );
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -15,13 +15,15 @@
|
|||||||
AutoScreenMessage( SM_GoToOK )
|
AutoScreenMessage( SM_GoToOK )
|
||||||
AutoScreenMessage( SM_GoToCancel )
|
AutoScreenMessage( SM_GoToCancel )
|
||||||
|
|
||||||
|
bool ScreenMiniMenu::s_bCancelled = false;
|
||||||
int ScreenMiniMenu::s_iLastRowCode = -1;
|
int ScreenMiniMenu::s_iLastRowCode = -1;
|
||||||
vector<int> ScreenMiniMenu::s_viLastAnswers;
|
vector<int> ScreenMiniMenu::s_viLastAnswers;
|
||||||
|
|
||||||
void ScreenMiniMenu::MiniMenu( MenuDef* pDef, ScreenMessage SM_SendOnOK, ScreenMessage SM_SendOnCancel )
|
void ScreenMiniMenu::MiniMenu( MenuDef* pDef, ScreenMessage SM_SendOnOK, ScreenMessage SM_SendOnCancel, float fX, float fY )
|
||||||
{
|
{
|
||||||
ScreenMiniMenu *pNewScreen = new ScreenMiniMenu( pDef->sClassName );
|
ScreenMiniMenu *pNewScreen = new ScreenMiniMenu( pDef->sClassName );
|
||||||
pNewScreen->Init( pDef, SM_SendOnOK, SM_SendOnCancel );
|
pNewScreen->Init( pDef, SM_SendOnOK, SM_SendOnCancel );
|
||||||
|
pNewScreen->SetXY( fX, fY );
|
||||||
SCREENMAN->ZeroNextUpdate();
|
SCREENMAN->ZeroNextUpdate();
|
||||||
SCREENMAN->SetFromNewScreen( pNewScreen );
|
SCREENMAN->SetFromNewScreen( pNewScreen );
|
||||||
}
|
}
|
||||||
@@ -63,8 +65,8 @@ void ScreenMiniMenu::Init( const MenuDef* pDef, ScreenMessage SM_SendOnOK, Scree
|
|||||||
const MenuRowDef &mr = m_vMenuRows[r];
|
const MenuRowDef &mr = m_vMenuRows[r];
|
||||||
OptionRowDefinition &def = vDefs[r];
|
OptionRowDefinition &def = vDefs[r];
|
||||||
|
|
||||||
def.name = mr.sName;
|
def.m_sName = mr.sName;
|
||||||
FontCharAliases::ReplaceMarkers( def.name ); // Allow special characters
|
FontCharAliases::ReplaceMarkers( def.m_sName ); // Allow special characters
|
||||||
|
|
||||||
if( mr.bEnabled )
|
if( mr.bEnabled )
|
||||||
{
|
{
|
||||||
@@ -77,14 +79,14 @@ void ScreenMiniMenu::Init( const MenuDef* pDef, ScreenMessage SM_SendOnOK, Scree
|
|||||||
def.m_vEnabledForPlayers.clear();
|
def.m_vEnabledForPlayers.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
def.bOneChoiceForAllPlayers = true;
|
def.m_bOneChoiceForAllPlayers = true;
|
||||||
def.selectType = SELECT_ONE;
|
def.m_selectType = SELECT_ONE;
|
||||||
def.layoutType = LAYOUT_SHOW_ONE_IN_ROW;
|
def.m_layoutType = LAYOUT_SHOW_ONE_IN_ROW;
|
||||||
def.m_bExportOnChange = false;
|
def.m_bExportOnChange = false;
|
||||||
|
|
||||||
def.choices = mr.choices;
|
def.m_vsChoices = mr.choices;
|
||||||
|
|
||||||
FOREACH( CString, def.choices, c )
|
FOREACH( CString, def.m_vsChoices, c )
|
||||||
FontCharAliases::ReplaceMarkers( *c ); // Allow special characters
|
FontCharAliases::ReplaceMarkers( *c ); // Allow special characters
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -135,11 +137,13 @@ void ScreenMiniMenu::ExportOptions( int r, const vector<PlayerNumber> &vpns )
|
|||||||
|
|
||||||
void ScreenMiniMenu::GoToNextScreen()
|
void ScreenMiniMenu::GoToNextScreen()
|
||||||
{
|
{
|
||||||
|
s_bCancelled = false;
|
||||||
SCREENMAN->PopTopScreen( m_SMSendOnOK );
|
SCREENMAN->PopTopScreen( m_SMSendOnOK );
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenMiniMenu::GoToPrevScreen()
|
void ScreenMiniMenu::GoToPrevScreen()
|
||||||
{
|
{
|
||||||
|
s_bCancelled = true;
|
||||||
SCREENMAN->PopTopScreen( m_SMSendOnCancel );
|
SCREENMAN->PopTopScreen( m_SMSendOnCancel );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ struct MenuDef
|
|||||||
class ScreenMiniMenu : public ScreenOptions
|
class ScreenMiniMenu : public ScreenOptions
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static void MiniMenu( MenuDef* pDef, ScreenMessage smSendOnOK, ScreenMessage smSendOnCancel = SM_None );
|
static void MiniMenu( MenuDef* pDef, ScreenMessage smSendOnOK, ScreenMessage smSendOnCancel = SM_None, float fX = 0, float fY = 0 );
|
||||||
|
|
||||||
ScreenMiniMenu( CString sScreenClass );
|
ScreenMiniMenu( CString sScreenClass );
|
||||||
void Init( const MenuDef* pDef, ScreenMessage SM_SendOnOK, ScreenMessage SM_SendOnCancel );
|
void Init( const MenuDef* pDef, ScreenMessage SM_SendOnOK, ScreenMessage SM_SendOnCancel );
|
||||||
@@ -103,6 +103,7 @@ protected:
|
|||||||
vector<MenuRowDef> m_vMenuRows;
|
vector<MenuRowDef> m_vMenuRows;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
static bool s_bCancelled;
|
||||||
static int s_iLastRowCode;
|
static int s_iLastRowCode;
|
||||||
static vector<int> s_viLastAnswers;
|
static vector<int> s_viLastAnswers;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -45,15 +45,15 @@ void ScreenNetworkOptions::Init()
|
|||||||
{
|
{
|
||||||
ScreenOptions::Init();
|
ScreenOptions::Init();
|
||||||
|
|
||||||
g_NetworkOptionsLines[PO_CONNECTION].choices.clear();
|
g_NetworkOptionsLines[PO_CONNECTION].m_vsChoices.clear();
|
||||||
if ( NSMAN->useSMserver )
|
if ( NSMAN->useSMserver )
|
||||||
g_NetworkOptionsLines[PO_CONNECTION].choices.push_back("Disconnect from "+NSMAN->GetServerName());
|
g_NetworkOptionsLines[PO_CONNECTION].m_vsChoices.push_back("Disconnect from "+NSMAN->GetServerName());
|
||||||
else
|
else
|
||||||
g_NetworkOptionsLines[PO_CONNECTION].choices.push_back("Connect...");
|
g_NetworkOptionsLines[PO_CONNECTION].m_vsChoices.push_back("Connect...");
|
||||||
|
|
||||||
g_NetworkOptionsLines[PO_SERVER].choices.clear();
|
g_NetworkOptionsLines[PO_SERVER].m_vsChoices.clear();
|
||||||
g_NetworkOptionsLines[PO_SERVER].choices.push_back("Stop");
|
g_NetworkOptionsLines[PO_SERVER].m_vsChoices.push_back("Stop");
|
||||||
g_NetworkOptionsLines[PO_SERVER].choices.push_back("Start...");
|
g_NetworkOptionsLines[PO_SERVER].m_vsChoices.push_back("Start...");
|
||||||
|
|
||||||
//Enable all lines for all players
|
//Enable all lines for all players
|
||||||
for ( unsigned int i = 0; i < NUM_NETWORK_OPTIONS_LINES; i++ )
|
for ( unsigned int i = 0; i < NUM_NETWORK_OPTIONS_LINES; i++ )
|
||||||
|
|||||||
@@ -85,6 +85,7 @@ ScreenOptions::ScreenOptions( CString sClassName ) : ScreenWithMenuElements(sCla
|
|||||||
SHOW_SCROLL_BAR (m_sName,"ShowScrollBar"),
|
SHOW_SCROLL_BAR (m_sName,"ShowScrollBar"),
|
||||||
SCROLL_BAR_HEIGHT (m_sName,"ScrollBarHeight"),
|
SCROLL_BAR_HEIGHT (m_sName,"ScrollBarHeight"),
|
||||||
SCROLL_BAR_TIME (m_sName,"ScrollBarTime"),
|
SCROLL_BAR_TIME (m_sName,"ScrollBarTime"),
|
||||||
|
LINE_HIGHLIGHT_X (m_sName,"LineHighlightX"),
|
||||||
EXPLANATION_ZOOM (m_sName,"ExplanationZoom"),
|
EXPLANATION_ZOOM (m_sName,"ExplanationZoom"),
|
||||||
SHOW_EXIT_ROW (m_sName,"ShowExitRow"),
|
SHOW_EXIT_ROW (m_sName,"ShowExitRow"),
|
||||||
SEPARATE_EXIT_ROW (m_sName,"SeparateExitRow"),
|
SEPARATE_EXIT_ROW (m_sName,"SeparateExitRow"),
|
||||||
@@ -157,7 +158,7 @@ void ScreenOptions::InitMenu( InputMode im, const vector<OptionRowDefinition> &v
|
|||||||
vpns.push_back( p );
|
vpns.push_back( p );
|
||||||
this->ImportOptions( r, vpns );
|
this->ImportOptions( r, vpns );
|
||||||
|
|
||||||
CHECKPOINT_M( ssprintf("row %i: %s", r, row.GetRowDef().name.c_str()) );
|
CHECKPOINT_M( ssprintf("row %i: %s", r, row.GetRowDef().m_sName.c_str()) );
|
||||||
|
|
||||||
row.AfterImportOptions();
|
row.AfterImportOptions();
|
||||||
}
|
}
|
||||||
@@ -172,7 +173,7 @@ void ScreenOptions::InitMenu( InputMode im, const vector<OptionRowDefinition> &v
|
|||||||
{
|
{
|
||||||
m_sprLineHighlight[p].Load( THEME->GetPathG(m_sName,"line highlight") );
|
m_sprLineHighlight[p].Load( THEME->GetPathG(m_sName,"line highlight") );
|
||||||
m_sprLineHighlight[p].SetName( "LineHighlight" );
|
m_sprLineHighlight[p].SetName( "LineHighlight" );
|
||||||
m_sprLineHighlight[p].SetX( SCREEN_CENTER_X );
|
m_sprLineHighlight[p].SetX( LINE_HIGHLIGHT_X );
|
||||||
m_framePage.AddChild( &m_sprLineHighlight[p] );
|
m_framePage.AddChild( &m_sprLineHighlight[p] );
|
||||||
ON_COMMAND( m_sprLineHighlight[p] );
|
ON_COMMAND( m_sprLineHighlight[p] );
|
||||||
}
|
}
|
||||||
@@ -317,7 +318,7 @@ CString ScreenOptions::GetExplanationText( int iRow ) const
|
|||||||
{
|
{
|
||||||
OptionRow &row = *m_pRows[iRow];
|
OptionRow &row = *m_pRows[iRow];
|
||||||
|
|
||||||
CString sLineName = row.GetRowDef().name;
|
CString sLineName = row.GetRowDef().m_sName;
|
||||||
ASSERT( !sLineName.empty() );
|
ASSERT( !sLineName.empty() );
|
||||||
|
|
||||||
bool bAllowExplanation = row.GetRowDef().m_bAllowExplanation;
|
bool bAllowExplanation = row.GetRowDef().m_bAllowExplanation;
|
||||||
@@ -830,7 +831,7 @@ void ScreenOptions::ProcessMenuStart( PlayerNumber pn, const InputEventType type
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( row.GetRowDef().selectType == SELECT_MULTIPLE )
|
if( row.GetRowDef().m_selectType == SELECT_MULTIPLE )
|
||||||
{
|
{
|
||||||
int iChoiceInRow = row.GetChoiceInRowWithFocus(pn);
|
int iChoiceInRow = row.GetChoiceInRowWithFocus(pn);
|
||||||
bool bSelected = !row.GetSelected( pn, iChoiceInRow );
|
bool bSelected = !row.GetSelected( pn, iChoiceInRow );
|
||||||
@@ -862,10 +863,10 @@ void ScreenOptions::ProcessMenuStart( PlayerNumber pn, const InputEventType type
|
|||||||
break;
|
break;
|
||||||
case NAV_TOGGLE_THREE_KEY:
|
case NAV_TOGGLE_THREE_KEY:
|
||||||
case NAV_TOGGLE_FIVE_KEY:
|
case NAV_TOGGLE_FIVE_KEY:
|
||||||
if( row.GetRowDef().selectType != SELECT_MULTIPLE )
|
if( row.GetRowDef().m_selectType != SELECT_MULTIPLE )
|
||||||
{
|
{
|
||||||
int iChoiceInRow = row.GetChoiceInRowWithFocus(pn);
|
int iChoiceInRow = row.GetChoiceInRowWithFocus(pn);
|
||||||
if( row.GetRowDef().bOneChoiceForAllPlayers )
|
if( row.GetRowDef().m_bOneChoiceForAllPlayers )
|
||||||
row.SetOneSharedSelection( iChoiceInRow );
|
row.SetOneSharedSelection( iChoiceInRow );
|
||||||
else
|
else
|
||||||
row.SetOneSelection( pn, iChoiceInRow );
|
row.SetOneSelection( pn, iChoiceInRow );
|
||||||
@@ -894,7 +895,7 @@ void ScreenOptions::StoreFocus( PlayerNumber pn )
|
|||||||
/* Long rows always put us in the center, so don't update the focus. */
|
/* Long rows always put us in the center, so don't update the focus. */
|
||||||
int iCurrentRow = m_iCurrentRow[pn];
|
int iCurrentRow = m_iCurrentRow[pn];
|
||||||
const OptionRow &row = *m_pRows[iCurrentRow];
|
const OptionRow &row = *m_pRows[iCurrentRow];
|
||||||
if( row.GetRowDef().layoutType == LAYOUT_SHOW_ONE_IN_ROW )
|
if( row.GetRowDef().m_layoutType == LAYOUT_SHOW_ONE_IN_ROW )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int iWidth, iY;
|
int iWidth, iY;
|
||||||
@@ -912,7 +913,7 @@ void ScreenOptions::ChangeValueInRow( PlayerNumber pn, int iDelta, bool Repeat )
|
|||||||
|
|
||||||
OptionRow &row = *m_pRows[iCurRow];
|
OptionRow &row = *m_pRows[iCurRow];
|
||||||
|
|
||||||
const int iNumChoices = row.GetRowDef().choices.size();
|
const int iNumChoices = row.GetRowDef().m_vsChoices.size();
|
||||||
|
|
||||||
if( m_OptionsNavigation == NAV_THREE_KEY_MENU && iNumChoices <= 1 ) // 1 or 0
|
if( m_OptionsNavigation == NAV_THREE_KEY_MENU && iNumChoices <= 1 ) // 1 or 0
|
||||||
{
|
{
|
||||||
@@ -945,7 +946,7 @@ void ScreenOptions::ChangeValueInRow( PlayerNumber pn, int iDelta, bool Repeat )
|
|||||||
row.SetChoiceInRowWithFocus( pn, iNewChoiceWithFocus );
|
row.SetChoiceInRowWithFocus( pn, iNewChoiceWithFocus );
|
||||||
StoreFocus( pn );
|
StoreFocus( pn );
|
||||||
|
|
||||||
if( row.GetRowDef().bOneChoiceForAllPlayers )
|
if( row.GetRowDef().m_bOneChoiceForAllPlayers )
|
||||||
{
|
{
|
||||||
/* If this row is bOneChoiceForAllPlayers, then lock the cursors together
|
/* If this row is bOneChoiceForAllPlayers, then lock the cursors together
|
||||||
* for this row. Don't do this in toggle modes, since the current selection
|
* for this row. Don't do this in toggle modes, since the current selection
|
||||||
@@ -953,7 +954,7 @@ void ScreenOptions::ChangeValueInRow( PlayerNumber pn, int iDelta, bool Repeat )
|
|||||||
bool bForceFocusedChoiceTogether = false;
|
bool bForceFocusedChoiceTogether = false;
|
||||||
if( m_OptionsNavigation!=NAV_TOGGLE_THREE_KEY &&
|
if( m_OptionsNavigation!=NAV_TOGGLE_THREE_KEY &&
|
||||||
m_OptionsNavigation!=NAV_TOGGLE_FIVE_KEY &&
|
m_OptionsNavigation!=NAV_TOGGLE_FIVE_KEY &&
|
||||||
row.GetRowDef().bOneChoiceForAllPlayers )
|
row.GetRowDef().m_bOneChoiceForAllPlayers )
|
||||||
{
|
{
|
||||||
bForceFocusedChoiceTogether = true;
|
bForceFocusedChoiceTogether = true;
|
||||||
}
|
}
|
||||||
@@ -980,7 +981,7 @@ void ScreenOptions::ChangeValueInRow( PlayerNumber pn, int iDelta, bool Repeat )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if( row.GetRowDef().selectType == SELECT_MULTIPLE )
|
if( row.GetRowDef().m_selectType == SELECT_MULTIPLE )
|
||||||
; // do nothing. User must press Start to toggle the selection.
|
; // do nothing. User must press Start to toggle the selection.
|
||||||
else
|
else
|
||||||
row.SetOneSelection( p, iNewChoiceWithFocus );
|
row.SetOneSelection( p, iNewChoiceWithFocus );
|
||||||
@@ -995,7 +996,7 @@ void ScreenOptions::ChangeValueInRow( PlayerNumber pn, int iDelta, bool Repeat )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if( row.GetRowDef().selectType == SELECT_MULTIPLE )
|
if( row.GetRowDef().m_selectType == SELECT_MULTIPLE )
|
||||||
; // do nothing. User must press Start to toggle the selection.
|
; // do nothing. User must press Start to toggle the selection.
|
||||||
else
|
else
|
||||||
row.SetOneSelection( pn, iNewChoiceWithFocus );
|
row.SetOneSelection( pn, iNewChoiceWithFocus );
|
||||||
@@ -1059,7 +1060,7 @@ void ScreenOptions::MoveRow( PlayerNumber pn, int dir, bool Repeat )
|
|||||||
{
|
{
|
||||||
case NAV_TOGGLE_THREE_KEY:
|
case NAV_TOGGLE_THREE_KEY:
|
||||||
case NAV_TOGGLE_FIVE_KEY:
|
case NAV_TOGGLE_FIVE_KEY:
|
||||||
if( row.GetRowDef().layoutType != LAYOUT_SHOW_ONE_IN_ROW )
|
if( row.GetRowDef().m_layoutType != LAYOUT_SHOW_ONE_IN_ROW )
|
||||||
{
|
{
|
||||||
int iSelectionDist = -1;
|
int iSelectionDist = -1;
|
||||||
for( unsigned i = 0; i < row.GetTextItemsSize(); ++i )
|
for( unsigned i = 0; i < row.GetTextItemsSize(); ++i )
|
||||||
|
|||||||
@@ -137,6 +137,7 @@ protected:
|
|||||||
ThemeMetric<bool> SHOW_SCROLL_BAR;
|
ThemeMetric<bool> SHOW_SCROLL_BAR;
|
||||||
ThemeMetric<float> SCROLL_BAR_HEIGHT;
|
ThemeMetric<float> SCROLL_BAR_HEIGHT;
|
||||||
ThemeMetric<float> SCROLL_BAR_TIME;
|
ThemeMetric<float> SCROLL_BAR_TIME;
|
||||||
|
ThemeMetric<float> LINE_HIGHLIGHT_X;
|
||||||
ThemeMetric<float> EXPLANATION_ZOOM;
|
ThemeMetric<float> EXPLANATION_ZOOM;
|
||||||
ThemeMetric<bool> SHOW_EXIT_ROW;
|
ThemeMetric<bool> SHOW_EXIT_ROW;
|
||||||
ThemeMetric<bool> SEPARATE_EXIT_ROW;
|
ThemeMetric<bool> SEPARATE_EXIT_ROW;
|
||||||
|
|||||||
@@ -204,7 +204,7 @@ void ScreenOptionsMaster::RefreshIcons( int r, PlayerNumber pn )
|
|||||||
|
|
||||||
|
|
||||||
/* XXX: hack to not display text in the song options menu */
|
/* XXX: hack to not display text in the song options menu */
|
||||||
if( def.bOneChoiceForAllPlayers )
|
if( def.m_bOneChoiceForAllPlayers )
|
||||||
sIcon = "";
|
sIcon = "";
|
||||||
|
|
||||||
LoadOptionIcon( pn, r, sIcon );
|
LoadOptionIcon( pn, r, sIcon );
|
||||||
|
|||||||
@@ -71,13 +71,14 @@ void ScreenOptionsProfiles::Init()
|
|||||||
vector<OptionRowHandler*> vHands;
|
vector<OptionRowHandler*> vHands;
|
||||||
|
|
||||||
OptionRowDefinition def;
|
OptionRowDefinition def;
|
||||||
def.layoutType = LAYOUT_SHOW_ONE_IN_ROW;
|
def.m_layoutType = LAYOUT_SHOW_ONE_IN_ROW;
|
||||||
|
def.m_bOneChoiceForAllPlayers = true;
|
||||||
def.m_bAllowThemeItems = false;
|
def.m_bAllowThemeItems = false;
|
||||||
def.m_bAllowThemeTitles = false;
|
def.m_bAllowThemeTitles = false;
|
||||||
def.m_bAllowExplanation = false;
|
def.m_bAllowExplanation = false;
|
||||||
|
|
||||||
def.name = "Create New";
|
def.m_sName = "Create New";
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
|
|
||||||
@@ -86,8 +87,8 @@ void ScreenOptionsProfiles::Init()
|
|||||||
|
|
||||||
FOREACH_CONST( CString, vsProfileNames, s )
|
FOREACH_CONST( CString, vsProfileNames, s )
|
||||||
{
|
{
|
||||||
def.name = *s;
|
def.m_sName = *s;
|
||||||
def.choices.clear();
|
def.m_vsChoices.clear();
|
||||||
vDefs.push_back( def );
|
vDefs.push_back( def );
|
||||||
vHands.push_back( NULL );
|
vHands.push_back( NULL );
|
||||||
}
|
}
|
||||||
@@ -152,29 +153,32 @@ void ScreenOptionsProfiles::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
}
|
}
|
||||||
else if( SM == SM_BackFromProfileContextMenu )
|
else if( SM == SM_BackFromProfileContextMenu )
|
||||||
{
|
{
|
||||||
switch( ScreenMiniMenu::s_iLastRowCode )
|
if( !ScreenMiniMenu::s_bCancelled )
|
||||||
{
|
{
|
||||||
default:
|
switch( ScreenMiniMenu::s_iLastRowCode )
|
||||||
ASSERT(0);
|
|
||||||
case A_EDIT:
|
|
||||||
SCREENMAN->SetNewScreen( "ScreenOptionsEditProfile" );
|
|
||||||
break;
|
|
||||||
case A_RENAME:
|
|
||||||
{
|
{
|
||||||
CString sCurrentProfileName = PROFILEMAN->ProfileIDToName( s_sCurrentProfileID );
|
default:
|
||||||
ScreenTextEntry::TextEntry( SM_BackFromEnterName, "Enter a name for a new profile.", sCurrentProfileName, PROFILE_MAX_NAME_LENGTH, ValidateProfileName );
|
ASSERT(0);
|
||||||
|
case A_EDIT:
|
||||||
|
SCREENMAN->SetNewScreen( "ScreenOptionsEditProfile" );
|
||||||
|
break;
|
||||||
|
case A_RENAME:
|
||||||
|
{
|
||||||
|
CString sCurrentProfileName = PROFILEMAN->ProfileIDToName( s_sCurrentProfileID );
|
||||||
|
ScreenTextEntry::TextEntry( SM_BackFromEnterName, "Enter a name for a new profile.", sCurrentProfileName, PROFILE_MAX_NAME_LENGTH, ValidateProfileName );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case A_DELETE:
|
||||||
|
{
|
||||||
|
CString sCurrentProfileName = PROFILEMAN->ProfileIDToName( s_sCurrentProfileID );
|
||||||
|
CString sMessage = ssprintf( "Are you sure you want to delete the profile '%s'?", sCurrentProfileName.c_str() );
|
||||||
|
ScreenPrompt::Prompt( SM_BackFromDelete, sMessage, PROMPT_YES_NO );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case A_CANCEL:
|
||||||
|
SCREENMAN->PlayInvalidSound();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
case A_DELETE:
|
|
||||||
{
|
|
||||||
CString sCurrentProfileName = PROFILEMAN->ProfileIDToName( s_sCurrentProfileID );
|
|
||||||
CString sMessage = ssprintf( "Are you sure you want to delete the profile '%s'?", sCurrentProfileName.c_str() );
|
|
||||||
ScreenPrompt::Prompt( SM_BackFromDelete, sMessage, PROMPT_YES_NO );
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case A_CANCEL:
|
|
||||||
SCREENMAN->PlayInvalidSound();
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( SM == SM_BackFromDelete )
|
else if( SM == SM_BackFromDelete )
|
||||||
@@ -185,6 +189,8 @@ void ScreenOptionsProfiles::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
SCREENMAN->SetNewScreen( m_sName ); // reload
|
SCREENMAN->SetNewScreen( m_sName ); // reload
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ScreenOptions::HandleScreenMessage( SM );
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenOptionsProfiles::ProcessMenuStart( PlayerNumber pn, const InputEventType type )
|
void ScreenOptionsProfiles::ProcessMenuStart( PlayerNumber pn, const InputEventType type )
|
||||||
@@ -208,7 +214,9 @@ void ScreenOptionsProfiles::ProcessMenuStart( PlayerNumber pn, const InputEventT
|
|||||||
vector<CString> vsProfileIDs;
|
vector<CString> vsProfileIDs;
|
||||||
PROFILEMAN->GetLocalProfileIDs( vsProfileIDs );
|
PROFILEMAN->GetLocalProfileIDs( vsProfileIDs );
|
||||||
s_sCurrentProfileID = vsProfileIDs[ iProfileIndex ];
|
s_sCurrentProfileID = vsProfileIDs[ iProfileIndex ];
|
||||||
ScreenMiniMenu::MiniMenu( &g_ProfileContextMenu, SM_BackFromProfileContextMenu );
|
int iThrowAway, iX, iY;
|
||||||
|
GetWidthXY( PLAYER_1, iRow, 0, iThrowAway, iX, iY );
|
||||||
|
ScreenMiniMenu::MiniMenu( &g_ProfileContextMenu, SM_BackFromProfileContextMenu, SM_BackFromProfileContextMenu, (float)iX, (float)iY );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,31 +46,31 @@ void ScreenProfileOptions::Init()
|
|||||||
{
|
{
|
||||||
ScreenOptions::Init();
|
ScreenOptions::Init();
|
||||||
|
|
||||||
g_ProfileOptionsLines[PO_PLAYER1].choices.clear();
|
g_ProfileOptionsLines[PO_PLAYER1].m_vsChoices.clear();
|
||||||
g_ProfileOptionsLines[PO_PLAYER1].choices.push_back( "-NONE-" );
|
g_ProfileOptionsLines[PO_PLAYER1].m_vsChoices.push_back( "-NONE-" );
|
||||||
PROFILEMAN->GetLocalProfileNames( g_ProfileOptionsLines[PO_PLAYER1].choices );
|
PROFILEMAN->GetLocalProfileNames( g_ProfileOptionsLines[PO_PLAYER1].m_vsChoices );
|
||||||
|
|
||||||
g_ProfileOptionsLines[PO_PLAYER2].choices.clear();
|
g_ProfileOptionsLines[PO_PLAYER2].m_vsChoices.clear();
|
||||||
g_ProfileOptionsLines[PO_PLAYER2].choices.push_back( "-NONE-" );
|
g_ProfileOptionsLines[PO_PLAYER2].m_vsChoices.push_back( "-NONE-" );
|
||||||
PROFILEMAN->GetLocalProfileNames( g_ProfileOptionsLines[PO_PLAYER2].choices );
|
PROFILEMAN->GetLocalProfileNames( g_ProfileOptionsLines[PO_PLAYER2].m_vsChoices );
|
||||||
|
|
||||||
g_ProfileOptionsLines[PO_DELETE_].choices.clear();
|
g_ProfileOptionsLines[PO_DELETE_].m_vsChoices.clear();
|
||||||
g_ProfileOptionsLines[PO_DELETE_].choices.push_back( "-NONE-" );
|
g_ProfileOptionsLines[PO_DELETE_].m_vsChoices.push_back( "-NONE-" );
|
||||||
PROFILEMAN->GetLocalProfileNames( g_ProfileOptionsLines[PO_DELETE_].choices );
|
PROFILEMAN->GetLocalProfileNames( g_ProfileOptionsLines[PO_DELETE_].m_vsChoices );
|
||||||
|
|
||||||
g_ProfileOptionsLines[PO_RENAME_].choices.clear();
|
g_ProfileOptionsLines[PO_RENAME_].m_vsChoices.clear();
|
||||||
g_ProfileOptionsLines[PO_RENAME_].choices.push_back( "-NONE-" );
|
g_ProfileOptionsLines[PO_RENAME_].m_vsChoices.push_back( "-NONE-" );
|
||||||
PROFILEMAN->GetLocalProfileNames( g_ProfileOptionsLines[PO_RENAME_].choices );
|
PROFILEMAN->GetLocalProfileNames( g_ProfileOptionsLines[PO_RENAME_].m_vsChoices );
|
||||||
|
|
||||||
if( PREFSMAN->GetMemoryCardOsMountPoint(PLAYER_1).Get().empty() )
|
if( PREFSMAN->GetMemoryCardOsMountPoint(PLAYER_1).Get().empty() )
|
||||||
g_ProfileOptionsLines[PO_OS_MOUNT_1].choices[0] = "-NOT SET IN INI-";
|
g_ProfileOptionsLines[PO_OS_MOUNT_1].m_vsChoices[0] = "-NOT SET IN INI-";
|
||||||
else
|
else
|
||||||
g_ProfileOptionsLines[PO_OS_MOUNT_1].choices[0] = PREFSMAN->GetMemoryCardOsMountPoint(PLAYER_1).Get();
|
g_ProfileOptionsLines[PO_OS_MOUNT_1].m_vsChoices[0] = PREFSMAN->GetMemoryCardOsMountPoint(PLAYER_1).Get();
|
||||||
|
|
||||||
if( PREFSMAN->GetMemoryCardOsMountPoint(PLAYER_2).Get().empty() )
|
if( PREFSMAN->GetMemoryCardOsMountPoint(PLAYER_2).Get().empty() )
|
||||||
g_ProfileOptionsLines[PO_OS_MOUNT_2].choices[0] = "-NOT SET IN INI-";
|
g_ProfileOptionsLines[PO_OS_MOUNT_2].m_vsChoices[0] = "-NOT SET IN INI-";
|
||||||
else
|
else
|
||||||
g_ProfileOptionsLines[PO_OS_MOUNT_2].choices[0] = PREFSMAN->GetMemoryCardOsMountPoint(PLAYER_2).Get();
|
g_ProfileOptionsLines[PO_OS_MOUNT_2].m_vsChoices[0] = PREFSMAN->GetMemoryCardOsMountPoint(PLAYER_2).Get();
|
||||||
|
|
||||||
//Enable all lines for all players
|
//Enable all lines for all players
|
||||||
for ( unsigned int i = 0; i < NUM_PROFILE_OPTIONS_LINES; i++ )
|
for ( unsigned int i = 0; i < NUM_PROFILE_OPTIONS_LINES; i++ )
|
||||||
@@ -235,7 +235,7 @@ CString ScreenProfileOptions::GetSelectedProfileName()
|
|||||||
const int Selection = row.GetOneSharedSelection();
|
const int Selection = row.GetOneSharedSelection();
|
||||||
if( !Selection )
|
if( !Selection )
|
||||||
return "";
|
return "";
|
||||||
return g_ProfileOptionsLines[PO_PLAYER1].choices[ Selection ];
|
return g_ProfileOptionsLines[PO_PLAYER1].m_vsChoices[ Selection ];
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -34,10 +34,10 @@ void ScreenSMOnlineLogin::Init()
|
|||||||
{
|
{
|
||||||
ScreenOptions::Init();
|
ScreenOptions::Init();
|
||||||
|
|
||||||
g_ProfileLine[0].choices.clear();
|
g_ProfileLine[0].m_vsChoices.clear();
|
||||||
PROFILEMAN->GetLocalProfileNames( g_ProfileLine[0].choices );
|
PROFILEMAN->GetLocalProfileNames( g_ProfileLine[0].m_vsChoices );
|
||||||
|
|
||||||
if(!g_ProfileLine[0].choices.size())
|
if(!g_ProfileLine[0].m_vsChoices.size())
|
||||||
{
|
{
|
||||||
SCREENMAN->SystemMessage("You Must Define A Profile!");
|
SCREENMAN->SystemMessage("You Must Define A Profile!");
|
||||||
SCREENMAN->SetNewScreen("ScreenProfileOptions");
|
SCREENMAN->SetNewScreen("ScreenProfileOptions");
|
||||||
|
|||||||
Reference in New Issue
Block a user