Scriptum/Assets/Scripts/Enemies' Scprits/Cave/BossThug.cs
2022-10-24 12:31:09 +02:00

108 lines
3.5 KiB
C#

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 Animator animator;
private Rigidbody2D rb;
public RuntimeAnimatorController newController;
public bool isAfterConversation = false; // drop it if you can...
public BossThugEnum state = BossThugEnum.Pending;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody2D>();
animator = GetComponent<Animator>();
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
break;
}
}
}
private void ActivateKillingMode()
{
gameObject.GetComponent<FollowingEnemy>().enabled=true;
animator.runtimeAnimatorController = Resources.Load("SampleScene/Enemies/BossThugAnimator.controller") as RuntimeAnimatorController;
gameObject.GetComponent<FollowingEnemy>().baseAttack=1000f;
}
private void ActivateDialogueMode()
{
gameObject.GetComponent<CircleCollider2D>().radius = 5f;
}
public void ChanegStatusToAttack()
{
state = BossThugEnum.Attacking;
}
public void OnTriggerStay2D(Collider2D other)
{
//Debug.Log("kill");
if(other.tag == "Player" && state == BossThugEnum.Talking && !isAfterConversation)
{
isAfterConversation = true;
gameObject.GetComponent<CircleCollider2D>().enabled = false;
gameObject.GetComponent<CircleCollider2D>().radius = 2f;
gameObject.GetComponent<NpcDialogueManager>().ShowStep();
}
}
}