Example #1
0
        /// <summary>
        /// Parses scores from FB json objects.
        /// </summary>
        private static List <Score> ScoreFromFBJsonObjs(Leaderboard leaderboard, List <JSONObject> fbScoreObjects)
        {
            List <Score> scores          = new List <Score>();
            var          leaderboardJson = leaderboard.toJSONObject();
            var          previousScore   = -1;
            var          rank            = 1;

            foreach (JSONObject scoreObj in fbScoreObjects)
            {
                if (scoreObj["score"] != null)
                {
                    var user       = ScoreUserFromFBJsonObj(scoreObj["user"]);
                    var scoreValue = (long)(scoreObj["score"].n);
                    var scoreJSON  = new JSONObject();
                    scoreJSON.AddField(PJSONConsts.UP_LEADERBOARD, leaderboardJson);
                    scoreJSON.AddField(PJSONConsts.UP_USER_PROFILE, user);
                    scoreJSON.AddField(PJSONConsts.UP_SCORE_RANK, rank);
                    scoreJSON.AddField(PJSONConsts.UP_SCORE_VALUE, scoreValue);
                    scores.Add(new Score(scoreJSON));

                    if (scoreValue > previousScore)
                    {
                        rank++;
                    }
                }
            }
            return(scores);
        }
Example #2
0
        /// <summary>
        /// See docs in <see cref="SoomlaProfile.SubmitScore"/>
        /// </summary>
        public void SubmitScore(Leaderboard targetLeaderboard, int value, SingleObjectSuccess <Score> success, FailureHandler fail)
        {
            checkPublishPermission(() => {
                var formData = new Dictionary <string, string>
                {
                    { "score", value.ToString() }
                };

                FB.API("/me/scores",
                       HttpMethod.POST,
                       (IGraphResult result) => {
                    if (result.Error != null)
                    {
                        SoomlaUtils.LogDebug(TAG, "SubmitScoreCallback[result.Error]: " + result.Error);
                        fail(result.Error);
                    }
                    else
                    {
                        SoomlaUtils.LogDebug(TAG, "SubmitScoreCallback[result.Text]: " + result.RawResult);

                        JSONObject jsonFeed = new JSONObject(result.RawResult);
                        if (jsonFeed["success"].b)
                        {
                            var userJson = new JSONObject();
                            userJson.AddField(PJSONConsts.UP_USERNAME, "me");
                            userJson.AddField(PJSONConsts.UP_PROVIDER, Provider.FACEBOOK.ToString());
                            userJson.AddField(PJSONConsts.UP_PROFILEID, "0");

                            var scoreJsonObj = new JSONObject();
                            scoreJsonObj.AddField(PJSONConsts.UP_LEADERBOARD, targetLeaderboard.toJSONObject());
                            scoreJsonObj.AddField(PJSONConsts.UP_USER_PROFILE, userJson);
                            scoreJsonObj.AddField(PJSONConsts.UP_SCORE_RANK, 0);
                            scoreJsonObj.AddField(PJSONConsts.UP_SCORE_VALUE, value);

                            var score = new Score(scoreJsonObj);

                            success(score);
                        }
                        else
                        {
                            fail("Unable to submit score");
                        }
                    }
                }, formData);
            }, (string errorMessage) => {
                fail(errorMessage);
            });
        }