first.
15
README.md
Normal file
@@ -0,0 +1,15 @@
|
||||
## Introduction
|
||||
|
||||
A play-clj game in which ... well, that part is up to you.
|
||||
|
||||
## Contents
|
||||
|
||||
* `android/src` Android-specific code
|
||||
* `desktop/resources` Images, audio, and other files
|
||||
* `desktop/src` Desktop-specific code
|
||||
* `desktop/src-common` Cross-platform game code
|
||||
* `ios/src` iOS-specific code
|
||||
|
||||
## Building
|
||||
|
||||
All projects can be built using [Nightcode](https://nightcode.info/), or on the command line using [Leiningen](https://github.com/technomancy/leiningen) with the [lein-droid](https://github.com/clojure-android/lein-droid) and [lein-fruit](https://github.com/oakes/lein-fruit) plugins.
|
||||
27
android/AndroidManifest.xml
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="advent.core"
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0" >
|
||||
|
||||
<uses-sdk android:minSdkVersion="15" />
|
||||
|
||||
<application
|
||||
android:icon="@drawable/ic_launcher"
|
||||
android:label="@string/app_name">
|
||||
<activity android:name=".SplashActivity"
|
||||
android:theme="@android:style/Theme.Translucent.NoTitleBar">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name=".AndroidLauncher">
|
||||
<intent-filter>
|
||||
<action android:name='advent.core.MAIN'/>
|
||||
<category android:name='android.intent.category.DEFAULT'/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
BIN
android/libs/armeabi-v7a/libgdx-box2d.so
Normal file
BIN
android/libs/armeabi-v7a/libgdx-bullet.so
Normal file
BIN
android/libs/armeabi-v7a/libgdx.so
Normal file
BIN
android/libs/armeabi/libgdx-box2d.so
Normal file
BIN
android/libs/armeabi/libgdx-bullet.so
Normal file
BIN
android/libs/armeabi/libgdx.so
Normal file
BIN
android/libs/x86/libgdx-box2d.so
Normal file
BIN
android/libs/x86/libgdx-bullet.so
Normal file
BIN
android/libs/x86/libgdx.so
Normal file
37
android/project.clj
Normal file
@@ -0,0 +1,37 @@
|
||||
(defproject advent "0.0.1-SNAPSHOT"
|
||||
:description "FIXME: write description"
|
||||
|
||||
:dependencies [[com.badlogicgames.gdx/gdx "1.3.0" :use-resources true]
|
||||
[com.badlogicgames.gdx/gdx-backend-android "1.3.0"]
|
||||
[com.badlogicgames.gdx/gdx-box2d "1.3.0"]
|
||||
[com.badlogicgames.gdx/gdx-bullet "1.3.0"]
|
||||
[neko/neko "3.0.2"]
|
||||
[org.clojure-android/clojure "1.6.0-RC1" :use-resources true]
|
||||
[play-clj "0.3.9"]]
|
||||
:profiles {:dev {:dependencies [[android/tools.nrepl "0.2.0-bigstack"]
|
||||
[compliment "0.1.3"]]
|
||||
:android {:aot :all-with-unused}}
|
||||
:release {:android
|
||||
{;; Specify the path to your private
|
||||
;; keystore and the the alias of the
|
||||
;; key you want to sign APKs with.
|
||||
;; :keystore-path "/home/user/.android/private.keystore"
|
||||
;; :key-alias "mykeyalias"
|
||||
:aot :all}}}
|
||||
|
||||
:android {;; Specify the path to the Android SDK directory either
|
||||
;; here or in your ~/.lein/profiles.clj file.
|
||||
;; :sdk-path "/home/user/path/to/android-sdk/"
|
||||
|
||||
;; Uncomment this if dexer fails with OutOfMemoryException
|
||||
;; :force-dex-optimize true
|
||||
|
||||
:assets-path "../desktop/resources"
|
||||
:native-libraries-paths ["libs"]
|
||||
:target-version "15"
|
||||
:aot-exclude-ns ["clojure.parallel" "clojure.core.reducers"]
|
||||
:dex-opts ["-JXmx2048M"]}
|
||||
|
||||
:source-paths ["src/clojure" "../desktop/src-common"]
|
||||
:java-source-paths ["src/java" "gen"]
|
||||
:javac-options ["-target" "1.6" "-source" "1.6" "-Xlint:-options"])
|
||||
11
android/res/anim/splash_rotation.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:interpolator="@android:anim/linear_interpolator">
|
||||
<rotate
|
||||
android:duration="2000"
|
||||
android:fromDegrees="0"
|
||||
android:pivotX="49.566%"
|
||||
android:pivotY="66.65%"
|
||||
android:repeatCount="infinite"
|
||||
android:toDegrees="360"/>
|
||||
</set>
|
||||
BIN
android/res/drawable-hdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
BIN
android/res/drawable-hdpi/splash_circle.png
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
BIN
android/res/drawable-hdpi/splash_droid.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
android/res/drawable-hdpi/splash_hands.png
Normal file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
android/res/drawable-ldpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
android/res/drawable-mdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
6
android/res/drawable/splash_background.xml
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
|
||||
<corners android:radius="20dp"/>
|
||||
<padding android:left="10dp" android:right="10dp" android:top="10dp" android:bottom="10dp"/>
|
||||
<solid android:color="@android:color/black"/>
|
||||
</shape>
|
||||
59
android/res/layout/splashscreen.xml
Normal file
@@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:orientation="vertical"
|
||||
android:layout_margin="10dp"
|
||||
android:background="@drawable/splash_background" >
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center" >
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/splash_droid"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/splash_droid" >
|
||||
</ImageView>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/splash_circles"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/splash_circle" >
|
||||
</ImageView>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/splash_droid_hands"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/splash_hands" >
|
||||
</ImageView>
|
||||
</RelativeLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/splash_app_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="18dp"
|
||||
android:text="Application name"
|
||||
android:textSize="30sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="18dp"
|
||||
android:text="Please wait for the application to load..." />
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
6
android/res/values/strings.xml
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<string name="app_name">advent</string>
|
||||
|
||||
</resources>
|
||||
20
android/src/java/advent/core/AndroidLauncher.java
Normal file
@@ -0,0 +1,20 @@
|
||||
package advent.core;
|
||||
|
||||
import clojure.lang.RT;
|
||||
import clojure.lang.Symbol;
|
||||
|
||||
import com.badlogic.gdx.backends.android.AndroidApplication;
|
||||
import com.badlogic.gdx.Game;
|
||||
|
||||
public class AndroidLauncher extends AndroidApplication {
|
||||
public void onCreate (android.os.Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
RT.var("clojure.core", "require").invoke(Symbol.intern("advent.core"));
|
||||
try {
|
||||
Game game = (Game) RT.var("advent.core", "advent").deref();
|
||||
initialize(game);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
74
android/src/java/advent/core/SplashActivity.java
Normal file
@@ -0,0 +1,74 @@
|
||||
package advent.core;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Bundle;
|
||||
import android.view.animation.Animation;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import android.util.Log;
|
||||
|
||||
import clojure.lang.Symbol;
|
||||
import clojure.lang.Var;
|
||||
import clojure.lang.RT;
|
||||
|
||||
import advent.core.R;
|
||||
|
||||
public class SplashActivity extends Activity {
|
||||
|
||||
private static boolean firstLaunch = true;
|
||||
private static String TAG = "Splash";
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle bundle) {
|
||||
super.onCreate(bundle);
|
||||
|
||||
if (firstLaunch) {
|
||||
firstLaunch = false;
|
||||
setupSplash();
|
||||
loadClojure();
|
||||
} else {
|
||||
proceed();
|
||||
}
|
||||
}
|
||||
|
||||
public void setupSplash() {
|
||||
setContentView(R.layout.splashscreen);
|
||||
|
||||
TextView appNameView = (TextView)findViewById(R.id.splash_app_name);
|
||||
appNameView.setText(R.string.app_name);
|
||||
|
||||
Animation rotation = AnimationUtils.loadAnimation(this, R.anim.splash_rotation);
|
||||
ImageView circleView = (ImageView)findViewById(R.id.splash_circles);
|
||||
circleView.startAnimation(rotation);
|
||||
}
|
||||
|
||||
public void proceed() {
|
||||
startActivity(new Intent("advent.core.MAIN"));
|
||||
finish();
|
||||
}
|
||||
|
||||
public void loadClojure() {
|
||||
new Thread(new Runnable(){
|
||||
@Override
|
||||
public void run() {
|
||||
Symbol CLOJURE_MAIN = Symbol.intern("neko.init");
|
||||
Var REQUIRE = RT.var("clojure.core", "require");
|
||||
REQUIRE.invoke(CLOJURE_MAIN);
|
||||
|
||||
Var INIT = RT.var("neko.init", "init");
|
||||
INIT.invoke(SplashActivity.this.getApplication());
|
||||
|
||||
try {
|
||||
Class.forName("advent.core.AndroidLauncher");
|
||||
} catch (ClassNotFoundException e) {
|
||||
Log.e(TAG, "Failed loading AndroidLauncher", e);
|
||||
}
|
||||
|
||||
proceed();
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
}
|
||||
20
desktop/project.clj
Normal file
@@ -0,0 +1,20 @@
|
||||
(defproject advent "0.0.1-SNAPSHOT"
|
||||
:description "FIXME: write description"
|
||||
|
||||
:dependencies [[com.badlogicgames.gdx/gdx "1.3.0"]
|
||||
[com.badlogicgames.gdx/gdx-backend-lwjgl "1.3.0"]
|
||||
[com.badlogicgames.gdx/gdx-box2d "1.3.0"]
|
||||
[com.badlogicgames.gdx/gdx-box2d-platform "1.3.0"
|
||||
:classifier "natives-desktop"]
|
||||
[com.badlogicgames.gdx/gdx-bullet "1.3.0"]
|
||||
[com.badlogicgames.gdx/gdx-bullet-platform "1.3.0"
|
||||
:classifier "natives-desktop"]
|
||||
[com.badlogicgames.gdx/gdx-platform "1.3.0"
|
||||
:classifier "natives-desktop"]
|
||||
[org.clojure/clojure "1.6.0"]
|
||||
[play-clj "0.3.9"]]
|
||||
|
||||
:source-paths ["src" "src-common"]
|
||||
:javac-options ["-target" "1.6" "-source" "1.6" "-Xlint:-options"]
|
||||
:aot [advent.core.desktop-launcher]
|
||||
:main advent.core.desktop-launcher)
|
||||
BIN
desktop/resources/bg.png
Normal file
|
After Width: | Height: | Size: 9.8 KiB |
BIN
desktop/resources/bg2.png
Normal file
|
After Width: | Height: | Size: 9.4 KiB |
BIN
desktop/resources/bg2.pxi
Normal file
BIN
desktop/resources/bg3.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
desktop/resources/bg3.pxi
Normal file
BIN
desktop/resources/left.pxa/0.pxi
Normal file
BIN
desktop/resources/left.pxa/1.pxi
Normal file
BIN
desktop/resources/left.pxa/2.pxi
Normal file
BIN
desktop/resources/left.pxa/3.pxi
Normal file
BIN
desktop/resources/left.pxa/4.pxi
Normal file
BIN
desktop/resources/left.pxa/5.pxi
Normal file
BIN
desktop/resources/left.pxa/6.pxi
Normal file
BIN
desktop/resources/left.pxa/7.pxi
Normal file
38
desktop/resources/left.pxa/CelData.plist
Normal file
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<array>
|
||||
<dict>
|
||||
<key>duration</key>
|
||||
<real>0.10000000149011612</real>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>duration</key>
|
||||
<real>0.10000000149011612</real>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>duration</key>
|
||||
<real>0.10000000149011612</real>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>duration</key>
|
||||
<real>0.10000000149011612</real>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>duration</key>
|
||||
<real>0.10000000149011612</real>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>duration</key>
|
||||
<real>0.10000000149011612</real>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>duration</key>
|
||||
<real>0.10000000149011612</real>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>duration</key>
|
||||
<real>0.10000000149011612</real>
|
||||
</dict>
|
||||
</array>
|
||||
</plist>
|
||||
BIN
desktop/resources/pal.pxpalette
Normal file
BIN
desktop/resources/player.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
desktop/resources/right.pxa/0.pxi
Normal file
BIN
desktop/resources/right.pxa/1.pxi
Normal file
BIN
desktop/resources/right.pxa/2.pxi
Normal file
BIN
desktop/resources/right.pxa/3.pxi
Normal file
BIN
desktop/resources/right.pxa/4.pxi
Normal file
BIN
desktop/resources/right.pxa/5.pxi
Normal file
BIN
desktop/resources/right.pxa/6.pxi
Normal file
BIN
desktop/resources/right.pxa/7.pxi
Normal file
38
desktop/resources/right.pxa/CelData.plist
Normal file
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<array>
|
||||
<dict>
|
||||
<key>duration</key>
|
||||
<real>0.10000000149011612</real>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>duration</key>
|
||||
<real>0.10000000149011612</real>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>duration</key>
|
||||
<real>0.10000000149011612</real>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>duration</key>
|
||||
<real>0.10000000149011612</real>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>duration</key>
|
||||
<real>0.10000000149011612</real>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>duration</key>
|
||||
<real>0.10000000149011612</real>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>duration</key>
|
||||
<real>0.10000000149011612</real>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>duration</key>
|
||||
<real>0.10000000149011612</real>
|
||||
</dict>
|
||||
</array>
|
||||
</plist>
|
||||
47
desktop/src-common/advent/core.clj
Normal file
@@ -0,0 +1,47 @@
|
||||
(ns advent.core
|
||||
(:require [play-clj.core :refer :all]
|
||||
[play-clj.ui :refer :all]
|
||||
[play-clj.g2d :refer :all]))
|
||||
|
||||
(defscreen main-screen
|
||||
:on-show
|
||||
(fn [screen entities]
|
||||
(update! screen :renderer (stage) :camera (orthographic))
|
||||
(let [player-sheet (texture! (texture "player.png") :split 18 36)
|
||||
background (texture "bg3.png")]
|
||||
[(assoc background :scale-y 1.0 :scale-x 1.0 :origin-y 0 :origin-x 0 :ego? false :x -60 :y -34)
|
||||
{:right (animation 0.1 (for [i (range 8)]
|
||||
(texture (aget player-sheet 0 i))))
|
||||
:left (animation 0.1 (for [i (range 8)]
|
||||
(texture (aget player-sheet 1 i))))
|
||||
:anim (animation 0.1 (for [i (range 8)]
|
||||
(texture (aget player-sheet 0 i))))
|
||||
:x 0 :y 25 :origin-x 0 :origin-y 0 :x-velocity 1
|
||||
:ego? true}]))
|
||||
|
||||
:on-render
|
||||
(fn [screen entities]
|
||||
(clear!)
|
||||
(render! screen (for [entity entities]
|
||||
(if (:ego? entity)
|
||||
(merge (animation->texture screen (:anim entity))
|
||||
{:ego? (:ego? entity) :x (+ (:x entity) (:x-velocity entity)) :y 0 :origin-x 0 :origin-y 0 :anim (:anim entity) :x-velocity (:x-velocity entity) :left (:left entity) :right (:right entity)}
|
||||
(when (> (:x entity) (width screen))
|
||||
{:x-velocity -1 :anim (:left entity)})
|
||||
(when (< (:x entity) 0)
|
||||
{:x-velocity 1 :anim (:right entity)}))
|
||||
|
||||
entity))))
|
||||
:on-resize
|
||||
(fn [screen entities]
|
||||
(height! screen 135))
|
||||
|
||||
:on-scrolled
|
||||
(fn [screen entities]
|
||||
(set! (. (:camera screen) zoom) (min 1.5 (max (+ (.zoom (:camera screen)) (* 0.01 (:amount screen))) 1)))
|
||||
nil))
|
||||
|
||||
(defgame advent
|
||||
:on-create
|
||||
(fn [this]
|
||||
(set-screen! this main-screen)))
|
||||
10
desktop/src/advent/core/desktop_launcher.clj
Normal file
@@ -0,0 +1,10 @@
|
||||
(ns advent.core.desktop-launcher
|
||||
(:require [advent.core :refer :all])
|
||||
(:import [com.badlogic.gdx.backends.lwjgl LwjglApplication]
|
||||
[org.lwjgl.input Keyboard])
|
||||
(:gen-class))
|
||||
|
||||
(defn -main
|
||||
[]
|
||||
(LwjglApplication. advent "advent" 1920 1080)
|
||||
(Keyboard/enableRepeatEvents true))
|
||||
61
ios/Info.plist.xml
Normal file
@@ -0,0 +1,61 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>advent</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>advent</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>advent.core</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>advent</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>${app.version}</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UIDeviceFamily</key>
|
||||
<array>
|
||||
<integer>1</integer>
|
||||
<integer>2</integer>
|
||||
</array>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>CFBundleIcons</key>
|
||||
<dict>
|
||||
<key>CFBundlePrimaryIcon</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>Icon</string>
|
||||
<string>Icon-72</string>
|
||||
</array>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
BIN
ios/libs/libObjectAL.a
Normal file
BIN
ios/libs/libgdx-box2d.a
Normal file
BIN
ios/libs/libgdx-bullet.a
Normal file
BIN
ios/libs/libgdx.a
Normal file
17
ios/project.clj
Normal file
@@ -0,0 +1,17 @@
|
||||
(defproject advent "0.0.1-SNAPSHOT"
|
||||
:description "FIXME: write description"
|
||||
:dependencies [[com.badlogicgames.gdx/gdx "1.3.0"]
|
||||
[com.badlogicgames.gdx/gdx-backend-robovm "1.3.0"]
|
||||
[com.badlogicgames.gdx/gdx-box2d "1.3.0"]
|
||||
[com.badlogicgames.gdx/gdx-bullet "1.3.0"]
|
||||
[org.clojure/clojure "1.6.0"]
|
||||
[play-clj "0.3.9"]]
|
||||
:source-paths ["src/clojure" "../desktop/src-common"]
|
||||
:java-source-paths ["src/java"]
|
||||
:javac-options ["-target" "1.7" "-source" "1.7" "-Xlint:-options"]
|
||||
:ios {:robovm-opts ["-forcelinkclasses" "advent.**:clojure.**:com.badlogic.**:play_clj.**"
|
||||
"-libs" "libs/libObjectAL.a:libs/libgdx.a:libs/libgdx-box2d.a:libs/libgdx-bullet.a"
|
||||
"-frameworks" "UIKit:OpenGLES:QuartzCore:CoreGraphics:OpenAL:AudioToolbox:AVFoundation"
|
||||
"-resources" "../desktop/resources/**"]}
|
||||
:aot :all
|
||||
:main advent.core.IOSLauncher)
|
||||
30
ios/src/java/advent/core/IOSLauncher.java
Normal file
@@ -0,0 +1,30 @@
|
||||
package advent.core;
|
||||
|
||||
import clojure.lang.RT;
|
||||
import clojure.lang.Symbol;
|
||||
|
||||
import com.badlogic.gdx.*;
|
||||
import com.badlogic.gdx.backends.iosrobovm.*;
|
||||
|
||||
import org.robovm.apple.foundation.*;
|
||||
import org.robovm.apple.uikit.*;
|
||||
|
||||
public class IOSLauncher extends IOSApplication.Delegate {
|
||||
protected IOSApplication createApplication() {
|
||||
IOSApplicationConfiguration config = new IOSApplicationConfiguration();
|
||||
RT.var("clojure.core", "require").invoke(Symbol.intern("advent.core"));
|
||||
try {
|
||||
Game game = (Game) RT.var("advent.core", "advent").deref();
|
||||
return new IOSApplication(game, config);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void main(String[] argv) {
|
||||
NSAutoreleasePool pool = new NSAutoreleasePool();
|
||||
UIApplication.main(argv, null, IOSLauncher.class);
|
||||
pool.close();
|
||||
}
|
||||
}
|
||||