예제 #1
0
        /// <summary>
        /// Bestätigt die Bearbeitung des Eintrags und speichert die dadurch veränderte Liste.
        /// </summary>
        /// <returns></returns>
        public bool Save()
        {
            // Verhindert das Abspeichern, falls kein Eintrag editiert werden kann oder kein Name eingegeben wurde
            if ((NewEntry == null) || (NewEntry.Name.Equals("")))
            {
                // Misserfolg!!!!
                return(false);
            }

            // <STST>
            using (FileStream fs = new FileStream(hscFilePath, FileMode.Create))
            {
                XmlSerializer ser = new XmlSerializer(typeof(List <HighscoreEntry>));
                ser.Serialize(fs, highscore);
            }
            // </STST>

            // Verhindert, dass der Eintrag weiter bearbeitet werden kann
            NewEntry = null;

            // Erfolg!!!!
            return(true);
        }
예제 #2
0
        // ADDED (by STST): 06.07.2011
        private HighscoreEntry NewEntryInHighscore(int score, HighscoreEntry newEntry)
        {
            Debug.Assert(score >= 0, "Übergebener Wert kleiner 0!");

            // Annahmen:
            // - Liste wird in diesem Abschnitt mit Insertion-Sort sortiert.
            // - größte Punktzahl ist erster Eintrag


            if (newEntry != null)
            {
                throw new Exception("newEntry ist nicht null.");
            }


            // Sonderbehandlung, falls die Liste leer ist:
            if (this.highscore.Count == 0)
            {
                newEntry = GetNewEntry(score);
                this.highscore.Add(newEntry);
            }
            else
            {
                bool bNewEntry;

                if (this.highscore.Count == MAX_ENTRIES)
                {
                    int min = this.highscore[this.highscore.Count - 1].Score;
                    if (score > min)
                    {
                        this.highscore.RemoveAt(MAX_ENTRIES - 1);
                        bNewEntry = true;
                    }
                    else
                    {
                        bNewEntry = false;
                    }
                }
                else
                {
                    bNewEntry = true;
                }


                if (bNewEntry)
                {
                    newEntry = GetNewEntry(score);
                    List <HighscoreEntry> newHighscore = new List <HighscoreEntry>(this.highscore.Capacity);

                    HighscoreEntry addAfterThis = this.highscore.Where(x => x.Score >= score).LastOrDefault();
                    if (addAfterThis == null)
                    {
                        newHighscore.Add(newEntry);
                        newHighscore.AddRange(this.highscore);
                    }
                    else
                    {
                        foreach (var item in this.highscore)
                        {
                            newHighscore.Add(item);
                            if (item == addAfterThis)
                            {
                                newHighscore.Add(newEntry);
                            }
                        }
                    }

                    this.highscore = newHighscore;
                }
            }

            return(newEntry);
        }