Skip to content

Commit

Permalink
Merge branch 'master' into glow
Browse files Browse the repository at this point in the history
  • Loading branch information
peppy committed May 12, 2024
2 parents 5e8f6df + 147ebb6 commit 5a362be
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 67 deletions.
5 changes: 5 additions & 0 deletions osu.Game/Database/EmptyRealmSet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using System.Collections.Generic;
using System.Collections.Specialized;
using System.ComponentModel;
using JetBrains.Annotations;
using Realms;
using Realms.Schema;

Expand All @@ -15,8 +16,12 @@ public class EmptyRealmSet<T> : IRealmCollection<T>
{
private IList<T> emptySet => Array.Empty<T>();

[MustDisposeResource]
public IEnumerator<T> GetEnumerator() => emptySet.GetEnumerator();

[MustDisposeResource]
IEnumerator IEnumerable.GetEnumerator() => emptySet.GetEnumerator();

public int Count => emptySet.Count;
public T this[int index] => emptySet[index];
public int IndexOf(object? item) => item == null ? -1 : emptySet.IndexOf((T)item);
Expand Down
4 changes: 1 addition & 3 deletions osu.Game/Screens/Select/FooterV2/BeatmapOptionsPopover.cs
Original file line number Diff line number Diff line change
Expand Up @@ -188,9 +188,7 @@ protected override bool OnKeyDown(KeyDownEvent e)
protected override void UpdateState(ValueChangedEvent<Visibility> state)
{
base.UpdateState(state);

if (state.NewValue == Visibility.Hidden)
footerButton.IsActive.Value = false;
footerButton.OverlayState.Value = state.NewValue;
}
}
}
30 changes: 1 addition & 29 deletions osu.Game/Screens/Select/FooterV2/FooterButtonOptionsV2.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@
// See the LICENCE file in the repository root for full licence text.

using osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Framework.Extensions;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Cursor;
using osu.Framework.Graphics.Sprites;
using osu.Framework.Graphics.UserInterface;
Expand All @@ -15,8 +13,6 @@ namespace osu.Game.Screens.Select.FooterV2
{
public partial class FooterButtonOptionsV2 : FooterButtonV2, IHasPopover
{
public readonly BindableBool IsActive = new BindableBool();

[BackgroundDependencyLoader]
private void load(OsuColour colour)
{
Expand All @@ -25,31 +21,7 @@ private void load(OsuColour colour)
AccentColour = colour.Purple1;
Hotkey = GlobalAction.ToggleBeatmapOptions;

Action = () => IsActive.Toggle();
}

protected override void LoadComplete()
{
base.LoadComplete();

IsActive.BindValueChanged(active =>
{
OverlayState.Value = active.NewValue ? Visibility.Visible : Visibility.Hidden;
});

OverlayState.BindValueChanged(state =>
{
switch (state.NewValue)
{
case Visibility.Hidden:
this.HidePopover();
break;
case Visibility.Visible:
this.ShowPopover();
break;
}
});
Action = this.ShowPopover;
}

public Popover GetPopover() => new BeatmapOptionsPopover(this);
Expand Down
67 changes: 32 additions & 35 deletions osu.Game/Screens/Select/FooterV2/FooterButtonV2.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@ namespace osu.Game.Screens.Select.FooterV2
{
public partial class FooterButtonV2 : OsuClickableContainer, IKeyBindingHandler<GlobalAction>
{
private const int transition_length = 500;

// This should be 12 by design, but an extra allowance is added due to the corner radius specification.
private const float shear_width = 13.5f;

Expand Down Expand Up @@ -70,6 +68,7 @@ protected LocalisableString Text
private readonly Box bar;
private readonly Box backgroundBox;
private readonly Box glowBox;
private readonly Box flashLayer;

public FooterButtonV2()
{
Expand Down Expand Up @@ -143,8 +142,15 @@ public FooterButtonV2()
{
RelativeSizeAxes = Axes.Both,
}
}
}
},
flashLayer = new Box
{
RelativeSizeAxes = Axes.Both,
Colour = Colour4.White.Opacity(0.9f),
Blending = BlendingParameters.Additive,
Alpha = 0,
},
},
};
}

Expand All @@ -160,26 +166,20 @@ protected override void LoadComplete()

public GlobalAction? Hotkey;

private bool handlingMouse;

protected override bool OnHover(HoverEvent e)
protected override bool OnClick(ClickEvent e)
{
updateDisplay();
return true;
}
if (Enabled.Value)
Flash();

protected override bool OnMouseDown(MouseDownEvent e)
{
handlingMouse = true;
updateDisplay();
return base.OnMouseDown(e);
return base.OnClick(e);
}

protected override void OnMouseUp(MouseUpEvent e)
protected virtual void Flash() => flashLayer.FadeOutFromOne(800, Easing.OutQuint);

protected override bool OnHover(HoverEvent e)
{
handlingMouse = false;
updateDisplay();
base.OnMouseUp(e);
return true;
}

protected override void OnHoverLost(HoverLostEvent e) => updateDisplay();
Expand All @@ -196,28 +196,25 @@ public virtual void OnReleased(KeyBindingReleaseEvent<GlobalAction> e) { }

private void updateDisplay()
{
Color4 backgroundColour = colourProvider.Background3;
Color4 backgroundColour = OverlayState.Value == Visibility.Visible ? buttonAccentColour : colourProvider.Background3;
Color4 textColour = OverlayState.Value == Visibility.Visible ? colourProvider.Background6 : colourProvider.Content1;
Color4 accentColour = OverlayState.Value == Visibility.Visible ? colourProvider.Background6 : buttonAccentColour;

if (!Enabled.Value)
{
backgroundColour = colourProvider.Background3.Darken(0.4f);
}
else
{
if (OverlayState.Value == Visibility.Visible)
backgroundColour = buttonAccentColour.Darken(0.5f);
backgroundColour = backgroundColour.Darken(1f);
else if (IsHovered)
backgroundColour = backgroundColour.Lighten(0.2f);

if (IsHovered)
{
backgroundColour = backgroundColour.Lighten(0.3f);
backgroundBox.FadeColour(backgroundColour, 150, Easing.OutQuint);

if (handlingMouse)
backgroundColour = backgroundColour.Lighten(0.3f);
}
}
if (!Enabled.Value)
textColour = textColour.Opacity(0.6f);

text.FadeColour(textColour, 150, Easing.OutQuint);
icon.FadeColour(accentColour, 150, Easing.OutQuint);
bar.FadeColour(accentColour, 150, Easing.OutQuint);

backgroundBox.FadeColour(backgroundColour, transition_length, Easing.OutQuint);
glowBox.Colour = ColourInfo.GradientVertical(buttonAccentColour.Opacity(0f), buttonAccentColour.Opacity(0.2f));
glowBox.FadeColour(ColourInfo.GradientVertical(buttonAccentColour.Opacity(0f), buttonAccentColour.Opacity(0.2f)), 150, Easing.OutQuint);
}
}
}

0 comments on commit 5a362be

Please sign in to comment.