Ejemplo n.º 1
0
    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;
            }
        }
    }
Ejemplo n.º 2
0
    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);
    }
Ejemplo n.º 3
0
    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;
    }
Ejemplo n.º 4
0
    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();
            }
        }
    }
Ejemplo n.º 5
0
    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;
    }
Ejemplo n.º 6
0
    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);
    }