effect_execution.clj
Branches > main > 1fcddae > files / src / net / bowmap / stormbow / effect_execution.clj
(ns net.bowmap.stormbow.effect-execution
(:require
[clojure.core.async :refer [put!]]
[net.bowmap.protocol.packet :as pk]
[net.bowmap.protocol.packet.clientbound :as clientbound]
[net.bowmap.server.player :as player]
[net.bowmap.server.server :as server]
[net.bowmap.stormbow.effect :as effect]
[net.bowmap.transport.connection :as connection]))
(defmulti execute-effect!
(fn [{:keys! [::effect/id]}]
id))
(defmethod execute-effect! ::effect/send-chat-message [{::player/keys! [uuid] :keys! [message]}]
(let [{::connection/keys! [connection]} (@server/players uuid)
{::connection/keys! [clientbound-packets]} connection]
(put! clientbound-packets {::pk/id ::clientbound/system-chat-message
:message message})))
(defn execute-effects! [effects]
(run! execute-effect! effects))