package gr.sullenart.games.fruitcatcher; import gr.sullenart.games.fruitcatcher.models.GameState; import gr.sullenart.games.fruitcatcher.screens.GameScreenState; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.utils.Json; public class StateManager { private static final String STATE_DATA_FILE = "data/gamestate-v2.json"; public static class StateBundle { public GameScreenState gameScreenState; public GameState gameState; } public void persist(GameScreenState gameScreenState, GameState gameState) { FileHandle stateDataFile = Gdx.files.local(STATE_DATA_FILE); StateBundle stBundle = new StateBundle(); stBundle.gameScreenState = gameScreenState; stBundle.gameState = gameState; Json json = new Json(); String state = json.toJson(stBundle); stateDataFile.writeString(state, false); //Gdx.app.log("GameScreen", state); } public StateBundle retrieveState() { FileHandle stateDataFile = Gdx.files.local(STATE_DATA_FILE); if( stateDataFile.exists() ) { Json json = new Json(); try { String stateStr = stateDataFile.readString(); return json.fromJson(StateBundle.class, stateStr ); } catch( Exception e ) { Gdx.app.error( "StateManager", "Unable to parse existing game screen state data file", e ); } } return null; } }