From 8f16c1cb049813cce2e1dabc07aa52e44e894038 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 21 Jan 2020 14:21:00 +0900 Subject: [PATCH] Add non-hiding selection state --- osu.Game/Rulesets/Edit/SelectionBlueprint.cs | 10 +++++++--- .../Components/Timeline/TimelineHitObjectDisplay.cs | 8 +++++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/osu.Game/Rulesets/Edit/SelectionBlueprint.cs b/osu.Game/Rulesets/Edit/SelectionBlueprint.cs index d8952a3932..d50a9dce16 100644 --- a/osu.Game/Rulesets/Edit/SelectionBlueprint.cs +++ b/osu.Game/Rulesets/Edit/SelectionBlueprint.cs @@ -44,7 +44,7 @@ namespace osu.Game.Rulesets.Edit RelativeSizeAxes = Axes.Both; AlwaysPresent = true; - Alpha = 0; + OnDeselected(); } private SelectionState state; @@ -64,12 +64,12 @@ namespace osu.Game.Rulesets.Edit switch (state) { case SelectionState.Selected: - Show(); + OnSelected(); Selected?.Invoke(this); break; case SelectionState.NotSelected: - Hide(); + OnDeselected(); Deselected?.Invoke(this); break; } @@ -78,6 +78,10 @@ namespace osu.Game.Rulesets.Edit } } + protected virtual void OnDeselected() => Hide(); + + protected virtual void OnSelected() => Show(); + // When not selected, input is only required for the blueprint itself to receive IsHovering protected override bool ShouldBeConsideredForInput(Drawable child) => State == SelectionState.Selected; diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index e1acaa34cb..5d1c4eeeae 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -70,6 +70,8 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline private class TimelineHitObjectRepresentation : SelectionBlueprint { + private Circle circle; + public const float THICKNESS = 3; public TimelineHitObjectRepresentation(HitObject hitObject) @@ -104,7 +106,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline }); } - AddInternal(new Circle + AddInternal(circle = new Circle { Size = new Vector2(16), Anchor = Anchor.CentreLeft, @@ -116,6 +118,10 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline BorderThickness = THICKNESS, }); } + + protected override void OnSelected() => circle.BorderColour = Color4.Orange; + + protected override void OnDeselected() => circle.BorderColour = Color4.Black; } } }