aboutsummaryrefslogtreecommitdiff
path: root/engines/neverhood/sound.cpp
diff options
context:
space:
mode:
authorjohndoe1232012-11-16 21:26:15 +0000
committerWillem Jan Palenstijn2013-05-08 20:47:38 +0200
commitcc015e3d24d15dc0c3532063927fd40e2329f43e (patch)
tree0827cef3a7e3bf2d4322e7e55e103308b5b11bb8 /engines/neverhood/sound.cpp
parent1b9807b312172b0cb31b2eb83b8afc5fd23f97f5 (diff)
downloadscummvm-rg350-cc015e3d24d15dc0c3532063927fd40e2329f43e.tar.gz
scummvm-rg350-cc015e3d24d15dc0c3532063927fd40e2329f43e.tar.bz2
scummvm-rg350-cc015e3d24d15dc0c3532063927fd40e2329f43e.zip
NEVERHOOD: Simplify resource loading
- Renamne and clean up
Diffstat (limited to 'engines/neverhood/sound.cpp')
-rw-r--r--engines/neverhood/sound.cpp31
1 files changed, 11 insertions, 20 deletions
diff --git a/engines/neverhood/sound.cpp b/engines/neverhood/sound.cpp
index 52783cc1d3..f0961f42e9 100644
--- a/engines/neverhood/sound.cpp
+++ b/engines/neverhood/sound.cpp
@@ -524,7 +524,7 @@ AudioResourceMan::~AudioResourceMan() {
int16 AudioResourceMan::addSound(uint32 fileHash) {
AudioResourceManSoundItem *soundItem = new AudioResourceManSoundItem();
- soundItem->_resourceHandle = _vm->_res->useResource(fileHash);
+ _vm->_res->queryResource(fileHash, soundItem->_resourceHandle);
soundItem->_fileHash = fileHash;
soundItem->_data = NULL;
soundItem->_isLoaded = false;
@@ -543,16 +543,7 @@ int16 AudioResourceMan::addSound(uint32 fileHash) {
void AudioResourceMan::removeSound(int16 soundIndex) {
AudioResourceManSoundItem *soundItem = _soundItems[soundIndex];
- if (_vm->_mixer->isSoundHandleActive(soundItem->_soundHandle))
- _vm->_mixer->stopHandle(soundItem->_soundHandle);
- if (soundItem->_data) {
- _vm->_res->unloadResource(soundItem->_resourceHandle);
- soundItem->_data = NULL;
- }
- if (soundItem->_resourceHandle != 1) {
- _vm->_res->unuseResource(soundItem->_resourceHandle);
- soundItem->_resourceHandle = -1;
- }
+ unloadSound(soundIndex);
delete soundItem;
_soundItems[soundIndex] = NULL;
}
@@ -561,7 +552,8 @@ void AudioResourceMan::loadSound(int16 soundIndex) {
AudioResourceManSoundItem *soundItem = _soundItems[soundIndex];
if (!soundItem->_data) {
// TODO Check if it's a sound resource
- soundItem->_data = _vm->_res->loadResource(soundItem->_resourceHandle);
+ _vm->_res->loadResource(soundItem->_resourceHandle);
+ soundItem->_data = soundItem->_resourceHandle.data();
}
}
@@ -569,10 +561,8 @@ void AudioResourceMan::unloadSound(int16 soundIndex) {
AudioResourceManSoundItem *soundItem = _soundItems[soundIndex];
if (_vm->_mixer->isSoundHandleActive(soundItem->_soundHandle))
_vm->_mixer->stopHandle(soundItem->_soundHandle);
- if (soundItem->_data) {
- _vm->_res->unloadResource(soundItem->_resourceHandle);
- soundItem->_data = NULL;
- }
+ _vm->_res->unloadResource(soundItem->_resourceHandle);
+ soundItem->_data = NULL;
}
void AudioResourceMan::setSoundVolume(int16 soundIndex, int16 volume) {
@@ -597,9 +587,8 @@ void AudioResourceMan::playSound(int16 soundIndex, bool looping) {
if (!soundItem->_data)
return;
- uint32 soundSize = _vm->_res->getResourceSize(soundItem->_resourceHandle);
- Common::MemoryReadStream *stream = new Common::MemoryReadStream(soundItem->_data, soundSize, DisposeAfterUse::NO);
- byte *shiftValue = _vm->_res->getResourceExtData(soundItem->_resourceHandle);
+ Common::MemoryReadStream *stream = new Common::MemoryReadStream(soundItem->_data, soundItem->_resourceHandle.size(), DisposeAfterUse::NO);
+ const byte *shiftValue = soundItem->_resourceHandle.extData();
NeverhoodAudioStream *audioStream = new NeverhoodAudioStream(22050, *shiftValue, false, DisposeAfterUse::YES, stream);
_vm->_mixer->playStream(Audio::Mixer::kSFXSoundType, &soundItem->_soundHandle,
@@ -719,8 +708,10 @@ void AudioResourceMan::updateMusicItem(int16 musicIndex) {
AudioResourceManMusicItem *musicItem = _musicItems[musicIndex];
if (musicItem->_start && !_vm->_mixer->isSoundHandleActive(musicItem->_soundHandle)) {
+ ResourceHandle resourceHandle;
+ _vm->_res->queryResource(musicItem->_fileHash, resourceHandle);
Common::SeekableReadStream *stream = _vm->_res->createStream(musicItem->_fileHash);
- byte *shiftValue = _vm->_res->getResourceExtDataByHash(musicItem->_fileHash);
+ const byte *shiftValue = resourceHandle.extData();
NeverhoodAudioStream *audioStream = new NeverhoodAudioStream(22050, *shiftValue, true, DisposeAfterUse::YES, stream);
_vm->_mixer->playStream(Audio::Mixer::kMusicSoundType, &musicItem->_soundHandle,
audioStream, -1, VOLUME(musicItem->_isFadingIn ? musicItem->_fadeVolume : musicItem->_volume),