Scriptum/Assets/Scripts/Enemies' Scprits/Cave/BossThug.cs

83 lines
2.6 KiB
C#
Raw Normal View History

2022-10-02 18:45:58 +02:00
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;
}
}