using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Leaderboard : MonoBehaviour { public Text[] leaderboardItems; public float updateInterval = 0.5f; public bool isRanked; float t; void Start() { RefreshLeaderboard(); } // Update is called once per frame void Update() { if (t < updateInterval) { t += Time.deltaTime; } else { RefreshLeaderboard(); t = 0; } } public void RefreshLeaderboard() { SpaceshipController[] players = FindObjectsOfType(); //Simple bubble sort to sort players by score SpaceshipController temp; for (int j = 0; j <= players.Length - 2; j++) { for (int i = 0; i <= players.Length - 2; i++) { if ( (!isRanked ? players[i].moonsCollected : players[i].Scores) > (!isRanked? players[i+1].moonsCollected : players[i + 1].Scores)) { temp = players[i + 1]; players[i + 1] = players[i]; players[i] = temp; } } } //Populate leaderboard for(int i =0; i < leaderboardItems.Length; i++){ if(i < players.Length){ SpaceshipController thisPlayer = players[players.Length-i-1]; leaderboardItems[i].gameObject.SetActive(true); leaderboardItems[i].text = (i+1) + ". " +thisPlayer.pname; if(!isRanked){ leaderboardItems[i].transform.GetChild(0).GetComponent().text = thisPlayer.Scores.ToString(); }else{ leaderboardItems[i].transform.GetChild(0).GetComponent().text = (((float)Mathf.Clamp(thisPlayer.moonsCollected,0,30)/ 30f)*100f).ToString("n1") + " %"; } }else{ leaderboardItems[i].gameObject.SetActive(false); } } } }