diff options
Diffstat (limited to 'engines/parallaction/sound.h')
-rw-r--r-- | engines/parallaction/sound.h | 25 |
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 |