push bga searching into a function; fix

This commit is contained in:
Glenn Maynard
2002-10-30 19:55:19 +00:00
parent 5ca988ede1
commit d754ddc550
2 changed files with 57 additions and 45 deletions
+56 -45
View File
@@ -93,6 +93,61 @@ void Background::LoadFromAniDir( CString sAniDir )
m_BGAnimations.Add( pTempBGA );
}
BGAnimation *Background::GetBGA(const Song *pSong, const BackgroundChange &aniseg, const CString &bgpath) const
{
BGAnimation *pTempBGA;
// Using aniseg.m_sBGName, search for the corresponding animation.
// Look in this order: movies in song dir, BGAnims in song dir
// movies in RandomMovies dir, BGAnims in BGAnimsDir.
CStringArray asFiles;
// Look for BG movies in the song dir
GetDirListing( pSong->m_sSongDir+aniseg.m_sBGName, asFiles, false, true );
if( asFiles.GetSize() > 0 )
{
pTempBGA = new BGAnimation;
pTempBGA->LoadFromMovie( asFiles[0], true, true );
return pTempBGA;
}
// Look for BGAnims in the song dir
GetDirListing( pSong->m_sSongDir+aniseg.m_sBGName, asFiles, true, true );
if( asFiles.GetSize() > 0 )
{
pTempBGA = new BGAnimation;
pTempBGA->LoadFromAniDir( asFiles[0], bgpath );
return pTempBGA;
}
// Look for movies in the RandomMovies dir
GetDirListing( RANDOMMOVIES_DIR+aniseg.m_sBGName, asFiles, false, true );
if( asFiles.GetSize() > 0 )
{
pTempBGA = new BGAnimation;
pTempBGA->LoadFromMovie( asFiles[0], true, false );
return pTempBGA;
}
// Look for BGAnims in the BGAnims dir
GetDirListing( BG_ANIMS_DIR+aniseg.m_sBGName, asFiles, true, true );
if( asFiles.GetSize() > 0 )
{
pTempBGA = new BGAnimation;
pTempBGA->LoadFromAniDir( asFiles[0], bgpath );
return pTempBGA;
}
// Look for BGAnims in the BGAnims dir
GetDirListing( VISUALIZATIONS_DIR+aniseg.m_sBGName, asFiles, false, true );
if( asFiles.GetSize() > 0 )
{
pTempBGA = new BGAnimation;
pTempBGA->LoadFromVisualization( asFiles[0], bgpath );
return pTempBGA;
}
return NULL;
}
void Background::LoadFromSong( Song* pSong )
{
Unload();
@@ -139,51 +194,7 @@ void Background::LoadFromSong( Song* pSong )
const BackgroundChange& aniseg = pSong->m_BackgroundChanges[i];
bool bFade = i==0;
BGAnimation *pTempBGA = NULL;
// Using aniseg.m_sBGName, search for the corresponding animation.
// Look in this order: movies in song dir, BGAnims in song dir
// movies in RandomMovies dir, BGAnims in BGAnimsDir.
CStringArray asFiles;
// Look for BG movies in the song dir
GetDirListing( pSong->m_sSongDir+aniseg.m_sBGName, asFiles, false, true );
if( asFiles.GetSize() > 0 )
{
pTempBGA = new BGAnimation;
pTempBGA->LoadFromMovie( asFiles[0], true, true );
}
// Look for BGAnims in the song dir
if( asFiles.empty() ) GetDirListing( pSong->m_sSongDir+aniseg.m_sBGName, asFiles, true, true );
if( asFiles.GetSize() > 0 )
{
pTempBGA = new BGAnimation;
pTempBGA->LoadFromAniDir( asFiles[0], sSongBackgroundPath );
}
// Look for movies in the RandomMovies dir
if( asFiles.empty() ) GetDirListing( RANDOMMOVIES_DIR+aniseg.m_sBGName, asFiles, false, true );
if( asFiles.GetSize() > 0 )
{
pTempBGA = new BGAnimation;
pTempBGA->LoadFromMovie( asFiles[0], true, false );
}
// Look for BGAnims in the BGAnims dir
if( asFiles.empty() ) GetDirListing( BG_ANIMS_DIR+aniseg.m_sBGName, asFiles, true, true );
if( asFiles.GetSize() > 0 )
{
pTempBGA = new BGAnimation;
pTempBGA->LoadFromAniDir( asFiles[0], sSongBackgroundPath );
}
// Look for BGAnims in the BGAnims dir
if( asFiles.empty() ) GetDirListing( VISUALIZATIONS_DIR+aniseg.m_sBGName, asFiles, false, true );
if( asFiles.GetSize() > 0 )
{
pTempBGA = new BGAnimation;
pTempBGA->LoadFromVisualization( asFiles[0], sSongBackgroundPath );
}
BGAnimation *pTempBGA = GetBGA(pSong, aniseg, sSongBackgroundPath);
if(pTempBGA != NULL)
{