70c1f87
Branches > facts > 70c1f87 > files / src / net / bowmap
movement stuff...
Commit: 70c1f873f09e3666d146912ee5c3e990cb2dd08a
Parent: a25fa80
5 changed files:
src/net/bowmap/protocol/handle.clj 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 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 sentsrc/net/bowmap/server/player.clj 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 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 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))