PlayersHands class

This commit is contained in:
2025-03-05 18:46:06 +01:00
parent fd78bfa4d0
commit c50127ba1b
5 changed files with 63 additions and 52 deletions

View File

@@ -0,0 +1,37 @@
package eventDemo.app.entity
import kotlinx.serialization.Serializable
@Serializable
@JvmInline
value class PlayersHands(
private val map: Map<Player, List<Card>> = emptyMap(),
) : Map<Player, List<Card>> by map {
constructor(players: Set<Player>) : this(players.associateWith { emptyList<Card>() }.toPlayersHands())
fun removeCard(
player: Player,
card: Card,
): PlayersHands =
mapValues { (p, cards) ->
if (p == player) {
cards - card
} else {
cards
}
}.toPlayersHands()
fun addCards(
player: Player,
newCards: List<Card>,
): PlayersHands =
mapValues { (p, cards) ->
if (p == player) {
cards + newCards
} else {
cards
}
}.toPlayersHands()
}
fun Map<Player, List<Card>>.toPlayersHands(): PlayersHands = PlayersHands(this)