Exemple #1
0
    private void OnLoadedTopLeaderboards(LeaderboardScoreData lbData)
    {
        if (!userSignedIn || leaderboardListLoadState != LeaderboardLoadState.LoadingValues || !canLoadLeaderboards)
        {
            return; // Abort. Something went horribly wrong.
        }
        if (!lbData.Valid || lbData.Scores.Length > LEADERBOARD_ENTRIES_PER_PAGE)
        {
            ShowLeaderboardListMessage("Invalid leaderboard data");
            return;
        }

        leaderboardData = lbData; // The full leaderboard data.
        leaderboardCurPageEntryCount = Mathf.Min(lbData.Scores.Length, LEADERBOARD_ENTRIES_PER_PAGE);
        leaderboardPageCount         = Mathf.Min(Mathf.CeilToInt(lbData.ApproximateCount / (float)LEADERBOARD_ENTRIES_PER_PAGE), LEADERBOARD_MAX_PAGE);
        Debug.Log("Loaded leaderboard has approximately: " + lbData.ApproximateCount + " entries (" + leaderboardPageCount + " pages)");

        string[] userIDs = new string[leaderboardCurPageEntryCount];

        for (int i = 0; i < leaderboardCurPageEntryCount; i++)
        {
            // We do not know their names, yet. Fill in their data.
            userIDs[i] = lbData.Scores[i].userID;
            leaderboardResults[i].rank  = lbData.Scores[i].rank;
            leaderboardResults[i].score = lbData.Scores[i].value;
        }

        leaderboardListLoadState = LeaderboardLoadState.LoadingUsers;
        PlayGamesPlatform.Instance.LoadUsers(userIDs, OnLoadedLeaderboardUsers);
    }
Exemple #2
0
    public void LoadNextLeaderboardPage()
    {
        if (!leaderboardHasNextPage || leaderboardIsLoading || !canLoadLeaderboards)
        {
            return;
        }

        Debug.Log("Loading next page: " + leaderboardData.Title);
        leaderboardCurPage++;
        leaderboardListLoadState = LeaderboardLoadState.LoadingValues;
        PlayGamesPlatform.Instance.LoadMoreScores(leaderboardData.NextPageToken, LEADERBOARD_ENTRIES_PER_PAGE, OnLoadedTopLeaderboards);
    }
Exemple #3
0
    private void OnLoadedCurrentUserScore(bool success)
    {
        if (!userSignedIn || leaderboardUserLoadState != LeaderboardLoadState.LoadingValues || !canLoadLeaderboards || !success)
        {
            return;
        }

        leaderboardUserLoadState = LeaderboardLoadState.DoneLoading;
        IScore userScore = curUserLeaderboard.localUserScore;

        curUserLeaderboardItem.Refresh(userScore.rank, "You", userScore.value);
        curUserLeaderboardItem.cachedGo.SetActive(true);
    }
Exemple #4
0
    private void FetchLeaderboardFromTop(string id, LeaderboardCollection collection, LeaderboardTimeSpan timeSpan)
    {
        if (!userSignedIn)
        {
            return;
        }

        leaderboardListLoadState = LeaderboardLoadState.LoadingValues;
        leaderboardCurPage       = 1;
        leaderboardPageCount     = 1;
        SetLeaderboardListLoading(true);
        PlayGamesPlatform.Instance.LoadScores(id, LeaderboardStart.TopScores, LEADERBOARD_ENTRIES_PER_PAGE, collection, timeSpan, OnLoadedTopLeaderboards);
    }
Exemple #5
0
    private void OnLoadedLeaderboardUsers(IUserProfile[] profiles)
    {
        if (!userSignedIn || leaderboardListLoadState != LeaderboardLoadState.LoadingUsers || !canLoadLeaderboards || profiles.Length != leaderboardCurPageEntryCount)
        {
            return; // Abort. Something went horribly wrong.
        }
        // Finished list.
        leaderboardListLoadState = LeaderboardLoadState.DoneLoading;
        SetLeaderboardListLoading(false);

        if (leaderboardCurPageEntryCount > 0)
        {
            // Update and layout list UI.
            float y = 0f;

            if (leaderboardHasPrevPage)
            {
                prevPageButton.gameObject.SetActive(true);
                prevPageButton.transform.localPosition = new Vector3(0f, y, 0f);
                y -= leaderboardButtonHeight;
            }

            for (int i = 0; i < LEADERBOARD_ENTRIES_PER_PAGE; i++)
            {
                bool active = (i < leaderboardCurPageEntryCount);
                leaderboardListUi[i].cachedGo.SetActive(active);

                if (active)
                {
                    leaderboardResults[i].username = profiles[i].userName;

                    leaderboardListUi[i].cachedTrans.localPosition = new Vector3(0f, y, 0f);
                    leaderboardListUi[i].Refresh(leaderboardResults[i]);
                    y -= leaderboardListSpacing;
                }
            }

            if (leaderboardHasNextPage)
            {
                nextPageButton.gameObject.SetActive(true);
                nextPageButton.transform.localPosition = new Vector3(0f, y, 0f);
            }
        }
        else
        {
            ShowLeaderboardListMessage("No results");
        }
    }
Exemple #6
0
    private void FetchCurrentUserScore(string id, LeaderboardTimeSpan timeSpan)
    {
        if (!userSignedIn || leaderboardUserLoadState != LeaderboardLoadState.DoneLoading)
        {
            return;
        }

        leaderboardUserLoadState = LeaderboardLoadState.LoadingValues;
        curUserLeaderboardItem.cachedGo.SetActive(false); // Hide current result while loading.

        curUserLeaderboard       = PlayGamesPlatform.Instance.CreateLeaderboard();
        curUserLeaderboard.id    = id;
        curUserLeaderboard.range = new Range(int.MaxValue, 0); // We are only getting our local value. So this range doesn't matter.
        curUserLeaderboard.SetUserFilter(curUserFilter);
        curUserLeaderboard.timeScope = TimeSpanToTimeScope(timeSpan);
        curUserLeaderboard.LoadScores(OnLoadedCurrentUserScore);
    }
Exemple #7
0
    private void OnUserSignedOut()
    {
        PlayerPrefs.SetInt("GPGS_SignInState", 0); // Once signed out, do not auto sign-in next time.
        userSignedIn = false;
        UpdateSignedInUI();

        if (initPlayServices)
        {
            // Clear leaderboard state.
            leaderboardData          = null;
            curLeaderboardIndex      = 0;
            leaderboardPageCount     = 0;
            leaderboardListLoadState = LeaderboardLoadState.DoneLoading;
            leaderboardUserLoadState = LeaderboardLoadState.DoneLoading;

            // Reset dropdown selections for leaderboards.
            leaderboardTimeFrame.SelectItem(2);  // All Time.
            leaderboardCollection.SelectItem(0); // Global.
        }
    }
Exemple #8
0
    // Initialize Play Services variables upon login.
    private void InitializeServicesVariables()
    {
        if (initPlayServices)
        {
            return;
        }

        initPlayServices             = true;
        highestSubmittedScores       = new Dictionary <string, long>();
        leaderboardData              = null;
        curLeaderboardIndex          = 0;
        leaderboardListLoadState     = LeaderboardLoadState.DoneLoading;
        leaderboardUserLoadState     = LeaderboardLoadState.DoneLoading;
        leaderboardCollectionSetting = LeaderboardCollection.Public;
        leaderboardTimeSpanSetting   = LeaderboardTimeSpan.AllTime;

        // Initialize data instances for each entry in a page.
        leaderboardResults   = new LeaderboardResult[LEADERBOARD_ENTRIES_PER_PAGE];
        leaderboardListUi    = new LeaderboardItemUI[LEADERBOARD_ENTRIES_PER_PAGE];
        leaderboardPageCount = 0;
        curUserFilter        = new string[1] {
            PlayGamesPlatform.Instance.localUser.id
        };

        // Configure dropdowns for leaderboards.
        leaderboardTimeFrame.ForceItems("Today", "This Week", "All Time");
        leaderboardCollection.ForceItems("Global", "Friends");
        leaderboardTimeFrame.SelectItem(2);  // All Time.
        leaderboardCollection.SelectItem(0); // Global.

        for (int i = 0; i < LEADERBOARD_ENTRIES_PER_PAGE; i++)
        {
            leaderboardResults[i] = new LeaderboardResult();

            leaderboardListUi[i] = SetupLeaderboardListItem(leaderboardListStart);
            leaderboardListUi[i].cachedGo.SetActive(false);
        }

        curUserLeaderboardItem = SetupLeaderboardListItem(leaderboardCurPlayerStart);
        curUserLeaderboardItem.cachedGo.SetActive(false);
    }
Exemple #9
0
 // Cancel loading when pressing the back button.
 public void CancelLeaderboardLoading()
 {
     leaderboardListLoadState = LeaderboardLoadState.DoneLoading;
     leaderboardUserLoadState = LeaderboardLoadState.DoneLoading;
     canLoadLeaderboards      = false;
 }