diff options
author | Torbjörn Andersson | 2015-08-30 00:41:48 +0200 |
---|---|---|
committer | Torbjörn Andersson | 2015-08-30 00:41:48 +0200 |
commit | b11530d87c1c2648dd68f9b9669aa24fe785264c (patch) | |
tree | 064dda0f6e51b0ccbdd252ecd5c16c8f38412b31 /engines/sherlock/music.cpp | |
parent | 0fa39d17ca151114203c67bb725d63b49bea2272 (diff) | |
download | scummvm-rg350-b11530d87c1c2648dd68f9b9669aa24fe785264c.tar.gz scummvm-rg350-b11530d87c1c2648dd68f9b9669aa24fe785264c.tar.bz2 scummvm-rg350-b11530d87c1c2648dd68f9b9669aa24fe785264c.zip |
SHERLOCK: Finish implementation of song / songs debugger commands
This adds support for Rose Tattoo and 3DO version of Serrated
Scalpel.
Diffstat (limited to 'engines/sherlock/music.cpp')
-rw-r--r-- | engines/sherlock/music.cpp | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/engines/sherlock/music.cpp b/engines/sherlock/music.cpp index 10796e47ea..7802bf5eeb 100644 --- a/engines/sherlock/music.cpp +++ b/engines/sherlock/music.cpp @@ -583,8 +583,31 @@ void Music::setMusicVolume(int volume) { void Music::getSongNames(Common::StringArray &songs) { songs.clear(); if (IS_SERRATED_SCALPEL) { - for (int i = 0; i < ARRAYSIZE(SONG_NAMES); i++) { - songs.push_back(SONG_NAMES[i]); + if (IS_3DO) { + Common::FSDirectory gameDirectory(ConfMan.get("path")); + Common::FSDirectory *musicDirectory = gameDirectory.getSubDirectory("music"); + Common::ArchiveMemberList files; + + musicDirectory->listMatchingMembers(files, "*_mw22.aifc"); + + for (Common::ArchiveMemberList::iterator i = files.begin(); i != files.end(); ++i) { + Common::String name = (*i)->getName(); + name.erase(name.size() - 10); + songs.push_back(name); + } + } else { + for (int i = 0; i < ARRAYSIZE(SONG_NAMES); i++) { + songs.push_back(SONG_NAMES[i]); + } + } + } else { + Common::StringArray fileList; + _vm->_res->getResourceNames("music.lib", fileList); + for (Common::StringArray::iterator i = fileList.begin(); i != fileList.end(); ++i) { + if ((*i).matchString("*.XMI", true)) { + (*i).erase((*i).size() - 4); + songs.push_back(*i); + } } } Common::sort(songs.begin(), songs.end()); |