70c1f87

Branches > facts > 70c1f87 > files / src / net / bowmap

movement stuff...

Grahp, 2026-08-23

Commit: 70c1f873f09e3666d146912ee5c3e990cb2dd08a
Parent: a25fa80

5 changed files:

src/net/bowmap/protocol/handle.clj modified (view file)

@@ -134,14 +134,14 @@                          :flags #{}}))      :keep-alive? true})) +; TODO flags are currently unused :p (defn handle-player-update-movement-packet [{::player/keys! [uuid]}                                             {:keys [& ::position/x ::position/y ::position/z ::position/yaw ::position/pitch]                                              :as packet                                              :select movement}]   {:facts [(merge {::fact/id ::fact/updated-player-movement-                   ::player/uuid uuid}-                  ; may be ::entity/ characteristics, idk-                  movement (zipmap (:flags packet) (repeat true)))]})+                   ::player/uuid uuid+                   ::position/position movement})]})  (defmethod handle-packet ::serverbound/set-player-rotation [client pk]   (handle-player-update-movement-packet client pk))

src/net/bowmap/server/logic.clj modified (view file)

@@ -36,10 +36,9 @@     (commute server/players dissoc uuid)     [])) -(defmethod handle-fact ::fact/updated-player-movement [{:keys! [::player/uuid] :as fact}]+(defmethod handle-fact ::fact/updated-player-movement [{:keys! [::player/uuid ::position/position]}]   (dosync-    (let [player (req! @server/players uuid)]-      (alter player merge (select-keys fact [::position/x ::position/y ::position/z ::position/yaw ::position/pitch])))+    (alter (@server/players uuid) update ::position/position merge position)     []))  ; Called when the player actually moves, not just when a position is sent

src/net/bowmap/server/player.clj modified (view file)

@@ -1,8 +1,9 @@ (ns net.bowmap.server.player   (:require-   [clojure.spec.alpha :as s]))+   [clojure.spec.alpha :as s]+   [net.bowmap.server.position :as position]))  ; Players may have a protocol entity associated with them, or maybe that should be indirect, not sure.-(s/def ::player (s/keys :opt [::uuid]))+(s/def ::player (s/keys :opt [::uuid ::position/position]))  (s/def ::uuid uuid?)

src/net/bowmap/server/position.clj modified (view file)

@@ -3,6 +3,7 @@   (:require    [clojure.spec.alpha :as s])) +(s/def ::position (s/keys :opt [::x ::y ::z ::yaw ::pitch])) (s/def ::x float?) (s/def ::y float?) (s/def ::z float?)

src/net/bowmap/server/server.clj modified (view file)

@@ -3,3 +3,9 @@ ; Map of player uuids to their refs (defonce players (ref {})) (def max-player-count 1000)++(defn player+  "Returns the current map of known information about a player given their uuid.+   Returns nil when nothing is known."+  [uuid]+  @(@players uuid))