From 9ff18b682db0fe427d04d5060dc87f9a8a1457e2 Mon Sep 17 00:00:00 2001 From: oakes Date: Wed, 1 Jan 2014 14:25:19 -0500 Subject: [PATCH] Define the screen methods as top-level vars to allow refreshing when namespace is reloaded --- src/play_clj/core.clj | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/play_clj/core.clj b/src/play_clj/core.clj index 21f3d82..388d2b9 100644 --- a/src/play_clj/core.clj +++ b/src/play_clj/core.clj @@ -17,7 +17,7 @@ (load "core_global") (load "core_render") -(defn- dummy [_]) +(defn- dummy [& args]) (defn defscreen* [{:keys [on-show on-render on-hide on-pause on-resize on-resume] @@ -44,8 +44,13 @@ (resume [] (on-resume @screen))))) (defmacro defscreen - [name & {:keys [] :as options}] - `(defonce ~name (defscreen* ~options))) + [n & {:keys [] :as options}] + `(->> (for [[k# v#] ~options] + [k# (intern *ns* (symbol (str '~n "-" (name k#))) v#)]) + flatten + (apply hash-map) + defscreen* + (def ~n))) (defn defgame* [{:keys [on-create] :or {on-create dummy}}]