#pragma once

namespace Gos2 {

class Audio : public GosAudio
{
public:
	static void				Set( int Channel, GosAudio::ChannelProperty Property,... );
	static void				Get( int Channel, GosAudio::ChannelProperty Property,... );
	static int				NumChannels();	// e.g 3 means: channel 0 = system, channel 1,2,3 can be assigned sounds

	static void				AssignSound( int Channel, GosSound *pSound );
	static void				Play( int Channel, bool Loop=false, int SeekPosition=-1 );	// seekPosition = -1 means continue
	static void				Pause( int Channel );
	static void				Stop( int Channel );

};

class Sound : public GosSound
{
public:
	static GosSound *		OpenFixed( TCHAR *pFileName );
	static GosSound *		OpenStreamed( TCHAR *pFileName );
	static GosSound *		DecodeFromMemory( void *pData, int Size=0 );
	static GosSound *		OpenFromMemory( Format *pFormat, void *pData, int Size=0 );
	static GosSound *		OpenSequence( int NumSounds, DWORD **ppData, DWORD *pLength );
	virtual					~Sound();
};


} using namespace Gos2;