minor hack to fix INITIAL_SCREEN

This commit is contained in:
Glenn Maynard
2005-06-16 01:30:54 +00:00
parent 47e5a2059d
commit ec705ac73f
2 changed files with 17 additions and 4 deletions
+1 -1
View File
@@ -9,7 +9,7 @@
CString PLAYER_COLOR_NAME( size_t p ) { return ssprintf("ColorP%d",int(p+1)); }
ThemeMetric<CString> INITIAL_SCREEN ("Common","InitialScreen");
ThemeMetric<CString> INITIAL_SCREEN ("Common","InitialScreen", true); // always reevaluate metric
ThemeMetric<CString> FIRST_ATTRACT_SCREEN ("Common","FirstAttractScreen");
ThemeMetric<CString> DEFAULT_MODIFIERS ("Common","DefaultModifiers" );
ThemeMetric<CString> DEFAULT_CPU_MODIFIERS ("Common","DefaultCpuModifiers" );
+16 -3
View File
@@ -24,15 +24,21 @@ private:
T m_currentValue;
bool m_bIsLoaded;
/* HACK: If true, reload the metric each time it's read. This is like DynamicThemeMetric,
* but works transparently for strings. This is very slow, and should be removed once
* metrics are refactored to fix DynamicThemeMetric. */
bool m_bAlwaysReload;
public:
/* Initializing with no group and name is allowed; if you do this, you must
* call Load() to set them. This is done to allow initializing cached metrics
* in one place for classes that don't receive their m_sName in the constructor
* (everything except screens). */
ThemeMetric( const CString& sGroup = "", const CString& sName = "" ):
ThemeMetric( const CString& sGroup = "", const CString& sName = "", bool bAlwaysReload = false ):
m_sGroup( sGroup ),
m_sName( sName ),
m_bIsLoaded( false )
m_bIsLoaded( false ),
m_bAlwaysReload( bAlwaysReload )
{
m_currentValue = T();
ThemeManager::Subscribe( this );
@@ -43,7 +49,8 @@ public:
m_sGroup( cpy.m_sGroup ),
m_sName( cpy.m_sName ),
m_currentValue( cpy.m_currentValue ),
m_bIsLoaded( cpy.m_bIsLoaded )
m_bIsLoaded( cpy.m_bIsLoaded ),
m_bAlwaysReload( cpy.m_bAlwaysReload )
{
ThemeManager::Subscribe( this );
}
@@ -80,6 +87,12 @@ public:
ASSERT( m_sName != "" );
ASSERT( m_bIsLoaded );
if( m_bAlwaysReload )
{
ThemeMetric<T> *p = const_cast<ThemeMetric<T> *>(this);
p->Read();
}
return m_currentValue;
}