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;
}
}