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

66 lines
1.9 KiB
C#

using System.Collections;
using System.Collections.Generic;
using Invector;
using Invector.vCharacterController.AI;
using Invector.vCharacterController.AI.FSMBehaviour;
using UnityEngine;
namespace Beyond
{
[RequireComponent(typeof(vMessageReceiver))]
[DisallowMultipleComponent]
public class EnemyCombatNotifier : MonoBehaviour
{
private vMessageReceiver m_messageReceiver;
private vControlAICombat m_AICombat;
private vFSMBehaviourController m_fsm;
//bool wasTriggerd = false;
private void OnCombat()
{
//if (wasTriggerd || GameStateManager.Instance == null)
// return;
GameStateManager.Instance.OnCombat(m_fsm);
//wasTriggerd = true;
}
private void OnCombatEnd()
{
//if (wasTriggerd)
{
GameStateManager.Instance.OnCombatEnd(m_fsm);
// wasTriggerd = false;
}
}
private void OnDestroy()
{
OnCombatEnd();
}
// Start is called before the first frame update
private void Start()
{
m_messageReceiver = GetComponent<vMessageReceiver>();
m_AICombat = GetComponent<vControlAICombat>();
m_fsm = GetComponent<vFSMBehaviourController>();
m_messageReceiver.onReceiveMessage += (s, message) =>
{
//Debug.Log("Received message: " + s + " " + message);
if (s.Equals("Alert"))
{
OnCombat();
}
else if (s.Equals("Flee") || s.Equals("Patrol"))
{
OnCombatEnd();
}
};
if (m_AICombat)
{
m_AICombat.onDead.AddListener((arg0 => { OnCombatEnd(); }));
}
}
}
}