2022-01-01 17:33:33 +01:00
|
|
|
;; SPDX-License-Identifier: Apache-2.0
|
|
|
|
;; SPDX-FileCopyrightText: 2021 Sebastian Crane <seabass-labrax@gmx.com>
|
|
|
|
|
2022-02-09 22:25:20 +01:00
|
|
|
(ns game
|
|
|
|
(:require [clojure.set :refer [superset?]]))
|
2022-01-01 17:33:33 +01:00
|
|
|
|
2022-01-03 15:25:15 +01:00
|
|
|
(defn get-players-of-game [state game]
|
2022-01-01 17:33:33 +01:00
|
|
|
(get-in state [:games game]))
|
|
|
|
|
|
|
|
(defn add-player-of-game [state game player]
|
2022-01-03 21:37:34 +01:00
|
|
|
(update-in state [:games game] #(set (conj % player))))
|
2022-01-01 18:57:47 +01:00
|
|
|
|
|
|
|
(defn remove-player-of-game [state game player]
|
2022-02-09 22:25:20 +01:00
|
|
|
(update state :games
|
|
|
|
#(if (superset? (set [player]) (% game))
|
|
|
|
(dissoc % game)
|
|
|
|
(update % game disj player))))
|
2022-01-01 19:29:19 +01:00
|
|
|
|
2022-01-03 15:27:19 +01:00
|
|
|
(defn get-games [state]
|
|
|
|
(keys (:games state)))
|
|
|
|
|
2022-01-01 19:29:19 +01:00
|
|
|
(defn remove-game [state game]
|
|
|
|
(update-in state [:games] dissoc game))
|