#ifndef _SOUNDBASE_H #define _SOUNDBASE_H #include "Engine.h" #include namespace Engine { class Module; class SoundSample { public: SoundSample() : mMixChunk (NULL), mChannel (-1) { } ~SoundSample(); bool Load(const std::string &filename); void Play(); void Loop(int count); void Stop(); private: int mChannel; Mix_Chunk *mMixChunk; }; typedef boost::shared_ptr SoundSamplePtr; /** \brief Manages loading, saving and playing of sounds and music * */ class SoundBase : public Module { public: void PlaySound (const std::string &sound_name); void PlaySoundLoop (const std::string &sound_name, int count); void HaltSoundLoop (const std::string &sound_name); void PlayMusic (const std::string &music_name); void HaltMusic (); protected: /** \brief Initializes the system */ virtual int OnInit (int argc, char* argv[]); /** \brief Destroys the system (must be called!) */ virtual void OnDestroy (); std::string mCurrentMusicName; Mix_Music *mCurrentMusic; std::map mSamples; typedef std::map::iterator SampleIter; }; } #endif // _SOUNDBASE_H