attempt to load .sm files if loading .ssc files fails

This commit is contained in:
AJ Kelly
2011-03-16 16:33:27 -05:00
parent 9aa78d3c23
commit cbb32635d5
3 changed files with 30 additions and 6 deletions
+11
View File
@@ -7,6 +7,7 @@
#include "GameState.h"
#include "TimingData.h"
#include "NotesLoaderSSC.h"
#include "NotesLoaderSM.h"
#include "PrefsManager.h"
#include "RageDisplay.h"
#include "AnnouncerManager.h"
@@ -150,6 +151,15 @@ static void StartMusic( MusicToPlay &ToPlay )
if( pStepsCabinetLights )
pStepsCabinetLights->GetNoteData( ToPlay.m_LightsData );
}
else if( SMLoader::LoadFromSMFile(ToPlay.m_sTimingFile, song) )
{
ToPlay.HasTiming = true;
ToPlay.m_TimingData = song.m_Timing;
// get cabinet lights if any
Steps *pStepsCabinetLights = SongUtil::GetOneSteps( &song, StepsType_lights_cabinet );
if( pStepsCabinetLights )
pStepsCabinetLights->GetNoteData( ToPlay.m_LightsData );
}
}
if( ToPlay.HasTiming )
@@ -704,6 +714,7 @@ void GameSoundManager::PlayMusic( PlayMusicParams params, PlayMusicParams Fallba
else
{
/* If no timing data was provided, look for it in the same place as the music file. */
// todo: allow loading .ssc files as well -aj
ToPlay.m_sTimingFile = SetExtension( params.sFile, "sm" );
}
+9 -2
View File
@@ -223,8 +223,15 @@ bool Song::LoadFromSongDir( RString sDir )
if( bUseCache )
{
// LOG->Trace( "Loading '%s' from cache file '%s'.", m_sSongDir.c_str(), GetCacheFilePath().c_str() );
SSCLoader::LoadFromSSCFile( sCacheFilePath, *this, true );
SSCLoader::TidyUpData( *this, true );
bool bLoadedFromSSC = SSCLoader::LoadFromSSCFile( sCacheFilePath, *this, true );
if( bLoadedFromSSC )
SSCLoader::TidyUpData( *this, true );
else
{
// load from .sm
SMLoader::LoadFromSMFile( sCacheFilePath, *this, true );
SMLoader::TidyUpData( *this, true );
}
}
else
{
+10 -4
View File
@@ -21,6 +21,7 @@
#include "GameManager.h"
#include "NoteDataUtil.h"
#include "NotesLoaderSSC.h"
#include "NotesLoaderSM.h"
#include <algorithm>
@@ -229,12 +230,17 @@ void Steps::Decompress() const
if( !m_sFilename.empty() && m_sNoteDataCompressed.empty() )
{
/* We have data on disk and not in memory. Load it. */
// We have data on disk and not in memory. Load it.
Song s;
if( !SSCLoader::LoadFromSSCFile(m_sFilename, s, true) )
bool bLoadedFromSSC = SSCLoader::LoadFromSSCFile(m_sFilename, s, true);
if( !bLoadedFromSSC )
{
LOG->Warn( "Couldn't load \"%s\"", m_sFilename.c_str() );
return;
// try reading from .sm instead
if( !SMLoader::LoadFromSMFile(m_sFilename, s, true) )
{
LOG->Warn( "Couldn't load \"%s\"", m_sFilename.c_str() );
return;
}
}
/* Find the steps. */