예제 #1
0
        /// <summary> Returns the expected file name of the .osu based on the beatmap's metadata. </summary>
        public string GetOsuFileName()
        {
            string songArtist  = metadataSettings.GetFileNameFiltered(metadataSettings.artist);
            string songTitle   = metadataSettings.GetFileNameFiltered(metadataSettings.title);
            string songCreator = metadataSettings.GetFileNameFiltered(metadataSettings.creator);
            string version     = metadataSettings.GetFileNameFiltered(metadataSettings.version);

            return(songArtist + " - " + songTitle + " (" + songCreator + ") [" + version + "].osu");
        }
예제 #2
0
        /// <summary> Returns the beatmapset as a string in the format "Artist - Title (Creator)". </summary>
        public override string ToString()
        {
            if (beatmaps.Count > 0)
            {
                MetadataSettings settings = beatmaps.First().metadataSettings;

                string songArtist  = settings.GetFileNameFiltered(settings.artist);
                string songTitle   = settings.GetFileNameFiltered(settings.title);
                string songCreator = settings.GetFileNameFiltered(settings.creator);

                return(songArtist + " - " + songTitle + " (" + songCreator + ")");
            }
            return("No beatmaps in set.");
        }
예제 #3
0
        /// <summary> Returns the expected .osb file name based on the metadata of the first beatmap if any exists, otherwise null. </summary>
        public string GetOsbFileName()
        {
            MetadataSettings settings = beatmaps.FirstOrDefault()?.metadataSettings;

            if (settings == null)
            {
                return(null);
            }

            string songArtist  = settings.GetFileNameFiltered(settings.artist);
            string songTitle   = settings.GetFileNameFiltered(settings.title);
            string songCreator = settings.GetFileNameFiltered(settings.creator);

            return(songArtist + " - " + songTitle + " (" + songCreator + ").osb");
        }
예제 #4
0
        public void OnExecute()
        {
            if (MapsetPath == null)
            {
                Console.WriteLine("Missing argument: MapsetPath. Use -h to show help.");
                return;
            }

            BeatmapSet beatmapSet = new BeatmapSet(MapsetPath);

            if (Verbose)
            {
                if (OutputAsJSON)
                {
                    Checker.OnLoadStart    = LoadStartJS;
                    Checker.OnLoadComplete = LoadFinishJS;
                }
                else
                {
                    Checker.OnLoadStart    = LoadStart;
                    Checker.OnLoadComplete = LoadFinish;
                }
            }

            Checker.LoadCheckDLLs();
            IEnumerable <Issue> issues =
                Checker.GetBeatmapSetIssues(beatmapSet)
                .Where(anIssue => anIssue.level >= IssueLevel);

            List <JSONIssue> mapIssues = new List <JSONIssue>();

            foreach (var beatmapIssues in issues.GroupBy(anIssue => anIssue.beatmap))
            {
                JSONIssue diffIssue = new JSONIssue();

                Beatmap beatmap = beatmapIssues.Key;
                diffIssue.difficulty = beatmap?.ToString() ?? "[General]";
                diffIssue.problems   = new List <CategoryIssue>();

                foreach (var category in beatmapIssues.GroupBy(anIssue => anIssue.CheckOrigin))
                {
                    if (beatmap == null || category.Any(anIssue => anIssue.AppliesToDifficulty(beatmap.GetDifficulty())))
                    {
                        CategoryIssue categoryIssue = new CategoryIssue();
                        categoryIssue.problems = new List <Problem>();
                        categoryIssue.message  = category.Key.GetMetadata().Message;

                        foreach (Issue issue in category)
                        {
                            if (beatmap == null || issue.AppliesToDifficulty(beatmap.GetDifficulty()))
                            {
                                Problem problemIssue = new Problem();
                                problemIssue.level   = issue.level;
                                problemIssue.message = issue.message;
                                categoryIssue.problems.Add(problemIssue);
                            }
                        }
                        diffIssue.problems.Add(categoryIssue);
                    }
                }
                mapIssues.Add(diffIssue);
            }

            Result           mapResult   = new Result();
            Metadata         mapMetadata = new Metadata();
            MetadataSettings settings    = beatmapSet.beatmaps.First().metadataSettings;

            mapMetadata.artist = settings.GetFileNameFiltered(settings.artist);
            mapMetadata.title  = settings.GetFileNameFiltered(settings.title);
            mapMetadata.mapper = settings.GetFileNameFiltered(settings.creator);
            mapResult.metadata = mapMetadata;
            mapResult.results  = mapIssues;
            if (OutputAsJSON)
            {
                Console.Write(JsonConvert.SerializeObject(mapResult));
            }
            else
            {
                foreach (JSONIssue diff in mapIssues)
                {
                    Console.WriteLine(diff.difficulty);
                    foreach (CategoryIssue category in diff.problems)
                    {
                        Console.WriteLine(category.message);
                        foreach (Problem timestamp in category.problems)
                        {
                            Console.WriteLine($"\t {timestamp.level} - {timestamp.message}");
                        }
                    }
                    Console.WriteLine();
                }
            }
        }