I'm running in circles here trying to figure out how to implement game states!
Many of the articles I have read use an abstract class that game states inherit, and another "manager" class that handles pushing/popping game states.
This is fine I guess, but for the game I'm planning on making, I can only imagine I'll have MANY classes, alot of which are nearly identical. For example, I have one game state which is basically a view of my scene with a few GUI buttons. Another game state gets entered when the user clicks the "Terraforming" button, which allows the user to modify the terrain. Both of those have many similarities - they are both rendering the same scene, the controls are the same, much of the GUI is the same except for a new window that contains terraforming controls, and mouse clicking is handled differently. It sounds silly to completely reconstruct a new game state when 90% of it will be identical.
Am I thinking about this the wrong way? Or is there a better solution for managing game states?