1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-14 14:03:21 +08:00

Merge pull request #18132 from bdach/mod-overlay/back-button

Add local back button to new mod select design
This commit is contained in:
Salman Ahmed 2022-05-07 14:27:18 +03:00 committed by GitHub
commit 6326216a6a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 42 additions and 10 deletions

View File

@ -62,7 +62,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
AddStep("click select all button", () => AddStep("click select all button", () =>
{ {
InputManager.MoveMouseTo(this.ChildrenOfType<ShearedButton>().First()); InputManager.MoveMouseTo(this.ChildrenOfType<ShearedButton>().ElementAt(1));
InputManager.Click(MouseButton.Left); InputManager.Click(MouseButton.Left);
}); });
AddUntilStep("all mods selected", assertAllAvailableModsSelected); AddUntilStep("all mods selected", assertAllAvailableModsSelected);

View File

@ -432,6 +432,25 @@ namespace osu.Game.Tests.Visual.UserInterface
AddUntilStep("all mods deselected", () => !SelectedMods.Value.Any()); AddUntilStep("all mods deselected", () => !SelectedMods.Value.Any());
} }
[Test]
public void TestCloseViaBackButton()
{
createScreen();
changeRuleset(0);
AddStep("select difficulty adjust", () => SelectedMods.Value = new Mod[] { new OsuModDifficultyAdjust() });
assertCustomisationToggleState(disabled: false, active: true);
AddAssert("back button disabled", () => !this.ChildrenOfType<ShearedButton>().First().Enabled.Value);
AddStep("dismiss customisation area", () => InputManager.Key(Key.Escape));
AddStep("click back button", () =>
{
InputManager.MoveMouseTo(this.ChildrenOfType<ShearedButton>().First());
InputManager.Click(MouseButton.Left);
});
AddAssert("mod select hidden", () => modSelectScreen.State.Value == Visibility.Hidden);
}
private void waitForColumnLoad() => AddUntilStep("all column content loaded", private void waitForColumnLoad() => AddUntilStep("all column content loaded",
() => modSelectScreen.ChildrenOfType<ModColumn>().Any() && modSelectScreen.ChildrenOfType<ModColumn>().All(column => column.IsLoaded && column.ItemsLoaded)); () => modSelectScreen.ChildrenOfType<ModColumn>().Any() && modSelectScreen.ChildrenOfType<ModColumn>().All(column => column.IsLoaded && column.ItemsLoaded));

View File

@ -29,6 +29,8 @@ namespace osu.Game.Overlays.Mods
{ {
public abstract class ModSelectScreen : ShearedOverlayContainer public abstract class ModSelectScreen : ShearedOverlayContainer
{ {
protected const int BUTTON_WIDTH = 200;
protected override OverlayColourScheme ColourScheme => OverlayColourScheme.Green; protected override OverlayColourScheme ColourScheme => OverlayColourScheme.Green;
[Cached] [Cached]
@ -57,12 +59,12 @@ namespace osu.Game.Overlays.Mods
protected virtual IEnumerable<ShearedButton> CreateFooterButtons() => new[] protected virtual IEnumerable<ShearedButton> CreateFooterButtons() => new[]
{ {
customisationButton = new ShearedToggleButton(200) customisationButton = new ShearedToggleButton(BUTTON_WIDTH)
{ {
Text = ModSelectScreenStrings.ModCustomisation, Text = ModSelectScreenStrings.ModCustomisation,
Active = { BindTarget = customisationVisible } Active = { BindTarget = customisationVisible }
}, },
new ShearedButton(200) new ShearedButton(BUTTON_WIDTH)
{ {
Text = CommonStrings.DeselectAll, Text = CommonStrings.DeselectAll,
Action = DeselectAll Action = DeselectAll
@ -75,11 +77,13 @@ namespace osu.Game.Overlays.Mods
private ModSettingsArea modSettingsArea = null!; private ModSettingsArea modSettingsArea = null!;
private ColumnScrollContainer columnScroll = null!; private ColumnScrollContainer columnScroll = null!;
private ColumnFlowContainer columnFlow = null!; private ColumnFlowContainer columnFlow = null!;
private ShearedToggleButton? customisationButton;
private FillFlowContainer<ShearedButton> footerButtonFlow = null!; private FillFlowContainer<ShearedButton> footerButtonFlow = null!;
private ShearedButton backButton = null!;
private ShearedToggleButton? customisationButton;
[BackgroundDependencyLoader] [BackgroundDependencyLoader]
private void load() private void load(OsuColour colours)
{ {
Header.Title = ModSelectScreenStrings.ModSelectTitle; Header.Title = ModSelectScreenStrings.ModSelectTitle;
Header.Description = ModSelectScreenStrings.ModSelectDescription; Header.Description = ModSelectScreenStrings.ModSelectDescription;
@ -171,7 +175,13 @@ namespace osu.Game.Overlays.Mods
Horizontal = 70 Horizontal = 70
}, },
Spacing = new Vector2(10), Spacing = new Vector2(10),
ChildrenEnumerable = CreateFooterButtons() ChildrenEnumerable = CreateFooterButtons().Prepend(backButton = new ShearedButton(BUTTON_WIDTH)
{
Text = CommonStrings.Back,
Action = Hide,
DarkerColour = colours.Pink2,
LighterColour = colours.Pink1
})
}; };
} }
@ -356,9 +366,12 @@ namespace osu.Game.Overlays.Mods
public override bool OnPressed(KeyBindingPressEvent<GlobalAction> e) public override bool OnPressed(KeyBindingPressEvent<GlobalAction> e)
{ {
if (e.Action == GlobalAction.Back && customisationVisible.Value) if (e.Action == GlobalAction.Back)
{ {
customisationVisible.Value = false; if (customisationVisible.Value)
customisationVisible.Value = false;
else
backButton.TriggerClick();
return true; return true;
} }

View File

@ -31,14 +31,14 @@ namespace osu.Game.Screens.OnlinePlay
protected override IEnumerable<ShearedButton> CreateFooterButtons() => new[] protected override IEnumerable<ShearedButton> CreateFooterButtons() => new[]
{ {
new ShearedButton(200) new ShearedButton(BUTTON_WIDTH)
{ {
Anchor = Anchor.BottomLeft, Anchor = Anchor.BottomLeft,
Origin = Anchor.BottomLeft, Origin = Anchor.BottomLeft,
Text = CommonStrings.SelectAll, Text = CommonStrings.SelectAll,
Action = SelectAll Action = SelectAll
}, },
new ShearedButton(200) new ShearedButton(BUTTON_WIDTH)
{ {
Anchor = Anchor.BottomLeft, Anchor = Anchor.BottomLeft,
Origin = Anchor.BottomLeft, Origin = Anchor.BottomLeft,