Define the screen methods as top-level vars to allow refreshing when namespace is reloaded

This commit is contained in:
oakes
2014-01-01 14:25:19 -05:00
parent 8b71590125
commit 9ff18b682d

View File

@@ -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}}]