From bdd6f3af991cea1333a0de4876e3d8d2aa20c2b9 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 17 Feb 2020 16:09:31 +0900 Subject: [PATCH] Show skinnable test skin names and autosized component sizes --- osu.Game/Tests/Visual/SkinnableTestScene.cs | 83 +++++++++++++++++++-- 1 file changed, 75 insertions(+), 8 deletions(-) diff --git a/osu.Game/Tests/Visual/SkinnableTestScene.cs b/osu.Game/Tests/Visual/SkinnableTestScene.cs index c149ecd33f..90f719998e 100644 --- a/osu.Game/Tests/Visual/SkinnableTestScene.cs +++ b/osu.Game/Tests/Visual/SkinnableTestScene.cs @@ -7,9 +7,13 @@ using osu.Framework.Allocation; using osu.Framework.Audio; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Textures; using osu.Framework.IO.Stores; +using osu.Game.Graphics.Sprites; using osu.Game.Skinning; +using osuTK; +using osuTK.Graphics; namespace osu.Game.Tests.Visual { @@ -30,10 +34,10 @@ namespace osu.Game.Tests.Visual { var dllStore = new DllResourceStore(GetType().Assembly); - metricsSkin = new TestLegacySkin(new SkinInfo(), new NamespacedResourceStore(dllStore, "Resources/metrics_skin"), audio, true); + metricsSkin = new TestLegacySkin(new SkinInfo { Name = "metrics-skin" }, new NamespacedResourceStore(dllStore, "Resources/metrics_skin"), audio, true); defaultSkin = skinManager.GetSkin(DefaultLegacySkin.Info); - specialSkin = new TestLegacySkin(new SkinInfo(), new NamespacedResourceStore(dllStore, "Resources/special_skin"), audio, true); - oldSkin = new TestLegacySkin(new SkinInfo(), new NamespacedResourceStore(dllStore, "Resources/old_skin"), audio, true); + specialSkin = new TestLegacySkin(new SkinInfo { Name = "special-skin" }, new NamespacedResourceStore(dllStore, "Resources/special_skin"), audio, true); + oldSkin = new TestLegacySkin(new SkinInfo { Name = "old-skin" }, new NamespacedResourceStore(dllStore, "Resources/old_skin"), audio, true); } public void SetContents(Func creationFunction) @@ -47,13 +51,76 @@ namespace osu.Game.Tests.Visual private Drawable createProvider(Skin skin, Func creationFunction) { - var mainProvider = new SkinProvidingContainer(skin); + var created = creationFunction(); + var autoSize = created.RelativeSizeAxes == Axes.None; - return mainProvider - .WithChild(new SkinProvidingContainer(Ruleset.Value.CreateInstance().CreateLegacySkinProvider(mainProvider)) + var mainProvider = new SkinProvidingContainer(skin) + { + RelativeSizeAxes = !autoSize ? Axes.Both : Axes.None, + AutoSizeAxes = autoSize ? Axes.Both : Axes.None, + }; + + return new Container + { + RelativeSizeAxes = Axes.Both, + BorderColour = Color4.White, + BorderThickness = 5, + Masking = true, + + Children = new Drawable[] { - Child = creationFunction() - }); + new Box + { + AlwaysPresent = true, + Alpha = 0, + RelativeSizeAxes = Axes.Both, + }, + new OsuSpriteText + { + Text = skin?.SkinInfo?.Name ?? "none", + Scale = new Vector2(1.5f), + Padding = new MarginPadding(5), + }, + new Container + { + RelativeSizeAxes = !autoSize ? Axes.Both : Axes.None, + AutoSizeAxes = autoSize ? Axes.Both : Axes.None, + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Children = new Drawable[] + { + new OutlineBox { Alpha = autoSize ? 1 : 0 }, + mainProvider.WithChild( + new SkinProvidingContainer(Ruleset.Value.CreateInstance().CreateLegacySkinProvider(mainProvider)) + { + Child = created, + RelativeSizeAxes = !autoSize ? Axes.Both : Axes.None, + AutoSizeAxes = autoSize ? Axes.Both : Axes.None, + } + ) + } + }, + } + }; + } + + private class OutlineBox : CompositeDrawable + { + public OutlineBox() + { + BorderColour = Color4.IndianRed; + BorderThickness = 5; + Masking = true; + RelativeSizeAxes = Axes.Both; + + InternalChild = new Box + { + RelativeSizeAxes = Axes.Both, + Alpha = 0, + Colour = Color4.Brown, + AlwaysPresent = true + }; + } } private class TestLegacySkin : LegacySkin