diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 85fc47ff9e..bde16e69fb 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -270,6 +270,7 @@ ScoreP1X=520 ScoreP1Y=210 ScoreP2X=520 ScoreP2Y=286 +ScoreZoom=0.8 HelpText=Use ! " to select, then press START TimerSeconds=60 diff --git a/stepmania/src/ScreenSelectCourse.cpp b/stepmania/src/ScreenSelectCourse.cpp index 4323e2acbc..7fa6cc1361 100644 --- a/stepmania/src/ScreenSelectCourse.cpp +++ b/stepmania/src/ScreenSelectCourse.cpp @@ -46,6 +46,7 @@ #define WHEEL_Y THEME->GetMetricF("ScreenSelectCourse","WheelY") #define SCORE_X( p ) THEME->GetMetricF("ScreenSelectCourse",ssprintf("ScoreP%dX",p+1)) #define SCORE_Y( i ) THEME->GetMetricF("ScreenSelectCourse",ssprintf("ScoreP%dY",i+1)) +#define SCORE_ZOOM THEME->GetMetricF("ScreenSelectCourse","ScoreZoom") #define HELP_TEXT THEME->GetMetric("ScreenSelectCourse","HelpText") #define TIMER_SECONDS THEME->GetMetricI("ScreenSelectCourse","TimerSeconds") @@ -113,7 +114,7 @@ ScreenSelectCourse::ScreenSelectCourse() this->AddChild( &m_sprHighScoreFrame[p] ); m_HighScore[p].SetXY( SCORE_X(p), SCORE_Y(p) ); - m_HighScore[p].SetZoom( 0.6f ); + m_HighScore[p].SetZoom( SCORE_ZOOM ); m_HighScore[p].SetDiffuse( PlayerToColor(p) ); this->AddChild( &m_HighScore[p] ); } diff --git a/stepmania/src/ScreenSelectMode.cpp b/stepmania/src/ScreenSelectMode.cpp index 5948a642cd..b2c5d44033 100644 --- a/stepmania/src/ScreenSelectMode.cpp +++ b/stepmania/src/ScreenSelectMode.cpp @@ -4,6 +4,7 @@ ScreenEzSelectPlayer,cpp Desc: See Header Copyright (C): Andrew Livy +Chris Danford *****************************************/ /* Includes */ @@ -184,7 +185,7 @@ void ScreenSelectMode::HandleScreenMessage( const ScreenMessage SM ) switch( SM ) { case SM_MenuTimer: - MenuStart(PLAYER_1); + MenuStart( PLAYER_INVALID ); m_Menu.StopTimer(); TweenOffScreen(); @@ -195,7 +196,24 @@ void ScreenSelectMode::HandleScreenMessage( const ScreenMessage SM ) SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); break; case SM_GoToNextScreen: - SCREENMAN->SetNewScreen( NEXT_SCREEN ); + // Put the mode choice into effect + int iSelection = m_ScrollingList.GetSelection(); + const ModeChoice& choice = m_aPossibleModeChoices[ iSelection ]; + GAMESTATE->m_CurStyle = choice.style; + GAMESTATE->m_PlayMode = choice.pm; + for( int p=0; pm_PreferredDifficulty[p] = choice.dc; + + switch( GAMESTATE->m_PlayMode ) + { + case PLAY_MODE_ARCADE: + SCREENMAN->SetNewScreen( NEXT_SCREEN ); + break; + case PLAY_MODE_ONI: + case PLAY_MODE_ENDLESS: + SCREENMAN->SetNewScreen( "ScreenSelectCourse" ); + break; + } break; } } @@ -207,15 +225,18 @@ void ScreenSelectMode::RefreshModeChoices() GAMEMAN->GetModesChoicesForGame( GAMESTATE->m_CurGame, m_aPossibleModeChoices ); ASSERT( m_aPossibleModeChoices.GetSize() > 0 ); + // remove ModeChoices that won't work with the current number of players + for( int i=m_aPossibleModeChoices.GetSize()-1; i>=0; i-- ) + if( m_aPossibleModeChoices[i].numSidesJoinedToPlay != iNumSidesJoined ) + m_aPossibleModeChoices.RemoveAt( i ); + CString sGameName = GAMESTATE->GetCurrentGameDef()->m_szName; CStringArray asGraphicPaths; for( int i=0; iGetPathTo("Graphics", ssprintf("select mode choice %s %s", sGameName, choice.name) ) ); + asGraphicPaths.Add( THEME->GetPathTo("Graphics", ssprintf("select mode choice %s %s", sGameName, choice.name) ) ); } m_ScrollingList.Load( asGraphicPaths ); @@ -286,6 +307,9 @@ presses the button bound to start ************************************/ void ScreenSelectMode::MenuStart( PlayerNumber pn ) { + if( pn == PLAYER_INVALID ) + pn = GAMESTATE->m_MasterPlayerNumber; + if( !GAMESTATE->m_bSideIsJoined[pn] ) { // join them @@ -312,12 +336,6 @@ void ScreenSelectMode::MenuStart( PlayerNumber pn ) // made a selection m_soundSelect.Play(); - const ModeChoice& choice = m_aPossibleModeChoices[ m_ScrollingList.GetSelection() ]; - GAMESTATE->m_CurStyle = choice.style; - GAMESTATE->m_PlayMode = choice.pm; - for( int p=0; pm_PreferredDifficulty[p] = choice.dc; - TweenOffScreen(); m_Menu.TweenOffScreenToMenu( SM_GoToNextScreen ); }