public void AddHighscoreIfPossible(HighscoreElement element) { for (int i = 0; i < maxCount; i++) { if (i >= highscoreList.Count || element.points > highscoreList[i].points) { // add new high score highscoreList.Insert(i, element); while (highscoreList.Count > maxCount) { highscoreList.RemoveAt(maxCount); } SaveHighscore(); if (onHighscoreListChanged != null) { onHighscoreListChanged.Invoke(highscoreList); } break; } } }
public void StoreScore() { int score = Convert.ToInt32(scoreText.text); string name = nameText.value; HighscoreElement[] highscores = PlayerPrefsManager.GetHighscore(); HighscoreElement preScoreBuffer = null; HighscoreElement scoreBuffer = null; int i = 0; for (int y = 0; y < highscores.Length; y++) { if (score > highscores[y].GetScore()) { scoreBuffer = new HighscoreElement(highscores[y].GetName(), highscores[y].GetScore()); highscores[y].SetScore(score); highscores[y].SetName(name); i = y + 1; break; } } for (int y = i; y < highscores.Length; y++) { preScoreBuffer = new HighscoreElement(highscores[y].GetName(), highscores[y].GetScore()); highscores[y].SetScore(scoreBuffer.GetScore()); highscores[y].SetName(scoreBuffer.GetName()); scoreBuffer = new HighscoreElement(preScoreBuffer.GetName(), preScoreBuffer.GetScore()); } PlayerPrefsManager.SetHighscore(highscores); }
public static HighscoreElement[] GetHighscore() { int[] scores = PlayerPrefsX.GetIntArray(HIGHSCORE_SCORES, 0, 10); string[] names = PlayerPrefsX.GetStringArray(HIGHSCORE_NAMES, "-- no player --", 10); HighscoreElement[] highscores = new HighscoreElement[scores.Length]; for (int i = 0; i < highscores.Length; i++) { highscores[i] = new HighscoreElement(names[i], scores[i]); } return highscores; }
private void UpdateUI(List <HighscoreElement> list) { for (int i = 0; i < list.Count; i++) { HighscoreElement el = list[i]; if (el != null && el.points > 0) { if (i >= uiElements.Count) { // instantiate new entry var inst = Instantiate(highscoreUIElementPrefab, Vector3.zero, Quaternion.identity); inst.transform.SetParent(elementWrapper, false); uiElements.Add(inst); } // write or overwrite name & points var texts = uiElements[i].GetComponentsInChildren <Text> (); texts[0].text = el.playerName; texts[1].text = el.points.ToString(); } } }
IEnumerator GetHighscores(string token, string id = "", int perPage = 10) { isUpdatingHighscores = true; string url = _baseUrl + "highscore/xp/?perPage=" + perPage; if (id != "") { url += "&id=" + id; } else if (_currentPage >= 1) { url += "&page=" + _currentPage; } using (UnityWebRequest webRequest = UnityWebRequest.Get(url)) { webRequest.SetRequestHeader("token", token); yield return(webRequest.SendWebRequest()); if (webRequest.isNetworkError || webRequest.isHttpError) { Debug.Log(webRequest.error); } if (webRequest.isDone) { if (webRequest.responseCode == 200) { string json = System.Text.Encoding.UTF8.GetString(webRequest.downloadHandler.data); HighscorePage highscores = JsonConvert.DeserializeObject <HighscorePage>(json); for (int i = 0; i < highscores?.Entries?.Count; i++) { HighscoreElement element = HighscoreElements[i].GetComponent <HighscoreElement>(); element.Placement.text = highscores.Entries[i].Rank.ToString(); element.Username.text = highscores.Entries[i].Player.PlayerId; element.Score.text = highscores.Entries[i].Player.Experience.ToString(); if (!String.IsNullOrEmpty(_userID) && highscores.Entries[i].Player.PlayerId == _userID) { element.Highlight(true); } else { element.Highlight(false); } } if (highscores.Entries.Count < perPage) { for (int i = highscores.Entries.Count; i < perPage; i++) { HighscoreElement element = HighscoreElements[i].GetComponent <HighscoreElement>(); element.Placement.text = ""; element.Username.text = ""; element.Score.text = ""; element.Highlight(false); } } _currentPage = highscores.CurrentPage; _totalPages = highscores.TotalPageCount; } } } isUpdatingHighscores = false; }
public static void SetHighscore(HighscoreElement[] score) { int[] scores = new int[score.Length]; string[] names = new string[score.Length]; int i = 0; foreach (HighscoreElement currentScore in score) { scores[i] = currentScore.GetScore(); names[i] = currentScore.GetName(); i++; } PlayerPrefsX.SetIntArray(HIGHSCORE_SCORES, scores); PlayerPrefsX.SetStringArray(HIGHSCORE_NAMES, names); }