diff --git a/stepmania/src/PrefsManager.cpp b/stepmania/src/PrefsManager.cpp index 0c35636bd4..b105d413b9 100644 --- a/stepmania/src/PrefsManager.cpp +++ b/stepmania/src/PrefsManager.cpp @@ -14,7 +14,6 @@ #include "PrefsManager.h" #include "IniFile.h" #include "GameState.h" -#include "RageException.h" #include "RageDisplay.h" #include "RageUtil.h" #include "arch/arch.h" /* for default driver specs */ @@ -288,13 +287,6 @@ void PrefsManager::ReadGlobalPrefsFromDisk( bool bSwitchToLastPlayedGame ) CString sAdditionalSongFolders; ini.GetValue( "Options", "AdditionalSongFolders", sAdditionalSongFolders ); split( sAdditionalSongFolders, ",", m_asAdditionalSongFolders, true ); - - if( bSwitchToLastPlayedGame ) - { - Game game; - if( ini.GetValue("Options", "Game", (int&)game) ) - GAMESTATE->m_CurGame = game; - } } @@ -419,7 +411,5 @@ void PrefsManager::SaveGlobalPrefsToDisk() ini.SetValue ( "Options", "AdditionalSongFolders", join(",", m_asAdditionalSongFolders) ); - ini.SetValue( "Options", "Game", GAMESTATE->m_CurGame ); - ini.WriteFile(); } diff --git a/stepmania/src/ScreenOptionsMasterPrefs.cpp b/stepmania/src/ScreenOptionsMasterPrefs.cpp index 10ba437acf..12875952e1 100644 --- a/stepmania/src/ScreenOptionsMasterPrefs.cpp +++ b/stepmania/src/ScreenOptionsMasterPrefs.cpp @@ -105,15 +105,9 @@ static void GameSel( int &sel, bool ToSel, const CStringArray &choices ) if( !stricmp(choices[i], sCurGameName) ) sel = i; } else { - SaveGamePrefsToDisk(); - INPUTMAPPER->SaveMappingsToDisk(); // save mappings before switching the game - vector aGames; GAMEMAN->GetEnabledGames( aGames ); - GAMESTATE->m_CurGame = aGames[sel]; - - ReadGamePrefsFromDisk(); - INPUTMAPPER->ReadMappingsFromDisk(); + ChangeCurrentGame( aGames[sel] ); } } diff --git a/stepmania/src/StepMania.cpp b/stepmania/src/StepMania.cpp index 73db53b248..665c4d2974 100644 --- a/stepmania/src/StepMania.cpp +++ b/stepmania/src/StepMania.cpp @@ -512,8 +512,21 @@ static void RestoreAppPri() #define GAMEPREFS_INI_PATH BASE_PATH "Data" SLASH "GamePrefs.ini" +void ChangeCurrentGame( Game g ) +{ + SaveGamePrefsToDisk(); + INPUTMAPPER->SaveMappingsToDisk(); // save mappings before switching the game -void ReadGamePrefsFromDisk() + GAMESTATE->m_CurGame = g; + + ReadGamePrefsFromDisk( false ); + INPUTMAPPER->ReadMappingsFromDisk(); + + /* Save the newly-selected game. */ + SaveGamePrefsToDisk(); +} + +void ReadGamePrefsFromDisk( bool bSwitchToLastPlayedGame ) { if( !GAMESTATE ) return; @@ -535,8 +548,16 @@ void ReadGamePrefsFromDisk() THEME->SwitchThemeAndLanguage( sTheme, PREFSMAN->m_sLanguage ); // NOTESKIN->SwitchNoteSkin( sNoteSkin ); + + if( bSwitchToLastPlayedGame ) + { + Game game; + if( ini.GetValue("Options", "Game", (int&)game) ) + GAMESTATE->m_CurGame = game; + } } + void SaveGamePrefsToDisk() { if( !GAMESTATE ) @@ -550,6 +571,7 @@ void SaveGamePrefsToDisk() ini.SetValue( sGameName, "Announcer", ANNOUNCER->GetCurAnnouncerName() ); ini.SetValue( sGameName, "Theme", THEME->GetCurThemeName() ); ini.SetValue( sGameName, "DefaultModifiers", PREFSMAN->m_sDefaultModifiers ); + ini.SetValue( "Options", "Game", GAMESTATE->m_CurGame ); ini.WriteFile(); } diff --git a/stepmania/src/StepMania.h b/stepmania/src/StepMania.h index 17ae25dfa6..a9bf85a879 100644 --- a/stepmania/src/StepMania.h +++ b/stepmania/src/StepMania.h @@ -11,12 +11,15 @@ ----------------------------------------------------------------------------- */ +#include "Game.h" + int SMmain(int argc, char* argv[]); void ApplyGraphicOptions(); void ExitGame(); void ResetGame( bool ReturnToFirstScreen=true ); -void ReadGamePrefsFromDisk(); +void ReadGamePrefsFromDisk( bool bSwitchToLastPlayedGame=true ); void SaveGamePrefsToDisk(); +void ChangeCurrentGame( Game g ); #if defined(WIN32) extern HWND g_hWndMain;