aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen/sound.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/xeen/sound.h')
-rw-r--r--engines/xeen/sound.h27
1 files changed, 22 insertions, 5 deletions
diff --git a/engines/xeen/sound.h b/engines/xeen/sound.h
index 5c123d7d89..172ef9eece 100644
--- a/engines/xeen/sound.h
+++ b/engines/xeen/sound.h
@@ -23,6 +23,8 @@
#ifndef XEEN_SOUND_H
#define XEEN_SOUND_H
+#include "audio/mixer.h"
+#include "audio/audiostream.h"
#include "common/scummsys.h"
#include "common/system.h"
#include "xeen/files.h"
@@ -32,12 +34,18 @@ namespace Xeen {
class SoundManager;
class VOC: public Common::File {
- friend class SoundManager;
private:
- SoundManager *_sound;
+ static SoundManager *_sound;
+ Audio::SoundHandle _soundHandle;
public:
- VOC() : _sound(nullptr) {}
+ VOC() {}
virtual ~VOC() { stop(); }
+ static void init(XeenEngine *vm);
+
+ /**
+ * Start playing the sound
+ */
+ void play();
/**
* Stop playing the sound
@@ -48,8 +56,9 @@ public:
class SoundManager {
private:
XeenEngine *_vm;
+ Audio::Mixer *_mixer;
public:
- SoundManager(XeenEngine *vm);
+ SoundManager(XeenEngine *vm, Audio::Mixer *mixer);
void proc2(Common::SeekableReadStream &f);
@@ -61,7 +70,15 @@ public:
void playSong(Common::SeekableReadStream &f) {}
- void playSound(VOC &voc) {}
+ /**
+ * Play a given sound
+ */
+ void playSound(Common::SeekableReadStream *s, Audio::SoundHandle &soundHandle);
+
+ /**
+ * Stop playing a sound
+ */
+ void stopSound(Audio::SoundHandle &soundHandle);
void playSample(const Common::SeekableReadStream *stream, int v2 = 1) {}