mirror of
https://github.com/ppy/osu.git
synced 2025-01-12 17:23:22 +08:00
Allow specifying height of ShearedButton
s
Also includes a test case in `TestSceneShearedButton`s to ensure the buttons' shear factors don't change on different heights (I've encountered issues with that previously).
This commit is contained in:
parent
21f5d891bb
commit
e3afd89dc8
@ -7,11 +7,13 @@ using System.Linq;
|
|||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Framework.Utils;
|
using osu.Framework.Utils;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
|
using osuTK;
|
||||||
using osuTK.Input;
|
using osuTK.Input;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.UserInterface
|
namespace osu.Game.Tests.Visual.UserInterface
|
||||||
@ -35,7 +37,7 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
|
|
||||||
if (bigButton)
|
if (bigButton)
|
||||||
{
|
{
|
||||||
Child = button = new ShearedButton(400)
|
Child = button = new ShearedButton(400, 80)
|
||||||
{
|
{
|
||||||
LighterColour = Colour4.FromHex("#FFFFFF"),
|
LighterColour = Colour4.FromHex("#FFFFFF"),
|
||||||
DarkerColour = Colour4.FromHex("#FFCC22"),
|
DarkerColour = Colour4.FromHex("#FFCC22"),
|
||||||
@ -44,13 +46,12 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
Anchor = Anchor.Centre,
|
Anchor = Anchor.Centre,
|
||||||
Origin = Anchor.Centre,
|
Origin = Anchor.Centre,
|
||||||
Text = "Let's GO!",
|
Text = "Let's GO!",
|
||||||
Height = 80,
|
|
||||||
Action = () => actionFired = true,
|
Action = () => actionFired = true,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Child = button = new ShearedButton(200)
|
Child = button = new ShearedButton(200, 80)
|
||||||
{
|
{
|
||||||
LighterColour = Colour4.FromHex("#FF86DD"),
|
LighterColour = Colour4.FromHex("#FF86DD"),
|
||||||
DarkerColour = Colour4.FromHex("#DE31AE"),
|
DarkerColour = Colour4.FromHex("#DE31AE"),
|
||||||
@ -58,7 +59,6 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
Anchor = Anchor.Centre,
|
Anchor = Anchor.Centre,
|
||||||
Origin = Anchor.Centre,
|
Origin = Anchor.Centre,
|
||||||
Text = "Press me",
|
Text = "Press me",
|
||||||
Height = 80,
|
|
||||||
Action = () => actionFired = true,
|
Action = () => actionFired = true,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -171,5 +171,48 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
|
|
||||||
void setToggleDisabledState(bool disabled) => AddStep($"{(disabled ? "disable" : "enable")} toggle", () => button.Active.Disabled = disabled);
|
void setToggleDisabledState(bool disabled) => AddStep($"{(disabled ? "disable" : "enable")} toggle", () => button.Active.Disabled = disabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestButtons()
|
||||||
|
{
|
||||||
|
AddStep("create buttons", () => Children = new[]
|
||||||
|
{
|
||||||
|
new FillFlowContainer
|
||||||
|
{
|
||||||
|
Anchor = Anchor.Centre,
|
||||||
|
Origin = Anchor.Centre,
|
||||||
|
Direction = FillDirection.Horizontal,
|
||||||
|
AutoSizeAxes = Axes.Both,
|
||||||
|
Scale = new Vector2(2.5f),
|
||||||
|
Children = new Drawable[]
|
||||||
|
{
|
||||||
|
new ShearedButton(120)
|
||||||
|
{
|
||||||
|
Anchor = Anchor.BottomLeft,
|
||||||
|
Origin = Anchor.BottomLeft,
|
||||||
|
Text = "Test",
|
||||||
|
Action = () => { },
|
||||||
|
Padding = new MarginPadding(),
|
||||||
|
},
|
||||||
|
new ShearedButton(120, 40)
|
||||||
|
{
|
||||||
|
Anchor = Anchor.BottomLeft,
|
||||||
|
Origin = Anchor.BottomLeft,
|
||||||
|
Text = "Test",
|
||||||
|
Action = () => { },
|
||||||
|
Padding = new MarginPadding { Left = -1f },
|
||||||
|
},
|
||||||
|
new ShearedButton(120, 70)
|
||||||
|
{
|
||||||
|
Anchor = Anchor.BottomLeft,
|
||||||
|
Origin = Anchor.BottomLeft,
|
||||||
|
Text = "Test",
|
||||||
|
Action = () => { },
|
||||||
|
Padding = new MarginPadding { Left = 3f },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
{
|
{
|
||||||
public partial class ShearedButton : OsuClickableContainer
|
public partial class ShearedButton : OsuClickableContainer
|
||||||
{
|
{
|
||||||
public const float HEIGHT = 50;
|
public const float DEFAULT_HEIGHT = 50;
|
||||||
public const float CORNER_RADIUS = 7;
|
public const float CORNER_RADIUS = 7;
|
||||||
public const float BORDER_THICKNESS = 2;
|
public const float BORDER_THICKNESS = 2;
|
||||||
|
|
||||||
@ -85,10 +85,11 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
/// <item>If a <see langword="null"/> value is provided (or the argument is omitted entirely), the button will autosize in width to fit the text.</item>
|
/// <item>If a <see langword="null"/> value is provided (or the argument is omitted entirely), the button will autosize in width to fit the text.</item>
|
||||||
/// </list>
|
/// </list>
|
||||||
/// </param>
|
/// </param>
|
||||||
public ShearedButton(float? width = null)
|
/// <param name="height">The height of the button.</param>
|
||||||
|
public ShearedButton(float? width = null, float height = DEFAULT_HEIGHT)
|
||||||
{
|
{
|
||||||
Height = HEIGHT;
|
Height = height;
|
||||||
Padding = new MarginPadding { Horizontal = shear * 50 };
|
Padding = new MarginPadding { Horizontal = shear * height };
|
||||||
|
|
||||||
Content.CornerRadius = CORNER_RADIUS;
|
Content.CornerRadius = CORNER_RADIUS;
|
||||||
Content.Shear = new Vector2(shear, 0);
|
Content.Shear = new Vector2(shear, 0);
|
||||||
|
@ -36,7 +36,7 @@ namespace osu.Game.Overlays.Mods
|
|||||||
Origin = Anchor.BottomRight,
|
Origin = Anchor.BottomRight,
|
||||||
Anchor = Anchor.BottomRight,
|
Anchor = Anchor.BottomRight,
|
||||||
AutoSizeAxes = Axes.X,
|
AutoSizeAxes = Axes.X,
|
||||||
Height = ShearedButton.HEIGHT,
|
Height = ShearedButton.DEFAULT_HEIGHT,
|
||||||
Shear = new Vector2(ShearedOverlayContainer.SHEAR, 0),
|
Shear = new Vector2(ShearedOverlayContainer.SHEAR, 0),
|
||||||
CornerRadius = ShearedButton.CORNER_RADIUS,
|
CornerRadius = ShearedButton.CORNER_RADIUS,
|
||||||
BorderThickness = ShearedButton.BORDER_THICKNESS,
|
BorderThickness = ShearedButton.BORDER_THICKNESS,
|
||||||
|
Loading…
Reference in New Issue
Block a user