From 2cd73704429b1d87a292ac602b04a476eb922f52 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Sat, 10 Jan 2004 08:05:20 +0000 Subject: [PATCH] ScreenOptions: row data structure allows multiple selections per row --- stepmania/src/ScreenOptions.cpp | 94 ++++++++++++-------------- stepmania/src/ScreenOptions.h | 29 +++++++- stepmania/src/ScreenOptionsMaster.cpp | 36 +++++----- stepmania/src/ScreenProfileOptions.cpp | 20 +++--- 4 files changed, 98 insertions(+), 81 deletions(-) diff --git a/stepmania/src/ScreenOptions.cpp b/stepmania/src/ScreenOptions.cpp index a7b52ca450..0b62d856c4 100644 --- a/stepmania/src/ScreenOptions.cpp +++ b/stepmania/src/ScreenOptions.cpp @@ -125,25 +125,30 @@ void ScreenOptions::Init( InputMode im, OptionRowData OptionRows[], int iNumOpti for( int r=0; rm_RowDef = OptionRows[r]; + Row &Row = *m_Rows[r]; + Row.m_RowDef = OptionRows[r]; for( int p=0; pm_iSelection[p] = 0; - - if( m_Rows[r]->m_RowDef.bOneChoiceForAllPlayers ) - for( int p=1; pm_iSelection[p] = m_Rows[r]->m_iSelection[0]; + { + vector &vbSelected = Row.m_vbSelected[p]; + vbSelected.resize( Row.m_RowDef.choices.size() ); + for( int j=0; jImportOptions(); + // Make all selections the same if bOneChoiceForAllPlayers { for( int r=0; rm_RowDef.bOneChoiceForAllPlayers ) for( int p=1; pm_iSelection[p] = m_Rows[r]->m_iSelection[0]; + Row.m_vbSelected[p] = m_Rows[r]->m_vbSelected[0]; } } @@ -261,7 +266,7 @@ void ScreenOptions::Init( InputMode im, OptionRowData OptionRows[], int iNumOpti BitmapText *bt = new BitmapText; textItems.push_back( bt ); - const int iChoiceInRow = m_Rows[r]->m_iSelection[p]; + const int iChoiceInRow = row.GetOneSelection( (PlayerNumber)p ); bt->LoadFromFont( THEME->GetPathToF("ScreenOptions item") ); bt->SetText( optline.choices[iChoiceInRow] ); @@ -562,20 +567,25 @@ void ScreenOptions::PositionUnderlines() vector &vpUnderlines = row.m_Underline[p]; - if( row.m_bRowIsLong ) + const int iNumUnderlines = row.m_bRowIsLong ? 1 : vpUnderlines.size(); + + for( int i=0; i