diff --git a/stepmania/NEWS b/stepmania/NEWS index b7b58180d5..bee158d8a5 100644 --- a/stepmania/NEWS +++ b/stepmania/NEWS @@ -14,6 +14,7 @@ NEW FEATURE: Jukebox mode. Like demonstration, but plays entire songs NEW FEATURE: F6 to save screenshot. Saved in StepMania program directory as "screenshotXXXX.bmp". CHANGE: Reorganization of options screens. +NEW FEATURE: Option for user-selectable extra stage 1 ----------------------- Version 3.01 --------------------------- CHANGE: Simplified NoteSkin tap graphic format. Old NoteSkins will need to diff --git a/stepmania/src/MusicWheel.cpp b/stepmania/src/MusicWheel.cpp index a76b1d2b2c..967d47c5d4 100644 --- a/stepmania/src/MusicWheel.cpp +++ b/stepmania/src/MusicWheel.cpp @@ -340,10 +340,10 @@ MusicWheel::MusicWheel() m_iSwitchesLeftInSpinDown = 0; - if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() ) + if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() ) { // make the preferred group the group of the last song played. - if( GAMESTATE->m_sPreferredGroup == "ALL MUSIC" ) + if( GAMESTATE->m_sPreferredGroup == "ALL MUSIC" && !PREFSMAN->m_bPickExtraStage ) GAMESTATE->m_sPreferredGroup = GAMESTATE->m_pCurSong->m_sGroupName; Song* pSong; @@ -876,7 +876,7 @@ void MusicWheel::Update( float fDeltaTime ) case STATE_TWEENING_ON_SCREEN: m_fTimeLeftInState = 0; - if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() ) + if( (GAMESTATE->IsExtraStage() && !PREFSMAN->m_bPickExtraStage) || GAMESTATE->IsExtraStage2() ) { // if ( m_bUseRandomExtra ) // { diff --git a/stepmania/src/PrefsManager.cpp b/stepmania/src/PrefsManager.cpp index d8f468ee01..72963b4bce 100644 --- a/stepmania/src/PrefsManager.cpp +++ b/stepmania/src/PrefsManager.cpp @@ -5,8 +5,9 @@ Desc: See Header. - Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. + Copyright (c) 2001-2003 by the person(s) listed below. All rights reserved. Chris Danford + Chris Gomez ----------------------------------------------------------------------------- */ @@ -80,6 +81,11 @@ PrefsManager::PrefsManager() m_iBoostAppPriority = -1; m_iPolygonRadar = -1; + /* DDR Extreme-style extra stage support. * + * Default off so people used to the current behavior (or those with extra * + * stage CRS files) don't get it changed around on them */ + m_bPickExtraStage = false; + /* I'd rather get occasional people asking for support for this even though it's * already here than lots of people asking why songs aren't being displayed. */ m_bHiddenSongs = false; @@ -150,6 +156,7 @@ void PrefsManager::ReadGlobalPrefsFromDisk( bool bSwitchToLastPlayedGame ) ini.GetValueB( "Options", "JointPremium", m_bJointPremium ); ini.GetValueI( "Options", "BoostAppPriority", m_iBoostAppPriority ); ini.GetValueI( "Options", "PolygonRadar", m_iPolygonRadar ); + ini.GetValueB( "Options", "PickExtraStage", m_bPickExtraStage ); m_asAdditionalSongFolders.clear(); CString sAdditionalSongFolders; @@ -215,6 +222,7 @@ void PrefsManager::SaveGlobalPrefsToDisk() ini.SetValueB( "Options", "JointPremium", m_bJointPremium ); ini.SetValueI( "Options", "BoostAppPriority", m_iBoostAppPriority ); ini.SetValueI( "Options", "PolygonRadar", m_iPolygonRadar ); + ini.SetValueB( "Options", "PickExtraStage", m_bPickExtraStage ); /* Only write these if they aren't the default. This ensures that we can change * the default and have it take effect for everyone (except people who diff --git a/stepmania/src/PrefsManager.h b/stepmania/src/PrefsManager.h index 29101bca6d..d348a58051 100644 --- a/stepmania/src/PrefsManager.h +++ b/stepmania/src/PrefsManager.h @@ -6,8 +6,9 @@ Desc: Holds user-chosen preferences that are saved between sessions. - Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. + Copyright (c) 2001-2003 by the person(s) listed below. All rights reserved. Chris Danford + Chris Gomez ----------------------------------------------------------------------------- */ @@ -61,6 +62,7 @@ public: enum { COIN_HOME, COIN_PAY, COIN_FREE, NUM_COIN_MODES } m_CoinMode; int m_iCoinsPerCredit; bool m_bJointPremium; + bool m_bPickExtraStage; diff --git a/stepmania/src/ScreenGameplayOptions.cpp b/stepmania/src/ScreenGameplayOptions.cpp index c1f10a06ba..5aafbe5fb4 100644 --- a/stepmania/src/ScreenGameplayOptions.cpp +++ b/stepmania/src/ScreenGameplayOptions.cpp @@ -5,8 +5,9 @@ Desc: See header. - Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. + Copyright (c) 2001-2003 by the person(s) listed below. All rights reserved. Chris Danford + Chris Gomez ----------------------------------------------------------------------------- */ @@ -31,6 +32,7 @@ enum { GO_MARVELOUS, GO_HIDDEN_SONGS, GO_SHOW_DANGER, + GO_PICK_EXTRA_STAGE, NUM_GAMEPLAY_OPTIONS_LINES }; @@ -42,6 +44,7 @@ OptionRowData g_GameplayOptionsLines[NUM_GAMEPLAY_OPTIONS_LINES] = { { "Hidden\nSongs", 2, {"OFF","ON"} }, { "Easter\nEggs", 2, {"OFF","ON"} }, { "Marvelous\nTiming", 2, {"OFF","ON"} }, + { "Pick Extra\nStage", 2, {"OFF","ON"} } }; ScreenGameplayOptions::ScreenGameplayOptions() : @@ -81,6 +84,7 @@ void ScreenGameplayOptions::ImportOptions() m_iSelectedOption[0][GO_HIDDEN_SONGS] = PREFSMAN->m_bHiddenSongs ? 1:0; m_iSelectedOption[0][GO_EASTER_EGGS] = PREFSMAN->m_bEasterEggs ? 1:0; m_iSelectedOption[0][GO_MARVELOUS] = PREFSMAN->m_bMarvelousTiming ? 1:0; + m_iSelectedOption[0][GO_PICK_EXTRA_STAGE] = PREFSMAN->m_bPickExtraStage? 1:0; } void ScreenGameplayOptions::ExportOptions() @@ -92,6 +96,7 @@ void ScreenGameplayOptions::ExportOptions() PREFSMAN->m_bHiddenSongs = m_iSelectedOption[0][GO_HIDDEN_SONGS] == 1; PREFSMAN->m_bEasterEggs = m_iSelectedOption[0][GO_EASTER_EGGS] == 1; PREFSMAN->m_bMarvelousTiming = m_iSelectedOption[0][GO_MARVELOUS] == 1; + PREFSMAN->m_bPickExtraStage = m_iSelectedOption[0][GO_PICK_EXTRA_STAGE] == 1; } void ScreenGameplayOptions::GoToPrevState() diff --git a/stepmania/src/SongManager.cpp b/stepmania/src/SongManager.cpp index 913c7b5207..d4dfae6e2c 100644 --- a/stepmania/src/SongManager.cpp +++ b/stepmania/src/SongManager.cpp @@ -533,7 +533,7 @@ void SongManager::GetExtraStageInfo( bool bExtra2, CString sPreferredGroup, cons Notes* pExtra2Notes = NULL; vector apSongs; - SONGMAN->GetSongsInGroup( GAMESTATE->m_sPreferredGroup, apSongs ); + SONGMAN->GetSongsInGroup( (GAMESTATE->m_sPreferredGroup == "ALL MUSIC" ? GAMESTATE->m_pCurSong->m_sGroupName : GAMESTATE->m_sPreferredGroup), apSongs ); for( unsigned s=0; s