
#ifndef _SoundObject_H_
#define _SoundObject_H_

#include "SoundGlobal.h"

enum eSndObjType
{
	SNDOBJTYPE_SOUNDBUFFER,
	SNDOBJTYPE_STREAMBUFFER,
	SNDOBJTYPE_MUSICBUFFER,
	SNDOBJTYPE_SOUNDOBJNONE
};

/////////////////////////////////////////////////////////////////////////////////////////
//

class ISoundObject
{
public:
	virtual ~ISoundObject() {}

	virtual void	Destroy() = 0;

	virtual int		Play( bool bLoop ) = 0;
	virtual void	Play( DWORD dwIndex, bool bLoop ) = 0;
	virtual void	Stop( unsigned ) = 0;
	virtual void	StopAll() = 0;
	virtual void	Reset( unsigned ) = 0;
	virtual void	ResetAll() = 0;
	virtual HANDLE	GetEventNotify()		{ return 0; }
	virtual void	HandleNotification()	{}
	virtual bool	IsAllPlaying() = 0;
	virtual bool	IsAllFree() = 0;
	virtual bool	IsPlaying( unsigned ) = 0;
	
	virtual DWORD	GetMemoryUse() = 0;
	virtual	bool	IsSameFile( const char * ) = 0;
	virtual	const char *	GetFilename() = 0;

	virtual eSndObjType	GetType() = 0;

	virtual void	SetPosition( DWORD dwIndex, D3DVALUE x, D3DVALUE y, D3DVALUE z ) = 0;
	virtual void	SetDistance( DWORD dwIndex, D3DVALUE minDistance, D3DVALUE maxDistance ) = 0;
};

/////////////////////////////////////////////////////////////////////////////////////////

#endif