#include "Sound.h"

void Sound::Volume(int channel,int vol)
{
	FSOUND_SetVolume(channel,vol);
}
bool Sample::Load(char* sound, bool loop)
{
	if(loop)
	{
		if((pSample = FSOUND_Sample_Load(FSOUND_FREE,sound,FSOUND_NORMAL | FSOUND_LOOP_NORMAL,0,0))==0)
		{
			printf("Failed to load sample: %s\n",sound);
			return false;
		}
	}
	else
	{
		if((pSample = FSOUND_Sample_Load(FSOUND_FREE,sound,FSOUND_NORMAL | FSOUND_LOOP_OFF,0,0))==0)
		{
			printf("Failed to load sample: %s\n",sound);
			return false;
		}
	}
	return true;
}
int Sample::Play()
{
	if(pSample)
		return(FSOUND_PlaySound(FSOUND_FREE,pSample));
	return -1;
}
void Sample::Play(int channel)
{
	if(pSample)
		FSOUND_PlaySound(channel,pSample);
}
void Sample::Stop(int channel)
{
	FSOUND_StopSound(channel);
}
void Sample::Discard()
{
	if(pSample)
		FSOUND_Sample_Free(pSample);
//	pSample = 0;
}
void Sample::SetFrequency(int channel,int frequency)
{
	FSOUND_SetFrequency(channel,frequency);
}
void Sample::SetDefaults(int  deffreq, int defvol, int defpan, int defpri, int varfreq, int varvol, int varpan)
{
	FSOUND_Sample_SetDefaultsEx(pSample,deffreq,defvol,defpan,defpri,varfreq,varvol,varpan);
}
bool Stream::Load(char* stream, bool loop)
{
	if(loop)
	{
		if((pStream = FSOUND_Stream_Open(stream,FSOUND_NORMAL | FSOUND_LOOP_NORMAL,0,0))==0)
		{
			printf("Failed to load sample: %s\n",stream);
			return false;
		}
	}
	else
	{
		if((pStream = FSOUND_Stream_Open(stream,FSOUND_NORMAL,0,0))==0)
		{
			printf("Failed to load sample: %s\n",stream);
			return false;
		}
	}
	return true;
}
int Stream::Play()
{
	if(pStream)
		return(FSOUND_Stream_Play(FSOUND_FREE,pStream));
	return -1;
}
void Stream::Play(int channel)
{
	if(pStream)
		FSOUND_Stream_Play(channel,pStream);
//		return(FSOUND_Stream_Play(channel,pStream));
//	return -1;
}
void Stream::Stop(int channel)
{
	if(pStream)
		FSOUND_Stream_Stop(pStream);
}
void Stream::Discard()
{
	if(pStream)
		FSOUND_Stream_Close(pStream);
	pStream = 0;
}
void Stream::Seek(int ms, int channel)
{
	if(pStream)
	{
		FSOUND_Stream_Play(channel,pStream);
		FSOUND_SetPaused(channel,true);
		FSOUND_Stream_SetTime(pStream,ms);
		FSOUND_SetPaused(channel,false);
	}
}