public void SaveScore(LocalScoreEntry newScore)
    {
        if (loadedScores != null)
        {
            int index = loadedScores.FindIndex(0, x => x.playerName == newScore.playerName);

            if (index == -1)
            {
                loadedScores.Add(newScore);
            }
            else
            {
                loadedScores[index] = newScore;
            }
        }
        else
        {
            loadedScores = new List <LocalScoreEntry>();
            loadedScores.Add(newScore);
        }

        UpdateScores();

        string fileText = eventName + "\n";

        for (int i = 0; i < loadedScores.Count; i++)
        {
            fileText += $"{loadedScores[i].rank}\t{loadedScores[i].playerName}\t{loadedScores[i].score}\t{loadedScores[i].email}\n";
        }

        File.WriteAllText(scoreListPath, fileText);
    }
    private void Update()
    {
        //Count up time and display it
        if (raceActive)
        {
            time           += Time.deltaTime;
            uiTimeText.text = $"{time:#0.000}";
        }

        if (Input.GetKeyDown(KeyCode.F5) && SteamManager.Initialized)
        {
            steamLeaderboard.DownloadScores();
        }

        if (Input.GetKeyDown(KeyCode.Return) && !SteamManager.Initialized)
        {
            eventLeaderboard.ClearEmptyPlayers();

            int exitCode = PlayerForm.AddPlayer(eventLeaderboard.scoreListPath);

            if (exitCode > 0)
            {
                eventLeaderboard.LoadScoreList();

                LocalScoreEntry newPlayer = eventLeaderboard.InitPlayer();

                eventPlayerName = newPlayer.playerName;
                cachedEmail     = newPlayer.email;

                LoadNewPlayerStats();
            }
        }
    }
    void UpdateScores()
    {
        loadedScores.Sort(delegate(LocalScoreEntry x, LocalScoreEntry y)
        {
            return(x.score.CompareTo(y.score));
        });

        for (int i = 0; i < loadedScores.Count; i++)
        {
            loadedScores[i] = new LocalScoreEntry(loadedScores[i].playerName, i + 1, loadedScores[i].score, loadedScores[i].email);
        }
    }
    public LocalScoreEntry InitPlayer()
    {
        LocalScoreEntry addedPlayerScore = loadedScores[loadedScores.Count - 1];

        loadedScores.RemoveAt(loadedScores.Count - 1);

        if (loadedScores.Count > 0)
        {
            int index = loadedScores.FindIndex(0, x => x.playerName == addedPlayerScore.playerName);

            if (index == -1)
            {
                loadedScores.Add(addedPlayerScore);
            }
            else
            {
                loadedScores[index] = new LocalScoreEntry(loadedScores[index].playerName, loadedScores[index].rank, loadedScores[index].score, addedPlayerScore.email);

                string fileText = eventName + "\n";

                for (int i = 0; i < loadedScores.Count; i++)
                {
                    fileText += $"{loadedScores[i].rank}\t{loadedScores[i].playerName}\t{loadedScores[i].score}\t{loadedScores[i].email}\n";
                }

                File.WriteAllText(scoreListPath, fileText);

                return(loadedScores[index]);
            }
        }
        else
        {
            loadedScores.Add(addedPlayerScore);
        }

        return(addedPlayerScore);
    }