From 278e7cd57db19bffb4f4ef7300d5aef2626f31f9 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Tue, 14 Oct 2003 17:05:10 +0000 Subject: [PATCH] Add "Import" feature to BGAnimations --- stepmania/src/BGAnimation.cpp | 65 +++++++++++++++++++++++++++-------- 1 file changed, 50 insertions(+), 15 deletions(-) diff --git a/stepmania/src/BGAnimation.cpp b/stepmania/src/BGAnimation.cpp index 633cc954e8..2fcb628e13 100644 --- a/stepmania/src/BGAnimation.cpp +++ b/stepmania/src/BGAnimation.cpp @@ -19,6 +19,7 @@ #include "RageUtil.h" #include "song.h" #include "ThemeManager.h" +#include "RageFile.h" const int MAX_LAYERS = 100; @@ -48,11 +49,56 @@ void BGAnimation::LoadFromStaticGraphic( CString sPath ) m_Layers.push_back( pLayer ); } +void AddLayersFromAniDir( CString sAniDir, vector &layersAddTo ) +{ + if( sAniDir.empty() ) + return; + + if( sAniDir.Right(1) != SLASH ) + sAniDir += SLASH; + + RAGE_ASSERT_M( IsADirectory(sAniDir), sAniDir + " isn't a directory" ); + + CString sPathToIni = sAniDir + "BGAnimation.ini"; + + IniFile ini(sPathToIni); + ini.ReadFile(); + + int i; + for( i=0; iLoadFromIni( sAniDir, sLayer ); + layersAddTo.push_back( pLayer ); + } + } + +} + void BGAnimation::LoadFromAniDir( CString sAniDir ) { Unload(); - if( !sAniDir.empty() && sAniDir.Right(1) != SLASH ) + if( sAniDir.empty() ) + return; + + if( sAniDir.Right(1) != SLASH ) sAniDir += SLASH; RAGE_ASSERT_M( IsADirectory(sAniDir), sAniDir + " isn't a directory" ); @@ -62,25 +108,14 @@ void BGAnimation::LoadFromAniDir( CString sAniDir ) if( DoesFileExist(sPathToIni) ) { // This is a new style BGAnimation (using .ini) + AddLayersFromAniDir( sAniDir, m_Layers ); // TODO: Check for circular load + IniFile ini(sPathToIni); ini.ReadFile(); - - int i; - for( i=0; iLoadFromIni( sAniDir, sLayer ); - m_Layers.push_back( pLayer ); - } - if( !ini.GetValue( "BGAnimation", "LengthSeconds", m_fLengthSeconds ) ) { m_fLengthSeconds = 0; - for( i=0; (unsigned)i < m_Layers.size(); i++ ) + for( int i=0; (unsigned)i < m_Layers.size(); i++ ) m_fLengthSeconds = max(m_fLengthSeconds, m_Layers[i]->GetMaxTweenTimeLeft()); } }