Turn render! into a multimethod

This commit is contained in:
oakes
2014-01-11 14:58:15 -05:00
parent 8fcb4193b9
commit 95f520ffaf

View File

@@ -2,17 +2,19 @@
; rendering ; rendering
(defn render! (defmulti render! #(-> % :renderer type) :default nil)
[{:keys [renderer ^Camera camera delta-time]}]
(assert renderer) (defmethod render! nil [screen])
(cond
(isa? (type renderer) BatchTiledMapRenderer) (defmethod render! BatchTiledMapRenderer
(doto ^BatchTiledMapRenderer renderer [{:keys [^BatchTiledMapRenderer renderer ^Camera camera]}]
(.setView camera) (when camera (.setView renderer camera))
.render) (.render renderer))
(isa? (type renderer) Stage)
(doto ^Stage renderer (defmethod render! Stage
.draw))) [{:keys [^Stage renderer ^Camera camera]}]
(when camera (.setCamera renderer camera))
(.draw renderer))
(defn tiled-map-layers (defn tiled-map-layers
[{:keys [^BatchTiledMapRenderer renderer]}] [{:keys [^BatchTiledMapRenderer renderer]}]