diff --git a/src/main/java/eric/Roullette/websocket/GameWebSocketHandler.java b/src/main/java/eric/Roullette/websocket/GameWebSocketHandler.java index 3bc9575..e9a6d14 100644 --- a/src/main/java/eric/Roullette/websocket/GameWebSocketHandler.java +++ b/src/main/java/eric/Roullette/websocket/GameWebSocketHandler.java @@ -194,23 +194,24 @@ private void broadcastRoundResult(String gameId) { broadcastToAll(gameId, msg); // Prüfe auf Gewinner - int score = 6; // Punktestand für den Gewinn - String winner = scores.entrySet().stream() - .filter(e -> e.getValue() >= score) - .map(Map.Entry::getKey) - .findFirst() - .orElse(null); - if (winner != null) { - // Broadcast an alle, dass das Spiel vorbei ist - String winMsg = JsonUtil.toJson(Map.of( - "type", "game-end", - "winner", winner, - "scores", scores - )); - broadcastToAll(gameId, winMsg); - game.scores().replaceAll((user , pts) -> 0); // Reset Scores für alle Spieler + // Nur beenden, wenn EIN Spieler allein die höchste Punktzahl >= score hat + int score = 6; + int max = scores.values().stream().max(Integer::compareTo).orElse(0); + List topScorers = scores.entrySet().stream() + .filter(e -> e.getValue() == max && max >= score) + .map(Map.Entry::getKey) + .toList(); - } + if (topScorers.size() == 1) { + String winner = topScorers.get(0); + String winMsg = JsonUtil.toJson(Map.of( + "type", "game-end", + "winner", winner, + "scores", scores + )); + broadcastToAll(gameId, winMsg); + game.scores().replaceAll((user , pts) -> 0); // Reset Scores + } // else{ // // nächste Runde starten // // ...