public void Load() { if (string.IsNullOrWhiteSpace(FilePath)) { throw new Exception("Попытка вызвать загрузку таблицы рекордов не указав адрес файла храннения."); } if (!File.Exists(FilePath)) { return; } using (Stream recordsFile = new FileStream(FilePath, FileMode.Open, FileAccess.Read, FileShare.None)) { records.Clear(); var serializer = new XmlSerializer(typeof(List <RecordItem>)); var data = (List <RecordItem>)serializer.Deserialize(recordsFile); foreach (var d in data) { records.Add(d); } } OnRecordChanged?.Invoke(this, EventArgs.Empty); }
public void UpdateRecord(GameType gameType, int seconds, string player) { if (gameType == GameType.Custom) { throw new ArgumentException("Невозможно добавить рекорд для случайной игры."); } if (records == null) { records = new List <IRecordItem>(RecordListSize); } IRecordItem ri = records.FirstOrDefault(r => r.GameType == gameType); RecordItem recordItem = (RecordItem)ri; if (recordItem != null) { if (recordItem.Time < seconds) { throw new ArgumentException($"Прошлый рекорд для этого типа игры {recordItem.Time} секунд. Время нового рекорда должно быть меньше."); } recordItem.Time = seconds; recordItem.Player = player; } else { RecordItem newRecord = new RecordItem { GameType = gameType, Time = seconds, Player = player }; records.Add(newRecord); } OnRecordChanged?.Invoke(this, EventArgs.Empty); }
public void Clear() { records.Clear(); OnRecordChanged?.Invoke(this, EventArgs.Empty); }