aboutsummaryrefslogtreecommitdiff
path: root/engines/parallaction/sound.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/parallaction/sound.h')
-rw-r--r--engines/parallaction/sound.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/engines/parallaction/sound.h b/engines/parallaction/sound.h
index 6890c1d2b5..3a66aea049 100644
--- a/engines/parallaction/sound.h
+++ b/engines/parallaction/sound.h
@@ -187,6 +187,11 @@ protected:
Common::String _musicFile;
+ bool _sfxLooping;
+ int _sfxVolume;
+ int _sfxRate;
+ uint _sfxChannel;
+
virtual void playMusic() = 0;
virtual void stopMusic() = 0;
virtual void pause(bool p) = 0;
@@ -194,6 +199,9 @@ protected:
public:
SoundMan_br(Parallaction_br *vm);
+ virtual void playSfx(const char *filename, uint channel, bool looping, int volume = -1) { }
+ virtual void stopSfx(uint channel) { }
+
virtual void execute(int command, const char *parm);
void setMusicFile(const char *parm);
};
@@ -209,6 +217,9 @@ public:
void playMusic();
void stopMusic();
void pause(bool p);
+
+ void playSfx(const char *filename, uint channel, bool looping, int volume);
+ void stopSfx(uint channel);
};
class AmigaSoundMan_br : public SoundMan_br {
@@ -216,6 +227,17 @@ class AmigaSoundMan_br : public SoundMan_br {
Audio::AudioStream *_musicStream;
Audio::SoundHandle _musicHandle;
+ struct Channel {
+ Audio::Voice8Header header;
+ int8 *data;
+ uint32 dataSize;
+ bool dispose;
+ Audio::SoundHandle handle;
+ uint32 flags;
+ } _channels[NUM_AMIGA_CHANNELS];
+
+ void loadChannelData(const char *filename, Channel *ch);
+
public:
AmigaSoundMan_br(Parallaction_br *vm);
~AmigaSoundMan_br();
@@ -223,6 +245,9 @@ public:
void playMusic();
void stopMusic();
void pause(bool p);
+
+ void playSfx(const char *filename, uint channel, bool looping, int volume);
+ void stopSfx(uint channel);
};
} // namespace Parallaction