This project implements a Finite-State-Machine (FSM) designed to be used in games.
Furthermore it implements even a Stack-Based-FSM (SBFSM). So you may tell it to 'continue with the last state before the active one'.
You describe your FSM using a nice and well documented DSL (Domain Specific Language).
It comes in two flavors (described in the README.md). A plain state-machine and one that needs MonoGame since it uses the GameTime object. That enables you to 'time' the transitions (say: duck, then stand up after 5 seconds).
Feel free to comment, PR or just use it.
Nuget provided in README.md on Github.
(Since this is not a game, maybe I should move this topic, but I don't know where. Suggestions are welcome.)