22#ifndef TITANIC_SOUND_MANAGER_H
23#define TITANIC_SOUND_MANAGER_H
25#include "titanic/core/list.h"
26#include "titanic/support/simple_file.h"
27#include "titanic/sound/audio_buffer.h"
28#include "titanic/sound/proximity.h"
29#include "titanic/sound/qmixer.h"
30#include "titanic/sound/wave_file.h"
31#include "titanic/true_talk/dialogue_file.h"
36 VOL_NORMAL = -1, VOL_QUIET = -2, VOL_VERY_QUIET = -3, VOL_MUTE = -4
48 double _speechPercent;
49 double _masterPercent;
50 double _parrotPercent;
101 virtual void proc9(
int handle) {}
114 virtual void setVolume(
int handle, uint volume, uint seconds) = 0;
134 virtual void setPolarPosition(
int handle,
double range,
double azimuth,
double elevation, uint panRate) {}
210 double directionX,
double directionY,
double directionZ,
bool stopSounds) {}
241 _iChannel(0), _endFn(
nullptr), _talker(
nullptr) {}
243 ListItem(), _waveFile(waveFile), _iChannel(iChannel), _endFn(endFn), _talker(talker) {}
280 PositioningMode _positioningMode;
282 Slot() : _waveFile(0), _isTimed(0), _ticks(0), _channel(-1),
283 _handle(0), _positioningMode(POSMODE_NONE) {}
289 uint _channelsVolume[16];
290 int _channelsMode[16];
297 void updateVolume(
int channel, uint panRate);
302 void updateVolumes();
307 static void soundFinished(
int iChannel,
CWaveFile *waveFile,
void *soundManager);
317 void setChannelVolume(
int iChannel, uint volume, uint mode);
322 int resetChannel(
int iChannel);
393 void setVolume(
int handle, uint volume, uint seconds)
override;
413 void setPolarPosition(
int handle,
double range,
double azimuth,
double elevation, uint panRate)
override;
459 double directionX,
double directionY,
double directionZ,
bool stopSounds)
override;
Definition: audio_buffer.h:32
Definition: dialogue_file.h:51
Definition: proximity.h:36
Definition: sound_manager.h:42
void save(SimpleFile *file) const
Definition: sound_manager.h:199
virtual bool isActive(const CWaveFile *waveFile)
Definition: sound_manager.h:144
virtual CWaveFile * loadSound(const CString &name)
Definition: sound_manager.h:60
virtual void setMasterPercent(double percent)=0
void load(SimpleFile *file)
Definition: sound_manager.h:184
virtual void setPolarPosition(int handle, double range, double azimuth, double elevation, uint panRate)
Definition: sound_manager.h:134
double getSpeechVolume() const
Definition: sound_manager.h:220
virtual void stopSound(int handle)=0
virtual void postLoad()
Definition: sound_manager.h:189
virtual uint getLatency() const
Definition: sound_manager.h:154
virtual void setListenerPosition(double posX, double posY, double posZ, double directionX, double directionY, double directionZ, bool stopSounds)
Definition: sound_manager.h:209
uint getModeVolume(VolumeMode mode)
double getParrotVolume() const
Definition: sound_manager.h:225
virtual void setVolume(int handle, uint volume, uint seconds)=0
virtual void setSpeechPercent(double percent)=0
virtual void setMusicPercent(double percent)=0
virtual void preLoad()
Definition: sound_manager.h:179
virtual void postSave()
Definition: sound_manager.h:204
virtual void setVectorPosition(int handle, double x, double y, double z, uint panRate)
Definition: sound_manager.h:124
virtual void stopAllChannels()=0
double getMusicVolume() const
Definition: sound_manager.h:215
virtual void waveMixPump()=0
virtual void setParrotPercent(double percent)=0
virtual void stopChannel(int channel)=0
virtual CWaveFile * loadSpeech(CDialogueFile *dialogueFile, int speechId)
Definition: sound_manager.h:67
virtual void preSave()
Definition: sound_manager.h:194
virtual CWaveFile * loadMusic(CAudioBuffer *buffer, DisposeAfterUse::Flag disposeAfterUse)
Definition: sound_manager.h:84
virtual CWaveFile * loadMusic(const CString &name)
Definition: sound_manager.h:77
virtual bool isActive(int handle)=0
virtual int playSound(CWaveFile &waveFile, CProximity &prox)=0
Definition: wave_file.h:35
Definition: sound_manager.h:273
bool isActive(int handle) override
virtual int playWave(CWaveFile *waveFile, int iChannel, uint flags, CProximity &prox)
void waveMixPump() override
int playSound(CWaveFile &waveFile, CProximity &prox) override
void stopChannel(int channel) override
CWaveFile * loadSound(const CString &name) override
CWaveFile * loadMusic(const CString &name) override
CWaveFile * loadMusic(CAudioBuffer *buffer, DisposeAfterUse::Flag disposeAfterUse) override
void stopSound(int handle) override
uint getLatency() const override
CWaveFile * loadSpeech(CDialogueFile *dialogueFile, int speechId) override
void setSpeechPercent(double percent) override
void setMusicPercent(double percent) override
void setVectorPosition(int handle, double x, double y, double z, uint panRate) override
bool isActive(const CWaveFile *waveFile) override
void setPolarPosition(int handle, double range, double azimuth, double elevation, uint panRate) override
void setVolume(int handle, uint volume, uint seconds) override
void setParrotPercent(double percent) override
void stopAllChannels() override
virtual void setCanFree(int handle)
void soundFreed(Audio::SoundHandle &handle)
void setListenerPosition(double posX, double posY, double posZ, double directionX, double directionY, double directionZ, bool stopSounds) override
void setMasterPercent(double percent) override
Definition: sound_manager.h:233
Definition: sound_manager.h:246
void flushChannel(CWaveFile *waveFile, int iChannel)
bool contains(const CWaveFile *waveFile) const
void add(CWaveFile *waveFile, int iChannel, CEndTalkerFn endFn, TTtalker *talker)
void flushChannel(int iChannel)
Definition: simple_file.h:49
Definition: tt_talker.h:33