using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.Events; public class DailyLeaderboard : MonoBehaviour { [SerializeField] protected RectTransform _content; [SerializeField] protected LeaderboardEntry _leaderboardEntryPrefab; protected List _entries = new List(); private List _players = new List(); private LeaderboardController _leaderboardController; public UnityEvent OnUpdated; private void Awake() { _leaderboardController = FindObjectOfType(); } private void OnEnable() { _leaderboardController.OnDailyInit.AddListener(InitLeaderboard); } private void OnDisable() { _leaderboardController.OnDailyInit.RemoveListener(InitLeaderboard); } private void InitLeaderboard(List players) { _players = players; UpdateLeaderboard(); } protected virtual void UpdateLeaderboard() { _entries.ForEach(x => Destroy(x.gameObject)); _entries.Clear(); _entries = new List(); for (int i = 0; i < _players.Count; i++) { var newEntry = Instantiate(_leaderboardEntryPrefab, _content); _entries.Add(newEntry); newEntry.Init(_players[i], i); } OnUpdated?.Invoke(); } }