server.clj

Bowmap · bowmap.git · Tickets

Branches > main > af0a324 > files / src / net / bowmap / server / game / server.clj

(ns net.bowmap.server.game.server
  (:require
   [clojure.spec.alpha :as s]
   [com.wotbrew.relic :as relic]
   [net.bowmap.server.game.player :as player]))

(def max-player-count 1000)

(s/def ::players (s/coll-of ::player/player :kind set?))
(s/def ::entity-id pos-int?)
(s/def ::env (s/keys :opt [::entity-id]))
(s/def ::server (s/keys :opt [::players ::env]))

(def players-by-uuid
  [[:from ::players]
   [:unique ::player/uuid]])

(defonce state (atom (-> (relic/mat {::env #{{::entity-id 0}}}
                                    players-by-uuid))))

(defn env
  ([state]
   (first (::env state)))
  ([state k]
   (req! (env state) k)))