fix ThemeManager::HasMetric ignoring Fallback
This commit is contained in:
@@ -455,7 +455,7 @@ CString ThemeManager::GetMetricsIniPath( CString sThemeName )
|
|||||||
bool ThemeManager::HasMetric( CString sClassName, CString sValueName )
|
bool ThemeManager::HasMetric( CString sClassName, CString sValueName )
|
||||||
{
|
{
|
||||||
CString sThrowAway;
|
CString sThrowAway;
|
||||||
return m_pIniMetrics->GetValue(sClassName,sValueName,sThrowAway);
|
return GetMetricRaw( sClassName, sValueName, sThrowAway );
|
||||||
}
|
}
|
||||||
|
|
||||||
void ThemeManager::ReloadMetricsIfNecessary()
|
void ThemeManager::ReloadMetricsIfNecessary()
|
||||||
@@ -487,20 +487,25 @@ void ThemeManager::ReloadMetrics()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool ThemeManager::GetMetricRaw( CString sClassName, CString sValueName, CString &ret )
|
||||||
|
{
|
||||||
|
if( m_pIniMetrics->GetValue(sClassName,sValueName,ret) )
|
||||||
|
return true;
|
||||||
|
|
||||||
|
CString sFallback;
|
||||||
|
if( m_pIniMetrics->GetValue(sClassName,"Fallback",sFallback) )
|
||||||
|
return GetMetricRaw( sFallback, sValueName, ret );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
CString ThemeManager::GetMetricRaw( CString sClassName, CString sValueName )
|
CString ThemeManager::GetMetricRaw( CString sClassName, CString sValueName )
|
||||||
{
|
{
|
||||||
try_metric_again:
|
try_metric_again:
|
||||||
|
|
||||||
CString sCurMetricPath = GetMetricsIniPath(m_sCurThemeName);
|
CString ret;
|
||||||
CString sDefaultMetricPath = GetMetricsIniPath(BASE_THEME_NAME);
|
if( ThemeManager::GetMetricRaw( sClassName, sValueName, ret ) )
|
||||||
|
return ret;
|
||||||
|
|
||||||
CString sValue;
|
|
||||||
if( m_pIniMetrics->GetValue(sClassName,sValueName,sValue) )
|
|
||||||
return sValue;
|
|
||||||
|
|
||||||
CString sFallback;
|
|
||||||
if( m_pIniMetrics->GetValue(sClassName,"Fallback",sFallback) )
|
|
||||||
return GetMetricRaw( sFallback, sValueName );
|
|
||||||
|
|
||||||
CString sMessage = ssprintf( "The theme metric '%s-%s' is missing. Correct this and click Retry, or Cancel to break.",sClassName.c_str(),sValueName.c_str() );
|
CString sMessage = ssprintf( "The theme metric '%s-%s' is missing. Correct this and click Retry, or Cancel to break.",sClassName.c_str(),sValueName.c_str() );
|
||||||
switch( HOOKS->MessageBoxAbortRetryIgnore(sMessage) )
|
switch( HOOKS->MessageBoxAbortRetryIgnore(sMessage) )
|
||||||
@@ -517,6 +522,9 @@ try_metric_again:
|
|||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CString sCurMetricPath = GetMetricsIniPath(m_sCurThemeName);
|
||||||
|
CString sDefaultMetricPath = GetMetricsIniPath(BASE_THEME_NAME);
|
||||||
|
|
||||||
RageException::Throw( "Theme metric '%s : %s' could not be found in '%s' or '%s'.",
|
RageException::Throw( "Theme metric '%s : %s' could not be found in '%s' or '%s'.",
|
||||||
sClassName.c_str(),
|
sClassName.c_str(),
|
||||||
sValueName.c_str(),
|
sValueName.c_str(),
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ public:
|
|||||||
RageColor GetMetricC( CString sClassName, CString sValueName );
|
RageColor GetMetricC( CString sClassName, CString sValueName );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
bool GetMetricRaw( CString sClassName, CString sValueName, CString &ret );
|
||||||
CString GetPathToAndFallback( CString sThemeName, ElementCategory category, CString sClassName, CString sFile );
|
CString GetPathToAndFallback( CString sThemeName, ElementCategory category, CString sClassName, CString sFile );
|
||||||
CString GetPathToRaw( CString sThemeName, ElementCategory category, CString sClassName, CString sFile );
|
CString GetPathToRaw( CString sThemeName, ElementCategory category, CString sClassName, CString sFile );
|
||||||
static CString GetThemeDirFromName( const CString &sThemeName );
|
static CString GetThemeDirFromName( const CString &sThemeName );
|
||||||
|
|||||||
Reference in New Issue
Block a user