#pragma once
#include <DxLib.h>
#include <Windows.h>
#include <string>
#include "Sound.h"
#define NULL_HANDLE -1

namespace DXFW
{
/// <summary>BGM用音声ファイルを扱うクラス</summary>
/// <example>
/// [サンプルコード:未完成]<BR>
/// サンプル説明<BR>
/// <code>
/// int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow )<BR>
/// {<BR>
/// 	if( !Dx::Initialise() ) return -1;<BR>
/// 	Dx::End();<BR>
/// 	return 0;<BR>
/// }<BR>
///</code>	
///</example>
class Music
{
private:
	std::string fileName;
	int volume;
public:
	Music(){};
	~Music(){};
	
	///<summary>音声ファイルを登録</summary>
	Music(const char *ファイル名 , double 音量 = 1.0)
	{
		Music::Load( ファイル名 , 音量 );
	}
	
	///<summary>音声ファイルを登録</summary>
	///音量は 0〜1.0で指定、ファイルはメモリには読み込まない。
	void Load(const char *ファイル名 , double 音量 = 1.0)
	{
		this->fileName = ファイル名;
		volume = int(音量*255);
	}
		
	///<summary>音声ファイルを再生</summary>
	///Musicファイルは複数同時に再生する事は出来ない。
	///現在再生中の音声は停止する。
	bool Play(PlayType playType = PlayType::Back)
	{
		const bool ok = !DxLib::PlayMusic(this->fileName.c_str(), (int)playType);
		DxLib::SetVolumeMusic( volume );
		return ok;
	}

	///<summary>再生中か取得</summary>
	///いずれかのMusicが再生中ならtureを返す
	static bool Check()
	{
		return (DxLib::CheckMusic() == 1);
	}

	///<summary>再生中のMusicを停止</summary>
	static bool Stop()
	{
		return !DxLib::StopMusic();
	}
};
}