feat: serialized state machine & states

This commit is contained in:
2025-04-30 19:20:45 +03:00
parent d2ca85568f
commit bd5eb432b7
4 changed files with 36 additions and 6 deletions

View File

@@ -2,19 +2,33 @@ using Syntriax.Engine.Core;
namespace Syntriax.Engine.Systems.StateMachine;
public class State : IState
public class State : BaseEntity, IState
{
public event IState.StateUpdateEventHandler? OnStateUpdate = null;
public event IState.StateTransitionedFromEventHandler? OnStateTransitionedFrom = null;
public event IState.StateTransitionedToEventHandler? OnStateTransitionedTo = null;
public event IState.StateTransitionReadyEventHandler? OnStateTransitionReady = null;
public event INameable.NameChangedEventHandler? OnNameChanged = null;
private readonly List<StateTransition> transitions = [];
private readonly Dictionary<string, StateTransition> possibleTransitions = [];
private string _name = "Default State Name";
public string Name { get; set; } = "Default State Name";
public IReadOnlyList<StateTransition> Transitions => transitions;
public IReadOnlyDictionary<string, StateTransition> PossibleTransitions => possibleTransitions;
public string Name
{
get => _name;
set
{
if (_name.CompareTo(value) == 0)
return;
string previousName = _name;
_name = value;
OnNameChanged?.Invoke(this, previousName);
}
}
public void RemoveTransition(string name)
{