예제 #1
0
    void SendScoreRaw(string ID, ScoreCompare playerScore, Action <ScoreCompare[]> onSuccess, Action <PlayFabError> errorAction)
    {
        var item = new StatisticUpdate();

        item.Value         = playerScore.value;
        item.StatisticName = "Worldwide Scores";

        var request = new UpdatePlayerStatisticsRequest();

        request.Statistics = new List <StatisticUpdate>()
        {
            item
        };
        PlayFabClientAPI.UpdatePlayerStatistics(request,
                                                result =>
        {
            var r        = new PlayFab.ServerModels.UpdateUserDataRequest();
            r.Permission = PlayFab.ServerModels.UserDataPermission.Public;
            r.PlayFabId  = uniqueID;
            r.Data       = new Dictionary <string, string>()
            {
                { "SkinID", ((int)playerScore.usedSkin).ToString() },
                { "Location", playerScore.location }
            };

            PlayFabServerAPI.UpdateUserData(r, sucess => GetScores(onSuccess, errorAction),
                                            failure => { Debug.Log("Fail: " + failure.ErrorMessage); });
        },
                                                failure => { });
    }
예제 #2
0
    void GetScores(Action <ScoreCompare[]> onSuccess, Action <PlayFabError> errorAction)
    {
        var request = new GetLeaderboardRequest();

        request.MaxResultsCount    = 100;
        request.StatisticName      = "Worldwide Scores";
        request.ProfileConstraints = new PlayerProfileViewConstraints();
        request.ProfileConstraints.ShowLocations   = true;
        request.ProfileConstraints.ShowDisplayName = true;

        var list   = new List <ScoreCompare>();
        var checks = new List <bool>();

        ScoreCompare score;

        PlayFab.ClientModels.LocationModel location;
        PlayFabClientAPI.GetLeaderboard(request,
                                        (GetLeaderboardResult result) =>
        {
            int scoreCount = result.Leaderboard.Count;
            for (int i = 0; i < scoreCount; i++)
            {
                score          = new ScoreCompare(result.Leaderboard[i].StatValue);
                score.name     = result.Leaderboard[i].DisplayName;
                score.ID       = result.Leaderboard[i].PlayFabId;
                location       = result.Leaderboard[i].Profile.Locations.Last();
                score.location = useCityAsLocation ? location.City.ToString() : location.CountryCode.ToString();

                list.Add(score);
                checks.Add(false);
                string name = score.name;
                int index   = i;

                var infoRequest       = new GetUserDataRequest();
                infoRequest.PlayFabId = result.Leaderboard[i].PlayFabId;
                PlayFabClientAPI.GetUserData(infoRequest, infoResult =>
                {
                    if (infoResult.Data.ContainsKey("SkinID") && infoResult.Data.ContainsKey("Location"))
                    {
                        var value            = infoResult.Data["SkinID"];
                        list[index].usedSkin = (CatSkin)(int.Parse(value.Value));
                    }
                    else
                    {
                        var r        = new PlayFab.ServerModels.UpdateUserDataRequest();
                        r.Permission = PlayFab.ServerModels.UserDataPermission.Public;
                        r.Data       = new Dictionary <string, string>()
                        {
                            { "SkinID", "0" },
                            { "Location", "Brazil" }
                        };
                        r.PlayFabId = infoRequest.PlayFabId;
                        PlayFabServerAPI.UpdateUserData(r, sucess =>
                        {
                            Debug.Log("SUCCESS");
                        }, failure => { Debug.Log("FAILED"); });
                    }

                    checks[index] = true;

                    if (!checks.Contains(false))
                    {
                        Debug.Log("List returned");

                        var values = list.ToArray();
                        onSuccess(values);
                    }
                },
                                             failure => Debug.Log("Get content fail: " + failure.ErrorMessage));
            }
        }, errorCallback => Debug.Log("Failed to get leaderboard"));
    }