aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/resource.h
diff options
context:
space:
mode:
authorFilippos Karapetis2009-05-25 10:30:19 +0000
committerFilippos Karapetis2009-05-25 10:30:19 +0000
commitd59796fb544fea69d1b2f27f89d6eb30bf5d0780 (patch)
tree558e122a71e404cd56aa7742c57b16f108a28f46 /engines/sci/resource.h
parent5ef58bdfbe443c19d2f185d924b5058f25cab962 (diff)
downloadscummvm-rg350-d59796fb544fea69d1b2f27f89d6eb30bf5d0780.tar.gz
scummvm-rg350-d59796fb544fea69d1b2f27f89d6eb30bf5d0780.tar.bz2
scummvm-rg350-d59796fb544fea69d1b2f27f89d6eb30bf5d0780.zip
Objectified the AudioResource code (used for speech and digitized music in CD talkie games)
svn-id: r40880
Diffstat (limited to 'engines/sci/resource.h')
-rw-r--r--engines/sci/resource.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/engines/sci/resource.h b/engines/sci/resource.h
index 8899cbdc6b..f3593ded32 100644
--- a/engines/sci/resource.h
+++ b/engines/sci/resource.h
@@ -30,6 +30,9 @@
#include "common/file.h"
#include "common/archive.h"
+#include "sound/audiostream.h"
+#include "sound/mixer.h" // for SoundHandle
+
#include "sci/engine/vm.h" // for Object
#include "sci/decompressor.h"
@@ -299,6 +302,32 @@ protected:
//bool _syncStarted; // not used
};
+class AudioResource {
+public:
+ AudioResource();
+ ~AudioResource();
+
+ void setAudioRate(uint16 audioRate) { _audioRate = audioRate; }
+ void setAudioLang(int16 lang);
+
+ Audio::SoundHandle* getAudioHandle() { return &_audioHandle; }
+ int getAudioPosition();
+ Audio::AudioStream* getAudioStream(uint16 audioNumber, int* sampleLen);
+ Audio::AudioStream* getAudioStream(Resource* audioRes, int* sampleLen);
+
+ void stop() { g_system->getMixer()->stopHandle(_audioHandle); }
+ void pause() { g_system->getMixer()->pauseHandle(_audioHandle, true); }
+ void resume() { g_system->getMixer()->pauseHandle(_audioHandle, false); }
+
+private:
+ Audio::SoundHandle _audioHandle;
+ uint16 _audioRate;
+ int16 _lang;
+ byte *_audioMap;
+
+ bool findAudEntry(uint16 audioNumber, byte& volume, uint32& offset, uint32& size);
+};
+
} // End of namespace Sci
#endif // SCI_SCICORE_RESOURCE_H