В этом руководстве показано, как использовать API таблиц лидеров из SDK C++ Play Games Services для создания визуальных таблиц лидеров, записи результатов игрока и сравнения этих результатов с результатами предыдущих игровых сессий. API можно найти в LeaderboardsClient .
Прежде чем начать
Если вы еще этого не сделали, вам может быть полезно повторить основные принципы игры с таблицами лидеров .
Прежде чем начать программировать с использованием API таблиц лидеров:
Следуйте инструкциям по установке и настройке вашего приложения для использования сервисов Google Play Games, приведенным в руководстве по настройке SDK сервисов Google Play .
Настройте таблицы лидеров, которые вы хотите отображать или обновлять в своей игре, следуя инструкциям в руководстве Google Play Console .
Ознакомьтесь с рекомендациями, описанными в Контрольном списке качества .
Загрузите клиент для таблиц лидеров.
Для начала использования API таблиц лидеров ваша игра должна сначала получить объект LeaderboardsClient . Это можно сделать, вызвав метод PgsLeaderboardsClient_create() и передав в него объект Activity.
Обновить счет игрока
Когда счет игрока изменяется (например, когда игрок завершает игру), ваша игра может обновить его счет в таблице лидеров, вызвав метод PgsLeaderboardsClient_submitScoreImmediate . Вам необходимо передать идентификатор таблицы лидеров, исходное значение счета, необязательный тег счета и функцию обратного вызова.
// 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);
Рекомендуется управлять идентификаторами таблиц лидеров как константами или ресурсами в коде на C++.
Отобразить таблицу лидеров
Чтобы отобразить стандартный пользовательский интерфейс таблицы лидеров для конкретной таблицы, вызовите функцию PgsLeaderboardsClient_showLeaderboardUI . Для работы этой функции требуются идентификатор клиента, активность, идентификатор таблицы лидеров, временной интервал и данные о сборе, а также функция обратного вызова.
// 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);
Эта функция отображает пользовательский интерфейс. Объект activity предоставляет контекст для отображения пользовательского интерфейса.