Esempio n. 1
0
        /// <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();
        }
Esempio n. 2
0
        /// <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}, трек добавлен.");
        }
Esempio n. 3
0
 /// <summary>
 /// Удаление трека
 /// </summary>
 public void RemoveTrack(RocksmithTrack track)
 {
     Queue.RemoveTrack(track);
 }