Exemple #1
0
    public bool updateList(scoreRow newRow)
    {
        int myTime = 60*newRow.getMinutes() +  newRow.getSeconds();
        bool inserted = false;
        int i = 0;
        for(; i < scoreList.Count; i++)
        {
            if (!inserted)
            {
                int curTime = 60* scoreList[i].getMinutes() + scoreList[i].getSeconds();
                if (myTime <= curTime)
                {
                    newRow.setPlace(scoreList[i].getPlace());
                    scoreList.Insert(i, newRow);
                    inserted = true;
                    i++;
                    break;
                }
            }
        }

        for (;i < scoreList.Count; i++)
        {
            int curTime = 60*scoreList[i].getMinutes() + scoreList[i].getSeconds();
            int lastTime = 60 * scoreList[i-1].getMinutes() + scoreList[i-1].getSeconds();

            if (curTime == lastTime)
            {
                scoreList[i].setPlace(scoreList[i - 1].getPlace());
            }
            else
            {
                scoreList[i].setPlace(i+1);
            }
        }

        if (scoreList.Count == 0)
        {
            newRow.setPlace(1);
            scoreList.Insert(i, newRow);
            inserted = true;
        }
        if (scoreList.Count < places.Count && !inserted)
        {
            int lastTime = 60 * scoreList[scoreList.Count -1].getMinutes() + scoreList[scoreList.Count - 1].getSeconds();
            if (myTime == lastTime)
            {
                newRow.setPlace(scoreList[scoreList.Count - 1].getPlace());
            }
            else
            {
                newRow.setPlace(scoreList.Count + 1);
            }
            scoreList.Add(newRow);
            inserted = true;
        }
        if (inserted)
        {
            if (scoreList.Count > places.Count)
            {
                scoreList.RemoveRange(places.Count, scoreList.Count - places.Count );
            }
            recordBeaten = true;
            writeFile();
            return true;
        }
        return false;
    }