/*
* Copyright (c) 2012. HappyDroids LLC, All rights reserved.
*/
package com.happydroids.droidtowers;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.files.FileHandle;
import com.happydroids.droidtowers.gamestate.GameSave;
import com.happydroids.droidtowers.gamestate.GameSaveFactory;
import com.happydroids.droidtowers.gamestate.server.CloudGameSave;
import com.happydroids.droidtowers.gamestate.server.CloudGameSaveCollection;
import com.happydroids.droidtowers.gui.Dialog;
import com.happydroids.droidtowers.gui.OnClickCallback;
import com.happydroids.droidtowers.scenes.LoadTowerSplashScene;
import com.happydroids.droidtowers.scenes.components.SceneManager;
import com.happydroids.server.ApiCollectionRunnable;
import com.happydroids.server.HappyDroidServiceCollection;
import org.apach3.http.HttpResponse;
import static com.happydroids.HappyDroidConsts.DEBUG;
public class DebugUtils {
public static void loadFirstGameFound(VarArgRunnable loadGameRunnable) {
verifyEnvironment();
try {
FileHandle storage = Gdx.files.external(TowerConsts.GAME_SAVE_DIRECTORY);
FileHandle[] files = storage.list(".json");
if (files.length > 0) {
for (FileHandle file : files) {
if (!file.path().endsWith("png")) {
loadGameRunnable.run(file);
break;
}
}
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static void createNonSavableGame(boolean newGame) {
verifyEnvironment();
GameSave gameSave = new GameSave("DO NOT SAVE!", DifficultyLevel.EASY);
gameSave.setNewGame(newGame);
gameSave.disableSaving();
SceneManager.changeScene(LoadTowerSplashScene.class, gameSave);
}
private static void verifyEnvironment() {
if (DEBUG) {
return;
}
throw new RuntimeException("CANNOT BE USED IN PRODUCTION.");
}
public static void loadFirstGameFound() {
loadFirstGameFound(new VarArgRunnable() {
public void run(Object... args) {
try {
SceneManager.changeScene(LoadTowerSplashScene.class, GameSaveFactory.readFile((FileHandle) args[0]));
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public static void loadGameFromCloud(final int gameId) {
new CloudGameSaveCollection()
.filterBy("id", gameId)
.fetch(new ApiCollectionRunnable<HappyDroidServiceCollection<CloudGameSave>>() {
@Override
public void onSuccess(HttpResponse response, HappyDroidServiceCollection<CloudGameSave> collection) {
SceneManager.changeScene(LoadTowerSplashScene.class, collection.getObjects().get(0).getGameSave());
}
@Override
public void onError(HttpResponse response, int statusCode, HappyDroidServiceCollection<CloudGameSave> collection) {
new Dialog()
.setTitle("Could not find game: " + gameId)
.setMessage("Not able to load game: " + gameId + "\n\nReason: " + response.getStatusLine())
.addButton("Dismiss", new OnClickCallback() {
@Override
public void onClick(Dialog dialog) {
dialog.dismiss();
}
})
.show();
}
});
}
public static void loadGameByFilename(String fileName) {
try {
SceneManager.changeScene(LoadTowerSplashScene.class, GameSaveFactory.readFile(Gdx.files
.internal("testgames/" + fileName)));
} catch (Exception e) {
e.printStackTrace();
}
}
}