Files
KnockOutWhist-Web/knockoutwhistweb/app/dto/TieInfoDTO.scala
lq64 30c05c3014 feat(ui): FRO-26 Nice Tie UI (#115)
Added nice tie UI Component

Co-authored-by: LQ63 <lkhermann@web.de>
Reviewed-on: #115
2026-01-22 01:11:17 +01:00

32 lines
1.2 KiB
Scala

package dto
import de.knockoutwhist.cards.Card
import dto.subDTO.{CardDTO, PlayerDTO}
import logic.game.GameLobby
import model.users.User
import scala.util.Try
case class TieInfoDTO(gameId: String, currentPlayer: Option[PlayerDTO], self: Option[PlayerDTO], tiedPlayers: Seq[PlayerDTO], highestAmount: Int, selectedCards: Map[String, CardDTO], winners: Option[Seq[PlayerDTO]])
object TieInfoDTO {
def apply(lobby: GameLobby, user: User): TieInfoDTO = {
val selfPlayer = Try {
Some(lobby.getPlayerByUser(user))
}.getOrElse(None)
TieInfoDTO(
gameId = lobby.id,
currentPlayer = lobby.logic.playerTieLogic.currentTiePlayer().map(PlayerDTO.apply),
self = selfPlayer.map(PlayerDTO.apply),
tiedPlayers = lobby.logic.playerTieLogic.getTiedPlayers.map(PlayerDTO.apply),
highestAmount = lobby.logic.playerTieLogic.highestAllowedNumber(),
selectedCards = lobby.logic.playerTieLogic.getSelectedCard.map {
case (player, card) => player.id.toString -> CardDTO(card)
},
winners = Some(lobby.logic.playerTieLogic.getSelectedCard.filter((_,card) => card == lobby.logic.playerTieLogic.getSelectedCard.values.maxBy(_.cardValue.ordinal)).keySet.toList.map(PlayerDTO.apply))
)
}
}