-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #29415 from Joehuu/difficulty-name-content
Implement song select v2 difficulty name content component
- Loading branch information
Showing
8 changed files
with
253 additions
and
39 deletions.
There are no files selected for viewing
67 changes: 67 additions & 0 deletions
67
osu.Game.Tests/Visual/SongSelectV2/SongSelectComponentsTestScene.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
// 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. | ||
|
||
using osu.Framework.Allocation; | ||
using osu.Framework.Graphics; | ||
using osu.Framework.Graphics.Containers; | ||
using osu.Framework.Graphics.Shapes; | ||
using osu.Framework.Testing; | ||
using osu.Game.Overlays; | ||
|
||
namespace osu.Game.Tests.Visual.SongSelectV2 | ||
{ | ||
public abstract partial class SongSelectComponentsTestScene : OsuTestScene | ||
{ | ||
[Cached] | ||
protected readonly OverlayColourProvider ColourProvider = new OverlayColourProvider(OverlayColourScheme.Aquamarine); | ||
|
||
protected override Container<Drawable> Content { get; } = new Container | ||
{ | ||
RelativeSizeAxes = Axes.X, | ||
AutoSizeAxes = Axes.Y, | ||
Padding = new MarginPadding(10), | ||
}; | ||
|
||
private Container? resizeContainer; | ||
private float relativeWidth; | ||
|
||
[BackgroundDependencyLoader] | ||
private void load() | ||
{ | ||
base.Content.Child = resizeContainer = new Container | ||
{ | ||
RelativeSizeAxes = Axes.X, | ||
AutoSizeAxes = Axes.Y, | ||
Padding = new MarginPadding(10), | ||
Width = relativeWidth, | ||
Children = new Drawable[] | ||
{ | ||
new Box | ||
{ | ||
RelativeSizeAxes = Axes.Both, | ||
Colour = ColourProvider.Background5, | ||
}, | ||
Content | ||
} | ||
}; | ||
|
||
AddSliderStep("change relative width", 0, 1f, 1f, v => | ||
{ | ||
if (resizeContainer != null) | ||
resizeContainer.Width = v; | ||
relativeWidth = v; | ||
}); | ||
} | ||
|
||
[SetUpSteps] | ||
public virtual void SetUpSteps() | ||
{ | ||
AddStep("reset dependencies", () => | ||
{ | ||
Beatmap.SetDefault(); | ||
SelectedMods.SetDefault(); | ||
}); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
44 changes: 44 additions & 0 deletions
44
osu.Game.Tests/Visual/SongSelectV2/TestSceneDifficultyNameContent.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
// 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. | ||
|
||
using System.Linq; | ||
using NUnit.Framework; | ||
using osu.Framework.Localisation; | ||
using osu.Framework.Testing; | ||
using osu.Game.Beatmaps; | ||
using osu.Game.Graphics.Containers; | ||
using osu.Game.Graphics.Sprites; | ||
using osu.Game.Screens.SelectV2.Wedge; | ||
|
||
namespace osu.Game.Tests.Visual.SongSelectV2 | ||
{ | ||
public partial class TestSceneDifficultyNameContent : SongSelectComponentsTestScene | ||
{ | ||
private DifficultyNameContent? difficultyNameContent; | ||
|
||
[Test] | ||
public void TestLocalBeatmap() | ||
{ | ||
AddStep("set component", () => Child = difficultyNameContent = new LocalDifficultyNameContent()); | ||
|
||
AddAssert("difficulty name is not set", () => LocalisableString.IsNullOrEmpty(difficultyNameContent.ChildrenOfType<TruncatingSpriteText>().Single().Text)); | ||
AddAssert("author is not set", () => LocalisableString.IsNullOrEmpty(difficultyNameContent.ChildrenOfType<OsuHoverContainer>().Single().ChildrenOfType<OsuSpriteText>().Single().Text)); | ||
|
||
AddStep("set beatmap", () => Beatmap.Value = CreateWorkingBeatmap(new Beatmap | ||
{ | ||
BeatmapInfo = new BeatmapInfo | ||
{ | ||
DifficultyName = "really long difficulty name that gets truncated", | ||
Metadata = new BeatmapMetadata | ||
{ | ||
Author = { Username = "really long username that is autosized" }, | ||
}, | ||
OnlineID = 1, | ||
} | ||
})); | ||
|
||
AddAssert("difficulty name is set", () => !LocalisableString.IsNullOrEmpty(difficultyNameContent.ChildrenOfType<TruncatingSpriteText>().Single().Text)); | ||
AddAssert("author is set", () => !LocalisableString.IsNullOrEmpty(difficultyNameContent.ChildrenOfType<OsuHoverContainer>().Single().ChildrenOfType<OsuSpriteText>().Single().Text)); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
// 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. | ||
|
||
using System; | ||
using osu.Framework.Allocation; | ||
using osu.Framework.Graphics; | ||
using osu.Framework.Graphics.Containers; | ||
using osu.Game.Graphics; | ||
using osu.Game.Graphics.Containers; | ||
using osu.Game.Graphics.Sprites; | ||
using osu.Game.Localisation; | ||
using osu.Game.Overlays; | ||
|
||
namespace osu.Game.Screens.SelectV2.Wedge | ||
{ | ||
public abstract partial class DifficultyNameContent : CompositeDrawable | ||
{ | ||
protected OsuSpriteText DifficultyName = null!; | ||
private OsuSpriteText mappedByLabel = null!; | ||
protected OsuHoverContainer MapperLink = null!; | ||
protected OsuSpriteText MapperName = null!; | ||
|
||
protected DifficultyNameContent() | ||
{ | ||
RelativeSizeAxes = Axes.X; | ||
AutoSizeAxes = Axes.Y; | ||
} | ||
|
||
[BackgroundDependencyLoader] | ||
private void load() | ||
{ | ||
InternalChild = new FillFlowContainer | ||
{ | ||
RelativeSizeAxes = Axes.X, | ||
AutoSizeAxes = Axes.Y, | ||
Direction = FillDirection.Horizontal, | ||
Children = new Drawable[] | ||
{ | ||
DifficultyName = new TruncatingSpriteText | ||
{ | ||
Anchor = Anchor.BottomLeft, | ||
Origin = Anchor.BottomLeft, | ||
Font = OsuFont.GetFont(weight: FontWeight.SemiBold), | ||
}, | ||
mappedByLabel = new OsuSpriteText | ||
{ | ||
Anchor = Anchor.BottomLeft, | ||
Origin = Anchor.BottomLeft, | ||
// TODO: better null display? beatmap carousel panels also just show this text currently. | ||
Text = " mapped by ", | ||
Font = OsuFont.GetFont(size: 14), | ||
}, | ||
// This is not a `LinkFlowContainer` as there are single-frame layout issues when Update() | ||
// is being used for layout, see https://github.com/ppy/osu-framework/issues/3369. | ||
MapperLink = new MapperLinkContainer | ||
{ | ||
Anchor = Anchor.BottomLeft, | ||
Origin = Anchor.BottomLeft, | ||
AutoSizeAxes = Axes.Both, | ||
Child = MapperName = new OsuSpriteText | ||
{ | ||
Font = OsuFont.GetFont(weight: FontWeight.SemiBold, size: 14), | ||
} | ||
}, | ||
} | ||
}; | ||
} | ||
|
||
protected override void Update() | ||
{ | ||
base.Update(); | ||
|
||
// truncate difficulty name when width exceeds bounds, prioritizing mapper name display | ||
DifficultyName.MaxWidth = Math.Max(DrawWidth - mappedByLabel.DrawWidth | ||
- MapperName.DrawWidth, 0); | ||
} | ||
|
||
private partial class MapperLinkContainer : OsuHoverContainer | ||
{ | ||
[BackgroundDependencyLoader] | ||
private void load(OverlayColourProvider? overlayColourProvider, OsuColour colours) | ||
{ | ||
TooltipText = ContextMenuStrings.ViewProfile; | ||
IdleColour = overlayColourProvider?.Light2 ?? colours.Blue; | ||
} | ||
} | ||
} | ||
} |
Oops, something went wrong.