Clean up the renderer code
This commit is contained in:
@@ -35,7 +35,7 @@
|
|||||||
(proxy [Screen] []
|
(proxy [Screen] []
|
||||||
(show []
|
(show []
|
||||||
(swap! screen assoc
|
(swap! screen assoc
|
||||||
:renderer (when renderer (renderer))
|
:renderer (create-renderer renderer)
|
||||||
:camera (create-camera camera)
|
:camera (create-camera camera)
|
||||||
:total-time 0)
|
:total-time 0)
|
||||||
(on-show @screen))
|
(on-show @screen))
|
||||||
|
|||||||
@@ -2,39 +2,37 @@
|
|||||||
|
|
||||||
(in-ns 'play-clj.core)
|
(in-ns 'play-clj.core)
|
||||||
|
|
||||||
; tiled map renderers
|
; renderers
|
||||||
|
|
||||||
(defmulti create-tiled-map-renderer :type :default :orthogonal)
|
(defn load-tiled-map
|
||||||
|
[{:keys [file]}]
|
||||||
(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}]
|
|
||||||
(assert (string? file))
|
(assert (string? file))
|
||||||
|
(.load (TmxMapLoader.) file))
|
||||||
|
|
||||||
|
(defn unit-scale
|
||||||
|
[{:keys [tile-size]}]
|
||||||
(assert (number? tile-size))
|
(assert (number? tile-size))
|
||||||
(fn []
|
(float (/ 1 tile-size)))
|
||||||
(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))))
|
|
||||||
|
|
||||||
(defn render-tiled-map!
|
(defn render-tiled-map!
|
||||||
[{:keys [^BatchTiledMapRenderer renderer ^OrthographicCamera camera]}]
|
[{:keys [^BatchTiledMapRenderer renderer ^OrthographicCamera camera]}]
|
||||||
(.setView renderer camera)
|
(.setView renderer camera)
|
||||||
(.render renderer))
|
(.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
|
; cameras
|
||||||
|
|
||||||
(defmulti create-camera identity :default :orthographic)
|
(defmulti create-camera identity :default :orthographic)
|
||||||
|
|||||||
Reference in New Issue
Block a user