aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/audio_player.h
diff options
context:
space:
mode:
authorPeter Kohaut2017-08-24 23:43:47 +0200
committerPeter Kohaut2017-08-24 23:43:47 +0200
commit0da18320af79b6ca8a47248442d106674b5ab860 (patch)
tree504d769edcf92fc4cbceddfbcdda038ecc040ced /engines/bladerunner/audio_player.h
parentc9b4089ccb0b60389446e07f7f9421e3a7180129 (diff)
downloadscummvm-rg350-0da18320af79b6ca8a47248442d106674b5ab860.tar.gz
scummvm-rg350-0da18320af79b6ca8a47248442d106674b5ab860.tar.bz2
scummvm-rg350-0da18320af79b6ca8a47248442d106674b5ab860.zip
BLADERUNNER: Added audio mixer & various fixes
Audio mixer is supporting fading and pan animation Added support for skipping speech by pressing Return Added proper support for ambient sounds Added more code to the dialogue menu Added tooltips to the Spinner Fixed calculation of volume and pan of walk steps Code cleanup & formatting
Diffstat (limited to 'engines/bladerunner/audio_player.h')
-rw-r--r--engines/bladerunner/audio_player.h38
1 files changed, 22 insertions, 16 deletions
diff --git a/engines/bladerunner/audio_player.h b/engines/bladerunner/audio_player.h
index 4260a7b32b..c573c64840 100644
--- a/engines/bladerunner/audio_player.h
+++ b/engines/bladerunner/audio_player.h
@@ -20,22 +20,18 @@
*
*/
-#ifndef BLADERUNNER_AUDIO_H
-#define BLADERUNNER_AUDIO_H
+#ifndef BLADERUNNER_AUDIO_PLAYER_H
+#define BLADERUNNER_AUDIO_PLAYER_H
-#include "audio/mixer.h"
#include "common/array.h"
#include "common/mutex.h"
#include "common/str.h"
-#include "common/types.h"
namespace BladeRunner {
class BladeRunnerEngine;
class AudioCache;
-#define TRACKS 6
-
/*
* This is a poor imitation of Bladerunner's resource cache
*/
@@ -54,6 +50,7 @@ class AudioCache {
uint32 _totalSize;
uint32 _maxSize;
uint32 _accessCounter;
+
public:
AudioCache() :
_totalSize(0),
@@ -72,23 +69,25 @@ public:
};
class AudioPlayer {
- BladeRunnerEngine *_vm;
- AudioCache *_cache;
+ static const int kTracks = 6;
struct Track {
- bool isMaybeActive;
- Audio::SoundHandle soundHandle;
+ bool isActive;
+ int channel;
int priority;
int32 hash;
int volume;
+ int pan;
- Track() : isMaybeActive(false) {}
+ Track() : isActive(false) {}
};
- Track _tracks[TRACKS];
+ BladeRunnerEngine *_vm;
- bool isTrackActive(Track *track);
- void fadeAndStopTrack(Track *track, int time);
+ Common::Mutex _mutex;
+ AudioCache *_cache;
+ Track _tracks[kTracks];
+ int _sfxVolume;
public:
AudioPlayer(BladeRunnerEngine *vm);
@@ -99,9 +98,16 @@ public:
OVERRIDE_VOLUME = 2
};
- int playAud(const Common::String &name, int volume, int panFrom, int panTo, int priority, byte flags = 0);
-
+ int playAud(const Common::String &name, int volume, int panStart, int panEnd, int priority, byte flags = 0);
+ bool isActive(int track);
+ void stop(int track, bool immediately);
void stopAll();
+ void adjustVolume(int track, int volume, int delay, bool overrideVolume);
+ void adjustPan(int track, int pan, int delay);
+
+private:
+ void remove(int channel);
+ static void mixerChannelEnded(int channel, void *data);
};
} // End of namespace BladeRunner