sharplib/fsm/FSM.cs
Marc Hernandez dbdd6ea748 x) Add observable list
x) Fix immutability helpers
x) Small FSM fixes
2024-01-14 01:33:07 -08:00

55 lines
728 B
C#

using System;
namespace fsm;
public class Context{
}
public class State<T, CTX>
where T : State<T, CTX>
where CTX : Context
{
virtual public void onEnter(CTX ctx, State<T, CTX> oldState)
{
}
virtual public void onExit(CTX ctx, State<T, CTX> newState)
{
}
}
public class FSM<T, CTX, ST>
where T : FSM<T, CTX, ST>
where CTX : Context
where ST : State<ST, CTX>
{
public CTX Context { get; private set; }
public ST State { get; private set; }
public FSM(CTX context, ST state)
{
Context = context;
State = state;
State.onEnter( Context, state );
}
public void Transition(ST newState)
{
State.onExit( Context, newState );
newState.onEnter( Context, State );
State = newState;
}
}