using UnityEngine;
using System.Collections;

public class BateauPlayer : MonoBehaviour
{
	public GameManager GameM;							//Type GameManager me permettant de recuperer les variables du script "GameManager"
	
	private Vector3 startPosition;						//Position initiale de la camera
	
	private bool shake;									//Permet de verifier si on secoue la camera
	private float timerShake = 0.15f;					//Temps de secouage de la camera en seconde
	private float startTime;							//Depart du temps de secouage 
	
	public GameObject posLanceur;						//GameObject vide pour recuperer sa position pour lancer les bouteilles
	
	public Camera mainCamera;							//Notre Camera

	private float SpeedTranslationPlayer = 10.0f;		//Vitesse de deplacement du joueur
	
	public GameObject bottle;							// Le Prefab "BottlePlayer"
	
	private float LimitLeft = -10.0f;					//Position limite à gauche
	private float LimitRight = 10.0f; 					//Position limite a droite
	
	private static Transform mouvementPlayer;
	
	public static Vector3 positionPlayer
	{
		get 
		{ 
			return mouvementPlayer.position; 
		}
	}
	
	// Use this for initialization
	void Start () 
	{
		shake = false;
		mouvementPlayer = transform;
	}
	
	// Update is called once per frame
	void Update () 
	{
		//on secoue la camera
		if (shake)
        {
			startTime+=Time.deltaTime;
			float randX = Random.Range(-3f,3f);
		    float randY = Random.Range(0f,0f);
		    float randZ = 0;
		    mainCamera.transform.position += new Vector3(randX,randY,randZ);
			
            if (startTime > (timerShake))
            {
				mainCamera.transform.position = startPosition;
                shake = false;
            }
        }
		
		PlayerControl();
	}
	
	//Gestion des controles clavier et souris
	void PlayerControl()
	{
		if(!GameManager.loose && !GameManager.betweenLevel && !GameManager.gameOver && !GameManager.win)
		{
			//Les controles clavier
			if(Input.GetKey(KeyCode.LeftArrow))
			{
				if(gameObject.transform.position.x >= LimitLeft) //Si la position de la camera ne depasse pas la limite "gauche"
				{
					gameObject.transform.Translate(Vector3.left * SpeedTranslationPlayer * Time.deltaTime); //On peut translater à gauche
				}
			}
			if(Input.GetKey(KeyCode.RightArrow))
			{
				if(gameObject.transform.position.x <= LimitRight) //Si la position de la camera ne depasse pas la limite "droite"
				{
					gameObject.transform.Translate(Vector3.right * SpeedTranslationPlayer * Time.deltaTime); //On peut translater à droite
				}
			}
	
			//Les controles souris
			if (GameManager.fireOK)
			{
				if(Input.GetMouseButtonDown(0))
				{
					GameManager.ammunition -= 1;
					Ray rayon = mainCamera.ScreenPointToRay(Input.mousePosition);
					GameObject fire = Instantiate(bottle,posLanceur.transform.position,transform.rotation) as GameObject;
					fire.rigidbody.AddForce(rayon.direction*1500);
				}
			}
		}
		else
		{
			
		}
	}
	void OnTriggerEnter(Collider ObjetInfo)
	{
		if(ObjetInfo.gameObject.tag == "ennemyBottle")  //si "BateauPlayer" touche une bouteille ennemi
		{	
			AudioClip AieSound = (AudioClip) Resources.Load("Sounds/Aie", typeof(AudioClip));
			audio.PlayOneShot(AieSound);
			
			if(!shake)		//Pour terminer de secouer la camera avant de recommencer à secouer
			{
				startPosition = mainCamera.transform.position;
				shake = true;
				startTime=0;
			}
			Destroy(ObjetInfo.gameObject);
			GameManager.alcohol -= 5;			//on perd 5 de vie
		}
	}
}
