Z tego przewodnika dowiesz się, jak korzystać z interfejsów API tabel wyników w pakiecie SDK usług Gier Play w języku C++, aby tworzyć wizualne tabele wyników, rejestrować wynik gracza i porównywać go z wynikami z poprzednich sesji gry. Interfejsy API znajdziesz w LeaderboardsClient.
Zanim zaczniesz
Jeśli jeszcze tego nie zrobisz, warto zapoznać się z koncepcjami gier z tabelami wyników.
Zanim zaczniesz kodować za pomocą interfejsów API tabel wyników:
Postępuj zgodnie z instrukcjami instalowania i konfigurowania aplikacji do korzystania z usług Gier Google Play w przewodniku Konfigurowanie pakietu SDK usług Google Play.
Zdefiniuj tabele wyników, które mają być wyświetlane lub aktualizowane w grze, postępując zgodnie z instrukcjami w przewodniku po Konsoli Google Play.
Zapoznaj się z zaleceniami opisanymi w Checkliście jakości.
Pobieranie klienta tabel wyników
Aby zacząć korzystać z interfejsu API tabel wyników, gra musi najpierw uzyskać obiekt
LeaderboardsClient.
Możesz to zrobić, wywołując PgsLeaderboardsClient_create()
metodę i przekazując aktywność.
Aktualizowanie wyniku gracza
Gdy wynik gracza się zmieni (np. gdy gracz ukończy grę
), gra może zaktualizować jego wynik w tabeli wyników, wywołując
PgsLeaderboardsClient_submitScoreImmediate. Musisz przekazać identyfikator tabeli wyników, wartość wyniku, opcjonalny tag wyniku i funkcję wywołania zwrotnego.
// Callback function to handle the result of submitting the score void OnScoreSubmitted(PgsStatusCode status_code, PgsScoreSubmissionData* score_submission_data, void* user_data) { if (status_code == PGS_STATUS_SUCCESS) { // Score submitted successfully // You can inspect score_submission_data for details // Remember to release the data when done: PgsScoreSubmissionData_Release(score_submission_data); } else { // Handle error } } // Function to submit the score void SubmitScore(PgsLeaderboardsClient* client, const char* leaderboard_id, int64_t score) { const char* score_tag = NULL; // Optional tag PgsLeaderboardsClient_submitScoreImmediate( client, leaderboard_id, score, score_tag, OnScoreSubmitted, NULL // user_data - optional context pointer ); } // Example usage: // Assuming 'my_leaderboard_id' is defined elsewhere, e.g., fetched from resources // SubmitScore(leaderboards_client, my_leaderboard_id, 1337);
Dobrym rozwiązaniem jest zarządzanie identyfikatorami tabel wyników jako stałymi lub zasobami w kodzie C++.
Wyświetlanie tabeli wyników
Aby wyświetlić domyślny interfejs użytkownika tabeli wyników dla konkretnej tabeli, wywołaj PgsLeaderboardsClient_showLeaderboardUI. Ta funkcja wymaga uchwytu klienta, aktywności, identyfikatora tabeli wyników, przedziału czasu i kolekcji oraz wywołania zwrotnego.
// Callback function to handle the result of showing the UI void OnShowLeaderboardUI(PgsStatusCode status_code, bool success, void* user_data) { if (status_code == PGS_STATUS_SUCCESS && success) { // UI was shown successfully } else { // Handle error or failure to show UI } } // Function to show a specific leaderboard UI void ShowLeaderboard(PgsLeaderboardsClient* client, jobject activity, const char* leaderboard_id) { PgsLeaderboardsClient_showLeaderboardUI( client, activity, leaderboard_id, PGS_LEADERBOARD_TIME_SPAN_ALL_TIME, // Or PGS_LEADERBOARD_TIME_SPAN_DAILY, PGS_LEADERBOARD_TIME_SPAN_WEEKLY PGS_LEADERBOARD_COLLECTION_PUBLIC, // Or PGS_LEADERBOARD_COLLECTION_FRIENDS OnShowLeaderboardUI, NULL // user_data - optional context pointer ); } // Example usage: // ShowLeaderboard(leaderboards_client, android_activity, my_leaderboard_id);
Ta funkcja wyświetla interfejs. Obiekt activity zapewnia kontekst wyświetlania interfejsu.