package advent.core; import java.util.*; import clojure.lang.RT; import clojure.lang.Symbol; // import advent.ios.*; import com.badlogic.gdx.*; import com.badlogic.gdx.backends.iosrobovm.*; import org.robovm.apple.foundation.*; import org.robovm.apple.uikit.*; import org.robovm.apple.glkit.GLKViewDrawableColorFormat; import org.robovm.apple.glkit.GLKViewDrawableDepthFormat; import org.robovm.apple.storekit.*; public class IOSLauncher extends IOSApplication.Delegate { TransactionObserver transactionObserver; @Override public boolean didFinishLaunching (UIApplication application, UIApplicationLaunchOptions launchOptions) { System.out.println("Did finish loading"); try { transactionObserver = new TransactionObserver(); SKPaymentQueue.getDefaultQueue().addTransactionObserver(transactionObserver); boolean result = super.didFinishLaunching(application, launchOptions); new GameCenter().login(application.getKeyWindow()); return result; } catch (Exception e) { System.out.println(e.toString()); throw e; } } @Override public void willTerminate(UIApplication application) { SKPaymentQueue.getDefaultQueue().removeTransactionObserver(transactionObserver); super.willTerminate(application); } protected IOSApplication createApplication() { IOSApplicationConfiguration config = new IOSApplicationConfiguration(); // config.colorFormat = GLKViewDrawableColorFormat.SRGBA8888; // config.depthFormat = GLKViewDrawableDepthFormat._24; config.orientationLandscape = true; config.preferredFramesPerSecond = 30; config.useAccelerometer=false; config.useCompass=false; System.out.println("application created."); try { HashSet products = new HashSet(); products.add("fullgame"); SKProductsRequest request = new SKProductsRequest(products); request.setDelegate(new ProductDelegate()); request.start(); RT.var("clojure.core", "require").invoke(Symbol.intern("advent.core")); RT.var("clojure.core", "require").invoke(Symbol.intern("advent.ios")); System.out.println("clojure loaded"); NSDictionary infoDictionary = NSBundle.getMainBundle().getInfoDictionary(); String version = infoDictionary.get(new NSString("CFBundleShortVersionString")).toString(); RT.var("advent.version", "version-override").bindRoot(version); Game game = (Game) RT.var("advent.core", "advent").deref(); System.out.println("game loaded"); return new IOSApplication(game, config); } catch (Exception e) { System.out.println(e.toString()); e.printStackTrace(); throw e; } } public static void main(String[] argv) { NSAutoreleasePool pool = new NSAutoreleasePool(); UIApplication.main(argv, null, IOSLauncher.class); pool.close(); } @Override public void didReceiveMemoryWarning(UIApplication application) { for (int i = 0; i < 3; i++) { System.gc(); } } }