1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-21 06:52:55 +08:00

Merge pull request #6699 from peppy/fix-slider-creation

Fix slider creation regressing with path selection changes
This commit is contained in:
Dan Balasescu 2019-11-05 11:56:48 +09:00 committed by GitHub
commit 48711299f8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 21 deletions

View File

@ -29,8 +29,6 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components
private readonly Container marker; private readonly Container marker;
private readonly Drawable markerRing; private readonly Drawable markerRing;
private bool isClicked;
[Resolved] [Resolved]
private OsuColour colours { get; set; } private OsuColour colours { get; set; }
@ -101,7 +99,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components
markerRing.Alpha = IsSelected.Value ? 1 : 0; markerRing.Alpha = IsSelected.Value ? 1 : 0;
Color4 colour = isSegmentSeparator ? colours.Red : colours.Yellow; Color4 colour = isSegmentSeparator ? colours.Red : colours.Yellow;
if (IsHovered || isClicked || IsSelected.Value) if (IsHovered || IsSelected.Value)
colour = Color4.White; colour = Color4.White;
marker.Colour = colour; marker.Colour = colour;
} }
@ -127,21 +125,18 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components
protected override bool OnMouseDown(MouseDownEvent e) protected override bool OnMouseDown(MouseDownEvent e)
{ {
isClicked = true; if (RequestSelection != null)
return true; {
RequestSelection.Invoke(Index);
return true;
}
return false;
} }
protected override bool OnMouseUp(MouseUpEvent e) protected override bool OnMouseUp(MouseUpEvent e) => RequestSelection != null;
{
isClicked = false;
return true;
}
protected override bool OnClick(ClickEvent e) protected override bool OnClick(ClickEvent e) => RequestSelection != null;
{
RequestSelection?.Invoke(Index);
return true;
}
protected override bool OnDragStart(DragStartEvent e) => true; protected override bool OnDragStart(DragStartEvent e) => true;

View File

@ -17,12 +17,14 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components
internal readonly Container<PathControlPointPiece> Pieces; internal readonly Container<PathControlPointPiece> Pieces;
private readonly Slider slider; private readonly Slider slider;
private readonly bool allowSelection;
private InputManager inputManager; private InputManager inputManager;
public PathControlPointVisualiser(Slider slider) public PathControlPointVisualiser(Slider slider, bool allowSelection)
{ {
this.slider = slider; this.slider = slider;
this.allowSelection = allowSelection;
RelativeSizeAxes = Axes.Both; RelativeSizeAxes = Axes.Both;
@ -42,11 +44,15 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components
while (slider.Path.ControlPoints.Length > Pieces.Count) while (slider.Path.ControlPoints.Length > Pieces.Count)
{ {
Pieces.Add(new PathControlPointPiece(slider, Pieces.Count) var piece = new PathControlPointPiece(slider, Pieces.Count)
{ {
ControlPointsChanged = c => ControlPointsChanged?.Invoke(c), ControlPointsChanged = c => ControlPointsChanged?.Invoke(c),
RequestSelection = selectPiece };
});
if (allowSelection)
piece.RequestSelection = selectPiece;
Pieces.Add(piece);
} }
while (slider.Path.ControlPoints.Length < Pieces.Count) while (slider.Path.ControlPoints.Length < Pieces.Count)

View File

@ -51,7 +51,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders
bodyPiece = new SliderBodyPiece(), bodyPiece = new SliderBodyPiece(),
headCirclePiece = new HitCirclePiece(), headCirclePiece = new HitCirclePiece(),
tailCirclePiece = new HitCirclePiece(), tailCirclePiece = new HitCirclePiece(),
new PathControlPointVisualiser(HitObject) { ControlPointsChanged = _ => updateSlider() }, new PathControlPointVisualiser(HitObject, false) { ControlPointsChanged = _ => updateSlider() },
}; };
setState(PlacementState.Initial); setState(PlacementState.Initial);

View File

@ -33,7 +33,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders
BodyPiece = new SliderBodyPiece(), BodyPiece = new SliderBodyPiece(),
HeadBlueprint = CreateCircleSelectionBlueprint(slider, SliderPosition.Start), HeadBlueprint = CreateCircleSelectionBlueprint(slider, SliderPosition.Start),
TailBlueprint = CreateCircleSelectionBlueprint(slider, SliderPosition.End), TailBlueprint = CreateCircleSelectionBlueprint(slider, SliderPosition.End),
ControlPointVisualiser = new PathControlPointVisualiser(sliderObject) { ControlPointsChanged = onNewControlPoints }, ControlPointVisualiser = new PathControlPointVisualiser(sliderObject, true) { ControlPointsChanged = onNewControlPoints },
}; };
} }