mirror of
https://github.com/ppy/osu-tools.git
synced 2025-06-09 09:35:15 +09:00
Move catch guide line to CatchObjectInspectorRuleset
This commit is contained in:
parent
f6d3b6f111
commit
7ebc7a55f3
3 changed files with 35 additions and 66 deletions
|
@ -5,16 +5,17 @@ using System.Collections.Generic;
|
|||
using System.Linq;
|
||||
using osu.Framework.Allocation;
|
||||
using osu.Framework.Bindables;
|
||||
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.Objects;
|
||||
using osu.Game.Rulesets.Catch.Objects.Drawables;
|
||||
using osu.Game.Rulesets.Catch.UI;
|
||||
using osu.Game.Rulesets.Difficulty.Preprocessing;
|
||||
using osu.Game.Rulesets.Mods;
|
||||
using osu.Game.Rulesets.Objects;
|
||||
using osu.Game.Rulesets.UI;
|
||||
|
||||
namespace PerformanceCalculatorGUI.Screens.ObjectInspection
|
||||
|
@ -44,7 +45,7 @@ namespace PerformanceCalculatorGUI.Screens.ObjectInspection
|
|||
|
||||
public override bool PropagateNonPositionalInputSubTree => false;
|
||||
|
||||
protected override Playfield CreatePlayfield() => new CatchObjectInspectorPlayfield(Beatmap.Difficulty, difficultyHitObjects);
|
||||
protected override Playfield CreatePlayfield() => new CatchObjectInspectorPlayfield(Beatmap.Difficulty);
|
||||
|
||||
protected override void Update()
|
||||
{
|
||||
|
@ -79,48 +80,25 @@ namespace PerformanceCalculatorGUI.Screens.ObjectInspection
|
|||
|
||||
private partial class CatchObjectInspectorPlayfield : CatchEditorPlayfield
|
||||
{
|
||||
private readonly IReadOnlyList<CatchDifficultyHitObject> difficultyHitObjects;
|
||||
|
||||
protected override GameplayCursorContainer CreateCursor() => null;
|
||||
|
||||
public CatchObjectInspectorPlayfield(IBeatmapDifficultyInfo difficulty, IReadOnlyList<CatchDifficultyHitObject> difficultyHitObjects)
|
||||
public CatchObjectInspectorPlayfield(IBeatmapDifficultyInfo difficulty)
|
||||
: base(difficulty)
|
||||
{
|
||||
this.difficultyHitObjects = difficultyHitObjects;
|
||||
DisplayJudgements.Value = false;
|
||||
}
|
||||
|
||||
[BackgroundDependencyLoader]
|
||||
private void load()
|
||||
{
|
||||
foreach (var dho in difficultyHitObjects)
|
||||
AddInternal(new Container
|
||||
{
|
||||
HitObjectContainer.Add(new CatchInspectorDrawableHitObject(dho));
|
||||
}
|
||||
}
|
||||
|
||||
private partial class CatchInspectorDrawableHitObject : DrawableCatchHitObject
|
||||
{
|
||||
private readonly CatchDifficultyHitObject dho;
|
||||
|
||||
public CatchInspectorDrawableHitObject(CatchDifficultyHitObject dho)
|
||||
: base(new CatchInspectorHitObject(dho.BaseObject))
|
||||
{
|
||||
this.dho = dho;
|
||||
}
|
||||
|
||||
[BackgroundDependencyLoader]
|
||||
private void load()
|
||||
{
|
||||
}
|
||||
|
||||
private class CatchInspectorHitObject : CatchHitObject
|
||||
{
|
||||
public CatchInspectorHitObject(HitObject obj)
|
||||
RelativeSizeAxes = Axes.X,
|
||||
Y = 440,
|
||||
Height = 6.0f,
|
||||
CornerRadius = 4.0f,
|
||||
Masking = true,
|
||||
Child = new Box
|
||||
{
|
||||
StartTime = obj.StartTime;
|
||||
Colour = OsuColour.Gray(0.5f),
|
||||
RelativeSizeAxes = Axes.Both
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,21 +40,23 @@ namespace PerformanceCalculatorGUI.Screens.ObjectInspection
|
|||
[BackgroundDependencyLoader]
|
||||
private void load(OverlayColourProvider colors)
|
||||
{
|
||||
Children = new Drawable[]{
|
||||
Children = new Drawable[]
|
||||
{
|
||||
bgBox = new Box
|
||||
{
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Colour = colors.Background5,
|
||||
Alpha = 0.95f,
|
||||
},
|
||||
new OsuScrollContainer() {
|
||||
new OsuScrollContainer()
|
||||
{
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
ScrollbarAnchor = Anchor.TopLeft,
|
||||
Child = flowContainer = new TextFlowContainer()
|
||||
{
|
||||
AutoSizeAxes = Axes.Both,
|
||||
Masking = false,
|
||||
Margin = new MarginPadding {Left = 15},
|
||||
Margin = new MarginPadding { Left = 15 },
|
||||
Origin = Anchor.TopLeft,
|
||||
},
|
||||
},
|
||||
|
@ -64,6 +66,7 @@ namespace PerformanceCalculatorGUI.Screens.ObjectInspection
|
|||
public void UpdateValues()
|
||||
{
|
||||
flowContainer.Text = "";
|
||||
|
||||
foreach (KeyValuePair<string, Dictionary<string, object>> GroupPair in InfoDictionary.Value)
|
||||
{
|
||||
// Big text
|
||||
|
@ -88,18 +91,22 @@ namespace PerformanceCalculatorGUI.Screens.ObjectInspection
|
|||
|
||||
// value formatting
|
||||
object value = ValuePair.Value;
|
||||
|
||||
if (value is double val)
|
||||
{
|
||||
value = Math.Truncate(val * 1000) / 1000;
|
||||
}
|
||||
|
||||
if (value is float val2)
|
||||
{
|
||||
value = Math.Truncate(val2 * 1000) / 1000;
|
||||
}
|
||||
|
||||
if (value is Vector2 val3)
|
||||
{
|
||||
value = new Vector2((float)(Math.Truncate(val3.X * 100) / 100), (float)Math.Truncate(val3.Y * 100) / 100);
|
||||
}
|
||||
|
||||
flowContainer.AddText($" -> {value}\n\n", t =>
|
||||
{
|
||||
t.Font = OsuFont.TorusAlternate.With(size: 21, weight: "SemiBold");
|
||||
|
@ -113,10 +120,12 @@ namespace PerformanceCalculatorGUI.Screens.ObjectInspection
|
|||
public void AddGroup(string name, string[] overrides = null)
|
||||
{
|
||||
overrides ??= Array.Empty<string>();
|
||||
|
||||
foreach (string other in overrides)
|
||||
{
|
||||
InfoDictionary.Value.Remove(other);
|
||||
}
|
||||
|
||||
InfoDictionary.Value[name] = new Dictionary<string, object>();
|
||||
}
|
||||
|
||||
|
@ -128,18 +137,22 @@ namespace PerformanceCalculatorGUI.Screens.ObjectInspection
|
|||
public void SetValue(string group, string name, object value)
|
||||
{
|
||||
InfoDictionary.Value.TryGetValue(group, out var exists);
|
||||
|
||||
if (exists == null)
|
||||
{
|
||||
AddGroup(group);
|
||||
}
|
||||
|
||||
if (value is double val)
|
||||
{
|
||||
value = Math.Truncate(val * 1000) / 1000;
|
||||
}
|
||||
|
||||
if (value is float val2)
|
||||
{
|
||||
value = Math.Truncate(val2 * 1000) / 1000;
|
||||
}
|
||||
|
||||
if (value is Vector2 val3)
|
||||
{
|
||||
value = new Vector2((float)(Math.Truncate(val3.X * 100) / 100), (float)Math.Truncate(val3.Y * 100) / 100);
|
||||
|
|
|
@ -24,7 +24,6 @@ using osu.Game.Rulesets.UI;
|
|||
using osu.Game.Screens.Edit;
|
||||
using osu.Game.Screens.Edit.Components;
|
||||
using osu.Game.Screens.Edit.Components.Timelines.Summary;
|
||||
using osuTK;
|
||||
using osuTK.Input;
|
||||
|
||||
namespace PerformanceCalculatorGUI.Screens.ObjectInspection
|
||||
|
@ -178,7 +177,6 @@ namespace PerformanceCalculatorGUI.Screens.ObjectInspection
|
|||
});
|
||||
|
||||
dependencies.CacheAs(values);
|
||||
DrawableRuleset inspectorRuleset = null;
|
||||
|
||||
inspectContainer.Add(ruleset.Value.ShortName switch
|
||||
{
|
||||
|
@ -193,7 +191,7 @@ namespace PerformanceCalculatorGUI.Screens.ObjectInspection
|
|||
RelativeSizeAxes = Axes.Both,
|
||||
PlayfieldBorderStyle = { Value = PlayfieldBorderStyle.Corners }
|
||||
},
|
||||
inspectorRuleset = new OsuObjectInspectorRuleset(rulesetInstance, playableBeatmap, modifiedMods, difficultyCalculator.Value as ExtendedOsuDifficultyCalculator,
|
||||
new OsuObjectInspectorRuleset(rulesetInstance, playableBeatmap, modifiedMods, difficultyCalculator.Value as ExtendedOsuDifficultyCalculator,
|
||||
processorBeatmap.Track.Rate, focusedDiffHitBind)
|
||||
{
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
|
@ -206,7 +204,7 @@ namespace PerformanceCalculatorGUI.Screens.ObjectInspection
|
|||
{
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Margin = new MarginPadding(10) { Left = 0, Bottom = bottom_bar_height },
|
||||
Child = inspectorRuleset = new TaikoObjectInspectorRuleset(rulesetInstance, playableBeatmap, modifiedMods, difficultyCalculator.Value as ExtendedTaikoDifficultyCalculator,
|
||||
Child = new TaikoObjectInspectorRuleset(rulesetInstance, playableBeatmap, modifiedMods, difficultyCalculator.Value as ExtendedTaikoDifficultyCalculator,
|
||||
processorBeatmap.Track.Rate, focusedDiffHitBind)
|
||||
{
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
|
@ -221,27 +219,7 @@ namespace PerformanceCalculatorGUI.Screens.ObjectInspection
|
|||
Y = 100,
|
||||
Children = new Drawable[]
|
||||
{
|
||||
// guideline bar
|
||||
new Container
|
||||
{
|
||||
RelativeSizeAxes = Axes.X,
|
||||
Height = 3,
|
||||
Y = 300,
|
||||
Colour = Colour4.Red,
|
||||
Children = new Drawable[]
|
||||
{
|
||||
// shadow
|
||||
new Circle { Colour = Colour4.Gray, Size = new Vector2(10), Y = -3.3f + 2, X = -5 },
|
||||
new Box { Colour = Colour4.Gray, Size = new Vector2(5, 20), Y = -8.3f + 2, X = 508 },
|
||||
new Box { Colour = Colour4.Gray, RelativeSizeAxes = Axes.Both, Y = 2 },
|
||||
|
||||
// main
|
||||
new Circle { Size = new Vector2(10), Y = -3.3f, X = -5 },
|
||||
new Box { Size = new Vector2(5, 20), Y = -8.3f, X = 508 },
|
||||
new Box { RelativeSizeAxes = Axes.Both },
|
||||
}
|
||||
},
|
||||
inspectorRuleset = new CatchObjectInspectorRuleset(rulesetInstance, playableBeatmap, modifiedMods, difficultyCalculator.Value as ExtendedCatchDifficultyCalculator,
|
||||
new CatchObjectInspectorRuleset(rulesetInstance, playableBeatmap, modifiedMods, difficultyCalculator.Value as ExtendedCatchDifficultyCalculator,
|
||||
processorBeatmap.Track.Rate, focusedDiffHitBind)
|
||||
{
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue