/*! * \file include/Sound.h * \brief This is the audio manager Header * * \author Mongoose * \author xythobuz */ #ifndef _SOUND_H_ #define _SOUND_H_ /*! * \brief This is the audio manager for OpenRaider */ class Sound { public: typedef enum { SoundFlagsNone = 0, //!< No effect SoundFlagsLoop = (1 << 0) //!< Enable looping during playback } SoundFlags; /*! * \brief Deconstructs an object of Sound */ virtual ~Sound(); /*! * \brief Initialize sound system * \returns 0 on success or < 0 error flags */ virtual int initialize() = 0; virtual void setEnabled(bool on) = 0; /*! * \brief Set the volume * \param vol new source gain */ virtual void setVolume(float vol) = 0; /*! * \brief Get number of registered sources * \returns number of registered sources */ virtual int registeredSources() = 0; /*! * \brief Remove all loaded sounds */ virtual void clear() = 0; /*! * \brief Move listener and repositions them * \param pos New position for listener * \param angle New orientation for listener */ virtual void listenAt(float pos[3], float angle[3]) = 0; /*! * \brief Move sound source to position * \param source valid source id * \param pos new position for source */ virtual void sourceAt(int source, float pos[3]) = 0; /*! * \brief Load wav file from disk * \param filename not NULL! * \param source not NULL! Returns new source ID or -1 on error. * \param flags set options. Use SoundFlags enum bitwise OR-ed * \returns 0 for no error or < 0 error flag */ virtual int addFile(const char *filename, int *source, unsigned int flags) = 0; /*! * \brief Load wav file from buffer * \param wav not NULL! Is a valid waveform buffer! * \param length length of wav buffer * \param source not NULL! Returns new source ID or -1 on error. * \param flags set options. Use SoundFlags enum bitwise OR-ed * \returns 0 for no error or < 0 error flag */ virtual int addWave(unsigned char *wav, unsigned int length, int *source, unsigned int flags) = 0; /*! * \brief Play sound source * \param source sound source to play */ virtual void play(int source) = 0; /*! * \brief Stop playing sound source * \param source sound source to stop */ virtual void stop(int source) = 0; private: }; #endif