fix ScreenManager stuff not being reloaded on theme change and F2

This commit is contained in:
Glenn Maynard
2004-09-16 22:45:55 +00:00
parent 3b74066091
commit 338ab88e4f
2 changed files with 38 additions and 14 deletions
+17 -1
View File
@@ -341,7 +341,14 @@ void ScreenSystemLayer::Update( float fDeltaTime )
ScreenManager::ScreenManager()
{
m_SystemLayer = new ScreenSystemLayer;
m_SystemLayer = NULL;
/* By the time this is constructed, THEME has already been set up and set to
* the current theme. Call ThemeChanged(), to handle the starting theme
* and set up m_SystemLayer. */
ASSERT( THEME );
ASSERT( !THEME->GetCurThemeName().empty() );
this->ThemeChanged();
m_ScreenBuffered = NULL;
@@ -362,14 +369,23 @@ ScreenManager::~ScreenManager()
delete m_SystemLayer;
}
/* This is called when we start up, and when the theme changes or is reloaded. */
void ScreenManager::ThemeChanged()
{
LOG->Trace( "ScreenManager::ThemeChanged" );
// reload common sounds
m_soundStart.Load( THEME->GetPathS("Common","start") );
m_soundCoin.Load( THEME->GetPathS("Common","coin") );
m_soundInvalid.Load( THEME->GetPathS("Common","invalid") );
m_soundScreenshot.Load( THEME->GetPathS("Common","screenshot") );
m_soundBack.Load( THEME->GetPathS("Common","back") );
// reload system layer
delete m_SystemLayer;
m_SystemLayer = NULL; // new ScreenSystemLayer may throw
m_SystemLayer = new ScreenSystemLayer;
m_SystemLayer->RefreshCreditsMessages();
}
void ScreenManager::EmptyDeleteQueue()