diff options
author | athrxx | 2012-11-11 03:01:39 +0100 |
---|---|---|
committer | athrxx | 2012-11-11 19:14:31 +0100 |
commit | 93e69aa4da0558b05fc235684355ed38eed9863d (patch) | |
tree | b809c595a60ce23e2dcb27ae7d4a9f9fa68d7530 /engines/kyra/sound_midi.cpp | |
parent | 1bb8f22567e71796bba4f98a6ff4353ec84df197 (diff) | |
download | scummvm-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.cpp | 28 |
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) { |