#ifndef CSoundMessage_h
#define CSoundMessage_h

/*!	
	@file
	@brief	メッセージ処理関数のベース
*/

#include"../../Setup/CompileMode.h"
#include<boost/smart_ptr.hpp>
#include<vector>

namespace Maid
{
	namespace SoundMessage
	{
		class Base
		{
		public:
			//	サウンドメッセージ
			enum MESSAGE
			{
				NONE,				//!<	何もしない

				LOAD_PCMSTATIC,	//!<	オンメモリサウンドとして生成
				LOAD_PCMSTREAM,	//!<	ストリームサウンドとして生成
				LOAD_MIDI,		//!<	MIDIとして生成
				LOAD_PCMSTATICCLONE,	//!<	オンメモリサウンドのクローンを作成

				DELETEBUFFER,	//!<	破棄

				PLAY,		//!<	再生	
				STOP,		//!<	ストップ
				SETPOSITION,//!<	再生場所の移動
				SETLOOPPOSITION,	//!<	ループ箇所の変更
				SETVOLUME,		//!<	ボリュームの変更
				SETPLAYCOUNT,	//!<	再生回数の変更
				GETSOUNDINFO,	//!<	サウンド情報の取得
			};

			Base( MESSAGE mess ) : Message(mess){}

			const MESSAGE	Message;
			int		ID;
		};
	}

	typedef	boost::shared_ptr<SoundMessage::Base>	SPSOUNDMESSAGE;
	typedef	MySTL::vector<SPSOUNDMESSAGE>			SOUNDMESSAGEQUE;

}

#endif
