Compare commits

...

7 Commits

Author SHA1 Message Date
TeamCity
9d72cda5ff ci: bump version to v4.30.0 2026-01-14 09:18:52 +00:00
3ce2b133bc feat: CORE-4 Rework the delay handler 2026-01-14 10:16:21 +01:00
802b6bf764 feat: Update LobbyComponent to use icons for player removal buttons 2026-01-14 10:16:15 +01:00
TeamCity
410b4829f4 ci: bump version to v4.29.0 2026-01-14 09:14:51 +00:00
4b17af2c2f feat: CORE-4 Rework the delay handler (#113)
Reviewed-on: #113
Co-authored-by: Janis <janis.e.20@gmx.de>
Co-committed-by: Janis <janis.e.20@gmx.de>
2026-01-14 10:12:09 +01:00
TeamCity
a163d9f8fe ci: bump version to v4.28.0 2026-01-13 13:37:03 +00:00
dc3da9a75c feat(ui): Tie selection (#111)
Added ability to pick a tie card in the backend

Co-authored-by: LQ63 <lkhermann@web.de>
Reviewed-on: #111
2026-01-13 14:33:25 +01:00
7 changed files with 32 additions and 4 deletions

View File

@@ -327,3 +327,19 @@
* Implement PlayDogCard functionality in user session and update Vue component ([859dfce](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/859dfce521b193b9208d0c70fca88016f8fe08f4)) * Implement PlayDogCard functionality in user session and update Vue component ([859dfce](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/859dfce521b193b9208d0c70fca88016f8fe08f4))
* Implement PlayDogCard functionality in user session and update Vue component ([61ae9b5](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/61ae9b5a5e7cd9fd82b77e9159814b0066874c2d)) * Implement PlayDogCard functionality in user session and update Vue component ([61ae9b5](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/61ae9b5a5e7cd9fd82b77e9159814b0066874c2d))
## (2026-01-13)
### Features
* **ui:** Tie selection ([#111](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/issues/111)) ([dc3da9a](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/dc3da9a75c75597ce81ce4d023af5390197012c9))
## (2026-01-14)
### Features
* CORE-4 Rework the delay handler ([#113](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/issues/113)) ([4b17af2](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/4b17af2c2f50a9d67cf1cf49cafdaac8f807d4b6))
## (2026-01-14)
### Features
* CORE-4 Rework the delay handler ([3ce2b13](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/3ce2b133bccf4dd591b6d038d6fa0d409a907775))
* Update LobbyComponent to use icons for player removal buttons ([802b6bf](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/802b6bf764eb41b806888e1b46a3e6d379d31f1b))

View File

@@ -9,6 +9,7 @@ import de.knockoutwhist.events.player.PlayerEvent
import de.knockoutwhist.player.Playertype.HUMAN import de.knockoutwhist.player.Playertype.HUMAN
import de.knockoutwhist.player.{AbstractPlayer, PlayerFactory} import de.knockoutwhist.player.{AbstractPlayer, PlayerFactory}
import de.knockoutwhist.rounds.{Match, Round, Trick} import de.knockoutwhist.rounds.{Match, Round, Trick}
import de.knockoutwhist.utils.DelayHandler
import de.knockoutwhist.utils.events.{EventListener, SimpleEvent} import de.knockoutwhist.utils.events.{EventListener, SimpleEvent}
import events.{KickEvent, LeftEvent, LobbyUpdateEvent, UserEvent} import events.{KickEvent, LeftEvent, LobbyUpdateEvent, UserEvent}
import exceptions.* import exceptions.*
@@ -33,6 +34,7 @@ class GameLobby private(
private val users: mutable.Map[UUID, UserSession] = mutable.Map() private val users: mutable.Map[UUID, UserSession] = mutable.Map()
logic.addListener(this) logic.addListener(this)
logic.addListener(DelayHandler)
logic.createSession() logic.createSession()
def addUser(user: User): UserSession = { def addUser(user: User): UserSession = {

View File

@@ -73,6 +73,15 @@ class UserSession(val user: User, val host: Boolean, val gameLobby: GameLobby) e
case None => case None =>
println("Card Index not found or is not a number.") 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" => case "KickPlayer" =>
val maybePlayerId: Option[String] = (data \ "playerId").asOpt[String] val maybePlayerId: Option[String] = (data \ "playerId").asOpt[String]
maybePlayerId match { maybePlayerId match {

View File

@@ -36,7 +36,7 @@ object WebsocketEventMapper {
// Register all custom mappers here // Register all custom mappers here
registerCustomMapper(ReceivedHandEventMapper) registerCustomMapper(ReceivedHandEventMapper)
registerCustomMapper(GameStateEventMapper) //registerCustomMapper(GameStateEventMapper)
registerCustomMapper(CardPlayedEventMapper) registerCustomMapper(CardPlayedEventMapper)
registerCustomMapper(NewRoundEventMapper) registerCustomMapper(NewRoundEventMapper)
registerCustomMapper(NewTrickEventMapper) registerCustomMapper(NewTrickEventMapper)
@@ -54,6 +54,7 @@ object WebsocketEventMapper {
}else { }else {
None 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( Json.obj(
"id" -> ("request-" + java.util.UUID.randomUUID().toString), "id" -> ("request-" + java.util.UUID.randomUUID().toString),
"event" -> obj.id, "event" -> obj.id,

View File

@@ -1,3 +1,3 @@
MAJOR=4 MAJOR=4
MINOR=27 MINOR=30
PATCH=0 PATCH=0