/// <summary> /// Добавление трека /// </summary> public string Add(RocksmithTrack track) { // Если список треков от пользователя достиг лимита, то добавляем в отложенную очередь int count = Tracks.Count(t => t.User == track.User); if (count >= userLimit) { DeferredTracks.Add(track); int deferredTracksCount = DeferredTracks.Count(t => t.User == track.User); // Сохранение очередей в файл Save(); return($"{track.User}, трек добавлен в отложенную очередь, {count + deferredTracksCount} треков всего"); } TrackAddEvent?.Invoke(new TrackEventArgs { Track = track }); Tracks.Add(track); // Сохранение очередей в файл Save(); return($"{track.User}, трек добавлен."); }
/// <summary> /// Удаление трека /// </summary> public void RemoveTrack(RocksmithTrack track) { if (!Tracks.Contains(track)) { return; } Tracks.Remove(track); TrackRemoveEvent?.Invoke(new TrackEventArgs { Track = track }); // После удаления из очереди проверяем треки, которые можно добавить из отложенных RocksmithTrack addTrack = DeferredTracks.FirstOrDefault(t => Tracks.Count(tt => tt.User == t.User) < userLimit); if (addTrack != null) { DeferredTracks.Remove(addTrack); Tracks.Add(addTrack); TrackAddEvent?.Invoke(new TrackEventArgs { Track = addTrack }); } // Сохранение очередей в файл Save(); }