using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.UI;
public class ControlaChefe : MonoBehaviour, IMatavel
{
private Transform Jogador;
private NavMeshAgent agente;
private Status statusChefe;
private AnimacaoPersonagem animacaoChefe;
private MovimentoPersonagem movimentoChefe;
public GameObject KitMedico;
public Slider sliderVidaChefe;
public Image ImagemSlider;
public Color CorDaVidaMaxima, CorDaVidaMinima;
public GameObject ParticulaSangue;
private void Start()
{
Jogador = GameObject.FindWithTag("Jogador").transform;
statusChefe = GetComponent<Status>();
animacaoChefe = GetComponent<AnimacaoPersonagem>();
agente = GetComponent<NavMeshAgent>();
movimentoChefe = GetComponent<MovimentoPersonagem>();
agente.speed = statusChefe.Velocidade;
sliderVidaChefe.maxValue = statusChefe.VidaInicial;
AtualizarSliderChefe();
}
private void Update()
{
agente.SetDestination(Jogador.position);
animacaoChefe.Movimentar(agente.velocity.magnitude);
if (agente.hasPath == true)
{
bool pertoDoJogador = agente.remainingDistance <= agente.stoppingDistance;
if (pertoDoJogador == true)
{
animacaoChefe.Atacar(true);
Vector3 direcao = Jogador.position - transform.position;
movimentoChefe.Rotacao(direcao);
}
else
{
animacaoChefe.Atacar(false);
}
}
}
void AtacaJogador()
{
int dano = Random.Range(30, 40);
Jogador.GetComponent<ControlaJogador>().TomarDano(dano);
}
public void TomarDano(int dano)
{
statusChefe.Vida -= dano;
AtualizarSliderChefe();
if (statusChefe.Vida <= 0)
{
Morrer();
}
}
public void ParticulaSangueZumbi(Vector3 posicao, Quaternion rotacao)
{
Instantiate(ParticulaSangue, posicao, rotacao);
}
public void Morrer()
{
animacaoChefe.Morrer();
movimentoChefe.Morrer();
this.enabled = false;
Instantiate(KitMedico, transform.position, Quaternion.identity);
agente.enabled = false;
Destroy(gameObject, 2);
}
void AtualizarSliderChefe()
{
sliderVidaChefe.value = statusChefe.Vida;
float porcetagemDeVida = (float)statusChefe.Vida / statusChefe.VidaInicial;
Color corDaVida = Color.Lerp(CorDaVidaMinima, CorDaVidaMaxima, porcetagemDeVida);
ImagemSlider.color = corDaVida;
}
}