Break up tiled-map-renderer into separate functions

This commit is contained in:
oakes
2014-01-08 14:10:11 -05:00
parent a534d49a90
commit b6bce49d40
3 changed files with 32 additions and 16 deletions

View File

@@ -16,10 +16,12 @@
(defn draw-actor! (defn draw-actor!
[^SpriteBatch batch {:keys [^Actor object] :as entity}] [^SpriteBatch batch {:keys [^Actor object] :as entity}]
(assert object)
(.draw ^Actor object batch 1)) (.draw ^Actor object batch 1))
(defn draw-image! (defn draw-image!
[^SpriteBatch batch {:keys [^TextureRegion object x y width height]}] [^SpriteBatch batch {:keys [^TextureRegion object x y width height]}]
(assert (and object x y width height))
(.draw batch object (float x) (float y) (float width) (float height))) (.draw batch object (float x) (float y) (float width) (float height)))
(defn draw-entity! (defn draw-entity!

View File

@@ -8,9 +8,21 @@
; render ; render
(defmacro tiled-map-renderer! (defmacro orthogonal-tiled-map!
[{:keys [renderer]} k & options] [{:keys [renderer]} k & options]
`(utils/call! ^BatchTiledMapRenderer ~renderer ~k ~@options)) `(utils/call! ^OrthogonalTiledMapRenderer ~renderer ~k ~@options))
(defmacro isometric-tiled-map!
[{:keys [renderer]} k & options]
`(utils/call! ^IsometricTiledMapRenderer ~renderer ~k ~@options))
(defmacro isometric-staggered-tiled-map!
[{:keys [renderer]} k & options]
`(utils/call! ^IsometricStaggeredTiledMapRenderer ~renderer ~k ~@options))
(defmacro hexagonal-tiled-map!
[{:keys [renderer]} k & options]
`(utils/call! ^HexagonalTiledMapRenderer ~renderer ~k ~@options))
(defmacro stage! (defmacro stage!
[{:keys [renderer]} k & options] [{:keys [renderer]} k & options]

View File

@@ -48,20 +48,22 @@
(.load (TmxMapLoader.) s) (.load (TmxMapLoader.) s)
s)) s))
(defn tiled-map-renderer (defn orthogonal-tiled-map
[renderer-type path pixels-per-tile] [path ppt]
(let [^TiledMap tmap (tiled-map path) (OrthogonalTiledMapRenderer. ^TiledMap (tiled-map path) ^double (/ 1 ppt)))
^double unit-scale (/ 1 pixels-per-tile)]
(case renderer-type (defn isometric-tiled-map
:orthogonal [path ppt]
(OrthogonalTiledMapRenderer. tmap unit-scale) (IsometricTiledMapRenderer. ^TiledMap (tiled-map path) ^double (/ 1 ppt)))
:isometric
(IsometricTiledMapRenderer. tmap unit-scale) (defn isometric-staggered-tiled-map
:isometric-staggered [path ppt]
(IsometricStaggeredTiledMapRenderer. tmap unit-scale) (IsometricStaggeredTiledMapRenderer. ^TiledMap (tiled-map path)
:hexagonal ^double (/ 1 ppt)))
(IsometricTiledMapRenderer. tmap unit-scale)
nil))) (defn hexagonal-tiled-map
[path ppt]
(HexagonalTiledMapRenderer. ^TiledMap (tiled-map path) ^double (/ 1 ppt)))
(defn stage (defn stage
[] []