server side interp
This commit is contained in:
@@ -20,7 +20,6 @@
|
|||||||
(assoc e :renderable renderable))
|
(assoc e :renderable renderable))
|
||||||
e))
|
e))
|
||||||
|
|
||||||
|
|
||||||
(defn apply-server-position [e]
|
(defn apply-server-position [e]
|
||||||
(let [{:keys [x y tx ty]} e
|
(let [{:keys [x y tx ty]} e
|
||||||
speed (get e :speed 15)
|
speed (get e :speed 15)
|
||||||
@@ -36,11 +35,13 @@
|
|||||||
(< (+ (get-in state [:player :last-attack] -1)
|
(< (+ (get-in state [:player :last-attack] -1)
|
||||||
(* 1000 (get-in state [:player :attack-speed] 0.75)))
|
(* 1000 (get-in state [:player :attack-speed] 0.75)))
|
||||||
(js/Date.now)))
|
(js/Date.now)))
|
||||||
|
(let [{x :x y :y} (state :player)]
|
||||||
(-> state
|
(-> state
|
||||||
(update :outbox conj {:type "shoot"
|
(update :outbox conj {:type "shoot"
|
||||||
|
:player {:x x :y y}
|
||||||
:x (.-x mouse-pos)
|
:x (.-x mouse-pos)
|
||||||
:y (.-y mouse-pos)})
|
:y (.-y mouse-pos)})
|
||||||
(assoc-in [:player :last-attack] (js/Date.now)))
|
(assoc-in [:player :last-attack] (js/Date.now))))
|
||||||
state))
|
state))
|
||||||
|
|
||||||
(defn apply-player-position [state send-interval]
|
(defn apply-player-position [state send-interval]
|
||||||
|
|||||||
@@ -68,12 +68,14 @@
|
|||||||
system-state (reduce (fn [state system] (system state))
|
system-state (reduce (fn [state system] (system state))
|
||||||
event-state
|
event-state
|
||||||
(event-state :systems))
|
(event-state :systems))
|
||||||
entities (:entities @state)
|
updated-state (swap! state conj system-state)
|
||||||
players (:players @state)]
|
_ (println updated-state)
|
||||||
(swap! state conj system-state)
|
entities (updated-state :entities)
|
||||||
|
players (updated-state :players)]
|
||||||
(doseq [{out :out} (vals players)]
|
(doseq [{out :out} (vals players)]
|
||||||
|
(when-not (nil? out)
|
||||||
(>! out (j/to-json {:type "sync"
|
(>! out (j/to-json {:type "sync"
|
||||||
:entities entities}))))
|
:entities entities})))))
|
||||||
(let [elapsed (- (System/currentTimeMillis) start-time)
|
(let [elapsed (- (System/currentTimeMillis) start-time)
|
||||||
sleep-time (max 0 (- 50 elapsed))]
|
sleep-time (max 0 (- 50 elapsed))]
|
||||||
(<! (async/timeout sleep-time)))
|
(<! (async/timeout sleep-time)))
|
||||||
|
|||||||
@@ -7,14 +7,15 @@
|
|||||||
|
|
||||||
(defn handle-shoot [state state-chan player-id msg]
|
(defn handle-shoot [state state-chan player-id msg]
|
||||||
(let [bullet-id (random-uuid)
|
(let [bullet-id (random-uuid)
|
||||||
player (get-in state [:players player-id])
|
; player (get-in state [:players player-id])
|
||||||
|
{tx :x ty :y player :player} msg
|
||||||
{x :x y :y} player
|
{x :x y :y} player
|
||||||
{tx :x ty :y} msg
|
|
||||||
speed 25 ; TODO: Get projectile speed from player weapon
|
speed 25 ; TODO: Get projectile speed from player weapon
|
||||||
velocity (v/velocity-for x y tx ty speed)
|
velocity (v/velocity-for x y tx ty speed)
|
||||||
bullet {:sprite "/sprite/projectile.png" ; TODO: Render sprite based on player weapon
|
bullet {:sprite "/sprite/projectile.png" ; TODO: Render sprite based on player weapon
|
||||||
:x x
|
:x x
|
||||||
:y y
|
:y y
|
||||||
:speed speed
|
:speed speed
|
||||||
|
:player-id player-id
|
||||||
:velocity velocity}]
|
:velocity velocity}]
|
||||||
(s/change state-chan update :entities assoc bullet-id bullet)))
|
(s/change state-chan update :entities assoc bullet-id bullet)))
|
||||||
|
|||||||
Reference in New Issue
Block a user