Files
KnockOutWhist-Web/knockoutwhistweb/app/controllers/Gamesession.scala

58 lines
1.8 KiB
Scala

package controllers
import controllers.sessions.{AdvancedSession, PlayerSession, SimpleSession}
import de.knockoutwhist.cards.{Card, CardValue, Hand, Suit}
import de.knockoutwhist.control.GameLogic
import de.knockoutwhist.control.controllerBaseImpl.BaseGameLogic
import de.knockoutwhist.events.*
import de.knockoutwhist.events.player.{PlayCardEvent, PlayerEvent, ReceivedHandEvent, RequestTieChoiceEvent, RequestTrumpSuitEvent}
import de.knockoutwhist.player.AbstractPlayer
import de.knockoutwhist.rounds.Match
import de.knockoutwhist.ui.UI
import de.knockoutwhist.utils.CustomThread
import de.knockoutwhist.utils.events.{EventListener, SimpleEvent}
import java.util.UUID
import scala.collection.mutable
class Gamesession(id: UUID) extends CustomThread with EventListener with UI {
setName("Gamesession")
private val sessions: mutable.Map[UUID, PlayerSession] = mutable.Map()
var init = false
var logic: Option[GameLogic] = None
override def instance: CustomThread = this
override def listen(event: SimpleEvent): Unit = {
runLater {
event match {
case event: PlayCardEvent =>
PodGameManager.transmit(event.player.id, event)
case event: ReceivedHandEvent =>
PodGameManager.transmit(event.player.id, event)
case event: RequestTieChoiceEvent =>
PodGameManager.transmit(event.player.id, event)
case event: RequestTrumpSuitEvent =>
PodGameManager.transmit(event.player.id, event)
case _ =>
PodGameManager.transmitAll(event)
}
}
}
override def initial(gameLogic: GameLogic): Boolean = {
if (init) {
return false
}
this.logic = Some(gameLogic)
init = true
start()
true
}
def addSession(session: PlayerSession): Unit = {
sessions.put(session.id, session)
}
}