How to keep track of previous scenes and return to them in libgdx
Posted
by
MxyL
on Game Development
See other posts from Game Development
or by MxyL
Published on 2014-04-06T18:04:30Z
Indexed on
2014/06/06
3:42 UTC
Read the original article
Hit count: 248
I have three scenes: SceneTitle
, SceneMenu
, SceneLoad
.
(The difference between the title scene and the menu scene is that the title scene is what you see when you first turn on the game, and the menu scene is what you can access during the game. During the game, meaning, after you've hit "play!" in the title scene.)
I provide the ability to save progress and consequently load a particular game. An issue that I've run into is being able to easily keep track of the previous scene. For example, if you enter the load scene and then decide to change your mind, the game needs to go back to where you were before; this isn't something that can be hardcoded.
Now, an easy solution off the top of my head is to simply maintain a scene stack
, which basically keeps track of history for me. A simple transaction would be as follows
- I'm currently in the menu scene, so the top of the stack is
SceneMenu
- I go to the load scene, so the game pushes
SceneLoad
onto the stack. - When I return from the load scene, the game pops
SceneLoad
off the stack and initializes the scene that's currently at the top, which isSceneMenu
I'm coding in Java, so I can't simply pass around Classes as if they were objects, so I've decided implemented as enum for eac scene and put that on the stack and then have my scene managing class go through a list of if
conditions to return the appropriate instance of the class.
How can I implement my scene stack without having to do too much work maintaining it?
© Game Development or respective owner