diff options
author | Tobia Tesan | 2016-03-30 17:16:41 +0200 |
---|---|---|
committer | Tobia Tesan | 2016-03-30 18:35:05 +0200 |
commit | 0cfd0589432798838b66023b01a5ca6ba4fad0ca (patch) | |
tree | 7c11c8a628629b33ba2f1bfa794051853c510adc /engines | |
parent | 2c8160245460cc9a7a864b58b4e962f7a2c77c4b (diff) | |
download | scummvm-rg350-0cfd0589432798838b66023b01a5ca6ba4fad0ca.tar.gz scummvm-rg350-0cfd0589432798838b66023b01a5ca6ba4fad0ca.tar.bz2 scummvm-rg350-0cfd0589432798838b66023b01a5ca6ba4fad0ca.zip |
WINTERMUTE: Correctly find .ogg version of .wav files
As it was, it didn't reliably work across platforms because it turned
some\\windows\\path.wav
into
some/system/pathogg
Note no "." before "ogg"; also since we use the new filename
to search for the file inside DCPs, which use Windows naming,
we don't want system-specific path format.
Fixes #7088
Diffstat (limited to 'engines')
-rw-r--r-- | engines/wintermute/base/sound/base_sound_manager.cpp | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/engines/wintermute/base/sound/base_sound_manager.cpp b/engines/wintermute/base/sound/base_sound_manager.cpp index f1e0c3b1f9..74c0086817 100644 --- a/engines/wintermute/base/sound/base_sound_manager.cpp +++ b/engines/wintermute/base/sound/base_sound_manager.cpp @@ -100,15 +100,14 @@ BaseSoundBuffer *BaseSoundMgr::addSound(const Common::String &filename, Audio::M BaseSoundBuffer *sound; Common::String useFilename = filename; + useFilename.toLowercase(); // try to switch WAV to OGG file (if available) - AnsiString ext = PathUtil::getExtension(filename); - if (StringUtil::compareNoCase(ext, "wav")) { - AnsiString path = PathUtil::getDirectoryName(filename); - AnsiString name = PathUtil::getFileNameWithoutExtension(filename); - - AnsiString newFile = PathUtil::combine(path, name + "ogg"); - if (BaseFileManager::getEngineInstance()->hasFile(newFile)) { - useFilename = newFile; + if (useFilename.hasSuffix(".wav")) { + Common::String oggFilename = useFilename; + oggFilename.erase(oggFilename.size() - 4); + oggFilename = oggFilename + ".ogg"; + if (BaseFileManager::getEngineInstance()->hasFile(oggFilename)) { + useFilename = oggFilename; } } |