Summary
We’ve covered a lot in this chapter and, at this point, you might be wondering whether the State pattern and FSMs have become too tangled up together to be of any real use. Just know that I used FSMs in this chapter not to confuse you, but to show you that the State pattern can be used in situations where your states are largely static (meaning the transitions don’t play a major part, like a network connection being active or closed) and when your states are dependent on their transitions (like in a character controller or turn-based battle system). Both implementations are correct and useful, especially when combined to fit your project!
Remember, the State pattern is best suited for breaking bloated decision trees into standalone behaviors with each concrete state determining how it behaves when it’s activated, while it’s running, and when it ends. Hierarchical state machines can share common behaviors across different states while concurrent...