using System.Collections; using Unity.VisualScripting; using UnityEngine; // ReSharper disable once CheckNamespace namespace BlueWaterProject { public class NpcStateMachine : MonoBehaviour { public INpcState CurrentState { get; private set; } public NpcStateContext Context { get; private set; } = new NpcStateContext(); public void ChangeState(INpcState newState) { CurrentState?.OnExit(this); CurrentState = newState; CurrentState.OnEnter(this); } public void Update() { CurrentState?.OnUpdate(this); } public void StartWaitCoroutine(float waitTime, UsuallyPointState state) { StartCoroutine(WaitCoroutine(waitTime, state)); } private IEnumerator WaitCoroutine(float waitTime, UsuallyPointState state) { yield return new WaitForSeconds(waitTime); state.EndWait(); } // 이 메소드는 플레이어의 명령을 처리합니다. public void HandlePlayerCommand(/* 명령 파라미터 */) { // 이전 상태와 목적지를 저장 Context.PreviousState = CurrentState; // Context.PreviousDestination = 현재 AI의 목적지; // 명령 처리 로직 // ... // 명령 처리 후 원래 상태로 복귀하는 로직 // ... } } }