示例#1
0
            public static MixRanking FromString(string value, string fromTrack)
            {
                if (value == "")
                {
                    return(null);
                }
                var mixRank = new MixRanking {
                    FromTrack = fromTrack
                };

                if (value.Contains(","))
                {
                    var commaIndex = value.LastIndexOf(",", StringComparison.Ordinal);
                    mixRank.ToTrack = value.Substring(0, commaIndex).Trim();

                    var ranking = value.Substring(commaIndex + 1).Trim();
                    int mixLevel;
                    int.TryParse(ranking, out mixLevel);
                    mixRank.MixLevel = mixLevel;
                }
                else
                {
                    mixRank.ToTrack  = value;
                    mixRank.MixLevel = (int)MixRank.Unranked;
                }

                return(mixRank);
            }
示例#2
0
        /// <summary>
        ///     Loads the mix tracks.
        /// </summary>
        /// <param name="trackDescription">The track description.</param>
        private void LoadMixRankings(string trackDescription)
        {
            lock (_toMixes)
            {
                if (_loadedTracks.Contains(trackDescription))
                {
                    return;
                }
            }

            DebugHelper.WriteLine("LoadMixRankings - " + trackDescription);

            lock (_toMixes)
            {
                _loadedTracks.Add(trackDescription);
            }

            var filename = GetMixRankingFileName(trackDescription);

            if (!File.Exists(filename))
            {
                return;
            }

            var content     = File.ReadAllLines(filename).ToList();
            var mixRankings = content
                              .Select(line => MixRanking.FromString(line, trackDescription))
                              .Where(mixRank => mixRank != null);

            foreach (var mixRank in mixRankings)
            {
                SetMixLevel(mixRank.FromTrack, mixRank.ToTrack, mixRank.MixLevel);
            }
        }
示例#3
0
        public void LoadFromDatabase()
        {
            var mixLibraryDatabaseFile = MixLibraryDatabaseFile;
            var trackMixeses           = SerializationHelper <List <TrackMix> > .FromXmlFile(mixLibraryDatabaseFile);

            Clear();


            Parallel.ForEach(trackMixeses, trackMixes =>
            {
                DebugHelper.WriteLine("LoadMixRankings - " + trackMixes.Track);

                //lock (_loadedTracks)
                //{
                _loadedTracks.Add(trackMixes.Track);
                //}

                var mixRankings =
                    trackMixes.MixRankings.Select(mixRanking => MixRanking.FromString(mixRanking, trackMixes.Track))
                    .Where(mixRank => mixRank != null);
                foreach (var mixRank in mixRankings)
                {
                    SetMixLevel(mixRank.FromTrack, mixRank.ToTrack, mixRank.MixLevel);
                }
            });
        }
示例#4
0
        /// <summary>
        ///     Sets the mix level.
        /// </summary>
        /// <param name="fromTrackDescription">From track description.</param>
        /// <param name="toTrackDescription">To track description.</param>
        /// <param name="mixLevel">The mix level.</param>
        private void SetMixLevel(string fromTrackDescription, string toTrackDescription, int mixLevel)
        {
            lock (_toMixes)
            {
                var mixRank = GetMixRank(fromTrackDescription, toTrackDescription);
                if (mixLevel == 1)
                {
                    if (mixRank == null)
                    {
                        return;
                    }

                    var toMixes = GetToMixes(fromTrackDescription);
                    toMixes.Remove(mixRank);

                    var fromMixes = GetFromMixes(toTrackDescription);
                    fromMixes.Remove(mixRank);
                }
                else
                {
                    if (mixRank == null)
                    {
                        mixRank = new MixRanking
                        {
                            FromTrack = fromTrackDescription,
                            ToTrack   = toTrackDescription
                        };

                        var toMixes = GetToMixes(fromTrackDescription);
                        toMixes.Add(mixRank);

                        var fromMixes = GetFromMixes(toTrackDescription);
                        fromMixes.Add(mixRank);
                    }
                    mixRank.MixLevel = mixLevel;
                }
            }
        }
            public static MixRanking FromString(string value, string fromTrack)
            {
                if (value == "") return null;
                var mixRank = new MixRanking {FromTrack = fromTrack};

                if (value.Contains(","))
                {
                    var commaIndex = value.LastIndexOf(",", StringComparison.Ordinal);
                    mixRank.ToTrack = value.Substring(0, commaIndex).Trim();

                    var ranking = value.Substring(commaIndex + 1).Trim();
                    int mixLevel;
                    int.TryParse(ranking, out mixLevel);
                    mixRank.MixLevel = mixLevel;
                }
                else
                {
                    mixRank.ToTrack = value;
                    mixRank.MixLevel = (int) MixRank.Unranked;
                }

                return mixRank;
            }
        /// <summary>
        ///     Sets the mix level.
        /// </summary>
        /// <param name="fromTrackDescription">From track description.</param>
        /// <param name="toTrackDescription">To track description.</param>
        /// <param name="mixLevel">The mix level.</param>
        private void SetMixLevel(string fromTrackDescription, string toTrackDescription, int mixLevel)
        {
            lock (_toMixes)
            {
                var mixRank = GetMixRank(fromTrackDescription, toTrackDescription);
                if (mixLevel == 1)
                {
                    if (mixRank == null) return;

                    var toMixes = GetToMixes(fromTrackDescription);
                    toMixes.Remove(mixRank);

                    var fromMixes = GetFromMixes(toTrackDescription);
                    fromMixes.Remove(mixRank);
                }
                else
                {
                    if (mixRank == null)
                    {
                        mixRank = new MixRanking
                        {
                            FromTrack = fromTrackDescription,
                            ToTrack = toTrackDescription
                        };

                        var toMixes = GetToMixes(fromTrackDescription);
                        toMixes.Add(mixRank);

                        var fromMixes = GetFromMixes(toTrackDescription);
                        fromMixes.Add(mixRank);
                    }
                    mixRank.MixLevel = mixLevel;
                }
            }
        }