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

public class InfectedScript : MonoBehaviour {

    // Movement Stats
    public float infectedMovementSpeed;
    public float infectedRoationSpeed;

    // GameObjekt, das steuert wen die Infizierten verfolgen
    public GameObject followObject;

    // Elemente um die Distanz zur Spielfigur zu bestimmen
    public float distanceToPlayer;
    public GameObject Player;
    // Elemente für die Aktivierung und Deaktivierung der Sprites
    public GameObject zombiePlane;

    void Start()
    {
        // Player wird gefunden
        Player = GameObject.Find("Player");

        // Stats werden bestimmt
        infectedMovementSpeed = 4;
        infectedRoationSpeed = 3;

        // Sprite-Planes werden erkannt und das Zombie Frame wird deaktiviert
        zombiePlane = this.gameObject.transform.GetChild(0).gameObject;
        zombiePlane.SetActive(false);
    }
    void Update()
    {
      // Entfernung zur Spieler_in
      distanceToPlayer = Vector3.Distance (Player.transform.position, this.gameObject.transform.position);
      // followObjekt bestimmt, dass die Infizierten der Spielfigur verfolgen
      if (followObject != null && distanceToPlayer >= 5)
        {
        //Elemente der Bewegung der Infizierten
        transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(followObject.transform.position - transform.position), infectedRoationSpeed * Time.deltaTime);
        transform.position += transform.forward * infectedMovementSpeed * Time.deltaTime;
        }
    }
    void OnCollisionEnter(Collision col)
    {
      //Wenn die Patienten mit der Spielfigur zusammenstoßen, dann folgen sie der Spielfigur und werden Infizierte
      if (col.gameObject.tag == "Player")
        {
            followObject = Player;
            // Tag der Patienten wird zu Infizierte
            gameObject.tag = "Infected";
            zombiePlane.SetActive(true);
        }
      // Wenn die Infizierten mit einem Arzt zusammenstoßen
      if (col.gameObject.tag == "Arzt" && this.gameObject.tag == "Infected")
        {
          Destroy (this.gameObject);
          GameManager.instance.infectionPower = GameManager.instance.infectionPower - 0.5f;
        }
    }
    void OnTriggerEnter(Collider col)
    {
        // Wenn die Infizierten in der TriggerZone des Arztes sind, dann sollen sie dem Arzt folgen
        if (col.gameObject.tag == "Arzt" && this.gameObject.tag == "Infected")
        {
          followObject = col.gameObject;
        }
    }
}
