﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Patrol : MonoBehaviour
{

    public float speed; //velocidade que o patrol ira se mover
    public float distance;    
    public float stopDistance;
    public float health = 5;    
    

    private bool movingRight = true; //verifica se o patrol atingiu a borda da plataforma
    public Transform groundDetection;    
    private Transform target;
    public Animator animator; //Animator será animator
    protected SpriteRenderer sprite; // Define o spriterenderer como sprite

    void Start()

    {
        target = GameObject.FindGameObjectWithTag("Player").GetComponent<Transform>();
        sprite = GetComponent<SpriteRenderer>(); //Pega o comonente spriterenderer e atribui para sprite
    }

    void Update()
    {
        Physics2D.IgnoreLayerCollision(10, 10);
        transform.Translate(Vector2.left * speed * Time.deltaTime); // Faz o patrol se mover para direita

        RaycastHit2D groundInfo = Physics2D.Raycast(groundDetection.position, Vector2.down, distance); //faz um raio invisivel a frente do patrol para verificar se o raio está colidindo com o chão        

        if (groundInfo.collider == false) //Se o raio não colidir com o chão..
        {
            if (movingRight == true) //Se o patrol estiver virado para a direita..
            {
                transform.eulerAngles = new Vector3(0, 180, 0); //Virar a sprite a -180 no eixo Y
                movingRight = false; //Define Patrol virado para esquerda.
            }
            else //Se o patrol estiver virada para esquerda..
            {
                transform.eulerAngles = new Vector3(0, 0, 0); //Virar a sprite a 0 no eixo Y
                movingRight = true; //Define Patrol virado para direita.
            }
        }        

        if (Vector2.Distance(transform.position, target.position) < stopDistance)
        {
            animator.SetBool("Perto", true);
            speed = 0;
        }
        else
        {
            animator.SetBool("Perto", false);
            speed = 5;
        }
       
    }


    private void OnCollisionEnter2D(Collision2D other)
    {
        if (other.gameObject.CompareTag("Wall"))
        {
            if (movingRight == true) //Se o patrol estiver virado para a direita..
            {
                transform.eulerAngles = new Vector3(0, 180, 0); //Virar a sprite a -180 no eixo Y
                movingRight = false; //Define Patrol virado para esquerda.
            }
            else //Se o patrol estiver virada para esquerda..
            {
                transform.eulerAngles = new Vector3(0, 0, 0); //Virar a sprite a 0 no eixo Y
                movingRight = true; //Define Patrol virado para direita.
            }
        }
    }

    void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.tag == "Shot")
        {
            health--;
            if (health <= 0)
            {

                Destroy(gameObject);
            } else
            {
                StartCoroutine(TookDanageCoRoutine());// Chama a co-rotina TookDamage
            }
        }
    }

    IEnumerator TookDanageCoRoutine() //Co-rotina para trocar com do inimigo para quando ele tomar dano e não morrer
    {
        sprite.color = Color.red; //Define cor do sprite para vermellho
        yield return new WaitForSeconds(0.1f); //Espera o.1 segundos
        sprite.color = Color.white; // Volta com do sprite para branco (cor normal)
        
    }
}