aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/sound_intern.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/kyra/sound_intern.h')
-rw-r--r--engines/kyra/sound_intern.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/engines/kyra/sound_intern.h b/engines/kyra/sound_intern.h
index 3559133cb1..dd043790a2 100644
--- a/engines/kyra/sound_intern.h
+++ b/engines/kyra/sound_intern.h
@@ -349,6 +349,59 @@ protected:
int _tableSfxGame_Size;
};
+class SoundTowns_Darkmoon : public Sound, public TownsAudioInterfacePluginDriver {
+public:
+ SoundTowns_Darkmoon(KyraEngine_v1 *vm, Audio::Mixer *mixer);
+ virtual ~SoundTowns_Darkmoon();
+
+ virtual kType getMusicType() const { return kTowns; }
+
+ virtual bool init();
+
+ void timerCallback(int timerId);
+
+ virtual void initAudioResourceInfo(int set, void *info);
+ virtual void selectAudioResourceSet(int set);
+ virtual bool hasSoundFile(uint file) const;
+ virtual void loadSoundFile(uint file) {}
+ virtual void loadSoundFile(Common::String name);
+
+ virtual void playTrack(uint8 track);
+ virtual void haltTrack();
+ virtual bool isPlaying() const;
+
+ virtual void playSoundEffect(uint8 track, uint8 volume = 0xFF);
+ virtual void stopAllSoundEffects();
+
+ virtual void beginFadeOut();
+
+ virtual void updateVolumeSettings();
+
+ virtual int checkTrigger();
+
+ virtual void resetTrigger();
+
+private:
+ struct SoundTableEntry {
+ int8 type;
+ int32 para1;
+ int16 para2;
+ } _soundTable[120];
+
+ uint8 _lastSfxChan;
+ uint8 _lastEnvChan;
+ uint8 *_pcmData;
+ uint32 _pcmDataSize;
+ uint8 _pcmVol;
+
+ int _timer;
+ int _timerSwitch;
+
+ SoundResourceInfo_TownsEoB *_pcmResource[3];
+
+ TownsAudioInterface *_intf;
+};
+
} // End of namespace Kyra
#endif