diff --git a/src/game.clj b/src/game.clj index 98a4187..a1eb3b1 100644 --- a/src/game.clj +++ b/src/game.clj @@ -1,7 +1,8 @@ ;; SPDX-License-Identifier: Apache-2.0 ;; SPDX-FileCopyrightText: 2021 Sebastian Crane -(ns game) +(ns game + (:require [clojure.set :refer [superset?]])) (defn get-players-of-game [state game] (get-in state [:games game])) @@ -10,7 +11,10 @@ (update-in state [:games game] #(set (conj % player)))) (defn remove-player-of-game [state game player] - (update-in state [:games game] #(disj % player))) + (update state :games + #(if (superset? (set [player]) (% game)) + (dissoc % game) + (update % game disj player)))) (defn get-games [state] (keys (:games state)))