should state machine have ability to add/remove
are state machines meant to be dynamic?
lets say i got deez:
lets say i got deez:
c#
public class State<TArgs>
{
public event EventHandler<TArgs> OnEnter;
public void Enter(object sender, TArgs e)
{
OnEnter?.Invoke(sender, e);
}
public event EventHandler<TArgs> OnExit;
public void Exit(object sender, TArgs e)
{
OnExit?.Invoke(sender, e);
}
}
public class StateMachine<TArgs>
{
private State<TArgs> _currentState;
public State<TArgs> CurrentState
{
get
{
return _currentState;
}
set
{
if (_currentState != value)
{
if (_currentState is not null)
{
_currentState.Exit(this, StateArguments);
}
value.Enter(this, StateArguments);
_currentState = value;
}
}
}
//adding/removing omitted for brevity :trolol:
}c#
public class State<TArgs>
{
public event EventHandler<TArgs> OnEnter;
public void Enter(object sender, TArgs e)
{
OnEnter?.Invoke(sender, e);
}
public event EventHandler<TArgs> OnExit;
public void Exit(object sender, TArgs e)
{
OnExit?.Invoke(sender, e);
}
}
public class StateMachine<TArgs>
{
private State<TArgs> _currentState;
public State<TArgs> CurrentState
{
get
{
return _currentState;
}
set
{
if (_currentState != value)
{
if (_currentState is not null)
{
_currentState.Exit(this, StateArguments);
}
value.Enter(this, StateArguments);
_currentState = value;
}
}
}
//adding/removing omitted for brevity :trolol:
}