Files
beyond/Assets/Scripts/Controllers/IdFightController.cs
2024-11-20 15:21:28 +01:00

82 lines
2.5 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using Invector.vCharacterController.AI;
using PixelCrushers;
using Unity.Mathematics;
using UnityEngine;
using UnityEngine.Events;
using Random = UnityEngine.Random;
namespace Beyond
{
public class IdFightController : MonoBehaviour
{
[SerializeField] private int m_firstPhaseEnemyQuantity = 8;
[SerializeField] private List<GameObject> m_startingEnemies = new List<GameObject>();
[SerializeField] private GameObject m_skeletonPrefab;
[SerializeField] private List<Transform> m_skeletonSpawnPoints = new List<Transform>();
private FightPhase m_currentPhase;
private FireTornadoController m_fireTornadoController;
private int m_enemiesDefeatCounter = 0;
public UnityAction m_OnEnemyDead;
//Starting - flame tornado, skeletons
//End - id and qte
public enum FightPhase
{
StartingPhase,
EndPhase
}
private void Update()
{
switch (m_currentPhase)
{
case FightPhase.StartingPhase:
if (m_enemiesDefeatCounter >= m_firstPhaseEnemyQuantity)
{
MessageSystem.SendMessage(this, "Skeletons", "Defeated");
m_currentPhase = FightPhase.EndPhase;
}
break;
case FightPhase.EndPhase:
break;
}
}
private void OnEnable()
{
m_enemiesDefeatCounter = 0;
m_fireTornadoController = GetComponent<FireTornadoController>();
InitStartingEnemies();
m_currentPhase = FightPhase.StartingPhase;
}
private void InitStartingEnemies()
{
foreach (GameObject enemy in m_startingEnemies)
{
var controller = enemy.GetComponent<vControlAIMelee>();
controller.onDead.AddListener(OnEnemyDead);
}
}
public void OnEnemyDead(GameObject go)
{
m_OnEnemyDead?.Invoke();
SpawnEnemy();
m_enemiesDefeatCounter++;
}
public void SpawnEnemy()
{
vControlAIMelee ai = Instantiate(m_skeletonPrefab,
m_skeletonSpawnPoints[Random.Range(0, m_skeletonSpawnPoints.Count)].position, quaternion.identity).GetComponent<vControlAIMelee>();
ai.onDead.AddListener(OnEnemyDead);
}
}
}