状態遷移って難しいけど、ゲーム部分をオブジェクト化して持ち回すモジュールを作る設計がいいんだと思う

ゲーム部分を複数同時に実行させたり、ポーズやリプレイまで(やろうと思えば)可能かどうかを念頭に置いて作ると状態遷移させやすいはず

同じ階層でゲーム→ポーズ→メニュー→ゲームみたいに遷移させるのってスレッド管理とかがウダウダになって難しい事が多い