if (game.getStartTime() == null) { player.leave(); } else {
public void quitMatch(UUID userId) { UUID playerId = getPlayerId(userId); if (playerId != null) { if (allJoined()) { GameSessionPlayer gameSessionPlayer = gameSessions.get(playerId); if (gameSessionPlayer != null) { gameSessionPlayer.quitGame(); } } else { // The player did never join the game but the game controller was started because the player was still connected as the // game was started. But the Client never called the join action. So now after the user is expired, the // quit match is called and has to end the game, because the player never joined the game. Player player = game.getPlayer(playerId); if (player != null) { player.leave(); checkStart(); // => So the game starts and gets an result or multiplayer game starts with active players } } } }
private void sendInfoAboutPlayersNotJoinedYet() { for (Player player : game.getPlayers().values()) { if (!player.hasLeft() && player.isHuman()) { Optional<User> requestedUser = getUserByPlayerId(player.getId()); if (requestedUser.isPresent()) { User user = requestedUser.get(); if (!user.isConnected()) { if (gameSessions.get(player.getId()) == null) { // join the game because player has not joined are was removed because of disconnect user.removeConstructing(player.getId()); GameManager.instance.joinGame(game.getId(), user.getId()); logger.debug("Player " + player.getName() + " (disconnected) has joined gameId: " + game.getId()); } ChatManager.instance.broadcast(chatId, player.getName(), user.getPingInfo() + " is pending to join the game", MessageColor.BLUE, true, ChatMessage.MessageType.STATUS, null); if (user.getSecondsDisconnected() > 240) { // Cancel player join possibility lately after 4 minutes logger.debug("Player " + player.getName() + " - canceled game (after 240 seconds) gameId: " + game.getId()); player.leave(); } } } else if (!player.hasLeft()) { logger.debug("Player " + player.getName() + " canceled game (no user) gameId: " + game.getId()); player.leave(); } } } checkStart(); }
player.leave(); if (checkIfGameIsOver()) {