/// <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); }
// 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); }