static void Main(string[] args)
        {
            MainGameLoopFSM gameFSM = new MainGameLoopFSM();

            gameFSM.AddState(GameStateID.WaitingToStart, new WaitingToStartState(gameFSM));
            gameFSM.AddState(GameStateID.Playing, new PlayingState(gameFSM));
            gameFSM.AddState(GameStateID.EndSession, new SessionEndedState(gameFSM));

            gameFSM.Start(GameStateID.WaitingToStart, null);
        }
 public WaitingToStartState(MainGameLoopFSM invokingFSM)
 {
     this.InvokingFSM = invokingFSM;
 }
 public SessionEndedState(MainGameLoopFSM invokingFSM)
 {
     this.InvokingFSM = invokingFSM;
 }
 public PlayingState(MainGameLoopFSM invokingFSM)
 {
     this.InvokingFSM = invokingFSM;
 }