NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Framework/Pattern/StatePattern.cs

47 lines
1.1 KiB
C#
Raw Normal View History

2023-08-22 19:08:45 +08:00
namespace Framework
{
// implement a finite state machine class
2023-10-19 15:00:19 +08:00
2023-08-22 19:08:45 +08:00
public interface IState
{
void OnEnter();
void OnUpdate(float deltaTime);
void OnExit();
}
public class StateMachine
{
private IState _currentState;
private IState _previousState;
2024-02-22 12:46:45 +08:00
public void ChangeState(IState newState)
2023-08-22 19:08:45 +08:00
{
if (_currentState != null)
{
_currentState.OnExit();
}
_previousState = _currentState;
_currentState = newState;
_currentState?.OnEnter();
}
public void Update(float deltaTime)
{
if (_currentState != null)
{
_currentState.OnUpdate(deltaTime);
}
}
public void RevertToPreviousState()
{
ChangeState(_previousState);
}
public IState GetCurrentState()
{
return _currentState;
}
}
2023-10-19 15:00:19 +08:00
}