diff --git a/desktop/project.clj b/desktop/project.clj
index 3fc88a16..2db2eae1 100644
--- a/desktop/project.clj
+++ b/desktop/project.clj
@@ -5,20 +5,16 @@
:manifest {"Implementation-Version" ~version}
:uberjar-name "advent-standalone.jar"
- :dependencies [[com.badlogicgames.gdx/gdx "1.9.3"]
- [com.badlogicgames.gdx/gdx-backend-lwjgl "1.9.3"]
- [com.badlogicgames.gdx/gdx-platform "1.9.3" :classifier "natives-desktop"]
- [org.skummet/clojure "1.6.0"]
+ :dependencies [[com.badlogicgames.gdx/gdx "1.9.4"]
+ [com.badlogicgames.gdx/gdx-backend-lwjgl "1.9.4"]
+ [com.badlogicgames.gdx/gdx-platform "1.9.4" :classifier "natives-desktop"]
+ [org.clojure/clojure "1.8.0"]
[org.clojars.notid/tools.logging "0.3.2-SNAPSHOT"]
[play-clj "0.4.6-BRYCE"]
[log4j/log4j "1.2.16"]
[org.clojure/data.priority-map "0.0.5"]
- [org.clojure/core.async "0.2.385"]
- [org.clojure/core.async "0.1.346.0-17112a-alpha" :exclusions [org.clojure/clojure]]
- [org.im4java/im4java "1.4.0"]]
- :plugins [[org.skummet/lein-skummet "0.2.2"]]
-
- :exclusions [[org.clojure/clojure]]
+ [org.clojure/core.async "0.2.385"]]
+
:source-paths ["src" "src-common"]
:javac-options ["-target" "1.7" "-source" "1.7" "-Xlint:-options"]
:omit-source true
@@ -28,6 +24,9 @@
"pack-font" ["run" "-m" "com.badlogic.gdx.tools.texturepacker.TexturePacker" "resources/font-pack/" "resources/font-pack/packed/"]
"script" ["run" "-m" "advent.analyze/dump-speech"]}
:profiles {
+ :uberjar {
+ :jvm-opts ["-Duse-repl=false" "-Dui_scale=1.0" "-Dno-steam=true" "-Dclojure.compiler.direct-linking=true" "-Dis-desktop=true"]
+ }
:dev {
:source-paths ["src" "src-common" "src-dev"]
:jvm-opts ["-Duse-repl=true" "-Dui_scale=1.0" "-Dno-steam=true" "-Dclojure.compiler.direct-linking=true" "-Dis-desktop=true"]
diff --git a/desktop/src-common/advent/screens/dialogue.clj b/desktop/src-common/advent/screens/dialogue.clj
index 1be578d1..152be672 100644
--- a/desktop/src-common/advent/screens/dialogue.clj
+++ b/desktop/src-common/advent/screens/dialogue.clj
@@ -3,6 +3,7 @@
[play-clj.ui :refer :all]
[play-clj.utils :refer :all]
[play-clj.g2d :refer :all]
+ [clojure.tools.logging :as log]
[clojure.set :as set]
[advent.pathfind]
[advent.tween :as tween]
@@ -322,6 +323,7 @@
(and utils/mobile? action-cursor (not item-cursor) (not= :main action-cursor))
(assoc-in [:action-icon]
(assoc
+ ;; todo reflection here
(texture (aget all-icons 0 (.indexOf utils/+all-cursors+ (or item-cursor action-cursor))))
:x (* utils/ui-scale 32 4) :y (* utils/ui-scale 4)
:width (* 18 4 utils/ui-scale) :height (* 16 4 utils/ui-scale)))
diff --git a/desktop/src-common/advent/screens/rooms.clj b/desktop/src-common/advent/screens/rooms.clj
index 15c00077..6df3fa78 100644
--- a/desktop/src-common/advent/screens/rooms.clj
+++ b/desktop/src-common/advent/screens/rooms.clj
@@ -1,5 +1,6 @@
(ns advent.screens.rooms
- (:require [advent.zone :as zone])
+ (:require [advent.zone :as zone]
+ [advent.utils :as utils])
(:import [com.badlogic.gdx.graphics Pixmap Pixmap$Filter Texture Texture$TextureFilter]
[com.badlogic.gdx.graphics.g2d TextureRegion]
[com.badlogic.gdx.utils.viewport FitViewport]
@@ -10,20 +11,21 @@
(merge entity
{:id id
:mouse-in? (fn [entities x y]
- (if-let [box (get-in entities [:room :entities id :box])]
- ((apply zone/box box) x y)
- (let [{entity-x :x entity-y :y width :width scale-x :scale-x scale-y :scale-y origin-x :origin-x origin-y :origin-y height :height region :object} (get-in entities [:room :entities id])
-
- width (or width (if (instance? TextureRegion region ) (.getRegionWidth ^TextureRegion region) 0))
- height (or height (if (instance? TextureRegion region ) (.getRegionHeight ^TextureRegion region) 0))
- entity-x (- entity-x (* (or origin-x 0)
- (or scale-x 1)))
- entity-y (- entity-y (* (or origin-y 0)
- (or scale-y 1)))]
-
- ((zone/box entity-x entity-y
- (+ entity-x (* width (or scale-x 1)))
- (+ entity-y (* height (or scale-y 1)))) x y))))}
+ (let [e (utils/get-entity entities id)]
+ (if-let [[bx1 by1 bx2 by2] (:box e)]
+ (zone/within bx1 by1 bx2 by2 x y)
+ (let [{entity-x :x entity-y :y width :width scale-x :scale-x scale-y :scale-y origin-x :origin-x origin-y :origin-y height :height region :object} (get-in entities [:room :entities id])
+
+ width (or width (if (instance? TextureRegion region ) (.getRegionWidth ^TextureRegion region) 0))
+ height (or height (if (instance? TextureRegion region ) (.getRegionHeight ^TextureRegion region) 0))
+ entity-x (unchecked-add (float entity-x) (unchecked-multiply (float (or origin-x 0))
+ (float (or scale-x 1))))
+ entity-y (unchecked-add (float entity-y) (unchecked-multiply (float (or origin-y 0))
+ (float (or scale-y 1))))]
+
+ (zone/within entity-x entity-y
+ (unchecked-add (float entity-x) (unchecked-multiply (float width) (float (or scale-x 1))))
+ (unchecked-add (float entity-y) (unchecked-multiply (float height) (float (or scale-y 1)))) x y)))))}
(when (or script scripts only-script)
{:get-script (fn [cursor [x y]]
(cond only-script
@@ -43,7 +45,8 @@
(merge spec
(when box
{:mouse-in? (fn [_ x y]
- ((apply zone/box box) x y))})
+ (let [[bx1 by1 bx2 by2] box]
+ (zone/within bx1 by1 bx2 by2 x y)))})
(when (or script scripts only-script)
{:get-script (fn [cursor [x y]]
(cond only-script
@@ -61,7 +64,6 @@
{:id id}))
entities (into {} (for [[id entity] entities]
[id (make-entity id entity)]))]
- (println "MAKING")
(merge params {:collision (advent.pathfind/map-from-resource collision)
:interactions interactions-as-list
:entities entities})))
diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj
index 2313fdd6..0e9bf1a1 100644
--- a/desktop/src-common/advent/screens/scene.clj
+++ b/desktop/src-common/advent/screens/scene.clj
@@ -41,7 +41,7 @@
[advent.screens.dialogue :refer [talking-screen toast-screen tooltip-screen]]
[advent.screens.inventory :refer [inventory-screen]]
- [clojure.core.async :refer [put! ! chan go thread take! alts!! dropping-buffer]])
+ [clojure.core.async :refer [put! poll! ! chan go thread take! alts!! dropping-buffer]])
(:import [com.badlogic.gdx.graphics Pixmap$Format Pixmap Pixmap$Filter Texture Texture$TextureFilter GL20 GL30]
[com.badlogic.gdx.graphics.g2d TextureRegion Animation Batch]
[com.badlogic.gdx.math Vector3 Matrix4]
@@ -773,7 +773,7 @@
(let [{{:keys [script-running? script-chan]} key} entities]
(if script-running?
entities
- (let [next-script ( entities
(assoc-in [key :started?] false)
@@ -861,17 +861,17 @@
(if (and (= current-frame-index (:current-frame-index entity) (:previous-frame-index entity))
(not (:force-rerender entity)))
entity
- (merge (assoc entity
- :object (.getKeyFrame ^Animation anim (- total-time anim-start) anim-loop?)
- :force-rerender nil
- :current-frame-index current-frame-index
- :previous-frame-index previous-frame-index
- :origin-x (or (-> entity :anim-origins (get anim) (nth 0))
- (:base-origin-x entity)
- (:origin-x entity))
- :origin-y (or (-> entity :anim-origins (get anim) (nth 1))
- (:base-origin-y entity)
- (:origin-y entity)))
+ (merge (-> entity
+ (assoc :object (.getKeyFrame ^Animation anim (- total-time anim-start) anim-loop?))
+ (assoc :force-rerender nil)
+ (assoc :current-frame-index current-frame-index)
+ (assoc :previous-frame-index previous-frame-index)
+ (assoc :origin-x (or (-> entity :anim-origins (get anim) (nth 0))
+ (:base-origin-x entity)
+ (:origin-x entity)))
+ (assoc :origin-y (or (-> entity :anim-origins (get anim) (nth 1))
+ (:base-origin-y entity)
+ (:origin-y entity))))
(or (-> entity :anim-merges (get anim))
(-> entity :anim-merges :default))))))
@@ -986,6 +986,8 @@
(Matrix4/mul (.val parallax-combined) (.val parallax-view))
+ ;; todo turn this into a thing that overrides projection matrices
+ ;; and renders using regular render
(let [^Batch batch (.getBatch renderer)]
@@ -1068,6 +1070,120 @@
(defn remove-cam-tweens [entities]
(update-in entities [:tweens] dissoc :cam-x :cam-y :cam-zoom))
+(defn render [{:keys [^OrthographicCamera camera ^FitViewport viewport ^Stage renderer] :as screen} {{:keys [last-pos ] [cursor-offset-x cursor-offset-y] :offset} :cursor :keys [tweens] :as entities} options]
+ #_(steam/update)
+ (.apply viewport)
+
+ (if (get-in entities [:closing? :value])
+
+ (let [entities (utils/apply-tweens screen entities tweens)
+ entities (update-current-sound-vols! entities)
+ entities (remove-ended-sounds screen entities)
+ get-rendered (partial get-rendered entities)
+ entities (loop [entities entities
+ [[k e] & rest] (seq (get-in entities [:room :entities]))]
+ (if k
+ (recur (update-in entities [:room :entities k] get-rendered) rest)
+ entities))
+ entities (grab-layers entities)
+ layers (get-in entities [:room :current-layers])
+ all-entities (-> layers (into (vals (get-in entities [:room :entities]))) (conj (:white-fade entities)))]
+ (screen! fade-screen :update-fade {:opacity (get-in entities [:fade :opacity])})
+ (doseq [m (vals (get-in entities [:musics]))]
+ (when m
+ (music! m :set-volume (utils/current-music-volume (get-in entities [:volume :value])))))
+
+ (clear!)
+ (doseq [e (sort-by :baseline all-entities)]
+ (if (:parallax e)
+ (render-parallax screen e)
+ (render! screen [e])))
+ entities)
+ (let [entities (fade-in-first-time-if-necessary screen entities)
+ entities (utils/apply-tweens screen entities tweens)
+ entities (update-cursor screen entities)
+ entities (start-script-if-necessary screen entities :fg-actions)
+ entities (update-from-script screen entities :fg-actions)
+ entities (start-script-if-necessary screen entities :bg-actions)
+ entities (update-from-script screen entities :bg-actions)
+ entities (update-from-room screen entities)
+ entities (update-from-hotspots screen entities)
+ [last-pos-x last-pos-y] (utils/unproject screen nil last-pos)
+ last-pos-x (double last-pos-x)
+ last-pos-y (double last-pos-y)
+ entities (if (and (@utils/settings :camera-man? true)
+ (not (get-in entities [:cam :paused?]))
+ (nil? (get-in entities [:tweens :cam-x]))
+ (= 1 (rand-int 20)))
+ (if (= (rand-int 2) 1)
+ (actions/pan-to screen entities
+ (get-in entities [:room :entities :ego :x])
+ (get-in entities [:room :entities :ego :y])
+ (constantly (get-in entities [:room :entities :ego :scale-x]))
+ tween/ease-in-out-quadratic
+ 5.0)
+ (actions/pan-to screen entities
+ (+ ^double (get-in entities [:cam :x] 0)
+ (- 10 ^double (rand-int 20)))
+ (+ ^double (get-in entities [:cam :y] 0)
+ (- 10 ^double (rand-int 20)))
+ (constantly (get-in entities [:room :entities :ego :scale-x]))
+ tween/ease-in-out-quadratic
+ 5.0))
+ entities)
+
+
+ entities (grab-layers entities)
+ update-room (fn [{:keys [anim update-fn] :as e}]
+ (let [e (if (:anim e)
+ (animate e screen)
+ e)
+
+ e (if update-fn
+ (update-fn screen (get-in entities [:room :entities]) e)
+ e)
+ e (get-rendered entities e)]
+ e))
+ entities (loop [room (transient (get-in entities [:room :entities]))
+ [[k e] & rest] (doall (seq (get-in entities [:room :entities])))]
+ (if k
+ (recur (assoc! room k (update-room e))
+ rest)
+ (assoc-in entities [:room :entities] (persistent! room))))
+ layers (get-in entities [:room :current-layers])
+ all-entities (-> layers (into (vals (get-in entities [:room :entities]))) (conj (:white-fade entities)))]
+
+ (screen! tooltip-screen :on-hover-start {:hover-text (get-in entities [:label :text])
+ :scene-viewport (:viewport screen)
+ :cursor (:cursor entities)
+ :x (unchecked-subtract last-pos-x
+ cursor-offset-x)
+ :y (unchecked-add (unchecked-subtract last-pos-y 16 )
+ cursor-offset-y)})
+
+ (clear!)
+ (screen! talking-screen :on-update-camera { :scene-viewport (:viewport screen) :scene-camera (:camera screen)})
+ (screen! fade-screen :update-fade { :opacity (get-in entities [:fade :opacity])})
+ (when true #_(not (get-in entities [:cam :paused?]))
+ (set! (. camera zoom) (:zoom (:cam entities)))
+ (set! (.. camera position x) (:x (:cam entities) 160.0))
+ (set! (.. camera position y) (:y (:cam entities) 120.0)))
+ (let [entities (if utils/mobile?
+ (utils/update-override screen entities options)
+ (utils/update-override screen entities options))
+ entities (play-key-sounds screen entities)
+ entities (update-current-sound-vols! entities)
+ entities (remove-ended-sounds screen entities)]
+ (doseq [m (vals (get-in entities [:musics]))]
+ (when m
+ (music! m :set-volume (utils/current-music-volume (get-in entities [:volume :value])))))
+ (doseq [e (doall (sort-by :baseline all-entities))]
+ (if (:parallax e)
+ (render-parallax screen e)
+ (render! screen [e])))
+
+ entities))))
+
(defscreen scene
:on-timer
@@ -1123,14 +1239,14 @@
:inside-antique (utils/make-music "music/inside-antique.ogg")
:town-1 (utils/make-music "music/town-music-1.ogg")
:town-2 (utils/make-music "music/town-music-2.ogg")
- #_#_:love (utils/make-music "music/love.ogg")
- #_#_:inside-fangald (utils/make-music "music/inside-fangald.ogg")
- #_#_:fight (utils/make-music "music/megaboss.mp3")
- #_#_:pull-sword (utils/make-music "music/pull-sword.ogg")
- #_#_:night (utils/make-music "music/night.ogg")
- #_#_:dream (utils/make-music "dream/music.ogg")
- #_#_:secret-hideout (utils/make-music "music/secret-hideout.ogg")
- #_#_:wind (utils/make-music "music/wind.ogg")}
+ :love (utils/make-music "music/love.ogg")
+ :inside-fangald (utils/make-music "music/inside-fangald.ogg")
+ :fight (utils/make-music "music/megaboss.mp3")
+ :pull-sword (utils/make-music "music/pull-sword.ogg")
+ :night (utils/make-music "music/night.ogg")
+ :dream (utils/make-music "dream/music.ogg")
+ :secret-hideout (utils/make-music "music/secret-hideout.ogg")
+ :wind (utils/make-music "music/wind.ogg")}
:state state
:time-profiles {:object nil
:default utils/default-night-merge
@@ -1268,120 +1384,8 @@
(update-in entities [:cam :zoom] #(* % (+ 1 (/ (double (:amount options)) 10.0 )))))
- :on-render
- (fn [{:keys [^OrthographicCamera camera ^FitViewport viewport ^Stage renderer] :as screen} {{:keys [last-pos ] [cursor-offset-x cursor-offset-y] :offset} :cursor :keys [tweens] :as entities} options]
- #_(steam/update)
- (.apply viewport)
-
- (if (get-in entities [:closing? :value])
-
- (let [entities (utils/apply-tweens screen entities tweens)
- entities (update-current-sound-vols! entities)
- entities (remove-ended-sounds screen entities)
- get-rendered (partial get-rendered entities)
- entities (loop [entities entities
- [[k e] & rest] (seq (get-in entities [:room :entities]))]
- (if k
- (recur (update-in entities [:room :entities k] get-rendered) rest)
- entities))
- entities (grab-layers entities)
- layers (get-in entities [:room :current-layers])
- all-entities (concat layers (vals (get-in entities [:room :entities])) [(:white-fade entities)])]
- (screen! fade-screen :update-fade {:opacity (get-in entities [:fade :opacity])})
- (doseq [m (vals (get-in entities [:musics]))]
- (when m
- (music! m :set-volume (utils/current-music-volume (get-in entities [:volume :value])))))
-
- (clear!)
- (doseq [e (sort-by :baseline all-entities)]
- (if (:parallax e)
- (render-parallax screen e)
- (render! screen [e])))
- entities)
- (let [entities (fade-in-first-time-if-necessary screen entities)
- entities (utils/apply-tweens screen entities tweens)
- entities (update-cursor screen entities)
- entities (start-script-if-necessary screen entities :fg-actions)
- entities (update-from-script screen entities :fg-actions)
- entities (start-script-if-necessary screen entities :bg-actions)
- entities (update-from-script screen entities :bg-actions)
- entities (update-from-room screen entities)
- entities (update-from-hotspots screen entities)
- [last-pos-x last-pos-y] (utils/unproject screen nil last-pos)
- last-pos-x (double last-pos-x)
- last-pos-y (double last-pos-y)
- entities (if (and (@utils/settings :camera-man? true)
- (not (get-in entities [:cam :paused?]))
- (nil? (get-in entities [:tweens :cam-x]))
- (= 1 (rand-int 20)))
- (if (= (rand-int 2) 1)
- (actions/pan-to screen entities
- (get-in entities [:room :entities :ego :x])
- (get-in entities [:room :entities :ego :y])
- (constantly (get-in entities [:room :entities :ego :scale-x]))
- tween/ease-in-out-quadratic
- 5.0)
- (actions/pan-to screen entities
- (+ ^double (get-in entities [:cam :x] 0)
- (- 10 ^double (rand-int 20)))
- (+ ^double (get-in entities [:cam :y] 0)
- (- 10 ^double (rand-int 20)))
- (constantly (get-in entities [:room :entities :ego :scale-x]))
- tween/ease-in-out-quadratic
- 5.0))
- entities)
-
-
- entities (grab-layers entities)
- update-room (fn [{:keys [anim update-fn] :as e}]
- (let [e (if (:anim e)
- (animate e screen)
- e)
-
- e (if update-fn
- (update-fn screen (get-in entities [:room :entities]) e)
- e)
- e (get-rendered entities e)]
- e))
- entities (loop [room (transient (get-in entities [:room :entities]))
- [[k e] & rest] (doall (seq (get-in entities [:room :entities])))]
- (if k
- (recur (assoc! room k (update-room e))
- rest)
- (assoc-in entities [:room :entities] (persistent! room))))
- layers (get-in entities [:room :current-layers])
- all-entities (concat layers (vals (get-in entities [:room :entities])) [(:white-fade entities)])]
-
- (screen! tooltip-screen :on-hover-start {:hover-text (get-in entities [:label :text])
- :scene-viewport (:viewport screen)
- :cursor (:cursor entities)
- :x (unchecked-subtract last-pos-x
- cursor-offset-x)
- :y (unchecked-add (unchecked-subtract last-pos-y 16 )
- cursor-offset-y)})
-
- (clear!)
- (screen! talking-screen :on-update-camera { :scene-viewport (:viewport screen) :scene-camera (:camera screen)})
- (screen! fade-screen :update-fade { :opacity (get-in entities [:fade :opacity])})
- (when true #_(not (get-in entities [:cam :paused?]))
- (set! (. camera zoom) (:zoom (:cam entities)))
- (set! (.. camera position x) (:x (:cam entities) 160.0))
- (set! (.. camera position y) (:y (:cam entities) 120.0)))
- (let [entities (if utils/mobile?
- (utils/update-override screen entities options)
- (utils/update-override screen entities options))
- entities (play-key-sounds screen entities)
- entities (update-current-sound-vols! entities)
- entities (remove-ended-sounds screen entities)]
- (doseq [m (vals (get-in entities [:musics]))]
- (when m
- (music! m :set-volume (utils/current-music-volume (get-in entities [:volume :value])))))
- (doseq [e (doall (sort-by :baseline all-entities))]
- (if (:parallax e)
- (render-parallax screen e)
- (render! screen [e])))
-
- entities))))
+ :on-render render
+
:on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}]
(.update viewport width height true))
diff --git a/desktop/src-common/advent/utils.clj b/desktop/src-common/advent/utils.clj
index 3bc9351f..b6727d4d 100644
--- a/desktop/src-common/advent/utils.clj
+++ b/desktop/src-common/advent/utils.clj
@@ -128,15 +128,19 @@
(defonce selected-save (atom nil))
-(defn current-music-volume [& [^double factor]]
- (-> (Math/pow (unchecked-multiply (:music-volume @settings) 0.01) 2)
- (unchecked-multiply 0.25)
- (unchecked-multiply (or factor 1.0))))
+(defn current-music-volume
+ ([] (current-music-volume 1.0))
+ ([^double factor]
+ (-> (Math/pow (unchecked-multiply (:music-volume @settings) 0.01) 2)
+ (unchecked-multiply 0.25)
+ (unchecked-multiply (double factor)))))
-(defn current-sound-volume [& [factor]]
- (-> (Math/pow (unchecked-multiply (:sound-volume @settings) 0.01) 2)
- (unchecked-multiply 0.5)
- (unchecked-multiply (or factor 1.0))))
+(defn current-sound-volume
+ ([] (current-sound-volume 1.0))
+ ([^double factor]
+ (-> (Math/pow (unchecked-multiply (:sound-volume @settings) 0.01) 2)
+ (unchecked-multiply 0.5)
+ (unchecked-multiply (double factor)))))
(defn cursor [filename which]
(let [scale 4
@@ -700,7 +704,7 @@
entities)))
(defn stop-all-sounds! [entities]
- (doseq [snd (get-in entities [:current-sounds :value])]
+ (doseq [snd (get-in entities [:current-sounds :value] [])]
(sound! (:sound snd) :stop (:id snd))))
(defn translate-depressed [cursor depressed?]
@@ -714,3 +718,6 @@
(min (- length (* length 0.5 zoom ))
(max (* length 0.5 zoom )
x)))
+
+(defn get-entity [entities id]
+ ((:entities (:room entities)) id))
diff --git a/desktop/src-common/advent/zone.clj b/desktop/src-common/advent/zone.clj
index f2ec071e..1284188a 100644
--- a/desktop/src-common/advent/zone.clj
+++ b/desktop/src-common/advent/zone.clj
@@ -1,7 +1,14 @@
(ns advent.zone)
+(defn within [x1 y1 x2 y2 x3 y3]
+ (and
+ (< x1 x3)
+ (< x3 x2)
+ (< y1 y3)
+ (< y3 y2)))
+
(defn box [x1 y1 x2 y2]
(fn [x y]
- (and
- (< x1 x x2)
- (< y1 y y2))))
+ (within x1 y1 x2 y2 x y)))
+
+
diff --git a/desktop/src/advent/core/desktop_launcher.clj b/desktop/src/advent/core/desktop_launcher.clj
index 38ec50f3..e1ef4081 100644
--- a/desktop/src/advent/core/desktop_launcher.clj
+++ b/desktop/src/advent/core/desktop_launcher.clj
@@ -35,6 +35,8 @@
(System/setProperty "org.lwjgl.opengl.Display.disableOSXFullscreenModeAPI" "true")
#_(System/setProperty "org.lwjgl.opengl.Window.undecorated", "true")
+
+ (log/info "Starting game")
(let [app (LwjglApplication. advent cfg)]
(when (utils/has-saved-settings?)
(utils/load-settings!))
diff --git a/ios/project.clj b/ios/project.clj
index 214d9f68..5ce89006 100644
--- a/ios/project.clj
+++ b/ios/project.clj
@@ -2,24 +2,22 @@
:description "FIXME: write description"
:dependencies [[com.badlogicgames.gdx/gdx "1.9.4"]
[com.badlogicgames.gdx/gdx-backend-robovm "1.9.4"]
- #_[org.clojure/core.async "0.2.385"]
- [org.clojure/core.async "0.1.346.0-17112a-alpha" :exclusions [org.clojure/clojure]]
+ [org.clojure/core.async "0.2.385"]
[org.clojars.notid/tools.logging "0.3.2-SNAPSHOT"]
[log4j/log4j "1.2.16"]
- [org.skummet/clojure "1.7.0-r2"]
+ [org.clojure/clojure "1.8.0"]
[com.mobidevelop.robovm/robovm-cocoatouch "2.3.0"]
[com.mobidevelop.robovm/robovm-rt "2.3.0"]
[play-clj "0.4.6-BRYCE" :exclusions [com.badlogicgames.gdx/gdx-box2d com.badlogicgames.gdx/gdx-bullet]]]
- :exclusions [[org.clojure/clojure]]
:source-paths ["src/clojure" "../desktop/src-common"]
:java-source-paths ["src/java"]
:plugins [[lein-fruit "0.2.4-SNAPSHOT"]
[org.skummet/lein-skummet "0.2.2"]
]
:javac-options ["-target" "1.7" "-source" "1.7" "-Xlint:-options"]
- :jvm-opts ["-Dno-steam=true" "-Dclojure.compiler.direct-linking=true" ]
+ :jvm-opts ["-Dno-steam=true" "-Dclojure.compiler.direct-linking=true" "-Dclojure.compiler.elide-meta=[:doc :file :line :added]"]
:ios {:robovm-opts ["-config" "robovm.xml"]
:robovm-path "/Users/brycecovert/.robovm-sdks/robovm-2.2.1-SNAPSHOT"
:version 2.1}
:aot :all
- :main advent.core.IOSLauncher)
+ :main advent.core.ios)
diff --git a/ios/robovm.xml b/ios/robovm.xml
index edc20777..24ebe117 100644
--- a/ios/robovm.xml
+++ b/ios/robovm.xml
@@ -5,6 +5,7 @@
arm64
ios
Info.plist.xml
+ aggressive
resources
@@ -25,23 +26,68 @@
- clojure.tools.logging.**
advent.**
+ clojure.genclass*
+ clojure.gvec*
clojure.core*
- clojure.**
- clojure.core.**
- clojure.tools.**
+ clojure.core.memoize*
+ clojure.core.memoize.**
+ clojure.core.cache*
+ clojure.core.cache.**
+ clojure.edn*
+ clojure.core.server*
+ clojure.instant*
+ clojure.main*
+ clojure.reflect*
+ clojure.reflect.**
+ clojure.set*
+ clojure.stacktrace*
+ clojure.walk*
+ clojure.xml*
+ clojure.zip*
+ clojure.data*
+ clojure.uuid*
+ clojure.string*
+ clojure.core.protocols*
+ clojure.tools.reader*
+ clojure.tools.reader.**
+ clojure.tools.logging.**
+ clojure.tools.logging*
+ clojure.tools.analyzer*
+ clojure.tools.analyzer.**
+ clojure.pprint*
+ clojure.pprint.**
clojure.data.**
+ clojure.test*
+ clojure.test.**
+ clojure.template*
+ clojure.template.**
clojure.java.io*
play_clj.**
- clojure.*
com.badlogic.**
java.util.logging.**
+ clojure.core.async*
+ clojure.core.async.Mutex*
+ clojure.core.async.ThreadLocalRandom*
+ clojure.core.async.impl.protocols*
+ clojure.core.async.impl.concurrent*
+ clojure.core.async.impl.channels*
+ clojure.core.async.impl.dispatch*
+ clojure.core.async.impl.exec.**
+ clojure.core.async.impl.exec*
+ clojure.core.async.impl.buffers*
+ clojure.core.async.impl.mutex*
+ clojure.core.async.impl.timers*
+ clojure.core.async.impl.ioc_macros*
libs/libObjectAL.a
libs/libgdx.a
+
+ **/*.class
+ **/*.jar
+
UIKit
OpenGLES
diff --git a/ios/src/java/advent/core/IOSLauncher.java b/ios/src/java/advent/core/IOSLauncher.java
index 9a440553..4418aa20 100644
--- a/ios/src/java/advent/core/IOSLauncher.java
+++ b/ios/src/java/advent/core/IOSLauncher.java
@@ -19,6 +19,8 @@ public class IOSLauncher extends IOSApplication.Delegate {
config.orientationPortrait = false;
config.orientationLandscape = true;
config.preferredFramesPerSecond = 30;
+ config.useAccelerometer=false;
+ config.useCompass=false;
RT.var("clojure.core", "require").invoke(Symbol.intern("advent.core"));
try {
@@ -38,4 +40,11 @@ public class IOSLauncher extends IOSApplication.Delegate {
UIApplication.main(argv, null, IOSLauncher.class);
pool.close();
}
+
+ @Override
+ public void didReceiveMemoryWarning(UIApplication application) {
+ for (int i = 0; i < 3; i++) {
+ System.gc();
+ }
+ }
}