From 95f520ffaf1780959ab4e3d9959ac9cc7f15f324 Mon Sep 17 00:00:00 2001 From: oakes Date: Sat, 11 Jan 2014 14:58:15 -0500 Subject: [PATCH] Turn render! into a multimethod --- src/play_clj/core_render.clj | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/play_clj/core_render.clj b/src/play_clj/core_render.clj index b1f89b7..828c41a 100644 --- a/src/play_clj/core_render.clj +++ b/src/play_clj/core_render.clj @@ -2,17 +2,19 @@ ; rendering -(defn render! - [{:keys [renderer ^Camera camera delta-time]}] - (assert renderer) - (cond - (isa? (type renderer) BatchTiledMapRenderer) - (doto ^BatchTiledMapRenderer renderer - (.setView camera) - .render) - (isa? (type renderer) Stage) - (doto ^Stage renderer - .draw))) +(defmulti render! #(-> % :renderer type) :default nil) + +(defmethod render! nil [screen]) + +(defmethod render! BatchTiledMapRenderer + [{:keys [^BatchTiledMapRenderer renderer ^Camera camera]}] + (when camera (.setView renderer camera)) + (.render renderer)) + +(defmethod render! Stage + [{:keys [^Stage renderer ^Camera camera]}] + (when camera (.setCamera renderer camera)) + (.draw renderer)) (defn tiled-map-layers [{:keys [^BatchTiledMapRenderer renderer]}]