From 036f155afe755d961c99fa891cc3b9095b733cf6 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Fri, 28 Feb 2020 21:09:31 +0100 Subject: [PATCH 01/52] Adjust colours in DrawableMostPlayedBeatmap --- .../Historical/DrawableMostPlayedBeatmap.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/Historical/DrawableMostPlayedBeatmap.cs b/osu.Game/Overlays/Profile/Sections/Historical/DrawableMostPlayedBeatmap.cs index e75ad2f161..dc8492562a 100644 --- a/osu.Game/Overlays/Profile/Sections/Historical/DrawableMostPlayedBeatmap.cs +++ b/osu.Game/Overlays/Profile/Sections/Historical/DrawableMostPlayedBeatmap.cs @@ -37,8 +37,10 @@ namespace osu.Game.Overlays.Profile.Sections.Historical } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OsuColour colours, OverlayColourProvider colourProvider) { + ProfileItemContainer container; + AddRangeInternal(new Drawable[] { new UpdateableBeatmapSetCover @@ -61,7 +63,7 @@ namespace osu.Game.Overlays.Profile.Sections.Historical CornerRadius = corner_radius, Children = new Drawable[] { - new ProfileItemContainer + container = new ProfileItemContainer { Child = new Container { @@ -78,11 +80,14 @@ namespace osu.Game.Overlays.Profile.Sections.Historical Children = new Drawable[] { new MostPlayedBeatmapMetadataContainer(beatmap), - new LinkFlowContainer(t => t.Font = OsuFont.GetFont(size: 12, weight: FontWeight.Regular)) + new LinkFlowContainer(t => + { + t.Font = OsuFont.GetFont(size: 12, weight: FontWeight.Regular); + t.Colour = colourProvider.Foreground1; + }) { AutoSizeAxes = Axes.Both, Direction = FillDirection.Horizontal, - Colour = colours.GreySeafoamLighter }.With(d => { d.AddText("mapped by "); @@ -103,6 +108,9 @@ namespace osu.Game.Overlays.Profile.Sections.Historical } } }); + + container.IdleColour = colourProvider.Background4; + container.HoverColour = colourProvider.Background3; } private class MostPlayedBeatmapMetadataContainer : BeatmapMetadataContainer From 5838af39c1a20cc8bc1dc5fc6aab93c4dc82403f Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Fri, 28 Feb 2020 21:09:49 +0100 Subject: [PATCH 02/52] Add background colour customization to ProfileItemContainer --- .../Profile/Sections/ProfileItemContainer.cs | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs b/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs index f65c909155..a48f21f52b 100644 --- a/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs +++ b/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs @@ -16,12 +16,19 @@ namespace osu.Game.Overlays.Profile.Sections protected override Container Content => content; - private Color4 idleColour; - private Color4 hoverColour; - private readonly Box background; private readonly Container content; + private Color4 idleColour; + + public Color4 IdleColour + { + get => idleColour; + set => idleColour = background.Colour = value; + } + + public Color4 HoverColour { get; set; } + public ProfileItemContainer() { RelativeSizeAxes = Axes.Both; @@ -44,20 +51,20 @@ namespace osu.Game.Overlays.Profile.Sections [BackgroundDependencyLoader] private void load(OverlayColourProvider colourProvider) { - background.Colour = idleColour = colourProvider.Background3; - hoverColour = colourProvider.Background2; + IdleColour = colourProvider.Background3; + HoverColour = colourProvider.Background2; } protected override bool OnHover(HoverEvent e) { - background.FadeColour(hoverColour, hover_duration, Easing.OutQuint); + background.FadeColour(HoverColour, hover_duration, Easing.OutQuint); return base.OnHover(e); } protected override void OnHoverLost(HoverLostEvent e) { base.OnHoverLost(e); - background.FadeColour(idleColour, hover_duration, Easing.OutQuint); + background.FadeColour(IdleColour, hover_duration, Easing.OutQuint); } } } From 997be65be2329d3a3376f1ca16914622e767da0f Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 4 Mar 2020 21:19:26 +0100 Subject: [PATCH 03/52] Improve colouring logic --- .../Historical/DrawableMostPlayedBeatmap.cs | 17 +++++++++----- .../Profile/Sections/ProfileItemContainer.cs | 22 ++++++++++++++++--- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/Historical/DrawableMostPlayedBeatmap.cs b/osu.Game/Overlays/Profile/Sections/Historical/DrawableMostPlayedBeatmap.cs index dc8492562a..5b7c5efbe2 100644 --- a/osu.Game/Overlays/Profile/Sections/Historical/DrawableMostPlayedBeatmap.cs +++ b/osu.Game/Overlays/Profile/Sections/Historical/DrawableMostPlayedBeatmap.cs @@ -37,10 +37,8 @@ namespace osu.Game.Overlays.Profile.Sections.Historical } [BackgroundDependencyLoader] - private void load(OsuColour colours, OverlayColourProvider colourProvider) + private void load(OverlayColourProvider colourProvider) { - ProfileItemContainer container; - AddRangeInternal(new Drawable[] { new UpdateableBeatmapSetCover @@ -63,7 +61,7 @@ namespace osu.Game.Overlays.Profile.Sections.Historical CornerRadius = corner_radius, Children = new Drawable[] { - container = new ProfileItemContainer + new MostPlayedBeatmapContainer { Child = new Container { @@ -108,9 +106,16 @@ namespace osu.Game.Overlays.Profile.Sections.Historical } } }); + } - container.IdleColour = colourProvider.Background4; - container.HoverColour = colourProvider.Background3; + private class MostPlayedBeatmapContainer : ProfileItemContainer + { + [BackgroundDependencyLoader] + private void load(OverlayColourProvider colourProvider) + { + IdleColour = colourProvider.Background4; + HoverColour = colourProvider.Background3; + } } private class MostPlayedBeatmapMetadataContainer : BeatmapMetadataContainer diff --git a/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs b/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs index a48f21f52b..1ab9ed3f82 100644 --- a/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs +++ b/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs @@ -21,13 +21,29 @@ namespace osu.Game.Overlays.Profile.Sections private Color4 idleColour; - public Color4 IdleColour + protected Color4 IdleColour { get => idleColour; - set => idleColour = background.Colour = value; + set + { + idleColour = value; + if (!IsHovered) + background.Colour = value; + } } - public Color4 HoverColour { get; set; } + private Color4 hoverColour; + + protected Color4 HoverColour + { + get => hoverColour; + set + { + hoverColour = value; + if (IsHovered) + background.Colour = value; + } + } public ProfileItemContainer() { From bd1dbea6f4b35937777ef3f5b017d2bf787e35e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Thu, 5 Mar 2020 23:10:14 +0100 Subject: [PATCH 04/52] Centralise background colour updates --- .../Profile/Sections/ProfileItemContainer.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs b/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs index 1ab9ed3f82..c057ebe12b 100644 --- a/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs +++ b/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs @@ -27,8 +27,7 @@ namespace osu.Game.Overlays.Profile.Sections set { idleColour = value; - if (!IsHovered) - background.Colour = value; + fadeBackgroundColour(); } } @@ -40,8 +39,7 @@ namespace osu.Game.Overlays.Profile.Sections set { hoverColour = value; - if (IsHovered) - background.Colour = value; + fadeBackgroundColour(); } } @@ -73,14 +71,19 @@ namespace osu.Game.Overlays.Profile.Sections protected override bool OnHover(HoverEvent e) { - background.FadeColour(HoverColour, hover_duration, Easing.OutQuint); + fadeBackgroundColour(hover_duration); return base.OnHover(e); } protected override void OnHoverLost(HoverLostEvent e) { base.OnHoverLost(e); - background.FadeColour(IdleColour, hover_duration, Easing.OutQuint); + fadeBackgroundColour(hover_duration); + } + + private void fadeBackgroundColour(double fadeDuration = 0) + { + background.FadeColour(IsHovered ? HoverColour : IdleColour, fadeDuration, Easing.OutQuint); } } } From 5b0846cb69a2f5aca2da311d179169fc1c0f5deb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Thu, 5 Mar 2020 23:15:53 +0100 Subject: [PATCH 05/52] Handle hover explicitly --- osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs b/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs index c057ebe12b..afa6bd9f79 100644 --- a/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs +++ b/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs @@ -72,7 +72,7 @@ namespace osu.Game.Overlays.Profile.Sections protected override bool OnHover(HoverEvent e) { fadeBackgroundColour(hover_duration); - return base.OnHover(e); + return true; } protected override void OnHoverLost(HoverLostEvent e) From 3caffb81e187e2d546fba85640791004d12e3ad5 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Mar 2020 16:03:18 +0900 Subject: [PATCH 06/52] Add new element colours to TournamentGame --- osu.Game.Tournament/TournamentGame.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tournament/TournamentGame.cs b/osu.Game.Tournament/TournamentGame.cs index 608fc5f04a..6d597d5e7d 100644 --- a/osu.Game.Tournament/TournamentGame.cs +++ b/osu.Game.Tournament/TournamentGame.cs @@ -2,15 +2,25 @@ // See the LICENCE file in the repository root for full licence text. using osu.Framework.Graphics; +using osu.Framework.Graphics.Colour; +using osu.Game.Graphics; using osu.Game.Graphics.Cursor; +using osu.Game.Tournament.Models; using osuTK.Graphics; namespace osu.Game.Tournament { public class TournamentGame : TournamentGameBase { - public static readonly Color4 COLOUR_RED = new Color4(144, 0, 0, 255); - public static readonly Color4 COLOUR_BLUE = new Color4(0, 84, 144, 255); + public static ColourInfo GetTeamColour(TeamColour teamColour) => teamColour == TeamColour.Red ? COLOUR_RED : COLOUR_BLUE; + + public static readonly Color4 COLOUR_RED = OsuColour.FromHex("#AA1414"); + public static readonly Color4 COLOUR_BLUE = OsuColour.FromHex("#1462AA"); + + public static readonly Color4 ELEMENT_BACKGROUND_COLOUR = OsuColour.FromHex("#fff"); + public static readonly Color4 ELEMENT_FOREGROUND_COLOUR = OsuColour.FromHex("#000"); + + public static readonly Color4 TEXT_COLOUR = OsuColour.FromHex("#fff"); protected override void LoadComplete() { From 129c8fe24ff86054d5875650d47acf5da098307d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Mar 2020 16:03:34 +0900 Subject: [PATCH 07/52] Add helper method to get winning team colour --- osu.Game.Tournament/Models/TournamentMatch.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game.Tournament/Models/TournamentMatch.cs b/osu.Game.Tournament/Models/TournamentMatch.cs index 06cce3d59e..8ebcbf4e15 100644 --- a/osu.Game.Tournament/Models/TournamentMatch.cs +++ b/osu.Game.Tournament/Models/TournamentMatch.cs @@ -90,6 +90,8 @@ namespace osu.Game.Tournament.Models [JsonIgnore] public TournamentTeam Loser => !Completed.Value ? null : Team1Score.Value > Team2Score.Value ? Team2.Value : Team1.Value; + public TeamColour WinnerColour => Winner == Team1.Value ? TeamColour.Red : TeamColour.Blue; + public int PointsToWin => Round.Value?.BestOf.Value / 2 + 1 ?? 0; /// From aeb6bf5b4619e139526600b5f2fd78ca5f72bfd4 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Mar 2020 16:36:07 +0900 Subject: [PATCH 08/52] Remove unnecessary width specification on editor screens --- osu.Game.Tournament/Screens/Editors/TournamentEditorScreen.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game.Tournament/Screens/Editors/TournamentEditorScreen.cs b/osu.Game.Tournament/Screens/Editors/TournamentEditorScreen.cs index e4256e727d..8e5df72cc8 100644 --- a/osu.Game.Tournament/Screens/Editors/TournamentEditorScreen.cs +++ b/osu.Game.Tournament/Screens/Editors/TournamentEditorScreen.cs @@ -40,7 +40,6 @@ namespace osu.Game.Tournament.Screens.Editors new OsuScrollContainer { RelativeSizeAxes = Axes.Both, - Width = 0.9f, Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, Child = flow = new FillFlowContainer From 01e32896eebdbdaf880610b888993ce9f061e81e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Mar 2020 17:43:47 +0900 Subject: [PATCH 09/52] Make save changes button more prominent --- osu.Game.Tournament/TournamentGameBase.cs | 37 +++++++++++++++++++---- 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/osu.Game.Tournament/TournamentGameBase.cs b/osu.Game.Tournament/TournamentGameBase.cs index 435f315c8d..41165ca141 100644 --- a/osu.Game.Tournament/TournamentGameBase.cs +++ b/osu.Game.Tournament/TournamentGameBase.cs @@ -22,6 +22,7 @@ using osu.Game.Online.API.Requests; using osu.Game.Tournament.IPC; using osu.Game.Tournament.Models; using osu.Game.Users; +using osuTK; using osuTK.Graphics; using osuTK.Input; @@ -74,16 +75,40 @@ namespace osu.Game.Tournament AddRange(new[] { - new TourneyButton + new Container { - Text = "Save Changes", - Width = 140, - Height = 50, + CornerRadius = 10, Depth = float.MinValue, + Position = new Vector2(5), + Masking = true, + AutoSizeAxes = Axes.Both, Anchor = Anchor.BottomRight, Origin = Anchor.BottomRight, - Padding = new MarginPadding(10), - Action = SaveChanges, + Children = new Drawable[] + { + new Box + { + Colour = OsuColour.Gray(0.2f), + RelativeSizeAxes = Axes.Both, + }, + new TourneyButton + { + Text = "Save Changes", + Width = 140, + Height = 50, + Padding = new MarginPadding + { + Top = 10, + Left = 10, + }, + Margin = new MarginPadding + { + Right = 10, + Bottom = 10, + }, + Action = SaveChanges, + }, + } }, heightWarning = new Container { From aed52179f0ffaea6be4e15775857370201ee5fd9 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 7 Mar 2020 16:29:11 +0900 Subject: [PATCH 10/52] Fix weird reverse logic --- osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs | 6 +++--- osu.Game/Online/Chat/StandAloneChatDisplay.cs | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs b/osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs index d632e7c5f3..6ba57c60b8 100644 --- a/osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs +++ b/osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs @@ -162,7 +162,7 @@ namespace osu.Game.Tournament.Screens.Gameplay void expand() { - chat?.Expand(); + chat?.Contract(); using (BeginDelayedSequence(300, true)) { @@ -176,7 +176,7 @@ namespace osu.Game.Tournament.Screens.Gameplay SongBar.Expanded = false; scoreDisplay.FadeOut(100); using (chat?.BeginDelayedSequence(500)) - chat?.Contract(); + chat?.Expand(); } switch (state.NewValue) @@ -203,7 +203,7 @@ namespace osu.Game.Tournament.Screens.Gameplay break; default: - chat.Expand(); + chat.Contract(); expand(); break; } diff --git a/osu.Game/Online/Chat/StandAloneChatDisplay.cs b/osu.Game/Online/Chat/StandAloneChatDisplay.cs index 21d0bcc4bf..881dd19d8e 100644 --- a/osu.Game/Online/Chat/StandAloneChatDisplay.cs +++ b/osu.Game/Online/Chat/StandAloneChatDisplay.cs @@ -92,13 +92,13 @@ namespace osu.Game.Online.Chat textbox.Text = string.Empty; } - public void Contract() + public void Expand() { this.FadeIn(300); this.MoveToY(0, 500, Easing.OutQuint); } - public void Expand() + public void Contract() { this.FadeOut(200); this.MoveToY(100, 500, Easing.In); From 1c5d6e0cf453eea4323ac204150b0811cd770057 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Mar 2020 16:07:54 +0900 Subject: [PATCH 11/52] Split out nested classes to higher level for better code sharing --- .../TestSceneDrawableTournamentTeam.cs | 124 ++++++++++ .../Components/DrawableTeamFlag.cs | 33 +++ .../Components/DrawableTeamHeader.cs | 20 ++ .../Components/DrawableTeamTitle.cs | 32 +++ .../Components/DrawableTeamTitleWithHeader.cs | 30 +++ .../Components/DrawableTeamWithPlayers.cs | 71 ++++++ .../Components/DrawableTournamentTeam.cs | 6 +- .../Components/DrawableTournamentTitleText.cs | 16 ++ .../Components/RoundDisplay.cs | 36 +++ .../TournamentSpriteTextWithBackground.cs | 37 +++ .../Screens/Drawings/Components/Group.cs | 49 ---- .../Screens/Drawings/Components/GroupTeam.cs | 60 +++++ .../Screens/Editors/TeamEditorScreen.cs | 13 - .../Gameplay/Components/MatchHeader.cs | 228 +++++------------- .../Gameplay/Components/RoundDisplay.cs | 56 +++++ .../Gameplay/Components/TeamDisplay.cs | 50 ++++ .../Screens/Gameplay/Components/TeamScore.cs | 38 +++ 17 files changed, 662 insertions(+), 237 deletions(-) create mode 100644 osu.Game.Tournament.Tests/Components/TestSceneDrawableTournamentTeam.cs create mode 100644 osu.Game.Tournament/Components/DrawableTeamFlag.cs create mode 100644 osu.Game.Tournament/Components/DrawableTeamHeader.cs create mode 100644 osu.Game.Tournament/Components/DrawableTeamTitle.cs create mode 100644 osu.Game.Tournament/Components/DrawableTeamTitleWithHeader.cs create mode 100644 osu.Game.Tournament/Components/DrawableTeamWithPlayers.cs create mode 100644 osu.Game.Tournament/Components/DrawableTournamentTitleText.cs create mode 100644 osu.Game.Tournament/Components/RoundDisplay.cs create mode 100644 osu.Game.Tournament/Components/TournamentSpriteTextWithBackground.cs create mode 100644 osu.Game.Tournament/Screens/Drawings/Components/GroupTeam.cs create mode 100644 osu.Game.Tournament/Screens/Gameplay/Components/RoundDisplay.cs create mode 100644 osu.Game.Tournament/Screens/Gameplay/Components/TeamDisplay.cs create mode 100644 osu.Game.Tournament/Screens/Gameplay/Components/TeamScore.cs diff --git a/osu.Game.Tournament.Tests/Components/TestSceneDrawableTournamentTeam.cs b/osu.Game.Tournament.Tests/Components/TestSceneDrawableTournamentTeam.cs new file mode 100644 index 0000000000..41f7d3d847 --- /dev/null +++ b/osu.Game.Tournament.Tests/Components/TestSceneDrawableTournamentTeam.cs @@ -0,0 +1,124 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System; +using System.Collections.Generic; +using osu.Framework.Graphics; +using osu.Game.Tests.Visual; +using osu.Game.Tournament.Components; +using osu.Game.Tournament.Models; +using osu.Game.Tournament.Screens.Drawings.Components; +using osu.Game.Tournament.Screens.Gameplay.Components; +using osu.Game.Tournament.Screens.Ladder.Components; +using osu.Game.Users; + +namespace osu.Game.Tournament.Tests.Components +{ + public class TestSceneDrawableTournamentTeam : OsuGridTestScene + { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(DrawableTeamFlag), + typeof(DrawableTeamTitle), + typeof(DrawableTeamTitleWithHeader), + typeof(DrawableMatchTeam), + typeof(DrawableTeamWithPlayers), + typeof(GroupTeam), + typeof(TeamDisplay), + }; + + public TestSceneDrawableTournamentTeam() + : base(4, 3) + { + var team = new TournamentTeam + { + FlagName = { Value = "AU" }, + FullName = { Value = "Australia" }, + Players = + { + new User { Username = "ASecretBox" }, + new User { Username = "Dereban" }, + new User { Username = "mReKk" }, + new User { Username = "uyghti" }, + new User { Username = "Parkes" }, + new User { Username = "Shiroha" }, + new User { Username = "Jordan The Bear" }, + } + }; + + var match = new TournamentMatch { Team1 = { Value = team } }; + + int i = 0; + + Cell(i++).AddRange(new Drawable[] + { + new TournamentSpriteText { Text = "DrawableTeamFlag" }, + new DrawableTeamFlag(team) + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + } + }); + + Cell(i++).AddRange(new Drawable[] + { + new TournamentSpriteText { Text = "DrawableTeamTitle" }, + new DrawableTeamTitle(team) + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + } + }); + + Cell(i++).AddRange(new Drawable[] + { + new TournamentSpriteText { Text = "DrawableTeamTitleWithHeader" }, + new DrawableTeamTitleWithHeader(team, TeamColour.Red) + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + } + }); + + Cell(i++).AddRange(new Drawable[] + { + new TournamentSpriteText { Text = "DrawableMatchTeam" }, + new DrawableMatchTeam(team, match, false) + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + } + }); + + Cell(i++).AddRange(new Drawable[] + { + new TournamentSpriteText { Text = "TeamWithPlayers" }, + new DrawableTeamWithPlayers(team, TeamColour.Blue) + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + } + }); + + Cell(i++).AddRange(new Drawable[] + { + new TournamentSpriteText { Text = "GroupTeam" }, + new GroupTeam(team) + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + } + }); + + Cell(i).AddRange(new Drawable[] + { + new TournamentSpriteText { Text = "TeamDisplay" }, + new TeamDisplay(team, TournamentGame.COLOUR_RED, false) + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + } + }); + } + } +} diff --git a/osu.Game.Tournament/Components/DrawableTeamFlag.cs b/osu.Game.Tournament/Components/DrawableTeamFlag.cs new file mode 100644 index 0000000000..8c85c9a46f --- /dev/null +++ b/osu.Game.Tournament/Components/DrawableTeamFlag.cs @@ -0,0 +1,33 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using JetBrains.Annotations; +using osu.Framework.Allocation; +using osu.Framework.Bindables; +using osu.Framework.Graphics.Sprites; +using osu.Framework.Graphics.Textures; +using osu.Game.Tournament.Models; + +namespace osu.Game.Tournament.Components +{ + public class DrawableTeamFlag : Sprite + { + private readonly TournamentTeam team; + + [UsedImplicitly] + private Bindable flag; + + public DrawableTeamFlag(TournamentTeam team) + { + this.team = team; + } + + [BackgroundDependencyLoader] + private void load(TextureStore textures) + { + if (team == null) return; + + (flag = team.FlagName.GetBoundCopy()).BindValueChanged(acronym => Texture = textures.Get($@"Flags/{team.FlagName}"), true); + } + } +} diff --git a/osu.Game.Tournament/Components/DrawableTeamHeader.cs b/osu.Game.Tournament/Components/DrawableTeamHeader.cs new file mode 100644 index 0000000000..3d9e8a6e00 --- /dev/null +++ b/osu.Game.Tournament/Components/DrawableTeamHeader.cs @@ -0,0 +1,20 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using osu.Game.Tournament.Models; +using osuTK; + +namespace osu.Game.Tournament.Components +{ + public class DrawableTeamHeader : TournamentSpriteTextWithBackground + { + public DrawableTeamHeader(TeamColour colour) + { + Background.Colour = TournamentGame.GetTeamColour(colour); + + Text.Colour = TournamentGame.TEXT_COLOUR; + Text.Text = $"Team {colour}".ToUpperInvariant(); + Text.Scale = new Vector2(0.6f); + } + } +} diff --git a/osu.Game.Tournament/Components/DrawableTeamTitle.cs b/osu.Game.Tournament/Components/DrawableTeamTitle.cs new file mode 100644 index 0000000000..5aac37259f --- /dev/null +++ b/osu.Game.Tournament/Components/DrawableTeamTitle.cs @@ -0,0 +1,32 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using JetBrains.Annotations; +using osu.Framework.Allocation; +using osu.Framework.Bindables; +using osu.Framework.Graphics.Textures; +using osu.Game.Tournament.Models; + +namespace osu.Game.Tournament.Components +{ + public class DrawableTeamTitle : TournamentSpriteTextWithBackground + { + private readonly TournamentTeam team; + + [UsedImplicitly] + private Bindable acronym; + + public DrawableTeamTitle(TournamentTeam team) + { + this.team = team; + } + + [BackgroundDependencyLoader] + private void load(TextureStore textures) + { + if (team == null) return; + + (acronym = team.Acronym.GetBoundCopy()).BindValueChanged(acronym => Text.Text = team?.FullName.Value ?? string.Empty, true); + } + } +} diff --git a/osu.Game.Tournament/Components/DrawableTeamTitleWithHeader.cs b/osu.Game.Tournament/Components/DrawableTeamTitleWithHeader.cs new file mode 100644 index 0000000000..ceffe3d315 --- /dev/null +++ b/osu.Game.Tournament/Components/DrawableTeamTitleWithHeader.cs @@ -0,0 +1,30 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Tournament.Models; +using osuTK; + +namespace osu.Game.Tournament.Components +{ + public class DrawableTeamTitleWithHeader : CompositeDrawable + { + public DrawableTeamTitleWithHeader(TournamentTeam team, TeamColour colour) + { + AutoSizeAxes = Axes.Both; + + InternalChild = new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Vertical, + Spacing = new Vector2(0, 10), + Children = new Drawable[] + { + new DrawableTeamHeader(colour), + new DrawableTeamTitle(team), + } + }; + } + } +} diff --git a/osu.Game.Tournament/Components/DrawableTeamWithPlayers.cs b/osu.Game.Tournament/Components/DrawableTeamWithPlayers.cs new file mode 100644 index 0000000000..0b80bef903 --- /dev/null +++ b/osu.Game.Tournament/Components/DrawableTeamWithPlayers.cs @@ -0,0 +1,71 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System.Linq; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Graphics; +using osu.Game.Tournament.Models; +using osu.Game.Users; +using osuTK; +using osuTK.Graphics; + +namespace osu.Game.Tournament.Components +{ + public class DrawableTeamWithPlayers : CompositeDrawable + { + public DrawableTeamWithPlayers(TournamentTeam team, TeamColour colour) + { + AutoSizeAxes = Axes.Both; + + InternalChildren = new Drawable[] + { + new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Vertical, + Spacing = new Vector2(30), + Children = new Drawable[] + { + new DrawableTeamTitleWithHeader(team, colour), + new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Padding = new MarginPadding { Left = 10 }, + Spacing = new Vector2(30), + Children = new Drawable[] + { + new FillFlowContainer + { + Direction = FillDirection.Vertical, + AutoSizeAxes = Axes.Both, + ChildrenEnumerable = team?.Players.Select(createPlayerText).Take(5) ?? Enumerable.Empty() + }, + new FillFlowContainer + { + Direction = FillDirection.Vertical, + AutoSizeAxes = Axes.Both, + ChildrenEnumerable = team?.Players.Select(p => new TournamentSpriteText + { + Text = p.Username, + Font = OsuFont.Torus.With(size: 24, weight: FontWeight.SemiBold), + Colour = Color4.White, + }).Skip(5) ?? Enumerable.Empty() + }, + } + }, + } + }, + }; + + TournamentSpriteText createPlayerText(User p) => + new TournamentSpriteText + { + Text = p.Username, + Font = OsuFont.Torus.With(size: 24, weight: FontWeight.SemiBold), + Colour = Color4.White, + }; + } + } +} diff --git a/osu.Game.Tournament/Components/DrawableTournamentTeam.cs b/osu.Game.Tournament/Components/DrawableTournamentTeam.cs index 99116d4a17..f8aed26ce1 100644 --- a/osu.Game.Tournament/Components/DrawableTournamentTeam.cs +++ b/osu.Game.Tournament/Components/DrawableTournamentTeam.cs @@ -23,14 +23,11 @@ namespace osu.Game.Tournament.Components [UsedImplicitly] private Bindable acronym; - [UsedImplicitly] - private Bindable flag; - protected DrawableTournamentTeam(TournamentTeam team) { Team = team; - Flag = new Sprite + Flag = new DrawableTeamFlag(team) { RelativeSizeAxes = Axes.Both, FillMode = FillMode.Fit @@ -48,7 +45,6 @@ namespace osu.Game.Tournament.Components if (Team == null) return; (acronym = Team.Acronym.GetBoundCopy()).BindValueChanged(acronym => AcronymText.Text = Team?.Acronym.Value?.ToUpperInvariant() ?? string.Empty, true); - (flag = Team.FlagName.GetBoundCopy()).BindValueChanged(acronym => Flag.Texture = textures.Get($@"Flags/{Team.FlagName}"), true); } } } diff --git a/osu.Game.Tournament/Components/DrawableTournamentTitleText.cs b/osu.Game.Tournament/Components/DrawableTournamentTitleText.cs new file mode 100644 index 0000000000..4fbc6cd060 --- /dev/null +++ b/osu.Game.Tournament/Components/DrawableTournamentTitleText.cs @@ -0,0 +1,16 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using osu.Game.Graphics; + +namespace osu.Game.Tournament.Components +{ + public class DrawableTournamentTitleText : TournamentSpriteText + { + public DrawableTournamentTitleText() + { + Text = "osu!taiko world cup 2020"; + Font = OsuFont.Torus.With(size: 26, weight: FontWeight.SemiBold); + } + } +} diff --git a/osu.Game.Tournament/Components/RoundDisplay.cs b/osu.Game.Tournament/Components/RoundDisplay.cs new file mode 100644 index 0000000000..dd56c83c57 --- /dev/null +++ b/osu.Game.Tournament/Components/RoundDisplay.cs @@ -0,0 +1,36 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Graphics; +using osu.Game.Tournament.Models; + +namespace osu.Game.Tournament.Components +{ + public class RoundDisplay : CompositeDrawable + { + public RoundDisplay(TournamentMatch match) + { + AutoSizeAxes = Axes.Both; + + InternalChildren = new Drawable[] + { + new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Vertical, + Children = new Drawable[] + { + new DrawableTournamentTitleText(), + new TournamentSpriteText + { + Text = match.Round.Value?.Name.Value ?? "Unknown Round", + Font = OsuFont.Torus.With(size: 26, weight: FontWeight.SemiBold) + }, + } + } + }; + } + } +} diff --git a/osu.Game.Tournament/Components/TournamentSpriteTextWithBackground.cs b/osu.Game.Tournament/Components/TournamentSpriteTextWithBackground.cs new file mode 100644 index 0000000000..d92b9eb605 --- /dev/null +++ b/osu.Game.Tournament/Components/TournamentSpriteTextWithBackground.cs @@ -0,0 +1,37 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; +using osu.Game.Graphics; + +namespace osu.Game.Tournament.Components +{ + public class TournamentSpriteTextWithBackground : CompositeDrawable + { + protected readonly TournamentSpriteText Text; + protected readonly Box Background; + + public TournamentSpriteTextWithBackground(string text = "") + { + AutoSizeAxes = Axes.Both; + + InternalChildren = new Drawable[] + { + Background = new Box + { + Colour = TournamentGame.ELEMENT_BACKGROUND_COLOUR, + RelativeSizeAxes = Axes.Both, + }, + Text = new TournamentSpriteText + { + Colour = TournamentGame.ELEMENT_FOREGROUND_COLOUR, + Font = OsuFont.Torus.With(weight: FontWeight.SemiBold, size: 50), + Padding = new MarginPadding { Left = 10, Right = 20 }, + Text = text + } + }; + } + } +} diff --git a/osu.Game.Tournament/Screens/Drawings/Components/Group.cs b/osu.Game.Tournament/Screens/Drawings/Components/Group.cs index 4126f2db65..ece1c431e2 100644 --- a/osu.Game.Tournament/Screens/Drawings/Components/Group.cs +++ b/osu.Game.Tournament/Screens/Drawings/Components/Group.cs @@ -8,7 +8,6 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Game.Graphics; -using osu.Game.Tournament.Components; using osu.Game.Tournament.Models; using osuTK; using osuTK.Graphics; @@ -116,53 +115,5 @@ namespace osu.Game.Tournament.Screens.Drawings.Components sb.AppendLine(gt.Team.FullName.Value); return sb.ToString(); } - - private class GroupTeam : DrawableTournamentTeam - { - private readonly FillFlowContainer innerContainer; - - public GroupTeam(TournamentTeam team) - : base(team) - { - Width = 36; - AutoSizeAxes = Axes.Y; - - Flag.Anchor = Anchor.TopCentre; - Flag.Origin = Anchor.TopCentre; - - AcronymText.Anchor = Anchor.TopCentre; - AcronymText.Origin = Anchor.TopCentre; - AcronymText.Text = team.Acronym.Value.ToUpperInvariant(); - AcronymText.Font = OsuFont.Torus.With(weight: FontWeight.Bold, size: 10); - - InternalChildren = new Drawable[] - { - innerContainer = new FillFlowContainer - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - - Direction = FillDirection.Vertical, - Spacing = new Vector2(0, 5f), - - Children = new Drawable[] - { - Flag, - AcronymText - } - } - }; - } - - protected override void LoadComplete() - { - base.LoadComplete(); - innerContainer.ScaleTo(1.5f); - innerContainer.ScaleTo(1f, 200); - } - } } } diff --git a/osu.Game.Tournament/Screens/Drawings/Components/GroupTeam.cs b/osu.Game.Tournament/Screens/Drawings/Components/GroupTeam.cs new file mode 100644 index 0000000000..4f0ce0bbe7 --- /dev/null +++ b/osu.Game.Tournament/Screens/Drawings/Components/GroupTeam.cs @@ -0,0 +1,60 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Graphics; +using osu.Game.Tournament.Components; +using osu.Game.Tournament.Models; +using osuTK; + +namespace osu.Game.Tournament.Screens.Drawings.Components +{ + public class GroupTeam : DrawableTournamentTeam + { + private readonly FillFlowContainer innerContainer; + + public GroupTeam(TournamentTeam team) + : base(team) + { + Width = 36; + AutoSizeAxes = Axes.Y; + + Flag.Anchor = Anchor.TopCentre; + Flag.Origin = Anchor.TopCentre; + + AcronymText.Anchor = Anchor.TopCentre; + AcronymText.Origin = Anchor.TopCentre; + AcronymText.Text = team.Acronym.Value.ToUpperInvariant(); + AcronymText.Font = OsuFont.Torus.With(weight: FontWeight.Bold, size: 10); + + InternalChildren = new Drawable[] + { + innerContainer = new FillFlowContainer + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + + Direction = FillDirection.Vertical, + Spacing = new Vector2(0, 5f), + + Children = new Drawable[] + { + Flag, + AcronymText + } + } + }; + } + + protected override void LoadComplete() + { + base.LoadComplete(); + innerContainer.ScaleTo(1.5f); + innerContainer.ScaleTo(1f, 200); + } + } +} diff --git a/osu.Game.Tournament/Screens/Editors/TeamEditorScreen.cs b/osu.Game.Tournament/Screens/Editors/TeamEditorScreen.cs index 631393c6f4..7468c9484d 100644 --- a/osu.Game.Tournament/Screens/Editors/TeamEditorScreen.cs +++ b/osu.Game.Tournament/Screens/Editors/TeamEditorScreen.cs @@ -172,19 +172,6 @@ namespace osu.Game.Tournament.Screens.Editors drawableContainer.Child = new DrawableTeamFlag(Model); } - private class DrawableTeamFlag : DrawableTournamentTeam - { - public DrawableTeamFlag(TournamentTeam team) - : base(team) - { - InternalChild = Flag; - RelativeSizeAxes = Axes.Both; - - Flag.Anchor = Anchor.Centre; - Flag.Origin = Anchor.Centre; - } - } - public class PlayerEditor : CompositeDrawable { private readonly TournamentTeam team; diff --git a/osu.Game.Tournament/Screens/Gameplay/Components/MatchHeader.cs b/osu.Game.Tournament/Screens/Gameplay/Components/MatchHeader.cs index ce17c392d0..c86132a802 100644 --- a/osu.Game.Tournament/Screens/Gameplay/Components/MatchHeader.cs +++ b/osu.Game.Tournament/Screens/Gameplay/Components/MatchHeader.cs @@ -5,15 +5,9 @@ using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Shapes; using osu.Framework.Input.Events; -using osu.Game.Graphics; -using osu.Game.Graphics.UserInterface; -using osu.Game.Tournament.Components; using osu.Game.Tournament.Models; using osu.Game.Tournament.Screens.Showcase; -using osuTK; -using osuTK.Graphics; using osuTK.Input; namespace osu.Game.Tournament.Screens.Gameplay.Components @@ -46,181 +40,75 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components }, }; } + } - private class TeamScoreDisplay : CompositeDrawable + public class TeamScoreDisplay : CompositeDrawable + { + private readonly TeamColour teamColour; + + private readonly Bindable currentMatch = new Bindable(); + private readonly Bindable currentTeam = new Bindable(); + private readonly Bindable currentTeamScore = new Bindable(); + + public TeamScoreDisplay(TeamColour teamColour) { - private readonly TeamColour teamColour; + this.teamColour = teamColour; - private readonly Bindable currentMatch = new Bindable(); - private readonly Bindable currentTeam = new Bindable(); - private readonly Bindable currentTeamScore = new Bindable(); + RelativeSizeAxes = Axes.Y; + Width = 300; + } - public TeamScoreDisplay(TeamColour teamColour) + [BackgroundDependencyLoader] + private void load(LadderInfo ladder) + { + currentMatch.BindValueChanged(matchChanged); + currentMatch.BindTo(ladder.CurrentMatch); + } + + private void matchChanged(ValueChangedEvent match) + { + currentTeamScore.UnbindBindings(); + currentTeamScore.BindTo(teamColour == TeamColour.Red ? match.NewValue.Team1Score : match.NewValue.Team2Score); + + currentTeam.UnbindBindings(); + currentTeam.BindTo(teamColour == TeamColour.Red ? match.NewValue.Team1 : match.NewValue.Team2); + + // team may change to same team, which means score is not in a good state. + // thus we handle this manually. + teamChanged(currentTeam.Value); + } + + protected override bool OnMouseDown(MouseDownEvent e) + { + switch (e.Button) { - this.teamColour = teamColour; + case MouseButton.Left: + if (currentTeamScore.Value < currentMatch.Value.PointsToWin) + currentTeamScore.Value++; + return true; - RelativeSizeAxes = Axes.Y; - Width = 300; + case MouseButton.Right: + if (currentTeamScore.Value > 0) + currentTeamScore.Value--; + return true; } - [BackgroundDependencyLoader] - private void load(LadderInfo ladder) + return base.OnMouseDown(e); + } + + private void teamChanged(TournamentTeam team) + { + var colour = teamColour == TeamColour.Red ? TournamentGame.COLOUR_RED : TournamentGame.COLOUR_BLUE; + var flip = teamColour == TeamColour.Red; + + InternalChildren = new Drawable[] { - currentMatch.BindValueChanged(matchChanged); - currentMatch.BindTo(ladder.CurrentMatch); - } - - private void matchChanged(ValueChangedEvent match) - { - currentTeamScore.UnbindBindings(); - currentTeamScore.BindTo(teamColour == TeamColour.Red ? match.NewValue.Team1Score : match.NewValue.Team2Score); - - currentTeam.UnbindBindings(); - currentTeam.BindTo(teamColour == TeamColour.Red ? match.NewValue.Team1 : match.NewValue.Team2); - - // team may change to same team, which means score is not in a good state. - // thus we handle this manually. - teamChanged(currentTeam.Value); - } - - protected override bool OnMouseDown(MouseDownEvent e) - { - switch (e.Button) + new TeamDisplay(team, colour, flip), + new TeamScore(currentTeamScore, flip, currentMatch.Value.PointsToWin) { - case MouseButton.Left: - if (currentTeamScore.Value < currentMatch.Value.PointsToWin) - currentTeamScore.Value++; - return true; - - case MouseButton.Right: - if (currentTeamScore.Value > 0) - currentTeamScore.Value--; - return true; + Colour = colour } - - return base.OnMouseDown(e); - } - - private void teamChanged(TournamentTeam team) - { - var colour = teamColour == TeamColour.Red ? TournamentGame.COLOUR_RED : TournamentGame.COLOUR_BLUE; - var flip = teamColour != TeamColour.Red; - - InternalChildren = new Drawable[] - { - new TeamDisplay(team, colour, flip), - new TeamScore(currentTeamScore, flip, currentMatch.Value.PointsToWin) - { - Colour = colour - } - }; - } - } - - private class TeamScore : CompositeDrawable - { - private readonly Bindable currentTeamScore = new Bindable(); - private readonly StarCounter counter; - - public TeamScore(Bindable score, bool flip, int count) - { - var anchor = flip ? Anchor.CentreRight : Anchor.CentreLeft; - - Anchor = anchor; - Origin = anchor; - - InternalChild = counter = new StarCounter(count) - { - Anchor = anchor, - X = (flip ? -1 : 1) * 90, - Y = 5, - Scale = flip ? new Vector2(-1, 1) : Vector2.One, - }; - - currentTeamScore.BindValueChanged(scoreChanged); - currentTeamScore.BindTo(score); - } - - private void scoreChanged(ValueChangedEvent score) => counter.CountStars = score.NewValue ?? 0; - } - - private class TeamDisplay : DrawableTournamentTeam - { - public TeamDisplay(TournamentTeam team, Color4 colour, bool flip) - : base(team) - { - RelativeSizeAxes = Axes.Both; - - var anchor = flip ? Anchor.CentreRight : Anchor.CentreLeft; - - Anchor = Origin = anchor; - - Flag.Anchor = Flag.Origin = anchor; - Flag.RelativeSizeAxes = Axes.None; - Flag.Size = new Vector2(60, 40); - Flag.Margin = new MarginPadding(20); - - InternalChild = new Container - { - RelativeSizeAxes = Axes.Both, - Children = new Drawable[] - { - Flag, - new TournamentSpriteText - { - Text = team?.FullName.Value.ToUpper() ?? "???", - X = (flip ? -1 : 1) * 90, - Y = -10, - Colour = colour, - Font = OsuFont.Torus.With(weight: FontWeight.Regular, size: 20), - Origin = anchor, - Anchor = anchor, - }, - } - }; - } - } - - private class RoundDisplay : CompositeDrawable - { - private readonly Bindable currentMatch = new Bindable(); - - private readonly TournamentSpriteText text; - - public RoundDisplay() - { - Width = 200; - Height = 20; - - Masking = true; - CornerRadius = 10; - - InternalChildren = new Drawable[] - { - new Box - { - Colour = OsuColour.Gray(0.18f), - RelativeSizeAxes = Axes.Both, - }, - text = new TournamentSpriteText - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Colour = Color4.White, - Font = OsuFont.Torus.With(weight: FontWeight.Regular, size: 16), - }, - }; - } - - [BackgroundDependencyLoader] - private void load(LadderInfo ladder) - { - currentMatch.BindValueChanged(matchChanged); - currentMatch.BindTo(ladder.CurrentMatch); - } - - private void matchChanged(ValueChangedEvent match) => - text.Text = match.NewValue.Round.Value?.Name.Value ?? "Unknown Round"; + }; } } } diff --git a/osu.Game.Tournament/Screens/Gameplay/Components/RoundDisplay.cs b/osu.Game.Tournament/Screens/Gameplay/Components/RoundDisplay.cs new file mode 100644 index 0000000000..5322cf9a76 --- /dev/null +++ b/osu.Game.Tournament/Screens/Gameplay/Components/RoundDisplay.cs @@ -0,0 +1,56 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using osu.Framework.Allocation; +using osu.Framework.Bindables; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; +using osu.Game.Graphics; +using osu.Game.Tournament.Models; +using osuTK.Graphics; + +namespace osu.Game.Tournament.Screens.Gameplay.Components +{ + public class RoundDisplay : CompositeDrawable + { + private readonly Bindable currentMatch = new Bindable(); + + private readonly TournamentSpriteText text; + + public RoundDisplay() + { + Width = 200; + Height = 20; + + Masking = true; + CornerRadius = 10; + + InternalChildren = new Drawable[] + { + new Box + { + Colour = OsuColour.Gray(0.18f), + RelativeSizeAxes = Axes.Both, + }, + text = new TournamentSpriteText + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Colour = Color4.White, + Font = OsuFont.Torus.With(weight: FontWeight.Regular, size: 16), + }, + }; + } + + [BackgroundDependencyLoader] + private void load(LadderInfo ladder) + { + currentMatch.BindValueChanged(matchChanged); + currentMatch.BindTo(ladder.CurrentMatch); + } + + private void matchChanged(ValueChangedEvent match) => + text.Text = match.NewValue.Round.Value?.Name.Value ?? "Unknown Round"; + } +} diff --git a/osu.Game.Tournament/Screens/Gameplay/Components/TeamDisplay.cs b/osu.Game.Tournament/Screens/Gameplay/Components/TeamDisplay.cs new file mode 100644 index 0000000000..891435c48e --- /dev/null +++ b/osu.Game.Tournament/Screens/Gameplay/Components/TeamDisplay.cs @@ -0,0 +1,50 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Graphics; +using osu.Game.Tournament.Components; +using osu.Game.Tournament.Models; +using osuTK; +using osuTK.Graphics; + +namespace osu.Game.Tournament.Screens.Gameplay.Components +{ + public class TeamDisplay : DrawableTournamentTeam + { + public TeamDisplay(TournamentTeam team, Color4 colour, bool flip) + : base(team) + { + RelativeSizeAxes = Axes.Both; + + var anchor = flip ? Anchor.CentreRight : Anchor.CentreLeft; + + Anchor = Origin = anchor; + + Flag.Anchor = Flag.Origin = anchor; + Flag.RelativeSizeAxes = Axes.None; + Flag.Size = new Vector2(60, 40); + Flag.Margin = new MarginPadding(20); + + InternalChild = new Container + { + RelativeSizeAxes = Axes.Both, + Children = new Drawable[] + { + Flag, + new TournamentSpriteText + { + Text = team?.FullName.Value.ToUpper() ?? "???", + X = (flip ? -1 : 1) * 90, + Y = -10, + Colour = colour, + Font = OsuFont.Torus.With(weight: FontWeight.Regular, size: 20), + Origin = anchor, + Anchor = anchor, + }, + } + }; + } + } +} diff --git a/osu.Game.Tournament/Screens/Gameplay/Components/TeamScore.cs b/osu.Game.Tournament/Screens/Gameplay/Components/TeamScore.cs new file mode 100644 index 0000000000..608d98a16a --- /dev/null +++ b/osu.Game.Tournament/Screens/Gameplay/Components/TeamScore.cs @@ -0,0 +1,38 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using osu.Framework.Bindables; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Graphics.UserInterface; +using osuTK; + +namespace osu.Game.Tournament.Screens.Gameplay.Components +{ + public class TeamScore : CompositeDrawable + { + private readonly Bindable currentTeamScore = new Bindable(); + private readonly StarCounter counter; + + public TeamScore(Bindable score, bool flip, int count) + { + var anchor = flip ? Anchor.CentreRight : Anchor.CentreLeft; + + Anchor = anchor; + Origin = anchor; + + InternalChild = counter = new StarCounter(count) + { + Anchor = anchor, + X = (flip ? -1 : 1) * 90, + Y = 5, + Scale = flip ? new Vector2(-1, 1) : Vector2.One, + }; + + currentTeamScore.BindValueChanged(scoreChanged); + currentTeamScore.BindTo(score); + } + + private void scoreChanged(ValueChangedEvent score) => counter.CountStars = score.NewValue ?? 0; + } +} From 4d74493289a7de37137727545b67629ca3576343 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Mar 2020 16:08:05 +0900 Subject: [PATCH 12/52] Initial pass of win screen design update --- .../Screens/TeamWin/TeamWinScreen.cs | 110 ++++-------------- 1 file changed, 23 insertions(+), 87 deletions(-) diff --git a/osu.Game.Tournament/Screens/TeamWin/TeamWinScreen.cs b/osu.Game.Tournament/Screens/TeamWin/TeamWinScreen.cs index 1765ab7ba2..8b3f4488d0 100644 --- a/osu.Game.Tournament/Screens/TeamWin/TeamWinScreen.cs +++ b/osu.Game.Tournament/Screens/TeamWin/TeamWinScreen.cs @@ -10,7 +10,6 @@ using osu.Game.Graphics; using osu.Game.Tournament.Components; using osu.Game.Tournament.Models; using osuTK; -using osuTK.Graphics; namespace osu.Game.Tournament.Screens.TeamWin { @@ -73,105 +72,42 @@ namespace osu.Game.Tournament.Screens.TeamWin return; } - bool redWin = match.Winner == match.Team1.Value; - redWinVideo.Alpha = redWin ? 1 : 0; - blueWinVideo.Alpha = redWin ? 0 : 1; + redWinVideo.Alpha = match.WinnerColour == TeamColour.Red ? 1 : 0; + blueWinVideo.Alpha = match.WinnerColour == TeamColour.Blue ? 1 : 0; mainContainer.Children = new Drawable[] { - new TeamFlagDisplay(match.Winner) + new DrawableTeamFlag(match.Winner) { Size = new Vector2(300, 200), Scale = new Vector2(0.5f), Anchor = Anchor.Centre, Origin = Anchor.Centre, - X = -387, + Position = new Vector2(-300, 10), }, - new TournamentSpriteText + new FillFlowContainer { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Vertical, Anchor = Anchor.Centre, - Origin = Anchor.TopLeft, - Position = new Vector2(78, -70), - Colour = OsuColour.Gray(0.33f), - Text = match.Round.Value?.Name.Value ?? "Unknown Round", - Font = OsuFont.Torus.With(size: 30, weight: FontWeight.Regular) - }, - new TeamWithPlayers(match.Winner, redWin) - { - RelativeSizeAxes = Axes.Both, - Width = 0.5f, - Height = 0.6f, - Anchor = Anchor.Centre, - Origin = Anchor.TopLeft, - Position = new Vector2(78, 0), + Origin = Anchor.Centre, + X = 260, + Children = new Drawable[] + { + new RoundDisplay(match) + { + Margin = new MarginPadding { Bottom = 30 }, + }, + new TournamentSpriteText + { + Text = "WINNER", + Font = OsuFont.Torus.With(size: 100, weight: FontWeight.Bold), + Margin = new MarginPadding { Bottom = 50 }, + }, + new DrawableTeamWithPlayers(match.Winner, match.WinnerColour) + } }, }; } - - private class TeamWithPlayers : CompositeDrawable - { - public TeamWithPlayers(TournamentTeam team, bool left = false) - { - FillFlowContainer players; - - var colour = left ? TournamentGame.COLOUR_RED : TournamentGame.COLOUR_BLUE; - InternalChildren = new Drawable[] - { - new FillFlowContainer - { - Direction = FillDirection.Vertical, - AutoSizeAxes = Axes.Both, - Children = new Drawable[] - { - new TournamentSpriteText - { - Text = "WINNER", - Font = OsuFont.Torus.With(size: 24, weight: FontWeight.SemiBold), - Colour = Color4.Black, - }, - new TournamentSpriteText - { - Text = team?.FullName.Value ?? "???", - Font = OsuFont.Torus.With(size: 30, weight: FontWeight.SemiBold), - Colour = Color4.Black, - }, - players = new FillFlowContainer - { - Direction = FillDirection.Vertical, - AutoSizeAxes = Axes.Both, - Padding = new MarginPadding { Top = 10 }, - }, - } - }, - }; - - if (team != null) - { - foreach (var p in team.Players) - { - players.Add(new TournamentSpriteText - { - Text = p.Username, - Font = OsuFont.Torus.With(size: 24), - Colour = colour, - Anchor = left ? Anchor.CentreRight : Anchor.CentreLeft, - Origin = left ? Anchor.CentreRight : Anchor.CentreLeft, - }); - } - } - } - } - - private class TeamFlagDisplay : DrawableTournamentTeam - { - public TeamFlagDisplay(TournamentTeam team) - : base(team) - { - InternalChildren = new Drawable[] - { - Flag - }; - } - } } } From 29817304423d154a39a0f5212e9ac2aeb3514148 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 7 Mar 2020 13:51:11 +0900 Subject: [PATCH 13/52] Initial pass of map pool screen design update --- .../Components/TournamentBeatmapPanel.cs | 22 ++----------------- .../Screens/MapPool/MapPoolScreen.cs | 5 +++++ 2 files changed, 7 insertions(+), 20 deletions(-) diff --git a/osu.Game.Tournament/Components/TournamentBeatmapPanel.cs b/osu.Game.Tournament/Components/TournamentBeatmapPanel.cs index 394ffe304e..09c4a96807 100644 --- a/osu.Game.Tournament/Components/TournamentBeatmapPanel.cs +++ b/osu.Game.Tournament/Components/TournamentBeatmapPanel.cs @@ -27,7 +27,7 @@ namespace osu.Game.Tournament.Components private readonly string mods; private const float horizontal_padding = 10; - private const float vertical_padding = 5; + private const float vertical_padding = 10; public const float HEIGHT = 50; @@ -50,8 +50,6 @@ namespace osu.Game.Tournament.Components currentMatch.BindValueChanged(matchChanged); currentMatch.BindTo(ladder.CurrentMatch); - CornerRadius = HEIGHT / 2; - CornerExponent = 2; Masking = true; AddRangeInternal(new Drawable[] @@ -70,16 +68,12 @@ namespace osu.Game.Tournament.Components new FillFlowContainer { AutoSizeAxes = Axes.Both, - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, Padding = new MarginPadding(vertical_padding), Direction = FillDirection.Vertical, Children = new Drawable[] { new TournamentSpriteText { - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, Text = new LocalisedString(( $"{Beatmap.Metadata.ArtistUnicode ?? Beatmap.Metadata.Artist} - {Beatmap.Metadata.TitleUnicode ?? Beatmap.Metadata.Title}", $"{Beatmap.Metadata.Artist} - {Beatmap.Metadata.Title}")), @@ -88,9 +82,6 @@ namespace osu.Game.Tournament.Components new FillFlowContainer { AutoSizeAxes = Axes.Both, - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - Padding = new MarginPadding(vertical_padding), Direction = FillDirection.Horizontal, Children = new Drawable[] { @@ -170,16 +161,7 @@ namespace osu.Game.Tournament.Components BorderThickness = 6; - switch (found.Team) - { - case TeamColour.Red: - BorderColour = Color4.Red; - break; - - case TeamColour.Blue: - BorderColour = Color4.Blue; - break; - } + BorderColour = TournamentGame.GetTeamColour(found.Team); switch (found.Type) { diff --git a/osu.Game.Tournament/Screens/MapPool/MapPoolScreen.cs b/osu.Game.Tournament/Screens/MapPool/MapPoolScreen.cs index c42d0a6da3..4f3f7cfdbf 100644 --- a/osu.Game.Tournament/Screens/MapPool/MapPoolScreen.cs +++ b/osu.Game.Tournament/Screens/MapPool/MapPoolScreen.cs @@ -42,6 +42,11 @@ namespace osu.Game.Tournament.Screens.MapPool { InternalChildren = new Drawable[] { + new TourneyVideo("gameplay") + { + Loop = true, + RelativeSizeAxes = Axes.Both, + }, new MatchHeader(), mapFlows = new FillFlowContainer> { From ba6c4abbe6568c3d4acc9701dac310feae4ce1a8 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 7 Mar 2020 01:37:15 +0900 Subject: [PATCH 14/52] Initial pass of ladder screen design update --- .../Ladder/Components/DrawableMatchTeam.cs | 60 +++++++++---------- .../Components/DrawableTournamentMatch.cs | 11 ++-- .../Components/DrawableTournamentRound.cs | 5 +- .../Screens/Ladder/LadderScreen.cs | 10 +++- 4 files changed, 44 insertions(+), 42 deletions(-) diff --git a/osu.Game.Tournament/Screens/Ladder/Components/DrawableMatchTeam.cs b/osu.Game.Tournament/Screens/Ladder/Components/DrawableMatchTeam.cs index 88d7b95b0c..4f10a7e7d0 100644 --- a/osu.Game.Tournament/Screens/Ladder/Components/DrawableMatchTeam.cs +++ b/osu.Game.Tournament/Screens/Ladder/Components/DrawableMatchTeam.cs @@ -27,12 +27,12 @@ namespace osu.Game.Tournament.Screens.Ladder.Components private readonly bool losers; private TournamentSpriteText scoreText; private Box background; + private Box backgroundRight; private readonly Bindable score = new Bindable(); private readonly BindableBool completed = new BindableBool(); private Color4 colourWinner; - private Color4 colourNormal; private readonly Func isWinner; private LadderEditorScreen ladderEditor; @@ -60,15 +60,12 @@ namespace osu.Game.Tournament.Screens.Ladder.Components this.losers = losers; Size = new Vector2(150, 40); - Masking = true; - CornerRadius = 5; - Flag.Scale = new Vector2(0.9f); Flag.Anchor = Flag.Origin = Anchor.CentreLeft; AcronymText.Anchor = AcronymText.Origin = Anchor.CentreLeft; AcronymText.Padding = new MarginPadding { Left = 50 }; - AcronymText.Font = OsuFont.Torus.With(size: 24); + AcronymText.Font = OsuFont.Torus.With(size: 22, weight: FontWeight.Bold); if (match != null) { @@ -85,8 +82,9 @@ namespace osu.Game.Tournament.Screens.Ladder.Components { this.ladderEditor = ladderEditor; - colourWinner = losers ? colours.YellowDarker : colours.BlueDarker; - colourNormal = OsuColour.Gray(0.2f); + colourWinner = losers + ? OsuColour.FromHex("#8E7F48") + : OsuColour.FromHex("#1462AA"); InternalChildren = new Drawable[] { @@ -102,29 +100,28 @@ namespace osu.Game.Tournament.Screens.Ladder.Components { AcronymText, Flag, - new Container + } + }, + new Container + { + Masking = true, + Width = 0.3f, + Anchor = Anchor.CentreRight, + Origin = Anchor.CentreRight, + RelativeSizeAxes = Axes.Both, + Children = new Drawable[] + { + backgroundRight = new Box { - Masking = true, - CornerRadius = 5, - Width = 0.3f, - Anchor = Anchor.CentreRight, - Origin = Anchor.CentreRight, + Colour = OsuColour.Gray(0.1f), + Alpha = 0.8f, RelativeSizeAxes = Axes.Both, - Children = new Drawable[] - { - new Box - { - Colour = OsuColour.Gray(0.1f), - Alpha = 0.8f, - RelativeSizeAxes = Axes.Both, - }, - scoreText = new TournamentSpriteText - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Font = OsuFont.Torus.With(size: 20), - } - } + }, + scoreText = new TournamentSpriteText + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Font = OsuFont.Torus.With(size: 22), } } } @@ -181,9 +178,12 @@ namespace osu.Game.Tournament.Screens.Ladder.Components { bool winner = completed.Value && isWinner?.Invoke() == true; - background.FadeColour(winner ? colourWinner : colourNormal, winner ? 500 : 0, Easing.OutQuint); + background.FadeColour(winner ? Color4.White : OsuColour.FromHex("#444"), winner ? 500 : 0, Easing.OutQuint); + backgroundRight.FadeColour(winner ? colourWinner : OsuColour.FromHex("#333"), winner ? 500 : 0, Easing.OutQuint); - scoreText.Font = AcronymText.Font = OsuFont.Torus.With(weight: winner ? FontWeight.Bold : FontWeight.Regular); + AcronymText.Colour = winner ? Color4.Black : Color4.White; + + scoreText.Font = scoreText.Font.With(weight: winner ? FontWeight.Bold : FontWeight.Regular); } public MenuItem[] ContextMenuItems diff --git a/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs b/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs index c4b670f059..82a4c7017f 100644 --- a/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs +++ b/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs @@ -9,6 +9,7 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Input.Events; +using osu.Game.Graphics; using osu.Game.Tournament.Models; using osuTK; using osuTK.Graphics; @@ -45,9 +46,7 @@ namespace osu.Game.Tournament.Screens.Ladder.Components { selectionBox = new Container { - CornerRadius = 5, - Masking = true, - Scale = new Vector2(1.05f), + Scale = new Vector2(1.1f), RelativeSizeAxes = Axes.Both, Anchor = Anchor.Centre, Origin = Anchor.Centre, @@ -57,14 +56,12 @@ namespace osu.Game.Tournament.Screens.Ladder.Components }, currentMatchSelectionBox = new Container { - CornerRadius = 5, - Masking = true, - Scale = new Vector2(1.05f), + Scale = new Vector2(1.1f), RelativeSizeAxes = Axes.Both, Anchor = Anchor.Centre, Origin = Anchor.Centre, Alpha = 0, - Colour = Color4.OrangeRed, + Colour = OsuColour.FromHex("#D24747"), Child = new Box { RelativeSizeAxes = Axes.Both } }, Flow = new FillFlowContainer diff --git a/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentRound.cs b/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentRound.cs index d14ebb4d03..cad0b827c0 100644 --- a/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentRound.cs +++ b/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentRound.cs @@ -7,7 +7,6 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Game.Graphics; using osu.Game.Tournament.Models; -using osuTK.Graphics; namespace osu.Game.Tournament.Screens.Ladder.Components { @@ -33,14 +32,14 @@ namespace osu.Game.Tournament.Screens.Ladder.Components { textDescription = new TournamentSpriteText { - Colour = Color4.Black, + Colour = TournamentGame.TEXT_COLOUR, Origin = Anchor.TopCentre, Anchor = Anchor.TopCentre }, textName = new TournamentSpriteText { Font = OsuFont.Torus.With(weight: FontWeight.Bold), - Colour = Color4.Black, + Colour = TournamentGame.TEXT_COLOUR, Origin = Anchor.TopCentre, Anchor = Anchor.TopCentre }, diff --git a/osu.Game.Tournament/Screens/Ladder/LadderScreen.cs b/osu.Game.Tournament/Screens/Ladder/LadderScreen.cs index 7b265ded32..c7e59cfa7b 100644 --- a/osu.Game.Tournament/Screens/Ladder/LadderScreen.cs +++ b/osu.Game.Tournament/Screens/Ladder/LadderScreen.cs @@ -32,8 +32,8 @@ namespace osu.Game.Tournament.Screens.Ladder [BackgroundDependencyLoader] private void load(OsuColour colours, Storage storage) { - normalPathColour = colours.BlueDarker.Darken(2); - losersPathColour = colours.YellowDarker.Darken(2); + normalPathColour = OsuColour.FromHex("#66D1FF"); + losersPathColour = OsuColour.FromHex("#FFC700"); RelativeSizeAxes = Axes.Both; @@ -47,6 +47,12 @@ namespace osu.Game.Tournament.Screens.Ladder RelativeSizeAxes = Axes.Both, Loop = true, }, + new DrawableTournamentTitleText + { + Y = 100, + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, + }, ScrollContent = new LadderDragContainer { RelativeSizeAxes = Axes.Both, From 66e54ba9837f4c8bf5aa7fdc8788c8dc7c6e7eb3 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 7 Mar 2020 12:49:09 +0900 Subject: [PATCH 15/52] Increase flexibility of StarCounter component --- .../Visual/Gameplay/TestSceneScoreCounter.cs | 12 +-- .../Graphics/UserInterface/StarCounter.cs | 101 ++++++++++-------- .../Carousel/DrawableCarouselBeatmap.cs | 2 +- 3 files changed, 61 insertions(+), 54 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneScoreCounter.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneScoreCounter.cs index ffd6f55b53..88bb83b446 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneScoreCounter.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneScoreCounter.cs @@ -50,7 +50,7 @@ namespace osu.Game.Tests.Visual.Gameplay Origin = Anchor.BottomLeft, Anchor = Anchor.BottomLeft, Position = new Vector2(20, -160), - CountStars = 5, + Current = 5, }; Add(stars); @@ -59,7 +59,7 @@ namespace osu.Game.Tests.Visual.Gameplay Origin = Anchor.BottomLeft, Anchor = Anchor.BottomLeft, Position = new Vector2(20, -190), - Text = stars.CountStars.ToString("0.00"), + Text = stars.Current.ToString("0.00"), }; Add(starsLabel); @@ -69,8 +69,8 @@ namespace osu.Game.Tests.Visual.Gameplay comboCounter.Current.Value = 0; numerator = denominator = 0; accuracyCounter.SetFraction(0, 0); - stars.CountStars = 0; - starsLabel.Text = stars.CountStars.ToString("0.00"); + stars.Current = 0; + starsLabel.Text = stars.Current.ToString("0.00"); }); AddStep(@"Hit! :D", delegate @@ -91,8 +91,8 @@ namespace osu.Game.Tests.Visual.Gameplay AddStep(@"Alter stars", delegate { - stars.CountStars = RNG.NextSingle() * (stars.StarCount + 1); - starsLabel.Text = stars.CountStars.ToString("0.00"); + stars.Current = RNG.NextSingle() * (stars.StarCount + 1); + starsLabel.Text = stars.Current.ToString("0.00"); }); AddStep(@"Stop counters", delegate diff --git a/osu.Game/Graphics/UserInterface/StarCounter.cs b/osu.Game/Graphics/UserInterface/StarCounter.cs index 586cd2ce84..b13d6485ac 100644 --- a/osu.Game/Graphics/UserInterface/StarCounter.cs +++ b/osu.Game/Graphics/UserInterface/StarCounter.cs @@ -13,7 +13,7 @@ namespace osu.Game.Graphics.UserInterface { public class StarCounter : Container { - private readonly Container stars; + private readonly FillFlowContainer stars; /// /// Maximum amount of stars displayed. @@ -23,34 +23,29 @@ namespace osu.Game.Graphics.UserInterface /// public int StarCount { get; } - private double animationDelay => 80; + /// + /// The added delay for each subsequent star to be animated. + /// + protected virtual double AnimationDelay => 80; - private double scalingDuration => 1000; - private Easing scalingEasing => Easing.OutElasticHalf; - private float minStarScale => 0.4f; - - private double fadingDuration => 100; - private float minStarAlpha => 0.5f; - - private const float star_size = 20; private const float star_spacing = 4; - private float countStars; + private float current; /// /// Amount of stars represented. /// - public float CountStars + public float Current { - get => countStars; + get => current; set { - if (countStars == value) return; + if (current == value) return; if (IsLoaded) - transformCount(value); - countStars = value; + animate(value); + current = value; } } @@ -71,11 +66,13 @@ namespace osu.Game.Graphics.UserInterface AutoSizeAxes = Axes.Both, Direction = FillDirection.Horizontal, Spacing = new Vector2(star_spacing), - ChildrenEnumerable = Enumerable.Range(0, StarCount).Select(i => new Star { Alpha = minStarAlpha }) + ChildrenEnumerable = Enumerable.Range(0, StarCount).Select(i => CreateStar()) } }; } + public virtual Star CreateStar() => new DefaultStar(); + protected override void LoadComplete() { base.LoadComplete(); @@ -86,63 +83,60 @@ namespace osu.Game.Graphics.UserInterface public void ResetCount() { - countStars = 0; + current = 0; StopAnimation(); } public void ReplayAnimation() { - var t = countStars; + var t = current; ResetCount(); - CountStars = t; + Current = t; } public void StopAnimation() { - int i = 0; - + animate(current); foreach (var star in stars.Children) + star.FinishTransforms(true); + } + + private float getStarScale(int i, float value) => i + 1 <= value ? 1.0f : Interpolation.ValueAt(value, 0, 1.0f, i, i + 1); + + private void animate(float newValue) + { + for (var i = 0; i < stars.Children.Count; i++) { + var star = stars.Children[i]; + star.ClearTransforms(true); - star.FadeTo(i < countStars ? 1.0f : minStarAlpha); - star.Icon.ScaleTo(getStarScale(i, countStars)); - i++; + + double delay = (current <= newValue ? Math.Max(i - current, 0) : Math.Max(current - 1 - i, 0)) * AnimationDelay; + + using (star.BeginDelayedSequence(delay, true)) + star.DisplayAt(getStarScale(i, newValue)); } } - private float getStarScale(int i, float value) + public class DefaultStar : Star { - if (value <= i) - return minStarScale; + private const double scaling_duration = 1000; - return i + 1 <= value ? 1.0f : Interpolation.ValueAt(value, minStarScale, 1.0f, i, i + 1); - } + private const double fading_duration = 100; - private void transformCount(float newValue) - { - int i = 0; + private const Easing scaling_easing = Easing.OutElasticHalf; - foreach (var star in stars.Children) - { - star.ClearTransforms(true); + private const float min_star_scale = 0.4f; - var delay = (countStars <= newValue ? Math.Max(i - countStars, 0) : Math.Max(countStars - 1 - i, 0)) * animationDelay; - star.Delay(delay).FadeTo(i < newValue ? 1.0f : minStarAlpha, fadingDuration); - star.Icon.Delay(delay).ScaleTo(getStarScale(i, newValue), scalingDuration, scalingEasing); + private const float star_size = 20; - i++; - } - } - - private class Star : Container - { public readonly SpriteIcon Icon; - public Star() + public DefaultStar() { Size = new Vector2(star_size); - Child = Icon = new SpriteIcon + InternalChild = Icon = new SpriteIcon { Size = new Vector2(star_size), Icon = FontAwesome.Solid.Star, @@ -150,6 +144,19 @@ namespace osu.Game.Graphics.UserInterface Origin = Anchor.Centre, }; } + + public override void DisplayAt(float scale) + { + scale = Math.Clamp(scale, min_star_scale, 1); + + this.FadeTo(scale, fading_duration); + Icon.ScaleTo(scale, scaling_duration, scaling_easing); + } + } + + public abstract class Star : CompositeDrawable + { + public abstract void DisplayAt(float scale); } } } diff --git a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs index d9eeec9f85..50419a5fb9 100644 --- a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs +++ b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs @@ -123,7 +123,7 @@ namespace osu.Game.Screens.Select.Carousel }, starCounter = new StarCounter { - CountStars = (float)beatmap.StarDifficulty, + Current = (float)beatmap.StarDifficulty, Scale = new Vector2(0.8f), } } From 86b12a384b4244bf14ae93ea19f3cd3cf13d6207 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 7 Mar 2020 12:51:11 +0900 Subject: [PATCH 16/52] Initial pass of gameplay screen design update --- .../TestSceneDrawableTournamentTeam.cs | 3 +- .../Screens/TestSceneGameplayScreen.cs | 11 +++ .../Gameplay/Components/MatchHeader.cs | 39 +++++---- .../Gameplay/Components/RoundDisplay.cs | 37 +-------- .../Gameplay/Components/TeamDisplay.cs | 73 ++++++++++++----- .../Screens/Gameplay/Components/TeamScore.cs | 81 +++++++++++++++++-- .../Screens/Gameplay/GameplayScreen.cs | 32 +------- 7 files changed, 170 insertions(+), 106 deletions(-) diff --git a/osu.Game.Tournament.Tests/Components/TestSceneDrawableTournamentTeam.cs b/osu.Game.Tournament.Tests/Components/TestSceneDrawableTournamentTeam.cs index 41f7d3d847..01edcb66e4 100644 --- a/osu.Game.Tournament.Tests/Components/TestSceneDrawableTournamentTeam.cs +++ b/osu.Game.Tournament.Tests/Components/TestSceneDrawableTournamentTeam.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Game.Tests.Visual; using osu.Game.Tournament.Components; @@ -113,7 +114,7 @@ namespace osu.Game.Tournament.Tests.Components Cell(i).AddRange(new Drawable[] { new TournamentSpriteText { Text = "TeamDisplay" }, - new TeamDisplay(team, TournamentGame.COLOUR_RED, false) + new TeamDisplay(team, TeamColour.Red, new Bindable(2), 6) { Anchor = Anchor.Centre, Origin = Anchor.Centre, diff --git a/osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs b/osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs index 9de00818a5..964930a8de 100644 --- a/osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs +++ b/osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs @@ -1,9 +1,12 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. +using System; +using System.Collections.Generic; using osu.Framework.Allocation; using osu.Game.Tournament.Components; using osu.Game.Tournament.Screens.Gameplay; +using osu.Game.Tournament.Screens.Gameplay.Components; namespace osu.Game.Tournament.Tests.Screens { @@ -12,6 +15,14 @@ namespace osu.Game.Tournament.Tests.Screens [Cached] private TournamentMatchChatDisplay chat = new TournamentMatchChatDisplay(); + public override IReadOnlyList RequiredTypes => new[] + { + typeof(TeamScore), + typeof(TeamScoreDisplay), + typeof(TeamDisplay), + typeof(MatchHeader), + }; + [BackgroundDependencyLoader] private void load() { diff --git a/osu.Game.Tournament/Screens/Gameplay/Components/MatchHeader.cs b/osu.Game.Tournament/Screens/Gameplay/Components/MatchHeader.cs index c86132a802..45f46c462a 100644 --- a/osu.Game.Tournament/Screens/Gameplay/Components/MatchHeader.cs +++ b/osu.Game.Tournament/Screens/Gameplay/Components/MatchHeader.cs @@ -6,8 +6,9 @@ using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Input.Events; +using osu.Game.Tournament.Components; using osu.Game.Tournament.Models; -using osu.Game.Tournament.Screens.Showcase; +using osuTK; using osuTK.Input; namespace osu.Game.Tournament.Screens.Gameplay.Components @@ -21,13 +22,28 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components Height = 95; Children = new Drawable[] { - new TournamentLogo(), - new RoundDisplay + new FillFlowContainer { - Y = 5, - Anchor = Anchor.BottomCentre, - Origin = Anchor.TopCentre, + RelativeSizeAxes = Axes.Both, + Direction = FillDirection.Vertical, + Spacing = new Vector2(5), + Children = new Drawable[] + { + new DrawableTournamentTitleText + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Scale = new Vector2(1.2f) + }, + new RoundDisplay + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Scale = new Vector2(0.4f) + }, + } }, + new TeamScoreDisplay(TeamColour.Red) { Anchor = Anchor.TopLeft, @@ -55,7 +71,7 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components this.teamColour = teamColour; RelativeSizeAxes = Axes.Y; - Width = 300; + AutoSizeAxes = Axes.X; } [BackgroundDependencyLoader] @@ -98,16 +114,9 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components private void teamChanged(TournamentTeam team) { - var colour = teamColour == TeamColour.Red ? TournamentGame.COLOUR_RED : TournamentGame.COLOUR_BLUE; - var flip = teamColour == TeamColour.Red; - InternalChildren = new Drawable[] { - new TeamDisplay(team, colour, flip), - new TeamScore(currentTeamScore, flip, currentMatch.Value.PointsToWin) - { - Colour = colour - } + new TeamDisplay(team, teamColour, currentTeamScore, currentMatch.Value.PointsToWin), }; } } diff --git a/osu.Game.Tournament/Screens/Gameplay/Components/RoundDisplay.cs b/osu.Game.Tournament/Screens/Gameplay/Components/RoundDisplay.cs index 5322cf9a76..c8b0d3bdda 100644 --- a/osu.Game.Tournament/Screens/Gameplay/Components/RoundDisplay.cs +++ b/osu.Game.Tournament/Screens/Gameplay/Components/RoundDisplay.cs @@ -3,46 +3,15 @@ using osu.Framework.Allocation; using osu.Framework.Bindables; -using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Shapes; -using osu.Game.Graphics; +using osu.Game.Tournament.Components; using osu.Game.Tournament.Models; -using osuTK.Graphics; namespace osu.Game.Tournament.Screens.Gameplay.Components { - public class RoundDisplay : CompositeDrawable + public class RoundDisplay : TournamentSpriteTextWithBackground { private readonly Bindable currentMatch = new Bindable(); - private readonly TournamentSpriteText text; - - public RoundDisplay() - { - Width = 200; - Height = 20; - - Masking = true; - CornerRadius = 10; - - InternalChildren = new Drawable[] - { - new Box - { - Colour = OsuColour.Gray(0.18f), - RelativeSizeAxes = Axes.Both, - }, - text = new TournamentSpriteText - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Colour = Color4.White, - Font = OsuFont.Torus.With(weight: FontWeight.Regular, size: 16), - }, - }; - } - [BackgroundDependencyLoader] private void load(LadderInfo ladder) { @@ -51,6 +20,6 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components } private void matchChanged(ValueChangedEvent match) => - text.Text = match.NewValue.Round.Value?.Name.Value ?? "Unknown Round"; + Text.Text = match.NewValue.Round.Value?.Name.Value ?? "Unknown Round"; } } diff --git a/osu.Game.Tournament/Screens/Gameplay/Components/TeamDisplay.cs b/osu.Game.Tournament/Screens/Gameplay/Components/TeamDisplay.cs index 891435c48e..4bfeb2bc81 100644 --- a/osu.Game.Tournament/Screens/Gameplay/Components/TeamDisplay.cs +++ b/osu.Game.Tournament/Screens/Gameplay/Components/TeamDisplay.cs @@ -1,47 +1,84 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. +using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Game.Graphics; using osu.Game.Tournament.Components; using osu.Game.Tournament.Models; using osuTK; -using osuTK.Graphics; namespace osu.Game.Tournament.Screens.Gameplay.Components { public class TeamDisplay : DrawableTournamentTeam { - public TeamDisplay(TournamentTeam team, Color4 colour, bool flip) + public TeamDisplay(TournamentTeam team, TeamColour colour, Bindable currentTeamScore, int pointsToWin) : base(team) { - RelativeSizeAxes = Axes.Both; + AutoSizeAxes = Axes.Both; - var anchor = flip ? Anchor.CentreRight : Anchor.CentreLeft; + bool flip = colour == TeamColour.Red; - Anchor = Origin = anchor; + var anchor = flip ? Anchor.TopLeft : Anchor.TopRight; - Flag.Anchor = Flag.Origin = anchor; Flag.RelativeSizeAxes = Axes.None; Flag.Size = new Vector2(60, 40); - Flag.Margin = new MarginPadding(20); + Flag.Origin = anchor; + Flag.Anchor = anchor; + + Margin = new MarginPadding(20); InternalChild = new Container { - RelativeSizeAxes = Axes.Both, + AutoSizeAxes = Axes.Both, Children = new Drawable[] { - Flag, - new TournamentSpriteText + new FillFlowContainer { - Text = team?.FullName.Value.ToUpper() ?? "???", - X = (flip ? -1 : 1) * 90, - Y = -10, - Colour = colour, - Font = OsuFont.Torus.With(weight: FontWeight.Regular, size: 20), - Origin = anchor, - Anchor = anchor, + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(5), + Children = new Drawable[] + { + Flag, + new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Vertical, + Origin = anchor, + Anchor = anchor, + Spacing = new Vector2(5), + Children = new Drawable[] + { + new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(5), + Children = new Drawable[] + { + new DrawableTeamHeader(colour) + { + Scale = new Vector2(0.75f), + Origin = anchor, + Anchor = anchor, + }, + new TeamScore(currentTeamScore, colour, pointsToWin) + { + Origin = anchor, + Anchor = anchor, + } + } + }, + new TournamentSpriteTextWithBackground(team?.FullName.Value ?? "???") + { + Scale = new Vector2(0.5f), + Origin = anchor, + Anchor = anchor, + }, + } + }, + } }, } }; diff --git a/osu.Game.Tournament/Screens/Gameplay/Components/TeamScore.cs b/osu.Game.Tournament/Screens/Gameplay/Components/TeamScore.cs index 608d98a16a..056f8387fb 100644 --- a/osu.Game.Tournament/Screens/Gameplay/Components/TeamScore.cs +++ b/osu.Game.Tournament/Screens/Gameplay/Components/TeamScore.cs @@ -2,10 +2,16 @@ // See the LICENCE file in the repository root for full licence text. using osu.Framework.Bindables; +using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Effects; +using osu.Framework.Graphics.Shapes; +using osu.Game.Graphics; using osu.Game.Graphics.UserInterface; +using osu.Game.Tournament.Models; using osuTK; +using osuTK.Graphics; namespace osu.Game.Tournament.Screens.Gameplay.Components { @@ -14,18 +20,16 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components private readonly Bindable currentTeamScore = new Bindable(); private readonly StarCounter counter; - public TeamScore(Bindable score, bool flip, int count) + public TeamScore(Bindable score, TeamColour colour, int count) { - var anchor = flip ? Anchor.CentreRight : Anchor.CentreLeft; + bool flip = colour == TeamColour.Blue; + var anchor = flip ? Anchor.TopRight : Anchor.TopLeft; - Anchor = anchor; - Origin = anchor; + AutoSizeAxes = Axes.Both; - InternalChild = counter = new StarCounter(count) + InternalChild = counter = new TeamScoreStarCounter(count) { Anchor = anchor, - X = (flip ? -1 : 1) * 90, - Y = 5, Scale = flip ? new Vector2(-1, 1) : Vector2.One, }; @@ -33,6 +37,67 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components currentTeamScore.BindTo(score); } - private void scoreChanged(ValueChangedEvent score) => counter.CountStars = score.NewValue ?? 0; + private void scoreChanged(ValueChangedEvent score) => counter.Current = score.NewValue ?? 0; + + public class TeamScoreStarCounter : StarCounter + { + public TeamScoreStarCounter(int count) + : base(count) + { + } + + public override Star CreateStar() => new LightSquare(); + + public class LightSquare : Star + { + private Box box; + + public LightSquare() + { + Size = new Vector2(22.5f); + + InternalChildren = new Drawable[] + { + new Container + { + RelativeSizeAxes = Axes.Both, + Masking = true, + BorderColour = OsuColour.Gray(0.5f), + BorderThickness = 3, + Children = new Drawable[] + { + new Box + { + Colour = Color4.Transparent, + RelativeSizeAxes = Axes.Both, + AlwaysPresent = true, + }, + } + }, + box = new Box + { + Colour = OsuColour.FromHex("#FFE8AD"), + RelativeSizeAxes = Axes.Both, + }, + }; + + Masking = true; + EdgeEffect = new EdgeEffectParameters + { + Type = EdgeEffectType.Glow, + Colour = OsuColour.FromHex("#FFE8AD").Opacity(0.1f), + Hollow = true, + Radius = 20, + Roundness = 10, + }; + } + + public override void DisplayAt(float scale) + { + box.FadeTo(scale, 500, Easing.OutQuint); + FadeEdgeEffectTo(0.2f * scale, 500, Easing.OutQuint); + } + } + } } } diff --git a/osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs b/osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs index 6ba57c60b8..df3ca59f1f 100644 --- a/osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs +++ b/osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs @@ -30,9 +30,6 @@ namespace osu.Game.Tournament.Screens.Gameplay private OsuButton warmupButton; private MatchIPCInfo ipc; - private readonly Color4 red = new Color4(186, 0, 18, 255); - private readonly Color4 blue = new Color4(17, 136, 170, 255); - [Resolved(canBeNull: true)] private TournamentSceneManager sceneManager { get; set; } @@ -66,36 +63,11 @@ namespace osu.Game.Tournament.Screens.Gameplay // chroma key area for stable gameplay Name = "chroma", RelativeSizeAxes = Axes.X, + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, Height = 512, Colour = new Color4(0, 255, 0, 255), }, - new Container - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Y = -4, - Children = new Drawable[] - { - new Circle - { - Name = "top bar red", - RelativeSizeAxes = Axes.X, - Height = 8, - Width = 0.5f, - Colour = red, - }, - new Circle - { - Name = "top bar blue", - RelativeSizeAxes = Axes.X, - Height = 8, - Width = 0.5f, - Colour = blue, - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - }, - } - }, } }, scoreDisplay = new MatchScoreDisplay From e25206728f39761932ecc8379a34e33d495348be Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 7 Mar 2020 14:46:40 +0900 Subject: [PATCH 17/52] Hide score displays during warmup --- .../Gameplay/Components/MatchHeader.cs | 23 +++++++++++++++---- .../Gameplay/Components/TeamDisplay.cs | 6 ++++- .../Screens/Gameplay/GameplayScreen.cs | 9 ++++++-- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/osu.Game.Tournament/Screens/Gameplay/Components/MatchHeader.cs b/osu.Game.Tournament/Screens/Gameplay/Components/MatchHeader.cs index 45f46c462a..7e9d0178d8 100644 --- a/osu.Game.Tournament/Screens/Gameplay/Components/MatchHeader.cs +++ b/osu.Game.Tournament/Screens/Gameplay/Components/MatchHeader.cs @@ -15,6 +15,18 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components { public class MatchHeader : Container { + private TeamScoreDisplay teamDisplay1; + private TeamScoreDisplay teamDisplay2; + + public bool ShowScores + { + set + { + teamDisplay1.ShowScore = value; + teamDisplay2.ShowScore = value; + } + } + [BackgroundDependencyLoader] private void load() { @@ -43,13 +55,12 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components }, } }, - - new TeamScoreDisplay(TeamColour.Red) + teamDisplay1 = new TeamScoreDisplay(TeamColour.Red) { Anchor = Anchor.TopLeft, Origin = Anchor.TopLeft, }, - new TeamScoreDisplay(TeamColour.Blue) + teamDisplay2 = new TeamScoreDisplay(TeamColour.Blue) { Anchor = Anchor.TopRight, Origin = Anchor.TopRight, @@ -66,6 +77,10 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components private readonly Bindable currentTeam = new Bindable(); private readonly Bindable currentTeamScore = new Bindable(); + private TeamDisplay teamDisplay; + + public bool ShowScore { set => teamDisplay.ShowScore = value; } + public TeamScoreDisplay(TeamColour teamColour) { this.teamColour = teamColour; @@ -116,7 +131,7 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components { InternalChildren = new Drawable[] { - new TeamDisplay(team, teamColour, currentTeamScore, currentMatch.Value.PointsToWin), + teamDisplay = new TeamDisplay(team, teamColour, currentTeamScore, currentMatch.Value.PointsToWin), }; } } diff --git a/osu.Game.Tournament/Screens/Gameplay/Components/TeamDisplay.cs b/osu.Game.Tournament/Screens/Gameplay/Components/TeamDisplay.cs index 4bfeb2bc81..29908e8e7c 100644 --- a/osu.Game.Tournament/Screens/Gameplay/Components/TeamDisplay.cs +++ b/osu.Game.Tournament/Screens/Gameplay/Components/TeamDisplay.cs @@ -12,6 +12,10 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components { public class TeamDisplay : DrawableTournamentTeam { + private readonly TeamScore score; + + public bool ShowScore { set => score.FadeTo(value ? 1 : 0, 200); } + public TeamDisplay(TournamentTeam team, TeamColour colour, Bindable currentTeamScore, int pointsToWin) : base(team) { @@ -63,7 +67,7 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components Origin = anchor, Anchor = anchor, }, - new TeamScore(currentTeamScore, colour, pointsToWin) + score = new TeamScore(currentTeamScore, colour, pointsToWin) { Origin = anchor, Anchor = anchor, diff --git a/osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs b/osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs index df3ca59f1f..78d27c87ff 100644 --- a/osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs +++ b/osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs @@ -48,7 +48,7 @@ namespace osu.Game.Tournament.Screens.Gameplay Loop = true, RelativeSizeAxes = Axes.Both, }, - new MatchHeader(), + header = new MatchHeader(), new Container { RelativeSizeAxes = Axes.X, @@ -108,13 +108,18 @@ namespace osu.Game.Tournament.Screens.Gameplay currentMatch.BindTo(ladder.CurrentMatch); - warmup.BindValueChanged(w => warmupButton.Alpha = !w.NewValue ? 0.5f : 1, true); + warmup.BindValueChanged(w => + { + warmupButton.Alpha = !w.NewValue ? 0.5f : 1; + header.ShowScores = !w.NewValue; + }, true); } private ScheduledDelegate scheduledOperation; private MatchScoreDisplay scoreDisplay; private TourneyState lastState; + private MatchHeader header; private void stateChanged(ValueChangedEvent state) { From 3807c449bd350c838c9e0749c17631a63724aeb2 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 7 Mar 2020 15:28:19 +0900 Subject: [PATCH 18/52] Update chat position --- .../Components/TournamentMatchChatDisplay.cs | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/osu.Game.Tournament/Components/TournamentMatchChatDisplay.cs b/osu.Game.Tournament/Components/TournamentMatchChatDisplay.cs index 48c5b9bd35..6963f0a0cb 100644 --- a/osu.Game.Tournament/Components/TournamentMatchChatDisplay.cs +++ b/osu.Game.Tournament/Components/TournamentMatchChatDisplay.cs @@ -10,7 +10,6 @@ using osu.Game.Overlays.Chat; using osu.Game.Tournament.IPC; using osu.Game.Tournament.Models; using osuTK; -using osuTK.Graphics; namespace osu.Game.Tournament.Components { @@ -23,11 +22,11 @@ namespace osu.Game.Tournament.Components public TournamentMatchChatDisplay() { RelativeSizeAxes = Axes.X; - Y = 100; - Size = new Vector2(0.45f, 112); - Margin = new MarginPadding(10); - Anchor = Anchor.BottomCentre; - Origin = Anchor.BottomCentre; + Size = new Vector2(0.5f, 142); + Anchor = Anchor.BottomLeft; + Origin = Anchor.BottomLeft; + + CornerRadius = 0; } [BackgroundDependencyLoader(true)] @@ -75,19 +74,15 @@ namespace osu.Game.Tournament.Components { } - [BackgroundDependencyLoader] private void load(LadderInfo info) { - //if (info.CurrentMatch.Value.Team1.Value.Players.Any(u => u.Id == Message.Sender.Id)) - // ColourBox.Colour = red; - //else if (info.CurrentMatch.Value.Team2.Value.Players.Any(u => u.Id == Message.Sender.Id)) - // ColourBox.Colour = blue; - //else if (Message.Sender.Colour != null) - // SenderText.Colour = ColourBox.Colour = OsuColour.FromHex(Message.Sender.Colour); + // if (info.CurrentMatch.Value.Team1.Value.Players.Any(u => u.Id == Message.Sender.Id)) + // SenderText.Colour = TournamentGame.COLOUR_RED; + // else if (info.CurrentMatch.Value.Team2.Value.Players.Any(u => u.Id == Message.Sender.Id)) + // SenderText.Colour = TournamentGame.COLOUR_BLUE; + // else if (Message.Sender.Colour != null) + // SenderText.Colour = ColourBox.Colour = OsuColour.FromHex(Message.Sender.Colour); } - - private readonly Color4 red = new Color4(186, 0, 18, 255); - private readonly Color4 blue = new Color4(17, 136, 170, 255); } } } From 9bd837da4123cb2781dc25ac89ca4a2755794924 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 7 Mar 2020 16:22:52 +0900 Subject: [PATCH 19/52] Update match score display --- .../Screens/TestSceneGameplayScreen.cs | 1 + .../Gameplay/Components/MatchScoreDisplay.cs | 53 ++++++++++++------- .../Screens/Gameplay/Components/TeamScore.cs | 2 +- .../Screens/Gameplay/GameplayScreen.cs | 6 +-- 4 files changed, 37 insertions(+), 25 deletions(-) diff --git a/osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs b/osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs index 964930a8de..ae7d9d853a 100644 --- a/osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs +++ b/osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs @@ -21,6 +21,7 @@ namespace osu.Game.Tournament.Tests.Screens typeof(TeamScoreDisplay), typeof(TeamDisplay), typeof(MatchHeader), + typeof(MatchScoreDisplay), }; [BackgroundDependencyLoader] diff --git a/osu.Game.Tournament/Screens/Gameplay/Components/MatchScoreDisplay.cs b/osu.Game.Tournament/Screens/Gameplay/Components/MatchScoreDisplay.cs index fcf1469278..ed14956793 100644 --- a/osu.Game.Tournament/Screens/Gameplay/Components/MatchScoreDisplay.cs +++ b/osu.Game.Tournament/Screens/Gameplay/Components/MatchScoreDisplay.cs @@ -11,16 +11,12 @@ using osu.Game.Graphics; using osu.Game.Graphics.UserInterface; using osu.Game.Tournament.IPC; using osu.Game.Tournament.Models; -using osuTK.Graphics; namespace osu.Game.Tournament.Screens.Gameplay.Components { public class MatchScoreDisplay : CompositeDrawable { - private readonly Color4 red = new Color4(186, 0, 18, 255); - private readonly Color4 blue = new Color4(17, 136, 170, 255); - - private const float bar_height = 20; + private const float bar_height = 18; private readonly BindableInt score1 = new BindableInt(); private readonly BindableInt score2 = new BindableInt(); @@ -28,45 +24,63 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components private readonly MatchScoreCounter score1Text; private readonly MatchScoreCounter score2Text; - private readonly Circle score1Bar; - private readonly Circle score2Bar; + private readonly Drawable score1Bar; + private readonly Drawable score2Bar; public MatchScoreDisplay() { RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; - InternalChildren = new Drawable[] + InternalChildren = new[] { - score1Bar = new Circle + new Box + { + Name = "top bar red (static)", + RelativeSizeAxes = Axes.X, + Height = bar_height / 4, + Width = 0.5f, + Colour = TournamentGame.COLOUR_RED, + Anchor = Anchor.TopCentre, + Origin = Anchor.TopRight + }, + new Box + { + Name = "top bar blue (static)", + RelativeSizeAxes = Axes.X, + Height = bar_height / 4, + Width = 0.5f, + Colour = TournamentGame.COLOUR_BLUE, + Anchor = Anchor.TopCentre, + Origin = Anchor.TopLeft + }, + score1Bar = new Box { Name = "top bar red", RelativeSizeAxes = Axes.X, Height = bar_height, Width = 0, - Colour = red, + Colour = TournamentGame.COLOUR_RED, Anchor = Anchor.TopCentre, Origin = Anchor.TopRight }, score1Text = new MatchScoreCounter { - Colour = red, Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre }, - score2Bar = new Circle + score2Bar = new Box { Name = "top bar blue", RelativeSizeAxes = Axes.X, Height = bar_height, Width = 0, - Colour = blue, + Colour = TournamentGame.COLOUR_BLUE, Anchor = Anchor.TopCentre, Origin = Anchor.TopLeft }, score2Text = new MatchScoreCounter { - Colour = blue, Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre }, @@ -103,10 +117,9 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components winningBar.ResizeWidthTo(Math.Min(0.4f, MathF.Pow(diff / 1500000f, 0.5f) / 2), 400, Easing.OutQuint); } - protected override void Update() + protected override void UpdateAfterChildren() { - base.Update(); - + base.UpdateAfterChildren(); score1Text.X = -Math.Max(5 + score1Text.DrawWidth / 2, score1Bar.DrawWidth); score2Text.X = Math.Max(5 + score2Text.DrawWidth / 2, score2Bar.DrawWidth); } @@ -115,7 +128,7 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components { public MatchScoreCounter() { - Margin = new MarginPadding { Top = bar_height + 5, Horizontal = 10 }; + Margin = new MarginPadding { Top = bar_height, Horizontal = 10 }; Winning = false; } @@ -123,8 +136,8 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components public bool Winning { set => DisplayedCountSpriteText.Font = value - ? OsuFont.Torus.With(weight: FontWeight.Regular, size: 60) - : OsuFont.Torus.With(weight: FontWeight.Light, size: 40); + ? OsuFont.Torus.With(weight: FontWeight.Bold, size: 50) + : OsuFont.Torus.With(weight: FontWeight.Regular, size: 40); } } } diff --git a/osu.Game.Tournament/Screens/Gameplay/Components/TeamScore.cs b/osu.Game.Tournament/Screens/Gameplay/Components/TeamScore.cs index 056f8387fb..c7071484ca 100644 --- a/osu.Game.Tournament/Screens/Gameplay/Components/TeamScore.cs +++ b/osu.Game.Tournament/Screens/Gameplay/Components/TeamScore.cs @@ -50,7 +50,7 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components public class LightSquare : Star { - private Box box; + private readonly Box box; public LightSquare() { diff --git a/osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs b/osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs index 78d27c87ff..ad00dffac7 100644 --- a/osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs +++ b/osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs @@ -15,7 +15,6 @@ using osu.Game.Tournament.Models; using osu.Game.Tournament.Screens.Gameplay.Components; using osu.Game.Tournament.Screens.MapPool; using osu.Game.Tournament.Screens.TeamWin; -using osuTK; using osuTK.Graphics; namespace osu.Game.Tournament.Screens.Gameplay @@ -72,10 +71,9 @@ namespace osu.Game.Tournament.Screens.Gameplay }, scoreDisplay = new MatchScoreDisplay { - Y = -60, - Scale = new Vector2(0.8f), + Y = -147, Anchor = Anchor.BottomCentre, - Origin = Anchor.BottomCentre, + Origin = Anchor.TopCentre, }, new ControlPanel { From 979988235dab7aa08e138e9a1e5f20eeadd6ad67 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 7 Mar 2020 12:49:09 +0900 Subject: [PATCH 20/52] Increase flexibility of StarCounter component --- .../Visual/Gameplay/TestSceneScoreCounter.cs | 12 +-- .../Graphics/UserInterface/StarCounter.cs | 101 ++++++++++-------- .../Carousel/DrawableCarouselBeatmap.cs | 2 +- 3 files changed, 61 insertions(+), 54 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneScoreCounter.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneScoreCounter.cs index ffd6f55b53..88bb83b446 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneScoreCounter.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneScoreCounter.cs @@ -50,7 +50,7 @@ namespace osu.Game.Tests.Visual.Gameplay Origin = Anchor.BottomLeft, Anchor = Anchor.BottomLeft, Position = new Vector2(20, -160), - CountStars = 5, + Current = 5, }; Add(stars); @@ -59,7 +59,7 @@ namespace osu.Game.Tests.Visual.Gameplay Origin = Anchor.BottomLeft, Anchor = Anchor.BottomLeft, Position = new Vector2(20, -190), - Text = stars.CountStars.ToString("0.00"), + Text = stars.Current.ToString("0.00"), }; Add(starsLabel); @@ -69,8 +69,8 @@ namespace osu.Game.Tests.Visual.Gameplay comboCounter.Current.Value = 0; numerator = denominator = 0; accuracyCounter.SetFraction(0, 0); - stars.CountStars = 0; - starsLabel.Text = stars.CountStars.ToString("0.00"); + stars.Current = 0; + starsLabel.Text = stars.Current.ToString("0.00"); }); AddStep(@"Hit! :D", delegate @@ -91,8 +91,8 @@ namespace osu.Game.Tests.Visual.Gameplay AddStep(@"Alter stars", delegate { - stars.CountStars = RNG.NextSingle() * (stars.StarCount + 1); - starsLabel.Text = stars.CountStars.ToString("0.00"); + stars.Current = RNG.NextSingle() * (stars.StarCount + 1); + starsLabel.Text = stars.Current.ToString("0.00"); }); AddStep(@"Stop counters", delegate diff --git a/osu.Game/Graphics/UserInterface/StarCounter.cs b/osu.Game/Graphics/UserInterface/StarCounter.cs index 586cd2ce84..b13d6485ac 100644 --- a/osu.Game/Graphics/UserInterface/StarCounter.cs +++ b/osu.Game/Graphics/UserInterface/StarCounter.cs @@ -13,7 +13,7 @@ namespace osu.Game.Graphics.UserInterface { public class StarCounter : Container { - private readonly Container stars; + private readonly FillFlowContainer stars; /// /// Maximum amount of stars displayed. @@ -23,34 +23,29 @@ namespace osu.Game.Graphics.UserInterface /// public int StarCount { get; } - private double animationDelay => 80; + /// + /// The added delay for each subsequent star to be animated. + /// + protected virtual double AnimationDelay => 80; - private double scalingDuration => 1000; - private Easing scalingEasing => Easing.OutElasticHalf; - private float minStarScale => 0.4f; - - private double fadingDuration => 100; - private float minStarAlpha => 0.5f; - - private const float star_size = 20; private const float star_spacing = 4; - private float countStars; + private float current; /// /// Amount of stars represented. /// - public float CountStars + public float Current { - get => countStars; + get => current; set { - if (countStars == value) return; + if (current == value) return; if (IsLoaded) - transformCount(value); - countStars = value; + animate(value); + current = value; } } @@ -71,11 +66,13 @@ namespace osu.Game.Graphics.UserInterface AutoSizeAxes = Axes.Both, Direction = FillDirection.Horizontal, Spacing = new Vector2(star_spacing), - ChildrenEnumerable = Enumerable.Range(0, StarCount).Select(i => new Star { Alpha = minStarAlpha }) + ChildrenEnumerable = Enumerable.Range(0, StarCount).Select(i => CreateStar()) } }; } + public virtual Star CreateStar() => new DefaultStar(); + protected override void LoadComplete() { base.LoadComplete(); @@ -86,63 +83,60 @@ namespace osu.Game.Graphics.UserInterface public void ResetCount() { - countStars = 0; + current = 0; StopAnimation(); } public void ReplayAnimation() { - var t = countStars; + var t = current; ResetCount(); - CountStars = t; + Current = t; } public void StopAnimation() { - int i = 0; - + animate(current); foreach (var star in stars.Children) + star.FinishTransforms(true); + } + + private float getStarScale(int i, float value) => i + 1 <= value ? 1.0f : Interpolation.ValueAt(value, 0, 1.0f, i, i + 1); + + private void animate(float newValue) + { + for (var i = 0; i < stars.Children.Count; i++) { + var star = stars.Children[i]; + star.ClearTransforms(true); - star.FadeTo(i < countStars ? 1.0f : minStarAlpha); - star.Icon.ScaleTo(getStarScale(i, countStars)); - i++; + + double delay = (current <= newValue ? Math.Max(i - current, 0) : Math.Max(current - 1 - i, 0)) * AnimationDelay; + + using (star.BeginDelayedSequence(delay, true)) + star.DisplayAt(getStarScale(i, newValue)); } } - private float getStarScale(int i, float value) + public class DefaultStar : Star { - if (value <= i) - return minStarScale; + private const double scaling_duration = 1000; - return i + 1 <= value ? 1.0f : Interpolation.ValueAt(value, minStarScale, 1.0f, i, i + 1); - } + private const double fading_duration = 100; - private void transformCount(float newValue) - { - int i = 0; + private const Easing scaling_easing = Easing.OutElasticHalf; - foreach (var star in stars.Children) - { - star.ClearTransforms(true); + private const float min_star_scale = 0.4f; - var delay = (countStars <= newValue ? Math.Max(i - countStars, 0) : Math.Max(countStars - 1 - i, 0)) * animationDelay; - star.Delay(delay).FadeTo(i < newValue ? 1.0f : minStarAlpha, fadingDuration); - star.Icon.Delay(delay).ScaleTo(getStarScale(i, newValue), scalingDuration, scalingEasing); + private const float star_size = 20; - i++; - } - } - - private class Star : Container - { public readonly SpriteIcon Icon; - public Star() + public DefaultStar() { Size = new Vector2(star_size); - Child = Icon = new SpriteIcon + InternalChild = Icon = new SpriteIcon { Size = new Vector2(star_size), Icon = FontAwesome.Solid.Star, @@ -150,6 +144,19 @@ namespace osu.Game.Graphics.UserInterface Origin = Anchor.Centre, }; } + + public override void DisplayAt(float scale) + { + scale = Math.Clamp(scale, min_star_scale, 1); + + this.FadeTo(scale, fading_duration); + Icon.ScaleTo(scale, scaling_duration, scaling_easing); + } + } + + public abstract class Star : CompositeDrawable + { + public abstract void DisplayAt(float scale); } } } diff --git a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs index d9eeec9f85..50419a5fb9 100644 --- a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs +++ b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs @@ -123,7 +123,7 @@ namespace osu.Game.Screens.Select.Carousel }, starCounter = new StarCounter { - CountStars = (float)beatmap.StarDifficulty, + Current = (float)beatmap.StarDifficulty, Scale = new Vector2(0.8f), } } From 059aea8ead39601ffe0ff79d21333bb0443045b3 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Mar 2020 16:09:07 +0900 Subject: [PATCH 21/52] Initial pass of schedule screen design update --- .../Screens/Schedule/ScheduleScreen.cs | 126 +++++++++++++----- 1 file changed, 95 insertions(+), 31 deletions(-) diff --git a/osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs b/osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs index 4c93c04fcf..9ca1aa626a 100644 --- a/osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs +++ b/osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs @@ -3,6 +3,7 @@ using System; using System.Linq; +using Humanizer; using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; @@ -18,7 +19,7 @@ using osuTK.Graphics; namespace osu.Game.Tournament.Screens.Schedule { - public class ScheduleScreen : TournamentScreen + public class ScheduleScreen : TournamentScreen // IProvidesVideo { private readonly Bindable currentMatch = new Bindable(); private Container mainContainer; @@ -38,10 +39,63 @@ namespace osu.Game.Tournament.Screens.Schedule RelativeSizeAxes = Axes.Both, Loop = true, }, - mainContainer = new Container + new Container { RelativeSizeAxes = Axes.Both, - } + Padding = new MarginPadding(100) { Bottom = 50 }, + Children = new Drawable[] + { + new GridContainer + { + RelativeSizeAxes = Axes.Both, + RowDimensions = new[] + { + new Dimension(GridSizeMode.AutoSize), + new Dimension(), + }, + Content = new[] + { + new Drawable[] + { + new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Vertical, + Children = new Drawable[] + { + new DrawableTournamentTitleText(), + new Container + { + Margin = new MarginPadding { Top = 40 }, + AutoSizeAxes = Axes.Both, + Children = new Drawable[] + { + new Box + { + Colour = Color4.White, + Size = new Vector2(50, 10), + }, + new TournamentSpriteTextWithBackground("Schedule") + { + X = 60, + Scale = new Vector2(0.8f) + } + } + }, + } + }, + }, + new Drawable[] + { + mainContainer = new Container + { + RelativeSizeAxes = Axes.Both, + } + } + } + } + } + }, }; currentMatch.BindValueChanged(matchChanged); @@ -91,7 +145,7 @@ namespace osu.Game.Tournament.Screens.Schedule .Take(8) .Select(p => new ScheduleMatch(p)) }, - new ScheduleContainer("match overview") + new ScheduleContainer("upcoming matches") { RelativeSizeAxes = Axes.Both, Width = 0.6f, @@ -100,26 +154,45 @@ namespace osu.Game.Tournament.Screens.Schedule } } }, - new ScheduleContainer("current match") + new ScheduleContainer("coming up next") { RelativeSizeAxes = Axes.Both, Height = 0.25f, Children = new Drawable[] { - new TournamentSpriteText + new FillFlowContainer { - Margin = new MarginPadding { Left = -10, Bottom = 10, Top = -5 }, - Spacing = new Vector2(10, 0), - Text = match.NewValue.Round.Value?.Name.Value, - Colour = Color4.Black, - Font = OsuFont.Torus.With(size: 20) - }, - new ScheduleMatch(match.NewValue, false), - new TournamentSpriteText - { - Text = "Start Time " + match.NewValue.Date.Value.ToUniversalTime().ToString("HH:mm UTC"), - Colour = Color4.Black, - Font = OsuFont.Torus.With(size: 20) + RelativeSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(30), + Children = new Drawable[] + { + new ScheduleMatch(match.NewValue, false) + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + }, + new TournamentSpriteTextWithBackground(match.NewValue.Round.Value?.Name.Value) + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + Scale = new Vector2(0.5f) + }, + new TournamentSpriteText + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + Text = match.NewValue.Team1.Value?.FullName + " vs " + match.NewValue.Team2.Value?.FullName, + Font = OsuFont.Torus.With(size: 24, weight: FontWeight.SemiBold) + }, + new TournamentSpriteText + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + Text = $"Starting {match.NewValue.Date.Value.Humanize()}", + Font = OsuFont.Torus.With(size: 24, weight: FontWeight.Regular) + }, + } }, } } @@ -170,29 +243,20 @@ namespace osu.Game.Tournament.Screens.Schedule public ScheduleContainer(string title) { - Padding = new MarginPadding { Left = 30, Top = 30 }; + Padding = new MarginPadding { Left = 30, Top = 10 }; InternalChildren = new Drawable[] { - new TournamentSpriteText + new TournamentSpriteTextWithBackground(title.ToUpperInvariant()) { X = 30, - Text = title, - Colour = Color4.Black, - Spacing = new Vector2(10, 0), - Font = OsuFont.Torus.With(size: 30) + Scale = new Vector2(0.5f) }, content = new FillFlowContainer { Direction = FillDirection.Vertical, RelativeSizeAxes = Axes.Both, - Margin = new MarginPadding(40) + Margin = new MarginPadding(10) }, - new Circle - { - Colour = new Color4(233, 187, 79, 255), - Width = 5, - RelativeSizeAxes = Axes.Y, - } }; } } From 434feb5ac6b1986d27eb2907ca042be60175759b Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 7 Mar 2020 13:26:54 +0900 Subject: [PATCH 22/52] Fix alignment on schedule screen --- .../Screens/TestSceneScheduleScreen.cs | 3 ++ .../Components/DrawableTournamentMatch.cs | 12 +++---- .../Screens/Schedule/ScheduleScreen.cs | 36 ++++++++++++------- 3 files changed, 31 insertions(+), 20 deletions(-) diff --git a/osu.Game.Tournament.Tests/Screens/TestSceneScheduleScreen.cs b/osu.Game.Tournament.Tests/Screens/TestSceneScheduleScreen.cs index 2277302e98..b240ef3ae5 100644 --- a/osu.Game.Tournament.Tests/Screens/TestSceneScheduleScreen.cs +++ b/osu.Game.Tournament.Tests/Screens/TestSceneScheduleScreen.cs @@ -2,6 +2,8 @@ // See the LICENCE file in the repository root for full licence text. using osu.Framework.Allocation; +using osu.Framework.Graphics; +using osu.Game.Tournament.Components; using osu.Game.Tournament.Screens.Schedule; namespace osu.Game.Tournament.Tests.Screens @@ -11,6 +13,7 @@ namespace osu.Game.Tournament.Tests.Screens [BackgroundDependencyLoader] private void load() { + Add(new TourneyVideo("main") { RelativeSizeAxes = Axes.Both }); Add(new ScheduleScreen()); } } diff --git a/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs b/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs index c4b670f059..d0ba9a96f4 100644 --- a/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs +++ b/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs @@ -23,7 +23,7 @@ namespace osu.Game.Tournament.Screens.Ladder.Components private readonly bool editor; protected readonly FillFlowContainer Flow; private readonly Drawable selectionBox; - private readonly Drawable currentMatchSelectionBox; + protected readonly Drawable CurrentMatchSelectionBox; private Bindable globalSelection; [Resolved(CanBeNull = true)] @@ -55,11 +55,9 @@ namespace osu.Game.Tournament.Screens.Ladder.Components Colour = Color4.YellowGreen, Child = new Box { RelativeSizeAxes = Axes.Both } }, - currentMatchSelectionBox = new Container + CurrentMatchSelectionBox = new Container { - CornerRadius = 5, - Masking = true, - Scale = new Vector2(1.05f), + Scale = new Vector2(1.05f, 1.1f), RelativeSizeAxes = Axes.Both, Anchor = Anchor.Centre, Origin = Anchor.Centre, @@ -128,9 +126,9 @@ namespace osu.Game.Tournament.Screens.Ladder.Components private void updateCurrentMatch() { if (Match.Current.Value) - currentMatchSelectionBox.Show(); + CurrentMatchSelectionBox.Show(); else - currentMatchSelectionBox.Hide(); + CurrentMatchSelectionBox.Hide(); } private bool selected; diff --git a/osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs b/osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs index 9ca1aa626a..634ceb11a5 100644 --- a/osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs +++ b/osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs @@ -127,7 +127,7 @@ namespace osu.Game.Tournament.Screens.Schedule new Container { RelativeSizeAxes = Axes.Both, - Height = 0.65f, + Height = 0.74f, Child = new FillFlowContainer { RelativeSizeAxes = Axes.Both, @@ -162,7 +162,7 @@ namespace osu.Game.Tournament.Screens.Schedule { new FillFlowContainer { - RelativeSizeAxes = Axes.Both, + AutoSizeAxes = Axes.Both, Direction = FillDirection.Horizontal, Spacing = new Vector2(30), Children = new Drawable[] @@ -207,6 +207,8 @@ namespace osu.Game.Tournament.Screens.Schedule { Flow.Direction = FillDirection.Horizontal; + Scale = new Vector2(0.8f); + bool conditional = match is ConditionalTournamentMatch; if (conditional) @@ -218,15 +220,16 @@ namespace osu.Game.Tournament.Screens.Schedule { Anchor = Anchor.TopRight, Origin = Anchor.TopLeft, - Colour = Color4.Black, + Colour = OsuColour.Gray(0.7f), Alpha = conditional ? 0.6f : 1, + Font = OsuFont.Torus, Margin = new MarginPadding { Horizontal = 10, Vertical = 5 }, }); AddInternal(new TournamentSpriteText { Anchor = Anchor.BottomRight, Origin = Anchor.BottomLeft, - Colour = Color4.Black, + Colour = OsuColour.Gray(0.7f), Alpha = conditional ? 0.6f : 1, Margin = new MarginPadding { Horizontal = 10, Vertical = 5 }, Text = match.Date.Value.ToUniversalTime().ToString("HH:mm UTC") + (conditional ? " (conditional)" : "") @@ -243,19 +246,26 @@ namespace osu.Game.Tournament.Screens.Schedule public ScheduleContainer(string title) { - Padding = new MarginPadding { Left = 30, Top = 10 }; + Padding = new MarginPadding { Left = 60, Top = 10 }; InternalChildren = new Drawable[] { - new TournamentSpriteTextWithBackground(title.ToUpperInvariant()) + new FillFlowContainer { - X = 30, - Scale = new Vector2(0.5f) - }, - content = new FillFlowContainer - { - Direction = FillDirection.Vertical, RelativeSizeAxes = Axes.Both, - Margin = new MarginPadding(10) + Direction = FillDirection.Vertical, + Children = new Drawable[] + { + new TournamentSpriteTextWithBackground(title.ToUpperInvariant()) + { + Scale = new Vector2(0.5f) + }, + content = new FillFlowContainer + { + Direction = FillDirection.Vertical, + RelativeSizeAxes = Axes.Both, + Margin = new MarginPadding(10) + }, + } }, }; } From 9934a97bd0a9dc3a7eb97113b7a74af88fdb004a Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 7 Mar 2020 16:31:28 +0900 Subject: [PATCH 23/52] Limit upcoming matches displayed to 8 --- osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs b/osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs index 634ceb11a5..01d6d33fee 100644 --- a/osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs +++ b/osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs @@ -116,7 +116,7 @@ namespace osu.Game.Tournament.Screens.Schedule .SelectMany(m => m.ConditionalMatches.Where(cp => m.Acronyms.TrueForAll(a => cp.Acronyms.Contains(a)))); upcoming = upcoming.Concat(conditionals); - upcoming = upcoming.OrderBy(p => p.Date.Value).Take(12); + upcoming = upcoming.OrderBy(p => p.Date.Value).Take(8); mainContainer.Child = new FillFlowContainer { From 6c0a27e0b956e0ff955c77be57981614a680be6e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 7 Mar 2020 16:38:50 +0900 Subject: [PATCH 24/52] Improve look of selected match --- .../Screens/Ladder/Components/DrawableTournamentMatch.cs | 2 +- osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs b/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs index d0ba9a96f4..320e76775a 100644 --- a/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs +++ b/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs @@ -62,7 +62,7 @@ namespace osu.Game.Tournament.Screens.Ladder.Components Anchor = Anchor.Centre, Origin = Anchor.Centre, Alpha = 0, - Colour = Color4.OrangeRed, + Colour = Color4.White, Child = new Box { RelativeSizeAxes = Axes.Both } }, Flow = new FillFlowContainer diff --git a/osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs b/osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs index 01d6d33fee..27a1fe98d2 100644 --- a/osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs +++ b/osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs @@ -209,6 +209,8 @@ namespace osu.Game.Tournament.Screens.Schedule Scale = new Vector2(0.8f); + CurrentMatchSelectionBox.Scale = new Vector2(1.02f, 1.15f); + bool conditional = match is ConditionalTournamentMatch; if (conditional) From 8ab9ca77d60b4d8c065454b5f495ec87e75bc0cc Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 8 Mar 2020 15:06:06 +0900 Subject: [PATCH 25/52] Fix next match timer not updating --- .../Screens/Schedule/ScheduleScreen.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs b/osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs index 27a1fe98d2..0fcec645e3 100644 --- a/osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs +++ b/osu.Game.Tournament/Screens/Schedule/ScheduleScreen.cs @@ -3,7 +3,6 @@ using System; using System.Linq; -using Humanizer; using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; @@ -185,12 +184,24 @@ namespace osu.Game.Tournament.Screens.Schedule Text = match.NewValue.Team1.Value?.FullName + " vs " + match.NewValue.Team2.Value?.FullName, Font = OsuFont.Torus.With(size: 24, weight: FontWeight.SemiBold) }, - new TournamentSpriteText + new FillFlowContainer { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, - Text = $"Starting {match.NewValue.Date.Value.Humanize()}", - Font = OsuFont.Torus.With(size: 24, weight: FontWeight.Regular) + Children = new Drawable[] + { + new TournamentSpriteText + { + Text = "Starting ", + Font = OsuFont.Torus.With(size: 24, weight: FontWeight.Regular) + }, + new DrawableDate(match.NewValue.Date.Value) + { + Font = OsuFont.Torus.With(size: 24, weight: FontWeight.Regular) + } + } }, } }, From 3a3a2ad2a71126973caac66e7b98ee7acf938caa Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 8 Mar 2020 14:47:29 +0900 Subject: [PATCH 26/52] Fix video looping not propagating when set too early in initialisation --- osu.Game.Tournament/Components/TourneyVideo.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tournament/Components/TourneyVideo.cs b/osu.Game.Tournament/Components/TourneyVideo.cs index 7d2eaff515..786b7b3c67 100644 --- a/osu.Game.Tournament/Components/TourneyVideo.cs +++ b/osu.Game.Tournament/Components/TourneyVideo.cs @@ -38,7 +38,8 @@ namespace osu.Game.Tournament.Components { RelativeSizeAxes = Axes.Both, FillMode = FillMode.Fit, - Clock = new FramedClock(manualClock = new ManualClock()) + Clock = new FramedClock(manualClock = new ManualClock()), + Loop = loop, }; } else if (drawFallbackGradient) @@ -51,10 +52,13 @@ namespace osu.Game.Tournament.Components } } + private bool loop; + public bool Loop { set { + loop = value; if (video != null) video.Loop = value; } From a85cef2f064640f6a5d7029b65aded95e9ed353b Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 8 Mar 2020 14:23:13 +0900 Subject: [PATCH 27/52] Reset win screen video on display; add fade in transition --- osu.Game.Tournament/Components/TourneyVideo.cs | 2 ++ .../Screens/TeamWin/TeamWinScreen.cs | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tournament/Components/TourneyVideo.cs b/osu.Game.Tournament/Components/TourneyVideo.cs index 7d2eaff515..9b1350ca23 100644 --- a/osu.Game.Tournament/Components/TourneyVideo.cs +++ b/osu.Game.Tournament/Components/TourneyVideo.cs @@ -60,6 +60,8 @@ namespace osu.Game.Tournament.Components } } + public void Reset() => manualClock.CurrentTime = 0; + protected override void Update() { base.Update(); diff --git a/osu.Game.Tournament/Screens/TeamWin/TeamWinScreen.cs b/osu.Game.Tournament/Screens/TeamWin/TeamWinScreen.cs index 8b3f4488d0..3870f486e1 100644 --- a/osu.Game.Tournament/Screens/TeamWin/TeamWinScreen.cs +++ b/osu.Game.Tournament/Screens/TeamWin/TeamWinScreen.cs @@ -62,7 +62,9 @@ namespace osu.Game.Tournament.Screens.TeamWin update(); } - private void update() + private bool firstDisplay = true; + + private void update() => Schedule(() => { var match = currentMatch.Value; @@ -75,6 +77,15 @@ namespace osu.Game.Tournament.Screens.TeamWin redWinVideo.Alpha = match.WinnerColour == TeamColour.Red ? 1 : 0; blueWinVideo.Alpha = match.WinnerColour == TeamColour.Blue ? 1 : 0; + if (firstDisplay) + { + if (match.WinnerColour == TeamColour.Red) + redWinVideo.Reset(); + else + blueWinVideo.Reset(); + firstDisplay = false; + } + mainContainer.Children = new Drawable[] { new DrawableTeamFlag(match.Winner) @@ -108,6 +119,8 @@ namespace osu.Game.Tournament.Screens.TeamWin } }, }; - } + mainContainer.FadeOut(); + mainContainer.Delay(2000).FadeIn(1600, Easing.OutQuint); + }); } } From 5d5910822bc6d45d595f2eb83332b17bdfeb3743 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Mar 2020 16:08:12 +0900 Subject: [PATCH 28/52] Initial pass of intro screen design update --- .../Screens/TeamIntro/TeamIntroScreen.cs | 153 +++--------------- 1 file changed, 22 insertions(+), 131 deletions(-) diff --git a/osu.Game.Tournament/Screens/TeamIntro/TeamIntroScreen.cs b/osu.Game.Tournament/Screens/TeamIntro/TeamIntroScreen.cs index d584c21058..2daf9d35f3 100644 --- a/osu.Game.Tournament/Screens/TeamIntro/TeamIntroScreen.cs +++ b/osu.Game.Tournament/Screens/TeamIntro/TeamIntroScreen.cs @@ -6,7 +6,6 @@ using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Platform; -using osu.Game.Graphics; using osu.Game.Tournament.Components; using osu.Game.Tournament.Models; using osuTK; @@ -49,141 +48,33 @@ namespace osu.Game.Tournament.Screens.TeamIntro return; } + const float y_flag_offset = 288; + + const float y_offset = 460; + mainContainer.Children = new Drawable[] { - new TeamWithPlayers(match.NewValue.Team1.Value, true) - { - RelativeSizeAxes = Axes.Both, - Width = 0.5f, - Height = 0.6f, - Anchor = Anchor.Centre, - Origin = Anchor.CentreRight - }, - new TeamWithPlayers(match.NewValue.Team2.Value) - { - RelativeSizeAxes = Axes.Both, - Width = 0.5f, - Height = 0.6f, - Anchor = Anchor.Centre, - Origin = Anchor.CentreLeft - }, new RoundDisplay(match.NewValue) { - RelativeSizeAxes = Axes.Both, - Height = 0.25f, - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - Y = 180, - } + Position = new Vector2(100, 100) + }, + new DrawableTeamFlag(match.NewValue.Team1.Value) + { + Position = new Vector2(160, y_flag_offset), + }, + new DrawableTeamWithPlayers(match.NewValue.Team1.Value, TeamColour.Red) + { + Position = new Vector2(160, y_offset), + }, + new DrawableTeamFlag(match.NewValue.Team2.Value) + { + Position = new Vector2(740, y_flag_offset), + }, + new DrawableTeamWithPlayers(match.NewValue.Team2.Value, TeamColour.Blue) + { + Position = new Vector2(740, y_offset), + }, }; } - - private class RoundDisplay : CompositeDrawable - { - public RoundDisplay(TournamentMatch match) - { - InternalChildren = new Drawable[] - { - new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - Direction = FillDirection.Vertical, - Spacing = new Vector2(0, 10), - Children = new Drawable[] - { - new TournamentSpriteText - { - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - Colour = OsuColour.Gray(0.33f), - Text = match.Round.Value?.Name.Value ?? "Unknown Round", - Font = OsuFont.Torus.With(size: 26, weight: FontWeight.Light) - }, - } - } - }; - } - } - - private class TeamWithPlayers : CompositeDrawable - { - public TeamWithPlayers(TournamentTeam team, bool left = false) - { - FillFlowContainer players; - var colour = left ? TournamentGame.COLOUR_RED : TournamentGame.COLOUR_BLUE; - InternalChildren = new Drawable[] - { - new TeamDisplay(team) - { - Anchor = left ? Anchor.CentreRight : Anchor.CentreLeft, - Origin = Anchor.TopCentre, - RelativePositionAxes = Axes.Both, - X = (left ? -1 : 1) * 0.3145f, - Y = -0.077f, - }, - players = new FillFlowContainer - { - Direction = FillDirection.Vertical, - AutoSizeAxes = Axes.Both, - Spacing = new Vector2(0, 5), - Padding = new MarginPadding(20), - Anchor = left ? Anchor.CentreRight : Anchor.CentreLeft, - Origin = left ? Anchor.CentreRight : Anchor.CentreLeft, - RelativePositionAxes = Axes.Both, - X = (left ? -1 : 1) * 0.58f, - }, - }; - - if (team != null) - { - foreach (var p in team.Players) - { - players.Add(new TournamentSpriteText - { - Text = p.Username, - Font = OsuFont.Torus.With(size: 24), - Colour = colour, - Anchor = left ? Anchor.CentreRight : Anchor.CentreLeft, - Origin = left ? Anchor.CentreRight : Anchor.CentreLeft, - }); - } - } - } - - private class TeamDisplay : DrawableTournamentTeam - { - public TeamDisplay(TournamentTeam team) - : base(team) - { - AutoSizeAxes = Axes.Both; - - Flag.Anchor = Flag.Origin = Anchor.TopCentre; - Flag.RelativeSizeAxes = Axes.None; - Flag.Size = new Vector2(300, 200); - Flag.Scale = new Vector2(0.32f); - - InternalChild = new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Vertical, - Spacing = new Vector2(160), - Children = new Drawable[] - { - Flag, - new TournamentSpriteText - { - Text = team?.FullName.Value ?? "???", - Font = OsuFont.Torus.With(size: 20, weight: FontWeight.Regular), - Colour = OsuColour.Gray(0.2f), - Origin = Anchor.TopCentre, - Anchor = Anchor.TopCentre, - }, - } - }; - } - } - } } } From 8e4b15aaa5f0a4e3aeaf66a85d628ecf9f7df54d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 8 Mar 2020 17:43:55 +0900 Subject: [PATCH 29/52] Update test scene --- osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs b/osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs index ae7d9d853a..34fa7a4997 100644 --- a/osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs +++ b/osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using osu.Framework.Allocation; using osu.Game.Tournament.Components; +using osu.Game.Tournament.Screens; using osu.Game.Tournament.Screens.Gameplay; using osu.Game.Tournament.Screens.Gameplay.Components; @@ -13,7 +14,7 @@ namespace osu.Game.Tournament.Tests.Screens public class TestSceneGameplayScreen : TournamentTestScene { [Cached] - private TournamentMatchChatDisplay chat = new TournamentMatchChatDisplay(); + private TournamentMatchChatDisplay chat = new TournamentMatchChatDisplay { Width = 0.5f }; public override IReadOnlyList RequiredTypes => new[] { @@ -22,6 +23,8 @@ namespace osu.Game.Tournament.Tests.Screens typeof(TeamDisplay), typeof(MatchHeader), typeof(MatchScoreDisplay), + typeof(BeatmapInfoScreen), + typeof(SongBar), }; [BackgroundDependencyLoader] From 0102aaf32a53e6c2a0714ca79a85ca7b24fe949d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 8 Mar 2020 18:11:57 +0900 Subject: [PATCH 30/52] Move chat expand/contract logic local to tournament --- .../Components/TournamentMatchChatDisplay.cs | 4 ++++ osu.Game/Online/Chat/StandAloneChatDisplay.cs | 12 ------------ 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/osu.Game.Tournament/Components/TournamentMatchChatDisplay.cs b/osu.Game.Tournament/Components/TournamentMatchChatDisplay.cs index 48c5b9bd35..f9cd18be2c 100644 --- a/osu.Game.Tournament/Components/TournamentMatchChatDisplay.cs +++ b/osu.Game.Tournament/Components/TournamentMatchChatDisplay.cs @@ -66,6 +66,10 @@ namespace osu.Game.Tournament.Components } } + public void Expand() => this.FadeIn(300); + + public void Contract() => this.FadeOut(200); + protected override ChatLine CreateMessage(Message message) => new MatchMessage(message); protected class MatchMessage : StandAloneMessage diff --git a/osu.Game/Online/Chat/StandAloneChatDisplay.cs b/osu.Game/Online/Chat/StandAloneChatDisplay.cs index 881dd19d8e..0914f688e9 100644 --- a/osu.Game/Online/Chat/StandAloneChatDisplay.cs +++ b/osu.Game/Online/Chat/StandAloneChatDisplay.cs @@ -92,18 +92,6 @@ namespace osu.Game.Online.Chat textbox.Text = string.Empty; } - public void Expand() - { - this.FadeIn(300); - this.MoveToY(0, 500, Easing.OutQuint); - } - - public void Contract() - { - this.FadeOut(200); - this.MoveToY(100, 500, Easing.In); - } - protected virtual ChatLine CreateMessage(Message message) => new StandAloneMessage(message); private void channelChanged(ValueChangedEvent e) From 3744aaf55f228462c7b1227f1034fb137197eaa1 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 8 Mar 2020 18:16:32 +0900 Subject: [PATCH 31/52] Update vertical alignment of chroma area --- osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs b/osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs index ad00dffac7..4d770855cd 100644 --- a/osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs +++ b/osu.Game.Tournament/Screens/Gameplay/GameplayScreen.cs @@ -52,9 +52,9 @@ namespace osu.Game.Tournament.Screens.Gameplay { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, - Y = 5, - Anchor = Anchor.Centre, - Origin = Anchor.Centre, + Y = 110, + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, Children = new Drawable[] { new Box From 8b0b910196f693343a7feb3a21be0c49e0a6de85 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 8 Mar 2020 14:46:09 +0900 Subject: [PATCH 32/52] Update song / chat / beatmap info display to reflect new design --- .../Screens/TestSceneGameplayScreen.cs | 1 + osu.Game.Tournament/Components/SongBar.cs | 204 ++++++++---------- .../Components/TournamentBeatmapPanel.cs | 8 +- .../Components/TournamentMatchChatDisplay.cs | 3 +- .../Screens/BeatmapInfoScreen.cs | 1 + osu.Game.Tournament/TournamentSceneManager.cs | 7 +- 6 files changed, 107 insertions(+), 117 deletions(-) diff --git a/osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs b/osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs index 34fa7a4997..1e20687a87 100644 --- a/osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs +++ b/osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs @@ -35,3 +35,4 @@ namespace osu.Game.Tournament.Tests.Screens } } } + diff --git a/osu.Game.Tournament/Components/SongBar.cs b/osu.Game.Tournament/Components/SongBar.cs index 48ea36a8f3..8d766ec9ba 100644 --- a/osu.Game.Tournament/Components/SongBar.cs +++ b/osu.Game.Tournament/Components/SongBar.cs @@ -4,10 +4,8 @@ using System; using osu.Framework.Allocation; using osu.Framework.Bindables; -using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Effects; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Sprites; using osu.Game.Beatmaps; @@ -24,6 +22,8 @@ namespace osu.Game.Tournament.Components { private BeatmapInfo beatmap; + private const float height = 145; + [Resolved] private IBindable ruleset { get; set; } @@ -52,15 +52,7 @@ namespace osu.Game.Tournament.Components } } - private Container panelContents; - private Container innerPanel; - private Container outerPanel; - private TournamentBeatmapPanel panel; - - private float panelWidth => expanded ? 0.6f : 1; - - private const float main_width = 0.97f; - private const float inner_panel_width = 0.7f; + private FillFlowContainer flow; private bool expanded; @@ -70,86 +62,27 @@ namespace osu.Game.Tournament.Components set { expanded = value; - panel?.ResizeWidthTo(panelWidth, 800, Easing.OutQuint); - - if (expanded) - { - innerPanel.ResizeWidthTo(inner_panel_width, 800, Easing.OutQuint); - outerPanel.ResizeWidthTo(main_width, 800, Easing.OutQuint); - } - else - { - innerPanel.ResizeWidthTo(1, 800, Easing.OutQuint); - outerPanel.ResizeWidthTo(0.25f, 800, Easing.OutQuint); - } + flow.Direction = expanded ? FillDirection.Full : FillDirection.Vertical; } } [BackgroundDependencyLoader] private void load() { - RelativeSizeAxes = Axes.Both; + RelativeSizeAxes = Axes.X; + AutoSizeAxes = Axes.Y; InternalChildren = new Drawable[] { - outerPanel = new Container + flow = new FillFlowContainer { - Masking = true, - EdgeEffect = new EdgeEffectParameters - { - Colour = Color4.Black.Opacity(0.2f), - Type = EdgeEffectType.Shadow, - Radius = 5, - }, RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + LayoutDuration = 500, + LayoutEasing = Easing.OutQuint, + Direction = FillDirection.Full, Anchor = Anchor.BottomRight, Origin = Anchor.BottomRight, - RelativePositionAxes = Axes.X, - X = -(1 - main_width) / 2, - Y = -10, - Width = main_width, - Height = TournamentBeatmapPanel.HEIGHT, - CornerRadius = TournamentBeatmapPanel.HEIGHT / 2, - CornerExponent = 2, - Children = new Drawable[] - { - new Box - { - RelativeSizeAxes = Axes.Both, - Colour = OsuColour.Gray(0.93f), - }, - new OsuLogo - { - Triangles = false, - Colour = OsuColour.Gray(0.33f), - Scale = new Vector2(0.08f), - Margin = new MarginPadding(50), - Anchor = Anchor.CentreRight, - Origin = Anchor.CentreRight, - }, - innerPanel = new Container - { - Masking = true, - CornerRadius = TournamentBeatmapPanel.HEIGHT / 2, - CornerExponent = 2, - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - RelativeSizeAxes = Axes.Both, - Width = inner_panel_width, - Children = new Drawable[] - { - new Box - { - RelativeSizeAxes = Axes.Both, - Colour = OsuColour.Gray(0.86f), - }, - panelContents = new Container - { - RelativeSizeAxes = Axes.Both, - } - } - } - } } }; @@ -160,7 +93,7 @@ namespace osu.Game.Tournament.Components { if (beatmap == null) { - panelContents.Clear(); + flow.Clear(); return; } @@ -219,34 +152,86 @@ namespace osu.Game.Tournament.Components break; } - panelContents.Children = new Drawable[] + flow.Children = new Drawable[] { - new DiffPiece(("Length", TimeSpan.FromMilliseconds(length).ToString(@"mm\:ss"))) + new Container { - Anchor = Anchor.CentreLeft, - Origin = Anchor.BottomLeft, + RelativeSizeAxes = Axes.X, + Height = height / 2, + Width = 0.5f, + Anchor = Anchor.BottomRight, + Origin = Anchor.BottomRight, + + Children = new Drawable[] + { + new GridContainer + { + RelativeSizeAxes = Axes.Both, + + Content = new[] + { + new Drawable[] + { + new FillFlowContainer + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Direction = FillDirection.Vertical, + Children = new Drawable[] + { + new DiffPiece(stats), + new DiffPiece(("Star Rating", $"{beatmap.StarDifficulty:0.#}{srExtra}")) + } + }, + new FillFlowContainer + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Direction = FillDirection.Vertical, + Children = new Drawable[] + { + new DiffPiece(("Length", TimeSpan.FromMilliseconds(length).ToString(@"mm\:ss"))), + new DiffPiece(("BPM", $"{bpm:0.#}")) + } + }, + new Container + { + RelativeSizeAxes = Axes.Both, + Children = new Drawable[] + { + new Box + { + Colour = Color4.Black, + RelativeSizeAxes = Axes.Both, + Alpha = 0.1f, + }, + new OsuLogo + { + Triangles = false, + Scale = new Vector2(0.08f), + Margin = new MarginPadding(50), + X = -10, + Anchor = Anchor.CentreRight, + Origin = Anchor.CentreRight, + }, + } + }, + }, + } + } + } }, - new DiffPiece(("BPM", $"{bpm:0.#}")) + new TournamentBeatmapPanel(beatmap) { - Anchor = Anchor.CentreLeft, - Origin = Anchor.TopLeft - }, - new DiffPiece(stats) - { - Anchor = Anchor.CentreRight, - Origin = Anchor.BottomRight - }, - new DiffPiece(("Star Rating", $"{beatmap.StarDifficulty:0.#}{srExtra}")) - { - Anchor = Anchor.CentreRight, - Origin = Anchor.TopRight - }, - panel = new TournamentBeatmapPanel(beatmap) - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - RelativeSizeAxes = Axes.Both, - Size = new Vector2(panelWidth, 1) + RelativeSizeAxes = Axes.X, + Width = 0.5f, + Height = height / 2, + Anchor = Anchor.BottomRight, + Origin = Anchor.BottomRight, } }; } @@ -258,10 +243,9 @@ namespace osu.Game.Tournament.Components Margin = new MarginPadding { Horizontal = 15, Vertical = 1 }; AutoSizeAxes = Axes.Both; - static void cp(SpriteText s, Color4 colour) + static void cp(SpriteText s, bool bold) { - s.Colour = colour; - s.Font = OsuFont.Torus.With(weight: FontWeight.Bold, size: 15); + s.Font = OsuFont.Torus.With(weight: bold ? FontWeight.Bold : FontWeight.Regular, size: 15); } for (var i = 0; i < tuples.Length; i++) @@ -272,14 +256,14 @@ namespace osu.Game.Tournament.Components { AddText(" / ", s => { - cp(s, OsuColour.Gray(0.33f)); + cp(s, false); s.Spacing = new Vector2(-2, 0); }); } - AddText(new TournamentSpriteText { Text = heading }, s => cp(s, OsuColour.Gray(0.33f))); - AddText(" ", s => cp(s, OsuColour.Gray(0.33f))); - AddText(new TournamentSpriteText { Text = content }, s => cp(s, OsuColour.Gray(0.5f))); + AddText(new TournamentSpriteText { Text = heading }, s => cp(s, false)); + AddText(" ", s => cp(s, false)); + AddText(new TournamentSpriteText { Text = content }, s => cp(s, true)); } } } diff --git a/osu.Game.Tournament/Components/TournamentBeatmapPanel.cs b/osu.Game.Tournament/Components/TournamentBeatmapPanel.cs index 394ffe304e..e09af06c89 100644 --- a/osu.Game.Tournament/Components/TournamentBeatmapPanel.cs +++ b/osu.Game.Tournament/Components/TournamentBeatmapPanel.cs @@ -70,8 +70,8 @@ namespace osu.Game.Tournament.Components new FillFlowContainer { AutoSizeAxes = Axes.Both, - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, Padding = new MarginPadding(vertical_padding), Direction = FillDirection.Vertical, Children = new Drawable[] @@ -137,8 +137,8 @@ namespace osu.Game.Tournament.Components Texture = textures.Get($"mods/{mods}"), Anchor = Anchor.CentreRight, Origin = Anchor.CentreRight, - Margin = new MarginPadding(20), - Scale = new Vector2(0.5f) + Margin = new MarginPadding(10), + Scale = new Vector2(0.8f) }); } } diff --git a/osu.Game.Tournament/Components/TournamentMatchChatDisplay.cs b/osu.Game.Tournament/Components/TournamentMatchChatDisplay.cs index f4fd27784c..8eb1c98ba0 100644 --- a/osu.Game.Tournament/Components/TournamentMatchChatDisplay.cs +++ b/osu.Game.Tournament/Components/TournamentMatchChatDisplay.cs @@ -9,7 +9,6 @@ using osu.Game.Online.Chat; using osu.Game.Overlays.Chat; using osu.Game.Tournament.IPC; using osu.Game.Tournament.Models; -using osuTK; namespace osu.Game.Tournament.Components { @@ -22,7 +21,7 @@ namespace osu.Game.Tournament.Components public TournamentMatchChatDisplay() { RelativeSizeAxes = Axes.X; - Size = new Vector2(0.5f, 142); + Height = 144; Anchor = Anchor.BottomLeft; Origin = Anchor.BottomLeft; diff --git a/osu.Game.Tournament/Screens/BeatmapInfoScreen.cs b/osu.Game.Tournament/Screens/BeatmapInfoScreen.cs index fccd35ca9e..0a3163ef43 100644 --- a/osu.Game.Tournament/Screens/BeatmapInfoScreen.cs +++ b/osu.Game.Tournament/Screens/BeatmapInfoScreen.cs @@ -21,6 +21,7 @@ namespace osu.Game.Tournament.Screens { Anchor = Anchor.BottomRight, Origin = Anchor.BottomRight, + Depth = float.MinValue, }); } diff --git a/osu.Game.Tournament/TournamentSceneManager.cs b/osu.Game.Tournament/TournamentSceneManager.cs index 287e25b1fb..ef8d16011d 100644 --- a/osu.Game.Tournament/TournamentSceneManager.cs +++ b/osu.Game.Tournament/TournamentSceneManager.cs @@ -194,9 +194,14 @@ namespace osu.Game.Tournament switch (currentScreen) { - case GameplayScreen _: case MapPoolScreen _: chatContainer.FadeIn(TournamentScreen.FADE_DELAY); + chatContainer.ResizeWidthTo(1, 500, Easing.OutQuint); + break; + + case GameplayScreen _: + chatContainer.FadeIn(TournamentScreen.FADE_DELAY); + chatContainer.ResizeWidthTo(0.5f, 500, Easing.OutQuint); break; default: From 9138bafbeb5012f6af842731fd4383e5edecadaf Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 8 Mar 2020 18:40:13 +0900 Subject: [PATCH 33/52] Fix alignment of flags on team intro screen --- osu.Game.Tournament/Screens/TeamIntro/TeamIntroScreen.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game.Tournament/Screens/TeamIntro/TeamIntroScreen.cs b/osu.Game.Tournament/Screens/TeamIntro/TeamIntroScreen.cs index 2daf9d35f3..6c2848897b 100644 --- a/osu.Game.Tournament/Screens/TeamIntro/TeamIntroScreen.cs +++ b/osu.Game.Tournament/Screens/TeamIntro/TeamIntroScreen.cs @@ -48,7 +48,7 @@ namespace osu.Game.Tournament.Screens.TeamIntro return; } - const float y_flag_offset = 288; + const float y_flag_offset = 292; const float y_offset = 460; @@ -60,11 +60,11 @@ namespace osu.Game.Tournament.Screens.TeamIntro }, new DrawableTeamFlag(match.NewValue.Team1.Value) { - Position = new Vector2(160, y_flag_offset), + Position = new Vector2(165, y_flag_offset), }, new DrawableTeamWithPlayers(match.NewValue.Team1.Value, TeamColour.Red) { - Position = new Vector2(160, y_offset), + Position = new Vector2(165, y_offset), }, new DrawableTeamFlag(match.NewValue.Team2.Value) { From 2fe32b7d2b3b584335101c8036a32cbeb108d542 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 8 Mar 2020 19:41:22 +0900 Subject: [PATCH 34/52] Remove LadderInfo requirement in DrawableMatchTeam --- .../Screens/Ladder/Components/DrawableMatchTeam.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tournament/Screens/Ladder/Components/DrawableMatchTeam.cs b/osu.Game.Tournament/Screens/Ladder/Components/DrawableMatchTeam.cs index 88d7b95b0c..38e906e07b 100644 --- a/osu.Game.Tournament/Screens/Ladder/Components/DrawableMatchTeam.cs +++ b/osu.Game.Tournament/Screens/Ladder/Components/DrawableMatchTeam.cs @@ -37,11 +37,13 @@ namespace osu.Game.Tournament.Screens.Ladder.Components private readonly Func isWinner; private LadderEditorScreen ladderEditor; - [Resolved] + [Resolved(canBeNull: true)] private LadderInfo ladderInfo { get; set; } private void setCurrent() { + if (ladderInfo == null) return; + //todo: tournamentgamebase? if (ladderInfo.CurrentMatch.Value != null) ladderInfo.CurrentMatch.Value.Current.Value = false; From 0953751d242d4b6a850c4dbd9066d0de1aad125a Mon Sep 17 00:00:00 2001 From: Lucas A Date: Sun, 8 Mar 2020 15:51:57 +0100 Subject: [PATCH 35/52] Clamp relative position of judgement ticks in range [0;1] --- osu.Game/Screens/Play/HUD/HitErrorMeters/BarHitErrorMeter.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Play/HUD/HitErrorMeters/BarHitErrorMeter.cs b/osu.Game/Screens/Play/HUD/HitErrorMeters/BarHitErrorMeter.cs index 208bdd17ad..c7f763e9ab 100644 --- a/osu.Game/Screens/Play/HUD/HitErrorMeters/BarHitErrorMeter.cs +++ b/osu.Game/Screens/Play/HUD/HitErrorMeters/BarHitErrorMeter.cs @@ -1,6 +1,7 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. +using System; using System.Linq; using osu.Framework.Allocation; using osu.Framework.Extensions.Color4Extensions; @@ -224,7 +225,7 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters , arrow_move_duration, Easing.Out); } - private float getRelativeJudgementPosition(double value) => (float)((value / maxHitWindow) + 1) / 2; + private float getRelativeJudgementPosition(double value) => Math.Clamp((float)((value / maxHitWindow) + 1) / 2, 0, 1); private class JudgementLine : CompositeDrawable { From 414e704d37c456ee10ac333f9e574c17607cd502 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 9 Mar 2020 00:18:28 +0900 Subject: [PATCH 36/52] Use existing local function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Bartłomiej Dach --- osu.Game.Tournament/Components/DrawableTeamWithPlayers.cs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/osu.Game.Tournament/Components/DrawableTeamWithPlayers.cs b/osu.Game.Tournament/Components/DrawableTeamWithPlayers.cs index 0b80bef903..e949bf9881 100644 --- a/osu.Game.Tournament/Components/DrawableTeamWithPlayers.cs +++ b/osu.Game.Tournament/Components/DrawableTeamWithPlayers.cs @@ -46,12 +46,7 @@ namespace osu.Game.Tournament.Components { Direction = FillDirection.Vertical, AutoSizeAxes = Axes.Both, - ChildrenEnumerable = team?.Players.Select(p => new TournamentSpriteText - { - Text = p.Username, - Font = OsuFont.Torus.With(size: 24, weight: FontWeight.SemiBold), - Colour = Color4.White, - }).Skip(5) ?? Enumerable.Empty() + ChildrenEnumerable = team?.Players.Select(createPlayerText).Skip(5) ?? Enumerable.Empty() }, } }, From 61297847a74e7412da247a5223e1e01b57eb68c8 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 9 Mar 2020 01:21:37 +0900 Subject: [PATCH 37/52] Fix compilation failure --- osu.Game.Tournament/Screens/Gameplay/Components/MatchHeader.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Tournament/Screens/Gameplay/Components/MatchHeader.cs b/osu.Game.Tournament/Screens/Gameplay/Components/MatchHeader.cs index ce17c392d0..01be91dfe5 100644 --- a/osu.Game.Tournament/Screens/Gameplay/Components/MatchHeader.cs +++ b/osu.Game.Tournament/Screens/Gameplay/Components/MatchHeader.cs @@ -141,7 +141,7 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components currentTeamScore.BindTo(score); } - private void scoreChanged(ValueChangedEvent score) => counter.CountStars = score.NewValue ?? 0; + private void scoreChanged(ValueChangedEvent score) => counter.Current = score.NewValue ?? 0; } private class TeamDisplay : DrawableTournamentTeam From c2fbc85e7706a90c715096fe9cc722662d97b287 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 9 Mar 2020 01:26:19 +0900 Subject: [PATCH 38/52] Split out test scene for StarCounter --- .../Visual/Gameplay/TestSceneScoreCounter.cs | 37 ------------ .../Visual/Gameplay/TestSceneStarCounter.cs | 57 +++++++++++++++++++ 2 files changed, 57 insertions(+), 37 deletions(-) create mode 100644 osu.Game.Tests/Visual/Gameplay/TestSceneStarCounter.cs diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneScoreCounter.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneScoreCounter.cs index 88bb83b446..030d420ec0 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneScoreCounter.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneScoreCounter.cs @@ -3,9 +3,6 @@ using NUnit.Framework; using osu.Framework.Graphics; -using osu.Framework.Graphics.Sprites; -using osu.Framework.Utils; -using osu.Game.Graphics.Sprites; using osu.Game.Graphics.UserInterface; using osu.Game.Screens.Play.HUD; using osuTK; @@ -45,32 +42,12 @@ namespace osu.Game.Tests.Visual.Gameplay }; Add(accuracyCounter); - StarCounter stars = new StarCounter - { - Origin = Anchor.BottomLeft, - Anchor = Anchor.BottomLeft, - Position = new Vector2(20, -160), - Current = 5, - }; - Add(stars); - - SpriteText starsLabel = new OsuSpriteText - { - Origin = Anchor.BottomLeft, - Anchor = Anchor.BottomLeft, - Position = new Vector2(20, -190), - Text = stars.Current.ToString("0.00"), - }; - Add(starsLabel); - AddStep(@"Reset all", delegate { score.Current.Value = 0; comboCounter.Current.Value = 0; numerator = denominator = 0; accuracyCounter.SetFraction(0, 0); - stars.Current = 0; - starsLabel.Text = stars.Current.ToString("0.00"); }); AddStep(@"Hit! :D", delegate @@ -88,20 +65,6 @@ namespace osu.Game.Tests.Visual.Gameplay denominator++; accuracyCounter.SetFraction(numerator, denominator); }); - - AddStep(@"Alter stars", delegate - { - stars.Current = RNG.NextSingle() * (stars.StarCount + 1); - starsLabel.Text = stars.Current.ToString("0.00"); - }); - - AddStep(@"Stop counters", delegate - { - score.StopRolling(); - comboCounter.StopRolling(); - accuracyCounter.StopRolling(); - stars.StopAnimation(); - }); } } } diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneStarCounter.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneStarCounter.cs new file mode 100644 index 0000000000..709e71d195 --- /dev/null +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneStarCounter.cs @@ -0,0 +1,57 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using NUnit.Framework; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Sprites; +using osu.Framework.Utils; +using osu.Game.Graphics.Sprites; +using osu.Game.Graphics.UserInterface; +using osuTK; + +namespace osu.Game.Tests.Visual.Gameplay +{ + [TestFixture] + public class TestSceneStarCounter : OsuTestScene + { + public TestSceneStarCounter() + { + StarCounter stars = new StarCounter + { + Origin = Anchor.Centre, + Anchor = Anchor.Centre, + Current = 5, + }; + + Add(stars); + + SpriteText starsLabel = new OsuSpriteText + { + Origin = Anchor.Centre, + Anchor = Anchor.Centre, + Scale = new Vector2(2), + Y = 50, + Text = stars.Current.ToString("0.00"), + }; + + Add(starsLabel); + + AddRepeatStep(@"random value", delegate + { + stars.Current = RNG.NextSingle() * (stars.StarCount + 1); + starsLabel.Text = stars.Current.ToString("0.00"); + }, 10); + + AddStep(@"Stop animation", delegate + { + stars.StopAnimation(); + }); + + AddStep(@"Reset", delegate + { + stars.Current = 0; + starsLabel.Text = stars.Current.ToString("0.00"); + }); + } + } +} From 3903423a37d53b60cd690c1583c968842f2fcdc4 Mon Sep 17 00:00:00 2001 From: Joehu Date: Sun, 8 Mar 2020 19:43:53 -0700 Subject: [PATCH 39/52] Fix textbox characters not animating when typing/backspacing --- osu.Game/Graphics/UserInterface/OsuPasswordTextBox.cs | 6 +++++- osu.Game/Graphics/UserInterface/OsuTextBox.cs | 6 +++++- osu.Game/Overlays/Comments/CommentEditor.cs | 6 +++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/OsuPasswordTextBox.cs b/osu.Game/Graphics/UserInterface/OsuPasswordTextBox.cs index e7699e5255..0c82a869f8 100644 --- a/osu.Game/Graphics/UserInterface/OsuPasswordTextBox.cs +++ b/osu.Game/Graphics/UserInterface/OsuPasswordTextBox.cs @@ -18,7 +18,11 @@ namespace osu.Game.Graphics.UserInterface { public class OsuPasswordTextBox : OsuTextBox, ISuppressKeyEventLogging { - protected override Drawable GetDrawableCharacter(char c) => new PasswordMaskChar(CalculatedTextSize); + protected override Drawable GetDrawableCharacter(char c) => new FallingDownContainer + { + AutoSizeAxes = Axes.Both, + Child = new PasswordMaskChar(CalculatedTextSize), + }; protected override bool AllowClipboardExport => false; diff --git a/osu.Game/Graphics/UserInterface/OsuTextBox.cs b/osu.Game/Graphics/UserInterface/OsuTextBox.cs index 4abbf8db57..6f440d8138 100644 --- a/osu.Game/Graphics/UserInterface/OsuTextBox.cs +++ b/osu.Game/Graphics/UserInterface/OsuTextBox.cs @@ -63,7 +63,11 @@ namespace osu.Game.Graphics.UserInterface base.OnFocusLost(e); } - protected override Drawable GetDrawableCharacter(char c) => new OsuSpriteText { Text = c.ToString(), Font = OsuFont.GetFont(size: CalculatedTextSize) }; + protected override Drawable GetDrawableCharacter(char c) => new FallingDownContainer + { + AutoSizeAxes = Axes.Both, + Child = new OsuSpriteText { Text = c.ToString(), Font = OsuFont.GetFont(size: CalculatedTextSize) }, + }; protected override Caret CreateCaret() => new OsuCaret { diff --git a/osu.Game/Overlays/Comments/CommentEditor.cs b/osu.Game/Overlays/Comments/CommentEditor.cs index 2fa4cb68f3..7b4bf882dc 100644 --- a/osu.Game/Overlays/Comments/CommentEditor.cs +++ b/osu.Game/Overlays/Comments/CommentEditor.cs @@ -158,7 +158,11 @@ namespace osu.Game.Overlays.Comments Font = OsuFont.GetFont(weight: FontWeight.Regular), }; - protected override Drawable GetDrawableCharacter(char c) => new OsuSpriteText { Text = c.ToString(), Font = OsuFont.GetFont(size: CalculatedTextSize) }; + protected override Drawable GetDrawableCharacter(char c) => new FallingDownContainer + { + AutoSizeAxes = Axes.Both, + Child = new OsuSpriteText { Text = c.ToString(), Font = OsuFont.GetFont(size: CalculatedTextSize) }, + }; } private class CommitButton : LoadingButton From b61e56cda519ffa4cb1c284e3134e36077be8a52 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 9 Mar 2020 13:29:17 +0900 Subject: [PATCH 40/52] Resolve post-merge issue --- osu.Game.Tournament/Screens/Gameplay/Components/TeamScore.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Tournament/Screens/Gameplay/Components/TeamScore.cs b/osu.Game.Tournament/Screens/Gameplay/Components/TeamScore.cs index 608d98a16a..04fee8cd7d 100644 --- a/osu.Game.Tournament/Screens/Gameplay/Components/TeamScore.cs +++ b/osu.Game.Tournament/Screens/Gameplay/Components/TeamScore.cs @@ -33,6 +33,6 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components currentTeamScore.BindTo(score); } - private void scoreChanged(ValueChangedEvent score) => counter.CountStars = score.NewValue ?? 0; + private void scoreChanged(ValueChangedEvent score) => counter.Current = score.NewValue ?? 0; } } From 832e64cc958b7c427bc1cf0d58d0291d1990168a Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 9 Mar 2020 14:57:19 +0900 Subject: [PATCH 41/52] Fix test failures due to null current match --- .../Screens/Gameplay/Components/MatchHeader.cs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/osu.Game.Tournament/Screens/Gameplay/Components/MatchHeader.cs b/osu.Game.Tournament/Screens/Gameplay/Components/MatchHeader.cs index 7e9d0178d8..69a68c946b 100644 --- a/osu.Game.Tournament/Screens/Gameplay/Components/MatchHeader.cs +++ b/osu.Game.Tournament/Screens/Gameplay/Components/MatchHeader.cs @@ -92,17 +92,20 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components [BackgroundDependencyLoader] private void load(LadderInfo ladder) { - currentMatch.BindValueChanged(matchChanged); currentMatch.BindTo(ladder.CurrentMatch); + currentMatch.BindValueChanged(matchChanged, true); } private void matchChanged(ValueChangedEvent match) { currentTeamScore.UnbindBindings(); - currentTeamScore.BindTo(teamColour == TeamColour.Red ? match.NewValue.Team1Score : match.NewValue.Team2Score); - currentTeam.UnbindBindings(); - currentTeam.BindTo(teamColour == TeamColour.Red ? match.NewValue.Team1 : match.NewValue.Team2); + + if (match.NewValue != null) + { + currentTeamScore.BindTo(teamColour == TeamColour.Red ? match.NewValue.Team1Score : match.NewValue.Team2Score); + currentTeam.BindTo(teamColour == TeamColour.Red ? match.NewValue.Team1 : match.NewValue.Team2); + } // team may change to same team, which means score is not in a good state. // thus we handle this manually. @@ -131,7 +134,7 @@ namespace osu.Game.Tournament.Screens.Gameplay.Components { InternalChildren = new Drawable[] { - teamDisplay = new TeamDisplay(team, teamColour, currentTeamScore, currentMatch.Value.PointsToWin), + teamDisplay = new TeamDisplay(team, teamColour, currentTeamScore, currentMatch.Value?.PointsToWin ?? 0), }; } } From 33f457d663bf6e433664655935dadf764691ea65 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 9 Mar 2020 15:08:24 +0900 Subject: [PATCH 42/52] Fix layout issues with TournamentBeatmapPanel --- osu.Game.Tournament/Components/TournamentBeatmapPanel.cs | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/osu.Game.Tournament/Components/TournamentBeatmapPanel.cs b/osu.Game.Tournament/Components/TournamentBeatmapPanel.cs index e09af06c89..8fa35003e7 100644 --- a/osu.Game.Tournament/Components/TournamentBeatmapPanel.cs +++ b/osu.Game.Tournament/Components/TournamentBeatmapPanel.cs @@ -50,8 +50,6 @@ namespace osu.Game.Tournament.Components currentMatch.BindValueChanged(matchChanged); currentMatch.BindTo(ladder.CurrentMatch); - CornerRadius = HEIGHT / 2; - CornerExponent = 2; Masking = true; AddRangeInternal(new Drawable[] @@ -72,14 +70,12 @@ namespace osu.Game.Tournament.Components AutoSizeAxes = Axes.Both, Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, - Padding = new MarginPadding(vertical_padding), + Padding = new MarginPadding(15), Direction = FillDirection.Vertical, Children = new Drawable[] { new TournamentSpriteText { - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, Text = new LocalisedString(( $"{Beatmap.Metadata.ArtistUnicode ?? Beatmap.Metadata.Artist} - {Beatmap.Metadata.TitleUnicode ?? Beatmap.Metadata.Title}", $"{Beatmap.Metadata.Artist} - {Beatmap.Metadata.Title}")), @@ -88,9 +84,6 @@ namespace osu.Game.Tournament.Components new FillFlowContainer { AutoSizeAxes = Axes.Both, - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - Padding = new MarginPadding(vertical_padding), Direction = FillDirection.Horizontal, Children = new Drawable[] { From 48c46efdd72ea4a8a34243ebbe3f3f56d37d3b05 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 9 Mar 2020 15:09:34 +0900 Subject: [PATCH 43/52] Remove rogue newline --- osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs b/osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs index 1e20687a87..34fa7a4997 100644 --- a/osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs +++ b/osu.Game.Tournament.Tests/Screens/TestSceneGameplayScreen.cs @@ -35,4 +35,3 @@ namespace osu.Game.Tournament.Tests.Screens } } } - From 6421f28ac70964d3438aae62cf0df9888c4ea4f0 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 9 Mar 2020 19:07:44 +0900 Subject: [PATCH 44/52] Fix nullref --- osu.Game.Tournament/Components/TourneyVideo.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tournament/Components/TourneyVideo.cs b/osu.Game.Tournament/Components/TourneyVideo.cs index 687acaa6d5..43088d6b92 100644 --- a/osu.Game.Tournament/Components/TourneyVideo.cs +++ b/osu.Game.Tournament/Components/TourneyVideo.cs @@ -64,7 +64,11 @@ namespace osu.Game.Tournament.Components } } - public void Reset() => manualClock.CurrentTime = 0; + public void Reset() + { + if (manualClock != null) + manualClock.CurrentTime = 0; + } protected override void Update() { From 19ce2d643e39726119d570d008e2af277deebd58 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 10 Mar 2020 09:51:30 +0900 Subject: [PATCH 45/52] Remove unused using --- .../Screens/Ladder/Components/DrawableTournamentMatch.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs b/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs index 18ff8abf61..655beb4bdd 100644 --- a/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs +++ b/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs @@ -9,7 +9,6 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Input.Events; -using osu.Game.Graphics; using osu.Game.Tournament.Models; using osuTK; using osuTK.Graphics; From e7f1f0f38b50946a147828699265e35c6ad9ccaa Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 10 Mar 2020 10:07:47 +0900 Subject: [PATCH 46/52] Fix hyperdash not initiating correctly when juice streams are present --- .../TestSceneHyperDash.cs | 52 ++++++++++++++++--- osu.Game.Rulesets.Catch/UI/CatcherArea.cs | 4 ++ 2 files changed, 48 insertions(+), 8 deletions(-) diff --git a/osu.Game.Rulesets.Catch.Tests/TestSceneHyperDash.cs b/osu.Game.Rulesets.Catch.Tests/TestSceneHyperDash.cs index da36673930..7a7c3f4103 100644 --- a/osu.Game.Rulesets.Catch.Tests/TestSceneHyperDash.cs +++ b/osu.Game.Rulesets.Catch.Tests/TestSceneHyperDash.cs @@ -1,9 +1,13 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. +using System; +using System.Linq; using NUnit.Framework; +using osu.Framework.Testing; using osu.Game.Beatmaps; using osu.Game.Rulesets.Catch.Objects; +using osu.Game.Rulesets.Catch.UI; using osu.Game.Tests.Visual; namespace osu.Game.Rulesets.Catch.Tests @@ -22,8 +26,17 @@ namespace osu.Game.Rulesets.Catch.Tests public void TestHyperDash() { AddAssert("First note is hyperdash", () => Beatmap.Value.Beatmap.HitObjects[0] is Fruit f && f.HyperDash); + AddUntilStep("wait for left hyperdash", () => getCatcher().Scale.X < 0 && getCatcher().HyperDashing); + + for (int i = 0; i < 2; i++) + { + AddUntilStep("wait for right hyperdash", () => getCatcher().Scale.X > 0 && getCatcher().HyperDashing); + AddUntilStep("wait for left hyperdash", () => getCatcher().Scale.X < 0 && getCatcher().HyperDashing); + } } + private CatcherArea.Catcher getCatcher() => Player.ChildrenOfType().First().MovableCatcher; + protected override IBeatmap CreateBeatmap(RulesetInfo ruleset) { var beatmap = new Beatmap @@ -35,17 +48,40 @@ namespace osu.Game.Rulesets.Catch.Tests } }; - // Should produce a hyper-dash - beatmap.HitObjects.Add(new Fruit { StartTime = 816, X = 308 / 512f, NewCombo = true }); - beatmap.HitObjects.Add(new Fruit { StartTime = 1008, X = 56 / 512f, }); + // Should produce a hyper-dash (edge case test) + beatmap.HitObjects.Add(new Fruit { StartTime = 1816, X = 308 / 512f, NewCombo = true }); + beatmap.HitObjects.Add(new JuiceStream { StartTime = 2008, X = 56 / 512f, }); - for (int i = 0; i < 512; i++) - { - if (i % 5 < 3) - beatmap.HitObjects.Add(new Fruit { X = i % 10 < 5 ? 0.02f : 0.98f, StartTime = 2000 + i * 100, NewCombo = i % 8 == 0 }); - } + double startTime = 3000; + + const float left_x = 0.02f; + const float right_x = 0.98f; + + createObjects(() => new Fruit(), left_x); + createObjects(() => new JuiceStream(), right_x); + createObjects(() => new JuiceStream(), left_x); + createObjects(() => new Fruit(), right_x); + createObjects(() => new Fruit(), left_x); + createObjects(() => new Fruit(), right_x); + createObjects(() => new JuiceStream(), left_x); return beatmap; + + void createObjects(Func createObject, float x) + { + const float spacing = 140; + + for (int i = 0; i < 3; i++) + { + var hitObject = createObject(); + hitObject.X = x; + hitObject.StartTime = startTime + i * spacing; + + beatmap.HitObjects.Add(hitObject); + } + + startTime += 700; + } } } } diff --git a/osu.Game.Rulesets.Catch/UI/CatcherArea.cs b/osu.Game.Rulesets.Catch/UI/CatcherArea.cs index b977d46611..71228f1c07 100644 --- a/osu.Game.Rulesets.Catch/UI/CatcherArea.cs +++ b/osu.Game.Rulesets.Catch/UI/CatcherArea.cs @@ -270,6 +270,10 @@ namespace osu.Game.Rulesets.Catch.UI catchObjectPosition >= catcherPosition - halfCatchWidth && catchObjectPosition <= catcherPosition + halfCatchWidth; + // only update hyperdash state if we are catching a fruit. + // exceptions are Droplets and JuiceStreams. + if (!(fruit is Fruit)) return validCatch; + if (validCatch && fruit.HyperDash) { var target = fruit.HyperDashTarget; From 059af2a9866ff15d6c1200b1eecdc6b597267b5c Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 10 Mar 2020 10:43:06 +0900 Subject: [PATCH 47/52] Update framework --- osu.Android.props | 2 +- osu.Game/osu.Game.csproj | 2 +- osu.iOS.props | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Android.props b/osu.Android.props index 97f7a7edb1..6a8e66ee6a 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -52,6 +52,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 855bda3679..cc1ab654ab 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -23,7 +23,7 @@ - + diff --git a/osu.iOS.props b/osu.iOS.props index e2c4c09047..04b688cfa3 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -71,7 +71,7 @@ - + @@ -79,7 +79,7 @@ - + From e6858bf1304f0a96e1f3ead46640b0b83fc72d4e Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 10 Mar 2020 11:58:33 +0900 Subject: [PATCH 48/52] Fix crashes on some storyboards --- .../Formats/LegacyStoryboardDecoder.cs | 81 +++++++++---------- 1 file changed, 40 insertions(+), 41 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs index 6569f76b2d..c81f933bca 100644 --- a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs @@ -3,7 +3,6 @@ using System; using System.Collections.Generic; -using System.Globalization; using System.IO; using osuTK; using osuTK.Graphics; @@ -93,8 +92,8 @@ namespace osu.Game.Beatmaps.Formats var layer = parseLayer(split[1]); var origin = parseOrigin(split[2]); var path = CleanFilename(split[3]); - var x = float.Parse(split[4], NumberFormatInfo.InvariantInfo); - var y = float.Parse(split[5], NumberFormatInfo.InvariantInfo); + var x = Parsing.ParseFloat(split[4], Parsing.MAX_COORDINATE_VALUE); + var y = Parsing.ParseFloat(split[5], Parsing.MAX_COORDINATE_VALUE); storyboardSprite = new StoryboardSprite(path, origin, new Vector2(x, y)); storyboard.GetLayer(layer).Add(storyboardSprite); break; @@ -105,10 +104,10 @@ namespace osu.Game.Beatmaps.Formats var layer = parseLayer(split[1]); var origin = parseOrigin(split[2]); var path = CleanFilename(split[3]); - var x = float.Parse(split[4], NumberFormatInfo.InvariantInfo); - var y = float.Parse(split[5], NumberFormatInfo.InvariantInfo); - var frameCount = int.Parse(split[6]); - var frameDelay = double.Parse(split[7], NumberFormatInfo.InvariantInfo); + var x = Parsing.ParseFloat(split[4], Parsing.MAX_COORDINATE_VALUE); + var y = Parsing.ParseFloat(split[5], Parsing.MAX_COORDINATE_VALUE); + var frameCount = Parsing.ParseInt(split[6]); + var frameDelay = Parsing.ParseDouble(split[7]); var loopType = split.Length > 8 ? (AnimationLoopType)Enum.Parse(typeof(AnimationLoopType), split[8]) : AnimationLoopType.LoopForever; storyboardSprite = new StoryboardAnimation(path, origin, new Vector2(x, y), frameCount, frameDelay, loopType); storyboard.GetLayer(layer).Add(storyboardSprite); @@ -117,10 +116,10 @@ namespace osu.Game.Beatmaps.Formats case LegacyEventType.Sample: { - var time = double.Parse(split[1], CultureInfo.InvariantCulture); + var time = Parsing.ParseDouble(split[1]); var layer = parseLayer(split[2]); var path = CleanFilename(split[3]); - var volume = split.Length > 4 ? float.Parse(split[4], CultureInfo.InvariantCulture) : 100; + var volume = split.Length > 4 ? Parsing.ParseFloat(split[4]) : 100; storyboard.GetLayer(layer).Add(new StoryboardSampleInfo(path, time, (int)volume)); break; } @@ -138,17 +137,17 @@ namespace osu.Game.Beatmaps.Formats case "T": { var triggerName = split[1]; - var startTime = split.Length > 2 ? double.Parse(split[2], CultureInfo.InvariantCulture) : double.MinValue; - var endTime = split.Length > 3 ? double.Parse(split[3], CultureInfo.InvariantCulture) : double.MaxValue; - var groupNumber = split.Length > 4 ? int.Parse(split[4]) : 0; + var startTime = split.Length > 2 ? Parsing.ParseDouble(split[2]) : double.MinValue; + var endTime = split.Length > 3 ? Parsing.ParseDouble(split[3]) : double.MaxValue; + var groupNumber = split.Length > 4 ? Parsing.ParseInt(split[4]) : 0; timelineGroup = storyboardSprite?.AddTrigger(triggerName, startTime, endTime, groupNumber); break; } case "L": { - var startTime = double.Parse(split[1], CultureInfo.InvariantCulture); - var loopCount = int.Parse(split[2]); + var startTime = Parsing.ParseDouble(split[1]); + var loopCount = Parsing.ParseInt(split[2]); timelineGroup = storyboardSprite?.AddLoop(startTime, loopCount); break; } @@ -158,52 +157,52 @@ namespace osu.Game.Beatmaps.Formats if (string.IsNullOrEmpty(split[3])) split[3] = split[2]; - var easing = (Easing)int.Parse(split[1]); - var startTime = double.Parse(split[2], CultureInfo.InvariantCulture); - var endTime = double.Parse(split[3], CultureInfo.InvariantCulture); + var easing = (Easing)Parsing.ParseInt(split[1]); + var startTime = Parsing.ParseDouble(split[2]); + var endTime = Parsing.ParseDouble(split[3]); switch (commandType) { case "F": { - var startValue = float.Parse(split[4], CultureInfo.InvariantCulture); - var endValue = split.Length > 5 ? float.Parse(split[5], CultureInfo.InvariantCulture) : startValue; + var startValue = Parsing.ParseFloat(split[4]); + var endValue = split.Length > 5 ? Parsing.ParseFloat(split[5]) : startValue; timelineGroup?.Alpha.Add(easing, startTime, endTime, startValue, endValue); break; } case "S": { - var startValue = float.Parse(split[4], CultureInfo.InvariantCulture); - var endValue = split.Length > 5 ? float.Parse(split[5], CultureInfo.InvariantCulture) : startValue; + var startValue = Parsing.ParseFloat(split[4]); + var endValue = split.Length > 5 ? Parsing.ParseFloat(split[5]) : startValue; timelineGroup?.Scale.Add(easing, startTime, endTime, startValue, endValue); break; } case "V": { - var startX = float.Parse(split[4], CultureInfo.InvariantCulture); - var startY = float.Parse(split[5], CultureInfo.InvariantCulture); - var endX = split.Length > 6 ? float.Parse(split[6], CultureInfo.InvariantCulture) : startX; - var endY = split.Length > 7 ? float.Parse(split[7], CultureInfo.InvariantCulture) : startY; + var startX = Parsing.ParseFloat(split[4]); + var startY = Parsing.ParseFloat(split[5]); + var endX = split.Length > 6 ? Parsing.ParseFloat(split[6]) : startX; + var endY = split.Length > 7 ? Parsing.ParseFloat(split[7]) : startY; timelineGroup?.VectorScale.Add(easing, startTime, endTime, new Vector2(startX, startY), new Vector2(endX, endY)); break; } case "R": { - var startValue = float.Parse(split[4], CultureInfo.InvariantCulture); - var endValue = split.Length > 5 ? float.Parse(split[5], CultureInfo.InvariantCulture) : startValue; + var startValue = Parsing.ParseFloat(split[4]); + var endValue = split.Length > 5 ? Parsing.ParseFloat(split[5]) : startValue; timelineGroup?.Rotation.Add(easing, startTime, endTime, MathUtils.RadiansToDegrees(startValue), MathUtils.RadiansToDegrees(endValue)); break; } case "M": { - var startX = float.Parse(split[4], CultureInfo.InvariantCulture); - var startY = float.Parse(split[5], CultureInfo.InvariantCulture); - var endX = split.Length > 6 ? float.Parse(split[6], CultureInfo.InvariantCulture) : startX; - var endY = split.Length > 7 ? float.Parse(split[7], CultureInfo.InvariantCulture) : startY; + var startX = Parsing.ParseFloat(split[4]); + var startY = Parsing.ParseFloat(split[5]); + var endX = split.Length > 6 ? Parsing.ParseFloat(split[6]) : startX; + var endY = split.Length > 7 ? Parsing.ParseFloat(split[7]) : startY; timelineGroup?.X.Add(easing, startTime, endTime, startX, endX); timelineGroup?.Y.Add(easing, startTime, endTime, startY, endY); break; @@ -211,28 +210,28 @@ namespace osu.Game.Beatmaps.Formats case "MX": { - var startValue = float.Parse(split[4], CultureInfo.InvariantCulture); - var endValue = split.Length > 5 ? float.Parse(split[5], CultureInfo.InvariantCulture) : startValue; + var startValue = Parsing.ParseFloat(split[4]); + var endValue = split.Length > 5 ? Parsing.ParseFloat(split[5]) : startValue; timelineGroup?.X.Add(easing, startTime, endTime, startValue, endValue); break; } case "MY": { - var startValue = float.Parse(split[4], CultureInfo.InvariantCulture); - var endValue = split.Length > 5 ? float.Parse(split[5], CultureInfo.InvariantCulture) : startValue; + var startValue = Parsing.ParseFloat(split[4]); + var endValue = split.Length > 5 ? Parsing.ParseFloat(split[5]) : startValue; timelineGroup?.Y.Add(easing, startTime, endTime, startValue, endValue); break; } case "C": { - var startRed = float.Parse(split[4], CultureInfo.InvariantCulture); - var startGreen = float.Parse(split[5], CultureInfo.InvariantCulture); - var startBlue = float.Parse(split[6], CultureInfo.InvariantCulture); - var endRed = split.Length > 7 ? float.Parse(split[7], CultureInfo.InvariantCulture) : startRed; - var endGreen = split.Length > 8 ? float.Parse(split[8], CultureInfo.InvariantCulture) : startGreen; - var endBlue = split.Length > 9 ? float.Parse(split[9], CultureInfo.InvariantCulture) : startBlue; + var startRed = Parsing.ParseFloat(split[4]); + var startGreen = Parsing.ParseFloat(split[5]); + var startBlue = Parsing.ParseFloat(split[6]); + var endRed = split.Length > 7 ? Parsing.ParseFloat(split[7]) : startRed; + var endGreen = split.Length > 8 ? Parsing.ParseFloat(split[8]) : startGreen; + var endBlue = split.Length > 9 ? Parsing.ParseFloat(split[9]) : startBlue; timelineGroup?.Colour.Add(easing, startTime, endTime, new Color4(startRed / 255f, startGreen / 255f, startBlue / 255f, 1), new Color4(endRed / 255f, endGreen / 255f, endBlue / 255f, 1)); From 7a9c85d69da0a826ac03fd78fb615e146a0eef96 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 10 Mar 2020 12:21:40 +0900 Subject: [PATCH 49/52] Fix now failing test due to parsing ranges --- osu.Game.Tests/Beatmaps/Formats/LegacyStoryboardDecoderTest.cs | 2 +- osu.Game.Tests/Resources/variable-with-suffix.osb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tests/Beatmaps/Formats/LegacyStoryboardDecoderTest.cs b/osu.Game.Tests/Beatmaps/Formats/LegacyStoryboardDecoderTest.cs index 96ff6b81e3..76b76aa357 100644 --- a/osu.Game.Tests/Beatmaps/Formats/LegacyStoryboardDecoderTest.cs +++ b/osu.Game.Tests/Beatmaps/Formats/LegacyStoryboardDecoderTest.cs @@ -99,7 +99,7 @@ namespace osu.Game.Tests.Beatmaps.Formats var storyboard = decoder.Decode(stream); StoryboardLayer background = storyboard.Layers.Single(l => l.Depth == 3); - Assert.AreEqual(123456, ((StoryboardSprite)background.Elements.Single()).InitialPosition.X); + Assert.AreEqual(3456, ((StoryboardSprite)background.Elements.Single()).InitialPosition.X); } } } diff --git a/osu.Game.Tests/Resources/variable-with-suffix.osb b/osu.Game.Tests/Resources/variable-with-suffix.osb index 5c9b46ca98..fd284eb055 100644 --- a/osu.Game.Tests/Resources/variable-with-suffix.osb +++ b/osu.Game.Tests/Resources/variable-with-suffix.osb @@ -1,5 +1,5 @@ [Variables] -$var=1234 +$var=34 [Events] Sprite,Background,TopCentre,"img.jpg",$var56,240 From 0d18ea1d2955dd76832d6d75381bfc9ba0994105 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 10 Mar 2020 11:42:08 +0900 Subject: [PATCH 50/52] Add animation and fallback catcher support --- .../special-skin/fruit-catcher-idle-0@2x.png | Bin 0 -> 57593 bytes .../special-skin/fruit-catcher-idle-1@2x.png | Bin 0 -> 57011 bytes .../special-skin/fruit-catcher-idle-2@2x.png | Bin 0 -> 57264 bytes .../special-skin/fruit-catcher-idle-3@2x.png | Bin 0 -> 57077 bytes .../special-skin/fruit-catcher-idle-4@2x.png | Bin 0 -> 56155 bytes .../special-skin/fruit-catcher-idle-5@2x.png | Bin 0 -> 57143 bytes .../special-skin/fruit-catcher-idle.png | Bin 133664 -> 0 bytes .../TestSceneCatcher.cs | 1 + .../CatchSkinComponents.cs | 3 ++- .../Skinning/CatchLegacySkinTransformer.cs | 4 +++ osu.Game.Rulesets.Catch/UI/CatcherArea.cs | 10 +++++--- osu.Game.Rulesets.Catch/UI/CatcherSprite.cs | 24 ++++++++++-------- 12 files changed, 27 insertions(+), 15 deletions(-) create mode 100644 osu.Game.Rulesets.Catch.Tests/Resources/special-skin/fruit-catcher-idle-0@2x.png create mode 100644 osu.Game.Rulesets.Catch.Tests/Resources/special-skin/fruit-catcher-idle-1@2x.png create mode 100644 osu.Game.Rulesets.Catch.Tests/Resources/special-skin/fruit-catcher-idle-2@2x.png create mode 100644 osu.Game.Rulesets.Catch.Tests/Resources/special-skin/fruit-catcher-idle-3@2x.png create mode 100644 osu.Game.Rulesets.Catch.Tests/Resources/special-skin/fruit-catcher-idle-4@2x.png create mode 100644 osu.Game.Rulesets.Catch.Tests/Resources/special-skin/fruit-catcher-idle-5@2x.png delete mode 100755 osu.Game.Rulesets.Catch.Tests/Resources/special-skin/fruit-catcher-idle.png diff --git a/osu.Game.Rulesets.Catch.Tests/Resources/special-skin/fruit-catcher-idle-0@2x.png b/osu.Game.Rulesets.Catch.Tests/Resources/special-skin/fruit-catcher-idle-0@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..786e5cc25ad2e175251acdee06825f936c8c9ea7 GIT binary patch literal 57593 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

~&^CXCgh=e9m>w~R$x}C+NMpVTm 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 literal 0 HcmV?d00001 diff --git a/osu.Game.Rulesets.Catch.Tests/Resources/special-skin/fruit-catcher-idle-3@2x.png b/osu.Game.Rulesets.Catch.Tests/Resources/special-skin/fruit-catcher-idle-3@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..953a04d4e4f9cdde644d6ac6e9715b6256631438 GIT binary patch literal 57077 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 literal 0 HcmV?d00001 diff --git a/osu.Game.Rulesets.Catch.Tests/Resources/special-skin/fruit-catcher-idle.png b/osu.Game.Rulesets.Catch.Tests/Resources/special-skin/fruit-catcher-idle.png deleted file mode 100755 index 17177f3246cafff0cf81669bca7efd0a22599f44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133664 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 O0000 RequiredTypes => new[] { typeof(CatcherArea), + typeof(CatcherSprite) }; [BackgroundDependencyLoader] diff --git a/osu.Game.Rulesets.Catch/CatchSkinComponents.cs b/osu.Game.Rulesets.Catch/CatchSkinComponents.cs index 02c045f363..08bff36401 100644 --- a/osu.Game.Rulesets.Catch/CatchSkinComponents.cs +++ b/osu.Game.Rulesets.Catch/CatchSkinComponents.cs @@ -10,6 +10,7 @@ namespace osu.Game.Rulesets.Catch FruitGrapes, FruitOrange, FruitPear, - Droplet + Droplet, + CatcherIdle } } diff --git a/osu.Game.Rulesets.Catch/Skinning/CatchLegacySkinTransformer.cs b/osu.Game.Rulesets.Catch/Skinning/CatchLegacySkinTransformer.cs index 36164c5543..af7c60b929 100644 --- a/osu.Game.Rulesets.Catch/Skinning/CatchLegacySkinTransformer.cs +++ b/osu.Game.Rulesets.Catch/Skinning/CatchLegacySkinTransformer.cs @@ -44,6 +44,10 @@ namespace osu.Game.Rulesets.Catch.Skinning return new LegacyFruitPiece("fruit-drop") { Scale = new Vector2(0.8f) }; break; + + case CatchSkinComponents.CatcherIdle: + return this.GetAnimation("fruit-catcher-idle", true, true, true) ?? + this.GetAnimation("fruit-ryuuta", true, true, true); } return null; diff --git a/osu.Game.Rulesets.Catch/UI/CatcherArea.cs b/osu.Game.Rulesets.Catch/UI/CatcherArea.cs index b977d46611..2015937f2a 100644 --- a/osu.Game.Rulesets.Catch/UI/CatcherArea.cs +++ b/osu.Game.Rulesets.Catch/UI/CatcherArea.cs @@ -155,7 +155,10 @@ namespace osu.Game.Rulesets.Catch.UI Anchor = Anchor.TopCentre, Origin = Anchor.BottomCentre, }, - createCatcherSprite(), + createCatcherSprite().With(c => + { + c.Anchor = Anchor.TopCentre; + }) }; } @@ -205,12 +208,11 @@ namespace osu.Game.Rulesets.Catch.UI var additive = createCatcherSprite(); additive.Anchor = Anchor; - additive.OriginPosition += new Vector2(DrawWidth / 2, 0); // also temporary to align sprite correctly. - additive.Position = Position; additive.Scale = Scale; additive.Colour = HyperDashing ? Color4.Red : Color4.White; - additive.RelativePositionAxes = RelativePositionAxes; additive.Blending = BlendingParameters.Additive; + additive.RelativePositionAxes = RelativePositionAxes; + additive.Position = Position; AdditiveTarget.Add(additive); diff --git a/osu.Game.Rulesets.Catch/UI/CatcherSprite.cs b/osu.Game.Rulesets.Catch/UI/CatcherSprite.cs index 025fa9c56e..78020114cd 100644 --- a/osu.Game.Rulesets.Catch/UI/CatcherSprite.cs +++ b/osu.Game.Rulesets.Catch/UI/CatcherSprite.cs @@ -3,31 +3,35 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Sprites; +using osu.Framework.Graphics.Textures; using osu.Game.Skinning; using osuTK; namespace osu.Game.Rulesets.Catch.UI { - public class CatcherSprite : CompositeDrawable + public class CatcherSprite : SkinnableDrawable { + protected override bool ApplySizeRestrictionsToDefault => true; + public CatcherSprite() + : base(new CatchSkinComponent(CatchSkinComponents.CatcherIdle), _ => + new DefaultCatcherSprite(), confineMode: ConfineMode.ScaleDownToFit) { + RelativeSizeAxes = Axes.None; Size = new Vector2(CatcherArea.CATCHER_SIZE); // Sets the origin roughly to the centre of the catcher's plate to allow for correct scaling. - OriginPosition = new Vector2(-0.02f, 0.06f) * CatcherArea.CATCHER_SIZE; + OriginPosition = new Vector2(0.5f, 0.06f) * CatcherArea.CATCHER_SIZE; } - [BackgroundDependencyLoader] - private void load() + private class DefaultCatcherSprite : Sprite { - InternalChild = new SkinnableSprite("Gameplay/catch/fruit-catcher-idle", confineMode: ConfineMode.ScaleDownToFit) + [BackgroundDependencyLoader] + private void load(TextureStore textures) { - RelativeSizeAxes = Axes.Both, - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - }; + Texture = textures.Get("Gameplay/catch/fruit-catcher-idle"); + } } } } From 9d5327b1accc07234637f51f7903cacb2b9966ea Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 10 Mar 2020 15:00:23 +0900 Subject: [PATCH 51/52] Fix osu! shaking instead of missing for early hits --- .../TestSceneEarlyMissJudgement.cs | 70 +++++++++++++++++++ .../Scoring/OsuHitWindows.cs | 2 +- 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 osu.Game.Rulesets.Osu.Tests/TestSceneEarlyMissJudgement.cs diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneEarlyMissJudgement.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneEarlyMissJudgement.cs new file mode 100644 index 0000000000..27a32aa96e --- /dev/null +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneEarlyMissJudgement.cs @@ -0,0 +1,70 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using NUnit.Framework; +using osu.Game.Beatmaps; +using osu.Game.Replays; +using osu.Game.Rulesets.Osu.Beatmaps; +using osu.Game.Rulesets.Osu.Mods; +using osu.Game.Rulesets.Osu.Objects; +using osu.Game.Rulesets.Osu.Replays; +using osu.Game.Rulesets.Scoring; +using osu.Game.Scoring; +using osu.Game.Tests.Visual; +using osu.Game.Users; +using osuTK; + +namespace osu.Game.Rulesets.Osu.Tests +{ + public class TestSceneEarlyMissJudgement : ModTestScene + { + public TestSceneEarlyMissJudgement() + : base(new OsuRuleset()) + { + } + + [Test] + public void TestHitCircleEarly() => CreateModTest(new ModTestData + { + Autoplay = false, + Mod = new TestAutoMod(), + Beatmap = new Beatmap + { + HitObjects = { new HitCircle { Position = new Vector2(256, 192) } } + }, + PassCondition = () => Player.Results.Count > 0 && Player.Results[0].TimeOffset < 0 && Player.Results[0].Type == HitResult.Miss + }); + + private class TestAutoMod : OsuModAutoplay + { + public override Score CreateReplayScore(IBeatmap beatmap) => new Score + { + ScoreInfo = new ScoreInfo { User = new User { Username = "Autoplay" } }, + Replay = new MissingAutoGenerator(beatmap).Generate() + }; + } + + private class MissingAutoGenerator : OsuAutoGeneratorBase + { + public new OsuBeatmap Beatmap => (OsuBeatmap)base.Beatmap; + + public MissingAutoGenerator(IBeatmap beatmap) + : base(beatmap) + { + } + + public override Replay Generate() + { + AddFrameToReplay(new OsuReplayFrame(-100000, new Vector2(256, 500))); + AddFrameToReplay(new OsuReplayFrame(Beatmap.HitObjects[0].StartTime - 1500, new Vector2(256, 500))); + AddFrameToReplay(new OsuReplayFrame(Beatmap.HitObjects[0].StartTime - 1500, new Vector2(256, 500))); + + AddFrameToReplay(new OsuReplayFrame(Beatmap.HitObjects[0].StartTime - 450, Beatmap.HitObjects[0].StackedPosition)); + AddFrameToReplay(new OsuReplayFrame(Beatmap.HitObjects[0].StartTime - 350, Beatmap.HitObjects[0].StackedPosition, OsuAction.LeftButton)); + AddFrameToReplay(new OsuReplayFrame(Beatmap.HitObjects[0].StartTime - 325, Beatmap.HitObjects[0].StackedPosition)); + + return Replay; + } + } + } +} diff --git a/osu.Game.Rulesets.Osu/Scoring/OsuHitWindows.cs b/osu.Game.Rulesets.Osu/Scoring/OsuHitWindows.cs index a6491bb3f3..6f2998006f 100644 --- a/osu.Game.Rulesets.Osu/Scoring/OsuHitWindows.cs +++ b/osu.Game.Rulesets.Osu/Scoring/OsuHitWindows.cs @@ -12,7 +12,7 @@ namespace osu.Game.Rulesets.Osu.Scoring new DifficultyRange(HitResult.Great, 80, 50, 20), new DifficultyRange(HitResult.Good, 140, 100, 60), new DifficultyRange(HitResult.Meh, 200, 150, 100), - new DifficultyRange(HitResult.Miss, 200, 200, 200), + new DifficultyRange(HitResult.Miss, 400, 400, 400), }; public override bool IsHitResultAllowed(HitResult result) From 678f33eea36615c5a2ac2463ff13fc3c6f50a704 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 10 Mar 2020 15:45:21 +0900 Subject: [PATCH 52/52] Add late miss judgements --- ...cs => TestSceneMissHitWindowJudgements.cs} | 49 +++++++++++++++---- 1 file changed, 40 insertions(+), 9 deletions(-) rename osu.Game.Rulesets.Osu.Tests/{TestSceneEarlyMissJudgement.cs => TestSceneMissHitWindowJudgements.cs} (58%) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneEarlyMissJudgement.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneMissHitWindowJudgements.cs similarity index 58% rename from osu.Game.Rulesets.Osu.Tests/TestSceneEarlyMissJudgement.cs rename to osu.Game.Rulesets.Osu.Tests/TestSceneMissHitWindowJudgements.cs index 27a32aa96e..5f3596976d 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneEarlyMissJudgement.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneMissHitWindowJudgements.cs @@ -8,6 +8,7 @@ using osu.Game.Rulesets.Osu.Beatmaps; using osu.Game.Rulesets.Osu.Mods; using osu.Game.Rulesets.Osu.Objects; using osu.Game.Rulesets.Osu.Replays; +using osu.Game.Rulesets.Osu.Scoring; using osu.Game.Rulesets.Scoring; using osu.Game.Scoring; using osu.Game.Tests.Visual; @@ -16,24 +17,54 @@ using osuTK; namespace osu.Game.Rulesets.Osu.Tests { - public class TestSceneEarlyMissJudgement : ModTestScene + public class TestSceneMissHitWindowJudgements : ModTestScene { - public TestSceneEarlyMissJudgement() + public TestSceneMissHitWindowJudgements() : base(new OsuRuleset()) { } [Test] - public void TestHitCircleEarly() => CreateModTest(new ModTestData + public void TestMissViaEarlyHit() { - Autoplay = false, - Mod = new TestAutoMod(), - Beatmap = new Beatmap + var beatmap = new Beatmap { HitObjects = { new HitCircle { Position = new Vector2(256, 192) } } - }, - PassCondition = () => Player.Results.Count > 0 && Player.Results[0].TimeOffset < 0 && Player.Results[0].Type == HitResult.Miss - }); + }; + + var hitWindows = new OsuHitWindows(); + hitWindows.SetDifficulty(beatmap.BeatmapInfo.BaseDifficulty.OverallDifficulty); + + CreateModTest(new ModTestData + { + Autoplay = false, + Mod = new TestAutoMod(), + Beatmap = new Beatmap + { + HitObjects = { new HitCircle { Position = new Vector2(256, 192) } } + }, + PassCondition = () => Player.Results.Count > 0 && Player.Results[0].TimeOffset < -hitWindows.WindowFor(HitResult.Meh) && Player.Results[0].Type == HitResult.Miss + }); + } + + [Test] + public void TestMissViaNotHitting() + { + var beatmap = new Beatmap + { + HitObjects = { new HitCircle { Position = new Vector2(256, 192) } } + }; + + var hitWindows = new OsuHitWindows(); + hitWindows.SetDifficulty(beatmap.BeatmapInfo.BaseDifficulty.OverallDifficulty); + + CreateModTest(new ModTestData + { + Autoplay = false, + Beatmap = beatmap, + PassCondition = () => Player.Results.Count > 0 && Player.Results[0].TimeOffset >= hitWindows.WindowFor(HitResult.Meh) && Player.Results[0].Type == HitResult.Miss + }); + } private class TestAutoMod : OsuModAutoplay {