bffdd52

Branches > main > bffdd52 > files

Add broadcast effect

Grahp, 2026-08-25

Commit: bffdd524aa10d2e55c9f71d7666eb891e50d5af8
Parent: 12188fa

1 changed file:

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

@@ -18,23 +18,33 @@       (commute server/players update uuid merge p))     [])) -; Want this to be pure, which means you need a way to encode that state change as data?+; TODO this is asymmetric+(defmethod handle-event ::event/player-joining [{:keys! [::player/uuid ::player/username] :as p}]+  (dosync+    (if (@server/players uuid)+      (throw (Exception. "Player tried to join with an existing UUID"))+      (commute server/players update uuid merge p))+    []))+ (defmethod handle-event ::event/player-joined [{:keys! [::player/uuid ::player/player]}]   (dosync     (commute server/players update uuid merge player)-    (for [[recpient-uuid] @server/players]-      {::effect/id ::effect/send-chat-message-       ::player/uuid recpient-uuid-       :message {:text (str (or (::player/username (server/player uuid)) "Unknown Player") " Joined!")}})))+    [{::event/id ::event/broadcast+      :message {:text (str (or (::player/username (server/player uuid)) "Unknown Player") " Joined!")}}]))  (defmethod handle-event ::event/player-left [{:keys! [::player/uuid]}]   (dosync     (let [username (::player/username (server/player uuid))]       (commute server/players dissoc uuid)-      (for [[recipient] @server/players]-        {::effect/id ::effect/send-chat-message-         ::player/uuid recipient-         :message {:text (str (or username "Unknown Player") " Left.")}}))))+      [{::event/id ::event/broadcast+        :message {:text (str (or username "Unknown Player") " Left.")}}])))++(defmethod handle-event ::event/broadcast [{:keys! [message]}]+  (dosync+    (for [[recipient] @server/players]+      {::effect/id ::effect/send-chat-message+       ::player/uuid recipient+       :message message})))  (defmethod handle-event ::event/updated-player-movement [{:keys! [::player/uuid ::position/position] :as e}]   (dosync