/** * Service-Klasse für die Bestenliste (Leaderboard Service). * Kapselt den REST-API-Aufruf zur Abfrage der globalen Highscore-Liste. */ class LeaderboardService { /** * Erstellt eine Instanz des LeaderboardService. * @param {Object} config - Das globale Konfigurationsobjekt. */ constructor(config) { this.baseUrl = config.API_BASE_URL; this.urlTail = "leaderboard"; } /** * Ruft einen Ausschnitt der globalen Bestenliste ab (Paging). * @param {number} offset - Der Startindex der abzufragenden Einträge (0-basiert). * @param {number} limit - Die maximale Anzahl der zurückzugebenden Einträge (z.B. 10 für Top 10). * @returns {Promise} Ein Promise mit der Liste der Top-Spieler im Body. */ async getLeaderboard(offset, limit) { const response = await fetch( `${this.baseUrl}${this.urlTail}?offset=${offset}&limit=${limit}`, { method: "GET", }, ); let body = null; try { body = await response.json(); } catch { console.error("Error in getLeaderboard"); } return { status: response.status, ok: response.ok, body: body, }; } } // Global verfügbar machen window.LeaderboardService = LeaderboardService;