neon_run/Assets/Scripts/Leaderboard.cs
2025-12-07 17:59:02 +05:30

53 lines
2.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class Leaderboard : MonoBehaviour
{
public Transform leaderboardItemsParent;
public GameObject leaderboardItemPrefab;
public void PopulateLeaderboard(){
for(int i=0; i < leaderboardItemsParent.childCount; i++){
Destroy(leaderboardItemsParent.GetChild(i).gameObject);
}
// Load the locally saved highscore list
List<HighscoreEntry> highscores = new List<HighscoreEntry>();
for (int i = 0; i < 10; i++) {
string nameKey = $"highscore_name_{i}";
string scoreKey = $"highscore_score_{i}";
if (PlayerPrefs.HasKey(scoreKey)) {
string playerName = PlayerPrefs.GetString(nameKey, "");
int score = PlayerPrefs.GetInt(scoreKey, 0);
highscores.Add(new HighscoreEntry() { name = playerName, score = score });
}
}
for(int i=0; i < highscores.Count; i++){
GameObject leaderboardItem = Instantiate(leaderboardItemPrefab, leaderboardItemsParent);
TMP_Text txtName = leaderboardItem.transform.GetChild(0).GetComponent<TMP_Text>();
TMP_Text txtScore = leaderboardItem.transform.GetChild(1).GetComponent<TMP_Text>();
txtName.text = highscores[i].name;
txtScore.text = highscores[i].score.ToString("n0");
if(i == 0){
RectTransform rectTransform = leaderboardItem.GetComponent<RectTransform>();
rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, rectTransform.sizeDelta.y * 1.4f);
txtName.color = Color.Lerp(Color.green, Color.white, 0.7f);
txtScore.color = Color.Lerp(Color.green, Color.white, 0.7f);
txtName.fontSize *= 1.4f;
txtScore.fontSize *= 1.4f;
}else if(i == 1){
RectTransform rectTransform = leaderboardItem.GetComponent<RectTransform>();
rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, rectTransform.sizeDelta.y * 1.2f);
txtName.color = Color.Lerp(Color.green, Color.white, 0.3f);
txtScore.color = Color.Lerp(Color.green, Color.white, 0.3f);
txtName.fontSize *= 1.2f;
txtScore.fontSize *= 1.2f;
}
}
}
}