Start 0.3.0-SNAPSHOT
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
(defproject play-clj "0.2.5-SNAPSHOT"
|
||||
(defproject play-clj "0.3.0-SNAPSHOT"
|
||||
:description "A LibGDX wrapper for easy cross-platform game development"
|
||||
:url "https://github.com/oakes/play-clj"
|
||||
:license {:name "Public Domain"
|
||||
:url "http://unlicense.org/UNLICENSE"}
|
||||
:dependencies [[com.badlogicgames.gdx/gdx "0.9.9"]
|
||||
[org.clojure/clojure "1.5.1"]])
|
||||
:dependencies [[com.badlogicgames.gdx/gdx "1.0-SNAPSHOT"]
|
||||
[org.clojure/clojure "1.5.1"]]
|
||||
:repositories [["sonatype"
|
||||
"https://oss.sonatype.org/content/repositories/snapshots/"]])
|
||||
|
||||
@@ -106,7 +106,6 @@
|
||||
[{:keys [on-create]}]
|
||||
(proxy [Game] []
|
||||
(create []
|
||||
(Texture/setEnforcePotImages false)
|
||||
(when on-create
|
||||
(on-create this)))))
|
||||
|
||||
|
||||
@@ -39,13 +39,15 @@
|
||||
(u/call! object# ~k ~@options)))
|
||||
|
||||
(defn size!
|
||||
"Sets the size of the camera in `screen`.
|
||||
"Sets the size of the camera in `screen` and recenters it.
|
||||
|
||||
(size! screen 480 360)"
|
||||
[screen width height]
|
||||
(let [^Camera camera (u/get-obj screen :camera)]
|
||||
(set! (. camera viewportWidth) width)
|
||||
(set! (. camera viewportHeight) height)
|
||||
(set! (. (. camera position) x) (/ width 2))
|
||||
(set! (. (. camera position) y) (/ height 2))
|
||||
(.update camera)))
|
||||
|
||||
(defn width!
|
||||
|
||||
@@ -354,10 +354,7 @@ specify which layers to render with or without.
|
||||
|
||||
(defn render-stage!
|
||||
"Calls the stage renderer from `screen`."
|
||||
[{:keys [^Stage renderer ^Camera camera] :as screen}]
|
||||
(when camera
|
||||
(.setCamera renderer camera)
|
||||
(.setViewport renderer (. camera viewportWidth) (. camera viewportHeight)))
|
||||
[{:keys [^Stage renderer] :as screen}]
|
||||
(doto renderer .act .draw)
|
||||
nil)
|
||||
|
||||
|
||||
@@ -177,37 +177,45 @@
|
||||
; update functions
|
||||
|
||||
(defn ^:private update-stage!
|
||||
[{:keys [^Stage renderer ui-listeners]} entities]
|
||||
(doseq [^Actor a (.getActors renderer)]
|
||||
(.remove a))
|
||||
(doseq [{:keys [object]} entities]
|
||||
(when (isa? (type object) Actor)
|
||||
(.addActor renderer object)
|
||||
(doseq [listener ui-listeners]
|
||||
(.addListener ^Actor object listener))))
|
||||
(remove-input! renderer)
|
||||
(add-input! renderer))
|
||||
([{:keys [^Stage renderer ^Camera camera] :as screen}]
|
||||
(when camera
|
||||
(doto (.getViewport renderer)
|
||||
(.setCamera camera))))
|
||||
([{:keys [^Stage renderer ui-listeners]} entities]
|
||||
(doseq [^Actor a (.getActors renderer)]
|
||||
(.remove a))
|
||||
(doseq [{:keys [object]} entities]
|
||||
(when (isa? (type object) Actor)
|
||||
(.addActor renderer object)
|
||||
(doseq [listener ui-listeners]
|
||||
(.addListener ^Actor object listener))))
|
||||
(remove-input! renderer)
|
||||
(add-input! renderer)))
|
||||
|
||||
(defn ^:private update-box-2d!
|
||||
[{:keys [^World world]} entities]
|
||||
(when-not (.isLocked world)
|
||||
(let [arr (u/gdx-array [])]
|
||||
; remove bodies that no longer exist
|
||||
(.getBodies world arr)
|
||||
(doseq [body arr]
|
||||
(when-not (some #(= body (:body %)) entities)
|
||||
(.destroyBody world body)))
|
||||
; remove joints whose bodies no longer exist
|
||||
(.getJoints world arr)
|
||||
(doseq [^Joint joint arr]
|
||||
(when (and (not (some #(= (.getBodyA joint) (:body %)) entities))
|
||||
(not (some #(= (.getBodyB joint) (:body %)) entities)))
|
||||
(.destroyJoint world joint))))))
|
||||
([{:keys [^World world g2dp-listener]}]
|
||||
(.setContactListener world g2dp-listener))
|
||||
([{:keys [^World world]} entities]
|
||||
(when-not (.isLocked world)
|
||||
(let [arr (u/gdx-array [])]
|
||||
; remove bodies that no longer exist
|
||||
(.getBodies world arr)
|
||||
(doseq [body arr]
|
||||
(when-not (some #(= body (:body %)) entities)
|
||||
(.destroyBody world body)))
|
||||
; remove joints whose bodies no longer exist
|
||||
(.getJoints world arr)
|
||||
(doseq [^Joint joint arr]
|
||||
(when (and (not (some #(= (.getBodyA joint) (:body %)) entities))
|
||||
(not (some #(= (.getBodyB joint) (:body %)) entities)))
|
||||
(.destroyJoint world joint)))))))
|
||||
|
||||
(defn ^:private update-screen!
|
||||
([{:keys [world g2dp-listener]}]
|
||||
([{:keys [renderer world] :as screen}]
|
||||
(when (isa? (type renderer) Stage)
|
||||
(update-stage! screen))
|
||||
(when (isa? (type world) World)
|
||||
(.setContactListener ^World world g2dp-listener)))
|
||||
(update-box-2d! screen)))
|
||||
([{:keys [renderer world] :as screen} entities]
|
||||
(when (isa? (type renderer) Stage)
|
||||
(update-stage! screen entities))
|
||||
|
||||
@@ -148,11 +148,11 @@
|
||||
; animation
|
||||
|
||||
(defmacro play-mode
|
||||
"Returns a static field from [Animation](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/Animation.html).
|
||||
"Returns a static field from [Animation.PlayMode](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/Animation.PlayMode.html).
|
||||
|
||||
(play-mode :loop)"
|
||||
[k]
|
||||
`~(u/gdx-field :graphics :g2d :Animation (u/key->upper k)))
|
||||
`~(u/gdx-field :graphics :g2d "Animation$PlayMode" (u/key->upper k)))
|
||||
|
||||
(defn animation*
|
||||
[duration textures]
|
||||
|
||||
Reference in New Issue
Block a user