diff --git a/stepmania/src/PrefsManager.cpp b/stepmania/src/PrefsManager.cpp index 9d740ee72f..8b5e3ed1e8 100644 --- a/stepmania/src/PrefsManager.cpp +++ b/stepmania/src/PrefsManager.cpp @@ -8,13 +8,12 @@ #include "Foreach.h" #include "Preference.h" #include "RageLog.h" - - -const RString DEFAULTS_INI_PATH = "Data/Defaults.ini"; // these can be overridden -//PREFERENCES_INI_PATH // overlay on Defaults.ini, contains the user's choices #include "SpecialFiles.h" -const RString STATIC_INI_PATH = "Data/Static.ini"; // overlay on the 2 above, can't be overridden -const RString TYPE_TXT_FILE = "Data/Type.txt"; + +//DEFAULTS_INI_PATH = "Data/Defaults.ini"; // these can be overridden +//PREFERENCES_INI_PATH // overlay on Defaults.ini, contains the user's choices +//STATIC_INI_PATH = "Data/Static.ini"; // overlay on the 2 above, can't be overridden +//TYPE_TXT_FILE = "Data/Type.txt"; PrefsManager* PREFSMAN = NULL; // global and accessable from anywhere in our program diff --git a/stepmania/src/SpecialFiles.cpp b/stepmania/src/SpecialFiles.cpp index dd82d8132e..10bb2d1a10 100644 --- a/stepmania/src/SpecialFiles.cpp +++ b/stepmania/src/SpecialFiles.cpp @@ -10,6 +10,9 @@ const RString SpecialFiles::BASE_LANGUAGE = "en"; const RString SpecialFiles::METRICS_FILE = "metrics.ini"; const RString SpecialFiles::CACHE_DIR = "Cache/"; const RString SpecialFiles::BASE_THEME_NAME = "default"; +const RString SpecialFiles::DEFAULTS_INI_PATH = "Data/Defaults.ini"; +const RString SpecialFiles::STATIC_INI_PATH = "Data/Static.ini"; +const RString SpecialFiles::TYPE_TXT_FILE = "Data/Type.txt"; /* diff --git a/stepmania/src/SpecialFiles.h b/stepmania/src/SpecialFiles.h index e3ac808d78..fc32553112 100644 --- a/stepmania/src/SpecialFiles.h +++ b/stepmania/src/SpecialFiles.h @@ -13,6 +13,9 @@ namespace SpecialFiles extern const RString METRICS_FILE; extern const RString CACHE_DIR; extern const RString BASE_THEME_NAME; + extern const RString DEFAULTS_INI_PATH; + extern const RString STATIC_INI_PATH; + extern const RString TYPE_TXT_FILE; } #endif diff --git a/stepmania/src/smpackage/smpackage.cpp b/stepmania/src/smpackage/smpackage.cpp index a410294071..6bb16fbea3 100644 --- a/stepmania/src/smpackage/smpackage.cpp +++ b/stepmania/src/smpackage/smpackage.cpp @@ -71,19 +71,41 @@ BOOL CSmpackageApp::InitInstance() // TODO: Use PrefsManager to get the current language instead? PrefsManager would // need to be split up to reduce dependencies - IniFile ini; + RString sTheme = SpecialFiles::BASE_THEME_NAME; + + { + RString sType = "Preferences"; + GetFileContents( SpecialFiles::TYPE_TXT_FILE, sType, true ); + IniFile ini; + if( ini.ReadFile(SpecialFiles::STATIC_INI_PATH) ) + { + while( 1 ) + { + if( ini.GetValue(sType, "Theme", sTheme) ) + break; + if( ini.GetValue(sType, "Fallback", sType) ) + continue; + break; + } + } + } + RString sLanguage; bool bPseudoLocalize = false; bool bShowLogOutput = false; bool bLogToDisk = false; - if( ini.ReadFile(SpecialFiles::PREFERENCES_INI_PATH) ) { + IniFile ini; + if( ini.ReadFile(SpecialFiles::PREFERENCES_INI_PATH) ) + { + ini.GetValue( "Options", "Theme", sTheme ); ini.GetValue( "Options", "Language", sLanguage ); - ini.GetValue( "Options", "PseudoLocalize", bPseudoLocalize ); - ini.GetValue( "Options", "ShowLogOutput", bShowLogOutput ); - ini.GetValue( "Options", "LogToDisk", bLogToDisk ); + ini.GetValue( "Options", "PseudoLocalize", bPseudoLocalize ); + ini.GetValue( "Options", "ShowLogOutput", bShowLogOutput ); + ini.GetValue( "Options", "LogToDisk", bLogToDisk ); + } } - THEME->SwitchThemeAndLanguage( SpecialFiles::BASE_THEME_NAME, sLanguage, bPseudoLocalize ); + THEME->SwitchThemeAndLanguage( sTheme, sLanguage, bPseudoLocalize ); LOG->SetShowLogOutput( bShowLogOutput ); LOG->SetLogToDisk( bLogToDisk ); LOG->SetInfoToDisk( true );