allow setting preferences from theme metrics. static.ini is deprecated.

This commit is contained in:
Glenn Maynard
2005-05-19 05:19:23 +00:00
parent acc86207d0
commit 140ec4fdca
3 changed files with 40 additions and 0 deletions
+6
View File
@@ -1104,6 +1104,12 @@ int main(int argc, char* argv[])
/* Set up the theme and announcer, and switch to the last game type. */
ReadGamePrefsFromDisk( true );
{
CString sSection = "Preferences";
GetCommandlineArgument( "Type", &sSection );
THEME->LoadPreferencesFromSection( sSection );
}
{
/* Now that THEME is loaded, load the icon for the current theme into the
* loading window. */
+33
View File
@@ -868,6 +868,39 @@ void ThemeManager::GetMetricsThatBeginWith( const CString &_sClassName, const CS
}
}
void ThemeManager::LoadPreferencesFromSection( const CString &sClassName )
{
set<CString> asNames;
GetMetricsThatBeginWith( sClassName, "", asNames );
/* If "Theme" isn't set, we're not changing the theme. Break out and
* load other preferences. */
if( asNames.find("Theme") != asNames.end() )
{
/* Change the theme. Only do this once. */
CString sTheme;
GetMetric( sClassName, "Theme", sTheme );
THEME->SwitchThemeAndLanguage( sTheme, PREFSMAN->m_sLanguage );
asNames.erase( "Theme" );
}
FOREACHS( CString, asNames, sName )
{
IPreference *pPref = PREFSMAN->GetPreferenceByName( *sName );
if( pPref == NULL )
{
LOG->Warn( "Unknown preference in [%s]: %s", sClassName.c_str(), sName->c_str() );
continue;
}
CString sVal;
GetMetric( sClassName, *sName, sVal );
pPref->FromString( sVal );
}
}
// lua start
#include "LuaBinding.h"
+1
View File
@@ -91,6 +91,7 @@ public:
void GetMetric( const CString &sClassName, const CString &sValueName, apActorCommands &valueOut );
void GetMetricsThatBeginWith( const CString &sClassName, const CString &sValueName, set<CString> &vsValueNamesOut );
void LoadPreferencesFromSection( const CString &sClassName );
//
// For self-registering metrics