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_global")
(load "core_render") (load "core_render")
(defn- dummy [_]) (defn- dummy [& args])
(defn defscreen* (defn defscreen*
[{:keys [on-show on-render on-hide on-pause on-resize on-resume] [{:keys [on-show on-render on-hide on-pause on-resize on-resume]
@@ -44,8 +44,13 @@
(resume [] (on-resume @screen))))) (resume [] (on-resume @screen)))))
(defmacro defscreen (defmacro defscreen
[name & {:keys [] :as options}] [n & {:keys [] :as options}]
`(defonce ~name (defscreen* ~options))) `(->> (for [[k# v#] ~options]
[k# (intern *ns* (symbol (str '~n "-" (name k#))) v#)])
flatten
(apply hash-map)
defscreen*
(def ~n)))
(defn defgame* (defn defgame*
[{:keys [on-create] :or {on-create dummy}}] [{:keys [on-create] :or {on-create dummy}}]