#ifndef _CAUDIO_HPP_
#define _CAUDIO_HPP_

/*** SDL Header Files ***/
#include <SDL.h>
#include <SDL_mixer.h>

/*** DLL Header File ***/
#include "dllExport.h"

namespace AudioEngine {
	/* Singleton */
	class EXPORT_FROM_MYDLL cAudio
	{
	private:
		cAudio();
		~cAudio();

	public:
		//Functions
		static cAudio& Inst();
		static void Delete();

		const bool Initialize() const;

		/* Sets up the audio */
		void Setup();
		/* Cleans up */
		void CleanUp();

		/* Plays the sounds */
		void SoundPlay();
		/* Plays the music */
		void MusicPlay();
		

		///Set
		/* Sets the rate */
		void setRate( const unsigned long int rate = 22050 );
		/* Sets the audio format */
		void setFormat( const unsigned long int format = AUDIO_S16 );
		/* Sets the channels */
		void setChannels( const unsigned long int channels = 2 );

		/* Sets the buffer */
		void setBuffers( const unsigned long int buffers = 4096 );

		///Get
		/* Gets return true if Audio was initialized */
		const bool IsInit() const;
		/* Gets the rate */
		const unsigned long int getRate() const;
		/* Gets the format */
		const unsigned long int getFormat() const;
		/* Gets the channels */
		const unsigned long int getChannels() const;

		/* Gets the buffers */
		const unsigned long int getBuffers() const;

	private:
	private:
		///Variables
		unsigned long int m_rate;// = 22050;
		unsigned long int m_format;// = AUDIO_S16; 
		unsigned long int m_channels;// = 2;
		unsigned long int m_buffers;// = 4096;

		static cAudio* sp_inst;// = nullptr;
	};/// END CLASS DEFINITION cAudio
}/// END NAMESPACE DEFINITION AudioEngine
#endif/// END IFNDEF _CAUDIO_HPP_
