using UnityEngine;
using System.Collections;

public class Inimigo : MonoBehaviour {
	public int vida;

	public Vector3 destino;
	public Direcao direcao;
	public Sprite[] sprites;
	float velocidade = 3;
	public bool furioso;

	void Start() {
		Invoke("mudaDirecao", Random.Range(0,40)/10 + 3);

	}

	void Hit(int n) {
		vida -= n;
		if (vida < 0)
			Destroy (this.gameObject);
	}

	void Update() {
		int menor = 0; 
		float menorDistancia = 5555;
		if (furioso) {
			GameObject[] a = GameObject.FindGameObjectsWithTag("jogador");

			menor = 0;
			menorDistancia = Vector3.Distance(transform.position, a[0].transform.position);

			for(int i = 0; i < a.Length; i++) {
				if(Vector3.Distance(transform.position, a[i].transform.position) < menorDistancia) {
					destino = a[menor].transform.position;
					menorDistancia = Vector3.Distance(transform.position, a[0].transform.position);
				}
			}
			if (menorDistancia > 10)
				destino = Vector3.zero;
		}
		if (destino != null && destino != Vector3.zero) {
			float velX = destino.x - transform.position.x;
			float velY = destino.z - transform.position.z;

			transform.Translate (velX * Time.deltaTime, 0, velY * Time.deltaTime); 
		} else {
			if (direcao == Direcao.CIMA) {
				transform.Translate (0, 0, velocidade * Time.deltaTime);
			} else if (direcao == Direcao.BAIXO) {
				transform.Translate (0, 0, velocidade * -Time.deltaTime);
			} else if (direcao == Direcao.ESQUERDA) {
				transform.Translate (velocidade * -Time.deltaTime, 0, 0);
			} else if (direcao == Direcao.DIREITA) {
				transform.Translate (velocidade * Time.deltaTime, 0, 0);
			}
		}
	}

	void Latido(Vector3 posicao) {
		this.destino = posicao;
	}

	void mudaDirecao() {
		direcao = (Direcao) Random.Range(0,4);
		GetComponentInChildren<SpriteRenderer> ().sprite = sprites[(int) direcao];
		Invoke("mudaDirecao", Random.Range(0,40)/10 + 3);
		GetComponentInChildren<Animator> ().SetInteger ("direcao", (int) direcao);
	}

	void mudaDirecao(Direcao d) {
		GetComponentInChildren<SpriteRenderer> ().sprite = sprites[(int) d];
		
		GetComponentInChildren<Animator> ().SetInteger ("direcao", (int) d);
	}

	void OnCollisionEnter(Collision c) {
		if (c.gameObject.tag == "parede") {
			mudaDirecao((Direcao) ((int) (direcao + 2) % 4));
		}
	}
}
