MIF_E31221263/Assets/Scripts/Enemy/EnemyBrain.cs

55 lines
1.1 KiB
C#

using System;
using UnityEngine;
public class EnemyBrain : MonoBehaviour
{
[SerializeField] private string initState; // e.g., "PatrolState"
[SerializeField] private FSMState[] states;
public FSMState CurrentState { get; private set; }
public Transform Player { get; set; }
private bool isFrozen = false;
private void Start()
{
ChangeState(initState);
}
private void Update()
{
if (isFrozen) return;
CurrentState?.UpdateState(this);
}
public void ChangeState(string newStateID)
{
FSMState newState = GetState(newStateID);
if (newState == null) return;
CurrentState = newState;
}
private FSMState GetState(string stateID)
{
foreach (var state in states)
{
if (state.ID == stateID)
return state;
}
return null;
}
// === Freeze Control ===
public void Freeze()
{
isFrozen = true;
}
public void Unfreeze()
{
isFrozen = false;
}
public bool IsFrozen => isFrozen;
}