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); }
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); }
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); }
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); }
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"); } }
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); }
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. } }
// 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); }
// Cancel loading when pressing the back button. public void CancelLeaderboardLoading() { leaderboardListLoadState = LeaderboardLoadState.DoneLoading; leaderboardUserLoadState = LeaderboardLoadState.DoneLoading; canLoadLeaderboards = false; }