Getting some decent reviews so that's good.
I've been thinking about a better way to structure such programs in future. As it stands I put each game state in a separate file with some module level variables (far too many, but I was in a rush!) and their own update and render functions, calling whichever was required from the main file's OnUpdate() and OnRender()
Previously (in other languages) I've used classes for each state but I'm not sure how this would impact memory - instantiating Play(), Menu(), Options() etc in the main file and calling their methods as required would surely be hungrier than just calling functions in various modules.
How does everyone else do it?