/* * Copyright (c) 2012. HappyDroids LLC, All rights reserved. */ package com.happydroids.droidtowers.scenes; import com.happydroids.droidtowers.gamestate.server.CloudGameSave; import com.happydroids.droidtowers.gamestate.server.CloudGameSaveCollection; import com.happydroids.droidtowers.gamestate.server.TowerGameService; import com.happydroids.droidtowers.gui.Dialog; import com.happydroids.droidtowers.gui.OnClickCallback; import com.happydroids.droidtowers.scenes.components.SceneManager; import com.happydroids.server.ApiCollectionRunnable; import com.happydroids.server.HappyDroidServiceCollection; import org.apach3.http.HttpResponse; import org.apach3.http.NameValuePair; public class LaunchGameUriAction { void checkAuthAndLoadGame(final NameValuePair gameId) { TowerGameService.instance().afterDeviceIdentification(new Runnable() { public void run() { if (TowerGameService.instance().isAuthenticated()) { fetchAndLoadGameFromCloud(gameId); } else { forceAuthentication(gameId); } } }); } void forceAuthentication(final NameValuePair gameId) { SceneManager.changeScene(PreloadAsssetsSplashScene.class, new Runnable() { public void run() { SceneManager.changeScene(HappyDroidConnect.class, new Runnable() { public void run() { checkAuthAndLoadGame(gameId); } }); } }); } void fetchAndLoadGameFromCloud(final NameValuePair nameValuePair) { final int gameId = Integer.parseInt(nameValuePair.getValue()); 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(); } }); } }