1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-15 14:37:30 +08:00
osu-lazer/osu.Game.Tests/Visual/UserInterface/TestSceneOsuIcon.cs

83 lines
2.6 KiB
C#
Raw Normal View History

2019-03-27 20:44:13 +08:00
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
2022-06-17 15:37:17 +08:00
#nullable disable
using System.Diagnostics;
2019-03-27 20:44:13 +08:00
using System.Reflection;
using NUnit.Framework;
using osu.Framework.Extensions.IEnumerableExtensions;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Cursor;
using osu.Framework.Graphics.Shapes;
using osu.Framework.Graphics.Sprites;
using osu.Framework.Localisation;
2019-03-27 20:44:13 +08:00
using osu.Game.Graphics;
using osu.Game.Graphics.Containers;
2019-03-27 20:44:13 +08:00
using osuTK;
using osuTK.Graphics;
namespace osu.Game.Tests.Visual.UserInterface
{
[TestFixture]
2022-11-24 13:32:20 +08:00
public partial class TestSceneOsuIcon : OsuTestScene
2019-03-27 20:44:13 +08:00
{
public TestSceneOsuIcon()
2019-03-27 20:44:13 +08:00
{
FillFlowContainer<Icon> flow;
AddRange(new Drawable[]
{
new Box
{
Colour = Color4.Teal,
RelativeSizeAxes = Axes.Both,
},
new OsuScrollContainer
2019-03-27 20:44:13 +08:00
{
RelativeSizeAxes = Axes.Both,
Child = flow = new FillFlowContainer<Icon>
{
Anchor = Anchor.TopRight,
Origin = Anchor.TopRight,
RelativeSizeAxes = Axes.X,
AutoSizeAxes = Axes.Y,
Direction = FillDirection.Full,
},
}
});
foreach (var p in typeof(OsuIcon).GetProperties(BindingFlags.Public | BindingFlags.Static))
{
object propValue = p.GetValue(null);
Debug.Assert(propValue != null);
flow.Add(new Icon($"{nameof(OsuIcon)}.{p.Name}", (IconUsage)propValue));
}
2019-03-27 20:44:13 +08:00
AddStep("toggle shadows", () => flow.Children.ForEach(i => i.SpriteIcon.Shadow = !i.SpriteIcon.Shadow));
AddStep("change icons", () => flow.Children.ForEach(i => i.SpriteIcon.Icon = new IconUsage((char)(i.SpriteIcon.Icon.Icon + 1))));
}
2022-11-24 13:32:20 +08:00
private partial class Icon : Container, IHasTooltip
2019-03-27 20:44:13 +08:00
{
public LocalisableString TooltipText { get; }
2019-03-27 20:44:13 +08:00
public SpriteIcon SpriteIcon { get; }
public Icon(string name, IconUsage icon)
{
TooltipText = name;
AutoSizeAxes = Axes.Both;
Child = SpriteIcon = new SpriteIcon
{
Icon = icon,
Size = new Vector2(60),
};
}
}
}
}