java.lang.Object
polimi.ingsw.am21.codex.client.ClientGameEventHandler
- All Implemented Interfaces:
Remote
,GameErrorListener
,GameEventListener
,RemoteGameEventListener
Class that handles the events thrown by the server, caught by the clients and forwards them to the local model and the view.
It implements the GameEventListener and GameErrorListener interfaces.
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
void
void
cardPlaced
(String gameId, String playerId, Integer playerHandCardNumber, Integer cardId, CardSideType side, Position position, int newPlayerScore, Map<ResourceType, Integer> updatedResources, Map<ObjectType, Integer> updatedObjects, Set<Position> availableSpots, Set<Position> forbiddenSpots) Interface method used to process the event of the current player placing a card on their playerboard.void
changeTurn
(String gameId, String playerNickname, Integer playerIndex, Boolean isLastRound, Set<Position> availableSpots, Set<Position> forbiddenSpots, Integer resourceDeckTopCardId, Integer goldDeckTopCardId) Interface method used to process the event of the player ending their turn choosing not to draw a card.void
changeTurn
(String gameId, String playerNickname, Integer playerIndex, Boolean isLastRound, DrawingCardSource source, DrawingDeckType deck, Integer cardId, Integer newPairCardId, Set<Position> availableSpots, Set<Position> forbiddenSpots, Integer resourceDeckTopCardId, Integer goldDeckTopCardId) Interface method used to process the event of the player ending their turn drawing a cardvoid
chatMessage
(String gameID, ChatMessage message) Interface method used to process the event of a player sending a chat message in the game they're in.void
void
gameAlreadyExists
(String gameId) void
void
gameCreated
(String gameId, int currentPlayers, int maxPlayers) Interface method used to process the game creation event.void
gameDeleted
(String gameId) Interface method used to process the game deletion event.void
gameHalted
(String gameID) void
gameNotFound
(String gameId) void
void
void
gameOver()
Interface method used to process the event of the game ending.void
gameResumed
(String gameID) void
gameStarted
(String gameId, GameInfo gameInfo) Interface method used to process the event of a game starting.void
getObjectiveCards
(javafx.util.Pair<Integer, Integer> objectiveCards) Interface method to process the event of a client requesting their secret objective cardvoid
getStarterCard
(Integer cardId) Interface method to process the event of a client requesting their starter cardgetView()
void
void
void
void
invalidCardPlacement
(String reason) void
void
void
void
void
void
lobbyInfo
(LobbyUsersInfo usersInfo) Interface method used to process the event of a player joining a game lobby when there are other players already inside it that may or may not have already completed the process of joining the game.void
nicknameTaken
(String nickname) void
void
void
playerChoseObjectiveCard
(String gameId, UUID connectionID, String nickname) Interface method used to process the event of a player choosing their objective card.void
playerConnectionChanged
(UUID connectionID, String nickname, GameController.UserGameContext.ConnectionStatus status) Interface method used to process the event of a player's connection status changing.void
playerJoinedGame
(String gameId, UUID connectionID, String nickname, TokenColor color, List<Integer> handIDs, Integer starterCardID, CardSideType starterSide) Interface method used to process the event of a player joining a game.void
playerJoinedLobby
(String gameId, UUID connectionID) Interface method used to process the event of a player joining a game lobby.void
playerLeftLobby
(String gameId, UUID connectionID) Interface method used to process the event of a player leaving a game lobby.void
void
void
playerScoresUpdate
(Map<String, Integer> newScores) Interface method used to process the event of the player's score being updated after the game ends and secret and common objectives are evaluated.void
playerSetNickname
(String gameId, UUID connectionID, String nickname) Interface method used to process the event of a player choosing their nickname.void
playerSetToken
(String gameId, UUID connectionID, String nickname, TokenColor token) Interface method used to process the event of a player choosing their token color.void
refreshLobbies
(Set<String> lobbyIds, Map<String, Integer> currentPlayers, Map<String, Integer> maxPlayers) Interface method used to refresh the status of the lobbies after a game is created or a client joins a gamevoid
remainingRounds
(String gameID, int remainingRounds) Interface method used to process the event of the number of remaining rounds being updated or set when winning score is reached by any of the players.void
tokenTaken
(TokenColor token) void
void
userContext
(FullUserGameContext context) void
winningPlayer
(String nickname) Interface method used to process and display the winning player of the game.
-
Constructor Details
-
ClientGameEventHandler
-
-
Method Details
-
getView
-
getRemoteListener
-
getLocalModel
-
handleInvalidActionException
-
listGames
public void listGames() -
gameCreated
Description copied from interface:RemoteGameEventListener
Interface method used to process the game creation event.- Specified by:
gameCreated
in interfaceGameEventListener
- Specified by:
gameCreated
in interfaceRemoteGameEventListener
- Parameters:
gameId
- The unique identifier of the game that has just been created.currentPlayers
- The number of players currently in the game.maxPlayers
- The maximum number of players that can join the game.
-
refreshLobbies
public void refreshLobbies(Set<String> lobbyIds, Map<String, Integer> currentPlayers, Map<String, Integer> maxPlayers) Description copied from interface:RemoteGameEventListener
Interface method used to refresh the status of the lobbies after a game is created or a client joins a game- Specified by:
refreshLobbies
in interfaceGameEventListener
- Specified by:
refreshLobbies
in interfaceRemoteGameEventListener
- Parameters:
lobbyIds
- A set containing the unique identifiers of all the game lobbies with available spots.currentPlayers
- A map containing the number of players currently in each lobby. The key is the unique identifier of the lobby and the value is the number of players. The number of players is the number of players currently in the lobby.maxPlayers
- A map containing the maximum number of players that can join each lobby. The key is the unique identifier of the lobby and the value is the maximum number of players. The maximum number of players is the maximum number of players that can join the lobby.
-
gameDeleted
Description copied from interface:RemoteGameEventListener
Interface method used to process the game deletion event.- Specified by:
gameDeleted
in interfaceGameEventListener
- Specified by:
gameDeleted
in interfaceRemoteGameEventListener
- Parameters:
gameId
- The identifier of the game that has just been deleted.
-
playerJoinedLobby
Description copied from interface:RemoteGameEventListener
Interface method used to process the event of a player joining a game lobby.- Specified by:
playerJoinedLobby
in interfaceGameEventListener
- Specified by:
playerJoinedLobby
in interfaceRemoteGameEventListener
- Parameters:
gameId
- The identifier of the game lobby that the player has joined.connectionID
- The unique identifier of the player that has joined the lobby.
-
playerLeftLobby
Description copied from interface:RemoteGameEventListener
Interface method used to process the event of a player leaving a game lobby.- Specified by:
playerLeftLobby
in interfaceGameEventListener
- Specified by:
playerLeftLobby
in interfaceRemoteGameEventListener
- Parameters:
gameId
- The identifier of the game lobby that the player has left.connectionID
- The unique identifier of the player that has left the lobby.
-
playerSetToken
Description copied from interface:RemoteGameEventListener
Interface method used to process the event of a player choosing their token color.- Specified by:
playerSetToken
in interfaceGameEventListener
- Specified by:
playerSetToken
in interfaceRemoteGameEventListener
- Parameters:
gameId
- The identifier of the game lobby in which the player has set their token color.connectionID
- The unique identifier of the player that has set their token color.nickname
- The nickname of the player that has set their token color, if they have chosen it alreadytoken
- The token color that the player has chosen
-
playerSetNickname
Description copied from interface:RemoteGameEventListener
Interface method used to process the event of a player choosing their nickname.- Specified by:
playerSetNickname
in interfaceGameEventListener
- Specified by:
playerSetNickname
in interfaceRemoteGameEventListener
- Parameters:
gameId
- The identifier of the game lobby in which the player has set their nickname.connectionID
- The unique identifier of the player that has set their nickname.nickname
- The nickname of the player that has set their nickname
-
playerChoseObjectiveCard
Description copied from interface:RemoteGameEventListener
Interface method used to process the event of a player choosing their objective card.- Specified by:
playerChoseObjectiveCard
in interfaceGameEventListener
- Specified by:
playerChoseObjectiveCard
in interfaceRemoteGameEventListener
- Parameters:
gameId
- The identifier of the game lobby in which the player has set their objective card.connectionID
- The unique identifier of the player that has set their objective card.nickname
- The nickname of the player that has set their objective card, if they have chosen it already
-
playerJoinedGame
public void playerJoinedGame(String gameId, UUID connectionID, String nickname, TokenColor color, List<Integer> handIDs, Integer starterCardID, CardSideType starterSide) Description copied from interface:RemoteGameEventListener
Interface method used to process the event of a player joining a game. This happens when a player chooses which side of their starter card they prefer to place- Specified by:
playerJoinedGame
in interfaceGameEventListener
- Specified by:
playerJoinedGame
in interfaceRemoteGameEventListener
- Parameters:
gameId
- The identifier of the game that the player has joined.connectionID
- The unique identifier of the player that has joined the game.nickname
- The nickname of the player that has joined the game.color
- The token color of the player that has joined the game.handIDs
- The unique identifiers of the cards in the player's hand.starterCardID
- The id of the starter card the player was given as their starter card.starterSide
- The side of the card that the player has chosen to place.
-
gameStarted
Description copied from interface:RemoteGameEventListener
Interface method used to process the event of a game starting.- Specified by:
gameStarted
in interfaceGameEventListener
- Specified by:
gameStarted
in interfaceRemoteGameEventListener
- Parameters:
gameId
- The identifier of the game that has just started.gameInfo
- The information about the game that has just started.
-
changeTurn
public void changeTurn(String gameId, String playerNickname, Integer playerIndex, Boolean isLastRound, DrawingCardSource source, DrawingDeckType deck, Integer cardId, Integer newPairCardId, Set<Position> availableSpots, Set<Position> forbiddenSpots, Integer resourceDeckTopCardId, Integer goldDeckTopCardId) Description copied from interface:RemoteGameEventListener
Interface method used to process the event of the player ending their turn drawing a card- Specified by:
changeTurn
in interfaceGameEventListener
- Specified by:
changeTurn
in interfaceRemoteGameEventListener
- Parameters:
gameId
- The unique identifier of the game that has just ended.playerNickname
- The nickname of the player that has just finished their turn. This can be null if the game ended because of a disconnection.playerIndex
- The index of the player that has just finished their turn in the list of players.isLastRound
- A boolean indicating if this is the last round of the game.source
- The source from which the card was drawn.deck
- The type of deck from which the card was drawn.cardId
- The unique identifier of the card that was drawn. (null if the receiving client is not the one who drew the card)newPairCardId
- The unique identifier of the new pair card that was drawn.availableSpots
- A set of positions that are available for the next player to place a card.forbiddenSpots
- A set of positions that are forbidden for the next player to place a card.
-
changeTurn
public void changeTurn(String gameId, String playerNickname, Integer playerIndex, Boolean isLastRound, Set<Position> availableSpots, Set<Position> forbiddenSpots, Integer resourceDeckTopCardId, Integer goldDeckTopCardId) Description copied from interface:RemoteGameEventListener
Interface method used to process the event of the player ending their turn choosing not to draw a card. This possibility is given by the fact that the decks might be empty, A player can choose not to draw in their last turn if they prefer not to draw from the pairs available on the gameboard- Specified by:
changeTurn
in interfaceGameEventListener
- Specified by:
changeTurn
in interfaceRemoteGameEventListener
- Parameters:
gameId
- The unique identifier of the game that has just ended.playerNickname
- The player that has just finished their turnplayerIndex
- The index of the player that has just finished their turn in the list of players.isLastRound
- A boolean indicating if this is the last round of the game.availableSpots
- A set of positions that are available for the next player to place a card.forbiddenSpots
- A set of positions that are forbidden for the next player to place a card.resourceDeckTopCardId
- The unique identifier of the top card in the resource deck.goldDeckTopCardId
- The unique identifier of the top card in the gold deck.
-
cardPlaced
public void cardPlaced(String gameId, String playerId, Integer playerHandCardNumber, Integer cardId, CardSideType side, Position position, int newPlayerScore, Map<ResourceType, Integer> updatedResources, Map<ObjectType, Integer> updatedObjects, Set<Position> availableSpots, Set<Position> forbiddenSpots) Description copied from interface:RemoteGameEventListener
Interface method used to process the event of the current player placing a card on their playerboard.- Specified by:
cardPlaced
in interfaceGameEventListener
- Specified by:
cardPlaced
in interfaceRemoteGameEventListener
- Parameters:
gameId
- The identifier of the game in which the card was placed.playerId
- The identifier of the player that placed the card.playerHandCardNumber
- The number of the card in the player's hand that was placed.cardId
- The unique identifier of the card that was placed.side
- The side of the card that was placed.position
- The position on the player board where the card was placed.newPlayerScore
- The updated score of the player that placed the card.updatedResources
- The updated resources of the player that placed the card. The key is the type of resource and the value is the new amount of that resource.updatedObjects
- The updated objects of the player that placed the card. The key is the type of object and the value is the new amount of that object.availableSpots
- A set of positions that are available for the next player to place a card.forbiddenSpots
- A set of positions that are forbidden for the next player to place a card. This set is used to display the forbidden spots on the gameboard.
-
unknownResponse
public void unknownResponse()- Specified by:
unknownResponse
in interfaceGameErrorListener
-
gameAlreadyExists
- Specified by:
gameAlreadyExists
in interfaceGameErrorListener
-
gameNotFound
- Specified by:
gameNotFound
in interfaceGameErrorListener
-
notInLobby
public void notInLobby()- Specified by:
notInLobby
in interfaceGameErrorListener
-
lobbyFull
- Specified by:
lobbyFull
in interfaceGameErrorListener
-
tokenTaken
- Specified by:
tokenTaken
in interfaceGameErrorListener
-
nicknameTaken
- Specified by:
nicknameTaken
in interfaceGameErrorListener
-
gameNotStarted
public void gameNotStarted()- Specified by:
gameNotStarted
in interfaceGameErrorListener
-
notInGame
public void notInGame()- Specified by:
notInGame
in interfaceGameErrorListener
-
gameAlreadyStarted
public void gameAlreadyStarted()- Specified by:
gameAlreadyStarted
in interfaceGameErrorListener
-
playerNotActive
public void playerNotActive()- Specified by:
playerNotActive
in interfaceGameErrorListener
-
invalidCardPlacement
- Specified by:
invalidCardPlacement
in interfaceGameErrorListener
-
invalidNextTurnCall
public void invalidNextTurnCall()- Specified by:
invalidNextTurnCall
in interfaceGameErrorListener
-
invalidGetObjectiveCardsCall
public void invalidGetObjectiveCardsCall()- Specified by:
invalidGetObjectiveCardsCall
in interfaceGameErrorListener
-
gameNotReady
public void gameNotReady()- Specified by:
gameNotReady
in interfaceGameErrorListener
-
gameOver
public void gameOver()Description copied from interface:RemoteGameEventListener
Interface method used to process the event of the game ending.- Specified by:
gameOver
in interfaceGameErrorListener
- Specified by:
gameOver
in interfaceGameEventListener
- Specified by:
gameOver
in interfaceRemoteGameEventListener
-
emptyDeck
public void emptyDeck()- Specified by:
emptyDeck
in interfaceGameErrorListener
-
playerNotFound
public void playerNotFound()- Specified by:
playerNotFound
in interfaceGameErrorListener
-
incompleteLobbyPlayer
- Specified by:
incompleteLobbyPlayer
in interfaceGameErrorListener
-
illegalCardSideChoice
public void illegalCardSideChoice()- Specified by:
illegalCardSideChoice
in interfaceGameErrorListener
-
invalidTokenColor
public void invalidTokenColor()- Specified by:
invalidTokenColor
in interfaceGameErrorListener
-
alreadyPlacedCard
public void alreadyPlacedCard()- Specified by:
alreadyPlacedCard
in interfaceGameErrorListener
-
cardNotPlaced
public void cardNotPlaced()- Specified by:
cardNotPlaced
in interfaceGameErrorListener
-
playerScoresUpdate
Description copied from interface:RemoteGameEventListener
Interface method used to process the event of the player's score being updated after the game ends and secret and common objectives are evaluated.- Specified by:
playerScoresUpdate
in interfaceGameEventListener
- Specified by:
playerScoresUpdate
in interfaceRemoteGameEventListener
- Parameters:
newScores
- A map containing the updated scores of the players. The key is the nickname of the player and the value is the new score of the player.
-
remainingRounds
Description copied from interface:RemoteGameEventListener
Interface method used to process the event of the number of remaining rounds being updated or set when winning score is reached by any of the players.- Specified by:
remainingRounds
in interfaceGameEventListener
- Specified by:
remainingRounds
in interfaceRemoteGameEventListener
- Parameters:
gameID
- The identifier of the game in which the number of remaining rounds was updated.remainingRounds
- The number of rounds remaining in the game.
-
winningPlayer
Description copied from interface:RemoteGameEventListener
Interface method used to process and display the winning player of the game.- Specified by:
winningPlayer
in interfaceGameEventListener
- Specified by:
winningPlayer
in interfaceRemoteGameEventListener
- Parameters:
nickname
- The nickname of the player that has won the game.
-
playerConnectionChanged
public void playerConnectionChanged(UUID connectionID, String nickname, GameController.UserGameContext.ConnectionStatus status) Description copied from interface:RemoteGameEventListener
Interface method used to process the event of a player's connection status changing.- Specified by:
playerConnectionChanged
in interfaceGameEventListener
- Specified by:
playerConnectionChanged
in interfaceRemoteGameEventListener
- Parameters:
connectionID
- The unique identifier of the player whose connection status has changed. This is the identifier that the player uses to connect to the server.nickname
- The nickname of the player whose connection status has changed.status
- The new connection status of the player.
-
lobbyInfo
Description copied from interface:RemoteGameEventListener
Interface method used to process the event of a player joining a game lobby when there are other players already inside it that may or may not have already completed the process of joining the game.- Specified by:
lobbyInfo
in interfaceGameEventListener
- Specified by:
lobbyInfo
in interfaceRemoteGameEventListener
- Parameters:
usersInfo
- The information about the users in the lobby. It includes the nickname, token color, objective card choice, starter card side chosen, and in-game status of each user.
-
chatMessage
Description copied from interface:RemoteGameEventListener
Interface method used to process the event of a player sending a chat message in the game they're in.- Specified by:
chatMessage
in interfaceGameEventListener
- Specified by:
chatMessage
in interfaceRemoteGameEventListener
- Parameters:
gameID
- The identifier of the game in which the chat message was sent.message
- The chat message that was sent by the player.
-
getObjectiveCards
Description copied from interface:RemoteGameEventListener
Interface method to process the event of a client requesting their secret objective card- Specified by:
getObjectiveCards
in interfaceGameEventListener
- Specified by:
getObjectiveCards
in interfaceRemoteGameEventListener
- Parameters:
objectiveCards
- A pair of integers representing the unique identifiers of the secret objective cards. The first integer is the unique identifier of the secret objective card that the player has chosen. The second integer is the unique identifier of the secret objective card that the player has not chosen.
-
getStarterCard
Description copied from interface:RemoteGameEventListener
Interface method to process the event of a client requesting their starter card- Specified by:
getStarterCard
in interfaceGameEventListener
- Specified by:
getStarterCard
in interfaceRemoteGameEventListener
- Parameters:
cardId
- The unique identifier of the starter card that the player has chosen.
-
gameHalted
- Specified by:
gameHalted
in interfaceGameEventListener
- Specified by:
gameHalted
in interfaceRemoteGameEventListener
-
gameResumed
- Specified by:
gameResumed
in interfaceGameEventListener
- Specified by:
gameResumed
in interfaceRemoteGameEventListener
-
userContext
- Specified by:
userContext
in interfaceGameEventListener
- Specified by:
userContext
in interfaceRemoteGameEventListener
-