feat(ui): Tie selection

Added a minimal ui for the tie selection. Tie selection gets sent to the server via websocket and gets response from it.
This commit is contained in:
LQ63
2026-01-13 14:24:51 +01:00
parent 4a4e9c48fc
commit ee7555ad97
3 changed files with 15 additions and 1 deletions

View File

@@ -27,6 +27,7 @@ class UserSession(val user: User, val host: Boolean, val gameLobby: GameLobby) e
case _ =>
}
websocketActor.foreach(_.solveRequests())
println("EVENT which will get transmitted to client:" + event.id)
websocketActor.foreach(_.transmitEventToClient(event))
}
@@ -73,6 +74,15 @@ class UserSession(val user: User, val host: Boolean, val gameLobby: GameLobby) e
case None =>
println("Card Index not found or is not a number.")
}
case "PickTie" =>
val maybeCardIndex: Option[Int] = (data \ "cardIndex").asOpt[Int]
maybeCardIndex match {
case Some(index) =>
val session = gameLobby.getUserSession(user.id)
gameLobby.selectTie(session, index)
case None =>
println("Card Index not found or is not a number.")
}
case "KickPlayer" =>
val maybePlayerId: Option[String] = (data \ "playerId").asOpt[String]
maybePlayerId match {

View File

@@ -111,6 +111,7 @@ class UserWebsocketActor(
}
def transmitEventToClient(event: SimpleEvent): Unit = {
println("This event is getting transmitted to client (INSIDE transmitEventToClient")
transmitJsonToClient(WebsocketEventMapper.toJson(event, session))
}

View File

@@ -36,7 +36,7 @@ object WebsocketEventMapper {
// Register all custom mappers here
registerCustomMapper(ReceivedHandEventMapper)
registerCustomMapper(GameStateEventMapper)
//registerCustomMapper(GameStateEventMapper)
registerCustomMapper(CardPlayedEventMapper)
registerCustomMapper(NewRoundEventMapper)
registerCustomMapper(NewTrickEventMapper)
@@ -50,10 +50,13 @@ object WebsocketEventMapper {
def toJson(obj: SimpleEvent, session: UserSession): JsValue = {
val data: Option[JsValue] = if (specialMappers.contains(obj.id)) {
println("TEST1")
Some(specialMappers(obj.id).toJson(obj, session))
}else {
println("TEST2")
None
}
println(s"This is getting sent to client: EVENT: ${obj.id}, STATE: ${session.gameLobby.getLogic.getCurrentState.toString}, STATEDATA: ${stateToJson(session)}, DATA: ${data}")
Json.obj(
"id" -> ("request-" + java.util.UUID.randomUUID().toString),
"event" -> obj.id,