Classement

Ce guide explique comment utiliser les API de classement du SDK c++ des services Play Jeux pour créer des classements visuels, enregistrer le score d'un joueur et le comparer à ses scores précédents. Ces API sont disponibles dans LeaderboardsClient.

Avant de commencer

Si vous ne l'avez pas déjà fait, consultez les concepts de classements dans les jeux.

Avant de commencer à coder à l'aide des API de classement :

Obtenir le client de classement

Pour utiliser l'API de classement, votre jeu doit d'abord obtenir un LeaderboardsClient objet. Pour ce faire, appelez la PgsLeaderboardsClient_create() méthode et transmettez l'activité.

Actualiser le score du joueur

Lorsque le score du joueur change (par exemple, en fin de partie), votre jeu peut modifier son score dans le classement en appelant PgsLeaderboardsClient_submitScoreImmediate. Vous devez transmettre l'identifiant du classement, la valeur du score brut, un tag de score facultatif et une fonction de rappel.

// 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);

Nous vous recommandons de gérer les identifiants de vos classements en tant que constantes ou ressources dans votre code c++.

Afficher un classement

Pour afficher l'interface utilisateur du classement par défaut pour un classement spécifique, appelez PgsLeaderboardsClient_showLeaderboardUI. Cette fonction nécessite le descripteur du client, l'activité, l'identifiant du classement, la période et la collection, ainsi qu'un rappel.

// 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);

Cette fonction affiche l'interface utilisateur. L'objet activity fournit le contexte pour afficher l'interface utilisateur.