From ee7555ad9735020d8fa6ab03c7b63d3224d32b2a Mon Sep 17 00:00:00 2001 From: LQ63 Date: Tue, 13 Jan 2026 14:24:51 +0100 Subject: [PATCH] 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. --- knockoutwhistweb/app/model/sessions/UserSession.scala | 10 ++++++++++ .../app/model/sessions/UserWebsocketActor.scala | 1 + knockoutwhistweb/app/util/WebsocketEventMapper.scala | 5 ++++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/knockoutwhistweb/app/model/sessions/UserSession.scala b/knockoutwhistweb/app/model/sessions/UserSession.scala index 5379cb8..d6f3641 100644 --- a/knockoutwhistweb/app/model/sessions/UserSession.scala +++ b/knockoutwhistweb/app/model/sessions/UserSession.scala @@ -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 { diff --git a/knockoutwhistweb/app/model/sessions/UserWebsocketActor.scala b/knockoutwhistweb/app/model/sessions/UserWebsocketActor.scala index 782954c..36cc747 100644 --- a/knockoutwhistweb/app/model/sessions/UserWebsocketActor.scala +++ b/knockoutwhistweb/app/model/sessions/UserWebsocketActor.scala @@ -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)) } diff --git a/knockoutwhistweb/app/util/WebsocketEventMapper.scala b/knockoutwhistweb/app/util/WebsocketEventMapper.scala index 522bd56..a8a906e 100644 --- a/knockoutwhistweb/app/util/WebsocketEventMapper.scala +++ b/knockoutwhistweb/app/util/WebsocketEventMapper.scala @@ -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,