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

public enum BossThugEnum
{
    Pending=0, //waiting for npcs to die
    Talking=1,
    Attacking=2
}

public class BossThug : MonoBehaviour
{

    public GameObject npc1;
    public GameObject npc2;
    private GameObject player;
    private GameObject doorway;

    public BossThugEnum state = BossThugEnum.Pending;

    // Start is called before the first frame update
    void Start()
    {
        npc1 = GameObject.FindObjectsOfType<GameObject>(true).Where(sr => sr.gameObject.name == "ThugBob" && sr.gameObject.tag == "Enemy").ToArray()[0];
        npc2 = GameObject.FindObjectsOfType<GameObject>(true).Where(sr => sr.gameObject.name == "ThugBen" && sr.gameObject.tag == "Enemy").ToArray()[0];
        player = GameObject.FindGameObjectWithTag("Player");
        doorway = GameObject.FindObjectsOfType<GameObject>(true).Where(sr => sr.gameObject.name == "DoorToHell" && sr.gameObject.tag == "SceneTransition").ToArray()[0];

        if (npc1 == null || npc2 == null || player == null || doorway == null)
        {
            throw new Exception("Object has not been found in the scene");
        }
    }

    // Update is called once per frame
    void Update()
    {
        if (
            (npc1.GetComponent<FollowingEnemy>().health <= 0 && npc1.GetComponent<FollowingEnemy>().isKilled == 1) &&
            (npc2.GetComponent<FollowingEnemy>().health <= 0 && npc2.GetComponent<FollowingEnemy>().isKilled == 1) && 
            state == BossThugEnum.Pending)
        {
            state = BossThugEnum.Talking; // UZUPELNIC DIALOG

            
        }
        else if (state == BossThugEnum.Attacking && player.GetComponent<Player>().currentHealth <= 0)
        {
            doorway.GetComponent<DoorBehaviour>().ScenetToMoveTo();
        }
        switch (state)
        {
            case BossThugEnum.Attacking:
            {
                ActivateKillingMode();
                break;
            }
            case BossThugEnum.Talking:
            {
                ActivateDialogueMode(); //later add trigger events etc
                state = BossThugEnum.Attacking;
                break;
            }
        }
    }

    private void ActivateKillingMode()
    {
        gameObject.GetComponent<FollowingEnemy>().enabled=true;
        gameObject.GetComponent<FollowingEnemy>().baseAttack=11f;
    }

    private void ActivateDialogueMode()
    {
        gameObject.GetComponent<CircleCollider2D>().enabled = true;
        gameObject.GetComponent<CircleCollider2D>().radius = 1.2f;
    }

}