package library.core.music;

import java.io.IOException;

import android.content.Context;
import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import android.media.MediaPlayer;

/**
 * BGM用
 * @author 貴裕
 *
 */
public class CoreBgmPlayer {

	private MediaPlayer player;

	private Context context;


	private boolean isMute=false;

	public CoreBgmPlayer(Context context){
		this.context=context;
	}


	public void play(String name){
		if(isMute) return;

		//登録できていない場合はロード
		AssetManager asset=context.getAssets();

		try {
			AssetFileDescriptor f=asset.openFd(name);
			player=new MediaPlayer();
			player.setDataSource(f.getFileDescriptor(),f.getStartOffset(),f.getLength());
			player.prepare();
			player.setLooping(true);
			player.start();
		} catch (IOException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}
	}

	public void play(String name,float volume){
		if(isMute) return;

		//登録できていない場合はロード
		AssetManager asset=context.getAssets();

		try {
			AssetFileDescriptor f=asset.openFd(name);
			player=new MediaPlayer();
			player.setDataSource(f.getFileDescriptor(),f.getStartOffset(),f.getLength());
			player.prepare();
			player.setLooping(true);
			player.setVolume(volume, volume);
			player.start();
		} catch (IOException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}
	}


	/**
	 * 0~1
	 */
	public void setVolume(float v){
		if(player==null) return;
		player.setVolume(v, v);
	}

	/**
	 * 0~1
	 * @param lV
	 * @param rV
	 */
	public void setVolumeRight(float lV,float rV){
		if(player==null) return;
		player.setVolume(lV, rV);
	}

	public void play(){
		if(player==null) return;
		player.start();
	}
	public void rePlay(){
		if(player==null) return;
		player.start();
	}

	public void pause(){
		if(player==null) return;
		player.pause();
	}


	public void stop(){
		player.stop();
		player.release();
		player=null;
	}


	/**
	 * ミュートの設定
	 * @param isMute
	 */
	public void setMute(boolean isMute) {
		this.isMute = isMute;
		if(player!=null &&isMute){	//すでに音のなっている状態でミュートになった場合
			player.stop();
		}
	}


}
