feat(game)!: Add winner display and return to lobby functionality
This commit is contained in:
@@ -4,14 +4,15 @@ import de.knockoutwhist.cards.{Hand, Suit}
|
||||
import de.knockoutwhist.control.GameLogic
|
||||
import de.knockoutwhist.control.GameState.{InGame, Lobby, MainMenu}
|
||||
import de.knockoutwhist.control.controllerBaseImpl.sublogic.util.{MatchUtil, PlayerUtil}
|
||||
import de.knockoutwhist.events.global.{CardPlayedEvent, GameStateChangeEvent, SessionClosed}
|
||||
import de.knockoutwhist.events.global.tie.TieTurnEvent
|
||||
import de.knockoutwhist.events.global.{CardPlayedEvent, GameStateChangeEvent, NewTrickEvent, SessionClosed}
|
||||
import de.knockoutwhist.events.player.{PlayerEvent, ReceivedHandEvent}
|
||||
import de.knockoutwhist.player.Playertype.HUMAN
|
||||
import de.knockoutwhist.player.{AbstractPlayer, PlayerFactory}
|
||||
import de.knockoutwhist.rounds.{Match, Round, Trick}
|
||||
import de.knockoutwhist.utils.events.{EventListener, SimpleEvent}
|
||||
import exceptions.*
|
||||
import logic.game.PollingEvents.{CardPlayed, LobbyCreation, LobbyUpdate, NewRound, ReloadEvent}
|
||||
import logic.game.PollingEvents.{CardPlayed, LobbyCreation, LobbyUpdate, NewRound, NewTrick, ReloadEvent}
|
||||
import model.sessions.{InteractionType, UserSession}
|
||||
import model.users.User
|
||||
|
||||
@@ -82,8 +83,13 @@ class GameLobby private(
|
||||
users.get(event.playerId).foreach(session => session.updatePlayer(event))
|
||||
case event: CardPlayedEvent =>
|
||||
addToQueue(CardPlayed)
|
||||
case event: TieTurnEvent =>
|
||||
addToQueue(ReloadEvent)
|
||||
users.get(event.player.id).foreach(session => session.updatePlayer(event))
|
||||
case event: PlayerEvent =>
|
||||
users.get(event.playerId).foreach(session => session.updatePlayer(event))
|
||||
case event: NewTrickEvent =>
|
||||
addToQueue(NewTrick)
|
||||
case event: GameStateChangeEvent =>
|
||||
if (event.oldState == MainMenu && event.newState == Lobby) {
|
||||
return
|
||||
@@ -197,6 +203,7 @@ class GameLobby private(
|
||||
throw new CantPlayCardException("You can't skip this round!")
|
||||
}
|
||||
logic.playerInputLogic.receivedDog(None)
|
||||
return
|
||||
}
|
||||
val hand = getHand(player)
|
||||
val card = hand.cards(cardIndex)
|
||||
@@ -229,7 +236,7 @@ class GameLobby private(
|
||||
}
|
||||
|
||||
def returnToLobby(userSession: UserSession): Unit = {
|
||||
if (users.contains(userSession.id)) {
|
||||
if (!users.contains(userSession.id)) {
|
||||
throw new NotInThisGameException("You are not in this game!")
|
||||
}
|
||||
val session = users(userSession.id)
|
||||
|
||||
Reference in New Issue
Block a user