diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index c3e2b882b0..041e8e04cc 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -309,12 +309,13 @@ bool GameState::IsPlayable( const ModeChoice& mc ) // value from the current game state // const PlayMode &rPlayMode = mc.pm != PLAY_MODE_INVALID? mc.pm:m_PlayMode; - const Style &rStyle = mc.style != STYLE_INVALID? mc.style: m_CurStyle; - // ModeChoice code sets numSidesJoinedToPlay properly iff style is set - const int numSidesJoined = mc.style != STYLE_INVALID? mc.numSidesJoinedToPlay:GAMESTATE->GetNumSidesJoined(); - if ( numSidesJoined != GAMESTATE->GetNumSidesJoined() ) - return false; + if ( mc.style != STYLE_INVALID ) + { + const int SidesJoinedToPlay = GAMEMAN->GetStyleDefForStyle(mc.style)->NumSidesJoinedToPlay(); + if( SidesJoinedToPlay != GAMESTATE->GetNumSidesJoined() ) + return false; + } if( rPlayMode == PLAY_MODE_RAVE || rPlayMode == PLAY_MODE_BATTLE ) { @@ -324,6 +325,7 @@ bool GameState::IsPlayable( const ModeChoice& mc ) // If there is no current style ... well, we have no reasonable // grounds to disallow + const Style &rStyle = mc.style != STYLE_INVALID? mc.style: m_CurStyle; if (rStyle == STYLE_INVALID) return true; diff --git a/stepmania/src/ScreenSelectMode.cpp b/stepmania/src/ScreenSelectMode.cpp index 5990d2cb25..e65354f58c 100644 --- a/stepmania/src/ScreenSelectMode.cpp +++ b/stepmania/src/ScreenSelectMode.cpp @@ -174,15 +174,17 @@ void ScreenSelectMode::UpdateSelectableChoices() (!PREFSMAN->m_bJointPremium) )*/ + const int SidesJoinedToPlay = mc.style == STYLE_INVALID? 1: + GAMEMAN->GetStyleDefForStyle(mc.style)->NumSidesJoinedToPlay(); if( (!PREFSMAN->m_bJointPremium ) || ( PREFSMAN->m_bJointPremium && ( - (INCLUDE_DOUBLE_IN_JP == 1 && (GAMESTATE->GetNumSidesJoined() == mc.numSidesJoinedToPlay)) || + (INCLUDE_DOUBLE_IN_JP == 1 && (GAMESTATE->GetNumSidesJoined() == SidesJoinedToPlay)) || ( INCLUDE_DOUBLE_IN_JP == 0 && ( - GAMESTATE->GetNumSidesJoined() == mc.numSidesJoinedToPlay || + GAMESTATE->GetNumSidesJoined() == SidesJoinedToPlay || (modename.substr(0, 6) == "DOUBLE" || modename.substr(0, 13) == "ARCADE-DOUBLE" || modename.substr(0, 10) == "HALFDOUBLE" || modename.substr(0, 17) == "ARCADE-HALFDOUBLE") && GAMESTATE->GetNumSidesJoined() != 2