Did I implement State Machine Pattern correctly? - C#