using System.Collections; using System.Collections.Generic; using DG.Tweening; using PlayFab; using PlayFab.ClientModels; using UnityEngine; public class LeaderboardUIScreen : MonoBehaviour { [SerializeField] private GameObject lbItemPrefab; [SerializeField] private GameObject lbItemSelfPrefab; [SerializeField] private Transform content; [SerializeField] private List _lbPedestalItems; public void Init() { PlayFabManager.Instance.playFabLeaderboards.GetLeaderboard(OnLeaderboardFetchSuccess, OnLeaderboardFetchFailure); } private void OnLeaderboardFetchSuccess(List leaderboard) { PopulateLeaderboard(leaderboard); } private void PopulateLeaderboard(List leaderboard) { foreach (PlayerLeaderboardEntry lbEntry in leaderboard) { PopulateLbItem(lbEntry); if (lbEntry.Position <= 3) { PopulatePedestalItem(lbEntry); } } content.GetComponent().DOAnchorPosX(0f,1f).SetEase(Ease.OutElastic); } private void PopulateLbItem(PlayerLeaderboardEntry lbEntry) { bool isSelf = lbEntry.Profile.PlayerId == PlayFabManager.Instance.myProfile.PlayerId; LBEntryItem lbItem = Instantiate(isSelf ? lbItemSelfPrefab : lbItemPrefab, content).GetComponent(); lbItem.nameText.text = lbEntry.DisplayName; lbItem.rankText.text = (lbEntry.Position + 1).ToString(); lbItem.scoreText.text = lbEntry.StatValue.ToString(); } private void PopulatePedestalItem(PlayerLeaderboardEntry lbEntry) { LBPedestalItem pedestalItem = _lbPedestalItems[lbEntry.Position]; pedestalItem.nameText.text = lbEntry.DisplayName??lbEntry.PlayFabId; pedestalItem.scoreText.text = lbEntry.StatValue.ToString(); } private void OnLeaderboardFetchFailure(PlayFabError obj) { Debug.Log("Couldn't Load Leaderboards"); throw new System.NotImplementedException(); } }