NEW FEATURE: Check at startup time that all required theme elements are present.
This commit is contained in:
@@ -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];
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////
|
///////////////////////////////////////
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user