diff --git a/PerformanceCalculatorGUI/Components/StrainVisualizer.cs b/PerformanceCalculatorGUI/Components/StrainVisualizer.cs index 93a2af0..5954fa3 100644 --- a/PerformanceCalculatorGUI/Components/StrainVisualizer.cs +++ b/PerformanceCalculatorGUI/Components/StrainVisualizer.cs @@ -97,7 +97,7 @@ namespace PerformanceCalculatorGUI.Components { graphsContainer.Clear(); - var skills = val.NewValue.Where(x => x is StrainSkill).ToArray(); + var skills = val.NewValue.Where(x => x is StrainSkill or StrainDecaySkill).ToArray(); // dont bother if there are no strain skills to draw if (skills.Length == 0) diff --git a/PerformanceCalculatorGUI/Components/TextBoxes/FileChooserLabelledTextBox.cs b/PerformanceCalculatorGUI/Components/TextBoxes/FileChooserLabelledTextBox.cs index aefe287..c77d0ca 100644 --- a/PerformanceCalculatorGUI/Components/TextBoxes/FileChooserLabelledTextBox.cs +++ b/PerformanceCalculatorGUI/Components/TextBoxes/FileChooserLabelledTextBox.cs @@ -101,7 +101,7 @@ namespace PerformanceCalculatorGUI.Components.TextBoxes OnFocused?.Invoke(); base.OnFocus(e); - GetContainingInputManager().TriggerFocusContention(this); + GetContainingFocusManager()?.TriggerFocusContention(this); } } diff --git a/PerformanceCalculatorGUI/Components/TextBoxes/LimitedLabelledFractionalNumberBox.cs b/PerformanceCalculatorGUI/Components/TextBoxes/LimitedLabelledFractionalNumberBox.cs index 3924203..f1d4841 100644 --- a/PerformanceCalculatorGUI/Components/TextBoxes/LimitedLabelledFractionalNumberBox.cs +++ b/PerformanceCalculatorGUI/Components/TextBoxes/LimitedLabelledFractionalNumberBox.cs @@ -3,7 +3,6 @@ using System.Globalization; using osu.Framework.Bindables; -using osu.Framework.Extensions; using osu.Game.Graphics.UserInterface; namespace PerformanceCalculatorGUI.Components.TextBoxes @@ -14,7 +13,7 @@ namespace PerformanceCalculatorGUI.Components.TextBoxes { protected override bool AllowIme => false; - protected override bool CanAddCharacter(char character) => character.IsAsciiDigit() || character == CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator[0]; + protected override bool CanAddCharacter(char character) => char.IsAsciiDigit(character) || character == CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator[0]; protected override void OnUserTextAdded(string added) { diff --git a/PerformanceCalculatorGUI/PerformanceCalculatorGUI.csproj b/PerformanceCalculatorGUI/PerformanceCalculatorGUI.csproj index b38b52b..5657446 100644 --- a/PerformanceCalculatorGUI/PerformanceCalculatorGUI.csproj +++ b/PerformanceCalculatorGUI/PerformanceCalculatorGUI.csproj @@ -6,10 +6,10 @@ latest - - - - - + + + + + diff --git a/PerformanceCalculatorGUI/Screens/ObjectInspection/CatchObjectInspectorRuleset.cs b/PerformanceCalculatorGUI/Screens/ObjectInspection/CatchObjectInspectorRuleset.cs index 5079936..ce397f7 100644 --- a/PerformanceCalculatorGUI/Screens/ObjectInspection/CatchObjectInspectorRuleset.cs +++ b/PerformanceCalculatorGUI/Screens/ObjectInspection/CatchObjectInspectorRuleset.cs @@ -4,21 +4,15 @@ using System.Collections.Generic; using System.Linq; using osu.Framework.Allocation; -using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Shapes; using osu.Game.Beatmaps; -using osu.Game.Graphics; using osu.Game.Rulesets; using osu.Game.Rulesets.Catch.Difficulty.Preprocessing; using osu.Game.Rulesets.Catch.Edit; -using osu.Game.Rulesets.Catch.UI; using osu.Game.Rulesets.Mods; -using osu.Game.Rulesets.UI; namespace PerformanceCalculatorGUI.Screens.ObjectInspection { - public partial class CatchObjectInspectorRuleset : DrawableCatchRuleset + public partial class CatchObjectInspectorRuleset : DrawableCatchEditorRuleset { private readonly CatchDifficultyHitObject[] difficultyHitObjects; @@ -36,36 +30,12 @@ namespace PerformanceCalculatorGUI.Screens.ObjectInspection public override bool PropagateNonPositionalInputSubTree => false; - protected override Playfield CreatePlayfield() => new CatchObjectInspectorPlayfield(Beatmap.Difficulty); + public override bool AllowBackwardsSeeks => true; protected override void Update() { base.Update(); objectDifficultyValuesContainer.CurrentDifficultyHitObject.Value = difficultyHitObjects.LastOrDefault(x => x.StartTime < Clock.CurrentTime); } - - private partial class CatchObjectInspectorPlayfield : CatchEditorPlayfield - { - protected override GameplayCursorContainer CreateCursor() => null!; - - public CatchObjectInspectorPlayfield(IBeatmapDifficultyInfo difficulty) - : base(difficulty) - { - DisplayJudgements.Value = false; - AddInternal(new Container - { - RelativeSizeAxes = Axes.X, - Y = 440, - Height = 6.0f, - CornerRadius = 4.0f, - Masking = true, - Child = new Box - { - Colour = OsuColour.Gray(0.5f), - RelativeSizeAxes = Axes.Both - } - }); - } - } } } diff --git a/PerformanceCalculatorGUI/Screens/ObjectInspection/ObjectDifficultyValuesContainer.cs b/PerformanceCalculatorGUI/Screens/ObjectInspection/ObjectDifficultyValuesContainer.cs index 928cfff..f14cae6 100644 --- a/PerformanceCalculatorGUI/Screens/ObjectInspection/ObjectDifficultyValuesContainer.cs +++ b/PerformanceCalculatorGUI/Screens/ObjectInspection/ObjectDifficultyValuesContainer.cs @@ -9,7 +9,6 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Sprites; -using osu.Framework.Utils; using osu.Game.Graphics.Containers; using osu.Game.Overlays; using osu.Game.Rulesets.Catch.Difficulty.Preprocessing; @@ -132,7 +131,7 @@ namespace PerformanceCalculatorGUI.Screens.ObjectInspection }); if (hitObject.Angle is not null) - flowContainer.Add(new ObjectInspectorDifficultyValue("Angle", MathUtils.RadiansToDegrees(hitObject.Angle.Value))); + flowContainer.Add(new ObjectInspectorDifficultyValue("Angle", double.RadiansToDegrees(hitObject.Angle.Value))); if (hitObject.BaseObject is Slider) { diff --git a/PerformanceCalculatorGUI/Screens/ObjectInspection/ObjectInspector.cs b/PerformanceCalculatorGUI/Screens/ObjectInspection/ObjectInspector.cs index 1b795ce..f52a1f6 100644 --- a/PerformanceCalculatorGUI/Screens/ObjectInspection/ObjectInspector.cs +++ b/PerformanceCalculatorGUI/Screens/ObjectInspection/ObjectInspector.cs @@ -178,7 +178,6 @@ namespace PerformanceCalculatorGUI.Screens.ObjectInspection }, "taiko" => new TaikoPlayfieldAdjustmentContainer { - RelativeSizeAxes = Axes.Both, Child = new TaikoObjectInspectorRuleset(rulesetInstance, playableBeatmap, modifiedMods, difficultyCalculator.Value as ExtendedTaikoDifficultyCalculator, processorBeatmap.Track.Rate) { diff --git a/PerformanceCalculatorGUI/Screens/ObjectInspection/OsuObjectInspectorRuleset.cs b/PerformanceCalculatorGUI/Screens/ObjectInspection/OsuObjectInspectorRuleset.cs index 12d8785..999148d 100644 --- a/PerformanceCalculatorGUI/Screens/ObjectInspection/OsuObjectInspectorRuleset.cs +++ b/PerformanceCalculatorGUI/Screens/ObjectInspection/OsuObjectInspectorRuleset.cs @@ -10,13 +10,14 @@ using osu.Game.Rulesets; using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Objects.Drawables; using osu.Game.Rulesets.Osu.Difficulty.Preprocessing; +using osu.Game.Rulesets.Osu.Edit; using osu.Game.Rulesets.Osu.Objects.Drawables; using osu.Game.Rulesets.Osu.UI; using osu.Game.Rulesets.UI; namespace PerformanceCalculatorGUI.Screens.ObjectInspection { - public partial class OsuObjectInspectorRuleset : DrawableOsuRuleset + public partial class OsuObjectInspectorRuleset : DrawableOsuEditorRuleset { private readonly OsuDifficultyHitObject[] difficultyHitObjects; @@ -39,6 +40,8 @@ namespace PerformanceCalculatorGUI.Screens.ObjectInspection public override bool PropagateNonPositionalInputSubTree => false; + public override bool AllowBackwardsSeeks => true; + protected override Playfield CreatePlayfield() => new OsuObjectInspectorPlayfield(difficultyHitObjects); private partial class OsuObjectInspectorPlayfield : OsuPlayfield @@ -55,14 +58,12 @@ namespace PerformanceCalculatorGUI.Screens.ObjectInspection protected override void OnNewDrawableHitObject(DrawableHitObject d) { + base.OnNewDrawableHitObject(d); d.ApplyCustomUpdateState += updateState; } private void updateState(DrawableHitObject hitObject, ArmedState state) { - if (state == ArmedState.Idle) - return; - if (hitObject is DrawableSliderRepeat repeat) { repeat.Arrow.ApplyTransformsAt(hitObject.StateUpdateTime, true); diff --git a/PerformanceCalculatorGUI/Screens/ObjectInspection/TaikoObjectInspectorRuleset.cs b/PerformanceCalculatorGUI/Screens/ObjectInspection/TaikoObjectInspectorRuleset.cs index d08fc80..34f9646 100644 --- a/PerformanceCalculatorGUI/Screens/ObjectInspection/TaikoObjectInspectorRuleset.cs +++ b/PerformanceCalculatorGUI/Screens/ObjectInspection/TaikoObjectInspectorRuleset.cs @@ -8,12 +8,13 @@ using osu.Game.Beatmaps; using osu.Game.Rulesets; using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Taiko.Difficulty.Preprocessing; +using osu.Game.Rulesets.Taiko.Edit; using osu.Game.Rulesets.Taiko.UI; using osu.Game.Rulesets.UI; namespace PerformanceCalculatorGUI.Screens.ObjectInspection { - public partial class TaikoObjectInspectorRuleset : DrawableTaikoRuleset + public partial class TaikoObjectInspectorRuleset : DrawableTaikoEditorRuleset { private readonly TaikoDifficultyHitObject[] difficultyHitObjects; @@ -31,6 +32,8 @@ namespace PerformanceCalculatorGUI.Screens.ObjectInspection public override bool PropagateNonPositionalInputSubTree => false; + public override bool AllowBackwardsSeeks => true; + protected override Playfield CreatePlayfield() => new TaikoObjectInspectorPlayfield(); protected override void Update()