Example #1
0
        ///<summary></summary>
        /// <seealso cref="GooglePlayGames.BasicApi.IPlayGamesClient.LoadScores"/>
        public void LoadScores(string leaderboardId, LeaderboardStart start,
                               int rowCount, LeaderboardCollection collection,
                               LeaderboardTimeSpan timeSpan,
                               Action <LeaderboardScoreData> callback)
        {
            using (var client = getLeaderboardsClient())
            {
                string loadScoresMethod =
                    start == LeaderboardStart.TopScores ? "loadTopScores" : "loadPlayerCenteredScores";
                using (var task = client.Call <AndroidJavaObject>(
                           loadScoresMethod,
                           leaderboardId,
                           AndroidJavaConverter.ToLeaderboardVariantTimeSpan(timeSpan),
                           AndroidJavaConverter.ToLeaderboardVariantCollection(collection),
                           rowCount))
                {
                    AndroidTaskUtils.AddOnSuccessListener <AndroidJavaObject>(
                        task,
                        annotatedData =>
                    {
                        using (var leaderboardScores = annotatedData.Call <AndroidJavaObject>("get"))
                        {
                            InvokeCallbackOnGameThread(callback, CreateLeaderboardScoreData(
                                                           leaderboardId,
                                                           collection,
                                                           timeSpan,
                                                           annotatedData.Call <bool>("isStale")
                                        ? ResponseStatus.SuccessWithStale
                                        : ResponseStatus.Success,
                                                           leaderboardScores));
                            leaderboardScores.Call("release");
                        }
                    });

                    AndroidTaskUtils.AddOnFailureListener(
                        task,
                        exception =>
                    {
                        Debug.Log("LoadScores failed");
                        InvokeCallbackOnGameThread(callback,
                                                   new LeaderboardScoreData(leaderboardId, ResponseStatus.InternalError));
                    });
                }
            }
        }
        public static void ShowLeaderboardUI(string leaderboardId, LeaderboardTimeSpan timeSpan, Action <UIStatus> cb)
        {
            using (var helperFragment = new AndroidJavaClass(HelperFragmentClass))
                using (var task = helperFragment.CallStatic <AndroidJavaObject>("showLeaderboardUi",
                                                                                GetActivity(), leaderboardId,
                                                                                AndroidJavaConverter.ToLeaderboardVariantTimeSpan(timeSpan)))
                {
                    AndroidTaskUtils.AddOnSuccessListener <int>(
                        task,
                        uiCode =>
                    {
                        Logger.d("ShowLeaderboardUI result " + uiCode);
                        cb.Invoke((UIStatus)uiCode);
                    });

                    AndroidTaskUtils.AddOnFailureListener(
                        task,
                        exception =>
                    {
                        Logger.e("ShowLeaderboardUI failed with exception");
                        cb.Invoke(UIStatus.InternalError);
                    });
                }
        }