From cece1f837c00d4fcd6de3f370d57bce1d1aa03f7 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Mon, 18 Jul 2005 21:03:43 +0000 Subject: [PATCH] don't set up actors that we're not using; we create lots of OptionRows --- stepmania/src/OptionRow.cpp | 54 +++++++++++++++++++++---------------- stepmania/src/OptionRow.h | 1 + 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/stepmania/src/OptionRow.cpp b/stepmania/src/OptionRow.cpp index 2a94ab0e77..d753bf1748 100644 --- a/stepmania/src/OptionRow.cpp +++ b/stepmania/src/OptionRow.cpp @@ -110,12 +110,6 @@ void OptionRowType::Load( const CString &sType ) { m_sType = sType; - m_textItemParent.LoadFromFont( THEME->GetPathF(sType,"item") ); - m_UnderlineParent.Load( sType, OptionsCursor::underline ); - m_textTitle.LoadFromFont( THEME->GetPathF(sType,"title") ); - //m_sprBullet.Load( THEME->GetPathG(sType,"bullet") ); - m_OptionIcon.Load( sType ); - BULLET_X .Load(sType,"BulletX"); LABELS_X .Load(sType,"LabelsX"); LABELS_ON_COMMAND .Load(sType,"LabelsOnCommand"); @@ -139,6 +133,14 @@ void OptionRowType::Load( const CString &sType ) THEME_ITEMS .Load(sType,"ThemeItems"); THEME_TITLES .Load(sType,"ThemeTitles"); SHOW_BPM_IN_SPEED_TITLE .Load(sType,"ShowBpmInSpeedTitle"); + SHOW_OPTION_ICONS .Load(sType,"ShowOptionIcons"); + + m_textItemParent.LoadFromFont( THEME->GetPathF(sType,"item") ); + m_UnderlineParent.Load( sType, OptionsCursor::underline ); + m_textTitle.LoadFromFont( THEME->GetPathF(sType,"title") ); + //m_sprBullet.Load( THEME->GetPathG(sType,"bullet") ); + if( SHOW_OPTION_ICONS ) + m_OptionIcon.Load( sType ); } void OptionRow::LoadNormal( const OptionRowDefinition &def, OptionRowHandler *pHand, bool bFirstItemGoesDown ) @@ -240,23 +242,26 @@ void OptionRow::InitText() m_sprBullet->SetDrawOrder(-1); // under title m_Frame.AddChild( m_sprBullet ); - switch( m_RowType ) + if( m_pParentType->SHOW_OPTION_ICONS ) { - case ROW_NORMAL: - FOREACH_PlayerNumber( p ) + switch( m_RowType ) { - m_OptionIcons[p] = new OptionIcon( m_pParentType->m_OptionIcon ); - m_OptionIcons[p]->SetDrawOrder(-1); // under title - m_OptionIcons[p]->RunCommands( m_pParentType->ICONS_ON_COMMAND ); - - m_Frame.AddChild( m_OptionIcons[p] ); + case ROW_NORMAL: + FOREACH_PlayerNumber( p ) + { + m_OptionIcons[p] = new OptionIcon( m_pParentType->m_OptionIcon ); + m_OptionIcons[p]->SetDrawOrder(-1); // under title + m_OptionIcons[p]->RunCommands( m_pParentType->ICONS_ON_COMMAND ); + + m_Frame.AddChild( m_OptionIcons[p] ); - GameCommand gc; - SetOptionIcon( p, "", gc ); + GameCommand gc; + SetOptionIcon( p, "", gc ); + } + break; + case ROW_EXIT: + break; } - break; - case ROW_EXIT: - break; } // If the items will go off the edge of the screen, then re-init with the "long row" style. @@ -501,12 +506,14 @@ void OptionRow::PositionIcons() FOREACH_HumanPlayer( p ) // foreach player { - OptionIcon &icon = *m_OptionIcons[p]; + OptionIcon *pIcon = m_OptionIcons[p]; + if( pIcon == NULL ) + continue; - icon.SetX( m_pParentType->ICONS_X.GetValue(p) ); + pIcon->SetX( m_pParentType->ICONS_X.GetValue(p) ); /* XXX: this doesn't work since icon is an ActorFrame */ - icon.SetDiffuse( RageColor(1,1,1, m_bHidden? 0.0f:1.0f) ); + pIcon->SetDiffuse( RageColor(1,1,1, m_bHidden? 0.0f:1.0f) ); } } @@ -681,7 +688,8 @@ void OptionRow::SetOptionIcon( PlayerNumber pn, const CString &sText, GameComman LUA->Release( L ); m_sprBullet->PlayCommand( "Refresh" ); - m_OptionIcons[pn]->Set( pn, sText, false ); + if( m_OptionIcons[pn] != NULL ) + m_OptionIcons[pn]->Set( pn, sText, false ); L = LUA->Get(); GAMESTATE->m_Environment->Unset( L, "ThisGameCommand" ); diff --git a/stepmania/src/OptionRow.h b/stepmania/src/OptionRow.h index 22296afdf1..8d9b983ef8 100644 --- a/stepmania/src/OptionRow.h +++ b/stepmania/src/OptionRow.h @@ -122,6 +122,7 @@ private: ThemeMetric THEME_ITEMS; ThemeMetric THEME_TITLES; ThemeMetric SHOW_BPM_IN_SPEED_TITLE; + ThemeMetric SHOW_OPTION_ICONS; friend class OptionRow; };