This commit is contained in:
Chris Danford
2004-12-11 09:14:52 +00:00
parent cc89b5a7b9
commit d0cece9bea
+13 -20
View File
@@ -138,8 +138,9 @@ void ScreenOptions::Init( InputMode im, OptionRowData OptionRows[], int iNumOpti
for( int r=0; r<iNumOptionLines; r++ ) // foreach row for( int r=0; r<iNumOptionLines; r++ ) // foreach row
{ {
m_Rows.push_back( new Row() ); m_Rows.push_back( new Row() );
Row &Row = *m_Rows[r]; Row &row = *m_Rows.back();
Row.m_RowDef = OptionRows[r]; row.m_RowDef = OptionRows[r];
row.Type = Row::ROW_NORMAL;
if( !OptionRows[r].choices.size() ) if( !OptionRows[r].choices.size() )
RageException::Throw( "Screen %s menu entry \"%s\" has no choices", RageException::Throw( "Screen %s menu entry \"%s\" has no choices",
@@ -147,13 +148,13 @@ void ScreenOptions::Init( InputMode im, OptionRowData OptionRows[], int iNumOpti
FOREACH_PlayerNumber( p ) FOREACH_PlayerNumber( p )
{ {
vector<bool> &vbSelected = Row.m_vbSelected[p]; vector<bool> &vbSelected = row.m_vbSelected[p];
vbSelected.resize( Row.m_RowDef.choices.size() ); vbSelected.resize( row.m_RowDef.choices.size() );
for( unsigned j=0; j<vbSelected.size(); j++ ) for( unsigned j=0; j<vbSelected.size(); j++ )
vbSelected[j] = false; vbSelected[j] = false;
// set select the first item if a SELECT_ONE row // set select the first item if a SELECT_ONE row
if( Row.m_RowDef.type == OptionRowData::SELECT_ONE ) if( row.m_RowDef.type == OptionRowData::SELECT_ONE )
vbSelected[0] = true; vbSelected[0] = true;
} }
} }
@@ -194,7 +195,7 @@ void ScreenOptions::Init( InputMode im, OptionRowData OptionRows[], int iNumOpti
if( !bHasSelection ) if( !bHasSelection )
{ {
LOG->Warn( "Options menu \"%s\" row %i has no selection", m_sName.c_str(), i ); LOG->Warn( "Options menu \"%s\" row index %i has no selection", m_sName.c_str(), r );
row.m_vbSelected[p][0] = true; row.m_vbSelected[p][0] = true;
} }
@@ -245,18 +246,15 @@ void ScreenOptions::Init( InputMode im, OptionRowData OptionRows[], int iNumOpti
for( unsigned r=0; r<m_Rows.size(); r++ ) // foreach row for( unsigned r=0; r<m_Rows.size(); r++ ) // foreach row
{ {
Row &row = *m_Rows[r]; Row &row = *m_Rows[r];
row.Type = Row::ROW_NORMAL;
vector<BitmapText *> & textItems = row.m_textItems; vector<BitmapText *> & textItems = row.m_textItems;
const OptionRowData &optline = m_Rows[r]->m_RowDef; const OptionRowData &optline = m_Rows[r]->m_RowDef;
unsigned c;
m_framePage.AddChild( &row.m_sprBullet ); m_framePage.AddChild( &row.m_sprBullet );
m_framePage.AddChild( &row.m_textTitle ); m_framePage.AddChild( &row.m_textTitle );
float fX = ITEMS_START_X; // indent 70 pixels float fX = ITEMS_START_X; // indent 70 pixels
for( c=0; c<optline.choices.size(); c++ ) for( unsigned c=0; c<optline.choices.size(); c++ )
{ {
// init text // init text
BitmapText *bt = new BitmapText; BitmapText *bt = new BitmapText;
@@ -275,11 +273,8 @@ void ScreenOptions::Init( InputMode im, OptionRowData OptionRows[], int iNumOpti
bt->SetX( fX ); bt->SetX( fX );
// init underlines // init underlines
FOREACH_PlayerNumber( p ) FOREACH_HumanPlayer( p )
{ {
if( !GAMESTATE->IsHumanPlayer(p) )
continue;
OptionsCursor *ul = new OptionsCursor; OptionsCursor *ul = new OptionsCursor;
row.m_Underline[p].push_back( ul ); row.m_Underline[p].push_back( ul );
ul->Load( (PlayerNumber)p, true ); ul->Load( (PlayerNumber)p, true );
@@ -294,12 +289,12 @@ void ScreenOptions::Init( InputMode im, OptionRowData OptionRows[], int iNumOpti
{ {
row.m_bRowIsLong = true; row.m_bRowIsLong = true;
for( unsigned j=0; j<textItems.size(); j++ ) // for each option on this row for( unsigned j=0; j<textItems.size(); j++ ) // for each option on this row
delete textItems[j]; SAFE_DELETE( textItems[j] );
textItems.clear(); textItems.clear();
FOREACH_PlayerNumber( p ) FOREACH_PlayerNumber( p )
{ {
for( unsigned j=0; j<row.m_Underline[p].size(); j++ ) // for each option on this row for( unsigned j=0; j<row.m_Underline[p].size(); j++ ) // for each option on this row
delete row.m_Underline[p][j]; SAFE_DELETE( row.m_Underline[p][j] );
row.m_Underline[p].clear(); row.m_Underline[p].clear();
} }
break; break;
@@ -337,9 +332,9 @@ void ScreenOptions::Init( InputMode im, OptionRowData OptionRows[], int iNumOpti
{ {
OptionsCursor *ul = new OptionsCursor; OptionsCursor *ul = new OptionsCursor;
row.m_Underline[p].push_back( ul ); row.m_Underline[p].push_back( ul );
ul->Load( (PlayerNumber)p, true ); ul->Load( p, true );
int iWidth, iX, iY; int iWidth, iX, iY;
GetWidthXY( (PlayerNumber) p, r, c, iWidth, iX, iY ); GetWidthXY( p, r, 0, iWidth, iX, iY );
ul->SetX( float(iX) ); ul->SetX( float(iX) );
ul->SetWidth( float(iWidth) ); ul->SetWidth( float(iWidth) );
} }
@@ -375,7 +370,6 @@ void ScreenOptions::Init( InputMode im, OptionRowData OptionRows[], int iNumOpti
InitOptionsText(); InitOptionsText();
// add explanation here so it appears on top // add explanation here so it appears on top
{
FOREACH_PlayerNumber( p ) FOREACH_PlayerNumber( p )
{ {
m_textExplanation[p].LoadFromFont( THEME->GetPathToF("ScreenOptions explanation") ); m_textExplanation[p].LoadFromFont( THEME->GetPathToF("ScreenOptions explanation") );
@@ -383,7 +377,6 @@ void ScreenOptions::Init( InputMode im, OptionRowData OptionRows[], int iNumOpti
m_textExplanation[p].SetShadowLength( 0 ); m_textExplanation[p].SetShadowLength( 0 );
m_framePage.AddChild( &m_textExplanation[p] ); m_framePage.AddChild( &m_textExplanation[p] );
} }
}
/* Hack: if m_CurStyle is set, we're probably in the player or song options menu, so /* Hack: if m_CurStyle is set, we're probably in the player or song options menu, so
* the player name is meaningful. Otherwise, we're probably in the system menu. */ * the player name is meaningful. Otherwise, we're probably in the system menu. */