Cabeçalho

Este guia mostra como usar as APIs de placares do SDK dos serviços do Google Play Games em C++ para criar placares visuais, registrar a pontuação de um jogador e comparar a pontuação com a de sessões anteriores do jogo. As APIs podem ser encontradas em LeaderboardsClient.

Antes de começar

Caso ainda não tenha feito isso, recomendamos consultar os conceitos de placares no jogo.

Antes de começar a programar usando as APIs de placares:

Acessar o cliente de placares

Para começar a usar a API de placares, o jogo precisa ter um LeaderboardsClient objeto. Para isso, chame o PgsLeaderboardsClient_create() método e transmita a atividade.

Atualizar a pontuação dos jogadores

Quando a pontuação do jogador muda (por exemplo, quando ele termina a partida), o jogo pode atualizar o placar chamando PgsLeaderboardsClient_submitScoreImmediate. É necessário transmitir o ID do placar, o valor bruto da pontuação, uma tag de pontuação opcional e uma função de callback.

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

Uma boa prática é gerenciar os IDs de placar como constantes ou recursos no código em C++.

Mostrar um placar

Para mostrar a interface do usuário padrão de um placar específico, chame PgsLeaderboardsClient_showLeaderboardUI. Essa função exige o identificador do cliente, a atividade, o ID do placar, o período e a coleção, além de um callback.

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

Essa função mostra a interface. O objeto activity fornece o contexto para mostrar a interface.