Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
 public void Clear()
 {
     records.Clear();
     OnRecordChanged?.Invoke(this, EventArgs.Empty);
 }