#ifndef SE_IFACE_H
#define SE_IFACE_H

/*
	Ripatti Artem (c) 2011

	Тут содержится
		описание интерфейса XSoundEngine
		описание интерфейса XSound
*/

namespace se
{
	class XSound
	{
	protected:
		virtual ~XSound(){}
	public:
		// остановить
		virtual void kill()=0;

		// установить громкость от 0 до 1
		virtual void set_volume(float volume)=0;
	};

	// это, собственно, звуковой движок
	// он берет на себя управление музыкой и звуками
	class XSoundEngine
	{
	public:
		// играть музыку
		// num - номер трека (-1 - нет музыки)
		// если sudo=true, то переход на дпугой трек идет сразу,
		// иначе - плавно
		virtual void run_music(int num=-1, float volume=1.f, bool sudo=false)=0;

		// возвращает номер музыки, которая сейчас играет
		// если трек закончился, то будет возвращено -1
		virtual int get_cur_music()=0;

		// установить громкость музыки от 0 до 1
		virtual void set_volume(float volume)=0;

		// играет звук по номеру
		// можно сразу воспроизводить сколько угодно звуков
		// loop - зациклить ли
		// возвращает указатель на звук
		virtual XSound * play_sound(int num, float volume=1.f, bool loop=false)=0;

		// убить все звуки
		virtual void stop_all_sounds()=0;

		// надо запускать на каждом фрейме
		// регалирует затухание музыки, циклит ее и тд и тп
		virtual void check_time()=0;
	};

};

#endif