82 lines
2.5 KiB
C#
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);
|
|
}
|
|
}
|
|
} |