Added rendering for Web Page

This commit is contained in:
LQ63
2025-10-22 08:31:25 +02:00
parent b17c5160e9
commit b33ab184d2
8 changed files with 470 additions and 18 deletions

View File

@@ -1,11 +1,12 @@
package controllers
import controllers.sessions.SimpleSession
import controllers.sessions.AdvancedSession
import de.knockoutwhist.cards.{Card, CardValue, Hand, Suit}
import de.knockoutwhist.control.GameState.MainMenu
import de.knockoutwhist.control.GameLogic
import de.knockoutwhist.control.GameState.{InGame, Lobby}
import de.knockoutwhist.control.controllerBaseImpl.BaseGameLogic
import de.knockoutwhist.events.*
import de.knockoutwhist.events.global.GameStateChangeEvent
import de.knockoutwhist.events.player.PlayerEvent
import de.knockoutwhist.player.AbstractPlayer
import de.knockoutwhist.rounds.Match
import de.knockoutwhist.ui.UI
@@ -17,32 +18,30 @@ object WebUI extends CustomThread with EventListener with UI {
setName("WebUI")
var init = false
var logic: Option[GameLogic] = None
var latestOutput: String = ""
override def instance: CustomThread = WebUI
override def listen(event: SimpleEvent): Unit = {
runLater {
event match {
case event: PlayerEvent =>
PodGameManager.transmit(event.playerId, event)
case event: GameStateChangeEvent =>
if (event.newState == MainMenu) {
PodGameManager.clearSessions()
}
Some(true)
case _ =>
PodGameManager.transmitAll(event)
}
event match {
case event: GameStateChangeEvent =>
if (event.oldState == Lobby && event.newState == InGame) {
val match1: Option[Match] = logic.get.asInstanceOf[BaseGameLogic].getCurrentMatch
val players: List[AbstractPlayer] = match1.get.totalplayers
players.map(player => PodGameManager.addSession(AdvancedSession(player.id, player)))
}
case _ =>
}
}
override def initial: Boolean = {
override def initial(gameLogic: GameLogic): Boolean = {
if (init) {
return false
}
init = true
this.logic = Some(gameLogic)
start()
true
}