diff --git a/src/main/java/eric/Roullette/controller/GameController.java b/src/main/java/eric/Roullette/controller/GameController.java index b752532..ca15429 100644 --- a/src/main/java/eric/Roullette/controller/GameController.java +++ b/src/main/java/eric/Roullette/controller/GameController.java @@ -62,13 +62,11 @@ public class GameController { userAccessTokens.put(username, playerAccessToken); } } - - if (accessToken == null) { - ctx.status(401).result("Zugriffstoken fehlt oder ist ungültig"); + if (!userAccessTokens.containsKey(username)) { + ctx.status(401).result("Zugriffstoken für Benutzer " + username + " nicht gefunden."); return; } - - var devices = authService.getDevices(accessToken); + var devices = authService.getDevices(userAccessTokens.get(username)); ctx.json(devices); }); diff --git a/src/main/java/eric/Roullette/service/SpotifyAuthService.java b/src/main/java/eric/Roullette/service/SpotifyAuthService.java index cb62c98..9b28fcc 100644 --- a/src/main/java/eric/Roullette/service/SpotifyAuthService.java +++ b/src/main/java/eric/Roullette/service/SpotifyAuthService.java @@ -51,7 +51,7 @@ public class SpotifyAuthService { return tempApi.authorizationCodeUri() .scope(scope) .state(user) // Der Benutzername wird im State mitgegeben - .show_dialog(true) + //.show_dialog(true) .build() .execute(); } diff --git a/src/main/java/eric/Roullette/websocket/GameWebSocketHandler.java b/src/main/java/eric/Roullette/websocket/GameWebSocketHandler.java index dff62d1..85dcc02 100644 --- a/src/main/java/eric/Roullette/websocket/GameWebSocketHandler.java +++ b/src/main/java/eric/Roullette/websocket/GameWebSocketHandler.java @@ -88,14 +88,36 @@ public class GameWebSocketHandler { .flatMap(List::stream) .toList(); System.out.println("AlltracksCache für Spiel " + gameId + " hat " + allTracks.size() + " Songs (rundenstart)"); + //Trackinfos für alle Spieler sammeln + + if(playerTrackInfoCache.containsKey(gameId)){ + // Wenn der Cache schon existiert, dann nur die Trackinfos nutzen + System.out.println("TrackInfosCache für Spiel " + gameId + " existiert bereits (rundenstart)"); + // prüfen ob ein neuer spieler dazugekommen ist + if( allPlayerTracks.size() > playerTrackInfoCache.get(gameId).size()) { + System.out.println("Neuer Spieler hinzugefügt, Trackinfos werden aktualisiert (rundenstart)"); + Map> allTrackInfos = service.getTrackInfos(allPlayerTracks); + // Cache für Trackinfos pro Spiel-ID aktualisieren + playerTrackInfoCache.put(gameId, allTrackInfos); + } else { + System.out.println("Keine neuen Spieler, Trackinfos bleiben unverändert (rundenstart)"); + } + + } else { + // Wenn der Cache nicht existiert, dann Trackinfos sammeln + System.out.println("TrackInfosCache für Spiel " + gameId + " wird erstellt (rundenstart)"); + Map> allTrackInfos = service.getTrackInfos(allPlayerTracks); +// Cache für Trackinfos pro Spiel-ID + playerTrackInfoCache.put(gameId, allTrackInfos); + } + + System.out.println("TrackInfosCache für Spiel " + gameId + " hat " + playerTrackInfoCache.get(gameId).size() + " Spieler (rundenstart)"); + + if (!allTracks.isEmpty()) { service.startRound(gameId, allTracks); } - // Trackinfos für alle Spieler sammeln - //Map> allTrackInfos = service.getTrackInfos(allPlayerTracks); - // Cache für Trackinfos pro Spiel-ID - //playerTrackInfoCache.put(gameId, allTrackInfos); - //System.out.println("TrackInfosCache für Spiel " + gameId + " hat " + allTrackInfos.size() + " Spieler (rundenstart)"); +// broadcastRoundStart(gameId); } } @@ -165,8 +187,9 @@ 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() >= 6) + .filter(e -> e.getValue() >= score) .map(Map.Entry::getKey) .findFirst() .orElse(null);