NEW FEATURE: Check at startup time that all required theme elements are present.

This commit is contained in:
Chris Danford
2002-01-18 19:54:38 +00:00
parent 010855707f
commit e3be3fd93d
2 changed files with 43 additions and 35 deletions
+14 -20
View File
@@ -18,8 +18,10 @@ ThemeManager* THEME = NULL; // global object accessable from anywhere in the pro
CString ThemeManager::GetPathTo( ThemeElement te ) CString ThemeManager::GetPathTo( ThemeElement te, CString sThemeName )
{ {
CString sThemeDir = ThemeNameToThemeDir( sThemeName );
CString sAssetPath; // fill this in below CString sAssetPath; // fill this in below
switch( te ) switch( te )
@@ -69,14 +71,6 @@ CString ThemeManager::GetPathTo( ThemeElement te )
case GRAPHIC_MUSIC_SORT_ICONS: sAssetPath = "Graphics\\music sort icons 1x5"; break; case GRAPHIC_MUSIC_SORT_ICONS: sAssetPath = "Graphics\\music sort icons 1x5"; break;
case GRAPHIC_MUSIC_STATUS_ICONS: sAssetPath = "Graphics\\music status icons 1x4"; break; case GRAPHIC_MUSIC_STATUS_ICONS: sAssetPath = "Graphics\\music status icons 1x4"; break;
case SOUND_TITLE: sAssetPath = "Sounds\\title"; break;
case SOUND_BACK: sAssetPath = "Sounds\\back"; break;
case SOUND_CROWD_CHEER: sAssetPath = "Sounds\\crowd cheer"; break;
case SOUND_CHANGE: sAssetPath = "Sounds\\change"; break;
case SOUND_INVALID: sAssetPath = "Sounds\\invalid"; break;
case SOUND_GOOD: sAssetPath = "Sounds\\good"; break;
case SOUND_BAD: sAssetPath = "Sounds\\bad"; break;
case SOUND_CLEARED: sAssetPath = "Sounds\\cleared"; break;
case SOUND_FAILED: sAssetPath = "Sounds\\failed"; break; case SOUND_FAILED: sAssetPath = "Sounds\\failed"; break;
case SOUND_ASSIST: sAssetPath = "Sounds\\Assist"; break; case SOUND_ASSIST: sAssetPath = "Sounds\\Assist"; break;
case SOUND_SELECT: sAssetPath = "Sounds\\select"; break; case SOUND_SELECT: sAssetPath = "Sounds\\select"; break;
@@ -135,26 +129,26 @@ CString ThemeManager::GetPathTo( ThemeElement te )
/////////////////////////////////////// ///////////////////////////////////////
if( sAssetDir == "Graphics\\" ) if( sAssetDir == "Graphics\\" )
{ {
GetDirListing( m_sCurThemeDir + sAssetDir + sAssetFileName + ".sprite", arrayPossibleElementFileNames ); GetDirListing( sThemeDir + sAssetDir + sAssetFileName + ".sprite", arrayPossibleElementFileNames );
GetDirListing( m_sCurThemeDir + sAssetDir + sAssetFileName + ".png", arrayPossibleElementFileNames ); GetDirListing( sThemeDir + sAssetDir + sAssetFileName + ".png", arrayPossibleElementFileNames );
GetDirListing( m_sCurThemeDir + sAssetDir + sAssetFileName + ".jpg", arrayPossibleElementFileNames ); GetDirListing( sThemeDir + sAssetDir + sAssetFileName + ".jpg", arrayPossibleElementFileNames );
GetDirListing( m_sCurThemeDir + sAssetDir + sAssetFileName + ".bmp", arrayPossibleElementFileNames ); GetDirListing( sThemeDir + sAssetDir + sAssetFileName + ".bmp", arrayPossibleElementFileNames );
} }
else if( sAssetDir == "Sounds\\" ) else if( sAssetDir == "Sounds\\" )
{ {
GetDirListing( m_sCurThemeDir + sAssetDir + sAssetFileName + ".set", arrayPossibleElementFileNames ); GetDirListing( sThemeDir + sAssetDir + sAssetFileName + ".set", arrayPossibleElementFileNames );
GetDirListing( m_sCurThemeDir + sAssetDir + sAssetFileName + ".mp3", arrayPossibleElementFileNames ); GetDirListing( sThemeDir + sAssetDir + sAssetFileName + ".mp3", arrayPossibleElementFileNames );
GetDirListing( m_sCurThemeDir + sAssetDir + sAssetFileName + ".wav", arrayPossibleElementFileNames ); GetDirListing( sThemeDir + sAssetDir + sAssetFileName + ".wav", arrayPossibleElementFileNames );
} }
else if( sAssetDir == "Fonts\\" ) else if( sAssetDir == "Fonts\\" )
{ {
GetDirListing( m_sCurThemeDir + sAssetDir + sAssetFileName + ".font", arrayPossibleElementFileNames ); GetDirListing( sThemeDir + sAssetDir + sAssetFileName + ".font", arrayPossibleElementFileNames );
} }
else if( sAssetDir == "Announcer\\" ) else if( sAssetDir == "Announcer\\" )
{ {
// return the directory, and let the SoundSet discover all the samples in that directory // return the directory, and let the SoundSet discover all the samples in that directory
if( DoesFileExist( m_sCurThemeDir + sAssetDir + sAssetFileName ) ) if( DoesFileExist( sThemeDir + sAssetDir + sAssetFileName ) )
return m_sCurThemeDir + sAssetDir + sAssetFileName; return sThemeDir + sAssetDir + sAssetFileName;
} }
else else
{ {
@@ -162,7 +156,7 @@ CString ThemeManager::GetPathTo( ThemeElement te )
} }
if( arrayPossibleElementFileNames.GetSize() > 0 ) if( arrayPossibleElementFileNames.GetSize() > 0 )
return m_sCurThemeDir + sAssetDir + arrayPossibleElementFileNames[0]; return sThemeDir + sAssetDir + arrayPossibleElementFileNames[0];
/////////////////////////////////////// ///////////////////////////////////////
+28 -14
View File
@@ -61,14 +61,6 @@ enum ThemeElement {
GRAPHIC_MUSIC_SORT_ICONS, GRAPHIC_MUSIC_SORT_ICONS,
GRAPHIC_MUSIC_STATUS_ICONS, GRAPHIC_MUSIC_STATUS_ICONS,
SOUND_TITLE,
SOUND_BACK,
SOUND_CROWD_CHEER,
SOUND_CHANGE,
SOUND_INVALID,
SOUND_GOOD,
SOUND_BAD,
SOUND_CLEARED,
SOUND_FAILED, SOUND_FAILED,
SOUND_ASSIST, SOUND_ASSIST,
SOUND_SELECT, SOUND_SELECT,
@@ -127,6 +119,11 @@ class ThemeManager
public: public:
ThemeManager() ThemeManager()
{ {
CStringArray arrayThemeNames;
GetThemeNames( arrayThemeNames );
for( int i=0; i<arrayThemeNames.GetSize(); i++ )
CheckThemeIsComplete( arrayThemeNames[i] );
SetTheme( DEFAULT_THEME_NAME ); SetTheme( DEFAULT_THEME_NAME );
}; };
@@ -139,26 +136,43 @@ public:
{ {
sThemeName.MakeLower(); sThemeName.MakeLower();
m_sCurThemeName = sThemeName; m_sCurThemeName = sThemeName;
m_sCurThemeDir = ssprintf( "Themes\\%s\\", m_sCurThemeName ); CString sThemeDir = ThemeNameToThemeDir( m_sCurThemeName );
if( !DoesFileExist( m_sCurThemeDir ) ) if( !DoesFileExist( sThemeDir ) )
{ {
RageError( ssprintf( "The theme in diretory '%' could not be loaded.", m_sCurThemeDir ) ); RageError( ssprintf( "The theme in diretory '%' could not be loaded.", sThemeDir ) );
return false;
}
return true;
};
bool CheckThemeIsComplete( CString sThemeName ) // return false if theme doesn't exist
{
for( int i=0; i<NUM_THEME_ELEMENTS; i++ )
{
if( GetPathTo( (ThemeElement)i, sThemeName ) == "" )
return false; return false;
} }
return true; return true;
}; };
CString GetPathTo( ThemeElement te ); CString GetPathTo( ThemeElement te )
{
return GetPathTo( te, m_sCurThemeName );
};
CString GetPathTo( ThemeElement te, CString sThemeName );
private: private:
CString m_sCurThemeName; CString ThemeNameToThemeDir( CString sThemeName )
CString m_sCurThemeDir; // with trailing backslash {
return ssprintf( "Themes\\%s\\", sThemeName );
}
CString m_sCurThemeName;
}; };