Clean up the renderer code

This commit is contained in:
oakes
2013-12-29 14:29:08 -05:00
parent 39d9fc2e85
commit 9088f9906b
2 changed files with 23 additions and 25 deletions

View File

@@ -35,7 +35,7 @@
(proxy [Screen] []
(show []
(swap! screen assoc
:renderer (when renderer (renderer))
:renderer (create-renderer renderer)
:camera (create-camera camera)
:total-time 0)
(on-show @screen))

View File

@@ -2,39 +2,37 @@
(in-ns 'play-clj.core)
; tiled map renderers
; renderers
(defmulti create-tiled-map-renderer :type :default :orthogonal)
(defmethod create-tiled-map-renderer :orthogonal [options]
(OrthogonalTiledMapRenderer. (:map options) (:unit-scale options)))
(defmethod create-tiled-map-renderer :isometric [options]
(IsometricTiledMapRenderer. (:map options) (:unit-scale options)))
(defmethod create-tiled-map-renderer :isometric-staggered [options]
(IsometricStaggeredTiledMapRenderer. (:map options) (:unit-scale options)))
(defmethod create-tiled-map-renderer :hexagonal [options]
(HexagonalTiledMapRenderer. (:map options) (:unit-scale options)))
(defn tiled-map
[& {:keys [file tile-size type] :as options}]
(defn load-tiled-map
[{:keys [file]}]
(assert (string? file))
(.load (TmxMapLoader.) file))
(defn unit-scale
[{:keys [tile-size]}]
(assert (number? tile-size))
(fn []
(let [tiled-map (.load (TmxMapLoader.) file)
unit-scale (float (/ 1 tile-size))
options (assoc options
:map tiled-map
:unit-scale unit-scale)]
(create-tiled-map-renderer options))))
(float (/ 1 tile-size)))
(defn render-tiled-map!
[{:keys [^BatchTiledMapRenderer renderer ^OrthographicCamera camera]}]
(.setView renderer camera)
(.render renderer))
(defmulti create-renderer :type :default :orthogonal-tiled-map)
(defmethod create-renderer :orthogonal-tiled-map [opts]
(OrthogonalTiledMapRenderer. (load-tiled-map opts) (unit-scale opts)))
(defmethod create-renderer :isometric-tiled-map [opts]
(IsometricTiledMapRenderer. (load-tiled-map opts) (unit-scale opts)))
(defmethod create-renderer :isometric-staggered-tiled-map [opts]
(IsometricStaggeredTiledMapRenderer. (load-tiled-map opts) (unit-scale opts)))
(defmethod create-renderer :hexagonal-tiled-map [opts]
(HexagonalTiledMapRenderer. (load-tiled-map opts) (unit-scale opts)))
; cameras
(defmulti create-camera identity :default :orthographic)