diff --git a/src/frontend/il/app.cljs b/src/frontend/il/app.cljs index 2caa950..ee92c2a 100644 --- a/src/frontend/il/app.cljs +++ b/src/frontend/il/app.cljs @@ -35,7 +35,6 @@ (js/window.addEventListener "keyup" (partial handle-key state (fn [_] 0)))) (defn- drain-outbox! [{:keys [outbox] :as state} tx-chan] - (println "Draining outbox: " outbox) (when (count outbox) (go (doseq [msg outbox] @@ -104,7 +103,6 @@ :ui-layer ui-layer} websocket (doto (js/WebSocket. (str "ws://" js/location.host "/ws")) (.addEventListener "open" #(go-loop [] - (js/console.log %) (when-let [msg (! out (j/to-json {:type "sync" :entities entities})))) @@ -77,7 +80,7 @@ (recur)))) (defn -main [] - (let [state (atom {:systems [] + (let [state (atom {:systems [movement/system] :entities {} :players {}}) state-chan (async/chan) diff --git a/src/il/state.clj b/src/il/state.clj index 75e4e8d..23d44aa 100644 --- a/src/il/state.clj +++ b/src/il/state.clj @@ -2,5 +2,4 @@ (:require [clojure.core.async :refer [>! go]])) (defn change [state-chan & args] - (println "Appending to state-chan: " args) (go (>! state-chan args))) diff --git a/src/il/system/movement.clj b/src/il/system/movement.clj new file mode 100644 index 0000000..dc7bdf8 --- /dev/null +++ b/src/il/system/movement.clj @@ -0,0 +1,17 @@ +(ns il.system.movement) + +(defn- velocity-move [e] + (let [{x :x + y :y + vel :velocity} e] + (if-not (nil? vel) + (let [vx (get vel :x 0) + vy (get vel :y 0)] + (assoc e :x (+ vx x) :y (+ vy y))) + e))) + +(defn system [state] + (let [entities (:entities state) + new-entities (update-vals entities velocity-move)] + (println "Applying movement system: " state) + (assoc state :entities new-entities)))