Exemple #1
0
        /// <summary>
        /// Loads a set of scores using the default parameters of the given leaderboard.
        /// This returns the 25 scores that are around the local player's score
        /// in the Global userScope and AllTime timeScope.
        /// Note that each load score request is added into a queue and the
        /// next request is called after the callback of previous request has been invoked.
        /// </summary>
        /// <param name="leaderboardName">Leaderboard name.</param>
        /// <param name="callback">Callback receives the leaderboard name and an array of loaded scores.</param>
        public static void LoadScores(string leaderboardName, Action <string, IScore[]> callback)
        {
            if (!IsInitialized())
            {
                Debug.Log("LoadScores FAILED: user is not logged in.");
                return;
            }

            Leaderboard ldb = GetLeaderboardByName(leaderboardName);

            if (ldb == null)
            {
                Debug.Log("LoadScores FAILED: unknown leaderboard name.");
                return;
            }

            // Create new request
            LoadScoreRequest request = new LoadScoreRequest();

            request.leaderboardName       = ldb.Name;
            request.leaderboardId         = ldb.Id;
            request.callback              = callback;
            request.useLeaderboardDefault = true;
            request.loadLocalUserScore    = false;

            // Add request to the queue
            loadScoreRequests.Add(request);

            DoNextLoadScoreRequest();
        }
        /// <summary>
        /// Loads the local user's score from the specified leaderboard.
        /// Note that each load score request is added into a queue and the
        /// next request is called after the callback of previous request has been invoked.
        /// </summary>
        /// <param name="leaderboardName">Leaderboard name.</param>
        /// <param name="callback">Callback receives the leaderboard name and the loaded score.</param>
        public static void LoadLocalUserScore(string leaderboardName, Action <string, IScore> callback)
        {
            if (!IsInitialized())
            {
                Debug.LogFormat("Failed to load local user's score from leaderboard {0}: user is not logged in.", leaderboardName);
                if (callback != null)
                {
                    callback(leaderboardName, null);
                }
                return;
            }

            Leaderboard ldb = GetLeaderboardByName(leaderboardName);

            if (ldb == null)
            {
                Debug.LogFormat("Failed to load local user's score: unknown leaderboard name {0}.", leaderboardName);
                if (callback != null)
                {
                    callback(leaderboardName, null);
                }
                return;
            }

            // Create new request
            LoadScoreRequest request = new LoadScoreRequest();

            request.leaderboardName = ldb.Name;
            request.leaderboardId   = ldb.Id;
            request.callback        = delegate(string ldbName, IScore[] scores)
            {
                if (scores != null)
                {
                    if (callback != null)
                    {
                        callback(ldbName, scores[0]);
                    }
                }
                else
                {
                    if (callback != null)
                    {
                        callback(ldbName, null);
                    }
                }
            };
            request.useLeaderboardDefault = false;
            request.loadLocalUserScore    = true;
            request.fromRank   = -1;
            request.scoreCount = -1;
            request.timeScope  = TimeScope.AllTime;
            request.userScope  = UserScope.FriendsOnly;

            // Add request to the queue
            loadScoreRequests.Add(request);

            DoNextLoadScoreRequest();
        }
Exemple #3
0
        /// <summary>
        /// Loads the set of scores from the specified leaderboard within the specified timeScope and userScope.
        /// The range is defined by starting position fromRank and the number of scores to retrieve scoreCount.
        /// Note that each load score request is added into a queue and the
        /// next request is called after the callback of previous request has been invoked.
        /// </summary>
        /// <param name="leaderboardName">Leaderboard name.</param>
        /// <param name="fromRank">The rank of the first score to load.</param>
        /// <param name="scoreCount">The total number of scores to load.</param>
        /// <param name="timeScope">Time scope.</param>
        /// <param name="userScope">User scope.</param>
        /// <param name="callback">Callback receives the leaderboard name and an array of loaded scores.</param>
        public static void LoadScores(string leaderboardName, int fromRank, int scoreCount, TimeScope timeScope, UserScope userScope, Action <string, IScore[]> callback)
        {
            // IMPORTANT: On Android, the fromRank argument is ignored and the score range always starts at 1.
            // (This is not the intended behavior according to the SocialPlatform.Range documentation, and may simply be
            // a bug of the current (0.9.34) GooglePlayPlatform implementation).
            if (!IsInitialized())
            {
                if (Debug.isDebugBuild)
                {
                    Debug.Log("LoadScores FAILED: user is not logged in.");
                }

                return;
            }

            Leaderboard ldb = GetLeaderboardByName(leaderboardName);

            if (ldb == null)
            {
                if (Debug.isDebugBuild)
                {
                    Debug.Log("LoadScores FAILED: unknown leaderboard name.");
                }

                return;
            }

            // Create new request
            LoadScoreRequest request = new LoadScoreRequest();

            request.leaderboardName       = ldb.Name;
            request.leaderboardId         = ldb.Id;
            request.callback              = callback;
            request.useLeaderboardDefault = false;
            request.loadLocalUserScore    = false;
            request.fromRank              = fromRank;
            request.scoreCount            = scoreCount;
            request.timeScope             = timeScope;
            request.userScope             = userScope;

            // Add request to the queue
            loadScoreRequests.Add(request);

            DoNextLoadScoreRequest();
        }
        /// <summary>
        /// Loads a set of scores using the default parameters of the given leaderboard.
        /// This returns the 25 scores that are around the local player's score
        /// in the Global userScope and AllTime timeScope.
        /// Note that each load score request is added into a queue and the
        /// next request is called after the callback of previous request has been invoked.
        /// </summary>
        /// <param name="leaderboardName">Leaderboard name.</param>
        /// <param name="callback">Callback receives the leaderboard name and an array of loaded scores.</param>
        public static void LoadScores(string leaderboardName, Action <string, IScore[]> callback)
        {
            if (!IsInitialized())
            {
                Debug.LogFormat("Failed to load scores from leaderboard {0}: user is not logged in.", leaderboardName);
                if (callback != null)
                {
                    callback(leaderboardName, new IScore[0]);
                }
                return;
            }

            Leaderboard ldb = GetLeaderboardByName(leaderboardName);

            if (ldb == null)
            {
                Debug.LogFormat("Failed to load scores: unknown leaderboard name {0}", leaderboardName);
                if (callback != null)
                {
                    callback(leaderboardName, new IScore[0]);
                }
                return;
            }

            // Create new request
            LoadScoreRequest request = new LoadScoreRequest();

            request.leaderboardName       = ldb.Name;
            request.leaderboardId         = ldb.Id;
            request.callback              = callback;
            request.useLeaderboardDefault = true;
            request.loadLocalUserScore    = false;

            // Add request to the queue
            loadScoreRequests.Add(request);

            DoNextLoadScoreRequest();
        }