From 7f71e22ef4a27b5ad863ef9c7272d80357c304dd Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Tue, 4 Oct 2005 02:48:33 +0000 Subject: [PATCH] remove MAX_CHOICES --- stepmania/src/ScreenSelectMaster.cpp | 68 +++++++++++++++------------- stepmania/src/ScreenSelectMaster.h | 6 +-- 2 files changed, 39 insertions(+), 35 deletions(-) diff --git a/stepmania/src/ScreenSelectMaster.cpp b/stepmania/src/ScreenSelectMaster.cpp index c304cc218e..9dd3d686c8 100644 --- a/stepmania/src/ScreenSelectMaster.cpp +++ b/stepmania/src/ScreenSelectMaster.cpp @@ -84,6 +84,12 @@ void ScreenSelectMaster::Init() } } + // Resize vectors depending on how many choices there are + m_vsprIcon.resize( m_aGameCommands.size() ); + FOREACH( PlayerNumber, vpns, p ) + m_vsprScroll[*p].resize( m_aGameCommands.size() ); + + for( unsigned c=0; cGetPathG(m_sName,sElement) ); + m_vsprIcon[c].Load( THEME->GetPathG(m_sName,sElement) ); sElement.Replace( " ", "" ); - m_sprIcon[c]->SetName( sElement ); - this->AddChild( m_sprIcon[c] ); + m_vsprIcon[c]->SetName( sElement ); + this->AddChild( m_vsprIcon[c] ); } // init scroll @@ -109,10 +115,10 @@ void ScreenSelectMaster::Init() FOREACH( PlayerNumber, vpns, p ) { CString sElement = ssprintf( "Scroll Choice%s", mc.m_sName.c_str() ) + PLAYER_APPEND_WITH_SPACE(*p); - m_sprScroll[c][*p].Load( THEME->GetPathG(m_sName,sElement) ); + m_vsprScroll[*p][c].Load( THEME->GetPathG(m_sName,sElement) ); sElement.Replace( " ", "" ); - m_sprScroll[c][*p]->SetName( sElement ); - m_Scroller[*p].AddChild( m_sprScroll[c][*p] ); + m_vsprScroll[*p][c]->SetName( sElement ); + m_Scroller[*p].AddChild( m_vsprScroll[*p][c] ); } } @@ -165,7 +171,7 @@ void ScreenSelectMaster::Init() for( unsigned part = 0; part < parts.size(); ++part ) { - unsigned from, to; + int from, to; if( sscanf( parts[part], "%d:%d", &from, &to ) != 2 ) { LOG->Warn( "%s::OptionOrder%s parse error", m_sName.c_str(), MenuDirToString(dir).c_str() ); @@ -298,7 +304,7 @@ void ScreenSelectMaster::HandleScreenMessage( const ScreenMessage SM ) FOREACH( PlayerNumber, vpns, p ) { int iChoice = m_iChoice[*p]; - COMMAND( m_sprScroll[iChoice][*p], "PostSwitchPage" ); + COMMAND( m_vsprScroll[*p][iChoice], "PostSwitchPage" ); } } @@ -358,11 +364,11 @@ void ScreenSelectMaster::UpdateSelectableChoices() for( unsigned c=0; cPlayCommand( m_aGameCommands[c].IsPlayable()? "Enabled":"Disabled" ); + m_vsprIcon[c]->PlayCommand( m_aGameCommands[c].IsPlayable()? "Enabled":"Disabled" ); FOREACH( PlayerNumber, vpns, p ) - if( m_sprScroll[c][*p].IsLoaded() ) - m_sprScroll[c][*p]->PlayCommand( m_aGameCommands[c].IsPlayable()? "Enabled":"Disabled" ); + if( m_vsprScroll[*p][c].IsLoaded() ) + m_vsprScroll[*p][c]->PlayCommand( m_aGameCommands[c].IsPlayable()? "Enabled":"Disabled" ); } /* @@ -533,7 +539,7 @@ bool ScreenSelectMaster::ChangePage( int iNewChoice ) if( SHOW_ICON ) { for( unsigned c=0; cPlayCommand( "LoseFocus" ); - m_sprIcon[iNewChoice]->PlayCommand( "GainFocus" ); + m_vsprIcon[iOldChoice]->PlayCommand( "LoseFocus" ); + m_vsprIcon[iNewChoice]->PlayCommand( "GainFocus" ); } if( SHOW_CURSOR ) @@ -647,13 +653,13 @@ bool ScreenSelectMaster::ChangeSelection( PlayerNumber pn, MenuDir dir, int iNew if( SHARED_SELECTION ) { - m_sprScroll[iOldChoice][0]->PlayCommand( "LoseFocus" ); - m_sprScroll[iNewChoice][0]->PlayCommand( "GainFocus" ); + m_vsprScroll[0][iOldChoice]->PlayCommand( "LoseFocus" ); + m_vsprScroll[0][iNewChoice]->PlayCommand( "GainFocus" ); } else { - m_sprScroll[iOldChoice][p]->PlayCommand( "LoseFocus" ); - m_sprScroll[iNewChoice][p]->PlayCommand( "GainFocus" ); + m_vsprScroll[p][iOldChoice]->PlayCommand( "LoseFocus" ); + m_vsprScroll[p][iNewChoice]->PlayCommand( "GainFocus" ); } } } @@ -807,9 +813,9 @@ void ScreenSelectMaster::TweenOursOnScreen() { for( unsigned c=0; cPlayCommand( (int(c) == m_iChoice[0])? "GainFocus":"LoseFocus" ); - m_sprIcon[c]->FinishTweening(); - SET_XY_AND_ON_COMMAND( m_sprIcon[c] ); + m_vsprIcon[c]->PlayCommand( (int(c) == m_iChoice[0])? "GainFocus":"LoseFocus" ); + m_vsprIcon[c]->FinishTweening(); + SET_XY_AND_ON_COMMAND( m_vsprIcon[c] ); } } @@ -821,9 +827,9 @@ void ScreenSelectMaster::TweenOursOnScreen() // often stop tweening, which ruins the OnCommand. for( unsigned c=0; cPlayCommand( int(c) == m_iChoice[*p]? "GainFocus":"LoseFocus" ); - m_sprScroll[c][*p]->FinishTweening(); - ON_COMMAND( m_sprScroll[c][*p] ); + m_vsprScroll[*p][c]->PlayCommand( int(c) == m_iChoice[*p]? "GainFocus":"LoseFocus" ); + m_vsprScroll[*p][c]->FinishTweening(); + ON_COMMAND( m_vsprScroll[*p][c] ); } m_Scroller[*p].SetCurrentAndDestinationItem( (float)m_iChoice[*p] ); @@ -890,14 +896,14 @@ void ScreenSelectMaster::TweenOursOffScreen() if( SHOW_ICON ) { - OFF_COMMAND( m_sprIcon[c] ); - m_sprIcon[c]->PlayCommand( SelectedByEitherPlayer? "OffFocused":"OffUnfocused" ); + OFF_COMMAND( m_vsprIcon[c] ); + m_vsprIcon[c]->PlayCommand( SelectedByEitherPlayer? "OffFocused":"OffUnfocused" ); } if( SHOW_SCROLLER ) { FOREACH( PlayerNumber, vpns, p ) - COMMAND( m_sprScroll[c][*p], SelectedByEitherPlayer? "OffFocused":"OffUnfocused" ); + COMMAND( m_vsprScroll[*p][c], SelectedByEitherPlayer? "OffFocused":"OffUnfocused" ); } } @@ -915,14 +921,14 @@ void ScreenSelectMaster::TweenOursOffScreen() float ScreenSelectMaster::GetCursorX( PlayerNumber pn ) { int iChoice = m_iChoice[pn]; - AutoActor spr = m_sprIcon[iChoice]; + AutoActor spr = m_vsprIcon[iChoice]; return spr->GetX() + CURSOR_OFFSET_X_FROM_ICON.GetValue(pn); } float ScreenSelectMaster::GetCursorY( PlayerNumber pn ) { int iChoice = m_iChoice[pn]; - AutoActor &spr = m_sprIcon[iChoice]; + AutoActor &spr = m_vsprIcon[iChoice]; return spr->GetY() + CURSOR_OFFSET_Y_FROM_ICON.GetValue(pn); } diff --git a/stepmania/src/ScreenSelectMaster.h b/stepmania/src/ScreenSelectMaster.h index 96984b4d11..3281207540 100644 --- a/stepmania/src/ScreenSelectMaster.h +++ b/stepmania/src/ScreenSelectMaster.h @@ -8,8 +8,6 @@ #include "ActorScroller.h" #include "MenuInput.h" -#define MAX_CHOICES 30 - class ScreenSelectMaster : public ScreenSelect { public: @@ -78,9 +76,9 @@ protected: AutoActor m_sprExplanation[NUM_PAGES]; AutoActor m_sprMore[NUM_PAGES]; // icon is the shared, per-choice piece - AutoActor m_sprIcon[MAX_CHOICES]; + vector m_vsprIcon; // preview is per-player, per-choice piece - AutoActor m_sprScroll[MAX_CHOICES][NUM_PLAYERS]; + vector m_vsprScroll[NUM_PLAYERS]; ActorScroller m_Scroller[NUM_PLAYERS]; // cursor is the per-player, shared by all choices AutoActor m_sprCursor[NUM_PLAYERS];