aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/sound_midi.cpp
diff options
context:
space:
mode:
authorathrxx2012-11-11 03:01:39 +0100
committerathrxx2012-11-11 19:14:31 +0100
commit93e69aa4da0558b05fc235684355ed38eed9863d (patch)
treeb809c595a60ce23e2dcb27ae7d4a9f9fa68d7530 /engines/kyra/sound_midi.cpp
parent1bb8f22567e71796bba4f98a6ff4353ec84df197 (diff)
downloadscummvm-rg350-93e69aa4da0558b05fc235684355ed38eed9863d.tar.gz
scummvm-rg350-93e69aa4da0558b05fc235684355ed38eed9863d.tar.bz2
scummvm-rg350-93e69aa4da0558b05fc235684355ed38eed9863d.zip
KYRA: clean up audio resource handling
(this was really ugly, now it's somewhat less ugly)
Diffstat (limited to 'engines/kyra/sound_midi.cpp')
-rw-r--r--engines/kyra/sound_midi.cpp28
1 files changed, 27 insertions, 1 deletions
diff --git a/engines/kyra/sound_midi.cpp b/engines/kyra/sound_midi.cpp
index 70cc304192..fe40cb163a 100644
--- a/engines/kyra/sound_midi.cpp
+++ b/engines/kyra/sound_midi.cpp
@@ -442,6 +442,8 @@ SoundMidiPC::SoundMidiPC(KyraEngine_v1 *vm, Audio::Mixer *mixer, MidiDriver *dri
_output = 0;
_musicFile = _sfxFile = 0;
+ _currentResourceSet = 0;
+ memset(&_resInfo, 0, sizeof(_resInfo));
_music = MidiParser::createParser_XMIDI();
assert(_music);
@@ -495,6 +497,9 @@ SoundMidiPC::~SoundMidiPC() {
delete[] _sfxFile;
delete[] _musicFile;
+
+ for (int i = 0; i < 3; i++)
+ initAudioResourceInfo(i, 0);
}
bool SoundMidiPC::init() {
@@ -586,8 +591,29 @@ void SoundMidiPC::updateVolumeSettings() {
_output->setSourceVolume(i, _sfxVolume, false);
}
+void SoundMidiPC::initAudioResourceInfo(int set, void *info) {
+ if (set >= kMusicIntro && set <= kMusicFinale) {
+ delete _resInfo[set];
+ _resInfo[set] = info ? new SoundResourceInfo_PC(*(SoundResourceInfo_PC*)info) : 0;
+ }
+}
+
+void SoundMidiPC::selectAudioResourceSet(int set) {
+ if (set >= kMusicIntro && set <= kMusicFinale) {
+ if (_resInfo[set])
+ _currentResourceSet = set;
+ }
+}
+
+bool SoundMidiPC::hasSoundFile(uint file) {
+ if (file < res()->fileListSize)
+ return (res()->fileList[file] != 0);
+ return false;
+}
+
void SoundMidiPC::loadSoundFile(uint file) {
- loadSoundFile(fileListEntry(file));
+ if (file < res()->fileListSize)
+ loadSoundFile(res()->fileList[file]);
}
void SoundMidiPC::loadSoundFile(Common::String file) {