public void Populate(PlayerLeaderboardEntry myInfo)
    {
        positionTxt.text = (myInfo.Position + 1).ToString();
        nameTxt.text = myInfo.DisplayName;
        killsTxt.text = myInfo.StatValue + " kills";

        GetUserDataRequest request = new GetUserDataRequest();

        request.PlayFabId = myInfo.PlayFabId;
        request.Keys = new List<string>();
        request.Keys.Add(GameConstants.facebookPictureKey);

        PlayFabClientAPI.GetUserData(request, OnPlayerInfoLoaded, OnPlayerInfoLoadError);
    }
Ejemplo n.º 2
0
    private void GetUserInfoAndUpdateLeaderboard(PlayFab.ClientModels.PlayerLeaderboardEntry leaderBoardLine, GameObject leaderboardGameObject, GetLeaderboardResult result)
    {
        //Coleta o id do Facebook do usuário que está no rank através do Display Name que atualizamos ao usuário efetuar o login.
        string userFacebookId = leaderBoardLine.DisplayName;

        //Utiliza o SDK do Facebook para coletar as informações do usuário. O valor "/" + userFacebookId serve
        //para indicar de qual usuário queremos os dados. O valor HttpMethod.GET indica que a nossa chamada ao
        //facebook tem a intenção de somente coletar dados.
        FB.API("/" + userFacebookId, HttpMethod.GET,
               //Esta é uma outra forma de criar uma função de callback, o userInfoResult é a váriavel que
               //recebe o resultado que é passado para a função de callback
               (userInfoResult) =>
        {
            //Caso o resultado seja nulo, deu algum erro ao coletar os dados.
            if (userInfoResult == null)
            {
                Debug.Log("Não foi possível coletar os dados do usuário no Facebook.");

                //Verifica se está no ultimo registro do Leadeboard. Para indicar que finalizou o carregamento.
                if (leaderBoardLine.Position + 1 == result.Leaderboard.Count)
                {
                    //Atualiza a váriavel para verdadeiro indicando que os dados ainda já foram carregados.
                    FacebookAndPlayFabInfo.leaderboardLoaded = true;
                    //Atualiza a váriavel para falso indicando que os dados estão já foram carregados.
                    FacebookAndPlayFabInfo.leaderboardIsLoading = false;

                    Debug.Log("Os dados do Leaderboard foram carregados.");
                }

                return;
            }

            //Verifica se o retorno não foi um erro, ou algum tipo de cancelamento caso não seja nenhum desses tipos indica
            //que foi possível coletar os dados do facebook com sucesso.
            if (string.IsNullOrEmpty(userInfoResult.Error) && !userInfoResult.Cancelled && !string.IsNullOrEmpty(userInfoResult.RawResult))
            {
                Debug.Log("Sucesso ao coletar os dados da conta do usuário no Facebook");

                try
                {
                    //A resposta do Facebook vem em formato de Json e com isso nós convertemos o Json para um Dictionary
                    //para ser mais facil de coletar os dados
                    Dictionary <string, object> dict = Json.Deserialize(userInfoResult.RawResult) as Dictionary <string, object>;
                    string userFacebookName          = dict["name"] as string;

                    //Pega o objeto que possui as informações de um jogador no Leaderboard.
                    //GameObject playerLeadeboardGameObject = leaderboardGameObject.transform.FindChild("Player (" + (leaderBoardLine.Position + 1) + ")").gameObject;

                    //Atualiza o texto com a posiçao do jogador no Leaderboard.
                    //playerLeadeboardGameObject.transform.FindChild("Position").GetComponent<Text>().text = (leaderBoardLine.Position + 1).ToString();

                    //Atualiza o texto com o nome do jogador no Facebook.
                    //playerLeadeboardGameObject.transform.FindChild("Name").GetComponent<Text>().text = userFacebookName;

                    //Atualiza o texto com o valor do Score do jogador no Leaderboard.
                    //playerLeadeboardGameObject.transform.FindChild("Score").GetComponent<Text>().text = leaderBoardLine.StatValue.ToString();

                    Debug.Log(leaderBoardLine.StatValue);
                    Debug.Log(userFacebookName);

                    AddHighscoreEntry(leaderBoardLine.StatValue, userFacebookName);

                    //Verifica se está no ultimo registro do Leadeboard. Para indicar que finalizou o carregamento.
                    if (leaderBoardLine.Position + 1 == result.Leaderboard.Count)
                    {
                        //Atualiza a váriavel para verdadeiro indicando que os dados ainda já foram carregados.
                        FacebookAndPlayFabInfo.leaderboardLoaded = true;
                        //Atualiza a váriavel para falso indicando que os dados estão já foram carregados.
                        FacebookAndPlayFabInfo.leaderboardIsLoading = false;

                        Debug.Log("Os dados do Leaderboard foram carregados.");
                    }
                }
                //Usado caso o Facebook não tenha retornado o id ou o nome do usuário.
                catch (KeyNotFoundException e)
                {
                    //Verifica se está no ultimo registro do Leadeboard. Para indicar que finalizou o carregamento.
                    if (leaderBoardLine.Position + 1 == result.Leaderboard.Count)
                    {
                        //Atualiza a váriavel para verdadeiro indicando que os dados ainda já foram carregados.
                        FacebookAndPlayFabInfo.leaderboardLoaded = true;
                        //Atualiza a váriavel para falso indicando que os dados estão já foram carregados.
                        FacebookAndPlayFabInfo.leaderboardIsLoading = false;

                        Debug.Log("Os dados do Leaderboard foram carregados.");
                    }

                    Debug.Log("Não foi possível coletar os dados do usuário no Facebook. Erro: " + e.Message);
                }
            }
            else
            {
                //Verifica se está no ultimo registro do Leadeboard. Para indicar que finalizou o carregamento.
                if (leaderBoardLine.Position + 1 == result.Leaderboard.Count)
                {
                    //Atualiza a váriavel para verdadeiro indicando que os dados ainda já foram carregados.
                    FacebookAndPlayFabInfo.leaderboardLoaded = true;
                    //Atualiza a váriavel para falso indicando que os dados estão já foram carregados.
                    FacebookAndPlayFabInfo.leaderboardIsLoading = false;

                    Debug.Log("Os dados do Leaderboard foram carregados.");
                }

                Debug.Log("Não foi possível coletar os dados do usuário no Facebook.");
            }
        });
    }