core.cljs 834 B

123456789101112131415161718192021222324252627282930
  1. (ns bombnet.web.core
  2. (:require [cljs.core.async :refer [<! >! chan]]
  3. [bombnet.web.game :refer [init-game key-handler msg-handler]]
  4. [bombnet.web.ws :refer [send! connect]])
  5. (:require-macros [cljs.core.async.macros :refer [go]]))
  6. (defn attach-msg-handler [game]
  7. (let [{[in out] :conn} @game]
  8. (go (loop []
  9. (let [msg (<! in)] (msg-handler game msg))
  10. (recur)))))
  11. (defn attach-key-handler [game]
  12. (.addEventListener
  13. js/document
  14. "keydown"
  15. (fn [e]
  16. (key-handler game (.. e -keyCode)))))
  17. (defn init []
  18. (let [id (str (rand-int 1000000))
  19. conn (connect "test" id)
  20. game (init-game id conn)]
  21. (.log js/console "Initializing")
  22. (send! conn {:type "join"})
  23. (attach-msg-handler game)
  24. (attach-key-handler game)
  25. game))
  26. (defonce game (init))