cache m_sSongFileName
This commit is contained in:
+40
-40
@@ -50,7 +50,7 @@
|
||||
|
||||
#define CACHE_DIR "Cache/"
|
||||
|
||||
const int FILE_CACHE_VERSION = 131; // increment this when Song or Steps changes to invalidate cache
|
||||
const int FILE_CACHE_VERSION = 132; // increment this when Song or Steps changes to invalidate cache
|
||||
|
||||
const float DEFAULT_MUSIC_SAMPLE_LENGTH = 12.f;
|
||||
|
||||
@@ -249,45 +249,6 @@ bool Song::LoadFromSongDir( CString sDir, bool bAllowCache )
|
||||
if( HasBanner() )
|
||||
BANNERCACHE->LoadBanner( GetBannerPath() );
|
||||
|
||||
{
|
||||
/* Generated filename; this doesn't always point to a loadable file,
|
||||
* but instead points to the file we should write changed files to,
|
||||
* and will always be an .SM.
|
||||
*
|
||||
* This is a little tricky. We can't always use the song title directly,
|
||||
* since it might contain characters we can't store in filenames. Two
|
||||
* easy options: we could manually filter out invalid characters, or we
|
||||
* could use the name of the directory, which is always a valid filename
|
||||
* and should always be the same as the song. The former might not catch
|
||||
* everything--filename restrictions are platform-specific; we might even
|
||||
* be on an 8.3 filesystem, so let's do the latter.
|
||||
*
|
||||
* We can't rely on searching for other data filenames; it works for DWIs,
|
||||
* but not KSFs and BMSs.
|
||||
*
|
||||
* So, let's do this (by priority):
|
||||
* 1. If there's an .SM file, use that filename. No reason to use anything
|
||||
* else; it's the filename in use.
|
||||
* 2. If there's a .DWI, use it with a changed extension.
|
||||
* 3. Otherwise, use the name of the directory, since it's definitely a valid
|
||||
* filename, and should always be the title of the song (unlike KSFs).
|
||||
*/
|
||||
m_sSongFileName = m_sSongDir;
|
||||
CStringArray asFileNames;
|
||||
GetDirListing( m_sSongDir+"*.sm", asFileNames );
|
||||
if( !asFileNames.empty() )
|
||||
m_sSongFileName += asFileNames[0];
|
||||
else {
|
||||
GetDirListing( m_sSongDir+"*.dwi", asFileNames );
|
||||
if( !asFileNames.empty() ) {
|
||||
m_sSongFileName += SetExtension( asFileNames[0], "sm" );
|
||||
} else {
|
||||
m_sSongFileName += sDirectoryParts[sDirectoryParts.size()-2]; // last item
|
||||
m_sSongFileName += ".sm";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Add AutoGen pointers. (These aren't cached.) */
|
||||
AddAutoGenNotes();
|
||||
|
||||
@@ -764,6 +725,45 @@ void Song::TidyUpData()
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
/* Generated filename; this doesn't always point to a loadable file,
|
||||
* but instead points to the file we should write changed files to,
|
||||
* and will always be an .SM.
|
||||
*
|
||||
* This is a little tricky. We can't always use the song title directly,
|
||||
* since it might contain characters we can't store in filenames. Two
|
||||
* easy options: we could manually filter out invalid characters, or we
|
||||
* could use the name of the directory, which is always a valid filename
|
||||
* and should always be the same as the song. The former might not catch
|
||||
* everything--filename restrictions are platform-specific; we might even
|
||||
* be on an 8.3 filesystem, so let's do the latter.
|
||||
*
|
||||
* We can't rely on searching for other data filenames; it works for DWIs,
|
||||
* but not KSFs and BMSs.
|
||||
*
|
||||
* So, let's do this (by priority):
|
||||
* 1. If there's an .SM file, use that filename. No reason to use anything
|
||||
* else; it's the filename in use.
|
||||
* 2. If there's a .DWI, use it with a changed extension.
|
||||
* 3. Otherwise, use the name of the directory, since it's definitely a valid
|
||||
* filename, and should always be the title of the song (unlike KSFs).
|
||||
*/
|
||||
m_sSongFileName = m_sSongDir;
|
||||
CStringArray asFileNames;
|
||||
GetDirListing( m_sSongDir+"*.sm", asFileNames );
|
||||
if( !asFileNames.empty() )
|
||||
m_sSongFileName += asFileNames[0];
|
||||
else {
|
||||
GetDirListing( m_sSongDir+"*.dwi", asFileNames );
|
||||
if( !asFileNames.empty() ) {
|
||||
m_sSongFileName += SetExtension( asFileNames[0], "sm" );
|
||||
} else {
|
||||
m_sSongFileName += Basename(m_sSongDir);
|
||||
m_sSongFileName += ".sm";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Compress all Steps
|
||||
for( i=0; i<m_apNotes.size(); i++ )
|
||||
|
||||
Reference in New Issue
Block a user