From eab6185780b23c1abef04245a24741d7d131f9d0 Mon Sep 17 00:00:00 2001 From: Dan Balasescu Date: Mon, 15 Nov 2021 17:41:16 +0900 Subject: [PATCH] Improve output readability --- .../Difficulty/DifficultyCommand.cs | 5 ++-- .../Simulate/SimulateCommand.cs | 28 +++++++++++++------ 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/PerformanceCalculator/Difficulty/DifficultyCommand.cs b/PerformanceCalculator/Difficulty/DifficultyCommand.cs index 9302637..eb1f443 100644 --- a/PerformanceCalculator/Difficulty/DifficultyCommand.cs +++ b/PerformanceCalculator/Difficulty/DifficultyCommand.cs @@ -85,15 +85,14 @@ namespace PerformanceCalculator.Difficulty foreach (var group in resultSet.Results.GroupBy(r => r.RulesetId)) { var ruleset = LegacyHelper.GetRulesetFromLegacyID(group.First().RulesetId); - document.Children.Add(new Span($"Ruleset: {ruleset.ShortName}"), "\n"); + document.Children.Add(new Span($"ruleset: {ruleset.ShortName}"), "\n"); Grid grid = new Grid(); bool firstResult = true; foreach (var result in group) { - var attributeValues = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(result.Attributes)) - ?? new Dictionary(); + var attributeValues = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(result.Attributes)) ?? new Dictionary(); // Headers if (firstResult) diff --git a/PerformanceCalculator/Simulate/SimulateCommand.cs b/PerformanceCalculator/Simulate/SimulateCommand.cs index 60c3e12..ccb48fb 100644 --- a/PerformanceCalculator/Simulate/SimulateCommand.cs +++ b/PerformanceCalculator/Simulate/SimulateCommand.cs @@ -8,6 +8,7 @@ using System.Globalization; using System.IO; using System.Linq; using Alba.CsConsoleFormat; +using Humanizer; using JetBrains.Annotations; using McMaster.Extensions.CommandLineUtils; using Newtonsoft.Json; @@ -119,20 +120,31 @@ namespace PerformanceCalculator.Simulate // Basic score info. document.Children.Add( - FormatDocumentLine("Beatmap", $"{result.Score.BeatmapId} - {result.Score.Beatmap}"), - FormatDocumentLine("Score", result.Score.Score.ToString(CultureInfo.InvariantCulture)), - FormatDocumentLine("Accuracy", result.Score.Accuracy.ToString("N2", CultureInfo.InvariantCulture)), - FormatDocumentLine("Combo", result.Score.Combo.ToString(CultureInfo.InvariantCulture)), - FormatDocumentLine("Mods", result.Score.Mods.Count > 0 ? result.Score.Mods.Select(m => m.ToString()).Aggregate((c, n) => $"{c}, {n}") : "None") + FormatDocumentLine("beatmap", $"{result.Score.BeatmapId} - {result.Score.Beatmap}"), + FormatDocumentLine("score", result.Score.Score.ToString(CultureInfo.InvariantCulture)), + FormatDocumentLine("accuracy", result.Score.Accuracy.ToString("N2", CultureInfo.InvariantCulture)), + FormatDocumentLine("combo", result.Score.Combo.ToString(CultureInfo.InvariantCulture)), + FormatDocumentLine("mods", result.Score.Mods.Count > 0 ? result.Score.Mods.Select(m => m.ToString()).Aggregate((c, n) => $"{c}, {n}") : "None") ); + document.Children.Add("---\n"); + // Hit statistics foreach (var stat in result.Score.Statistics) - document.Children.Add(FormatDocumentLine(stat.Key.ToString(), stat.Value.ToString(CultureInfo.InvariantCulture))); + document.Children.Add(FormatDocumentLine(stat.Key.ToString().ToLowerInvariant(), stat.Value.ToString(CultureInfo.InvariantCulture))); - // Finally, pp. + document.Children.Add("---\n"); + + // pp. document.Children.Add(FormatDocumentLine("pp", result.Pp.ToString("N2", CultureInfo.InvariantCulture))); + document.Children.Add("---\n"); + + // Difficulty attributes + var attributeValues = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(result.Attributes)) ?? new Dictionary(); + foreach (var attrib in attributeValues) + document.Children.Add(FormatDocumentLine(attrib.Key.Humanize(), $"{attrib.Value:N2}")); + OutputDocument(document); } } @@ -163,7 +175,7 @@ namespace PerformanceCalculator.Simulate protected virtual double GetAccuracy(Dictionary statistics) => 0; - protected string FormatDocumentLine(string name, string value) => $"{name.PadRight(15)}: {value}\n"; + protected string FormatDocumentLine(string name, string value) => $"{name.PadRight(20)}: {value}\n"; private class Result {