From a8934189343b3d9f70c4570bb722434ed024d9c5 Mon Sep 17 00:00:00 2001 From: Jona Walpert Date: Fri, 15 May 2026 15:37:55 +0200 Subject: [PATCH] Fix: Lobby cleanup got blocked by previous feature for rejoining lobby while game is still going. --- .../commands/game/get_game_state/GetGameStateHandler.java | 5 +++++ .../dbis/cs108/casono/server/domain/lobby/LobbyManager.java | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/game/get_game_state/GetGameStateHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/game/get_game_state/GetGameStateHandler.java index c0d00b9..956f374 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/game/get_game_state/GetGameStateHandler.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/commands/game/get_game_state/GetGameStateHandler.java @@ -98,9 +98,14 @@ public class GetGameStateHandler extends CommandHandler { } try { + // Remove all active players for (String playerName : lobby.getPlayerNames()) { lobbyManager.removePlayer(playerName); } + // Also remove all absent players so the lobby can be deleted + for (String playerName : lobby.getAbsentPlayers()) { + lobbyManager.removePlayer(playerName); + } lobby.initGame(null); } catch (RuntimeException e) { LOGGER.log( diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/domain/lobby/LobbyManager.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/domain/lobby/LobbyManager.java index 394e0d6..0ade460 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/domain/lobby/LobbyManager.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/domain/lobby/LobbyManager.java @@ -217,7 +217,7 @@ public class LobbyManager { for (Map.Entry e : activeLobbies.entrySet()) { LobbyId id = e.getKey(); Lobby l = e.getValue(); - if (l.getPlayerNames().isEmpty()) { + if (!l.hasAnyPlayers()) { Instant created = creationTimes.get(id); if (created != null && created.isBefore(cutoff)) { result.add(id);