diff --git a/stepmania/src/ScreenOptions.cpp b/stepmania/src/ScreenOptions.cpp index f33624263f..d209ea24b5 100644 --- a/stepmania/src/ScreenOptions.cpp +++ b/stepmania/src/ScreenOptions.cpp @@ -267,13 +267,12 @@ void ScreenOptions::InitMenu( InputMode im, const vector &v PositionItems(); PositionAllUnderlines(); PositionIcons(); - RefreshIcons(); + RefreshAllIcons(); PositionCursors(); UpdateEnabledDisabled(); - { - FOREACH_PlayerNumber( p ) - OnChange( p ); - } + + FOREACH_PlayerNumber( p ) + OnChange( p ); CHECKPOINT; @@ -391,11 +390,17 @@ void ScreenOptions::PositionIcons() } } -void ScreenOptions::RefreshIcons() +void ScreenOptions::RefreshIcons( int row, PlayerNumber pn ) { - // handled by ScreenOptionsMaster + // overridden by ScreenOptionsMaster } +void ScreenOptions::RefreshAllIcons() +{ + FOREACH_HumanPlayer( p ) + for( unsigned r=0; rRefreshIcons( r, p ); +} void ScreenOptions::PositionCursors() { @@ -667,7 +672,7 @@ void ScreenOptions::OnChange( PlayerNumber pn ) /* Do positioning. */ PositionUnderlines( iCurRow, pn ); - RefreshIcons(); + RefreshIcons( iCurRow, pn ); PositionIcons(); UpdateEnabledDisabled(); @@ -827,7 +832,7 @@ void ScreenOptions::MenuStart( PlayerNumber pn, const InputEventType selectType m_SoundToggleOff.Play(); PositionUnderlines( iCurRow, pn ); - RefreshIcons(); + RefreshIcons( iCurRow, pn ); if( row.GetFirstItemGoesDown() ) { diff --git a/stepmania/src/ScreenOptions.h b/stepmania/src/ScreenOptions.h index 9620c55a6a..faecb0cb6f 100644 --- a/stepmania/src/ScreenOptions.h +++ b/stepmania/src/ScreenOptions.h @@ -43,7 +43,8 @@ protected: void PositionUnderlines( int row, PlayerNumber pn ); void PositionAllUnderlines(); void PositionIcons(); - virtual void RefreshIcons(); + virtual void RefreshIcons( int row, PlayerNumber pn ); + void RefreshAllIcons(); void PositionCursors(); void PositionItems(); void TweenCursor( PlayerNumber pn ); diff --git a/stepmania/src/ScreenOptionsMaster.cpp b/stepmania/src/ScreenOptionsMaster.cpp index 13eba31d34..2191e7172e 100644 --- a/stepmania/src/ScreenOptionsMaster.cpp +++ b/stepmania/src/ScreenOptionsMaster.cpp @@ -185,42 +185,36 @@ void ScreenOptionsMaster::GoToPrevScreen() } } -void ScreenOptionsMaster::RefreshIcons() +void ScreenOptionsMaster::RefreshIcons( int r, PlayerNumber pn ) { - FOREACH_HumanPlayer( p ) + if( m_Rows[r]->GetRowType() == OptionRow::ROW_EXIT ) + return; // skip + + OptionRow &row = *m_Rows[r]; + const OptionRowDefinition &def = row.GetRowDef(); + + // find first selection and whether multiple are selected + int iFirstSelection = row.GetOneSelection( pn, true ); + + // set icon name + CString sIcon; + + if( iFirstSelection == -1 ) { - for( unsigned i=0; iGetRowType() == OptionRow::ROW_EXIT ) - continue; // skip - - OptionRow &row = *m_Rows[i]; - const OptionRowDefinition &def = row.GetRowDef(); - - // find first selection and whether multiple are selected - int iFirstSelection = row.GetOneSelection( p, true ); - - // set icon name - CString sIcon; - - if( iFirstSelection == -1 ) - { - sIcon = "Multi"; - } - else if( iFirstSelection != -1 ) - { - const OptionRowHandler *pHand = OptionRowHandlers[i]; - sIcon = pHand->GetIconText( def, iFirstSelection+(m_OptionsNavigation==NAV_TOGGLE_THREE_KEY?-1:0) ); - } - - - /* XXX: hack to not display text in the song options menu */ - if( def.bOneChoiceForAllPlayers ) - sIcon = ""; - - LoadOptionIcon( p, i, sIcon ); - } + sIcon = "Multi"; } + else if( iFirstSelection != -1 ) + { + const OptionRowHandler *pHand = OptionRowHandlers[r]; + sIcon = pHand->GetIconText( def, iFirstSelection+(m_OptionsNavigation==NAV_TOGGLE_THREE_KEY?-1:0) ); + } + + + /* XXX: hack to not display text in the song options menu */ + if( def.bOneChoiceForAllPlayers ) + sIcon = ""; + + LoadOptionIcon( pn, r, sIcon ); } void ScreenOptionsMaster::HandleScreenMessage( const ScreenMessage SM ) diff --git a/stepmania/src/ScreenOptionsMaster.h b/stepmania/src/ScreenOptionsMaster.h index 7a760a7d6f..2866504c14 100644 --- a/stepmania/src/ScreenOptionsMaster.h +++ b/stepmania/src/ScreenOptionsMaster.h @@ -30,7 +30,7 @@ protected: virtual void GoToNextScreen(); virtual void GoToPrevScreen(); - virtual void RefreshIcons(); + virtual void RefreshIcons( int row, PlayerNumber pn ); ThemeMetric PLAY_MUSIC; };