using Godot;
using Godot.Collections;

namespace Cirno.Scripts.Components.FSM;

public abstract partial class State : Node2D
{
    // [Export]
    // public Array<FSMStateModule> Modules { get; private set; } = new();

    public virtual int StateId { get; }

    protected ActorStateMachine _stateMachine;

    public virtual void Init(ActorStateMachine stateMachine)
    {
        _stateMachine = stateMachine;

        // foreach (var module in Modules) 
        // {
        //     //module.Init()
        // }
    }

    public abstract void EnterState();

    public abstract void ExitState();

    public abstract void ProcessState(double delta);
    public abstract void PhysicsProcessState(double delta);

}