Add FSM components for player and enemy state management, including initialization and module resolution

This commit is contained in:
MaddoScientisto 2026-02-26 23:13:57 +01:00
commit b6cc5a00e8
57 changed files with 526 additions and 506 deletions

View file

@ -9,19 +9,34 @@ public partial class Dead : BaseState<PlayerState, CharacterBody3D>
{
public override PlayerState StateId => PlayerState.Dead;
[Export]
private ActorResourceProvider _motivationProvider;
[Export]
private InputProvider _inputProvider;
[Export]
private ActorResourceProvider _healthProvider;
[Export]
private PlayerAnimationProvider3D _animationProvider;
private bool _isGameOver = false;
private bool _isGameOver;
public override void Init(IStateMachine<PlayerState, CharacterBody3D> machine)
{
base.Init(machine);
// try to obtain common providers via modules/storage
if (machine is IsoPlayerStateMachine sm)
{
var storage = sm.Storage;
// store references if present on storage
_motivationProvider = storage.Root.GetNodeOrNull<ActorResourceProvider>("MotivationProvider");
_healthProvider = storage.Root.GetNodeOrNull<ActorResourceProvider>("HealthProvider");
}
// fallback to searching on the actor
_motivationProvider ??= StateMachine.GetModule<ActorResourceProvider>();
_healthProvider ??= StateMachine.GetModule<ActorResourceProvider>();
_animationProvider ??= StateMachine.GetModule<PlayerAnimationProvider3D>();
}
public override void EnterState()
{
base.EnterState();
@ -50,10 +65,6 @@ public partial class Dead : BaseState<PlayerState, CharacterBody3D>
Hud.Instance.HideTerminated();
}
public override void PhysicsProcessState(double delta)
{
base.PhysicsProcessState(delta);
}
public override void ProcessState(double delta)
{