feat(api): Implemented turn event via websocket (#86)

Co-authored-by: TeamCity <teamcity@service.local>
Reviewed-on: #86
Reviewed-by: lq64 <lq@blackhole.local>
This commit is contained in:
2025-11-27 07:57:37 +01:00
parent 46c96d4ceb
commit 2aee79bb68
4 changed files with 110 additions and 7 deletions

View File

@@ -0,0 +1,35 @@
package util.mapper
import de.knockoutwhist.events.global.TurnEvent
import de.knockoutwhist.player.AbstractPlayer
import model.sessions.UserSession
import play.api.libs.json.{JsArray, JsObject, Json}
object TurnEventMapper extends SimpleEventMapper[TurnEvent] {
override def id: String = "TurnEvent"
override def toJson(event: TurnEvent, session: UserSession): JsObject = {
val nextPlayers = if (session.gameLobby.logic.getPlayerQueue.isEmpty) {
Json.arr()
} else {
val queue = session.gameLobby.logic.getPlayerQueue.get
JsArray(
queue.duplicate().map(player => mapPlayer(player)).toList
)
}
Json.obj(
"currentPlayer" -> mapPlayer(event.player),
"nextPlayers" -> nextPlayers
)
}
private def mapPlayer(player: AbstractPlayer): JsObject = {
Json.obj(
"name" -> player.name,
"dog" -> player.isInDogLife
)
}
}