From 11dad7bf746820b56fa426f63f8582062de52a6d Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 10 Oct 2018 16:46:02 +0200 Subject: [PATCH 0001/1829] filter beatmaps by star range --- .../Visual/TestCaseBeatmapCarousel.cs | 49 +++++++++++++++++++ .../Select/Carousel/CarouselBeatmap.cs | 6 +++ osu.Game/Screens/Select/FilterControl.cs | 40 +++++++++------ osu.Game/Screens/Select/FilterCriteria.cs | 2 + 4 files changed, 81 insertions(+), 16 deletions(-) diff --git a/osu.Game.Tests/Visual/TestCaseBeatmapCarousel.cs b/osu.Game.Tests/Visual/TestCaseBeatmapCarousel.cs index db66c01814..df42ba9d16 100644 --- a/osu.Game.Tests/Visual/TestCaseBeatmapCarousel.cs +++ b/osu.Game.Tests/Visual/TestCaseBeatmapCarousel.cs @@ -77,6 +77,7 @@ namespace osu.Game.Tests.Visual testEmptyTraversal(); testHiding(); testSelectingFilteredRuleset(); + testFilterByStarRange(); testCarouselRootIsRandom(); } @@ -245,6 +246,54 @@ namespace osu.Game.Tests.Visual AddAssert("Selection is non-null", () => currentSelection != null); } + /// + /// Test filtering by restricting the desired star range + /// + private void testFilterByStarRange() + { + var manyStarDiffs = createTestBeatmapSet(set_count + 1); + manyStarDiffs.Beatmaps.Clear(); + + for (int i = 0; i < 12; i++) + { + manyStarDiffs.Beatmaps.Add(new BeatmapInfo + { + OnlineBeatmapID = manyStarDiffs.ID * 10 + i, + Path = $"randomDiff{i}.osu", + Version = $"Totally Normal {i}", + StarDifficulty = i, + BaseDifficulty = new BeatmapDifficulty + { + OverallDifficulty = 5, + } + }); + } + + AddStep("add set with many stars", () => carousel.UpdateBeatmapSet(manyStarDiffs)); + + AddStep("select added set", () => carousel.SelectBeatmap(manyStarDiffs.Beatmaps[0], false)); + + AddStep("Filter to 1-3 stars", () => carousel.Filter(new FilterCriteria { DisplayStarsMinimum = 1, DisplayStarsMaximum = 3 }, false)); + checkVisibleItemCount(diff: false, count: 1); + checkVisibleItemCount(diff: true, count: 3); + + AddStep("Filter to 3-3 stars", () => carousel.Filter(new FilterCriteria { DisplayStarsMinimum = 3, DisplayStarsMaximum = 3 }, false)); + checkVisibleItemCount(diff: false, count: 1); + checkVisibleItemCount(diff: true, count: 1); + + AddStep("Filter to 4-2 stars", () => carousel.Filter(new FilterCriteria { DisplayStarsMinimum = 4, DisplayStarsMaximum = 2 }, false)); + checkVisibleItemCount(diff: false, count: 0); + checkVisibleItemCount(diff: true, count: 0); + + AddStep("remove added set", () => + { + carousel.RemoveBeatmapSet(manyStarDiffs); + manyStarDiffs = null; + }); + + AddStep("Un-filter", () => carousel.Filter(new FilterCriteria(), false)); + } + /// /// Test random non-repeating algorithm /// diff --git a/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs b/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs index 272332f1ce..c9ed2f3573 100644 --- a/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs +++ b/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs @@ -26,6 +26,12 @@ namespace osu.Game.Screens.Select.Carousel bool match = criteria.Ruleset == null || Beatmap.RulesetID == criteria.Ruleset.ID || Beatmap.RulesetID == 0 && criteria.Ruleset.ID > 0 && criteria.AllowConvertedBeatmaps; + if(criteria.DisplayStarsMinimum.HasValue) + match &= Beatmap.StarDifficulty >= criteria.DisplayStarsMinimum; + + if (criteria.DisplayStarsMaximum.HasValue) + match &= Beatmap.StarDifficulty <= criteria.DisplayStarsMaximum; + if (!string.IsNullOrEmpty(criteria.SearchText)) match &= Beatmap.Metadata.SearchableTerms.Any(term => term.IndexOf(criteria.SearchText, StringComparison.InvariantCultureIgnoreCase) >= 0) || diff --git a/osu.Game/Screens/Select/FilterControl.cs b/osu.Game/Screens/Select/FilterControl.cs index fce7af1400..78b452b6f5 100644 --- a/osu.Game/Screens/Select/FilterControl.cs +++ b/osu.Game/Screens/Select/FilterControl.cs @@ -32,14 +32,13 @@ namespace osu.Game.Screens.Select public SortMode Sort { - get { return sort; } + get => sort; set { - if (sort != value) - { - sort = value; - FilterChanged?.Invoke(CreateCriteria()); - } + if (sort == value) return; + + sort = value; + FilterChanged?.Invoke(CreateCriteria()); } } @@ -47,14 +46,13 @@ namespace osu.Game.Screens.Select public GroupMode Group { - get { return group; } + get => group; set { - if (group != value) - { - group = value; - FilterChanged?.Invoke(CreateCriteria()); - } + if (group == value) return; + + group = value; + FilterChanged?.Invoke(CreateCriteria()); } } @@ -64,7 +62,9 @@ namespace osu.Game.Screens.Select Sort = sort, SearchText = searchTextBox.Text, AllowConvertedBeatmaps = showConverted, - Ruleset = ruleset.Value + Ruleset = ruleset.Value, + DisplayStarsMinimum = minimumStars, + DisplayStarsMaximum = maximumStars, }; public Action Exit; @@ -168,7 +168,9 @@ namespace osu.Game.Screens.Select private readonly IBindable ruleset = new Bindable(); - private Bindable showConverted; + private readonly Bindable showConverted = new Bindable(); + private readonly Bindable minimumStars = new Bindable(); + private readonly Bindable maximumStars = new Bindable(); public readonly Box Background; @@ -177,8 +179,14 @@ namespace osu.Game.Screens.Select { sortTabs.AccentColour = colours.GreenLight; - showConverted = config.GetBindable(OsuSetting.ShowConvertedBeatmaps); - showConverted.ValueChanged += val => updateCriteria(); + config.BindWith(OsuSetting.ShowConvertedBeatmaps, showConverted); + showConverted.ValueChanged += _ => updateCriteria(); + + config.BindWith(OsuSetting.DisplayStarsMinimum, minimumStars); + minimumStars.ValueChanged += _ => updateCriteria(); + + config.BindWith(OsuSetting.DisplayStarsMaximum, maximumStars); + maximumStars.ValueChanged += _ => updateCriteria(); ruleset.BindTo(parentRuleset); ruleset.BindValueChanged(_ => updateCriteria(), true); diff --git a/osu.Game/Screens/Select/FilterCriteria.cs b/osu.Game/Screens/Select/FilterCriteria.cs index bea806f00f..f97eb1bea1 100644 --- a/osu.Game/Screens/Select/FilterCriteria.cs +++ b/osu.Game/Screens/Select/FilterCriteria.cs @@ -13,5 +13,7 @@ namespace osu.Game.Screens.Select public string SearchText; public RulesetInfo Ruleset; public bool AllowConvertedBeatmaps; + public double? DisplayStarsMinimum; + public double? DisplayStarsMaximum; } } From d83ce7e4bb35b352f112d1353c4766b4006281be Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 19 Oct 2018 12:22:05 +0200 Subject: [PATCH 0002/1829] don't allow null values in FilterCriteria, ensure values in test instead --- .../Visual/TestCaseBeatmapCarousel.cs | 51 +++++++++++-------- .../Select/Carousel/CarouselBeatmap.cs | 7 +-- osu.Game/Screens/Select/FilterCriteria.cs | 4 +- 3 files changed, 34 insertions(+), 28 deletions(-) diff --git a/osu.Game.Tests/Visual/TestCaseBeatmapCarousel.cs b/osu.Game.Tests/Visual/TestCaseBeatmapCarousel.cs index df42ba9d16..a57ef21dd9 100644 --- a/osu.Game.Tests/Visual/TestCaseBeatmapCarousel.cs +++ b/osu.Game.Tests/Visual/TestCaseBeatmapCarousel.cs @@ -65,6 +65,10 @@ namespace osu.Game.Tests.Visual carousel.SelectionChanged = s => currentSelection = s; + // not being hooked up to the config leads to the SR filter only showing 0 to 0 SR maps + // thus "filter" once to assume a 0 to 10 range + carousel.Filter(new TestCriteria()); + loadBeatmaps(beatmapSets); testTraversal(); @@ -150,9 +154,7 @@ namespace osu.Game.Tests.Visual private bool selectedBeatmapVisible() { var currentlySelected = carousel.Items.FirstOrDefault(s => s.Item is CarouselBeatmap && s.Item.State == CarouselItemState.Selected); - if (currentlySelected == null) - return true; - return currentlySelected.Item.Visible; + return currentlySelected?.Item.Visible ?? true; } private void checkInvisibleDifficultiesUnselectable() @@ -165,8 +167,8 @@ namespace osu.Game.Tests.Visual { AddStep("Toggle non-matching filter", () => { - carousel.Filter(new FilterCriteria { SearchText = "Dingo" }, false); - carousel.Filter(new FilterCriteria(), false); + carousel.Filter(new TestCriteria { SearchText = "Dingo" }, false); + carousel.Filter(new TestCriteria(), false); eagerSelectedIDs.Add(carousel.SelectedBeatmapSet.ID); } ); @@ -207,7 +209,7 @@ namespace osu.Game.Tests.Visual setSelected(1, 1); - AddStep("Filter", () => carousel.Filter(new FilterCriteria { SearchText = "set #3!" }, false)); + AddStep("Filter", () => carousel.Filter(new TestCriteria { SearchText = "set #3!" }, false)); checkVisibleItemCount(diff: false, count: 1); checkVisibleItemCount(diff: true, count: 3); checkSelected(3, 1); @@ -215,7 +217,7 @@ namespace osu.Game.Tests.Visual advanceSelection(diff: true, count: 4); checkSelected(3, 2); - AddStep("Un-filter (debounce)", () => carousel.Filter(new FilterCriteria())); + AddStep("Un-filter (debounce)", () => carousel.Filter(new TestCriteria())); AddUntilStep(() => !carousel.PendingFilterTask, "Wait for debounce"); checkVisibleItemCount(diff: false, count: set_count); checkVisibleItemCount(diff: true, count: 3); @@ -223,13 +225,13 @@ namespace osu.Game.Tests.Visual // test filtering some difficulties (and keeping current beatmap set selected). setSelected(1, 2); - AddStep("Filter some difficulties", () => carousel.Filter(new FilterCriteria { SearchText = "Normal" }, false)); + AddStep("Filter some difficulties", () => carousel.Filter(new TestCriteria { SearchText = "Normal" }, false)); checkSelected(1, 1); - AddStep("Un-filter", () => carousel.Filter(new FilterCriteria(), false)); + AddStep("Un-filter", () => carousel.Filter(new TestCriteria(), false)); checkSelected(1, 1); - AddStep("Filter all", () => carousel.Filter(new FilterCriteria { SearchText = "Dingo" }, false)); + AddStep("Filter all", () => carousel.Filter(new TestCriteria { SearchText = "Dingo" }, false)); checkVisibleItemCount(false, 0); checkVisibleItemCount(true, 0); @@ -241,7 +243,7 @@ namespace osu.Game.Tests.Visual advanceSelection(false); AddAssert("Selection is null", () => currentSelection == null); - AddStep("Un-filter", () => carousel.Filter(new FilterCriteria(), false)); + AddStep("Un-filter", () => carousel.Filter(new TestCriteria(), false)); AddAssert("Selection is non-null", () => currentSelection != null); } @@ -273,15 +275,15 @@ namespace osu.Game.Tests.Visual AddStep("select added set", () => carousel.SelectBeatmap(manyStarDiffs.Beatmaps[0], false)); - AddStep("Filter to 1-3 stars", () => carousel.Filter(new FilterCriteria { DisplayStarsMinimum = 1, DisplayStarsMaximum = 3 }, false)); + AddStep("Filter to 1-3 stars", () => carousel.Filter(new TestCriteria { DisplayStarsMinimum = 1, DisplayStarsMaximum = 3 }, false)); checkVisibleItemCount(diff: false, count: 1); checkVisibleItemCount(diff: true, count: 3); - AddStep("Filter to 3-3 stars", () => carousel.Filter(new FilterCriteria { DisplayStarsMinimum = 3, DisplayStarsMaximum = 3 }, false)); + AddStep("Filter to 3-3 stars", () => carousel.Filter(new TestCriteria { DisplayStarsMinimum = 3, DisplayStarsMaximum = 3 }, false)); checkVisibleItemCount(diff: false, count: 1); checkVisibleItemCount(diff: true, count: 1); - AddStep("Filter to 4-2 stars", () => carousel.Filter(new FilterCriteria { DisplayStarsMinimum = 4, DisplayStarsMaximum = 2 }, false)); + AddStep("Filter to 4-2 stars", () => carousel.Filter(new TestCriteria { DisplayStarsMinimum = 4, DisplayStarsMaximum = 2 }, false)); checkVisibleItemCount(diff: false, count: 0); checkVisibleItemCount(diff: true, count: 0); @@ -291,7 +293,7 @@ namespace osu.Game.Tests.Visual manyStarDiffs = null; }); - AddStep("Un-filter", () => carousel.Filter(new FilterCriteria(), false)); + AddStep("Un-filter", () => carousel.Filter(new TestCriteria(), false)); } /// @@ -322,13 +324,13 @@ namespace osu.Game.Tests.Visual AddAssert("ensure repeat", () => selectedSets.Contains(carousel.SelectedBeatmapSet)); AddStep("Add set with 100 difficulties", () => carousel.UpdateBeatmapSet(createTestBeatmapSetWithManyDifficulties(set_count + 1))); - AddStep("Filter Extra", () => carousel.Filter(new FilterCriteria { SearchText = "Extra 10" }, false)); + AddStep("Filter Extra", () => carousel.Filter(new TestCriteria { SearchText = "Extra 10" }, false)); checkInvisibleDifficultiesUnselectable(); checkInvisibleDifficultiesUnselectable(); checkInvisibleDifficultiesUnselectable(); checkInvisibleDifficultiesUnselectable(); checkInvisibleDifficultiesUnselectable(); - AddStep("Un-filter", () => carousel.Filter(new FilterCriteria(), false)); + AddStep("Un-filter", () => carousel.Filter(new TestCriteria(), false)); } /// @@ -359,9 +361,9 @@ namespace osu.Game.Tests.Visual /// private void testSorting() { - AddStep("Sort by author", () => carousel.Filter(new FilterCriteria { Sort = SortMode.Author }, false)); + AddStep("Sort by author", () => carousel.Filter(new TestCriteria { Sort = SortMode.Author }, false)); AddAssert("Check zzzzz is at bottom", () => carousel.BeatmapSets.Last().Metadata.AuthorString == "zzzzz"); - AddStep("Sort by artist", () => carousel.Filter(new FilterCriteria { Sort = SortMode.Artist }, false)); + AddStep("Sort by artist", () => carousel.Filter(new TestCriteria { Sort = SortMode.Artist }, false)); AddAssert($"Check #{set_count} is at bottom", () => carousel.BeatmapSets.Last().Metadata.Title.EndsWith($"#{set_count}!")); } @@ -451,7 +453,7 @@ namespace osu.Game.Tests.Visual carousel.UpdateBeatmapSet(testMixed); }); AddStep("filter to ruleset 0", () => - carousel.Filter(new FilterCriteria { Ruleset = rulesets.AvailableRulesets.ElementAt(0) }, false)); + carousel.Filter(new TestCriteria { Ruleset = rulesets.AvailableRulesets.ElementAt(0) }, false)); AddStep("select filtered map skipping filtered", () => carousel.SelectBeatmap(testMixed.Beatmaps[1], false)); AddAssert("unfiltered beatmap selected", () => carousel.SelectedBeatmap.Equals(testMixed.Beatmaps[0])); @@ -581,5 +583,14 @@ namespace osu.Game.Tests.Visual public bool PendingFilterTask => PendingFilter != null; } + + private class TestCriteria : FilterCriteria + { + public TestCriteria() + { + DisplayStarsMinimum = 0; + DisplayStarsMaximum = 10; + } + } } } diff --git a/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs b/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs index c9ed2f3573..2e1adaf66f 100644 --- a/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs +++ b/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs @@ -25,12 +25,7 @@ namespace osu.Game.Screens.Select.Carousel base.Filter(criteria); bool match = criteria.Ruleset == null || Beatmap.RulesetID == criteria.Ruleset.ID || Beatmap.RulesetID == 0 && criteria.Ruleset.ID > 0 && criteria.AllowConvertedBeatmaps; - - if(criteria.DisplayStarsMinimum.HasValue) - match &= Beatmap.StarDifficulty >= criteria.DisplayStarsMinimum; - - if (criteria.DisplayStarsMaximum.HasValue) - match &= Beatmap.StarDifficulty <= criteria.DisplayStarsMaximum; + match &= Beatmap.StarDifficulty >= criteria.DisplayStarsMinimum && Beatmap.StarDifficulty <= criteria.DisplayStarsMaximum; if (!string.IsNullOrEmpty(criteria.SearchText)) match &= diff --git a/osu.Game/Screens/Select/FilterCriteria.cs b/osu.Game/Screens/Select/FilterCriteria.cs index f97eb1bea1..bd8bb22e1c 100644 --- a/osu.Game/Screens/Select/FilterCriteria.cs +++ b/osu.Game/Screens/Select/FilterCriteria.cs @@ -13,7 +13,7 @@ namespace osu.Game.Screens.Select public string SearchText; public RulesetInfo Ruleset; public bool AllowConvertedBeatmaps; - public double? DisplayStarsMinimum; - public double? DisplayStarsMaximum; + public double DisplayStarsMinimum; + public double DisplayStarsMaximum; } } From 65d664425bdfeca60343863d1ef441a7ade7a389 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Fri, 12 Apr 2019 23:13:13 +0200 Subject: [PATCH 0003/1829] Added DiscordRichPresence to osu.Desktop packages --- osu.Desktop/osu.Desktop.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Desktop/osu.Desktop.csproj b/osu.Desktop/osu.Desktop.csproj index 66db439c82..7a19e73be6 100644 --- a/osu.Desktop/osu.Desktop.csproj +++ b/osu.Desktop/osu.Desktop.csproj @@ -22,6 +22,7 @@ + From 533afaa770be793be46f9948b7168e469f33431f Mon Sep 17 00:00:00 2001 From: Lucas A Date: Sat, 13 Apr 2019 13:06:53 +0200 Subject: [PATCH 0004/1829] Added DiscordRichPresenceClient --- osu.Desktop/DiscordRichPresenceClient.cs | 106 +++++++++++++++++++++++ osu.Desktop/OsuGameDesktop.cs | 2 + 2 files changed, 108 insertions(+) create mode 100644 osu.Desktop/DiscordRichPresenceClient.cs diff --git a/osu.Desktop/DiscordRichPresenceClient.cs b/osu.Desktop/DiscordRichPresenceClient.cs new file mode 100644 index 0000000000..03b2884ab6 --- /dev/null +++ b/osu.Desktop/DiscordRichPresenceClient.cs @@ -0,0 +1,106 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using DiscordRPC; +using osu.Framework.Allocation; +using osu.Framework.Bindables; +using osu.Framework.Graphics; +using osu.Framework.Logging; +using osu.Game.Online.API; +using osu.Game.Rulesets; +using osu.Game.Users; +using User = osu.Game.Users.User; + +namespace osu.Desktop +{ + internal class DiscordRichPresenceClient : Component + { + private const string client_id = "559391129716391967"; + + private Bindable user; + + private readonly DiscordRpcClient client = new DiscordRpcClient(client_id); + + [BackgroundDependencyLoader] + private void load(IAPIProvider provider) + { + user = provider.LocalUser.GetBoundCopy(); + + user.ValueChanged += usr => + { + usr.OldValue.Status.ValueChanged -= updateStatus; + usr.NewValue.Status.ValueChanged += updateStatus; + }; + + user.Value.Status.ValueChanged += updateStatus; + + client.OnReady += (_, __) => Logger.Log("Discord RPC Client ready.", LoggingTarget.Network, LogLevel.Debug); + client.OnError += (_, e) => Logger.Log($"An error occurred with Discord RPC Client : {e.Message}", LoggingTarget.Network, LogLevel.Debug); + client.OnConnectionFailed += (_, e) => Logger.Log("Discord RPC Client failed to initialize : is discord running ?", LoggingTarget.Network, LogLevel.Debug); + client.OnPresenceUpdate += (_, __) => Logger.Log("Updated Discord Rich Presence", LoggingTarget.Network, LogLevel.Debug); + + client.Initialize(); + } + + private void updateStatus(ValueChangedEvent e) + { + var presence = defaultPresence(e.NewValue.Message); + + switch (e.NewValue) + { + case UserStatusSoloGame game: + presence.State = $"{game.Beatmap.Metadata.Artist} - {game.Beatmap.Metadata.Title} [{game.Beatmap.Version}]"; + setPresenceGamemode(game.Beatmap.Ruleset, presence); + break; + + case UserStatusEditing editing: + presence.State = $"{editing.Beatmap.Metadata.Artist} - {editing.Beatmap.Metadata.Title}" + (editing.Beatmap.Version != null ? $"[{editing.Beatmap.Version}]" : ""); + break; + } + + client.SetPresence(presence); + } + + private void setPresenceGamemode(RulesetInfo ruleset, RichPresence presence) + { + switch (ruleset.ID) + { + case 0: + presence.Assets.SmallImageKey = "osu"; + break; + + case 1: + presence.Assets.SmallImageKey = "taiko"; + break; + + case 2: + presence.Assets.SmallImageKey = "fruits"; + break; + + case 3: + presence.Assets.SmallImageKey = "mania"; + break; + } + + presence.Assets.SmallImageText = ruleset.ShortName; + } + + private RichPresence defaultPresence(string status) => new RichPresence + { + Details = status, + Assets = new Assets + { + LargeImageKey = "lazer", + LargeImageText = "osu!lazer" + } + }; + + protected override void Update() + { + if (client.IsInitialized) + client?.Invoke(); + + base.Update(); + } + } +} diff --git a/osu.Desktop/OsuGameDesktop.cs b/osu.Desktop/OsuGameDesktop.cs index e7e0af7eea..41e2efd011 100644 --- a/osu.Desktop/OsuGameDesktop.cs +++ b/osu.Desktop/OsuGameDesktop.cs @@ -64,6 +64,8 @@ namespace osu.Desktop else Add(new SimpleUpdateManager()); } + + Add(new DiscordRichPresenceClient()); } protected override void ScreenChanged(IScreen lastScreen, IScreen newScreen) From 4996ad4b042c73de5919818c2a047f19b701c75b Mon Sep 17 00:00:00 2001 From: Lucas A Date: Sat, 13 Apr 2019 13:25:52 +0200 Subject: [PATCH 0005/1829] Show the current gamemode on the rich presence --- osu.Desktop/DiscordRichPresenceClient.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Desktop/DiscordRichPresenceClient.cs b/osu.Desktop/DiscordRichPresenceClient.cs index 03b2884ab6..1e7c1f051a 100644 --- a/osu.Desktop/DiscordRichPresenceClient.cs +++ b/osu.Desktop/DiscordRichPresenceClient.cs @@ -50,7 +50,7 @@ namespace osu.Desktop { case UserStatusSoloGame game: presence.State = $"{game.Beatmap.Metadata.Artist} - {game.Beatmap.Metadata.Title} [{game.Beatmap.Version}]"; - setPresenceGamemode(game.Beatmap.Ruleset, presence); + setPresenceGamemode(game.Ruleset, presence); break; case UserStatusEditing editing: From 1b1ebb7fd928f0651e7c2777ce0807e47961ea54 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Sun, 14 Apr 2019 21:12:10 +0200 Subject: [PATCH 0006/1829] Show current logged-in user on rich presence --- osu.Desktop/DiscordRichPresenceClient.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Desktop/DiscordRichPresenceClient.cs b/osu.Desktop/DiscordRichPresenceClient.cs index 1e7c1f051a..1f4d91dbdb 100644 --- a/osu.Desktop/DiscordRichPresenceClient.cs +++ b/osu.Desktop/DiscordRichPresenceClient.cs @@ -91,7 +91,7 @@ namespace osu.Desktop Assets = new Assets { LargeImageKey = "lazer", - LargeImageText = "osu!lazer" + LargeImageText = user.Value.Username } }; From b38160177af31069b0c5377a7d1c8eaa92fe945e Mon Sep 17 00:00:00 2001 From: Lucas A Date: Sun, 14 Apr 2019 22:18:57 +0200 Subject: [PATCH 0007/1829] Add some more icons to rich presence + prevent rich presence from displaying empty brackets when current beatmap doesn't have a version (trying to edit osu! main menu theme music ?) --- osu.Desktop/DiscordRichPresenceClient.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/osu.Desktop/DiscordRichPresenceClient.cs b/osu.Desktop/DiscordRichPresenceClient.cs index 1f4d91dbdb..93c2a8bdcf 100644 --- a/osu.Desktop/DiscordRichPresenceClient.cs +++ b/osu.Desktop/DiscordRichPresenceClient.cs @@ -15,7 +15,7 @@ namespace osu.Desktop { internal class DiscordRichPresenceClient : Component { - private const string client_id = "559391129716391967"; + private const string client_id = "563024054391537674"; private Bindable user; @@ -54,7 +54,9 @@ namespace osu.Desktop break; case UserStatusEditing editing: - presence.State = $"{editing.Beatmap.Metadata.Artist} - {editing.Beatmap.Metadata.Title}" + (editing.Beatmap.Version != null ? $"[{editing.Beatmap.Version}]" : ""); + presence.State = $"{editing.Beatmap.Metadata.Artist} - {editing.Beatmap.Metadata.Title} " + (!string.IsNullOrEmpty(editing.Beatmap.Version) ? $"[{editing.Beatmap.Version}]" : ""); + presence.Assets.SmallImageKey = "edit"; + presence.Assets.SmallImageText = "editing"; break; } @@ -80,6 +82,10 @@ namespace osu.Desktop case 3: presence.Assets.SmallImageKey = "mania"; break; + + default: + presence.Assets.SmallImageKey = "unknown"; + break; } presence.Assets.SmallImageText = ruleset.ShortName; From a4166ce1e3991ba23a7bac15bf10ca860dace0f1 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Fri, 19 Apr 2019 19:50:13 +0200 Subject: [PATCH 0008/1829] Removed Update() override from DiscordRichPresenceClient because client.Invoke() is unecessary (events callbacks are automatically called) --- osu.Desktop/DiscordRichPresenceClient.cs | 8 -------- 1 file changed, 8 deletions(-) diff --git a/osu.Desktop/DiscordRichPresenceClient.cs b/osu.Desktop/DiscordRichPresenceClient.cs index 93c2a8bdcf..9288141e5f 100644 --- a/osu.Desktop/DiscordRichPresenceClient.cs +++ b/osu.Desktop/DiscordRichPresenceClient.cs @@ -100,13 +100,5 @@ namespace osu.Desktop LargeImageText = user.Value.Username } }; - - protected override void Update() - { - if (client.IsInitialized) - client?.Invoke(); - - base.Update(); - } } } From ee2bbf950f682c82e6cb31ae20f871b1958724af Mon Sep 17 00:00:00 2001 From: Lucas A Date: Tue, 14 May 2019 19:13:21 +0200 Subject: [PATCH 0009/1829] Update DiscordRichPresenceClient presence logic --- osu.Desktop/DiscordRichPresenceClient.cs | 36 ++++++++++++++++-------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/osu.Desktop/DiscordRichPresenceClient.cs b/osu.Desktop/DiscordRichPresenceClient.cs index 9288141e5f..9537252216 100644 --- a/osu.Desktop/DiscordRichPresenceClient.cs +++ b/osu.Desktop/DiscordRichPresenceClient.cs @@ -9,6 +9,7 @@ using osu.Framework.Logging; using osu.Game.Online.API; using osu.Game.Rulesets; using osu.Game.Users; +using static osu.Game.Users.UserActivity; using User = osu.Game.Users.User; namespace osu.Desktop @@ -28,32 +29,43 @@ namespace osu.Desktop user.ValueChanged += usr => { - usr.OldValue.Status.ValueChanged -= updateStatus; - usr.NewValue.Status.ValueChanged += updateStatus; + usr.NewValue.Activity.ValueChanged += activity => updateStatus(user.Value.Status.Value, activity.NewValue); + usr.NewValue.Status.ValueChanged += status => updateStatus(status.NewValue, user.Value.Activity.Value); }; - user.Value.Status.ValueChanged += updateStatus; + user.TriggerChange(); - client.OnReady += (_, __) => Logger.Log("Discord RPC Client ready.", LoggingTarget.Network, LogLevel.Debug); - client.OnError += (_, e) => Logger.Log($"An error occurred with Discord RPC Client : {e.Message}", LoggingTarget.Network, LogLevel.Debug); - client.OnConnectionFailed += (_, e) => Logger.Log("Discord RPC Client failed to initialize : is discord running ?", LoggingTarget.Network, LogLevel.Debug); - client.OnPresenceUpdate += (_, __) => Logger.Log("Updated Discord Rich Presence", LoggingTarget.Network, LogLevel.Debug); + enableLogging(); client.Initialize(); } - private void updateStatus(ValueChangedEvent e) + private void enableLogging() { - var presence = defaultPresence(e.NewValue.Message); + client.OnReady += (_, __) => Logger.Log("Discord RPC Client ready.", LoggingTarget.Network, LogLevel.Debug); + client.OnError += (_, e) => Logger.Log($"An error occurred with Discord RPC Client : {e.Message}", LoggingTarget.Network, LogLevel.Debug); + client.OnConnectionFailed += (_, e) => Logger.Log("Discord RPC Client failed to initialize : is discord running ?", LoggingTarget.Network, LogLevel.Debug); + client.OnPresenceUpdate += (_, __) => Logger.Log("Updated Discord Rich Presence", LoggingTarget.Network, LogLevel.Debug); + } - switch (e.NewValue) + private void updateStatus(UserStatus st, UserActivity a) + { + var presence = defaultPresence(st is UserStatusOnline ? a?.Status : st.Message); + + if (!(st is UserStatusOnline)) //don't update the presence any further if the current user status is DND / Offline & simply return with the default presence { - case UserStatusSoloGame game: + client.SetPresence(presence); + return; + } + + switch (a) + { + case UserActivitySoloGame game: presence.State = $"{game.Beatmap.Metadata.Artist} - {game.Beatmap.Metadata.Title} [{game.Beatmap.Version}]"; setPresenceGamemode(game.Ruleset, presence); break; - case UserStatusEditing editing: + case UserActivityEditing editing: presence.State = $"{editing.Beatmap.Metadata.Artist} - {editing.Beatmap.Metadata.Title} " + (!string.IsNullOrEmpty(editing.Beatmap.Version) ? $"[{editing.Beatmap.Version}]" : ""); presence.Assets.SmallImageKey = "edit"; presence.Assets.SmallImageText = "editing"; From d4013ae0d894134c2397a84f2bf0427bfa026ec0 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Tue, 14 May 2019 19:37:43 +0200 Subject: [PATCH 0010/1829] Make DiscordRichPresenceClient dispose client on disposal --- osu.Desktop/DiscordRichPresenceClient.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/osu.Desktop/DiscordRichPresenceClient.cs b/osu.Desktop/DiscordRichPresenceClient.cs index 9537252216..d49b08823c 100644 --- a/osu.Desktop/DiscordRichPresenceClient.cs +++ b/osu.Desktop/DiscordRichPresenceClient.cs @@ -112,5 +112,11 @@ namespace osu.Desktop LargeImageText = user.Value.Username } }; + + protected override void Dispose(bool isDisposing) + { + client.Dispose(); + base.Dispose(isDisposing); + } } } From 01b75db21a791732b1e2c57951eaae7a8c2523ac Mon Sep 17 00:00:00 2001 From: Lucas A Date: Thu, 16 May 2019 18:36:54 +0200 Subject: [PATCH 0011/1829] Use ruleset.ShortName instead of hardcoded names. --- osu.Desktop/DiscordRichPresenceClient.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Desktop/DiscordRichPresenceClient.cs b/osu.Desktop/DiscordRichPresenceClient.cs index d49b08823c..38e929c1ae 100644 --- a/osu.Desktop/DiscordRichPresenceClient.cs +++ b/osu.Desktop/DiscordRichPresenceClient.cs @@ -80,19 +80,19 @@ namespace osu.Desktop switch (ruleset.ID) { case 0: - presence.Assets.SmallImageKey = "osu"; + presence.Assets.SmallImageKey = ruleset.ShortName; break; case 1: - presence.Assets.SmallImageKey = "taiko"; + presence.Assets.SmallImageKey = ruleset.ShortName; break; case 2: - presence.Assets.SmallImageKey = "fruits"; + presence.Assets.SmallImageKey = ruleset.ShortName; break; case 3: - presence.Assets.SmallImageKey = "mania"; + presence.Assets.SmallImageKey = ruleset.ShortName; break; default: From 446210b81223a7635496071a1204ae64d95d25aa Mon Sep 17 00:00:00 2001 From: Lucas A Date: Sat, 25 May 2019 11:33:31 +0200 Subject: [PATCH 0012/1829] Use an if statement instead of a switch --- osu.Desktop/DiscordRichPresenceClient.cs | 26 ++++-------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/osu.Desktop/DiscordRichPresenceClient.cs b/osu.Desktop/DiscordRichPresenceClient.cs index 38e929c1ae..4a2f882e2b 100644 --- a/osu.Desktop/DiscordRichPresenceClient.cs +++ b/osu.Desktop/DiscordRichPresenceClient.cs @@ -77,28 +77,10 @@ namespace osu.Desktop private void setPresenceGamemode(RulesetInfo ruleset, RichPresence presence) { - switch (ruleset.ID) - { - case 0: - presence.Assets.SmallImageKey = ruleset.ShortName; - break; - - case 1: - presence.Assets.SmallImageKey = ruleset.ShortName; - break; - - case 2: - presence.Assets.SmallImageKey = ruleset.ShortName; - break; - - case 3: - presence.Assets.SmallImageKey = ruleset.ShortName; - break; - - default: - presence.Assets.SmallImageKey = "unknown"; - break; - } + if (ruleset.ID != null && ruleset.ID <= 3) //legacy rulesets use an ID between 0 and 3 + presence.Assets.SmallImageKey = ruleset.ShortName; + else + presence.Assets.SmallImageKey = "unknown"; //not a legay ruleset so let's display the unknown ruleset icon. presence.Assets.SmallImageText = ruleset.ShortName; } From 9faba94978de1db4008a2124c90f909117e4e93a Mon Sep 17 00:00:00 2001 From: Lucas A Date: Wed, 12 Jun 2019 12:22:52 +0200 Subject: [PATCH 0013/1829] Fix references to UserActivities --- osu.Desktop/DiscordRichPresenceClient.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Desktop/DiscordRichPresenceClient.cs b/osu.Desktop/DiscordRichPresenceClient.cs index 4a2f882e2b..15d5770041 100644 --- a/osu.Desktop/DiscordRichPresenceClient.cs +++ b/osu.Desktop/DiscordRichPresenceClient.cs @@ -60,12 +60,12 @@ namespace osu.Desktop switch (a) { - case UserActivitySoloGame game: + case UserActivity.SoloGame game: presence.State = $"{game.Beatmap.Metadata.Artist} - {game.Beatmap.Metadata.Title} [{game.Beatmap.Version}]"; setPresenceGamemode(game.Ruleset, presence); break; - case UserActivityEditing editing: + case UserActivity.Editing editing: presence.State = $"{editing.Beatmap.Metadata.Artist} - {editing.Beatmap.Metadata.Title} " + (!string.IsNullOrEmpty(editing.Beatmap.Version) ? $"[{editing.Beatmap.Version}]" : ""); presence.Assets.SmallImageKey = "edit"; presence.Assets.SmallImageText = "editing"; From 4275f70cf453aeb3799d934fe9bfd67c81040b8f Mon Sep 17 00:00:00 2001 From: Lucas A Date: Wed, 12 Jun 2019 13:14:01 +0200 Subject: [PATCH 0014/1829] Fix CI inspections. --- osu.Desktop/DiscordRichPresenceClient.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Desktop/DiscordRichPresenceClient.cs b/osu.Desktop/DiscordRichPresenceClient.cs index 15d5770041..81ab995b41 100644 --- a/osu.Desktop/DiscordRichPresenceClient.cs +++ b/osu.Desktop/DiscordRichPresenceClient.cs @@ -60,12 +60,12 @@ namespace osu.Desktop switch (a) { - case UserActivity.SoloGame game: + case SoloGame game: presence.State = $"{game.Beatmap.Metadata.Artist} - {game.Beatmap.Metadata.Title} [{game.Beatmap.Version}]"; setPresenceGamemode(game.Ruleset, presence); break; - case UserActivity.Editing editing: + case Editing editing: presence.State = $"{editing.Beatmap.Metadata.Artist} - {editing.Beatmap.Metadata.Title} " + (!string.IsNullOrEmpty(editing.Beatmap.Version) ? $"[{editing.Beatmap.Version}]" : ""); presence.Assets.SmallImageKey = "edit"; presence.Assets.SmallImageText = "editing"; From 54e6e4701970d2372008869d55d3f5263df0b34d Mon Sep 17 00:00:00 2001 From: Lucas A Date: Fri, 21 Jun 2019 12:48:13 +0200 Subject: [PATCH 0015/1829] Display current user activity on rich presence if current activity != null & user online status == online. --- osu.Desktop/DiscordRichPresenceClient.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Desktop/DiscordRichPresenceClient.cs b/osu.Desktop/DiscordRichPresenceClient.cs index 81ab995b41..af5b42b275 100644 --- a/osu.Desktop/DiscordRichPresenceClient.cs +++ b/osu.Desktop/DiscordRichPresenceClient.cs @@ -50,7 +50,7 @@ namespace osu.Desktop private void updateStatus(UserStatus st, UserActivity a) { - var presence = defaultPresence(st is UserStatusOnline ? a?.Status : st.Message); + var presence = defaultPresence(st is UserStatusOnline ? a?.Status ?? st.Message : st.Message); //display the current user activity if the user status is online & user activity != null, else display the current user online status if (!(st is UserStatusOnline)) //don't update the presence any further if the current user status is DND / Offline & simply return with the default presence { @@ -80,7 +80,7 @@ namespace osu.Desktop if (ruleset.ID != null && ruleset.ID <= 3) //legacy rulesets use an ID between 0 and 3 presence.Assets.SmallImageKey = ruleset.ShortName; else - presence.Assets.SmallImageKey = "unknown"; //not a legay ruleset so let's display the unknown ruleset icon. + presence.Assets.SmallImageKey = "unknown"; //not a legacy ruleset so let's display the unknown ruleset icon. presence.Assets.SmallImageText = ruleset.ShortName; } From 608223cbb408d33b27c45c8183c13c0d49172c4f Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 4 Jul 2019 11:59:38 +0200 Subject: [PATCH 0016/1829] Add setting to collapse the song progress graph --- .../Visual/Gameplay/TestSceneSongProgress.cs | 16 +++- osu.Game/Configuration/OsuConfigManager.cs | 2 + .../Sections/Gameplay/GeneralSettings.cs | 5 + osu.Game/Screens/Play/SongProgress.cs | 93 +++++++++++-------- osu.Game/Screens/Play/SongProgressBar.cs | 5 +- 5 files changed, 77 insertions(+), 44 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs index af21007efe..eef7a25c7a 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.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.Collections.Generic; using NUnit.Framework; using osu.Framework.Allocation; @@ -15,6 +16,11 @@ namespace osu.Game.Tests.Visual.Gameplay [TestFixture] public class TestSceneSongProgress : OsuTestScene { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(SongProgressBar), + }; + private readonly SongProgress progress; private readonly TestSongProgressGraph graph; @@ -46,24 +52,26 @@ namespace osu.Game.Tests.Visual.Gameplay Origin = Anchor.TopLeft, }); - AddWaitStep("wait some", 5); AddAssert("ensure not created", () => graph.CreationCount == 0); AddStep("display values", displayNewValues); - AddWaitStep("wait some", 5); AddUntilStep("wait for creation count", () => graph.CreationCount == 1); AddStep("Toggle Bar", () => progress.AllowSeeking = !progress.AllowSeeking); - AddWaitStep("wait some", 5); AddUntilStep("wait for creation count", () => graph.CreationCount == 1); AddStep("Toggle Bar", () => progress.AllowSeeking = !progress.AllowSeeking); - AddWaitStep("wait some", 5); AddUntilStep("wait for creation count", () => graph.CreationCount == 1); AddRepeatStep("New Values", displayNewValues, 5); AddWaitStep("wait some", 5); AddAssert("ensure debounced", () => graph.CreationCount == 2); + + AddStep("hide graph", () => progress.CollapseGraph.Value = true); + AddStep("show graph", () => progress.CollapseGraph.Value = false); + + AddStep("start", clock.Start); + AddStep("pause", clock.Stop); } private void displayNewValues() diff --git a/osu.Game/Configuration/OsuConfigManager.cs b/osu.Game/Configuration/OsuConfigManager.cs index 795f0b43f7..f3792fcb7f 100644 --- a/osu.Game/Configuration/OsuConfigManager.cs +++ b/osu.Game/Configuration/OsuConfigManager.cs @@ -77,6 +77,7 @@ namespace osu.Game.Configuration Set(OsuSetting.BlurLevel, 0, 0, 1, 0.01); Set(OsuSetting.ShowInterface, true); + Set(OsuSetting.CollapseProgressGraph, false); Set(OsuSetting.KeyOverlay, false); Set(OsuSetting.FloatingComments, false); @@ -131,6 +132,7 @@ namespace osu.Game.Configuration KeyOverlay, FloatingComments, ShowInterface, + CollapseProgressGraph, MouseDisableButtons, MouseDisableWheel, AudioOffset, diff --git a/osu.Game/Overlays/Settings/Sections/Gameplay/GeneralSettings.cs b/osu.Game/Overlays/Settings/Sections/Gameplay/GeneralSettings.cs index 997d1354b3..e365973c4b 100644 --- a/osu.Game/Overlays/Settings/Sections/Gameplay/GeneralSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/Gameplay/GeneralSettings.cs @@ -35,6 +35,11 @@ namespace osu.Game.Overlays.Settings.Sections.Gameplay Bindable = config.GetBindable(OsuSetting.ShowInterface) }, new SettingsCheckbox + { + LabelText = "Collapse song progress graph", + Bindable = config.GetBindable(OsuSetting.CollapseProgressGraph) + }, + new SettingsCheckbox { LabelText = "Always show key overlay", Bindable = config.GetBindable(OsuSetting.KeyOverlay) diff --git a/osu.Game/Screens/Play/SongProgress.cs b/osu.Game/Screens/Play/SongProgress.cs index 6642efdf8b..a535dc3333 100644 --- a/osu.Game/Screens/Play/SongProgress.cs +++ b/osu.Game/Screens/Play/SongProgress.cs @@ -11,6 +11,7 @@ using osu.Framework.Allocation; using System.Linq; using osu.Framework.Bindables; using osu.Framework.Timing; +using osu.Game.Configuration; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Objects.Types; using osu.Game.Rulesets.UI; @@ -20,7 +21,7 @@ namespace osu.Game.Screens.Play public class SongProgress : OverlayContainer { private const int bottom_bar_height = 5; - + private const float graph_height = SquareGraph.Column.WIDTH * 6; private static readonly Vector2 handle_size = new Vector2(10, 18); private const float transition_duration = 200; @@ -30,13 +31,13 @@ namespace osu.Game.Screens.Play private readonly SongProgressInfo info; public Action RequestSeek; + public readonly Bindable CollapseGraph = new Bindable(); public override bool HandleNonPositionalInput => AllowSeeking; public override bool HandlePositionalInput => AllowSeeking; - private double lastHitTime => ((objects.Last() as IHasEndTime)?.EndTime ?? objects.Last().StartTime) + 1; - private double firstHitTime => objects.First().StartTime; + private double lastHitTime => ((objects.Last() as IHasEndTime)?.EndTime ?? objects.Last().StartTime) + 1; private IEnumerable objects; @@ -54,25 +55,28 @@ namespace osu.Game.Screens.Play } } + private bool allowSeeking; + + public bool AllowSeeking + { + get => allowSeeking; + set + { + if (allowSeeking == value) return; + + allowSeeking = value; + updateBarVisibility(); + } + } + private readonly BindableBool replayLoaded = new BindableBool(); public IClock ReferenceClock; private IClock gameplayClock; - [BackgroundDependencyLoader(true)] - private void load(OsuColour colours, GameplayClock clock) - { - if (clock != null) - gameplayClock = clock; - - graph.FillColour = bar.FillColour = colours.BlueLighter; - } - public SongProgress() { - const float graph_height = SquareGraph.Column.WIDTH * 6; - Height = bottom_bar_height + graph_height + handle_size.Y; Y = bottom_bar_height; @@ -104,12 +108,23 @@ namespace osu.Game.Screens.Play }; } + [BackgroundDependencyLoader(true)] + private void load(OsuColour colours, GameplayClock clock, OsuConfigManager config) + { + if (clock != null) + gameplayClock = clock; + + config.BindWith(OsuSetting.CollapseProgressGraph, CollapseGraph); + + graph.FillColour = bar.FillColour = colours.BlueLighter; + } + protected override void LoadComplete() { Show(); - replayLoaded.ValueChanged += loaded => AllowSeeking = loaded.NewValue; - replayLoaded.TriggerChange(); + replayLoaded.BindValueChanged(loaded => AllowSeeking = loaded.NewValue, true); + CollapseGraph.BindValueChanged(_ => updateGraphVisibility(), true); } public void BindDrawableRuleset(DrawableRuleset drawableRuleset) @@ -117,28 +132,6 @@ namespace osu.Game.Screens.Play replayLoaded.BindTo(drawableRuleset.HasReplayLoaded); } - private bool allowSeeking; - - public bool AllowSeeking - { - get => allowSeeking; - set - { - if (allowSeeking == value) return; - - allowSeeking = value; - updateBarVisibility(); - } - } - - private void updateBarVisibility() - { - bar.FadeTo(allowSeeking ? 1 : 0, transition_duration, Easing.In); - this.MoveTo(new Vector2(0, allowSeeking ? 0 : bottom_bar_height), transition_duration, Easing.In); - - info.Margin = new MarginPadding { Bottom = Height - (allowSeeking ? 0 : handle_size.Y) }; - } - protected override void PopIn() { updateBarVisibility(); @@ -165,5 +158,29 @@ namespace osu.Game.Screens.Play bar.CurrentTime = gameplayTime; graph.Progress = (int)(graph.ColumnCount * progress); } + + private void updateBarVisibility() + { + bar.FadeTo(allowSeeking ? 1 : 0, transition_duration, Easing.In); + this.MoveTo(new Vector2(0, allowSeeking ? 0 : bottom_bar_height), transition_duration, Easing.In); + + updateInfoMargin(); + } + + private void updateGraphVisibility() + { + float barHeight = bottom_bar_height + handle_size.Y; + + bar.ResizeHeightTo(CollapseGraph.Value ? barHeight : barHeight + graph_height, transition_duration, Easing.In); + graph.MoveToY(CollapseGraph.Value ? graph_height : 0, transition_duration, Easing.In); + + updateInfoMargin(); + } + + private void updateInfoMargin() + { + float finalMargin = bottom_bar_height + (allowSeeking ? handle_size.Y : 0) + (CollapseGraph.Value ? 0 : graph_height); + info.TransformTo(nameof(info.Margin), new MarginPadding { Bottom = finalMargin }, transition_duration, Easing.In); + } } } diff --git a/osu.Game/Screens/Play/SongProgressBar.cs b/osu.Game/Screens/Play/SongProgressBar.cs index dd7b5826d5..0a906845fc 100644 --- a/osu.Game/Screens/Play/SongProgressBar.cs +++ b/osu.Game/Screens/Play/SongProgressBar.cs @@ -18,6 +18,7 @@ namespace osu.Game.Screens.Play private readonly Box fill; private readonly Container handleBase; + private readonly Container handleContainer; public Color4 FillColour { @@ -73,7 +74,6 @@ namespace osu.Game.Screens.Play Origin = Anchor.BottomLeft, Anchor = Anchor.BottomLeft, Width = 2, - Height = barHeight + handleBarHeight, Colour = Color4.White, Position = new Vector2(2, 0), Children = new Drawable[] @@ -83,7 +83,7 @@ namespace osu.Game.Screens.Play Name = "HandleBar box", RelativeSizeAxes = Axes.Both, }, - new Container + handleContainer = new Container { Name = "Handle container", Origin = Anchor.BottomCentre, @@ -115,6 +115,7 @@ namespace osu.Game.Screens.Play { base.Update(); + handleBase.Height = Height - handleContainer.Height; float newX = (float)Interpolation.Lerp(handleBase.X, NormalizedValue * UsableWidth, MathHelper.Clamp(Time.Elapsed / 40, 0, 1)); fill.Width = newX; From e69160a0ce1f80bee073cc618c7205106ac5a206 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 5 Jul 2019 08:05:18 +0200 Subject: [PATCH 0017/1829] fix graph not completely hiding --- osu.Game/Screens/Play/SongProgress.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Play/SongProgress.cs b/osu.Game/Screens/Play/SongProgress.cs index a535dc3333..a201b04864 100644 --- a/osu.Game/Screens/Play/SongProgress.cs +++ b/osu.Game/Screens/Play/SongProgress.cs @@ -172,7 +172,7 @@ namespace osu.Game.Screens.Play float barHeight = bottom_bar_height + handle_size.Y; bar.ResizeHeightTo(CollapseGraph.Value ? barHeight : barHeight + graph_height, transition_duration, Easing.In); - graph.MoveToY(CollapseGraph.Value ? graph_height : 0, transition_duration, Easing.In); + graph.MoveToY(CollapseGraph.Value ? bottom_bar_height + graph_height : 0, transition_duration, Easing.In); updateInfoMargin(); } From c22667bdf79eed3048331c1350526041553761f5 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 5 Jul 2019 08:05:23 +0200 Subject: [PATCH 0018/1829] reorganise tests --- .../Visual/Gameplay/TestSceneSongProgress.cs | 128 ++++++++++++------ 1 file changed, 84 insertions(+), 44 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs index eef7a25c7a..810659233b 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs @@ -7,6 +7,7 @@ using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.MathUtils; +using osu.Framework.Testing; using osu.Framework.Timing; using osu.Game.Rulesets.Objects; using osu.Game.Screens.Play; @@ -21,65 +22,104 @@ namespace osu.Game.Tests.Visual.Gameplay typeof(SongProgressBar), }; - private readonly SongProgress progress; - private readonly TestSongProgressGraph graph; + private SongProgress progress; + private TestSongProgressGraph graph; private readonly StopwatchClock clock; + private readonly FramedClock framedClock; [Cached] private readonly GameplayClock gameplayClock; - private readonly FramedClock framedClock; - public TestSceneSongProgress() { - clock = new StopwatchClock(true); - + clock = new StopwatchClock(); gameplayClock = new GameplayClock(framedClock = new FramedClock(clock)); - - Add(progress = new SongProgress - { - RelativeSizeAxes = Axes.X, - Anchor = Anchor.BottomLeft, - Origin = Anchor.BottomLeft, - }); - - Add(graph = new TestSongProgressGraph - { - RelativeSizeAxes = Axes.X, - Height = 200, - Anchor = Anchor.TopLeft, - Origin = Anchor.TopLeft, - }); - - AddAssert("ensure not created", () => graph.CreationCount == 0); - - AddStep("display values", displayNewValues); - AddUntilStep("wait for creation count", () => graph.CreationCount == 1); - - AddStep("Toggle Bar", () => progress.AllowSeeking = !progress.AllowSeeking); - AddUntilStep("wait for creation count", () => graph.CreationCount == 1); - - AddStep("Toggle Bar", () => progress.AllowSeeking = !progress.AllowSeeking); - AddUntilStep("wait for creation count", () => graph.CreationCount == 1); - AddRepeatStep("New Values", displayNewValues, 5); - - AddWaitStep("wait some", 5); - AddAssert("ensure debounced", () => graph.CreationCount == 2); - - AddStep("hide graph", () => progress.CollapseGraph.Value = true); - AddStep("show graph", () => progress.CollapseGraph.Value = false); - - AddStep("start", clock.Start); - AddStep("pause", clock.Stop); } - private void displayNewValues() + [SetUpSteps] + public void SetupSteps() { - List objects = new List(); + AddStep("add new song progress", () => + { + if (progress != null) + { + progress.Expire(); + progress = null; + } + + Add(progress = new SongProgress + { + RelativeSizeAxes = Axes.X, + Anchor = Anchor.BottomLeft, + Origin = Anchor.BottomLeft, + }); + }); + + AddStep("add new big graph", () => + { + if (graph != null) + { + graph.Expire(); + graph = null; + } + + Add(graph = new TestSongProgressGraph + { + RelativeSizeAxes = Axes.X, + Height = 200, + Anchor = Anchor.TopLeft, + Origin = Anchor.TopLeft, + }); + }); + + AddStep("reset clock", clock.Reset); + } + + [Test] + public void TestGraphRecreation() + { + AddAssert("ensure not created", () => graph.CreationCount == 0); + AddStep("display values", displayRandomValues); + AddUntilStep("wait for creation count", () => graph.CreationCount == 1); + AddRepeatStep("new values", displayRandomValues, 5); + AddWaitStep("wait some", 5); + AddAssert("ensure recreation debounced", () => graph.CreationCount == 2); + } + + [Test] + public void TestDisplay() + { + AddStep("display max values", displayMaxValues); + AddStep("start", clock.Start); + AddStep("show bar", () => progress.AllowSeeking = true); + AddStep("hide graph", () => progress.CollapseGraph.Value = true); + AddStep("hide Bar", () => progress.AllowSeeking = false); + AddStep("show bar", () => progress.AllowSeeking = true); + AddStep("show graph", () => progress.CollapseGraph.Value = false); + AddStep("stop", clock.Stop); + } + + private void displayRandomValues() + { + var objects = new List(); for (double i = 0; i < 5000; i += RNG.NextDouble() * 10 + i / 1000) objects.Add(new HitObject { StartTime = i }); + replaceObjects(objects); + } + + private void displayMaxValues() + { + var objects = new List(); + for (double i = 0; i < 5000; i++) + objects.Add(new HitObject { StartTime = i }); + + replaceObjects(objects); + } + + private void replaceObjects(List objects) + { progress.Objects = objects; graph.Objects = objects; From 1cb7a9617be89f5f01f6b21bc6ce280fdf8e2c95 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 5 Jul 2019 08:29:57 +0200 Subject: [PATCH 0019/1829] move songprogress up to be able to see below for masking --- .../Visual/Gameplay/TestSceneSongProgress.cs | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs index 810659233b..550115846b 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs @@ -6,9 +6,12 @@ using System.Collections.Generic; using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; using osu.Framework.MathUtils; using osu.Framework.Testing; using osu.Framework.Timing; +using osu.Game.Graphics; using osu.Game.Rulesets.Objects; using osu.Game.Screens.Play; @@ -24,6 +27,7 @@ namespace osu.Game.Tests.Visual.Gameplay private SongProgress progress; private TestSongProgressGraph graph; + private readonly Container progressContainer; private readonly StopwatchClock clock; private readonly FramedClock framedClock; @@ -35,6 +39,20 @@ namespace osu.Game.Tests.Visual.Gameplay { clock = new StopwatchClock(); gameplayClock = new GameplayClock(framedClock = new FramedClock(clock)); + + Add(progressContainer = new Container + { + RelativeSizeAxes = Axes.X, + Anchor = Anchor.BottomCentre, + Origin = Anchor.BottomCentre, + Height = 100, + Y = -100, + Child = new Box + { + RelativeSizeAxes = Axes.Both, + Colour = OsuColour.Gray(1), + } + }); } [SetUpSteps] @@ -48,7 +66,7 @@ namespace osu.Game.Tests.Visual.Gameplay progress = null; } - Add(progress = new SongProgress + progressContainer.Add(progress = new SongProgress { RelativeSizeAxes = Axes.X, Anchor = Anchor.BottomLeft, @@ -91,6 +109,7 @@ namespace osu.Game.Tests.Visual.Gameplay public void TestDisplay() { AddStep("display max values", displayMaxValues); + AddUntilStep("wait for graph", () => graph.CreationCount == 1); AddStep("start", clock.Start); AddStep("show bar", () => progress.AllowSeeking = true); AddStep("hide graph", () => progress.CollapseGraph.Value = true); From ed22c23f37bf57a9d1de77db3a905a718a5394db Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 5 Jul 2019 08:30:32 +0200 Subject: [PATCH 0020/1829] mask SongProgress --- osu.Game/Screens/Play/SongProgress.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/osu.Game/Screens/Play/SongProgress.cs b/osu.Game/Screens/Play/SongProgress.cs index a201b04864..9ebfeb5c82 100644 --- a/osu.Game/Screens/Play/SongProgress.cs +++ b/osu.Game/Screens/Play/SongProgress.cs @@ -77,8 +77,8 @@ namespace osu.Game.Screens.Play public SongProgress() { - Height = bottom_bar_height + graph_height + handle_size.Y; - Y = bottom_bar_height; + Masking = true; + Height = bottom_bar_height + graph_height + handle_size.Y + OsuFont.Numeric.Size; Children = new Drawable[] { @@ -88,7 +88,6 @@ namespace osu.Game.Screens.Play Anchor = Anchor.BottomLeft, RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, - Margin = new MarginPadding { Bottom = bottom_bar_height + graph_height }, }, graph = new SongProgressGraph { From b425df6c75afa792aa97165a798d3a884c6a8c04 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 5 Jul 2019 08:48:40 +0200 Subject: [PATCH 0021/1829] various fixes - make AllowSeeking a Bindable which fixes incorrect initial position and removes unnecessary variables - make SongProgressInfo fixed height --- .../Visual/Gameplay/TestSceneSongProgress.cs | 6 +-- osu.Game/Screens/Play/SongProgress.cs | 45 ++++++++----------- 2 files changed, 22 insertions(+), 29 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs index 550115846b..e16ad42558 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs @@ -111,10 +111,10 @@ namespace osu.Game.Tests.Visual.Gameplay AddStep("display max values", displayMaxValues); AddUntilStep("wait for graph", () => graph.CreationCount == 1); AddStep("start", clock.Start); - AddStep("show bar", () => progress.AllowSeeking = true); + AddStep("show bar", () => progress.AllowSeeking.Value = true); AddStep("hide graph", () => progress.CollapseGraph.Value = true); - AddStep("hide Bar", () => progress.AllowSeeking = false); - AddStep("show bar", () => progress.AllowSeeking = true); + AddStep("hide Bar", () => progress.AllowSeeking.Value = false); + AddStep("show bar", () => progress.AllowSeeking.Value = true); AddStep("show graph", () => progress.CollapseGraph.Value = false); AddStep("stop", clock.Stop); } diff --git a/osu.Game/Screens/Play/SongProgress.cs b/osu.Game/Screens/Play/SongProgress.cs index 9ebfeb5c82..9d1978e4cd 100644 --- a/osu.Game/Screens/Play/SongProgress.cs +++ b/osu.Game/Screens/Play/SongProgress.cs @@ -20,6 +20,7 @@ namespace osu.Game.Screens.Play { public class SongProgress : OverlayContainer { + private const int info_height = 20; private const int bottom_bar_height = 5; private const float graph_height = SquareGraph.Column.WIDTH * 6; private static readonly Vector2 handle_size = new Vector2(10, 18); @@ -31,10 +32,19 @@ namespace osu.Game.Screens.Play private readonly SongProgressInfo info; public Action RequestSeek; + + /// + /// Whether seeking is allowed and the progress bar should be shown. + /// + public readonly Bindable AllowSeeking = new Bindable(); + + /// + /// Whether the difficulty graph should be shown. + /// public readonly Bindable CollapseGraph = new Bindable(); - public override bool HandleNonPositionalInput => AllowSeeking; - public override bool HandlePositionalInput => AllowSeeking; + public override bool HandleNonPositionalInput => AllowSeeking.Value; + public override bool HandlePositionalInput => AllowSeeking.Value; private double firstHitTime => objects.First().StartTime; private double lastHitTime => ((objects.Last() as IHasEndTime)?.EndTime ?? objects.Last().StartTime) + 1; @@ -55,22 +65,6 @@ namespace osu.Game.Screens.Play } } - private bool allowSeeking; - - public bool AllowSeeking - { - get => allowSeeking; - set - { - if (allowSeeking == value) return; - - allowSeeking = value; - updateBarVisibility(); - } - } - - private readonly BindableBool replayLoaded = new BindableBool(); - public IClock ReferenceClock; private IClock gameplayClock; @@ -78,7 +72,7 @@ namespace osu.Game.Screens.Play public SongProgress() { Masking = true; - Height = bottom_bar_height + graph_height + handle_size.Y + OsuFont.Numeric.Size; + Height = bottom_bar_height + graph_height + handle_size.Y + info_height; Children = new Drawable[] { @@ -87,7 +81,7 @@ namespace osu.Game.Screens.Play Origin = Anchor.BottomLeft, Anchor = Anchor.BottomLeft, RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, + Height = info_height, }, graph = new SongProgressGraph { @@ -122,18 +116,17 @@ namespace osu.Game.Screens.Play { Show(); - replayLoaded.BindValueChanged(loaded => AllowSeeking = loaded.NewValue, true); + AllowSeeking.BindValueChanged(_ => updateBarVisibility(), true); CollapseGraph.BindValueChanged(_ => updateGraphVisibility(), true); } public void BindDrawableRuleset(DrawableRuleset drawableRuleset) { - replayLoaded.BindTo(drawableRuleset.HasReplayLoaded); + AllowSeeking.BindTo(drawableRuleset.HasReplayLoaded); } protected override void PopIn() { - updateBarVisibility(); this.FadeIn(500, Easing.OutQuint); } @@ -160,8 +153,8 @@ namespace osu.Game.Screens.Play private void updateBarVisibility() { - bar.FadeTo(allowSeeking ? 1 : 0, transition_duration, Easing.In); - this.MoveTo(new Vector2(0, allowSeeking ? 0 : bottom_bar_height), transition_duration, Easing.In); + bar.FadeTo(AllowSeeking.Value ? 1 : 0, transition_duration, Easing.In); + this.MoveTo(new Vector2(0, AllowSeeking.Value ? 0 : bottom_bar_height), transition_duration, Easing.In); updateInfoMargin(); } @@ -178,7 +171,7 @@ namespace osu.Game.Screens.Play private void updateInfoMargin() { - float finalMargin = bottom_bar_height + (allowSeeking ? handle_size.Y : 0) + (CollapseGraph.Value ? 0 : graph_height); + float finalMargin = bottom_bar_height + (AllowSeeking.Value ? handle_size.Y : 0) + (CollapseGraph.Value ? 0 : graph_height); info.TransformTo(nameof(info.Margin), new MarginPadding { Bottom = finalMargin }, transition_duration, Easing.In); } } From 2d5fd7f1c4fc789daabbebd0dad891ed3033a8f2 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 5 Jul 2019 08:49:56 +0200 Subject: [PATCH 0022/1829] remove unnecessarily setting value of bindable that was already bound to --- osu.Game/Screens/Play/HUDOverlay.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Screens/Play/HUDOverlay.cs b/osu.Game/Screens/Play/HUDOverlay.cs index 017bf70133..e0036cdeb9 100644 --- a/osu.Game/Screens/Play/HUDOverlay.cs +++ b/osu.Game/Screens/Play/HUDOverlay.cs @@ -106,7 +106,6 @@ namespace osu.Game.Screens.Play BindDrawableRuleset(drawableRuleset); Progress.Objects = drawableRuleset.Objects; - Progress.AllowSeeking = drawableRuleset.HasReplayLoaded.Value; Progress.RequestSeek = time => RequestSeek(time); Progress.ReferenceClock = drawableRuleset.FrameStableClock; From ee44caf964c59439449e8d65dfa4bf73ea9fb887 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 5 Jul 2019 08:52:44 +0200 Subject: [PATCH 0023/1829] better setting description --- osu.Game/Configuration/OsuConfigManager.cs | 4 ++-- .../Overlays/Settings/Sections/Gameplay/GeneralSettings.cs | 4 ++-- osu.Game/Screens/Play/SongProgress.cs | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/osu.Game/Configuration/OsuConfigManager.cs b/osu.Game/Configuration/OsuConfigManager.cs index f3792fcb7f..c055d7d321 100644 --- a/osu.Game/Configuration/OsuConfigManager.cs +++ b/osu.Game/Configuration/OsuConfigManager.cs @@ -77,7 +77,7 @@ namespace osu.Game.Configuration Set(OsuSetting.BlurLevel, 0, 0, 1, 0.01); Set(OsuSetting.ShowInterface, true); - Set(OsuSetting.CollapseProgressGraph, false); + Set(OsuSetting.ShowProgressGraph, true); Set(OsuSetting.KeyOverlay, false); Set(OsuSetting.FloatingComments, false); @@ -132,7 +132,7 @@ namespace osu.Game.Configuration KeyOverlay, FloatingComments, ShowInterface, - CollapseProgressGraph, + ShowProgressGraph, MouseDisableButtons, MouseDisableWheel, AudioOffset, diff --git a/osu.Game/Overlays/Settings/Sections/Gameplay/GeneralSettings.cs b/osu.Game/Overlays/Settings/Sections/Gameplay/GeneralSettings.cs index e365973c4b..2169fc69cc 100644 --- a/osu.Game/Overlays/Settings/Sections/Gameplay/GeneralSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/Gameplay/GeneralSettings.cs @@ -36,8 +36,8 @@ namespace osu.Game.Overlays.Settings.Sections.Gameplay }, new SettingsCheckbox { - LabelText = "Collapse song progress graph", - Bindable = config.GetBindable(OsuSetting.CollapseProgressGraph) + LabelText = "Show difficulty graph on progress bar", + Bindable = config.GetBindable(OsuSetting.ShowProgressGraph) }, new SettingsCheckbox { diff --git a/osu.Game/Screens/Play/SongProgress.cs b/osu.Game/Screens/Play/SongProgress.cs index 9d1978e4cd..7411afb688 100644 --- a/osu.Game/Screens/Play/SongProgress.cs +++ b/osu.Game/Screens/Play/SongProgress.cs @@ -107,7 +107,7 @@ namespace osu.Game.Screens.Play if (clock != null) gameplayClock = clock; - config.BindWith(OsuSetting.CollapseProgressGraph, CollapseGraph); + config.BindWith(OsuSetting.ShowProgressGraph, CollapseGraph); graph.FillColour = bar.FillColour = colours.BlueLighter; } From d05512a12a3d7c41f8276473d0fb08c31e2ba092 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 5 Jul 2019 09:16:50 +0200 Subject: [PATCH 0024/1829] invert usage corresponding to previous description change --- .../Visual/Gameplay/TestSceneSongProgress.cs | 4 ++-- osu.Game/Screens/Play/SongProgress.cs | 15 ++++++--------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs index e16ad42558..15bf907b4f 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs @@ -112,10 +112,10 @@ namespace osu.Game.Tests.Visual.Gameplay AddUntilStep("wait for graph", () => graph.CreationCount == 1); AddStep("start", clock.Start); AddStep("show bar", () => progress.AllowSeeking.Value = true); - AddStep("hide graph", () => progress.CollapseGraph.Value = true); + AddStep("hide graph", () => progress.ShowGraph.Value = false); AddStep("hide Bar", () => progress.AllowSeeking.Value = false); AddStep("show bar", () => progress.AllowSeeking.Value = true); - AddStep("show graph", () => progress.CollapseGraph.Value = false); + AddStep("show graph", () => progress.ShowGraph.Value = true); AddStep("stop", clock.Stop); } diff --git a/osu.Game/Screens/Play/SongProgress.cs b/osu.Game/Screens/Play/SongProgress.cs index 7411afb688..727fad84c9 100644 --- a/osu.Game/Screens/Play/SongProgress.cs +++ b/osu.Game/Screens/Play/SongProgress.cs @@ -38,10 +38,7 @@ namespace osu.Game.Screens.Play /// public readonly Bindable AllowSeeking = new Bindable(); - /// - /// Whether the difficulty graph should be shown. - /// - public readonly Bindable CollapseGraph = new Bindable(); + public readonly Bindable ShowGraph = new Bindable(); public override bool HandleNonPositionalInput => AllowSeeking.Value; public override bool HandlePositionalInput => AllowSeeking.Value; @@ -107,7 +104,7 @@ namespace osu.Game.Screens.Play if (clock != null) gameplayClock = clock; - config.BindWith(OsuSetting.ShowProgressGraph, CollapseGraph); + config.BindWith(OsuSetting.ShowProgressGraph, ShowGraph); graph.FillColour = bar.FillColour = colours.BlueLighter; } @@ -117,7 +114,7 @@ namespace osu.Game.Screens.Play Show(); AllowSeeking.BindValueChanged(_ => updateBarVisibility(), true); - CollapseGraph.BindValueChanged(_ => updateGraphVisibility(), true); + ShowGraph.BindValueChanged(_ => updateGraphVisibility(), true); } public void BindDrawableRuleset(DrawableRuleset drawableRuleset) @@ -163,15 +160,15 @@ namespace osu.Game.Screens.Play { float barHeight = bottom_bar_height + handle_size.Y; - bar.ResizeHeightTo(CollapseGraph.Value ? barHeight : barHeight + graph_height, transition_duration, Easing.In); - graph.MoveToY(CollapseGraph.Value ? bottom_bar_height + graph_height : 0, transition_duration, Easing.In); + bar.ResizeHeightTo(ShowGraph.Value ? barHeight + graph_height : barHeight, transition_duration, Easing.In); + graph.MoveToY(ShowGraph.Value ? 0 : bottom_bar_height + graph_height, transition_duration, Easing.In); updateInfoMargin(); } private void updateInfoMargin() { - float finalMargin = bottom_bar_height + (AllowSeeking.Value ? handle_size.Y : 0) + (CollapseGraph.Value ? 0 : graph_height); + float finalMargin = bottom_bar_height + (AllowSeeking.Value ? handle_size.Y : 0) + (ShowGraph.Value ? graph_height : 0); info.TransformTo(nameof(info.Margin), new MarginPadding { Bottom = finalMargin }, transition_duration, Easing.In); } } From 8d30c35104378baee846b75c338313291543c724 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 27 Aug 2019 03:10:58 +0300 Subject: [PATCH 0025/1829] Implement sorting --- osu.Game/Overlays/SocialOverlay.cs | 65 +++++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/SocialOverlay.cs b/osu.Game/Overlays/SocialOverlay.cs index 4def249200..dc63b0ab9a 100644 --- a/osu.Game/Overlays/SocialOverlay.cs +++ b/osu.Game/Overlays/SocialOverlay.cs @@ -16,6 +16,7 @@ using osu.Game.Overlays.SearchableList; using osu.Game.Overlays.Social; using osu.Game.Users; using osu.Framework.Threading; +using System; namespace osu.Game.Overlays { @@ -71,7 +72,7 @@ namespace osu.Game.Overlays Filter.Tabs.Current.ValueChanged += _ => queueUpdate(); Filter.DisplayStyleControl.DisplayStyle.ValueChanged += style => recreatePanels(style.NewValue); - Filter.DisplayStyleControl.Dropdown.Current.ValueChanged += _ => queueUpdate(); + Filter.DisplayStyleControl.Dropdown.Current.ValueChanged += _ => onDropdownChanged(); currentQuery.BindTo(Filter.Search.Current); currentQuery.ValueChanged += query => @@ -175,11 +176,71 @@ namespace osu.Game.Overlays private void updateUsers(IEnumerable newUsers) { - Users = newUsers; + var sortDirection = Filter.DisplayStyleControl.Dropdown.Current.Value; + + IEnumerable sortedUsers = newUsers; + + switch (Filter.Tabs.Current.Value) + { + case SocialSortCriteria.Location: + switch (sortDirection) + { + case SortDirection.Ascending: + sortedUsers = newUsers.OrderBy(u => u.Country.FullName); + break; + + case SortDirection.Descending: + sortedUsers = newUsers.OrderByDescending(u => u.Country.FullName); + break; + } + break; + + case SocialSortCriteria.Name: + switch (sortDirection) + { + case SortDirection.Ascending: + sortedUsers = newUsers.OrderBy(u => u.Username); + break; + + case SortDirection.Descending: + sortedUsers = newUsers.OrderByDescending(u => u.Username); + break; + } + break; + + case SocialSortCriteria.Rank: + if (newUsers.FirstOrDefault().Statistics != null) + { + switch (sortDirection) + { + case SortDirection.Ascending: + sortedUsers = newUsers.OrderBy(u => u.Statistics?.Ranks.Global); + break; + + case SortDirection.Descending: + sortedUsers = newUsers.OrderByDescending(u => u.Statistics?.Ranks.Global); + break; + } + } + break; + } + + Users = sortedUsers; loading.Hide(); recreatePanels(Filter.DisplayStyleControl.DisplayStyle.Value); } + private void onDropdownChanged() + { + if (Users == null) + { + queueUpdate(); + return; + } + + updateUsers(Users); + } + private void clearPanels() { if (panels != null) From cb81d1dd2fea0a174777044e7fdd8fa451f977f6 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 27 Aug 2019 03:53:16 +0300 Subject: [PATCH 0026/1829] Better use of loading animation --- osu.Game/Overlays/SocialOverlay.cs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/osu.Game/Overlays/SocialOverlay.cs b/osu.Game/Overlays/SocialOverlay.cs index dc63b0ab9a..2202c473f6 100644 --- a/osu.Game/Overlays/SocialOverlay.cs +++ b/osu.Game/Overlays/SocialOverlay.cs @@ -103,7 +103,6 @@ namespace osu.Game.Overlays Users = null; clearPanels(); - loading.Hide(); getUsersRequest?.Cancel(); if (API?.IsLoggedIn != true) @@ -131,8 +130,13 @@ namespace osu.Game.Overlays { clearPanels(); + loading.Show(); + if (Users == null) + { + loading.Hide(); return; + } var newPanels = new FillFlowContainer { @@ -167,15 +171,15 @@ namespace osu.Game.Overlays LoadComponentAsync(newPanels, f => { - if (panels != null) - ScrollFlow.Remove(panels); - + loading.Hide(); ScrollFlow.Add(panels = newPanels); }); } private void updateUsers(IEnumerable newUsers) { + loading.Show(); + var sortDirection = Filter.DisplayStyleControl.Dropdown.Current.Value; IEnumerable sortedUsers = newUsers; @@ -226,7 +230,6 @@ namespace osu.Game.Overlays } Users = sortedUsers; - loading.Hide(); recreatePanels(Filter.DisplayStyleControl.DisplayStyle.Value); } From 7cc6494482c7ba413012c5aa527da25b1c66eb41 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 27 Aug 2019 03:54:49 +0300 Subject: [PATCH 0027/1829] Remove sorting by rank Since it isn't working for any case currently --- osu.Game/Overlays/SocialOverlay.cs | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/osu.Game/Overlays/SocialOverlay.cs b/osu.Game/Overlays/SocialOverlay.cs index 2202c473f6..8353e2d683 100644 --- a/osu.Game/Overlays/SocialOverlay.cs +++ b/osu.Game/Overlays/SocialOverlay.cs @@ -211,22 +211,6 @@ namespace osu.Game.Overlays break; } break; - - case SocialSortCriteria.Rank: - if (newUsers.FirstOrDefault().Statistics != null) - { - switch (sortDirection) - { - case SortDirection.Ascending: - sortedUsers = newUsers.OrderBy(u => u.Statistics?.Ranks.Global); - break; - - case SortDirection.Descending: - sortedUsers = newUsers.OrderByDescending(u => u.Statistics?.Ranks.Global); - break; - } - } - break; } Users = sortedUsers; From 66b27875e06dedb156b76caacdedc213d6affb87 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 27 Aug 2019 04:00:22 +0300 Subject: [PATCH 0028/1829] Fix possible null exception --- osu.Game/Overlays/SocialOverlay.cs | 49 ++++++++++++++++-------------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/osu.Game/Overlays/SocialOverlay.cs b/osu.Game/Overlays/SocialOverlay.cs index 8353e2d683..22d1471229 100644 --- a/osu.Game/Overlays/SocialOverlay.cs +++ b/osu.Game/Overlays/SocialOverlay.cs @@ -184,33 +184,36 @@ namespace osu.Game.Overlays IEnumerable sortedUsers = newUsers; - switch (Filter.Tabs.Current.Value) + if (sortedUsers.Any()) { - case SocialSortCriteria.Location: - switch (sortDirection) - { - case SortDirection.Ascending: - sortedUsers = newUsers.OrderBy(u => u.Country.FullName); - break; + switch (Filter.Tabs.Current.Value) + { + case SocialSortCriteria.Location: + switch (sortDirection) + { + case SortDirection.Ascending: + sortedUsers = sortedUsers.OrderBy(u => u.Country.FullName); + break; - case SortDirection.Descending: - sortedUsers = newUsers.OrderByDescending(u => u.Country.FullName); - break; - } - break; + case SortDirection.Descending: + sortedUsers = sortedUsers.OrderByDescending(u => u.Country.FullName); + break; + } + break; - case SocialSortCriteria.Name: - switch (sortDirection) - { - case SortDirection.Ascending: - sortedUsers = newUsers.OrderBy(u => u.Username); - break; + case SocialSortCriteria.Name: + switch (sortDirection) + { + case SortDirection.Ascending: + sortedUsers = sortedUsers.OrderBy(u => u.Username); + break; - case SortDirection.Descending: - sortedUsers = newUsers.OrderByDescending(u => u.Username); - break; - } - break; + case SortDirection.Descending: + sortedUsers = sortedUsers.OrderByDescending(u => u.Username); + break; + } + break; + } } Users = sortedUsers; From 385bc6f52988c3f8c9858b8525aeceb11e6b33fa Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 27 Aug 2019 04:11:22 +0300 Subject: [PATCH 0029/1829] Remove using and add blank lines --- osu.Game/Overlays/SocialOverlay.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/SocialOverlay.cs b/osu.Game/Overlays/SocialOverlay.cs index 22d1471229..23185ed989 100644 --- a/osu.Game/Overlays/SocialOverlay.cs +++ b/osu.Game/Overlays/SocialOverlay.cs @@ -16,7 +16,6 @@ using osu.Game.Overlays.SearchableList; using osu.Game.Overlays.Social; using osu.Game.Users; using osu.Framework.Threading; -using System; namespace osu.Game.Overlays { @@ -199,6 +198,7 @@ namespace osu.Game.Overlays sortedUsers = sortedUsers.OrderByDescending(u => u.Country.FullName); break; } + break; case SocialSortCriteria.Name: @@ -212,6 +212,7 @@ namespace osu.Game.Overlays sortedUsers = sortedUsers.OrderByDescending(u => u.Username); break; } + break; } } From 9223a1ba8a4ff25c82e719374e37a3f3f3a90f81 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 27 Aug 2019 05:03:47 +0300 Subject: [PATCH 0030/1829] Simplify sorting logic --- osu.Game/Overlays/SocialOverlay.cs | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/osu.Game/Overlays/SocialOverlay.cs b/osu.Game/Overlays/SocialOverlay.cs index 23185ed989..e2179361b1 100644 --- a/osu.Game/Overlays/SocialOverlay.cs +++ b/osu.Game/Overlays/SocialOverlay.cs @@ -16,6 +16,7 @@ using osu.Game.Overlays.SearchableList; using osu.Game.Overlays.Social; using osu.Game.Users; using osu.Framework.Threading; +using System; namespace osu.Game.Overlays { @@ -188,31 +189,11 @@ namespace osu.Game.Overlays switch (Filter.Tabs.Current.Value) { case SocialSortCriteria.Location: - switch (sortDirection) - { - case SortDirection.Ascending: - sortedUsers = sortedUsers.OrderBy(u => u.Country.FullName); - break; - - case SortDirection.Descending: - sortedUsers = sortedUsers.OrderByDescending(u => u.Country.FullName); - break; - } - + sortedUsers = sortBy(sortedUsers, u => u.Country.FullName, sortDirection); break; case SocialSortCriteria.Name: - switch (sortDirection) - { - case SortDirection.Ascending: - sortedUsers = sortedUsers.OrderBy(u => u.Username); - break; - - case SortDirection.Descending: - sortedUsers = sortedUsers.OrderByDescending(u => u.Username); - break; - } - + sortedUsers = sortBy(sortedUsers, u => u.Username, sortDirection); break; } } @@ -221,6 +202,9 @@ namespace osu.Game.Overlays recreatePanels(Filter.DisplayStyleControl.DisplayStyle.Value); } + private IEnumerable sortBy(IEnumerable users, Func condition, SortDirection sortDirection) => + sortDirection == SortDirection.Ascending ? users.OrderBy(condition) : users.OrderByDescending(condition); + private void onDropdownChanged() { if (Users == null) From 11df8c5576478f920f3c09e3b8c884623a0cb836 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 28 Aug 2019 01:02:26 +0300 Subject: [PATCH 0031/1829] Remove a lot of loading animation calls --- osu.Game/Overlays/SocialOverlay.cs | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/osu.Game/Overlays/SocialOverlay.cs b/osu.Game/Overlays/SocialOverlay.cs index e2179361b1..a467ae6dfa 100644 --- a/osu.Game/Overlays/SocialOverlay.cs +++ b/osu.Game/Overlays/SocialOverlay.cs @@ -122,16 +122,12 @@ namespace osu.Game.Overlays API.Queue(getUsersRequest = userRequest); break; } - - loading.Show(); } private void recreatePanels(PanelDisplayStyle displayStyle) { clearPanels(); - loading.Show(); - if (Users == null) { loading.Hide(); @@ -178,8 +174,6 @@ namespace osu.Game.Overlays private void updateUsers(IEnumerable newUsers) { - loading.Show(); - var sortDirection = Filter.DisplayStyleControl.Dropdown.Current.Value; IEnumerable sortedUsers = newUsers; @@ -218,6 +212,8 @@ namespace osu.Game.Overlays private void clearPanels() { + loading.Show(); + if (panels != null) { panels.Expire(); From 9b1e8cf48b701aad40f4a3b34a4d14205bc5bb77 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 28 Aug 2019 01:03:51 +0300 Subject: [PATCH 0032/1829] Use CancelDelayedTasks instead of private ScheduledDelegate --- osu.Game/Overlays/SocialOverlay.cs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/osu.Game/Overlays/SocialOverlay.cs b/osu.Game/Overlays/SocialOverlay.cs index a467ae6dfa..5ed6a9a703 100644 --- a/osu.Game/Overlays/SocialOverlay.cs +++ b/osu.Game/Overlays/SocialOverlay.cs @@ -77,12 +77,12 @@ namespace osu.Game.Overlays currentQuery.BindTo(Filter.Search.Current); currentQuery.ValueChanged += query => { - queryChangedDebounce?.Cancel(); + Scheduler.CancelDelayedTasks(); if (string.IsNullOrEmpty(query.NewValue)) queueUpdate(); else - queryChangedDebounce = Scheduler.AddDelayed(updateSearch, 500); + Scheduler.AddDelayed(updateSearch, 500); }; } @@ -90,13 +90,11 @@ namespace osu.Game.Overlays private readonly Bindable currentQuery = new Bindable(); - private ScheduledDelegate queryChangedDebounce; - private void queueUpdate() => Scheduler.AddOnce(updateSearch); private void updateSearch() { - queryChangedDebounce?.Cancel(); + Scheduler.CancelDelayedTasks(); if (!IsLoaded) return; From 2d7024ffd92656a9d3646abc0e87111709e6bfe4 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 28 Aug 2019 01:14:35 +0300 Subject: [PATCH 0033/1829] Use CancellationTokenSource to avoid unwanted panels creation --- osu.Game/Overlays/SocialOverlay.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/SocialOverlay.cs b/osu.Game/Overlays/SocialOverlay.cs index 5ed6a9a703..ee3adf65b9 100644 --- a/osu.Game/Overlays/SocialOverlay.cs +++ b/osu.Game/Overlays/SocialOverlay.cs @@ -17,6 +17,7 @@ using osu.Game.Overlays.Social; using osu.Game.Users; using osu.Framework.Threading; using System; +using System.Threading; namespace osu.Game.Overlays { @@ -92,6 +93,8 @@ namespace osu.Game.Overlays private void queueUpdate() => Scheduler.AddOnce(updateSearch); + private CancellationTokenSource loadCancellation; + private void updateSearch() { Scheduler.CancelDelayedTasks(); @@ -132,6 +135,8 @@ namespace osu.Game.Overlays return; } + loadCancellation = new CancellationTokenSource(); + var newPanels = new FillFlowContainer { RelativeSizeAxes = Axes.X, @@ -167,7 +172,7 @@ namespace osu.Game.Overlays { loading.Hide(); ScrollFlow.Add(panels = newPanels); - }); + }, loadCancellation.Token); } private void updateUsers(IEnumerable newUsers) @@ -212,6 +217,8 @@ namespace osu.Game.Overlays { loading.Show(); + loadCancellation?.Cancel(); + if (panels != null) { panels.Expire(); From 6aef05f5d877dfd29b2035cdcadb5f36aa706e3a Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 28 Aug 2019 01:16:55 +0300 Subject: [PATCH 0034/1829] Remove useless function --- osu.Game/Overlays/SocialOverlay.cs | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/osu.Game/Overlays/SocialOverlay.cs b/osu.Game/Overlays/SocialOverlay.cs index ee3adf65b9..97e1c2b5a4 100644 --- a/osu.Game/Overlays/SocialOverlay.cs +++ b/osu.Game/Overlays/SocialOverlay.cs @@ -73,7 +73,7 @@ namespace osu.Game.Overlays Filter.Tabs.Current.ValueChanged += _ => queueUpdate(); Filter.DisplayStyleControl.DisplayStyle.ValueChanged += style => recreatePanels(style.NewValue); - Filter.DisplayStyleControl.Dropdown.Current.ValueChanged += _ => onDropdownChanged(); + Filter.DisplayStyleControl.Dropdown.Current.ValueChanged += _ => updateUsers(Users); currentQuery.BindTo(Filter.Search.Current); currentQuery.ValueChanged += query => @@ -202,17 +202,6 @@ namespace osu.Game.Overlays private IEnumerable sortBy(IEnumerable users, Func condition, SortDirection sortDirection) => sortDirection == SortDirection.Ascending ? users.OrderBy(condition) : users.OrderByDescending(condition); - private void onDropdownChanged() - { - if (Users == null) - { - queueUpdate(); - return; - } - - updateUsers(Users); - } - private void clearPanels() { loading.Show(); From b6b4173a8481987f3afc73f90d3cc712e099f000 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 28 Aug 2019 01:27:16 +0300 Subject: [PATCH 0035/1829] Remove unused using --- osu.Game/Overlays/SocialOverlay.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Overlays/SocialOverlay.cs b/osu.Game/Overlays/SocialOverlay.cs index 97e1c2b5a4..bf306f9569 100644 --- a/osu.Game/Overlays/SocialOverlay.cs +++ b/osu.Game/Overlays/SocialOverlay.cs @@ -15,7 +15,6 @@ using osu.Game.Online.API.Requests; using osu.Game.Overlays.SearchableList; using osu.Game.Overlays.Social; using osu.Game.Users; -using osu.Framework.Threading; using System; using System.Threading; From 3227dc87fbac1c47fb505c4e66a66ac80a935678 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 6 Sep 2019 22:56:46 +0300 Subject: [PATCH 0036/1829] Don't use CancelDelayedTasks to avoid cancelling unwanted tasks --- osu.Game/Overlays/SocialOverlay.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/SocialOverlay.cs b/osu.Game/Overlays/SocialOverlay.cs index bf306f9569..1912a2c3e0 100644 --- a/osu.Game/Overlays/SocialOverlay.cs +++ b/osu.Game/Overlays/SocialOverlay.cs @@ -17,6 +17,7 @@ using osu.Game.Overlays.Social; using osu.Game.Users; using System; using System.Threading; +using osu.Framework.Threading; namespace osu.Game.Overlays { @@ -77,12 +78,12 @@ namespace osu.Game.Overlays currentQuery.BindTo(Filter.Search.Current); currentQuery.ValueChanged += query => { - Scheduler.CancelDelayedTasks(); + queryChangedDebounce?.Cancel(); if (string.IsNullOrEmpty(query.NewValue)) queueUpdate(); else - Scheduler.AddDelayed(updateSearch, 500); + queryChangedDebounce = Scheduler.AddDelayed(updateSearch, 500); }; } @@ -90,13 +91,15 @@ namespace osu.Game.Overlays private readonly Bindable currentQuery = new Bindable(); + private ScheduledDelegate queryChangedDebounce; + private void queueUpdate() => Scheduler.AddOnce(updateSearch); private CancellationTokenSource loadCancellation; private void updateSearch() { - Scheduler.CancelDelayedTasks(); + queryChangedDebounce?.Cancel(); if (!IsLoaded) return; @@ -169,6 +172,9 @@ namespace osu.Game.Overlays LoadComponentAsync(newPanels, f => { + if (panels != null) + ScrollFlow.Remove(panels); + loading.Hide(); ScrollFlow.Add(panels = newPanels); }, loadCancellation.Token); From 44412f9ddb0407318c7b9603484f806ef717266e Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 19 Sep 2019 03:35:56 +0300 Subject: [PATCH 0037/1829] Fix local sorting calls an online request --- osu.Game/Overlays/SocialOverlay.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/SocialOverlay.cs b/osu.Game/Overlays/SocialOverlay.cs index 1912a2c3e0..7fd9ef153e 100644 --- a/osu.Game/Overlays/SocialOverlay.cs +++ b/osu.Game/Overlays/SocialOverlay.cs @@ -70,7 +70,7 @@ namespace osu.Game.Overlays Header.Tabs.Current.ValueChanged += _ => queueUpdate(); - Filter.Tabs.Current.ValueChanged += _ => queueUpdate(); + Filter.Tabs.Current.ValueChanged += _ => onFilterUpdate(); Filter.DisplayStyleControl.DisplayStyle.ValueChanged += style => recreatePanels(style.NewValue); Filter.DisplayStyleControl.Dropdown.Current.ValueChanged += _ => updateUsers(Users); @@ -180,6 +180,17 @@ namespace osu.Game.Overlays }, loadCancellation.Token); } + private void onFilterUpdate() + { + if (Users == null || Filter.Tabs.Current.Value == SocialSortCriteria.Rank) + { + queueUpdate(); + return; + } + + updateUsers(Users); + } + private void updateUsers(IEnumerable newUsers) { var sortDirection = Filter.DisplayStyleControl.Dropdown.Current.Value; From 647433a8d1c21187d86f656571d0abe8b5a0423f Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 19 Sep 2019 04:09:14 +0300 Subject: [PATCH 0038/1829] Don't trigger request if there are no avaliable users --- osu.Game/Overlays/SocialOverlay.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/SocialOverlay.cs b/osu.Game/Overlays/SocialOverlay.cs index 7fd9ef153e..a77172c90c 100644 --- a/osu.Game/Overlays/SocialOverlay.cs +++ b/osu.Game/Overlays/SocialOverlay.cs @@ -182,7 +182,7 @@ namespace osu.Game.Overlays private void onFilterUpdate() { - if (Users == null || Filter.Tabs.Current.Value == SocialSortCriteria.Rank) + if (Filter.Tabs.Current.Value == SocialSortCriteria.Rank) { queueUpdate(); return; From 59b2f028289521f6eef68456662ca9255913287d Mon Sep 17 00:00:00 2001 From: LeNitrous Date: Tue, 8 Oct 2019 18:34:09 +0800 Subject: [PATCH 0039/1829] initial implementation of customizable mods --- osu.Game/Overlays/Mods/ModControlSection.cs | 56 ++++++++++++++++++++ osu.Game/Overlays/Mods/ModSelectOverlay.cs | 58 +++++++++++++++++++++ osu.Game/Rulesets/Mods/IModHasSettings.cs | 15 ++++++ osu.Game/Rulesets/Mods/Mod.cs | 2 +- 4 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 osu.Game/Overlays/Mods/ModControlSection.cs create mode 100644 osu.Game/Rulesets/Mods/IModHasSettings.cs diff --git a/osu.Game/Overlays/Mods/ModControlSection.cs b/osu.Game/Overlays/Mods/ModControlSection.cs new file mode 100644 index 0000000000..df6f4d15b0 --- /dev/null +++ b/osu.Game/Overlays/Mods/ModControlSection.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.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Graphics; +using osu.Game.Graphics.Sprites; +using osu.Game.Rulesets.Mods; +using osuTK; + +namespace osu.Game.Overlays.Mods +{ + public class ModControlSection : Container + { + protected FillFlowContainer FlowContent; + protected override Container Content => FlowContent; + + public readonly Mod Mod; + + public ModControlSection(Mod mod) + { + Mod = mod; + + RelativeSizeAxes = Axes.X; + AutoSizeAxes = Axes.Y; + + FlowContent = new FillFlowContainer + { + Margin = new MarginPadding { Top = 30 }, + Spacing = new Vector2(0, 5), + Direction = FillDirection.Vertical, + AutoSizeAxes = Axes.Y, + RelativeSizeAxes = Axes.X, + }; + + if (Mod is IModHasSettings modHasSettings) + AddRange(modHasSettings.CreateControls()); + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + AddRangeInternal(new Drawable[] + { + new OsuSpriteText + { + Text = Mod.Name, + Font = OsuFont.GetFont(weight: FontWeight.Bold), + Colour = colours.Yellow, + }, + FlowContent + }); + } + } +} \ No newline at end of file diff --git a/osu.Game/Overlays/Mods/ModSelectOverlay.cs b/osu.Game/Overlays/Mods/ModSelectOverlay.cs index 9ff320841a..5493080964 100644 --- a/osu.Game/Overlays/Mods/ModSelectOverlay.cs +++ b/osu.Game/Overlays/Mods/ModSelectOverlay.cs @@ -31,6 +31,7 @@ namespace osu.Game.Overlays.Mods public class ModSelectOverlay : WaveOverlayContainer { protected readonly TriangleButton DeselectAllButton; + protected readonly TriangleButton CustomizeButton; protected readonly TriangleButton CloseButton; protected readonly OsuSpriteText MultiplierLabel; @@ -42,6 +43,10 @@ namespace osu.Game.Overlays.Mods protected readonly FillFlowContainer ModSectionsContainer; + protected readonly FillFlowContainer ModSettingsContent; + + protected readonly Container ModSettingsContainer; + protected readonly Bindable> SelectedMods = new Bindable>(Array.Empty()); protected readonly IBindable Ruleset = new Bindable(); @@ -226,6 +231,16 @@ namespace osu.Game.Overlays.Mods Right = 20 } }, + CustomizeButton = new TriangleButton + { + Width = 180, + Text = "Customization", + Action = () => ModSettingsContainer.Alpha = ModSettingsContainer.Alpha == 1 ? 0 : 1, + Margin = new MarginPadding + { + Right = 20 + } + }, CloseButton = new TriangleButton { Width = 180, @@ -271,6 +286,36 @@ namespace osu.Game.Overlays.Mods }, }, }, + ModSettingsContainer = new Container + { + RelativeSizeAxes = Axes.Both, + Anchor = Anchor.BottomRight, + Origin = Anchor.BottomRight, + Width = 0.25f, + Alpha = 0, + X = -100, + Children = new Drawable[] + { + new Box + { + RelativeSizeAxes = Axes.Both, + Colour = new Color4(0, 0, 0, 192) + }, + new OsuScrollContainer + { + RelativeSizeAxes = Axes.Both, + Child = ModSettingsContent = new FillFlowContainer + { + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Spacing = new Vector2(0f, 10f), + Padding = new MarginPadding(20), + } + } + } + } }; } @@ -284,10 +329,23 @@ namespace osu.Game.Overlays.Mods Ruleset.BindTo(ruleset); if (mods != null) SelectedMods.BindTo(mods); + SelectedMods.ValueChanged += updateModSettings; + sampleOn = audio.Samples.Get(@"UI/check-on"); sampleOff = audio.Samples.Get(@"UI/check-off"); } + private void updateModSettings(ValueChangedEvent> selectedMods) + { + var added = selectedMods.NewValue.Except(selectedMods.OldValue).FirstOrDefault(); + var removed = selectedMods.OldValue.Except(selectedMods.NewValue).FirstOrDefault(); + + if (added is IModHasSettings) + ModSettingsContent.Add(new ModControlSection(added)); + else if (removed is IModHasSettings) + ModSettingsContent.Remove(ModSettingsContent.Children.Where(section => section.Mod == removed).FirstOrDefault()); + } + public void DeselectAll() { foreach (var section in ModSectionsContainer.Children) diff --git a/osu.Game/Rulesets/Mods/IModHasSettings.cs b/osu.Game/Rulesets/Mods/IModHasSettings.cs new file mode 100644 index 0000000000..004279f71d --- /dev/null +++ b/osu.Game/Rulesets/Mods/IModHasSettings.cs @@ -0,0 +1,15 @@ +// 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; + +namespace osu.Game.Rulesets.Mods +{ + /// + /// An interface for mods that allows user control over it's properties. + /// + public interface IModHasSettings + { + Drawable[] CreateControls(); + } +} diff --git a/osu.Game/Rulesets/Mods/Mod.cs b/osu.Game/Rulesets/Mods/Mod.cs index 023d37497a..1c280c820d 100644 --- a/osu.Game/Rulesets/Mods/Mod.cs +++ b/osu.Game/Rulesets/Mods/Mod.cs @@ -69,7 +69,7 @@ namespace osu.Game.Rulesets.Mods /// /// Creates a copy of this initialised to a default state. /// - public virtual Mod CreateCopy() => (Mod)Activator.CreateInstance(GetType()); + public virtual Mod CreateCopy() => (Mod)MemberwiseClone(); public bool Equals(IMod other) => GetType() == other?.GetType(); } From 9375ef5eeae16c551b9e950becbb148a1a782dfd Mon Sep 17 00:00:00 2001 From: LeNitrous Date: Tue, 8 Oct 2019 19:42:15 +0800 Subject: [PATCH 0040/1829] clear settings controls when changing rulesets --- osu.Game/Overlays/Mods/ModSelectOverlay.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game/Overlays/Mods/ModSelectOverlay.cs b/osu.Game/Overlays/Mods/ModSelectOverlay.cs index 5493080964..a344bcc254 100644 --- a/osu.Game/Overlays/Mods/ModSelectOverlay.cs +++ b/osu.Game/Overlays/Mods/ModSelectOverlay.cs @@ -330,6 +330,7 @@ namespace osu.Game.Overlays.Mods if (mods != null) SelectedMods.BindTo(mods); SelectedMods.ValueChanged += updateModSettings; + Ruleset.ValueChanged += _ => ModSettingsContent.Clear(); sampleOn = audio.Samples.Get(@"UI/check-on"); sampleOff = audio.Samples.Get(@"UI/check-off"); From 281671a213f26a4d71bcc920205994b1f10c5db0 Mon Sep 17 00:00:00 2001 From: iiSaLMaN Date: Wed, 9 Oct 2019 21:04:26 +0300 Subject: [PATCH 0041/1829] Remove default combo colours usage from skins --- osu.Game/Skinning/LegacySkin.cs | 2 +- osu.Game/Skinning/LegacySkinDecoder.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game/Skinning/LegacySkin.cs b/osu.Game/Skinning/LegacySkin.cs index fea15458e4..3f0d4ca0d6 100644 --- a/osu.Game/Skinning/LegacySkin.cs +++ b/osu.Game/Skinning/LegacySkin.cs @@ -39,7 +39,7 @@ namespace osu.Game.Skinning using (LineBufferedReader reader = new LineBufferedReader(stream)) Configuration = new LegacySkinDecoder().Decode(reader); else - Configuration = new DefaultSkinConfiguration(); + Configuration = new SkinConfiguration(); if (storage != null) { diff --git a/osu.Game/Skinning/LegacySkinDecoder.cs b/osu.Game/Skinning/LegacySkinDecoder.cs index e97664e75e..ada2e075a7 100644 --- a/osu.Game/Skinning/LegacySkinDecoder.cs +++ b/osu.Game/Skinning/LegacySkinDecoder.cs @@ -5,14 +5,14 @@ using osu.Game.Beatmaps.Formats; namespace osu.Game.Skinning { - public class LegacySkinDecoder : LegacyDecoder + public class LegacySkinDecoder : LegacyDecoder { public LegacySkinDecoder() : base(1) { } - protected override void ParseLine(DefaultSkinConfiguration skin, Section section, string line) + protected override void ParseLine(SkinConfiguration skin, Section section, string line) { if (section != Section.Colours) { From 5e3f0f6c95f88845946bae4f96879628e42d9be7 Mon Sep 17 00:00:00 2001 From: iiSaLMaN Date: Wed, 9 Oct 2019 21:08:07 +0300 Subject: [PATCH 0042/1829] Return default combo colours if none provided --- osu.Game/Beatmaps/Formats/LegacyDecoder.cs | 9 --------- osu.Game/Skinning/LegacyBeatmapSkin.cs | 3 +++ osu.Game/Skinning/LegacySkin.cs | 12 +++++++++++- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyDecoder.cs index 83d20da458..4899a53cf1 100644 --- a/osu.Game/Beatmaps/Formats/LegacyDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyDecoder.cs @@ -77,8 +77,6 @@ namespace osu.Game.Beatmaps.Formats return line; } - private bool hasComboColours; - private void handleColours(T output, string line) { var pair = SplitKeyVal(line); @@ -105,13 +103,6 @@ namespace osu.Game.Beatmaps.Formats { if (!(output is IHasComboColours tHasComboColours)) return; - if (!hasComboColours) - { - // remove default colours. - tHasComboColours.ComboColours.Clear(); - hasComboColours = true; - } - tHasComboColours.ComboColours.Add(colour); } else diff --git a/osu.Game/Skinning/LegacyBeatmapSkin.cs b/osu.Game/Skinning/LegacyBeatmapSkin.cs index 6770da3c66..c9dec8a55e 100644 --- a/osu.Game/Skinning/LegacyBeatmapSkin.cs +++ b/osu.Game/Skinning/LegacyBeatmapSkin.cs @@ -9,6 +9,9 @@ namespace osu.Game.Skinning { public class LegacyBeatmapSkin : LegacySkin { + // Null should be returned in the case of no colours provided to fallback into current skin's colours. + protected override bool AllowDefaultColoursFallback => false; + public LegacyBeatmapSkin(BeatmapInfo beatmap, IResourceStore storage, AudioManager audioManager) : base(createSkinInfo(beatmap), new LegacySkinResourceStore(beatmap.BeatmapSet, storage), audioManager, beatmap.Path) { diff --git a/osu.Game/Skinning/LegacySkin.cs b/osu.Game/Skinning/LegacySkin.cs index 3f0d4ca0d6..bc12c00cd8 100644 --- a/osu.Game/Skinning/LegacySkin.cs +++ b/osu.Game/Skinning/LegacySkin.cs @@ -26,6 +26,11 @@ namespace osu.Game.Skinning [CanBeNull] protected IResourceStore Samples; + /// + /// Whether to allow default combo colours as fallback if none provided in this skin. + /// + protected virtual bool AllowDefaultColoursFallback => true; + public LegacySkin(SkinInfo skin, IResourceStore storage, AudioManager audioManager) : this(skin, new LegacySkinResourceStore(skin, storage), audioManager, "skin.ini") { @@ -63,7 +68,12 @@ namespace osu.Game.Skinning switch (global) { case GlobalSkinConfiguration.ComboColours: - return SkinUtils.As(new Bindable>(Configuration.ComboColours)); + if (Configuration.ComboColours.Any()) + return SkinUtils.As(new Bindable>(Configuration.ComboColours)); + else if (AllowDefaultColoursFallback) + return SkinUtils.As(new Bindable>(new DefaultSkinConfiguration().ComboColours)); + + break; } break; From c2ada81c2313f77d5d7c19205da7dc92ee303e23 Mon Sep 17 00:00:00 2001 From: iiSaLMaN Date: Wed, 9 Oct 2019 21:08:54 +0300 Subject: [PATCH 0043/1829] Add tests ensuring correct behaviour --- .../Skins/TestSceneSkinConfigurationLookup.cs | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs b/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs index 578030748b..2ea66d8e41 100644 --- a/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs +++ b/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System.Collections.Generic; +using System.Linq; using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Audio.Sample; @@ -21,8 +22,8 @@ namespace osu.Game.Tests.Skins [HeadlessTest] public class TestSceneSkinConfigurationLookup : OsuTestScene { - private LegacySkin source1; - private LegacySkin source2; + private SkinSource source1; + private SkinSource source2; private SkinRequester requester; [SetUp] @@ -116,6 +117,26 @@ namespace osu.Game.Tests.Skins }); } + [TestCase(false)] + [TestCase(true)] + public void TestEmptyComboColours(bool allowFallback) + { + AddStep("Add custom combo colours to fallback source", () => source1.Configuration.ComboColours = new List + { + new Color4(100, 150, 200, 255), + new Color4(55, 110, 166, 255), + new Color4(75, 125, 175, 255), + }); + AddStep("Clear combo colours from source", () => source2.Configuration.ComboColours.Clear()); + AddStep("Disable default fallback in source", () => source2.AllowColoursFallback = allowFallback); + + AddAssert($"Check retrieved combo colours from {(allowFallback ? "default skin" : "fallback source")}", () => + { + var expectedColours = allowFallback ? new DefaultSkinConfiguration().ComboColours : source1.Configuration.ComboColours; + return requester.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value?.SequenceEqual(expectedColours) ?? false; + }); + } + public enum LookupType { Test @@ -130,6 +151,9 @@ namespace osu.Game.Tests.Skins public class SkinSource : LegacySkin { + public bool AllowColoursFallback = true; + protected override bool AllowDefaultColoursFallback => AllowColoursFallback; + public SkinSource() : base(new SkinInfo(), null, null, string.Empty) { From 8d40c1b733d9b1800474c7b0d8dba4e36684080c Mon Sep 17 00:00:00 2001 From: iiSaLMaN Date: Wed, 9 Oct 2019 21:15:30 +0300 Subject: [PATCH 0044/1829] Remove default combo colours on empty skin test Checked differently in TestSceneSkinConfigurationLookup.TestEmptyComboColours() --- osu.Game.Tests/Resources/skin-empty.ini | 2 -- osu.Game.Tests/Skins/LegacySkinDecoderTest.cs | 25 ++++++++----------- 2 files changed, 10 insertions(+), 17 deletions(-) delete mode 100644 osu.Game.Tests/Resources/skin-empty.ini diff --git a/osu.Game.Tests/Resources/skin-empty.ini b/osu.Game.Tests/Resources/skin-empty.ini deleted file mode 100644 index b6c319fe3c..0000000000 --- a/osu.Game.Tests/Resources/skin-empty.ini +++ /dev/null @@ -1,2 +0,0 @@ -[General] -Name: test skin \ No newline at end of file diff --git a/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs b/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs index 0d96dd08da..76ce2331f5 100644 --- a/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs +++ b/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs @@ -13,28 +13,23 @@ namespace osu.Game.Tests.Skins [TestFixture] public class LegacySkinDecoderTest { - [TestCase(true)] - [TestCase(false)] - public void TestDecodeSkinColours(bool hasColours) + [Test] + public void TestDecodeSkinColours() { var decoder = new LegacySkinDecoder(); - using (var resStream = TestResources.OpenResource(hasColours ? "skin.ini" : "skin-empty.ini")) + using (var resStream = TestResources.OpenResource("skin.ini")) using (var stream = new LineBufferedReader(resStream)) { var comboColors = decoder.Decode(stream).ComboColours; - List expectedColors; - if (hasColours) - expectedColors = new List - { - new Color4(142, 199, 255, 255), - new Color4(255, 128, 128, 255), - new Color4(128, 255, 255, 255), - new Color4(100, 100, 100, 100), - }; - else - expectedColors = new DefaultSkin().Configuration.ComboColours; + List expectedColors = new List + { + new Color4(142, 199, 255, 255), + new Color4(255, 128, 128, 255), + new Color4(128, 255, 255, 255), + new Color4(100, 100, 100, 100), + }; Assert.AreEqual(expectedColors.Count, comboColors.Count); for (int i = 0; i < expectedColors.Count; i++) From d7fc9043812b99dc09d843ea94c17da50e8c2f47 Mon Sep 17 00:00:00 2001 From: Ganendra Afrasya Date: Fri, 11 Oct 2019 00:12:36 +0700 Subject: [PATCH 0045/1829] Make prev button can do restart track --- osu.Game/Overlays/MusicController.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs index f5c36a9cac..9b54a6c9a6 100644 --- a/osu.Game/Overlays/MusicController.cs +++ b/osu.Game/Overlays/MusicController.cs @@ -136,11 +136,20 @@ namespace osu.Game.Overlays } /// - /// Play the previous track. + /// Play the previous track or restart the current track if it's current time below 5000ms /// /// Whether the operation was successful. public bool PrevTrack() { + var currentTrackPosition = current?.Track.CurrentTime; + + if (currentTrackPosition >= 5000) + { + SeekTo(0); + + return true; + } + queuedDirection = TrackChangeDirection.Prev; var playable = BeatmapSets.TakeWhile(i => i.ID != current.BeatmapSetInfo.ID).LastOrDefault() ?? BeatmapSets.LastOrDefault(); @@ -260,8 +269,9 @@ namespace osu.Game.Overlays return true; case GlobalAction.MusicPrev: + var shouldRestart = current?.Track.CurrentTime >= 5000; if (PrevTrack()) - onScreenDisplay?.Display(new MusicControllerToast("Previous track")); + onScreenDisplay?.Display(new MusicControllerToast(shouldRestart ? "Restart track" : "Previous track")); return true; } From b07c477aad08a9c284c6e5a3a01e561fd4506021 Mon Sep 17 00:00:00 2001 From: Ganendra Afrasya Date: Fri, 11 Oct 2019 01:24:03 +0700 Subject: [PATCH 0046/1829] Add test case on TestSceneNowPlayingOverlay --- .../TestSceneNowPlayingOverlay.cs | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs index e3daa9c279..33706d2e0f 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs @@ -5,6 +5,7 @@ using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Timing; +using osu.Game.Beatmaps; using osu.Game.Overlays; namespace osu.Game.Tests.Visual.UserInterface @@ -15,6 +16,8 @@ namespace osu.Game.Tests.Visual.UserInterface [Cached] private MusicController musicController = new MusicController(); + private WorkingBeatmap currentTrack; + public TestSceneNowPlayingOverlay() { Clock = new FramedClock(); @@ -30,7 +33,25 @@ namespace osu.Game.Tests.Visual.UserInterface AddStep(@"show", () => np.Show()); AddToggleStep(@"toggle beatmap lock", state => Beatmap.Disabled = state); - AddStep(@"show", () => np.Hide()); + AddStep(@"hide", () => np.Hide()); + } + + [Test] + public void TestPrevTrackBehavior() + { + AddStep(@"Play track", () => + { + musicController.NextTrack(); + currentTrack = Beatmap.Value; + }); + + AddStep(@"Seek track to 6 second", () => musicController.SeekTo(6000)); + AddStep(@"Call PrevTrack", () => musicController.PrevTrack()); + AddAssert(@"Check if it restarted", () => currentTrack == Beatmap.Value); + + AddStep(@"Seek track to 1 second", () => musicController.SeekTo(1000)); + AddStep(@"Call PrevTrack", () => musicController.PrevTrack()); + AddAssert(@"Check if it changed to prev track'", () => currentTrack != Beatmap.Value); } } } From 3008ade8a2b2182c1daf8a4afb52b1769eb5bb8e Mon Sep 17 00:00:00 2001 From: Ganendra Afrasya Date: Fri, 11 Oct 2019 16:41:54 +0700 Subject: [PATCH 0047/1829] Using enum to determine the action --- osu.Game/Overlays/MusicController.cs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs index 9b54a6c9a6..12de2019cb 100644 --- a/osu.Game/Overlays/MusicController.cs +++ b/osu.Game/Overlays/MusicController.cs @@ -27,6 +27,8 @@ namespace osu.Game.Overlays public IBindableList BeatmapSets => beatmapSets; + private const double restart_cutoff_point = 5000; + private readonly BindableList beatmapSets = new BindableList(); public bool IsUserPaused { get; private set; } @@ -135,22 +137,26 @@ namespace osu.Game.Overlays return true; } + private PreviousButtonAction? prevAction; + /// - /// Play the previous track or restart the current track if it's current time below 5000ms + /// Play the previous track or restart the current track if it's current time below /// /// Whether the operation was successful. public bool PrevTrack() { var currentTrackPosition = current?.Track.CurrentTime; - if (currentTrackPosition >= 5000) + if (currentTrackPosition >= restart_cutoff_point) { SeekTo(0); + prevAction = PreviousButtonAction.Restart; return true; } queuedDirection = TrackChangeDirection.Prev; + prevAction = PreviousButtonAction.Previous; var playable = BeatmapSets.TakeWhile(i => i.ID != current.BeatmapSetInfo.ID).LastOrDefault() ?? BeatmapSets.LastOrDefault(); @@ -269,9 +275,8 @@ namespace osu.Game.Overlays return true; case GlobalAction.MusicPrev: - var shouldRestart = current?.Track.CurrentTime >= 5000; if (PrevTrack()) - onScreenDisplay?.Display(new MusicControllerToast(shouldRestart ? "Restart track" : "Previous track")); + onScreenDisplay?.Display(new MusicControllerToast(prevAction == PreviousButtonAction.Restart ? "Restart track" : "Previous track")); return true; } @@ -296,4 +301,11 @@ namespace osu.Game.Overlays Next, Prev } + + internal enum PreviousButtonAction + { + None, + Restart, + Previous + } } From 736a36a326700ab325db2f3938025f9cf76a1490 Mon Sep 17 00:00:00 2001 From: Ganendra Afrasya Date: Wed, 16 Oct 2019 14:30:09 +0700 Subject: [PATCH 0048/1829] Fix failed testcase --- .../Visual/UserInterface/TestSceneNowPlayingOverlay.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs index 33706d2e0f..4c76a04bdb 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs @@ -49,9 +49,10 @@ namespace osu.Game.Tests.Visual.UserInterface AddStep(@"Call PrevTrack", () => musicController.PrevTrack()); AddAssert(@"Check if it restarted", () => currentTrack == Beatmap.Value); - AddStep(@"Seek track to 1 second", () => musicController.SeekTo(1000)); + AddStep(@"Seek track to 2 second", () => musicController.SeekTo(2000)); AddStep(@"Call PrevTrack", () => musicController.PrevTrack()); - AddAssert(@"Check if it changed to prev track'", () => currentTrack != Beatmap.Value); + // If the track isn't changing, check the current track's time instead + AddAssert(@"Check if it changed to prev track'", () => currentTrack != Beatmap.Value || currentTrack.Track.CurrentTime < 2000); } } } From 326abc1a55be865f4facf10766f5fe89a6a6864b Mon Sep 17 00:00:00 2001 From: Ganendra Afrasya Date: Wed, 16 Oct 2019 20:11:25 +0700 Subject: [PATCH 0049/1829] Apply reviews --- osu.Game/Overlays/MusicController.cs | 30 ++++++++++++++++------------ 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs index 12de2019cb..812c4778dd 100644 --- a/osu.Game/Overlays/MusicController.cs +++ b/osu.Game/Overlays/MusicController.cs @@ -137,26 +137,21 @@ namespace osu.Game.Overlays return true; } - private PreviousButtonAction? prevAction; - /// /// Play the previous track or restart the current track if it's current time below /// /// Whether the operation was successful. - public bool PrevTrack() + public PreviousButtonAction PrevTrack() { var currentTrackPosition = current?.Track.CurrentTime; if (currentTrackPosition >= restart_cutoff_point) { SeekTo(0); - prevAction = PreviousButtonAction.Restart; - - return true; + return PreviousButtonAction.Restart; } queuedDirection = TrackChangeDirection.Prev; - prevAction = PreviousButtonAction.Previous; var playable = BeatmapSets.TakeWhile(i => i.ID != current.BeatmapSetInfo.ID).LastOrDefault() ?? BeatmapSets.LastOrDefault(); @@ -166,10 +161,10 @@ namespace osu.Game.Overlays working.Value = beatmaps.GetWorkingBeatmap(playable.Beatmaps.First(), beatmap.Value); beatmap.Value.Track.Restart(); - return true; + return PreviousButtonAction.Previous; } - return false; + return PreviousButtonAction.None; } /// @@ -275,10 +270,19 @@ namespace osu.Game.Overlays return true; case GlobalAction.MusicPrev: - if (PrevTrack()) - onScreenDisplay?.Display(new MusicControllerToast(prevAction == PreviousButtonAction.Restart ? "Restart track" : "Previous track")); + switch (PrevTrack()) + { + case PreviousButtonAction.Restart: + onScreenDisplay?.Display(new MusicControllerToast("Restart track")); + return true; - return true; + case PreviousButtonAction.Previous: + onScreenDisplay?.Display(new MusicControllerToast("Previous track")); + return true; + + default: + return false; + } } return false; @@ -302,7 +306,7 @@ namespace osu.Game.Overlays Prev } - internal enum PreviousButtonAction + public enum PreviousButtonAction { None, Restart, From c6d4fc8b2438af9786bf628ca4a7be712f13ff55 Mon Sep 17 00:00:00 2001 From: Ganendra Afrasya Date: Thu, 24 Oct 2019 08:00:45 +0700 Subject: [PATCH 0050/1829] Apply review --- osu.Game/Overlays/MusicController.cs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs index cc74f234a0..45f08b2a25 100644 --- a/osu.Game/Overlays/MusicController.cs +++ b/osu.Game/Overlays/MusicController.cs @@ -289,15 +289,14 @@ namespace osu.Game.Overlays { case PreviousButtonAction.Restart: onScreenDisplay?.Display(new MusicControllerToast("Restart track")); - return true; + break; case PreviousButtonAction.Previous: onScreenDisplay?.Display(new MusicControllerToast("Previous track")); - return true; - - default: - return false; + break; } + + return true; } return false; From d22e12d1046a167c547d313bf703e309ef71e583 Mon Sep 17 00:00:00 2001 From: Ganendra Afrasya Date: Thu, 24 Oct 2019 10:28:23 +0700 Subject: [PATCH 0051/1829] Update doc --- osu.Game/Overlays/MusicController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs index 45f08b2a25..b2b0a0afd9 100644 --- a/osu.Game/Overlays/MusicController.cs +++ b/osu.Game/Overlays/MusicController.cs @@ -155,7 +155,7 @@ namespace osu.Game.Overlays /// /// Play the previous track or restart the current track if it's current time below /// - /// Whether the operation was successful. + /// The that indicate the decided action public PreviousButtonAction PrevTrack() { var currentTrackPosition = current?.Track.CurrentTime; From 967551fec06cc152085116e1510ddc91e98aa799 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 24 Oct 2019 13:10:17 +0900 Subject: [PATCH 0052/1829] Renames and xmldoc --- .../TestSceneNowPlayingOverlay.cs | 4 ++-- osu.Game/Overlays/MusicController.cs | 21 +++++++++++-------- osu.Game/Overlays/NowPlayingOverlay.cs | 2 +- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs index 4c76a04bdb..f12e647b4e 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs @@ -46,11 +46,11 @@ namespace osu.Game.Tests.Visual.UserInterface }); AddStep(@"Seek track to 6 second", () => musicController.SeekTo(6000)); - AddStep(@"Call PrevTrack", () => musicController.PrevTrack()); + AddStep(@"Call PrevTrack", () => musicController.PreviousTrack()); AddAssert(@"Check if it restarted", () => currentTrack == Beatmap.Value); AddStep(@"Seek track to 2 second", () => musicController.SeekTo(2000)); - AddStep(@"Call PrevTrack", () => musicController.PrevTrack()); + AddStep(@"Call PrevTrack", () => musicController.PreviousTrack()); // If the track isn't changing, check the current track's time instead AddAssert(@"Check if it changed to prev track'", () => currentTrack != Beatmap.Value || currentTrack.Track.CurrentTime < 2000); } diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs index b2b0a0afd9..bb246763c7 100644 --- a/osu.Game/Overlays/MusicController.cs +++ b/osu.Game/Overlays/MusicController.cs @@ -27,6 +27,9 @@ namespace osu.Game.Overlays public IBindableList BeatmapSets => beatmapSets; + /// + /// Point in time after which the current track will be restarted on triggering a "previous track" action. + /// private const double restart_cutoff_point = 5000; private readonly BindableList beatmapSets = new BindableList(); @@ -155,15 +158,15 @@ namespace osu.Game.Overlays /// /// Play the previous track or restart the current track if it's current time below /// - /// The that indicate the decided action - public PreviousButtonAction PrevTrack() + /// The that indicate the decided action + public PreviousTrackResult PreviousTrack() { var currentTrackPosition = current?.Track.CurrentTime; if (currentTrackPosition >= restart_cutoff_point) { SeekTo(0); - return PreviousButtonAction.Restart; + return PreviousTrackResult.Restart; } queuedDirection = TrackChangeDirection.Prev; @@ -176,10 +179,10 @@ namespace osu.Game.Overlays working.Value = beatmaps.GetWorkingBeatmap(playable.Beatmaps.First(), beatmap.Value); beatmap.Value.Track.Restart(); - return PreviousButtonAction.Previous; + return PreviousTrackResult.Previous; } - return PreviousButtonAction.None; + return PreviousTrackResult.None; } /// @@ -285,13 +288,13 @@ namespace osu.Game.Overlays return true; case GlobalAction.MusicPrev: - switch (PrevTrack()) + switch (PreviousTrack()) { - case PreviousButtonAction.Restart: + case PreviousTrackResult.Restart: onScreenDisplay?.Display(new MusicControllerToast("Restart track")); break; - case PreviousButtonAction.Previous: + case PreviousTrackResult.Previous: onScreenDisplay?.Display(new MusicControllerToast("Previous track")); break; } @@ -320,7 +323,7 @@ namespace osu.Game.Overlays Prev } - public enum PreviousButtonAction + public enum PreviousTrackResult { None, Restart, diff --git a/osu.Game/Overlays/NowPlayingOverlay.cs b/osu.Game/Overlays/NowPlayingOverlay.cs index 6b79f2af07..c1c871aade 100644 --- a/osu.Game/Overlays/NowPlayingOverlay.cs +++ b/osu.Game/Overlays/NowPlayingOverlay.cs @@ -137,7 +137,7 @@ namespace osu.Game.Overlays { Anchor = Anchor.Centre, Origin = Anchor.Centre, - Action = () => musicController.PrevTrack(), + Action = () => musicController.PreviousTrack(), Icon = FontAwesome.Solid.StepBackward, }, playButton = new MusicIconButton From 42e33dde0c718188afcaa41cbdf4bd8d731fac9a Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 24 Oct 2019 13:18:31 +0900 Subject: [PATCH 0053/1829] Make tests actually test --- .../Visual/UserInterface/TestSceneNowPlayingOverlay.cs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs index f12e647b4e..16f788a9fc 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs @@ -46,13 +46,11 @@ namespace osu.Game.Tests.Visual.UserInterface }); AddStep(@"Seek track to 6 second", () => musicController.SeekTo(6000)); - AddStep(@"Call PrevTrack", () => musicController.PreviousTrack()); - AddAssert(@"Check if it restarted", () => currentTrack == Beatmap.Value); + AddAssert(@"Check action is restart track", () => musicController.PreviousTrack() == PreviousTrackResult.Restart); + AddAssert(@"Check track didn't change", () => currentTrack == Beatmap.Value); AddStep(@"Seek track to 2 second", () => musicController.SeekTo(2000)); - AddStep(@"Call PrevTrack", () => musicController.PreviousTrack()); - // If the track isn't changing, check the current track's time instead - AddAssert(@"Check if it changed to prev track'", () => currentTrack != Beatmap.Value || currentTrack.Track.CurrentTime < 2000); + AddAssert(@"Check action is previous track", () => musicController.PreviousTrack() == PreviousTrackResult.Previous); } } } From f32b84d07d98b29371f02fa54dc9ff7d6949e922 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 24 Oct 2019 14:05:56 +0900 Subject: [PATCH 0054/1829] Fix tests not working on CI (where no beatmaps were present) --- .../TestSceneNowPlayingOverlay.cs | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs index 16f788a9fc..1a824cf226 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs @@ -4,9 +4,9 @@ using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Graphics; -using osu.Framework.Timing; using osu.Game.Beatmaps; using osu.Game.Overlays; +using osu.Game.Rulesets.Osu; namespace osu.Game.Tests.Visual.UserInterface { @@ -16,24 +16,31 @@ namespace osu.Game.Tests.Visual.UserInterface [Cached] private MusicController musicController = new MusicController(); - private WorkingBeatmap currentTrack; + private WorkingBeatmap currentBeatmap; - public TestSceneNowPlayingOverlay() + private NowPlayingOverlay nowPlayingOverlay; + + [BackgroundDependencyLoader] + private void load() { - Clock = new FramedClock(); + Beatmap.Value = CreateWorkingBeatmap(new OsuRuleset().RulesetInfo); - var np = new NowPlayingOverlay + nowPlayingOverlay = new NowPlayingOverlay { Origin = Anchor.Centre, Anchor = Anchor.Centre }; Add(musicController); - Add(np); + Add(nowPlayingOverlay); + } - AddStep(@"show", () => np.Show()); + [Test] + public void TestShowHideDisable() + { + AddStep(@"show", () => nowPlayingOverlay.Show()); AddToggleStep(@"toggle beatmap lock", state => Beatmap.Disabled = state); - AddStep(@"hide", () => np.Hide()); + AddStep(@"hide", () => nowPlayingOverlay.Hide()); } [Test] @@ -42,15 +49,16 @@ namespace osu.Game.Tests.Visual.UserInterface AddStep(@"Play track", () => { musicController.NextTrack(); - currentTrack = Beatmap.Value; + currentBeatmap = Beatmap.Value; }); AddStep(@"Seek track to 6 second", () => musicController.SeekTo(6000)); + AddUntilStep(@"Wait for current time to update", () => currentBeatmap.Track.CurrentTime > 5000); AddAssert(@"Check action is restart track", () => musicController.PreviousTrack() == PreviousTrackResult.Restart); - AddAssert(@"Check track didn't change", () => currentTrack == Beatmap.Value); + AddAssert(@"Check track didn't change", () => currentBeatmap == Beatmap.Value); AddStep(@"Seek track to 2 second", () => musicController.SeekTo(2000)); - AddAssert(@"Check action is previous track", () => musicController.PreviousTrack() == PreviousTrackResult.Previous); + AddAssert(@"Check action is not restart", () => musicController.PreviousTrack() != PreviousTrackResult.Restart); } } } From 7f64012cfc022c82fd12605dd65ea06a02112c16 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 24 Oct 2019 14:35:45 +0900 Subject: [PATCH 0055/1829] Remove seek --- .../Visual/UserInterface/TestSceneNowPlayingOverlay.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs index 1a824cf226..4626b9d70f 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs @@ -56,8 +56,6 @@ namespace osu.Game.Tests.Visual.UserInterface AddUntilStep(@"Wait for current time to update", () => currentBeatmap.Track.CurrentTime > 5000); AddAssert(@"Check action is restart track", () => musicController.PreviousTrack() == PreviousTrackResult.Restart); AddAssert(@"Check track didn't change", () => currentBeatmap == Beatmap.Value); - - AddStep(@"Seek track to 2 second", () => musicController.SeekTo(2000)); AddAssert(@"Check action is not restart", () => musicController.PreviousTrack() != PreviousTrackResult.Restart); } } From 2bc6932567548187d6696f4900ae98cfd1eaddc9 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 5 Nov 2019 00:55:55 +0800 Subject: [PATCH 0056/1829] make interface mod applicable --- osu.Game/Rulesets/Mods/IModHasSettings.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Mods/IModHasSettings.cs b/osu.Game/Rulesets/Mods/IModHasSettings.cs index 004279f71d..b5058de82b 100644 --- a/osu.Game/Rulesets/Mods/IModHasSettings.cs +++ b/osu.Game/Rulesets/Mods/IModHasSettings.cs @@ -8,7 +8,7 @@ namespace osu.Game.Rulesets.Mods /// /// An interface for mods that allows user control over it's properties. /// - public interface IModHasSettings + public interface IModHasSettings : IApplicableMod { Drawable[] CreateControls(); } From a92b32f6dc94a164e5a2502e5f070240673f555e Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 5 Nov 2019 00:56:09 +0800 Subject: [PATCH 0057/1829] add basic tests --- .../TestSceneModCustomizationSettings.cs | 108 ++++++++++++++++++ osu.Game/Overlays/Mods/ModSelectOverlay.cs | 8 +- 2 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 osu.Game.Tests/Visual/UserInterface/TestSceneModCustomizationSettings.cs diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModCustomizationSettings.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModCustomizationSettings.cs new file mode 100644 index 0000000000..ec5b3c1e16 --- /dev/null +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModCustomizationSettings.cs @@ -0,0 +1,108 @@ +// 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.Allocation; +using osu.Framework.Bindables; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Graphics.UserInterface; +using osu.Game.Overlays.Mods; +using osu.Game.Overlays.Settings; +using osu.Game.Rulesets.Mods; + +namespace osu.Game.Tests.Visual.UserInterface +{ + public class TestSceneModCustomizationSettings : OsuTestScene + { + private TestModSelectOverlay modSelect; + + [BackgroundDependencyLoader] + private void load() + { + Add(modSelect = new TestModSelectOverlay + { + RelativeSizeAxes = Axes.X, + Origin = Anchor.BottomCentre, + Anchor = Anchor.BottomCentre, + }); + + var testMod = new TestModCustomizable(); + + AddStep("open", modSelect.Show); + AddAssert("button disabled", () => !modSelect.CustomizeButton.Enabled.Value); + AddStep("select mod", () => modSelect.SelectMod(testMod)); + AddAssert("button enabled", () => modSelect.CustomizeButton.Enabled.Value); + AddStep("open customization", () => modSelect.CustomizeButton.Click()); + AddAssert("controls exist", () => modSelect.GetControlSection(testMod) != null); + AddStep("deselect mod", () => modSelect.SelectMod(testMod)); + AddAssert("controls hidden", () => modSelect.ModSettingsContainer.Alpha == 0); + } + + private class TestModSelectOverlay : ModSelectOverlay + { + public new Container ModSettingsContainer => base.ModSettingsContainer; + public new TriangleButton CustomizeButton => base.CustomizeButton; + + public void SelectMod(Mod mod) => + ModSectionsContainer.Children.Single((s) => s.ModType == mod.Type) + .ButtonsContainer.OfType().Single(b => b.Mods.Any(m => m.GetType() == mod.GetType())).SelectNext(1); + + public ModControlSection GetControlSection(Mod mod) => + ModSettingsContent.Children.FirstOrDefault((s) => s.Mod == mod); + + protected override void LoadComplete() + { + base.LoadComplete(); + + foreach (var section in ModSectionsContainer) + if (section.ModType == ModType.Conversion) + section.Mods = new Mod[] { new TestModCustomizable() }; + else + section.Mods = new Mod[] { }; + } + } + + private class TestModCustomizable : Mod, IModHasSettings + { + public override string Name => "Customizable Mod"; + + public override string Acronym => "CM"; + + public override double ScoreMultiplier => 1.0; + + public override ModType Type => ModType.Conversion; + + public readonly BindableFloat sliderBindable = new BindableFloat + { + MinValue = 0, + MaxValue = 10, + }; + + public readonly BindableBool tickBindable = new BindableBool(); + + public Drawable[] CreateControls() + { + BindableFloat sliderControl = new BindableFloat(); + BindableBool tickControl = new BindableBool(); + + sliderControl.BindTo(sliderBindable); + tickControl.BindTo(tickBindable); + + return new Drawable[] + { + new SettingsSlider + { + LabelText = "Slider", + Bindable = sliderControl + }, + new SettingsCheckbox + { + LabelText = "Checkbox", + Bindable = tickControl + } + }; + } + } + } +} \ No newline at end of file diff --git a/osu.Game/Overlays/Mods/ModSelectOverlay.cs b/osu.Game/Overlays/Mods/ModSelectOverlay.cs index a344bcc254..fc5ed1b3f3 100644 --- a/osu.Game/Overlays/Mods/ModSelectOverlay.cs +++ b/osu.Game/Overlays/Mods/ModSelectOverlay.cs @@ -331,6 +331,7 @@ namespace osu.Game.Overlays.Mods SelectedMods.ValueChanged += updateModSettings; Ruleset.ValueChanged += _ => ModSettingsContent.Clear(); + CustomizeButton.Enabled.Value = false; sampleOn = audio.Samples.Get(@"UI/check-on"); sampleOff = audio.Samples.Get(@"UI/check-off"); @@ -344,7 +345,12 @@ namespace osu.Game.Overlays.Mods if (added is IModHasSettings) ModSettingsContent.Add(new ModControlSection(added)); else if (removed is IModHasSettings) - ModSettingsContent.Remove(ModSettingsContent.Children.Where(section => section.Mod == removed).FirstOrDefault()); + ModSettingsContent.Remove(ModSettingsContent.Children.Where(section => section.Mod == removed).Single()); + + CustomizeButton.Enabled.Value = ModSettingsContent.Children.Count > 0; + + if (ModSettingsContainer.Alpha == 1 && ModSettingsContent.Children.Count == 0) + ModSettingsContainer.Alpha = 0; } public void DeselectAll() From cef6e2a26b49cdecd9663aa4af586292c8e8b4e6 Mon Sep 17 00:00:00 2001 From: iiSaLMaN Date: Wed, 6 Nov 2019 23:20:36 +0300 Subject: [PATCH 0058/1829] Move colours fallback logic to SkinConfiguration.ComboColours getter --- osu.Game/Skinning/DefaultSkinConfiguration.cs | 10 +------ osu.Game/Skinning/LegacySkin.cs | 9 ++++--- osu.Game/Skinning/SkinConfiguration.cs | 27 ++++++++++++++++++- 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/osu.Game/Skinning/DefaultSkinConfiguration.cs b/osu.Game/Skinning/DefaultSkinConfiguration.cs index cd5975edac..8e89ab25b2 100644 --- a/osu.Game/Skinning/DefaultSkinConfiguration.cs +++ b/osu.Game/Skinning/DefaultSkinConfiguration.cs @@ -1,8 +1,6 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. -using osuTK.Graphics; - namespace osu.Game.Skinning { /// @@ -12,13 +10,7 @@ namespace osu.Game.Skinning { public DefaultSkinConfiguration() { - ComboColours.AddRange(new[] - { - new Color4(255, 192, 0, 255), - new Color4(0, 202, 0, 255), - new Color4(18, 124, 255, 255), - new Color4(242, 24, 57, 255), - }); + ComboColours = DefaultComboColours; } } } diff --git a/osu.Game/Skinning/LegacySkin.cs b/osu.Game/Skinning/LegacySkin.cs index bc12c00cd8..ff1e501a06 100644 --- a/osu.Game/Skinning/LegacySkin.cs +++ b/osu.Game/Skinning/LegacySkin.cs @@ -46,6 +46,8 @@ namespace osu.Game.Skinning else Configuration = new SkinConfiguration(); + Configuration.AllowDefaultColoursFallback = AllowDefaultColoursFallback; + if (storage != null) { Samples = audioManager?.GetSampleStore(storage); @@ -68,10 +70,9 @@ namespace osu.Game.Skinning switch (global) { case GlobalSkinConfiguration.ComboColours: - if (Configuration.ComboColours.Any()) - return SkinUtils.As(new Bindable>(Configuration.ComboColours)); - else if (AllowDefaultColoursFallback) - return SkinUtils.As(new Bindable>(new DefaultSkinConfiguration().ComboColours)); + var comboColours = Configuration.ComboColours; + if (comboColours != null) + return SkinUtils.As(new Bindable>(comboColours)); break; } diff --git a/osu.Game/Skinning/SkinConfiguration.cs b/osu.Game/Skinning/SkinConfiguration.cs index 54aac86e3c..57b969be33 100644 --- a/osu.Game/Skinning/SkinConfiguration.cs +++ b/osu.Game/Skinning/SkinConfiguration.cs @@ -14,7 +14,32 @@ namespace osu.Game.Skinning { public readonly SkinInfo SkinInfo = new SkinInfo(); - public List ComboColours { get; set; } = new List(); + internal bool AllowDefaultColoursFallback; + + public static List DefaultComboColours = new List + { + new Color4(255, 192, 0, 255), + new Color4(0, 202, 0, 255), + new Color4(18, 124, 255, 255), + new Color4(242, 24, 57, 255), + }; + + private List comboColours = new List(); + + public List ComboColours + { + get + { + if (comboColours.Count > 0) + return comboColours; + + if (AllowDefaultColoursFallback) + return DefaultComboColours; + + return null; + } + set => comboColours = value; + } public Dictionary CustomColours { get; set; } = new Dictionary(); From 61778232d8b76436458a87cd60a18d2443159d6d Mon Sep 17 00:00:00 2001 From: iiSaLMaN Date: Wed, 6 Nov 2019 23:24:54 +0300 Subject: [PATCH 0059/1829] Rewrite inline comment --- osu.Game/Skinning/LegacyBeatmapSkin.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Skinning/LegacyBeatmapSkin.cs b/osu.Game/Skinning/LegacyBeatmapSkin.cs index c9dec8a55e..4e020083a7 100644 --- a/osu.Game/Skinning/LegacyBeatmapSkin.cs +++ b/osu.Game/Skinning/LegacyBeatmapSkin.cs @@ -9,7 +9,7 @@ namespace osu.Game.Skinning { public class LegacyBeatmapSkin : LegacySkin { - // Null should be returned in the case of no colours provided to fallback into current skin's colours. + // Disallow default colours fallback on beatmap skins to allow using parent skin combo colours. (via SkinProvidingContainer) protected override bool AllowDefaultColoursFallback => false; public LegacyBeatmapSkin(BeatmapInfo beatmap, IResourceStore storage, AudioManager audioManager) From 963215ccbe99fe7170ffe19673937f5013e756b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Wed, 6 Nov 2019 22:43:13 +0100 Subject: [PATCH 0060/1829] Wait for track reset in tests Add a wait step in tests for the "now playing" overlay to make sure the current track was restarted before trying to call PreviousTrack() again. --- .../Visual/UserInterface/TestSceneNowPlayingOverlay.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs index 4626b9d70f..330ccecd54 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs @@ -4,6 +4,7 @@ using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Graphics; +using osu.Framework.MathUtils; using osu.Game.Beatmaps; using osu.Game.Overlays; using osu.Game.Rulesets.Osu; @@ -55,6 +56,7 @@ namespace osu.Game.Tests.Visual.UserInterface AddStep(@"Seek track to 6 second", () => musicController.SeekTo(6000)); AddUntilStep(@"Wait for current time to update", () => currentBeatmap.Track.CurrentTime > 5000); AddAssert(@"Check action is restart track", () => musicController.PreviousTrack() == PreviousTrackResult.Restart); + AddUntilStep("Wait for current time to update", () => Precision.AlmostEquals(currentBeatmap.Track.CurrentTime, 0)); AddAssert(@"Check track didn't change", () => currentBeatmap == Beatmap.Value); AddAssert(@"Check action is not restart", () => musicController.PreviousTrack() != PreviousTrackResult.Restart); } From cea5bb396358c675b9d80327cb849d4c47b6aca2 Mon Sep 17 00:00:00 2001 From: iiSaLMaN Date: Thu, 7 Nov 2019 15:50:26 +0300 Subject: [PATCH 0061/1829] Return skin-empty.ini back --- osu.Game.Tests/Resources/skin-empty.ini | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 osu.Game.Tests/Resources/skin-empty.ini diff --git a/osu.Game.Tests/Resources/skin-empty.ini b/osu.Game.Tests/Resources/skin-empty.ini new file mode 100644 index 0000000000..b6c319fe3c --- /dev/null +++ b/osu.Game.Tests/Resources/skin-empty.ini @@ -0,0 +1,2 @@ +[General] +Name: test skin \ No newline at end of file From 41515e9e6cd87857af9a7b1ccbb71195f3691d86 Mon Sep 17 00:00:00 2001 From: iiSaLMaN Date: Thu, 7 Nov 2019 15:51:03 +0300 Subject: [PATCH 0062/1829] Update current tests to match the expected behaviour --- osu.Game.Tests/Skins/LegacySkinDecoderTest.cs | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs b/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs index 76ce2331f5..202161a1b8 100644 --- a/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs +++ b/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs @@ -13,23 +13,38 @@ namespace osu.Game.Tests.Skins [TestFixture] public class LegacySkinDecoderTest { - [Test] - public void TestDecodeSkinColours() + [TestCase(true)] + [TestCase(false)] + [TestCase(false, false)] + public void TestDecodeSkinColours(bool hasColours, bool canFallback = true) { var decoder = new LegacySkinDecoder(); - using (var resStream = TestResources.OpenResource("skin.ini")) + using (var resStream = TestResources.OpenResource(hasColours ? "skin.ini" : "skin-empty.ini")) using (var stream = new LineBufferedReader(resStream)) { - var comboColors = decoder.Decode(stream).ComboColours; + var skinConfiguration = decoder.Decode(stream); + skinConfiguration.AllowDefaultComboColoursFallback = canFallback; - List expectedColors = new List + var comboColors = skinConfiguration.ComboColours; + + if (!canFallback && !hasColours) + { + Assert.IsNull(comboColors); + return; + } + + List expectedColors; + if (hasColours) + expectedColors = new List { new Color4(142, 199, 255, 255), new Color4(255, 128, 128, 255), new Color4(128, 255, 255, 255), new Color4(100, 100, 100, 100), }; + else + expectedColors = SkinConfiguration.DefaultComboColours; Assert.AreEqual(expectedColors.Count, comboColors.Count); for (int i = 0; i < expectedColors.Count; i++) From 808543885f34f26b995a6446d6b7a910fe1b0ea8 Mon Sep 17 00:00:00 2001 From: iiSaLMaN Date: Thu, 7 Nov 2019 15:54:30 +0300 Subject: [PATCH 0063/1829] Change ComboColours type to IReadOnlyList Also exposes functions to modify the internal list (AddComboColours, ClearComboColours) --- .../Skins/TestSceneSkinConfigurationLookup.cs | 17 +++++++---------- osu.Game/Beatmaps/Formats/IHasComboColours.cs | 15 ++++++++++++++- osu.Game/Beatmaps/Formats/LegacyDecoder.cs | 2 +- .../Objects/Drawables/DrawableHitObject.cs | 2 +- osu.Game/Skinning/DefaultLegacySkin.cs | 7 +++---- osu.Game/Skinning/DefaultSkin.cs | 2 +- osu.Game/Skinning/LegacySkin.cs | 2 +- osu.Game/Skinning/SkinConfiguration.cs | 10 ++++++++-- 8 files changed, 36 insertions(+), 21 deletions(-) diff --git a/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs b/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs index 2ea66d8e41..c945568753 100644 --- a/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs +++ b/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs @@ -95,7 +95,7 @@ namespace osu.Game.Tests.Skins [Test] public void TestGlobalLookup() { - AddAssert("Check combo colours", () => requester.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value?.Count > 0); + AddAssert("Check combo colours", () => requester.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value?.Count > 0); } [Test] @@ -121,19 +121,19 @@ namespace osu.Game.Tests.Skins [TestCase(true)] public void TestEmptyComboColours(bool allowFallback) { - AddStep("Add custom combo colours to fallback source", () => source1.Configuration.ComboColours = new List + AddStep("Add custom combo colours to source1", () => source1.Configuration.ComboColours = new List { new Color4(100, 150, 200, 255), new Color4(55, 110, 166, 255), new Color4(75, 125, 175, 255), }); - AddStep("Clear combo colours from source", () => source2.Configuration.ComboColours.Clear()); - AddStep("Disable default fallback in source", () => source2.AllowColoursFallback = allowFallback); + AddStep("Clear combo colours from source2", () => source2.Configuration.ClearComboColours()); + AddStep("Disallow default colours fallback in source2", () => source2.Configuration.AllowDefaultComboColoursFallback = allowFallback); - AddAssert($"Check retrieved combo colours from {(allowFallback ? "default skin" : "fallback source")}", () => + AddAssert($"Check retrieved combo colours from {(allowFallback ? "source1" : "fallback source")}", () => { - var expectedColours = allowFallback ? new DefaultSkinConfiguration().ComboColours : source1.Configuration.ComboColours; - return requester.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value?.SequenceEqual(expectedColours) ?? false; + var expectedColours = allowFallback ? SkinConfiguration.DefaultComboColours : source1.Configuration.ComboColours; + return requester.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value?.SequenceEqual(expectedColours) ?? false; }); } @@ -151,9 +151,6 @@ namespace osu.Game.Tests.Skins public class SkinSource : LegacySkin { - public bool AllowColoursFallback = true; - protected override bool AllowDefaultColoursFallback => AllowColoursFallback; - public SkinSource() : base(new SkinInfo(), null, null, string.Empty) { diff --git a/osu.Game/Beatmaps/Formats/IHasComboColours.cs b/osu.Game/Beatmaps/Formats/IHasComboColours.cs index 4c15cb96d1..5ef31c1904 100644 --- a/osu.Game/Beatmaps/Formats/IHasComboColours.cs +++ b/osu.Game/Beatmaps/Formats/IHasComboColours.cs @@ -8,6 +8,19 @@ namespace osu.Game.Beatmaps.Formats { public interface IHasComboColours { - List ComboColours { get; set; } + /// + /// Retrieves the list of combo colours for presentation only. + /// + IReadOnlyList ComboColours { get; set; } + + /// + /// Adds combo colours to the list. + /// + void AddComboColours(params Color4[] colours); + + /// + /// Clear current combo colours from the list. + /// + void ClearComboColours(); } } diff --git a/osu.Game/Beatmaps/Formats/LegacyDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyDecoder.cs index 4899a53cf1..ddaa04b657 100644 --- a/osu.Game/Beatmaps/Formats/LegacyDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyDecoder.cs @@ -103,7 +103,7 @@ namespace osu.Game.Beatmaps.Formats { if (!(output is IHasComboColours tHasComboColours)) return; - tHasComboColours.ComboColours.Add(colour); + tHasComboColours.AddComboColours(colour); } else { diff --git a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs index f8bc74b2a6..09ff7bfded 100644 --- a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs +++ b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs @@ -265,7 +265,7 @@ namespace osu.Game.Rulesets.Objects.Drawables { if (HitObject is IHasComboInformation combo) { - var comboColours = CurrentSkin.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value; + var comboColours = CurrentSkin.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value; AccentColour.Value = comboColours?.Count > 0 ? comboColours[combo.ComboIndex % comboColours.Count] : Color4.White; } } diff --git a/osu.Game/Skinning/DefaultLegacySkin.cs b/osu.Game/Skinning/DefaultLegacySkin.cs index 4b6eea6b6e..6eda0dfb34 100644 --- a/osu.Game/Skinning/DefaultLegacySkin.cs +++ b/osu.Game/Skinning/DefaultLegacySkin.cs @@ -13,13 +13,12 @@ namespace osu.Game.Skinning : base(Info, storage, audioManager, string.Empty) { Configuration.CustomColours["SliderBall"] = new Color4(2, 170, 255, 255); - Configuration.ComboColours.AddRange(new[] - { + Configuration.AddComboColours( new Color4(255, 192, 0, 255), new Color4(0, 202, 0, 255), new Color4(18, 124, 255, 255), - new Color4(242, 24, 57, 255), - }); + new Color4(242, 24, 57, 255) + ); } public static SkinInfo Info { get; } = new SkinInfo diff --git a/osu.Game/Skinning/DefaultSkin.cs b/osu.Game/Skinning/DefaultSkin.cs index 529c1afca5..2a065ea3d7 100644 --- a/osu.Game/Skinning/DefaultSkin.cs +++ b/osu.Game/Skinning/DefaultSkin.cs @@ -35,7 +35,7 @@ namespace osu.Game.Skinning switch (global) { case GlobalSkinConfiguration.ComboColours: - return SkinUtils.As(new Bindable>(Configuration.ComboColours)); + return SkinUtils.As(new Bindable>(Configuration.ComboColours)); } break; diff --git a/osu.Game/Skinning/LegacySkin.cs b/osu.Game/Skinning/LegacySkin.cs index ff1e501a06..94c2c8668f 100644 --- a/osu.Game/Skinning/LegacySkin.cs +++ b/osu.Game/Skinning/LegacySkin.cs @@ -72,7 +72,7 @@ namespace osu.Game.Skinning case GlobalSkinConfiguration.ComboColours: var comboColours = Configuration.ComboColours; if (comboColours != null) - return SkinUtils.As(new Bindable>(comboColours)); + return SkinUtils.As(new Bindable>(comboColours)); break; } diff --git a/osu.Game/Skinning/SkinConfiguration.cs b/osu.Game/Skinning/SkinConfiguration.cs index 57b969be33..1fd781a5b3 100644 --- a/osu.Game/Skinning/SkinConfiguration.cs +++ b/osu.Game/Skinning/SkinConfiguration.cs @@ -2,6 +2,8 @@ // See the LICENCE file in the repository root for full licence text. using System.Collections.Generic; +using System.Linq; +using osu.Framework.Extensions.IEnumerableExtensions; using osu.Game.Beatmaps.Formats; using osuTK.Graphics; @@ -26,7 +28,7 @@ namespace osu.Game.Skinning private List comboColours = new List(); - public List ComboColours + public IReadOnlyList ComboColours { get { @@ -38,9 +40,13 @@ namespace osu.Game.Skinning return null; } - set => comboColours = value; + set => comboColours = value.ToList(); } + public void AddComboColours(params Color4[] colours) => colours.ForEach(c => comboColours.Add(c)); + + public void ClearComboColours() => comboColours.Clear(); + public Dictionary CustomColours { get; set; } = new Dictionary(); public readonly Dictionary ConfigDictionary = new Dictionary(); From 9874ce49ce6f81165862961ee6244b2267629c9a Mon Sep 17 00:00:00 2001 From: iiSaLMaN Date: Thu, 7 Nov 2019 15:55:34 +0300 Subject: [PATCH 0064/1829] Move fallback allowance to the skin configuration only. --- osu.Game/Skinning/LegacyBeatmapSkin.cs | 5 ++--- osu.Game/Skinning/LegacySkin.cs | 7 ------- osu.Game/Skinning/SkinConfiguration.cs | 7 +++++-- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/osu.Game/Skinning/LegacyBeatmapSkin.cs b/osu.Game/Skinning/LegacyBeatmapSkin.cs index 4e020083a7..fa7e895a28 100644 --- a/osu.Game/Skinning/LegacyBeatmapSkin.cs +++ b/osu.Game/Skinning/LegacyBeatmapSkin.cs @@ -9,12 +9,11 @@ namespace osu.Game.Skinning { public class LegacyBeatmapSkin : LegacySkin { - // Disallow default colours fallback on beatmap skins to allow using parent skin combo colours. (via SkinProvidingContainer) - protected override bool AllowDefaultColoursFallback => false; - public LegacyBeatmapSkin(BeatmapInfo beatmap, IResourceStore storage, AudioManager audioManager) : base(createSkinInfo(beatmap), new LegacySkinResourceStore(beatmap.BeatmapSet, storage), audioManager, beatmap.Path) { + // Disallow default colours fallback on beatmap skins to allow using parent skin combo colours. (via SkinProvidingContainer) + Configuration.AllowDefaultComboColoursFallback = false; } private static SkinInfo createSkinInfo(BeatmapInfo beatmap) => diff --git a/osu.Game/Skinning/LegacySkin.cs b/osu.Game/Skinning/LegacySkin.cs index 94c2c8668f..359acc3a8f 100644 --- a/osu.Game/Skinning/LegacySkin.cs +++ b/osu.Game/Skinning/LegacySkin.cs @@ -26,11 +26,6 @@ namespace osu.Game.Skinning [CanBeNull] protected IResourceStore Samples; - /// - /// Whether to allow default combo colours as fallback if none provided in this skin. - /// - protected virtual bool AllowDefaultColoursFallback => true; - public LegacySkin(SkinInfo skin, IResourceStore storage, AudioManager audioManager) : this(skin, new LegacySkinResourceStore(skin, storage), audioManager, "skin.ini") { @@ -46,8 +41,6 @@ namespace osu.Game.Skinning else Configuration = new SkinConfiguration(); - Configuration.AllowDefaultColoursFallback = AllowDefaultColoursFallback; - if (storage != null) { Samples = audioManager?.GetSampleStore(storage); diff --git a/osu.Game/Skinning/SkinConfiguration.cs b/osu.Game/Skinning/SkinConfiguration.cs index 1fd781a5b3..da833acd98 100644 --- a/osu.Game/Skinning/SkinConfiguration.cs +++ b/osu.Game/Skinning/SkinConfiguration.cs @@ -16,7 +16,10 @@ namespace osu.Game.Skinning { public readonly SkinInfo SkinInfo = new SkinInfo(); - internal bool AllowDefaultColoursFallback; + /// + /// Whether to allow as a fallback list for when no combo colours are provided. + /// + internal bool AllowDefaultComboColoursFallback = true; public static List DefaultComboColours = new List { @@ -35,7 +38,7 @@ namespace osu.Game.Skinning if (comboColours.Count > 0) return comboColours; - if (AllowDefaultColoursFallback) + if (AllowDefaultComboColoursFallback) return DefaultComboColours; return null; From 164cb66f6aaa001204b2b2c9054d5e6c3fa47bf5 Mon Sep 17 00:00:00 2001 From: iiSaLMaN Date: Thu, 7 Nov 2019 16:13:10 +0300 Subject: [PATCH 0065/1829] Fix indention --- osu.Game.Tests/Skins/LegacySkinDecoderTest.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs b/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs index 202161a1b8..e2f556dcc3 100644 --- a/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs +++ b/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs @@ -35,7 +35,9 @@ namespace osu.Game.Tests.Skins } List expectedColors; + if (hasColours) + { expectedColors = new List { new Color4(142, 199, 255, 255), @@ -43,8 +45,11 @@ namespace osu.Game.Tests.Skins new Color4(128, 255, 255, 255), new Color4(100, 100, 100, 100), }; + } else + { expectedColors = SkinConfiguration.DefaultComboColours; + } Assert.AreEqual(expectedColors.Count, comboColors.Count); for (int i = 0; i < expectedColors.Count; i++) From 8ed7bc3f5366ec7b8a98b47439616280d6bc4f25 Mon Sep 17 00:00:00 2001 From: iiSaLMaN Date: Thu, 7 Nov 2019 18:42:17 +0300 Subject: [PATCH 0066/1829] Fix another indention --- osu.Game.Tests/Skins/LegacySkinDecoderTest.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs b/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs index e2f556dcc3..003b3f5e56 100644 --- a/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs +++ b/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs @@ -39,12 +39,12 @@ namespace osu.Game.Tests.Skins if (hasColours) { expectedColors = new List - { - new Color4(142, 199, 255, 255), - new Color4(255, 128, 128, 255), - new Color4(128, 255, 255, 255), - new Color4(100, 100, 100, 100), - }; + { + new Color4(142, 199, 255, 255), + new Color4(255, 128, 128, 255), + new Color4(128, 255, 255, 255), + new Color4(100, 100, 100, 100), + }; } else { From 517f547590462f6fe26b6cdbe1b55814f5847141 Mon Sep 17 00:00:00 2001 From: iiSaLMaN Date: Thu, 7 Nov 2019 19:12:18 +0300 Subject: [PATCH 0067/1829] Fix failing test --- osu.Game.Tests/Gameplay/TestSceneHitObjectAccentColour.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Tests/Gameplay/TestSceneHitObjectAccentColour.cs b/osu.Game.Tests/Gameplay/TestSceneHitObjectAccentColour.cs index 6d7159a825..c6d1f9da29 100644 --- a/osu.Game.Tests/Gameplay/TestSceneHitObjectAccentColour.cs +++ b/osu.Game.Tests/Gameplay/TestSceneHitObjectAccentColour.cs @@ -130,7 +130,7 @@ namespace osu.Game.Tests.Gameplay switch (global) { case GlobalSkinConfiguration.ComboColours: - return SkinUtils.As(new Bindable>(ComboColours)); + return SkinUtils.As(new Bindable>(ComboColours)); } break; From 15e85234e4d4b80df421bb1c9d8383b35c5aab10 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 15 Nov 2019 11:12:51 +0800 Subject: [PATCH 0068/1829] remove unecessary step --- .../Visual/UserInterface/TestSceneModCustomizationSettings.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModCustomizationSettings.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModCustomizationSettings.cs index ec5b3c1e16..83d77cccdb 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModCustomizationSettings.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModCustomizationSettings.cs @@ -34,7 +34,6 @@ namespace osu.Game.Tests.Visual.UserInterface AddStep("select mod", () => modSelect.SelectMod(testMod)); AddAssert("button enabled", () => modSelect.CustomizeButton.Enabled.Value); AddStep("open customization", () => modSelect.CustomizeButton.Click()); - AddAssert("controls exist", () => modSelect.GetControlSection(testMod) != null); AddStep("deselect mod", () => modSelect.SelectMod(testMod)); AddAssert("controls hidden", () => modSelect.ModSettingsContainer.Alpha == 0); } From 20edaf4ba6a04adf9836ef4c3f2b2b61991e6a21 Mon Sep 17 00:00:00 2001 From: Albie Spriddell Date: Sat, 23 Nov 2019 17:32:16 +0000 Subject: [PATCH 0069/1829] add cinema mod support --- osu.Game.Rulesets.Catch/CatchRuleset.cs | 6 ++++-- osu.Game.Rulesets.Mania/ManiaRuleset.cs | 6 ++++-- osu.Game.Rulesets.Osu/OsuRuleset.cs | 6 ++++-- osu.Game.Rulesets.Taiko/TaikoRuleset.cs | 6 ++++-- osu.Game/Rulesets/Mods/ModCinema.cs | 24 ++++++++++++++++++++++-- 5 files changed, 38 insertions(+), 10 deletions(-) diff --git a/osu.Game.Rulesets.Catch/CatchRuleset.cs b/osu.Game.Rulesets.Catch/CatchRuleset.cs index 71d68ace94..bf2b1c0def 100644 --- a/osu.Game.Rulesets.Catch/CatchRuleset.cs +++ b/osu.Game.Rulesets.Catch/CatchRuleset.cs @@ -51,7 +51,9 @@ namespace osu.Game.Rulesets.Catch else if (mods.HasFlag(LegacyMods.SuddenDeath)) yield return new CatchModSuddenDeath(); - if (mods.HasFlag(LegacyMods.Autoplay)) + if (mods.HasFlag(LegacyMods.Cinema)) + yield return new CatchModCinema(); + else if (mods.HasFlag(LegacyMods.Autoplay)) yield return new CatchModAutoplay(); if (mods.HasFlag(LegacyMods.Easy)) @@ -101,7 +103,7 @@ namespace osu.Game.Rulesets.Catch case ModType.Automation: return new Mod[] { - new MultiMod(new CatchModAutoplay(), new ModCinema()), + new MultiMod(new CatchModAutoplay(), new CatchModCinema()), new CatchModRelax(), }; diff --git a/osu.Game.Rulesets.Mania/ManiaRuleset.cs b/osu.Game.Rulesets.Mania/ManiaRuleset.cs index c74a292331..c632cc0b7b 100644 --- a/osu.Game.Rulesets.Mania/ManiaRuleset.cs +++ b/osu.Game.Rulesets.Mania/ManiaRuleset.cs @@ -51,7 +51,9 @@ namespace osu.Game.Rulesets.Mania else if (mods.HasFlag(LegacyMods.SuddenDeath)) yield return new ManiaModSuddenDeath(); - if (mods.HasFlag(LegacyMods.Autoplay)) + if (mods.HasFlag(LegacyMods.Cinema)) + yield return new ManiaModCinema(); + else if (mods.HasFlag(LegacyMods.Autoplay)) yield return new ManiaModAutoplay(); if (mods.HasFlag(LegacyMods.Easy)) @@ -148,7 +150,7 @@ namespace osu.Game.Rulesets.Mania case ModType.Automation: return new Mod[] { - new MultiMod(new ManiaModAutoplay(), new ModCinema()), + new MultiMod(new ManiaModAutoplay(), new ManiaModCinema()), }; case ModType.Fun: diff --git a/osu.Game.Rulesets.Osu/OsuRuleset.cs b/osu.Game.Rulesets.Osu/OsuRuleset.cs index fa69cec78d..2b5a0df3ed 100644 --- a/osu.Game.Rulesets.Osu/OsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/OsuRuleset.cs @@ -60,7 +60,9 @@ namespace osu.Game.Rulesets.Osu if (mods.HasFlag(LegacyMods.Autopilot)) yield return new OsuModAutopilot(); - if (mods.HasFlag(LegacyMods.Autoplay)) + if (mods.HasFlag(LegacyMods.Cinema)) + yield return new OsuModCinema(); + else if (mods.HasFlag(LegacyMods.Autoplay)) yield return new OsuModAutoplay(); if (mods.HasFlag(LegacyMods.Easy)) @@ -126,7 +128,7 @@ namespace osu.Game.Rulesets.Osu case ModType.Automation: return new Mod[] { - new MultiMod(new OsuModAutoplay(), new ModCinema()), + new MultiMod(new OsuModAutoplay(), new OsuModCinema()), new OsuModRelax(), new OsuModAutopilot(), }; diff --git a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs index b2655f592c..3f3a198f4a 100644 --- a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs +++ b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs @@ -50,7 +50,9 @@ namespace osu.Game.Rulesets.Taiko else if (mods.HasFlag(LegacyMods.SuddenDeath)) yield return new TaikoModSuddenDeath(); - if (mods.HasFlag(LegacyMods.Autoplay)) + if (mods.HasFlag(LegacyMods.Cinema)) + yield return new TaikoModCinema(); + else if (mods.HasFlag(LegacyMods.Autoplay)) yield return new TaikoModAutoplay(); if (mods.HasFlag(LegacyMods.Easy)) @@ -100,7 +102,7 @@ namespace osu.Game.Rulesets.Taiko case ModType.Automation: return new Mod[] { - new MultiMod(new TaikoModAutoplay(), new ModCinema()), + new MultiMod(new TaikoModAutoplay(), new TaikoModCinema()), new TaikoModRelax(), }; diff --git a/osu.Game/Rulesets/Mods/ModCinema.cs b/osu.Game/Rulesets/Mods/ModCinema.cs index 3c6a3a54aa..4396c3384b 100644 --- a/osu.Game/Rulesets/Mods/ModCinema.cs +++ b/osu.Game/Rulesets/Mods/ModCinema.cs @@ -3,15 +3,35 @@ using osu.Framework.Graphics.Sprites; using osu.Game.Graphics; +using osu.Game.Rulesets.Objects; +using osu.Game.Rulesets.UI; +using osu.Game.Screens.Play; namespace osu.Game.Rulesets.Mods { - public class ModCinema : ModAutoplay + public abstract class ModCinema : ModCinema, IApplicableToDrawableRuleset + where T : HitObject + { + public virtual void ApplyToDrawableRuleset(DrawableRuleset drawableRuleset) + { + drawableRuleset.SetReplayScore(CreateReplayScore(drawableRuleset.Beatmap)); + + drawableRuleset.Playfield.AlwaysPresent = true; + drawableRuleset.Playfield.Hide(); + } + } + + public class ModCinema : ModAutoplay, IApplicableToHUD { public override string Name => "Cinema"; public override string Acronym => "CN"; - public override bool HasImplementation => false; public override IconUsage Icon => OsuIcon.ModCinema; public override string Description => "Watch the video without visual distractions."; + + public void ApplyToHUD(HUDOverlay overlay) + { + overlay.AlwaysPresent = true; + overlay.Hide(); + } } } From 3b9f59cb335bb84964737fca27138668127cd371 Mon Sep 17 00:00:00 2001 From: Albie Spriddell Date: Sat, 23 Nov 2019 17:34:53 +0000 Subject: [PATCH 0070/1829] add cinema mod support --- .../Mods/CatchModCinema.cs | 21 ++++++++++++++++ .../Mods/ManiaModCinema.cs | 22 ++++++++++++++++ osu.Game.Rulesets.Osu/Mods/OsuModCinema.cs | 25 +++++++++++++++++++ .../Mods/TaikoModCinema.cs | 21 ++++++++++++++++ 4 files changed, 89 insertions(+) create mode 100644 osu.Game.Rulesets.Catch/Mods/CatchModCinema.cs create mode 100644 osu.Game.Rulesets.Mania/Mods/ManiaModCinema.cs create mode 100644 osu.Game.Rulesets.Osu/Mods/OsuModCinema.cs create mode 100644 osu.Game.Rulesets.Taiko/Mods/TaikoModCinema.cs diff --git a/osu.Game.Rulesets.Catch/Mods/CatchModCinema.cs b/osu.Game.Rulesets.Catch/Mods/CatchModCinema.cs new file mode 100644 index 0000000000..3bc1ee5bf5 --- /dev/null +++ b/osu.Game.Rulesets.Catch/Mods/CatchModCinema.cs @@ -0,0 +1,21 @@ +// 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.Beatmaps; +using osu.Game.Rulesets.Catch.Objects; +using osu.Game.Rulesets.Catch.Replays; +using osu.Game.Rulesets.Mods; +using osu.Game.Scoring; +using osu.Game.Users; + +namespace osu.Game.Rulesets.Catch.Mods +{ + public class CatchModCinema : ModCinema + { + public override Score CreateReplayScore(IBeatmap beatmap) => new Score + { + ScoreInfo = new ScoreInfo { User = new User { Username = "osu!salad!" } }, + Replay = new CatchAutoGenerator(beatmap).Generate(), + }; + } +} diff --git a/osu.Game.Rulesets.Mania/Mods/ManiaModCinema.cs b/osu.Game.Rulesets.Mania/Mods/ManiaModCinema.cs new file mode 100644 index 0000000000..02c1fc1b79 --- /dev/null +++ b/osu.Game.Rulesets.Mania/Mods/ManiaModCinema.cs @@ -0,0 +1,22 @@ +// 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.Beatmaps; +using osu.Game.Rulesets.Mania.Beatmaps; +using osu.Game.Rulesets.Mania.Objects; +using osu.Game.Rulesets.Mania.Replays; +using osu.Game.Rulesets.Mods; +using osu.Game.Scoring; +using osu.Game.Users; + +namespace osu.Game.Rulesets.Mania.Mods +{ + public class ManiaModCinema : ModCinema + { + public override Score CreateReplayScore(IBeatmap beatmap) => new Score + { + ScoreInfo = new ScoreInfo { User = new User { Username = "osu!topus!" } }, + Replay = new ManiaAutoGenerator((ManiaBeatmap)beatmap).Generate(), + }; + } +} diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModCinema.cs b/osu.Game.Rulesets.Osu/Mods/OsuModCinema.cs new file mode 100644 index 0000000000..5d9a524577 --- /dev/null +++ b/osu.Game.Rulesets.Osu/Mods/OsuModCinema.cs @@ -0,0 +1,25 @@ +// 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.Game.Beatmaps; +using osu.Game.Rulesets.Mods; +using osu.Game.Rulesets.Osu.Objects; +using osu.Game.Rulesets.Osu.Replays; +using osu.Game.Scoring; +using osu.Game.Users; + +namespace osu.Game.Rulesets.Osu.Mods +{ + public class OsuModCinema : ModCinema + { + public override Type[] IncompatibleMods => base.IncompatibleMods.Append(typeof(OsuModAutopilot)).Append(typeof(OsuModSpunOut)).ToArray(); + + public override Score CreateReplayScore(IBeatmap beatmap) => new Score + { + ScoreInfo = new ScoreInfo { User = new User { Username = "Autoplay" } }, + Replay = new OsuAutoGenerator(beatmap).Generate() + }; + } +} diff --git a/osu.Game.Rulesets.Taiko/Mods/TaikoModCinema.cs b/osu.Game.Rulesets.Taiko/Mods/TaikoModCinema.cs new file mode 100644 index 0000000000..71aa007d3b --- /dev/null +++ b/osu.Game.Rulesets.Taiko/Mods/TaikoModCinema.cs @@ -0,0 +1,21 @@ +// 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.Beatmaps; +using osu.Game.Rulesets.Mods; +using osu.Game.Rulesets.Taiko.Objects; +using osu.Game.Rulesets.Taiko.Replays; +using osu.Game.Scoring; +using osu.Game.Users; + +namespace osu.Game.Rulesets.Taiko.Mods +{ + public class TaikoModCinema : ModCinema + { + public override Score CreateReplayScore(IBeatmap beatmap) => new Score + { + ScoreInfo = new ScoreInfo { User = new User { Username = "mekkadosu!" } }, + Replay = new TaikoAutoGenerator(beatmap).Generate(), + }; + } +} From 1e24ee795613543c1d32756a374a6ec2168a7540 Mon Sep 17 00:00:00 2001 From: iiSaLMaN Date: Sun, 24 Nov 2019 02:07:56 +0300 Subject: [PATCH 0071/1829] Remove ClearComboColours() --- osu.Game/Beatmaps/Formats/IHasComboColours.cs | 5 ----- osu.Game/Skinning/SkinConfiguration.cs | 2 -- 2 files changed, 7 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/IHasComboColours.cs b/osu.Game/Beatmaps/Formats/IHasComboColours.cs index 5ef31c1904..ac0d32dbaa 100644 --- a/osu.Game/Beatmaps/Formats/IHasComboColours.cs +++ b/osu.Game/Beatmaps/Formats/IHasComboColours.cs @@ -17,10 +17,5 @@ namespace osu.Game.Beatmaps.Formats /// Adds combo colours to the list. /// void AddComboColours(params Color4[] colours); - - /// - /// Clear current combo colours from the list. - /// - void ClearComboColours(); } } diff --git a/osu.Game/Skinning/SkinConfiguration.cs b/osu.Game/Skinning/SkinConfiguration.cs index da833acd98..94a1160b38 100644 --- a/osu.Game/Skinning/SkinConfiguration.cs +++ b/osu.Game/Skinning/SkinConfiguration.cs @@ -48,8 +48,6 @@ namespace osu.Game.Skinning public void AddComboColours(params Color4[] colours) => colours.ForEach(c => comboColours.Add(c)); - public void ClearComboColours() => comboColours.Clear(); - public Dictionary CustomColours { get; set; } = new Dictionary(); public readonly Dictionary ConfigDictionary = new Dictionary(); From 0f9978b34a8e250ba6458dd9ecee6eb90529a403 Mon Sep 17 00:00:00 2001 From: iiSaLMaN Date: Sun, 24 Nov 2019 02:08:36 +0300 Subject: [PATCH 0072/1829] Use AddRange instead --- osu.Game/Skinning/SkinConfiguration.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Skinning/SkinConfiguration.cs b/osu.Game/Skinning/SkinConfiguration.cs index 94a1160b38..0a21594f2a 100644 --- a/osu.Game/Skinning/SkinConfiguration.cs +++ b/osu.Game/Skinning/SkinConfiguration.cs @@ -46,7 +46,7 @@ namespace osu.Game.Skinning set => comboColours = value.ToList(); } - public void AddComboColours(params Color4[] colours) => colours.ForEach(c => comboColours.Add(c)); + public void AddComboColours(params Color4[] colours) => comboColours.AddRange(colours); public Dictionary CustomColours { get; set; } = new Dictionary(); From 5bf6e57eb0f19b4fedc09d06ca1e5d52cef5b129 Mon Sep 17 00:00:00 2001 From: iiSaLMaN Date: Sun, 24 Nov 2019 02:16:43 +0300 Subject: [PATCH 0073/1829] Remove unnecessary usage --- osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs | 1 - osu.Game/Skinning/SkinConfiguration.cs | 1 - 2 files changed, 2 deletions(-) diff --git a/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs b/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs index c945568753..c300799476 100644 --- a/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs +++ b/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs @@ -127,7 +127,6 @@ namespace osu.Game.Tests.Skins new Color4(55, 110, 166, 255), new Color4(75, 125, 175, 255), }); - AddStep("Clear combo colours from source2", () => source2.Configuration.ClearComboColours()); AddStep("Disallow default colours fallback in source2", () => source2.Configuration.AllowDefaultComboColoursFallback = allowFallback); AddAssert($"Check retrieved combo colours from {(allowFallback ? "source1" : "fallback source")}", () => diff --git a/osu.Game/Skinning/SkinConfiguration.cs b/osu.Game/Skinning/SkinConfiguration.cs index 0a21594f2a..3bfc941fd7 100644 --- a/osu.Game/Skinning/SkinConfiguration.cs +++ b/osu.Game/Skinning/SkinConfiguration.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Linq; -using osu.Framework.Extensions.IEnumerableExtensions; using osu.Game.Beatmaps.Formats; using osuTK.Graphics; From b8e5796af51eb47f8f897906b7da72b3b1cbc9d5 Mon Sep 17 00:00:00 2001 From: Albie Date: Sun, 24 Nov 2019 07:37:06 +0000 Subject: [PATCH 0074/1829] add forced video/storyboard and disabled dim for mod inside new interface --- .../Graphics/Containers/UserDimContainer.cs | 6 +++++ osu.Game/Rulesets/Mods/IApplicableToScreen.cs | 26 +++++++++++++++++++ osu.Game/Rulesets/Mods/ModCinema.cs | 9 ++++++- osu.Game/Screens/Play/DimmableStoryboard.cs | 4 +-- osu.Game/Screens/Play/DimmableVideo.cs | 5 ++-- osu.Game/Screens/Play/Player.cs | 20 ++++++++++++-- 6 files changed, 63 insertions(+), 7 deletions(-) create mode 100644 osu.Game/Rulesets/Mods/IApplicableToScreen.cs diff --git a/osu.Game/Graphics/Containers/UserDimContainer.cs b/osu.Game/Graphics/Containers/UserDimContainer.cs index 7683bbcd63..42a25a79b1 100644 --- a/osu.Game/Graphics/Containers/UserDimContainer.cs +++ b/osu.Game/Graphics/Containers/UserDimContainer.cs @@ -21,6 +21,11 @@ namespace osu.Game.Graphics.Containers /// public readonly Bindable EnableUserDim = new Bindable(true); + /// + /// Whether or not user-configured settings relating to visibility of elements should be ignored + /// + public readonly Bindable IgnoreUserSettings = new Bindable(); + /// /// Whether or not the storyboard loaded should completely hide the background behind it. /// @@ -63,6 +68,7 @@ namespace osu.Game.Graphics.Containers ShowStoryboard.ValueChanged += _ => UpdateVisuals(); ShowVideo.ValueChanged += _ => UpdateVisuals(); StoryboardReplacesBackground.ValueChanged += _ => UpdateVisuals(); + IgnoreUserSettings.ValueChanged += _ => UpdateVisuals(); } protected override void LoadComplete() diff --git a/osu.Game/Rulesets/Mods/IApplicableToScreen.cs b/osu.Game/Rulesets/Mods/IApplicableToScreen.cs new file mode 100644 index 0000000000..f1a631ccba --- /dev/null +++ b/osu.Game/Rulesets/Mods/IApplicableToScreen.cs @@ -0,0 +1,26 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +namespace osu.Game.Rulesets.Mods +{ + /// + /// An interface for a mod which can temporarily override screen settings. + /// + public interface IApplicableToScreen : IApplicableMod + { + /// + /// Whether to enable image, video and storyboard dimming + /// + bool EnableDim { get; } + + /// + /// Weather to force the video (if present) + /// + bool ForceVideo { get; } + + /// + /// Weather to force the storyboard (if present) + /// + bool ForceStoryboard { get; } + } +} diff --git a/osu.Game/Rulesets/Mods/ModCinema.cs b/osu.Game/Rulesets/Mods/ModCinema.cs index 4396c3384b..8a777b364a 100644 --- a/osu.Game/Rulesets/Mods/ModCinema.cs +++ b/osu.Game/Rulesets/Mods/ModCinema.cs @@ -1,7 +1,10 @@ // 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.Sprites; +using osu.Game.Beatmaps; +using osu.Game.Configuration; using osu.Game.Graphics; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.UI; @@ -21,7 +24,7 @@ namespace osu.Game.Rulesets.Mods } } - public class ModCinema : ModAutoplay, IApplicableToHUD + public class ModCinema : ModAutoplay, IApplicableToHUD, IApplicableToScreen { public override string Name => "Cinema"; public override string Acronym => "CN"; @@ -33,5 +36,9 @@ namespace osu.Game.Rulesets.Mods overlay.AlwaysPresent = true; overlay.Hide(); } + + public bool EnableDim => false; + public bool ForceVideo => true; + public bool ForceStoryboard => true; } } diff --git a/osu.Game/Screens/Play/DimmableStoryboard.cs b/osu.Game/Screens/Play/DimmableStoryboard.cs index 2154526e54..4c7bb272cc 100644 --- a/osu.Game/Screens/Play/DimmableStoryboard.cs +++ b/osu.Game/Screens/Play/DimmableStoryboard.cs @@ -33,14 +33,14 @@ namespace osu.Game.Screens.Play base.LoadComplete(); } - protected override bool ShowDimContent => ShowStoryboard.Value && DimLevel < 1; + protected override bool ShowDimContent => IgnoreUserSettings.Value || ShowStoryboard.Value && DimLevel < 1; private void initializeStoryboard(bool async) { if (drawableStoryboard != null) return; - if (!ShowStoryboard.Value) + if (!ShowStoryboard.Value && !IgnoreUserSettings.Value) return; drawableStoryboard = storyboard.CreateDrawable(); diff --git a/osu.Game/Screens/Play/DimmableVideo.cs b/osu.Game/Screens/Play/DimmableVideo.cs index 4d6c10d69d..09ec5a3f5d 100644 --- a/osu.Game/Screens/Play/DimmableVideo.cs +++ b/osu.Game/Screens/Play/DimmableVideo.cs @@ -2,6 +2,7 @@ // 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; @@ -33,7 +34,7 @@ namespace osu.Game.Screens.Play base.LoadComplete(); } - protected override bool ShowDimContent => ShowVideo.Value && DimLevel < 1; + protected override bool ShowDimContent => IgnoreUserSettings.Value || ShowVideo.Value && DimLevel < 1; private void initializeVideo(bool async) { @@ -43,7 +44,7 @@ namespace osu.Game.Screens.Play if (drawableVideo != null) return; - if (!ShowVideo.Value) + if (!ShowVideo.Value && !IgnoreUserSettings.Value) return; drawableVideo = new DrawableVideo(video); diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index d6488dc209..3d6a9fe78f 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -498,8 +498,24 @@ namespace osu.Game.Screens.Play .Delay(250) .FadeIn(250); - Background.EnableUserDim.Value = true; - Background.BlurAmount.Value = 0; + var screenOverride = Mods.Value.OfType(); + + if (screenOverride.Count() == 1) + { + var setting = screenOverride.Single(); + + Background.EnableUserDim.Value = setting.EnableDim; + DimmableVideo.EnableUserDim.Value = setting.EnableDim; + DimmableStoryboard.EnableUserDim.Value = setting.EnableDim; + + DimmableVideo.IgnoreUserSettings.Value = setting.ForceVideo; + DimmableStoryboard.IgnoreUserSettings.Value = setting.ForceStoryboard; + } + else + { + Background.EnableUserDim.Value = true; + Background.BlurAmount.Value = 0; + } Background.StoryboardReplacesBackground.BindTo(storyboardReplacesBackground); DimmableStoryboard.StoryboardReplacesBackground.BindTo(storyboardReplacesBackground); From 1d6665fe57510c4dc950881b15728c5e64e7fa74 Mon Sep 17 00:00:00 2001 From: Albie Date: Sun, 24 Nov 2019 07:42:39 +0000 Subject: [PATCH 0075/1829] improve code quality using resharper and codefactor advice --- osu.Game/Rulesets/Mods/ModCinema.cs | 3 --- osu.Game/Screens/Play/DimmableStoryboard.cs | 2 +- osu.Game/Screens/Play/DimmableVideo.cs | 3 +-- osu.Game/Screens/Play/Player.cs | 2 +- 4 files changed, 3 insertions(+), 7 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModCinema.cs b/osu.Game/Rulesets/Mods/ModCinema.cs index 8a777b364a..5a876dbf51 100644 --- a/osu.Game/Rulesets/Mods/ModCinema.cs +++ b/osu.Game/Rulesets/Mods/ModCinema.cs @@ -1,10 +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.Linq; using osu.Framework.Graphics.Sprites; -using osu.Game.Beatmaps; -using osu.Game.Configuration; using osu.Game.Graphics; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.UI; diff --git a/osu.Game/Screens/Play/DimmableStoryboard.cs b/osu.Game/Screens/Play/DimmableStoryboard.cs index 4c7bb272cc..0fe315fbab 100644 --- a/osu.Game/Screens/Play/DimmableStoryboard.cs +++ b/osu.Game/Screens/Play/DimmableStoryboard.cs @@ -33,7 +33,7 @@ namespace osu.Game.Screens.Play base.LoadComplete(); } - protected override bool ShowDimContent => IgnoreUserSettings.Value || ShowStoryboard.Value && DimLevel < 1; + protected override bool ShowDimContent => IgnoreUserSettings.Value || (ShowStoryboard.Value && DimLevel < 1); private void initializeStoryboard(bool async) { diff --git a/osu.Game/Screens/Play/DimmableVideo.cs b/osu.Game/Screens/Play/DimmableVideo.cs index 09ec5a3f5d..1a01cace17 100644 --- a/osu.Game/Screens/Play/DimmableVideo.cs +++ b/osu.Game/Screens/Play/DimmableVideo.cs @@ -2,7 +2,6 @@ // 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; @@ -34,7 +33,7 @@ namespace osu.Game.Screens.Play base.LoadComplete(); } - protected override bool ShowDimContent => IgnoreUserSettings.Value || ShowVideo.Value && DimLevel < 1; + protected override bool ShowDimContent => IgnoreUserSettings.Value || (ShowVideo.Value && DimLevel < 1); private void initializeVideo(bool async) { diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index 3d6a9fe78f..dc4612a525 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -432,7 +432,7 @@ namespace osu.Game.Screens.Play // cannot pause if we are already in a fail state && !HasFailed // cannot pause if already paused (or in a cooldown state) unless we are in a resuming state. - && (IsResuming || (GameplayClockContainer.IsPaused.Value == false && !pauseCooldownActive)); + && (IsResuming || GameplayClockContainer.IsPaused.Value == false && !pauseCooldownActive); private bool pauseCooldownActive => lastPauseActionTime.HasValue && GameplayClockContainer.GameplayClock.CurrentTime < lastPauseActionTime + pause_cooldown; From 9a8e3fe1da79ea53328b2f293b7996eaa43bb138 Mon Sep 17 00:00:00 2001 From: Albie Date: Sun, 24 Nov 2019 07:44:35 +0000 Subject: [PATCH 0076/1829] add brackets --- osu.Game/Screens/Play/Player.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index dc4612a525..3d6a9fe78f 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -432,7 +432,7 @@ namespace osu.Game.Screens.Play // cannot pause if we are already in a fail state && !HasFailed // cannot pause if already paused (or in a cooldown state) unless we are in a resuming state. - && (IsResuming || GameplayClockContainer.IsPaused.Value == false && !pauseCooldownActive); + && (IsResuming || (GameplayClockContainer.IsPaused.Value == false && !pauseCooldownActive)); private bool pauseCooldownActive => lastPauseActionTime.HasValue && GameplayClockContainer.GameplayClock.CurrentTime < lastPauseActionTime + pause_cooldown; From 9fdbb2a58e8aea3e7232d9853170d96502c3e2bb Mon Sep 17 00:00:00 2001 From: Albie Date: Mon, 25 Nov 2019 07:24:29 +0000 Subject: [PATCH 0077/1829] change name of interface and expose method instead of seperate values --- osu.Game/Rulesets/Mods/IApplicableToPlayer.cs | 15 +++++++++++ osu.Game/Rulesets/Mods/IApplicableToScreen.cs | 26 ------------------ osu.Game/Rulesets/Mods/ModCinema.cs | 14 +++++++--- osu.Game/Screens/Play/Player.cs | 27 +++++-------------- .../Play/ScreenWithBeatmapBackground.cs | 2 +- 5 files changed, 33 insertions(+), 51 deletions(-) create mode 100644 osu.Game/Rulesets/Mods/IApplicableToPlayer.cs delete mode 100644 osu.Game/Rulesets/Mods/IApplicableToScreen.cs diff --git a/osu.Game/Rulesets/Mods/IApplicableToPlayer.cs b/osu.Game/Rulesets/Mods/IApplicableToPlayer.cs new file mode 100644 index 0000000000..bf78428470 --- /dev/null +++ b/osu.Game/Rulesets/Mods/IApplicableToPlayer.cs @@ -0,0 +1,15 @@ +// 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.Screens.Play; + +namespace osu.Game.Rulesets.Mods +{ + /// + /// An interface for a mod which can temporarily override the settings. + /// + public interface IApplicableToPlayer : IApplicableMod + { + void ApplyToPlayer(Player player); + } +} diff --git a/osu.Game/Rulesets/Mods/IApplicableToScreen.cs b/osu.Game/Rulesets/Mods/IApplicableToScreen.cs deleted file mode 100644 index f1a631ccba..0000000000 --- a/osu.Game/Rulesets/Mods/IApplicableToScreen.cs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. -// See the LICENCE file in the repository root for full licence text. - -namespace osu.Game.Rulesets.Mods -{ - /// - /// An interface for a mod which can temporarily override screen settings. - /// - public interface IApplicableToScreen : IApplicableMod - { - /// - /// Whether to enable image, video and storyboard dimming - /// - bool EnableDim { get; } - - /// - /// Weather to force the video (if present) - /// - bool ForceVideo { get; } - - /// - /// Weather to force the storyboard (if present) - /// - bool ForceStoryboard { get; } - } -} diff --git a/osu.Game/Rulesets/Mods/ModCinema.cs b/osu.Game/Rulesets/Mods/ModCinema.cs index 5a876dbf51..77bf80b149 100644 --- a/osu.Game/Rulesets/Mods/ModCinema.cs +++ b/osu.Game/Rulesets/Mods/ModCinema.cs @@ -21,7 +21,7 @@ namespace osu.Game.Rulesets.Mods } } - public class ModCinema : ModAutoplay, IApplicableToHUD, IApplicableToScreen + public class ModCinema : ModAutoplay, IApplicableToHUD, IApplicableToPlayer { public override string Name => "Cinema"; public override string Acronym => "CN"; @@ -34,8 +34,14 @@ namespace osu.Game.Rulesets.Mods overlay.Hide(); } - public bool EnableDim => false; - public bool ForceVideo => true; - public bool ForceStoryboard => true; + public void ApplyToPlayer(Player player) + { + player.Background.EnableUserDim.Value = false; + player.DimmableVideo.EnableUserDim.Value = false; + player.DimmableStoryboard.EnableUserDim.Value = false; + + player.DimmableVideo.IgnoreUserSettings.Value = true; + player.DimmableStoryboard.IgnoreUserSettings.Value = true; + } } } diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index 3d6a9fe78f..90171da747 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -80,8 +80,8 @@ namespace osu.Game.Screens.Play protected GameplayClockContainer GameplayClockContainer { get; private set; } - protected DimmableStoryboard DimmableStoryboard { get; private set; } - protected DimmableVideo DimmableVideo { get; private set; } + public DimmableStoryboard DimmableStoryboard { get; private set; } + public DimmableVideo DimmableVideo { get; private set; } [Cached] [Cached(Type = typeof(IBindable>))] @@ -498,24 +498,8 @@ namespace osu.Game.Screens.Play .Delay(250) .FadeIn(250); - var screenOverride = Mods.Value.OfType(); - - if (screenOverride.Count() == 1) - { - var setting = screenOverride.Single(); - - Background.EnableUserDim.Value = setting.EnableDim; - DimmableVideo.EnableUserDim.Value = setting.EnableDim; - DimmableStoryboard.EnableUserDim.Value = setting.EnableDim; - - DimmableVideo.IgnoreUserSettings.Value = setting.ForceVideo; - DimmableStoryboard.IgnoreUserSettings.Value = setting.ForceStoryboard; - } - else - { - Background.EnableUserDim.Value = true; - Background.BlurAmount.Value = 0; - } + Background.EnableUserDim.Value = true; + Background.BlurAmount.Value = 0; Background.StoryboardReplacesBackground.BindTo(storyboardReplacesBackground); DimmableStoryboard.StoryboardReplacesBackground.BindTo(storyboardReplacesBackground); @@ -525,6 +509,9 @@ namespace osu.Game.Screens.Play GameplayClockContainer.Restart(); GameplayClockContainer.FadeInFromZero(750, Easing.OutQuint); + foreach (var mod in Mods.Value.OfType()) + mod.ApplyToPlayer(this); + foreach (var mod in Mods.Value.OfType()) mod.ApplyToHUD(HUDOverlay); } diff --git a/osu.Game/Screens/Play/ScreenWithBeatmapBackground.cs b/osu.Game/Screens/Play/ScreenWithBeatmapBackground.cs index d7d2c97598..8eb253608b 100644 --- a/osu.Game/Screens/Play/ScreenWithBeatmapBackground.cs +++ b/osu.Game/Screens/Play/ScreenWithBeatmapBackground.cs @@ -9,6 +9,6 @@ namespace osu.Game.Screens.Play { protected override BackgroundScreen CreateBackground() => new BackgroundScreenBeatmap(Beatmap.Value); - protected new BackgroundScreenBeatmap Background => (BackgroundScreenBeatmap)base.Background; + public new BackgroundScreenBeatmap Background => (BackgroundScreenBeatmap)base.Background; } } From 944835da234c0c300af3a38a4ae45052237052be Mon Sep 17 00:00:00 2001 From: Ganendra Afrasya Date: Thu, 28 Nov 2019 12:01:40 +0700 Subject: [PATCH 0078/1829] Add multiplier score text on mods footer button --- osu.Game/Screens/Select/FooterButtonMods.cs | 44 +++++++++++++++++++-- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/osu.Game/Screens/Select/FooterButtonMods.cs b/osu.Game/Screens/Select/FooterButtonMods.cs index 29b1364944..8dc0a2a132 100644 --- a/osu.Game/Screens/Select/FooterButtonMods.cs +++ b/osu.Game/Screens/Select/FooterButtonMods.cs @@ -7,11 +7,14 @@ using osu.Framework.Graphics.Containers; using osu.Game.Screens.Play.HUD; using osu.Game.Rulesets.Mods; using System.Collections.Generic; +using System.Linq; using osu.Framework.Allocation; using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics.UserInterface; using osu.Game.Graphics; +using osu.Game.Graphics.Sprites; using osuTK; +using osuTK.Graphics; using osuTK.Input; namespace osu.Game.Screens.Select @@ -24,23 +27,40 @@ namespace osu.Game.Screens.Select set => modDisplay.Current = value; } + protected readonly OsuSpriteText MultiplierText; private readonly FooterModDisplay modDisplay; + private Color4 lowMultiplierColour; + private Color4 highMultiplierColour; public FooterButtonMods() { - Add(new Container + Add(new FillFlowContainer { Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, + Direction = FillDirection.Horizontal, Shear = -SHEAR, - Child = modDisplay = new FooterModDisplay + Children = new Drawable[] { - DisplayUnrankedText = false, - Scale = new Vector2(0.8f) + modDisplay = new FooterModDisplay + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + DisplayUnrankedText = false, + Scale = new Vector2(0.8f) + }, + MultiplierText = new OsuSpriteText + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Font = OsuFont.GetFont(weight: FontWeight.Bold), + } }, AutoSizeAxes = Axes.Both, Margin = new MarginPadding { Left = 70 } }); + + Current.ValueChanged += _ => updateMultiplierText(); } [BackgroundDependencyLoader] @@ -48,10 +68,26 @@ namespace osu.Game.Screens.Select { SelectedColour = colours.Yellow; DeselectedColour = SelectedColour.Opacity(0.5f); + lowMultiplierColour = colours.Red; + highMultiplierColour = colours.Green; Text = @"mods"; Hotkey = Key.F1; } + private void updateMultiplierText() + { + var multiplier = Current.Value.Aggregate(1.0, (current, mod) => current * mod.ScoreMultiplier); + + MultiplierText.Text = multiplier.Equals(1.0) ? string.Empty : $"{multiplier:N2}x"; + + if (multiplier > 1.0) + MultiplierText.FadeColour(highMultiplierColour, 200); + else if (multiplier < 1.0) + MultiplierText.FadeColour(lowMultiplierColour, 200); + else + MultiplierText.FadeColour(Color4.White, 200); + } + private class FooterModDisplay : ModDisplay { public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => Parent?.Parent?.ReceivePositionalInputAt(screenSpacePos) ?? false; From 6149482b5d81d67778ab66043926dec885802374 Mon Sep 17 00:00:00 2001 From: Ganendra Afrasya Date: Thu, 28 Nov 2019 12:03:11 +0700 Subject: [PATCH 0079/1829] Add test --- .../UserInterface/TestCaseFooterButtonMods.cs | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 osu.Game.Tests/Visual/UserInterface/TestCaseFooterButtonMods.cs diff --git a/osu.Game.Tests/Visual/UserInterface/TestCaseFooterButtonMods.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseFooterButtonMods.cs new file mode 100644 index 0000000000..0c437800bc --- /dev/null +++ b/osu.Game.Tests/Visual/UserInterface/TestCaseFooterButtonMods.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 System; +using System.Collections.Generic; +using NUnit.Framework; +using osu.Game.Graphics.Sprites; +using osu.Game.Rulesets.Mods; +using osu.Game.Rulesets.Osu.Mods; +using osu.Game.Screens.Select; + +namespace osu.Game.Tests.Visual.UserInterface +{ + public class TestCaseFooterButtonMods : OsuTestScene + { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(FooterButtonMods) + }; + + private readonly TestFooterButtonMods footerButtonMods; + + public TestCaseFooterButtonMods() + { + Add(footerButtonMods = new TestFooterButtonMods()); + } + + [Test] + public void TestIncrementMultiplier() + { + AddStep(@"Add Hidden", () => changeMods(new Mod[] { new OsuModHidden() })); + AddAssert(@"Check Hidden multiplier", () => footerButtonMods.MultiplierText.Text.Equals(@"1.06x")); + AddStep(@"Add HardRock", () => changeMods(new Mod[] { new OsuModHidden() })); + AddAssert(@"Check HardRock multiplier", () => footerButtonMods.MultiplierText.Text.Equals(@"1.06x")); + AddStep(@"Add DoubleTime", () => changeMods(new Mod[] { new OsuModDoubleTime() })); + AddAssert(@"Check DoubleTime multiplier", () => footerButtonMods.MultiplierText.Text.Equals(@"1.12x")); + AddStep(@"Add multiple Mods", () => changeMods(new Mod[] { new OsuModDoubleTime(), new OsuModHidden(), new OsuModHidden() })); + AddAssert(@"Check multiple mod multiplier", () => footerButtonMods.MultiplierText.Text.Equals(@"1.26x")); + } + + [Test] + public void TestDecrementMultiplier() + { + AddStep(@"Add Easy", () => changeMods(new Mod[] { new OsuModEasy() })); + AddAssert(@"Check Easy multiplier", () => footerButtonMods.MultiplierText.Text.Equals(@"0.50x")); + AddStep(@"Add NoFail", () => changeMods(new Mod[] { new OsuModNoFail() })); + AddAssert(@"Check NoFail multiplier", () => footerButtonMods.MultiplierText.Text.Equals(@"0.50x")); + AddStep(@"Add Multiple Mods", () => changeMods(new Mod[] { new OsuModEasy(), new OsuModNoFail() })); + AddAssert(@"Check multiple mod multiplier", () => footerButtonMods.MultiplierText.Text.Equals(@"0.25x")); + } + + [Test] + public void TestClearMultiplier() + { + AddStep(@"Add mods", () => changeMods(new Mod[] { new OsuModDoubleTime(), new OsuModFlashlight() })); + AddStep(@"Clear selected mod", () => changeMods(Array.Empty())); + AddAssert(@"Check empty multiplier", () => footerButtonMods.MultiplierText.Text.Equals(string.Empty)); + } + + private void changeMods(IReadOnlyList mods) + { + footerButtonMods.Current.Value = mods; + } + + private class TestFooterButtonMods : FooterButtonMods + { + public new OsuSpriteText MultiplierText => base.MultiplierText; + } + } +} From 54a8c00bb854c8bf70cd077302cd6fbba240504a Mon Sep 17 00:00:00 2001 From: Shane Woolcock Date: Thu, 28 Nov 2019 17:09:54 +1030 Subject: [PATCH 0080/1829] Add support for --sdl command line arg --- .../.idea/runConfigurations/osu_SDL.xml | 20 +++++++++++++++++++ osu.Desktop/Program.cs | 3 ++- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 .idea/.idea.osu.Desktop/.idea/runConfigurations/osu_SDL.xml diff --git a/.idea/.idea.osu.Desktop/.idea/runConfigurations/osu_SDL.xml b/.idea/.idea.osu.Desktop/.idea/runConfigurations/osu_SDL.xml new file mode 100644 index 0000000000..1fd10e0e1a --- /dev/null +++ b/.idea/.idea.osu.Desktop/.idea/runConfigurations/osu_SDL.xml @@ -0,0 +1,20 @@ + + + + \ No newline at end of file diff --git a/osu.Desktop/Program.cs b/osu.Desktop/Program.cs index 141b2cdbbc..bd91bcc933 100644 --- a/osu.Desktop/Program.cs +++ b/osu.Desktop/Program.cs @@ -22,8 +22,9 @@ namespace osu.Desktop { // Back up the cwd before DesktopGameHost changes it var cwd = Environment.CurrentDirectory; + bool useSdl = args.Contains("--sdl"); - using (DesktopGameHost host = Host.GetSuitableHost(@"osu", true)) + using (DesktopGameHost host = Host.GetSuitableHost(@"osu", true, useSdl: useSdl)) { host.ExceptionThrown += handleException; From ada8dabf7eac666ad118790110b6ee383bc93d60 Mon Sep 17 00:00:00 2001 From: Ganendra Afrasya Date: Thu, 28 Nov 2019 18:48:43 +0700 Subject: [PATCH 0081/1829] Add right margin on score multiplier text --- osu.Game/Screens/Select/FooterButtonMods.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game/Screens/Select/FooterButtonMods.cs b/osu.Game/Screens/Select/FooterButtonMods.cs index 8dc0a2a132..fbeda8f18e 100644 --- a/osu.Game/Screens/Select/FooterButtonMods.cs +++ b/osu.Game/Screens/Select/FooterButtonMods.cs @@ -54,6 +54,7 @@ namespace osu.Game.Screens.Select Anchor = Anchor.Centre, Origin = Anchor.Centre, Font = OsuFont.GetFont(weight: FontWeight.Bold), + Margin = new MarginPadding { Right = 10 } } }, AutoSizeAxes = Axes.Both, From af5c5a3000beb54796f9f356d4cd59b804a500a4 Mon Sep 17 00:00:00 2001 From: Ganendra Afrasya Date: Thu, 28 Nov 2019 20:06:15 +0700 Subject: [PATCH 0082/1829] Apply reviews Also rename the class name to match with the others --- ...onMods.cs => TestSceneFooterButtonMods.cs} | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) rename osu.Game.Tests/Visual/UserInterface/{TestCaseFooterButtonMods.cs => TestSceneFooterButtonMods.cs} (81%) diff --git a/osu.Game.Tests/Visual/UserInterface/TestCaseFooterButtonMods.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs similarity index 81% rename from osu.Game.Tests/Visual/UserInterface/TestCaseFooterButtonMods.cs rename to osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs index 0c437800bc..e8d3475a11 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestCaseFooterButtonMods.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs @@ -11,7 +11,7 @@ using osu.Game.Screens.Select; namespace osu.Game.Tests.Visual.UserInterface { - public class TestCaseFooterButtonMods : OsuTestScene + public class TestSceneFooterButtonMods : OsuTestScene { public override IReadOnlyList RequiredTypes => new[] { @@ -20,7 +20,7 @@ namespace osu.Game.Tests.Visual.UserInterface private readonly TestFooterButtonMods footerButtonMods; - public TestCaseFooterButtonMods() + public TestSceneFooterButtonMods() { Add(footerButtonMods = new TestFooterButtonMods()); } @@ -29,24 +29,24 @@ namespace osu.Game.Tests.Visual.UserInterface public void TestIncrementMultiplier() { AddStep(@"Add Hidden", () => changeMods(new Mod[] { new OsuModHidden() })); - AddAssert(@"Check Hidden multiplier", () => footerButtonMods.MultiplierText.Text.Equals(@"1.06x")); + AddAssert(@"Check Hidden multiplier", () => footerButtonMods.MultiplierText.Text == @"1.06x"); AddStep(@"Add HardRock", () => changeMods(new Mod[] { new OsuModHidden() })); - AddAssert(@"Check HardRock multiplier", () => footerButtonMods.MultiplierText.Text.Equals(@"1.06x")); + AddAssert(@"Check HardRock multiplier", () => footerButtonMods.MultiplierText.Text == @"1.06x"); AddStep(@"Add DoubleTime", () => changeMods(new Mod[] { new OsuModDoubleTime() })); - AddAssert(@"Check DoubleTime multiplier", () => footerButtonMods.MultiplierText.Text.Equals(@"1.12x")); + AddAssert(@"Check DoubleTime multiplier", () => footerButtonMods.MultiplierText.Text == @"1.12x"); AddStep(@"Add multiple Mods", () => changeMods(new Mod[] { new OsuModDoubleTime(), new OsuModHidden(), new OsuModHidden() })); - AddAssert(@"Check multiple mod multiplier", () => footerButtonMods.MultiplierText.Text.Equals(@"1.26x")); + AddAssert(@"Check multiple mod multiplier", () => footerButtonMods.MultiplierText.Text == @"1.26x"); } [Test] public void TestDecrementMultiplier() { AddStep(@"Add Easy", () => changeMods(new Mod[] { new OsuModEasy() })); - AddAssert(@"Check Easy multiplier", () => footerButtonMods.MultiplierText.Text.Equals(@"0.50x")); + AddAssert(@"Check Easy multiplier", () => footerButtonMods.MultiplierText.Text == @"0.50x"); AddStep(@"Add NoFail", () => changeMods(new Mod[] { new OsuModNoFail() })); - AddAssert(@"Check NoFail multiplier", () => footerButtonMods.MultiplierText.Text.Equals(@"0.50x")); + AddAssert(@"Check NoFail multiplier", () => footerButtonMods.MultiplierText.Text == @"0.50x"); AddStep(@"Add Multiple Mods", () => changeMods(new Mod[] { new OsuModEasy(), new OsuModNoFail() })); - AddAssert(@"Check multiple mod multiplier", () => footerButtonMods.MultiplierText.Text.Equals(@"0.25x")); + AddAssert(@"Check multiple mod multiplier", () => footerButtonMods.MultiplierText.Text == @"0.25x"); } [Test] @@ -54,7 +54,7 @@ namespace osu.Game.Tests.Visual.UserInterface { AddStep(@"Add mods", () => changeMods(new Mod[] { new OsuModDoubleTime(), new OsuModFlashlight() })); AddStep(@"Clear selected mod", () => changeMods(Array.Empty())); - AddAssert(@"Check empty multiplier", () => footerButtonMods.MultiplierText.Text.Equals(string.Empty)); + AddAssert(@"Check empty multiplier", () => string.IsNullOrEmpty(footerButtonMods.MultiplierText.Text)); } private void changeMods(IReadOnlyList mods) From c4515429158bb5ed4a7a14b10b65f218fd8cd481 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 30 Nov 2019 03:01:07 +0300 Subject: [PATCH 0083/1829] Rankings overlay basic implementation --- .../Visual/Online/TestSceneRankingsOverlay.cs | 59 ++++++ osu.Game/Overlays/RankingsOverlay.cs | 198 ++++++++++++++++++ osu.Game/Users/Drawables/UpdateableFlag.cs | 14 ++ 3 files changed, 271 insertions(+) create mode 100644 osu.Game.Tests/Visual/Online/TestSceneRankingsOverlay.cs create mode 100644 osu.Game/Overlays/RankingsOverlay.cs diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsOverlay.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsOverlay.cs new file mode 100644 index 0000000000..1f08fe7530 --- /dev/null +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsOverlay.cs @@ -0,0 +1,59 @@ +// 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.Game.Overlays.Rankings.Tables; +using osu.Framework.Allocation; +using osu.Game.Overlays; +using NUnit.Framework; +using osu.Game.Users; + +namespace osu.Game.Tests.Visual.Online +{ + public class TestSceneRankingsOverlay : OsuTestScene + { + protected override bool UseOnlineAPI => true; + + public override IReadOnlyList RequiredTypes => new[] + { + typeof(PerformanceTable), + typeof(ScoresTable), + typeof(CountriesTable), + typeof(TableRowBackground), + typeof(UserBasedTable), + typeof(RankingsTable<>), + typeof(RankingsOverlay) + }; + + [Cached] + private RankingsOverlay rankingsOverlay; + + public TestSceneRankingsOverlay() + { + Add(rankingsOverlay = new RankingsOverlay()); + } + + [Test] + public void TestShow() + { + AddStep("Show", rankingsOverlay.Show); + } + + [Test] + public void TestShowCountry() + { + AddStep("Show US", () => rankingsOverlay.ShowCountry(new Country + { + FlagName = "US", + FullName = "United States" + })); + } + + [Test] + public void TestHide() + { + AddStep("Hide", rankingsOverlay.Hide); + } + } +} diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs new file mode 100644 index 0000000000..b9b2fe7232 --- /dev/null +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -0,0 +1,198 @@ +// 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.Overlays.Rankings; +using osu.Game.Users; +using osu.Game.Rulesets; +using osu.Game.Graphics.UserInterface; +using osu.Game.Online.API; +using System.Threading; +using osu.Game.Online.API.Requests; +using osu.Game.Overlays.Rankings.Tables; + +namespace osu.Game.Overlays +{ + public class RankingsOverlay : FullscreenOverlay + { + private readonly Bindable country = new Bindable(); + private readonly Bindable scope = new Bindable(); + private readonly Bindable ruleset = new Bindable(); + + private readonly BasicScrollContainer scrollFlow; + private readonly Box background; + private readonly Container contentPlaceholder; + private readonly DimmedLoadingLayer loading; + + private APIRequest request; + private CancellationTokenSource cancellationToken; + + [Resolved] + private IAPIProvider api { get; set; } + + public RankingsOverlay() + { + Children = new Drawable[] + { + background = new Box + { + RelativeSizeAxes = Axes.Both, + }, + scrollFlow = new BasicScrollContainer + { + RelativeSizeAxes = Axes.Both, + ScrollbarVisible = false, + Child = new FillFlowContainer + { + AutoSizeAxes = Axes.Y, + RelativeSizeAxes = Axes.X, + Direction = FillDirection.Vertical, + Children = new Drawable[] + { + new RankingsHeader + { + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, + Country = { BindTarget = country }, + Scope = { BindTarget = scope }, + Ruleset = { BindTarget = ruleset } + }, + new Container + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Children = new Drawable[] + { + contentPlaceholder = new Container + { + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, + AutoSizeAxes = Axes.Y, + RelativeSizeAxes = Axes.X, + Margin = new MarginPadding { Vertical = 10 } + }, + loading = new DimmedLoadingLayer(), + } + } + } + } + } + }; + } + + [BackgroundDependencyLoader] + private void load(OsuColour colour) + { + Waves.FirstWaveColour = colour.Green; + Waves.SecondWaveColour = colour.GreenLight; + Waves.ThirdWaveColour = colour.GreenDark; + Waves.FourthWaveColour = colour.GreenDarker; + + background.Colour = OsuColour.Gray(0.1f); + } + + protected override void LoadComplete() + { + country.BindValueChanged(_ => redraw(), true); + scope.BindValueChanged(_ => redraw(), true); + ruleset.BindValueChanged(_ => redraw(), true); + base.LoadComplete(); + } + + public void ShowCountry(Country requested) + { + if (requested == null) + return; + + Show(); + + if (country.Value?.FlagName == requested.FlagName) + return; + + country.Value = requested; + } + + private void redraw() + { + scrollFlow.ScrollToStart(); + + loading.Show(); + + cancellationToken?.Cancel(); + request?.Cancel(); + + cancellationToken = new CancellationTokenSource(); + + switch (scope.Value) + { + default: + contentPlaceholder.Clear(); + loading.Hide(); + return; + + case RankingsScope.Performance: + createPerformanceTable(); + return; + + case RankingsScope.Country: + createCountryTable(); + return; + + case RankingsScope.Score: + createScoreTable(); + return; + } + } + + private void createCountryTable() + { + request = new GetCountryRankingsRequest(ruleset.Value); + ((GetCountryRankingsRequest)request).Success += rankings => Schedule(() => + { + var table = new CountriesTable(1, rankings.Countries); + loadTable(table); + }); + + api.Queue(request); + } + + private void createPerformanceTable() + { + request = new GetUserRankingsRequest(ruleset.Value, country: country.Value?.FlagName); + ((GetUserRankingsRequest)request).Success += rankings => Schedule(() => + { + var table = new PerformanceTable(1, rankings.Users); + loadTable(table); + }); + + api.Queue(request); + } + + private void createScoreTable() + { + request = new GetUserRankingsRequest(ruleset.Value, UserRankingsType.Score); + ((GetUserRankingsRequest)request).Success += rankings => Schedule(() => + { + var table = new ScoresTable(1, rankings.Users); + loadTable(table); + }); + + api.Queue(request); + } + + private void loadTable(Drawable table) + { + LoadComponentAsync(table, t => + { + contentPlaceholder.Clear(); + contentPlaceholder.Add(t); + loading.Hide(); + }, cancellationToken.Token); + } + } +} diff --git a/osu.Game/Users/Drawables/UpdateableFlag.cs b/osu.Game/Users/Drawables/UpdateableFlag.cs index abc16b2390..e7c23d3c23 100644 --- a/osu.Game/Users/Drawables/UpdateableFlag.cs +++ b/osu.Game/Users/Drawables/UpdateableFlag.cs @@ -1,8 +1,11 @@ // 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.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.Input.Events; +using osu.Game.Overlays; namespace osu.Game.Users.Drawables { @@ -34,5 +37,16 @@ namespace osu.Game.Users.Drawables RelativeSizeAxes = Axes.Both, }; } + + [Resolved(canBeNull: true)] + private RankingsOverlay rankingsOverlay { get; set; } + + protected override bool OnClick(ClickEvent e) + { + if (Country != null) + rankingsOverlay?.ShowCountry(Country); + + return true; + } } } From 0ac46755468b9bf840c816707674a626ae7e95c6 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 1 Dec 2019 03:52:41 +0300 Subject: [PATCH 0084/1829] Implement IEquatable --- osu.Game/Overlays/RankingsOverlay.cs | 3 --- osu.Game/Users/Country.cs | 5 ++++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index b9b2fe7232..d3586a538b 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -111,9 +111,6 @@ namespace osu.Game.Overlays Show(); - if (country.Value?.FlagName == requested.FlagName) - return; - country.Value = requested; } diff --git a/osu.Game/Users/Country.cs b/osu.Game/Users/Country.cs index 1dcce6e870..101d268a60 100644 --- a/osu.Game/Users/Country.cs +++ b/osu.Game/Users/Country.cs @@ -1,11 +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 Newtonsoft.Json; namespace osu.Game.Users { - public class Country + public class Country : IEquatable { /// /// The name of this country. @@ -18,5 +19,7 @@ namespace osu.Game.Users /// [JsonProperty(@"code")] public string FlagName; + + public bool Equals(Country other) => FlagName == other.FlagName; } } From f375db368f1ac0208d7dd4dd5497da93ec6ab448 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 1 Dec 2019 03:56:03 +0300 Subject: [PATCH 0085/1829] Remove useless null check --- osu.Game/Users/Drawables/UpdateableFlag.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/osu.Game/Users/Drawables/UpdateableFlag.cs b/osu.Game/Users/Drawables/UpdateableFlag.cs index e7c23d3c23..1d30720889 100644 --- a/osu.Game/Users/Drawables/UpdateableFlag.cs +++ b/osu.Game/Users/Drawables/UpdateableFlag.cs @@ -43,9 +43,7 @@ namespace osu.Game.Users.Drawables protected override bool OnClick(ClickEvent e) { - if (Country != null) - rankingsOverlay?.ShowCountry(Country); - + rankingsOverlay?.ShowCountry(Country); return true; } } From 62daea195c5ab9b90d170c878c5fbaba5161e360 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 1 Dec 2019 04:09:45 +0300 Subject: [PATCH 0086/1829] Fix possible null --- osu.Game/Users/Country.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Users/Country.cs b/osu.Game/Users/Country.cs index 101d268a60..a9fcd69286 100644 --- a/osu.Game/Users/Country.cs +++ b/osu.Game/Users/Country.cs @@ -20,6 +20,6 @@ namespace osu.Game.Users [JsonProperty(@"code")] public string FlagName; - public bool Equals(Country other) => FlagName == other.FlagName; + public bool Equals(Country other) => FlagName == other?.FlagName; } } From 36224dca133b41a3a4b9d6028a81542add8268ac Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 3 Dec 2019 16:10:25 +0900 Subject: [PATCH 0087/1829] Fix multiplayer aggregate score inheriting from ScoreInfo --- .../Multiplayer/TestSceneMatchResults.cs | 4 +- .../API/Requests/GetRoomScoresRequest.cs | 2 +- .../Requests/Responses/APIRoomScoreInfo.cs | 17 ------- .../Responses/APIUserScoreAggregate.cs | 45 +++++++++++++++++++ .../Match/Components/MatchLeaderboard.cs | 8 ++-- .../Match/Components/MatchLeaderboardScore.cs | 11 +++-- .../Ranking/Pages/RoomLeaderboardPage.cs | 8 ++-- 7 files changed, 63 insertions(+), 32 deletions(-) delete mode 100644 osu.Game/Online/API/Requests/Responses/APIRoomScoreInfo.cs create mode 100644 osu.Game/Online/API/Requests/Responses/APIUserScoreAggregate.cs diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchResults.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchResults.cs index 7915a981dd..58e9240026 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchResults.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchResults.cs @@ -83,7 +83,7 @@ namespace osu.Game.Tests.Visual.Multiplayer private class TestMatchLeaderboard : RoomLeaderboardPage.ResultsMatchLeaderboard { - protected override APIRequest FetchScores(Action> scoresCallback) + protected override APIRequest FetchScores(Action> scoresCallback) { var scores = Enumerable.Range(0, 50).Select(createRoomScore).ToArray(); @@ -93,7 +93,7 @@ namespace osu.Game.Tests.Visual.Multiplayer return null; } - private APIRoomScoreInfo createRoomScore(int id) => new APIRoomScoreInfo + private APIUserScoreAggregate createRoomScore(int id) => new APIUserScoreAggregate { User = new User { Id = id, Username = $"User {id}" }, Accuracy = 0.98, diff --git a/osu.Game/Online/API/Requests/GetRoomScoresRequest.cs b/osu.Game/Online/API/Requests/GetRoomScoresRequest.cs index 993e49dab2..eb53369d18 100644 --- a/osu.Game/Online/API/Requests/GetRoomScoresRequest.cs +++ b/osu.Game/Online/API/Requests/GetRoomScoresRequest.cs @@ -6,7 +6,7 @@ using osu.Game.Online.API.Requests.Responses; namespace osu.Game.Online.API.Requests { - public class GetRoomScoresRequest : APIRequest> + public class GetRoomScoresRequest : APIRequest> { private readonly int roomId; diff --git a/osu.Game/Online/API/Requests/Responses/APIRoomScoreInfo.cs b/osu.Game/Online/API/Requests/Responses/APIRoomScoreInfo.cs deleted file mode 100644 index 33467b59b2..0000000000 --- a/osu.Game/Online/API/Requests/Responses/APIRoomScoreInfo.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. -// See the LICENCE file in the repository root for full licence text. - -using Newtonsoft.Json; -using osu.Game.Scoring; - -namespace osu.Game.Online.API.Requests.Responses -{ - public class APIRoomScoreInfo : ScoreInfo - { - [JsonProperty("attempts")] - public int TotalAttempts { get; set; } - - [JsonProperty("completed")] - public int CompletedBeatmaps { get; set; } - } -} diff --git a/osu.Game/Online/API/Requests/Responses/APIUserScoreAggregate.cs b/osu.Game/Online/API/Requests/Responses/APIUserScoreAggregate.cs new file mode 100644 index 0000000000..0bba6a93bd --- /dev/null +++ b/osu.Game/Online/API/Requests/Responses/APIUserScoreAggregate.cs @@ -0,0 +1,45 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using Newtonsoft.Json; +using osu.Game.Scoring; +using osu.Game.Users; + +namespace osu.Game.Online.API.Requests.Responses +{ + public class APIUserScoreAggregate + { + [JsonProperty("attempts")] + public int TotalAttempts { get; set; } + + [JsonProperty("completed")] + public int CompletedBeatmaps { get; set; } + + [JsonProperty("accuracy")] + public double Accuracy { get; set; } + + [JsonProperty(@"pp")] + public double? PP { get; set; } + + [JsonProperty(@"room_id")] + public int RoomID { get; set; } + + [JsonProperty("total_score")] + public long TotalScore { get; set; } + + [JsonProperty(@"user_id")] + public long UserID { get; set; } + + [JsonProperty("user")] + public User User { get; set; } + + public ScoreInfo CreateScoreInfo() => + new ScoreInfo + { + Accuracy = Accuracy, + PP = PP, + TotalScore = TotalScore, + User = User, + }; + } +} diff --git a/osu.Game/Screens/Multi/Match/Components/MatchLeaderboard.cs b/osu.Game/Screens/Multi/Match/Components/MatchLeaderboard.cs index ae27e53813..571bbde716 100644 --- a/osu.Game/Screens/Multi/Match/Components/MatchLeaderboard.cs +++ b/osu.Game/Screens/Multi/Match/Components/MatchLeaderboard.cs @@ -13,9 +13,9 @@ using osu.Game.Online.Multiplayer; namespace osu.Game.Screens.Multi.Match.Components { - public class MatchLeaderboard : Leaderboard + public class MatchLeaderboard : Leaderboard { - public Action> ScoresLoaded; + public Action> ScoresLoaded; [Resolved(typeof(Room), nameof(Room.RoomID))] private Bindable roomId { get; set; } @@ -35,7 +35,7 @@ namespace osu.Game.Screens.Multi.Match.Components protected override bool IsOnlineScope => true; - protected override APIRequest FetchScores(Action> scoresCallback) + protected override APIRequest FetchScores(Action> scoresCallback) { if (roomId.Value == null) return null; @@ -51,7 +51,7 @@ namespace osu.Game.Screens.Multi.Match.Components return req; } - protected override LeaderboardScore CreateDrawableScore(APIRoomScoreInfo model, int index) => new MatchLeaderboardScore(model, index); + protected override LeaderboardScore CreateDrawableScore(APIUserScoreAggregate model, int index) => new MatchLeaderboardScore(model, index); } public enum MatchLeaderboardScope diff --git a/osu.Game/Screens/Multi/Match/Components/MatchLeaderboardScore.cs b/osu.Game/Screens/Multi/Match/Components/MatchLeaderboardScore.cs index 92074abe4b..aa92451c77 100644 --- a/osu.Game/Screens/Multi/Match/Components/MatchLeaderboardScore.cs +++ b/osu.Game/Screens/Multi/Match/Components/MatchLeaderboardScore.cs @@ -12,9 +12,12 @@ namespace osu.Game.Screens.Multi.Match.Components { public class MatchLeaderboardScore : LeaderboardScore { - public MatchLeaderboardScore(APIRoomScoreInfo score, int rank) - : base(score, rank) + private readonly APIUserScoreAggregate score; + + public MatchLeaderboardScore(APIUserScoreAggregate score, int rank) + : base(score.CreateScoreInfo(), rank) { + this.score = score; } [BackgroundDependencyLoader] @@ -26,8 +29,8 @@ namespace osu.Game.Screens.Multi.Match.Components protected override IEnumerable GetStatistics(ScoreInfo model) => new[] { new LeaderboardScoreStatistic(FontAwesome.Solid.Crosshairs, "Accuracy", string.Format(model.Accuracy % 1 == 0 ? @"{0:P0}" : @"{0:P2}", model.Accuracy)), - new LeaderboardScoreStatistic(FontAwesome.Solid.Sync, "Total Attempts", ((APIRoomScoreInfo)model).TotalAttempts.ToString()), - new LeaderboardScoreStatistic(FontAwesome.Solid.Check, "Completed Beatmaps", ((APIRoomScoreInfo)model).CompletedBeatmaps.ToString()), + new LeaderboardScoreStatistic(FontAwesome.Solid.Sync, "Total Attempts", score.TotalAttempts.ToString()), + new LeaderboardScoreStatistic(FontAwesome.Solid.Check, "Completed Beatmaps", score.CompletedBeatmaps.ToString()), }; } } diff --git a/osu.Game/Screens/Multi/Ranking/Pages/RoomLeaderboardPage.cs b/osu.Game/Screens/Multi/Ranking/Pages/RoomLeaderboardPage.cs index e389611caf..ff5471cf4a 100644 --- a/osu.Game/Screens/Multi/Ranking/Pages/RoomLeaderboardPage.cs +++ b/osu.Game/Screens/Multi/Ranking/Pages/RoomLeaderboardPage.cs @@ -74,7 +74,7 @@ namespace osu.Game.Screens.Multi.Ranking.Pages leaderboard.ScoresLoaded = scoresLoaded; } - private void scoresLoaded(IEnumerable scores) + private void scoresLoaded(IEnumerable scores) { void gray(SpriteText s) => s.Colour = colours.GrayC; @@ -87,7 +87,7 @@ namespace osu.Game.Screens.Multi.Ranking.Pages rankText.AddText(name + "\n", white); rankText.AddText("You are placed ", gray); - int index = scores.IndexOf(new APIRoomScoreInfo { User = Score.User }, new FuncEqualityComparer((s1, s2) => s1.User.Id.Equals(s2.User.Id))); + int index = scores.IndexOf(new APIUserScoreAggregate { User = Score.User }, new FuncEqualityComparer((s1, s2) => s1.User.Id.Equals(s2.User.Id))); rankText.AddText($"#{index + 1} ", s => { @@ -104,7 +104,7 @@ namespace osu.Game.Screens.Multi.Ranking.Pages { protected override bool FadeTop => true; - protected override LeaderboardScore CreateDrawableScore(APIRoomScoreInfo model, int index) + protected override LeaderboardScore CreateDrawableScore(APIUserScoreAggregate model, int index) => new ResultsMatchLeaderboardScore(model, index); protected override FillFlowContainer CreateScoreFlow() @@ -120,7 +120,7 @@ namespace osu.Game.Screens.Multi.Ranking.Pages private class ResultsMatchLeaderboardScore : MatchLeaderboardScore { - public ResultsMatchLeaderboardScore(APIRoomScoreInfo score, int rank) + public ResultsMatchLeaderboardScore(APIUserScoreAggregate score, int rank) : base(score, rank) { } From 48287459a0aa6136e711eb7bc07df187338a7876 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 5 Dec 2019 01:52:22 +0900 Subject: [PATCH 0088/1829] Optimise filters to avoid property retrieval Also reduces number of instantiations of SearchableTerms array in the case of multiple criteria terms. --- .../Select/Carousel/CarouselBeatmap.cs | 32 ++++++++++--------- osu.Game/Screens/Select/FilterCriteria.cs | 6 +++- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs b/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs index afd6211dec..68a6ad8845 100644 --- a/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs +++ b/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System; +using System.Collections.Generic; using System.Linq; using osu.Game.Beatmaps; using osu.Game.Screens.Select.Filter; @@ -29,28 +30,29 @@ namespace osu.Game.Screens.Select.Carousel Beatmap.RulesetID == criteria.Ruleset.ID || (Beatmap.RulesetID == 0 && criteria.Ruleset.ID > 0 && criteria.AllowConvertedBeatmaps); - match &= criteria.StarDifficulty.IsInRange(Beatmap.StarDifficulty); - match &= criteria.ApproachRate.IsInRange(Beatmap.BaseDifficulty.ApproachRate); - match &= criteria.DrainRate.IsInRange(Beatmap.BaseDifficulty.DrainRate); - match &= criteria.CircleSize.IsInRange(Beatmap.BaseDifficulty.CircleSize); - match &= criteria.Length.IsInRange(Beatmap.Length); - match &= criteria.BPM.IsInRange(Beatmap.BPM); + match &= !criteria.StarDifficulty.HasFilter || criteria.StarDifficulty.IsInRange(Beatmap.StarDifficulty); + match &= !criteria.ApproachRate.HasFilter || criteria.ApproachRate.IsInRange(Beatmap.BaseDifficulty.ApproachRate); + match &= !criteria.DrainRate.HasFilter || criteria.DrainRate.IsInRange(Beatmap.BaseDifficulty.DrainRate); + match &= !criteria.CircleSize.HasFilter || criteria.CircleSize.IsInRange(Beatmap.BaseDifficulty.CircleSize); + match &= !criteria.Length.HasFilter || criteria.Length.IsInRange(Beatmap.Length); + match &= !criteria.BPM.HasFilter || criteria.BPM.IsInRange(Beatmap.BPM); - match &= criteria.BeatDivisor.IsInRange(Beatmap.BeatDivisor); - match &= criteria.OnlineStatus.IsInRange(Beatmap.Status); + match &= !criteria.BeatDivisor.HasFilter || criteria.BeatDivisor.IsInRange(Beatmap.BeatDivisor); + match &= !criteria.OnlineStatus.HasFilter || criteria.OnlineStatus.IsInRange(Beatmap.Status); - match &= criteria.Creator.Matches(Beatmap.Metadata.AuthorString); - match &= criteria.Artist.Matches(Beatmap.Metadata.Artist) || + match &= !criteria.Creator.HasFilter || criteria.Creator.Matches(Beatmap.Metadata.AuthorString); + match &= !criteria.Artist.HasFilter || criteria.Artist.Matches(Beatmap.Metadata.Artist) || criteria.Artist.Matches(Beatmap.Metadata.ArtistUnicode); if (match) { + var terms = new List(); + + terms.AddRange(Beatmap.Metadata.SearchableTerms); + terms.Add(Beatmap.Version); + foreach (var criteriaTerm in criteria.SearchTerms) - { - match &= - Beatmap.Metadata.SearchableTerms.Any(term => term.IndexOf(criteriaTerm, StringComparison.InvariantCultureIgnoreCase) >= 0) || - Beatmap.Version.IndexOf(criteriaTerm, StringComparison.InvariantCultureIgnoreCase) >= 0; - } + match &= terms.Any(term => term.IndexOf(criteriaTerm, StringComparison.InvariantCultureIgnoreCase) >= 0); } Filtered.Value = !match; diff --git a/osu.Game/Screens/Select/FilterCriteria.cs b/osu.Game/Screens/Select/FilterCriteria.cs index 7971506fa3..abcb1f2171 100644 --- a/osu.Game/Screens/Select/FilterCriteria.cs +++ b/osu.Game/Screens/Select/FilterCriteria.cs @@ -46,6 +46,8 @@ namespace osu.Game.Screens.Select public struct OptionalRange : IEquatable> where T : struct, IComparable { + public bool HasFilter => Max != null || Min != null; + public bool IsInRange(T value) { if (Min != null) @@ -87,9 +89,11 @@ namespace osu.Game.Screens.Select public struct OptionalTextFilter : IEquatable { + public bool HasFilter => !string.IsNullOrEmpty(SearchTerm); + public bool Matches(string value) { - if (string.IsNullOrEmpty(SearchTerm)) + if (!HasFilter) return true; // search term is guaranteed to be non-empty, so if the string we're comparing is empty, it's not matching From 48732e49b94967317181137d08f2cbc642f54b9f Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 5 Dec 2019 04:20:13 +0300 Subject: [PATCH 0089/1829] Improve async logic --- osu.Game/Overlays/RankingsOverlay.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index d3586a538b..948d165b82 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -15,6 +15,7 @@ using osu.Game.Online.API; using System.Threading; using osu.Game.Online.API.Requests; using osu.Game.Overlays.Rankings.Tables; +using osu.Framework.Threading; namespace osu.Game.Overlays { @@ -30,6 +31,7 @@ namespace osu.Game.Overlays private readonly DimmedLoadingLayer loading; private APIRequest request; + private ScheduledDelegate showTableDelegate; private CancellationTokenSource cancellationToken; [Resolved] @@ -120,11 +122,10 @@ namespace osu.Game.Overlays loading.Show(); + showTableDelegate?.Cancel(); cancellationToken?.Cancel(); request?.Cancel(); - cancellationToken = new CancellationTokenSource(); - switch (scope.Value) { default: @@ -184,12 +185,12 @@ namespace osu.Game.Overlays private void loadTable(Drawable table) { - LoadComponentAsync(table, t => + showTableDelegate = Schedule(() => LoadComponentAsync(table, t => { contentPlaceholder.Clear(); contentPlaceholder.Add(t); loading.Hide(); - }, cancellationToken.Token); + }, (cancellationToken = new CancellationTokenSource()).Token)); } } } From f8f144b6c04671f0daf7155791e7314e5cdf26e3 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 5 Dec 2019 05:20:22 +0300 Subject: [PATCH 0090/1829] Remove pointless ScheduledDelegate --- osu.Game/Overlays/RankingsOverlay.cs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index 948d165b82..0ec03ebcc9 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -15,7 +15,6 @@ using osu.Game.Online.API; using System.Threading; using osu.Game.Online.API.Requests; using osu.Game.Overlays.Rankings.Tables; -using osu.Framework.Threading; namespace osu.Game.Overlays { @@ -31,7 +30,6 @@ namespace osu.Game.Overlays private readonly DimmedLoadingLayer loading; private APIRequest request; - private ScheduledDelegate showTableDelegate; private CancellationTokenSource cancellationToken; [Resolved] @@ -122,7 +120,6 @@ namespace osu.Game.Overlays loading.Show(); - showTableDelegate?.Cancel(); cancellationToken?.Cancel(); request?.Cancel(); @@ -185,12 +182,12 @@ namespace osu.Game.Overlays private void loadTable(Drawable table) { - showTableDelegate = Schedule(() => LoadComponentAsync(table, t => + LoadComponentAsync(table, t => { contentPlaceholder.Clear(); contentPlaceholder.Add(t); loading.Hide(); - }, (cancellationToken = new CancellationTokenSource()).Token)); + }, (cancellationToken = new CancellationTokenSource()).Token); } } } From 40d0700fa514da9d4df1abd78fbe3a74a053d985 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 5 Dec 2019 13:43:38 +0900 Subject: [PATCH 0091/1829] Add structure for path control points --- osu.Game/Rulesets/Objects/PathControlPoint.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 osu.Game/Rulesets/Objects/PathControlPoint.cs diff --git a/osu.Game/Rulesets/Objects/PathControlPoint.cs b/osu.Game/Rulesets/Objects/PathControlPoint.cs new file mode 100644 index 0000000000..40a8b0251b --- /dev/null +++ b/osu.Game/Rulesets/Objects/PathControlPoint.cs @@ -0,0 +1,16 @@ +using System; +using osu.Framework.Bindables; +using osu.Game.Rulesets.Objects.Types; +using osuTK; + +namespace osu.Game.Rulesets.Objects +{ + public class PathControlPoint : IEquatable + { + public readonly Bindable Position = new Bindable(); + + public readonly Bindable Type = new Bindable(); + + public bool Equals(PathControlPoint other) => Position.Value == other.Position.Value && Type.Value == other.Type.Value; + } +} From 5f9b9631ef38bae53c320a9aa1512250399b1f47 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 5 Dec 2019 14:07:39 +0900 Subject: [PATCH 0092/1829] Move scope/country restrictions into RankingsOverlay --- osu.Game/Overlays/Rankings/HeaderTitle.cs | 10 +--------- osu.Game/Overlays/RankingsOverlay.cs | 24 +++++++++++++++++++---- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/osu.Game/Overlays/Rankings/HeaderTitle.cs b/osu.Game/Overlays/Rankings/HeaderTitle.cs index a1a893fa6b..b08a2a3900 100644 --- a/osu.Game/Overlays/Rankings/HeaderTitle.cs +++ b/osu.Game/Overlays/Rankings/HeaderTitle.cs @@ -74,13 +74,7 @@ namespace osu.Game.Overlays.Rankings base.LoadComplete(); } - private void onScopeChanged(ValueChangedEvent scope) - { - scopeText.Text = scope.NewValue.ToString(); - - if (scope.NewValue != RankingsScope.Performance) - Country.Value = null; - } + private void onScopeChanged(ValueChangedEvent scope) => scopeText.Text = scope.NewValue.ToString(); private void onCountryChanged(ValueChangedEvent country) { @@ -90,8 +84,6 @@ namespace osu.Game.Overlays.Rankings return; } - Scope.Value = RankingsScope.Performance; - flag.Country = country.NewValue; flag.Show(); } diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index 0ec03ebcc9..b989e9473b 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -98,9 +98,25 @@ namespace osu.Game.Overlays protected override void LoadComplete() { - country.BindValueChanged(_ => redraw(), true); - scope.BindValueChanged(_ => redraw(), true); - ruleset.BindValueChanged(_ => redraw(), true); + country.BindValueChanged(_ => + { + // if a country is requested, force performance scope. + if (country.Value != null) + scope.Value = RankingsScope.Performance; + + Scheduler.AddOnce(loadNewContent); + }, true); + scope.BindValueChanged(_ => + { + // country filtering is only valid for performance scope. + if (scope.Value != RankingsScope.Performance) + country.Value = null; + + Scheduler.AddOnce(loadNewContent); + }, true); + + ruleset.BindValueChanged(_ => Scheduler.AddOnce(loadNewContent), true); + base.LoadComplete(); } @@ -114,7 +130,7 @@ namespace osu.Game.Overlays country.Value = requested; } - private void redraw() + private void loadNewContent() { scrollFlow.ScrollToStart(); From cd473f207a1dab9f058cc1e370508fdc63e3a0a7 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 5 Dec 2019 14:09:33 +0900 Subject: [PATCH 0093/1829] Use child set, not Clear/Add --- osu.Game/Overlays/RankingsOverlay.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index b989e9473b..154cf0e47b 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -200,8 +200,7 @@ namespace osu.Game.Overlays { LoadComponentAsync(table, t => { - contentPlaceholder.Clear(); - contentPlaceholder.Add(t); + contentPlaceholder.Child = t; loading.Hide(); }, (cancellationToken = new CancellationTokenSource()).Token); } From 6e9157d59c75cf680c11d216f68cd42b233b9dc2 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 5 Dec 2019 14:26:36 +0900 Subject: [PATCH 0094/1829] Standardise request/response handling --- .../API/Requests/GetUserRankingsRequest.cs | 7 +- osu.Game/Overlays/RankingsOverlay.cs | 97 ++++++++++--------- 2 files changed, 55 insertions(+), 49 deletions(-) diff --git a/osu.Game/Online/API/Requests/GetUserRankingsRequest.cs b/osu.Game/Online/API/Requests/GetUserRankingsRequest.cs index 9c3eba9fdc..6f657aee8d 100644 --- a/osu.Game/Online/API/Requests/GetUserRankingsRequest.cs +++ b/osu.Game/Online/API/Requests/GetUserRankingsRequest.cs @@ -8,13 +8,14 @@ namespace osu.Game.Online.API.Requests { public class GetUserRankingsRequest : GetRankingsRequest { + public readonly UserRankingsType Type; + private readonly string country; - private readonly UserRankingsType type; public GetUserRankingsRequest(RulesetInfo ruleset, UserRankingsType type = UserRankingsType.Performance, int page = 1, string country = null) : base(ruleset, page) { - this.type = type; + this.Type = type; this.country = country; } @@ -28,7 +29,7 @@ namespace osu.Game.Online.API.Requests return req; } - protected override string TargetPostfix() => type.ToString().ToLowerInvariant(); + protected override string TargetPostfix() => Type.ToString().ToLowerInvariant(); } public enum UserRankingsType diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index 154cf0e47b..aa42b029e0 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -26,10 +26,10 @@ namespace osu.Game.Overlays private readonly BasicScrollContainer scrollFlow; private readonly Box background; - private readonly Container contentPlaceholder; + private readonly Container tableContainer; private readonly DimmedLoadingLayer loading; - private APIRequest request; + private APIRequest lastRequest; private CancellationTokenSource cancellationToken; [Resolved] @@ -68,7 +68,7 @@ namespace osu.Game.Overlays AutoSizeAxes = Axes.Y, Children = new Drawable[] { - contentPlaceholder = new Container + tableContainer = new Container { Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, @@ -132,76 +132,81 @@ namespace osu.Game.Overlays private void loadNewContent() { - scrollFlow.ScrollToStart(); - loading.Show(); cancellationToken?.Cancel(); - request?.Cancel(); + lastRequest?.Cancel(); + var request = createScopedRequest(); + lastRequest = request; + + if (request == null) + { + loadTable(null); + return; + } + + request.Success += () => loadTable(createTableFromResponse(request)); + request.Failure += _ => loadTable(null); + + api.Queue(request); + } + + private APIRequest createScopedRequest() + { switch (scope.Value) { - default: - contentPlaceholder.Clear(); - loading.Hide(); - return; - case RankingsScope.Performance: - createPerformanceTable(); - return; + return new GetUserRankingsRequest(ruleset.Value, country: country.Value?.FlagName); case RankingsScope.Country: - createCountryTable(); - return; + return new GetCountryRankingsRequest(ruleset.Value); case RankingsScope.Score: - createScoreTable(); - return; + return new GetUserRankingsRequest(ruleset.Value, UserRankingsType.Score); } + + return null; } - private void createCountryTable() + private Drawable createTableFromResponse(APIRequest request) { - request = new GetCountryRankingsRequest(ruleset.Value); - ((GetCountryRankingsRequest)request).Success += rankings => Schedule(() => + switch (request) { - var table = new CountriesTable(1, rankings.Countries); - loadTable(table); - }); + case GetUserRankingsRequest userRequest: + switch (userRequest.Type) + { + case UserRankingsType.Performance: + return new PerformanceTable(1, userRequest.Result.Users); - api.Queue(request); - } + case UserRankingsType.Score: + return new ScoresTable(1, userRequest.Result.Users); + } - private void createPerformanceTable() - { - request = new GetUserRankingsRequest(ruleset.Value, country: country.Value?.FlagName); - ((GetUserRankingsRequest)request).Success += rankings => Schedule(() => - { - var table = new PerformanceTable(1, rankings.Users); - loadTable(table); - }); + return null; - api.Queue(request); - } + case GetCountryRankingsRequest countryRequest: + return new CountriesTable(1, countryRequest.Result.Countries); + } - private void createScoreTable() - { - request = new GetUserRankingsRequest(ruleset.Value, UserRankingsType.Score); - ((GetUserRankingsRequest)request).Success += rankings => Schedule(() => - { - var table = new ScoresTable(1, rankings.Users); - loadTable(table); - }); - - api.Queue(request); + return null; } private void loadTable(Drawable table) { + scrollFlow.ScrollToStart(); + + if (table == null) + { + tableContainer.Clear(); + loading.Hide(); + return; + } + LoadComponentAsync(table, t => { - contentPlaceholder.Child = t; loading.Hide(); + tableContainer.Child = table; }, (cancellationToken = new CancellationTokenSource()).Token); } } From 3e0f499e72a3149920ea13f16fd859a3e35fea6d Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 5 Dec 2019 14:38:21 +0900 Subject: [PATCH 0095/1829] Add xmldocs --- osu.Game/Rulesets/Objects/PathControlPoint.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/osu.Game/Rulesets/Objects/PathControlPoint.cs b/osu.Game/Rulesets/Objects/PathControlPoint.cs index 40a8b0251b..fe66fb79cb 100644 --- a/osu.Game/Rulesets/Objects/PathControlPoint.cs +++ b/osu.Game/Rulesets/Objects/PathControlPoint.cs @@ -7,8 +7,15 @@ namespace osu.Game.Rulesets.Objects { public class PathControlPoint : IEquatable { + /// + /// The position of this . + /// public readonly Bindable Position = new Bindable(); + /// + /// The type of path segment starting at this . + /// If null, this will be a part of the previous path segment. + /// public readonly Bindable Type = new Bindable(); public bool Equals(PathControlPoint other) => Position.Value == other.Position.Value && Type.Value == other.Type.Value; From 0149e476739c1e86ddd3b4c32d7ec4292fe37355 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 5 Dec 2019 14:38:32 +0900 Subject: [PATCH 0096/1829] Expose general control point change event --- osu.Game/Rulesets/Objects/PathControlPoint.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/osu.Game/Rulesets/Objects/PathControlPoint.cs b/osu.Game/Rulesets/Objects/PathControlPoint.cs index fe66fb79cb..d68ef4112b 100644 --- a/osu.Game/Rulesets/Objects/PathControlPoint.cs +++ b/osu.Game/Rulesets/Objects/PathControlPoint.cs @@ -18,6 +18,17 @@ namespace osu.Game.Rulesets.Objects /// public readonly Bindable Type = new Bindable(); + /// + /// Invoked when any property of this is changed. + /// + internal event Action Changed; + + public PathControlPoint() + { + Position.ValueChanged += _ => Changed?.Invoke(); + Type.ValueChanged += _ => Changed?.Invoke(); + } + public bool Equals(PathControlPoint other) => Position.Value == other.Position.Value && Type.Value == other.Type.Value; } } From de413418c7404f7c34fcb75ef16a6fac942ae5ee Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 5 Dec 2019 14:50:12 +0900 Subject: [PATCH 0097/1829] Remove redundant prefix --- osu.Game/Online/API/Requests/GetUserRankingsRequest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Online/API/Requests/GetUserRankingsRequest.cs b/osu.Game/Online/API/Requests/GetUserRankingsRequest.cs index 6f657aee8d..143d21e40d 100644 --- a/osu.Game/Online/API/Requests/GetUserRankingsRequest.cs +++ b/osu.Game/Online/API/Requests/GetUserRankingsRequest.cs @@ -15,7 +15,7 @@ namespace osu.Game.Online.API.Requests public GetUserRankingsRequest(RulesetInfo ruleset, UserRankingsType type = UserRankingsType.Performance, int page = 1, string country = null) : base(ruleset, page) { - this.Type = type; + Type = type; this.country = country; } From 33737d3d89b7381b29f695c5bfc6312464c74ff2 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 5 Dec 2019 09:53:25 +0300 Subject: [PATCH 0098/1829] Move tests to TestSceneRankingsOverlay due to refactoring --- .../Visual/Online/TestSceneRankingsHeader.cs | 2 - .../Online/TestSceneRankingsHeaderTitle.cs | 5 --- .../Visual/Online/TestSceneRankingsOverlay.cs | 39 ++++++++++++++++--- osu.Game/Overlays/RankingsOverlay.cs | 26 ++++++------- 4 files changed, 46 insertions(+), 26 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs index c0da605cdb..e708934bc3 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs @@ -68,9 +68,7 @@ namespace osu.Game.Tests.Visual.Online }; AddStep("Set country", () => countryBindable.Value = country); - AddAssert("Check scope is Performance", () => scope.Value == RankingsScope.Performance); AddStep("Set scope to Score", () => scope.Value = RankingsScope.Score); - AddAssert("Check country is Null", () => countryBindable.Value == null); AddStep("Set country with no flag", () => countryBindable.Value = unknownCountry); } } diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsHeaderTitle.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsHeaderTitle.cs index 849ca2defc..0edf104da0 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsHeaderTitle.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsHeaderTitle.cs @@ -43,11 +43,6 @@ namespace osu.Game.Tests.Visual.Online FullName = "United States" }; - AddStep("Set country", () => countryBindable.Value = countryA); - AddAssert("Check scope is Performance", () => scope.Value == RankingsScope.Performance); - AddStep("Set scope to Score", () => scope.Value = RankingsScope.Score); - AddAssert("Check country is Null", () => countryBindable.Value == null); - AddStep("Set country 1", () => countryBindable.Value = countryA); AddStep("Set country 2", () => countryBindable.Value = countryB); AddStep("Set null country", () => countryBindable.Value = null); diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsOverlay.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsOverlay.cs index 1f08fe7530..09f008b308 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsOverlay.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsOverlay.cs @@ -8,6 +8,8 @@ using osu.Framework.Allocation; using osu.Game.Overlays; using NUnit.Framework; using osu.Game.Users; +using osu.Framework.Bindables; +using osu.Game.Overlays.Rankings; namespace osu.Game.Tests.Visual.Online { @@ -29,9 +31,16 @@ namespace osu.Game.Tests.Visual.Online [Cached] private RankingsOverlay rankingsOverlay; + private readonly Bindable countryBindable = new Bindable(); + private readonly Bindable scope = new Bindable(); + public TestSceneRankingsOverlay() { - Add(rankingsOverlay = new RankingsOverlay()); + Add(rankingsOverlay = new TestRankingsOverlay + { + Country = { BindTarget = countryBindable }, + Scope = { BindTarget = scope }, + }); } [Test] @@ -40,14 +49,19 @@ namespace osu.Game.Tests.Visual.Online AddStep("Show", rankingsOverlay.Show); } + [Test] + public void TestFlagScopeDependency() + { + AddStep("Set scope to Score", () => scope.Value = RankingsScope.Score); + AddAssert("Check country is Null", () => countryBindable.Value == null); + AddStep("Set country", () => countryBindable.Value = us_country); + AddAssert("Check scope is Performance", () => scope.Value == RankingsScope.Performance); + } + [Test] public void TestShowCountry() { - AddStep("Show US", () => rankingsOverlay.ShowCountry(new Country - { - FlagName = "US", - FullName = "United States" - })); + AddStep("Show US", () => rankingsOverlay.ShowCountry(us_country)); } [Test] @@ -55,5 +69,18 @@ namespace osu.Game.Tests.Visual.Online { AddStep("Hide", rankingsOverlay.Hide); } + + private static Country us_country = new Country + { + FlagName = "US", + FullName = "United States" + }; + + private class TestRankingsOverlay : RankingsOverlay + { + public new Bindable Country => base.Country; + + public new Bindable Scope => base.Scope; + } } } diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index aa42b029e0..e7c8b94a10 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -20,8 +20,8 @@ namespace osu.Game.Overlays { public class RankingsOverlay : FullscreenOverlay { - private readonly Bindable country = new Bindable(); - private readonly Bindable scope = new Bindable(); + protected readonly Bindable Country = new Bindable(); + protected readonly Bindable Scope = new Bindable(); private readonly Bindable ruleset = new Bindable(); private readonly BasicScrollContainer scrollFlow; @@ -58,8 +58,8 @@ namespace osu.Game.Overlays { Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, - Country = { BindTarget = country }, - Scope = { BindTarget = scope }, + Country = { BindTarget = Country }, + Scope = { BindTarget = Scope }, Ruleset = { BindTarget = ruleset } }, new Container @@ -98,19 +98,19 @@ namespace osu.Game.Overlays protected override void LoadComplete() { - country.BindValueChanged(_ => + Country.BindValueChanged(_ => { // if a country is requested, force performance scope. - if (country.Value != null) - scope.Value = RankingsScope.Performance; + if (Country.Value != null) + Scope.Value = RankingsScope.Performance; Scheduler.AddOnce(loadNewContent); }, true); - scope.BindValueChanged(_ => + Scope.BindValueChanged(_ => { // country filtering is only valid for performance scope. - if (scope.Value != RankingsScope.Performance) - country.Value = null; + if (Scope.Value != RankingsScope.Performance) + Country.Value = null; Scheduler.AddOnce(loadNewContent); }, true); @@ -127,7 +127,7 @@ namespace osu.Game.Overlays Show(); - country.Value = requested; + Country.Value = requested; } private void loadNewContent() @@ -154,10 +154,10 @@ namespace osu.Game.Overlays private APIRequest createScopedRequest() { - switch (scope.Value) + switch (Scope.Value) { case RankingsScope.Performance: - return new GetUserRankingsRequest(ruleset.Value, country: country.Value?.FlagName); + return new GetUserRankingsRequest(ruleset.Value, country: Country.Value?.FlagName); case RankingsScope.Country: return new GetCountryRankingsRequest(ruleset.Value); From bf7c309d4c87c7e74f0bcca629c81976067d00dd Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 5 Dec 2019 10:05:04 +0300 Subject: [PATCH 0099/1829] Make field readonly --- osu.Game.Tests/Visual/Online/TestSceneRankingsOverlay.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsOverlay.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsOverlay.cs index 09f008b308..568e36df4c 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsOverlay.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsOverlay.cs @@ -70,7 +70,7 @@ namespace osu.Game.Tests.Visual.Online AddStep("Hide", rankingsOverlay.Hide); } - private static Country us_country = new Country + private static readonly Country us_country = new Country { FlagName = "US", FullName = "United States" From 5e9b739b6718c44b643679fdb72b94f0ee378d91 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 5 Dec 2019 16:45:02 +0900 Subject: [PATCH 0100/1829] Re-implement slider paths to support multiple segments --- .../Visual/Gameplay/TestSceneSliderPath2.cs | 159 ++++++++++ osu.Game/Rulesets/Objects/SliderPath2.cs | 274 ++++++++++++++++++ 2 files changed, 433 insertions(+) create mode 100644 osu.Game.Tests/Visual/Gameplay/TestSceneSliderPath2.cs create mode 100644 osu.Game/Rulesets/Objects/SliderPath2.cs diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneSliderPath2.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneSliderPath2.cs new file mode 100644 index 0000000000..08d54fcdda --- /dev/null +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneSliderPath2.cs @@ -0,0 +1,159 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Lines; +using osu.Framework.MathUtils; +using osu.Game.Rulesets.Objects; +using osu.Game.Rulesets.Objects.Types; +using osuTK; + +namespace osu.Game.Tests.Visual.Gameplay +{ + public class TestSceneSliderPath2 : OsuTestScene + { + private readonly SmoothPath drawablePath; + private SliderPath2 path; + + public TestSceneSliderPath2() + { + Child = drawablePath = new SmoothPath + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre + }; + } + + [SetUp] + public void Setup() => Schedule(() => + { + path = new SliderPath2(); + }); + + protected override void Update() + { + base.Update(); + + if (path != null) + { + List vertices = new List(); + path.GetPathToProgress(vertices, 0, 1); + + drawablePath.Vertices = vertices; + } + } + + [Test] + public void TestEmptyPath() + { + } + + [TestCase(PathType.Linear)] + [TestCase(PathType.Bezier)] + [TestCase(PathType.Catmull)] + [TestCase(PathType.PerfectCurve)] + public void TestSingleSegment(PathType type) + => AddStep("create path", () => path.ControlPoints.AddRange(createSegment(type, Vector2.Zero, new Vector2(0, 100), new Vector2(100)))); + + [TestCase(PathType.Linear)] + [TestCase(PathType.Bezier)] + [TestCase(PathType.Catmull)] + [TestCase(PathType.PerfectCurve)] + public void TestMultipleSegment(PathType type) + { + AddStep("create path", () => + { + path.ControlPoints.AddRange(createSegment(PathType.Linear, Vector2.Zero)); + path.ControlPoints.AddRange(createSegment(type, new Vector2(0, 100), new Vector2(100), Vector2.Zero)); + }); + } + + [Test] + public void TestAddControlPoint() + { + AddStep("create path", () => path.ControlPoints.AddRange(createSegment(PathType.Linear, Vector2.Zero, new Vector2(0, 100)))); + AddStep("add point", () => path.ControlPoints.Add(new PathControlPoint { Position = { Value = new Vector2(100) } })); + } + + [Test] + public void TestInsertControlPoint() + { + AddStep("create path", () => path.ControlPoints.AddRange(createSegment(PathType.Linear, Vector2.Zero, new Vector2(100)))); + AddStep("insert point", () => path.ControlPoints.Insert(1, new PathControlPoint { Position = { Value = new Vector2(0, 100) } })); + } + + [Test] + public void TestRemoveControlPoint() + { + AddStep("create path", () => path.ControlPoints.AddRange(createSegment(PathType.Linear, Vector2.Zero, new Vector2(0, 100), new Vector2(100)))); + AddStep("remove second point", () => path.ControlPoints.RemoveAt(1)); + } + + [Test] + public void TestChangePathType() + { + AddStep("create path", () => path.ControlPoints.AddRange(createSegment(PathType.Linear, Vector2.Zero, new Vector2(0, 100), new Vector2(100)))); + AddStep("change type to bezier", () => path.ControlPoints[0].Type.Value = PathType.Bezier); + } + + [Test] + public void TestAddSegmentByChangingType() + { + AddStep("create path", () => path.ControlPoints.AddRange(createSegment(PathType.Linear, Vector2.Zero, new Vector2(0, 100), new Vector2(100), new Vector2(100, 0)))); + AddStep("change second point type to bezier", () => path.ControlPoints[1].Type.Value = PathType.Bezier); + } + + [Test] + public void TestRemoveSegmentByChangingType() + { + AddStep("create path", () => + { + path.ControlPoints.AddRange(createSegment(PathType.Linear, Vector2.Zero, new Vector2(0, 100), new Vector2(100), new Vector2(100, 0))); + path.ControlPoints[1].Type.Value = PathType.Bezier; + }); + + AddStep("change second point type to null", () => path.ControlPoints[1].Type.Value = null); + } + + [Test] + public void TestRemoveSegmentByRemovingControlPoint() + { + AddStep("create path", () => + { + path.ControlPoints.AddRange(createSegment(PathType.Linear, Vector2.Zero, new Vector2(0, 100), new Vector2(100), new Vector2(100, 0))); + path.ControlPoints[1].Type.Value = PathType.Bezier; + }); + + AddStep("remove second point", () => path.ControlPoints.RemoveAt(1)); + } + + [TestCase(2)] + [TestCase(4)] + public void TestPerfectCurveFallbackScenarios(int points) + { + AddStep("create path", () => + { + switch (points) + { + case 2: + path.ControlPoints.AddRange(createSegment(PathType.PerfectCurve, Vector2.Zero, new Vector2(0, 100))); + break; + case 4: + path.ControlPoints.AddRange(createSegment(PathType.PerfectCurve, Vector2.Zero, new Vector2(0, 100), new Vector2(100), new Vector2(100, 0))); + break; + } + }); + + } + + private List createSegment(PathType type, params Vector2[] controlPoints) + { + var points = controlPoints.Select(p => new PathControlPoint { Position = { Value = p } }).ToList(); + points[0].Type.Value = type; + return points; + } + } +} diff --git a/osu.Game/Rulesets/Objects/SliderPath2.cs b/osu.Game/Rulesets/Objects/SliderPath2.cs new file mode 100644 index 0000000000..560313a4d5 --- /dev/null +++ b/osu.Game/Rulesets/Objects/SliderPath2.cs @@ -0,0 +1,274 @@ +// 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 System.Diagnostics; +using System.Linq; +using Newtonsoft.Json; +using osu.Framework.Bindables; +using osu.Framework.Caching; +using osu.Framework.MathUtils; +using osu.Game.Rulesets.Objects.Types; +using osuTK; + +namespace osu.Game.Rulesets.Objects +{ + public class SliderPath2 + { + /// + /// The user-set distance of the path. If non-null, will match this value, + /// and the path will be shortened/lengthened to match this length. + /// + public readonly double? ExpectedDistance; + + /// + /// The control points of the path. + /// + public readonly BindableList ControlPoints = new BindableList(); + + private readonly Cached pathCache = new Cached(); + + private readonly List calculatedPath = new List(); + private readonly List cumulativeLength = new List(); + + /// + /// Creates a new . + /// + /// A user-set distance of the path that may be shorter or longer than the true distance between all control points. + /// The path will be shortened/lengthened to match this length. If null, the path will use the true distance between all control points. + [JsonConstructor] + public SliderPath2(double? expectedDistance = null) + { + ExpectedDistance = expectedDistance; + + ControlPoints.ItemsAdded += items => + { + foreach (var c in items) + c.Changed += onControlPointChanged; + + onControlPointChanged(); + }; + + ControlPoints.ItemsRemoved += items => + { + foreach (var c in items) + c.Changed -= onControlPointChanged; + + onControlPointChanged(); + }; + + void onControlPointChanged() => pathCache.Invalidate(); + } + + /// + /// The distance of the path after lengthening/shortening to account for . + /// + [JsonIgnore] + public double Distance + { + get + { + ensureValid(); + return cumulativeLength.Count == 0 ? 0 : cumulativeLength[cumulativeLength.Count - 1]; + } + } + + /// + /// Computes the slider path until a given progress that ranges from 0 (beginning of the slider) + /// to 1 (end of the slider) and stores the generated path in the given list. + /// + /// The list to be filled with the computed path. + /// Start progress. Ranges from 0 (beginning of the slider) to 1 (end of the slider). + /// End progress. Ranges from 0 (beginning of the slider) to 1 (end of the slider). + public void GetPathToProgress(List path, double p0, double p1) + { + ensureValid(); + + double d0 = progressToDistance(p0); + double d1 = progressToDistance(p1); + + path.Clear(); + + int i = 0; + + for (; i < calculatedPath.Count && cumulativeLength[i] < d0; ++i) + { + } + + path.Add(interpolateVertices(i, d0)); + + for (; i < calculatedPath.Count && cumulativeLength[i] <= d1; ++i) + path.Add(calculatedPath[i]); + + path.Add(interpolateVertices(i, d1)); + } + + /// + /// Computes the position on the slider at a given progress that ranges from 0 (beginning of the path) + /// to 1 (end of the path). + /// + /// Ranges from 0 (beginning of the path) to 1 (end of the path). + /// + public Vector2 PositionAt(double progress) + { + ensureValid(); + + double d = progressToDistance(progress); + return interpolateVertices(indexOfDistance(d), d); + } + + private void ensureValid() + { + if (pathCache.IsValid) + return; + + calculatePath(); + calculateCumulativeLength(); + + pathCache.Validate(); + } + + private void calculatePath() + { + calculatedPath.Clear(); + + if (ControlPoints.Count == 0) + return; + + if (ControlPoints[0].Type.Value == null) + throw new InvalidOperationException($"The first control point in a {nameof(SliderPath2)} must have a non-null type."); + + Vector2[] vertices = new Vector2[ControlPoints.Count]; + for (int i = 0; i < ControlPoints.Count; i++) + vertices[i] = ControlPoints[i].Position.Value; + + int start = 0; + + for (int i = 0; i < ControlPoints.Count; i++) + { + if (ControlPoints[i].Type.Value == null && i < ControlPoints.Count - 1) + continue; + + Debug.Assert(ControlPoints[start].Type.Value.HasValue); + + // The current vertex ends the segment + var segmentVertices = vertices.AsSpan().Slice(start, i - start + 1); + var segmentType = ControlPoints[start].Type.Value.Value; + + foreach (Vector2 t in computeSubPath(segmentVertices, segmentType)) + { + if (calculatedPath.Count == 0 || calculatedPath.Last() != t) + calculatedPath.Add(t); + } + + // Start the new segment at the current vertex + start = i; + } + + static List computeSubPath(ReadOnlySpan subControlPoints, PathType type) + { + switch (type) + { + case PathType.Linear: + return PathApproximator.ApproximateLinear(subControlPoints); + + case PathType.PerfectCurve: + if (subControlPoints.Length != 3) + break; + + List subpath = PathApproximator.ApproximateCircularArc(subControlPoints); + + // If for some reason a circular arc could not be fit to the 3 given points, fall back to a numerically stable bezier approximation. + if (subpath.Count == 0) + break; + + return subpath; + + case PathType.Catmull: + return PathApproximator.ApproximateCatmull(subControlPoints); + } + + return PathApproximator.ApproximateBezier(subControlPoints); + } + } + + private void calculateCumulativeLength() + { + double l = 0; + + cumulativeLength.Clear(); + cumulativeLength.Add(l); + + for (int i = 0; i < calculatedPath.Count - 1; ++i) + { + Vector2 diff = calculatedPath[i + 1] - calculatedPath[i]; + double d = diff.Length; + + // Shorted slider paths that are too long compared to the expected distance + if (ExpectedDistance.HasValue && ExpectedDistance - l < d) + { + calculatedPath[i + 1] = calculatedPath[i] + diff * (float)((ExpectedDistance - l) / d); + calculatedPath.RemoveRange(i + 2, calculatedPath.Count - 2 - i); + + l = ExpectedDistance.Value; + cumulativeLength.Add(l); + break; + } + + l += d; + cumulativeLength.Add(l); + } + + // Lengthen slider paths that are too short compared to the expected distance + if (ExpectedDistance.HasValue && l < ExpectedDistance && calculatedPath.Count > 1) + { + Vector2 diff = calculatedPath[calculatedPath.Count - 1] - calculatedPath[calculatedPath.Count - 2]; + double d = diff.Length; + + if (d <= 0) + return; + + calculatedPath[calculatedPath.Count - 1] += diff * (float)((ExpectedDistance - l) / d); + cumulativeLength[calculatedPath.Count - 1] = ExpectedDistance.Value; + } + } + + private int indexOfDistance(double d) + { + int i = cumulativeLength.BinarySearch(d); + if (i < 0) i = ~i; + + return i; + } + + private double progressToDistance(double progress) + { + return Math.Clamp(progress, 0, 1) * Distance; + } + + private Vector2 interpolateVertices(int i, double d) + { + if (calculatedPath.Count == 0) + return Vector2.Zero; + + if (i <= 0) + return calculatedPath.First(); + if (i >= calculatedPath.Count) + return calculatedPath.Last(); + + Vector2 p0 = calculatedPath[i - 1]; + Vector2 p1 = calculatedPath[i]; + + double d0 = cumulativeLength[i - 1]; + double d1 = cumulativeLength[i]; + + // Avoid division by and almost-zero number in case two points are extremely close to each other. + if (Precision.AlmostEquals(d0, d1)) + return p0; + + double w = (d - d0) / (d1 - d0); + return p0 + (p1 - p0) * (float)w; + } + } +} From 0e9787146115d728eff1b04f3e79d6b6724955ed Mon Sep 17 00:00:00 2001 From: Ganendra Afrasya Date: Thu, 5 Dec 2019 14:53:01 +0700 Subject: [PATCH 0101/1829] Change colour if difficulty is ExpertPlus --- osu.Game/Beatmaps/Drawables/DifficultyIcon.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs index 8014631eca..025b7e11fd 100644 --- a/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs +++ b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs @@ -168,7 +168,7 @@ namespace osu.Game.Beatmaps.Drawables difficultyName.Text = beatmap.Version; starRating.Text = $"{beatmap.StarDifficulty:0.##}"; - difficultyFlow.Colour = colours.ForDifficultyRating(beatmap.DifficultyRating); + difficultyFlow.Colour = beatmap.DifficultyRating == DifficultyRating.ExpertPlus ? colours.Gray9 : colours.ForDifficultyRating(beatmap.DifficultyRating); return true; } From 2702edfa555fc98b68c9e11c45ce30b30ba02737 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 5 Dec 2019 17:49:32 +0900 Subject: [PATCH 0102/1829] Rename new path, replace existing one --- ...eSliderPath2.cs => TestSceneSliderPath.cs} | 8 +- osu.Game/Rulesets/Objects/SliderPath.cs | 177 +++++------ osu.Game/Rulesets/Objects/SliderPath2.cs | 274 ------------------ 3 files changed, 93 insertions(+), 366 deletions(-) rename osu.Game.Tests/Visual/Gameplay/{TestSceneSliderPath2.cs => TestSceneSliderPath.cs} (97%) delete mode 100644 osu.Game/Rulesets/Objects/SliderPath2.cs diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneSliderPath2.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneSliderPath.cs similarity index 97% rename from osu.Game.Tests/Visual/Gameplay/TestSceneSliderPath2.cs rename to osu.Game.Tests/Visual/Gameplay/TestSceneSliderPath.cs index 08d54fcdda..fe2cc188a5 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneSliderPath2.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneSliderPath.cs @@ -13,12 +13,12 @@ using osuTK; namespace osu.Game.Tests.Visual.Gameplay { - public class TestSceneSliderPath2 : OsuTestScene + public class TestSceneSliderPath : OsuTestScene { private readonly SmoothPath drawablePath; - private SliderPath2 path; + private SliderPath path; - public TestSceneSliderPath2() + public TestSceneSliderPath() { Child = drawablePath = new SmoothPath { @@ -30,7 +30,7 @@ namespace osu.Game.Tests.Visual.Gameplay [SetUp] public void Setup() => Schedule(() => { - path = new SliderPath2(); + path = new SliderPath(); }); protected override void Update() diff --git a/osu.Game/Rulesets/Objects/SliderPath.cs b/osu.Game/Rulesets/Objects/SliderPath.cs index ae6aad5b9c..cc2b537afc 100644 --- a/osu.Game/Rulesets/Objects/SliderPath.cs +++ b/osu.Game/Rulesets/Objects/SliderPath.cs @@ -1,17 +1,20 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// 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 System.Diagnostics; using System.Linq; using Newtonsoft.Json; +using osu.Framework.Bindables; +using osu.Framework.Caching; using osu.Framework.MathUtils; using osu.Game.Rulesets.Objects.Types; using osuTK; namespace osu.Game.Rulesets.Objects { - public struct SliderPath : IEquatable + public class SliderPath { /// /// The user-set distance of the path. If non-null, will match this value, @@ -20,49 +23,47 @@ namespace osu.Game.Rulesets.Objects public readonly double? ExpectedDistance; /// - /// The type of path. + /// The control points of the path. /// - public readonly PathType Type; + public readonly BindableList ControlPoints = new BindableList(); - [JsonProperty] - private Vector2[] controlPoints; + public readonly List Test = new List(); - private List calculatedPath; - private List cumulativeLength; + private readonly Cached pathCache = new Cached(); - private bool isInitialised; + private readonly List calculatedPath = new List(); + private readonly List cumulativeLength = new List(); /// /// Creates a new . /// - /// The type of path. - /// The control points of the path. - /// A user-set distance of the path that may be shorter or longer than the true distance between all - /// . The path will be shortened/lengthened to match this length. - /// If null, the path will use the true distance between all . + /// An optional set of s to initialise the path with. + /// A user-set distance of the path that may be shorter or longer than the true distance between all control points. + /// The path will be shortened/lengthened to match this length. If null, the path will use the true distance between all control points. [JsonConstructor] - public SliderPath(PathType type, Vector2[] controlPoints, double? expectedDistance = null) + public SliderPath(PathControlPoint[] controlPoints = null, double? expectedDistance = null) { - this = default; - this.controlPoints = controlPoints; - - Type = type; ExpectedDistance = expectedDistance; - ensureInitialised(); - } - - /// - /// The control points of the path. - /// - [JsonIgnore] - public ReadOnlySpan ControlPoints - { - get + ControlPoints.ItemsAdded += items => { - ensureInitialised(); - return controlPoints.AsSpan(); - } + foreach (var c in items) + c.Changed += onControlPointChanged; + + onControlPointChanged(); + }; + + ControlPoints.ItemsRemoved += items => + { + foreach (var c in items) + c.Changed -= onControlPointChanged; + + onControlPointChanged(); + }; + + ControlPoints.AddRange(controlPoints); + + void onControlPointChanged() => pathCache.Invalidate(); } /// @@ -73,7 +74,7 @@ namespace osu.Game.Rulesets.Objects { get { - ensureInitialised(); + ensureValid(); return cumulativeLength.Count == 0 ? 0 : cumulativeLength[cumulativeLength.Count - 1]; } } @@ -87,7 +88,7 @@ namespace osu.Game.Rulesets.Objects /// End progress. Ranges from 0 (beginning of the slider) to 1 (end of the slider). public void GetPathToProgress(List path, double p0, double p1) { - ensureInitialised(); + ensureValid(); double d0 = progressToDistance(p0); double d1 = progressToDistance(p1); @@ -116,82 +117,84 @@ namespace osu.Game.Rulesets.Objects /// public Vector2 PositionAt(double progress) { - ensureInitialised(); + ensureValid(); double d = progressToDistance(progress); return interpolateVertices(indexOfDistance(d), d); } - private void ensureInitialised() + private void ensureValid() { - if (isInitialised) + if (pathCache.IsValid) return; - isInitialised = true; - - controlPoints ??= Array.Empty(); - calculatedPath = new List(); - cumulativeLength = new List(); - calculatePath(); calculateCumulativeLength(); - } - private List calculateSubpath(ReadOnlySpan subControlPoints) - { - switch (Type) - { - case PathType.Linear: - return PathApproximator.ApproximateLinear(subControlPoints); - - case PathType.PerfectCurve: - //we can only use CircularArc iff we have exactly three control points and no dissection. - if (ControlPoints.Length != 3 || subControlPoints.Length != 3) - break; - - // Here we have exactly 3 control points. Attempt to fit a circular arc. - List subpath = PathApproximator.ApproximateCircularArc(subControlPoints); - - // If for some reason a circular arc could not be fit to the 3 given points, fall back to a numerically stable bezier approximation. - if (subpath.Count == 0) - break; - - return subpath; - - case PathType.Catmull: - return PathApproximator.ApproximateCatmull(subControlPoints); - } - - return PathApproximator.ApproximateBezier(subControlPoints); + pathCache.Validate(); } private void calculatePath() { calculatedPath.Clear(); - // Sliders may consist of various subpaths separated by two consecutive vertices - // with the same position. The following loop parses these subpaths and computes - // their shape independently, consecutively appending them to calculatedPath. + if (ControlPoints.Count == 0) + return; + + if (ControlPoints[0].Type.Value == null) + throw new InvalidOperationException($"The first control point in a {nameof(SliderPath)} must have a non-null type."); + + Vector2[] vertices = new Vector2[ControlPoints.Count]; + for (int i = 0; i < ControlPoints.Count; i++) + vertices[i] = ControlPoints[i].Position.Value; int start = 0; - int end = 0; - for (int i = 0; i < ControlPoints.Length; ++i) + for (int i = 0; i < ControlPoints.Count; i++) { - end++; + if (ControlPoints[i].Type.Value == null && i < ControlPoints.Count - 1) + continue; - if (i == ControlPoints.Length - 1 || ControlPoints[i] == ControlPoints[i + 1]) + Debug.Assert(ControlPoints[start].Type.Value.HasValue); + + // The current vertex ends the segment + var segmentVertices = vertices.AsSpan().Slice(start, i - start + 1); + var segmentType = ControlPoints[start].Type.Value.Value; + + foreach (Vector2 t in computeSubPath(segmentVertices, segmentType)) { - ReadOnlySpan cpSpan = ControlPoints.Slice(start, end - start); - - foreach (Vector2 t in calculateSubpath(cpSpan)) - { - if (calculatedPath.Count == 0 || calculatedPath.Last() != t) - calculatedPath.Add(t); - } - - start = end; + if (calculatedPath.Count == 0 || calculatedPath.Last() != t) + calculatedPath.Add(t); } + + // Start the new segment at the current vertex + start = i; + } + + static List computeSubPath(ReadOnlySpan subControlPoints, PathType type) + { + switch (type) + { + case PathType.Linear: + return PathApproximator.ApproximateLinear(subControlPoints); + + case PathType.PerfectCurve: + if (subControlPoints.Length != 3) + break; + + List subpath = PathApproximator.ApproximateCircularArc(subControlPoints); + + // If for some reason a circular arc could not be fit to the 3 given points, fall back to a numerically stable bezier approximation. + if (subpath.Count == 0) + break; + + return subpath; + + case PathType.Catmull: + return PathApproximator.ApproximateCatmull(subControlPoints); + } + + return PathApproximator.ApproximateBezier(subControlPoints); } } @@ -272,7 +275,5 @@ namespace osu.Game.Rulesets.Objects double w = (d - d0) / (d1 - d0); return p0 + (p1 - p0) * (float)w; } - - public bool Equals(SliderPath other) => ControlPoints.SequenceEqual(other.ControlPoints) && ExpectedDistance == other.ExpectedDistance && Type == other.Type; } } diff --git a/osu.Game/Rulesets/Objects/SliderPath2.cs b/osu.Game/Rulesets/Objects/SliderPath2.cs deleted file mode 100644 index 560313a4d5..0000000000 --- a/osu.Game/Rulesets/Objects/SliderPath2.cs +++ /dev/null @@ -1,274 +0,0 @@ -// 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 System.Diagnostics; -using System.Linq; -using Newtonsoft.Json; -using osu.Framework.Bindables; -using osu.Framework.Caching; -using osu.Framework.MathUtils; -using osu.Game.Rulesets.Objects.Types; -using osuTK; - -namespace osu.Game.Rulesets.Objects -{ - public class SliderPath2 - { - /// - /// The user-set distance of the path. If non-null, will match this value, - /// and the path will be shortened/lengthened to match this length. - /// - public readonly double? ExpectedDistance; - - /// - /// The control points of the path. - /// - public readonly BindableList ControlPoints = new BindableList(); - - private readonly Cached pathCache = new Cached(); - - private readonly List calculatedPath = new List(); - private readonly List cumulativeLength = new List(); - - /// - /// Creates a new . - /// - /// A user-set distance of the path that may be shorter or longer than the true distance between all control points. - /// The path will be shortened/lengthened to match this length. If null, the path will use the true distance between all control points. - [JsonConstructor] - public SliderPath2(double? expectedDistance = null) - { - ExpectedDistance = expectedDistance; - - ControlPoints.ItemsAdded += items => - { - foreach (var c in items) - c.Changed += onControlPointChanged; - - onControlPointChanged(); - }; - - ControlPoints.ItemsRemoved += items => - { - foreach (var c in items) - c.Changed -= onControlPointChanged; - - onControlPointChanged(); - }; - - void onControlPointChanged() => pathCache.Invalidate(); - } - - /// - /// The distance of the path after lengthening/shortening to account for . - /// - [JsonIgnore] - public double Distance - { - get - { - ensureValid(); - return cumulativeLength.Count == 0 ? 0 : cumulativeLength[cumulativeLength.Count - 1]; - } - } - - /// - /// Computes the slider path until a given progress that ranges from 0 (beginning of the slider) - /// to 1 (end of the slider) and stores the generated path in the given list. - /// - /// The list to be filled with the computed path. - /// Start progress. Ranges from 0 (beginning of the slider) to 1 (end of the slider). - /// End progress. Ranges from 0 (beginning of the slider) to 1 (end of the slider). - public void GetPathToProgress(List path, double p0, double p1) - { - ensureValid(); - - double d0 = progressToDistance(p0); - double d1 = progressToDistance(p1); - - path.Clear(); - - int i = 0; - - for (; i < calculatedPath.Count && cumulativeLength[i] < d0; ++i) - { - } - - path.Add(interpolateVertices(i, d0)); - - for (; i < calculatedPath.Count && cumulativeLength[i] <= d1; ++i) - path.Add(calculatedPath[i]); - - path.Add(interpolateVertices(i, d1)); - } - - /// - /// Computes the position on the slider at a given progress that ranges from 0 (beginning of the path) - /// to 1 (end of the path). - /// - /// Ranges from 0 (beginning of the path) to 1 (end of the path). - /// - public Vector2 PositionAt(double progress) - { - ensureValid(); - - double d = progressToDistance(progress); - return interpolateVertices(indexOfDistance(d), d); - } - - private void ensureValid() - { - if (pathCache.IsValid) - return; - - calculatePath(); - calculateCumulativeLength(); - - pathCache.Validate(); - } - - private void calculatePath() - { - calculatedPath.Clear(); - - if (ControlPoints.Count == 0) - return; - - if (ControlPoints[0].Type.Value == null) - throw new InvalidOperationException($"The first control point in a {nameof(SliderPath2)} must have a non-null type."); - - Vector2[] vertices = new Vector2[ControlPoints.Count]; - for (int i = 0; i < ControlPoints.Count; i++) - vertices[i] = ControlPoints[i].Position.Value; - - int start = 0; - - for (int i = 0; i < ControlPoints.Count; i++) - { - if (ControlPoints[i].Type.Value == null && i < ControlPoints.Count - 1) - continue; - - Debug.Assert(ControlPoints[start].Type.Value.HasValue); - - // The current vertex ends the segment - var segmentVertices = vertices.AsSpan().Slice(start, i - start + 1); - var segmentType = ControlPoints[start].Type.Value.Value; - - foreach (Vector2 t in computeSubPath(segmentVertices, segmentType)) - { - if (calculatedPath.Count == 0 || calculatedPath.Last() != t) - calculatedPath.Add(t); - } - - // Start the new segment at the current vertex - start = i; - } - - static List computeSubPath(ReadOnlySpan subControlPoints, PathType type) - { - switch (type) - { - case PathType.Linear: - return PathApproximator.ApproximateLinear(subControlPoints); - - case PathType.PerfectCurve: - if (subControlPoints.Length != 3) - break; - - List subpath = PathApproximator.ApproximateCircularArc(subControlPoints); - - // If for some reason a circular arc could not be fit to the 3 given points, fall back to a numerically stable bezier approximation. - if (subpath.Count == 0) - break; - - return subpath; - - case PathType.Catmull: - return PathApproximator.ApproximateCatmull(subControlPoints); - } - - return PathApproximator.ApproximateBezier(subControlPoints); - } - } - - private void calculateCumulativeLength() - { - double l = 0; - - cumulativeLength.Clear(); - cumulativeLength.Add(l); - - for (int i = 0; i < calculatedPath.Count - 1; ++i) - { - Vector2 diff = calculatedPath[i + 1] - calculatedPath[i]; - double d = diff.Length; - - // Shorted slider paths that are too long compared to the expected distance - if (ExpectedDistance.HasValue && ExpectedDistance - l < d) - { - calculatedPath[i + 1] = calculatedPath[i] + diff * (float)((ExpectedDistance - l) / d); - calculatedPath.RemoveRange(i + 2, calculatedPath.Count - 2 - i); - - l = ExpectedDistance.Value; - cumulativeLength.Add(l); - break; - } - - l += d; - cumulativeLength.Add(l); - } - - // Lengthen slider paths that are too short compared to the expected distance - if (ExpectedDistance.HasValue && l < ExpectedDistance && calculatedPath.Count > 1) - { - Vector2 diff = calculatedPath[calculatedPath.Count - 1] - calculatedPath[calculatedPath.Count - 2]; - double d = diff.Length; - - if (d <= 0) - return; - - calculatedPath[calculatedPath.Count - 1] += diff * (float)((ExpectedDistance - l) / d); - cumulativeLength[calculatedPath.Count - 1] = ExpectedDistance.Value; - } - } - - private int indexOfDistance(double d) - { - int i = cumulativeLength.BinarySearch(d); - if (i < 0) i = ~i; - - return i; - } - - private double progressToDistance(double progress) - { - return Math.Clamp(progress, 0, 1) * Distance; - } - - private Vector2 interpolateVertices(int i, double d) - { - if (calculatedPath.Count == 0) - return Vector2.Zero; - - if (i <= 0) - return calculatedPath.First(); - if (i >= calculatedPath.Count) - return calculatedPath.Last(); - - Vector2 p0 = calculatedPath[i - 1]; - Vector2 p1 = calculatedPath[i]; - - double d0 = cumulativeLength[i - 1]; - double d1 = cumulativeLength[i]; - - // Avoid division by and almost-zero number in case two points are extremely close to each other. - if (Precision.AlmostEquals(d0, d1)) - return p0; - - double w = (d - d0) / (d1 - d0); - return p0 + (p1 - p0) * (float)w; - } - } -} From 986ac1cee4df72dc07c93f15f24032bc714a1edc Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 5 Dec 2019 17:49:54 +0900 Subject: [PATCH 0103/1829] Make expected distance a bindable --- osu.Game/Rulesets/Objects/SliderPath.cs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/osu.Game/Rulesets/Objects/SliderPath.cs b/osu.Game/Rulesets/Objects/SliderPath.cs index cc2b537afc..9d68e1337a 100644 --- a/osu.Game/Rulesets/Objects/SliderPath.cs +++ b/osu.Game/Rulesets/Objects/SliderPath.cs @@ -20,7 +20,7 @@ namespace osu.Game.Rulesets.Objects /// The user-set distance of the path. If non-null, will match this value, /// and the path will be shortened/lengthened to match this length. /// - public readonly double? ExpectedDistance; + public readonly Bindable ExpectedDistance = new Bindable(); /// /// The control points of the path. @@ -43,7 +43,8 @@ namespace osu.Game.Rulesets.Objects [JsonConstructor] public SliderPath(PathControlPoint[] controlPoints = null, double? expectedDistance = null) { - ExpectedDistance = expectedDistance; + ExpectedDistance.Value = expectedDistance; + ExpectedDistance.ValueChanged += _ => pathCache.Invalidate(); ControlPoints.ItemsAdded += items => { @@ -205,18 +206,20 @@ namespace osu.Game.Rulesets.Objects cumulativeLength.Clear(); cumulativeLength.Add(l); + double? expectedDistance = ExpectedDistance.Value; + for (int i = 0; i < calculatedPath.Count - 1; ++i) { Vector2 diff = calculatedPath[i + 1] - calculatedPath[i]; double d = diff.Length; // Shorted slider paths that are too long compared to the expected distance - if (ExpectedDistance.HasValue && ExpectedDistance - l < d) + if (expectedDistance.HasValue && expectedDistance - l < d) { - calculatedPath[i + 1] = calculatedPath[i] + diff * (float)((ExpectedDistance - l) / d); + calculatedPath[i + 1] = calculatedPath[i] + diff * (float)((expectedDistance - l) / d); calculatedPath.RemoveRange(i + 2, calculatedPath.Count - 2 - i); - l = ExpectedDistance.Value; + l = expectedDistance.Value; cumulativeLength.Add(l); break; } @@ -226,7 +229,7 @@ namespace osu.Game.Rulesets.Objects } // Lengthen slider paths that are too short compared to the expected distance - if (ExpectedDistance.HasValue && l < ExpectedDistance && calculatedPath.Count > 1) + if (expectedDistance.HasValue && l < expectedDistance && calculatedPath.Count > 1) { Vector2 diff = calculatedPath[calculatedPath.Count - 1] - calculatedPath[calculatedPath.Count - 2]; double d = diff.Length; @@ -234,8 +237,8 @@ namespace osu.Game.Rulesets.Objects if (d <= 0) return; - calculatedPath[calculatedPath.Count - 1] += diff * (float)((ExpectedDistance - l) / d); - cumulativeLength[calculatedPath.Count - 1] = ExpectedDistance.Value; + calculatedPath[calculatedPath.Count - 1] += diff * (float)((expectedDistance - l) / d); + cumulativeLength[calculatedPath.Count - 1] = expectedDistance.Value; } } From 1585d83b969016e287cb9c2af06abdbe2df431f3 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 5 Dec 2019 18:19:42 +0900 Subject: [PATCH 0104/1829] Add legacy constructor --- osu.Game/Rulesets/Objects/SliderPath.cs | 33 +++++++++++++++++++------ 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/osu.Game/Rulesets/Objects/SliderPath.cs b/osu.Game/Rulesets/Objects/SliderPath.cs index 9d68e1337a..bbeb03992e 100644 --- a/osu.Game/Rulesets/Objects/SliderPath.cs +++ b/osu.Game/Rulesets/Objects/SliderPath.cs @@ -37,13 +37,8 @@ namespace osu.Game.Rulesets.Objects /// /// Creates a new . /// - /// An optional set of s to initialise the path with. - /// A user-set distance of the path that may be shorter or longer than the true distance between all control points. - /// The path will be shortened/lengthened to match this length. If null, the path will use the true distance between all control points. - [JsonConstructor] - public SliderPath(PathControlPoint[] controlPoints = null, double? expectedDistance = null) + public SliderPath() { - ExpectedDistance.Value = expectedDistance; ExpectedDistance.ValueChanged += _ => pathCache.Invalidate(); ControlPoints.ItemsAdded += items => @@ -62,11 +57,33 @@ namespace osu.Game.Rulesets.Objects onControlPointChanged(); }; - ControlPoints.AddRange(controlPoints); - void onControlPointChanged() => pathCache.Invalidate(); } + /// + /// Creates a new . + /// + /// An optional set of s to initialise the path with. + /// A user-set distance of the path that may be shorter or longer than the true distance between all control points. + /// The path will be shortened/lengthened to match this length. If null, the path will use the true distance between all control points. + [JsonConstructor] + public SliderPath(PathControlPoint[] controlPoints, double? expectedDistance = null) + : this() + { + ControlPoints.AddRange(controlPoints); + ExpectedDistance.Value = expectedDistance; + } + + public SliderPath(PathType type, Vector2[] controlPoints, double? expectedDistance = null) + : this() + { + foreach (var c in controlPoints) + ControlPoints.Add(new PathControlPoint { Position = { Value = c } }); + ControlPoints[0].Type.Value = type; + + ExpectedDistance.Value = expectedDistance; + } + /// /// The distance of the path after lengthening/shortening to account for . /// From 2419077c0763612f0cb05f8e503e7208373dfd47 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 5 Dec 2019 18:31:13 +0900 Subject: [PATCH 0105/1829] 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 ff6d7396ee..301c615ce4 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index d7a34c2b1c..086359ee41 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 d2feebbfc9..0eb8d98a63 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From c9a66c0d07a8a89267355133a0eb8caead972c88 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 5 Dec 2019 18:31:28 +0900 Subject: [PATCH 0106/1829] Expose a version to indicate path changes --- osu.Game/Rulesets/Objects/SliderPath.cs | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/osu.Game/Rulesets/Objects/SliderPath.cs b/osu.Game/Rulesets/Objects/SliderPath.cs index bbeb03992e..6ad5d2f1c3 100644 --- a/osu.Game/Rulesets/Objects/SliderPath.cs +++ b/osu.Game/Rulesets/Objects/SliderPath.cs @@ -16,6 +16,13 @@ namespace osu.Game.Rulesets.Objects { public class SliderPath { + /// + /// The current version of this . Updated when any change to the path occurs. + /// + public IBindable Version => version; + + private readonly Bindable version = new Bindable(); + /// /// The user-set distance of the path. If non-null, will match this value, /// and the path will be shortened/lengthened to match this length. @@ -39,25 +46,23 @@ namespace osu.Game.Rulesets.Objects /// public SliderPath() { - ExpectedDistance.ValueChanged += _ => pathCache.Invalidate(); + ExpectedDistance.ValueChanged += _ => invalidate(); ControlPoints.ItemsAdded += items => { foreach (var c in items) - c.Changed += onControlPointChanged; + c.Changed += invalidate; - onControlPointChanged(); + invalidate(); }; ControlPoints.ItemsRemoved += items => { foreach (var c in items) - c.Changed -= onControlPointChanged; + c.Changed -= invalidate; - onControlPointChanged(); + invalidate(); }; - - void onControlPointChanged() => pathCache.Invalidate(); } /// @@ -141,6 +146,12 @@ namespace osu.Game.Rulesets.Objects return interpolateVertices(indexOfDistance(d), d); } + private void invalidate() + { + pathCache.Invalidate(); + version.Value++; + } + private void ensureValid() { if (pathCache.IsValid) From e225b0032aa092c79322fb948fd7e3adb7aac2b4 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 5 Dec 2019 19:31:40 +0900 Subject: [PATCH 0107/1829] Add basic hitobject display to timeline --- .../Editor/TestSceneEditorComposeTimeline.cs | 16 ++++ .../Compose/Components/Timeline/Timeline.cs | 21 +++-- .../Timeline/TimelineHitObjectDisplay.cs | 85 +++++++++++++++++++ 3 files changed, 115 insertions(+), 7 deletions(-) create mode 100644 osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs diff --git a/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs b/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs index 6e5b3b93e9..b67ea798a0 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs @@ -13,6 +13,10 @@ using osu.Framework.Graphics.Shapes; using osu.Framework.Timing; using osu.Game.Beatmaps; using osu.Game.Graphics.UserInterface; +using osu.Game.Rulesets.Mods; +using osu.Game.Rulesets.Osu; +using osu.Game.Rulesets.Osu.Objects; +using osu.Game.Screens.Edit; using osu.Game.Screens.Edit.Compose.Components.Timeline; using osuTK; using osuTK.Graphics; @@ -25,11 +29,23 @@ namespace osu.Game.Tests.Visual.Editor public override IReadOnlyList RequiredTypes => new[] { typeof(TimelineArea), + typeof(TimelineHitObjectDisplay), typeof(Timeline), typeof(TimelineButton), typeof(CentreMarker) }; + [Cached(typeof(IEditorBeatmap))] + private readonly EditorBeatmap editorBeatmap; + + public TestSceneEditorComposeTimeline() + { + editorBeatmap = new EditorBeatmap( + (Beatmap) + CreateWorkingBeatmap(new OsuRuleset().RulesetInfo).GetPlayableBeatmap(new OsuRuleset().RulesetInfo, new Mod[] { }) + ); + } + [BackgroundDependencyLoader] private void load(AudioManager audio) { diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs index 748c9e2ba3..1f8c134d84 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs @@ -36,14 +36,21 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline { this.adjustableClock = adjustableClock; - Child = waveform = new WaveformGraph + Children = new Drawable[] { - RelativeSizeAxes = Axes.Both, - Colour = colours.Blue.Opacity(0.2f), - LowColour = colours.BlueLighter, - MidColour = colours.BlueDark, - HighColour = colours.BlueDarker, - Depth = float.MaxValue + waveform = new WaveformGraph + { + RelativeSizeAxes = Axes.Both, + Colour = colours.Blue.Opacity(0.2f), + LowColour = colours.BlueLighter, + MidColour = colours.BlueDark, + HighColour = colours.BlueDarker, + Depth = float.MaxValue + }, + new TimelineHitObjectDisplay + { + RelativeSizeAxes = Axes.Both, + }, }; // We don't want the centre marker to scroll diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs new file mode 100644 index 0000000000..8bc0bf1a86 --- /dev/null +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -0,0 +1,85 @@ +// 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.Allocation; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; +using osu.Game.Rulesets.Objects; +using osu.Game.Rulesets.Objects.Types; +using osu.Game.Screens.Edit.Components.Timelines.Summary.Parts; +using osuTK; +using osuTK.Graphics; + +namespace osu.Game.Screens.Edit.Compose.Components.Timeline +{ + internal class TimelineHitObjectDisplay : TimelinePart + { + [Resolved] + private IEditorBeatmap beatmap { get; set; } + + [BackgroundDependencyLoader] + private void load() + { + foreach (var h in beatmap.HitObjects) + add(h); + + beatmap.HitObjectAdded += add; + beatmap.HitObjectRemoved += remove; + } + + private void remove(HitObject h) + { + foreach (var d in InternalChildren.OfType().Where(c => c.HitObject == h)) + d.Expire(); + } + + private void add(HitObject h) + { + Add(new TimelineHitObjectRepresentation(h)); + } + + private class TimelineHitObjectRepresentation : CompositeDrawable + { + public readonly HitObject HitObject; + + public TimelineHitObjectRepresentation(HitObject hitObject) + { + this.HitObject = hitObject; + Anchor = Anchor.CentreLeft; + Origin = Anchor.CentreLeft; + + Width = (float)(hitObject.GetEndTime() - hitObject.StartTime); + + X = (float)hitObject.StartTime; + + RelativePositionAxes = Axes.X; + RelativeSizeAxes = Axes.X; + + AddInternal(new Circle + { + Size = new Vector2(16), + Anchor = Anchor.CentreLeft, + Origin = Anchor.Centre, + RelativePositionAxes = Axes.X, + AlwaysPresent = true, + Colour = Color4.White, + }); + + if (hitObject is IHasEndTime) + { + AddInternal(new Box + { + Size = new Vector2(1, 5), + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + RelativePositionAxes = Axes.X, + RelativeSizeAxes = Axes.X, + Colour = Color4.White, + }); + } + } + } + } +} From 3ebbf62b2ab11d58fd372a091fe179eb7f827188 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 5 Dec 2019 19:53:31 +0900 Subject: [PATCH 0108/1829] Initial game-wide update with the new SliderPath --- .../TestSceneSliderSelectionBlueprint.cs | 2 +- .../Components/PathControlPointPiece.cs | 28 +++-------- .../Components/PathControlPointVisualiser.cs | 24 +++++---- .../Sliders/SliderPlacementBlueprint.cs | 18 +++---- .../Sliders/SliderSelectionBlueprint.cs | 25 +++------- osu.Game.Rulesets.Osu/Mods/OsuModHardRock.cs | 7 +-- .../Objects/Drawables/DrawableSlider.cs | 6 +-- .../Objects/Drawables/DrawableSliderHead.cs | 6 +-- .../Objects/Drawables/DrawableSliderTail.cs | 6 +-- osu.Game.Rulesets.Osu/Objects/Slider.cs | 14 +----- .../Objects/SliderTailCircle.cs | 6 +-- .../Legacy/Catch/ConvertHitObjectParser.cs | 4 +- .../Objects/Legacy/ConvertHitObjectParser.cs | 50 +++++++++++++++---- .../Legacy/Mania/ConvertHitObjectParser.cs | 4 +- .../Legacy/Osu/ConvertHitObjectParser.cs | 4 +- .../Legacy/Taiko/ConvertHitObjectParser.cs | 4 +- 16 files changed, 97 insertions(+), 111 deletions(-) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderSelectionBlueprint.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderSelectionBlueprint.cs index dde2aa53e0..013920684c 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderSelectionBlueprint.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderSelectionBlueprint.cs @@ -196,7 +196,7 @@ namespace osu.Game.Rulesets.Osu.Tests { AddStep($"move mouse to control point {index}", () => { - Vector2 position = slider.Position + slider.Path.ControlPoints[index]; + Vector2 position = slider.Position + slider.Path.ControlPoints[index].Position.Value; InputManager.MoveMouseTo(drawableObject.Parent.ToScreenSpace(position)); }); } diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs index 0ccf020300..159916f16f 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs @@ -90,7 +90,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components { base.Update(); - Position = slider.StackedPosition + slider.Path.ControlPoints[Index]; + Position = slider.StackedPosition + slider.Path.ControlPoints[Index].Position.Value; updateMarkerDisplay(); updateConnectingPath(); @@ -116,10 +116,10 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components { path.ClearVertices(); - if (Index != slider.Path.ControlPoints.Length - 1) + if (Index != slider.Path.ControlPoints.Count - 1) { path.AddVertex(Vector2.Zero); - path.AddVertex(slider.Path.ControlPoints[Index + 1] - slider.Path.ControlPoints[Index]); + path.AddVertex(slider.Path.ControlPoints[Index + 1].Position.Value - slider.Path.ControlPoints[Index].Position.Value); } path.OriginPosition = path.PositionInBoundingBox(Vector2.Zero); @@ -156,8 +156,6 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components protected override bool OnDrag(DragEvent e) { - var newControlPoints = slider.Path.ControlPoints.ToArray(); - if (Index == 0) { // Special handling for the head control point - the position of the slider changes which means the snapped position and time have to be taken into account @@ -168,29 +166,17 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components slider.StartTime = snappedTime; // Since control points are relative to the position of the slider, they all need to be offset backwards by the delta - for (int i = 1; i < newControlPoints.Length; i++) - newControlPoints[i] -= movementDelta; + for (int i = 1; i < slider.Path.ControlPoints.Count; i++) + slider.Path.ControlPoints[i].Position.Value -= movementDelta; } else - newControlPoints[Index] += e.Delta; - - if (isSegmentSeparatorWithNext) - newControlPoints[Index + 1] = newControlPoints[Index]; - - if (isSegmentSeparatorWithPrevious) - newControlPoints[Index - 1] = newControlPoints[Index]; - - ControlPointsChanged?.Invoke(newControlPoints); + slider.Path.ControlPoints[Index].Position.Value += e.Delta; return true; } protected override bool OnDragEnd(DragEndEvent e) => true; - private bool isSegmentSeparator => isSegmentSeparatorWithNext || isSegmentSeparatorWithPrevious; - - private bool isSegmentSeparatorWithNext => Index < slider.Path.ControlPoints.Length - 1 && slider.Path.ControlPoints[Index + 1] == slider.Path.ControlPoints[Index]; - - private bool isSegmentSeparatorWithPrevious => Index > 0 && slider.Path.ControlPoints[Index - 1] == slider.Path.ControlPoints[Index]; + private bool isSegmentSeparator => slider.Path.ControlPoints[Index].Type.Value.HasValue; } } diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs index cdca48490e..c47e4d7d4a 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs @@ -55,7 +55,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components { base.Update(); - while (slider.Path.ControlPoints.Length > Pieces.Count) + while (slider.Path.ControlPoints.Count > Pieces.Count) { var piece = new PathControlPointPiece(slider, Pieces.Count) { @@ -68,7 +68,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components Pieces.Add(piece); } - while (slider.Path.ControlPoints.Length < Pieces.Count) + while (slider.Path.ControlPoints.Count < Pieces.Count) Pieces.Remove(Pieces[Pieces.Count - 1]); } @@ -105,29 +105,32 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components private bool deleteSelected() { - var newControlPoints = new List(); + int countDeleted = 0; foreach (var piece in Pieces) { - if (!piece.IsSelected.Value) - newControlPoints.Add(slider.Path.ControlPoints[piece.Index]); + if (piece.IsSelected.Value) + { + slider.Path.ControlPoints.RemoveAt(piece.Index); + countDeleted++; + } } // Ensure that there are any points to be deleted - if (newControlPoints.Count == slider.Path.ControlPoints.Length) + if (countDeleted == 0) return false; // If there are 0 remaining control points, treat the slider as being deleted - if (newControlPoints.Count == 0) + if (slider.Path.ControlPoints.Count == 0) { placementHandler?.Delete(slider); return true; } // Make control points relative - Vector2 first = newControlPoints[0]; - for (int i = 0; i < newControlPoints.Count; i++) - newControlPoints[i] = newControlPoints[i] - first; + Vector2 first = slider.Path.ControlPoints[0].Position.Value; + for (int i = 0; i < slider.Path.ControlPoints.Count; i++) + slider.Path.ControlPoints[i].Position.Value = slider.Path.ControlPoints[i].Position.Value - first; // The slider's position defines the position of the first control point, and all further control points are relative to that point slider.Position += first; @@ -136,7 +139,6 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components foreach (var piece in Pieces) piece.IsSelected.Value = false; - ControlPointsChanged?.Invoke(newControlPoints.ToArray()); return true; } diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs index 9c0afada29..62a22dc858 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs @@ -27,8 +27,6 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders private HitCirclePiece headCirclePiece; private HitCirclePiece tailCirclePiece; - private readonly List segments = new List(); - private Vector2 cursor; private InputManager inputManager; private PlacementState state; @@ -40,7 +38,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders : base(new Objects.Slider()) { RelativeSizeAxes = Axes.Both; - segments.Add(new Segment(Vector2.Zero)); + HitObject.Path.ControlPoints.Add(new PathControlPoint { Position = { Value = Vector2.Zero } }); } [BackgroundDependencyLoader] @@ -74,7 +72,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders case PlacementState.Body: // The given screen-space position may have been externally snapped, but the unsnapped position from the input manager // is used instead since snapping control points doesn't make much sense - cursor = ToLocalSpace(inputManager.CurrentState.Mouse.Position) - HitObject.Position; + HitObject.Path.ControlPoints[HitObject.Path.ControlPoints.Count - 1].Position.Value = ToLocalSpace(inputManager.CurrentState.Mouse.Position) - HitObject.Position; break; } } @@ -91,7 +89,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders switch (e.Button) { case MouseButton.Left: - segments.Last().ControlPoints.Add(cursor); + HitObject.Path.ControlPoints.Add(new PathControlPoint { Position = { Value = HitObject.Path.ControlPoints[HitObject.Path.ControlPoints.Count - 1].Position.Value } }); break; } @@ -110,7 +108,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders protected override bool OnDoubleClick(DoubleClickEvent e) { - segments.Add(new Segment(segments[segments.Count - 1].ControlPoints.Last())); + HitObject.Path.ControlPoints[HitObject.Path.ControlPoints.Count - 2].Type.Value = PathType.Bezier; return true; } @@ -134,12 +132,8 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders private void updateSlider() { - Vector2[] newControlPoints = segments.SelectMany(s => s.ControlPoints).Concat(cursor.Yield()).ToArray(); - - var unsnappedPath = new SliderPath(newControlPoints.Length > 2 ? PathType.Bezier : PathType.Linear, newControlPoints); - var snappedDistance = composer?.GetSnappedDistanceFromDistance(HitObject.StartTime, (float)unsnappedPath.Distance) ?? (float)unsnappedPath.Distance; - - HitObject.Path = new SliderPath(unsnappedPath.Type, newControlPoints, snappedDistance); + HitObject.Path.ExpectedDistance.Value = null; + HitObject.Path.ExpectedDistance.Value = composer?.GetSnappedDistanceFromDistance(HitObject.StartTime, (float)HitObject.Path.Distance) ?? (float)HitObject.Path.Distance; bodyPiece.UpdateFrom(HitObject); headCirclePiece.UpdateFrom(HitObject.HeadCircle); diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs index 820d6c92d7..ab52c906e8 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs @@ -77,12 +77,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders { Debug.Assert(placementControlPointIndex != null); - Vector2 position = e.MousePosition - HitObject.Position; - - var controlPoints = HitObject.Path.ControlPoints.ToArray(); - controlPoints[placementControlPointIndex.Value] = position; - - onNewControlPoints(controlPoints); + HitObject.Path.ControlPoints[placementControlPointIndex.Value].Position.Value = e.MousePosition - HitObject.Position; return true; } @@ -97,15 +92,12 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders { position -= HitObject.Position; - var controlPoints = new Vector2[HitObject.Path.ControlPoints.Length + 1]; - HitObject.Path.ControlPoints.CopyTo(controlPoints); - int insertionIndex = 0; float minDistance = float.MaxValue; - for (int i = 0; i < controlPoints.Length - 2; i++) + for (int i = 0; i < HitObject.Path.ControlPoints.Count - 2; i++) { - float dist = new Line(controlPoints[i], controlPoints[i + 1]).DistanceToPoint(position); + float dist = new Line(HitObject.Path.ControlPoints[i].Position.Value, HitObject.Path.ControlPoints[i + 1].Position.Value).DistanceToPoint(position); if (dist < minDistance) { @@ -115,20 +107,15 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders } // Move the control points from the insertion index onwards to make room for the insertion - Array.Copy(controlPoints, insertionIndex, controlPoints, insertionIndex + 1, controlPoints.Length - insertionIndex - 1); - controlPoints[insertionIndex] = position; - - onNewControlPoints(controlPoints); + HitObject.Path.ControlPoints.Insert(insertionIndex, new PathControlPoint { Position = { Value = position } }); return insertionIndex; } private void onNewControlPoints(Vector2[] controlPoints) { - var unsnappedPath = new SliderPath(controlPoints.Length > 2 ? PathType.Bezier : PathType.Linear, controlPoints); - var snappedDistance = composer?.GetSnappedDistanceFromDistance(HitObject.StartTime, (float)unsnappedPath.Distance) ?? (float)unsnappedPath.Distance; - - HitObject.Path = new SliderPath(unsnappedPath.Type, controlPoints, snappedDistance); + HitObject.Path.ExpectedDistance.Value = null; + HitObject.Path.ExpectedDistance.Value = composer?.GetSnappedDistanceFromDistance(HitObject.StartTime, (float)HitObject.Path.Distance) ?? (float)HitObject.Path.Distance; UpdateHitObject(); } diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModHardRock.cs b/osu.Game.Rulesets.Osu/Mods/OsuModHardRock.cs index 3d566362ae..bc5f79331f 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModHardRock.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModHardRock.cs @@ -28,11 +28,8 @@ namespace osu.Game.Rulesets.Osu.Mods slider.NestedHitObjects.OfType().ForEach(h => h.Position = new Vector2(h.Position.X, OsuPlayfield.BASE_SIZE.Y - h.Position.Y)); slider.NestedHitObjects.OfType().ForEach(h => h.Position = new Vector2(h.Position.X, OsuPlayfield.BASE_SIZE.Y - h.Position.Y)); - var newControlPoints = new Vector2[slider.Path.ControlPoints.Length]; - for (int i = 0; i < slider.Path.ControlPoints.Length; i++) - newControlPoints[i] = new Vector2(slider.Path.ControlPoints[i].X, -slider.Path.ControlPoints[i].Y); - - slider.Path = new SliderPath(slider.Path.Type, newControlPoints, slider.Path.ExpectedDistance); + foreach (var point in slider.Path.ControlPoints) + point.Position.Value = new Vector2(point.Position.Value.X, -point.Position.Value.Y); } } } diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs index 69189758a6..1e0402d492 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs @@ -37,7 +37,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables private readonly IBindable positionBindable = new Bindable(); private readonly IBindable stackHeightBindable = new Bindable(); private readonly IBindable scaleBindable = new Bindable(); - private readonly IBindable pathBindable = new Bindable(); + private readonly IBindable pathVersion = new Bindable(); [Resolved(CanBeNull = true)] private OsuRulesetConfigManager config { get; set; } @@ -84,9 +84,9 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables positionBindable.BindTo(HitObject.PositionBindable); stackHeightBindable.BindTo(HitObject.StackHeightBindable); scaleBindable.BindTo(HitObject.ScaleBindable); - pathBindable.BindTo(slider.PathBindable); + pathVersion.BindTo(slider.Path.Version); - pathBindable.BindValueChanged(_ => Body.Refresh()); + pathVersion.BindValueChanged(_ => Body.Refresh()); AccentColour.BindValueChanged(colour => { diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderHead.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderHead.cs index a10c66d1df..166defbc41 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderHead.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderHead.cs @@ -13,7 +13,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables public class DrawableSliderHead : DrawableHitCircle { private readonly IBindable positionBindable = new Bindable(); - private readonly IBindable pathBindable = new Bindable(); + private readonly IBindable pathVersion = new Bindable(); private readonly Slider slider; @@ -27,10 +27,10 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables private void load() { positionBindable.BindTo(HitObject.PositionBindable); - pathBindable.BindTo(slider.PathBindable); + pathVersion.BindTo(slider.Path.Version); positionBindable.BindValueChanged(_ => updatePosition()); - pathBindable.BindValueChanged(_ => updatePosition(), true); + pathVersion.BindValueChanged(_ => updatePosition(), true); } protected override void Update() diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTail.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTail.cs index 42bf5e4d21..8e2f6ffa66 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTail.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTail.cs @@ -21,7 +21,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables public bool Tracking { get; set; } private readonly IBindable positionBindable = new Bindable(); - private readonly IBindable pathBindable = new Bindable(); + private readonly IBindable pathVersion = new Bindable(); public DrawableSliderTail(Slider slider, SliderTailCircle hitCircle) : base(hitCircle) @@ -36,10 +36,10 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables AlwaysPresent = true; positionBindable.BindTo(hitCircle.PositionBindable); - pathBindable.BindTo(slider.PathBindable); + pathVersion.BindTo(slider.Path.Version); positionBindable.BindValueChanged(_ => updatePosition()); - pathBindable.BindValueChanged(_ => updatePosition(), true); + pathVersion.BindValueChanged(_ => updatePosition(), true); // TODO: This has no drawable content. Support for skins should be added. } diff --git a/osu.Game.Rulesets.Osu/Objects/Slider.cs b/osu.Game.Rulesets.Osu/Objects/Slider.cs index c6f5a075e0..b68595c67e 100644 --- a/osu.Game.Rulesets.Osu/Objects/Slider.cs +++ b/osu.Game.Rulesets.Osu/Objects/Slider.cs @@ -28,19 +28,7 @@ namespace osu.Game.Rulesets.Osu.Objects public Vector2 StackedPositionAt(double t) => StackedPosition + this.CurvePositionAt(t); - public readonly Bindable PathBindable = new Bindable(); - - public SliderPath Path - { - get => PathBindable.Value; - set - { - PathBindable.Value = value; - endPositionCache.Invalidate(); - - updateNestedPositions(); - } - } + public SliderPath Path { get; set; } = new SliderPath(new[] { new PathControlPoint { Type = { Value = PathType.Bezier } } }); public double Distance => Path.Distance; diff --git a/osu.Game.Rulesets.Osu/Objects/SliderTailCircle.cs b/osu.Game.Rulesets.Osu/Objects/SliderTailCircle.cs index 14c3369967..c17d2275b8 100644 --- a/osu.Game.Rulesets.Osu/Objects/SliderTailCircle.cs +++ b/osu.Game.Rulesets.Osu/Objects/SliderTailCircle.cs @@ -15,12 +15,12 @@ namespace osu.Game.Rulesets.Osu.Objects /// public class SliderTailCircle : SliderCircle { - private readonly IBindable pathBindable = new Bindable(); + private readonly IBindable pathVersion = new Bindable(); public SliderTailCircle(Slider slider) { - pathBindable.BindTo(slider.PathBindable); - pathBindable.BindValueChanged(_ => Position = slider.EndPosition); + pathVersion.BindTo(slider.Path.Version); + pathVersion.BindValueChanged(_ => Position = slider.EndPosition); } public override Judgement CreateJudgement() => new OsuSliderTailJudgement(); diff --git a/osu.Game/Rulesets/Objects/Legacy/Catch/ConvertHitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/Catch/ConvertHitObjectParser.cs index 545cfe07f8..afa1f2996e 100644 --- a/osu.Game/Rulesets/Objects/Legacy/Catch/ConvertHitObjectParser.cs +++ b/osu.Game/Rulesets/Objects/Legacy/Catch/ConvertHitObjectParser.cs @@ -37,7 +37,7 @@ namespace osu.Game.Rulesets.Objects.Legacy.Catch }; } - protected override HitObject CreateSlider(Vector2 position, bool newCombo, int comboOffset, Vector2[] controlPoints, double? length, PathType pathType, int repeatCount, + protected override HitObject CreateSlider(Vector2 position, bool newCombo, int comboOffset, PathControlPoint[] controlPoints, double? length, int repeatCount, List> nodeSamples) { newCombo |= forceNewCombo; @@ -51,7 +51,7 @@ namespace osu.Game.Rulesets.Objects.Legacy.Catch X = position.X, NewCombo = FirstObject || newCombo, ComboOffset = comboOffset, - Path = new SliderPath(pathType, controlPoints, length), + Path = new SliderPath(controlPoints, length), NodeSamples = nodeSamples, RepeatCount = repeatCount }; diff --git a/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs index 5348ff1f02..1ac7284772 100644 --- a/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs +++ b/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs @@ -115,12 +115,6 @@ namespace osu.Game.Rulesets.Objects.Legacy points[pointIndex++] = new Vector2((int)Parsing.ParseDouble(temp[0], Parsing.MAX_COORDINATE_VALUE), (int)Parsing.ParseDouble(temp[1], Parsing.MAX_COORDINATE_VALUE)) - pos; } - // osu-stable special-cased colinear perfect curves to a CurveType.Linear - static bool isLinear(Vector2[] p) => Precision.AlmostEquals(0, (p[1].Y - p[0].Y) * (p[2].X - p[0].X) - (p[1].X - p[0].X) * (p[2].Y - p[0].Y)); - - if (points.Length == 3 && pathType == PathType.PerfectCurve && isLinear(points)) - pathType = PathType.Linear; - int repeatCount = Parsing.ParseInt(split[6]); if (repeatCount > 9000) @@ -187,7 +181,7 @@ namespace osu.Game.Rulesets.Objects.Legacy for (int i = 0; i < nodes; i++) nodeSamples.Add(convertSoundType(nodeSoundTypes[i], nodeBankInfos[i])); - result = CreateSlider(pos, combo, comboOffset, points, length, pathType, repeatCount, nodeSamples); + result = CreateSlider(pos, combo, comboOffset, convertControlPoints(points, pathType), length, repeatCount, nodeSamples); // The samples are played when the slider ends, which is the last node result.Samples = nodeSamples[nodeSamples.Count - 1]; @@ -259,6 +253,45 @@ namespace osu.Game.Rulesets.Objects.Legacy bankInfo.Filename = split.Length > 4 ? split[4] : null; } + private PathControlPoint[] convertControlPoints(Vector2[] vertices, PathType type) + { + if (type == PathType.PerfectCurve) + { + if (vertices.Length == 3) + { + // osu-stable special-cased colinear perfect curves to a linear path + if (isLinear(vertices)) + type = PathType.Linear; + } + else + type = PathType.Bezier; + } + + var points = new List(vertices.Length) + { + new PathControlPoint + { + Position = { Value = vertices[0] }, + Type = { Value = type } + } + }; + + for (int i = 1; i < vertices.Length; i++) + { + if (vertices[i] == vertices[i - 1]) + { + points[points.Count - 1].Type.Value = type; + continue; + } + + points.Add(new PathControlPoint { Position = { Value = vertices[i] } }); + } + + return points.ToArray(); + + static bool isLinear(Vector2[] p) => Precision.AlmostEquals(0, (p[1].Y - p[0].Y) * (p[2].X - p[0].X) - (p[1].X - p[0].X) * (p[2].Y - p[0].Y)); + } + /// /// Creates a legacy Hit-type hit object. /// @@ -276,11 +309,10 @@ namespace osu.Game.Rulesets.Objects.Legacy /// When starting a new combo, the offset of the new combo relative to the current one. /// The slider control points. /// The slider length. - /// The slider curve type. /// The slider repeat count. /// The samples to be played when the slider nodes are hit. This includes the head and tail of the slider. /// The hit object. - protected abstract HitObject CreateSlider(Vector2 position, bool newCombo, int comboOffset, Vector2[] controlPoints, double? length, PathType pathType, int repeatCount, + protected abstract HitObject CreateSlider(Vector2 position, bool newCombo, int comboOffset, PathControlPoint[] controlPoints, double? length, int repeatCount, List> nodeSamples); /// diff --git a/osu.Game/Rulesets/Objects/Legacy/Mania/ConvertHitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/Mania/ConvertHitObjectParser.cs index 8012b4230f..d1a8adc2b7 100644 --- a/osu.Game/Rulesets/Objects/Legacy/Mania/ConvertHitObjectParser.cs +++ b/osu.Game/Rulesets/Objects/Legacy/Mania/ConvertHitObjectParser.cs @@ -26,13 +26,13 @@ namespace osu.Game.Rulesets.Objects.Legacy.Mania }; } - protected override HitObject CreateSlider(Vector2 position, bool newCombo, int comboOffset, Vector2[] controlPoints, double? length, PathType pathType, int repeatCount, + protected override HitObject CreateSlider(Vector2 position, bool newCombo, int comboOffset, PathControlPoint[] controlPoints, double? length, int repeatCount, List> nodeSamples) { return new ConvertSlider { X = position.X, - Path = new SliderPath(pathType, controlPoints, length), + Path = new SliderPath(controlPoints, length), NodeSamples = nodeSamples, RepeatCount = repeatCount }; diff --git a/osu.Game/Rulesets/Objects/Legacy/Osu/ConvertHitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/Osu/ConvertHitObjectParser.cs index 99872e630d..6628f7d059 100644 --- a/osu.Game/Rulesets/Objects/Legacy/Osu/ConvertHitObjectParser.cs +++ b/osu.Game/Rulesets/Objects/Legacy/Osu/ConvertHitObjectParser.cs @@ -37,7 +37,7 @@ namespace osu.Game.Rulesets.Objects.Legacy.Osu }; } - protected override HitObject CreateSlider(Vector2 position, bool newCombo, int comboOffset, Vector2[] controlPoints, double? length, PathType pathType, int repeatCount, + protected override HitObject CreateSlider(Vector2 position, bool newCombo, int comboOffset, PathControlPoint[] controlPoints, double? length, int repeatCount, List> nodeSamples) { newCombo |= forceNewCombo; @@ -51,7 +51,7 @@ namespace osu.Game.Rulesets.Objects.Legacy.Osu Position = position, NewCombo = FirstObject || newCombo, ComboOffset = comboOffset, - Path = new SliderPath(pathType, controlPoints, length), + Path = new SliderPath(controlPoints, length), NodeSamples = nodeSamples, RepeatCount = repeatCount }; diff --git a/osu.Game/Rulesets/Objects/Legacy/Taiko/ConvertHitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/Taiko/ConvertHitObjectParser.cs index 9dc0c01932..7b1d64b19f 100644 --- a/osu.Game/Rulesets/Objects/Legacy/Taiko/ConvertHitObjectParser.cs +++ b/osu.Game/Rulesets/Objects/Legacy/Taiko/ConvertHitObjectParser.cs @@ -23,12 +23,12 @@ namespace osu.Game.Rulesets.Objects.Legacy.Taiko return new ConvertHit(); } - protected override HitObject CreateSlider(Vector2 position, bool newCombo, int comboOffset, Vector2[] controlPoints, double? length, PathType pathType, int repeatCount, + protected override HitObject CreateSlider(Vector2 position, bool newCombo, int comboOffset, PathControlPoint[] controlPoints, double? length, int repeatCount, List> nodeSamples) { return new ConvertSlider { - Path = new SliderPath(pathType, controlPoints, length), + Path = new SliderPath(controlPoints, length), NodeSamples = nodeSamples, RepeatCount = repeatCount }; From d8620a70fbbb7bbc9f983126a98478447fba9dc5 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 5 Dec 2019 20:12:25 +0900 Subject: [PATCH 0109/1829] Make work in editor --- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 8 ++++++-- .../Timelines/Summary/Parts/TimelinePart.cs | 6 +++--- .../Compose/Components/Timeline/Timeline.cs | 4 ---- .../Components/Timeline/TimelineArea.cs | 10 +++++++--- .../Timeline/TimelineHitObjectDisplay.cs | 20 ++++++++++++------- .../Screens/Edit/Compose/ComposeScreen.cs | 13 ++++++++++-- .../Screens/Edit/EditorScreenWithTimeline.cs | 10 ++++++++-- osu.Game/Screens/Edit/IEditorBeatmap.cs | 5 +++++ 8 files changed, 53 insertions(+), 23 deletions(-) diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index 805fc2b46f..368520ba43 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -34,7 +34,9 @@ namespace osu.Game.Rulesets.Edit where TObject : HitObject { protected IRulesetConfigManager Config { get; private set; } - protected EditorBeatmap EditorBeatmap { get; private set; } + + protected new EditorBeatmap EditorBeatmap { get; private set; } + protected readonly Ruleset Ruleset; [Resolved] @@ -148,7 +150,7 @@ namespace osu.Game.Rulesets.Edit beatmapProcessor = Ruleset.CreateBeatmapProcessor(playableBeatmap); - EditorBeatmap = new EditorBeatmap(playableBeatmap); + base.EditorBeatmap = EditorBeatmap = new EditorBeatmap(playableBeatmap); EditorBeatmap.HitObjectAdded += addHitObject; EditorBeatmap.HitObjectRemoved += removeHitObject; EditorBeatmap.StartTimeChanged += UpdateHitObject; @@ -333,6 +335,8 @@ namespace osu.Game.Rulesets.Edit /// public abstract IEnumerable HitObjects { get; } + public IEditorBeatmap EditorBeatmap { get; protected set; } + /// /// Whether the user's cursor is currently in an area of the that is valid for placement. /// diff --git a/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/TimelinePart.cs b/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/TimelinePart.cs index 26d9614631..7706e33179 100644 --- a/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/TimelinePart.cs +++ b/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/TimelinePart.cs @@ -14,12 +14,14 @@ namespace osu.Game.Screens.Edit.Components.Timelines.Summary.Parts /// /// Represents a part of the summary timeline.. /// - public abstract class TimelinePart : CompositeDrawable + public abstract class TimelinePart : Container { protected readonly IBindable Beatmap = new Bindable(); private readonly Container timeline; + protected override Container Content => timeline; + protected TimelinePart() { AddInternal(timeline = new Container { RelativeSizeAxes = Axes.Both }); @@ -50,8 +52,6 @@ namespace osu.Game.Screens.Edit.Components.Timelines.Summary.Parts timeline.RelativeChildSize = new Vector2((float)Math.Max(1, Beatmap.Value.Track.Length), 1); } - protected void Add(Drawable visualisation) => timeline.Add(visualisation); - protected virtual void LoadBeatmap(WorkingBeatmap beatmap) { timeline.Clear(); diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs index 1f8c134d84..2a565d028f 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs @@ -47,10 +47,6 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline HighColour = colours.BlueDarker, Depth = float.MaxValue }, - new TimelineHitObjectDisplay - { - RelativeSizeAxes = Axes.Both, - }, }; // We don't want the centre marker to scroll diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineArea.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineArea.cs index 863a120fc3..93dac059e3 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineArea.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineArea.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 osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; @@ -11,11 +12,14 @@ using osuTK; namespace osu.Game.Screens.Edit.Compose.Components.Timeline { - public class TimelineArea : CompositeDrawable + public class TimelineArea : Container { - private readonly Timeline timeline; + private Timeline timeline; - public TimelineArea() + protected override Container Content => timeline; + + [BackgroundDependencyLoader] + private void load() { Masking = true; CornerRadius = 5; diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index 8bc0bf1a86..fc16d29639 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -16,8 +16,12 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline { internal class TimelineHitObjectDisplay : TimelinePart { - [Resolved] - private IEditorBeatmap beatmap { get; set; } + private IEditorBeatmap beatmap { get; } + + public TimelineHitObjectDisplay(IEditorBeatmap beatmap) + { + this.beatmap = beatmap; + } [BackgroundDependencyLoader] private void load() @@ -27,18 +31,20 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline beatmap.HitObjectAdded += add; beatmap.HitObjectRemoved += remove; + beatmap.StartTimeChanged += h => + { + remove(h); + add(h); + }; } private void remove(HitObject h) { - foreach (var d in InternalChildren.OfType().Where(c => c.HitObject == h)) + foreach (var d in Children.OfType().Where(c => c.HitObject == h)) d.Expire(); } - private void add(HitObject h) - { - Add(new TimelineHitObjectRepresentation(h)); - } + private void add(HitObject h) => Add(new TimelineHitObjectRepresentation(h)); private class TimelineHitObjectRepresentation : CompositeDrawable { diff --git a/osu.Game/Screens/Edit/Compose/ComposeScreen.cs b/osu.Game/Screens/Edit/Compose/ComposeScreen.cs index 2e9094ebe6..8511bc3242 100644 --- a/osu.Game/Screens/Edit/Compose/ComposeScreen.cs +++ b/osu.Game/Screens/Edit/Compose/ComposeScreen.cs @@ -3,17 +3,21 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Game.Rulesets.Edit; +using osu.Game.Screens.Edit.Compose.Components.Timeline; using osu.Game.Skinning; namespace osu.Game.Screens.Edit.Compose { public class ComposeScreen : EditorScreenWithTimeline { + private HitObjectComposer composer; + protected override Drawable CreateMainContent() { var ruleset = Beatmap.Value.BeatmapInfo.Ruleset?.CreateInstance(); - var composer = ruleset?.CreateHitObjectComposer(); + composer = ruleset?.CreateHitObjectComposer(); if (composer != null) { @@ -25,10 +29,15 @@ namespace osu.Game.Screens.Edit.Compose // load the skinning hierarchy first. // this is intentionally done in two stages to ensure things are in a loaded state before exposing the ruleset to skin sources. - return beatmapSkinProvider.WithChild(rulesetSkinProvider.WithChild(ruleset.CreateHitObjectComposer())); + return beatmapSkinProvider.WithChild(rulesetSkinProvider.WithChild(composer)); } return new ScreenWhiteBox.UnderConstructionMessage(ruleset == null ? "This beatmap" : $"{ruleset.Description}'s composer"); } + + protected override Drawable CreateTimelineContent() => new TimelineHitObjectDisplay(composer.EditorBeatmap) + { + RelativeSizeAxes = Axes.Both, + }; } } diff --git a/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs b/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs index 752356e8c4..1b9d1be4f8 100644 --- a/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs +++ b/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs @@ -20,6 +20,8 @@ namespace osu.Game.Screens.Edit private readonly BindableBeatDivisor beatDivisor = new BindableBeatDivisor(); + private TimelineArea timelineArea; + [BackgroundDependencyLoader(true)] private void load([CanBeNull] BindableBeatDivisor beatDivisor) { @@ -64,7 +66,7 @@ namespace osu.Game.Screens.Edit { RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { Right = 5 }, - Child = CreateTimeline() + Child = timelineArea = CreateTimelineArea() }, new BeatDivisorControl(beatDivisor) { RelativeSizeAxes = Axes.Both } }, @@ -97,11 +99,15 @@ namespace osu.Game.Screens.Edit { mainContent.Add(content); content.FadeInFromZero(300, Easing.OutQuint); + + LoadComponentAsync(CreateTimelineContent(), timelineArea.Add); }); } protected abstract Drawable CreateMainContent(); - protected virtual Drawable CreateTimeline() => new TimelineArea { RelativeSizeAxes = Axes.Both }; + protected virtual Drawable CreateTimelineContent() => new Container { }; + + protected TimelineArea CreateTimelineArea() => new TimelineArea { RelativeSizeAxes = Axes.Both }; } } diff --git a/osu.Game/Screens/Edit/IEditorBeatmap.cs b/osu.Game/Screens/Edit/IEditorBeatmap.cs index 2f250ba446..3e3418ef79 100644 --- a/osu.Game/Screens/Edit/IEditorBeatmap.cs +++ b/osu.Game/Screens/Edit/IEditorBeatmap.cs @@ -23,6 +23,11 @@ namespace osu.Game.Screens.Edit /// Invoked when a is removed from this . /// event Action HitObjectRemoved; + + /// + /// Invoked when the start time of a in this was changed. + /// + event Action StartTimeChanged; } /// From e76f8bdd6414542de669ea0301bebf921cf0be06 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 5 Dec 2019 23:31:21 +0900 Subject: [PATCH 0110/1829] Fix warnings --- .../Editor/TestSceneEditorComposeTimeline.cs | 16 +++---- .../Timeline/TimelineHitObjectDisplay.cs | 43 ++++++++++++------- .../Screens/Edit/EditorScreenWithTimeline.cs | 2 +- 3 files changed, 34 insertions(+), 27 deletions(-) diff --git a/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs b/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs index b67ea798a0..2b46418659 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs @@ -35,20 +35,14 @@ namespace osu.Game.Tests.Visual.Editor typeof(CentreMarker) }; - [Cached(typeof(IEditorBeatmap))] - private readonly EditorBeatmap editorBeatmap; - - public TestSceneEditorComposeTimeline() - { - editorBeatmap = new EditorBeatmap( - (Beatmap) - CreateWorkingBeatmap(new OsuRuleset().RulesetInfo).GetPlayableBeatmap(new OsuRuleset().RulesetInfo, new Mod[] { }) - ); - } - [BackgroundDependencyLoader] private void load(AudioManager audio) { + var editorBeatmap = new EditorBeatmap( + (Beatmap) + CreateWorkingBeatmap(new OsuRuleset().RulesetInfo).GetPlayableBeatmap(new OsuRuleset().RulesetInfo, new Mod[] { }) + ); + Beatmap.Value = new WaveformTestBeatmap(audio); Children = new Drawable[] diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index fc16d29639..337fd9a6b2 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -44,7 +44,12 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline d.Expire(); } - private void add(HitObject h) => Add(new TimelineHitObjectRepresentation(h)); + private void add(HitObject h) + { + var yOffset = Children.Count(d => d.X == h.StartTime); + + Add(new TimelineHitObjectRepresentation(h) { Y = -yOffset * 4 }); + } private class TimelineHitObjectRepresentation : CompositeDrawable { @@ -52,7 +57,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline public TimelineHitObjectRepresentation(HitObject hitObject) { - this.HitObject = hitObject; + HitObject = hitObject; Anchor = Anchor.CentreLeft; Origin = Anchor.CentreLeft; @@ -63,6 +68,25 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline RelativePositionAxes = Axes.X; RelativeSizeAxes = Axes.X; + if (hitObject is IHasEndTime) + { + AddInternal(new Container + { + CornerRadius = 2, + Masking = true, + Size = new Vector2(1, 3), + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + RelativePositionAxes = Axes.X, + RelativeSizeAxes = Axes.X, + Colour = Color4.Black, + Child = new Box + { + RelativeSizeAxes = Axes.Both, + } + }); + } + AddInternal(new Circle { Size = new Vector2(16), @@ -71,20 +95,9 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline RelativePositionAxes = Axes.X, AlwaysPresent = true, Colour = Color4.White, + BorderColour = Color4.Black, + BorderThickness = 3, }); - - if (hitObject is IHasEndTime) - { - AddInternal(new Box - { - Size = new Vector2(1, 5), - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - RelativePositionAxes = Axes.X, - RelativeSizeAxes = Axes.X, - Colour = Color4.White, - }); - } } } } diff --git a/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs b/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs index 1b9d1be4f8..aa8d99b517 100644 --- a/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs +++ b/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs @@ -106,7 +106,7 @@ namespace osu.Game.Screens.Edit protected abstract Drawable CreateMainContent(); - protected virtual Drawable CreateTimelineContent() => new Container { }; + protected virtual Drawable CreateTimelineContent() => new Container(); protected TimelineArea CreateTimelineArea() => new TimelineArea { RelativeSizeAxes = Axes.Both }; } From 12a98438353fbec5966e234dad10ab8d7f4a1dc9 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 10:48:18 +0900 Subject: [PATCH 0111/1829] Move thickness to a constant --- .../Components/Timeline/TimelineHitObjectDisplay.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index 337fd9a6b2..7d6d8fd729 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -48,11 +48,13 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline { var yOffset = Children.Count(d => d.X == h.StartTime); - Add(new TimelineHitObjectRepresentation(h) { Y = -yOffset * 4 }); + Add(new TimelineHitObjectRepresentation(h) { Y = -yOffset * TimelineHitObjectRepresentation.THICKNESS }); } private class TimelineHitObjectRepresentation : CompositeDrawable { + public const float THICKNESS = 3; + public readonly HitObject HitObject; public TimelineHitObjectRepresentation(HitObject hitObject) @@ -74,7 +76,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline { CornerRadius = 2, Masking = true, - Size = new Vector2(1, 3), + Size = new Vector2(1, THICKNESS), Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, RelativePositionAxes = Axes.X, @@ -96,7 +98,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline AlwaysPresent = true, Colour = Color4.White, BorderColour = Color4.Black, - BorderThickness = 3, + BorderThickness = THICKNESS, }); } } From 28400aa865d4727eb885d50ffe0b0a1a553cff6c Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 11:26:50 +0900 Subject: [PATCH 0112/1829] Update test scene --- .../Editor/TestSceneEditorComposeTimeline.cs | 12 ++++-------- .../Compose/Components/Timeline/Timeline.cs | 19 ++++++++----------- .../Components/Timeline/TimelineArea.cs | 4 ++-- .../Timeline/TimelineHitObjectDisplay.cs | 2 ++ .../Screens/Edit/Compose/ComposeScreen.cs | 5 +---- 5 files changed, 17 insertions(+), 25 deletions(-) diff --git a/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs b/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs index 2b46418659..e618256c03 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs @@ -13,9 +13,7 @@ using osu.Framework.Graphics.Shapes; using osu.Framework.Timing; using osu.Game.Beatmaps; using osu.Game.Graphics.UserInterface; -using osu.Game.Rulesets.Mods; -using osu.Game.Rulesets.Osu; -using osu.Game.Rulesets.Osu.Objects; +using osu.Game.Rulesets.Objects; using osu.Game.Screens.Edit; using osu.Game.Screens.Edit.Compose.Components.Timeline; using osuTK; @@ -38,13 +36,10 @@ namespace osu.Game.Tests.Visual.Editor [BackgroundDependencyLoader] private void load(AudioManager audio) { - var editorBeatmap = new EditorBeatmap( - (Beatmap) - CreateWorkingBeatmap(new OsuRuleset().RulesetInfo).GetPlayableBeatmap(new OsuRuleset().RulesetInfo, new Mod[] { }) - ); - Beatmap.Value = new WaveformTestBeatmap(audio); + var editorBeatmap = new EditorBeatmap((Beatmap)Beatmap.Value.Beatmap); + Children = new Drawable[] { new FillFlowContainer @@ -60,6 +55,7 @@ namespace osu.Game.Tests.Visual.Editor }, new TimelineArea { + Child = new TimelineHitObjectDisplay(editorBeatmap), Anchor = Anchor.Centre, Origin = Anchor.Centre, RelativeSizeAxes = Axes.X, diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs index 2a565d028f..b4f3b1f610 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs @@ -36,18 +36,15 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline { this.adjustableClock = adjustableClock; - Children = new Drawable[] + Add(waveform = new WaveformGraph { - waveform = new WaveformGraph - { - RelativeSizeAxes = Axes.Both, - Colour = colours.Blue.Opacity(0.2f), - LowColour = colours.BlueLighter, - MidColour = colours.BlueDark, - HighColour = colours.BlueDarker, - Depth = float.MaxValue - }, - }; + RelativeSizeAxes = Axes.Both, + Colour = colours.Blue.Opacity(0.2f), + LowColour = colours.BlueLighter, + MidColour = colours.BlueDark, + HighColour = colours.BlueDarker, + Depth = float.MaxValue + }); // We don't want the centre marker to scroll AddInternal(new CentreMarker()); diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineArea.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineArea.cs index 93dac059e3..8909b3d422 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineArea.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineArea.cs @@ -14,7 +14,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline { public class TimelineArea : Container { - private Timeline timeline; + private readonly Timeline timeline = new Timeline { RelativeSizeAxes = Axes.Both }; protected override Container Content => timeline; @@ -111,7 +111,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline } } }, - timeline = new Timeline { RelativeSizeAxes = Axes.Both } + timeline }, }, ColumnDimensions = new[] diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index 7d6d8fd729..db4aca75e5 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -20,6 +20,8 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline public TimelineHitObjectDisplay(IEditorBeatmap beatmap) { + RelativeSizeAxes = Axes.Both; + this.beatmap = beatmap; } diff --git a/osu.Game/Screens/Edit/Compose/ComposeScreen.cs b/osu.Game/Screens/Edit/Compose/ComposeScreen.cs index 8511bc3242..cb8f2b2caa 100644 --- a/osu.Game/Screens/Edit/Compose/ComposeScreen.cs +++ b/osu.Game/Screens/Edit/Compose/ComposeScreen.cs @@ -35,9 +35,6 @@ namespace osu.Game.Screens.Edit.Compose return new ScreenWhiteBox.UnderConstructionMessage(ruleset == null ? "This beatmap" : $"{ruleset.Description}'s composer"); } - protected override Drawable CreateTimelineContent() => new TimelineHitObjectDisplay(composer.EditorBeatmap) - { - RelativeSizeAxes = Axes.Both, - }; + protected override Drawable CreateTimelineContent() => new TimelineHitObjectDisplay(composer.EditorBeatmap); } } From 23c7132c4fdc452ab2e3b1b7d60fd179f0ea4082 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 6 Dec 2019 11:53:22 +0900 Subject: [PATCH 0113/1829] Add missing license header --- osu.Game/Rulesets/Objects/PathControlPoint.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/osu.Game/Rulesets/Objects/PathControlPoint.cs b/osu.Game/Rulesets/Objects/PathControlPoint.cs index d68ef4112b..83436b7a36 100644 --- a/osu.Game/Rulesets/Objects/PathControlPoint.cs +++ b/osu.Game/Rulesets/Objects/PathControlPoint.cs @@ -1,3 +1,6 @@ +// 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 osu.Framework.Bindables; using osu.Game.Rulesets.Objects.Types; From 8be6abf6076224b1a3a5a7aa1490793911ab7426 Mon Sep 17 00:00:00 2001 From: Ganendra Afrasya Date: Fri, 6 Dec 2019 10:07:16 +0700 Subject: [PATCH 0114/1829] Add param to let function return lighter colour for some diff --- osu.Game/Beatmaps/Drawables/DifficultyIcon.cs | 2 +- osu.Game/Graphics/OsuColour.cs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs index 025b7e11fd..7bd40af512 100644 --- a/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs +++ b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs @@ -168,7 +168,7 @@ namespace osu.Game.Beatmaps.Drawables difficultyName.Text = beatmap.Version; starRating.Text = $"{beatmap.StarDifficulty:0.##}"; - difficultyFlow.Colour = beatmap.DifficultyRating == DifficultyRating.ExpertPlus ? colours.Gray9 : colours.ForDifficultyRating(beatmap.DifficultyRating); + difficultyFlow.Colour = colours.ForDifficultyRating(beatmap.DifficultyRating, true); return true; } diff --git a/osu.Game/Graphics/OsuColour.cs b/osu.Game/Graphics/OsuColour.cs index af66f57f14..2dc12b3e67 100644 --- a/osu.Game/Graphics/OsuColour.cs +++ b/osu.Game/Graphics/OsuColour.cs @@ -38,7 +38,7 @@ namespace osu.Game.Graphics } } - public Color4 ForDifficultyRating(DifficultyRating difficulty) + public Color4 ForDifficultyRating(DifficultyRating difficulty, bool useLighterColour = false) { switch (difficulty) { @@ -56,10 +56,10 @@ namespace osu.Game.Graphics return Pink; case DifficultyRating.Expert: - return Purple; + return useLighterColour ? PurpleLight : Purple; case DifficultyRating.ExpertPlus: - return Gray0; + return useLighterColour ? Gray9 : Gray0; } } From 9f4c8db39508f52fe377d07d58cee38682dc1087 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 12:17:41 +0900 Subject: [PATCH 0115/1829] Add xmldoc --- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index 368520ba43..9ac967ef74 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -335,6 +335,9 @@ namespace osu.Game.Rulesets.Edit /// public abstract IEnumerable HitObjects { get; } + /// + /// An editor-specific beatmap, exposing mutation events. + /// public IEditorBeatmap EditorBeatmap { get; protected set; } /// From 9248fbe881f81a0d0d0516ad1e770179fb71a5d0 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 12:22:44 +0900 Subject: [PATCH 0116/1829] Remove extra checkboxes for now --- .../Edit/Compose/Components/Timeline/TimelineArea.cs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineArea.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineArea.cs index 8909b3d422..02e5db306d 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineArea.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineArea.cs @@ -24,8 +24,6 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline Masking = true; CornerRadius = 5; - OsuCheckbox hitObjectsCheckbox; - OsuCheckbox hitSoundsCheckbox; OsuCheckbox waveformCheckbox; InternalChildren = new Drawable[] @@ -64,8 +62,6 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline Spacing = new Vector2(0, 4), Children = new[] { - hitObjectsCheckbox = new OsuCheckbox { LabelText = "Hit objects" }, - hitSoundsCheckbox = new OsuCheckbox { LabelText = "Hit sounds" }, waveformCheckbox = new OsuCheckbox { LabelText = "Waveform" } } } @@ -123,8 +119,6 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline } }; - hitObjectsCheckbox.Current.Value = true; - hitSoundsCheckbox.Current.Value = true; waveformCheckbox.Current.Value = true; timeline.WaveformVisible.BindTo(waveformCheckbox.Current); From 247609388ff71a2321baae9171bd29d364c3b397 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 6 Dec 2019 12:31:22 +0900 Subject: [PATCH 0117/1829] Clean up unused/unnecessary properties --- .../Blueprints/Sliders/Components/PathControlPointPiece.cs | 5 +---- .../Sliders/Components/PathControlPointVisualiser.cs | 7 +------ .../Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs | 2 +- .../Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs | 2 +- 4 files changed, 4 insertions(+), 12 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs index 159916f16f..4fe02135c4 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs @@ -21,7 +21,6 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components public class PathControlPointPiece : BlueprintPiece { public Action RequestSelection; - public Action ControlPointsChanged; public readonly BindableBool IsSelected = new BindableBool(); public readonly int Index; @@ -103,7 +102,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components { markerRing.Alpha = IsSelected.Value ? 1 : 0; - Color4 colour = isSegmentSeparator ? colours.Red : colours.Yellow; + Color4 colour = slider.Path.ControlPoints[Index].Type.Value.HasValue ? colours.Red : colours.Yellow; if (IsHovered || IsSelected.Value) colour = Color4.White; marker.Colour = colour; @@ -176,7 +175,5 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components } protected override bool OnDragEnd(DragEndEvent e) => true; - - private bool isSegmentSeparator => slider.Path.ControlPoints[Index].Type.Value.HasValue; } } diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs index c47e4d7d4a..d599ebd893 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs @@ -23,8 +23,6 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components { public class PathControlPointVisualiser : CompositeDrawable, IKeyBindingHandler, IHasContextMenu { - public Action ControlPointsChanged; - internal readonly Container Pieces; private readonly Slider slider; private readonly bool allowSelection; @@ -57,10 +55,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components while (slider.Path.ControlPoints.Count > Pieces.Count) { - var piece = new PathControlPointPiece(slider, Pieces.Count) - { - ControlPointsChanged = c => ControlPointsChanged?.Invoke(c), - }; + var piece = new PathControlPointPiece(slider, Pieces.Count); if (allowSelection) piece.RequestSelection = selectPiece; diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs index 62a22dc858..341db249cc 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs @@ -49,7 +49,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders bodyPiece = new SliderBodyPiece(), headCirclePiece = new HitCirclePiece(), tailCirclePiece = new HitCirclePiece(), - new PathControlPointVisualiser(HitObject, false) { ControlPointsChanged = _ => updateSlider() }, + new PathControlPointVisualiser(HitObject, false) }; setState(PlacementState.Initial); diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs index ab52c906e8..8388d78c42 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs @@ -40,7 +40,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders BodyPiece = new SliderBodyPiece(), HeadBlueprint = CreateCircleSelectionBlueprint(slider, SliderPosition.Start), TailBlueprint = CreateCircleSelectionBlueprint(slider, SliderPosition.End), - ControlPointVisualiser = new PathControlPointVisualiser(sliderObject, true) { ControlPointsChanged = onNewControlPoints }, + ControlPointVisualiser = new PathControlPointVisualiser(sliderObject, true) }; } From b1426d1b22fe9789dd99df497ae2f315b1ac2c2a Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 12:51:43 +0900 Subject: [PATCH 0118/1829] Full impossible nullref --- .../Screens/Edit/Compose/ComposeScreen.cs | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/ComposeScreen.cs b/osu.Game/Screens/Edit/Compose/ComposeScreen.cs index cb8f2b2caa..6984716a2c 100644 --- a/osu.Game/Screens/Edit/Compose/ComposeScreen.cs +++ b/osu.Game/Screens/Edit/Compose/ComposeScreen.cs @@ -16,23 +16,20 @@ namespace osu.Game.Screens.Edit.Compose protected override Drawable CreateMainContent() { var ruleset = Beatmap.Value.BeatmapInfo.Ruleset?.CreateInstance(); - composer = ruleset?.CreateHitObjectComposer(); - if (composer != null) - { - var beatmapSkinProvider = new BeatmapSkinProvidingContainer(Beatmap.Value.Skin); + if (ruleset == null || composer == null) + return new ScreenWhiteBox.UnderConstructionMessage(ruleset == null ? "This beatmap" : $"{ruleset.Description}'s composer"); - // the beatmapSkinProvider is used as the fallback source here to allow the ruleset-specific skin implementation - // full access to all skin sources. - var rulesetSkinProvider = new SkinProvidingContainer(ruleset.CreateLegacySkinProvider(beatmapSkinProvider)); + var beatmapSkinProvider = new BeatmapSkinProvidingContainer(Beatmap.Value.Skin); - // load the skinning hierarchy first. - // this is intentionally done in two stages to ensure things are in a loaded state before exposing the ruleset to skin sources. - return beatmapSkinProvider.WithChild(rulesetSkinProvider.WithChild(composer)); - } + // the beatmapSkinProvider is used as the fallback source here to allow the ruleset-specific skin implementation + // full access to all skin sources. + var rulesetSkinProvider = new SkinProvidingContainer(ruleset.CreateLegacySkinProvider(beatmapSkinProvider)); - return new ScreenWhiteBox.UnderConstructionMessage(ruleset == null ? "This beatmap" : $"{ruleset.Description}'s composer"); + // load the skinning hierarchy first. + // this is intentionally done in two stages to ensure things are in a loaded state before exposing the ruleset to skin sources. + return beatmapSkinProvider.WithChild(rulesetSkinProvider.WithChild(composer)); } protected override Drawable CreateTimelineContent() => new TimelineHitObjectDisplay(composer.EditorBeatmap); From a89a23fe08ea1ec85749a665717c94c6d7b7cc9b Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 6 Dec 2019 13:08:28 +0900 Subject: [PATCH 0119/1829] Use linq to simplify some expressions --- .../Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs index 341db249cc..6f53a9e4b1 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs @@ -72,7 +72,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders case PlacementState.Body: // The given screen-space position may have been externally snapped, but the unsnapped position from the input manager // is used instead since snapping control points doesn't make much sense - HitObject.Path.ControlPoints[HitObject.Path.ControlPoints.Count - 1].Position.Value = ToLocalSpace(inputManager.CurrentState.Mouse.Position) - HitObject.Position; + HitObject.Path.ControlPoints.Last().Position.Value = ToLocalSpace(inputManager.CurrentState.Mouse.Position) - HitObject.Position; break; } } @@ -89,7 +89,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders switch (e.Button) { case MouseButton.Left: - HitObject.Path.ControlPoints.Add(new PathControlPoint { Position = { Value = HitObject.Path.ControlPoints[HitObject.Path.ControlPoints.Count - 1].Position.Value } }); + HitObject.Path.ControlPoints.Add(new PathControlPoint { Position = { Value = HitObject.Path.ControlPoints.Last().Position.Value } }); break; } @@ -108,6 +108,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders protected override bool OnDoubleClick(DoubleClickEvent e) { + // At the point of a double click, there's guaranteed to be at least two points - one from the click, and one from the cursor HitObject.Path.ControlPoints[HitObject.Path.ControlPoints.Count - 2].Type.Value = PathType.Bezier; return true; } From de23364608a8f6568f7bb1c46080c8c6ef6fee60 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 13:47:34 +0900 Subject: [PATCH 0120/1829] Add failing test --- .../Visual/Gameplay/TestScenePlayerLoader.cs | 26 +++++++++++++++++++ osu.Game/Screens/Play/PlayerLoader.cs | 10 ++++--- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs index 74ae641bfe..5142b98898 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Threading; +using System.Threading.Tasks; using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Audio; @@ -19,6 +20,7 @@ using osu.Game.Overlays; using osu.Game.Overlays.Notifications; using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Osu; +using osu.Game.Rulesets.Osu.Mods; using osu.Game.Rulesets.Scoring; using osu.Game.Scoring; using osu.Game.Screens; @@ -55,6 +57,9 @@ namespace osu.Game.Tests.Visual.Gameplay beforeLoadAction?.Invoke(); Beatmap.Value = CreateWorkingBeatmap(new OsuRuleset().RulesetInfo); + foreach (var mod in Mods.Value.OfType()) + mod.ApplyToClock(Beatmap.Value.Track); + InputManager.Child = container = new TestPlayerLoaderContainer( loader = new TestPlayerLoader(() => { @@ -63,6 +68,25 @@ namespace osu.Game.Tests.Visual.Gameplay })); } + /// + /// When exits early, it has to wait for the player load task + /// to complete before running disposal on player. This previously caused an issue where mod + /// speed adjustments were undone too late, causing cross-screen pollution. + /// + [Test] + public void TestEarlyExit() + { + AddStep("apply mods", () => Mods.Value = new[] { new OsuModNightcore() }); + AddStep("load dummy beatmap", () => ResetPlayer(false)); + AddUntilStep("wait for current", () => loader.IsCurrentScreen()); + AddAssert("mod rate applied", () => Beatmap.Value.Track.Rate != 1); + AddStep("exit loader", () => loader.Exit()); + AddUntilStep("wait for not current", () => !loader.IsCurrentScreen()); + AddAssert("player did not load", () => !player.IsLoaded); + AddUntilStep("player disposed", () => loader.DisposalTask?.IsCompleted == true); + AddAssert("mod rate still applied", () => Beatmap.Value.Track.Rate != 1); + } + [Test] public void TestBlockLoadViaMouseMovement() { @@ -196,6 +220,8 @@ namespace osu.Game.Tests.Visual.Gameplay { public new VisualSettings VisualSettings => base.VisualSettings; + public new Task DisposalTask => base.DisposalTask; + public TestPlayerLoader(Func createPlayer) : base(createPlayer) { diff --git a/osu.Game/Screens/Play/PlayerLoader.cs b/osu.Game/Screens/Play/PlayerLoader.cs index 87d902b547..774ca02be1 100644 --- a/osu.Game/Screens/Play/PlayerLoader.cs +++ b/osu.Game/Screens/Play/PlayerLoader.cs @@ -55,7 +55,9 @@ namespace osu.Game.Screens.Play protected override bool PlayResumeSound => false; - private Task loadTask; + protected Task LoadTask; + + protected Task DisposalTask; private InputManager inputManager; private IdleTracker idleTracker; @@ -159,7 +161,7 @@ namespace osu.Game.Screens.Play player.RestartCount = restartCount; player.RestartRequested = restartRequested; - loadTask = LoadComponentAsync(player, _ => info.Loading = false); + LoadTask = LoadComponentAsync(player, _ => info.Loading = false); } private void contentIn() @@ -250,7 +252,7 @@ namespace osu.Game.Screens.Play { if (!this.IsCurrentScreen()) return; - loadTask = null; + LoadTask = null; //By default, we want to load the player and never be returned to. //Note that this may change if the player we load requested a re-run. @@ -301,7 +303,7 @@ namespace osu.Game.Screens.Play if (isDisposing) { // if the player never got pushed, we should explicitly dispose it. - loadTask?.ContinueWith(_ => player.Dispose()); + DisposalTask = LoadTask?.ContinueWith(_ => player.Dispose()); } } From 48c6279e8bb9d9544afae76e9cb5d1598b62627b Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 13:49:01 +0900 Subject: [PATCH 0121/1829] Only undo adjustments in GameplayClockContainer if applied at least once --- osu.Game/Screens/Play/GameplayClockContainer.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Play/GameplayClockContainer.cs b/osu.Game/Screens/Play/GameplayClockContainer.cs index ff78d85bf0..58c9a6a784 100644 --- a/osu.Game/Screens/Play/GameplayClockContainer.cs +++ b/osu.Game/Screens/Play/GameplayClockContainer.cs @@ -214,10 +214,13 @@ namespace osu.Game.Screens.Play base.Update(); } + private bool speedAdjustmentsApplied; + private void updateRate() { if (sourceClock == null) return; + speedAdjustmentsApplied = true; sourceClock.ResetSpeedAdjustments(); if (sourceClock is IHasTempoAdjust tempo) @@ -239,7 +242,12 @@ namespace osu.Game.Screens.Play private void removeSourceClockAdjustments() { - sourceClock.ResetSpeedAdjustments(); + if (speedAdjustmentsApplied) + { + sourceClock.ResetSpeedAdjustments(); + speedAdjustmentsApplied = false; + } + (sourceClock as IAdjustableAudioComponent)?.RemoveAdjustment(AdjustableProperty.Frequency, pauseFreqAdjust); } } From 21ceb7f85dbbffb771c443f394a98385a3b75b87 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 14:40:45 +0900 Subject: [PATCH 0122/1829] Always display skins at native sizes for now --- osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs | 4 +++- osu.Game/Skinning/SkinnableDrawable.cs | 4 ++-- osu.Game/Skinning/SkinnableSprite.cs | 2 +- osu.Game/Skinning/SkinnableSpriteText.cs | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs b/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs index 479c250eab..ec9792d59d 100644 --- a/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs +++ b/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs @@ -49,7 +49,9 @@ namespace osu.Game.Rulesets.Osu.Skinning return this.GetAnimation(component.LookupName, true, false); case OsuSkinComponents.SliderFollowCircle: - return this.GetAnimation("sliderfollowcircle", true, true); + var followCircle = this.GetAnimation("sliderfollowcircle", true, true); + followCircle.Scale *= 0.5f; + return followCircle; case OsuSkinComponents.SliderBall: var sliderBallContent = this.GetAnimation("sliderb", true, true, ""); diff --git a/osu.Game/Skinning/SkinnableDrawable.cs b/osu.Game/Skinning/SkinnableDrawable.cs index 9ca5d60cb0..fda031e6cb 100644 --- a/osu.Game/Skinning/SkinnableDrawable.cs +++ b/osu.Game/Skinning/SkinnableDrawable.cs @@ -29,13 +29,13 @@ namespace osu.Game.Skinning /// A function to create the default skin implementation of this element. /// A conditional to decide whether to allow fallback to the default implementation if a skinned element is not present. /// How (if at all) the should be resize to fit within our own bounds. - public SkinnableDrawable(ISkinComponent component, Func defaultImplementation, Func allowFallback = null, ConfineMode confineMode = ConfineMode.ScaleDownToFit) + public SkinnableDrawable(ISkinComponent component, Func defaultImplementation, Func allowFallback = null, ConfineMode confineMode = ConfineMode.NoScaling) : this(component, allowFallback, confineMode) { createDefault = defaultImplementation; } - protected SkinnableDrawable(ISkinComponent component, Func allowFallback = null, ConfineMode confineMode = ConfineMode.ScaleDownToFit) + protected SkinnableDrawable(ISkinComponent component, Func allowFallback = null, ConfineMode confineMode = ConfineMode.NoScaling) : base(allowFallback) { this.component = component; diff --git a/osu.Game/Skinning/SkinnableSprite.cs b/osu.Game/Skinning/SkinnableSprite.cs index e225bfc490..5352928ec6 100644 --- a/osu.Game/Skinning/SkinnableSprite.cs +++ b/osu.Game/Skinning/SkinnableSprite.cs @@ -19,7 +19,7 @@ namespace osu.Game.Skinning [Resolved] private TextureStore textures { get; set; } - public SkinnableSprite(string textureName, Func allowFallback = null, ConfineMode confineMode = ConfineMode.ScaleDownToFit) + public SkinnableSprite(string textureName, Func allowFallback = null, ConfineMode confineMode = ConfineMode.NoScaling) : base(new SpriteComponent(textureName), allowFallback, confineMode) { } diff --git a/osu.Game/Skinning/SkinnableSpriteText.cs b/osu.Game/Skinning/SkinnableSpriteText.cs index e72f9c9811..567dd348e1 100644 --- a/osu.Game/Skinning/SkinnableSpriteText.cs +++ b/osu.Game/Skinning/SkinnableSpriteText.cs @@ -8,7 +8,7 @@ namespace osu.Game.Skinning { public class SkinnableSpriteText : SkinnableDrawable, IHasText { - public SkinnableSpriteText(ISkinComponent component, Func defaultImplementation, Func allowFallback = null, ConfineMode confineMode = ConfineMode.ScaleDownToFit) + public SkinnableSpriteText(ISkinComponent component, Func defaultImplementation, Func allowFallback = null, ConfineMode confineMode = ConfineMode.NoScaling) : base(component, defaultImplementation, allowFallback, confineMode) { } From 27dd12a66d885d12b74ddc1a5e0ead595b2f0d30 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 6 Dec 2019 15:06:31 +0900 Subject: [PATCH 0123/1829] Rewrite slider length calculation for readability --- osu.Game/Rulesets/Objects/SliderPath.cs | 63 +++++++++++++------------ 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/osu.Game/Rulesets/Objects/SliderPath.cs b/osu.Game/Rulesets/Objects/SliderPath.cs index 6ad5d2f1c3..6c24ee6878 100644 --- a/osu.Game/Rulesets/Objects/SliderPath.cs +++ b/osu.Game/Rulesets/Objects/SliderPath.cs @@ -40,6 +40,7 @@ namespace osu.Game.Rulesets.Objects private readonly List calculatedPath = new List(); private readonly List cumulativeLength = new List(); + private double calculatedLength; /// /// Creates a new . @@ -158,7 +159,7 @@ namespace osu.Game.Rulesets.Objects return; calculatePath(); - calculateCumulativeLength(); + calculateLength(); pathCache.Validate(); } @@ -227,46 +228,48 @@ namespace osu.Game.Rulesets.Objects } } - private void calculateCumulativeLength() + private void calculateLength() { - double l = 0; - + calculatedLength = 0; cumulativeLength.Clear(); - cumulativeLength.Add(l); + cumulativeLength.Add(0); - double? expectedDistance = ExpectedDistance.Value; - - for (int i = 0; i < calculatedPath.Count - 1; ++i) + for (int i = 0; i < calculatedPath.Count - 1; i++) { Vector2 diff = calculatedPath[i + 1] - calculatedPath[i]; - double d = diff.Length; - - // Shorted slider paths that are too long compared to the expected distance - if (expectedDistance.HasValue && expectedDistance - l < d) - { - calculatedPath[i + 1] = calculatedPath[i] + diff * (float)((expectedDistance - l) / d); - calculatedPath.RemoveRange(i + 2, calculatedPath.Count - 2 - i); - - l = expectedDistance.Value; - cumulativeLength.Add(l); - break; - } - - l += d; - cumulativeLength.Add(l); + calculatedLength += diff.Length; + cumulativeLength.Add(calculatedLength); } - // Lengthen slider paths that are too short compared to the expected distance - if (expectedDistance.HasValue && l < expectedDistance && calculatedPath.Count > 1) + if (ExpectedDistance.Value is double expectedDistance && calculatedLength != expectedDistance) { - Vector2 diff = calculatedPath[calculatedPath.Count - 1] - calculatedPath[calculatedPath.Count - 2]; - double d = diff.Length; + // The last length is always incorrect + cumulativeLength.RemoveAt(cumulativeLength.Count - 1); - if (d <= 0) + int pathEndIndex = calculatedPath.Count - 1; + + if (calculatedLength > expectedDistance) + { + // The path will be shortened further, in which case we should trim any more unnecessary lengths and their associated path segments + while (cumulativeLength.Count > 0 && cumulativeLength[cumulativeLength.Count - 1] > expectedDistance) + { + cumulativeLength.RemoveAt(cumulativeLength.Count - 1); + calculatedPath.RemoveAt(pathEndIndex--); + } + } + + if (pathEndIndex <= 0) + { + // The expected distance is negative or zero + // TODO: Perhaps negative path lengths should be disallowed altogether return; + } - calculatedPath[calculatedPath.Count - 1] += diff * (float)((expectedDistance - l) / d); - cumulativeLength[calculatedPath.Count - 1] = expectedDistance.Value; + // The direction of the segment to shorten or lengthen + Vector2 dir = (calculatedPath[pathEndIndex] - calculatedPath[pathEndIndex - 1]).Normalized(); + + calculatedPath[pathEndIndex] = calculatedPath[pathEndIndex - 1] + dir * (float)(expectedDistance - cumulativeLength[cumulativeLength.Count - 1]); + cumulativeLength.Add(expectedDistance); } } From 12f1c9e088c307ac86a1411fd7e80d6feba7fefd Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 15:29:02 +0900 Subject: [PATCH 0124/1829] Fix test failure --- osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs index 5142b98898..dbea8d28a6 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs @@ -76,8 +76,7 @@ namespace osu.Game.Tests.Visual.Gameplay [Test] public void TestEarlyExit() { - AddStep("apply mods", () => Mods.Value = new[] { new OsuModNightcore() }); - AddStep("load dummy beatmap", () => ResetPlayer(false)); + AddStep("load dummy beatmap", () => ResetPlayer(false, () => Mods.Value = new[] { new OsuModNightcore() })); AddUntilStep("wait for current", () => loader.IsCurrentScreen()); AddAssert("mod rate applied", () => Beatmap.Value.Track.Rate != 1); AddStep("exit loader", () => loader.Exit()); From 2654710d917e47b44f80f38d3600203d14355a0c Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 6 Dec 2019 15:37:00 +0900 Subject: [PATCH 0125/1829] Add tests and fix negative expected distances --- .../Visual/Gameplay/TestSceneSliderPath.cs | 34 +++++++++++++++++++ osu.Game/Rulesets/Objects/SliderPath.cs | 1 + 2 files changed, 35 insertions(+) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneSliderPath.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneSliderPath.cs index fe2cc188a5..27d39d0f17 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneSliderPath.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneSliderPath.cs @@ -146,7 +146,41 @@ namespace osu.Game.Tests.Visual.Gameplay break; } }); + } + [Test] + public void TestLengthenLastSegment() + { + AddStep("create path", () => path.ControlPoints.AddRange(createSegment(PathType.Linear, Vector2.Zero, new Vector2(0, 100), new Vector2(100)))); + AddStep("lengthen last segment", () => path.ExpectedDistance.Value = 300); + } + + [Test] + public void TestShortenLastSegment() + { + AddStep("create path", () => path.ControlPoints.AddRange(createSegment(PathType.Linear, Vector2.Zero, new Vector2(0, 100), new Vector2(100)))); + AddStep("shorten last segment", () => path.ExpectedDistance.Value = 150); + } + + [Test] + public void TestShortenFirstSegment() + { + AddStep("create path", () => path.ControlPoints.AddRange(createSegment(PathType.Linear, Vector2.Zero, new Vector2(0, 100), new Vector2(100)))); + AddStep("shorten first segment", () => path.ExpectedDistance.Value = 50); + } + + [Test] + public void TestShortenToZeroLength() + { + AddStep("create path", () => path.ControlPoints.AddRange(createSegment(PathType.Linear, Vector2.Zero, new Vector2(0, 100), new Vector2(100)))); + AddStep("shorten to 0 length", () => path.ExpectedDistance.Value = 0); + } + + [Test] + public void TestShortenToNegativeLength() + { + AddStep("create path", () => path.ControlPoints.AddRange(createSegment(PathType.Linear, Vector2.Zero, new Vector2(0, 100), new Vector2(100)))); + AddStep("shorten to -10 length", () => path.ExpectedDistance.Value = -10); } private List createSegment(PathType type, params Vector2[] controlPoints) diff --git a/osu.Game/Rulesets/Objects/SliderPath.cs b/osu.Game/Rulesets/Objects/SliderPath.cs index 6c24ee6878..095353e3f3 100644 --- a/osu.Game/Rulesets/Objects/SliderPath.cs +++ b/osu.Game/Rulesets/Objects/SliderPath.cs @@ -262,6 +262,7 @@ namespace osu.Game.Rulesets.Objects { // The expected distance is negative or zero // TODO: Perhaps negative path lengths should be disallowed altogether + cumulativeLength.Add(0); return; } From af35df4077015c5b45ebb5b8f304e9bdc58702f0 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 15:42:11 +0900 Subject: [PATCH 0126/1829] Add multiple mod testing and update test code style --- .../TestSceneModCustomizationSettings.cs | 56 +++++++++++-------- osu.Game/Overlays/Mods/ModSelectOverlay.cs | 2 +- 2 files changed, 34 insertions(+), 24 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModCustomizationSettings.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModCustomizationSettings.cs index 83d77cccdb..f789e60252 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModCustomizationSettings.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModCustomizationSettings.cs @@ -27,7 +27,7 @@ namespace osu.Game.Tests.Visual.UserInterface Anchor = Anchor.BottomCentre, }); - var testMod = new TestModCustomizable(); + var testMod = new TestModCustomizable1(); AddStep("open", modSelect.Show); AddAssert("button disabled", () => !modSelect.CustomizeButton.Enabled.Value); @@ -44,64 +44,74 @@ namespace osu.Game.Tests.Visual.UserInterface public new TriangleButton CustomizeButton => base.CustomizeButton; public void SelectMod(Mod mod) => - ModSectionsContainer.Children.Single((s) => s.ModType == mod.Type) - .ButtonsContainer.OfType().Single(b => b.Mods.Any(m => m.GetType() == mod.GetType())).SelectNext(1); + ModSectionsContainer.Children.Single(s => s.ModType == mod.Type) + .ButtonsContainer.OfType().Single(b => b.Mods.Any(m => m.GetType() == mod.GetType())).SelectNext(1); public ModControlSection GetControlSection(Mod mod) => - ModSettingsContent.Children.FirstOrDefault((s) => s.Mod == mod); + ModSettingsContent.Children.FirstOrDefault(s => s.Mod == mod); protected override void LoadComplete() { base.LoadComplete(); foreach (var section in ModSectionsContainer) + { if (section.ModType == ModType.Conversion) - section.Mods = new Mod[] { new TestModCustomizable() }; + { + section.Mods = new Mod[] + { + new TestModCustomizable1(), + new TestModCustomizable2() + }; + } else section.Mods = new Mod[] { }; + } } } - private class TestModCustomizable : Mod, IModHasSettings + private class TestModCustomizable1 : TestModCustomizable { - public override string Name => "Customizable Mod"; + public override string Name => "Customizable Mod 1"; - public override string Acronym => "CM"; + public override string Acronym => "CM1"; + } + private class TestModCustomizable2 : TestModCustomizable + { + public override string Name => "Customizable Mod 2"; + + public override string Acronym => "CM2"; + } + + private abstract class TestModCustomizable : Mod, IModHasSettings + { public override double ScoreMultiplier => 1.0; public override ModType Type => ModType.Conversion; - public readonly BindableFloat sliderBindable = new BindableFloat + public readonly BindableFloat SliderBindable = new BindableFloat { MinValue = 0, MaxValue = 10, }; - public readonly BindableBool tickBindable = new BindableBool(); + public readonly BindableBool TickBindable = new BindableBool(); - public Drawable[] CreateControls() - { - BindableFloat sliderControl = new BindableFloat(); - BindableBool tickControl = new BindableBool(); - - sliderControl.BindTo(sliderBindable); - tickControl.BindTo(tickBindable); - - return new Drawable[] + public Drawable[] CreateControls() => + new Drawable[] { new SettingsSlider { LabelText = "Slider", - Bindable = sliderControl + Bindable = SliderBindable }, new SettingsCheckbox { LabelText = "Checkbox", - Bindable = tickControl + Bindable = TickBindable } }; - } } } -} \ No newline at end of file +} diff --git a/osu.Game/Overlays/Mods/ModSelectOverlay.cs b/osu.Game/Overlays/Mods/ModSelectOverlay.cs index fc5ed1b3f3..d7d1135e81 100644 --- a/osu.Game/Overlays/Mods/ModSelectOverlay.cs +++ b/osu.Game/Overlays/Mods/ModSelectOverlay.cs @@ -345,7 +345,7 @@ namespace osu.Game.Overlays.Mods if (added is IModHasSettings) ModSettingsContent.Add(new ModControlSection(added)); else if (removed is IModHasSettings) - ModSettingsContent.Remove(ModSettingsContent.Children.Where(section => section.Mod == removed).Single()); + ModSettingsContent.Remove(ModSettingsContent.Children.Single(section => section.Mod == removed)); CustomizeButton.Enabled.Value = ModSettingsContent.Children.Count > 0; From 3358ab9f8abde79becfd4bca2a56361170aef2e1 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 6 Dec 2019 15:53:01 +0900 Subject: [PATCH 0127/1829] Adjust diffcalc test expected value The difference is caused by the reworked calculateLength() of SliderPath. This comes as a result of the increased accuracy of path lengthenings due to calculating the final position relative to the second-to-last point, rather than relative to the last point. --- osu.Game.Rulesets.Osu.Tests/OsuDifficultyCalculatorTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu.Tests/OsuDifficultyCalculatorTest.cs b/osu.Game.Rulesets.Osu.Tests/OsuDifficultyCalculatorTest.cs index 693faee3b7..85a41137d4 100644 --- a/osu.Game.Rulesets.Osu.Tests/OsuDifficultyCalculatorTest.cs +++ b/osu.Game.Rulesets.Osu.Tests/OsuDifficultyCalculatorTest.cs @@ -14,7 +14,7 @@ namespace osu.Game.Rulesets.Osu.Tests { protected override string ResourceAssembly => "osu.Game.Rulesets.Osu"; - [TestCase(6.931145117263422, "diffcalc-test")] + [TestCase(6.9311451172608853d, "diffcalc-test")] [TestCase(1.0736587013228804d, "zero-length-sliders")] public void Test(double expected, string name) => base.Test(expected, name); From b4e1b5fa983fdb826ec8693b3fabdcd66e03e2c1 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 6 Dec 2019 15:53:19 +0900 Subject: [PATCH 0128/1829] Explose + use the full calculated length of the path --- .../Blueprints/Sliders/SliderPlacementBlueprint.cs | 3 +-- .../Blueprints/Sliders/SliderSelectionBlueprint.cs | 3 +-- osu.Game/Rulesets/Objects/SliderPath.cs | 14 +++++++++++++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs index 6f53a9e4b1..bbdc43e16f 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs @@ -133,8 +133,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders private void updateSlider() { - HitObject.Path.ExpectedDistance.Value = null; - HitObject.Path.ExpectedDistance.Value = composer?.GetSnappedDistanceFromDistance(HitObject.StartTime, (float)HitObject.Path.Distance) ?? (float)HitObject.Path.Distance; + HitObject.Path.ExpectedDistance.Value = composer?.GetSnappedDistanceFromDistance(HitObject.StartTime, (float)HitObject.Path.CalculatedDistance) ?? (float)HitObject.Path.CalculatedDistance; bodyPiece.UpdateFrom(HitObject); headCirclePiece.UpdateFrom(HitObject.HeadCircle); diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs index 8388d78c42..7b3ca29e35 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs @@ -114,8 +114,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders private void onNewControlPoints(Vector2[] controlPoints) { - HitObject.Path.ExpectedDistance.Value = null; - HitObject.Path.ExpectedDistance.Value = composer?.GetSnappedDistanceFromDistance(HitObject.StartTime, (float)HitObject.Path.Distance) ?? (float)HitObject.Path.Distance; + HitObject.Path.ExpectedDistance.Value = composer?.GetSnappedDistanceFromDistance(HitObject.StartTime, (float)HitObject.Path.CalculatedDistance) ?? (float)HitObject.Path.CalculatedDistance; UpdateHitObject(); } diff --git a/osu.Game/Rulesets/Objects/SliderPath.cs b/osu.Game/Rulesets/Objects/SliderPath.cs index 095353e3f3..f6e7c40e12 100644 --- a/osu.Game/Rulesets/Objects/SliderPath.cs +++ b/osu.Game/Rulesets/Objects/SliderPath.cs @@ -103,6 +103,18 @@ namespace osu.Game.Rulesets.Objects } } + /// + /// The distance of the path prior to lengthening/shortening to account for . + /// + public double CalculatedDistance + { + get + { + ensureValid(); + return calculatedLength; + } + } + /// /// Computes the slider path until a given progress that ranges from 0 (beginning of the slider) /// to 1 (end of the slider) and stores the generated path in the given list. @@ -251,7 +263,7 @@ namespace osu.Game.Rulesets.Objects if (calculatedLength > expectedDistance) { // The path will be shortened further, in which case we should trim any more unnecessary lengths and their associated path segments - while (cumulativeLength.Count > 0 && cumulativeLength[cumulativeLength.Count - 1] > expectedDistance) + while (cumulativeLength.Count > 0 && cumulativeLength[cumulativeLength.Count - 1] >= expectedDistance) { cumulativeLength.RemoveAt(cumulativeLength.Count - 1); calculatedPath.RemoveAt(pathEndIndex--); From d29ccdc25e4ea515c54a3de945fd9724271bf3e7 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 6 Dec 2019 16:36:08 +0900 Subject: [PATCH 0129/1829] Fix selection blueprint not re-snapping the path --- .../Blueprints/Sliders/SliderSelectionBlueprint.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs index 7b3ca29e35..9a504445f4 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs @@ -4,6 +4,7 @@ using System; using System.Diagnostics; using osu.Framework.Allocation; +using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Primitives; using osu.Framework.Graphics.UserInterface; @@ -44,6 +45,16 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders }; } + private IBindable pathVersion; + + protected override void LoadComplete() + { + base.LoadComplete(); + + pathVersion = HitObject.Path.Version.GetBoundCopy(); + pathVersion.BindValueChanged(_ => updatePath()); + } + protected override void Update() { base.Update(); @@ -112,10 +123,9 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders return insertionIndex; } - private void onNewControlPoints(Vector2[] controlPoints) + private void updatePath() { HitObject.Path.ExpectedDistance.Value = composer?.GetSnappedDistanceFromDistance(HitObject.StartTime, (float)HitObject.Path.CalculatedDistance) ?? (float)HitObject.Path.CalculatedDistance; - UpdateHitObject(); } From 2b5f9515de1b8fe386a76e6f2c1398912005dd5c Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 6 Dec 2019 17:03:54 +0900 Subject: [PATCH 0130/1829] Fix multiple control point deletions --- .../Components/PathControlPointVisualiser.cs | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs index d599ebd893..cbc2a20328 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs @@ -14,6 +14,7 @@ using osu.Framework.Input; using osu.Framework.Input.Bindings; using osu.Framework.Input.Events; using osu.Game.Graphics.UserInterface; +using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Osu.Objects; using osu.Game.Screens.Edit.Compose; using osuTK; @@ -100,21 +101,15 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components private bool deleteSelected() { - int countDeleted = 0; - - foreach (var piece in Pieces) - { - if (piece.IsSelected.Value) - { - slider.Path.ControlPoints.RemoveAt(piece.Index); - countDeleted++; - } - } + List toRemove = Pieces.Where(p => p.IsSelected.Value).Select(p => p.Index).Select(i => slider.Path.ControlPoints[i]).ToList(); // Ensure that there are any points to be deleted - if (countDeleted == 0) + if (toRemove.Count == 0) return false; + foreach (var c in toRemove) + slider.Path.ControlPoints.Remove(c); + // If there are 0 remaining control points, treat the slider as being deleted if (slider.Path.ControlPoints.Count == 0) { From 23e47530c50a38bd42874f85ec4c698b967f9e86 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 17:09:24 +0900 Subject: [PATCH 0131/1829] Add a method for getting settings UI components automatically from a target class --- .../Configuration/SettingSourceAttribute.cs | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 osu.Game/Configuration/SettingSourceAttribute.cs diff --git a/osu.Game/Configuration/SettingSourceAttribute.cs b/osu.Game/Configuration/SettingSourceAttribute.cs new file mode 100644 index 0000000000..fe582b1461 --- /dev/null +++ b/osu.Game/Configuration/SettingSourceAttribute.cs @@ -0,0 +1,85 @@ +// 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 System.Linq; +using System.Reflection; +using JetBrains.Annotations; +using osu.Framework.Bindables; +using osu.Framework.Graphics; +using osu.Game.Overlays.Settings; + +namespace osu.Game.Configuration +{ + /// + /// An attribute to mark a bindable as being exposed to the user via settings controls. + /// Can be used in conjunction with to automatically create UI controls. + /// + [MeansImplicitUse] + [AttributeUsage(AttributeTargets.Property)] + public class SettingSourceAttribute : Attribute + { + public string Label { get; } + + public string Description { get; } + + public SettingSourceAttribute(string label, string description = null) + { + Label = label ?? string.Empty; + Description = description ?? string.Empty; + } + } + + public static class SettingSourceExtensions + { + public static IEnumerable CreateSettingsControls(this object obj) + { + var configProperties = obj.GetType().GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance).Where(p => p.GetCustomAttribute(true) != null); + + foreach (var property in configProperties) + { + var attr = property.GetCustomAttribute(true); + + switch (property.GetValue(obj)) + { + case BindableNumber bNumber: + yield return new SettingsSlider + { + LabelText = attr.Label, + Bindable = bNumber + }; + + break; + + case BindableNumber bNumber: + yield return new SettingsSlider + { + LabelText = attr.Label, + Bindable = bNumber + }; + + break; + + case BindableNumber bNumber: + yield return new SettingsSlider + { + LabelText = attr.Label, + Bindable = bNumber + }; + + break; + + case Bindable bBool: + yield return new SettingsCheckbox + { + LabelText = attr.Label, + Bindable = bBool + }; + + break; + } + } + } + } +} From a5d5099868f2c7d1a8672dc266030065366592c2 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 17:09:48 +0900 Subject: [PATCH 0132/1829] Use SettingsSource for mod cusomisation --- .../TestSceneModCustomizationSettings.cs | 30 +++++-------------- osu.Game/Overlays/Mods/ModControlSection.cs | 6 ++-- osu.Game/Overlays/Mods/ModSelectOverlay.cs | 24 ++++++++------- osu.Game/Rulesets/Mods/IModHasSettings.cs | 15 ---------- 4 files changed, 25 insertions(+), 50 deletions(-) delete mode 100644 osu.Game/Rulesets/Mods/IModHasSettings.cs diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModCustomizationSettings.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModCustomizationSettings.cs index f789e60252..8227fe8f7a 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModCustomizationSettings.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModCustomizationSettings.cs @@ -6,9 +6,9 @@ using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Game.Configuration; using osu.Game.Graphics.UserInterface; using osu.Game.Overlays.Mods; -using osu.Game.Overlays.Settings; using osu.Game.Rulesets.Mods; namespace osu.Game.Tests.Visual.UserInterface @@ -47,9 +47,6 @@ namespace osu.Game.Tests.Visual.UserInterface ModSectionsContainer.Children.Single(s => s.ModType == mod.Type) .ButtonsContainer.OfType().Single(b => b.Mods.Any(m => m.GetType() == mod.GetType())).SelectNext(1); - public ModControlSection GetControlSection(Mod mod) => - ModSettingsContent.Children.FirstOrDefault(s => s.Mod == mod); - protected override void LoadComplete() { base.LoadComplete(); @@ -84,34 +81,23 @@ namespace osu.Game.Tests.Visual.UserInterface public override string Acronym => "CM2"; } - private abstract class TestModCustomizable : Mod, IModHasSettings + private abstract class TestModCustomizable : Mod, IApplicableMod { public override double ScoreMultiplier => 1.0; public override ModType Type => ModType.Conversion; - public readonly BindableFloat SliderBindable = new BindableFloat + [SettingSource("Sample float", "Change something for a mod")] + public BindableFloat SliderBindable { get; } = new BindableFloat { MinValue = 0, MaxValue = 10, + Default = 5, + Value = 7 }; - public readonly BindableBool TickBindable = new BindableBool(); - - public Drawable[] CreateControls() => - new Drawable[] - { - new SettingsSlider - { - LabelText = "Slider", - Bindable = SliderBindable - }, - new SettingsCheckbox - { - LabelText = "Checkbox", - Bindable = TickBindable - } - }; + [SettingSource("Sample bool", "Clicking this changes a setting")] + public BindableBool TickBindable { get; } = new BindableBool(); } } } diff --git a/osu.Game/Overlays/Mods/ModControlSection.cs b/osu.Game/Overlays/Mods/ModControlSection.cs index df6f4d15b0..f4b588ddb3 100644 --- a/osu.Game/Overlays/Mods/ModControlSection.cs +++ b/osu.Game/Overlays/Mods/ModControlSection.cs @@ -4,6 +4,7 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Game.Configuration; using osu.Game.Graphics; using osu.Game.Graphics.Sprites; using osu.Game.Rulesets.Mods; @@ -34,8 +35,7 @@ namespace osu.Game.Overlays.Mods RelativeSizeAxes = Axes.X, }; - if (Mod is IModHasSettings modHasSettings) - AddRange(modHasSettings.CreateControls()); + AddRange(Mod.CreateSettingsControls()); } [BackgroundDependencyLoader] @@ -53,4 +53,4 @@ namespace osu.Game.Overlays.Mods }); } } -} \ No newline at end of file +} diff --git a/osu.Game/Overlays/Mods/ModSelectOverlay.cs b/osu.Game/Overlays/Mods/ModSelectOverlay.cs index d7d1135e81..cfad0126eb 100644 --- a/osu.Game/Overlays/Mods/ModSelectOverlay.cs +++ b/osu.Game/Overlays/Mods/ModSelectOverlay.cs @@ -13,6 +13,7 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Input.Events; +using osu.Game.Configuration; using osu.Game.Graphics; using osu.Game.Graphics.Backgrounds; using osu.Game.Graphics.Containers; @@ -236,6 +237,7 @@ namespace osu.Game.Overlays.Mods Width = 180, Text = "Customization", Action = () => ModSettingsContainer.Alpha = ModSettingsContainer.Alpha == 1 ? 0 : 1, + Enabled = { Value = false }, Margin = new MarginPadding { Right = 20 @@ -331,7 +333,6 @@ namespace osu.Game.Overlays.Mods SelectedMods.ValueChanged += updateModSettings; Ruleset.ValueChanged += _ => ModSettingsContent.Clear(); - CustomizeButton.Enabled.Value = false; sampleOn = audio.Samples.Get(@"UI/check-on"); sampleOff = audio.Samples.Get(@"UI/check-off"); @@ -339,18 +340,21 @@ namespace osu.Game.Overlays.Mods private void updateModSettings(ValueChangedEvent> selectedMods) { - var added = selectedMods.NewValue.Except(selectedMods.OldValue).FirstOrDefault(); - var removed = selectedMods.OldValue.Except(selectedMods.NewValue).FirstOrDefault(); + foreach (var added in selectedMods.NewValue.Except(selectedMods.OldValue)) + { + var controls = added.CreateSettingsControls().ToList(); + if (controls.Count > 0) + ModSettingsContent.Add(new ModControlSection(added) { Children = controls }); + } - if (added is IModHasSettings) - ModSettingsContent.Add(new ModControlSection(added)); - else if (removed is IModHasSettings) - ModSettingsContent.Remove(ModSettingsContent.Children.Single(section => section.Mod == removed)); + foreach (var removed in selectedMods.OldValue.Except(selectedMods.NewValue)) + ModSettingsContent.RemoveAll(section => section.Mod == removed); - CustomizeButton.Enabled.Value = ModSettingsContent.Children.Count > 0; + bool hasSettings = ModSettingsContent.Children.Count > 0; + CustomizeButton.Enabled.Value = hasSettings; - if (ModSettingsContainer.Alpha == 1 && ModSettingsContent.Children.Count == 0) - ModSettingsContainer.Alpha = 0; + if (!hasSettings) + ModSettingsContainer.Hide(); } public void DeselectAll() diff --git a/osu.Game/Rulesets/Mods/IModHasSettings.cs b/osu.Game/Rulesets/Mods/IModHasSettings.cs deleted file mode 100644 index b5058de82b..0000000000 --- a/osu.Game/Rulesets/Mods/IModHasSettings.cs +++ /dev/null @@ -1,15 +0,0 @@ -// 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; - -namespace osu.Game.Rulesets.Mods -{ - /// - /// An interface for mods that allows user control over it's properties. - /// - public interface IModHasSettings : IApplicableMod - { - Drawable[] CreateControls(); - } -} From 9de032e35f1394571e3fcc05b4caa94a81b3e27d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 17:10:06 +0900 Subject: [PATCH 0133/1829] Fix SettingsItem bindable logic --- osu.Game/Overlays/Settings/SettingsItem.cs | 29 ++++++++-------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/osu.Game/Overlays/Settings/SettingsItem.cs b/osu.Game/Overlays/Settings/SettingsItem.cs index 8863e43cca..212ef5545d 100644 --- a/osu.Game/Overlays/Settings/SettingsItem.cs +++ b/osu.Game/Overlays/Settings/SettingsItem.cs @@ -53,27 +53,10 @@ namespace osu.Game.Overlays.Settings } } - // hold a reference to the provided bindable so we don't have to in every settings section. - private Bindable bindable; - public virtual Bindable Bindable { - get => bindable; - - set - { - if (bindable != null) - controlWithCurrent?.Current.UnbindFrom(bindable); - - bindable = value; - controlWithCurrent?.Current.BindTo(bindable); - - if (ShowsDefaultIndicator) - { - restoreDefaultButton.Bindable = bindable.GetBoundCopy(); - restoreDefaultButton.Bindable.TriggerChange(); - } - } + get => controlWithCurrent.Current; + set => controlWithCurrent.Current = value; } public virtual IEnumerable FilterTerms => Keywords == null ? new[] { LabelText } : new List(Keywords) { LabelText }.ToArray(); @@ -110,7 +93,15 @@ namespace osu.Game.Overlays.Settings private void load() { if (controlWithCurrent != null) + { controlWithCurrent.Current.DisabledChanged += disabled => { Colour = disabled ? Color4.Gray : Color4.White; }; + + if (ShowsDefaultIndicator) + { + restoreDefaultButton.Bindable = controlWithCurrent.Current; + restoreDefaultButton.Bindable.TriggerChange(); + } + } } private class RestoreDefaultValueButton : Container, IHasTooltip From 901eb5d99639edc7a21caa1f2c7577507415e42a Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 18:03:50 +0900 Subject: [PATCH 0134/1829] Fix incorrect trigger logic --- osu.Game/Overlays/Settings/SettingsItem.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/osu.Game/Overlays/Settings/SettingsItem.cs b/osu.Game/Overlays/Settings/SettingsItem.cs index 212ef5545d..9c390c34ec 100644 --- a/osu.Game/Overlays/Settings/SettingsItem.cs +++ b/osu.Game/Overlays/Settings/SettingsItem.cs @@ -97,10 +97,7 @@ namespace osu.Game.Overlays.Settings controlWithCurrent.Current.DisabledChanged += disabled => { Colour = disabled ? Color4.Gray : Color4.White; }; if (ShowsDefaultIndicator) - { restoreDefaultButton.Bindable = controlWithCurrent.Current; - restoreDefaultButton.Bindable.TriggerChange(); - } } } @@ -116,6 +113,7 @@ namespace osu.Game.Overlays.Settings bindable = value; bindable.ValueChanged += _ => UpdateState(); bindable.DisabledChanged += _ => UpdateState(); + UpdateState(); } } From ed6d1ccd958622bbca51c8cab54f0c3dfd4a6296 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 17:09:24 +0900 Subject: [PATCH 0135/1829] Add a method for getting settings UI components automatically from a target class --- .../Configuration/SettingSourceAttribute.cs | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 osu.Game/Configuration/SettingSourceAttribute.cs diff --git a/osu.Game/Configuration/SettingSourceAttribute.cs b/osu.Game/Configuration/SettingSourceAttribute.cs new file mode 100644 index 0000000000..fe582b1461 --- /dev/null +++ b/osu.Game/Configuration/SettingSourceAttribute.cs @@ -0,0 +1,85 @@ +// 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 System.Linq; +using System.Reflection; +using JetBrains.Annotations; +using osu.Framework.Bindables; +using osu.Framework.Graphics; +using osu.Game.Overlays.Settings; + +namespace osu.Game.Configuration +{ + /// + /// An attribute to mark a bindable as being exposed to the user via settings controls. + /// Can be used in conjunction with to automatically create UI controls. + /// + [MeansImplicitUse] + [AttributeUsage(AttributeTargets.Property)] + public class SettingSourceAttribute : Attribute + { + public string Label { get; } + + public string Description { get; } + + public SettingSourceAttribute(string label, string description = null) + { + Label = label ?? string.Empty; + Description = description ?? string.Empty; + } + } + + public static class SettingSourceExtensions + { + public static IEnumerable CreateSettingsControls(this object obj) + { + var configProperties = obj.GetType().GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance).Where(p => p.GetCustomAttribute(true) != null); + + foreach (var property in configProperties) + { + var attr = property.GetCustomAttribute(true); + + switch (property.GetValue(obj)) + { + case BindableNumber bNumber: + yield return new SettingsSlider + { + LabelText = attr.Label, + Bindable = bNumber + }; + + break; + + case BindableNumber bNumber: + yield return new SettingsSlider + { + LabelText = attr.Label, + Bindable = bNumber + }; + + break; + + case BindableNumber bNumber: + yield return new SettingsSlider + { + LabelText = attr.Label, + Bindable = bNumber + }; + + break; + + case Bindable bBool: + yield return new SettingsCheckbox + { + LabelText = attr.Label, + Bindable = bBool + }; + + break; + } + } + } + } +} From 2fa0b30fa27801b00927b49025134cf8c8ee8ce1 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 17:49:41 +0900 Subject: [PATCH 0136/1829] Add textbox and dropdown support --- .../Configuration/SettingSourceAttribute.cs | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/osu.Game/Configuration/SettingSourceAttribute.cs b/osu.Game/Configuration/SettingSourceAttribute.cs index fe582b1461..dceef1cb7d 100644 --- a/osu.Game/Configuration/SettingSourceAttribute.cs +++ b/osu.Game/Configuration/SettingSourceAttribute.cs @@ -8,6 +8,7 @@ using System.Reflection; using JetBrains.Annotations; using osu.Framework.Bindables; using osu.Framework.Graphics; +using osu.Framework.Graphics.UserInterface; using osu.Game.Overlays.Settings; namespace osu.Game.Configuration @@ -40,8 +41,9 @@ namespace osu.Game.Configuration foreach (var property in configProperties) { var attr = property.GetCustomAttribute(true); + var prop = property.GetValue(obj); - switch (property.GetValue(obj)) + switch (prop) { case BindableNumber bNumber: yield return new SettingsSlider @@ -78,6 +80,30 @@ namespace osu.Game.Configuration }; break; + + case Bindable bString: + yield return new SettingsTextBox + { + LabelText = attr.Label, + Bindable = bString + }; + + break; + + case IBindable bindable: + + var dropdownType = typeof(SettingsEnumDropdown<>).MakeGenericType(bindable.GetType().GetGenericArguments()[0]); + + var dropdown = (Drawable)Activator.CreateInstance(dropdownType); + + dropdown.GetType().GetProperty(nameof(IHasCurrentValue.Current))?.SetValue(dropdown, obj); + + yield return dropdown; + + break; + + default: + throw new InvalidOperationException($"{nameof(SettingSourceAttribute)} was attached to an unsupported type ({prop})"); } } } From f84705ab9605776f579f745ac6164b856bf5903e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 17:49:52 +0900 Subject: [PATCH 0137/1829] Add tests --- .../Settings/TestSceneSettingsSource.cs | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 osu.Game.Tests/Visual/Settings/TestSceneSettingsSource.cs diff --git a/osu.Game.Tests/Visual/Settings/TestSceneSettingsSource.cs b/osu.Game.Tests/Visual/Settings/TestSceneSettingsSource.cs new file mode 100644 index 0000000000..e3dae9c27e --- /dev/null +++ b/osu.Game.Tests/Visual/Settings/TestSceneSettingsSource.cs @@ -0,0 +1,65 @@ +// 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.Bindables; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Configuration; +using osuTK; + +namespace osu.Game.Tests.Visual.Settings +{ + [TestFixture] + public class TestSceneSettingsSource : OsuTestScene + { + public TestSceneSettingsSource() + { + Children = new Drawable[] + { + new FillFlowContainer + { + RelativeSizeAxes = Axes.Both, + Direction = FillDirection.Vertical, + Spacing = new Vector2(20), + Width = 0.5f, + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Padding = new MarginPadding(50), + ChildrenEnumerable = new TestTargetClass().CreateSettingsControls() + }, + }; + } + + private class TestTargetClass + { + [SettingSource("Sample bool", "Clicking this changes a setting")] + public BindableBool TickBindable { get; } = new BindableBool(); + + [SettingSource("Sample float", "Change something for a mod")] + public BindableFloat SliderBindable { get; } = new BindableFloat + { + MinValue = 0, + MaxValue = 10, + Default = 5, + Value = 7 + }; + + [SettingSource("Sample enum", "Change something for a mod")] + public Bindable EnumBindable { get; } = new Bindable + { + Default = TestEnum.Value1, + Value = TestEnum.Value2 + }; + + [SettingSource("Sample string", "Change something for a mod")] + public Bindable StringBindable { get; } = new Bindable(); + } + + private enum TestEnum + { + Value1, + Value2 + } + } +} From 16f8341a0228ebb5fb92c8070918537b980352cb Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 6 Dec 2019 18:49:01 +0900 Subject: [PATCH 0138/1829] Handle control point positional updates within SliderPath --- .../Components/PathControlPointVisualiser.cs | 8 -------- osu.Game.Rulesets.Osu/Objects/Slider.cs | 2 ++ osu.Game/Rulesets/Objects/SliderPath.cs | 20 +++++++++++++++++++ 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs index cbc2a20328..974b611533 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs @@ -117,14 +117,6 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components return true; } - // Make control points relative - Vector2 first = slider.Path.ControlPoints[0].Position.Value; - for (int i = 0; i < slider.Path.ControlPoints.Count; i++) - slider.Path.ControlPoints[i].Position.Value = slider.Path.ControlPoints[i].Position.Value - first; - - // The slider's position defines the position of the first control point, and all further control points are relative to that point - slider.Position += first; - // Since pieces are re-used, they will not point to the deleted control points while remaining selected foreach (var piece in Pieces) piece.IsSelected.Value = false; diff --git a/osu.Game.Rulesets.Osu/Objects/Slider.cs b/osu.Game.Rulesets.Osu/Objects/Slider.cs index b68595c67e..09657b2d47 100644 --- a/osu.Game.Rulesets.Osu/Objects/Slider.cs +++ b/osu.Game.Rulesets.Osu/Objects/Slider.cs @@ -100,6 +100,8 @@ namespace osu.Game.Rulesets.Osu.Objects { SamplesBindable.ItemsAdded += _ => updateNestedSamples(); SamplesBindable.ItemsRemoved += _ => updateNestedSamples(); + + Path.OffsetChanged += offset => Position += offset; } protected override void ApplyDefaultsToSelf(ControlPointInfo controlPointInfo, BeatmapDifficulty difficulty) diff --git a/osu.Game/Rulesets/Objects/SliderPath.cs b/osu.Game/Rulesets/Objects/SliderPath.cs index f6e7c40e12..969cdcc463 100644 --- a/osu.Game/Rulesets/Objects/SliderPath.cs +++ b/osu.Game/Rulesets/Objects/SliderPath.cs @@ -16,6 +16,12 @@ namespace osu.Game.Rulesets.Objects { public class SliderPath { + /// + /// Invoked when the offset of the path changes. + /// The provided value indicates the offset, and should be used to re-calculate the position of the containing drawable. + /// + public event Action OffsetChanged; + /// /// The current version of this . Updated when any change to the path occurs. /// @@ -62,6 +68,20 @@ namespace osu.Game.Rulesets.Objects foreach (var c in items) c.Changed -= invalidate; + // Make all control points relative to the first one + if (ControlPoints.Count > 0) + { + Vector2 first = ControlPoints[0].Position.Value; + + if (first != Vector2.Zero) + { + foreach (var c in ControlPoints) + c.Position.Value -= first; + + OffsetChanged?.Invoke(first); + } + } + invalidate(); }; } From 52dd7bf716fa277fc157397a2cdcebe0c134e180 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 6 Dec 2019 18:49:14 +0900 Subject: [PATCH 0139/1829] Fix deleting the first control point not working --- .../Sliders/Components/PathControlPointVisualiser.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs index 974b611533..ee4a37a4f2 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs @@ -108,7 +108,14 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components return false; foreach (var c in toRemove) + { + // The first control point in the slider must have a type, so take it from the previous "first" one + // Todo: Should be handled within SliderPath itself + if (c == slider.Path.ControlPoints[0] && slider.Path.ControlPoints.Count > 1 && slider.Path.ControlPoints[1].Type.Value == null) + slider.Path.ControlPoints[1].Type.Value = slider.Path.ControlPoints[0].Type.Value; + slider.Path.ControlPoints.Remove(c); + } // If there are 0 remaining control points, treat the slider as being deleted if (slider.Path.ControlPoints.Count == 0) From 680b2653aeedbaa02cf359f6079347931db267c6 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 18:49:03 +0900 Subject: [PATCH 0140/1829] Improve animation of popup dialog buttons --- .../UserInterface/TestScenePopupDialog.cs | 22 ++++++++++++++----- .../Graphics/UserInterface/DialogButton.cs | 13 ++++++++--- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestScenePopupDialog.cs b/osu.Game.Tests/Visual/UserInterface/TestScenePopupDialog.cs index 3d39bb7003..7207506ccd 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestScenePopupDialog.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestScenePopupDialog.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 NUnit.Framework; using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; +using osu.Game.Graphics.UserInterface; using osu.Game.Overlays.Dialog; namespace osu.Game.Tests.Visual.UserInterface @@ -11,13 +14,22 @@ namespace osu.Game.Tests.Visual.UserInterface [TestFixture] public class TestScenePopupDialog : OsuTestScene { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(PopupDialogOkButton), + typeof(PopupDialogCancelButton), + typeof(PopupDialogButton), + typeof(DialogButton), + }; + public TestScenePopupDialog() { - Add(new TestPopupDialog - { - RelativeSizeAxes = Axes.Both, - State = { Value = Framework.Graphics.Containers.Visibility.Visible }, - }); + AddStep("new popup", () => + Add(new TestPopupDialog + { + RelativeSizeAxes = Axes.Both, + State = { Value = Framework.Graphics.Containers.Visibility.Visible }, + })); } private class TestPopupDialog : PopupDialog diff --git a/osu.Game/Graphics/UserInterface/DialogButton.cs b/osu.Game/Graphics/UserInterface/DialogButton.cs index 927ad13829..15c09b10b4 100644 --- a/osu.Game/Graphics/UserInterface/DialogButton.cs +++ b/osu.Game/Graphics/UserInterface/DialogButton.cs @@ -20,6 +20,7 @@ namespace osu.Game.Graphics.UserInterface { public class DialogButton : OsuClickableContainer { + private const float idle_width = 0.8f; private const float hover_width = 0.9f; private const float hover_duration = 500; private const float glow_fade_duration = 250; @@ -99,7 +100,7 @@ namespace osu.Game.Graphics.UserInterface RelativeSizeAxes = Axes.Both, Origin = Anchor.Centre, Anchor = Anchor.Centre, - Width = 0.8f, + Width = idle_width, Masking = true, MaskingSmoothness = 2, EdgeEffect = new EdgeEffectParameters @@ -199,14 +200,18 @@ namespace osu.Game.Graphics.UserInterface public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => backgroundContainer.ReceivePositionalInputAt(screenSpacePos); + private bool clicked; + protected override bool OnClick(ClickEvent e) { + clicked = true; colourContainer.ResizeTo(new Vector2(1.5f, 1f), click_duration, Easing.In); flash(); this.Delay(click_duration).Schedule(delegate { - colourContainer.ResizeTo(new Vector2(0.8f, 1f)); + clicked = false; + colourContainer.ResizeTo(new Vector2(idle_width, 1f)); spriteText.Spacing = Vector2.Zero; glowContainer.FadeOut(); }); @@ -230,6 +235,8 @@ namespace osu.Game.Graphics.UserInterface private void selectionChanged(ValueChangedEvent args) { + if (clicked) return; + if (args.NewValue) { spriteText.TransformSpacingTo(hoverSpacing, hover_duration, Easing.OutElastic); @@ -238,7 +245,7 @@ namespace osu.Game.Graphics.UserInterface } else { - colourContainer.ResizeTo(new Vector2(0.8f, 1f), hover_duration, Easing.OutElastic); + colourContainer.ResizeTo(new Vector2(idle_width, 1f), hover_duration, Easing.OutElastic); spriteText.TransformSpacingTo(Vector2.Zero, hover_duration, Easing.OutElastic); glowContainer.FadeOut(glow_fade_duration, Easing.Out); } From af2305bb77491397b87aebc7f9f3d1ed49de31bf Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 18:53:30 +0900 Subject: [PATCH 0141/1829] Add null check --- osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs b/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs index ec9792d59d..fa701a3c41 100644 --- a/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs +++ b/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs @@ -50,7 +50,8 @@ namespace osu.Game.Rulesets.Osu.Skinning case OsuSkinComponents.SliderFollowCircle: var followCircle = this.GetAnimation("sliderfollowcircle", true, true); - followCircle.Scale *= 0.5f; + if (followCircle != null) + followCircle.Scale *= 0.5f; return followCircle; case OsuSkinComponents.SliderBall: From f958485be1c268d53967522ccb3481716e21d3a7 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 18:54:54 +0900 Subject: [PATCH 0142/1829] Add comment about size change --- osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs b/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs index fa701a3c41..f5b7d9166f 100644 --- a/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs +++ b/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs @@ -51,6 +51,7 @@ namespace osu.Game.Rulesets.Osu.Skinning case OsuSkinComponents.SliderFollowCircle: var followCircle = this.GetAnimation("sliderfollowcircle", true, true); if (followCircle != null) + // follow circles are 2x the hitcircle resolution in legacy skins (since they are scaled down from >1x followCircle.Scale *= 0.5f; return followCircle; From 46d055604a6f049735a6d2b0ed12d33ef5287dab Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 18:57:11 +0900 Subject: [PATCH 0143/1829] Customize -> Customise --- ...ionSettings.cs => TestSceneModSettings.cs} | 26 +++++++++---------- osu.Game/Overlays/Mods/ModSelectOverlay.cs | 6 ++--- 2 files changed, 16 insertions(+), 16 deletions(-) rename osu.Game.Tests/Visual/UserInterface/{TestSceneModCustomizationSettings.cs => TestSceneModSettings.cs} (78%) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModCustomizationSettings.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs similarity index 78% rename from osu.Game.Tests/Visual/UserInterface/TestSceneModCustomizationSettings.cs rename to osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs index 8227fe8f7a..7a11ba5294 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModCustomizationSettings.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs @@ -13,7 +13,7 @@ using osu.Game.Rulesets.Mods; namespace osu.Game.Tests.Visual.UserInterface { - public class TestSceneModCustomizationSettings : OsuTestScene + public class TestSceneModSettings : OsuTestScene { private TestModSelectOverlay modSelect; @@ -27,13 +27,13 @@ namespace osu.Game.Tests.Visual.UserInterface Anchor = Anchor.BottomCentre, }); - var testMod = new TestModCustomizable1(); + var testMod = new TestModCustomisable1(); AddStep("open", modSelect.Show); - AddAssert("button disabled", () => !modSelect.CustomizeButton.Enabled.Value); + AddAssert("button disabled", () => !modSelect.CustomiseButton.Enabled.Value); AddStep("select mod", () => modSelect.SelectMod(testMod)); - AddAssert("button enabled", () => modSelect.CustomizeButton.Enabled.Value); - AddStep("open customization", () => modSelect.CustomizeButton.Click()); + AddAssert("button enabled", () => modSelect.CustomiseButton.Enabled.Value); + AddStep("open Customisation", () => modSelect.CustomiseButton.Click()); AddStep("deselect mod", () => modSelect.SelectMod(testMod)); AddAssert("controls hidden", () => modSelect.ModSettingsContainer.Alpha == 0); } @@ -41,7 +41,7 @@ namespace osu.Game.Tests.Visual.UserInterface private class TestModSelectOverlay : ModSelectOverlay { public new Container ModSettingsContainer => base.ModSettingsContainer; - public new TriangleButton CustomizeButton => base.CustomizeButton; + public new TriangleButton CustomiseButton => base.CustomiseButton; public void SelectMod(Mod mod) => ModSectionsContainer.Children.Single(s => s.ModType == mod.Type) @@ -57,8 +57,8 @@ namespace osu.Game.Tests.Visual.UserInterface { section.Mods = new Mod[] { - new TestModCustomizable1(), - new TestModCustomizable2() + new TestModCustomisable1(), + new TestModCustomisable2() }; } else @@ -67,21 +67,21 @@ namespace osu.Game.Tests.Visual.UserInterface } } - private class TestModCustomizable1 : TestModCustomizable + private class TestModCustomisable1 : TestModCustomisable { - public override string Name => "Customizable Mod 1"; + public override string Name => "Customisable Mod 1"; public override string Acronym => "CM1"; } - private class TestModCustomizable2 : TestModCustomizable + private class TestModCustomisable2 : TestModCustomisable { - public override string Name => "Customizable Mod 2"; + public override string Name => "Customisable Mod 2"; public override string Acronym => "CM2"; } - private abstract class TestModCustomizable : Mod, IApplicableMod + private abstract class TestModCustomisable : Mod, IApplicableMod { public override double ScoreMultiplier => 1.0; diff --git a/osu.Game/Overlays/Mods/ModSelectOverlay.cs b/osu.Game/Overlays/Mods/ModSelectOverlay.cs index cfad0126eb..e860463b23 100644 --- a/osu.Game/Overlays/Mods/ModSelectOverlay.cs +++ b/osu.Game/Overlays/Mods/ModSelectOverlay.cs @@ -32,7 +32,7 @@ namespace osu.Game.Overlays.Mods public class ModSelectOverlay : WaveOverlayContainer { protected readonly TriangleButton DeselectAllButton; - protected readonly TriangleButton CustomizeButton; + protected readonly TriangleButton CustomiseButton; protected readonly TriangleButton CloseButton; protected readonly OsuSpriteText MultiplierLabel; @@ -232,7 +232,7 @@ namespace osu.Game.Overlays.Mods Right = 20 } }, - CustomizeButton = new TriangleButton + CustomiseButton = new TriangleButton { Width = 180, Text = "Customization", @@ -351,7 +351,7 @@ namespace osu.Game.Overlays.Mods ModSettingsContent.RemoveAll(section => section.Mod == removed); bool hasSettings = ModSettingsContent.Children.Count > 0; - CustomizeButton.Enabled.Value = hasSettings; + CustomiseButton.Enabled.Value = hasSettings; if (!hasSettings) ModSettingsContainer.Hide(); From 347373a3ba3ef852dabd35306721ff689b47b0af Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 19:04:55 +0900 Subject: [PATCH 0144/1829] Fix test failures --- .../UserInterface/TestSceneModSettings.cs | 3 +++ osu.Game/Overlays/Mods/ModSection.cs | 22 +++++++++---------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs index 7a11ba5294..435dfd92be 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs @@ -31,6 +31,7 @@ namespace osu.Game.Tests.Visual.UserInterface AddStep("open", modSelect.Show); AddAssert("button disabled", () => !modSelect.CustomiseButton.Enabled.Value); + AddUntilStep("wait for button load", () => modSelect.ButtonsLoaded); AddStep("select mod", () => modSelect.SelectMod(testMod)); AddAssert("button enabled", () => modSelect.CustomiseButton.Enabled.Value); AddStep("open Customisation", () => modSelect.CustomiseButton.Click()); @@ -43,6 +44,8 @@ namespace osu.Game.Tests.Visual.UserInterface public new Container ModSettingsContainer => base.ModSettingsContainer; public new TriangleButton CustomiseButton => base.CustomiseButton; + public bool ButtonsLoaded => ModSectionsContainer.Children.All(c => c.ModIconsLoaded); + public void SelectMod(Mod mod) => ModSectionsContainer.Children.Single(s => s.ModType == mod.Type) .ButtonsContainer.OfType().Single(b => b.Mods.Any(m => m.GetType() == mod.GetType())).SelectNext(1); diff --git a/osu.Game/Overlays/Mods/ModSection.cs b/osu.Game/Overlays/Mods/ModSection.cs index 9c0a164ad6..c55d1d8f70 100644 --- a/osu.Game/Overlays/Mods/ModSection.cs +++ b/osu.Game/Overlays/Mods/ModSection.cs @@ -57,6 +57,15 @@ namespace osu.Game.Overlays.Mods }).ToArray(); modsLoadCts?.Cancel(); + + if (modContainers.Length == 0) + { + ModIconsLoaded = true; + headerLabel.Hide(); + Hide(); + return; + } + ModIconsLoaded = false; LoadComponentsAsync(modContainers, c => @@ -67,17 +76,8 @@ namespace osu.Game.Overlays.Mods buttons = modContainers.OfType().ToArray(); - if (value.Any()) - { - headerLabel.FadeIn(200); - this.FadeIn(200); - } - else - { - // transition here looks weird as mods instantly disappear. - headerLabel.Hide(); - Hide(); - } + headerLabel.FadeIn(200); + this.FadeIn(200); } } From 41437242a29c4fdd7dbae5055dd679fd4763e149 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 6 Dec 2019 19:39:25 +0900 Subject: [PATCH 0145/1829] Add initial path type progression support --- .../Sliders/SliderPlacementBlueprint.cs | 51 +++++++++++++++++-- 1 file changed, 46 insertions(+), 5 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs index bbdc43e16f..cd93aa0074 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs @@ -30,6 +30,9 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders private InputManager inputManager; private PlacementState state; + private PathControlPoint segmentStart; + private PathControlPoint cursor; + private int currentSegmentLength = 1; [Resolved(CanBeNull = true)] private HitObjectComposer composer { get; set; } @@ -38,7 +41,9 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders : base(new Objects.Slider()) { RelativeSizeAxes = Axes.Both; - HitObject.Path.ControlPoints.Add(new PathControlPoint { Position = { Value = Vector2.Zero } }); + + segmentStart = HitObject.Path.ControlPoints[0]; + } [BackgroundDependencyLoader] @@ -70,9 +75,11 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders break; case PlacementState.Body: + ensureCursor(); + // The given screen-space position may have been externally snapped, but the unsnapped position from the input manager // is used instead since snapping control points doesn't make much sense - HitObject.Path.ControlPoints.Last().Position.Value = ToLocalSpace(inputManager.CurrentState.Mouse.Position) - HitObject.Position; + cursor.Position.Value = ToLocalSpace(inputManager.CurrentState.Mouse.Position) - HitObject.Position; break; } } @@ -89,7 +96,10 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders switch (e.Button) { case MouseButton.Left: - HitObject.Path.ControlPoints.Add(new PathControlPoint { Position = { Value = HitObject.Path.ControlPoints.Last().Position.Value } }); + ensureCursor(); + + // Detatch the cursor + cursor = null; break; } @@ -108,8 +118,11 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders protected override bool OnDoubleClick(DoubleClickEvent e) { - // At the point of a double click, there's guaranteed to be at least two points - one from the click, and one from the cursor - HitObject.Path.ControlPoints[HitObject.Path.ControlPoints.Count - 2].Type.Value = PathType.Bezier; + // Todo: This should all not occur on double click, but rather if the previous control point is hovered. + segmentStart = HitObject.Path.ControlPoints[HitObject.Path.ControlPoints.Count - 1]; + segmentStart.Type.Value = PathType.Linear; + + currentSegmentLength = 1; return true; } @@ -131,6 +144,34 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders updateSlider(); } + private void updatePathType() + { + switch (currentSegmentLength) + { + case 1: + case 2: + segmentStart.Type.Value = PathType.Linear; + break; + case 3: + segmentStart.Type.Value = PathType.PerfectCurve; + break; + default: + segmentStart.Type.Value = PathType.Bezier; + break; + } + } + + private void ensureCursor() + { + if (cursor == null) + { + HitObject.Path.ControlPoints.Add(cursor = new PathControlPoint { Position = { Value = Vector2.Zero } }); + currentSegmentLength++; + + updatePathType(); + } + } + private void updateSlider() { HitObject.Path.ExpectedDistance.Value = composer?.GetSnappedDistanceFromDistance(HitObject.StartTime, (float)HitObject.Path.CalculatedDistance) ?? (float)HitObject.Path.CalculatedDistance; From 5347e7c4a2aadd5694722786f57b45b8f2ab65d2 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 20:14:06 +0900 Subject: [PATCH 0146/1829] Apply code quality improvements --- osu.Game/Configuration/SettingSourceAttribute.cs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/osu.Game/Configuration/SettingSourceAttribute.cs b/osu.Game/Configuration/SettingSourceAttribute.cs index dceef1cb7d..056fa8bcc0 100644 --- a/osu.Game/Configuration/SettingSourceAttribute.cs +++ b/osu.Game/Configuration/SettingSourceAttribute.cs @@ -3,7 +3,6 @@ using System; using System.Collections.Generic; -using System.Linq; using System.Reflection; using JetBrains.Annotations; using osu.Framework.Bindables; @@ -36,11 +35,13 @@ namespace osu.Game.Configuration { public static IEnumerable CreateSettingsControls(this object obj) { - var configProperties = obj.GetType().GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance).Where(p => p.GetCustomAttribute(true) != null); - - foreach (var property in configProperties) + foreach (var property in obj.GetType().GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance)) { var attr = property.GetCustomAttribute(true); + + if (attr == null) + continue; + var prop = property.GetValue(obj); switch (prop) @@ -91,9 +92,7 @@ namespace osu.Game.Configuration break; case IBindable bindable: - var dropdownType = typeof(SettingsEnumDropdown<>).MakeGenericType(bindable.GetType().GetGenericArguments()[0]); - var dropdown = (Drawable)Activator.CreateInstance(dropdownType); dropdown.GetType().GetProperty(nameof(IHasCurrentValue.Current))?.SetValue(dropdown, obj); From f65866648e3e914a358ec4a1639d24d4862c01c7 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 20:14:56 +0900 Subject: [PATCH 0147/1829] Use Array.Empty --- osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs index 435dfd92be..fc44c5f595 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.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.Bindables; @@ -65,7 +66,7 @@ namespace osu.Game.Tests.Visual.UserInterface }; } else - section.Mods = new Mod[] { }; + section.Mods = Array.Empty(); } } } From b9d12e5fe4ba3446e168355220bdf9f35ccf36ec Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 6 Dec 2019 20:53:40 +0900 Subject: [PATCH 0148/1829] Fix nested hitobjects not updating --- .../Objects/JuiceStream.cs | 18 ++++++++++++++- osu.Game.Rulesets.Osu/Objects/Slider.cs | 23 ++++++++++++++++--- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Objects/JuiceStream.cs b/osu.Game.Rulesets.Catch/Objects/JuiceStream.cs index 33780427b6..366f10d61d 100644 --- a/osu.Game.Rulesets.Catch/Objects/JuiceStream.cs +++ b/osu.Game.Rulesets.Catch/Objects/JuiceStream.cs @@ -116,7 +116,23 @@ namespace osu.Game.Rulesets.Catch.Objects public double Duration => EndTime - StartTime; - public SliderPath Path { get; set; } + private readonly SliderPath path = new SliderPath(new[] { new PathControlPoint { Type = { Value = PathType.Linear } } }); + + public SliderPath Path + { + get => path; + set + { + path.ControlPoints.Clear(); + path.ExpectedDistance.Value = null; + + if (value != null) + { + path.ControlPoints.AddRange(value.ControlPoints); + path.ExpectedDistance.Value = value.ExpectedDistance.Value; + } + } + } public double Distance => Path.Distance; diff --git a/osu.Game.Rulesets.Osu/Objects/Slider.cs b/osu.Game.Rulesets.Osu/Objects/Slider.cs index 09657b2d47..4ba5265d17 100644 --- a/osu.Game.Rulesets.Osu/Objects/Slider.cs +++ b/osu.Game.Rulesets.Osu/Objects/Slider.cs @@ -28,7 +28,23 @@ namespace osu.Game.Rulesets.Osu.Objects public Vector2 StackedPositionAt(double t) => StackedPosition + this.CurvePositionAt(t); - public SliderPath Path { get; set; } = new SliderPath(new[] { new PathControlPoint { Type = { Value = PathType.Bezier } } }); + private readonly SliderPath path = new SliderPath(new[] { new PathControlPoint { Type = { Value = PathType.Linear } } }); + + public SliderPath Path + { + get => path; + set + { + path.ControlPoints.Clear(); + path.ExpectedDistance.Value = null; + + if (value != null) + { + path.ControlPoints.AddRange(value.ControlPoints); + path.ExpectedDistance.Value = value.ExpectedDistance.Value; + } + } + } public double Distance => Path.Distance; @@ -38,8 +54,6 @@ namespace osu.Game.Rulesets.Osu.Objects set { base.Position = value; - endPositionCache.Invalidate(); - updateNestedPositions(); } } @@ -102,6 +116,7 @@ namespace osu.Game.Rulesets.Osu.Objects SamplesBindable.ItemsRemoved += _ => updateNestedSamples(); Path.OffsetChanged += offset => Position += offset; + Path.Version.ValueChanged += _ => updateNestedPositions(); } protected override void ApplyDefaultsToSelf(ControlPointInfo controlPointInfo, BeatmapDifficulty difficulty) @@ -179,6 +194,8 @@ namespace osu.Game.Rulesets.Osu.Objects private void updateNestedPositions() { + endPositionCache.Invalidate(); + if (HeadCircle != null) HeadCircle.Position = Position; From 54798b134e99fb136fc50a5749a8d38a2b201892 Mon Sep 17 00:00:00 2001 From: Dan Balasescu Date: Sun, 8 Dec 2019 03:16:41 +0900 Subject: [PATCH 0149/1829] Add accessibility modifiers --- osu.Game/Screens/Play/PlayerLoader.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Screens/Play/PlayerLoader.cs b/osu.Game/Screens/Play/PlayerLoader.cs index 774ca02be1..57021dfc68 100644 --- a/osu.Game/Screens/Play/PlayerLoader.cs +++ b/osu.Game/Screens/Play/PlayerLoader.cs @@ -55,9 +55,9 @@ namespace osu.Game.Screens.Play protected override bool PlayResumeSound => false; - protected Task LoadTask; + protected Task LoadTask { get; private set; } - protected Task DisposalTask; + protected Task DisposalTask { get; private set; } private InputManager inputManager; private IdleTracker idleTracker; From ff8544597c3bd5d0fa1dc26b19f469dcbbdc0632 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Sat, 7 Dec 2019 19:51:54 +0100 Subject: [PATCH 0150/1829] Add explicit app manifest to desktop project After the .NET Core bump to version 3.0 in the 2019.1011.0 release, reports popped up of the game not starting any more on some computers using Intel graphics cards (HD 3000 in particular). After investigation the auto-generated application manifest changed in .NET Core 3.0. In particular this seems to be a root cause for the failed start-ups on Intel cards, due to a Windows version compatibility section appearing. The section in turn affects some WinAPI calls like GetVersionEx, which will return major version 10 instead of 6 if compatibility with Windows 10 is declared. This combined with a broken check in the Intel OpenGL driver caused the crashes. To resolve this without having to patch binaries, add an explicit application manifest to the desktop project with the compatibility section removed. --- osu.Desktop/app.manifest | 20 ++++++++++++++++++++ osu.Desktop/osu.Desktop.csproj | 1 + 2 files changed, 21 insertions(+) create mode 100644 osu.Desktop/app.manifest diff --git a/osu.Desktop/app.manifest b/osu.Desktop/app.manifest new file mode 100644 index 0000000000..2e9127bf44 --- /dev/null +++ b/osu.Desktop/app.manifest @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + true + + + \ No newline at end of file diff --git a/osu.Desktop/osu.Desktop.csproj b/osu.Desktop/osu.Desktop.csproj index 453cf6f94d..01e4ada2f1 100644 --- a/osu.Desktop/osu.Desktop.csproj +++ b/osu.Desktop/osu.Desktop.csproj @@ -8,6 +8,7 @@ osu!lazer osu!lazer lazer.ico + app.manifest 0.0.0 0.0.0 From 929be3e9e7e32954385f36f348f9cea8d9a7595c Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 8 Dec 2019 12:34:07 +0300 Subject: [PATCH 0151/1829] Highlight own score in BeatmapSetOverlay --- .../Overlays/BeatmapSet/Scores/ScoreTable.cs | 2 +- .../Scores/ScoreTableRowBackground.cs | 24 +++++++++++++------ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs index 58f5f02956..f6723839b2 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs @@ -63,7 +63,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores return; for (int i = 0; i < value.Count; i++) - backgroundFlow.Add(new ScoreTableRowBackground(i)); + backgroundFlow.Add(new ScoreTableRowBackground(i, value[i])); Columns = createHeaders(value[0]); Content = value.Select((s, i) => createContent(i, s)).ToArray().ToRectangular(); diff --git a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTableRowBackground.cs b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTableRowBackground.cs index d820f4d89d..1e10c200ab 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTableRowBackground.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTableRowBackground.cs @@ -7,6 +7,8 @@ using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Input.Events; using osu.Game.Graphics; +using osu.Game.Online.API; +using osu.Game.Scoring; namespace osu.Game.Overlays.BeatmapSet.Scores { @@ -17,8 +19,14 @@ namespace osu.Game.Overlays.BeatmapSet.Scores private readonly Box hoveredBackground; private readonly Box background; - public ScoreTableRowBackground(int index) + private readonly int index; + private readonly ScoreInfo score; + + public ScoreTableRowBackground(int index, ScoreInfo score) { + this.index = index; + this.score = score; + RelativeSizeAxes = Axes.X; Height = 25; @@ -37,16 +45,18 @@ namespace osu.Game.Overlays.BeatmapSet.Scores Alpha = 0, }, }; - - if (index % 2 != 0) - background.Alpha = 0; } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OsuColour colours, IAPIProvider api) { - hoveredBackground.Colour = colours.Gray4; - background.Colour = colours.Gray3; + var isOwnScore = api.LocalUser.Value.Id == score.UserID; + + if (index % 2 != 0 && !isOwnScore) + background.Alpha = 0; + + hoveredBackground.Colour = isOwnScore ? colours.GreenDark : colours.Gray4; + background.Colour = isOwnScore ? colours.GreenDarker : colours.Gray3; } protected override bool OnHover(HoverEvent e) From 13b891f3f4ed6eae1c572737238a005e199efbd1 Mon Sep 17 00:00:00 2001 From: mcendu Date: Sun, 8 Dec 2019 20:05:02 +0800 Subject: [PATCH 0152/1829] Crude legacy cursor rotation support --- osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs b/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs index 470ba3acae..6bef90fbaa 100644 --- a/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs +++ b/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs @@ -19,6 +19,8 @@ namespace osu.Game.Rulesets.Osu.Skinning Origin = Anchor.Centre; } + private NonPlayfieldSprite cursor; + [BackgroundDependencyLoader] private void load(ISkinSource skin) { @@ -30,13 +32,14 @@ namespace osu.Game.Rulesets.Osu.Skinning Anchor = Anchor.Centre, Origin = Anchor.Centre, }, - new NonPlayfieldSprite + cursor = new NonPlayfieldSprite { Texture = skin.GetTexture("cursor"), Anchor = Anchor.Centre, Origin = Anchor.Centre, } }; + cursor.Spin(10000, RotationDirection.Clockwise); } } } From 4cd0dd7856e8b553a9698d86dc114f0ca0768a92 Mon Sep 17 00:00:00 2001 From: mcendu Date: Sun, 8 Dec 2019 20:47:28 +0800 Subject: [PATCH 0153/1829] Move transformation to LoadComplete --- osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs b/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs index 6bef90fbaa..11039227c6 100644 --- a/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs +++ b/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs @@ -39,6 +39,10 @@ namespace osu.Game.Rulesets.Osu.Skinning Origin = Anchor.Centre, } }; + } + + protected override void LoadComplete() + { cursor.Spin(10000, RotationDirection.Clockwise); } } From 8956768fe0d49a9d433b7ff88b601f4d6dd90e1e Mon Sep 17 00:00:00 2001 From: Joehu Date: Sun, 8 Dec 2019 08:55:45 -0800 Subject: [PATCH 0154/1829] Fix mod buttons being selected when drag scrolling overlay --- osu.Game/Overlays/Mods/ModButton.cs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/Mods/ModButton.cs b/osu.Game/Overlays/Mods/ModButton.cs index c6b4787ff1..ce623dc182 100644 --- a/osu.Game/Overlays/Mods/ModButton.cs +++ b/osu.Game/Overlays/Mods/ModButton.cs @@ -167,10 +167,6 @@ namespace osu.Game.Overlays.Mods { switch (e.Button) { - case MouseButton.Left: - SelectNext(1); - break; - case MouseButton.Right: SelectNext(-1); break; @@ -180,6 +176,15 @@ namespace osu.Game.Overlays.Mods return true; } + protected override bool OnClick(ClickEvent e) + { + scaleContainer.ScaleTo(1, 500, Easing.OutElastic); + + SelectNext(1); + + return base.OnClick(e); + } + /// /// Select the next available mod in a specified direction. /// From 463b6c00300b1686fe4eb66742ca0f63ea373e03 Mon Sep 17 00:00:00 2001 From: Joehu Date: Sun, 8 Dec 2019 09:04:34 -0800 Subject: [PATCH 0155/1829] Remove whitespace --- osu.Game/Overlays/Mods/ModButton.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Mods/ModButton.cs b/osu.Game/Overlays/Mods/ModButton.cs index ce623dc182..5af3ebab3b 100644 --- a/osu.Game/Overlays/Mods/ModButton.cs +++ b/osu.Game/Overlays/Mods/ModButton.cs @@ -179,7 +179,7 @@ namespace osu.Game.Overlays.Mods protected override bool OnClick(ClickEvent e) { scaleContainer.ScaleTo(1, 500, Easing.OutElastic); - + SelectNext(1); return base.OnClick(e); From e394b28799f4df5e7e01e87dbed07a8bc50127a2 Mon Sep 17 00:00:00 2001 From: Joehu Date: Sun, 8 Dec 2019 09:12:32 -0800 Subject: [PATCH 0156/1829] Remove redundant transform --- osu.Game/Overlays/Mods/ModButton.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/osu.Game/Overlays/Mods/ModButton.cs b/osu.Game/Overlays/Mods/ModButton.cs index 5af3ebab3b..69a4a4181a 100644 --- a/osu.Game/Overlays/Mods/ModButton.cs +++ b/osu.Game/Overlays/Mods/ModButton.cs @@ -178,11 +178,9 @@ namespace osu.Game.Overlays.Mods protected override bool OnClick(ClickEvent e) { - scaleContainer.ScaleTo(1, 500, Easing.OutElastic); - SelectNext(1); - return base.OnClick(e); + return true; } /// From c2a40c574dabf83556a23272e869768759b966d5 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 9 Dec 2019 02:13:47 +0900 Subject: [PATCH 0157/1829] Split out if statement for readability --- .../Overlays/BeatmapSet/Scores/ScoreTableRowBackground.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTableRowBackground.cs b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTableRowBackground.cs index 1e10c200ab..724a7f8b55 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTableRowBackground.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTableRowBackground.cs @@ -52,11 +52,14 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { var isOwnScore = api.LocalUser.Value.Id == score.UserID; - if (index % 2 != 0 && !isOwnScore) + if (isOwnScore) + background.Colour = colours.GreenDarker; + else if (index % 2 == 0) + background.Colour = colours.Gray3; + else background.Alpha = 0; hoveredBackground.Colour = isOwnScore ? colours.GreenDark : colours.Gray4; - background.Colour = isOwnScore ? colours.GreenDarker : colours.Gray3; } protected override bool OnHover(HoverEvent e) From 88ec0c14862a862750060e0717324cf2c03606f9 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Sun, 8 Dec 2019 18:49:58 +0100 Subject: [PATCH 0158/1829] Add missing async content loading logic to NewsOverlay --- osu.Game/Overlays/NewsOverlay.cs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/NewsOverlay.cs b/osu.Game/Overlays/NewsOverlay.cs index aadca8883e..db4b118bf8 100644 --- a/osu.Game/Overlays/NewsOverlay.cs +++ b/osu.Game/Overlays/NewsOverlay.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.Threading; using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; @@ -16,7 +17,6 @@ namespace osu.Game.Overlays { private NewsHeader header; - //ReSharper disable NotAccessedField.Local private Container content; public readonly Bindable Current = new Bindable(null); @@ -59,6 +59,21 @@ namespace osu.Game.Overlays Current.TriggerChange(); } + private CancellationTokenSource loadChildCancellation; + + protected void LoadAndShowChild(NewsContent newContent) + { + content.FadeTo(0.2f, 300, Easing.OutQuint); + + loadChildCancellation?.Cancel(); + + LoadComponentAsync(newContent, c => + { + content.Child = c; + content.FadeIn(300, Easing.OutQuint); + }, (loadChildCancellation = new CancellationTokenSource()).Token); + } + public void ShowFrontPage() { Current.Value = null; From 5cf35869e956ffcf0fc2671705bf3cb7c33cab2c Mon Sep 17 00:00:00 2001 From: Joehu Date: Sun, 8 Dec 2019 10:40:39 -0800 Subject: [PATCH 0159/1829] Fix key config search not clearing after pressing escape --- osu.Game/Overlays/SettingsSubPanel.cs | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/osu.Game/Overlays/SettingsSubPanel.cs b/osu.Game/Overlays/SettingsSubPanel.cs index 5000156e97..2235f9f338 100644 --- a/osu.Game/Overlays/SettingsSubPanel.cs +++ b/osu.Game/Overlays/SettingsSubPanel.cs @@ -4,12 +4,10 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; -using osu.Framework.Input.Bindings; using osu.Framework.Input.Events; using osu.Game.Graphics; using osu.Game.Graphics.Containers; using osu.Game.Graphics.Sprites; -using osu.Game.Input.Bindings; using osu.Game.Overlays.Settings; using osu.Game.Screens.Ranking; using osuTK; @@ -36,7 +34,7 @@ namespace osu.Game.Overlays protected override bool DimMainContent => false; // dimming is handled by main overlay - private class BackButton : OsuClickableContainer, IKeyBindingHandler + private class BackButton : OsuClickableContainer { private AspectContainer aspect; @@ -85,20 +83,6 @@ namespace osu.Game.Overlays aspect.ScaleTo(1, 1000, Easing.OutElastic); return base.OnMouseUp(e); } - - public bool OnPressed(GlobalAction action) - { - switch (action) - { - case GlobalAction.Back: - Click(); - return true; - } - - return false; - } - - public bool OnReleased(GlobalAction action) => false; } } } From 9974fff5cc3d52d36e0ebaf2f57cc3af5eddc4ea Mon Sep 17 00:00:00 2001 From: Joehu Date: Sun, 8 Dec 2019 10:51:25 -0800 Subject: [PATCH 0160/1829] Make sub panel back button inherit osu button --- osu.Game/Overlays/SettingsSubPanel.cs | 32 +++++++++------------------ 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/osu.Game/Overlays/SettingsSubPanel.cs b/osu.Game/Overlays/SettingsSubPanel.cs index 2235f9f338..1fa233d9d4 100644 --- a/osu.Game/Overlays/SettingsSubPanel.cs +++ b/osu.Game/Overlays/SettingsSubPanel.cs @@ -3,14 +3,14 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; -using osu.Framework.Input.Events; using osu.Game.Graphics; -using osu.Game.Graphics.Containers; using osu.Game.Graphics.Sprites; +using osu.Game.Graphics.UserInterface; using osu.Game.Overlays.Settings; -using osu.Game.Screens.Ranking; using osuTK; +using osuTK.Graphics; namespace osu.Game.Overlays { @@ -34,21 +34,21 @@ namespace osu.Game.Overlays protected override bool DimMainContent => false; // dimming is handled by main overlay - private class BackButton : OsuClickableContainer + private class BackButton : OsuButton { - private AspectContainer aspect; - [BackgroundDependencyLoader] private void load() { Size = new Vector2(Sidebar.DEFAULT_WIDTH); - Children = new Drawable[] + + BackgroundColour = Color4.Black; + + AddRange(new Drawable[] { - aspect = new AspectContainer + new Container { Anchor = Anchor.Centre, Origin = Anchor.Centre, - RelativeSizeAxes = Axes.Y, Children = new Drawable[] { new SpriteIcon @@ -69,19 +69,7 @@ namespace osu.Game.Overlays }, } } - }; - } - - protected override bool OnMouseDown(MouseDownEvent e) - { - aspect.ScaleTo(0.75f, 2000, Easing.OutQuint); - return base.OnMouseDown(e); - } - - protected override bool OnMouseUp(MouseUpEvent e) - { - aspect.ScaleTo(1, 1000, Easing.OutElastic); - return base.OnMouseUp(e); + }); } } } From b2b252a1cc446f96c306129fe6d6011b07dafe66 Mon Sep 17 00:00:00 2001 From: mcendu Date: Mon, 9 Dec 2019 08:36:07 +0800 Subject: [PATCH 0161/1829] Allow skin to disable spin --- osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs | 8 ++++++-- .../Skinning/OsuLegacySkinTransformer.cs | 4 +++- osu.Game.Rulesets.Osu/Skinning/OsuSkinConfiguration.cs | 1 + 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs b/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs index 11039227c6..68cf99caf1 100644 --- a/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs +++ b/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs @@ -11,15 +11,18 @@ namespace osu.Game.Rulesets.Osu.Skinning { public class LegacyCursor : CompositeDrawable { - public LegacyCursor() + public LegacyCursor(bool spin = true) { Size = new Vector2(50); Anchor = Anchor.Centre; Origin = Anchor.Centre; + + rotate = spin; } private NonPlayfieldSprite cursor; + private bool rotate; [BackgroundDependencyLoader] private void load(ISkinSource skin) @@ -43,7 +46,8 @@ namespace osu.Game.Rulesets.Osu.Skinning protected override void LoadComplete() { - cursor.Spin(10000, RotationDirection.Clockwise); + if (rotate) + cursor.Spin(10000, RotationDirection.Clockwise); } } } diff --git a/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs b/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs index f5b7d9166f..f58b96844e 100644 --- a/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs +++ b/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs @@ -81,7 +81,9 @@ namespace osu.Game.Rulesets.Osu.Skinning case OsuSkinComponents.Cursor: if (source.GetTexture("cursor") != null) - return new LegacyCursor(); + { + return new LegacyCursor(GetConfig(OsuSkinConfiguration.CursorRotate)?.Value ?? true); + } return null; diff --git a/osu.Game.Rulesets.Osu/Skinning/OsuSkinConfiguration.cs b/osu.Game.Rulesets.Osu/Skinning/OsuSkinConfiguration.cs index 98219cafe8..5d99960f10 100644 --- a/osu.Game.Rulesets.Osu/Skinning/OsuSkinConfiguration.cs +++ b/osu.Game.Rulesets.Osu/Skinning/OsuSkinConfiguration.cs @@ -11,5 +11,6 @@ namespace osu.Game.Rulesets.Osu.Skinning SliderPathRadius, AllowSliderBallTint, CursorExpand, + CursorRotate } } From 1cf81c49066dbf3fdafc3d029c187ad012b26d0d Mon Sep 17 00:00:00 2001 From: mcendu Date: Mon, 9 Dec 2019 08:37:32 +0800 Subject: [PATCH 0162/1829] rm unnecessary curlies --- osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs b/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs index f58b96844e..56c8e74509 100644 --- a/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs +++ b/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs @@ -81,9 +81,7 @@ namespace osu.Game.Rulesets.Osu.Skinning case OsuSkinComponents.Cursor: if (source.GetTexture("cursor") != null) - { return new LegacyCursor(GetConfig(OsuSkinConfiguration.CursorRotate)?.Value ?? true); - } return null; From eb065286ae5b17081910d708fc1deb2421c969bd Mon Sep 17 00:00:00 2001 From: mcendu Date: Mon, 9 Dec 2019 08:49:44 +0800 Subject: [PATCH 0163/1829] fix ci --- osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs b/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs index 68cf99caf1..85ae9d0fc4 100644 --- a/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs +++ b/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs @@ -22,7 +22,7 @@ namespace osu.Game.Rulesets.Osu.Skinning } private NonPlayfieldSprite cursor; - private bool rotate; + private readonly bool rotate; [BackgroundDependencyLoader] private void load(ISkinSource skin) From 76aabdd2971effca216074ee33e7399b8e8b92b0 Mon Sep 17 00:00:00 2001 From: mcendu Date: Mon, 9 Dec 2019 12:11:04 +0800 Subject: [PATCH 0164/1829] rename field rotate to spin --- osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs b/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs index 85ae9d0fc4..d0d11b9157 100644 --- a/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs +++ b/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs @@ -18,11 +18,11 @@ namespace osu.Game.Rulesets.Osu.Skinning Anchor = Anchor.Centre; Origin = Anchor.Centre; - rotate = spin; + this.spin = spin; } private NonPlayfieldSprite cursor; - private readonly bool rotate; + private readonly bool spin; [BackgroundDependencyLoader] private void load(ISkinSource skin) @@ -46,7 +46,7 @@ namespace osu.Game.Rulesets.Osu.Skinning protected override void LoadComplete() { - if (rotate) + if (spin) cursor.Spin(10000, RotationDirection.Clockwise); } } From 4905709ea497799416c71fbcdba485612c60b67e Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 9 Dec 2019 13:19:21 +0900 Subject: [PATCH 0165/1829] Remove unused usings --- .../Blueprints/Sliders/Components/PathControlPointVisualiser.cs | 2 -- .../Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs | 2 -- .../Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs | 2 -- osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderHead.cs | 1 - osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTail.cs | 1 - osu.Game.Rulesets.Osu/Objects/Slider.cs | 1 - .../Rulesets/Objects/Legacy/Catch/ConvertHitObjectParser.cs | 1 - .../Rulesets/Objects/Legacy/Mania/ConvertHitObjectParser.cs | 1 - osu.Game/Rulesets/Objects/Legacy/Osu/ConvertHitObjectParser.cs | 1 - .../Rulesets/Objects/Legacy/Taiko/ConvertHitObjectParser.cs | 1 - 10 files changed, 13 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs index ee4a37a4f2..a9616026f5 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs @@ -1,7 +1,6 @@ // 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 System.Linq; using Humanizer; @@ -17,7 +16,6 @@ using osu.Game.Graphics.UserInterface; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Osu.Objects; using osu.Game.Screens.Edit.Compose; -using osuTK; using osuTK.Input; namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs index cd93aa0074..639e18681b 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs @@ -2,9 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System.Collections.Generic; -using System.Linq; using osu.Framework.Allocation; -using osu.Framework.Extensions.IEnumerableExtensions; using osu.Framework.Graphics; using osu.Framework.Input; using osu.Framework.Input.Events; diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs index 9a504445f4..7431972673 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs @@ -1,7 +1,6 @@ // 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.Diagnostics; using osu.Framework.Allocation; using osu.Framework.Bindables; @@ -12,7 +11,6 @@ using osu.Framework.Input.Events; using osu.Game.Graphics.UserInterface; using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Objects; -using osu.Game.Rulesets.Objects.Types; using osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components; using osu.Game.Rulesets.Osu.Objects; using osu.Game.Rulesets.Osu.Objects.Drawables; diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderHead.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderHead.cs index 166defbc41..c5609b01e0 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderHead.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderHead.cs @@ -4,7 +4,6 @@ using System; using osu.Framework.Allocation; using osu.Framework.Bindables; -using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Objects.Types; using osuTK; diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTail.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTail.cs index 8e2f6ffa66..21a3a0d236 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTail.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTail.cs @@ -3,7 +3,6 @@ using osu.Framework.Bindables; using osu.Framework.Graphics; -using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Scoring; using osuTK; diff --git a/osu.Game.Rulesets.Osu/Objects/Slider.cs b/osu.Game.Rulesets.Osu/Objects/Slider.cs index 4ba5265d17..4c299fd7c2 100644 --- a/osu.Game.Rulesets.Osu/Objects/Slider.cs +++ b/osu.Game.Rulesets.Osu/Objects/Slider.cs @@ -6,7 +6,6 @@ using osu.Game.Rulesets.Objects.Types; using System.Collections.Generic; using osu.Game.Rulesets.Objects; using System.Linq; -using osu.Framework.Bindables; using osu.Framework.Caching; using osu.Game.Audio; using osu.Game.Beatmaps; diff --git a/osu.Game/Rulesets/Objects/Legacy/Catch/ConvertHitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/Catch/ConvertHitObjectParser.cs index afa1f2996e..43e8d01297 100644 --- a/osu.Game/Rulesets/Objects/Legacy/Catch/ConvertHitObjectParser.cs +++ b/osu.Game/Rulesets/Objects/Legacy/Catch/ConvertHitObjectParser.cs @@ -3,7 +3,6 @@ using osuTK; using osu.Game.Audio; -using osu.Game.Rulesets.Objects.Types; using System.Collections.Generic; namespace osu.Game.Rulesets.Objects.Legacy.Catch diff --git a/osu.Game/Rulesets/Objects/Legacy/Mania/ConvertHitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/Mania/ConvertHitObjectParser.cs index d1a8adc2b7..f94c4aaa75 100644 --- a/osu.Game/Rulesets/Objects/Legacy/Mania/ConvertHitObjectParser.cs +++ b/osu.Game/Rulesets/Objects/Legacy/Mania/ConvertHitObjectParser.cs @@ -3,7 +3,6 @@ using osuTK; using osu.Game.Audio; -using osu.Game.Rulesets.Objects.Types; using System.Collections.Generic; namespace osu.Game.Rulesets.Objects.Legacy.Mania diff --git a/osu.Game/Rulesets/Objects/Legacy/Osu/ConvertHitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/Osu/ConvertHitObjectParser.cs index 6628f7d059..b95ec703b6 100644 --- a/osu.Game/Rulesets/Objects/Legacy/Osu/ConvertHitObjectParser.cs +++ b/osu.Game/Rulesets/Objects/Legacy/Osu/ConvertHitObjectParser.cs @@ -2,7 +2,6 @@ // See the LICENCE file in the repository root for full licence text. using osuTK; -using osu.Game.Rulesets.Objects.Types; using System.Collections.Generic; using osu.Game.Audio; diff --git a/osu.Game/Rulesets/Objects/Legacy/Taiko/ConvertHitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/Taiko/ConvertHitObjectParser.cs index 7b1d64b19f..db65a61c90 100644 --- a/osu.Game/Rulesets/Objects/Legacy/Taiko/ConvertHitObjectParser.cs +++ b/osu.Game/Rulesets/Objects/Legacy/Taiko/ConvertHitObjectParser.cs @@ -2,7 +2,6 @@ // See the LICENCE file in the repository root for full licence text. using osuTK; -using osu.Game.Rulesets.Objects.Types; using System.Collections.Generic; using osu.Game.Audio; From 69deb0ca96f2ef4d22233fd8333311c290b965b0 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 9 Dec 2019 07:19:55 +0300 Subject: [PATCH 0166/1829] Fix unavailable replays can be accessed via leaderboard --- osu.Game/Online/API/Requests/Responses/APILegacyScoreInfo.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Online/API/Requests/Responses/APILegacyScoreInfo.cs b/osu.Game/Online/API/Requests/Responses/APILegacyScoreInfo.cs index 79ce04ed66..b941cd8973 100644 --- a/osu.Game/Online/API/Requests/Responses/APILegacyScoreInfo.cs +++ b/osu.Game/Online/API/Requests/Responses/APILegacyScoreInfo.cs @@ -34,7 +34,7 @@ namespace osu.Game.Online.API.Requests.Responses PP = PP, Beatmap = Beatmap, RulesetID = OnlineRulesetID, - Hash = "online", // todo: temporary? + Hash = Replay ? "online" : string.Empty, // todo: temporary? Rank = Rank, Ruleset = ruleset, Mods = mods, From 03d18186c23ab92eddda00a04f958d592ca9abf5 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 9 Dec 2019 14:11:44 +0900 Subject: [PATCH 0167/1829] Fix broken merge --- .../Graphics/UserInterface/DialogButton.cs | 73 ++++++++++--------- 1 file changed, 39 insertions(+), 34 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/DialogButton.cs b/osu.Game/Graphics/UserInterface/DialogButton.cs index 15c09b10b4..aed07e56ee 100644 --- a/osu.Game/Graphics/UserInterface/DialogButton.cs +++ b/osu.Game/Graphics/UserInterface/DialogButton.cs @@ -22,8 +22,8 @@ namespace osu.Game.Graphics.UserInterface { private const float idle_width = 0.8f; private const float hover_width = 0.9f; + private const float hover_duration = 500; - private const float glow_fade_duration = 250; private const float click_duration = 200; public readonly BindableBool Selected = new BindableBool(); @@ -200,30 +200,50 @@ namespace osu.Game.Graphics.UserInterface public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => backgroundContainer.ReceivePositionalInputAt(screenSpacePos); - private bool clicked; + private bool clickAnimating; protected override bool OnClick(ClickEvent e) { - clicked = true; - colourContainer.ResizeTo(new Vector2(1.5f, 1f), click_duration, Easing.In); - flash(); - - this.Delay(click_duration).Schedule(delegate + var flash = new Box { - clicked = false; - colourContainer.ResizeTo(new Vector2(idle_width, 1f)); - spriteText.Spacing = Vector2.Zero; - glowContainer.FadeOut(); - }); + RelativeSizeAxes = Axes.Both, + Colour = ButtonColour, + Blending = BlendingParameters.Additive, + Alpha = 0.05f + }; + + colourContainer.Add(flash); + flash.FadeOutFromOne(100).Expire(); + + clickAnimating = true; + colourContainer.ResizeWidthTo(colourContainer.Width * 1.05f, 100, Easing.OutQuint) + .OnComplete(_ => + { + clickAnimating = false; + Selected.TriggerChange(); + }); return base.OnClick(e); } + protected override bool OnMouseDown(MouseDownEvent e) + { + colourContainer.ResizeWidthTo(hover_width * 0.98f, click_duration * 4, Easing.OutQuad); + return base.OnMouseDown(e); + } + + protected override bool OnMouseUp(MouseUpEvent e) + { + if (Selected.Value) + colourContainer.ResizeWidthTo(hover_width, click_duration, Easing.In); + return base.OnMouseUp(e); + } + protected override bool OnHover(HoverEvent e) { base.OnHover(e); - Selected.Value = true; + return true; } @@ -235,38 +255,23 @@ namespace osu.Game.Graphics.UserInterface private void selectionChanged(ValueChangedEvent args) { - if (clicked) return; + if (clickAnimating) + return; if (args.NewValue) { spriteText.TransformSpacingTo(hoverSpacing, hover_duration, Easing.OutElastic); - colourContainer.ResizeTo(new Vector2(hover_width, 1f), hover_duration, Easing.OutElastic); - glowContainer.FadeIn(glow_fade_duration, Easing.Out); + colourContainer.ResizeWidthTo(hover_width, hover_duration, Easing.OutElastic); + glowContainer.FadeIn(hover_duration, Easing.OutQuint); } else { - colourContainer.ResizeTo(new Vector2(idle_width, 1f), hover_duration, Easing.OutElastic); + colourContainer.ResizeWidthTo(idle_width, hover_duration, Easing.OutElastic); spriteText.TransformSpacingTo(Vector2.Zero, hover_duration, Easing.OutElastic); - glowContainer.FadeOut(glow_fade_duration, Easing.Out); + glowContainer.FadeOut(hover_duration, Easing.OutQuint); } } - private void flash() - { - var flash = new Box - { - RelativeSizeAxes = Axes.Both - }; - - colourContainer.Add(flash); - - flash.Colour = ButtonColour; - flash.Blending = BlendingParameters.Additive; - flash.Alpha = 0.3f; - flash.FadeOutFromOne(click_duration); - flash.Expire(); - } - private void updateGlow() { leftGlow.Colour = ColourInfo.GradientHorizontal(new Color4(ButtonColour.R, ButtonColour.G, ButtonColour.B, 0f), ButtonColour); From aff1b93a0790672311926a9e0f6bec711c1ce011 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 9 Dec 2019 14:43:23 +0900 Subject: [PATCH 0168/1829] Move config retrieval into LegacySliderBall --- osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs | 12 ++++++------ .../Skinning/OsuLegacySkinTransformer.cs | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs b/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs index d0d11b9157..05b38ae195 100644 --- a/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs +++ b/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs @@ -11,22 +11,22 @@ namespace osu.Game.Rulesets.Osu.Skinning { public class LegacyCursor : CompositeDrawable { - public LegacyCursor(bool spin = true) + private NonPlayfieldSprite cursor; + private bool spin; + + public LegacyCursor() { Size = new Vector2(50); Anchor = Anchor.Centre; Origin = Anchor.Centre; - - this.spin = spin; } - private NonPlayfieldSprite cursor; - private readonly bool spin; - [BackgroundDependencyLoader] private void load(ISkinSource skin) { + spin = skin.GetConfig(OsuSkinConfiguration.CursorRotate)?.Value ?? true; + InternalChildren = new Drawable[] { new NonPlayfieldSprite diff --git a/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs b/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs index 56c8e74509..f5b7d9166f 100644 --- a/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs +++ b/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs @@ -81,7 +81,7 @@ namespace osu.Game.Rulesets.Osu.Skinning case OsuSkinComponents.Cursor: if (source.GetTexture("cursor") != null) - return new LegacyCursor(GetConfig(OsuSkinConfiguration.CursorRotate)?.Value ?? true); + return new LegacyCursor(); return null; From 12cfb7dedb3a8e631abdeb73c18d2169d7dd8255 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2019 07:28:11 +0000 Subject: [PATCH 0169/1829] Bump System.ComponentModel.Annotations from 4.6.0 to 4.7.0 Bumps [System.ComponentModel.Annotations](https://github.com/dotnet/corefx) from 4.6.0 to 4.7.0. - [Release notes](https://github.com/dotnet/corefx/releases) - [Commits](https://github.com/dotnet/corefx/commits) Signed-off-by: dependabot-preview[bot] --- osu.Game/osu.Game.csproj | 2 +- osu.iOS.props | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 086359ee41..ef16738908 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -27,6 +27,6 @@ - + diff --git a/osu.iOS.props b/osu.iOS.props index 0eb8d98a63..5090190f28 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -86,7 +86,7 @@ - + From 53f7c753fb83cec669a56a12b9a4a19e096e9390 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 9 Dec 2019 16:44:19 +0900 Subject: [PATCH 0170/1829] General cleanups --- .../Sliders/Components/PathControlPointVisualiser.cs | 2 +- .../Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs | 3 ++- osu.Game.Tests/Visual/Gameplay/TestSceneSliderPath.cs | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs index a9616026f5..f0888b34fe 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs @@ -99,7 +99,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components private bool deleteSelected() { - List toRemove = Pieces.Where(p => p.IsSelected.Value).Select(p => p.Index).Select(i => slider.Path.ControlPoints[i]).ToList(); + List toRemove = Pieces.Where(p => p.IsSelected.Value).Select(p => slider.Path.ControlPoints[p.Index]).ToList(); // Ensure that there are any points to be deleted if (toRemove.Count == 0) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs index 639e18681b..7dd2017e48 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs @@ -41,7 +41,6 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders RelativeSizeAxes = Axes.Both; segmentStart = HitObject.Path.ControlPoints[0]; - } [BackgroundDependencyLoader] @@ -150,9 +149,11 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders case 2: segmentStart.Type.Value = PathType.Linear; break; + case 3: segmentStart.Type.Value = PathType.PerfectCurve; break; + default: segmentStart.Type.Value = PathType.Bezier; break; diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneSliderPath.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneSliderPath.cs index 27d39d0f17..606395c289 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneSliderPath.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneSliderPath.cs @@ -6,7 +6,6 @@ using System.Linq; using NUnit.Framework; using osu.Framework.Graphics; using osu.Framework.Graphics.Lines; -using osu.Framework.MathUtils; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Objects.Types; using osuTK; @@ -141,6 +140,7 @@ namespace osu.Game.Tests.Visual.Gameplay case 2: path.ControlPoints.AddRange(createSegment(PathType.PerfectCurve, Vector2.Zero, new Vector2(0, 100))); break; + case 4: path.ControlPoints.AddRange(createSegment(PathType.PerfectCurve, Vector2.Zero, new Vector2(0, 100), new Vector2(100), new Vector2(100, 0))); break; From b764a74919e5da3ac88b576e7b954b4a7bab6463 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2019 07:52:22 +0000 Subject: [PATCH 0171/1829] Bump Microsoft.Win32.Registry from 4.6.0 to 4.7.0 Bumps [Microsoft.Win32.Registry](https://github.com/dotnet/corefx) from 4.6.0 to 4.7.0. - [Release notes](https://github.com/dotnet/corefx/releases) - [Commits](https://github.com/dotnet/corefx/commits) Signed-off-by: dependabot-preview[bot] --- osu.Desktop/osu.Desktop.csproj | 2 +- osu.Game.Tournament/osu.Game.Tournament.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Desktop/osu.Desktop.csproj b/osu.Desktop/osu.Desktop.csproj index 01e4ada2f1..63aa999a97 100644 --- a/osu.Desktop/osu.Desktop.csproj +++ b/osu.Desktop/osu.Desktop.csproj @@ -28,7 +28,7 @@ - + diff --git a/osu.Game.Tournament/osu.Game.Tournament.csproj b/osu.Game.Tournament/osu.Game.Tournament.csproj index 8e881fdd9c..9cce40c9d3 100644 --- a/osu.Game.Tournament/osu.Game.Tournament.csproj +++ b/osu.Game.Tournament/osu.Game.Tournament.csproj @@ -9,6 +9,6 @@ - + \ No newline at end of file From 3861abce826e0f533f97cc678b5333046409b55f Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2019 07:52:23 +0000 Subject: [PATCH 0172/1829] Bump System.IO.Packaging from 4.6.0 to 4.7.0 Bumps [System.IO.Packaging](https://github.com/dotnet/corefx) from 4.6.0 to 4.7.0. - [Release notes](https://github.com/dotnet/corefx/releases) - [Commits](https://github.com/dotnet/corefx/commits) Signed-off-by: dependabot-preview[bot] --- osu.Desktop/osu.Desktop.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Desktop/osu.Desktop.csproj b/osu.Desktop/osu.Desktop.csproj index 01e4ada2f1..70b9d5c184 100644 --- a/osu.Desktop/osu.Desktop.csproj +++ b/osu.Desktop/osu.Desktop.csproj @@ -24,7 +24,7 @@ - + From 0c7e5a2e3b0cf886eae6f2828c33b793c2501cc0 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 6 Dec 2019 19:15:49 +0900 Subject: [PATCH 0173/1829] Add bindable adjustments for DT/HT rate --- osu.Game/Rulesets/Mods/ModDoubleTime.cs | 14 +++++++++++++- osu.Game/Rulesets/Mods/ModHalfTime.cs | 14 +++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModDoubleTime.cs b/osu.Game/Rulesets/Mods/ModDoubleTime.cs index a5e76e32b1..1a6831d974 100644 --- a/osu.Game/Rulesets/Mods/ModDoubleTime.cs +++ b/osu.Game/Rulesets/Mods/ModDoubleTime.cs @@ -3,7 +3,9 @@ using System; using System.Linq; +using osu.Framework.Bindables; using osu.Framework.Graphics.Sprites; +using osu.Game.Configuration; using osu.Game.Graphics; namespace osu.Game.Rulesets.Mods @@ -19,6 +21,16 @@ namespace osu.Game.Rulesets.Mods public override Type[] IncompatibleMods => base.IncompatibleMods.Append(typeof(ModHalfTime)).ToArray(); - protected override double RateAdjust => 1.5; + [SettingSource("Speed increase", "The actual increase to apply")] + public BindableNumber SpeedChange { get; } = new BindableDouble + { + MinValue = 1.01, + MaxValue = 2, + Default = 1.5, + Value = 1.5, + Precision = 0.01, + }; + + protected override double RateAdjust => SpeedChange.Value; } } diff --git a/osu.Game/Rulesets/Mods/ModHalfTime.cs b/osu.Game/Rulesets/Mods/ModHalfTime.cs index 27369f4c30..4acf771fa8 100644 --- a/osu.Game/Rulesets/Mods/ModHalfTime.cs +++ b/osu.Game/Rulesets/Mods/ModHalfTime.cs @@ -3,7 +3,9 @@ using System; using System.Linq; +using osu.Framework.Bindables; using osu.Framework.Graphics.Sprites; +using osu.Game.Configuration; using osu.Game.Graphics; namespace osu.Game.Rulesets.Mods @@ -19,6 +21,16 @@ namespace osu.Game.Rulesets.Mods public override Type[] IncompatibleMods => base.IncompatibleMods.Append(typeof(ModDoubleTime)).ToArray(); - protected override double RateAdjust => 0.75; + [SettingSource("Speed decrease", "The actual decrease to apply")] + public BindableNumber SpeedChange { get; } = new BindableDouble + { + MinValue = 0.5, + MaxValue = 0.99, + Default = 0.75, + Value = 0.75, + Precision = 0.01, + }; + + protected override double RateAdjust => SpeedChange.Value; } } From eb074b7058cc6586f447d308131db79b8af5724e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 9 Dec 2019 17:34:04 +0900 Subject: [PATCH 0174/1829] Allow mods to apply to track, not clock --- .../Visual/Gameplay/TestScenePlayerLoader.cs | 4 +- osu.Game/Overlays/MusicController.cs | 4 +- .../Difficulty/DifficultyCalculator.cs | 8 ++-- .../Difficulty/PerformanceCalculator.cs | 8 ++-- ...icableToClock.cs => IApplicableToTrack.cs} | 6 +-- osu.Game/Rulesets/Mods/ModDaycore.cs | 10 ++--- osu.Game/Rulesets/Mods/ModDoubleTime.cs | 2 +- osu.Game/Rulesets/Mods/ModHalfTime.cs | 2 +- osu.Game/Rulesets/Mods/ModNightcore.cs | 10 ++--- osu.Game/Rulesets/Mods/ModTimeAdjust.cs | 12 ++---- osu.Game/Rulesets/Mods/ModTimeRamp.cs | 32 ++++------------ .../Screens/Play/GameplayClockContainer.cs | 37 +++++++++---------- 12 files changed, 52 insertions(+), 83 deletions(-) rename osu.Game/Rulesets/Mods/{IApplicableToClock.cs => IApplicableToTrack.cs} (69%) diff --git a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs index dbea8d28a6..f02361e685 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs @@ -57,8 +57,8 @@ namespace osu.Game.Tests.Visual.Gameplay beforeLoadAction?.Invoke(); Beatmap.Value = CreateWorkingBeatmap(new OsuRuleset().RulesetInfo); - foreach (var mod in Mods.Value.OfType()) - mod.ApplyToClock(Beatmap.Value.Track); + foreach (var mod in Mods.Value.OfType()) + mod.ApplyToTrack(Beatmap.Value.Track); InputManager.Child = container = new TestPlayerLoaderContainer( loader = new TestPlayerLoader(() => diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs index 5e0a67c2f7..bafdad3508 100644 --- a/osu.Game/Overlays/MusicController.cs +++ b/osu.Game/Overlays/MusicController.cs @@ -261,8 +261,8 @@ namespace osu.Game.Overlays if (allowRateAdjustments) { - foreach (var mod in mods.Value.OfType()) - mod.ApplyToClock(track); + foreach (var mod in mods.Value.OfType()) + mod.ApplyToTrack(track); } } diff --git a/osu.Game/Rulesets/Difficulty/DifficultyCalculator.cs b/osu.Game/Rulesets/Difficulty/DifficultyCalculator.cs index e31c963403..1902de5bda 100644 --- a/osu.Game/Rulesets/Difficulty/DifficultyCalculator.cs +++ b/osu.Game/Rulesets/Difficulty/DifficultyCalculator.cs @@ -4,8 +4,8 @@ using System; using System.Collections.Generic; using System.Linq; +using osu.Framework.Audio.Track; using osu.Framework.Extensions.IEnumerableExtensions; -using osu.Framework.Timing; using osu.Game.Beatmaps; using osu.Game.Rulesets.Difficulty.Preprocessing; using osu.Game.Rulesets.Difficulty.Skills; @@ -41,10 +41,10 @@ namespace osu.Game.Rulesets.Difficulty IBeatmap playableBeatmap = beatmap.GetPlayableBeatmap(ruleset.RulesetInfo, mods); - var clock = new StopwatchClock(); - mods.OfType().ForEach(m => m.ApplyToClock(clock)); + var track = new TrackVirtual(10000); + mods.OfType().ForEach(m => m.ApplyToTrack(track)); - return calculate(playableBeatmap, mods, clock.Rate); + return calculate(playableBeatmap, mods, track.Rate); } /// diff --git a/osu.Game/Rulesets/Difficulty/PerformanceCalculator.cs b/osu.Game/Rulesets/Difficulty/PerformanceCalculator.cs index 9ab81b9580..ac3b817840 100644 --- a/osu.Game/Rulesets/Difficulty/PerformanceCalculator.cs +++ b/osu.Game/Rulesets/Difficulty/PerformanceCalculator.cs @@ -3,8 +3,8 @@ using System.Collections.Generic; using System.Linq; +using osu.Framework.Audio.Track; using osu.Framework.Extensions.IEnumerableExtensions; -using osu.Framework.Timing; using osu.Game.Beatmaps; using osu.Game.Rulesets.Mods; using osu.Game.Scoring; @@ -35,9 +35,9 @@ namespace osu.Game.Rulesets.Difficulty protected virtual void ApplyMods(Mod[] mods) { - var clock = new StopwatchClock(); - mods.OfType().ForEach(m => m.ApplyToClock(clock)); - TimeRate = clock.Rate; + var track = new TrackVirtual(10000); + mods.OfType().ForEach(m => m.ApplyToTrack(track)); + TimeRate = track.Rate; } public abstract double Calculate(Dictionary categoryDifficulty = null); diff --git a/osu.Game/Rulesets/Mods/IApplicableToClock.cs b/osu.Game/Rulesets/Mods/IApplicableToTrack.cs similarity index 69% rename from osu.Game/Rulesets/Mods/IApplicableToClock.cs rename to osu.Game/Rulesets/Mods/IApplicableToTrack.cs index e5767b5fbf..4d6d958e82 100644 --- a/osu.Game/Rulesets/Mods/IApplicableToClock.cs +++ b/osu.Game/Rulesets/Mods/IApplicableToTrack.cs @@ -1,15 +1,15 @@ // 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.Timing; +using osu.Framework.Audio.Track; namespace osu.Game.Rulesets.Mods { /// /// An interface for mods that make adjustments to the track. /// - public interface IApplicableToClock : IApplicableMod + public interface IApplicableToTrack : IApplicableMod { - void ApplyToClock(IAdjustableClock clock); + void ApplyToTrack(Track track); } } diff --git a/osu.Game/Rulesets/Mods/ModDaycore.cs b/osu.Game/Rulesets/Mods/ModDaycore.cs index 7e6d959119..dcb3cb5597 100644 --- a/osu.Game/Rulesets/Mods/ModDaycore.cs +++ b/osu.Game/Rulesets/Mods/ModDaycore.cs @@ -1,9 +1,8 @@ // 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.Audio; +using osu.Framework.Audio.Track; using osu.Framework.Graphics.Sprites; -using osu.Framework.Timing; namespace osu.Game.Rulesets.Mods { @@ -14,12 +13,9 @@ namespace osu.Game.Rulesets.Mods public override IconUsage Icon => FontAwesome.Solid.Question; public override string Description => "Whoaaaaa..."; - public override void ApplyToClock(IAdjustableClock clock) + public override void ApplyToTrack(Track track) { - if (clock is IHasPitchAdjust pitchAdjust) - pitchAdjust.PitchAdjust *= RateAdjust; - else - base.ApplyToClock(clock); + track.Frequency.Value *= RateAdjust; } } } diff --git a/osu.Game/Rulesets/Mods/ModDoubleTime.cs b/osu.Game/Rulesets/Mods/ModDoubleTime.cs index a5e76e32b1..5e685b040e 100644 --- a/osu.Game/Rulesets/Mods/ModDoubleTime.cs +++ b/osu.Game/Rulesets/Mods/ModDoubleTime.cs @@ -8,7 +8,7 @@ using osu.Game.Graphics; namespace osu.Game.Rulesets.Mods { - public abstract class ModDoubleTime : ModTimeAdjust, IApplicableToClock + public abstract class ModDoubleTime : ModTimeAdjust { public override string Name => "Double Time"; public override string Acronym => "DT"; diff --git a/osu.Game/Rulesets/Mods/ModHalfTime.cs b/osu.Game/Rulesets/Mods/ModHalfTime.cs index 27369f4c30..d17ddd2253 100644 --- a/osu.Game/Rulesets/Mods/ModHalfTime.cs +++ b/osu.Game/Rulesets/Mods/ModHalfTime.cs @@ -8,7 +8,7 @@ using osu.Game.Graphics; namespace osu.Game.Rulesets.Mods { - public abstract class ModHalfTime : ModTimeAdjust, IApplicableToClock + public abstract class ModHalfTime : ModTimeAdjust { public override string Name => "Half Time"; public override string Acronym => "HT"; diff --git a/osu.Game/Rulesets/Mods/ModNightcore.cs b/osu.Game/Rulesets/Mods/ModNightcore.cs index dc0fc33088..a4f1ef5a72 100644 --- a/osu.Game/Rulesets/Mods/ModNightcore.cs +++ b/osu.Game/Rulesets/Mods/ModNightcore.cs @@ -1,9 +1,8 @@ // 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.Audio; +using osu.Framework.Audio.Track; using osu.Framework.Graphics.Sprites; -using osu.Framework.Timing; using osu.Game.Graphics; namespace osu.Game.Rulesets.Mods @@ -15,12 +14,9 @@ namespace osu.Game.Rulesets.Mods public override IconUsage Icon => OsuIcon.ModNightcore; public override string Description => "Uguuuuuuuu..."; - public override void ApplyToClock(IAdjustableClock clock) + public override void ApplyToTrack(Track track) { - if (clock is IHasPitchAdjust pitchAdjust) - pitchAdjust.PitchAdjust *= RateAdjust; - else - base.ApplyToClock(clock); + track.Frequency.Value *= RateAdjust; } } } diff --git a/osu.Game/Rulesets/Mods/ModTimeAdjust.cs b/osu.Game/Rulesets/Mods/ModTimeAdjust.cs index 513883f552..f137a75ed8 100644 --- a/osu.Game/Rulesets/Mods/ModTimeAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModTimeAdjust.cs @@ -2,23 +2,19 @@ // See the LICENCE file in the repository root for full licence text. using System; -using osu.Framework.Audio; -using osu.Framework.Timing; +using osu.Framework.Audio.Track; namespace osu.Game.Rulesets.Mods { - public abstract class ModTimeAdjust : Mod + public abstract class ModTimeAdjust : Mod, IApplicableToTrack { public override Type[] IncompatibleMods => new[] { typeof(ModTimeRamp) }; protected abstract double RateAdjust { get; } - public virtual void ApplyToClock(IAdjustableClock clock) + public virtual void ApplyToTrack(Track track) { - if (clock is IHasTempoAdjust tempo) - tempo.TempoAdjust *= RateAdjust; - else - clock.Rate *= RateAdjust; + track.TempoAdjust *= RateAdjust; } } } diff --git a/osu.Game/Rulesets/Mods/ModTimeRamp.cs b/osu.Game/Rulesets/Mods/ModTimeRamp.cs index e231225e3c..d95d354487 100644 --- a/osu.Game/Rulesets/Mods/ModTimeRamp.cs +++ b/osu.Game/Rulesets/Mods/ModTimeRamp.cs @@ -3,15 +3,14 @@ using System; using System.Linq; -using osu.Framework.Audio; -using osu.Framework.Timing; +using osu.Framework.Audio.Track; using osu.Game.Beatmaps; using osu.Game.Rulesets.UI; using osu.Game.Rulesets.Objects; namespace osu.Game.Rulesets.Mods { - public abstract class ModTimeRamp : Mod, IUpdatableByPlayfield, IApplicableToClock, IApplicableToBeatmap + public abstract class ModTimeRamp : Mod, IUpdatableByPlayfield, IApplicableToTrack, IApplicableToBeatmap { /// /// The point in the beatmap at which the final ramping rate should be reached. @@ -24,11 +23,11 @@ namespace osu.Game.Rulesets.Mods private double finalRateTime; private double beginRampTime; - private IAdjustableClock clock; + private Track track; - public virtual void ApplyToClock(IAdjustableClock clock) + public virtual void ApplyToTrack(Track track) { - this.clock = clock; + this.track = track; lastAdjust = 1; @@ -46,7 +45,7 @@ namespace osu.Game.Rulesets.Mods public virtual void Update(Playfield playfield) { - applyAdjustment((clock.CurrentTime - beginRampTime) / finalRateTime); + applyAdjustment((track.CurrentTime - beginRampTime) / finalRateTime); } private double lastAdjust = 1; @@ -59,23 +58,8 @@ namespace osu.Game.Rulesets.Mods { double adjust = 1 + (Math.Sign(FinalRateAdjustment) * Math.Clamp(amount, 0, 1) * Math.Abs(FinalRateAdjustment)); - switch (clock) - { - case IHasPitchAdjust pitch: - pitch.PitchAdjust /= lastAdjust; - pitch.PitchAdjust *= adjust; - break; - - case IHasTempoAdjust tempo: - tempo.TempoAdjust /= lastAdjust; - tempo.TempoAdjust *= adjust; - break; - - default: - clock.Rate /= lastAdjust; - clock.Rate *= adjust; - break; - } + track.Tempo.Value /= lastAdjust; + track.Tempo.Value *= lastAdjust; lastAdjust = adjust; } diff --git a/osu.Game/Screens/Play/GameplayClockContainer.cs b/osu.Game/Screens/Play/GameplayClockContainer.cs index 58c9a6a784..1508758c87 100644 --- a/osu.Game/Screens/Play/GameplayClockContainer.cs +++ b/osu.Game/Screens/Play/GameplayClockContainer.cs @@ -28,9 +28,9 @@ namespace osu.Game.Screens.Play private readonly IReadOnlyList mods; /// - /// The original source (usually a 's track). + /// The 's track. /// - private IAdjustableClock sourceClock; + private Track track; public readonly BindableBool IsPaused = new BindableBool(); @@ -72,8 +72,8 @@ namespace osu.Game.Screens.Play RelativeSizeAxes = Axes.Both; - sourceClock = (IAdjustableClock)beatmap.Track ?? new StopwatchClock(); - (sourceClock as IAdjustableAudioComponent)?.AddAdjustment(AdjustableProperty.Frequency, pauseFreqAdjust); + track = beatmap.Track; + track.AddAdjustment(AdjustableProperty.Frequency, pauseFreqAdjust); adjustableClock = new DecoupleableInterpolatingFramedClock { IsCoupled = false }; @@ -127,11 +127,11 @@ namespace osu.Game.Screens.Play { Task.Run(() => { - sourceClock.Reset(); + track.Reset(); Schedule(() => { - adjustableClock.ChangeSource(sourceClock); + adjustableClock.ChangeSource(track); updateRate(); if (!IsPaused.Value) @@ -197,13 +197,13 @@ namespace osu.Game.Screens.Play /// public void StopUsingBeatmapClock() { - if (sourceClock != beatmap.Track) + if (track != beatmap.Track) return; removeSourceClockAdjustments(); - sourceClock = new TrackVirtual(beatmap.Track.Length); - adjustableClock.ChangeSource(sourceClock); + track = new TrackVirtual(beatmap.Track.Length); + adjustableClock.ChangeSource(track); } protected override void Update() @@ -218,18 +218,15 @@ namespace osu.Game.Screens.Play private void updateRate() { - if (sourceClock == null) return; + if (track == null) return; speedAdjustmentsApplied = true; - sourceClock.ResetSpeedAdjustments(); + track.ResetSpeedAdjustments(); - if (sourceClock is IHasTempoAdjust tempo) - tempo.TempoAdjust = UserPlaybackRate.Value; - else - sourceClock.Rate = UserPlaybackRate.Value; + track.Tempo.Value = UserPlaybackRate.Value; - foreach (var mod in mods.OfType()) - mod.ApplyToClock(sourceClock); + foreach (var mod in mods.OfType()) + mod.ApplyToTrack(track); } protected override void Dispose(bool isDisposing) @@ -237,18 +234,18 @@ namespace osu.Game.Screens.Play base.Dispose(isDisposing); removeSourceClockAdjustments(); - sourceClock = null; + track = null; } private void removeSourceClockAdjustments() { if (speedAdjustmentsApplied) { - sourceClock.ResetSpeedAdjustments(); + track.ResetSpeedAdjustments(); speedAdjustmentsApplied = false; } - (sourceClock as IAdjustableAudioComponent)?.RemoveAdjustment(AdjustableProperty.Frequency, pauseFreqAdjust); + (track as IAdjustableAudioComponent)?.RemoveAdjustment(AdjustableProperty.Frequency, pauseFreqAdjust); } } } From 5a093c039cedd3b214827871a77c3ef6c69852c7 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 9 Dec 2019 17:45:08 +0900 Subject: [PATCH 0175/1829] Simplify path/point construction --- osu.Game/Rulesets/Objects/PathControlPoint.cs | 15 ++++++++++++++- osu.Game/Rulesets/Objects/SliderPath.cs | 15 ++++----------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/osu.Game/Rulesets/Objects/PathControlPoint.cs b/osu.Game/Rulesets/Objects/PathControlPoint.cs index 83436b7a36..de40c24060 100644 --- a/osu.Game/Rulesets/Objects/PathControlPoint.cs +++ b/osu.Game/Rulesets/Objects/PathControlPoint.cs @@ -26,12 +26,25 @@ namespace osu.Game.Rulesets.Objects /// internal event Action Changed; + /// + /// Creates a new . + /// public PathControlPoint() + : this(Vector2.Zero, null) + { + } + + /// + /// Creates a new with a provided position and type. + /// + /// The initial position. + /// The initial type. + public PathControlPoint(Vector2 position, PathType? type = null) { Position.ValueChanged += _ => Changed?.Invoke(); Type.ValueChanged += _ => Changed?.Invoke(); } - public bool Equals(PathControlPoint other) => Position.Value == other.Position.Value && Type.Value == other.Type.Value; + public bool Equals(PathControlPoint other) => Position.Value == other?.Position.Value && Type.Value == other.Type.Value; } } diff --git a/osu.Game/Rulesets/Objects/SliderPath.cs b/osu.Game/Rulesets/Objects/SliderPath.cs index 969cdcc463..dbd236107c 100644 --- a/osu.Game/Rulesets/Objects/SliderPath.cs +++ b/osu.Game/Rulesets/Objects/SliderPath.cs @@ -40,12 +40,10 @@ namespace osu.Game.Rulesets.Objects /// public readonly BindableList ControlPoints = new BindableList(); - public readonly List Test = new List(); - - private readonly Cached pathCache = new Cached(); - private readonly List calculatedPath = new List(); private readonly List cumulativeLength = new List(); + private readonly Cached pathCache = new Cached(); + private double calculatedLength; /// @@ -87,7 +85,7 @@ namespace osu.Game.Rulesets.Objects } /// - /// Creates a new . + /// Creates a new initialised with a list of control points. /// /// An optional set of s to initialise the path with. /// A user-set distance of the path that may be shorter or longer than the true distance between all control points. @@ -101,13 +99,8 @@ namespace osu.Game.Rulesets.Objects } public SliderPath(PathType type, Vector2[] controlPoints, double? expectedDistance = null) - : this() + : this(controlPoints.Select((c, i) => new PathControlPoint(c, i == 0 ? (PathType?)type : null)).ToArray(), expectedDistance) { - foreach (var c in controlPoints) - ControlPoints.Add(new PathControlPoint { Position = { Value = c } }); - ControlPoints[0].Type.Value = type; - - ExpectedDistance.Value = expectedDistance; } /// From 9cb649436c838047fdddbc91b87f08f07e94afd2 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 9 Dec 2019 17:47:05 +0900 Subject: [PATCH 0176/1829] Default to linear control point type --- osu.Game/Rulesets/Objects/SliderPath.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/osu.Game/Rulesets/Objects/SliderPath.cs b/osu.Game/Rulesets/Objects/SliderPath.cs index dbd236107c..e323054234 100644 --- a/osu.Game/Rulesets/Objects/SliderPath.cs +++ b/osu.Game/Rulesets/Objects/SliderPath.cs @@ -196,9 +196,6 @@ namespace osu.Game.Rulesets.Objects if (ControlPoints.Count == 0) return; - if (ControlPoints[0].Type.Value == null) - throw new InvalidOperationException($"The first control point in a {nameof(SliderPath)} must have a non-null type."); - Vector2[] vertices = new Vector2[ControlPoints.Count]; for (int i = 0; i < ControlPoints.Count; i++) vertices[i] = ControlPoints[i].Position.Value; @@ -214,7 +211,7 @@ namespace osu.Game.Rulesets.Objects // The current vertex ends the segment var segmentVertices = vertices.AsSpan().Slice(start, i - start + 1); - var segmentType = ControlPoints[start].Type.Value.Value; + var segmentType = ControlPoints[start].Type.Value ?? PathType.Linear; foreach (Vector2 t in computeSubPath(segmentVertices, segmentType)) { From fa1468325e504a22f7a6e7f9dff5c34dd8878d41 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 9 Dec 2019 17:48:27 +0900 Subject: [PATCH 0177/1829] Refactor hitobjects to remove default control point --- osu.Game.Rulesets.Catch/Objects/JuiceStream.cs | 2 +- osu.Game.Rulesets.Osu/Objects/Slider.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Objects/JuiceStream.cs b/osu.Game.Rulesets.Catch/Objects/JuiceStream.cs index 366f10d61d..d5d99640af 100644 --- a/osu.Game.Rulesets.Catch/Objects/JuiceStream.cs +++ b/osu.Game.Rulesets.Catch/Objects/JuiceStream.cs @@ -116,7 +116,7 @@ namespace osu.Game.Rulesets.Catch.Objects public double Duration => EndTime - StartTime; - private readonly SliderPath path = new SliderPath(new[] { new PathControlPoint { Type = { Value = PathType.Linear } } }); + private readonly SliderPath path = new SliderPath(); public SliderPath Path { diff --git a/osu.Game.Rulesets.Osu/Objects/Slider.cs b/osu.Game.Rulesets.Osu/Objects/Slider.cs index 4c299fd7c2..134576316a 100644 --- a/osu.Game.Rulesets.Osu/Objects/Slider.cs +++ b/osu.Game.Rulesets.Osu/Objects/Slider.cs @@ -27,7 +27,7 @@ namespace osu.Game.Rulesets.Osu.Objects public Vector2 StackedPositionAt(double t) => StackedPosition + this.CurvePositionAt(t); - private readonly SliderPath path = new SliderPath(new[] { new PathControlPoint { Type = { Value = PathType.Linear } } }); + private readonly SliderPath path = new SliderPath(); public SliderPath Path { From 883d5bc11d54cfd72e58f2e7d42c21b8fea1141b Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 9 Dec 2019 17:54:19 +0900 Subject: [PATCH 0178/1829] Remove automatic slider path offsetting --- .../Components/PathControlPointVisualiser.cs | 8 ++++++++ osu.Game.Rulesets.Osu/Objects/Slider.cs | 2 -- osu.Game/Rulesets/Objects/SliderPath.cs | 20 ------------------- 3 files changed, 8 insertions(+), 22 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs index f0888b34fe..434e74ddeb 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs @@ -16,6 +16,7 @@ using osu.Game.Graphics.UserInterface; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Osu.Objects; using osu.Game.Screens.Edit.Compose; +using osuTK; using osuTK.Input; namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components @@ -122,6 +123,13 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components return true; } + // The path will have a non-zero offset if the head is removed, but sliders don't support this behaviour since the head is positioned at the slider's position + // So the slider needs to be offset by this amount instead, and all control points offset backwards such that the path is re-positioned at (0, 0) + Vector2 first = slider.Path.ControlPoints[0].Position.Value; + foreach (var c in slider.Path.ControlPoints) + c.Position.Value -= first; + slider.Position += first; + // Since pieces are re-used, they will not point to the deleted control points while remaining selected foreach (var piece in Pieces) piece.IsSelected.Value = false; diff --git a/osu.Game.Rulesets.Osu/Objects/Slider.cs b/osu.Game.Rulesets.Osu/Objects/Slider.cs index 134576316a..34e5a7f3cd 100644 --- a/osu.Game.Rulesets.Osu/Objects/Slider.cs +++ b/osu.Game.Rulesets.Osu/Objects/Slider.cs @@ -113,8 +113,6 @@ namespace osu.Game.Rulesets.Osu.Objects { SamplesBindable.ItemsAdded += _ => updateNestedSamples(); SamplesBindable.ItemsRemoved += _ => updateNestedSamples(); - - Path.OffsetChanged += offset => Position += offset; Path.Version.ValueChanged += _ => updateNestedPositions(); } diff --git a/osu.Game/Rulesets/Objects/SliderPath.cs b/osu.Game/Rulesets/Objects/SliderPath.cs index e323054234..d868ee27f0 100644 --- a/osu.Game/Rulesets/Objects/SliderPath.cs +++ b/osu.Game/Rulesets/Objects/SliderPath.cs @@ -16,12 +16,6 @@ namespace osu.Game.Rulesets.Objects { public class SliderPath { - /// - /// Invoked when the offset of the path changes. - /// The provided value indicates the offset, and should be used to re-calculate the position of the containing drawable. - /// - public event Action OffsetChanged; - /// /// The current version of this . Updated when any change to the path occurs. /// @@ -66,20 +60,6 @@ namespace osu.Game.Rulesets.Objects foreach (var c in items) c.Changed -= invalidate; - // Make all control points relative to the first one - if (ControlPoints.Count > 0) - { - Vector2 first = ControlPoints[0].Position.Value; - - if (first != Vector2.Zero) - { - foreach (var c in ControlPoints) - c.Position.Value -= first; - - OffsetChanged?.Invoke(first); - } - } - invalidate(); }; } From bfbb9aa18e09640549f580748be35a5e7690d82b Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 9 Dec 2019 18:01:02 +0900 Subject: [PATCH 0179/1829] Remove outdated assert --- osu.Game/Rulesets/Objects/SliderPath.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/osu.Game/Rulesets/Objects/SliderPath.cs b/osu.Game/Rulesets/Objects/SliderPath.cs index d868ee27f0..d5ae6f471d 100644 --- a/osu.Game/Rulesets/Objects/SliderPath.cs +++ b/osu.Game/Rulesets/Objects/SliderPath.cs @@ -187,8 +187,6 @@ namespace osu.Game.Rulesets.Objects if (ControlPoints[i].Type.Value == null && i < ControlPoints.Count - 1) continue; - Debug.Assert(ControlPoints[start].Type.Value.HasValue); - // The current vertex ends the segment var segmentVertices = vertices.AsSpan().Slice(start, i - start + 1); var segmentType = ControlPoints[start].Type.Value ?? PathType.Linear; From a1798fd38d29e8cc25a0919025b78bd4e1f24e39 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 9 Dec 2019 18:01:13 +0900 Subject: [PATCH 0180/1829] Fix bad ctor implementation --- osu.Game/Rulesets/Objects/PathControlPoint.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/osu.Game/Rulesets/Objects/PathControlPoint.cs b/osu.Game/Rulesets/Objects/PathControlPoint.cs index de40c24060..5737d3f618 100644 --- a/osu.Game/Rulesets/Objects/PathControlPoint.cs +++ b/osu.Game/Rulesets/Objects/PathControlPoint.cs @@ -41,6 +41,9 @@ namespace osu.Game.Rulesets.Objects /// The initial type. public PathControlPoint(Vector2 position, PathType? type = null) { + Position.Value = position; + Type.Value = type; + Position.ValueChanged += _ => Changed?.Invoke(); Type.ValueChanged += _ => Changed?.Invoke(); } From d650bfb6d6d3c56439c3a56e1c1afd940d9d989b Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 9 Dec 2019 18:05:14 +0900 Subject: [PATCH 0181/1829] Remove unnecessary cast --- osu.Game/Screens/Play/GameplayClockContainer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Play/GameplayClockContainer.cs b/osu.Game/Screens/Play/GameplayClockContainer.cs index 1508758c87..2cc03ae453 100644 --- a/osu.Game/Screens/Play/GameplayClockContainer.cs +++ b/osu.Game/Screens/Play/GameplayClockContainer.cs @@ -245,7 +245,7 @@ namespace osu.Game.Screens.Play speedAdjustmentsApplied = false; } - (track as IAdjustableAudioComponent)?.RemoveAdjustment(AdjustableProperty.Frequency, pauseFreqAdjust); + track.RemoveAdjustment(AdjustableProperty.Frequency, pauseFreqAdjust); } } } From 2dbf94f3abc054504d74a831fc8e885640710d1b Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 9 Dec 2019 18:10:33 +0900 Subject: [PATCH 0182/1829] Make placement blueprint add an initial segment --- .../Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs index 7dd2017e48..c004b6db28 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs @@ -30,7 +30,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders private PlacementState state; private PathControlPoint segmentStart; private PathControlPoint cursor; - private int currentSegmentLength = 1; + private int currentSegmentLength; [Resolved(CanBeNull = true)] private HitObjectComposer composer { get; set; } @@ -40,7 +40,8 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders { RelativeSizeAxes = Axes.Both; - segmentStart = HitObject.Path.ControlPoints[0]; + HitObject.Path.ControlPoints.Add(segmentStart = new PathControlPoint(Vector2.Zero, PathType.Linear)); + currentSegmentLength = 1; } [BackgroundDependencyLoader] From b6e2738236da446fd99de6f44fa6cb5930572a3f Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 9 Dec 2019 18:15:00 +0900 Subject: [PATCH 0183/1829] Remove unused using --- osu.Game/Rulesets/Objects/SliderPath.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Rulesets/Objects/SliderPath.cs b/osu.Game/Rulesets/Objects/SliderPath.cs index d5ae6f471d..d8c6320c6d 100644 --- a/osu.Game/Rulesets/Objects/SliderPath.cs +++ b/osu.Game/Rulesets/Objects/SliderPath.cs @@ -3,7 +3,6 @@ using System; using System.Collections.Generic; -using System.Diagnostics; using System.Linq; using Newtonsoft.Json; using osu.Framework.Bindables; From 6d9cd0fafe6b405d48fe74061c529bcdf0aaeeac Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 9 Dec 2019 18:25:13 +0900 Subject: [PATCH 0184/1829] Split out complex method --- osu.Game/Rulesets/Objects/SliderPath.cs | 38 ++++++++++++------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/osu.Game/Rulesets/Objects/SliderPath.cs b/osu.Game/Rulesets/Objects/SliderPath.cs index d8c6320c6d..6a151d7d33 100644 --- a/osu.Game/Rulesets/Objects/SliderPath.cs +++ b/osu.Game/Rulesets/Objects/SliderPath.cs @@ -190,7 +190,7 @@ namespace osu.Game.Rulesets.Objects var segmentVertices = vertices.AsSpan().Slice(start, i - start + 1); var segmentType = ControlPoints[start].Type.Value ?? PathType.Linear; - foreach (Vector2 t in computeSubPath(segmentVertices, segmentType)) + foreach (Vector2 t in calculateSubPath(segmentVertices, segmentType)) { if (calculatedPath.Count == 0 || calculatedPath.Last() != t) calculatedPath.Add(t); @@ -199,32 +199,32 @@ namespace osu.Game.Rulesets.Objects // Start the new segment at the current vertex start = i; } + } - static List computeSubPath(ReadOnlySpan subControlPoints, PathType type) + private List calculateSubPath(ReadOnlySpan subControlPoints, PathType type) + { + switch (type) { - switch (type) - { - case PathType.Linear: - return PathApproximator.ApproximateLinear(subControlPoints); + case PathType.Linear: + return PathApproximator.ApproximateLinear(subControlPoints); - case PathType.PerfectCurve: - if (subControlPoints.Length != 3) - break; + case PathType.PerfectCurve: + if (subControlPoints.Length != 3) + break; - List subpath = PathApproximator.ApproximateCircularArc(subControlPoints); + List subpath = PathApproximator.ApproximateCircularArc(subControlPoints); - // If for some reason a circular arc could not be fit to the 3 given points, fall back to a numerically stable bezier approximation. - if (subpath.Count == 0) - break; + // If for some reason a circular arc could not be fit to the 3 given points, fall back to a numerically stable bezier approximation. + if (subpath.Count == 0) + break; - return subpath; + return subpath; - case PathType.Catmull: - return PathApproximator.ApproximateCatmull(subControlPoints); - } - - return PathApproximator.ApproximateBezier(subControlPoints); + case PathType.Catmull: + return PathApproximator.ApproximateCatmull(subControlPoints); } + + return PathApproximator.ApproximateBezier(subControlPoints); } private void calculateLength() From 04b3297a0515c9a204109b387bf4e5e3008cabe8 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Fri, 6 Dec 2019 21:32:31 +0800 Subject: [PATCH 0185/1829] Constrain configuration lookup as enum. --- osu.Game/Configuration/DatabasedConfigManager.cs | 7 ++++--- osu.Game/Configuration/InMemoryConfigManager.cs | 5 +++-- osu.Game/Rulesets/Configuration/RulesetConfigManager.cs | 5 +++-- osu.Game/Skinning/SkinConfigManager.cs | 3 ++- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/osu.Game/Configuration/DatabasedConfigManager.cs b/osu.Game/Configuration/DatabasedConfigManager.cs index 1ef4c2527a..b3783b45a8 100644 --- a/osu.Game/Configuration/DatabasedConfigManager.cs +++ b/osu.Game/Configuration/DatabasedConfigManager.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.Collections.Generic; using System.Linq; using osu.Framework.Bindables; @@ -9,8 +10,8 @@ using osu.Game.Rulesets; namespace osu.Game.Configuration { - public abstract class DatabasedConfigManager : ConfigManager - where T : struct + public abstract class DatabasedConfigManager : ConfigManager + where TLookup : struct, Enum { private readonly SettingsStore settings; @@ -53,7 +54,7 @@ namespace osu.Game.Configuration private readonly List dirtySettings = new List(); - protected override void AddBindable(T lookup, Bindable bindable) + protected override void AddBindable(TLookup lookup, Bindable bindable) { base.AddBindable(lookup, bindable); diff --git a/osu.Game/Configuration/InMemoryConfigManager.cs b/osu.Game/Configuration/InMemoryConfigManager.cs index b0dc6b0e9c..ccf697f680 100644 --- a/osu.Game/Configuration/InMemoryConfigManager.cs +++ b/osu.Game/Configuration/InMemoryConfigManager.cs @@ -1,12 +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 osu.Framework.Configuration; namespace osu.Game.Configuration { - public class InMemoryConfigManager : ConfigManager - where T : struct + public class InMemoryConfigManager : ConfigManager + where TLookup : struct, Enum { public InMemoryConfigManager() { diff --git a/osu.Game/Rulesets/Configuration/RulesetConfigManager.cs b/osu.Game/Rulesets/Configuration/RulesetConfigManager.cs index ed5fdf9809..0ff3455f00 100644 --- a/osu.Game/Rulesets/Configuration/RulesetConfigManager.cs +++ b/osu.Game/Rulesets/Configuration/RulesetConfigManager.cs @@ -1,12 +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 osu.Game.Configuration; namespace osu.Game.Rulesets.Configuration { - public abstract class RulesetConfigManager : DatabasedConfigManager, IRulesetConfigManager - where T : struct + public abstract class RulesetConfigManager : DatabasedConfigManager, IRulesetConfigManager + where TLookup : struct, Enum { protected RulesetConfigManager(SettingsStore settings, RulesetInfo ruleset, int? variant = null) : base(settings, ruleset, variant) diff --git a/osu.Game/Skinning/SkinConfigManager.cs b/osu.Game/Skinning/SkinConfigManager.cs index 896444d1d2..682138a2e9 100644 --- a/osu.Game/Skinning/SkinConfigManager.cs +++ b/osu.Game/Skinning/SkinConfigManager.cs @@ -1,11 +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 osu.Framework.Configuration; namespace osu.Game.Skinning { - public class SkinConfigManager : ConfigManager where T : struct + public class SkinConfigManager : ConfigManager where TLookup : struct, Enum { protected override void PerformLoad() { From 40a5c1fd96bfd197131f15bc6c9eececba82c437 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Sat, 7 Dec 2019 19:49:52 +0800 Subject: [PATCH 0186/1829] Constrain transformable with class. --- osu.Game/Graphics/IHasAccentColour.cs | 2 +- osu.Game/Storyboards/Drawables/IFlippable.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game/Graphics/IHasAccentColour.cs b/osu.Game/Graphics/IHasAccentColour.cs index 1a66819379..af497da70f 100644 --- a/osu.Game/Graphics/IHasAccentColour.cs +++ b/osu.Game/Graphics/IHasAccentColour.cs @@ -24,7 +24,7 @@ namespace osu.Game.Graphics /// /// A to which further transforms can be added. public static TransformSequence FadeAccent(this T accentedDrawable, Color4 newColour, double duration = 0, Easing easing = Easing.None) - where T : IHasAccentColour + where T : class, IHasAccentColour => accentedDrawable.TransformTo(nameof(accentedDrawable.AccentColour), newColour, duration, easing); /// diff --git a/osu.Game/Storyboards/Drawables/IFlippable.cs b/osu.Game/Storyboards/Drawables/IFlippable.cs index 9e12de5833..1c4cdde22d 100644 --- a/osu.Game/Storyboards/Drawables/IFlippable.cs +++ b/osu.Game/Storyboards/Drawables/IFlippable.cs @@ -41,7 +41,7 @@ namespace osu.Game.Storyboards.Drawables /// /// A to which further transforms can be added. public static TransformSequence TransformFlipH(this T flippable, bool newValue, double delay = 0) - where T : IFlippable + where T : class, IFlippable => flippable.TransformTo(flippable.PopulateTransform(new TransformFlipH(), newValue, delay)); /// @@ -49,7 +49,7 @@ namespace osu.Game.Storyboards.Drawables /// /// A to which further transforms can be added. public static TransformSequence TransformFlipV(this T flippable, bool newValue, double delay = 0) - where T : IFlippable + where T : class, IFlippable => flippable.TransformTo(flippable.PopulateTransform(new TransformFlipV(), newValue, delay)); } } From c3518a2b9491960e573e5de0e3860d66a178a0c7 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Sat, 7 Dec 2019 19:56:56 +0800 Subject: [PATCH 0187/1829] Enum constraint for enum dropdown. --- .../Graphics/UserInterface/OsuEnumDropdown.cs | 4 +--- .../SearchableList/DisplayStyleControl.cs | 2 ++ .../SearchableListFilterControl.cs | 19 +++++++++---------- .../SearchableList/SearchableListHeader.cs | 4 +--- .../SearchableList/SearchableListOverlay.cs | 14 +++++++++----- .../SearchableList/SlimEnumDropdown.cs | 2 ++ .../Overlays/Settings/SettingsEnumDropdown.cs | 2 ++ 7 files changed, 26 insertions(+), 21 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/OsuEnumDropdown.cs b/osu.Game/Graphics/UserInterface/OsuEnumDropdown.cs index e132027787..528d7d60f8 100644 --- a/osu.Game/Graphics/UserInterface/OsuEnumDropdown.cs +++ b/osu.Game/Graphics/UserInterface/OsuEnumDropdown.cs @@ -6,12 +6,10 @@ using System; namespace osu.Game.Graphics.UserInterface { public class OsuEnumDropdown : OsuDropdown + where T : struct, Enum { public OsuEnumDropdown() { - if (!typeof(T).IsEnum) - throw new InvalidOperationException("OsuEnumDropdown only supports enums as the generic type argument"); - Items = (T[])Enum.GetValues(typeof(T)); } } diff --git a/osu.Game/Overlays/SearchableList/DisplayStyleControl.cs b/osu.Game/Overlays/SearchableList/DisplayStyleControl.cs index 0808cc8fcc..a33f4eb30d 100644 --- a/osu.Game/Overlays/SearchableList/DisplayStyleControl.cs +++ b/osu.Game/Overlays/SearchableList/DisplayStyleControl.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 osu.Framework.Bindables; using osuTK; using osu.Framework.Graphics; @@ -11,6 +12,7 @@ using osu.Game.Graphics.Containers; namespace osu.Game.Overlays.SearchableList { public class DisplayStyleControl : Container + where T : struct, Enum { public readonly SlimEnumDropdown Dropdown; public readonly Bindable DisplayStyle = new Bindable(); diff --git a/osu.Game/Overlays/SearchableList/SearchableListFilterControl.cs b/osu.Game/Overlays/SearchableList/SearchableListFilterControl.cs index 372da94b37..117f905de4 100644 --- a/osu.Game/Overlays/SearchableList/SearchableListFilterControl.cs +++ b/osu.Game/Overlays/SearchableList/SearchableListFilterControl.cs @@ -13,7 +13,9 @@ using osu.Framework.Graphics.Shapes; namespace osu.Game.Overlays.SearchableList { - public abstract class SearchableListFilterControl : Container + public abstract class SearchableListFilterControl : Container + where TTab : struct, Enum + where TCategory : struct, Enum { private const float padding = 10; @@ -21,12 +23,12 @@ namespace osu.Game.Overlays.SearchableList private readonly Box tabStrip; public readonly SearchTextBox Search; - public readonly PageTabControl Tabs; - public readonly DisplayStyleControl DisplayStyleControl; + public readonly PageTabControl Tabs; + public readonly DisplayStyleControl DisplayStyleControl; protected abstract Color4 BackgroundColour { get; } - protected abstract T DefaultTab { get; } - protected abstract U DefaultCategory { get; } + protected abstract TTab DefaultTab { get; } + protected abstract TCategory DefaultCategory { get; } protected virtual Drawable CreateSupplementaryControls() => null; /// @@ -36,9 +38,6 @@ namespace osu.Game.Overlays.SearchableList protected SearchableListFilterControl() { - if (!typeof(T).IsEnum) - throw new InvalidOperationException("SearchableListFilterControl's sort tabs only support enums as the generic type argument"); - RelativeSizeAxes = Axes.X; var controls = CreateSupplementaryControls(); @@ -90,7 +89,7 @@ namespace osu.Game.Overlays.SearchableList RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, Padding = new MarginPadding { Right = 225 }, - Child = Tabs = new PageTabControl + Child = Tabs = new PageTabControl { RelativeSizeAxes = Axes.X, }, @@ -105,7 +104,7 @@ namespace osu.Game.Overlays.SearchableList }, }, }, - DisplayStyleControl = new DisplayStyleControl + DisplayStyleControl = new DisplayStyleControl { Anchor = Anchor.TopRight, Origin = Anchor.TopRight, diff --git a/osu.Game/Overlays/SearchableList/SearchableListHeader.cs b/osu.Game/Overlays/SearchableList/SearchableListHeader.cs index 73dca956d1..66fedf0a56 100644 --- a/osu.Game/Overlays/SearchableList/SearchableListHeader.cs +++ b/osu.Game/Overlays/SearchableList/SearchableListHeader.cs @@ -14,6 +14,7 @@ using osu.Framework.Graphics.Sprites; namespace osu.Game.Overlays.SearchableList { public abstract class SearchableListHeader : Container + where T : struct, Enum { public readonly HeaderTabControl Tabs; @@ -24,9 +25,6 @@ namespace osu.Game.Overlays.SearchableList protected SearchableListHeader() { - if (!typeof(T).IsEnum) - throw new InvalidOperationException("BrowseHeader only supports enums as the generic type argument"); - RelativeSizeAxes = Axes.X; Height = 90; diff --git a/osu.Game/Overlays/SearchableList/SearchableListOverlay.cs b/osu.Game/Overlays/SearchableList/SearchableListOverlay.cs index fb0c1d9808..37478d902b 100644 --- a/osu.Game/Overlays/SearchableList/SearchableListOverlay.cs +++ b/osu.Game/Overlays/SearchableList/SearchableListOverlay.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 osuTK.Graphics; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; @@ -16,19 +17,22 @@ namespace osu.Game.Overlays.SearchableList public const float WIDTH_PADDING = 80; } - public abstract class SearchableListOverlay : SearchableListOverlay + public abstract class SearchableListOverlay : SearchableListOverlay + where THeader : struct, Enum + where TTab : struct, Enum + where TCategory : struct, Enum { private readonly Container scrollContainer; - protected readonly SearchableListHeader Header; - protected readonly SearchableListFilterControl Filter; + protected readonly SearchableListHeader Header; + protected readonly SearchableListFilterControl Filter; protected readonly FillFlowContainer ScrollFlow; protected abstract Color4 BackgroundColour { get; } protected abstract Color4 TrianglesColourLight { get; } protected abstract Color4 TrianglesColourDark { get; } - protected abstract SearchableListHeader CreateHeader(); - protected abstract SearchableListFilterControl CreateFilterControl(); + protected abstract SearchableListHeader CreateHeader(); + protected abstract SearchableListFilterControl CreateFilterControl(); protected SearchableListOverlay() { diff --git a/osu.Game/Overlays/SearchableList/SlimEnumDropdown.cs b/osu.Game/Overlays/SearchableList/SlimEnumDropdown.cs index f320ef1344..9e7ff1205f 100644 --- a/osu.Game/Overlays/SearchableList/SlimEnumDropdown.cs +++ b/osu.Game/Overlays/SearchableList/SlimEnumDropdown.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 osuTK.Graphics; using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; @@ -11,6 +12,7 @@ using osuTK; namespace osu.Game.Overlays.SearchableList { public class SlimEnumDropdown : OsuEnumDropdown + where T : struct, Enum { protected override DropdownHeader CreateHeader() => new SlimDropdownHeader(); diff --git a/osu.Game/Overlays/Settings/SettingsEnumDropdown.cs b/osu.Game/Overlays/Settings/SettingsEnumDropdown.cs index 9f09f251c2..c77d14632b 100644 --- a/osu.Game/Overlays/Settings/SettingsEnumDropdown.cs +++ b/osu.Game/Overlays/Settings/SettingsEnumDropdown.cs @@ -1,12 +1,14 @@ // 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 osu.Framework.Graphics; using osu.Game.Graphics.UserInterface; namespace osu.Game.Overlays.Settings { public class SettingsEnumDropdown : SettingsDropdown + where T : struct, Enum { protected override OsuDropdown CreateDropdown() => new DropdownControl(); From ad1fb3bda2b75bb357d4bd2b8930af7d533e3384 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Mon, 9 Dec 2019 17:48:41 +0800 Subject: [PATCH 0188/1829] Remove IComparable in constraint. --- osu.Game/Screens/Select/FilterCriteria.cs | 2 +- osu.Game/Screens/Select/FilterQueryParser.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Screens/Select/FilterCriteria.cs b/osu.Game/Screens/Select/FilterCriteria.cs index abcb1f2171..e3ad76ac35 100644 --- a/osu.Game/Screens/Select/FilterCriteria.cs +++ b/osu.Game/Screens/Select/FilterCriteria.cs @@ -44,7 +44,7 @@ namespace osu.Game.Screens.Select } public struct OptionalRange : IEquatable> - where T : struct, IComparable + where T : struct { public bool HasFilter => Max != null || Min != null; diff --git a/osu.Game/Screens/Select/FilterQueryParser.cs b/osu.Game/Screens/Select/FilterQueryParser.cs index ffe1258168..89afc729fe 100644 --- a/osu.Game/Screens/Select/FilterQueryParser.cs +++ b/osu.Game/Screens/Select/FilterQueryParser.cs @@ -170,7 +170,7 @@ namespace osu.Game.Screens.Select } private static void updateCriteriaRange(ref FilterCriteria.OptionalRange range, string op, T value) - where T : struct, IComparable + where T : struct { switch (op) { From 1e49078c526f2050a137f087cf0000f678f3484e Mon Sep 17 00:00:00 2001 From: mcendu Date: Mon, 9 Dec 2019 17:51:44 +0800 Subject: [PATCH 0189/1829] Add OsuCursorSprite --- osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorSprite.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorSprite.cs diff --git a/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorSprite.cs b/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorSprite.cs new file mode 100644 index 0000000000..56c04ce1fc --- /dev/null +++ b/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorSprite.cs @@ -0,0 +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 osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; + +namespace osu.Game.Rulesets.Osu.UI.Cursor +{ + public class OsuCursorSprite : CompositeDrawable + { + public Drawable ExpandTarget { get; protected set; } + } +} From 22f2a4bed2284ab2fa81f7cfbb4a6a17f56ecb27 Mon Sep 17 00:00:00 2001 From: mcendu Date: Mon, 9 Dec 2019 17:53:16 +0800 Subject: [PATCH 0190/1829] Fix LegacyCursor's cursormiddle expanding --- osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs | 8 ++++---- osu.Game.Rulesets.Osu/UI/Cursor/OsuCursor.cs | 18 +++++++++++------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs b/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs index 05b38ae195..cf133f54ea 100644 --- a/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs +++ b/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs @@ -5,13 +5,13 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Game.Skinning; +using osu.Game.Rulesets.Osu.UI.Cursor; using osuTK; namespace osu.Game.Rulesets.Osu.Skinning { - public class LegacyCursor : CompositeDrawable + public class LegacyCursor : OsuCursorSprite { - private NonPlayfieldSprite cursor; private bool spin; public LegacyCursor() @@ -35,7 +35,7 @@ namespace osu.Game.Rulesets.Osu.Skinning Anchor = Anchor.Centre, Origin = Anchor.Centre, }, - cursor = new NonPlayfieldSprite + ExpandTarget = new NonPlayfieldSprite { Texture = skin.GetTexture("cursor"), Anchor = Anchor.Centre, @@ -47,7 +47,7 @@ namespace osu.Game.Rulesets.Osu.Skinning protected override void LoadComplete() { if (spin) - cursor.Spin(10000, RotationDirection.Clockwise); + ExpandTarget.Spin(10000, RotationDirection.Clockwise); } } } diff --git a/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursor.cs b/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursor.cs index 0aa8661fd3..4a67d23f57 100644 --- a/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursor.cs +++ b/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursor.cs @@ -20,7 +20,7 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor private bool cursorExpand; - private Container expandTarget; + private OsuCursorSprite cursorSprite; public OsuCursor() { @@ -37,17 +37,19 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor [BackgroundDependencyLoader] private void load() { - InternalChild = expandTarget = new Container + SkinnableDrawable cursor; + InternalChild = new Container { RelativeSizeAxes = Axes.Both, Origin = Anchor.Centre, Anchor = Anchor.Centre, - Child = new SkinnableDrawable(new OsuSkinComponent(OsuSkinComponents.Cursor), _ => new DefaultCursor(), confineMode: ConfineMode.NoScaling) + Child = cursor = new SkinnableDrawable(new OsuSkinComponent(OsuSkinComponents.Cursor), _ => new DefaultCursor(), confineMode: ConfineMode.NoScaling) { Origin = Anchor.Centre, Anchor = Anchor.Centre, } }; + cursorSprite = cursor.Drawable as OsuCursorSprite; } private const float pressed_scale = 1.2f; @@ -57,12 +59,12 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor { if (!cursorExpand) return; - expandTarget.ScaleTo(released_scale).ScaleTo(pressed_scale, 100, Easing.OutQuad); + cursorSprite.ExpandTarget.ScaleTo(released_scale).ScaleTo(pressed_scale, 100, Easing.OutQuad); } - public void Contract() => expandTarget.ScaleTo(released_scale, 100, Easing.OutQuad); + public void Contract() => cursorSprite.ExpandTarget.ScaleTo(released_scale, 100, Easing.OutQuad); - private class DefaultCursor : CompositeDrawable + private class DefaultCursor : OsuCursorSprite { public DefaultCursor() { @@ -73,8 +75,10 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor InternalChildren = new Drawable[] { - new CircularContainer + ExpandTarget = new CircularContainer { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, RelativeSizeAxes = Axes.Both, Masking = true, BorderThickness = size / 6, From 6b667daf0965ec6386632bca78415cfe8bca1365 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 9 Dec 2019 19:41:18 +0900 Subject: [PATCH 0191/1829] Update bindable types in line with framework --- osu.Game/Rulesets/UI/DrawableRuleset.cs | 14 +++++++++----- .../Tests/Visual/RateAdjustedBeatmapTestScene.cs | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/osu.Game/Rulesets/UI/DrawableRuleset.cs b/osu.Game/Rulesets/UI/DrawableRuleset.cs index 96275c1274..c15b5d4786 100644 --- a/osu.Game/Rulesets/UI/DrawableRuleset.cs +++ b/osu.Game/Rulesets/UI/DrawableRuleset.cs @@ -511,15 +511,17 @@ namespace osu.Game.Rulesets.UI public IEnumerable GetAvailableResources() => throw new NotImplementedException(); - public void AddAdjustment(AdjustableProperty type, BindableDouble adjustBindable) => throw new NotImplementedException(); + public void AddAdjustment(AdjustableProperty type, BindableNumber adjustBindable) => throw new NotImplementedException(); - public void RemoveAdjustment(AdjustableProperty type, BindableDouble adjustBindable) => throw new NotImplementedException(); + public void RemoveAdjustment(AdjustableProperty type, BindableNumber adjustBindable) => throw new NotImplementedException(); - public BindableDouble Volume => throw new NotImplementedException(); + public BindableNumber Volume => throw new NotImplementedException(); - public BindableDouble Balance => throw new NotImplementedException(); + public BindableNumber Balance => throw new NotImplementedException(); - public BindableDouble Frequency => throw new NotImplementedException(); + public BindableNumber Frequency => throw new NotImplementedException(); + + public BindableNumber Tempo => throw new NotImplementedException(); public IBindable AggregateVolume => throw new NotImplementedException(); @@ -527,6 +529,8 @@ namespace osu.Game.Rulesets.UI public IBindable AggregateFrequency => throw new NotImplementedException(); + public IBindable AggregateTempo => throw new NotImplementedException(); + public int PlaybackConcurrency { get => throw new NotImplementedException(); diff --git a/osu.Game/Tests/Visual/RateAdjustedBeatmapTestScene.cs b/osu.Game/Tests/Visual/RateAdjustedBeatmapTestScene.cs index 921a1d9789..ad24ffc7b8 100644 --- a/osu.Game/Tests/Visual/RateAdjustedBeatmapTestScene.cs +++ b/osu.Game/Tests/Visual/RateAdjustedBeatmapTestScene.cs @@ -13,7 +13,7 @@ namespace osu.Game.Tests.Visual base.Update(); // note that this will override any mod rate application - Beatmap.Value.Track.TempoAdjust = Clock.Rate; + Beatmap.Value.Track.Tempo.Value = Clock.Rate; } } } From 7fd52c21f56cdf6fdc2f9004e6b9f449e26b9bba Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 9 Dec 2019 19:41:31 +0900 Subject: [PATCH 0192/1829] Update mods and user adjust to use adjustments --- osu.Game/Rulesets/Mods/ModDaycore.cs | 3 +- osu.Game/Rulesets/Mods/ModDoubleTime.cs | 6 ++-- osu.Game/Rulesets/Mods/ModHalfTime.cs | 6 ++-- osu.Game/Rulesets/Mods/ModNightcore.cs | 3 +- .../{ModTimeAdjust.cs => ModRateAdjust.cs} | 8 +++-- osu.Game/Rulesets/Mods/ModTimeRamp.cs | 35 +++++++++---------- .../Screens/Play/GameplayClockContainer.cs | 9 ++--- 7 files changed, 32 insertions(+), 38 deletions(-) rename osu.Game/Rulesets/Mods/{ModTimeAdjust.cs => ModRateAdjust.cs} (60%) diff --git a/osu.Game/Rulesets/Mods/ModDaycore.cs b/osu.Game/Rulesets/Mods/ModDaycore.cs index dcb3cb5597..f7da1e86db 100644 --- a/osu.Game/Rulesets/Mods/ModDaycore.cs +++ b/osu.Game/Rulesets/Mods/ModDaycore.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 osu.Framework.Audio; using osu.Framework.Audio.Track; using osu.Framework.Graphics.Sprites; @@ -15,7 +16,7 @@ namespace osu.Game.Rulesets.Mods public override void ApplyToTrack(Track track) { - track.Frequency.Value *= RateAdjust; + track.AddAdjustment(AdjustableProperty.Frequency, SpeedChange); } } } diff --git a/osu.Game/Rulesets/Mods/ModDoubleTime.cs b/osu.Game/Rulesets/Mods/ModDoubleTime.cs index b9faad8cbd..7015460c51 100644 --- a/osu.Game/Rulesets/Mods/ModDoubleTime.cs +++ b/osu.Game/Rulesets/Mods/ModDoubleTime.cs @@ -10,7 +10,7 @@ using osu.Game.Graphics; namespace osu.Game.Rulesets.Mods { - public abstract class ModDoubleTime : ModTimeAdjust + public abstract class ModDoubleTime : ModRateAdjust { public override string Name => "Double Time"; public override string Acronym => "DT"; @@ -22,7 +22,7 @@ namespace osu.Game.Rulesets.Mods public override Type[] IncompatibleMods => base.IncompatibleMods.Append(typeof(ModHalfTime)).ToArray(); [SettingSource("Speed increase", "The actual increase to apply")] - public BindableNumber SpeedChange { get; } = new BindableDouble + public override BindableNumber SpeedChange { get; } = new BindableDouble { MinValue = 1.01, MaxValue = 2, @@ -30,7 +30,5 @@ namespace osu.Game.Rulesets.Mods Value = 1.5, Precision = 0.01, }; - - protected override double RateAdjust => SpeedChange.Value; } } diff --git a/osu.Game/Rulesets/Mods/ModHalfTime.cs b/osu.Game/Rulesets/Mods/ModHalfTime.cs index 255c5b7065..15f7afa312 100644 --- a/osu.Game/Rulesets/Mods/ModHalfTime.cs +++ b/osu.Game/Rulesets/Mods/ModHalfTime.cs @@ -10,7 +10,7 @@ using osu.Game.Graphics; namespace osu.Game.Rulesets.Mods { - public abstract class ModHalfTime : ModTimeAdjust + public abstract class ModHalfTime : ModRateAdjust { public override string Name => "Half Time"; public override string Acronym => "HT"; @@ -22,7 +22,7 @@ namespace osu.Game.Rulesets.Mods public override Type[] IncompatibleMods => base.IncompatibleMods.Append(typeof(ModDoubleTime)).ToArray(); [SettingSource("Speed decrease", "The actual decrease to apply")] - public BindableNumber SpeedChange { get; } = new BindableDouble + public override BindableNumber SpeedChange { get; } = new BindableDouble { MinValue = 0.5, MaxValue = 0.99, @@ -30,7 +30,5 @@ namespace osu.Game.Rulesets.Mods Value = 0.75, Precision = 0.01, }; - - protected override double RateAdjust => SpeedChange.Value; } } diff --git a/osu.Game/Rulesets/Mods/ModNightcore.cs b/osu.Game/Rulesets/Mods/ModNightcore.cs index a4f1ef5a72..e41f1415ab 100644 --- a/osu.Game/Rulesets/Mods/ModNightcore.cs +++ b/osu.Game/Rulesets/Mods/ModNightcore.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 osu.Framework.Audio; using osu.Framework.Audio.Track; using osu.Framework.Graphics.Sprites; using osu.Game.Graphics; @@ -16,7 +17,7 @@ namespace osu.Game.Rulesets.Mods public override void ApplyToTrack(Track track) { - track.Frequency.Value *= RateAdjust; + track.AddAdjustment(AdjustableProperty.Frequency, SpeedChange); } } } diff --git a/osu.Game/Rulesets/Mods/ModTimeAdjust.cs b/osu.Game/Rulesets/Mods/ModRateAdjust.cs similarity index 60% rename from osu.Game/Rulesets/Mods/ModTimeAdjust.cs rename to osu.Game/Rulesets/Mods/ModRateAdjust.cs index f137a75ed8..5aa3e09fee 100644 --- a/osu.Game/Rulesets/Mods/ModTimeAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModRateAdjust.cs @@ -2,19 +2,21 @@ // See the LICENCE file in the repository root for full licence text. using System; +using osu.Framework.Audio; using osu.Framework.Audio.Track; +using osu.Framework.Bindables; namespace osu.Game.Rulesets.Mods { - public abstract class ModTimeAdjust : Mod, IApplicableToTrack + public abstract class ModRateAdjust : Mod, IApplicableToTrack { public override Type[] IncompatibleMods => new[] { typeof(ModTimeRamp) }; - protected abstract double RateAdjust { get; } + public abstract BindableNumber SpeedChange { get; } public virtual void ApplyToTrack(Track track) { - track.TempoAdjust *= RateAdjust; + track.AddAdjustment(AdjustableProperty.Tempo, SpeedChange); } } } diff --git a/osu.Game/Rulesets/Mods/ModTimeRamp.cs b/osu.Game/Rulesets/Mods/ModTimeRamp.cs index d95d354487..36de546707 100644 --- a/osu.Game/Rulesets/Mods/ModTimeRamp.cs +++ b/osu.Game/Rulesets/Mods/ModTimeRamp.cs @@ -3,36 +3,42 @@ using System; using System.Linq; +using osu.Framework.Audio; using osu.Framework.Audio.Track; +using osu.Framework.Bindables; using osu.Game.Beatmaps; using osu.Game.Rulesets.UI; using osu.Game.Rulesets.Objects; namespace osu.Game.Rulesets.Mods { - public abstract class ModTimeRamp : Mod, IUpdatableByPlayfield, IApplicableToTrack, IApplicableToBeatmap + public abstract class ModTimeRamp : Mod, IUpdatableByPlayfield, IApplicableToBeatmap, IApplicableToTrack { /// /// The point in the beatmap at which the final ramping rate should be reached. /// private const double final_rate_progress = 0.75f; - public override Type[] IncompatibleMods => new[] { typeof(ModTimeAdjust) }; + public override Type[] IncompatibleMods => new[] { typeof(ModRateAdjust) }; protected abstract double FinalRateAdjustment { get; } private double finalRateTime; private double beginRampTime; + + public BindableNumber SpeedChange { get; } = new BindableDouble + { + Default = 1, + Value = 1, + Precision = 0.01, + }; + private Track track; - public virtual void ApplyToTrack(Track track) + public void ApplyToTrack(Track track) { this.track = track; - - lastAdjust = 1; - - // for preview purposes. during gameplay, Update will overwrite this setting. - applyAdjustment(1); + track.AddAdjustment(AdjustableProperty.Frequency, SpeedChange); } public virtual void ApplyToBeatmap(IBeatmap beatmap) @@ -48,20 +54,11 @@ namespace osu.Game.Rulesets.Mods applyAdjustment((track.CurrentTime - beginRampTime) / finalRateTime); } - private double lastAdjust = 1; - /// /// Adjust the rate along the specified ramp /// /// The amount of adjustment to apply (from 0..1). - private void applyAdjustment(double amount) - { - double adjust = 1 + (Math.Sign(FinalRateAdjustment) * Math.Clamp(amount, 0, 1) * Math.Abs(FinalRateAdjustment)); - - track.Tempo.Value /= lastAdjust; - track.Tempo.Value *= lastAdjust; - - lastAdjust = adjust; - } + private void applyAdjustment(double amount) => + SpeedChange.Value = 1 + (Math.Sign(FinalRateAdjustment) * Math.Clamp(amount, 0, 1) * Math.Abs(FinalRateAdjustment)); } } diff --git a/osu.Game/Screens/Play/GameplayClockContainer.cs b/osu.Game/Screens/Play/GameplayClockContainer.cs index 2cc03ae453..9f46fddc5e 100644 --- a/osu.Game/Screens/Play/GameplayClockContainer.cs +++ b/osu.Game/Screens/Play/GameplayClockContainer.cs @@ -43,7 +43,7 @@ namespace osu.Game.Screens.Play private readonly double firstHitObjectTime; - public readonly Bindable UserPlaybackRate = new BindableDouble(1) + public readonly BindableNumber UserPlaybackRate = new BindableDouble(1) { Default = 1, MinValue = 0.5, @@ -73,7 +73,6 @@ namespace osu.Game.Screens.Play RelativeSizeAxes = Axes.Both; track = beatmap.Track; - track.AddAdjustment(AdjustableProperty.Frequency, pauseFreqAdjust); adjustableClock = new DecoupleableInterpolatingFramedClock { IsCoupled = false }; @@ -120,7 +119,6 @@ namespace osu.Game.Screens.Play Seek(startTime); adjustableClock.ProcessFrame(); - UserPlaybackRate.ValueChanged += _ => updateRate(); } public void Restart() @@ -223,7 +221,8 @@ namespace osu.Game.Screens.Play speedAdjustmentsApplied = true; track.ResetSpeedAdjustments(); - track.Tempo.Value = UserPlaybackRate.Value; + track.AddAdjustment(AdjustableProperty.Frequency, pauseFreqAdjust); + track.AddAdjustment(AdjustableProperty.Tempo, UserPlaybackRate); foreach (var mod in mods.OfType()) mod.ApplyToTrack(track); @@ -244,8 +243,6 @@ namespace osu.Game.Screens.Play track.ResetSpeedAdjustments(); speedAdjustmentsApplied = false; } - - track.RemoveAdjustment(AdjustableProperty.Frequency, pauseFreqAdjust); } } } From edc82205543106251bba5a9b8a2c92ea3b81e7ad Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 9 Dec 2019 19:58:51 +0900 Subject: [PATCH 0193/1829] Add time ramp settings --- osu.Game/Rulesets/Mods/ModTimeRamp.cs | 8 ++++++-- osu.Game/Rulesets/Mods/ModWindDown.cs | 12 +++++++++++- osu.Game/Rulesets/Mods/ModWindUp.cs | 12 +++++++++++- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModTimeRamp.cs b/osu.Game/Rulesets/Mods/ModTimeRamp.cs index 36de546707..bffe4f7b70 100644 --- a/osu.Game/Rulesets/Mods/ModTimeRamp.cs +++ b/osu.Game/Rulesets/Mods/ModTimeRamp.cs @@ -7,6 +7,7 @@ using osu.Framework.Audio; using osu.Framework.Audio.Track; using osu.Framework.Bindables; using osu.Game.Beatmaps; +using osu.Game.Configuration; using osu.Game.Rulesets.UI; using osu.Game.Rulesets.Objects; @@ -21,7 +22,8 @@ namespace osu.Game.Rulesets.Mods public override Type[] IncompatibleMods => new[] { typeof(ModRateAdjust) }; - protected abstract double FinalRateAdjustment { get; } + [SettingSource("Final rate", "The final speed to ramp to")] + public abstract BindableNumber FinalRate { get; } private double finalRateTime; private double beginRampTime; @@ -45,6 +47,8 @@ namespace osu.Game.Rulesets.Mods { HitObject lastObject = beatmap.HitObjects.LastOrDefault(); + SpeedChange.SetDefault(); + beginRampTime = beatmap.HitObjects.FirstOrDefault()?.StartTime ?? 0; finalRateTime = final_rate_progress * (lastObject?.GetEndTime() ?? 0); } @@ -59,6 +63,6 @@ namespace osu.Game.Rulesets.Mods /// /// The amount of adjustment to apply (from 0..1). private void applyAdjustment(double amount) => - SpeedChange.Value = 1 + (Math.Sign(FinalRateAdjustment) * Math.Clamp(amount, 0, 1) * Math.Abs(FinalRateAdjustment)); + SpeedChange.Value = 1 + (Math.Sign(FinalRate.Value) * Math.Clamp(amount, 0, 1) * Math.Abs(FinalRate.Value)); } } diff --git a/osu.Game/Rulesets/Mods/ModWindDown.cs b/osu.Game/Rulesets/Mods/ModWindDown.cs index b2e3abb59d..680c1a10fb 100644 --- a/osu.Game/Rulesets/Mods/ModWindDown.cs +++ b/osu.Game/Rulesets/Mods/ModWindDown.cs @@ -3,7 +3,9 @@ using System; using System.Linq; +using osu.Framework.Bindables; using osu.Framework.Graphics.Sprites; +using osu.Game.Configuration; namespace osu.Game.Rulesets.Mods { @@ -15,7 +17,15 @@ namespace osu.Game.Rulesets.Mods public override IconUsage Icon => FontAwesome.Solid.ChevronCircleDown; public override double ScoreMultiplier => 1.0; - protected override double FinalRateAdjustment => -0.25; + [SettingSource("Final rate", "The speed increase to ramp towards")] + public override BindableNumber FinalRate { get; } = new BindableDouble + { + MinValue = -0.5, + MaxValue = -0.01, + Default = -0.25, + Value = -0.25, + Precision = 0.01, + }; public override Type[] IncompatibleMods => base.IncompatibleMods.Append(typeof(ModWindUp)).ToArray(); } diff --git a/osu.Game/Rulesets/Mods/ModWindUp.cs b/osu.Game/Rulesets/Mods/ModWindUp.cs index 8df35a1de2..ca9ce0ea3e 100644 --- a/osu.Game/Rulesets/Mods/ModWindUp.cs +++ b/osu.Game/Rulesets/Mods/ModWindUp.cs @@ -3,7 +3,9 @@ using System; using System.Linq; +using osu.Framework.Bindables; using osu.Framework.Graphics.Sprites; +using osu.Game.Configuration; namespace osu.Game.Rulesets.Mods { @@ -15,7 +17,15 @@ namespace osu.Game.Rulesets.Mods public override IconUsage Icon => FontAwesome.Solid.ChevronCircleUp; public override double ScoreMultiplier => 1.0; - protected override double FinalRateAdjustment => 0.5; + [SettingSource("Final rate", "The speed increase to ramp towards")] + public override BindableNumber FinalRate { get; } = new BindableDouble + { + MinValue = 0.01, + MaxValue = 2, + Default = 1.5, + Value = 1.5, + Precision = 0.01, + }; public override Type[] IncompatibleMods => base.IncompatibleMods.Append(typeof(ModWindDown)).ToArray(); } From 47f3c4a596a3b0b8f54e492dd723644e1665241f Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 9 Dec 2019 20:18:18 +0900 Subject: [PATCH 0194/1829] Don't serialise path version --- osu.Game/Rulesets/Objects/SliderPath.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game/Rulesets/Objects/SliderPath.cs b/osu.Game/Rulesets/Objects/SliderPath.cs index 6a151d7d33..86deba3b93 100644 --- a/osu.Game/Rulesets/Objects/SliderPath.cs +++ b/osu.Game/Rulesets/Objects/SliderPath.cs @@ -18,6 +18,7 @@ namespace osu.Game.Rulesets.Objects /// /// The current version of this . Updated when any change to the path occurs. /// + [JsonIgnore] public IBindable Version => version; private readonly Bindable version = new Bindable(); From 12bdb1dafd98d09db5af10de7961b8ee17c94a05 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 9 Dec 2019 20:40:38 +0900 Subject: [PATCH 0195/1829] Pin DC/NC pitch --- osu.Game/Rulesets/Mods/ModDaycore.cs | 13 ++++++++++++- osu.Game/Rulesets/Mods/ModNightcore.cs | 13 ++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModDaycore.cs b/osu.Game/Rulesets/Mods/ModDaycore.cs index f7da1e86db..474e793dd1 100644 --- a/osu.Game/Rulesets/Mods/ModDaycore.cs +++ b/osu.Game/Rulesets/Mods/ModDaycore.cs @@ -3,6 +3,7 @@ using osu.Framework.Audio; using osu.Framework.Audio.Track; +using osu.Framework.Bindables; using osu.Framework.Graphics.Sprites; namespace osu.Game.Rulesets.Mods @@ -14,9 +15,19 @@ namespace osu.Game.Rulesets.Mods public override IconUsage Icon => FontAwesome.Solid.Question; public override string Description => "Whoaaaaa..."; + private readonly BindableNumber tempoAdjust = new BindableDouble(1); + private readonly BindableNumber freqAdjust = new BindableDouble(1); + public override void ApplyToTrack(Track track) { - track.AddAdjustment(AdjustableProperty.Frequency, SpeedChange); + track.AddAdjustment(AdjustableProperty.Frequency, freqAdjust); + track.AddAdjustment(AdjustableProperty.Tempo, tempoAdjust); + + SpeedChange.BindValueChanged(val => + { + freqAdjust.Value = SpeedChange.Default; + tempoAdjust.Value = val.NewValue / SpeedChange.Default; + }, true); } } } diff --git a/osu.Game/Rulesets/Mods/ModNightcore.cs b/osu.Game/Rulesets/Mods/ModNightcore.cs index e41f1415ab..401814d18b 100644 --- a/osu.Game/Rulesets/Mods/ModNightcore.cs +++ b/osu.Game/Rulesets/Mods/ModNightcore.cs @@ -3,6 +3,7 @@ using osu.Framework.Audio; using osu.Framework.Audio.Track; +using osu.Framework.Bindables; using osu.Framework.Graphics.Sprites; using osu.Game.Graphics; @@ -15,9 +16,19 @@ namespace osu.Game.Rulesets.Mods public override IconUsage Icon => OsuIcon.ModNightcore; public override string Description => "Uguuuuuuuu..."; + private readonly BindableNumber tempoAdjust = new BindableDouble(1); + private readonly BindableNumber freqAdjust = new BindableDouble(1); + public override void ApplyToTrack(Track track) { - track.AddAdjustment(AdjustableProperty.Frequency, SpeedChange); + track.AddAdjustment(AdjustableProperty.Frequency, freqAdjust); + track.AddAdjustment(AdjustableProperty.Tempo, tempoAdjust); + + SpeedChange.BindValueChanged(val => + { + freqAdjust.Value = SpeedChange.Default; + tempoAdjust.Value = val.NewValue / SpeedChange.Default; + }, true); } } } From af90b45c407a0cbad892224204e83e5c6cfe0778 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 9 Dec 2019 20:49:59 +0900 Subject: [PATCH 0196/1829] Refactor path visualisers to use bindables --- .../Components/PathControlPointPiece.cs | 116 ++++++++++++------ .../Components/PathControlPointVisualiser.cs | 34 +++-- 2 files changed, 98 insertions(+), 52 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs index 4fe02135c4..38da5939b6 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs @@ -11,6 +11,8 @@ using osu.Framework.Graphics.Shapes; using osu.Framework.Input.Events; using osu.Game.Graphics; using osu.Game.Rulesets.Edit; +using osu.Game.Rulesets.Objects; +using osu.Game.Rulesets.Objects.Types; using osu.Game.Rulesets.Osu.Objects; using osuTK; using osuTK.Graphics; @@ -20,10 +22,11 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components { public class PathControlPointPiece : BlueprintPiece { - public Action RequestSelection; + public Action RequestSelection; public readonly BindableBool IsSelected = new BindableBool(); - public readonly int Index; + + public readonly PathControlPoint ControlPoint; private readonly Slider slider; private readonly Path path; @@ -36,10 +39,14 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components [Resolved] private OsuColour colours { get; set; } - public PathControlPointPiece(Slider slider, int index) + private IBindable sliderPosition; + private IBindable pathVersion; + + public PathControlPointPiece(Slider slider, PathControlPoint controlPoint) { this.slider = slider; - Index = index; + + ControlPoint = controlPoint; Origin = Anchor.Centre; AutoSizeAxes = Axes.Both; @@ -85,48 +92,41 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components }; } - protected override void Update() + protected override void LoadComplete() { - base.Update(); + base.LoadComplete(); - Position = slider.StackedPosition + slider.Path.ControlPoints[Index].Position.Value; + sliderPosition = slider.PositionBindable.GetBoundCopy(); + sliderPosition.BindValueChanged(_ => updateDisplay()); + pathVersion = slider.Path.Version.GetBoundCopy(); + pathVersion.BindValueChanged(_ => updateDisplay()); + + IsSelected.BindValueChanged(_ => updateMarkerDisplay()); + + updateDisplay(); + } + + private void updateDisplay() + { updateMarkerDisplay(); updateConnectingPath(); } - /// - /// Updates the state of the circular control point marker. - /// - private void updateMarkerDisplay() - { - markerRing.Alpha = IsSelected.Value ? 1 : 0; - - Color4 colour = slider.Path.ControlPoints[Index].Type.Value.HasValue ? colours.Red : colours.Yellow; - if (IsHovered || IsSelected.Value) - colour = Color4.White; - marker.Colour = colour; - } - - /// - /// Updates the path connecting this control point to the previous one. - /// - private void updateConnectingPath() - { - path.ClearVertices(); - - if (Index != slider.Path.ControlPoints.Count - 1) - { - path.AddVertex(Vector2.Zero); - path.AddVertex(slider.Path.ControlPoints[Index + 1].Position.Value - slider.Path.ControlPoints[Index].Position.Value); - } - - path.OriginPosition = path.PositionInBoundingBox(Vector2.Zero); - } - // The connecting path is excluded from positional input public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => marker.ReceivePositionalInputAt(screenSpacePos); + protected override bool OnHover(HoverEvent e) + { + updateMarkerDisplay(); + return true; + } + + protected override void OnHoverLost(HoverLostEvent e) + { + updateMarkerDisplay(); + } + protected override bool OnMouseDown(MouseDownEvent e) { if (RequestSelection == null) @@ -135,12 +135,12 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components switch (e.Button) { case MouseButton.Left: - RequestSelection.Invoke(Index, e); + RequestSelection.Invoke(this, e); return true; case MouseButton.Right: if (!IsSelected.Value) - RequestSelection.Invoke(Index, e); + RequestSelection.Invoke(this, e); return false; // Allow context menu to show } @@ -155,7 +155,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components protected override bool OnDrag(DragEvent e) { - if (Index == 0) + if (ControlPoint == slider.Path.ControlPoints[0]) { // Special handling for the head control point - the position of the slider changes which means the snapped position and time have to be taken into account (Vector2 snappedPosition, double snappedTime) = snapProvider?.GetSnappedPosition(e.MousePosition, slider.StartTime) ?? (e.MousePosition, slider.StartTime); @@ -169,11 +169,47 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components slider.Path.ControlPoints[i].Position.Value -= movementDelta; } else - slider.Path.ControlPoints[Index].Position.Value += e.Delta; + ControlPoint.Position.Value += e.Delta; return true; } protected override bool OnDragEnd(DragEndEvent e) => true; + + /// + /// Updates the state of the circular control point marker. + /// + private void updateMarkerDisplay() + { + Position = slider.StackedPosition + ControlPoint.Position.Value; + + markerRing.Alpha = IsSelected.Value ? 1 : 0; + + Color4 colour = ControlPoint.Type.Value != null ? colours.Red : colours.Yellow; + if (IsHovered || IsSelected.Value) + colour = Color4.White; + marker.Colour = colour; + } + + /// + /// Updates the path connecting this control point to the previous one. + /// + private void updateConnectingPath() + { + path.ClearVertices(); + + int index = slider.Path.ControlPoints.IndexOf(ControlPoint); + + if (index == -1) + return; + + if (++index != slider.Path.ControlPoints.Count) + { + path.AddVertex(Vector2.Zero); + path.AddVertex(slider.Path.ControlPoints[index].Position.Value - ControlPoint.Position.Value); + } + + path.OriginPosition = path.PositionInBoundingBox(Vector2.Zero); + } } } diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs index 434e74ddeb..eb6e3c01e1 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Linq; using Humanizer; using osu.Framework.Allocation; +using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Cursor; @@ -32,6 +33,8 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components [Resolved(CanBeNull = true)] private IPlacementHandler placementHandler { get; set; } + private IBindableList controlPoints; + public PathControlPointVisualiser(Slider slider, bool allowSelection) { this.slider = slider; @@ -47,24 +50,31 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components base.LoadComplete(); inputManager = GetContainingInputManager(); + + controlPoints = slider.Path.ControlPoints.GetBoundCopy(); + controlPoints.ItemsAdded += addControlPoints; + controlPoints.ItemsRemoved += removeControlPoints; + + addControlPoints(controlPoints); } - protected override void Update() + private void addControlPoints(IEnumerable controlPoints) { - base.Update(); - - while (slider.Path.ControlPoints.Count > Pieces.Count) + foreach (var point in controlPoints) { - var piece = new PathControlPointPiece(slider, Pieces.Count); + var piece = new PathControlPointPiece(slider, point); if (allowSelection) piece.RequestSelection = selectPiece; Pieces.Add(piece); } + } - while (slider.Path.ControlPoints.Count < Pieces.Count) - Pieces.Remove(Pieces[Pieces.Count - 1]); + private void removeControlPoints(IEnumerable controlPoints) + { + foreach (var point in controlPoints) + Pieces.RemoveAll(p => p.ControlPoint == point); } protected override bool OnClick(ClickEvent e) @@ -87,20 +97,20 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components public bool OnReleased(PlatformAction action) => action.ActionMethod == PlatformActionMethod.Delete; - private void selectPiece(int index, MouseButtonEvent e) + private void selectPiece(PathControlPointPiece piece, MouseButtonEvent e) { if (e.Button == MouseButton.Left && inputManager.CurrentState.Keyboard.ControlPressed) - Pieces[index].IsSelected.Toggle(); + piece.IsSelected.Toggle(); else { - foreach (var piece in Pieces) - piece.IsSelected.Value = piece.Index == index; + foreach (var p in Pieces) + p.IsSelected.Value = p == piece; } } private bool deleteSelected() { - List toRemove = Pieces.Where(p => p.IsSelected.Value).Select(p => slider.Path.ControlPoints[p.Index]).ToList(); + List toRemove = Pieces.Where(p => p.IsSelected.Value).Select(p => p.ControlPoint).ToList(); // Ensure that there are any points to be deleted if (toRemove.Count == 0) From bd2b0af2695048a1f5baae9cbde9f80a18e28957 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 9 Dec 2019 22:35:19 +0900 Subject: [PATCH 0197/1829] Consider having only 1 control point as being deleted --- .../Sliders/Components/PathControlPointVisualiser.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs index 434e74ddeb..f7692c64f4 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs @@ -116,8 +116,8 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components slider.Path.ControlPoints.Remove(c); } - // If there are 0 remaining control points, treat the slider as being deleted - if (slider.Path.ControlPoints.Count == 0) + // If there are 0 or 1 remaining control points, the slider is in a degenerate (single point) form and should be deleted + if (slider.Path.ControlPoints.Count <= 1) { placementHandler?.Delete(slider); return true; From 2c4c190f15238574285407bd7fd5925b22c1c768 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 9 Dec 2019 22:44:47 +0900 Subject: [PATCH 0198/1829] Fix control points not adding to last segment --- .../Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs index 7431972673..68873093a6 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs @@ -104,7 +104,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders int insertionIndex = 0; float minDistance = float.MaxValue; - for (int i = 0; i < HitObject.Path.ControlPoints.Count - 2; i++) + for (int i = 0; i < HitObject.Path.ControlPoints.Count - 1; i++) { float dist = new Line(HitObject.Path.ControlPoints[i].Position.Value, HitObject.Path.ControlPoints[i + 1].Position.Value).DistanceToPoint(position); From 0ee303f7d6417130079bd7862938e78c403c0e19 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 9 Dec 2019 22:45:44 +0900 Subject: [PATCH 0199/1829] Remove unused using --- .../Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs index 38da5939b6..7c66f38854 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs @@ -12,7 +12,6 @@ using osu.Framework.Input.Events; using osu.Game.Graphics; using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Objects; -using osu.Game.Rulesets.Objects.Types; using osu.Game.Rulesets.Osu.Objects; using osuTK; using osuTK.Graphics; From 9b318d2869a99a97f7e213946b7993fac71cf972 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 10 Dec 2019 00:07:07 +0900 Subject: [PATCH 0200/1829] Add right-click menu item to change path type --- .../Components/PathControlPointPiece.cs | 2 +- .../Components/PathControlPointVisualiser.cs | 45 ++++++++++++++++++- 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs index 7c66f38854..c2aefac587 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs @@ -118,7 +118,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components protected override bool OnHover(HoverEvent e) { updateMarkerDisplay(); - return true; + return false; } protected override void OnHoverLost(HoverLostEvent e) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs index eb6e3c01e1..352bb56030 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.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.Collections.Generic; using System.Linq; using Humanizer; @@ -15,6 +16,7 @@ using osu.Framework.Input.Bindings; using osu.Framework.Input.Events; using osu.Game.Graphics.UserInterface; using osu.Game.Rulesets.Objects; +using osu.Game.Rulesets.Objects.Types; using osu.Game.Rulesets.Osu.Objects; using osu.Game.Screens.Edit.Compose; using osuTK; @@ -161,9 +163,50 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components return new MenuItem[] { - new OsuMenuItem($"Delete {"control point".ToQuantity(selectedPoints)}", MenuItemType.Destructive, () => deleteSelected()) + new OsuMenuItem($"Delete {"control point".ToQuantity(selectedPoints)}", MenuItemType.Destructive, () => deleteSelected()), + new OsuMenuItem("Type") + { + Items = new[] + { + createMenuItemForPathType(null), + createMenuItemForPathType(PathType.Linear), + createMenuItemForPathType(PathType.PerfectCurve), + createMenuItemForPathType(PathType.Catmull) + } + } }; } } + + private MenuItem createMenuItemForPathType(PathType? type) + { + int totalCount = Pieces.Count(p => p.IsSelected.Value); + int countOfState = Pieces.Where(p => p.IsSelected.Value).Count(p => p.ControlPoint.Type.Value == type); + + var item = new PathTypeMenuItem(type, () => + { + foreach (var p in Pieces.Where(p => p.IsSelected.Value)) + p.ControlPoint.Type.Value = type; + }); + + if (countOfState == totalCount) + item.State.Value = TernaryState.True; + else if (countOfState > 0) + item.State.Value = TernaryState.Indeterminate; + else + item.State.Value = TernaryState.False; + + return item; + } + + private class PathTypeMenuItem : TernaryStateMenuItem + { + public PathTypeMenuItem(PathType? type, Action action) + : base(type == null ? "Inherit" : type.ToString().Humanize(), changeState, MenuItemType.Standard, _ => action?.Invoke()) + { + } + + private static TernaryState changeState(TernaryState state) => TernaryState.True; + } } } From 1b14b0e5b6cecdbfacbf44024f2ff0fa42252d93 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 10 Dec 2019 00:08:38 +0900 Subject: [PATCH 0201/1829] Fix pieces blocking context menu --- .../Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs index 7c66f38854..c2aefac587 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs @@ -118,7 +118,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components protected override bool OnHover(HoverEvent e) { updateMarkerDisplay(); - return true; + return false; } protected override void OnHoverLost(HoverLostEvent e) From 1e71681916b3fe6473da6f3fda1e2fb35f9dc7fd Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 10 Dec 2019 02:00:39 +0900 Subject: [PATCH 0202/1829] Fix osu!catch catcher not scaling down correctly --- osu.Game.Rulesets.Catch/UI/CatcherSprite.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Catch/UI/CatcherSprite.cs b/osu.Game.Rulesets.Catch/UI/CatcherSprite.cs index e3c6c93d01..025fa9c56e 100644 --- a/osu.Game.Rulesets.Catch/UI/CatcherSprite.cs +++ b/osu.Game.Rulesets.Catch/UI/CatcherSprite.cs @@ -22,7 +22,7 @@ namespace osu.Game.Rulesets.Catch.UI [BackgroundDependencyLoader] private void load() { - InternalChild = new SkinnableSprite("Gameplay/catch/fruit-catcher-idle") + InternalChild = new SkinnableSprite("Gameplay/catch/fruit-catcher-idle", confineMode: ConfineMode.ScaleDownToFit) { RelativeSizeAxes = Axes.Both, Anchor = Anchor.TopCentre, From dc9775742ca0dfc20f65e9de2d043c714a6f1a61 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 10 Dec 2019 02:23:17 +0900 Subject: [PATCH 0203/1829] Fix incorrect code migration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Bartłomiej Dach --- osu.Game/Rulesets/Mods/ModTimeRamp.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Mods/ModTimeRamp.cs b/osu.Game/Rulesets/Mods/ModTimeRamp.cs index d95d354487..839b2ae36e 100644 --- a/osu.Game/Rulesets/Mods/ModTimeRamp.cs +++ b/osu.Game/Rulesets/Mods/ModTimeRamp.cs @@ -59,7 +59,7 @@ namespace osu.Game.Rulesets.Mods double adjust = 1 + (Math.Sign(FinalRateAdjustment) * Math.Clamp(amount, 0, 1) * Math.Abs(FinalRateAdjustment)); track.Tempo.Value /= lastAdjust; - track.Tempo.Value *= lastAdjust; + track.Tempo.Value *= adjust; lastAdjust = adjust; } From cdde5d1d690adf16a02cc8b48cdb85467f68fb61 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 10 Dec 2019 02:30:23 +0900 Subject: [PATCH 0204/1829] Fix song select filters not reapplied if in a child screen Closes https://github.com/ppy/osu/issues/6980. --- .../SongSelect/TestScenePlaySongSelect.cs | 36 +++++++++++++++++++ .../Visual/TestSceneOsuScreenStack.cs | 2 +- osu.Game/Screens/Select/SongSelect.cs | 8 ++--- osu.Game/Tests/Visual/ScreenTestScene.cs | 10 +++--- 4 files changed, 46 insertions(+), 10 deletions(-) diff --git a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs index a4b8d1a24a..5dd02c1ddd 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs @@ -95,6 +95,42 @@ namespace osu.Game.Tests.Visual.SongSelect AddAssert("filter count is 1", () => songSelect.FilterCount == 1); } + [Test] + public void TestNoFilterOnSimpleResume() + { + addRulesetImportStep(0); + addRulesetImportStep(0); + + createSongSelect(); + + AddStep("push child screen", () => Stack.Push(new TestSceneOsuScreenStack.TestScreen("test child"))); + AddUntilStep("wait for not current", () => !songSelect.IsCurrentScreen()); + + AddStep("return", () => songSelect.MakeCurrent()); + AddUntilStep("wait for current", () => songSelect.IsCurrentScreen()); + AddAssert("filter count is 1", () => songSelect.FilterCount == 1); + } + + [Test] + public void TestFilterOnResumeAfterChange() + { + addRulesetImportStep(0); + addRulesetImportStep(0); + + AddStep("change convert setting", () => config.Set(OsuSetting.ShowConvertedBeatmaps, false)); + + createSongSelect(); + + AddStep("push child screen", () => Stack.Push(new TestSceneOsuScreenStack.TestScreen("test child"))); + AddUntilStep("wait for not current", () => !songSelect.IsCurrentScreen()); + + AddStep("change convert setting", () => config.Set(OsuSetting.ShowConvertedBeatmaps, true)); + + AddStep("return", () => songSelect.MakeCurrent()); + AddUntilStep("wait for current", () => songSelect.IsCurrentScreen()); + AddAssert("filter count is 2", () => songSelect.FilterCount == 2); + } + [Test] public void TestAudioResuming() { diff --git a/osu.Game.Tests/Visual/TestSceneOsuScreenStack.cs b/osu.Game.Tests/Visual/TestSceneOsuScreenStack.cs index a68fd0ef40..c55988d1bb 100644 --- a/osu.Game.Tests/Visual/TestSceneOsuScreenStack.cs +++ b/osu.Game.Tests/Visual/TestSceneOsuScreenStack.cs @@ -42,7 +42,7 @@ namespace osu.Game.Tests.Visual AddAssert("Parallax is off", () => stack.ParallaxAmount == 0); } - private class TestScreen : ScreenWithBeatmapBackground + public class TestScreen : ScreenWithBeatmapBackground { private readonly string screenText; diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index a52edb70db..8f7ad2022d 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -262,8 +262,10 @@ namespace osu.Game.Screens.Select protected virtual void ApplyFilterToCarousel(FilterCriteria criteria) { - if (this.IsCurrentScreen()) - Carousel.Filter(criteria); + // if not the current screen, we want to get carousel in a good presentation state before displaying (resume or enter). + bool shouldDebounce = this.IsCurrentScreen(); + + Schedule(() => Carousel.Filter(criteria, shouldDebounce)); } private DependencyContainer dependencies; @@ -437,8 +439,6 @@ namespace osu.Game.Screens.Select { base.OnEntering(last); - Carousel.Filter(FilterControl.CreateCriteria(), false); - this.FadeInFromZero(250); FilterControl.Activate(); } diff --git a/osu.Game/Tests/Visual/ScreenTestScene.cs b/osu.Game/Tests/Visual/ScreenTestScene.cs index 23f45e0d0f..707aa61283 100644 --- a/osu.Game/Tests/Visual/ScreenTestScene.cs +++ b/osu.Game/Tests/Visual/ScreenTestScene.cs @@ -12,7 +12,7 @@ namespace osu.Game.Tests.Visual /// public abstract class ScreenTestScene : ManualInputManagerTestScene { - private readonly OsuScreenStack stack; + protected readonly OsuScreenStack Stack; private readonly Container content; @@ -22,16 +22,16 @@ namespace osu.Game.Tests.Visual { base.Content.AddRange(new Drawable[] { - stack = new OsuScreenStack { RelativeSizeAxes = Axes.Both }, + Stack = new OsuScreenStack { RelativeSizeAxes = Axes.Both }, content = new Container { RelativeSizeAxes = Axes.Both } }); } protected void LoadScreen(OsuScreen screen) { - if (stack.CurrentScreen != null) - stack.Exit(); - stack.Push(screen); + if (Stack.CurrentScreen != null) + Stack.Exit(); + Stack.Push(screen); } } } From 1db218f9082749578b8af301d7a329c677b8dfe1 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 10 Dec 2019 03:29:25 +0900 Subject: [PATCH 0205/1829] Don't show count when deleting only one control point Reads better. --- .../Blueprints/Sliders/Components/PathControlPointVisualiser.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs index cdca48490e..629604357d 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs @@ -154,7 +154,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components return new MenuItem[] { - new OsuMenuItem($"Delete {"control point".ToQuantity(selectedPoints)}", MenuItemType.Destructive, () => deleteSelected()) + new OsuMenuItem($"Delete {"control point".ToQuantity(selectedPoints, selectedPoints > 1 ? ShowQuantityAs.Numeric : ShowQuantityAs.None)}", MenuItemType.Destructive, () => deleteSelected()) }; } } From e9ec6591a907209bda53c4dc8fce87805b7d3e67 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 10 Dec 2019 11:20:08 +0900 Subject: [PATCH 0206/1829] Separate path connections from control points --- .../Components/PathControlPointConnection.cs | 72 +++++++++++++++++++ .../Components/PathControlPointPiece.cs | 43 ++--------- .../Components/PathControlPointVisualiser.cs | 22 ++++-- 3 files changed, 92 insertions(+), 45 deletions(-) create mode 100644 osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointConnection.cs diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointConnection.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointConnection.cs new file mode 100644 index 0000000000..f57299c5a9 --- /dev/null +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointConnection.cs @@ -0,0 +1,72 @@ +// 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.Framework.Graphics.Lines; +using osu.Game.Rulesets.Objects; +using osu.Game.Rulesets.Osu.Objects; +using osuTK; + +namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components +{ + public class PathControlPointConnection : CompositeDrawable + { + public PathControlPoint ControlPoint; + + private readonly Path path; + private readonly Slider slider; + + private IBindable sliderPosition; + private IBindable pathVersion; + + public PathControlPointConnection(Slider slider, PathControlPoint controlPoint) + { + this.slider = slider; + ControlPoint = controlPoint; + + Origin = Anchor.Centre; + AutoSizeAxes = Axes.Both; + + InternalChild = path = new SmoothPath + { + Anchor = Anchor.Centre, + PathRadius = 1 + }; + } + + protected override void LoadComplete() + { + base.LoadComplete(); + + sliderPosition = slider.PositionBindable.GetBoundCopy(); + sliderPosition.BindValueChanged(_ => updateConnectingPath()); + + pathVersion = slider.Path.Version.GetBoundCopy(); + pathVersion.BindValueChanged(_ => updateConnectingPath()); + + updateConnectingPath(); + } + + /// + /// Updates the path connecting this control point to the next one. + /// + private void updateConnectingPath() + { + Position = slider.StackedPosition + ControlPoint.Position.Value; + + path.ClearVertices(); + + int index = slider.Path.ControlPoints.IndexOf(ControlPoint) + 1; + + if (index == 0 || index == slider.Path.ControlPoints.Count) + return; + + path.AddVertex(Vector2.Zero); + path.AddVertex(slider.Path.ControlPoints[index].Position.Value - ControlPoint.Position.Value); + + path.OriginPosition = path.PositionInBoundingBox(Vector2.Zero); + } + } +} diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs index c2aefac587..42812ff934 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs @@ -6,7 +6,6 @@ using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Lines; using osu.Framework.Graphics.Shapes; using osu.Framework.Input.Events; using osu.Game.Graphics; @@ -28,7 +27,6 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components public readonly PathControlPoint ControlPoint; private readonly Slider slider; - private readonly Path path; private readonly Container marker; private readonly Drawable markerRing; @@ -39,12 +37,11 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components private OsuColour colours { get; set; } private IBindable sliderPosition; - private IBindable pathVersion; + private IBindable controlPointPosition; public PathControlPointPiece(Slider slider, PathControlPoint controlPoint) { this.slider = slider; - ControlPoint = controlPoint; Origin = Anchor.Centre; @@ -52,11 +49,6 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components InternalChildren = new Drawable[] { - path = new SmoothPath - { - Anchor = Anchor.Centre, - PathRadius = 1 - }, marker = new Container { Anchor = Anchor.Centre, @@ -96,20 +88,14 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components base.LoadComplete(); sliderPosition = slider.PositionBindable.GetBoundCopy(); - sliderPosition.BindValueChanged(_ => updateDisplay()); + sliderPosition.BindValueChanged(_ => updateMarkerDisplay()); - pathVersion = slider.Path.Version.GetBoundCopy(); - pathVersion.BindValueChanged(_ => updateDisplay()); + controlPointPosition = ControlPoint.Position.GetBoundCopy(); + controlPointPosition.BindValueChanged(_ => updateMarkerDisplay()); IsSelected.BindValueChanged(_ => updateMarkerDisplay()); - updateDisplay(); - } - - private void updateDisplay() - { updateMarkerDisplay(); - updateConnectingPath(); } // The connecting path is excluded from positional input @@ -189,26 +175,5 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components colour = Color4.White; marker.Colour = colour; } - - /// - /// Updates the path connecting this control point to the previous one. - /// - private void updateConnectingPath() - { - path.ClearVertices(); - - int index = slider.Path.ControlPoints.IndexOf(ControlPoint); - - if (index == -1) - return; - - if (++index != slider.Path.ControlPoints.Count) - { - path.AddVertex(Vector2.Zero); - path.AddVertex(slider.Path.ControlPoints[index].Position.Value - ControlPoint.Position.Value); - } - - path.OriginPosition = path.PositionInBoundingBox(Vector2.Zero); - } } } diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs index eb6e3c01e1..e45dc1d47a 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs @@ -25,6 +25,8 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components public class PathControlPointVisualiser : CompositeDrawable, IKeyBindingHandler, IHasContextMenu { internal readonly Container Pieces; + + private readonly Container connections; private readonly Slider slider; private readonly bool allowSelection; @@ -42,7 +44,11 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components RelativeSizeAxes = Axes.Both; - InternalChild = Pieces = new Container { RelativeSizeAxes = Axes.Both }; + InternalChildren = new Drawable[] + { + connections = new Container { RelativeSizeAxes = Axes.Both }, + Pieces = new Container { RelativeSizeAxes = Axes.Both } + }; } protected override void LoadComplete() @@ -62,19 +68,23 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components { foreach (var point in controlPoints) { - var piece = new PathControlPointPiece(slider, point); + Pieces.Add(new PathControlPointPiece(slider, point).With(d => + { + if (allowSelection) + d.RequestSelection = selectPiece; + })); - if (allowSelection) - piece.RequestSelection = selectPiece; - - Pieces.Add(piece); + connections.Add(new PathControlPointConnection(slider, point)); } } private void removeControlPoints(IEnumerable controlPoints) { foreach (var point in controlPoints) + { Pieces.RemoveAll(p => p.ControlPoint == point); + connections.RemoveAll(c => c.ControlPoint == point); + } } protected override bool OnClick(ClickEvent e) From ab0f2e7c6a1c1692a115ca54512344a162ec2230 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 10 Dec 2019 13:12:54 +0900 Subject: [PATCH 0207/1829] Apply suggested refactorings --- .../Rulesets/Objects/Legacy/ConvertHitObjectParser.cs | 9 ++++----- osu.Game/Rulesets/Objects/PathControlPoint.cs | 7 +++---- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs index 1ac7284772..b5b1e26486 100644 --- a/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs +++ b/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs @@ -257,14 +257,13 @@ namespace osu.Game.Rulesets.Objects.Legacy { if (type == PathType.PerfectCurve) { - if (vertices.Length == 3) + if (vertices.Length != 3) + type = PathType.Bezier; + else if (isLinear(vertices)) { // osu-stable special-cased colinear perfect curves to a linear path - if (isLinear(vertices)) - type = PathType.Linear; + type = PathType.Linear; } - else - type = PathType.Bezier; } var points = new List(vertices.Length) diff --git a/osu.Game/Rulesets/Objects/PathControlPoint.cs b/osu.Game/Rulesets/Objects/PathControlPoint.cs index 5737d3f618..0336f94313 100644 --- a/osu.Game/Rulesets/Objects/PathControlPoint.cs +++ b/osu.Game/Rulesets/Objects/PathControlPoint.cs @@ -30,8 +30,9 @@ namespace osu.Game.Rulesets.Objects /// Creates a new . /// public PathControlPoint() - : this(Vector2.Zero, null) { + Position.ValueChanged += _ => Changed?.Invoke(); + Type.ValueChanged += _ => Changed?.Invoke(); } /// @@ -40,12 +41,10 @@ namespace osu.Game.Rulesets.Objects /// The initial position. /// The initial type. public PathControlPoint(Vector2 position, PathType? type = null) + : this() { Position.Value = position; Type.Value = type; - - Position.ValueChanged += _ => Changed?.Invoke(); - Type.ValueChanged += _ => Changed?.Invoke(); } public bool Equals(PathControlPoint other) => Position.Value == other?.Position.Value && Type.Value == other.Type.Value; From 94a298a82d5e965ff54e63e56b332c78af50f775 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 10 Dec 2019 16:00:09 +0900 Subject: [PATCH 0208/1829] Refactor distance snap grid to not require hitobjects --- .../Edit/OsuDistanceSnapGrid.cs | 5 +- .../Editor/TestSceneDistanceSnapGrid.cs | 29 ++++++----- .../Components/CircularDistanceSnapGrid.cs | 25 +++++----- .../Compose/Components/DistanceSnapGrid.cs | 50 +++++++++---------- 4 files changed, 52 insertions(+), 57 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/OsuDistanceSnapGrid.cs b/osu.Game.Rulesets.Osu/Edit/OsuDistanceSnapGrid.cs index 9b00204d51..bde86a2890 100644 --- a/osu.Game.Rulesets.Osu/Edit/OsuDistanceSnapGrid.cs +++ b/osu.Game.Rulesets.Osu/Edit/OsuDistanceSnapGrid.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 JetBrains.Annotations; using osu.Game.Rulesets.Osu.Objects; using osu.Game.Screens.Edit.Compose.Components; @@ -8,8 +9,8 @@ namespace osu.Game.Rulesets.Osu.Edit { public class OsuDistanceSnapGrid : CircularDistanceSnapGrid { - public OsuDistanceSnapGrid(OsuHitObject hitObject, OsuHitObject nextHitObject) - : base(hitObject, nextHitObject, hitObject.StackedEndPosition) + public OsuDistanceSnapGrid(OsuHitObject hitObject, [CanBeNull] OsuHitObject nextHitObject = null) + : base(hitObject.StackedPosition, hitObject.StartTime, nextHitObject?.StartTime) { Masking = true; } diff --git a/osu.Game.Tests/Visual/Editor/TestSceneDistanceSnapGrid.cs b/osu.Game.Tests/Visual/Editor/TestSceneDistanceSnapGrid.cs index e4c987923c..39b4bf7218 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneDistanceSnapGrid.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneDistanceSnapGrid.cs @@ -7,7 +7,6 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Shapes; using osu.Game.Beatmaps.ControlPoints; using osu.Game.Rulesets.Edit; -using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Osu.Beatmaps; using osu.Game.Rulesets.Osu.Objects; using osu.Game.Screens.Edit; @@ -44,7 +43,7 @@ namespace osu.Game.Tests.Visual.Editor RelativeSizeAxes = Axes.Both, Colour = Color4.SlateGray }, - new TestDistanceSnapGrid(new HitObject(), grid_position) + new TestDistanceSnapGrid() }; }); @@ -73,7 +72,7 @@ namespace osu.Game.Tests.Visual.Editor RelativeSizeAxes = Axes.Both, Colour = Color4.SlateGray }, - new TestDistanceSnapGrid(new HitObject(), grid_position, new HitObject { StartTime = 100 }) + new TestDistanceSnapGrid(100) }; }); } @@ -82,68 +81,68 @@ namespace osu.Game.Tests.Visual.Editor { public new float DistanceSpacing => base.DistanceSpacing; - public TestDistanceSnapGrid(HitObject hitObject, Vector2 centrePosition, HitObject nextHitObject = null) - : base(hitObject, nextHitObject, centrePosition) + public TestDistanceSnapGrid(double? endTime = null) + : base(grid_position, 0, endTime) { } - protected override void CreateContent(Vector2 centrePosition) + protected override void CreateContent(Vector2 startPosition) { AddInternal(new Circle { Origin = Anchor.Centre, Size = new Vector2(5), - Position = centrePosition + Position = startPosition }); int beatIndex = 0; - for (float s = centrePosition.X + DistanceSpacing; s <= DrawWidth && beatIndex < MaxIntervals; s += DistanceSpacing, beatIndex++) + for (float s = startPosition.X + DistanceSpacing; s <= DrawWidth && beatIndex < MaxIntervals; s += DistanceSpacing, beatIndex++) { AddInternal(new Circle { Origin = Anchor.Centre, Size = new Vector2(5, 10), - Position = new Vector2(s, centrePosition.Y), + Position = new Vector2(s, startPosition.Y), Colour = GetColourForBeatIndex(beatIndex) }); } beatIndex = 0; - for (float s = centrePosition.X - DistanceSpacing; s >= 0 && beatIndex < MaxIntervals; s -= DistanceSpacing, beatIndex++) + for (float s = startPosition.X - DistanceSpacing; s >= 0 && beatIndex < MaxIntervals; s -= DistanceSpacing, beatIndex++) { AddInternal(new Circle { Origin = Anchor.Centre, Size = new Vector2(5, 10), - Position = new Vector2(s, centrePosition.Y), + Position = new Vector2(s, startPosition.Y), Colour = GetColourForBeatIndex(beatIndex) }); } beatIndex = 0; - for (float s = centrePosition.Y + DistanceSpacing; s <= DrawHeight && beatIndex < MaxIntervals; s += DistanceSpacing, beatIndex++) + for (float s = startPosition.Y + DistanceSpacing; s <= DrawHeight && beatIndex < MaxIntervals; s += DistanceSpacing, beatIndex++) { AddInternal(new Circle { Origin = Anchor.Centre, Size = new Vector2(10, 5), - Position = new Vector2(centrePosition.X, s), + Position = new Vector2(startPosition.X, s), Colour = GetColourForBeatIndex(beatIndex) }); } beatIndex = 0; - for (float s = centrePosition.Y - DistanceSpacing; s >= 0 && beatIndex < MaxIntervals; s -= DistanceSpacing, beatIndex++) + for (float s = startPosition.Y - DistanceSpacing; s >= 0 && beatIndex < MaxIntervals; s -= DistanceSpacing, beatIndex++) { AddInternal(new Circle { Origin = Anchor.Centre, Size = new Vector2(10, 5), - Position = new Vector2(centrePosition.X, s), + Position = new Vector2(startPosition.X, s), Colour = GetColourForBeatIndex(beatIndex) }); } diff --git a/osu.Game/Screens/Edit/Compose/Components/CircularDistanceSnapGrid.cs b/osu.Game/Screens/Edit/Compose/Components/CircularDistanceSnapGrid.cs index 91e19f9cc0..23ed10b92d 100644 --- a/osu.Game/Screens/Edit/Compose/Components/CircularDistanceSnapGrid.cs +++ b/osu.Game/Screens/Edit/Compose/Components/CircularDistanceSnapGrid.cs @@ -5,19 +5,18 @@ using System; using osu.Framework.Graphics; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.UserInterface; -using osu.Game.Rulesets.Objects; using osuTK; namespace osu.Game.Screens.Edit.Compose.Components { public abstract class CircularDistanceSnapGrid : DistanceSnapGrid { - protected CircularDistanceSnapGrid(HitObject hitObject, HitObject nextHitObject, Vector2 centrePosition) - : base(hitObject, nextHitObject, centrePosition) + protected CircularDistanceSnapGrid(Vector2 startPosition, double startTime, double? endTime = null) + : base(startPosition, startTime, endTime) { } - protected override void CreateContent(Vector2 centrePosition) + protected override void CreateContent(Vector2 startPosition) { const float crosshair_thickness = 1; const float crosshair_max_size = 10; @@ -27,7 +26,7 @@ namespace osu.Game.Screens.Edit.Compose.Components new Box { Origin = Anchor.Centre, - Position = centrePosition, + Position = startPosition, Width = crosshair_thickness, EdgeSmoothness = new Vector2(1), Height = Math.Min(crosshair_max_size, DistanceSpacing * 2), @@ -35,15 +34,15 @@ namespace osu.Game.Screens.Edit.Compose.Components new Box { Origin = Anchor.Centre, - Position = centrePosition, + Position = startPosition, EdgeSmoothness = new Vector2(1), Width = Math.Min(crosshair_max_size, DistanceSpacing * 2), Height = crosshair_thickness, } }); - float dx = Math.Max(centrePosition.X, DrawWidth - centrePosition.X); - float dy = Math.Max(centrePosition.Y, DrawHeight - centrePosition.Y); + float dx = Math.Max(startPosition.X, DrawWidth - startPosition.X); + float dy = Math.Max(startPosition.Y, DrawHeight - startPosition.Y); float maxDistance = new Vector2(dx, dy).Length; int requiredCircles = Math.Min(MaxIntervals, (int)(maxDistance / DistanceSpacing)); @@ -54,7 +53,7 @@ namespace osu.Game.Screens.Edit.Compose.Components AddInternal(new CircularProgress { Origin = Anchor.Centre, - Position = centrePosition, + Position = startPosition, Current = { Value = 1 }, Size = new Vector2(radius), InnerRadius = 4 * 1f / radius, @@ -66,9 +65,9 @@ namespace osu.Game.Screens.Edit.Compose.Components public override (Vector2 position, double time) GetSnappedPosition(Vector2 position) { if (MaxIntervals == 0) - return (CentrePosition, StartTime); + return (StartPosition, StartTime); - Vector2 direction = position - CentrePosition; + Vector2 direction = position - StartPosition; if (direction == Vector2.Zero) direction = new Vector2(0.001f, 0.001f); @@ -78,9 +77,9 @@ namespace osu.Game.Screens.Edit.Compose.Components int radialCount = Math.Clamp((int)MathF.Round(distance / radius), 1, MaxIntervals); Vector2 normalisedDirection = direction * new Vector2(1f / distance); - Vector2 snappedPosition = CentrePosition + normalisedDirection * radialCount * radius; + Vector2 snappedPosition = StartPosition + normalisedDirection * radialCount * radius; - return (snappedPosition, StartTime + SnapProvider.GetSnappedDurationFromDistance(StartTime, (snappedPosition - CentrePosition).Length)); + return (snappedPosition, StartTime + SnapProvider.GetSnappedDurationFromDistance(StartTime, (snappedPosition - StartPosition).Length)); } } } diff --git a/osu.Game/Screens/Edit/Compose/Components/DistanceSnapGrid.cs b/osu.Game/Screens/Edit/Compose/Components/DistanceSnapGrid.cs index 9508a2cdf0..00326d04f7 100644 --- a/osu.Game/Screens/Edit/Compose/Components/DistanceSnapGrid.cs +++ b/osu.Game/Screens/Edit/Compose/Components/DistanceSnapGrid.cs @@ -1,7 +1,6 @@ // 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.Caching; using osu.Framework.Graphics; @@ -9,7 +8,6 @@ using osu.Framework.Graphics.Colour; using osu.Framework.Graphics.Containers; using osu.Game.Graphics; using osu.Game.Rulesets.Edit; -using osu.Game.Rulesets.Objects; using osuTK; namespace osu.Game.Screens.Edit.Compose.Components @@ -24,21 +22,21 @@ namespace osu.Game.Screens.Edit.Compose.Components /// protected float DistanceSpacing { get; private set; } - /// - /// The snapping time at . - /// - protected double StartTime { get; private set; } - /// /// The maximum number of distance snapping intervals allowed. /// protected int MaxIntervals { get; private set; } /// - /// The position which the grid is centred on. - /// The first beat snapping tick is located at + in the desired direction. + /// The position which the grid should start. + /// The first beat snapping tick is located at + away from this point. /// - protected readonly Vector2 CentrePosition; + protected readonly Vector2 StartPosition; + + /// + /// The snapping time at . + /// + protected readonly double StartTime; [Resolved] protected OsuColour Colours { get; private set; } @@ -53,25 +51,23 @@ namespace osu.Game.Screens.Edit.Compose.Components private BindableBeatDivisor beatDivisor { get; set; } private readonly Cached gridCache = new Cached(); - private readonly HitObject hitObject; - private readonly HitObject nextHitObject; + private readonly double? endTime; - protected DistanceSnapGrid(HitObject hitObject, [CanBeNull] HitObject nextHitObject, Vector2 centrePosition) + /// + /// Creates a new . + /// + /// The position at which the grid should start. The first tick is located one distance spacing length away from this point. + /// The snapping time at . + /// The time at which the snapping grid should end. If null, the grid will continue until the bounds of the screen are exceeded. + protected DistanceSnapGrid(Vector2 startPosition, double startTime, double? endTime = null) { - this.hitObject = hitObject; - this.nextHitObject = nextHitObject; - - CentrePosition = centrePosition; + this.endTime = endTime; + StartPosition = startPosition; + StartTime = startTime; RelativeSizeAxes = Axes.Both; } - [BackgroundDependencyLoader] - private void load() - { - StartTime = hitObject.GetEndTime(); - } - protected override void LoadComplete() { base.LoadComplete(); @@ -83,12 +79,12 @@ namespace osu.Game.Screens.Edit.Compose.Components { DistanceSpacing = SnapProvider.GetBeatSnapDistanceAt(StartTime); - if (nextHitObject == null) + if (endTime == null) MaxIntervals = int.MaxValue; else { // +1 is added since a snapped hitobject may have its start time slightly less than the snapped time due to floating point errors - double maxDuration = nextHitObject.StartTime - StartTime + 1; + double maxDuration = endTime.Value - StartTime + 1; MaxIntervals = (int)(maxDuration / SnapProvider.DistanceToDuration(StartTime, DistanceSpacing)); } @@ -110,7 +106,7 @@ namespace osu.Game.Screens.Edit.Compose.Components if (!gridCache.IsValid) { ClearInternal(); - CreateContent(CentrePosition); + CreateContent(StartPosition); gridCache.Validate(); } } @@ -118,7 +114,7 @@ namespace osu.Game.Screens.Edit.Compose.Components /// /// Creates the content which visualises the grid ticks. /// - protected abstract void CreateContent(Vector2 centrePosition); + protected abstract void CreateContent(Vector2 startPosition); /// /// Snaps a position to this grid. From 609c51130964ccb85e00160be1556ec4aa7bec61 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 10 Dec 2019 16:43:58 +0900 Subject: [PATCH 0209/1829] 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 301c615ce4..914d352070 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index ef16738908..473ce82443 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 5090190f28..d03005012a 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From f7f4a57c5f6b1b3d64bec8c22461e261c05bae97 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 9 Dec 2019 19:41:18 +0900 Subject: [PATCH 0210/1829] Update bindable types in line with framework --- osu.Game/Rulesets/Mods/ModTimeAdjust.cs | 2 +- osu.Game/Rulesets/UI/DrawableRuleset.cs | 16 +++++++++++----- .../Tests/Visual/RateAdjustedBeatmapTestScene.cs | 2 +- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModTimeAdjust.cs b/osu.Game/Rulesets/Mods/ModTimeAdjust.cs index f137a75ed8..7d0cc2a7c3 100644 --- a/osu.Game/Rulesets/Mods/ModTimeAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModTimeAdjust.cs @@ -14,7 +14,7 @@ namespace osu.Game.Rulesets.Mods public virtual void ApplyToTrack(Track track) { - track.TempoAdjust *= RateAdjust; + track.Tempo.Value *= RateAdjust; } } } diff --git a/osu.Game/Rulesets/UI/DrawableRuleset.cs b/osu.Game/Rulesets/UI/DrawableRuleset.cs index 96275c1274..a856974292 100644 --- a/osu.Game/Rulesets/UI/DrawableRuleset.cs +++ b/osu.Game/Rulesets/UI/DrawableRuleset.cs @@ -511,15 +511,19 @@ namespace osu.Game.Rulesets.UI public IEnumerable GetAvailableResources() => throw new NotImplementedException(); - public void AddAdjustment(AdjustableProperty type, BindableDouble adjustBindable) => throw new NotImplementedException(); + public void AddAdjustment(AdjustableProperty type, BindableNumber adjustBindable) => throw new NotImplementedException(); - public void RemoveAdjustment(AdjustableProperty type, BindableDouble adjustBindable) => throw new NotImplementedException(); + public void RemoveAdjustment(AdjustableProperty type, BindableNumber adjustBindable) => throw new NotImplementedException(); - public BindableDouble Volume => throw new NotImplementedException(); + public BindableNumber Volume => throw new NotImplementedException(); - public BindableDouble Balance => throw new NotImplementedException(); + public BindableNumber Balance => throw new NotImplementedException(); - public BindableDouble Frequency => throw new NotImplementedException(); + public BindableNumber Frequency => throw new NotImplementedException(); + + public BindableNumber Tempo => throw new NotImplementedException(); + + public IBindable GetAggregate(AdjustableProperty type) => throw new NotImplementedException(); public IBindable AggregateVolume => throw new NotImplementedException(); @@ -527,6 +531,8 @@ namespace osu.Game.Rulesets.UI public IBindable AggregateFrequency => throw new NotImplementedException(); + public IBindable AggregateTempo => throw new NotImplementedException(); + public int PlaybackConcurrency { get => throw new NotImplementedException(); diff --git a/osu.Game/Tests/Visual/RateAdjustedBeatmapTestScene.cs b/osu.Game/Tests/Visual/RateAdjustedBeatmapTestScene.cs index 921a1d9789..ad24ffc7b8 100644 --- a/osu.Game/Tests/Visual/RateAdjustedBeatmapTestScene.cs +++ b/osu.Game/Tests/Visual/RateAdjustedBeatmapTestScene.cs @@ -13,7 +13,7 @@ namespace osu.Game.Tests.Visual base.Update(); // note that this will override any mod rate application - Beatmap.Value.Track.TempoAdjust = Clock.Rate; + Beatmap.Value.Track.Tempo.Value = Clock.Rate; } } } From 65f2d1f8757f809eb5f33b639abc5e7b338b6060 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 10 Dec 2019 17:49:42 +0900 Subject: [PATCH 0211/1829] 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 914d352070..3cd4dc48bf 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 473ce82443..530d62f583 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 d03005012a..fb753b8c6f 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From 55c938e5daa07a0a471d313645c172d5372ba73c Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 10 Dec 2019 18:08:11 +0900 Subject: [PATCH 0212/1829] Fix bindable usage --- osu.Game/Online/DownloadTrackingComposite.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Online/DownloadTrackingComposite.cs b/osu.Game/Online/DownloadTrackingComposite.cs index dcec17788a..9a0e112727 100644 --- a/osu.Game/Online/DownloadTrackingComposite.cs +++ b/osu.Game/Online/DownloadTrackingComposite.cs @@ -26,7 +26,7 @@ namespace osu.Game.Online /// protected readonly Bindable State = new Bindable(); - protected readonly Bindable Progress = new Bindable(); + protected readonly BindableNumber Progress = new BindableNumber { MinValue = 0, MaxValue = 1 }; protected DownloadTrackingComposite(TModel model = null) { From f593caf0eaa4d8750d314d16f17278c7fdc178d8 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 10 Dec 2019 18:08:51 +0900 Subject: [PATCH 0213/1829] Remove unused class --- .../Blueprints/Sliders/SliderPlacementBlueprint.cs | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs index c004b6db28..9b820261ab 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs @@ -1,7 +1,6 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. -using System.Collections.Generic; using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Input; @@ -191,15 +190,5 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders Initial, Body, } - - private class Segment - { - public readonly List ControlPoints = new List(); - - public Segment(Vector2 offset) - { - ControlPoints.Add(offset); - } - } } } From 48976f5d0e0e14663ac8b5d5c1f106c0fd592f1f Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Mon, 9 Dec 2019 21:46:29 +0800 Subject: [PATCH 0214/1829] Add VS launcher profile for tournament client. --- osu.Desktop/Properties/launchSettings.json | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 osu.Desktop/Properties/launchSettings.json diff --git a/osu.Desktop/Properties/launchSettings.json b/osu.Desktop/Properties/launchSettings.json new file mode 100644 index 0000000000..5e768ec9fa --- /dev/null +++ b/osu.Desktop/Properties/launchSettings.json @@ -0,0 +1,11 @@ +{ + "profiles": { + "osu! Desktop": { + "commandName": "Project" + }, + "osu! Tournament": { + "commandName": "Project", + "commandLineArgs": "--tournament" + } + } +} \ No newline at end of file From 8012b21ffae925fc610fd23d96b334ea50d37e8f Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 10 Dec 2019 20:04:37 +0900 Subject: [PATCH 0215/1829] Extract legacy sound type enum --- .../Beatmaps/Legacy/LegacyHitSoundType.cs | 14 +++++++++++ .../Objects/Legacy/ConvertHitObjectParser.cs | 24 ++++++------------- 2 files changed, 21 insertions(+), 17 deletions(-) create mode 100644 osu.Game/Beatmaps/Legacy/LegacyHitSoundType.cs diff --git a/osu.Game/Beatmaps/Legacy/LegacyHitSoundType.cs b/osu.Game/Beatmaps/Legacy/LegacyHitSoundType.cs new file mode 100644 index 0000000000..69adbf8f67 --- /dev/null +++ b/osu.Game/Beatmaps/Legacy/LegacyHitSoundType.cs @@ -0,0 +1,14 @@ +using System; + +namespace osu.Game.Beatmaps.Legacy +{ + [Flags] + internal enum LegacyHitSoundType + { + None = 0, + Normal = 1, + Whistle = 2, + Finish = 4, + Clap = 8 + } +} diff --git a/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs index b5b1e26486..c22955cbf1 100644 --- a/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs +++ b/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs @@ -54,7 +54,7 @@ namespace osu.Game.Rulesets.Objects.Legacy bool combo = type.HasFlag(ConvertHitObjectType.NewCombo); type &= ~ConvertHitObjectType.NewCombo; - var soundType = (LegacySoundType)Parsing.ParseInt(split[4]); + var soundType = (LegacyHitSoundType)Parsing.ParseInt(split[4]); var bankInfo = new SampleBankInfo(); HitObject result = null; @@ -157,7 +157,7 @@ namespace osu.Game.Rulesets.Objects.Legacy } // Populate node sound types with the default hit object sound type - var nodeSoundTypes = new List(); + var nodeSoundTypes = new List(); for (int i = 0; i < nodes; i++) nodeSoundTypes.Add(soundType); @@ -172,7 +172,7 @@ namespace osu.Game.Rulesets.Objects.Legacy break; int.TryParse(adds[i], out var sound); - nodeSoundTypes[i] = (LegacySoundType)sound; + nodeSoundTypes[i] = (LegacyHitSoundType)sound; } } @@ -333,7 +333,7 @@ namespace osu.Game.Rulesets.Objects.Legacy /// The hold end time. protected abstract HitObject CreateHold(Vector2 position, bool newCombo, int comboOffset, double endTime); - private List convertSoundType(LegacySoundType type, SampleBankInfo bankInfo) + private List convertSoundType(LegacyHitSoundType type, SampleBankInfo bankInfo) { // Todo: This should return the normal SampleInfos if the specified sample file isn't found, but that's a pretty edge-case scenario if (!string.IsNullOrEmpty(bankInfo.Filename)) @@ -359,7 +359,7 @@ namespace osu.Game.Rulesets.Objects.Legacy } }; - if (type.HasFlag(LegacySoundType.Finish)) + if (type.HasFlag(LegacyHitSoundType.Finish)) { soundTypes.Add(new LegacyHitSampleInfo { @@ -370,7 +370,7 @@ namespace osu.Game.Rulesets.Objects.Legacy }); } - if (type.HasFlag(LegacySoundType.Whistle)) + if (type.HasFlag(LegacyHitSoundType.Whistle)) { soundTypes.Add(new LegacyHitSampleInfo { @@ -381,7 +381,7 @@ namespace osu.Game.Rulesets.Objects.Legacy }); } - if (type.HasFlag(LegacySoundType.Clap)) + if (type.HasFlag(LegacyHitSoundType.Clap)) { soundTypes.Add(new LegacyHitSampleInfo { @@ -430,15 +430,5 @@ namespace osu.Game.Rulesets.Objects.Legacy Path.ChangeExtension(Filename, null) }; } - - [Flags] - private enum LegacySoundType - { - None = 0, - Normal = 1, - Whistle = 2, - Finish = 4, - Clap = 8 - } } } From e3f925f69afd6bb69081729c5f419c2af43208bb Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 10 Dec 2019 20:19:16 +0900 Subject: [PATCH 0216/1829] Extract legacy hitobject type enum --- .../Beatmaps/Legacy/LegacyHitObjectType.cs | 15 +++++++++++++++ .../Objects/Legacy/ConvertHitObjectParser.cs | 19 ++++++++++--------- .../Objects/Legacy/ConvertHitObjectType.cs | 18 ------------------ 3 files changed, 25 insertions(+), 27 deletions(-) create mode 100644 osu.Game/Beatmaps/Legacy/LegacyHitObjectType.cs delete mode 100644 osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectType.cs diff --git a/osu.Game/Beatmaps/Legacy/LegacyHitObjectType.cs b/osu.Game/Beatmaps/Legacy/LegacyHitObjectType.cs new file mode 100644 index 0000000000..9223f7df31 --- /dev/null +++ b/osu.Game/Beatmaps/Legacy/LegacyHitObjectType.cs @@ -0,0 +1,15 @@ +using System; + +namespace osu.Game.Beatmaps.Legacy +{ + [Flags] + internal enum LegacyHitObjectType + { + Circle = 1, + Slider = 1 << 1, + NewCombo = 1 << 2, + Spinner = 1 << 3, + ComboOffset = (1 << 4) | (1 << 5) | (1 << 6), + Hold = 1 << 7 + } +} diff --git a/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs index c22955cbf1..b83c67acff 100644 --- a/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs +++ b/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs @@ -11,6 +11,7 @@ using osu.Game.Audio; using System.Linq; using JetBrains.Annotations; using osu.Framework.MathUtils; +using osu.Game.Beatmaps.Legacy; namespace osu.Game.Rulesets.Objects.Legacy { @@ -46,27 +47,27 @@ namespace osu.Game.Rulesets.Objects.Legacy double startTime = Parsing.ParseDouble(split[2]) + Offset; - ConvertHitObjectType type = (ConvertHitObjectType)Parsing.ParseInt(split[3]); + LegacyHitObjectType type = (LegacyHitObjectType)Parsing.ParseInt(split[3]); - int comboOffset = (int)(type & ConvertHitObjectType.ComboOffset) >> 4; - type &= ~ConvertHitObjectType.ComboOffset; + int comboOffset = (int)(type & LegacyHitObjectType.ComboOffset) >> 4; + type &= ~LegacyHitObjectType.ComboOffset; - bool combo = type.HasFlag(ConvertHitObjectType.NewCombo); - type &= ~ConvertHitObjectType.NewCombo; + bool combo = type.HasFlag(LegacyHitObjectType.NewCombo); + type &= ~LegacyHitObjectType.NewCombo; var soundType = (LegacyHitSoundType)Parsing.ParseInt(split[4]); var bankInfo = new SampleBankInfo(); HitObject result = null; - if (type.HasFlag(ConvertHitObjectType.Circle)) + if (type.HasFlag(LegacyHitObjectType.Circle)) { result = CreateHit(pos, combo, comboOffset); if (split.Length > 5) readCustomSampleBanks(split[5], bankInfo); } - else if (type.HasFlag(ConvertHitObjectType.Slider)) + else if (type.HasFlag(LegacyHitObjectType.Slider)) { PathType pathType = PathType.Catmull; double? length = null; @@ -186,7 +187,7 @@ namespace osu.Game.Rulesets.Objects.Legacy // The samples are played when the slider ends, which is the last node result.Samples = nodeSamples[nodeSamples.Count - 1]; } - else if (type.HasFlag(ConvertHitObjectType.Spinner)) + else if (type.HasFlag(LegacyHitObjectType.Spinner)) { double endTime = Math.Max(startTime, Parsing.ParseDouble(split[5]) + Offset); @@ -195,7 +196,7 @@ namespace osu.Game.Rulesets.Objects.Legacy if (split.Length > 6) readCustomSampleBanks(split[6], bankInfo); } - else if (type.HasFlag(ConvertHitObjectType.Hold)) + else if (type.HasFlag(LegacyHitObjectType.Hold)) { // Note: Hold is generated by BMS converts diff --git a/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectType.cs b/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectType.cs deleted file mode 100644 index eab37b682c..0000000000 --- a/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectType.cs +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. -// See the LICENCE file in the repository root for full licence text. - -using System; - -namespace osu.Game.Rulesets.Objects.Legacy -{ - [Flags] - internal enum ConvertHitObjectType - { - Circle = 1, - Slider = 1 << 1, - NewCombo = 1 << 2, - Spinner = 1 << 3, - ComboOffset = (1 << 4) | (1 << 5) | (1 << 6), - Hold = 1 << 7 - } -} From 3c18872a16605e4dc87261a520cdbc5ecb27e921 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 10 Dec 2019 20:19:31 +0900 Subject: [PATCH 0217/1829] Extract legacy effect flags enum --- osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs | 15 ++++----------- osu.Game/Beatmaps/Legacy/LegacyEffectFlags.cs | 12 ++++++++++++ 2 files changed, 16 insertions(+), 11 deletions(-) create mode 100644 osu.Game/Beatmaps/Legacy/LegacyEffectFlags.cs diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs index 838b1c2f07..ff4e6503ee 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs @@ -10,6 +10,7 @@ using osu.Game.Beatmaps.Timing; using osu.Game.Rulesets.Objects.Legacy; using osu.Game.Beatmaps.ControlPoints; using osu.Game.IO; +using osu.Game.Beatmaps.Legacy; namespace osu.Game.Beatmaps.Formats { @@ -358,9 +359,9 @@ namespace osu.Game.Beatmaps.Formats if (split.Length >= 8) { - EffectFlags effectFlags = (EffectFlags)Parsing.ParseInt(split[7]); - kiaiMode = effectFlags.HasFlag(EffectFlags.Kiai); - omitFirstBarSignature = effectFlags.HasFlag(EffectFlags.OmitFirstBarLine); + LegacyEffectFlags effectFlags = (LegacyEffectFlags)Parsing.ParseInt(split[7]); + kiaiMode = effectFlags.HasFlag(LegacyEffectFlags.Kiai); + omitFirstBarSignature = effectFlags.HasFlag(LegacyEffectFlags.OmitFirstBarLine); } string stringSampleSet = sampleSet.ToString().ToLowerInvariant(); @@ -448,13 +449,5 @@ namespace osu.Game.Beatmaps.Formats private double getOffsetTime(double time) => time + (ApplyOffsets ? offset : 0); protected virtual TimingControlPoint CreateTimingControlPoint() => new TimingControlPoint(); - - [Flags] - internal enum EffectFlags - { - None = 0, - Kiai = 1, - OmitFirstBarLine = 8 - } } } diff --git a/osu.Game/Beatmaps/Legacy/LegacyEffectFlags.cs b/osu.Game/Beatmaps/Legacy/LegacyEffectFlags.cs new file mode 100644 index 0000000000..ce141031fd --- /dev/null +++ b/osu.Game/Beatmaps/Legacy/LegacyEffectFlags.cs @@ -0,0 +1,12 @@ +using System; + +namespace osu.Game.Beatmaps.Legacy +{ + [Flags] + internal enum LegacyEffectFlags + { + None = 0, + Kiai = 1, + OmitFirstBarLine = 8 + } +} From c378e525dae265a0d513090a002e2cc235a04415 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 10 Dec 2019 20:23:15 +0900 Subject: [PATCH 0218/1829] Extract the rest of legacy enums --- .../Beatmaps/Formats/LegacyBeatmapDecoder.cs | 8 ++-- osu.Game/Beatmaps/Formats/LegacyDecoder.cs | 37 ------------------- .../Formats/LegacyStoryboardDecoder.cs | 11 +++--- osu.Game/Beatmaps/Legacy/LegacyEventType.cs | 13 +++++++ osu.Game/Beatmaps/Legacy/LegacyOrigins.cs | 16 ++++++++ osu.Game/Beatmaps/Legacy/LegacySampleBank.cs | 10 +++++ osu.Game/Beatmaps/Legacy/LegacyStoryLayer.cs | 10 +++++ .../Objects/Legacy/ConvertHitObjectParser.cs | 4 +- 8 files changed, 61 insertions(+), 48 deletions(-) create mode 100644 osu.Game/Beatmaps/Legacy/LegacyEventType.cs create mode 100644 osu.Game/Beatmaps/Legacy/LegacyOrigins.cs create mode 100644 osu.Game/Beatmaps/Legacy/LegacySampleBank.cs create mode 100644 osu.Game/Beatmaps/Legacy/LegacyStoryLayer.cs diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs index ff4e6503ee..1b24e2953b 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs @@ -294,22 +294,22 @@ namespace osu.Game.Beatmaps.Formats { string[] split = line.Split(','); - if (!Enum.TryParse(split[0], out EventType type)) + if (!Enum.TryParse(split[0], out LegacyEventType type)) throw new InvalidDataException($@"Unknown event type: {split[0]}"); switch (type) { - case EventType.Background: + case LegacyEventType.Background: string bgFilename = split[2].Trim('"'); beatmap.BeatmapInfo.Metadata.BackgroundFile = FileSafety.PathStandardise(bgFilename); break; - case EventType.Video: + case LegacyEventType.Video: string videoFilename = split[2].Trim('"'); beatmap.BeatmapInfo.Metadata.VideoFile = FileSafety.PathStandardise(videoFilename); break; - case EventType.Break: + case LegacyEventType.Break: double start = getOffsetTime(Parsing.ParseDouble(split[1])); var breakEvent = new BreakPeriod diff --git a/osu.Game/Beatmaps/Formats/LegacyDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyDecoder.cs index 2b914669cb..1c2ca4b6f8 100644 --- a/osu.Game/Beatmaps/Formats/LegacyDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyDecoder.cs @@ -148,46 +148,9 @@ namespace osu.Game.Beatmaps.Formats Fonts } - internal enum LegacySampleBank - { - None = 0, - Normal = 1, - Soft = 2, - Drum = 3 - } - internal enum EventType - { - Background = 0, - Video = 1, - Break = 2, - Colour = 3, - Sprite = 4, - Sample = 5, - Animation = 6 - } - internal enum LegacyOrigins - { - TopLeft, - Centre, - CentreLeft, - TopRight, - BottomCentre, - TopCentre, - Custom, - CentreRight, - BottomLeft, - BottomRight - } - internal enum StoryLayer - { - Background = 0, - Fail = 1, - Pass = 2, - Foreground = 3 - } internal class LegacyDifficultyControlPoint : DifficultyControlPoint { diff --git a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs index f94ab3f27b..b8323edc23 100644 --- a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs @@ -12,6 +12,7 @@ using osu.Framework.Graphics; using osu.Framework.IO.File; using osu.Game.IO; using osu.Game.Storyboards; +using osu.Game.Beatmaps.Legacy; namespace osu.Game.Beatmaps.Formats { @@ -83,12 +84,12 @@ namespace osu.Game.Beatmaps.Formats { storyboardSprite = null; - if (!Enum.TryParse(split[0], out EventType type)) + if (!Enum.TryParse(split[0], out LegacyEventType type)) throw new InvalidDataException($@"Unknown event type: {split[0]}"); switch (type) { - case EventType.Sprite: + case LegacyEventType.Sprite: { var layer = parseLayer(split[1]); var origin = parseOrigin(split[2]); @@ -100,7 +101,7 @@ namespace osu.Game.Beatmaps.Formats break; } - case EventType.Animation: + case LegacyEventType.Animation: { var layer = parseLayer(split[1]); var origin = parseOrigin(split[2]); @@ -115,7 +116,7 @@ namespace osu.Game.Beatmaps.Formats break; } - case EventType.Sample: + case LegacyEventType.Sample: { var time = double.Parse(split[1], CultureInfo.InvariantCulture); var layer = parseLayer(split[2]); @@ -271,7 +272,7 @@ namespace osu.Game.Beatmaps.Formats } } - private string parseLayer(string value) => Enum.Parse(typeof(StoryLayer), value).ToString(); + private string parseLayer(string value) => Enum.Parse(typeof(LegacyStoryLayer), value).ToString(); private Anchor parseOrigin(string value) { diff --git a/osu.Game/Beatmaps/Legacy/LegacyEventType.cs b/osu.Game/Beatmaps/Legacy/LegacyEventType.cs new file mode 100644 index 0000000000..57b1e6c29f --- /dev/null +++ b/osu.Game/Beatmaps/Legacy/LegacyEventType.cs @@ -0,0 +1,13 @@ +namespace osu.Game.Beatmaps.Legacy +{ + internal enum LegacyEventType + { + Background = 0, + Video = 1, + Break = 2, + Colour = 3, + Sprite = 4, + Sample = 5, + Animation = 6 + } +} diff --git a/osu.Game/Beatmaps/Legacy/LegacyOrigins.cs b/osu.Game/Beatmaps/Legacy/LegacyOrigins.cs new file mode 100644 index 0000000000..93c8920761 --- /dev/null +++ b/osu.Game/Beatmaps/Legacy/LegacyOrigins.cs @@ -0,0 +1,16 @@ +namespace osu.Game.Beatmaps.Legacy +{ + internal enum LegacyOrigins + { + TopLeft, + Centre, + CentreLeft, + TopRight, + BottomCentre, + TopCentre, + Custom, + CentreRight, + BottomLeft, + BottomRight + } +} diff --git a/osu.Game/Beatmaps/Legacy/LegacySampleBank.cs b/osu.Game/Beatmaps/Legacy/LegacySampleBank.cs new file mode 100644 index 0000000000..0d54998d15 --- /dev/null +++ b/osu.Game/Beatmaps/Legacy/LegacySampleBank.cs @@ -0,0 +1,10 @@ +namespace osu.Game.Beatmaps.Legacy +{ + internal enum LegacySampleBank + { + None = 0, + Normal = 1, + Soft = 2, + Drum = 3 + } +} diff --git a/osu.Game/Beatmaps/Legacy/LegacyStoryLayer.cs b/osu.Game/Beatmaps/Legacy/LegacyStoryLayer.cs new file mode 100644 index 0000000000..509f39f830 --- /dev/null +++ b/osu.Game/Beatmaps/Legacy/LegacyStoryLayer.cs @@ -0,0 +1,10 @@ +namespace osu.Game.Beatmaps.Legacy +{ + internal enum LegacyStoryLayer + { + Background = 0, + Fail = 1, + Pass = 2, + Foreground = 3 + } +} diff --git a/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs index b83c67acff..d3682de73f 100644 --- a/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs +++ b/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs @@ -232,8 +232,8 @@ namespace osu.Game.Rulesets.Objects.Legacy string[] split = str.Split(':'); - var bank = (LegacyBeatmapDecoder.LegacySampleBank)Parsing.ParseInt(split[0]); - var addbank = (LegacyBeatmapDecoder.LegacySampleBank)Parsing.ParseInt(split[1]); + var bank = (LegacySampleBank)Parsing.ParseInt(split[0]); + var addbank = (LegacySampleBank)Parsing.ParseInt(split[1]); string stringBank = bank.ToString().ToLowerInvariant(); if (stringBank == @"none") From 06cde2b0c22feca53459df4213f46eb82ca6d0c1 Mon Sep 17 00:00:00 2001 From: mcendu Date: Tue, 10 Dec 2019 19:30:46 +0800 Subject: [PATCH 0219/1829] remove unused using directive --- osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs b/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs index cf133f54ea..4e027c4351 100644 --- a/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs +++ b/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs @@ -3,7 +3,6 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; using osu.Game.Skinning; using osu.Game.Rulesets.Osu.UI.Cursor; using osuTK; From e37369304b7f75f67aafaa59947ca49b214a399e Mon Sep 17 00:00:00 2001 From: mcendu Date: Tue, 10 Dec 2019 19:45:06 +0800 Subject: [PATCH 0220/1829] property-ize expand target --- osu.Game.Rulesets.Osu/UI/Cursor/OsuCursor.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursor.cs b/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursor.cs index 4a67d23f57..07cde5e407 100644 --- a/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursor.cs +++ b/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursor.cs @@ -20,7 +20,9 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor private bool cursorExpand; - private OsuCursorSprite cursorSprite; + private SkinnableDrawable cursorSprite; + + private Drawable ExpandTarget => (cursorSprite.Drawable as OsuCursorSprite)?.ExpandTarget ?? cursorSprite; public OsuCursor() { @@ -37,19 +39,17 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor [BackgroundDependencyLoader] private void load() { - SkinnableDrawable cursor; InternalChild = new Container { RelativeSizeAxes = Axes.Both, Origin = Anchor.Centre, Anchor = Anchor.Centre, - Child = cursor = new SkinnableDrawable(new OsuSkinComponent(OsuSkinComponents.Cursor), _ => new DefaultCursor(), confineMode: ConfineMode.NoScaling) + Child = cursorSprite = new SkinnableDrawable(new OsuSkinComponent(OsuSkinComponents.Cursor), _ => new DefaultCursor(), confineMode: ConfineMode.NoScaling) { Origin = Anchor.Centre, Anchor = Anchor.Centre, } }; - cursorSprite = cursor.Drawable as OsuCursorSprite; } private const float pressed_scale = 1.2f; @@ -59,10 +59,10 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor { if (!cursorExpand) return; - cursorSprite.ExpandTarget.ScaleTo(released_scale).ScaleTo(pressed_scale, 100, Easing.OutQuad); + ExpandTarget.ScaleTo(released_scale).ScaleTo(pressed_scale, 100, Easing.OutQuad); } - public void Contract() => cursorSprite.ExpandTarget.ScaleTo(released_scale, 100, Easing.OutQuad); + public void Contract() => ExpandTarget.ScaleTo(released_scale, 100, Easing.OutQuad); private class DefaultCursor : OsuCursorSprite { From 1afeaf31bcad901bceec6766d3ec7a6810b5f82b Mon Sep 17 00:00:00 2001 From: mcendu Date: Tue, 10 Dec 2019 19:58:56 +0800 Subject: [PATCH 0221/1829] make OsuCursorSprite abstract --- osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorSprite.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorSprite.cs b/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorSprite.cs index 56c04ce1fc..909c764b9e 100644 --- a/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorSprite.cs +++ b/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorSprite.cs @@ -6,7 +6,7 @@ using osu.Framework.Graphics.Containers; namespace osu.Game.Rulesets.Osu.UI.Cursor { - public class OsuCursorSprite : CompositeDrawable + public abstract class OsuCursorSprite : CompositeDrawable { public Drawable ExpandTarget { get; protected set; } } From b93bbf81aa4cba9b9ad840a4c804d7419c3a25be Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Tue, 10 Dec 2019 15:10:35 +0300 Subject: [PATCH 0222/1829] Add lighten background during breaks setting --- osu.Game/Configuration/OsuConfigManager.cs | 2 ++ .../Overlays/Settings/Sections/Gameplay/GeneralSettings.cs | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/osu.Game/Configuration/OsuConfigManager.cs b/osu.Game/Configuration/OsuConfigManager.cs index b71463841a..947e864a87 100644 --- a/osu.Game/Configuration/OsuConfigManager.cs +++ b/osu.Game/Configuration/OsuConfigManager.cs @@ -80,6 +80,7 @@ namespace osu.Game.Configuration // Gameplay Set(OsuSetting.DimLevel, 0.3, 0, 1, 0.01); Set(OsuSetting.BlurLevel, 0, 0, 1, 0.01); + Set(OsuSetting.LightenDuringBreaks, true); Set(OsuSetting.HitLighting, true); @@ -142,6 +143,7 @@ namespace osu.Game.Configuration AutoCursorSize, DimLevel, BlurLevel, + LightenDuringBreaks, ShowStoryboard, ShowVideoBackground, KeyOverlay, diff --git a/osu.Game/Overlays/Settings/Sections/Gameplay/GeneralSettings.cs b/osu.Game/Overlays/Settings/Sections/Gameplay/GeneralSettings.cs index f4aa9a0144..3f8bc2b0c7 100644 --- a/osu.Game/Overlays/Settings/Sections/Gameplay/GeneralSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/Gameplay/GeneralSettings.cs @@ -30,6 +30,11 @@ namespace osu.Game.Overlays.Settings.Sections.Gameplay KeyboardStep = 0.01f }, new SettingsCheckbox + { + LabelText = "Lighten playfield during breaks", + Bindable = config.GetBindable(OsuSetting.LightenDuringBreaks) + }, + new SettingsCheckbox { LabelText = "Show score overlay", Bindable = config.GetBindable(OsuSetting.ShowInterface) From bb078c2afc82b34bc1e9fae15cd8b09627d38892 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Tue, 10 Dec 2019 15:13:44 +0300 Subject: [PATCH 0223/1829] Lighten user-dim container if on break time --- .../Graphics/Containers/UserDimContainer.cs | 22 ++++++++++++++++--- .../Backgrounds/BackgroundScreenBeatmap.cs | 3 +++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/osu.Game/Graphics/Containers/UserDimContainer.cs b/osu.Game/Graphics/Containers/UserDimContainer.cs index 7683bbcd63..20f5a4fd83 100644 --- a/osu.Game/Graphics/Containers/UserDimContainer.cs +++ b/osu.Game/Graphics/Containers/UserDimContainer.cs @@ -1,11 +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 osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Game.Configuration; +using osu.Game.Screens.Play; namespace osu.Game.Graphics.Containers { @@ -14,7 +16,9 @@ namespace osu.Game.Graphics.Containers /// public abstract class UserDimContainer : Container { - protected const float BACKGROUND_FADE_DURATION = 800; + private const float break_lighten_amount = 0.3f; + + protected const double BACKGROUND_FADE_DURATION = 800; /// /// Whether or not user-configured dim levels should be applied to the container. @@ -26,6 +30,12 @@ namespace osu.Game.Graphics.Containers /// public readonly Bindable StoryboardReplacesBackground = new Bindable(); + /// + /// Whether player is in break time. + /// Must be bound to to allow for dim adjustments in gameplay. + /// + internal readonly IBindable IsBreakTime = new Bindable(); + /// /// Whether the content of this container is currently being displayed. /// @@ -33,11 +43,14 @@ namespace osu.Game.Graphics.Containers protected Bindable UserDimLevel { get; private set; } + protected Bindable LightenDuringBreaks { get; private set; } + protected Bindable ShowStoryboard { get; private set; } protected Bindable ShowVideo { get; private set; } - protected double DimLevel => EnableUserDim.Value ? UserDimLevel.Value : 0; + private float breakLightening => LightenDuringBreaks.Value && IsBreakTime.Value ? break_lighten_amount : 0; + protected float DimLevel => Math.Max(EnableUserDim.Value ? (float)UserDimLevel.Value - breakLightening : 0, 0); protected override Container Content => dimContent; @@ -55,11 +68,14 @@ namespace osu.Game.Graphics.Containers private void load(OsuConfigManager config) { UserDimLevel = config.GetBindable(OsuSetting.DimLevel); + LightenDuringBreaks = config.GetBindable(OsuSetting.LightenDuringBreaks); ShowStoryboard = config.GetBindable(OsuSetting.ShowStoryboard); ShowVideo = config.GetBindable(OsuSetting.ShowVideoBackground); EnableUserDim.ValueChanged += _ => UpdateVisuals(); UserDimLevel.ValueChanged += _ => UpdateVisuals(); + LightenDuringBreaks.ValueChanged += _ => UpdateVisuals(); + IsBreakTime.ValueChanged += _ => UpdateVisuals(); ShowStoryboard.ValueChanged += _ => UpdateVisuals(); ShowVideo.ValueChanged += _ => UpdateVisuals(); StoryboardReplacesBackground.ValueChanged += _ => UpdateVisuals(); @@ -84,7 +100,7 @@ namespace osu.Game.Graphics.Containers ContentDisplayed = ShowDimContent; dimContent.FadeTo(ContentDisplayed ? 1 : 0, BACKGROUND_FADE_DURATION, Easing.OutQuint); - dimContent.FadeColour(OsuColour.Gray(1 - (float)DimLevel), BACKGROUND_FADE_DURATION, Easing.OutQuint); + dimContent.FadeColour(OsuColour.Gray(1f - DimLevel), BACKGROUND_FADE_DURATION, Easing.OutQuint); } } } diff --git a/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs b/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs index 7b68460e6b..1ab3a5b533 100644 --- a/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs +++ b/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs @@ -38,6 +38,8 @@ namespace osu.Game.Screens.Backgrounds /// public readonly Bindable BlurAmount = new Bindable(); + internal readonly IBindable IsBreakTime = new Bindable(); + private readonly DimmableBackground dimmable; protected virtual DimmableBackground CreateFadeContainer() => new DimmableBackground { RelativeSizeAxes = Axes.Both }; @@ -48,6 +50,7 @@ namespace osu.Game.Screens.Backgrounds InternalChild = dimmable = CreateFadeContainer(); dimmable.EnableUserDim.BindTo(EnableUserDim); + dimmable.IsBreakTime.BindTo(IsBreakTime); dimmable.BlurAmount.BindTo(BlurAmount); } From 38f1a8bc170d11a3a4edacc4d058f7ef791fbd32 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Tue, 10 Dec 2019 15:14:47 +0300 Subject: [PATCH 0224/1829] Bind UserDimContainer.IsBreakTime from Player --- osu.Game/Screens/Play/Player.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index d40c448452..9b372c3791 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -140,6 +140,11 @@ namespace osu.Game.Screens.Play // bind clock into components that require it DrawableRuleset.IsPaused.BindTo(GameplayClockContainer.IsPaused); + // bind break into components that require it. + Background.IsBreakTime.BindTo(breakOverlay.IsBreakTime); + DimmableStoryboard.IsBreakTime.BindTo(breakOverlay.IsBreakTime); + DimmableVideo.IsBreakTime.BindTo(breakOverlay.IsBreakTime); + // Bind ScoreProcessor to ourselves ScoreProcessor.AllJudged += onCompletion; ScoreProcessor.Failed += onFail; From 63f66aa5fa9fa2c178910e6bb9f1a68de5e0a372 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Tue, 10 Dec 2019 15:25:03 +0300 Subject: [PATCH 0225/1829] Check by UserDimContainer.DimLevel instead --- .../Visual/Background/TestSceneUserDimContainer.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs index 8f71584b4d..910c462718 100644 --- a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs +++ b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs @@ -314,7 +314,7 @@ namespace osu.Game.Tests.Visual.Background config.BindWith(OsuSetting.BlurLevel, BlurLevel); } - public bool IsBackgroundDimmed() => ((FadeAccessibleBackground)Background).CurrentColour == OsuColour.Gray(1 - (float)DimLevel.Value); + public bool IsBackgroundDimmed() => ((FadeAccessibleBackground)Background).CurrentColour == OsuColour.Gray(1f - ((FadeAccessibleBackground)Background).CurrentDim); public bool IsBackgroundUndimmed() => ((FadeAccessibleBackground)Background).CurrentColour == Color4.White; @@ -404,6 +404,8 @@ namespace osu.Game.Tests.Visual.Background public float CurrentAlpha => dimmable.CurrentAlpha; + public float CurrentDim => dimmable.DimLevel; + public Vector2 CurrentBlur => Background.BlurSigma; private TestDimmableBackground dimmable; @@ -418,6 +420,8 @@ namespace osu.Game.Tests.Visual.Background { public Color4 CurrentColour => Content.Colour; public float CurrentAlpha => Content.Alpha; + + public new float DimLevel => base.DimLevel; } } } From dbe46c6cf7df3dc77eb66bdfd88679d7d88add3c Mon Sep 17 00:00:00 2001 From: mcendu Date: Tue, 10 Dec 2019 20:40:10 +0800 Subject: [PATCH 0226/1829] conform to coding styles --- osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs | 2 +- osu.Game.Rulesets.Osu/UI/Cursor/OsuCursor.cs | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs b/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs index 4e027c4351..02152fa51e 100644 --- a/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs +++ b/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs @@ -26,7 +26,7 @@ namespace osu.Game.Rulesets.Osu.Skinning { spin = skin.GetConfig(OsuSkinConfiguration.CursorRotate)?.Value ?? true; - InternalChildren = new Drawable[] + InternalChildren = new[] { new NonPlayfieldSprite { diff --git a/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursor.cs b/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursor.cs index 07cde5e407..4f3d07f208 100644 --- a/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursor.cs +++ b/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursor.cs @@ -22,7 +22,7 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor private SkinnableDrawable cursorSprite; - private Drawable ExpandTarget => (cursorSprite.Drawable as OsuCursorSprite)?.ExpandTarget ?? cursorSprite; + private Drawable expandTarget => (cursorSprite.Drawable as OsuCursorSprite)?.ExpandTarget ?? cursorSprite; public OsuCursor() { @@ -59,10 +59,10 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor { if (!cursorExpand) return; - ExpandTarget.ScaleTo(released_scale).ScaleTo(pressed_scale, 100, Easing.OutQuad); + expandTarget.ScaleTo(released_scale).ScaleTo(pressed_scale, 100, Easing.OutQuad); } - public void Contract() => ExpandTarget.ScaleTo(released_scale, 100, Easing.OutQuad); + public void Contract() => expandTarget.ScaleTo(released_scale, 100, Easing.OutQuad); private class DefaultCursor : OsuCursorSprite { @@ -73,7 +73,7 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor Anchor = Anchor.Centre; Origin = Anchor.Centre; - InternalChildren = new Drawable[] + InternalChildren = new[] { ExpandTarget = new CircularContainer { From 6c1ae3bc8ac77bd1babbd0f0395071fd583a905a Mon Sep 17 00:00:00 2001 From: Albie Date: Tue, 10 Dec 2019 16:59:31 +0000 Subject: [PATCH 0227/1829] add tests --- .../Background/TestSceneUserDimContainer.cs | 17 +++++++++++++++++ .../Graphics/Containers/UserDimContainer.cs | 9 +++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs index f858174ff2..ecea80d6cc 100644 --- a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs +++ b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs @@ -165,6 +165,21 @@ namespace osu.Game.Tests.Visual.Background AddAssert("Screen is dimmed and blur applied", () => songSelect.IsBackgroundDimmed() && songSelect.IsUserBlurApplied()); } + /// + /// Ensure is able to disable user-defined display settings. + /// + [Test] + public void DisableUserDisplaySettingsTest() + { + performFullSetup(); + AddStep("Enable user dim", () => player.DimmableStoryboard.EnableUserDim.Value = true); + AddStep("Set user dim to max", () => player.DimmableStoryboard.) + waitForDim(); + AddStep("Turn on IgnoreUserSettings", () => player.DimmableStoryboard.IgnoreUserSettings.Value = true); + waitForDim(); + AddAssert("Check the background is undimmed", () => player.IsBackgroundUndimmed()); + } + /// /// Ensure is properly accepting user-defined visual changes for a storyboard. /// @@ -352,6 +367,8 @@ namespace osu.Game.Tests.Visual.Background public new DimmableStoryboard DimmableStoryboard => base.DimmableStoryboard; + public bool IsBackgroundUndimmed() => ((FadeAccessibleBackground)Background).Colour == Color4.White; + // Whether or not the player should be allowed to load. public bool BlockLoad; diff --git a/osu.Game/Graphics/Containers/UserDimContainer.cs b/osu.Game/Graphics/Containers/UserDimContainer.cs index 42a25a79b1..74d922704e 100644 --- a/osu.Game/Graphics/Containers/UserDimContainer.cs +++ b/osu.Game/Graphics/Containers/UserDimContainer.cs @@ -6,6 +6,7 @@ using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Game.Configuration; +using osuTK.Graphics; namespace osu.Game.Graphics.Containers { @@ -22,7 +23,7 @@ namespace osu.Game.Graphics.Containers public readonly Bindable EnableUserDim = new Bindable(true); /// - /// Whether or not user-configured settings relating to visibility of elements should be ignored + /// Whether or not user-configured settings relating to brightness of elements should be ignored /// public readonly Bindable IgnoreUserSettings = new Bindable(); @@ -36,14 +37,14 @@ namespace osu.Game.Graphics.Containers /// public bool ContentDisplayed { get; private set; } + public double DimLevel => EnableUserDim.Value && !IgnoreUserSettings.Value ? UserDimLevel.Value : 0; + protected Bindable UserDimLevel { get; private set; } protected Bindable ShowStoryboard { get; private set; } protected Bindable ShowVideo { get; private set; } - protected double DimLevel => EnableUserDim.Value ? UserDimLevel.Value : 0; - protected override Container Content => dimContent; private Container dimContent { get; } @@ -90,7 +91,7 @@ namespace osu.Game.Graphics.Containers ContentDisplayed = ShowDimContent; dimContent.FadeTo(ContentDisplayed ? 1 : 0, BACKGROUND_FADE_DURATION, Easing.OutQuint); - dimContent.FadeColour(OsuColour.Gray(1 - (float)DimLevel), BACKGROUND_FADE_DURATION, Easing.OutQuint); + dimContent.FadeColour(IgnoreUserSettings.Value ? OsuColour.Gray(1 - (float)DimLevel) : Color4.White, BACKGROUND_FADE_DURATION, Easing.OutQuint); } } } From 479acdcb5b670b0644a2755cd3b93396b3a95764 Mon Sep 17 00:00:00 2001 From: Albie Date: Tue, 10 Dec 2019 17:06:34 +0000 Subject: [PATCH 0228/1829] fix build bug --- osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs index ecea80d6cc..8c7948ebef 100644 --- a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs +++ b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs @@ -173,7 +173,6 @@ namespace osu.Game.Tests.Visual.Background { performFullSetup(); AddStep("Enable user dim", () => player.DimmableStoryboard.EnableUserDim.Value = true); - AddStep("Set user dim to max", () => player.DimmableStoryboard.) waitForDim(); AddStep("Turn on IgnoreUserSettings", () => player.DimmableStoryboard.IgnoreUserSettings.Value = true); waitForDim(); From 12fb17572c1ce4ad6cb8f1e37b6755c11c13dc8f Mon Sep 17 00:00:00 2001 From: Albie Date: Tue, 10 Dec 2019 18:16:34 +0000 Subject: [PATCH 0229/1829] cleanup test logic --- .../Background/TestSceneUserDimContainer.cs | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs index 5b7900bad4..28cc7a8532 100644 --- a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs +++ b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs @@ -148,6 +148,20 @@ namespace osu.Game.Tests.Visual.Background AddAssert("Background is visible", () => songSelect.IsBackgroundVisible()); } + /// + /// Ensure is able to disable user-defined display settings. + /// + [Test] + public void DisableUserDisplaySettingsTest() + { + performFullSetup(); + AddStep("Enable user dim", () => player.DimmableStoryboard.EnableUserDim.Value = true); + waitForDim(); + AddStep("Turn on IgnoreUserSettings", () => player.DimmableStoryboard.IgnoreUserSettings.Value = true); + waitForDim(); + AddAssert("Check the background is undimmed", () => player.IsBackgroundUndimmed()); + } + /// /// Ensure is properly accepting user-defined visual changes for a background. /// @@ -165,20 +179,6 @@ namespace osu.Game.Tests.Visual.Background AddAssert("Screen is dimmed and blur applied", () => songSelect.IsBackgroundDimmed() && songSelect.IsUserBlurApplied()); } - /// - /// Ensure is able to disable user-defined display settings. - /// - [Test] - public void DisableUserDisplaySettingsTest() - { - performFullSetup(); - AddStep("Enable user dim", () => player.DimmableStoryboard.EnableUserDim.Value = true); - waitForDim(); - AddStep("Turn on IgnoreUserSettings", () => player.DimmableStoryboard.IgnoreUserSettings.Value = true); - waitForDim(); - AddAssert("Check the background is undimmed", () => player.IsBackgroundUndimmed()); - } - /// /// Ensure is properly accepting user-defined visual changes for a storyboard. /// @@ -367,7 +367,7 @@ namespace osu.Game.Tests.Visual.Background public new DimmableStoryboard DimmableStoryboard => base.DimmableStoryboard; - public bool IsBackgroundUndimmed() => ((FadeAccessibleBackground)Background).Colour == Color4.White; + public bool IsBackgroundUndimmed() => ((FadeAccessibleBackground)Background).CurrentColour == Color4.White; // Whether or not the player should be allowed to load. public bool BlockLoad; From 53daa37eaa97e3575261c333f67b68cd6ab5ad92 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Tue, 10 Dec 2019 23:06:13 +0300 Subject: [PATCH 0230/1829] Fix failing tests --- osu.Game/Screens/Play/Player.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index 9b372c3791..8684798632 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -140,11 +140,6 @@ namespace osu.Game.Screens.Play // bind clock into components that require it DrawableRuleset.IsPaused.BindTo(GameplayClockContainer.IsPaused); - // bind break into components that require it. - Background.IsBreakTime.BindTo(breakOverlay.IsBreakTime); - DimmableStoryboard.IsBreakTime.BindTo(breakOverlay.IsBreakTime); - DimmableVideo.IsBreakTime.BindTo(breakOverlay.IsBreakTime); - // Bind ScoreProcessor to ourselves ScoreProcessor.AllJudged += onCompletion; ScoreProcessor.Failed += onFail; @@ -506,6 +501,11 @@ namespace osu.Game.Screens.Play Background.EnableUserDim.Value = true; Background.BlurAmount.Value = 0; + // bind component bindables. + Background.IsBreakTime.BindTo(breakOverlay.IsBreakTime); + DimmableStoryboard.IsBreakTime.BindTo(breakOverlay.IsBreakTime); + DimmableVideo.IsBreakTime.BindTo(breakOverlay.IsBreakTime); + Background.StoryboardReplacesBackground.BindTo(storyboardReplacesBackground); DimmableStoryboard.StoryboardReplacesBackground.BindTo(storyboardReplacesBackground); From a37af311d010a1122d64ff5b8ca1c025a2ec3931 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 11 Dec 2019 13:19:02 +0900 Subject: [PATCH 0231/1829] Simplify settings update logic --- osu.Game/Overlays/Mods/ModSelectOverlay.cs | 47 +++++++++++----------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/osu.Game/Overlays/Mods/ModSelectOverlay.cs b/osu.Game/Overlays/Mods/ModSelectOverlay.cs index e860463b23..ec5f99dc31 100644 --- a/osu.Game/Overlays/Mods/ModSelectOverlay.cs +++ b/osu.Game/Overlays/Mods/ModSelectOverlay.cs @@ -331,32 +331,10 @@ namespace osu.Game.Overlays.Mods Ruleset.BindTo(ruleset); if (mods != null) SelectedMods.BindTo(mods); - SelectedMods.ValueChanged += updateModSettings; - Ruleset.ValueChanged += _ => ModSettingsContent.Clear(); - sampleOn = audio.Samples.Get(@"UI/check-on"); sampleOff = audio.Samples.Get(@"UI/check-off"); } - private void updateModSettings(ValueChangedEvent> selectedMods) - { - foreach (var added in selectedMods.NewValue.Except(selectedMods.OldValue)) - { - var controls = added.CreateSettingsControls().ToList(); - if (controls.Count > 0) - ModSettingsContent.Add(new ModControlSection(added) { Children = controls }); - } - - foreach (var removed in selectedMods.OldValue.Except(selectedMods.NewValue)) - ModSettingsContent.RemoveAll(section => section.Mod == removed); - - bool hasSettings = ModSettingsContent.Children.Count > 0; - CustomiseButton.Enabled.Value = hasSettings; - - if (!hasSettings) - ModSettingsContainer.Hide(); - } - public void DeselectAll() { foreach (var section in ModSectionsContainer.Children) @@ -450,12 +428,14 @@ namespace osu.Game.Overlays.Mods refreshSelectedMods(); } - private void selectedModsChanged(ValueChangedEvent> e) + private void selectedModsChanged(ValueChangedEvent> mods) { foreach (var section in ModSectionsContainer.Children) - section.SelectTypes(e.NewValue.Select(m => m.GetType()).ToList()); + section.SelectTypes(mods.NewValue.Select(m => m.GetType()).ToList()); updateMods(); + + updateModSettings(mods); } private void updateMods() @@ -480,6 +460,25 @@ namespace osu.Game.Overlays.Mods UnrankedLabel.FadeTo(ranked ? 0 : 1, 200); } + private void updateModSettings(ValueChangedEvent> selectedMods) + { + foreach (var added in selectedMods.NewValue.Except(selectedMods.OldValue)) + { + var controls = added.CreateSettingsControls().ToList(); + if (controls.Count > 0) + ModSettingsContent.Add(new ModControlSection(added) { Children = controls }); + } + + foreach (var removed in selectedMods.OldValue.Except(selectedMods.NewValue)) + ModSettingsContent.RemoveAll(section => section.Mod == removed); + + bool hasSettings = ModSettingsContent.Children.Count > 0; + CustomiseButton.Enabled.Value = hasSettings; + + if (!hasSettings) + ModSettingsContainer.Hide(); + } + private void modButtonPressed(Mod selectedMod) { if (selectedMod != null) From 5624b9fd3f981451db3c52a7da0c94bc56971a20 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 11 Dec 2019 13:19:13 +0900 Subject: [PATCH 0232/1829] Fix US english --- osu.Game/Overlays/Mods/ModSelectOverlay.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Mods/ModSelectOverlay.cs b/osu.Game/Overlays/Mods/ModSelectOverlay.cs index ec5f99dc31..e8ea43e3f2 100644 --- a/osu.Game/Overlays/Mods/ModSelectOverlay.cs +++ b/osu.Game/Overlays/Mods/ModSelectOverlay.cs @@ -235,7 +235,7 @@ namespace osu.Game.Overlays.Mods CustomiseButton = new TriangleButton { Width = 180, - Text = "Customization", + Text = "Customisation", Action = () => ModSettingsContainer.Alpha = ModSettingsContainer.Alpha == 1 ? 0 : 1, Enabled = { Value = false }, Margin = new MarginPadding From 77b9989e115fa5681e17236415cf6c01f939b863 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 11 Dec 2019 14:10:35 +0900 Subject: [PATCH 0233/1829] Fix some weird private field names --- .../MathUtils/FastRandom.cs | 20 +-- .../Components/ScrollingTeamContainer.cs | 121 +++++++++--------- osu.Game/Online/Multiplayer/PlaylistItem.cs | 22 ++-- osu.Game/Screens/Play/GameplayMenuOverlay.cs | 34 +++-- 4 files changed, 94 insertions(+), 103 deletions(-) diff --git a/osu.Game.Rulesets.Catch/MathUtils/FastRandom.cs b/osu.Game.Rulesets.Catch/MathUtils/FastRandom.cs index c721ff862a..46e427e1b7 100644 --- a/osu.Game.Rulesets.Catch/MathUtils/FastRandom.cs +++ b/osu.Game.Rulesets.Catch/MathUtils/FastRandom.cs @@ -12,14 +12,14 @@ namespace osu.Game.Rulesets.Catch.MathUtils { private const double int_to_real = 1.0 / (int.MaxValue + 1.0); private const uint int_mask = 0x7FFFFFFF; - private const uint y = 842502087; - private const uint z = 3579807591; - private const uint w = 273326509; - private uint _x, _y = y, _z = z, _w = w; + private const uint y_initial = 842502087; + private const uint z_initial = 3579807591; + private const uint w_initial = 273326509; + private uint x, y = y_initial, z = z_initial, w = w_initial; public FastRandom(int seed) { - _x = (uint)seed; + x = (uint)seed; } public FastRandom() @@ -33,11 +33,11 @@ namespace osu.Game.Rulesets.Catch.MathUtils /// The random value. public uint NextUInt() { - uint t = _x ^ (_x << 11); - _x = _y; - _y = _z; - _z = _w; - return _w = _w ^ (_w >> 19) ^ t ^ (t >> 8); + uint t = x ^ (x << 11); + x = y; + y = z; + z = w; + return w = w ^ (w >> 19) ^ t ^ (t >> 8); } /// diff --git a/osu.Game.Tournament/Screens/Drawings/Components/ScrollingTeamContainer.cs b/osu.Game.Tournament/Screens/Drawings/Components/ScrollingTeamContainer.cs index a345f93896..3ff4718b75 100644 --- a/osu.Game.Tournament/Screens/Drawings/Components/ScrollingTeamContainer.cs +++ b/osu.Game.Tournament/Screens/Drawings/Components/ScrollingTeamContainer.cs @@ -83,88 +83,81 @@ namespace osu.Game.Tournament.Screens.Drawings.Components }; } - private ScrollState _scrollState; + private ScrollState scrollState; - private ScrollState scrollState + private void setScrollState(ScrollState newstate) { - get => _scrollState; + if (scrollState == newstate) + return; - set + delayedStateChangeDelegate?.Cancel(); + + switch (scrollState = newstate) { - if (_scrollState == value) - return; + case ScrollState.Scrolling: + resetSelected(); - _scrollState = value; + OnScrollStarted?.Invoke(); - delayedStateChangeDelegate?.Cancel(); + speedTo(1000f, 200); + tracker.FadeOut(100); + break; - switch (value) - { - case ScrollState.Scrolling: - resetSelected(); + case ScrollState.Stopping: + speedTo(0f, 2000); + tracker.FadeIn(200); - OnScrollStarted?.Invoke(); + delayedStateChangeDelegate = Scheduler.AddDelayed(() => setScrollState(ScrollState.Stopped), 2300); + break; - speedTo(1000f, 200); - tracker.FadeOut(100); + case ScrollState.Stopped: + // Find closest to center + if (!Children.Any()) break; - case ScrollState.Stopping: - speedTo(0f, 2000); - tracker.FadeIn(200); + ScrollingTeam closest = null; - delayedStateChangeDelegate = Scheduler.AddDelayed(() => scrollState = ScrollState.Stopped, 2300); - break; + foreach (var c in Children) + { + if (!(c is ScrollingTeam stc)) + continue; - case ScrollState.Stopped: - // Find closest to center - if (!Children.Any()) - break; - - ScrollingTeam closest = null; - - foreach (var c in Children) + if (closest == null) { - if (!(c is ScrollingTeam stc)) - continue; - - if (closest == null) - { - closest = stc; - continue; - } - - float o = Math.Abs(c.Position.X + c.DrawWidth / 2f - DrawWidth / 2f); - float lastOffset = Math.Abs(closest.Position.X + closest.DrawWidth / 2f - DrawWidth / 2f); - - if (o < lastOffset) - closest = stc; + closest = stc; + continue; } - Trace.Assert(closest != null, "closest != null"); + float o = Math.Abs(c.Position.X + c.DrawWidth / 2f - DrawWidth / 2f); + float lastOffset = Math.Abs(closest.Position.X + closest.DrawWidth / 2f - DrawWidth / 2f); - // ReSharper disable once PossibleNullReferenceException - offset += DrawWidth / 2f - (closest.Position.X + closest.DrawWidth / 2f); + if (o < lastOffset) + closest = stc; + } - ScrollingTeam st = closest; + Trace.Assert(closest != null, "closest != null"); - availableTeams.RemoveAll(at => at == st.Team); + // ReSharper disable once PossibleNullReferenceException + offset += DrawWidth / 2f - (closest.Position.X + closest.DrawWidth / 2f); - st.Selected = true; - OnSelected?.Invoke(st.Team); + ScrollingTeam st = closest; - delayedStateChangeDelegate = Scheduler.AddDelayed(() => scrollState = ScrollState.Idle, 10000); - break; + availableTeams.RemoveAll(at => at == st.Team); - case ScrollState.Idle: - resetSelected(); + st.Selected = true; + OnSelected?.Invoke(st.Team); - OnScrollStarted?.Invoke(); + delayedStateChangeDelegate = Scheduler.AddDelayed(() => setScrollState(ScrollState.Idle), 10000); + break; - speedTo(40f, 200); - tracker.FadeOut(100); - break; - } + case ScrollState.Idle: + resetSelected(); + + OnScrollStarted?.Invoke(); + + speedTo(40f, 200); + tracker.FadeOut(100); + break; } } @@ -176,7 +169,7 @@ namespace osu.Game.Tournament.Screens.Drawings.Components availableTeams.Add(team); RemoveAll(c => c is ScrollingTeam); - scrollState = ScrollState.Idle; + setScrollState(ScrollState.Idle); } public void AddTeams(IEnumerable teams) @@ -192,7 +185,7 @@ namespace osu.Game.Tournament.Screens.Drawings.Components { availableTeams.Clear(); RemoveAll(c => c is ScrollingTeam); - scrollState = ScrollState.Idle; + setScrollState(ScrollState.Idle); } public void RemoveTeam(TournamentTeam team) @@ -217,7 +210,7 @@ namespace osu.Game.Tournament.Screens.Drawings.Components if (availableTeams.Count == 0) return; - scrollState = ScrollState.Scrolling; + setScrollState(ScrollState.Scrolling); } public void StopScrolling() @@ -232,13 +225,13 @@ namespace osu.Game.Tournament.Screens.Drawings.Components return; } - scrollState = ScrollState.Stopping; + setScrollState(ScrollState.Stopping); } protected override void LoadComplete() { base.LoadComplete(); - scrollState = ScrollState.Idle; + setScrollState(ScrollState.Idle); } protected override void UpdateAfterChildren() @@ -305,7 +298,7 @@ namespace osu.Game.Tournament.Screens.Drawings.Components private void speedTo(float value, double duration = 0, Easing easing = Easing.None) => this.TransformTo(nameof(speed), value, duration, easing); - private enum ScrollState + protected enum ScrollState { None, Idle, diff --git a/osu.Game/Online/Multiplayer/PlaylistItem.cs b/osu.Game/Online/Multiplayer/PlaylistItem.cs index e47d497d94..d13e8b31e6 100644 --- a/osu.Game/Online/Multiplayer/PlaylistItem.cs +++ b/osu.Game/Online/Multiplayer/PlaylistItem.cs @@ -45,23 +45,25 @@ namespace osu.Game.Online.Multiplayer [JsonProperty("beatmap")] private APIBeatmap apiBeatmap { get; set; } + private APIMod[] allowedModsBacking; + [JsonProperty("allowed_mods")] private APIMod[] allowedMods { get => AllowedMods.Select(m => new APIMod { Acronym = m.Acronym }).ToArray(); - set => _allowedMods = value; + set => allowedModsBacking = value; } + private APIMod[] requiredModsBacking; + [JsonProperty("required_mods")] private APIMod[] requiredMods { get => RequiredMods.Select(m => new APIMod { Acronym = m.Acronym }).ToArray(); - set => _requiredMods = value; + set => requiredModsBacking = value; } private BeatmapInfo beatmap; - private APIMod[] _allowedMods; - private APIMod[] _requiredMods; public void MapObjects(BeatmapManager beatmaps, RulesetStore rulesets) { @@ -70,20 +72,20 @@ namespace osu.Game.Online.Multiplayer Beatmap = apiBeatmap == null ? beatmaps.QueryBeatmap(b => b.OnlineBeatmapID == BeatmapID) : apiBeatmap.ToBeatmap(rulesets); Ruleset = rulesets.GetRuleset(RulesetID); - if (_allowedMods != null) + if (allowedModsBacking != null) { AllowedMods.Clear(); - AllowedMods.AddRange(Ruleset.CreateInstance().GetAllMods().Where(mod => _allowedMods.Any(m => m.Acronym == mod.Acronym))); + AllowedMods.AddRange(Ruleset.CreateInstance().GetAllMods().Where(mod => allowedModsBacking.Any(m => m.Acronym == mod.Acronym))); - _allowedMods = null; + allowedModsBacking = null; } - if (_requiredMods != null) + if (requiredModsBacking != null) { RequiredMods.Clear(); - RequiredMods.AddRange(Ruleset.CreateInstance().GetAllMods().Where(mod => _requiredMods.Any(m => m.Acronym == mod.Acronym))); + RequiredMods.AddRange(Ruleset.CreateInstance().GetAllMods().Where(mod => requiredModsBacking.Any(m => m.Acronym == mod.Acronym))); - _requiredMods = null; + requiredModsBacking = null; } } diff --git a/osu.Game/Screens/Play/GameplayMenuOverlay.cs b/osu.Game/Screens/Play/GameplayMenuOverlay.cs index f54d638584..2fa5098890 100644 --- a/osu.Game/Screens/Play/GameplayMenuOverlay.cs +++ b/osu.Game/Screens/Play/GameplayMenuOverlay.cs @@ -188,26 +188,22 @@ namespace osu.Game.Screens.Play InternalButtons.Add(button); } - private int _selectionIndex = -1; + private int selectionIndex = -1; - private int selectionIndex + private void setSelected(int value) { - get => _selectionIndex; - set - { - if (_selectionIndex == value) - return; + if (selectionIndex == value) + return; - // Deselect the previously-selected button - if (_selectionIndex != -1) - InternalButtons[_selectionIndex].Selected.Value = false; + // Deselect the previously-selected button + if (selectionIndex != -1) + InternalButtons[selectionIndex].Selected.Value = false; - _selectionIndex = value; + selectionIndex = value; - // Select the newly-selected button - if (_selectionIndex != -1) - InternalButtons[_selectionIndex].Selected.Value = true; - } + // Select the newly-selected button + if (selectionIndex != -1) + InternalButtons[selectionIndex].Selected.Value = true; } protected override bool OnKeyDown(KeyDownEvent e) @@ -218,16 +214,16 @@ namespace osu.Game.Screens.Play { case Key.Up: if (selectionIndex == -1 || selectionIndex == 0) - selectionIndex = InternalButtons.Count - 1; + setSelected(InternalButtons.Count - 1); else - selectionIndex--; + setSelected(selectionIndex--); return true; case Key.Down: if (selectionIndex == -1 || selectionIndex == InternalButtons.Count - 1) - selectionIndex = 0; + setSelected(0); else - selectionIndex++; + setSelected(selectionIndex++); return true; } } From 9ebad16436cf7a079586c62216964f9f5648f20f Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 11 Dec 2019 14:34:17 +0900 Subject: [PATCH 0234/1829] Fix logic regression --- osu.Game/Screens/Play/GameplayMenuOverlay.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game/Screens/Play/GameplayMenuOverlay.cs b/osu.Game/Screens/Play/GameplayMenuOverlay.cs index 2fa5098890..adfbe977a4 100644 --- a/osu.Game/Screens/Play/GameplayMenuOverlay.cs +++ b/osu.Game/Screens/Play/GameplayMenuOverlay.cs @@ -216,14 +216,14 @@ namespace osu.Game.Screens.Play if (selectionIndex == -1 || selectionIndex == 0) setSelected(InternalButtons.Count - 1); else - setSelected(selectionIndex--); + setSelected(selectionIndex - 1); return true; case Key.Down: if (selectionIndex == -1 || selectionIndex == InternalButtons.Count - 1) setSelected(0); else - setSelected(selectionIndex++); + setSelected(selectionIndex + 1); return true; } } @@ -262,9 +262,9 @@ namespace osu.Game.Screens.Play private void buttonSelectionChanged(DialogButton button, bool isSelected) { if (!isSelected) - selectionIndex = -1; + setSelected(-1); else - selectionIndex = InternalButtons.IndexOf(button); + setSelected(InternalButtons.IndexOf(button)); } private void updateRetryCount() From 6c8f325063affe692a31ba0d3c1cd1688b3456c0 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 11 Dec 2019 15:24:06 +0900 Subject: [PATCH 0235/1829] Add failing test --- .../Visual/Gameplay/TestScenePause.cs | 2 - .../Gameplay/TestScenePauseWhenInactive.cs | 49 +++++++++++++++++++ osu.Game/Tests/Visual/TestPlayer.cs | 7 ++- 3 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 osu.Game.Tests/Visual/Gameplay/TestScenePauseWhenInactive.cs diff --git a/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs b/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs index 803cab9325..e04315894e 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs @@ -285,8 +285,6 @@ namespace osu.Game.Tests.Visual.Gameplay protected class PausePlayer : TestPlayer { - public new GameplayClockContainer GameplayClockContainer => base.GameplayClockContainer; - public new ScoreProcessor ScoreProcessor => base.ScoreProcessor; public new HUDOverlay HUDOverlay => base.HUDOverlay; diff --git a/osu.Game.Tests/Visual/Gameplay/TestScenePauseWhenInactive.cs b/osu.Game.Tests/Visual/Gameplay/TestScenePauseWhenInactive.cs new file mode 100644 index 0000000000..5f29b46fe6 --- /dev/null +++ b/osu.Game.Tests/Visual/Gameplay/TestScenePauseWhenInactive.cs @@ -0,0 +1,49 @@ +// 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.Allocation; +using osu.Framework.Bindables; +using osu.Framework.Platform; +using osu.Framework.Testing; +using osu.Game.Beatmaps; +using osu.Game.Rulesets; +using osu.Game.Rulesets.Osu; +using osu.Game.Screens.Play; + +namespace osu.Game.Tests.Visual.Gameplay +{ + [HeadlessTest] // we alter unsafe properties on the game host to test inactive window state. + public class TestScenePauseWhenInactive : PlayerTestScene + { + protected new TestPlayer Player => (TestPlayer)base.Player; + + protected override IBeatmap CreateBeatmap(RulesetInfo ruleset) + { + var beatmap = (Beatmap)base.CreateBeatmap(ruleset); + + beatmap.HitObjects.RemoveAll(h => h.StartTime < 30000); + + return beatmap; + } + + [Resolved] + private GameHost host { get; set; } + + public TestScenePauseWhenInactive() + : base(new OsuRuleset()) + { + } + + [Test] + public void TestDoesntPauseDuringIntro() + { + AddStep("set inactive", () => ((Bindable)host.IsActive).Value = false); + AddStep("resume player", () => Player.GameplayClockContainer.Start()); + AddUntilStep("wait for pause", () => Player.GameplayClockContainer.IsPaused.Value); + AddAssert("time of pause is after gameplay start time", () => Player.GameplayClockContainer.GameplayClock.CurrentTime >= Player.DrawableRuleset.GameplayStartTime); + } + + protected override Player CreatePlayer(Ruleset ruleset) => new TestPlayer(true, true, true); + } +} diff --git a/osu.Game/Tests/Visual/TestPlayer.cs b/osu.Game/Tests/Visual/TestPlayer.cs index 31f6edadec..8e3821f1a0 100644 --- a/osu.Game/Tests/Visual/TestPlayer.cs +++ b/osu.Game/Tests/Visual/TestPlayer.cs @@ -8,13 +8,16 @@ namespace osu.Game.Tests.Visual { public class TestPlayer : Player { - protected override bool PauseOnFocusLost => false; + protected override bool PauseOnFocusLost { get; } public new DrawableRuleset DrawableRuleset => base.DrawableRuleset; - public TestPlayer(bool allowPause = true, bool showResults = true) + public new GameplayClockContainer GameplayClockContainer => base.GameplayClockContainer; + + public TestPlayer(bool allowPause = true, bool showResults = true, bool pauseOnFocusLost = false) : base(allowPause, showResults) { + PauseOnFocusLost = pauseOnFocusLost; } } } From 75f92506451b47a1815530d00ffed7a74c23f41b Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 11 Dec 2019 15:45:50 +0900 Subject: [PATCH 0236/1829] Don't automatically pause when window is inactive if in break time --- osu.Game/Screens/Play/Player.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index d40c448452..9feee82989 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -135,7 +135,7 @@ namespace osu.Game.Screens.Play addGameplayComponents(GameplayClockContainer, working); addOverlayComponents(GameplayClockContainer, working); - DrawableRuleset.HasReplayLoaded.BindValueChanged(e => HUDOverlay.HoldToQuit.PauseOnFocusLost = !e.NewValue && PauseOnFocusLost, true); + DrawableRuleset.HasReplayLoaded.BindValueChanged(_ => updatePauseOnFocusLostState(), true); // bind clock into components that require it DrawableRuleset.IsPaused.BindTo(GameplayClockContainer.IsPaused); @@ -146,6 +146,7 @@ namespace osu.Game.Screens.Play foreach (var mod in Mods.Value.OfType()) mod.ApplyToScoreProcessor(ScoreProcessor); + breakOverlay.IsBreakTime.ValueChanged += _ => updatePauseOnFocusLostState(); } private void addUnderlayComponents(Container target) @@ -241,6 +242,11 @@ namespace osu.Game.Screens.Play }); } + private void updatePauseOnFocusLostState() => + HUDOverlay.HoldToQuit.PauseOnFocusLost = PauseOnFocusLost + && !DrawableRuleset.HasReplayLoaded.Value + && !breakOverlay.IsBreakTime.Value; + private WorkingBeatmap loadBeatmap() { WorkingBeatmap working = Beatmap.Value; From 274958669c826236e48f681b8edb3c00ea8bf2b7 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 11 Dec 2019 15:47:34 +0900 Subject: [PATCH 0237/1829] Add early assert as sanity check --- osu.Game.Tests/Visual/Gameplay/TestScenePauseWhenInactive.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game.Tests/Visual/Gameplay/TestScenePauseWhenInactive.cs b/osu.Game.Tests/Visual/Gameplay/TestScenePauseWhenInactive.cs index 5f29b46fe6..3513b6c25a 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestScenePauseWhenInactive.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestScenePauseWhenInactive.cs @@ -39,7 +39,9 @@ namespace osu.Game.Tests.Visual.Gameplay public void TestDoesntPauseDuringIntro() { AddStep("set inactive", () => ((Bindable)host.IsActive).Value = false); + AddStep("resume player", () => Player.GameplayClockContainer.Start()); + AddAssert("ensure not paused", () => !Player.GameplayClockContainer.IsPaused.Value); AddUntilStep("wait for pause", () => Player.GameplayClockContainer.IsPaused.Value); AddAssert("time of pause is after gameplay start time", () => Player.GameplayClockContainer.GameplayClock.CurrentTime >= Player.DrawableRuleset.GameplayStartTime); } From 83b2e0525e9055dae18b7eb7396a5804dbd21d39 Mon Sep 17 00:00:00 2001 From: Albie Date: Wed, 11 Dec 2019 07:02:51 +0000 Subject: [PATCH 0238/1829] further fixes, not perfect yet --- .../Visual/Background/TestSceneUserDimContainer.cs | 6 ++---- osu.Game/Graphics/Containers/UserDimContainer.cs | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs index 28cc7a8532..f867b98fda 100644 --- a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs +++ b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs @@ -155,9 +155,7 @@ namespace osu.Game.Tests.Visual.Background public void DisableUserDisplaySettingsTest() { performFullSetup(); - AddStep("Enable user dim", () => player.DimmableStoryboard.EnableUserDim.Value = true); - waitForDim(); - AddStep("Turn on IgnoreUserSettings", () => player.DimmableStoryboard.IgnoreUserSettings.Value = true); + AddStep("Start ignoring user settings", () => player.DimmableStoryboard.IgnoreUserSettings.Value = true); waitForDim(); AddAssert("Check the background is undimmed", () => player.IsBackgroundUndimmed()); } @@ -367,7 +365,7 @@ namespace osu.Game.Tests.Visual.Background public new DimmableStoryboard DimmableStoryboard => base.DimmableStoryboard; - public bool IsBackgroundUndimmed() => ((FadeAccessibleBackground)Background).CurrentColour == Color4.White; + public bool IsBackgroundUndimmed() => ((FadeAccessibleBackground)Background).CurrentColour == OsuColour.Gray(1); // Whether or not the player should be allowed to load. public bool BlockLoad; diff --git a/osu.Game/Graphics/Containers/UserDimContainer.cs b/osu.Game/Graphics/Containers/UserDimContainer.cs index 74d922704e..bddbbca0ea 100644 --- a/osu.Game/Graphics/Containers/UserDimContainer.cs +++ b/osu.Game/Graphics/Containers/UserDimContainer.cs @@ -91,7 +91,7 @@ namespace osu.Game.Graphics.Containers ContentDisplayed = ShowDimContent; dimContent.FadeTo(ContentDisplayed ? 1 : 0, BACKGROUND_FADE_DURATION, Easing.OutQuint); - dimContent.FadeColour(IgnoreUserSettings.Value ? OsuColour.Gray(1 - (float)DimLevel) : Color4.White, BACKGROUND_FADE_DURATION, Easing.OutQuint); + dimContent.FadeColour(IgnoreUserSettings.Value ? Color4.White : OsuColour.Gray(1 - (float)DimLevel), BACKGROUND_FADE_DURATION, Easing.OutQuint); } } } From d8cebd20edac75973ad00c65b35421fcab97a9e7 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 11 Dec 2019 16:06:20 +0900 Subject: [PATCH 0239/1829] Add xmldoc --- osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorSprite.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorSprite.cs b/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorSprite.cs index 909c764b9e..573c408a78 100644 --- a/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorSprite.cs +++ b/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorSprite.cs @@ -8,6 +8,10 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor { public abstract class OsuCursorSprite : CompositeDrawable { + /// + /// The an optional piece of the cursor to expand when in a clicked state. + /// If null, the whole cursor will be affected by expansion. + /// public Drawable ExpandTarget { get; protected set; } } } From 6b3c7c842198b1fe6e24314c6bad453cfd73d37b Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Tue, 19 Nov 2019 20:34:35 +0800 Subject: [PATCH 0240/1829] Remove usages of FileSafety class. --- osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs | 8 ++++---- osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs | 4 ++-- osu.Game/Beatmaps/WorkingBeatmap.cs | 7 +++++-- osu.Game/Database/ArchiveModelManager.cs | 3 +-- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs index 838b1c2f07..bffe999896 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs @@ -5,7 +5,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; -using osu.Framework.IO.File; +using osu.Framework.Extensions; using osu.Game.Beatmaps.Timing; using osu.Game.Rulesets.Objects.Legacy; using osu.Game.Beatmaps.ControlPoints; @@ -112,7 +112,7 @@ namespace osu.Game.Beatmaps.Formats switch (pair.Key) { case @"AudioFilename": - metadata.AudioFile = FileSafety.PathStandardise(pair.Value); + metadata.AudioFile = pair.Value.PathStandardise(); break; case @"AudioLeadIn": @@ -300,12 +300,12 @@ namespace osu.Game.Beatmaps.Formats { case EventType.Background: string bgFilename = split[2].Trim('"'); - beatmap.BeatmapInfo.Metadata.BackgroundFile = FileSafety.PathStandardise(bgFilename); + beatmap.BeatmapInfo.Metadata.BackgroundFile = bgFilename.PathStandardise(); break; case EventType.Video: string videoFilename = split[2].Trim('"'); - beatmap.BeatmapInfo.Metadata.VideoFile = FileSafety.PathStandardise(videoFilename); + beatmap.BeatmapInfo.Metadata.VideoFile = videoFilename.PathStandardise(); break; case EventType.Break: diff --git a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs index f94ab3f27b..d79c0f7fa8 100644 --- a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs @@ -8,8 +8,8 @@ using System.IO; using System.Linq; using osuTK; using osuTK.Graphics; +using osu.Framework.Extensions; using osu.Framework.Graphics; -using osu.Framework.IO.File; using osu.Game.IO; using osu.Game.Storyboards; @@ -335,6 +335,6 @@ namespace osu.Game.Beatmaps.Formats } } - private string cleanFilename(string path) => FileSafety.PathStandardise(path.Trim('"')); + private string cleanFilename(string path) => path.Trim('"').PathStandardise(); } } diff --git a/osu.Game/Beatmaps/WorkingBeatmap.cs b/osu.Game/Beatmaps/WorkingBeatmap.cs index 44d6d33cef..f23669579a 100644 --- a/osu.Game/Beatmaps/WorkingBeatmap.cs +++ b/osu.Game/Beatmaps/WorkingBeatmap.cs @@ -7,7 +7,6 @@ using osu.Game.Rulesets.Mods; using System; using System.Collections.Generic; using osu.Game.Storyboards; -using osu.Framework.IO.File; using System.IO; using System.Linq; using System.Threading; @@ -83,7 +82,11 @@ namespace osu.Game.Beatmaps /// The absolute path of the output file. public string Save() { - var path = FileSafety.GetTempPath(Guid.NewGuid().ToString().Replace("-", string.Empty) + ".json"); + // copied from osu.Framework.IO.File.FileSafety.GetTempPath + string directory = Path.Combine(Path.GetTempPath(), @"osu!"); + Directory.CreateDirectory(directory); + + var path = Path.Combine(directory, Guid.NewGuid().ToString().Replace("-", string.Empty) + ".json"); using (var sw = new StreamWriter(path)) sw.WriteLine(Beatmap.Serialize()); return path; diff --git a/osu.Game/Database/ArchiveModelManager.cs b/osu.Game/Database/ArchiveModelManager.cs index 7cce2fb92f..5cd2b947fe 100644 --- a/osu.Game/Database/ArchiveModelManager.cs +++ b/osu.Game/Database/ArchiveModelManager.cs @@ -13,7 +13,6 @@ using Microsoft.EntityFrameworkCore; using osu.Framework; using osu.Framework.Extensions; using osu.Framework.Extensions.IEnumerableExtensions; -using osu.Framework.IO.File; using osu.Framework.Logging; using osu.Framework.Platform; using osu.Framework.Threading; @@ -493,7 +492,7 @@ namespace osu.Game.Database { fileInfos.Add(new TFileModel { - Filename = FileSafety.PathStandardise(file.Substring(prefix.Length)), + Filename = file.Substring(prefix.Length).PathStandardise(), FileInfo = files.Add(s) }); } From b86a3dbfabbc1db04314b6e6282cf88343e50eeb Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Wed, 11 Dec 2019 16:06:56 +0800 Subject: [PATCH 0241/1829] PathStandardise -> ToStandardisedPath --- osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs | 6 +++--- osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs | 2 +- osu.Game/Database/ArchiveModelManager.cs | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs index bffe999896..f8275ec4f6 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs @@ -112,7 +112,7 @@ namespace osu.Game.Beatmaps.Formats switch (pair.Key) { case @"AudioFilename": - metadata.AudioFile = pair.Value.PathStandardise(); + metadata.AudioFile = pair.Value.ToStandardisedPath(); break; case @"AudioLeadIn": @@ -300,12 +300,12 @@ namespace osu.Game.Beatmaps.Formats { case EventType.Background: string bgFilename = split[2].Trim('"'); - beatmap.BeatmapInfo.Metadata.BackgroundFile = bgFilename.PathStandardise(); + beatmap.BeatmapInfo.Metadata.BackgroundFile = bgFilename.ToStandardisedPath(); break; case EventType.Video: string videoFilename = split[2].Trim('"'); - beatmap.BeatmapInfo.Metadata.VideoFile = videoFilename.PathStandardise(); + beatmap.BeatmapInfo.Metadata.VideoFile = videoFilename.ToStandardisedPath(); break; case EventType.Break: diff --git a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs index d79c0f7fa8..ccd46ab559 100644 --- a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs @@ -335,6 +335,6 @@ namespace osu.Game.Beatmaps.Formats } } - private string cleanFilename(string path) => path.Trim('"').PathStandardise(); + private string cleanFilename(string path) => path.Trim('"').ToStandardisedPath(); } } diff --git a/osu.Game/Database/ArchiveModelManager.cs b/osu.Game/Database/ArchiveModelManager.cs index 5cd2b947fe..fd455d7cd5 100644 --- a/osu.Game/Database/ArchiveModelManager.cs +++ b/osu.Game/Database/ArchiveModelManager.cs @@ -492,7 +492,7 @@ namespace osu.Game.Database { fileInfos.Add(new TFileModel { - Filename = file.Substring(prefix.Length).PathStandardise(), + Filename = file.Substring(prefix.Length).ToStandardisedPath(), FileInfo = files.Add(s) }); } From cffeceb2290c4ce9b6ce37dacdd7d766e00d216e Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Wed, 11 Dec 2019 16:24:22 +0800 Subject: [PATCH 0242/1829] Remove unnecessary comment. --- osu.Game/Beatmaps/WorkingBeatmap.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Beatmaps/WorkingBeatmap.cs b/osu.Game/Beatmaps/WorkingBeatmap.cs index f23669579a..4452d26fcd 100644 --- a/osu.Game/Beatmaps/WorkingBeatmap.cs +++ b/osu.Game/Beatmaps/WorkingBeatmap.cs @@ -82,7 +82,6 @@ namespace osu.Game.Beatmaps /// The absolute path of the output file. public string Save() { - // copied from osu.Framework.IO.File.FileSafety.GetTempPath string directory = Path.Combine(Path.GetTempPath(), @"osu!"); Directory.CreateDirectory(directory); From 48f1dad4aa4546402ed6c0bd860ae54598c7365d Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 11 Dec 2019 17:25:06 +0900 Subject: [PATCH 0243/1829] Remove abstract ScoreProcessor class --- .../Scoring/CatchScoreProcessor.cs | 10 +- .../UI/DrawableCatchRuleset.cs | 2 +- .../Scoring/ManiaScoreProcessor.cs | 12 +- .../UI/DrawableManiaRuleset.cs | 2 +- .../Scoring/OsuScoreProcessor.cs | 10 +- .../UI/DrawableOsuRuleset.cs | 2 +- .../Scoring/TaikoScoreProcessor.cs | 12 +- .../UI/DrawableTaikoRuleset.cs | 2 +- osu.Game/Rulesets/Scoring/ScoreProcessor.cs | 276 ++++++++---------- osu.Game/Rulesets/UI/DrawableRuleset.cs | 26 +- osu.Game/Screens/Play/Player.cs | 3 + 11 files changed, 165 insertions(+), 192 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Scoring/CatchScoreProcessor.cs b/osu.Game.Rulesets.Catch/Scoring/CatchScoreProcessor.cs index 18785d65ea..f67ca1213e 100644 --- a/osu.Game.Rulesets.Catch/Scoring/CatchScoreProcessor.cs +++ b/osu.Game.Rulesets.Catch/Scoring/CatchScoreProcessor.cs @@ -2,23 +2,21 @@ // See the LICENCE file in the repository root for full licence text. using osu.Game.Beatmaps; -using osu.Game.Rulesets.Catch.Objects; using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Scoring; -using osu.Game.Rulesets.UI; namespace osu.Game.Rulesets.Catch.Scoring { - public class CatchScoreProcessor : ScoreProcessor + public class CatchScoreProcessor : ScoreProcessor { - public CatchScoreProcessor(DrawableRuleset drawableRuleset) - : base(drawableRuleset) + public CatchScoreProcessor(IBeatmap beatmap) + : base(beatmap) { } private float hpDrainRate; - protected override void ApplyBeatmap(Beatmap beatmap) + protected override void ApplyBeatmap(IBeatmap beatmap) { base.ApplyBeatmap(beatmap); diff --git a/osu.Game.Rulesets.Catch/UI/DrawableCatchRuleset.cs b/osu.Game.Rulesets.Catch/UI/DrawableCatchRuleset.cs index 6b7f00c5d0..f5bddeb2cb 100644 --- a/osu.Game.Rulesets.Catch/UI/DrawableCatchRuleset.cs +++ b/osu.Game.Rulesets.Catch/UI/DrawableCatchRuleset.cs @@ -32,7 +32,7 @@ namespace osu.Game.Rulesets.Catch.UI TimeRange.Value = BeatmapDifficulty.DifficultyRange(beatmap.Beatmap.BeatmapInfo.BaseDifficulty.ApproachRate, 1800, 1200, 450); } - public override ScoreProcessor CreateScoreProcessor() => new CatchScoreProcessor(this); + public override ScoreProcessor CreateScoreProcessor() => new CatchScoreProcessor(Beatmap); protected override ReplayInputHandler CreateReplayInputHandler(Replay replay) => new CatchFramedReplayInputHandler(replay); diff --git a/osu.Game.Rulesets.Mania/Scoring/ManiaScoreProcessor.cs b/osu.Game.Rulesets.Mania/Scoring/ManiaScoreProcessor.cs index 49894a644c..a678ef60e7 100644 --- a/osu.Game.Rulesets.Mania/Scoring/ManiaScoreProcessor.cs +++ b/osu.Game.Rulesets.Mania/Scoring/ManiaScoreProcessor.cs @@ -3,13 +3,11 @@ using osu.Game.Beatmaps; using osu.Game.Rulesets.Judgements; -using osu.Game.Rulesets.Mania.Objects; using osu.Game.Rulesets.Scoring; -using osu.Game.Rulesets.UI; namespace osu.Game.Rulesets.Mania.Scoring { - internal class ManiaScoreProcessor : ScoreProcessor + internal class ManiaScoreProcessor : ScoreProcessor { /// /// The hit HP multiplier at OD = 0. @@ -51,12 +49,12 @@ namespace osu.Game.Rulesets.Mania.Scoring /// private double hpMultiplier = 1; - public ManiaScoreProcessor(DrawableRuleset drawableRuleset) - : base(drawableRuleset) + public ManiaScoreProcessor(IBeatmap beatmap) + : base(beatmap) { } - protected override void ApplyBeatmap(Beatmap beatmap) + protected override void ApplyBeatmap(IBeatmap beatmap) { base.ApplyBeatmap(beatmap); @@ -65,7 +63,7 @@ namespace osu.Game.Rulesets.Mania.Scoring hpMissMultiplier = BeatmapDifficulty.DifficultyRange(difficulty.DrainRate, hp_multiplier_miss_min, hp_multiplier_miss_mid, hp_multiplier_miss_max); } - protected override void SimulateAutoplay(Beatmap beatmap) + protected override void SimulateAutoplay(IBeatmap beatmap) { while (true) { diff --git a/osu.Game.Rulesets.Mania/UI/DrawableManiaRuleset.cs b/osu.Game.Rulesets.Mania/UI/DrawableManiaRuleset.cs index d371c1f7a8..0607bf0abd 100644 --- a/osu.Game.Rulesets.Mania/UI/DrawableManiaRuleset.cs +++ b/osu.Game.Rulesets.Mania/UI/DrawableManiaRuleset.cs @@ -67,7 +67,7 @@ namespace osu.Game.Rulesets.Mania.UI protected override Playfield CreatePlayfield() => new ManiaPlayfield(Beatmap.Stages); - public override ScoreProcessor CreateScoreProcessor() => new ManiaScoreProcessor(this); + public override ScoreProcessor CreateScoreProcessor() => new ManiaScoreProcessor(Beatmap); public override int Variant => (int)(Beatmap.Stages.Count == 1 ? PlayfieldType.Single : PlayfieldType.Dual) + Beatmap.TotalColumns; diff --git a/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs b/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs index affe18a30d..6779271cb3 100644 --- a/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs +++ b/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs @@ -5,22 +5,20 @@ using osu.Game.Beatmaps; using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Osu.Judgements; -using osu.Game.Rulesets.Osu.Objects; using osu.Game.Rulesets.Scoring; -using osu.Game.Rulesets.UI; namespace osu.Game.Rulesets.Osu.Scoring { - internal class OsuScoreProcessor : ScoreProcessor + internal class OsuScoreProcessor : ScoreProcessor { - public OsuScoreProcessor(DrawableRuleset drawableRuleset) - : base(drawableRuleset) + public OsuScoreProcessor(IBeatmap beatmap) + : base(beatmap) { } private float hpDrainRate; - protected override void ApplyBeatmap(Beatmap beatmap) + protected override void ApplyBeatmap(IBeatmap beatmap) { base.ApplyBeatmap(beatmap); diff --git a/osu.Game.Rulesets.Osu/UI/DrawableOsuRuleset.cs b/osu.Game.Rulesets.Osu/UI/DrawableOsuRuleset.cs index 49aea52902..5bb728a9b0 100644 --- a/osu.Game.Rulesets.Osu/UI/DrawableOsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/UI/DrawableOsuRuleset.cs @@ -33,7 +33,7 @@ namespace osu.Game.Rulesets.Osu.UI public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => true; // always show the gameplay cursor - public override ScoreProcessor CreateScoreProcessor() => new OsuScoreProcessor(this); + public override ScoreProcessor CreateScoreProcessor() => new OsuScoreProcessor(Beatmap); protected override Playfield CreatePlayfield() => new OsuPlayfield(); diff --git a/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs b/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs index 75a27ff639..ae593d2e3a 100644 --- a/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs +++ b/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs @@ -1,15 +1,15 @@ // 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.Game.Beatmaps; using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Scoring; using osu.Game.Rulesets.Taiko.Objects; -using osu.Game.Rulesets.UI; namespace osu.Game.Rulesets.Taiko.Scoring { - internal class TaikoScoreProcessor : ScoreProcessor + internal class TaikoScoreProcessor : ScoreProcessor { /// /// A value used for calculating . @@ -31,16 +31,16 @@ namespace osu.Game.Rulesets.Taiko.Scoring /// private double hpMissMultiplier; - public TaikoScoreProcessor(DrawableRuleset drawableRuleset) - : base(drawableRuleset) + public TaikoScoreProcessor(IBeatmap beatmap) + : base(beatmap) { } - protected override void ApplyBeatmap(Beatmap beatmap) + protected override void ApplyBeatmap(IBeatmap beatmap) { base.ApplyBeatmap(beatmap); - hpMultiplier = 1 / (object_count_factor * beatmap.HitObjects.FindAll(o => o is Hit).Count * BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.5, 0.75, 0.98)); + hpMultiplier = 1 / (object_count_factor * beatmap.HitObjects.OfType().Count() * BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.5, 0.75, 0.98)); hpMissMultiplier = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.0018, 0.0075, 0.0120); } diff --git a/osu.Game.Rulesets.Taiko/UI/DrawableTaikoRuleset.cs b/osu.Game.Rulesets.Taiko/UI/DrawableTaikoRuleset.cs index fc109bf6a6..d4ea9a043a 100644 --- a/osu.Game.Rulesets.Taiko/UI/DrawableTaikoRuleset.cs +++ b/osu.Game.Rulesets.Taiko/UI/DrawableTaikoRuleset.cs @@ -40,7 +40,7 @@ namespace osu.Game.Rulesets.Taiko.UI new BarLineGenerator(Beatmap).BarLines.ForEach(bar => Playfield.Add(bar.Major ? new DrawableBarLineMajor(bar) : new DrawableBarLine(bar))); } - public override ScoreProcessor CreateScoreProcessor() => new TaikoScoreProcessor(this); + public override ScoreProcessor CreateScoreProcessor() => new TaikoScoreProcessor(Beatmap); public override PlayfieldAdjustmentContainer CreatePlayfieldAdjustmentContainer() => new TaikoPlayfieldAdjustmentContainer(); diff --git a/osu.Game/Rulesets/Scoring/ScoreProcessor.cs b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs index 18c2a2ca01..a8a2294498 100644 --- a/osu.Game/Rulesets/Scoring/ScoreProcessor.cs +++ b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs @@ -13,13 +13,16 @@ using osu.Game.Beatmaps; using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Objects; -using osu.Game.Rulesets.UI; using osu.Game.Scoring; namespace osu.Game.Rulesets.Scoring { - public abstract class ScoreProcessor + public class ScoreProcessor { + private const double base_portion = 0.3; + private const double combo_portion = 0.7; + private const double max_score = 1000000; + /// /// Invoked when the is in a failed state. /// This may occur regardless of whether an event is invoked. @@ -67,11 +70,6 @@ namespace osu.Game.Rulesets.Scoring /// public readonly Bindable> Mods = new Bindable>(Array.Empty()); - /// - /// Create a for this processor. - /// - public virtual HitWindows CreateHitWindows() => new HitWindows(); - /// /// The current rank. /// @@ -90,132 +88,23 @@ namespace osu.Game.Rulesets.Scoring /// /// Whether all s have been processed. /// - public virtual bool HasCompleted => false; - - /// - /// The total number of judged s at the current point in time. - /// - public int JudgedHits { get; protected set; } + public bool HasCompleted => JudgedHits == MaxHits; /// /// Whether this ScoreProcessor has already triggered the failed state. /// - public virtual bool HasFailed { get; private set; } + public bool HasFailed { get; private set; } /// - /// The default conditions for failing. + /// The maximum number of hits that can be judged. /// - protected virtual bool DefaultFailCondition => Precision.AlmostBigger(Health.MinValue, Health.Value); - - protected ScoreProcessor() - { - Combo.ValueChanged += delegate { HighestCombo.Value = Math.Max(HighestCombo.Value, Combo.Value); }; - Accuracy.ValueChanged += delegate - { - Rank.Value = rankFrom(Accuracy.Value); - foreach (var mod in Mods.Value.OfType()) - Rank.Value = mod.AdjustRank(Rank.Value, Accuracy.Value); - }; - } - - private ScoreRank rankFrom(double acc) - { - if (acc == 1) - return ScoreRank.X; - if (acc > 0.95) - return ScoreRank.S; - if (acc > 0.9) - return ScoreRank.A; - if (acc > 0.8) - return ScoreRank.B; - if (acc > 0.7) - return ScoreRank.C; - - return ScoreRank.D; - } - - /// - /// Resets this ScoreProcessor to a default state. - /// - /// Whether to store the current state of the for future use. - protected virtual void Reset(bool storeResults) - { - TotalScore.Value = 0; - Accuracy.Value = 1; - Health.Value = 1; - Combo.Value = 0; - Rank.Value = ScoreRank.X; - HighestCombo.Value = 0; - - JudgedHits = 0; - - HasFailed = false; - } - - /// - /// Checks if the score is in a failed state and notifies subscribers. - /// - /// This can only ever notify subscribers once. - /// - /// - protected void UpdateFailed(JudgementResult result) - { - if (HasFailed) - return; - - if (!DefaultFailCondition && FailConditions?.Invoke(this, result) != true) - return; - - if (Failed?.Invoke() != false) - HasFailed = true; - } - - /// - /// Notifies subscribers of that a new judgement has occurred. - /// - /// The judgement scoring result to notify subscribers of. - protected void NotifyNewJudgement(JudgementResult result) - { - NewJudgement?.Invoke(result); - - if (HasCompleted) - AllJudged?.Invoke(); - } - - /// - /// Retrieve a score populated with data for the current play this processor is responsible for. - /// - public virtual void PopulateScore(ScoreInfo score) - { - score.TotalScore = (long)Math.Round(TotalScore.Value); - score.Combo = Combo.Value; - score.MaxCombo = HighestCombo.Value; - score.Accuracy = Math.Round(Accuracy.Value, 4); - score.Rank = Rank.Value; - score.Date = DateTimeOffset.Now; - - var hitWindows = CreateHitWindows(); - - foreach (var result in Enum.GetValues(typeof(HitResult)).OfType().Where(r => r > HitResult.None && hitWindows.IsHitResultAllowed(r))) - score.Statistics[result] = GetStatistic(result); - } - - public abstract int GetStatistic(HitResult result); - - public abstract double GetStandardisedScore(); - } - - public class ScoreProcessor : ScoreProcessor - where TObject : HitObject - { - private const double base_portion = 0.3; - private const double combo_portion = 0.7; - private const double max_score = 1000000; - - public sealed override bool HasCompleted => JudgedHits == MaxHits; - protected int MaxHits { get; private set; } + /// + /// The total number of judged s at the current point in time. + /// + public int JudgedHits { get; private set; } + private double maxHighestCombo; private double maxBaseScore; @@ -225,17 +114,22 @@ namespace osu.Game.Rulesets.Scoring private double scoreMultiplier = 1; - public ScoreProcessor(DrawableRuleset drawableRuleset) + public ScoreProcessor(IBeatmap beatmap) { Debug.Assert(base_portion + combo_portion == 1.0); - drawableRuleset.OnNewResult += applyResult; - drawableRuleset.OnRevertResult += revertResult; + Combo.ValueChanged += combo => HighestCombo.Value = Math.Max(HighestCombo.Value, combo.NewValue); + Accuracy.ValueChanged += accuracy => + { + Rank.Value = rankFrom(accuracy.NewValue); + foreach (var mod in Mods.Value.OfType()) + Rank.Value = mod.AdjustRank(Rank.Value, accuracy.NewValue); + }; - ApplyBeatmap(drawableRuleset.Beatmap); + ApplyBeatmap(beatmap); Reset(false); - SimulateAutoplay(drawableRuleset.Beatmap); + SimulateAutoplay(beatmap); Reset(true); if (maxBaseScore == 0 || maxHighestCombo == 0) @@ -257,19 +151,19 @@ namespace osu.Game.Rulesets.Scoring } /// - /// Applies any properties of the which affect scoring to this . + /// Applies any properties of the which affect scoring to this . /// - /// The to read properties from. - protected virtual void ApplyBeatmap(Beatmap beatmap) + /// The to read properties from. + protected virtual void ApplyBeatmap(IBeatmap beatmap) { } /// - /// Simulates an autoplay of the to determine scoring values. + /// Simulates an autoplay of the to determine scoring values. /// /// This provided temporarily. DO NOT USE. - /// The to simulate. - protected virtual void SimulateAutoplay(Beatmap beatmap) + /// The to simulate. + protected virtual void SimulateAutoplay(IBeatmap beatmap) { foreach (var obj in beatmap.HitObjects) simulate(obj); @@ -289,7 +183,7 @@ namespace osu.Game.Rulesets.Scoring result.Type = judgement.MaxResult; - applyResult(result); + ApplyResult(result); } } @@ -297,22 +191,26 @@ namespace osu.Game.Rulesets.Scoring /// Applies the score change of a to this . /// /// The to apply. - private void applyResult(JudgementResult result) + public void ApplyResult(JudgementResult result) { - ApplyResult(result); - updateScore(); + ApplyResultInternal(result); - UpdateFailed(result); - NotifyNewJudgement(result); + updateScore(); + updateFailed(result); + + NewJudgement?.Invoke(result); + + if (HasCompleted) + AllJudged?.Invoke(); } /// /// Reverts the score change of a that was applied to this . /// /// The judgement scoring result. - private void revertResult(JudgementResult result) + public void RevertResult(JudgementResult result) { - RevertResult(result); + RevertResultInternal(result); updateScore(); } @@ -322,10 +220,10 @@ namespace osu.Game.Rulesets.Scoring /// Applies the score change of a to this . /// /// - /// Any changes applied via this method can be reverted via . + /// Any changes applied via this method can be reverted via . /// /// The to apply. - protected virtual void ApplyResult(JudgementResult result) + protected virtual void ApplyResultInternal(JudgementResult result) { result.ComboAtJudgement = Combo.Value; result.HighestComboAtJudgement = HighestCombo.Value; @@ -372,10 +270,10 @@ namespace osu.Game.Rulesets.Scoring } /// - /// Reverts the score change of a that was applied to this via . + /// Reverts the score change of a that was applied to this via . /// /// The judgement scoring result. - protected virtual void RevertResult(JudgementResult result) + protected virtual void RevertResultInternal(JudgementResult result) { Combo.Value = result.ComboAtJudgement; HighestCombo.Value = result.HighestComboAtJudgement; @@ -432,11 +330,49 @@ namespace osu.Game.Rulesets.Scoring } } - public override int GetStatistic(HitResult result) => scoreResultCounts.GetOrDefault(result); + /// + /// Checks if the score is in a failed state and notifies subscribers. + /// + /// This can only ever notify subscribers once. + /// + /// + private void updateFailed(JudgementResult result) + { + if (HasFailed) + return; - public override double GetStandardisedScore() => getScore(ScoringMode.Standardised); + if (!DefaultFailCondition && FailConditions?.Invoke(this, result) != true) + return; - protected override void Reset(bool storeResults) + if (Failed?.Invoke() != false) + HasFailed = true; + } + + private ScoreRank rankFrom(double acc) + { + if (acc == 1) + return ScoreRank.X; + if (acc > 0.95) + return ScoreRank.S; + if (acc > 0.9) + return ScoreRank.A; + if (acc > 0.8) + return ScoreRank.B; + if (acc > 0.7) + return ScoreRank.C; + + return ScoreRank.D; + } + + public int GetStatistic(HitResult result) => scoreResultCounts.GetOrDefault(result); + + public double GetStandardisedScore() => getScore(ScoringMode.Standardised); + + /// + /// Resets this ScoreProcessor to a default state. + /// + /// Whether to store the current state of the for future use. + protected virtual void Reset(bool storeResults) { scoreResultCounts.Clear(); @@ -447,13 +383,49 @@ namespace osu.Game.Rulesets.Scoring maxBaseScore = baseScore; } - base.Reset(storeResults); - + JudgedHits = 0; baseScore = 0; rollingMaxBaseScore = 0; bonusScore = 0; + + TotalScore.Value = 0; + Accuracy.Value = 1; + Health.Value = 1; + Combo.Value = 0; + Rank.Value = ScoreRank.X; + HighestCombo.Value = 0; + + HasFailed = false; } + /// + /// Retrieve a score populated with data for the current play this processor is responsible for. + /// + public virtual void PopulateScore(ScoreInfo score) + { + score.TotalScore = (long)Math.Round(TotalScore.Value); + score.Combo = Combo.Value; + score.MaxCombo = HighestCombo.Value; + score.Accuracy = Math.Round(Accuracy.Value, 4); + score.Rank = Rank.Value; + score.Date = DateTimeOffset.Now; + + var hitWindows = CreateHitWindows(); + + foreach (var result in Enum.GetValues(typeof(HitResult)).OfType().Where(r => r > HitResult.None && hitWindows.IsHitResultAllowed(r))) + score.Statistics[result] = GetStatistic(result); + } + + /// + /// The default conditions for failing. + /// + protected virtual bool DefaultFailCondition => Precision.AlmostBigger(Health.MinValue, Health.Value); + + /// + /// Create a for this processor. + /// + public virtual HitWindows CreateHitWindows() => new HitWindows(); + /// /// Creates the that represents the scoring result for a . /// diff --git a/osu.Game/Rulesets/UI/DrawableRuleset.cs b/osu.Game/Rulesets/UI/DrawableRuleset.cs index a856974292..10657f6b39 100644 --- a/osu.Game/Rulesets/UI/DrawableRuleset.cs +++ b/osu.Game/Rulesets/UI/DrawableRuleset.cs @@ -45,6 +45,10 @@ namespace osu.Game.Rulesets.UI public abstract class DrawableRuleset : DrawableRuleset, IProvideCursor, ICanAttachKeyCounter where TObject : HitObject { + public override event Action OnNewResult; + + public override event Action OnRevertResult; + /// /// The selected variant. /// @@ -91,16 +95,6 @@ namespace osu.Game.Rulesets.UI } } - /// - /// Invoked when a has been applied by a . - /// - public event Action OnNewResult; - - /// - /// Invoked when a is being reverted by a . - /// - public event Action OnRevertResult; - /// /// The beatmap. /// @@ -309,7 +303,7 @@ namespace osu.Game.Rulesets.UI /// The Playfield. protected abstract Playfield CreatePlayfield(); - public override ScoreProcessor CreateScoreProcessor() => new ScoreProcessor(this); + public override ScoreProcessor CreateScoreProcessor() => new ScoreProcessor(Beatmap); /// /// Applies the active mods to this DrawableRuleset. @@ -366,6 +360,16 @@ namespace osu.Game.Rulesets.UI /// public abstract class DrawableRuleset : CompositeDrawable { + /// + /// Invoked when a has been applied by a . + /// + public abstract event Action OnNewResult; + + /// + /// Invoked when a is being reverted by a . + /// + public abstract event Action OnRevertResult; + /// /// Whether a replay is currently loaded. /// diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index d40c448452..d3df137328 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -140,6 +140,9 @@ namespace osu.Game.Screens.Play // bind clock into components that require it DrawableRuleset.IsPaused.BindTo(GameplayClockContainer.IsPaused); + DrawableRuleset.OnNewResult += ScoreProcessor.ApplyResult; + DrawableRuleset.OnRevertResult += ScoreProcessor.RevertResult; + // Bind ScoreProcessor to ourselves ScoreProcessor.AllJudged += onCompletion; ScoreProcessor.Failed += onFail; From 97ca2e2753151ec527264d0226a5e0b2459f6cd9 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 11 Dec 2019 17:58:59 +0900 Subject: [PATCH 0244/1829] Add missing bezier option to menu --- .../Blueprints/Sliders/Components/PathControlPointVisualiser.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs index d706fb51d5..ab6064602b 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs @@ -171,6 +171,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components createMenuItemForPathType(null), createMenuItemForPathType(PathType.Linear), createMenuItemForPathType(PathType.PerfectCurve), + createMenuItemForPathType(PathType.Bezier), createMenuItemForPathType(PathType.Catmull) } } From 03040d175092313cd9a5657fa1f9915917d22927 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 11 Dec 2019 18:18:16 +0900 Subject: [PATCH 0245/1829] Don't show inherit menu item when first control point is selected --- .../Components/PathControlPointVisualiser.cs | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs index ab6064602b..e406bb6426 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs @@ -27,7 +27,9 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components public class PathControlPointVisualiser : CompositeDrawable, IKeyBindingHandler, IHasContextMenu { internal readonly Container Pieces; + private readonly Slider slider; + private readonly bool allowSelection; private InputManager inputManager; @@ -82,7 +84,10 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components protected override bool OnClick(ClickEvent e) { foreach (var piece in Pieces) + { piece.IsSelected.Value = false; + } + return false; } @@ -156,24 +161,29 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components if (!Pieces.Any(p => p.IsHovered)) return null; - int selectedPoints = Pieces.Count(p => p.IsSelected.Value); + var selectedPieces = Pieces.Where(p => p.IsSelected.Value).ToList(); + int count = selectedPieces.Count; - if (selectedPoints == 0) + if (count == 0) return null; + List items = new List(); + + if (!selectedPieces.Contains(Pieces[0])) + items.Add(createMenuItemForPathType(null)); + + // todo: hide/disable items which aren't valid for selected points + items.Add(createMenuItemForPathType(PathType.Linear)); + items.Add(createMenuItemForPathType(PathType.PerfectCurve)); + items.Add(createMenuItemForPathType(PathType.Bezier)); + items.Add(createMenuItemForPathType(PathType.Catmull)); + return new MenuItem[] { - new OsuMenuItem($"Delete {"control point".ToQuantity(selectedPoints, selectedPoints > 1 ? ShowQuantityAs.Numeric : ShowQuantityAs.None)}", MenuItemType.Destructive, () => deleteSelected()), + new OsuMenuItem($"Delete {"control point".ToQuantity(count, count > 1 ? ShowQuantityAs.Numeric : ShowQuantityAs.None)}", MenuItemType.Destructive, () => deleteSelected()), new OsuMenuItem("Type") { - Items = new[] - { - createMenuItemForPathType(null), - createMenuItemForPathType(PathType.Linear), - createMenuItemForPathType(PathType.PerfectCurve), - createMenuItemForPathType(PathType.Bezier), - createMenuItemForPathType(PathType.Catmull) - } + Items = items } }; } From d82ba3e7f7ebb69b29a7529299dbe3aaa800a373 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 11 Dec 2019 18:20:28 +0900 Subject: [PATCH 0246/1829] Curve -> Curve type --- .../Blueprints/Sliders/Components/PathControlPointVisualiser.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs index e406bb6426..22155ab7af 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs @@ -181,7 +181,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components return new MenuItem[] { new OsuMenuItem($"Delete {"control point".ToQuantity(count, count > 1 ? ShowQuantityAs.Numeric : ShowQuantityAs.None)}", MenuItemType.Destructive, () => deleteSelected()), - new OsuMenuItem("Type") + new OsuMenuItem("Curve type") { Items = items } From 23959f3a3ccb462a21c52460163b70bc474e8fa1 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 11 Dec 2019 18:52:38 +0900 Subject: [PATCH 0247/1829] Move control point removal to SliderSelectionBlueprint --- .../Components/PathControlPointVisualiser.cs | 32 ++----------- .../Sliders/SliderSelectionBlueprint.cs | 47 +++++++++++++++++-- 2 files changed, 47 insertions(+), 32 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs index 22155ab7af..cd19653a2e 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs @@ -5,7 +5,6 @@ using System; using System.Collections.Generic; using System.Linq; using Humanizer; -using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; @@ -18,8 +17,6 @@ using osu.Game.Graphics.UserInterface; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Objects.Types; using osu.Game.Rulesets.Osu.Objects; -using osu.Game.Screens.Edit.Compose; -using osuTK; using osuTK.Input; namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components @@ -34,11 +31,10 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components private InputManager inputManager; - [Resolved(CanBeNull = true)] - private IPlacementHandler placementHandler { get; set; } - private IBindableList controlPoints; + public Action> RemoveControlPointsRequested; + public PathControlPointVisualiser(Slider slider, bool allowSelection) { this.slider = slider; @@ -123,29 +119,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components if (toRemove.Count == 0) return false; - foreach (var c in toRemove) - { - // The first control point in the slider must have a type, so take it from the previous "first" one - // Todo: Should be handled within SliderPath itself - if (c == slider.Path.ControlPoints[0] && slider.Path.ControlPoints.Count > 1 && slider.Path.ControlPoints[1].Type.Value == null) - slider.Path.ControlPoints[1].Type.Value = slider.Path.ControlPoints[0].Type.Value; - - slider.Path.ControlPoints.Remove(c); - } - - // If there are 0 or 1 remaining control points, the slider is in a degenerate (single point) form and should be deleted - if (slider.Path.ControlPoints.Count <= 1) - { - placementHandler?.Delete(slider); - return true; - } - - // The path will have a non-zero offset if the head is removed, but sliders don't support this behaviour since the head is positioned at the slider's position - // So the slider needs to be offset by this amount instead, and all control points offset backwards such that the path is re-positioned at (0, 0) - Vector2 first = slider.Path.ControlPoints[0].Position.Value; - foreach (var c in slider.Path.ControlPoints) - c.Position.Value -= first; - slider.Position += first; + RemoveControlPointsRequested?.Invoke(toRemove); // Since pieces are re-used, they will not point to the deleted control points while remaining selected foreach (var piece in Pieces) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs index 68873093a6..3165c441fb 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.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.Collections.Generic; using System.Diagnostics; using osu.Framework.Allocation; using osu.Framework.Bindables; @@ -14,6 +15,7 @@ using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components; using osu.Game.Rulesets.Osu.Objects; using osu.Game.Rulesets.Osu.Objects.Drawables; +using osu.Game.Screens.Edit.Compose; using osuTK; using osuTK.Input; @@ -29,6 +31,9 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders [Resolved(CanBeNull = true)] private HitObjectComposer composer { get; set; } + [Resolved(CanBeNull = true)] + private IPlacementHandler placementHandler { get; set; } + public SliderSelectionBlueprint(DrawableSlider slider) : base(slider) { @@ -40,6 +45,9 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders HeadBlueprint = CreateCircleSelectionBlueprint(slider, SliderPosition.Start), TailBlueprint = CreateCircleSelectionBlueprint(slider, SliderPosition.End), ControlPointVisualiser = new PathControlPointVisualiser(sliderObject, true) + { + RemoveControlPointsRequested = removeControlPoints + } }; } @@ -97,6 +105,8 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders return true; } + private BindableList controlPoints => HitObject.Path.ControlPoints; + private int addControlPoint(Vector2 position) { position -= HitObject.Position; @@ -104,9 +114,9 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders int insertionIndex = 0; float minDistance = float.MaxValue; - for (int i = 0; i < HitObject.Path.ControlPoints.Count - 1; i++) + for (int i = 0; i < controlPoints.Count - 1; i++) { - float dist = new Line(HitObject.Path.ControlPoints[i].Position.Value, HitObject.Path.ControlPoints[i + 1].Position.Value).DistanceToPoint(position); + float dist = new Line(controlPoints[i].Position.Value, controlPoints[i + 1].Position.Value).DistanceToPoint(position); if (dist < minDistance) { @@ -116,11 +126,42 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders } // Move the control points from the insertion index onwards to make room for the insertion - HitObject.Path.ControlPoints.Insert(insertionIndex, new PathControlPoint { Position = { Value = position } }); + controlPoints.Insert(insertionIndex, new PathControlPoint { Position = { Value = position } }); return insertionIndex; } + private void removeControlPoints(List toRemove) + { + // Ensure that there are any points to be deleted + if (toRemove.Count == 0) + return; + + foreach (var c in toRemove) + { + // The first control point in the slider must have a type, so take it from the previous "first" one + // Todo: Should be handled within SliderPath itself + if (c == controlPoints[0] && controlPoints.Count > 1 && controlPoints[1].Type.Value == null) + controlPoints[1].Type.Value = controlPoints[0].Type.Value; + + controlPoints.Remove(c); + } + + // If there are 0 or 1 remaining control points, the slider is in a degenerate (single point) form and should be deleted + if (controlPoints.Count <= 1) + { + placementHandler?.Delete(HitObject); + return; + } + + // The path will have a non-zero offset if the head is removed, but sliders don't support this behaviour since the head is positioned at the slider's position + // So the slider needs to be offset by this amount instead, and all control points offset backwards such that the path is re-positioned at (0, 0) + Vector2 first = controlPoints[0].Position.Value; + foreach (var c in controlPoints) + c.Position.Value -= first; + HitObject.Position += first; + } + private void updatePath() { HitObject.Path.ExpectedDistance.Value = composer?.GetSnappedDistanceFromDistance(HitObject.StartTime, (float)HitObject.Path.CalculatedDistance) ?? (float)HitObject.Path.CalculatedDistance; From 9963d18d17c00777a68d36768429c5ee9ebd4006 Mon Sep 17 00:00:00 2001 From: Dan Balasescu Date: Wed, 11 Dec 2019 19:13:04 +0900 Subject: [PATCH 0248/1829] Add whitespace --- osu.Game/Overlays/RankingsOverlay.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index e7c8b94a10..c8874ef891 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -106,6 +106,7 @@ namespace osu.Game.Overlays Scheduler.AddOnce(loadNewContent); }, true); + Scope.BindValueChanged(_ => { // country filtering is only valid for performance scope. From 404d3207ffc0c963dedde39d10b27d7de5f890fd Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 11 Dec 2019 19:43:32 +0900 Subject: [PATCH 0249/1829] Refactor ModNightcore/ModDaycore --- osu.Game/Rulesets/Mods/ModDaycore.cs | 12 ++++++++---- osu.Game/Rulesets/Mods/ModNightcore.cs | 12 ++++++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModDaycore.cs b/osu.Game/Rulesets/Mods/ModDaycore.cs index 474e793dd1..9445895fb0 100644 --- a/osu.Game/Rulesets/Mods/ModDaycore.cs +++ b/osu.Game/Rulesets/Mods/ModDaycore.cs @@ -18,16 +18,20 @@ namespace osu.Game.Rulesets.Mods private readonly BindableNumber tempoAdjust = new BindableDouble(1); private readonly BindableNumber freqAdjust = new BindableDouble(1); - public override void ApplyToTrack(Track track) + public ModDaycore() { - track.AddAdjustment(AdjustableProperty.Frequency, freqAdjust); - track.AddAdjustment(AdjustableProperty.Tempo, tempoAdjust); - SpeedChange.BindValueChanged(val => { freqAdjust.Value = SpeedChange.Default; tempoAdjust.Value = val.NewValue / SpeedChange.Default; }, true); } + + public override void ApplyToTrack(Track track) + { + // base.ApplyToTrack() intentionally not called (different tempo adjustment is applied) + track.AddAdjustment(AdjustableProperty.Frequency, freqAdjust); + track.AddAdjustment(AdjustableProperty.Tempo, tempoAdjust); + } } } diff --git a/osu.Game/Rulesets/Mods/ModNightcore.cs b/osu.Game/Rulesets/Mods/ModNightcore.cs index 401814d18b..9b27925693 100644 --- a/osu.Game/Rulesets/Mods/ModNightcore.cs +++ b/osu.Game/Rulesets/Mods/ModNightcore.cs @@ -19,16 +19,20 @@ namespace osu.Game.Rulesets.Mods private readonly BindableNumber tempoAdjust = new BindableDouble(1); private readonly BindableNumber freqAdjust = new BindableDouble(1); - public override void ApplyToTrack(Track track) + public ModNightcore() { - track.AddAdjustment(AdjustableProperty.Frequency, freqAdjust); - track.AddAdjustment(AdjustableProperty.Tempo, tempoAdjust); - SpeedChange.BindValueChanged(val => { freqAdjust.Value = SpeedChange.Default; tempoAdjust.Value = val.NewValue / SpeedChange.Default; }, true); } + + public override void ApplyToTrack(Track track) + { + // base.ApplyToTrack() intentionally not called (different tempo adjustment is applied) + track.AddAdjustment(AdjustableProperty.Frequency, freqAdjust); + track.AddAdjustment(AdjustableProperty.Tempo, tempoAdjust); + } } } From c34b6b59eda2e6a62c5e1b1aca36b9e9c45f88c1 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 11 Dec 2019 19:48:57 +0900 Subject: [PATCH 0250/1829] Remove time ramp and rate adjust mod incompatibility --- osu.Game/Rulesets/Mods/ModRateAdjust.cs | 2 -- osu.Game/Rulesets/Mods/ModTimeRamp.cs | 2 -- 2 files changed, 4 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModRateAdjust.cs b/osu.Game/Rulesets/Mods/ModRateAdjust.cs index 5aa3e09fee..9143836fb7 100644 --- a/osu.Game/Rulesets/Mods/ModRateAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModRateAdjust.cs @@ -10,8 +10,6 @@ namespace osu.Game.Rulesets.Mods { public abstract class ModRateAdjust : Mod, IApplicableToTrack { - public override Type[] IncompatibleMods => new[] { typeof(ModTimeRamp) }; - public abstract BindableNumber SpeedChange { get; } public virtual void ApplyToTrack(Track track) diff --git a/osu.Game/Rulesets/Mods/ModTimeRamp.cs b/osu.Game/Rulesets/Mods/ModTimeRamp.cs index bffe4f7b70..e10afa7d7c 100644 --- a/osu.Game/Rulesets/Mods/ModTimeRamp.cs +++ b/osu.Game/Rulesets/Mods/ModTimeRamp.cs @@ -20,8 +20,6 @@ namespace osu.Game.Rulesets.Mods /// private const double final_rate_progress = 0.75f; - public override Type[] IncompatibleMods => new[] { typeof(ModRateAdjust) }; - [SettingSource("Final rate", "The final speed to ramp to")] public abstract BindableNumber FinalRate { get; } From 40f918dce6a65a77589bd6a5800f510f82d1ff53 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 11 Dec 2019 19:49:32 +0900 Subject: [PATCH 0251/1829] Remove unused using --- osu.Game/Rulesets/Mods/ModRateAdjust.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Rulesets/Mods/ModRateAdjust.cs b/osu.Game/Rulesets/Mods/ModRateAdjust.cs index 9143836fb7..1739524bcd 100644 --- a/osu.Game/Rulesets/Mods/ModRateAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModRateAdjust.cs @@ -1,7 +1,6 @@ // 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 osu.Framework.Audio; using osu.Framework.Audio.Track; using osu.Framework.Bindables; From 47b6b0173913ad78ac3beaf702676b0e929c8515 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 11 Dec 2019 20:11:48 +0900 Subject: [PATCH 0252/1829] Rename class to signify it is a drawable --- ...ointConnection.cs => PathControlPointConnectionPiece.cs} | 4 ++-- .../Sliders/Components/PathControlPointVisualiser.cs | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) rename osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/{PathControlPointConnection.cs => PathControlPointConnectionPiece.cs} (92%) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointConnection.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointConnectionPiece.cs similarity index 92% rename from osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointConnection.cs rename to osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointConnectionPiece.cs index f57299c5a9..4dfe7834fd 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointConnection.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointConnectionPiece.cs @@ -11,7 +11,7 @@ using osuTK; namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components { - public class PathControlPointConnection : CompositeDrawable + public class PathControlPointConnectionPiece : CompositeDrawable { public PathControlPoint ControlPoint; @@ -21,7 +21,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components private IBindable sliderPosition; private IBindable pathVersion; - public PathControlPointConnection(Slider slider, PathControlPoint controlPoint) + public PathControlPointConnectionPiece(Slider slider, PathControlPoint controlPoint) { this.slider = slider; ControlPoint = controlPoint; diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs index 64a8faa02a..a97c0b4a72 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs @@ -28,7 +28,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components { internal readonly Container Pieces; - private readonly Container connections; + private readonly Container connections; private readonly Slider slider; @@ -50,7 +50,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components InternalChildren = new Drawable[] { - connections = new Container { RelativeSizeAxes = Axes.Both }, + connections = new Container { RelativeSizeAxes = Axes.Both }, Pieces = new Container { RelativeSizeAxes = Axes.Both } }; } @@ -78,7 +78,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components d.RequestSelection = selectPiece; })); - connections.Add(new PathControlPointConnection(slider, point)); + connections.Add(new PathControlPointConnectionPiece(slider, point)); } } From 50377e728637b48c96769e1917cc628e4e70a1c9 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 11 Dec 2019 20:14:16 +0900 Subject: [PATCH 0253/1829] Add summary xmldoc --- .../Sliders/Components/PathControlPointConnectionPiece.cs | 3 +++ .../Blueprints/Sliders/Components/PathControlPointPiece.cs | 3 +++ 2 files changed, 6 insertions(+) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointConnectionPiece.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointConnectionPiece.cs index 4dfe7834fd..0fc441fec6 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointConnectionPiece.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointConnectionPiece.cs @@ -11,6 +11,9 @@ using osuTK; namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components { + /// + /// A visualisation of the line between two s. + /// public class PathControlPointConnectionPiece : CompositeDrawable { public PathControlPoint ControlPoint; diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs index 42812ff934..6a0730db91 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs @@ -18,6 +18,9 @@ using osuTK.Input; namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components { + /// + /// A visualisation of a single in a . + /// public class PathControlPointPiece : BlueprintPiece { public Action RequestSelection; From b795532aa5db67c7c0e5242c3607dcede7b9fbc1 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 11 Dec 2019 19:43:16 +0800 Subject: [PATCH 0254/1829] add difficulty adjustment mods --- osu.Game.Rulesets.Catch/CatchRuleset.cs | 6 +++ .../Mods/CatchModDifficultyAdjust.cs | 51 ++++++++++++++++++ osu.Game.Rulesets.Mania/ManiaRuleset.cs | 1 + .../Mods/ManiaModDifficultyAdjust.cs | 22 ++++++++ .../Mods/OsuModDifficultyAdjust.cs | 52 +++++++++++++++++++ osu.Game.Rulesets.Osu/OsuRuleset.cs | 1 + .../Mods/TaikoModDifficultyAdjust.cs | 42 +++++++++++++++ osu.Game.Rulesets.Taiko/TaikoRuleset.cs | 6 +++ osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs | 43 +++++++++++++++ 9 files changed, 224 insertions(+) create mode 100644 osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs create mode 100644 osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs create mode 100644 osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs create mode 100644 osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs create mode 100644 osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs diff --git a/osu.Game.Rulesets.Catch/CatchRuleset.cs b/osu.Game.Rulesets.Catch/CatchRuleset.cs index 71d68ace94..6495c5379b 100644 --- a/osu.Game.Rulesets.Catch/CatchRuleset.cs +++ b/osu.Game.Rulesets.Catch/CatchRuleset.cs @@ -98,6 +98,12 @@ namespace osu.Game.Rulesets.Catch new CatchModFlashlight(), }; + case ModType.Conversion: + return new Mod[] + { + new CatchModDifficultyAdjust(), + }; + case ModType.Automation: return new Mod[] { diff --git a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs new file mode 100644 index 0000000000..7dfd5e8964 --- /dev/null +++ b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs @@ -0,0 +1,51 @@ +// 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.Game.Beatmaps; +using osu.Game.Configuration; +using osu.Game.Rulesets.Mods; + +namespace osu.Game.Rulesets.Catch.Mods +{ + public class CatchModDifficultyAdjust : ModDifficultyAdjust + { + [SettingSource("Drain Rate", "Override the beatmap's set HP")] + public override BindableNumber DrainRate { get; } = new BindableFloat + { + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + Precision = 1F, + }; + + [SettingSource("Fruit Size", "Override the beatmap's set CS")] + public override BindableNumber CircleSize { get; } = new BindableFloat + { + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + Precision = 0.1F, + }; + + [SettingSource("Approach Rate", "Override the beatmap's set AR")] + public override BindableNumber ApproachRate { get; } = new BindableFloat + { + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + Precision = 0.1F, + }; + + public override void ApplyToDifficulty(BeatmapDifficulty difficulty) + { + difficulty.DrainRate = DrainRate.Value; + difficulty.CircleSize = CircleSize.Value; + difficulty.ApproachRate = ApproachRate.Value; + difficulty.OverallDifficulty = ApproachRate.Value; + } + } +} \ No newline at end of file diff --git a/osu.Game.Rulesets.Mania/ManiaRuleset.cs b/osu.Game.Rulesets.Mania/ManiaRuleset.cs index c74a292331..c4908d1993 100644 --- a/osu.Game.Rulesets.Mania/ManiaRuleset.cs +++ b/osu.Game.Rulesets.Mania/ManiaRuleset.cs @@ -143,6 +143,7 @@ namespace osu.Game.Rulesets.Mania new ManiaModRandom(), new ManiaModDualStages(), new ManiaModMirror(), + new ManiaModDifficultyAdjust(), }; case ModType.Automation: diff --git a/osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs b/osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs new file mode 100644 index 0000000000..67e464f7d8 --- /dev/null +++ b/osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs @@ -0,0 +1,22 @@ +// 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.Game.Configuration; +using osu.Game.Rulesets.Mods; + +namespace osu.Game.Rulesets.Mania.Mods +{ + public class ManiaModDifficultyAdjust : ModDifficultyAdjust + { + [SettingSource("Overall Difficulty", "Override the beatmap's set OD")] + public override BindableNumber OverallDifficulty { get; } = new BindableFloat + { + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + Precision = 0.1F, + }; + } +} \ No newline at end of file diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs new file mode 100644 index 0000000000..6851fe0d0a --- /dev/null +++ b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs @@ -0,0 +1,52 @@ +// 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.Game.Configuration; +using osu.Game.Rulesets.Mods; + +namespace osu.Game.Rulesets.Osu.Mods +{ + public class OsuModDifficultyAdjust : ModDifficultyAdjust + { + [SettingSource("Drain Rate", "Override the beatmap's set HP")] + public override BindableNumber DrainRate { get; } = new BindableFloat + { + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + Precision = 0.1F, + }; + + [SettingSource("Circle Size", "Override the beatmap's set CS")] + public override BindableNumber CircleSize { get; } = new BindableFloat + { + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + Precision = 0.1F, + }; + + [SettingSource("Approach Rate", "Override the beatmap's set AR")] + public override BindableNumber ApproachRate { get; } = new BindableFloat + { + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + Precision = 0.1F, + }; + + [SettingSource("Overall Difficulty", "Override the beatmap's set OD")] + public override BindableNumber OverallDifficulty { get; } = new BindableFloat + { + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + Precision = 0.1F, + }; + } +} \ No newline at end of file diff --git a/osu.Game.Rulesets.Osu/OsuRuleset.cs b/osu.Game.Rulesets.Osu/OsuRuleset.cs index fa69cec78d..746876b217 100644 --- a/osu.Game.Rulesets.Osu/OsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/OsuRuleset.cs @@ -121,6 +121,7 @@ namespace osu.Game.Rulesets.Osu return new Mod[] { new OsuModTarget(), + new OsuModDifficultyAdjust(), }; case ModType.Automation: diff --git a/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs b/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs new file mode 100644 index 0000000000..611f74f707 --- /dev/null +++ b/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs @@ -0,0 +1,42 @@ +// 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.Game.Configuration; +using osu.Game.Rulesets.Mods; + +namespace osu.Game.Rulesets.Taiko.Mods +{ + public class TaikoModDifficultyAdjust : ModDifficultyAdjust + { + [SettingSource("Drain Rate", "Override the beatmap's set HP")] + public override BindableNumber DrainRate { get; } = new BindableFloat + { + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + Precision = 0.1F, + }; + + [SettingSource("Approach Rate", "Override the beatmap's set AR")] + public override BindableNumber ApproachRate { get; } = new BindableFloat + { + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + Precision = 0.1F, + }; + + [SettingSource("Overall Difficulty", "Override the beatmap's set OD")] + public override BindableNumber OverallDifficulty { get; } = new BindableFloat + { + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + Precision = 0.1F, + }; + } +} \ No newline at end of file diff --git a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs index b2655f592c..c4c85c183b 100644 --- a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs +++ b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs @@ -97,6 +97,12 @@ namespace osu.Game.Rulesets.Taiko new TaikoModFlashlight(), }; + case ModType.Conversion: + return new Mod[] + { + new TaikoModDifficultyAdjust(), + }; + case ModType.Automation: return new Mod[] { diff --git a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs new file mode 100644 index 0000000000..6e7233e4d0 --- /dev/null +++ b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs @@ -0,0 +1,43 @@ +// 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.Beatmaps; +using osu.Framework.Bindables; +using osu.Framework.Graphics.Sprites; +using System; + +namespace osu.Game.Rulesets.Mods +{ + public abstract class ModDifficultyAdjust : Mod, IApplicableToDifficulty + { + public override string Name => @"Difficulty Adjust"; + + public override string Description => @"Override a beatmap's difficulty settings"; + + public override string Acronym => "DA"; + + public override ModType Type => ModType.Conversion; + + public override IconUsage Icon => FontAwesome.Solid.Hammer; + + public override double ScoreMultiplier => 1.0; + + public override Type[] IncompatibleMods => new[] { typeof(ModEasy), typeof(ModHardRock) }; + + public virtual BindableNumber DrainRate { get; } + + public virtual BindableNumber CircleSize { get; } + + public virtual BindableNumber ApproachRate { get; } + + public virtual BindableNumber OverallDifficulty { get; } + + public virtual void ApplyToDifficulty(BeatmapDifficulty difficulty) + { + difficulty.DrainRate = DrainRate != null ? DrainRate.Value : difficulty.DrainRate; + difficulty.CircleSize = CircleSize != null ? CircleSize.Value : difficulty.CircleSize; + difficulty.ApproachRate = ApproachRate != null ? ApproachRate.Value : difficulty.ApproachRate; + difficulty.OverallDifficulty = OverallDifficulty != null ? OverallDifficulty.Value: difficulty.OverallDifficulty; + } + } +} \ No newline at end of file From be3634cce16a53eca471d185218f5b168002a5e7 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 11 Dec 2019 20:02:23 +0800 Subject: [PATCH 0255/1829] remove ApproachRate setting --- .../Mods/TaikoModDifficultyAdjust.cs | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs b/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs index 611f74f707..7b7bc69aad 100644 --- a/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs @@ -19,16 +19,6 @@ namespace osu.Game.Rulesets.Taiko.Mods Precision = 0.1F, }; - [SettingSource("Approach Rate", "Override the beatmap's set AR")] - public override BindableNumber ApproachRate { get; } = new BindableFloat - { - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - Precision = 0.1F, - }; - [SettingSource("Overall Difficulty", "Override the beatmap's set OD")] public override BindableNumber OverallDifficulty { get; } = new BindableFloat { From b0cf44c3bedfa3973be04befbbd1b56771206acc Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 11 Dec 2019 20:12:29 +0800 Subject: [PATCH 0256/1829] fix appveyor issues --- osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs | 2 +- osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs | 2 +- osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs | 2 +- osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs | 2 +- osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs index 7dfd5e8964..6643ebadf1 100644 --- a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs @@ -48,4 +48,4 @@ namespace osu.Game.Rulesets.Catch.Mods difficulty.OverallDifficulty = ApproachRate.Value; } } -} \ No newline at end of file +} diff --git a/osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs b/osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs index 67e464f7d8..67554e6b92 100644 --- a/osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs @@ -19,4 +19,4 @@ namespace osu.Game.Rulesets.Mania.Mods Precision = 0.1F, }; } -} \ No newline at end of file +} diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs index 6851fe0d0a..86ab4579bb 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs @@ -49,4 +49,4 @@ namespace osu.Game.Rulesets.Osu.Mods Precision = 0.1F, }; } -} \ No newline at end of file +} diff --git a/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs b/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs index 7b7bc69aad..ed76cf77ac 100644 --- a/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs @@ -29,4 +29,4 @@ namespace osu.Game.Rulesets.Taiko.Mods Precision = 0.1F, }; } -} \ No newline at end of file +} diff --git a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs index 6e7233e4d0..d1f6bf45b4 100644 --- a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs @@ -37,7 +37,7 @@ namespace osu.Game.Rulesets.Mods difficulty.DrainRate = DrainRate != null ? DrainRate.Value : difficulty.DrainRate; difficulty.CircleSize = CircleSize != null ? CircleSize.Value : difficulty.CircleSize; difficulty.ApproachRate = ApproachRate != null ? ApproachRate.Value : difficulty.ApproachRate; - difficulty.OverallDifficulty = OverallDifficulty != null ? OverallDifficulty.Value: difficulty.OverallDifficulty; + difficulty.OverallDifficulty = OverallDifficulty != null ? OverallDifficulty.Value : difficulty.OverallDifficulty; } } -} \ No newline at end of file +} From e7a06aeadcefa773cb13efb2f39916b0a66bfd89 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Wed, 11 Dec 2019 14:32:43 +0100 Subject: [PATCH 0257/1829] Update NewsOverlay visual tests to expose LoadAndShowChild() for testing purposes --- osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs b/osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs index 546f6ac182..98f90f2daa 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs @@ -2,22 +2,28 @@ // See the LICENCE file in the repository root for full licence text. using osu.Game.Overlays; +using osu.Game.Overlays.News; namespace osu.Game.Tests.Visual.Online { public class TestSceneNewsOverlay : OsuTestScene { - private NewsOverlay news; + private TestNewsOverlay news; protected override void LoadComplete() { base.LoadComplete(); - Add(news = new NewsOverlay()); + Add(news = new TestNewsOverlay()); AddStep(@"Show", news.Show); AddStep(@"Hide", news.Hide); AddStep(@"Show front page", () => news.ShowFrontPage()); AddStep(@"Custom article", () => news.Current.Value = "Test Article 101"); } + + private class TestNewsOverlay : NewsOverlay + { + public new void LoadAndShowChild(NewsContent content) => base.LoadAndShowChild(content); + } } } From caa9286a9091f2482ba4ba5b6879f4894cc675ad Mon Sep 17 00:00:00 2001 From: Albie Date: Wed, 11 Dec 2019 17:39:40 +0000 Subject: [PATCH 0258/1829] update tests, change binding and reduce lines in cinema mod --- .../Background/TestSceneUserDimContainer.cs | 15 +++++++++++---- osu.Game/Graphics/Containers/UserDimContainer.cs | 14 +++++++++++--- osu.Game/Rulesets/Mods/ModCinema.cs | 2 -- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs index f867b98fda..fdfde9cc2f 100644 --- a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs +++ b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs @@ -155,9 +155,18 @@ namespace osu.Game.Tests.Visual.Background public void DisableUserDisplaySettingsTest() { performFullSetup(); - AddStep("Start ignoring user settings", () => player.DimmableStoryboard.IgnoreUserSettings.Value = true); + createFakeStoryboard(); + AddStep("Enable Storyboard", () => + { + player.ReplacesBackground.Value = true; + player.StoryboardEnabled.Value = true; + }); + AddStep("Enable user dim", () => player.DimmableStoryboard.EnableUserDim.Value = true); + AddStep("Set dim level to 1", () => songSelect.DimLevel.Value = 1f); waitForDim(); - AddAssert("Check the background is undimmed", () => player.IsBackgroundUndimmed()); + AddAssert("Ignore User Settings", () => player.DimmableStoryboard.IgnoreUserSettings.Value = true); + waitForDim(); + AddAssert("User dim settings ignored", () => !player.DimmableStoryboard.EnableUserDim.Value && player.DimmableStoryboard.DimLevel == 0); } /// @@ -365,8 +374,6 @@ namespace osu.Game.Tests.Visual.Background public new DimmableStoryboard DimmableStoryboard => base.DimmableStoryboard; - public bool IsBackgroundUndimmed() => ((FadeAccessibleBackground)Background).CurrentColour == OsuColour.Gray(1); - // Whether or not the player should be allowed to load. public bool BlockLoad; diff --git a/osu.Game/Graphics/Containers/UserDimContainer.cs b/osu.Game/Graphics/Containers/UserDimContainer.cs index bddbbca0ea..ae4e5557be 100644 --- a/osu.Game/Graphics/Containers/UserDimContainer.cs +++ b/osu.Game/Graphics/Containers/UserDimContainer.cs @@ -37,7 +37,7 @@ namespace osu.Game.Graphics.Containers /// public bool ContentDisplayed { get; private set; } - public double DimLevel => EnableUserDim.Value && !IgnoreUserSettings.Value ? UserDimLevel.Value : 0; + public double DimLevel => EnableUserDim.Value ? UserDimLevel.Value : 0; protected Bindable UserDimLevel { get; private set; } @@ -69,7 +69,7 @@ namespace osu.Game.Graphics.Containers ShowStoryboard.ValueChanged += _ => UpdateVisuals(); ShowVideo.ValueChanged += _ => UpdateVisuals(); StoryboardReplacesBackground.ValueChanged += _ => UpdateVisuals(); - IgnoreUserSettings.ValueChanged += _ => UpdateVisuals(); + IgnoreUserSettings.ValueChanged += _ => updateSettings(); } protected override void LoadComplete() @@ -91,7 +91,15 @@ namespace osu.Game.Graphics.Containers ContentDisplayed = ShowDimContent; dimContent.FadeTo(ContentDisplayed ? 1 : 0, BACKGROUND_FADE_DURATION, Easing.OutQuint); - dimContent.FadeColour(IgnoreUserSettings.Value ? Color4.White : OsuColour.Gray(1 - (float)DimLevel), BACKGROUND_FADE_DURATION, Easing.OutQuint); + dimContent.FadeColour(OsuColour.Gray(1 - (float)DimLevel), BACKGROUND_FADE_DURATION, Easing.OutQuint); + } + + /// + /// Invoked when the IgnoreUserSettings bindable is changed + /// + private void updateSettings() + { + EnableUserDim.Value = !IgnoreUserSettings.Value; } } } diff --git a/osu.Game/Rulesets/Mods/ModCinema.cs b/osu.Game/Rulesets/Mods/ModCinema.cs index 77bf80b149..5faa2f4f3e 100644 --- a/osu.Game/Rulesets/Mods/ModCinema.cs +++ b/osu.Game/Rulesets/Mods/ModCinema.cs @@ -37,8 +37,6 @@ namespace osu.Game.Rulesets.Mods public void ApplyToPlayer(Player player) { player.Background.EnableUserDim.Value = false; - player.DimmableVideo.EnableUserDim.Value = false; - player.DimmableStoryboard.EnableUserDim.Value = false; player.DimmableVideo.IgnoreUserSettings.Value = true; player.DimmableStoryboard.IgnoreUserSettings.Value = true; From 2ca722423b76898ca121bf3dee1444f552f03d4a Mon Sep 17 00:00:00 2001 From: Albie Date: Wed, 11 Dec 2019 18:58:14 +0000 Subject: [PATCH 0259/1829] remove uneccesary using statement --- osu.Game/Graphics/Containers/UserDimContainer.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Graphics/Containers/UserDimContainer.cs b/osu.Game/Graphics/Containers/UserDimContainer.cs index ae4e5557be..f83b85e023 100644 --- a/osu.Game/Graphics/Containers/UserDimContainer.cs +++ b/osu.Game/Graphics/Containers/UserDimContainer.cs @@ -6,7 +6,6 @@ using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Game.Configuration; -using osuTK.Graphics; namespace osu.Game.Graphics.Containers { From 663405d17d4ffeb6e74063db2fddd33f6715bc72 Mon Sep 17 00:00:00 2001 From: Albie Date: Wed, 11 Dec 2019 19:55:45 +0000 Subject: [PATCH 0260/1829] reduce test length and fix the poorly worded description --- .../Background/TestSceneUserDimContainer.cs | 29 +++++++------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs index fdfde9cc2f..52f8fe0a2e 100644 --- a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs +++ b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs @@ -119,11 +119,7 @@ namespace osu.Game.Tests.Visual.Background { performFullSetup(); createFakeStoryboard(); - AddStep("Enable Storyboard", () => - { - player.ReplacesBackground.Value = true; - player.StoryboardEnabled.Value = true; - }); + enableStoryboard(); waitForDim(); AddAssert("Background is invisible, storyboard is visible", () => songSelect.IsBackgroundInvisible() && player.IsStoryboardVisible); AddStep("Disable Storyboard", () => @@ -149,22 +145,17 @@ namespace osu.Game.Tests.Visual.Background } /// - /// Ensure is able to disable user-defined display settings. + /// Ensure can disable user-defined display settings. /// [Test] public void DisableUserDisplaySettingsTest() { performFullSetup(); createFakeStoryboard(); - AddStep("Enable Storyboard", () => - { - player.ReplacesBackground.Value = true; - player.StoryboardEnabled.Value = true; - }); + enableStoryboard(); AddStep("Enable user dim", () => player.DimmableStoryboard.EnableUserDim.Value = true); - AddStep("Set dim level to 1", () => songSelect.DimLevel.Value = 1f); waitForDim(); - AddAssert("Ignore User Settings", () => player.DimmableStoryboard.IgnoreUserSettings.Value = true); + AddAssert("Ignore user settings", () => player.DimmableStoryboard.IgnoreUserSettings.Value = true); waitForDim(); AddAssert("User dim settings ignored", () => !player.DimmableStoryboard.EnableUserDim.Value && player.DimmableStoryboard.DimLevel == 0); } @@ -194,11 +185,7 @@ namespace osu.Game.Tests.Visual.Background { performFullSetup(); createFakeStoryboard(); - AddStep("Enable Storyboard", () => - { - player.ReplacesBackground.Value = true; - player.StoryboardEnabled.Value = true; - }); + enableStoryboard(); AddStep("Enable user dim", () => player.DimmableStoryboard.EnableUserDim.Value = true); AddStep("Set dim level to 1", () => songSelect.DimLevel.Value = 1f); waitForDim(); @@ -285,6 +272,12 @@ namespace osu.Game.Tests.Visual.Background }); }); + private void enableStoryboard() => AddStep("Enable Storyboard", () => + { + player.ReplacesBackground.Value = true; + player.StoryboardEnabled.Value = true; + }); + private void performFullSetup(bool allowPause = false) { setupUserSettings(); From bc02cfc2e24cdaa26832f004b8ad8910b5b8342c Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Thu, 12 Dec 2019 00:30:16 +0300 Subject: [PATCH 0261/1829] TestSceneUserDimContainer -> TestSceneUserDimBackgrounds --- ...tSceneUserDimContainer.cs => TestSceneUserDimBackgrounds.cs} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename osu.Game.Tests/Visual/Background/{TestSceneUserDimContainer.cs => TestSceneUserDimBackgrounds.cs} (99%) diff --git a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs b/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs similarity index 99% rename from osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs rename to osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs index 910c462718..2d2726bbd3 100644 --- a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs +++ b/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs @@ -36,7 +36,7 @@ using osuTK.Graphics; namespace osu.Game.Tests.Visual.Background { [TestFixture] - public class TestSceneUserDimContainer : ManualInputManagerTestScene + public class TestSceneUserDimBackgrounds : ManualInputManagerTestScene { public override IReadOnlyList RequiredTypes => new[] { From 4f6b85e5ea19381ab19a2ebdab80336bcf4a59e0 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Thu, 12 Dec 2019 00:32:39 +0300 Subject: [PATCH 0262/1829] Add test ensuring correct break lightening behaviour --- .../Background/TestSceneUserDimContainer.cs | 82 +++++++++++++++++++ .../Graphics/Containers/UserDimContainer.cs | 5 +- 2 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs diff --git a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs new file mode 100644 index 0000000000..0aad9bed75 --- /dev/null +++ b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs @@ -0,0 +1,82 @@ +// 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.Allocation; +using osu.Framework.Bindables; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Shapes; +using osu.Game.Configuration; +using osu.Game.Graphics; +using osu.Game.Graphics.Containers; +using osuTK.Graphics; + +namespace osu.Game.Tests.Visual.Background +{ + public class TestSceneUserDimContainer : OsuTestScene + { + private readonly TestUserDimContainer container; + private readonly BindableBool isBreakTime = new BindableBool(); + private readonly Bindable lightenDuringBreaks = new Bindable(); + + public TestSceneUserDimContainer() + { + Add(container = new TestUserDimContainer + { + RelativeSizeAxes = Axes.Both, + Child = new Box + { + Colour = Color4.White, + RelativeSizeAxes = Axes.Both, + }, + }); + + container.IsBreakTime.BindTo(isBreakTime); + } + + [BackgroundDependencyLoader] + private void load(OsuConfigManager config) + { + config.BindWith(OsuSetting.LightenDuringBreaks, lightenDuringBreaks); + } + + [SetUp] + public void SetUp() + { + isBreakTime.Value = false; + lightenDuringBreaks.Value = false; + } + + [TestCase(0.6f, 0.3f)] + [TestCase(0.2f, 0.0f)] + [TestCase(0.0f, 0.0f)] + public void TestBreakLightening(float userDim, float expectedBreakDim) + { + AddStep($"set dim level {userDim}", () => container.UserDimLevel.Value = userDim); + + AddStep("set break", () => isBreakTime.Value = true); + AddWaitStep("wait for dim", 3); + AddAssert($"is current dim {userDim}", () => container.DimEqual(userDim)); + + AddStep("set lighten during break", () => lightenDuringBreaks.Value = true); + AddWaitStep("wait for dim", 3); + AddAssert($"is current dim {expectedBreakDim}", () => container.DimEqual(expectedBreakDim)); + + AddStep("clear lighten during break", () => lightenDuringBreaks.Value = false); + AddWaitStep("wait for dim", 3); + AddAssert($"is current dim {userDim}", () => container.DimEqual(userDim)); + + AddStep("clear break", () => isBreakTime.Value = false); + AddStep("set lighten during break", () => lightenDuringBreaks.Value = true); + AddWaitStep("wait for dim", 3); + AddAssert($"is current dim {userDim}", () => container.DimEqual(userDim)); + } + + private class TestUserDimContainer : UserDimContainer + { + public bool DimEqual(float expectedDimLevel) => Content.Colour == OsuColour.Gray(1f - expectedDimLevel); + + public new Bindable UserDimLevel => base.UserDimLevel; + } + } +} diff --git a/osu.Game/Graphics/Containers/UserDimContainer.cs b/osu.Game/Graphics/Containers/UserDimContainer.cs index 20f5a4fd83..dcc8a52e9d 100644 --- a/osu.Game/Graphics/Containers/UserDimContainer.cs +++ b/osu.Game/Graphics/Containers/UserDimContainer.cs @@ -16,6 +16,9 @@ namespace osu.Game.Graphics.Containers /// public abstract class UserDimContainer : Container { + /// + /// Amount of lightening to apply to current dim level during break times. + /// private const float break_lighten_amount = 0.3f; protected const double BACKGROUND_FADE_DURATION = 800; @@ -34,7 +37,7 @@ namespace osu.Game.Graphics.Containers /// Whether player is in break time. /// Must be bound to to allow for dim adjustments in gameplay. /// - internal readonly IBindable IsBreakTime = new Bindable(); + public readonly IBindable IsBreakTime = new Bindable(); /// /// Whether the content of this container is currently being displayed. From 61265ed452d14b2353bc5957ae5af6b25e442a2b Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Thu, 12 Dec 2019 00:52:33 +0300 Subject: [PATCH 0263/1829] Increase the waiting steps --- .../Visual/Background/TestSceneUserDimContainer.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs index 0aad9bed75..bdbfacaea2 100644 --- a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs +++ b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs @@ -55,20 +55,20 @@ namespace osu.Game.Tests.Visual.Background AddStep($"set dim level {userDim}", () => container.UserDimLevel.Value = userDim); AddStep("set break", () => isBreakTime.Value = true); - AddWaitStep("wait for dim", 3); + AddWaitStep("wait for dim", 5); AddAssert($"is current dim {userDim}", () => container.DimEqual(userDim)); AddStep("set lighten during break", () => lightenDuringBreaks.Value = true); - AddWaitStep("wait for dim", 3); + AddWaitStep("wait for dim", 5); AddAssert($"is current dim {expectedBreakDim}", () => container.DimEqual(expectedBreakDim)); AddStep("clear lighten during break", () => lightenDuringBreaks.Value = false); - AddWaitStep("wait for dim", 3); + AddWaitStep("wait for dim", 5); AddAssert($"is current dim {userDim}", () => container.DimEqual(userDim)); AddStep("clear break", () => isBreakTime.Value = false); AddStep("set lighten during break", () => lightenDuringBreaks.Value = true); - AddWaitStep("wait for dim", 3); + AddWaitStep("wait for dim", 5); AddAssert($"is current dim {userDim}", () => container.DimEqual(userDim)); } From 035a53cb9e2edb0f232369aa933989b2c0b3fdb8 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Thu, 12 Dec 2019 01:10:43 +0300 Subject: [PATCH 0264/1829] Schedule SetUp() --- osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs index bdbfacaea2..25c11d2292 100644 --- a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs +++ b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs @@ -41,11 +41,11 @@ namespace osu.Game.Tests.Visual.Background } [SetUp] - public void SetUp() + public void SetUp() => Schedule(() => { isBreakTime.Value = false; lightenDuringBreaks.Value = false; - } + }); [TestCase(0.6f, 0.3f)] [TestCase(0.2f, 0.0f)] From 472fa9822cc7409487935ea6e0657e8c52a38594 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 12 Dec 2019 08:25:51 +0800 Subject: [PATCH 0265/1829] make ModDifficultyAdjust incompatible with ModEasy and ModHardRock --- osu.Game/Rulesets/Mods/ModEasy.cs | 2 +- osu.Game/Rulesets/Mods/ModHardRock.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModEasy.cs b/osu.Game/Rulesets/Mods/ModEasy.cs index a55ebc51d6..7a34b2de3c 100644 --- a/osu.Game/Rulesets/Mods/ModEasy.cs +++ b/osu.Game/Rulesets/Mods/ModEasy.cs @@ -19,7 +19,7 @@ namespace osu.Game.Rulesets.Mods public override ModType Type => ModType.DifficultyReduction; public override double ScoreMultiplier => 0.5; public override bool Ranked => true; - public override Type[] IncompatibleMods => new[] { typeof(ModHardRock) }; + public override Type[] IncompatibleMods => new[] { typeof(ModHardRock), typeof(ModDifficultyAdjust) }; private int retries = 2; diff --git a/osu.Game/Rulesets/Mods/ModHardRock.cs b/osu.Game/Rulesets/Mods/ModHardRock.cs index 2044cbeae2..2bcac3e4a9 100644 --- a/osu.Game/Rulesets/Mods/ModHardRock.cs +++ b/osu.Game/Rulesets/Mods/ModHardRock.cs @@ -15,7 +15,7 @@ namespace osu.Game.Rulesets.Mods public override IconUsage Icon => OsuIcon.ModHardrock; public override ModType Type => ModType.DifficultyIncrease; public override string Description => "Everything just got a bit harder..."; - public override Type[] IncompatibleMods => new[] { typeof(ModEasy) }; + public override Type[] IncompatibleMods => new[] { typeof(ModEasy), typeof(ModDifficultyAdjust) }; public void ApplyToDifficulty(BeatmapDifficulty difficulty) { From 606bd33aa664fa4d50d15c0b23340ddb52c64274 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 12 Dec 2019 13:04:32 +0900 Subject: [PATCH 0266/1829] Use beatmap background in editor --- osu.Game/Screens/Edit/Editor.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/osu.Game/Screens/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs index 33a4c48d28..1b4964c068 100644 --- a/osu.Game/Screens/Edit/Editor.cs +++ b/osu.Game/Screens/Edit/Editor.cs @@ -4,7 +4,6 @@ using System; using osuTK.Graphics; using osu.Framework.Screens; -using osu.Game.Screens.Backgrounds; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; @@ -29,14 +28,13 @@ using osu.Game.Input.Bindings; using osu.Game.Screens.Edit.Compose; using osu.Game.Screens.Edit.Setup; using osu.Game.Screens.Edit.Timing; +using osu.Game.Screens.Play; using osu.Game.Users; namespace osu.Game.Screens.Edit { - public class Editor : OsuScreen, IKeyBindingHandler + public class Editor : ScreenWithBeatmapBackground, IKeyBindingHandler { - protected override BackgroundScreen CreateBackground() => new BackgroundScreenCustom(@"Backgrounds/bg4"); - public override float BackgroundParallaxAmount => 0.1f; public override bool AllowBackButton => false; @@ -250,8 +248,12 @@ namespace osu.Game.Screens.Edit { base.OnEntering(last); + // todo: temporary. we want to be applying dim using the UserDimContainer eventually. Background.FadeColour(Color4.DarkGray, 500); + Background.EnableUserDim.Value = false; + Background.BlurAmount.Value = 0; + resetTrack(true); } From b6c86d512a5c7c5ffcb87b362e956c6457b8fd1d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 12 Dec 2019 13:28:27 +0900 Subject: [PATCH 0267/1829] 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 3cd4dc48bf..252570a150 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 530d62f583..a07348b57c 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 fb753b8c6f..544bba3963 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From 76a7e9cde82d8a37670802b6ea2d1583b79b7c1c Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 12 Dec 2019 14:04:57 +0900 Subject: [PATCH 0268/1829] Catch file exception in test reset --- osu.Game/Database/DatabaseContextFactory.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/osu.Game/Database/DatabaseContextFactory.cs b/osu.Game/Database/DatabaseContextFactory.cs index bb6bef1c50..1ed5fb3268 100644 --- a/osu.Game/Database/DatabaseContextFactory.cs +++ b/osu.Game/Database/DatabaseContextFactory.cs @@ -149,7 +149,15 @@ namespace osu.Game.Database lock (writeLock) { recycleThreadContexts(); - storage.DeleteDatabase(database_name); + + try + { + storage.DeleteDatabase(database_name); + } + catch + { + // for now we are not sure why file handles are kept open by EF, but this is generally only used in testing + } } } } From ad2528d4d2e03a1c355c84934dd73104b1afb81e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 12 Dec 2019 15:05:29 +0900 Subject: [PATCH 0269/1829] Hide key counter along with other hud elements Also tidies up HUD hide logic and protects against incorrect hiding. --- osu.Game/Screens/Play/HUDOverlay.cs | 60 ++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 19 deletions(-) diff --git a/osu.Game/Screens/Play/HUDOverlay.cs b/osu.Game/Screens/Play/HUDOverlay.cs index 0f9edf5606..35157fca58 100644 --- a/osu.Game/Screens/Play/HUDOverlay.cs +++ b/osu.Game/Screens/Play/HUDOverlay.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using osu.Framework.Allocation; using osu.Framework.Bindables; +using osu.Framework.Extensions.IEnumerableExtensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Input.Events; @@ -43,8 +44,15 @@ namespace osu.Game.Screens.Play private readonly DrawableRuleset drawableRuleset; private readonly IReadOnlyList mods; - private Bindable showHud; + /// + /// Whether the elements that can optionally be hidden should be visible. + /// + public Bindable ShowHud { get; } = new BindableBool(); + + private Bindable configShowHud; + private readonly Container visibilityContainer; + private readonly BindableBool replayLoaded = new BindableBool(); private static bool hasShownNotificationOnce; @@ -53,6 +61,8 @@ namespace osu.Game.Screens.Play private readonly Container topScoreContainer; + private IEnumerable hideTargets => new Drawable[] { visibilityContainer, KeyCounter }; + public HUDOverlay(ScoreProcessor scoreProcessor, DrawableRuleset drawableRuleset, IReadOnlyList mods) { this.scoreProcessor = scoreProcessor; @@ -73,8 +83,6 @@ namespace osu.Game.Screens.Play Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, AutoSizeAxes = Axes.Both, - AutoSizeDuration = 200, - AutoSizeEasing = Easing.Out, Children = new Drawable[] { AccuracyCounter = CreateAccuracyCounter(), @@ -95,6 +103,8 @@ namespace osu.Game.Screens.Play Origin = Anchor.BottomRight, Position = -new Vector2(5, TwoLayerButton.SIZE_RETRACTED.Y), AutoSizeAxes = Axes.Both, + AutoSizeDuration = 150, + AutoSizeEasing = Easing.OutQuint, Direction = FillDirection.Vertical, Children = new Drawable[] { @@ -118,8 +128,29 @@ namespace osu.Game.Screens.Play ModDisplay.Current.Value = mods; - showHud = config.GetBindable(OsuSetting.ShowInterface); - showHud.BindValueChanged(visible => visibilityContainer.FadeTo(visible.NewValue ? 1 : 0, duration, easing), true); + configShowHud = config.GetBindable(OsuSetting.ShowInterface); + + if (!configShowHud.Value && !hasShownNotificationOnce) + { + hasShownNotificationOnce = true; + + notificationOverlay?.Post(new SimpleNotification + { + Text = @"The score overlay is currently disabled. You can toggle this by pressing Shift+Tab." + }); + } + + // start all elements hidden + hideTargets.ForEach(d => d.Hide()); + } + + public override void Hide() => throw new InvalidOperationException($"{nameof(HUDOverlay)} should not be hidden as it will remove the ability of a user to quit. Use {nameof(ShowHud)} instead."); + + protected override void LoadComplete() + { + base.LoadComplete(); + + ShowHud.BindValueChanged(visible => hideTargets.ForEach(d => d.FadeTo(visible.NewValue ? 1 : 0, duration, easing))); ShowHealthbar.BindValueChanged(healthBar => { @@ -135,20 +166,11 @@ namespace osu.Game.Screens.Play } }, true); - if (!showHud.Value && !hasShownNotificationOnce) + configShowHud.BindValueChanged(visible => { - hasShownNotificationOnce = true; - - notificationOverlay?.Post(new SimpleNotification - { - Text = @"The score overlay is currently disabled. You can toggle this by pressing Shift+Tab." - }); - } - } - - protected override void LoadComplete() - { - base.LoadComplete(); + if (!ShowHud.Disabled) + ShowHud.Value = visible.NewValue; + }, true); replayLoaded.BindValueChanged(replayLoadedValueChanged, true); } @@ -189,7 +211,7 @@ namespace osu.Game.Screens.Play switch (e.Key) { case Key.Tab: - showHud.Value = !showHud.Value; + configShowHud.Value = !configShowHud.Value; return true; } } From ffb5cdc6aef7056a8430cd76f79299d5ee087d84 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 12 Dec 2019 14:19:04 +0900 Subject: [PATCH 0270/1829] Hide settings overlay along with other HUD-hidden content --- osu.Game/Screens/Play/HUDOverlay.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Play/HUDOverlay.cs b/osu.Game/Screens/Play/HUDOverlay.cs index 35157fca58..64c3cddf2a 100644 --- a/osu.Game/Screens/Play/HUDOverlay.cs +++ b/osu.Game/Screens/Play/HUDOverlay.cs @@ -94,9 +94,9 @@ namespace osu.Game.Screens.Play Progress = CreateProgress(), ModDisplay = CreateModsContainer(), HitErrorDisplay = CreateHitErrorDisplayOverlay(), + PlayerSettingsOverlay = CreatePlayerSettingsOverlay(), } }, - PlayerSettingsOverlay = CreatePlayerSettingsOverlay(), new FillFlowContainer { Anchor = Anchor.BottomRight, From 6a539e307a2bdab3517ee840ee542dcf462c162c Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Thu, 12 Dec 2019 09:20:56 +0300 Subject: [PATCH 0271/1829] Split into small tests and add more cases --- .../Background/TestSceneUserDimContainer.cs | 40 +++++++++++++------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs index 25c11d2292..03206402c3 100644 --- a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs +++ b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs @@ -53,23 +53,37 @@ namespace osu.Game.Tests.Visual.Background public void TestBreakLightening(float userDim, float expectedBreakDim) { AddStep($"set dim level {userDim}", () => container.UserDimLevel.Value = userDim); + AddStep("set lighten during break", () => lightenDuringBreaks.Value = true); AddStep("set break", () => isBreakTime.Value = true); - AddWaitStep("wait for dim", 5); - AddAssert($"is current dim {userDim}", () => container.DimEqual(userDim)); - - AddStep("set lighten during break", () => lightenDuringBreaks.Value = true); - AddWaitStep("wait for dim", 5); - AddAssert($"is current dim {expectedBreakDim}", () => container.DimEqual(expectedBreakDim)); - - AddStep("clear lighten during break", () => lightenDuringBreaks.Value = false); - AddWaitStep("wait for dim", 5); - AddAssert($"is current dim {userDim}", () => container.DimEqual(userDim)); - + AddUntilStep("has lightened", () => container.DimEqual(expectedBreakDim)); AddStep("clear break", () => isBreakTime.Value = false); + AddUntilStep("not lightened", () => container.DimEqual(userDim)); + } + + [Test] + public void TestEnableSettingDuringBreak() + { + AddStep("set dim level 0.6", () => container.UserDimLevel.Value = 0.6f); + + AddStep("set break", () => isBreakTime.Value = true); + AddUntilStep("not lightened", () => container.DimEqual(0.6f)); AddStep("set lighten during break", () => lightenDuringBreaks.Value = true); - AddWaitStep("wait for dim", 5); - AddAssert($"is current dim {userDim}", () => container.DimEqual(userDim)); + AddUntilStep("has lightened", () => container.DimEqual(0.3f)); + } + + [Test] + public void TestDisableSettingDuringBreak() + { + AddStep("set dim level 0.6", () => container.UserDimLevel.Value = 0.6f); + AddStep("set lighten during break", () => lightenDuringBreaks.Value = true); + + AddStep("set break", () => isBreakTime.Value = true); + AddUntilStep("has lightened", () => container.DimEqual(0.3f)); + AddStep("clear lighten during break", () => lightenDuringBreaks.Value = false); + AddUntilStep("not lightened", () => container.DimEqual(0.6f)); + AddStep("clear break", () => isBreakTime.Value = false); + AddUntilStep("not lightened", () => container.DimEqual(0.6f)); } private class TestUserDimContainer : UserDimContainer From 4c4199269c267c32ee651369e183c0e4d62a477a Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 12 Dec 2019 15:25:37 +0900 Subject: [PATCH 0272/1829] Use protected constructors --- osu.Game/Rulesets/Mods/ModDaycore.cs | 2 +- osu.Game/Rulesets/Mods/ModNightcore.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModDaycore.cs b/osu.Game/Rulesets/Mods/ModDaycore.cs index 9445895fb0..71a666414f 100644 --- a/osu.Game/Rulesets/Mods/ModDaycore.cs +++ b/osu.Game/Rulesets/Mods/ModDaycore.cs @@ -18,7 +18,7 @@ namespace osu.Game.Rulesets.Mods private readonly BindableNumber tempoAdjust = new BindableDouble(1); private readonly BindableNumber freqAdjust = new BindableDouble(1); - public ModDaycore() + protected ModDaycore() { SpeedChange.BindValueChanged(val => { diff --git a/osu.Game/Rulesets/Mods/ModNightcore.cs b/osu.Game/Rulesets/Mods/ModNightcore.cs index 9b27925693..c14e02e64d 100644 --- a/osu.Game/Rulesets/Mods/ModNightcore.cs +++ b/osu.Game/Rulesets/Mods/ModNightcore.cs @@ -19,7 +19,7 @@ namespace osu.Game.Rulesets.Mods private readonly BindableNumber tempoAdjust = new BindableDouble(1); private readonly BindableNumber freqAdjust = new BindableDouble(1); - public ModNightcore() + protected ModNightcore() { SpeedChange.BindValueChanged(val => { From 5861eca80d291bbfd6261ca732d4101012a86713 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 12 Dec 2019 15:58:11 +0900 Subject: [PATCH 0273/1829] Make DrawableRuleset take a converted beatmap --- .../TestSceneDrawableHitObjects.cs | 2 +- osu.Game.Rulesets.Catch/CatchRuleset.cs | 2 +- .../UI/DrawableCatchRuleset.cs | 4 +- .../Edit/DrawableManiaEditRuleset.cs | 2 +- .../Edit/ManiaHitObjectComposer.cs | 2 +- osu.Game.Rulesets.Mania/ManiaRuleset.cs | 2 +- .../UI/DrawableManiaRuleset.cs | 2 +- .../Edit/DrawableOsuEditRuleset.cs | 2 +- .../Edit/OsuHitObjectComposer.cs | 2 +- osu.Game.Rulesets.Osu/OsuRuleset.cs | 2 +- .../UI/DrawableOsuRuleset.cs | 2 +- .../TestSceneTaikoPlayfield.cs | 3 +- osu.Game.Rulesets.Taiko/TaikoRuleset.cs | 2 +- .../UI/DrawableTaikoRuleset.cs | 2 +- .../TestSceneDrawableScrollingRuleset.cs | 6 +-- osu.Game/Beatmaps/DummyWorkingBeatmap.cs | 2 +- osu.Game/Beatmaps/IWorkingBeatmap.cs | 2 +- osu.Game/Beatmaps/WorkingBeatmap.cs | 4 +- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 8 ++-- osu.Game/Rulesets/Ruleset.cs | 2 +- osu.Game/Rulesets/UI/DrawableRuleset.cs | 18 ++++---- .../UI/Scrolling/DrawableScrollingRuleset.cs | 2 +- osu.Game/Screens/Play/Player.cs | 41 ++++++++++--------- 23 files changed, 59 insertions(+), 57 deletions(-) diff --git a/osu.Game.Rulesets.Catch.Tests/TestSceneDrawableHitObjects.cs b/osu.Game.Rulesets.Catch.Tests/TestSceneDrawableHitObjects.cs index 0369b6db4e..02a017ce45 100644 --- a/osu.Game.Rulesets.Catch.Tests/TestSceneDrawableHitObjects.cs +++ b/osu.Game.Rulesets.Catch.Tests/TestSceneDrawableHitObjects.cs @@ -64,7 +64,7 @@ namespace osu.Game.Rulesets.Catch.Tests RelativeSizeAxes = Axes.Both, Children = new[] { - drawableRuleset = new DrawableCatchRuleset(new CatchRuleset(), beatmap, Array.Empty()) + drawableRuleset = new DrawableCatchRuleset(new CatchRuleset(), beatmap.GetPlayableBeatmap(new CatchRuleset().RulesetInfo)) } }); diff --git a/osu.Game.Rulesets.Catch/CatchRuleset.cs b/osu.Game.Rulesets.Catch/CatchRuleset.cs index 71d68ace94..506fa23fa9 100644 --- a/osu.Game.Rulesets.Catch/CatchRuleset.cs +++ b/osu.Game.Rulesets.Catch/CatchRuleset.cs @@ -23,7 +23,7 @@ namespace osu.Game.Rulesets.Catch { public class CatchRuleset : Ruleset { - public override DrawableRuleset CreateDrawableRulesetWith(IWorkingBeatmap beatmap, IReadOnlyList mods) => new DrawableCatchRuleset(this, beatmap, mods); + public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => new DrawableCatchRuleset(this, beatmap, mods); public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new CatchBeatmapConverter(beatmap); public override IBeatmapProcessor CreateBeatmapProcessor(IBeatmap beatmap) => new CatchBeatmapProcessor(beatmap); diff --git a/osu.Game.Rulesets.Catch/UI/DrawableCatchRuleset.cs b/osu.Game.Rulesets.Catch/UI/DrawableCatchRuleset.cs index f5bddeb2cb..278ff97195 100644 --- a/osu.Game.Rulesets.Catch/UI/DrawableCatchRuleset.cs +++ b/osu.Game.Rulesets.Catch/UI/DrawableCatchRuleset.cs @@ -25,11 +25,11 @@ namespace osu.Game.Rulesets.Catch.UI protected override bool UserScrollSpeedAdjustment => false; - public DrawableCatchRuleset(Ruleset ruleset, IWorkingBeatmap beatmap, IReadOnlyList mods) + public DrawableCatchRuleset(Ruleset ruleset, IBeatmap beatmap, IReadOnlyList mods = null) : base(ruleset, beatmap, mods) { Direction.Value = ScrollingDirection.Down; - TimeRange.Value = BeatmapDifficulty.DifficultyRange(beatmap.Beatmap.BeatmapInfo.BaseDifficulty.ApproachRate, 1800, 1200, 450); + TimeRange.Value = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.ApproachRate, 1800, 1200, 450); } public override ScoreProcessor CreateScoreProcessor() => new CatchScoreProcessor(Beatmap); diff --git a/osu.Game.Rulesets.Mania/Edit/DrawableManiaEditRuleset.cs b/osu.Game.Rulesets.Mania/Edit/DrawableManiaEditRuleset.cs index 97d8aaa052..445df79f6f 100644 --- a/osu.Game.Rulesets.Mania/Edit/DrawableManiaEditRuleset.cs +++ b/osu.Game.Rulesets.Mania/Edit/DrawableManiaEditRuleset.cs @@ -16,7 +16,7 @@ namespace osu.Game.Rulesets.Mania.Edit { public new IScrollingInfo ScrollingInfo => base.ScrollingInfo; - public DrawableManiaEditRuleset(Ruleset ruleset, IWorkingBeatmap beatmap, IReadOnlyList mods) + public DrawableManiaEditRuleset(Ruleset ruleset, IBeatmap beatmap, IReadOnlyList mods) : base(ruleset, beatmap, mods) { } diff --git a/osu.Game.Rulesets.Mania/Edit/ManiaHitObjectComposer.cs b/osu.Game.Rulesets.Mania/Edit/ManiaHitObjectComposer.cs index 0bfe6f9517..1632b6a583 100644 --- a/osu.Game.Rulesets.Mania/Edit/ManiaHitObjectComposer.cs +++ b/osu.Game.Rulesets.Mania/Edit/ManiaHitObjectComposer.cs @@ -42,7 +42,7 @@ namespace osu.Game.Rulesets.Mania.Edit public int TotalColumns => ((ManiaPlayfield)drawableRuleset.Playfield).TotalColumns; - protected override DrawableRuleset CreateDrawableRuleset(Ruleset ruleset, IWorkingBeatmap beatmap, IReadOnlyList mods) + protected override DrawableRuleset CreateDrawableRuleset(Ruleset ruleset, IBeatmap beatmap, IReadOnlyList mods = null) { drawableRuleset = new DrawableManiaEditRuleset(ruleset, beatmap, mods); diff --git a/osu.Game.Rulesets.Mania/ManiaRuleset.cs b/osu.Game.Rulesets.Mania/ManiaRuleset.cs index c74a292331..a96c79b40b 100644 --- a/osu.Game.Rulesets.Mania/ManiaRuleset.cs +++ b/osu.Game.Rulesets.Mania/ManiaRuleset.cs @@ -31,7 +31,7 @@ namespace osu.Game.Rulesets.Mania { public class ManiaRuleset : Ruleset { - public override DrawableRuleset CreateDrawableRulesetWith(IWorkingBeatmap beatmap, IReadOnlyList mods) => new DrawableManiaRuleset(this, beatmap, mods); + public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => new DrawableManiaRuleset(this, beatmap, mods); public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new ManiaBeatmapConverter(beatmap); public override PerformanceCalculator CreatePerformanceCalculator(WorkingBeatmap beatmap, ScoreInfo score) => new ManiaPerformanceCalculator(this, beatmap, score); diff --git a/osu.Game.Rulesets.Mania/UI/DrawableManiaRuleset.cs b/osu.Game.Rulesets.Mania/UI/DrawableManiaRuleset.cs index 0607bf0abd..cf1970c28b 100644 --- a/osu.Game.Rulesets.Mania/UI/DrawableManiaRuleset.cs +++ b/osu.Game.Rulesets.Mania/UI/DrawableManiaRuleset.cs @@ -39,7 +39,7 @@ namespace osu.Game.Rulesets.Mania.UI private readonly Bindable configDirection = new Bindable(); - public DrawableManiaRuleset(Ruleset ruleset, IWorkingBeatmap beatmap, IReadOnlyList mods) + public DrawableManiaRuleset(Ruleset ruleset, IBeatmap beatmap, IReadOnlyList mods = null) : base(ruleset, beatmap, mods) { BarLines = new BarLineGenerator(Beatmap).BarLines; diff --git a/osu.Game.Rulesets.Osu/Edit/DrawableOsuEditRuleset.cs b/osu.Game.Rulesets.Osu/Edit/DrawableOsuEditRuleset.cs index 3437af8c1e..22b4c3e82e 100644 --- a/osu.Game.Rulesets.Osu/Edit/DrawableOsuEditRuleset.cs +++ b/osu.Game.Rulesets.Osu/Edit/DrawableOsuEditRuleset.cs @@ -22,7 +22,7 @@ namespace osu.Game.Rulesets.Osu.Edit /// private const double editor_hit_object_fade_out_extension = 500; - public DrawableOsuEditRuleset(Ruleset ruleset, IWorkingBeatmap beatmap, IReadOnlyList mods) + public DrawableOsuEditRuleset(Ruleset ruleset, IBeatmap beatmap, IReadOnlyList mods) : base(ruleset, beatmap, mods) { } diff --git a/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs b/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs index 812afaaa24..675b09fc6d 100644 --- a/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs +++ b/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs @@ -27,7 +27,7 @@ namespace osu.Game.Rulesets.Osu.Edit { } - protected override DrawableRuleset CreateDrawableRuleset(Ruleset ruleset, IWorkingBeatmap beatmap, IReadOnlyList mods) + protected override DrawableRuleset CreateDrawableRuleset(Ruleset ruleset, IBeatmap beatmap, IReadOnlyList mods = null) => new DrawableOsuEditRuleset(ruleset, beatmap, mods); protected override IReadOnlyList CompositionTools => new HitObjectCompositionTool[] diff --git a/osu.Game.Rulesets.Osu/OsuRuleset.cs b/osu.Game.Rulesets.Osu/OsuRuleset.cs index fa69cec78d..2f43909332 100644 --- a/osu.Game.Rulesets.Osu/OsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/OsuRuleset.cs @@ -31,7 +31,7 @@ namespace osu.Game.Rulesets.Osu { public class OsuRuleset : Ruleset { - public override DrawableRuleset CreateDrawableRulesetWith(IWorkingBeatmap beatmap, IReadOnlyList mods) => new DrawableOsuRuleset(this, beatmap, mods); + public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => new DrawableOsuRuleset(this, beatmap, mods); public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new OsuBeatmapConverter(beatmap); public override IBeatmapProcessor CreateBeatmapProcessor(IBeatmap beatmap) => new OsuBeatmapProcessor(beatmap); diff --git a/osu.Game.Rulesets.Osu/UI/DrawableOsuRuleset.cs b/osu.Game.Rulesets.Osu/UI/DrawableOsuRuleset.cs index 5bb728a9b0..039d38e4fd 100644 --- a/osu.Game.Rulesets.Osu/UI/DrawableOsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/UI/DrawableOsuRuleset.cs @@ -26,7 +26,7 @@ namespace osu.Game.Rulesets.Osu.UI { protected new OsuRulesetConfigManager Config => (OsuRulesetConfigManager)base.Config; - public DrawableOsuRuleset(Ruleset ruleset, IWorkingBeatmap beatmap, IReadOnlyList mods) + public DrawableOsuRuleset(Ruleset ruleset, IBeatmap beatmap, IReadOnlyList mods = null) : base(ruleset, beatmap, mods) { } diff --git a/osu.Game.Rulesets.Taiko.Tests/TestSceneTaikoPlayfield.cs b/osu.Game.Rulesets.Taiko.Tests/TestSceneTaikoPlayfield.cs index 8522a42739..b2c8c7feda 100644 --- a/osu.Game.Rulesets.Taiko.Tests/TestSceneTaikoPlayfield.cs +++ b/osu.Game.Rulesets.Taiko.Tests/TestSceneTaikoPlayfield.cs @@ -11,7 +11,6 @@ using osu.Framework.MathUtils; using osu.Game.Beatmaps; using osu.Game.Beatmaps.ControlPoints; using osu.Game.Rulesets.Judgements; -using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Objects.Drawables; using osu.Game.Rulesets.Scoring; @@ -91,7 +90,7 @@ namespace osu.Game.Rulesets.Taiko.Tests Origin = Anchor.Centre, RelativeSizeAxes = Axes.X, Height = 768, - Children = new[] { drawableRuleset = new DrawableTaikoRuleset(new TaikoRuleset(), beatmap, Array.Empty()) } + Children = new[] { drawableRuleset = new DrawableTaikoRuleset(new TaikoRuleset(), beatmap.GetPlayableBeatmap(new TaikoRuleset().RulesetInfo)) } }); } diff --git a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs index b2655f592c..ab9c95159c 100644 --- a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs +++ b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs @@ -23,7 +23,7 @@ namespace osu.Game.Rulesets.Taiko { public class TaikoRuleset : Ruleset { - public override DrawableRuleset CreateDrawableRulesetWith(IWorkingBeatmap beatmap, IReadOnlyList mods) => new DrawableTaikoRuleset(this, beatmap, mods); + public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => new DrawableTaikoRuleset(this, beatmap, mods); public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new TaikoBeatmapConverter(beatmap); public const string SHORT_NAME = "taiko"; diff --git a/osu.Game.Rulesets.Taiko/UI/DrawableTaikoRuleset.cs b/osu.Game.Rulesets.Taiko/UI/DrawableTaikoRuleset.cs index d4ea9a043a..2233658428 100644 --- a/osu.Game.Rulesets.Taiko/UI/DrawableTaikoRuleset.cs +++ b/osu.Game.Rulesets.Taiko/UI/DrawableTaikoRuleset.cs @@ -27,7 +27,7 @@ namespace osu.Game.Rulesets.Taiko.UI protected override bool UserScrollSpeedAdjustment => false; - public DrawableTaikoRuleset(Ruleset ruleset, IWorkingBeatmap beatmap, IReadOnlyList mods) + public DrawableTaikoRuleset(Ruleset ruleset, IBeatmap beatmap, IReadOnlyList mods = null) : base(ruleset, beatmap, mods) { Direction.Value = ScrollingDirection.Left; diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs index 684e79b3f5..071dc381e0 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs @@ -172,7 +172,7 @@ namespace osu.Game.Tests.Visual.Gameplay { var ruleset = new TestScrollingRuleset(); - drawableRuleset = (TestDrawableScrollingRuleset)ruleset.CreateDrawableRulesetWith(CreateWorkingBeatmap(beatmap), Array.Empty()); + drawableRuleset = (TestDrawableScrollingRuleset)ruleset.CreateDrawableRulesetWith(beatmap); drawableRuleset.FrameStablePlayback = false; overrideAction?.Invoke(drawableRuleset); @@ -201,7 +201,7 @@ namespace osu.Game.Tests.Visual.Gameplay public override IEnumerable GetModsFor(ModType type) => throw new NotImplementedException(); - public override DrawableRuleset CreateDrawableRulesetWith(IWorkingBeatmap beatmap, IReadOnlyList mods) => new TestDrawableScrollingRuleset(this, beatmap, mods); + public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => new TestDrawableScrollingRuleset(this, beatmap, mods); public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new TestBeatmapConverter(beatmap); @@ -222,7 +222,7 @@ namespace osu.Game.Tests.Visual.Gameplay public new Bindable TimeRange => base.TimeRange; - public TestDrawableScrollingRuleset(Ruleset ruleset, IWorkingBeatmap beatmap, IReadOnlyList mods) + public TestDrawableScrollingRuleset(Ruleset ruleset, IBeatmap beatmap, IReadOnlyList mods = null) : base(ruleset, beatmap, mods) { TimeRange.Value = time_range; diff --git a/osu.Game/Beatmaps/DummyWorkingBeatmap.cs b/osu.Game/Beatmaps/DummyWorkingBeatmap.cs index a3ab01c886..59a27e3fde 100644 --- a/osu.Game/Beatmaps/DummyWorkingBeatmap.cs +++ b/osu.Game/Beatmaps/DummyWorkingBeatmap.cs @@ -57,7 +57,7 @@ namespace osu.Game.Beatmaps { public override IEnumerable GetModsFor(ModType type) => new Mod[] { }; - public override DrawableRuleset CreateDrawableRulesetWith(IWorkingBeatmap beatmap, IReadOnlyList mods) + public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) { throw new NotImplementedException(); } diff --git a/osu.Game/Beatmaps/IWorkingBeatmap.cs b/osu.Game/Beatmaps/IWorkingBeatmap.cs index a087a52ada..5f1f0d1e40 100644 --- a/osu.Game/Beatmaps/IWorkingBeatmap.cs +++ b/osu.Game/Beatmaps/IWorkingBeatmap.cs @@ -62,6 +62,6 @@ namespace osu.Game.Beatmaps /// The s to apply to the . /// The converted . /// If could not be converted to . - IBeatmap GetPlayableBeatmap(RulesetInfo ruleset, IReadOnlyList mods); + IBeatmap GetPlayableBeatmap(RulesetInfo ruleset, IReadOnlyList mods = null); } } diff --git a/osu.Game/Beatmaps/WorkingBeatmap.cs b/osu.Game/Beatmaps/WorkingBeatmap.cs index 4452d26fcd..1255665cf0 100644 --- a/osu.Game/Beatmaps/WorkingBeatmap.cs +++ b/osu.Game/Beatmaps/WorkingBeatmap.cs @@ -99,8 +99,10 @@ namespace osu.Game.Beatmaps /// The applicable . protected virtual IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap, Ruleset ruleset) => ruleset.CreateBeatmapConverter(beatmap); - public IBeatmap GetPlayableBeatmap(RulesetInfo ruleset, IReadOnlyList mods) + public IBeatmap GetPlayableBeatmap(RulesetInfo ruleset, IReadOnlyList mods = null) { + mods ??= Array.Empty(); + var rulesetInstance = ruleset.CreateInstance(); IBeatmapConverter converter = CreateBeatmapConverter(Beatmap, rulesetInstance); diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index 9ac967ef74..22d94abcb9 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -48,7 +48,6 @@ namespace osu.Game.Rulesets.Edit [Resolved] private BindableBeatDivisor beatDivisor { get; set; } - private IWorkingBeatmap workingBeatmap; private Beatmap playableBeatmap; private IBeatmapProcessor beatmapProcessor; @@ -71,7 +70,7 @@ namespace osu.Game.Rulesets.Edit { try { - drawableRulesetWrapper = new DrawableEditRulesetWrapper(CreateDrawableRuleset(Ruleset, workingBeatmap, Array.Empty())) + drawableRulesetWrapper = new DrawableEditRulesetWrapper(CreateDrawableRuleset(Ruleset, playableBeatmap)) { Clock = framedClock, ProcessCustomClock = false @@ -145,8 +144,7 @@ namespace osu.Game.Rulesets.Edit { var parentWorkingBeatmap = parent.Get>().Value; - playableBeatmap = (Beatmap)parentWorkingBeatmap.GetPlayableBeatmap(Ruleset.RulesetInfo, Array.Empty()); - workingBeatmap = new EditorWorkingBeatmap(playableBeatmap, parentWorkingBeatmap); + playableBeatmap = (Beatmap)parentWorkingBeatmap.GetPlayableBeatmap(Ruleset.RulesetInfo); beatmapProcessor = Ruleset.CreateBeatmapProcessor(playableBeatmap); @@ -250,7 +248,7 @@ namespace osu.Game.Rulesets.Edit protected abstract IReadOnlyList CompositionTools { get; } - protected abstract DrawableRuleset CreateDrawableRuleset(Ruleset ruleset, IWorkingBeatmap beatmap, IReadOnlyList mods); + protected abstract DrawableRuleset CreateDrawableRuleset(Ruleset ruleset, IBeatmap beatmap, IReadOnlyList mods = null); public void BeginPlacement(HitObject hitObject) { diff --git a/osu.Game/Rulesets/Ruleset.cs b/osu.Game/Rulesets/Ruleset.cs index dd1b3615c7..45aa904b98 100644 --- a/osu.Game/Rulesets/Ruleset.cs +++ b/osu.Game/Rulesets/Ruleset.cs @@ -60,7 +60,7 @@ namespace osu.Game.Rulesets /// The s to apply. /// Unable to successfully load the beatmap to be usable with this ruleset. /// - public abstract DrawableRuleset CreateDrawableRulesetWith(IWorkingBeatmap beatmap, IReadOnlyList mods); + public abstract DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null); /// /// Creates a to convert a to one that is applicable for this . diff --git a/osu.Game/Rulesets/UI/DrawableRuleset.cs b/osu.Game/Rulesets/UI/DrawableRuleset.cs index 10657f6b39..5033fd0686 100644 --- a/osu.Game/Rulesets/UI/DrawableRuleset.cs +++ b/osu.Game/Rulesets/UI/DrawableRuleset.cs @@ -98,7 +98,7 @@ namespace osu.Game.Rulesets.UI /// /// The beatmap. /// - public Beatmap Beatmap; + public readonly Beatmap Beatmap; public override IEnumerable Objects => Beatmap.HitObjects; @@ -118,20 +118,22 @@ namespace osu.Game.Rulesets.UI /// Creates a ruleset visualisation for the provided ruleset and beatmap. /// /// The ruleset being represented. - /// The beatmap to create the hit renderer for. + /// The beatmap to create the hit renderer for. /// The s to apply. - protected DrawableRuleset(Ruleset ruleset, IWorkingBeatmap workingBeatmap, IReadOnlyList mods) + protected DrawableRuleset(Ruleset ruleset, IBeatmap beatmap, IReadOnlyList mods = null) : base(ruleset) { - if (workingBeatmap == null) - throw new ArgumentException("Beatmap cannot be null.", nameof(workingBeatmap)); + if (beatmap == null) + throw new ArgumentNullException(nameof(beatmap), "Beatmap cannot be null."); - this.mods = mods.ToArray(); + if (!(beatmap is Beatmap tBeatmap)) + throw new ArgumentException($"{GetType()} expected the beatmap to contain hitobjects of type {typeof(TObject)}.", nameof(beatmap)); + + Beatmap = tBeatmap; + this.mods = mods?.ToArray() ?? Array.Empty(); RelativeSizeAxes = Axes.Both; - Beatmap = (Beatmap)workingBeatmap.GetPlayableBeatmap(ruleset.RulesetInfo, mods); - KeyBindingInputManager = CreateInputManager(); playfield = new Lazy(CreatePlayfield); diff --git a/osu.Game/Rulesets/UI/Scrolling/DrawableScrollingRuleset.cs b/osu.Game/Rulesets/UI/Scrolling/DrawableScrollingRuleset.cs index cf714b5d46..fda1d7c723 100644 --- a/osu.Game/Rulesets/UI/Scrolling/DrawableScrollingRuleset.cs +++ b/osu.Game/Rulesets/UI/Scrolling/DrawableScrollingRuleset.cs @@ -85,7 +85,7 @@ namespace osu.Game.Rulesets.UI.Scrolling [Cached(Type = typeof(IScrollingInfo))] private readonly LocalScrollingInfo scrollingInfo; - protected DrawableScrollingRuleset(Ruleset ruleset, IWorkingBeatmap beatmap, IReadOnlyList mods) + protected DrawableScrollingRuleset(Ruleset ruleset, IBeatmap beatmap, IReadOnlyList mods = null) : base(ruleset, beatmap, mods) { scrollingInfo = new LocalScrollingInfo(); diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index 9f4ca7d817..b65d20dcbb 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -114,26 +114,31 @@ namespace osu.Game.Screens.Play Mods.Value = base.Mods.Value.Select(m => m.CreateCopy()).ToArray(); - WorkingBeatmap working = loadBeatmap(); + if (Beatmap.Value is DummyWorkingBeatmap) + return; - if (working == null) + IBeatmap playableBeatmap = loadPlayableBeatmap(); + + if (playableBeatmap == null) return; sampleRestart = audio.Samples.Get(@"Gameplay/restart"); mouseWheelDisabled = config.GetBindable(OsuSetting.MouseDisableWheel); + DrawableRuleset = ruleset.CreateDrawableRulesetWith(playableBeatmap, Mods.Value); + ScoreProcessor = DrawableRuleset.CreateScoreProcessor(); ScoreProcessor.Mods.BindTo(Mods); if (!ScoreProcessor.Mode.Disabled) config.BindWith(OsuSetting.ScoreDisplayMode, ScoreProcessor.Mode); - InternalChild = GameplayClockContainer = new GameplayClockContainer(working, Mods.Value, DrawableRuleset.GameplayStartTime); + InternalChild = GameplayClockContainer = new GameplayClockContainer(Beatmap.Value, Mods.Value, DrawableRuleset.GameplayStartTime); addUnderlayComponents(GameplayClockContainer); - addGameplayComponents(GameplayClockContainer, working); - addOverlayComponents(GameplayClockContainer, working); + addGameplayComponents(GameplayClockContainer, Beatmap.Value); + addOverlayComponents(GameplayClockContainer, Beatmap.Value); DrawableRuleset.HasReplayLoaded.BindValueChanged(_ => updatePauseOnFocusLostState(), true); @@ -250,36 +255,32 @@ namespace osu.Game.Screens.Play && !DrawableRuleset.HasReplayLoaded.Value && !breakOverlay.IsBreakTime.Value; - private WorkingBeatmap loadBeatmap() + private IBeatmap loadPlayableBeatmap() { - WorkingBeatmap working = Beatmap.Value; - if (working is DummyWorkingBeatmap) - return null; + IBeatmap playable; try { - var beatmap = working.Beatmap; - - if (beatmap == null) + if (Beatmap.Value.Beatmap == null) throw new InvalidOperationException("Beatmap was not loaded"); - rulesetInfo = Ruleset.Value ?? beatmap.BeatmapInfo.Ruleset; + rulesetInfo = Ruleset.Value ?? Beatmap.Value.BeatmapInfo.Ruleset; ruleset = rulesetInfo.CreateInstance(); try { - DrawableRuleset = ruleset.CreateDrawableRulesetWith(working, Mods.Value); + playable = Beatmap.Value.GetPlayableBeatmap(ruleset.RulesetInfo, Mods.Value); } catch (BeatmapInvalidForRulesetException) { - // we may fail to create a DrawableRuleset if the beatmap cannot be loaded with the user's preferred ruleset - // let's try again forcing the beatmap's ruleset. - rulesetInfo = beatmap.BeatmapInfo.Ruleset; + // A playable beatmap may not be creatable with the user's preferred ruleset, so try using the beatmap's default ruleset + rulesetInfo = Beatmap.Value.BeatmapInfo.Ruleset; ruleset = rulesetInfo.CreateInstance(); - DrawableRuleset = ruleset.CreateDrawableRulesetWith(Beatmap.Value, Mods.Value); + + playable = Beatmap.Value.GetPlayableBeatmap(rulesetInfo, Mods.Value); } - if (!DrawableRuleset.Objects.Any()) + if (playable.HitObjects.Count == 0) { Logger.Log("Beatmap contains no hit objects!", level: LogLevel.Error); return null; @@ -292,7 +293,7 @@ namespace osu.Game.Screens.Play return null; } - return working; + return playable; } private void performImmediateExit() From 59345c97e4d3ec412d4d1b519f3021eb3988d70c Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 12 Dec 2019 15:58:31 +0900 Subject: [PATCH 0274/1829] Remove now unnecessary editor working beatmap --- osu.Game/Screens/Edit/EditorWorkingBeatmap.cs | 49 ------------------- 1 file changed, 49 deletions(-) delete mode 100644 osu.Game/Screens/Edit/EditorWorkingBeatmap.cs diff --git a/osu.Game/Screens/Edit/EditorWorkingBeatmap.cs b/osu.Game/Screens/Edit/EditorWorkingBeatmap.cs deleted file mode 100644 index 4b8720fe1c..0000000000 --- a/osu.Game/Screens/Edit/EditorWorkingBeatmap.cs +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. -// See the LICENCE file in the repository root for full licence text. - -using System.Collections.Generic; -using osu.Framework.Audio.Track; -using osu.Framework.Graphics.Textures; -using osu.Framework.Graphics.Video; -using osu.Game.Beatmaps; -using osu.Game.Rulesets; -using osu.Game.Rulesets.Mods; -using osu.Game.Rulesets.Objects; -using osu.Game.Skinning; -using osu.Game.Storyboards; - -namespace osu.Game.Screens.Edit -{ - /// - /// Encapsulates a while providing an overridden . - /// - /// - public class EditorWorkingBeatmap : IWorkingBeatmap - where TObject : HitObject - { - private readonly Beatmap playableBeatmap; - private readonly WorkingBeatmap workingBeatmap; - - public EditorWorkingBeatmap(Beatmap playableBeatmap, WorkingBeatmap workingBeatmap) - { - this.playableBeatmap = playableBeatmap; - this.workingBeatmap = workingBeatmap; - } - - public IBeatmap Beatmap => workingBeatmap.Beatmap; - - public Texture Background => workingBeatmap.Background; - - public VideoSprite Video => workingBeatmap.Video; - - public Track Track => workingBeatmap.Track; - - public Waveform Waveform => workingBeatmap.Waveform; - - public Storyboard Storyboard => workingBeatmap.Storyboard; - - public ISkin Skin => workingBeatmap.Skin; - - public IBeatmap GetPlayableBeatmap(RulesetInfo ruleset, IReadOnlyList mods) => playableBeatmap; - } -} From 3ccfee64f6ff44c82f3b66270f790b951c745da5 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 12 Dec 2019 16:09:42 +0900 Subject: [PATCH 0275/1829] Add HUDOverlay tests --- .../Visual/Gameplay/TestSceneHUDOverlay.cs | 81 +++++++++++++++++++ osu.Game/Screens/Play/HUD/HitErrorDisplay.cs | 7 +- osu.Game/Screens/Play/HUDOverlay.cs | 19 +++-- 3 files changed, 98 insertions(+), 9 deletions(-) create mode 100644 osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs new file mode 100644 index 0000000000..39c42980ab --- /dev/null +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs @@ -0,0 +1,81 @@ +// 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 NUnit.Framework; +using osu.Framework.Allocation; +using osu.Framework.Graphics; +using osu.Game.Configuration; +using osu.Game.Rulesets.Mods; +using osu.Game.Screens.Play; + +namespace osu.Game.Tests.Visual.Gameplay +{ + public class TestSceneHUDOverlay : ManualInputManagerTestScene + { + private HUDOverlay hudOverlay; + + private Drawable hideTarget => hudOverlay.KeyCounter; // best way of checking hideTargets without exposing. + + [Resolved] + private OsuConfigManager config { get; set; } + + [Test] + public void TestShownByDefault() + { + createNew(); + + AddAssert("showhud is set", () => hudOverlay.ShowHud.Value); + + AddAssert("hidetarget is visible", () => hideTarget.IsPresent); + AddAssert("pause button is visible", () => hudOverlay.HoldToQuit.IsPresent); + } + + [Test] + public void TestFadesInOnLoadComplete() + { + float? initialAlpha = null; + + createNew(h => h.OnLoadComplete += _ => initialAlpha = hideTarget.Alpha); + AddUntilStep("wait for load", () => hudOverlay.IsAlive); + AddAssert("initial alpha was less than 1", () => initialAlpha != null && initialAlpha < 1); + } + + [Test] + public void TestHideExternally() + { + createNew(); + + AddStep("set showhud false", () => hudOverlay.ShowHud.Value = false); + + AddUntilStep("hidetarget is hidden", () => !hideTarget.IsPresent); + AddAssert("pause button is still visible", () => hudOverlay.HoldToQuit.IsPresent); + } + + [Test] + public void TestExternalHideDoesntAffectConfig() + { + bool originalConfigValue = false; + + createNew(); + + AddStep("get original config value", () => originalConfigValue = config.Get(OsuSetting.ShowInterface)); + + AddStep("set showhud false", () => hudOverlay.ShowHud.Value = false); + AddAssert("config unchanged", () => originalConfigValue == config.Get(OsuSetting.ShowInterface)); + + AddStep("set showhud true", () => hudOverlay.ShowHud.Value = true); + AddAssert("config unchanged", () => originalConfigValue == config.Get(OsuSetting.ShowInterface)); + } + + private void createNew(Action action = null) + { + AddStep("create overlay", () => + { + Child = hudOverlay = new HUDOverlay(null, null, Array.Empty()); + + action?.Invoke(hudOverlay); + }); + } + } +} diff --git a/osu.Game/Screens/Play/HUD/HitErrorDisplay.cs b/osu.Game/Screens/Play/HUD/HitErrorDisplay.cs index 54556f8648..6196ce4026 100644 --- a/osu.Game/Screens/Play/HUD/HitErrorDisplay.cs +++ b/osu.Game/Screens/Play/HUD/HitErrorDisplay.cs @@ -31,7 +31,8 @@ namespace osu.Game.Screens.Play.HUD RelativeSizeAxes = Axes.Both; - processor.NewJudgement += onNewJudgement; + if (processor != null) + processor.NewJudgement += onNewJudgement; } [BackgroundDependencyLoader] @@ -96,7 +97,9 @@ namespace osu.Game.Screens.Play.HUD protected override void Dispose(bool isDisposing) { base.Dispose(isDisposing); - processor.NewJudgement -= onNewJudgement; + + if (processor != null) + processor.NewJudgement -= onNewJudgement; } } } diff --git a/osu.Game/Screens/Play/HUDOverlay.cs b/osu.Game/Screens/Play/HUDOverlay.cs index 64c3cddf2a..7df780b678 100644 --- a/osu.Game/Screens/Play/HUDOverlay.cs +++ b/osu.Game/Screens/Play/HUDOverlay.cs @@ -118,13 +118,18 @@ namespace osu.Game.Screens.Play [BackgroundDependencyLoader(true)] private void load(OsuConfigManager config, NotificationOverlay notificationOverlay) { - BindProcessor(scoreProcessor); - BindDrawableRuleset(drawableRuleset); + if (scoreProcessor != null) + BindProcessor(scoreProcessor); - Progress.Objects = drawableRuleset.Objects; - Progress.AllowSeeking = drawableRuleset.HasReplayLoaded.Value; - Progress.RequestSeek = time => RequestSeek(time); - Progress.ReferenceClock = drawableRuleset.FrameStableClock; + if (drawableRuleset != null) + { + BindDrawableRuleset(drawableRuleset); + + Progress.Objects = drawableRuleset.Objects; + Progress.AllowSeeking = drawableRuleset.HasReplayLoaded.Value; + Progress.RequestSeek = time => RequestSeek(time); + Progress.ReferenceClock = drawableRuleset.FrameStableClock; + } ModDisplay.Current.Value = mods; @@ -279,7 +284,7 @@ namespace osu.Game.Screens.Play Margin = new MarginPadding { Top = 20, Right = 10 }, }; - protected virtual HitErrorDisplay CreateHitErrorDisplayOverlay() => new HitErrorDisplay(scoreProcessor, drawableRuleset.FirstAvailableHitWindows); + protected virtual HitErrorDisplay CreateHitErrorDisplayOverlay() => new HitErrorDisplay(scoreProcessor, drawableRuleset?.FirstAvailableHitWindows); protected virtual PlayerSettingsOverlay CreatePlayerSettingsOverlay() => new PlayerSettingsOverlay(); From 94f3dbb2f65afef1aaff9f63a7070efa11f0985b Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 12 Dec 2019 16:09:50 +0900 Subject: [PATCH 0276/1829] Adjust transitions slightly --- osu.Game/Screens/Play/HUDOverlay.cs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/osu.Game/Screens/Play/HUDOverlay.cs b/osu.Game/Screens/Play/HUDOverlay.cs index 7df780b678..dc32fc7cd5 100644 --- a/osu.Game/Screens/Play/HUDOverlay.cs +++ b/osu.Game/Screens/Play/HUDOverlay.cs @@ -24,8 +24,8 @@ namespace osu.Game.Screens.Play { public class HUDOverlay : Container { - private const int duration = 250; - private const Easing easing = Easing.OutQuint; + private const int fade_duration = 400; + private const Easing fade_easing = Easing.Out; public readonly KeyCounterDisplay KeyCounter; public readonly RollingCounter ComboCounter; @@ -103,8 +103,8 @@ namespace osu.Game.Screens.Play Origin = Anchor.BottomRight, Position = -new Vector2(5, TwoLayerButton.SIZE_RETRACTED.Y), AutoSizeAxes = Axes.Both, - AutoSizeDuration = 150, - AutoSizeEasing = Easing.OutQuint, + AutoSizeDuration = fade_duration, + AutoSizeEasing = fade_easing, Direction = FillDirection.Vertical, Children = new Drawable[] { @@ -155,19 +155,19 @@ namespace osu.Game.Screens.Play { base.LoadComplete(); - ShowHud.BindValueChanged(visible => hideTargets.ForEach(d => d.FadeTo(visible.NewValue ? 1 : 0, duration, easing))); + ShowHud.BindValueChanged(visible => hideTargets.ForEach(d => d.FadeTo(visible.NewValue ? 1 : 0, fade_duration, fade_easing))); ShowHealthbar.BindValueChanged(healthBar => { if (healthBar.NewValue) { - HealthDisplay.FadeIn(duration, easing); - topScoreContainer.MoveToY(30, duration, easing); + HealthDisplay.FadeIn(fade_duration, fade_easing); + topScoreContainer.MoveToY(30, fade_duration, fade_easing); } else { - HealthDisplay.FadeOut(duration, easing); - topScoreContainer.MoveToY(0, duration, easing); + HealthDisplay.FadeOut(fade_duration, fade_easing); + topScoreContainer.MoveToY(0, fade_duration, fade_easing); } }, true); From e4297ffeaded24ea61f8fd188e7fb92215d70674 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 12 Dec 2019 15:09:55 +0900 Subject: [PATCH 0277/1829] Hide HUD in a better way --- osu.Game/Rulesets/Mods/ModCinema.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModCinema.cs b/osu.Game/Rulesets/Mods/ModCinema.cs index 5faa2f4f3e..5262813b08 100644 --- a/osu.Game/Rulesets/Mods/ModCinema.cs +++ b/osu.Game/Rulesets/Mods/ModCinema.cs @@ -30,8 +30,8 @@ namespace osu.Game.Rulesets.Mods public void ApplyToHUD(HUDOverlay overlay) { - overlay.AlwaysPresent = true; - overlay.Hide(); + overlay.ShowHud.Value = false; + overlay.ShowHud.Disabled = true; } public void ApplyToPlayer(Player player) From 99280db69487c1f0b8542031c8d6037fe875084e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 12 Dec 2019 15:16:34 +0900 Subject: [PATCH 0278/1829] Add note about AlwaysPresent requirement --- osu.Game/Rulesets/Mods/ModCinema.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game/Rulesets/Mods/ModCinema.cs b/osu.Game/Rulesets/Mods/ModCinema.cs index 5262813b08..1e4cf66711 100644 --- a/osu.Game/Rulesets/Mods/ModCinema.cs +++ b/osu.Game/Rulesets/Mods/ModCinema.cs @@ -16,6 +16,7 @@ namespace osu.Game.Rulesets.Mods { drawableRuleset.SetReplayScore(CreateReplayScore(drawableRuleset.Beatmap)); + // AlwaysPresent required for hitsounds drawableRuleset.Playfield.AlwaysPresent = true; drawableRuleset.Playfield.Hide(); } From d15f49f60f33c5beba335b75f0e0b8d40fc8ee10 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 12 Dec 2019 15:14:59 +0900 Subject: [PATCH 0279/1829] Also hide the break overlay --- osu.Game/Rulesets/Mods/ModCinema.cs | 2 ++ osu.Game/Screens/Play/Player.cs | 10 +++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModCinema.cs b/osu.Game/Rulesets/Mods/ModCinema.cs index 1e4cf66711..3487d49e08 100644 --- a/osu.Game/Rulesets/Mods/ModCinema.cs +++ b/osu.Game/Rulesets/Mods/ModCinema.cs @@ -41,6 +41,8 @@ namespace osu.Game.Rulesets.Mods player.DimmableVideo.IgnoreUserSettings.Value = true; player.DimmableStoryboard.IgnoreUserSettings.Value = true; + + player.BreakOverlay.Hide(); } } } diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index 7abd60b3c1..1d1252063f 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -69,7 +69,7 @@ namespace osu.Game.Screens.Play private SampleChannel sampleRestart; - private BreakOverlay breakOverlay; + public BreakOverlay BreakOverlay; protected ScoreProcessor ScoreProcessor { get; private set; } protected DrawableRuleset DrawableRuleset { get; private set; } @@ -149,7 +149,7 @@ namespace osu.Game.Screens.Play foreach (var mod in Mods.Value.OfType()) mod.ApplyToScoreProcessor(ScoreProcessor); - breakOverlay.IsBreakTime.ValueChanged += _ => updatePauseOnFocusLostState(); + BreakOverlay.IsBreakTime.ValueChanged += _ => updatePauseOnFocusLostState(); } private void addUnderlayComponents(Container target) @@ -183,7 +183,7 @@ namespace osu.Game.Screens.Play { target.AddRange(new[] { - breakOverlay = new BreakOverlay(working.Beatmap.BeatmapInfo.LetterboxInBreaks, DrawableRuleset.GameplayStartTime, ScoreProcessor) + BreakOverlay = new BreakOverlay(working.Beatmap.BeatmapInfo.LetterboxInBreaks, DrawableRuleset.GameplayStartTime, ScoreProcessor) { Anchor = Anchor.Centre, Origin = Anchor.Centre, @@ -248,7 +248,7 @@ namespace osu.Game.Screens.Play private void updatePauseOnFocusLostState() => HUDOverlay.HoldToQuit.PauseOnFocusLost = PauseOnFocusLost && !DrawableRuleset.HasReplayLoaded.Value - && !breakOverlay.IsBreakTime.Value; + && !BreakOverlay.IsBreakTime.Value; private WorkingBeatmap loadBeatmap() { @@ -477,7 +477,7 @@ namespace osu.Game.Screens.Play PauseOverlay.Hide(); // breaks and time-based conditions may allow instant resume. - if (breakOverlay.IsBreakTime.Value) + if (BreakOverlay.IsBreakTime.Value) completeResume(); else DrawableRuleset.RequestResume(completeResume); From 1807fc9b6153e7c02881bae15efd00c5545c4d88 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 12 Dec 2019 16:48:33 +0900 Subject: [PATCH 0280/1829] Fix testcase not converting beatmap --- .../Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs index 071dc381e0..c958932730 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs @@ -172,7 +172,7 @@ namespace osu.Game.Tests.Visual.Gameplay { var ruleset = new TestScrollingRuleset(); - drawableRuleset = (TestDrawableScrollingRuleset)ruleset.CreateDrawableRulesetWith(beatmap); + drawableRuleset = (TestDrawableScrollingRuleset)ruleset.CreateDrawableRulesetWith(CreateWorkingBeatmap(beatmap).GetPlayableBeatmap(ruleset.RulesetInfo)); drawableRuleset.FrameStablePlayback = false; overrideAction?.Invoke(drawableRuleset); From a0792f82e8bb8031cd97c22cdadd6109a0445e04 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 12 Dec 2019 17:05:47 +0900 Subject: [PATCH 0281/1829] Re-jig mod select logic to reduce event fires --- osu.Game/Overlays/Mods/ModSelectOverlay.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Mods/ModSelectOverlay.cs b/osu.Game/Overlays/Mods/ModSelectOverlay.cs index e8ea43e3f2..a6f9642a56 100644 --- a/osu.Game/Overlays/Mods/ModSelectOverlay.cs +++ b/osu.Game/Overlays/Mods/ModSelectOverlay.cs @@ -360,8 +360,8 @@ namespace osu.Game.Overlays.Mods { base.LoadComplete(); + SelectedMods.BindValueChanged(selectedModsChanged); Ruleset.BindValueChanged(rulesetChanged, true); - SelectedMods.BindValueChanged(selectedModsChanged, true); } protected override void PopOut() From c4bc57484fdee19279ac616d690891494d67e0a4 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 12 Dec 2019 17:12:01 +0900 Subject: [PATCH 0282/1829] Fix test logic and add regression test --- .../UserInterface/TestSceneModSettings.cs | 84 ++++++++++++++----- 1 file changed, 62 insertions(+), 22 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs index fc44c5f595..8117a4ad78 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs @@ -2,15 +2,20 @@ // See the LICENCE file in the repository root for full licence text. using System; +using System.Collections.Generic; using System.Linq; -using osu.Framework.Allocation; +using NUnit.Framework; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Game.Beatmaps; using osu.Game.Configuration; using osu.Game.Graphics.UserInterface; using osu.Game.Overlays.Mods; +using osu.Game.Rulesets; +using osu.Game.Rulesets.Difficulty; using osu.Game.Rulesets.Mods; +using osu.Game.Rulesets.UI; namespace osu.Game.Tests.Visual.UserInterface { @@ -18,28 +23,51 @@ namespace osu.Game.Tests.Visual.UserInterface { private TestModSelectOverlay modSelect; - [BackgroundDependencyLoader] - private void load() + Mod testCustomisableMod = new TestModCustomisable1(); + + [Test] + public void TestButtonShowsOnCustomisableMod() { - Add(modSelect = new TestModSelectOverlay - { - RelativeSizeAxes = Axes.X, - Origin = Anchor.BottomCentre, - Anchor = Anchor.BottomCentre, - }); + createModSelect(); - var testMod = new TestModCustomisable1(); - - AddStep("open", modSelect.Show); + AddStep("open", () => modSelect.Show()); AddAssert("button disabled", () => !modSelect.CustomiseButton.Enabled.Value); AddUntilStep("wait for button load", () => modSelect.ButtonsLoaded); - AddStep("select mod", () => modSelect.SelectMod(testMod)); + AddStep("select mod", () => modSelect.SelectMod(testCustomisableMod)); AddAssert("button enabled", () => modSelect.CustomiseButton.Enabled.Value); AddStep("open Customisation", () => modSelect.CustomiseButton.Click()); - AddStep("deselect mod", () => modSelect.SelectMod(testMod)); + AddStep("deselect mod", () => modSelect.SelectMod(testCustomisableMod)); AddAssert("controls hidden", () => modSelect.ModSettingsContainer.Alpha == 0); } + [Test] + public void TestButtonShowsOnModAlreadyAdded() + { + AddStep("set active mods", () => Mods.Value = new List { testCustomisableMod }); + + createModSelect(); + + AddAssert("mods still active", () => Mods.Value.Count == 1); + + AddStep("open", () => modSelect.Show()); + AddAssert("button enabled", () => modSelect.CustomiseButton.Enabled.Value); + } + + private void createModSelect() + { + AddStep("create mod select", () => + { + Ruleset.Value = new TestRulesetInfo(); + + Child = modSelect = new TestModSelectOverlay + { + RelativeSizeAxes = Axes.X, + Origin = Anchor.BottomCentre, + Anchor = Anchor.BottomCentre, + }; + }); + } + private class TestModSelectOverlay : ModSelectOverlay { public new Container ModSettingsContainer => base.ModSettingsContainer; @@ -50,24 +78,36 @@ namespace osu.Game.Tests.Visual.UserInterface public void SelectMod(Mod mod) => ModSectionsContainer.Children.Single(s => s.ModType == mod.Type) .ButtonsContainer.OfType().Single(b => b.Mods.Any(m => m.GetType() == mod.GetType())).SelectNext(1); + } - protected override void LoadComplete() + public class TestRulesetInfo : RulesetInfo + { + public override Ruleset CreateInstance() => new TestCustomisableModRuleset(); + + public class TestCustomisableModRuleset : Ruleset { - base.LoadComplete(); - - foreach (var section in ModSectionsContainer) + public override IEnumerable GetModsFor(ModType type) { - if (section.ModType == ModType.Conversion) + if (type == ModType.Conversion) { - section.Mods = new Mod[] + return new Mod[] { new TestModCustomisable1(), new TestModCustomisable2() }; } - else - section.Mods = Array.Empty(); + + return Array.Empty(); } + + public override DrawableRuleset CreateDrawableRulesetWith(IWorkingBeatmap beatmap, IReadOnlyList mods) => throw new NotImplementedException(); + + public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => throw new NotImplementedException(); + + public override DifficultyCalculator CreateDifficultyCalculator(WorkingBeatmap beatmap) => throw new NotImplementedException(); + + public override string Description { get; } + public override string ShortName { get; } } } From 623ab1ef3be8f3ef21b71797622894690b21d735 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 12 Dec 2019 17:28:31 +0900 Subject: [PATCH 0283/1829] Update time ramp preview on setting change --- osu.Game/Rulesets/Mods/ModTimeRamp.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/osu.Game/Rulesets/Mods/ModTimeRamp.cs b/osu.Game/Rulesets/Mods/ModTimeRamp.cs index e10afa7d7c..5276c196f7 100644 --- a/osu.Game/Rulesets/Mods/ModTimeRamp.cs +++ b/osu.Game/Rulesets/Mods/ModTimeRamp.cs @@ -35,6 +35,12 @@ namespace osu.Game.Rulesets.Mods private Track track; + public ModTimeRamp() + { + // for preview purpose at song select. eventually we'll want to be able to update every frame. + FinalRate.BindValueChanged(val => applyAdjustment(1), true); + } + public void ApplyToTrack(Track track) { this.track = track; From 81c849303853cdcc328793b39a440cc76844f477 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Thu, 12 Dec 2019 12:16:19 +0300 Subject: [PATCH 0284/1829] Split combo colour decoding to small test cases --- osu.Game.Tests/Skins/LegacySkinDecoderTest.cs | 69 ++++++++++--------- 1 file changed, 38 insertions(+), 31 deletions(-) diff --git a/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs b/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs index 003b3f5e56..cb2af359b9 100644 --- a/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs +++ b/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs @@ -13,43 +13,21 @@ namespace osu.Game.Tests.Skins [TestFixture] public class LegacySkinDecoderTest { - [TestCase(true)] - [TestCase(false)] - [TestCase(false, false)] - public void TestDecodeSkinColours(bool hasColours, bool canFallback = true) + public void TestDecodeSkinColours() { var decoder = new LegacySkinDecoder(); - using (var resStream = TestResources.OpenResource(hasColours ? "skin.ini" : "skin-empty.ini")) + using (var resStream = TestResources.OpenResource("skin.ini")) using (var stream = new LineBufferedReader(resStream)) { - var skinConfiguration = decoder.Decode(stream); - skinConfiguration.AllowDefaultComboColoursFallback = canFallback; - - var comboColors = skinConfiguration.ComboColours; - - if (!canFallback && !hasColours) + var comboColors = decoder.Decode(stream).ComboColours; + var expectedColors = new List { - Assert.IsNull(comboColors); - return; - } - - List expectedColors; - - if (hasColours) - { - expectedColors = new List - { - new Color4(142, 199, 255, 255), - new Color4(255, 128, 128, 255), - new Color4(128, 255, 255, 255), - new Color4(100, 100, 100, 100), - }; - } - else - { - expectedColors = SkinConfiguration.DefaultComboColours; - } + new Color4(142, 199, 255, 255), + new Color4(255, 128, 128, 255), + new Color4(128, 255, 255, 255), + new Color4(100, 100, 100, 100), + }; Assert.AreEqual(expectedColors.Count, comboColors.Count); for (int i = 0; i < expectedColors.Count; i++) @@ -57,6 +35,35 @@ namespace osu.Game.Tests.Skins } } + public void TestDecodeEmptySkinColours() + { + var decoder = new LegacySkinDecoder(); + + using (var resStream = TestResources.OpenResource("skin-empty.ini")) + using (var stream = new LineBufferedReader(resStream)) + { + var comboColors = decoder.Decode(stream).ComboColours; + var expectedColors = SkinConfiguration.DefaultComboColours; + + Assert.AreEqual(expectedColors.Count, comboColors.Count); + for (int i = 0; i < expectedColors.Count; i++) + Assert.AreEqual(expectedColors[i], comboColors[i]); + } + } + + public void TestDecodeEmptySkinColoursNoFallback() + { + var decoder = new LegacySkinDecoder(); + + using (var resStream = TestResources.OpenResource("skin-empty.ini")) + using (var stream = new LineBufferedReader(resStream)) + { + var skinConfiguration = decoder.Decode(stream); + skinConfiguration.AllowDefaultComboColoursFallback = false; + Assert.IsNull(skinConfiguration.ComboColours); + } + } + [Test] public void TestDecodeGeneral() { From be000e13e445ff6c63c0b43b3551e5eb34607992 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 10 Dec 2019 20:44:45 +0900 Subject: [PATCH 0285/1829] Implement initial legacy beatmap encoding support --- .../Formats/LegacyBeatmapEncoderTest.cs | 142 +++++++ .../Beatmaps/Formats/LegacyBeatmapEncoder.cs | 375 ++++++++++++++++++ 2 files changed, 517 insertions(+) create mode 100644 osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapEncoderTest.cs create mode 100644 osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs diff --git a/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapEncoderTest.cs b/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapEncoderTest.cs new file mode 100644 index 0000000000..c4a3877c1c --- /dev/null +++ b/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapEncoderTest.cs @@ -0,0 +1,142 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System.IO; +using System.Linq; +using NUnit.Framework; +using osu.Game.Audio; +using osu.Game.Beatmaps; +using osu.Game.Beatmaps.Formats; +using osu.Game.IO; +using osu.Game.Rulesets.Objects.Types; +using osu.Game.Tests.Resources; +using osuTK; + +namespace osu.Game.Tests.Beatmaps.Formats +{ + [TestFixture] + public class LegacyBeatmapEncoderTest + { + private const string normal = "Soleily - Renatus (Gamu) [Insane].osu"; + + [Test] + public void TestDecodeMetadata() + { + var beatmap = decode(normal); + var meta = beatmap.BeatmapInfo.Metadata; + Assert.AreEqual(241526, beatmap.BeatmapInfo.BeatmapSet.OnlineBeatmapSetID); + Assert.AreEqual("Soleily", meta.Artist); + Assert.AreEqual("Soleily", meta.ArtistUnicode); + Assert.AreEqual("03. Renatus - Soleily 192kbps.mp3", meta.AudioFile); + Assert.AreEqual("Gamu", meta.AuthorString); + Assert.AreEqual("machinetop_background.jpg", meta.BackgroundFile); + Assert.AreEqual(164471, meta.PreviewTime); + Assert.AreEqual(string.Empty, meta.Source); + Assert.AreEqual("MBC7 Unisphere 地球ヤバイEP Chikyu Yabai", meta.Tags); + Assert.AreEqual("Renatus", meta.Title); + Assert.AreEqual("Renatus", meta.TitleUnicode); + } + + [Test] + public void TestDecodeGeneral() + { + var beatmap = decode(normal); + var beatmapInfo = beatmap.BeatmapInfo; + Assert.AreEqual(0, beatmapInfo.AudioLeadIn); + Assert.AreEqual(false, beatmapInfo.Countdown); + Assert.AreEqual(0.7f, beatmapInfo.StackLeniency); + Assert.AreEqual(false, beatmapInfo.SpecialStyle); + Assert.IsTrue(beatmapInfo.RulesetID == 0); + Assert.AreEqual(false, beatmapInfo.LetterboxInBreaks); + Assert.AreEqual(false, beatmapInfo.WidescreenStoryboard); + } + + [Test] + public void TestDecodeEditor() + { + var beatmap = decode(normal); + var beatmapInfo = beatmap.BeatmapInfo; + + int[] expectedBookmarks = + { + 11505, 22054, 32604, 43153, 53703, 64252, 74802, 85351, + 95901, 106450, 116999, 119637, 130186, 140735, 151285, + 161834, 164471, 175020, 185570, 196119, 206669, 209306 + }; + Assert.AreEqual(expectedBookmarks.Length, beatmapInfo.Bookmarks.Length); + for (int i = 0; i < expectedBookmarks.Length; i++) + Assert.AreEqual(expectedBookmarks[i], beatmapInfo.Bookmarks[i]); + Assert.AreEqual(1.8, beatmapInfo.DistanceSpacing); + Assert.AreEqual(4, beatmapInfo.BeatDivisor); + Assert.AreEqual(4, beatmapInfo.GridSize); + Assert.AreEqual(2, beatmapInfo.TimelineZoom); + } + + [Test] + public void TestDecodeDifficulty() + { + var beatmap = decode(normal); + var difficulty = beatmap.BeatmapInfo.BaseDifficulty; + Assert.AreEqual(6.5f, difficulty.DrainRate); + Assert.AreEqual(4, difficulty.CircleSize); + Assert.AreEqual(8, difficulty.OverallDifficulty); + Assert.AreEqual(9, difficulty.ApproachRate); + Assert.AreEqual(1.8, difficulty.SliderMultiplier); + Assert.AreEqual(2, difficulty.SliderTickRate); + } + + [Test] + public void TestDecodeHitObjects() + { + var beatmap = decode(normal); + + var curveData = beatmap.HitObjects[0] as IHasCurve; + var positionData = beatmap.HitObjects[0] as IHasPosition; + + Assert.IsNotNull(positionData); + Assert.IsNotNull(curveData); + Assert.AreEqual(new Vector2(192, 168), positionData.Position); + Assert.AreEqual(956, beatmap.HitObjects[0].StartTime); + Assert.IsTrue(beatmap.HitObjects[0].Samples.Any(s => s.Name == HitSampleInfo.HIT_NORMAL)); + + positionData = beatmap.HitObjects[1] as IHasPosition; + + Assert.IsNotNull(positionData); + Assert.AreEqual(new Vector2(304, 56), positionData.Position); + Assert.AreEqual(1285, beatmap.HitObjects[1].StartTime); + Assert.IsTrue(beatmap.HitObjects[1].Samples.Any(s => s.Name == HitSampleInfo.HIT_CLAP)); + } + + private Beatmap decode(string filename) + { + decode(filename, out Beatmap jsonDecoded); + return jsonDecoded; + } + + private Beatmap decode(string filename, out Beatmap decoded) + { + using (var stream = TestResources.OpenResource(filename)) + using (var sr = new LineBufferedReader(stream)) + { + var legacyDecoded = new LegacyBeatmapDecoder { ApplyOffsets = false }.Decode(sr); + + using (var ms = new MemoryStream()) + using (var sw = new StreamWriter(ms)) + using (var sr2 = new LineBufferedReader(ms)) + { + new LegacyBeatmapEncoder(legacyDecoded).Encode(sw); + sw.Flush(); + + ms.Position = 0; + + string result = sr2.ReadToEnd(); + + ms.Position = 0; + + decoded = new LegacyBeatmapDecoder { ApplyOffsets = false }.Decode(sr2); + return legacyDecoded; + } + } + } + } +} diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs new file mode 100644 index 0000000000..1dc29ba5db --- /dev/null +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -0,0 +1,375 @@ +// 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 System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using osu.Game.Audio; +using osu.Game.Beatmaps.ControlPoints; +using osu.Game.Beatmaps.Legacy; +using osu.Game.Rulesets.Objects; +using osu.Game.Rulesets.Objects.Types; + +namespace osu.Game.Beatmaps.Formats +{ + public class LegacyBeatmapEncoder + { + public const int LATEST_VERSION = 14234; + + private readonly IBeatmap beatmap; + + public LegacyBeatmapEncoder(IBeatmap beatmap) + { + this.beatmap = beatmap; + + if (beatmap.BeatmapInfo.RulesetID < 0 || beatmap.BeatmapInfo.RulesetID > 3) + throw new ArgumentException("Only beatmaps in the osu, taiko, catch, or mania rulesets can be encoded to the legacy beatmap format.", nameof(beatmap)); + } + + public void Encode(TextWriter writer) + { + writer.WriteLine($"osu file format v{LATEST_VERSION}"); + + writer.WriteLine(); + handleGeneral(writer); + + writer.WriteLine(); + handleEditor(writer); + + writer.WriteLine(); + handleMetadata(writer); + + writer.WriteLine(); + handleDifficulty(writer); + + writer.WriteLine(); + handleEvents(writer); + + writer.WriteLine(); + handleTimingPoints(writer); + + writer.WriteLine(); + handleHitObjects(writer); + } + + private void handleGeneral(TextWriter writer) + { + writer.WriteLine("[General]"); + + writer.WriteLine(FormattableString.Invariant($"AudioFilename: {Path.GetFileName(beatmap.Metadata.AudioFile)}")); + writer.WriteLine(FormattableString.Invariant($"AudioLeadIn: {beatmap.BeatmapInfo.AudioLeadIn}")); + writer.WriteLine(FormattableString.Invariant($"PreviewTime: {beatmap.Metadata.PreviewTime}")); + // Todo: Not all countdown types are supported by lazer yet + writer.WriteLine(FormattableString.Invariant($"Countdown: {(beatmap.BeatmapInfo.Countdown ? "1" : "0")}")); + writer.WriteLine(FormattableString.Invariant($"SampleSet: {(int)toLegacySampleBank(beatmap.ControlPointInfo.SamplePoints[0].SampleBank)}")); + writer.WriteLine(FormattableString.Invariant($"StackLeniency: {beatmap.BeatmapInfo.StackLeniency}")); + writer.WriteLine(FormattableString.Invariant($"Mode: {beatmap.BeatmapInfo.RulesetID}")); + writer.WriteLine(FormattableString.Invariant($"LetterboxInBreaks: {(beatmap.BeatmapInfo.LetterboxInBreaks ? "1" : "0")}")); + // if (beatmap.BeatmapInfo.UseSkinSprites) + // writer.WriteLine(@"UseSkinSprites: 1"); + // if (b.AlwaysShowPlayfield) + // writer.WriteLine(@"AlwaysShowPlayfield: 1"); + // if (b.OverlayPosition != OverlayPosition.NoChange) + // writer.WriteLine(@"OverlayPosition: " + b.OverlayPosition); + // if (!string.IsNullOrEmpty(b.SkinPreference)) + // writer.WriteLine(@"SkinPreference:" + b.SkinPreference); + // if (b.EpilepsyWarning) + // writer.WriteLine(@"EpilepsyWarning: 1"); + // if (b.CountdownOffset > 0) + // writer.WriteLine(@"CountdownOffset: " + b.CountdownOffset.ToString()); + if (beatmap.BeatmapInfo.RulesetID == 3) + writer.WriteLine(FormattableString.Invariant($"SpecialStyle: {(beatmap.BeatmapInfo.SpecialStyle ? "1" : "0")}")); + writer.WriteLine(FormattableString.Invariant($"WidescreenStoryboard: {(beatmap.BeatmapInfo.WidescreenStoryboard ? "1" : "0")}")); + // if (b.SamplesMatchPlaybackRate) + // writer.WriteLine(@"SamplesMatchPlaybackRate: 1"); + } + + private void handleEditor(TextWriter writer) + { + writer.WriteLine("[Editor]"); + + if (beatmap.BeatmapInfo.Bookmarks.Length > 0) + writer.WriteLine(FormattableString.Invariant($"Bookmarks: {string.Join(',', beatmap.BeatmapInfo.Bookmarks)}")); + writer.WriteLine(FormattableString.Invariant($"DistanceSpacing: {beatmap.BeatmapInfo.DistanceSpacing}")); + writer.WriteLine(FormattableString.Invariant($"BeatDivisor: {beatmap.BeatmapInfo.BeatDivisor}")); + writer.WriteLine(FormattableString.Invariant($"GridSize: {beatmap.BeatmapInfo.GridSize}")); + writer.WriteLine(FormattableString.Invariant($"TimelineZoom: {beatmap.BeatmapInfo.TimelineZoom}")); + } + + private void handleMetadata(TextWriter writer) + { + writer.WriteLine("[Metadata]"); + + writer.WriteLine(FormattableString.Invariant($"Title: {beatmap.Metadata.Title}")); + writer.WriteLine(FormattableString.Invariant($"TitleUnicode: {beatmap.Metadata.TitleUnicode}")); + writer.WriteLine(FormattableString.Invariant($"Artist: {beatmap.Metadata.Artist}")); + writer.WriteLine(FormattableString.Invariant($"ArtistUnicode: {beatmap.Metadata.ArtistUnicode}")); + writer.WriteLine(FormattableString.Invariant($"Creator: {beatmap.Metadata.AuthorString}")); + writer.WriteLine(FormattableString.Invariant($"Version: {beatmap.Metadata.Artist}")); + writer.WriteLine(FormattableString.Invariant($"Source: {beatmap.Metadata.Source}")); + writer.WriteLine(FormattableString.Invariant($"Tags: {beatmap.Metadata.Tags}")); + writer.WriteLine(FormattableString.Invariant($"BeatmapID: {beatmap.BeatmapInfo.OnlineBeatmapID ?? 0}")); + writer.WriteLine(FormattableString.Invariant($"BeatmapSetID: {beatmap.BeatmapInfo.BeatmapSet.OnlineBeatmapSetID ?? 0}")); + } + + private void handleDifficulty(TextWriter writer) + { + writer.WriteLine("[Difficulty]"); + + writer.WriteLine(FormattableString.Invariant($"HPDrainRate: {beatmap.BeatmapInfo.BaseDifficulty.DrainRate}")); + writer.WriteLine(FormattableString.Invariant($"CircleSize: {beatmap.BeatmapInfo.BaseDifficulty.CircleSize}")); + writer.WriteLine(FormattableString.Invariant($"OverallDifficulty: {beatmap.BeatmapInfo.BaseDifficulty.OverallDifficulty}")); + writer.WriteLine(FormattableString.Invariant($"ApproachRate: {beatmap.BeatmapInfo.BaseDifficulty.ApproachRate}")); + writer.WriteLine(FormattableString.Invariant($"SliderMultiplier: {beatmap.BeatmapInfo.BaseDifficulty.SliderMultiplier}")); + writer.WriteLine(FormattableString.Invariant($"SliderTickRate: {beatmap.BeatmapInfo.BaseDifficulty.SliderTickRate}")); + } + + private void handleEvents(TextWriter writer) + { + // Todo: Storyboard events + } + + private void handleTimingPoints(TextWriter writer) + { + if (beatmap.ControlPointInfo.Groups.Count == 0) + return; + + writer.WriteLine("[TimingPoints]"); + + foreach (var group in beatmap.ControlPointInfo.Groups) + { + var timingPoint = group.ControlPoints.OfType().FirstOrDefault(); + var difficultyPoint = beatmap.ControlPointInfo.DifficultyPointAt(group.Time); + var samplePoint = beatmap.ControlPointInfo.SamplePointAt(group.Time); + var effectPoint = beatmap.ControlPointInfo.EffectPointAt(group.Time); + + // Convert beat length the legacy format + double beatLength; + if (timingPoint != null) + beatLength = timingPoint.BeatLength; + else + beatLength = -100 / difficultyPoint.SpeedMultiplier; + + // Apply the control point to a hit sample to uncover legacy properties (e.g. suffix) + HitSampleInfo tempHitSample = samplePoint.ApplyTo(new HitSampleInfo()); + + // Convert effect flags to the legacy format + LegacyEffectFlags effectFlags = LegacyEffectFlags.None; + if (effectPoint.KiaiMode) + effectFlags |= LegacyEffectFlags.Kiai; + if (effectPoint.OmitFirstBarLine) + effectFlags |= LegacyEffectFlags.OmitFirstBarLine; + + writer.Write(FormattableString.Invariant($"{group.Time},")); + writer.Write(FormattableString.Invariant($"{beatLength},")); + writer.Write(FormattableString.Invariant($"{(int)beatmap.ControlPointInfo.TimingPointAt(group.Time).TimeSignature},")); + writer.Write(FormattableString.Invariant($"{(int)toLegacySampleBank(tempHitSample.Bank)},")); + writer.Write(FormattableString.Invariant($"{toLegacyCustomSampleBank(tempHitSample.Suffix)},")); + writer.Write(FormattableString.Invariant($"{tempHitSample.Volume},")); + writer.Write(FormattableString.Invariant($"{(timingPoint != null ? "1" : "0")},")); + writer.Write(FormattableString.Invariant($"{(int)effectFlags}")); + writer.Write("\n"); + } + } + + private void handleHitObjects(TextWriter writer) + { + if (beatmap.HitObjects.Count == 0) + return; + + writer.WriteLine("[HitObjects]"); + + foreach (var h in beatmap.HitObjects) + { + switch (beatmap.BeatmapInfo.RulesetID) + { + case 0: + handleOsuHitObject(writer, h); + break; + + case 1: + handleTaikoHitObject(writer, h); + break; + + case 2: + handleCatchHitObject(writer, h); + break; + + case 3: + handleManiaHitObject(writer, h); + break; + } + } + } + + private void handleOsuHitObject(TextWriter writer, HitObject hitObject) + { + var positionData = hitObject as IHasPosition; + var comboData = hitObject as IHasCombo; + + Debug.Assert(positionData != null); + Debug.Assert(comboData != null); + + LegacyHitObjectType hitObjectType = (LegacyHitObjectType)(comboData.ComboOffset << 4); + if (comboData.NewCombo) + hitObjectType |= LegacyHitObjectType.NewCombo; + + if (hitObject is IHasCurve _) + hitObjectType |= LegacyHitObjectType.Slider; + else if (hitObject is IHasEndTime _) + hitObjectType |= LegacyHitObjectType.Spinner; + else + hitObjectType |= LegacyHitObjectType.Circle; + + LegacyHitSoundType soundType = LegacyHitSoundType.Normal; + HitSampleInfo firstAdditionSound = hitObject.Samples.FirstOrDefault(s => s.Name != HitSampleInfo.HIT_NORMAL); + if (firstAdditionSound != null) + soundType |= toLegacyHitSound(firstAdditionSound.Name); + + writer.Write(FormattableString.Invariant($"{positionData.X},")); + writer.Write(FormattableString.Invariant($"{positionData.Y},")); + writer.Write(FormattableString.Invariant($"{hitObject.StartTime},")); + writer.Write(FormattableString.Invariant($"{(int)hitObjectType},")); + writer.Write(FormattableString.Invariant($"{(int)soundType},")); + + if (hitObject is IHasCurve curveData) + { + for (int i = 0; i < curveData.Path.ControlPoints.Count; i++) + { + PathControlPoint point = curveData.Path.ControlPoints[i]; + + switch (point.Type.Value) + { + case PathType.Bezier: + writer.Write("B|"); + break; + + case PathType.Catmull: + writer.Write("C|"); + break; + + case PathType.PerfectCurve: + writer.Write("P|"); + break; + + case PathType.Linear: + writer.Write("L|"); + break; + } + + writer.Write(FormattableString.Invariant($"{point.Position.Value.X}:{point.Position.Value.Y}")); + writer.Write(i != curveData.Path.ControlPoints.Count - 1 ? "|" : ","); + } + + writer.Write(FormattableString.Invariant($"{curveData.RepeatCount - 1},")); + writer.Write(FormattableString.Invariant($"{curveData.Path.Distance},")); + + for (int i = 0; i < curveData.NodeSamples.Count; i++) + { + LegacyHitSoundType type = LegacyHitSoundType.None; + + foreach (var sample in curveData.NodeSamples[i]) + type |= toLegacyHitSound(sample.Name); + + writer.Write(FormattableString.Invariant($"{(int)type}")); + writer.Write(i != curveData.NodeSamples.Count - 1 ? "|" : ","); + } + + for (int i = 0; i < curveData.NodeSamples.Count; i++) + { + writer.Write(getSampleBank(curveData.NodeSamples[i], true)); + writer.Write(i != curveData.NodeSamples.Count - 1 ? "|" : ","); + } + } + else if (hitObject is IHasEndTime endTimeData) + writer.Write(FormattableString.Invariant($"{endTimeData.EndTime},")); + + writer.Write(getSampleBank(hitObject.Samples)); + writer.Write(Environment.NewLine); + } + + private void handleTaikoHitObject(TextWriter writer, HitObject hitObject) + { + } + + private void handleCatchHitObject(TextWriter writer, HitObject hitObject) + { + } + + private void handleManiaHitObject(TextWriter writer, HitObject hitObject) + { + } + + private string getSampleBank(IList samples, bool banksOnly = false) + { + LegacySampleBank normalBank = toLegacySampleBank(samples.FirstOrDefault(s => s.Name == HitSampleInfo.HIT_NORMAL)?.Bank); + LegacySampleBank addBank = toLegacySampleBank(samples.FirstOrDefault(s => !string.IsNullOrEmpty(s.Name) && s.Name != HitSampleInfo.HIT_NORMAL)?.Bank); + + if (addBank == LegacySampleBank.None) + addBank = normalBank; + + string customSampleBank = toLegacyCustomSampleBank(samples.FirstOrDefault()?.Suffix); + string sampleFilename = samples.FirstOrDefault(s => string.IsNullOrEmpty(s.Name))?.LookupNames.First() ?? string.Empty; + + int volume = samples.First().Volume; + + StringBuilder sb = new StringBuilder(); + + sb.Append(FormattableString.Invariant($"{(int)normalBank}:")); + sb.Append(FormattableString.Invariant($"{(int)addBank}:")); + + if (!banksOnly) + { + sb.Append(FormattableString.Invariant($"{customSampleBank}:")); + sb.Append(FormattableString.Invariant($"{volume}:")); + sb.Append(FormattableString.Invariant($"{sampleFilename}")); + } + + return sb.ToString(); + } + + private LegacyHitSoundType toLegacyHitSound(string hitSoundName) + { + switch (hitSoundName) + { + case HitSampleInfo.HIT_NORMAL: + return LegacyHitSoundType.Normal; + + case HitSampleInfo.HIT_WHISTLE: + return LegacyHitSoundType.Whistle; + + case HitSampleInfo.HIT_FINISH: + return LegacyHitSoundType.Finish; + + case HitSampleInfo.HIT_CLAP: + return LegacyHitSoundType.Clap; + + default: + return LegacyHitSoundType.None; + } + } + + private LegacySampleBank toLegacySampleBank(string sampleBank) + { + switch (sampleBank?.ToLower()) + { + case "normal": + return LegacySampleBank.Normal; + + case "soft": + return LegacySampleBank.Soft; + + case "drum": + return LegacySampleBank.Drum; + + default: + return LegacySampleBank.None; + } + } + + private string toLegacyCustomSampleBank(string sampleSuffix) => string.IsNullOrEmpty(sampleSuffix) ? "0" : sampleSuffix; + } +} From 8f03599a62971f50443cbe772f8f89a96dcc6c6d Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 12 Dec 2019 18:40:33 +0900 Subject: [PATCH 0286/1829] Write default sampleset by name --- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index 1dc29ba5db..4011bf2d02 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -64,7 +64,7 @@ namespace osu.Game.Beatmaps.Formats writer.WriteLine(FormattableString.Invariant($"PreviewTime: {beatmap.Metadata.PreviewTime}")); // Todo: Not all countdown types are supported by lazer yet writer.WriteLine(FormattableString.Invariant($"Countdown: {(beatmap.BeatmapInfo.Countdown ? "1" : "0")}")); - writer.WriteLine(FormattableString.Invariant($"SampleSet: {(int)toLegacySampleBank(beatmap.ControlPointInfo.SamplePoints[0].SampleBank)}")); + writer.WriteLine(FormattableString.Invariant($"SampleSet: {toLegacySampleBank(beatmap.ControlPointInfo.SamplePoints[0].SampleBank)}")); writer.WriteLine(FormattableString.Invariant($"StackLeniency: {beatmap.BeatmapInfo.StackLeniency}")); writer.WriteLine(FormattableString.Invariant($"Mode: {beatmap.BeatmapInfo.RulesetID}")); writer.WriteLine(FormattableString.Invariant($"LetterboxInBreaks: {(beatmap.BeatmapInfo.LetterboxInBreaks ? "1" : "0")}")); From c3475a2ddeca1333053f204ebbdeef11bef510eb Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 12 Dec 2019 18:41:13 +0900 Subject: [PATCH 0287/1829] Write control points in absolute coordinates --- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index 4011bf2d02..bfbc3babed 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -260,7 +260,7 @@ namespace osu.Game.Beatmaps.Formats break; } - writer.Write(FormattableString.Invariant($"{point.Position.Value.X}:{point.Position.Value.Y}")); + writer.Write(FormattableString.Invariant($"{positionData.X + point.Position.Value.X}:{positionData.Y + point.Position.Value.Y}")); writer.Write(i != curveData.Path.ControlPoints.Count - 1 ? "|" : ","); } From d1dc3456d101fde973a84ac800c89601ece949ad Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 12 Dec 2019 18:42:48 +0900 Subject: [PATCH 0288/1829] Fix incorrect repeat point count --- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index bfbc3babed..23054838f8 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -264,7 +264,7 @@ namespace osu.Game.Beatmaps.Formats writer.Write(i != curveData.Path.ControlPoints.Count - 1 ? "|" : ","); } - writer.Write(FormattableString.Invariant($"{curveData.RepeatCount - 1},")); + writer.Write(FormattableString.Invariant($"{curveData.RepeatCount + 1},")); writer.Write(FormattableString.Invariant($"{curveData.Path.Distance},")); for (int i = 0; i < curveData.NodeSamples.Count; i++) From e09bbf0315643c4d8bd4c6b7ccfa19176780caab Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 12 Dec 2019 18:47:28 +0900 Subject: [PATCH 0289/1829] Implement background/video/break encoding --- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index 23054838f8..20706c73c1 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -129,7 +129,11 @@ namespace osu.Game.Beatmaps.Formats private void handleEvents(TextWriter writer) { - // Todo: Storyboard events + writer.WriteLine(FormattableString.Invariant($"{(int)LegacyEventType.Background},0,{beatmap.BeatmapInfo.Metadata.BackgroundFile}")); + writer.WriteLine(FormattableString.Invariant($"{(int)LegacyEventType.Video},0,{beatmap.BeatmapInfo.Metadata.VideoFile}")); + + foreach (var b in beatmap.Breaks) + writer.WriteLine(FormattableString.Invariant($"{(int)LegacyEventType.Break},{b.StartTime},{b.EndTime}")); } private void handleTimingPoints(TextWriter writer) From ebd778da2de92377a1e1c874f294d73d0b90494a Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Thu, 12 Dec 2019 12:48:07 +0300 Subject: [PATCH 0290/1829] More test splitting --- .../Skins/TestSceneSkinConfigurationLookup.cs | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs b/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs index fe96cbd633..8808cf2185 100644 --- a/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs +++ b/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs @@ -117,9 +117,8 @@ namespace osu.Game.Tests.Skins }); } - [TestCase(false)] - [TestCase(true)] - public void TestEmptyComboColours(bool allowFallback) + [Test] + public void TestEmptyComboColours() { AddStep("Add custom combo colours to source1", () => source1.Configuration.ComboColours = new List { @@ -127,11 +126,25 @@ namespace osu.Game.Tests.Skins new Color4(55, 110, 166, 255), new Color4(75, 125, 175, 255), }); - AddStep("Disallow default colours fallback in source2", () => source2.Configuration.AllowDefaultComboColoursFallback = allowFallback); - AddAssert($"Check retrieved combo colours from {(allowFallback ? "source1" : "fallback source")}", () => + AddAssert("Check retrieved combo colours is skin default colours", () => + requester.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value?.SequenceEqual(SkinConfiguration.DefaultComboColours) ?? false); + } + + [Test] + public void TestEmptyComboColoursNoFallback() + { + AddStep("Add custom combo colours to source1", () => source1.Configuration.ComboColours = new List { - var expectedColours = allowFallback ? SkinConfiguration.DefaultComboColours : source1.Configuration.ComboColours; + new Color4(100, 150, 200, 255), + new Color4(55, 110, 166, 255), + new Color4(75, 125, 175, 255), + }); + AddStep("Disallow default colours fallback in source2", () => source2.Configuration.AllowDefaultComboColoursFallback = false); + + AddAssert("Check retrieved combo colours from source1", () => + { + var expectedColours = source1.Configuration.ComboColours; return requester.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value?.SequenceEqual(expectedColours) ?? false; }); } From f89042cd0aa3c9e7c120901e2e2d6dd5e0a4706d Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 12 Dec 2019 18:48:22 +0900 Subject: [PATCH 0291/1829] Add missing section header --- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index 20706c73c1..8acd8eb17b 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -129,6 +129,8 @@ namespace osu.Game.Beatmaps.Formats private void handleEvents(TextWriter writer) { + writer.WriteLine("[Events]"); + writer.WriteLine(FormattableString.Invariant($"{(int)LegacyEventType.Background},0,{beatmap.BeatmapInfo.Metadata.BackgroundFile}")); writer.WriteLine(FormattableString.Invariant($"{(int)LegacyEventType.Video},0,{beatmap.BeatmapInfo.Metadata.VideoFile}")); From 51bdb73b913255b0f4f2fd8079c0079fc684680e Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 12 Dec 2019 18:49:47 +0900 Subject: [PATCH 0292/1829] Don't write empty file names --- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index 8acd8eb17b..136b152eff 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -131,8 +131,11 @@ namespace osu.Game.Beatmaps.Formats { writer.WriteLine("[Events]"); - writer.WriteLine(FormattableString.Invariant($"{(int)LegacyEventType.Background},0,{beatmap.BeatmapInfo.Metadata.BackgroundFile}")); - writer.WriteLine(FormattableString.Invariant($"{(int)LegacyEventType.Video},0,{beatmap.BeatmapInfo.Metadata.VideoFile}")); + if (!string.IsNullOrEmpty(beatmap.BeatmapInfo.Metadata.BackgroundFile)) + writer.WriteLine(FormattableString.Invariant($"{(int)LegacyEventType.Background},0,{beatmap.BeatmapInfo.Metadata.BackgroundFile}")); + + if (!string.IsNullOrEmpty(beatmap.BeatmapInfo.Metadata.VideoFile)) + writer.WriteLine(FormattableString.Invariant($"{(int)LegacyEventType.Video},0,{beatmap.BeatmapInfo.Metadata.VideoFile}")); foreach (var b in beatmap.Breaks) writer.WriteLine(FormattableString.Invariant($"{(int)LegacyEventType.Break},{b.StartTime},{b.EndTime}")); From 60063eefd237572af3c6905096db837dcc0d7401 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 12 Dec 2019 18:51:05 +0900 Subject: [PATCH 0293/1829] Fix up background/video events --- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index 136b152eff..f7a70b0d32 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -132,10 +132,10 @@ namespace osu.Game.Beatmaps.Formats writer.WriteLine("[Events]"); if (!string.IsNullOrEmpty(beatmap.BeatmapInfo.Metadata.BackgroundFile)) - writer.WriteLine(FormattableString.Invariant($"{(int)LegacyEventType.Background},0,{beatmap.BeatmapInfo.Metadata.BackgroundFile}")); + writer.WriteLine(FormattableString.Invariant($"{(int)LegacyEventType.Background},0,\"{beatmap.BeatmapInfo.Metadata.BackgroundFile}\",0,0")); if (!string.IsNullOrEmpty(beatmap.BeatmapInfo.Metadata.VideoFile)) - writer.WriteLine(FormattableString.Invariant($"{(int)LegacyEventType.Video},0,{beatmap.BeatmapInfo.Metadata.VideoFile}")); + writer.WriteLine(FormattableString.Invariant($"{(int)LegacyEventType.Video},0,\"{beatmap.BeatmapInfo.Metadata.VideoFile}\",0,0")); foreach (var b in beatmap.Breaks) writer.WriteLine(FormattableString.Invariant($"{(int)LegacyEventType.Break},{b.StartTime},{b.EndTime}")); From 4760307bbb6d30b59f14c78ef8a19e4d0af8b582 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 12 Dec 2019 19:01:15 +0900 Subject: [PATCH 0294/1829] Don't output the first slider control point --- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index f7a70b0d32..479f2765bb 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -269,8 +269,11 @@ namespace osu.Game.Beatmaps.Formats break; } - writer.Write(FormattableString.Invariant($"{positionData.X + point.Position.Value.X}:{positionData.Y + point.Position.Value.Y}")); - writer.Write(i != curveData.Path.ControlPoints.Count - 1 ? "|" : ","); + if (i != 0) + { + writer.Write(FormattableString.Invariant($"{positionData.X + point.Position.Value.X}:{positionData.Y + point.Position.Value.Y}")); + writer.Write(i != curveData.Path.ControlPoints.Count - 1 ? "|" : ","); + } } writer.Write(FormattableString.Invariant($"{curveData.RepeatCount + 1},")); From d35d34c01b148fb96a4f129764a3b53eb7f4e655 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 12 Dec 2019 19:01:43 +0900 Subject: [PATCH 0295/1829] Fix hanging semicolon for per-node bank output --- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index 479f2765bb..41cb49615c 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -331,10 +331,11 @@ namespace osu.Game.Beatmaps.Formats StringBuilder sb = new StringBuilder(); sb.Append(FormattableString.Invariant($"{(int)normalBank}:")); - sb.Append(FormattableString.Invariant($"{(int)addBank}:")); + sb.Append(FormattableString.Invariant($"{(int)addBank}")); if (!banksOnly) { + sb.Append(":"); sb.Append(FormattableString.Invariant($"{customSampleBank}:")); sb.Append(FormattableString.Invariant($"{volume}:")); sb.Append(FormattableString.Invariant($"{sampleFilename}")); From dedae69db8b4144586eb94f9661c42354749ee32 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 12 Dec 2019 19:52:15 +0900 Subject: [PATCH 0296/1829] Prefer legacy curve format if possible --- .../Beatmaps/Formats/LegacyBeatmapEncoder.cs | 41 +++++++++++++------ 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index 41cb49615c..f64d505df9 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -246,27 +246,42 @@ namespace osu.Game.Beatmaps.Formats if (hitObject is IHasCurve curveData) { + PathType? lastType = null; + for (int i = 0; i < curveData.Path.ControlPoints.Count; i++) { PathControlPoint point = curveData.Path.ControlPoints[i]; - switch (point.Type.Value) + if (point.Type.Value != null) { - case PathType.Bezier: - writer.Write("B|"); - break; + if (point.Type.Value != lastType) + { + switch (point.Type.Value) + { + case PathType.Bezier: + writer.Write("B|"); + break; - case PathType.Catmull: - writer.Write("C|"); - break; + case PathType.Catmull: + writer.Write("C|"); + break; - case PathType.PerfectCurve: - writer.Write("P|"); - break; + case PathType.PerfectCurve: + writer.Write("P|"); + break; - case PathType.Linear: - writer.Write("L|"); - break; + case PathType.Linear: + writer.Write("L|"); + break; + } + + lastType = point.Type.Value; + } + else + { + // New segment with the same type - duplicate the control point + writer.Write(FormattableString.Invariant($"{positionData.X + point.Position.Value.X}:{positionData.Y + point.Position.Value.Y}|")); + } } if (i != 0) From ac984423bb9c149fab9d09922d79e03bd0765418 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 12 Dec 2019 19:53:30 +0900 Subject: [PATCH 0297/1829] Fix only single sound type being written --- .../Beatmaps/Formats/LegacyBeatmapEncoder.cs | 47 ++++++++----------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index f64d505df9..0eeacf733d 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -225,7 +225,6 @@ namespace osu.Game.Beatmaps.Formats LegacyHitObjectType hitObjectType = (LegacyHitObjectType)(comboData.ComboOffset << 4); if (comboData.NewCombo) hitObjectType |= LegacyHitObjectType.NewCombo; - if (hitObject is IHasCurve _) hitObjectType |= LegacyHitObjectType.Slider; else if (hitObject is IHasEndTime _) @@ -233,16 +232,11 @@ namespace osu.Game.Beatmaps.Formats else hitObjectType |= LegacyHitObjectType.Circle; - LegacyHitSoundType soundType = LegacyHitSoundType.Normal; - HitSampleInfo firstAdditionSound = hitObject.Samples.FirstOrDefault(s => s.Name != HitSampleInfo.HIT_NORMAL); - if (firstAdditionSound != null) - soundType |= toLegacyHitSound(firstAdditionSound.Name); - writer.Write(FormattableString.Invariant($"{positionData.X},")); writer.Write(FormattableString.Invariant($"{positionData.Y},")); writer.Write(FormattableString.Invariant($"{hitObject.StartTime},")); writer.Write(FormattableString.Invariant($"{(int)hitObjectType},")); - writer.Write(FormattableString.Invariant($"{(int)soundType},")); + writer.Write(FormattableString.Invariant($"{(int)toLegacyHitSoundType(hitObject.Samples)},")); if (hitObject is IHasCurve curveData) { @@ -296,12 +290,7 @@ namespace osu.Game.Beatmaps.Formats for (int i = 0; i < curveData.NodeSamples.Count; i++) { - LegacyHitSoundType type = LegacyHitSoundType.None; - - foreach (var sample in curveData.NodeSamples[i]) - type |= toLegacyHitSound(sample.Name); - - writer.Write(FormattableString.Invariant($"{(int)type}")); + writer.Write(FormattableString.Invariant($"{(int)toLegacyHitSoundType(curveData.NodeSamples[i])}")); writer.Write(i != curveData.NodeSamples.Count - 1 ? "|" : ","); } @@ -359,25 +348,29 @@ namespace osu.Game.Beatmaps.Formats return sb.ToString(); } - private LegacyHitSoundType toLegacyHitSound(string hitSoundName) + private LegacyHitSoundType toLegacyHitSoundType(IList samples) { - switch (hitSoundName) + LegacyHitSoundType type = LegacyHitSoundType.None; + + foreach (var sample in samples) { - case HitSampleInfo.HIT_NORMAL: - return LegacyHitSoundType.Normal; + switch (sample.Name) + { + case HitSampleInfo.HIT_WHISTLE: + type |= LegacyHitSoundType.Whistle; + break; - case HitSampleInfo.HIT_WHISTLE: - return LegacyHitSoundType.Whistle; + case HitSampleInfo.HIT_FINISH: + type |= LegacyHitSoundType.Finish; + break; - case HitSampleInfo.HIT_FINISH: - return LegacyHitSoundType.Finish; - - case HitSampleInfo.HIT_CLAP: - return LegacyHitSoundType.Clap; - - default: - return LegacyHitSoundType.None; + case HitSampleInfo.HIT_CLAP: + type |= LegacyHitSoundType.Clap; + break; + } } + + return type; } private LegacySampleBank toLegacySampleBank(string sampleBank) From bf8caee53fdbf9fc392462fea7dfdb549af0e7cb Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Thu, 12 Dec 2019 14:05:24 +0300 Subject: [PATCH 0298/1829] Inherit SkinConfiguration directly --- osu.Game/Skinning/LegacySkinConfiguration.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Skinning/LegacySkinConfiguration.cs b/osu.Game/Skinning/LegacySkinConfiguration.cs index b1679bd464..027f5b8883 100644 --- a/osu.Game/Skinning/LegacySkinConfiguration.cs +++ b/osu.Game/Skinning/LegacySkinConfiguration.cs @@ -3,7 +3,7 @@ namespace osu.Game.Skinning { - public class LegacySkinConfiguration : DefaultSkinConfiguration + public class LegacySkinConfiguration : SkinConfiguration { public const decimal LATEST_VERSION = 2.7m; From 4406172eb4151a367cabc659456c44f5822631b8 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Thu, 12 Dec 2019 14:05:37 +0300 Subject: [PATCH 0299/1829] Add missing test attributes --- osu.Game.Tests/Skins/LegacySkinDecoderTest.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs b/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs index 8dbd894a0e..cef38bbbb8 100644 --- a/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs +++ b/osu.Game.Tests/Skins/LegacySkinDecoderTest.cs @@ -13,6 +13,7 @@ namespace osu.Game.Tests.Skins [TestFixture] public class LegacySkinDecoderTest { + [Test] public void TestDecodeSkinColours() { var decoder = new LegacySkinDecoder(); @@ -35,6 +36,7 @@ namespace osu.Game.Tests.Skins } } + [Test] public void TestDecodeEmptySkinColours() { var decoder = new LegacySkinDecoder(); @@ -51,6 +53,7 @@ namespace osu.Game.Tests.Skins } } + [Test] public void TestDecodeEmptySkinColoursNoFallback() { var decoder = new LegacySkinDecoder(); From 7e1d21fa1658efcdf344f0ac632b7db83010847e Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Thu, 12 Dec 2019 14:08:35 +0300 Subject: [PATCH 0300/1829] Simplify combo colours lookup tests --- .../Skins/TestSceneSkinConfigurationLookup.cs | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs b/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs index 8808cf2185..ed54cc982d 100644 --- a/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs +++ b/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs @@ -120,13 +120,6 @@ namespace osu.Game.Tests.Skins [Test] public void TestEmptyComboColours() { - AddStep("Add custom combo colours to source1", () => source1.Configuration.ComboColours = new List - { - new Color4(100, 150, 200, 255), - new Color4(55, 110, 166, 255), - new Color4(75, 125, 175, 255), - }); - AddAssert("Check retrieved combo colours is skin default colours", () => requester.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value?.SequenceEqual(SkinConfiguration.DefaultComboColours) ?? false); } @@ -134,19 +127,16 @@ namespace osu.Game.Tests.Skins [Test] public void TestEmptyComboColoursNoFallback() { - AddStep("Add custom combo colours to source1", () => source1.Configuration.ComboColours = new List - { + AddStep("Add custom combo colours to source1", () => source1.Configuration.AddComboColours( new Color4(100, 150, 200, 255), new Color4(55, 110, 166, 255), - new Color4(75, 125, 175, 255), - }); + new Color4(75, 125, 175, 255) + )); + AddStep("Disallow default colours fallback in source2", () => source2.Configuration.AllowDefaultComboColoursFallback = false); AddAssert("Check retrieved combo colours from source1", () => - { - var expectedColours = source1.Configuration.ComboColours; - return requester.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value?.SequenceEqual(expectedColours) ?? false; - }); + requester.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value?.SequenceEqual(source1.Configuration.ComboColours) ?? false); } [Test] From 5e634c118309cf56ccd14ce43d5681293aff529f Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 12 Dec 2019 20:51:58 +0900 Subject: [PATCH 0301/1829] Move test values to constants --- .../Background/TestSceneUserDimContainer.cs | 19 +++++++++++-------- .../Graphics/Containers/UserDimContainer.cs | 4 ++-- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs index 03206402c3..8eb256538a 100644 --- a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs +++ b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs @@ -47,7 +47,10 @@ namespace osu.Game.Tests.Visual.Background lightenDuringBreaks.Value = false; }); - [TestCase(0.6f, 0.3f)] + private const float test_user_dim = 0.6f; + private const float test_user_dim_lightened = test_user_dim - UserDimContainer.BREAK_LIGHTEN_AMOUNT; + + [TestCase(test_user_dim, test_user_dim_lightened)] [TestCase(0.2f, 0.0f)] [TestCase(0.0f, 0.0f)] public void TestBreakLightening(float userDim, float expectedBreakDim) @@ -64,26 +67,26 @@ namespace osu.Game.Tests.Visual.Background [Test] public void TestEnableSettingDuringBreak() { - AddStep("set dim level 0.6", () => container.UserDimLevel.Value = 0.6f); + AddStep("set dim level 0.6", () => container.UserDimLevel.Value = test_user_dim); AddStep("set break", () => isBreakTime.Value = true); - AddUntilStep("not lightened", () => container.DimEqual(0.6f)); + AddUntilStep("not lightened", () => container.DimEqual(test_user_dim)); AddStep("set lighten during break", () => lightenDuringBreaks.Value = true); - AddUntilStep("has lightened", () => container.DimEqual(0.3f)); + AddUntilStep("has lightened", () => container.DimEqual(test_user_dim_lightened)); } [Test] public void TestDisableSettingDuringBreak() { - AddStep("set dim level 0.6", () => container.UserDimLevel.Value = 0.6f); + AddStep("set dim level 0.6", () => container.UserDimLevel.Value = test_user_dim); AddStep("set lighten during break", () => lightenDuringBreaks.Value = true); AddStep("set break", () => isBreakTime.Value = true); - AddUntilStep("has lightened", () => container.DimEqual(0.3f)); + AddUntilStep("has lightened", () => container.DimEqual(test_user_dim_lightened)); AddStep("clear lighten during break", () => lightenDuringBreaks.Value = false); - AddUntilStep("not lightened", () => container.DimEqual(0.6f)); + AddUntilStep("not lightened", () => container.DimEqual(test_user_dim)); AddStep("clear break", () => isBreakTime.Value = false); - AddUntilStep("not lightened", () => container.DimEqual(0.6f)); + AddUntilStep("not lightened", () => container.DimEqual(test_user_dim)); } private class TestUserDimContainer : UserDimContainer diff --git a/osu.Game/Graphics/Containers/UserDimContainer.cs b/osu.Game/Graphics/Containers/UserDimContainer.cs index dcc8a52e9d..e67cd94d5c 100644 --- a/osu.Game/Graphics/Containers/UserDimContainer.cs +++ b/osu.Game/Graphics/Containers/UserDimContainer.cs @@ -19,7 +19,7 @@ namespace osu.Game.Graphics.Containers /// /// Amount of lightening to apply to current dim level during break times. /// - private const float break_lighten_amount = 0.3f; + public const float BREAK_LIGHTEN_AMOUNT = 0.3f; protected const double BACKGROUND_FADE_DURATION = 800; @@ -52,7 +52,7 @@ namespace osu.Game.Graphics.Containers protected Bindable ShowVideo { get; private set; } - private float breakLightening => LightenDuringBreaks.Value && IsBreakTime.Value ? break_lighten_amount : 0; + private float breakLightening => LightenDuringBreaks.Value && IsBreakTime.Value ? BREAK_LIGHTEN_AMOUNT : 0; protected float DimLevel => Math.Max(EnableUserDim.Value ? (float)UserDimLevel.Value - breakLightening : 0, 0); protected override Container Content => dimContent; From ecc7fdc561a8d98e064fd0b47cc6bc7605dff53e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 12 Dec 2019 21:04:56 +0900 Subject: [PATCH 0302/1829] Ensure a clean run on each test method --- .../Background/TestSceneUserDimContainer.cs | 55 +++++++++---------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs index 8eb256538a..472c43096f 100644 --- a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs +++ b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs @@ -15,13 +15,22 @@ namespace osu.Game.Tests.Visual.Background { public class TestSceneUserDimContainer : OsuTestScene { - private readonly TestUserDimContainer container; - private readonly BindableBool isBreakTime = new BindableBool(); - private readonly Bindable lightenDuringBreaks = new Bindable(); + private TestUserDimContainer userDimContainer; - public TestSceneUserDimContainer() + private readonly BindableBool isBreakTime = new BindableBool(); + + private Bindable lightenDuringBreaks = new Bindable(); + + [BackgroundDependencyLoader] + private void load(OsuConfigManager config) { - Add(container = new TestUserDimContainer + lightenDuringBreaks = config.GetBindable(OsuSetting.LightenDuringBreaks); + } + + [SetUp] + public void SetUp() => Schedule(() => + { + Child = userDimContainer = new TestUserDimContainer { RelativeSizeAxes = Axes.Both, Child = new Box @@ -29,21 +38,11 @@ namespace osu.Game.Tests.Visual.Background Colour = Color4.White, RelativeSizeAxes = Axes.Both, }, - }); + }; - container.IsBreakTime.BindTo(isBreakTime); - } - - [BackgroundDependencyLoader] - private void load(OsuConfigManager config) - { - config.BindWith(OsuSetting.LightenDuringBreaks, lightenDuringBreaks); - } - - [SetUp] - public void SetUp() => Schedule(() => - { + userDimContainer.IsBreakTime.BindTo(isBreakTime); isBreakTime.Value = false; + lightenDuringBreaks.Value = false; }); @@ -55,38 +54,38 @@ namespace osu.Game.Tests.Visual.Background [TestCase(0.0f, 0.0f)] public void TestBreakLightening(float userDim, float expectedBreakDim) { - AddStep($"set dim level {userDim}", () => container.UserDimLevel.Value = userDim); + AddStep($"set dim level {userDim}", () => userDimContainer.UserDimLevel.Value = userDim); AddStep("set lighten during break", () => lightenDuringBreaks.Value = true); AddStep("set break", () => isBreakTime.Value = true); - AddUntilStep("has lightened", () => container.DimEqual(expectedBreakDim)); + AddUntilStep("has lightened", () => userDimContainer.DimEqual(expectedBreakDim)); AddStep("clear break", () => isBreakTime.Value = false); - AddUntilStep("not lightened", () => container.DimEqual(userDim)); + AddUntilStep("not lightened", () => userDimContainer.DimEqual(userDim)); } [Test] public void TestEnableSettingDuringBreak() { - AddStep("set dim level 0.6", () => container.UserDimLevel.Value = test_user_dim); + AddStep("set dim level 0.6", () => userDimContainer.UserDimLevel.Value = test_user_dim); AddStep("set break", () => isBreakTime.Value = true); - AddUntilStep("not lightened", () => container.DimEqual(test_user_dim)); + AddUntilStep("not lightened", () => userDimContainer.DimEqual(test_user_dim)); AddStep("set lighten during break", () => lightenDuringBreaks.Value = true); - AddUntilStep("has lightened", () => container.DimEqual(test_user_dim_lightened)); + AddUntilStep("has lightened", () => userDimContainer.DimEqual(test_user_dim_lightened)); } [Test] public void TestDisableSettingDuringBreak() { - AddStep("set dim level 0.6", () => container.UserDimLevel.Value = test_user_dim); + AddStep("set dim level 0.6", () => userDimContainer.UserDimLevel.Value = test_user_dim); AddStep("set lighten during break", () => lightenDuringBreaks.Value = true); AddStep("set break", () => isBreakTime.Value = true); - AddUntilStep("has lightened", () => container.DimEqual(test_user_dim_lightened)); + AddUntilStep("has lightened", () => userDimContainer.DimEqual(test_user_dim_lightened)); AddStep("clear lighten during break", () => lightenDuringBreaks.Value = false); - AddUntilStep("not lightened", () => container.DimEqual(test_user_dim)); + AddUntilStep("not lightened", () => userDimContainer.DimEqual(test_user_dim)); AddStep("clear break", () => isBreakTime.Value = false); - AddUntilStep("not lightened", () => container.DimEqual(test_user_dim)); + AddUntilStep("not lightened", () => userDimContainer.DimEqual(test_user_dim)); } private class TestUserDimContainer : UserDimContainer From 002a125b4aee43b6eac28581a784ffe1fecd21bd Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 12 Dec 2019 21:14:26 +0800 Subject: [PATCH 0303/1829] make ModDifficultyAdjust generic --- osu.Game.Rulesets.Catch/CatchRuleset.cs | 2 +- .../Mods/CatchModDifficultyAdjust.cs | 51 ------------------ osu.Game.Rulesets.Mania/ManiaRuleset.cs | 2 +- .../Mods/ManiaModDifficultyAdjust.cs | 22 -------- .../Mods/OsuModDifficultyAdjust.cs | 52 ------------------- osu.Game.Rulesets.Osu/OsuRuleset.cs | 2 +- .../Mods/TaikoModDifficultyAdjust.cs | 32 ------------ osu.Game.Rulesets.Taiko/TaikoRuleset.cs | 2 +- osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs | 51 ++++++++++++++---- 9 files changed, 46 insertions(+), 170 deletions(-) delete mode 100644 osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs delete mode 100644 osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs delete mode 100644 osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs delete mode 100644 osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs diff --git a/osu.Game.Rulesets.Catch/CatchRuleset.cs b/osu.Game.Rulesets.Catch/CatchRuleset.cs index 6495c5379b..5973eea602 100644 --- a/osu.Game.Rulesets.Catch/CatchRuleset.cs +++ b/osu.Game.Rulesets.Catch/CatchRuleset.cs @@ -101,7 +101,7 @@ namespace osu.Game.Rulesets.Catch case ModType.Conversion: return new Mod[] { - new CatchModDifficultyAdjust(), + new ModDifficultyAdjust(), }; case ModType.Automation: diff --git a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs deleted file mode 100644 index 6643ebadf1..0000000000 --- a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs +++ /dev/null @@ -1,51 +0,0 @@ -// 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.Game.Beatmaps; -using osu.Game.Configuration; -using osu.Game.Rulesets.Mods; - -namespace osu.Game.Rulesets.Catch.Mods -{ - public class CatchModDifficultyAdjust : ModDifficultyAdjust - { - [SettingSource("Drain Rate", "Override the beatmap's set HP")] - public override BindableNumber DrainRate { get; } = new BindableFloat - { - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - Precision = 1F, - }; - - [SettingSource("Fruit Size", "Override the beatmap's set CS")] - public override BindableNumber CircleSize { get; } = new BindableFloat - { - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - Precision = 0.1F, - }; - - [SettingSource("Approach Rate", "Override the beatmap's set AR")] - public override BindableNumber ApproachRate { get; } = new BindableFloat - { - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - Precision = 0.1F, - }; - - public override void ApplyToDifficulty(BeatmapDifficulty difficulty) - { - difficulty.DrainRate = DrainRate.Value; - difficulty.CircleSize = CircleSize.Value; - difficulty.ApproachRate = ApproachRate.Value; - difficulty.OverallDifficulty = ApproachRate.Value; - } - } -} diff --git a/osu.Game.Rulesets.Mania/ManiaRuleset.cs b/osu.Game.Rulesets.Mania/ManiaRuleset.cs index c4908d1993..520bcfb586 100644 --- a/osu.Game.Rulesets.Mania/ManiaRuleset.cs +++ b/osu.Game.Rulesets.Mania/ManiaRuleset.cs @@ -143,7 +143,7 @@ namespace osu.Game.Rulesets.Mania new ManiaModRandom(), new ManiaModDualStages(), new ManiaModMirror(), - new ManiaModDifficultyAdjust(), + new ModDifficultyAdjust(), }; case ModType.Automation: diff --git a/osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs b/osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs deleted file mode 100644 index 67554e6b92..0000000000 --- a/osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs +++ /dev/null @@ -1,22 +0,0 @@ -// 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.Game.Configuration; -using osu.Game.Rulesets.Mods; - -namespace osu.Game.Rulesets.Mania.Mods -{ - public class ManiaModDifficultyAdjust : ModDifficultyAdjust - { - [SettingSource("Overall Difficulty", "Override the beatmap's set OD")] - public override BindableNumber OverallDifficulty { get; } = new BindableFloat - { - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - Precision = 0.1F, - }; - } -} diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs deleted file mode 100644 index 86ab4579bb..0000000000 --- a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs +++ /dev/null @@ -1,52 +0,0 @@ -// 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.Game.Configuration; -using osu.Game.Rulesets.Mods; - -namespace osu.Game.Rulesets.Osu.Mods -{ - public class OsuModDifficultyAdjust : ModDifficultyAdjust - { - [SettingSource("Drain Rate", "Override the beatmap's set HP")] - public override BindableNumber DrainRate { get; } = new BindableFloat - { - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - Precision = 0.1F, - }; - - [SettingSource("Circle Size", "Override the beatmap's set CS")] - public override BindableNumber CircleSize { get; } = new BindableFloat - { - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - Precision = 0.1F, - }; - - [SettingSource("Approach Rate", "Override the beatmap's set AR")] - public override BindableNumber ApproachRate { get; } = new BindableFloat - { - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - Precision = 0.1F, - }; - - [SettingSource("Overall Difficulty", "Override the beatmap's set OD")] - public override BindableNumber OverallDifficulty { get; } = new BindableFloat - { - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - Precision = 0.1F, - }; - } -} diff --git a/osu.Game.Rulesets.Osu/OsuRuleset.cs b/osu.Game.Rulesets.Osu/OsuRuleset.cs index 746876b217..b9fa14baa1 100644 --- a/osu.Game.Rulesets.Osu/OsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/OsuRuleset.cs @@ -121,7 +121,7 @@ namespace osu.Game.Rulesets.Osu return new Mod[] { new OsuModTarget(), - new OsuModDifficultyAdjust(), + new ModDifficultyAdjust(), }; case ModType.Automation: diff --git a/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs b/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs deleted file mode 100644 index ed76cf77ac..0000000000 --- a/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs +++ /dev/null @@ -1,32 +0,0 @@ -// 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.Game.Configuration; -using osu.Game.Rulesets.Mods; - -namespace osu.Game.Rulesets.Taiko.Mods -{ - public class TaikoModDifficultyAdjust : ModDifficultyAdjust - { - [SettingSource("Drain Rate", "Override the beatmap's set HP")] - public override BindableNumber DrainRate { get; } = new BindableFloat - { - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - Precision = 0.1F, - }; - - [SettingSource("Overall Difficulty", "Override the beatmap's set OD")] - public override BindableNumber OverallDifficulty { get; } = new BindableFloat - { - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - Precision = 0.1F, - }; - } -} diff --git a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs index c4c85c183b..40ce58aeca 100644 --- a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs +++ b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs @@ -100,7 +100,7 @@ namespace osu.Game.Rulesets.Taiko case ModType.Conversion: return new Mod[] { - new TaikoModDifficultyAdjust(), + new ModDifficultyAdjust(), }; case ModType.Automation: diff --git a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs index d1f6bf45b4..532da8a647 100644 --- a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs @@ -5,10 +5,11 @@ using osu.Game.Beatmaps; using osu.Framework.Bindables; using osu.Framework.Graphics.Sprites; using System; +using osu.Game.Configuration; namespace osu.Game.Rulesets.Mods { - public abstract class ModDifficultyAdjust : Mod, IApplicableToDifficulty + public class ModDifficultyAdjust : Mod, IApplicableToDifficulty { public override string Name => @"Difficulty Adjust"; @@ -24,20 +25,52 @@ namespace osu.Game.Rulesets.Mods public override Type[] IncompatibleMods => new[] { typeof(ModEasy), typeof(ModHardRock) }; - public virtual BindableNumber DrainRate { get; } + [SettingSource("Drain Rate", "Override the beatmap's set HP")] + public BindableNumber DrainRate { get; } = new BindableFloat + { + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + Precision = 0.1F, + }; - public virtual BindableNumber CircleSize { get; } + [SettingSource("Circle Size", "Override the beatmap's set CS")] + public BindableNumber CircleSize { get; } = new BindableFloat + { + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + Precision = 0.1F, + }; - public virtual BindableNumber ApproachRate { get; } + [SettingSource("Approach Rate", "Override the beatmap's set AR")] + public BindableNumber ApproachRate { get; } = new BindableFloat + { + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + Precision = 0.1F, + }; - public virtual BindableNumber OverallDifficulty { get; } + [SettingSource("Overall Difficulty", "Override the beatmap's set OD")] + public BindableNumber OverallDifficulty { get; } = new BindableFloat + { + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + Precision = 0.1F, + }; public virtual void ApplyToDifficulty(BeatmapDifficulty difficulty) { - difficulty.DrainRate = DrainRate != null ? DrainRate.Value : difficulty.DrainRate; - difficulty.CircleSize = CircleSize != null ? CircleSize.Value : difficulty.CircleSize; - difficulty.ApproachRate = ApproachRate != null ? ApproachRate.Value : difficulty.ApproachRate; - difficulty.OverallDifficulty = OverallDifficulty != null ? OverallDifficulty.Value : difficulty.OverallDifficulty; + difficulty.DrainRate = DrainRate.Value; + difficulty.CircleSize = CircleSize.Value; + difficulty.ApproachRate = ApproachRate.Value; + difficulty.OverallDifficulty = OverallDifficulty.Value; } } } From c6cbf0f28a968ce42c5ba3f7731f98da822ac7e6 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Thu, 12 Dec 2019 16:27:11 +0300 Subject: [PATCH 0304/1829] Add 1.0 skin to osu! ruleset test --- .../Resources/old-skin/approachcircle.png | Bin 0 -> 4540 bytes .../Resources/old-skin/hit0.png | Bin 0 -> 12904 bytes .../Resources/old-skin/hit100.png | Bin 0 -> 30853 bytes .../Resources/old-skin/hit300.png | Bin 0 -> 33649 bytes .../Resources/old-skin/hit50.png | Bin 0 -> 27832 bytes .../Resources/old-skin/hitcircle.png | Bin 0 -> 3572 bytes .../Resources/old-skin/hitcircleoverlay.png | Bin 0 -> 7113 bytes .../Resources/old-skin/skin.ini | 2 ++ .../SkinnableTestScene.cs | 5 ++++- 9 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 osu.Game.Rulesets.Osu.Tests/Resources/old-skin/approachcircle.png create mode 100644 osu.Game.Rulesets.Osu.Tests/Resources/old-skin/hit0.png create mode 100644 osu.Game.Rulesets.Osu.Tests/Resources/old-skin/hit100.png create mode 100644 osu.Game.Rulesets.Osu.Tests/Resources/old-skin/hit300.png create mode 100644 osu.Game.Rulesets.Osu.Tests/Resources/old-skin/hit50.png create mode 100644 osu.Game.Rulesets.Osu.Tests/Resources/old-skin/hitcircle.png create mode 100644 osu.Game.Rulesets.Osu.Tests/Resources/old-skin/hitcircleoverlay.png create mode 100644 osu.Game.Rulesets.Osu.Tests/Resources/old-skin/skin.ini diff --git a/osu.Game.Rulesets.Osu.Tests/Resources/old-skin/approachcircle.png b/osu.Game.Rulesets.Osu.Tests/Resources/old-skin/approachcircle.png new file mode 100644 index 0000000000000000000000000000000000000000..ff8b02ce800824f510e8655a1a9d977418bbdeb3 GIT binary patch literal 4540 zcmV;t5ku~YP);J

@NHN+%xmd&%Mk3yL--e&pG%0_n}mDQ`*|v z6cQGHfEVBa;GUuvimOb27aBHzAOtWD&>t`g;BCSC?-5c|0tx{cfCBQjtcaqNfd_B_ z%%bojsk4i~@2yuVm6zeq3xFR0DVzX~7i`gyl+pY4lmc5@TkBLRRWcz&oYXvoln8*a z`gMZowzy$aQ`3E;(O9EatB1O|xp~{-p3Tk8$#AcK!=J|hdQO1uO9WsAARM5!`fPjf4*+WBl0tNv3kuaeqi7(~|N=v>Ah>H9_zE8b-_wJ`kN=jbU>-C>QYtOah z`vD=d;1X#kU3Cl2MgTQnCE#{P3We6yQdCs*&4mjWK3ceN;WYRfV*ta6!O_@#h{2S0 zR-Q61FV6?a@Gf|mW1SHJyix&N7IOj!16zD?M+&T|smax7G@q|pwQ3IO>OBP*=qQ7C zhPt}CXMqSGwzRZlT0n#dPJnhy0Q}fNYd1hEI}jTiyOi|neE@@rOYd=`ivhyJ0>I9W zh)`W!eHJdGdMg3?1O5(Z5>gIi=M6bIIs2ocqA&@3nhfBedv|kIql;h~c!X_YBmj~$ zR#jDPCV5Y-6;04$rq!;K~mfgB_ zYnB`cuvX{?LgJIXfB*j9lgxf7>B^~kiQ$F1z_$ewM8l06H~t`H0thBOMMXs?;jNQM zs~;eP1kV=0UQxWzpjUc&`bSbD0LJfFA>(T_nqBa=@njIEH@A8*2!;gc68}>w1i<0k z1UMwnrMbRwYx$DD?ZxhU52h(tzATBQM)gB`N+#m$dz&z`Iuy5bKW$^MyZhX5WhGtSxPxz-Rz6X1!y{^iS;x4=uI$-^9;@YxUB zS>0c{bm>%Ay4NmUG(OJKeUGlwYPIpf!NJk+X9WPmLaTy{z2qzzO?}Q(;pgWU;O*^Q zJ8jxD`z}-=k9ExkC>}n1c!5019n1%L910CH#jNVBx84f2<{qjpaNu8LK*u!yy(uOp zW;<#5dYsq58>qwNGrBNn(4fI9R;-9oDwTb#SyyLG>&NW=UApedl`GrceDh6=KiEZS z<~DJtWRb-^v#C%p+TGo~Dl9B4#n!GLv;GR&<>+*}L^5x$AJ6!E6lSxk?}PaG_>8u7 z2>5`k&odFC`QX8Wd$8r>YOFSiZxkSL*+v(@_&z&!?D!Z$fznp3KY*RSotc@rlg!^! z^A_0ii#x~^dwM{we#(?7Gi)*rz|LaDwRmLaE_eOTLx552P;o*+!nd6@P?ZJ7p8%J| zbX|Ua{$cL=olC&m>);Yi*M*0N&k70(3hS=>Kg#qqv&dY&KD_lg*8)#6uh49G9`dw= zj=X@X6XW}{t-qk4;2>P;00!RfoX!j2h7|kgx|d&mdEUs8BPVyY^~W%=Ka)J= zF7YM{N=j+Fefi~=2gOEcRUH@~NBfr1b%lk638eM&0Uzh}0=NUpZn`cqGI9a^+<=yj zLckJw$XBn|-wX{6-NzF@NyvWyji$oTp+mjbty{O$S^})33ne8brxop+9`V-i{9XX} zGyDf#w|Md5*-$^qA_9=E-!yvEFF85+7;pWOk_&WU%9JTVzP`SeC4*q&59uVLxVZSg ziuT1Ee3FNRHhO~BuF-akj*dR0V3y&Dg#fdzUukJ+DqNcQBoE0+B3)RpU_mfk0y}H{ zYy(87%) ztE=0xWy|J6y=zBF;7fF&va%8<78rQ)Cyy{NbLLD80iy*8fXljB50H|Q@&oVsNm|Ud zsSODU37`qU#*E3#qJvyT`)XeP$X9|n0I{hnyQFOF*s-g{a)1}~3FK(s(_<#&0MF1TC&oz||21B8{yL%AM zFXZ}j`Z(WdB1re-Fc%y=c<`E6}Pmspa&~C4d(b0xG%AWF=*E!OP3*@!3kE9smeX%5^4R0)PiV0(j5_=+EQ;wOnVi60>z2 zuCA^wECI~K&CQL+e|d@7c#c}F#=V+dL_I)jYpb5?O!gkYRn!9jL%0W!znFOdvlj0G z!u2C7Q8P*Y<3TX+*O}}+fKesZPlR5;P_8psiP=D3 zO-)TB>j5g6UceBpGg--Sx=>zTj;p*IMLmF0sr2SLldlJ;s;X*$OFc~h9YcUoTxYTp zGka>a+8Ve#q6uL3yjZ1Djo~_zm6*-<$jZvXkY6K80QL=Bq$^}f*jTFEdiCnnYL)=F zsepkB0k|ExJ6E49B!DhdfavvloF-PQq707f|86pG4CK0#g_uqEFD@>Ahh`k)xWtrSe1?%&VP z?~?})9vp+$@;dYYBn(`qs&G2d60U0LX8+f(U(W&KH?WPkqlF>6m@1wJNJQ|IH@N(n zt~+?}AZ{3mJH8k!A^=ESYinx*RSp5H;Odox;Mo8_&jKzlFE5LUiNUNtoBc;s2XRH; z($aE(spbT5{??Ck|K6tSjvhUF5iXVRT9MVR1UD9Bj;deEH)nL}GlM>$ja38Ezkh!` z^)=Y)Q^WA&iARqfonorr=IzXBTR*z}WprIaLc&G8UXQbXa=LocNdjJA1#fvyd2ZnQ z%vQhp;lqc22ro_P^2wpN<#=ObVDnRINSi5%Z|KQJbw(Dm#0WcS6XlRIKsy|UMJBxDZ zvDW_*+xib2IFO{%>9F-*v(<-q84QM6CKvdM$6%+xdD zi{NA4Xu6`Ip`m`!qD6eI&{)10w5q6IV(VdWI!M{WS1}xaEn#wsZ*ztNyh(t zn;lObwVD8U^xVCB_cS6o!BlQgtMD2d^HEY#Qmzr>&$jomvt1#8B0fI8Z((8KRRI!| z0AAsSwFvJB=&vm)Dd`e1{!5NHceqOgKtx4FsdI92gu(&Jd)&YsVuz5@jvYIeM2tVr zQ3p?VnE>R*N{vQyT!aMtG4hk>3y2p|7D@Qf_%j@N@_4rhV8X?V7k7z};77o8ZurMo zDwOPDKYz=XEr)HD@bw4*5OHyF?>2#m5aEMfZ1_Q9E+40JzwyQ!Uyy$OvyPZjZZ`rT zqNAhdmX?-25Fvr47p^y0i3>G^l%dsXZwCbheG2M*2jJtVH3fDh00J28lbV{E+$Jtx z^n%GH81{||{dgSR!(@+4=XxE`&ykBt>`nmkfv)@Z?fa;@y1Gh)1USR!Lx8u;3?Bga zM2z_lL5R!8(Y+a%L_2y_kwXYz!kjsCg3q2knO5Ec%_|s26T@euxF?-^~iQ}No(kX1X8%7}k?ut>MXg?MYr%hRM zD!Q+t{g5R*X9u@i2_aWJbityna}6LF85y~_H4E9D12<>JIs3V7_EK6`^z5tzV94-H zNJz*pSFc|EoAB`P$s<8*bnCl{_S4eP*duIl!`ruS-$_hNOy9nJdp5LuBpsf?kZtwu z9Gn1xMCb#TiHjC3n!jYpk~u&M|EED*Kzd4n*wPCN3vX*Qnmapp?#xI}Pp>7O=CSAL zXk{)ZK=;Ui?s>eYr{~klmoJ|=Yu2oQpr9cCF(CH*+!l~KckbNH%*?!V?%cWCyLa!# zeRt8wKM}*{;b4|jrWs3?01O$>1Nf2nJZkRTxxt~Kp+m-xA3p>V%Ha?(yxra1)j*cP z9v&Y3I=de(v4SpXT?5Gd`}Zqyb8}1b^Ybgx($XqYQ&VxtH6FWKObq@L=s+jcdFHYp zfCwo(;bMX}N$7CH%YlH$C!>djg?R!wJZ{~(RYzPmE!c|d0k{sb3hnV^Z2KD>A>_TPBLzQ5}hg_jPo4;tV9PS3*!XQftA3VWMO28|1U56zcn57ZY{74 zKuk=$nx?{OHfOD1!@eQZuiPJ~QJOlmqHJcCMaDT=#kirb!ED3ZUxZHBATj(mhxX<2 zRem8QPDf7`ZcQ}wjHG*{O^`j9d=6Osf-hv>xnGYnUMcf?pbhXHfTZX|ud}NMEy5*0 zqRgM-M*3Fet#am(w@5j)Eqy`bbshYUht$T45;PeCEat}4HZ^o@sbaiZuXQxa8X4*G zQgE|(#T{&8WRRdeIqmA~?K$Caq3l_6m0#F1-1nXPe!+TL7LhE;NyC%|m=mIvM1Ssax{gNxLR_4@M8l~R9bTdj9_izChB_GSQ5Np5rrwBIruOTwzX-~ZRAjBWfwOH9wSaDmmJZ0De= z%UIT<%pcM~CM7cXiV44kOGzGG+1fotli{PS!qEX?Y4l)v1jim;@+|%wqsM`g!{29S zcG2ed;BD1a(t3OxBqpX>8k9G!M2~MHVW$-q@jjh&xR6-{Hjo8otaEW7f@j7T=*Y>g znZp$r-Jty}BTPA%kW2yiK>lqC3-!t6Aws9EIp-lOnjd3zzl@S{P3FhQx!;|u94quB z=Q7zhZGqq!Svm9ws@_JXKsikpg4jCHD-G7`XEj<$`PjaoY$Y9Dpo29WoIR6!o)Vc0 zULhG1oCVl;$e4#Ve*1Qisg(ZdS1xps=;j$LkoDbnB8oR|41a?9dE-DYXWpA;*X^Tg7&=(m;Z9-61xR4VP2R$jxxJD=wI#LCHpt8I+=p@?hy9r)!flPv}!F z9>5ENl%WqphkPzZQmUy<`az><1MTBW)5o}`02MqjHpB3`ccMxB79&?BXL(l_xw#RW zRY$gk#r{3y_LrA*quh7}wXA({NjMvqrP42F2luw}68A%EU|qLfz_3qV@kVsH+uix4 zo<^pH1Y~{Z^+U1(%#Y|4w^7XSn^Pqa$J4@E6P>pgDHp2;Z%Ho5Z0c-1nq)NpF!kTj zUh0$A1GAR(p%(P9pO-kI-^t=5>o646YT`b}fjXhYstZL=4p297_*z-qtU-pqA;a)A zW%HYo`Z-}ih=4&WxQWz9#cYkxmPoPuCcc;=gru92)-t?ZJudh_;d_kcGU!ZOBIVFG zH%ya*lOZGO1)hCAbS+0%L52uJ(c7A+R5jM-0T(gT3lx=}IK@SMek#PW&xFkbw&92i zqX+?Oc*&Wo2>L!?YQhMko-i`N4xI%rGvO8D7pTyPSfo-+IMrj;R-M`agRk0(m*mKI z^+G~HpY+gce>{{xFvS-eF5O0}1G6p0y170D(Vyo(SHFs&A~|BHQna>z0eyYXQ|Ok_ z9cQ_Rg)(HnV1L+|GSGB_dsxzN4Rw>R^-J7E&J{(2itoq)c=(J`BV}^+n72qvS?Q5O zr+^u%_F-K2+5!WQey04Ue6+Ta6g@b~U!=T9NgplvEei_@1 zHmQTI%vy@XVjVQG*rf=Hg3zc{?Q~MHqx_bq{cfo>0%X=jMSWt#Lbo`w=_^#H-25o! zoWLZWtvZa{|HX--FTx2l=PnKW%rAxVI(6_`Q+?s~&tWLRt?&UL+mdgfsKOu4u#5Lt zVps{w5l`j)WP%?W;7F>oKIeEuYJTYdW6O`Vx)gh@_QTk0Mj@bAELY?oBSai6L#x6kruBuZJ=xJ zGqJD{zd@)UZHyej3Z|IEq4vZkY`Q)l=au$#Ka=?afmL~iq6~enTq_th!+Q5S$0E40 z-!uzm7umAJkO!7#Bd-yqAYo40~ks)XB+9m^&cv5dh zi{^@q{CHK>G!^V-1^`F-OL`pU&CRo#0*!(b5w0e{5s@Hqu_1=YX)W>j9T4ue$8Szc zYiCHBl_8|)pZa@+=Jn@dlkr=j@b%HU6KFS^@+*8jt0-l7Ho)ZiOpqwDiq|qt?OAWt5x##da=3o&HUGHgGZK116Zq(L z9v>LVW9%tJvFabJ=XB&c9~Yo3=;^lz{f8fhY;z5a0)Ru>!YF9Y9ePTCWq>+pNOqfN zg(R_E#f|uYlsqsr(twtmOf&yGR3m?O4Jb*NE7{@y!-bR%=L5;Jm$4%p`w#JwZmra^ zsO9bLb^8Sl9_guxkA@?gs@SwWeCnYRD8Eqp4#VQ4w8hn`2sbJao6i|~dhEtGLk8`; zj*UGCefyT*Dj�cZa_2kS}f04>ihEu+(-}$68mAH8q>c4Yg}Zw1U5cyjPrzcc;21 zO}$F%L)_@T&0)*iXf-CvhjIO&mqFgsMtO0u9|8C^bCA~uMy{agX#U1Lf3yS=T8V3V zC`|-zcm6mMrruab(wUEJ^lq~9wIU%F(T@Dr`RSvfIRR#VjIn%mnC8%Gu%2`$9~bp< z+maNMH~22(3vM`d=S(0OZ@g$m<3Y_Ge4+FUjoH2rY^OlFHiUDH9u2-Jr!WDfO;0sQ zSH5~hJhf0|pdF`2)~VAW?&z%MnQ=!f&<|VfzMBwInyt$Rx%>X<=SlD4!;UNT>@PlNtt*&nR zy0BzmIP`)3j5bWkjyClEQIg)5FK C#z4*13%nv%sar3_~4ci)7wz%BiUeMi~U~D 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 Dvd!~3 literal 0 HcmV?d00001 diff --git a/osu.Game.Rulesets.Osu.Tests/Resources/old-skin/hit300.png b/osu.Game.Rulesets.Osu.Tests/Resources/old-skin/hit300.png new file mode 100644 index 0000000000000000000000000000000000000000..24945f7d925ee3cd4dbb741907aa1a4e8e90a1c5 GIT binary patch literal 33649 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 PUkRuy>nK&jZ6p5&sNh6p literal 0 HcmV?d00001 diff --git a/osu.Game.Rulesets.Osu.Tests/Resources/old-skin/hitcircle.png b/osu.Game.Rulesets.Osu.Tests/Resources/old-skin/hitcircle.png new file mode 100644 index 0000000000000000000000000000000000000000..a5a3545abf2510e7eec395bf47b73d9082e1fd8d GIT binary patch literal 3572 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 u5 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 literal 0 HcmV?d00001 diff --git a/osu.Game.Rulesets.Osu.Tests/Resources/old-skin/skin.ini b/osu.Game.Rulesets.Osu.Tests/Resources/old-skin/skin.ini new file mode 100644 index 0000000000..5369de24e9 --- /dev/null +++ b/osu.Game.Rulesets.Osu.Tests/Resources/old-skin/skin.ini @@ -0,0 +1,2 @@ +[General] +Version: 1.0 \ No newline at end of file diff --git a/osu.Game.Rulesets.Osu.Tests/SkinnableTestScene.cs b/osu.Game.Rulesets.Osu.Tests/SkinnableTestScene.cs index 38aac50df6..2fad3bd04f 100644 --- a/osu.Game.Rulesets.Osu.Tests/SkinnableTestScene.cs +++ b/osu.Game.Rulesets.Osu.Tests/SkinnableTestScene.cs @@ -19,9 +19,10 @@ namespace osu.Game.Rulesets.Osu.Tests private Skin metricsSkin; private Skin defaultSkin; private Skin specialSkin; + private Skin oldSkin; protected SkinnableTestScene() - : base(2, 2) + : base(2, 3) { } @@ -33,6 +34,7 @@ namespace osu.Game.Rulesets.Osu.Tests metricsSkin = new TestLegacySkin(new SkinInfo(), new NamespacedResourceStore(dllStore, "Resources/metrics_skin"), audio, true); defaultSkin = skinManager.GetSkin(DefaultLegacySkin.Info); specialSkin = new TestLegacySkin(new SkinInfo(), new NamespacedResourceStore(dllStore, "Resources/special_skin"), audio, true); + oldSkin = new TestLegacySkin(new SkinInfo(), new NamespacedResourceStore(dllStore, "Resources/old_skin"), audio, true); } public void SetContents(Func creationFunction) @@ -41,6 +43,7 @@ namespace osu.Game.Rulesets.Osu.Tests Cell(1).Child = createProvider(metricsSkin, creationFunction); Cell(2).Child = createProvider(defaultSkin, creationFunction); Cell(3).Child = createProvider(specialSkin, creationFunction); + Cell(4).Child = createProvider(oldSkin, creationFunction); } private Drawable createProvider(Skin skin, Func creationFunction) From ec5b50696058f293dda54c2f0e8b8f2cf9620a57 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 12 Dec 2019 23:41:46 +0800 Subject: [PATCH 0305/1829] apply mod difficulty settings during song select --- .../SongSelect/TestSceneBeatmapDetailArea.cs | 69 ++++++++++++++++- .../Screens/Select/Details/AdvancedStats.cs | 77 +++++++++++++++---- 2 files changed, 128 insertions(+), 18 deletions(-) diff --git a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetailArea.cs b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetailArea.cs index ed9e01a67e..ad7ef558c4 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetailArea.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetailArea.cs @@ -8,6 +8,9 @@ using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Game.Beatmaps; +using osu.Game.Rulesets; +using osu.Game.Rulesets.Mods; +using osu.Game.Screens.Play.HUD; using osu.Game.Screens.Select; using osu.Game.Tests.Beatmaps; using osuTK; @@ -20,8 +23,10 @@ namespace osu.Game.Tests.Visual.SongSelect { public override IReadOnlyList RequiredTypes => new[] { typeof(BeatmapDetails) }; + private ModDisplay modDisplay; + [BackgroundDependencyLoader] - private void load(OsuGameBase game) + private void load(OsuGameBase game, RulesetStore rulesets) { BeatmapDetailArea detailsArea; Add(detailsArea = new BeatmapDetailArea @@ -31,6 +36,16 @@ namespace osu.Game.Tests.Visual.SongSelect Size = new Vector2(550f, 450f), }); + Add(modDisplay = new ModDisplay + { + Anchor = Anchor.TopRight, + Origin = Anchor.TopRight, + AutoSizeAxes = Axes.Both, + Position = new Vector2(0, 25), + }); + + modDisplay.Current.BindTo(Mods); + AddStep("all metrics", () => detailsArea.Beatmap = new TestWorkingBeatmap(new Beatmap { BeatmapInfo = @@ -163,6 +178,58 @@ namespace osu.Game.Tests.Visual.SongSelect })); AddStep("null beatmap", () => detailsArea.Beatmap = null); + + AddStep("with EZ mod", () => + { + detailsArea.Beatmap = new TestWorkingBeatmap(new Beatmap + { + BeatmapInfo = + { + Version = "Has Easy Mod", + Metadata = new BeatmapMetadata + { + Source = "osu!lazer", + Tags = "this beatmap has the easy mod enabled", + }, + BaseDifficulty = new BeatmapDifficulty + { + CircleSize = 3, + DrainRate = 3, + OverallDifficulty = 3, + ApproachRate = 3, + }, + StarDifficulty = 1f, + } + }); + + Mods.Value = new[] { rulesets.AvailableRulesets.First().CreateInstance().GetAllMods().First(m => m is ModEasy) }; + }); + + AddStep("with HR mod", () => + { + detailsArea.Beatmap = new TestWorkingBeatmap(new Beatmap + { + BeatmapInfo = + { + Version = "Has Hard Rock Mod", + Metadata = new BeatmapMetadata + { + Source = "osu!lazer", + Tags = "this beatmap has the hard rock mod enabled", + }, + BaseDifficulty = new BeatmapDifficulty + { + CircleSize = 3, + DrainRate = 3, + OverallDifficulty = 3, + ApproachRate = 3, + }, + StarDifficulty = 1f, + } + }); + + Mods.Value = new[] { rulesets.AvailableRulesets.First().CreateInstance().GetAllMods().First(m => m is ModHardRock) }; + }); } } } diff --git a/osu.Game/Screens/Select/Details/AdvancedStats.cs b/osu.Game/Screens/Select/Details/AdvancedStats.cs index c5bdc230d0..be03b7ddd5 100644 --- a/osu.Game/Screens/Select/Details/AdvancedStats.cs +++ b/osu.Game/Screens/Select/Details/AdvancedStats.cs @@ -12,11 +12,21 @@ using osu.Game.Graphics.Sprites; using osu.Game.Graphics.UserInterface; using System; using osu.Game.Beatmaps; +using osu.Framework.Bindables; +using System.Collections.Generic; +using osu.Game.Rulesets.Mods; +using System.Linq; namespace osu.Game.Screens.Select.Details { public class AdvancedStats : Container { + [Resolved] + private IBindable> mods { get; set; } + + [Resolved] + private OsuColour colours { get; set; } + private readonly StatisticRow firstValue, hpDrain, accuracy, approachRate, starDifficulty; private BeatmapInfo beatmap; @@ -30,22 +40,7 @@ namespace osu.Game.Screens.Select.Details beatmap = value; - //mania specific - if ((Beatmap?.Ruleset?.ID ?? 0) == 3) - { - firstValue.Title = "Key Amount"; - firstValue.Value = (int)MathF.Round(Beatmap?.BaseDifficulty?.CircleSize ?? 0); - } - else - { - firstValue.Title = "Circle Size"; - firstValue.Value = Beatmap?.BaseDifficulty?.CircleSize ?? 0; - } - - hpDrain.Value = Beatmap?.BaseDifficulty?.DrainRate ?? 0; - accuracy.Value = Beatmap?.BaseDifficulty?.OverallDifficulty ?? 0; - approachRate.Value = Beatmap?.BaseDifficulty?.ApproachRate ?? 0; - starDifficulty.Value = (float)(Beatmap?.StarDifficulty ?? 0); + updateStatistics(); } } @@ -65,12 +60,60 @@ namespace osu.Game.Screens.Select.Details starDifficulty = new StatisticRow(10, true) { Title = "Star Difficulty" }, }, }; + } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load() { starDifficulty.AccentColour = colours.Yellow; + mods.ValueChanged += _ => updateStatistics(); + } + + private void updateStatistics() + { + BeatmapInfo processed = Beatmap?.Clone(); + + if (processed != null && mods.Value.Any(m => m is IApplicableToDifficulty)) + { + processed.BaseDifficulty = processed.BaseDifficulty.Clone(); + + foreach (var mod in mods.Value.OfType()) + mod.ApplyToDifficulty(processed.BaseDifficulty); + } + + BeatmapDifficulty baseDifficulty = Beatmap?.BaseDifficulty; + BeatmapDifficulty moddedDifficulty = processed?.BaseDifficulty; + + //mania specific + if ((processed?.Ruleset?.ID ?? 0) == 3) + { + firstValue.Title = "Key Amount"; + firstValue.Value = (int)MathF.Round(moddedDifficulty?.CircleSize ?? 0); + } + else + { + firstValue.Title = "Circle Size"; + firstValue.Value = moddedDifficulty?.CircleSize ?? 0; + } + + hpDrain.Value = moddedDifficulty?.DrainRate ?? 0; + accuracy.Value = moddedDifficulty?.OverallDifficulty ?? 0; + approachRate.Value = moddedDifficulty?.ApproachRate ?? 0; + starDifficulty.Value = (float)(processed?.StarDifficulty ?? 0); + + hpDrain.AccentColour = (moddedDifficulty?.DrainRate ?? 0) == (baseDifficulty?.DrainRate ?? 0) ? + Color4.White : (moddedDifficulty?.DrainRate ?? 0) < (baseDifficulty?.DrainRate ?? 0) ? + colours.BlueLight : colours.RedLight; + accuracy.AccentColour = (moddedDifficulty?.OverallDifficulty ?? 0) == (baseDifficulty?.OverallDifficulty ?? 0) ? + Color4.White : (moddedDifficulty?.OverallDifficulty ?? 0) < (baseDifficulty?.OverallDifficulty ?? 0) ? + colours.BlueLight : colours.RedLight; + approachRate.AccentColour = (moddedDifficulty?.ApproachRate ?? 0) == (baseDifficulty?.ApproachRate ?? 0) ? + Color4.White : (moddedDifficulty?.ApproachRate ?? 0) < (baseDifficulty?.ApproachRate ?? 0) ? + colours.BlueLight : colours.RedLight; + firstValue.AccentColour = (moddedDifficulty?.CircleSize ?? 0) == (baseDifficulty?.CircleSize ?? 0) ? + Color4.White : (moddedDifficulty?.CircleSize ?? 0) < (baseDifficulty?.CircleSize ?? 0) ? + colours.BlueLight : colours.RedLight; } private class StatisticRow : Container, IHasAccentColour From 3945e7403aec4c08a249a9fd6a041f71327e96ee Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 13 Dec 2019 09:39:54 +0800 Subject: [PATCH 0306/1829] improve tests and refactor AdvancedStats --- .../SongSelect/TestSceneBeatmapDetailArea.cs | 6 +- .../Screens/Select/Details/AdvancedStats.cs | 77 ++++++++++++------- 2 files changed, 53 insertions(+), 30 deletions(-) diff --git a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetailArea.cs b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetailArea.cs index ad7ef558c4..d4805a73e4 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetailArea.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetailArea.cs @@ -179,6 +179,8 @@ namespace osu.Game.Tests.Visual.SongSelect AddStep("null beatmap", () => detailsArea.Beatmap = null); + Ruleset ruleset = rulesets.AvailableRulesets.First().CreateInstance(); + AddStep("with EZ mod", () => { detailsArea.Beatmap = new TestWorkingBeatmap(new Beatmap @@ -202,7 +204,7 @@ namespace osu.Game.Tests.Visual.SongSelect } }); - Mods.Value = new[] { rulesets.AvailableRulesets.First().CreateInstance().GetAllMods().First(m => m is ModEasy) }; + Mods.Value = new[] { ruleset.GetAllMods().First(m => m is ModEasy) }; }); AddStep("with HR mod", () => @@ -228,7 +230,7 @@ namespace osu.Game.Tests.Visual.SongSelect } }); - Mods.Value = new[] { rulesets.AvailableRulesets.First().CreateInstance().GetAllMods().First(m => m is ModHardRock) }; + Mods.Value = new[] { ruleset.GetAllMods().First(m => m is ModHardRock) }; }); } } diff --git a/osu.Game/Screens/Select/Details/AdvancedStats.cs b/osu.Game/Screens/Select/Details/AdvancedStats.cs index be03b7ddd5..3e7d4e244b 100644 --- a/osu.Game/Screens/Select/Details/AdvancedStats.cs +++ b/osu.Game/Screens/Select/Details/AdvancedStats.cs @@ -24,9 +24,6 @@ namespace osu.Game.Screens.Select.Details [Resolved] private IBindable> mods { get; set; } - [Resolved] - private OsuColour colours { get; set; } - private readonly StatisticRow firstValue, hpDrain, accuracy, approachRate, starDifficulty; private BeatmapInfo beatmap; @@ -60,11 +57,10 @@ namespace osu.Game.Screens.Select.Details starDifficulty = new StatisticRow(10, true) { Title = "Star Difficulty" }, }, }; - } [BackgroundDependencyLoader] - private void load() + private void load(OsuColour colours) { starDifficulty.AccentColour = colours.Yellow; mods.ValueChanged += _ => updateStatistics(); @@ -89,31 +85,24 @@ namespace osu.Game.Screens.Select.Details if ((processed?.Ruleset?.ID ?? 0) == 3) { firstValue.Title = "Key Amount"; - firstValue.Value = (int)MathF.Round(moddedDifficulty?.CircleSize ?? 0); + firstValue.BaseValue = (int)MathF.Round(baseDifficulty?.CircleSize ?? 0); + firstValue.ModdedValue = (int)MathF.Round(moddedDifficulty?.CircleSize ?? 0); } else { firstValue.Title = "Circle Size"; - firstValue.Value = moddedDifficulty?.CircleSize ?? 0; + firstValue.BaseValue = baseDifficulty?.CircleSize ?? 0; + firstValue.ModdedValue = moddedDifficulty?.CircleSize ?? 0; } - hpDrain.Value = moddedDifficulty?.DrainRate ?? 0; - accuracy.Value = moddedDifficulty?.OverallDifficulty ?? 0; - approachRate.Value = moddedDifficulty?.ApproachRate ?? 0; - starDifficulty.Value = (float)(processed?.StarDifficulty ?? 0); + hpDrain.BaseValue = baseDifficulty?.DrainRate ?? 0; + accuracy.BaseValue = baseDifficulty?.OverallDifficulty ?? 0; + approachRate.BaseValue = baseDifficulty?.ApproachRate ?? 0; + starDifficulty.BaseValue = (float)(processed?.StarDifficulty ?? 0); - hpDrain.AccentColour = (moddedDifficulty?.DrainRate ?? 0) == (baseDifficulty?.DrainRate ?? 0) ? - Color4.White : (moddedDifficulty?.DrainRate ?? 0) < (baseDifficulty?.DrainRate ?? 0) ? - colours.BlueLight : colours.RedLight; - accuracy.AccentColour = (moddedDifficulty?.OverallDifficulty ?? 0) == (baseDifficulty?.OverallDifficulty ?? 0) ? - Color4.White : (moddedDifficulty?.OverallDifficulty ?? 0) < (baseDifficulty?.OverallDifficulty ?? 0) ? - colours.BlueLight : colours.RedLight; - approachRate.AccentColour = (moddedDifficulty?.ApproachRate ?? 0) == (baseDifficulty?.ApproachRate ?? 0) ? - Color4.White : (moddedDifficulty?.ApproachRate ?? 0) < (baseDifficulty?.ApproachRate ?? 0) ? - colours.BlueLight : colours.RedLight; - firstValue.AccentColour = (moddedDifficulty?.CircleSize ?? 0) == (baseDifficulty?.CircleSize ?? 0) ? - Color4.White : (moddedDifficulty?.CircleSize ?? 0) < (baseDifficulty?.CircleSize ?? 0) ? - colours.BlueLight : colours.RedLight; + hpDrain.ModdedValue = moddedDifficulty?.DrainRate ?? 0; + accuracy.ModdedValue = moddedDifficulty?.OverallDifficulty ?? 0; + approachRate.ModdedValue = moddedDifficulty?.ApproachRate ?? 0; } private class StatisticRow : Container, IHasAccentColour @@ -124,7 +113,10 @@ namespace osu.Game.Screens.Select.Details private readonly float maxValue; private readonly bool forceDecimalPlaces; private readonly OsuSpriteText name, value; - private readonly Bar bar; + private readonly Bar bar, modBar; + + [Resolved] + private OsuColour colours { get; set; } public string Title { @@ -132,19 +124,39 @@ namespace osu.Game.Screens.Select.Details set => name.Text = value; } - private float difficultyValue; + private float baseValue; - public float Value + private float moddedValue; + + public float BaseValue { - get => difficultyValue; + get => baseValue; set { - difficultyValue = value; + baseValue = value; bar.Length = value / maxValue; this.value.Text = value.ToString(forceDecimalPlaces ? "0.00" : "0.##"); } } + public float ModdedValue + { + get => moddedValue; + set + { + moddedValue = value; + modBar.Length = value / maxValue; + this.value.Text = value.ToString(forceDecimalPlaces ? "0.00" : "0.##"); + + if (moddedValue > baseValue) + modBar.AccentColour = this.value.Colour = colours.Red; + else if (moddedValue < baseValue) + modBar.AccentColour = this.value.Colour = colours.BlueDark; + else + modBar.AccentColour = this.value.Colour = Color4.White; + } + } + public Color4 AccentColour { get => bar.AccentColour; @@ -178,6 +190,15 @@ namespace osu.Game.Screens.Select.Details BackgroundColour = Color4.White.Opacity(0.5f), Padding = new MarginPadding { Left = name_width + 10, Right = value_width + 10 }, }, + modBar = new Bar + { + Origin = Anchor.CentreLeft, + Anchor = Anchor.CentreLeft, + RelativeSizeAxes = Axes.X, + Alpha = 0.5f, + Height = 5, + Padding = new MarginPadding { Left = name_width + 10, Right = value_width + 10 }, + }, new Container { Anchor = Anchor.TopRight, From ababe7b6c995b2943ad71ce23d9734a62b412bcc Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 13 Dec 2019 15:22:07 +0800 Subject: [PATCH 0307/1829] refactor mod to make use of #7175 --- osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs index 532da8a647..f65340e90c 100644 --- a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs @@ -65,12 +65,24 @@ namespace osu.Game.Rulesets.Mods Precision = 0.1F, }; + private BeatmapDifficulty difficulty; + public virtual void ApplyToDifficulty(BeatmapDifficulty difficulty) { - difficulty.DrainRate = DrainRate.Value; - difficulty.CircleSize = CircleSize.Value; - difficulty.ApproachRate = ApproachRate.Value; - difficulty.OverallDifficulty = OverallDifficulty.Value; + if (this.difficulty == null || this.difficulty.ID != difficulty.ID) + { + this.difficulty = difficulty; + DrainRate.Value = DrainRate.Default = difficulty.DrainRate; + CircleSize.Value = CircleSize.Default = difficulty.CircleSize; + ApproachRate.Value = ApproachRate.Default = difficulty.ApproachRate; + OverallDifficulty.Value = OverallDifficulty.Default = difficulty.OverallDifficulty; + } else + { + difficulty.DrainRate = DrainRate.Value; + difficulty.CircleSize = CircleSize.Value; + difficulty.ApproachRate = ApproachRate.Value; + difficulty.OverallDifficulty = OverallDifficulty.Value; + } } } } From 0311cc83ad1387d2191d104fab1617a5b4db347a Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 13 Dec 2019 15:27:34 +0800 Subject: [PATCH 0308/1829] add whitespace --- osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs index f65340e90c..f6216df2b5 100644 --- a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs @@ -76,7 +76,8 @@ namespace osu.Game.Rulesets.Mods CircleSize.Value = CircleSize.Default = difficulty.CircleSize; ApproachRate.Value = ApproachRate.Default = difficulty.ApproachRate; OverallDifficulty.Value = OverallDifficulty.Default = difficulty.OverallDifficulty; - } else + } + else { difficulty.DrainRate = DrainRate.Value; difficulty.CircleSize = CircleSize.Value; From ab5aa8594de8cf994834014885ae28818827030f Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 13 Dec 2019 15:46:58 +0800 Subject: [PATCH 0309/1829] remove whitespace --- osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs index f6216df2b5..b23297345b 100644 --- a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs @@ -76,7 +76,7 @@ namespace osu.Game.Rulesets.Mods CircleSize.Value = CircleSize.Default = difficulty.CircleSize; ApproachRate.Value = ApproachRate.Default = difficulty.ApproachRate; OverallDifficulty.Value = OverallDifficulty.Default = difficulty.OverallDifficulty; - } + } else { difficulty.DrainRate = DrainRate.Value; From 53a665a034cfa95f926c3334c4a8e77bf370a803 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 12 Dec 2019 20:04:46 +0900 Subject: [PATCH 0310/1829] Fix sound types and banks not being written correctly --- .../Beatmaps/Formats/LegacyBeatmapEncoder.cs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index 0eeacf733d..4c8b83820d 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -236,6 +236,10 @@ namespace osu.Game.Beatmaps.Formats writer.Write(FormattableString.Invariant($"{positionData.Y},")); writer.Write(FormattableString.Invariant($"{hitObject.StartTime},")); writer.Write(FormattableString.Invariant($"{(int)hitObjectType},")); + + if (hitObject is IHasCurve _) + writer.Write(FormattableString.Invariant($"0,")); // A sound type of "none" is written since it's stored per-node + else writer.Write(FormattableString.Invariant($"{(int)toLegacyHitSoundType(hitObject.Samples)},")); if (hitObject is IHasCurve curveData) @@ -303,7 +307,11 @@ namespace osu.Game.Beatmaps.Formats else if (hitObject is IHasEndTime endTimeData) writer.Write(FormattableString.Invariant($"{endTimeData.EndTime},")); - writer.Write(getSampleBank(hitObject.Samples)); + if (hitObject is IHasCurve _) + writer.Write(getSampleBank(hitObject.Samples, zeroBanks: true)); // A bank of "none" is written since it's stored per-node + else + writer.Write(getSampleBank(hitObject.Samples)); + writer.Write(Environment.NewLine); } @@ -319,14 +327,11 @@ namespace osu.Game.Beatmaps.Formats { } - private string getSampleBank(IList samples, bool banksOnly = false) + private string getSampleBank(IList samples, bool banksOnly = false, bool zeroBanks = false) { LegacySampleBank normalBank = toLegacySampleBank(samples.FirstOrDefault(s => s.Name == HitSampleInfo.HIT_NORMAL)?.Bank); LegacySampleBank addBank = toLegacySampleBank(samples.FirstOrDefault(s => !string.IsNullOrEmpty(s.Name) && s.Name != HitSampleInfo.HIT_NORMAL)?.Bank); - if (addBank == LegacySampleBank.None) - addBank = normalBank; - string customSampleBank = toLegacyCustomSampleBank(samples.FirstOrDefault()?.Suffix); string sampleFilename = samples.FirstOrDefault(s => string.IsNullOrEmpty(s.Name))?.LookupNames.First() ?? string.Empty; @@ -334,8 +339,8 @@ namespace osu.Game.Beatmaps.Formats StringBuilder sb = new StringBuilder(); - sb.Append(FormattableString.Invariant($"{(int)normalBank}:")); - sb.Append(FormattableString.Invariant($"{(int)addBank}")); + sb.Append(FormattableString.Invariant($"{(zeroBanks ? 0 : (int)normalBank)}:")); + sb.Append(FormattableString.Invariant($"{(zeroBanks ? 0 : (int)addBank)}")); if (!banksOnly) { From 0b7c4f252c19578ff4d1da03cb4d6f3962e497fe Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 13 Dec 2019 17:01:59 +0900 Subject: [PATCH 0311/1829] Fix artist being written in place of version --- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index 4c8b83820d..efb8527d65 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -108,7 +108,7 @@ namespace osu.Game.Beatmaps.Formats writer.WriteLine(FormattableString.Invariant($"Artist: {beatmap.Metadata.Artist}")); writer.WriteLine(FormattableString.Invariant($"ArtistUnicode: {beatmap.Metadata.ArtistUnicode}")); writer.WriteLine(FormattableString.Invariant($"Creator: {beatmap.Metadata.AuthorString}")); - writer.WriteLine(FormattableString.Invariant($"Version: {beatmap.Metadata.Artist}")); + writer.WriteLine(FormattableString.Invariant($"Version: {beatmap.BeatmapInfo.Version}")); writer.WriteLine(FormattableString.Invariant($"Source: {beatmap.Metadata.Source}")); writer.WriteLine(FormattableString.Invariant($"Tags: {beatmap.Metadata.Tags}")); writer.WriteLine(FormattableString.Invariant($"BeatmapID: {beatmap.BeatmapInfo.OnlineBeatmapID ?? 0}")); From 97158fce7de679c07393307303d8438f3ea473f6 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 13 Dec 2019 17:02:10 +0900 Subject: [PATCH 0312/1829] Always attach a new combo to spinners --- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index efb8527d65..ff5d6ceebe 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -228,7 +228,7 @@ namespace osu.Game.Beatmaps.Formats if (hitObject is IHasCurve _) hitObjectType |= LegacyHitObjectType.Slider; else if (hitObject is IHasEndTime _) - hitObjectType |= LegacyHitObjectType.Spinner; + hitObjectType |= LegacyHitObjectType.Spinner | LegacyHitObjectType.NewCombo; else hitObjectType |= LegacyHitObjectType.Circle; From 654499d8b017c19a37b76ef1a3dbbe45a410ace3 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 13 Dec 2019 17:33:18 +0900 Subject: [PATCH 0313/1829] Remove whitespace --- osu.Game/Beatmaps/Formats/LegacyDecoder.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyDecoder.cs index 1c2ca4b6f8..5bc7897499 100644 --- a/osu.Game/Beatmaps/Formats/LegacyDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyDecoder.cs @@ -148,10 +148,6 @@ namespace osu.Game.Beatmaps.Formats Fonts } - - - - internal class LegacyDifficultyControlPoint : DifficultyControlPoint { public LegacyDifficultyControlPoint() From 87a7f340e3100b7f1ee1f9a2c4b05abdb194b86b Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 13 Dec 2019 18:12:44 +0900 Subject: [PATCH 0314/1829] Fix first sample point being treated as redundant --- osu.Game.Tests/NonVisual/ControlPointInfoTest.cs | 12 ++++++------ osu.Game/Beatmaps/ControlPoints/ControlPointInfo.cs | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/osu.Game.Tests/NonVisual/ControlPointInfoTest.cs b/osu.Game.Tests/NonVisual/ControlPointInfoTest.cs index a51b90851c..0535473a3f 100644 --- a/osu.Game.Tests/NonVisual/ControlPointInfoTest.cs +++ b/osu.Game.Tests/NonVisual/ControlPointInfoTest.cs @@ -60,18 +60,18 @@ namespace osu.Game.Tests.NonVisual { var cpi = new ControlPointInfo(); - cpi.Add(0, new SampleControlPoint()); // is redundant + cpi.Add(0, new SampleControlPoint()); // is *not* redundant, special exception for first sample point cpi.Add(1000, new SampleControlPoint()); // is redundant - Assert.That(cpi.Groups.Count, Is.EqualTo(0)); + Assert.That(cpi.Groups.Count, Is.EqualTo(1)); Assert.That(cpi.TimingPoints.Count, Is.EqualTo(0)); - Assert.That(cpi.AllControlPoints.Count(), Is.EqualTo(0)); + Assert.That(cpi.AllControlPoints.Count(), Is.EqualTo(1)); cpi.Add(1000, new SampleControlPoint { SampleVolume = 50 }); // is not redundant - Assert.That(cpi.Groups.Count, Is.EqualTo(1)); - Assert.That(cpi.SamplePoints.Count, Is.EqualTo(1)); - Assert.That(cpi.AllControlPoints.Count(), Is.EqualTo(1)); + Assert.That(cpi.Groups.Count, Is.EqualTo(2)); + Assert.That(cpi.SamplePoints.Count, Is.EqualTo(2)); + Assert.That(cpi.AllControlPoints.Count(), Is.EqualTo(2)); } [Test] diff --git a/osu.Game/Beatmaps/ControlPoints/ControlPointInfo.cs b/osu.Game/Beatmaps/ControlPoints/ControlPointInfo.cs index ce2783004c..6965544292 100644 --- a/osu.Game/Beatmaps/ControlPoints/ControlPointInfo.cs +++ b/osu.Game/Beatmaps/ControlPoints/ControlPointInfo.cs @@ -239,7 +239,7 @@ namespace osu.Game.Beatmaps.ControlPoints break; case SampleControlPoint _: - existing = SamplePointAt(time); + existing = binarySearch(SamplePoints, time); break; case DifficultyControlPoint _: From 36f541d8e5ce77a846646063ba10903a93690965 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 13 Dec 2019 18:13:24 +0900 Subject: [PATCH 0315/1829] Fix incorrect asserts --- osu.Game.Tests/NonVisual/ControlPointInfoTest.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game.Tests/NonVisual/ControlPointInfoTest.cs b/osu.Game.Tests/NonVisual/ControlPointInfoTest.cs index 0535473a3f..2782e902fe 100644 --- a/osu.Game.Tests/NonVisual/ControlPointInfoTest.cs +++ b/osu.Game.Tests/NonVisual/ControlPointInfoTest.cs @@ -45,7 +45,7 @@ namespace osu.Game.Tests.NonVisual cpi.Add(1000, new DifficultyControlPoint()); // is redundant Assert.That(cpi.Groups.Count, Is.EqualTo(0)); - Assert.That(cpi.TimingPoints.Count, Is.EqualTo(0)); + Assert.That(cpi.DifficultyPoints.Count, Is.EqualTo(0)); Assert.That(cpi.AllControlPoints.Count(), Is.EqualTo(0)); cpi.Add(1000, new DifficultyControlPoint { SpeedMultiplier = 2 }); // is not redundant @@ -64,7 +64,7 @@ namespace osu.Game.Tests.NonVisual cpi.Add(1000, new SampleControlPoint()); // is redundant Assert.That(cpi.Groups.Count, Is.EqualTo(1)); - Assert.That(cpi.TimingPoints.Count, Is.EqualTo(0)); + Assert.That(cpi.SamplePoints.Count, Is.EqualTo(1)); Assert.That(cpi.AllControlPoints.Count(), Is.EqualTo(1)); cpi.Add(1000, new SampleControlPoint { SampleVolume = 50 }); // is not redundant @@ -83,7 +83,7 @@ namespace osu.Game.Tests.NonVisual cpi.Add(1000, new EffectControlPoint()); // is redundant Assert.That(cpi.Groups.Count, Is.EqualTo(0)); - Assert.That(cpi.TimingPoints.Count, Is.EqualTo(0)); + Assert.That(cpi.EffectPoints.Count, Is.EqualTo(0)); Assert.That(cpi.AllControlPoints.Count(), Is.EqualTo(0)); cpi.Add(1000, new EffectControlPoint { KiaiMode = true }); // is not redundant From c976427206680d9cfbad6b7ac6a463d50c85081f Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 13 Dec 2019 19:00:28 +0900 Subject: [PATCH 0316/1829] Refactor test to be more complete --- .../Formats/LegacyBeatmapEncoderTest.cs | 112 ++---------------- osu.Game.Tests/Resources/TestResources.cs | 6 +- 2 files changed, 16 insertions(+), 102 deletions(-) diff --git a/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapEncoderTest.cs b/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapEncoderTest.cs index c4a3877c1c..f2b3a16f68 100644 --- a/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapEncoderTest.cs +++ b/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapEncoderTest.cs @@ -1,16 +1,15 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. +using System.Collections.Generic; using System.IO; using System.Linq; using NUnit.Framework; -using osu.Game.Audio; using osu.Game.Beatmaps; using osu.Game.Beatmaps.Formats; using osu.Game.IO; -using osu.Game.Rulesets.Objects.Types; +using osu.Game.IO.Serialization; using osu.Game.Tests.Resources; -using osuTK; namespace osu.Game.Tests.Beatmaps.Formats { @@ -19,101 +18,18 @@ namespace osu.Game.Tests.Beatmaps.Formats { private const string normal = "Soleily - Renatus (Gamu) [Insane].osu"; - [Test] - public void TestDecodeMetadata() + private static IEnumerable allBeatmaps => TestResources.GetStore().GetAvailableResources().Where(res => res.EndsWith(".osu")); + + [TestCaseSource(nameof(allBeatmaps))] + public void TestDecodeEncodedBeatmap(string name) { - var beatmap = decode(normal); - var meta = beatmap.BeatmapInfo.Metadata; - Assert.AreEqual(241526, beatmap.BeatmapInfo.BeatmapSet.OnlineBeatmapSetID); - Assert.AreEqual("Soleily", meta.Artist); - Assert.AreEqual("Soleily", meta.ArtistUnicode); - Assert.AreEqual("03. Renatus - Soleily 192kbps.mp3", meta.AudioFile); - Assert.AreEqual("Gamu", meta.AuthorString); - Assert.AreEqual("machinetop_background.jpg", meta.BackgroundFile); - Assert.AreEqual(164471, meta.PreviewTime); - Assert.AreEqual(string.Empty, meta.Source); - Assert.AreEqual("MBC7 Unisphere 地球ヤバイEP Chikyu Yabai", meta.Tags); - Assert.AreEqual("Renatus", meta.Title); - Assert.AreEqual("Renatus", meta.TitleUnicode); + var decoded = decode(normal, out var encoded); + + Assert.That(decoded.HitObjects.Count, Is.EqualTo(encoded.HitObjects.Count)); + Assert.That(encoded.Serialize(), Is.EqualTo(decoded.Serialize())); } - [Test] - public void TestDecodeGeneral() - { - var beatmap = decode(normal); - var beatmapInfo = beatmap.BeatmapInfo; - Assert.AreEqual(0, beatmapInfo.AudioLeadIn); - Assert.AreEqual(false, beatmapInfo.Countdown); - Assert.AreEqual(0.7f, beatmapInfo.StackLeniency); - Assert.AreEqual(false, beatmapInfo.SpecialStyle); - Assert.IsTrue(beatmapInfo.RulesetID == 0); - Assert.AreEqual(false, beatmapInfo.LetterboxInBreaks); - Assert.AreEqual(false, beatmapInfo.WidescreenStoryboard); - } - - [Test] - public void TestDecodeEditor() - { - var beatmap = decode(normal); - var beatmapInfo = beatmap.BeatmapInfo; - - int[] expectedBookmarks = - { - 11505, 22054, 32604, 43153, 53703, 64252, 74802, 85351, - 95901, 106450, 116999, 119637, 130186, 140735, 151285, - 161834, 164471, 175020, 185570, 196119, 206669, 209306 - }; - Assert.AreEqual(expectedBookmarks.Length, beatmapInfo.Bookmarks.Length); - for (int i = 0; i < expectedBookmarks.Length; i++) - Assert.AreEqual(expectedBookmarks[i], beatmapInfo.Bookmarks[i]); - Assert.AreEqual(1.8, beatmapInfo.DistanceSpacing); - Assert.AreEqual(4, beatmapInfo.BeatDivisor); - Assert.AreEqual(4, beatmapInfo.GridSize); - Assert.AreEqual(2, beatmapInfo.TimelineZoom); - } - - [Test] - public void TestDecodeDifficulty() - { - var beatmap = decode(normal); - var difficulty = beatmap.BeatmapInfo.BaseDifficulty; - Assert.AreEqual(6.5f, difficulty.DrainRate); - Assert.AreEqual(4, difficulty.CircleSize); - Assert.AreEqual(8, difficulty.OverallDifficulty); - Assert.AreEqual(9, difficulty.ApproachRate); - Assert.AreEqual(1.8, difficulty.SliderMultiplier); - Assert.AreEqual(2, difficulty.SliderTickRate); - } - - [Test] - public void TestDecodeHitObjects() - { - var beatmap = decode(normal); - - var curveData = beatmap.HitObjects[0] as IHasCurve; - var positionData = beatmap.HitObjects[0] as IHasPosition; - - Assert.IsNotNull(positionData); - Assert.IsNotNull(curveData); - Assert.AreEqual(new Vector2(192, 168), positionData.Position); - Assert.AreEqual(956, beatmap.HitObjects[0].StartTime); - Assert.IsTrue(beatmap.HitObjects[0].Samples.Any(s => s.Name == HitSampleInfo.HIT_NORMAL)); - - positionData = beatmap.HitObjects[1] as IHasPosition; - - Assert.IsNotNull(positionData); - Assert.AreEqual(new Vector2(304, 56), positionData.Position); - Assert.AreEqual(1285, beatmap.HitObjects[1].StartTime); - Assert.IsTrue(beatmap.HitObjects[1].Samples.Any(s => s.Name == HitSampleInfo.HIT_CLAP)); - } - - private Beatmap decode(string filename) - { - decode(filename, out Beatmap jsonDecoded); - return jsonDecoded; - } - - private Beatmap decode(string filename, out Beatmap decoded) + private Beatmap decode(string filename, out Beatmap encoded) { using (var stream = TestResources.OpenResource(filename)) using (var sr = new LineBufferedReader(stream)) @@ -129,11 +45,7 @@ namespace osu.Game.Tests.Beatmaps.Formats ms.Position = 0; - string result = sr2.ReadToEnd(); - - ms.Position = 0; - - decoded = new LegacyBeatmapDecoder { ApplyOffsets = false }.Decode(sr2); + encoded = new LegacyBeatmapDecoder { ApplyOffsets = false }.Decode(sr2); return legacyDecoded; } } diff --git a/osu.Game.Tests/Resources/TestResources.cs b/osu.Game.Tests/Resources/TestResources.cs index 66084a3204..932021afe5 100644 --- a/osu.Game.Tests/Resources/TestResources.cs +++ b/osu.Game.Tests/Resources/TestResources.cs @@ -9,9 +9,11 @@ namespace osu.Game.Tests.Resources { public static class TestResources { - public static Stream OpenResource(string name) => new DllResourceStore("osu.Game.Tests.dll").GetStream($"Resources/{name}"); + public static DllResourceStore GetStore() => new DllResourceStore("osu.Game.Tests.dll"); - public static Stream GetTestBeatmapStream(bool virtualTrack = false) => new DllResourceStore("osu.Game.Resources.dll").GetStream($"Beatmaps/241526 Soleily - Renatus{(virtualTrack ? "_virtual" : "")}.osz"); + public static Stream OpenResource(string name) => GetStore().GetStream($"Resources/{name}"); + + public static Stream GetTestBeatmapStream(bool virtualTrack = false) => GetStore().GetStream($"Beatmaps/241526 Soleily - Renatus{(virtualTrack ? "_virtual" : "")}.osz"); public static string GetTestBeatmapForImport(bool virtualTrack = false) { From 0ad28a9400b821e2d11a8e0c234f2030387e0119 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 13 Dec 2019 19:11:45 +0900 Subject: [PATCH 0317/1829] Start at version 128 --- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index ff5d6ceebe..f367ab3817 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -17,7 +17,7 @@ namespace osu.Game.Beatmaps.Formats { public class LegacyBeatmapEncoder { - public const int LATEST_VERSION = 14234; + public const int LATEST_VERSION = 128; private readonly IBeatmap beatmap; From 9bc02f489ee46f098cbea53d78e3cb6c2d001e5b Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 13 Dec 2019 19:14:49 +0900 Subject: [PATCH 0318/1829] Add missing headers --- osu.Game/Beatmaps/Legacy/LegacyEffectFlags.cs | 3 +++ osu.Game/Beatmaps/Legacy/LegacyEventType.cs | 3 +++ osu.Game/Beatmaps/Legacy/LegacyHitObjectType.cs | 3 +++ osu.Game/Beatmaps/Legacy/LegacyHitSoundType.cs | 3 +++ osu.Game/Beatmaps/Legacy/LegacyOrigins.cs | 3 +++ osu.Game/Beatmaps/Legacy/LegacySampleBank.cs | 3 +++ osu.Game/Beatmaps/Legacy/LegacyStoryLayer.cs | 3 +++ 7 files changed, 21 insertions(+) diff --git a/osu.Game/Beatmaps/Legacy/LegacyEffectFlags.cs b/osu.Game/Beatmaps/Legacy/LegacyEffectFlags.cs index ce141031fd..5bf80c34d7 100644 --- a/osu.Game/Beatmaps/Legacy/LegacyEffectFlags.cs +++ b/osu.Game/Beatmaps/Legacy/LegacyEffectFlags.cs @@ -1,3 +1,6 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + using System; namespace osu.Game.Beatmaps.Legacy diff --git a/osu.Game/Beatmaps/Legacy/LegacyEventType.cs b/osu.Game/Beatmaps/Legacy/LegacyEventType.cs index 57b1e6c29f..32a7122978 100644 --- a/osu.Game/Beatmaps/Legacy/LegacyEventType.cs +++ b/osu.Game/Beatmaps/Legacy/LegacyEventType.cs @@ -1,3 +1,6 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + namespace osu.Game.Beatmaps.Legacy { internal enum LegacyEventType diff --git a/osu.Game/Beatmaps/Legacy/LegacyHitObjectType.cs b/osu.Game/Beatmaps/Legacy/LegacyHitObjectType.cs index 9223f7df31..ec9839b893 100644 --- a/osu.Game/Beatmaps/Legacy/LegacyHitObjectType.cs +++ b/osu.Game/Beatmaps/Legacy/LegacyHitObjectType.cs @@ -1,3 +1,6 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + using System; namespace osu.Game.Beatmaps.Legacy diff --git a/osu.Game/Beatmaps/Legacy/LegacyHitSoundType.cs b/osu.Game/Beatmaps/Legacy/LegacyHitSoundType.cs index 69adbf8f67..d7743565f8 100644 --- a/osu.Game/Beatmaps/Legacy/LegacyHitSoundType.cs +++ b/osu.Game/Beatmaps/Legacy/LegacyHitSoundType.cs @@ -1,3 +1,6 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + using System; namespace osu.Game.Beatmaps.Legacy diff --git a/osu.Game/Beatmaps/Legacy/LegacyOrigins.cs b/osu.Game/Beatmaps/Legacy/LegacyOrigins.cs index 93c8920761..31f67d6dfd 100644 --- a/osu.Game/Beatmaps/Legacy/LegacyOrigins.cs +++ b/osu.Game/Beatmaps/Legacy/LegacyOrigins.cs @@ -1,3 +1,6 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + namespace osu.Game.Beatmaps.Legacy { internal enum LegacyOrigins diff --git a/osu.Game/Beatmaps/Legacy/LegacySampleBank.cs b/osu.Game/Beatmaps/Legacy/LegacySampleBank.cs index 0d54998d15..8cac29cb87 100644 --- a/osu.Game/Beatmaps/Legacy/LegacySampleBank.cs +++ b/osu.Game/Beatmaps/Legacy/LegacySampleBank.cs @@ -1,3 +1,6 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + namespace osu.Game.Beatmaps.Legacy { internal enum LegacySampleBank diff --git a/osu.Game/Beatmaps/Legacy/LegacyStoryLayer.cs b/osu.Game/Beatmaps/Legacy/LegacyStoryLayer.cs index 509f39f830..5237445640 100644 --- a/osu.Game/Beatmaps/Legacy/LegacyStoryLayer.cs +++ b/osu.Game/Beatmaps/Legacy/LegacyStoryLayer.cs @@ -1,3 +1,6 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + namespace osu.Game.Beatmaps.Legacy { internal enum LegacyStoryLayer From 952bc96bbf3223b2415a486c3b8b922e57328ee4 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 13 Dec 2019 20:05:38 +0900 Subject: [PATCH 0319/1829] Use GameBase data sources for Beatmap/Mods/Ruleset Sourced in via OsuScreenDependencies for management --- osu.Game/Tests/Visual/OsuTestScene.cs | 40 ++++++++++----------------- 1 file changed, 15 insertions(+), 25 deletions(-) diff --git a/osu.Game/Tests/Visual/OsuTestScene.cs b/osu.Game/Tests/Visual/OsuTestScene.cs index 4ca0ec0f7e..4a561f17a3 100644 --- a/osu.Game/Tests/Visual/OsuTestScene.cs +++ b/osu.Game/Tests/Visual/OsuTestScene.cs @@ -12,7 +12,6 @@ using osu.Framework.Audio.Track; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Textures; using osu.Framework.Platform; using osu.Framework.Testing; using osu.Framework.Timing; @@ -21,6 +20,7 @@ using osu.Game.Database; using osu.Game.Online.API; using osu.Game.Rulesets; using osu.Game.Rulesets.Mods; +using osu.Game.Screens; using osu.Game.Storyboards; using osu.Game.Tests.Beatmaps; @@ -28,21 +28,13 @@ namespace osu.Game.Tests.Visual { public abstract class OsuTestScene : TestScene { - [Cached(typeof(Bindable))] - [Cached(typeof(IBindable))] - private NonNullableBindable beatmap; + protected Bindable Beatmap { get; private set; } - protected Bindable Beatmap => beatmap; + protected Bindable Ruleset; - [Cached] - [Cached(typeof(IBindable))] - protected readonly Bindable Ruleset = new Bindable(); + protected Bindable> Mods; - [Cached] - [Cached(Type = typeof(IBindable>))] - protected readonly Bindable> Mods = new Bindable>(Array.Empty()); - - protected new DependencyContainer Dependencies { get; private set; } + protected new OsuScreenDependencies Dependencies { get; private set; } private readonly Lazy localStorage; protected Storage LocalStorage => localStorage.Value; @@ -72,18 +64,16 @@ namespace osu.Game.Tests.Visual protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent) { - // This is the earliest we can get OsuGameBase, which is used by the dummy working beatmap to find textures - var working = new DummyWorkingBeatmap(parent.Get(), parent.Get()); + Dependencies = new OsuScreenDependencies(false, base.CreateChildDependencies(parent)); - beatmap = new NonNullableBindable(working) { Default = working }; - beatmap.BindValueChanged(b => ScheduleAfterChildren(() => - { - // compare to last beatmap as sometimes the two may share a track representation (optimisation, see WorkingBeatmap.TransferTo) - if (b.OldValue?.TrackLoaded == true && b.OldValue?.Track != b.NewValue?.Track) - b.OldValue.RecycleTrack(); - })); + Beatmap = Dependencies.Beatmap; + Beatmap.SetDefault(); - Dependencies = new DependencyContainer(base.CreateChildDependencies(parent)); + Ruleset = Dependencies.Ruleset; + Ruleset.SetDefault(); + + Mods = Dependencies.Mods; + Mods.SetDefault(); if (!UseOnlineAPI) { @@ -135,8 +125,8 @@ namespace osu.Game.Tests.Visual { base.Dispose(isDisposing); - if (beatmap?.Value.TrackLoaded == true) - beatmap.Value.Track.Stop(); + if (Beatmap?.Value.TrackLoaded == true) + Beatmap.Value.Track.Stop(); if (contextFactory.IsValueCreated) contextFactory.Value.ResetDatabase(); From 395b058ff872a28cf74554088ec04f26eff319d8 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 13 Dec 2019 20:05:54 +0900 Subject: [PATCH 0320/1829] Fix OsuScreenDependencies not caching non-leased versions --- osu.Game/Screens/OsuScreenDependencies.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/osu.Game/Screens/OsuScreenDependencies.cs b/osu.Game/Screens/OsuScreenDependencies.cs index 115f4b7e1a..8d54829d49 100644 --- a/osu.Game/Screens/OsuScreenDependencies.cs +++ b/osu.Game/Screens/OsuScreenDependencies.cs @@ -26,16 +26,26 @@ namespace osu.Game.Screens Beatmap = parent.Get>()?.GetBoundCopy(); if (Beatmap == null) + { Cache(Beatmap = parent.Get>().BeginLease(false)); + CacheAs(Beatmap); + } Ruleset = parent.Get>()?.GetBoundCopy(); if (Ruleset == null) + { Cache(Ruleset = parent.Get>().BeginLease(true)); + CacheAs(Ruleset); + } Mods = parent.Get>>()?.GetBoundCopy(); + if (Mods == null) + { Cache(Mods = parent.Get>>().BeginLease(true)); + CacheAs(Mods); + } } else { From 3dc2b59d2a066e4827f52aff6c7951cd72cfddd4 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 13 Dec 2019 20:06:12 +0900 Subject: [PATCH 0321/1829] Move variable above common bindables --- osu.Game/Screens/OsuScreen.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Screens/OsuScreen.cs b/osu.Game/Screens/OsuScreen.cs index 94165fe4b7..6394fb8d23 100644 --- a/osu.Game/Screens/OsuScreen.cs +++ b/osu.Game/Screens/OsuScreen.cs @@ -87,12 +87,12 @@ namespace osu.Game.Screens public virtual float BackgroundParallaxAmount => 1; + public virtual bool AllowRateAdjustments => true; + public Bindable Beatmap { get; private set; } public Bindable Ruleset { get; private set; } - public virtual bool AllowRateAdjustments => true; - public Bindable> Mods { get; private set; } protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent) From 7033974733537e4d32984f4efeae2c578534fc04 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 13 Dec 2019 20:06:56 +0900 Subject: [PATCH 0322/1829] Fix test regressions (incorrect from the start) --- .../TestSceneDrawableHitObjectsHidden.cs | 6 ++++-- osu.Game.Rulesets.Osu.Tests/TestSceneHitCircleHidden.cs | 5 +++-- osu.Game.Rulesets.Osu.Tests/TestSceneSliderHidden.cs | 5 +++-- osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerHidden.cs | 5 +++-- .../Visual/UserInterface/TestSceneModSelectOverlay.cs | 2 +- 5 files changed, 14 insertions(+), 9 deletions(-) diff --git a/osu.Game.Rulesets.Catch.Tests/TestSceneDrawableHitObjectsHidden.cs b/osu.Game.Rulesets.Catch.Tests/TestSceneDrawableHitObjectsHidden.cs index f6d26addaa..08107e01eb 100644 --- a/osu.Game.Rulesets.Catch.Tests/TestSceneDrawableHitObjectsHidden.cs +++ b/osu.Game.Rulesets.Catch.Tests/TestSceneDrawableHitObjectsHidden.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Linq; +using NUnit.Framework; using osu.Game.Rulesets.Catch.Mods; namespace osu.Game.Rulesets.Catch.Tests @@ -12,9 +13,10 @@ namespace osu.Game.Rulesets.Catch.Tests { public override IReadOnlyList RequiredTypes => base.RequiredTypes.Concat(new[] { typeof(CatchModHidden) }).ToList(); - public TestSceneDrawableHitObjectsHidden() + [SetUp] + public void SetUp() => Schedule(() => { Mods.Value = new[] { new CatchModHidden() }; - } + }); } } diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneHitCircleHidden.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneHitCircleHidden.cs index 55c6b22146..eaba82a469 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneHitCircleHidden.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneHitCircleHidden.cs @@ -14,9 +14,10 @@ namespace osu.Game.Rulesets.Osu.Tests { public override IReadOnlyList RequiredTypes => base.RequiredTypes.Concat(new[] { typeof(OsuModHidden) }).ToList(); - public TestSceneHitCircleHidden() + [SetUp] + public void SetUp() => Schedule(() => { Mods.Value = new[] { new OsuModHidden() }; - } + }); } } diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderHidden.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderHidden.cs index 2a9c1d167b..a1795fb877 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderHidden.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderHidden.cs @@ -14,9 +14,10 @@ namespace osu.Game.Rulesets.Osu.Tests { public override IReadOnlyList RequiredTypes => base.RequiredTypes.Concat(new[] { typeof(OsuModHidden) }).ToList(); - public TestSceneSliderHidden() + [SetUp] + public void SetUp() => Schedule(() => { Mods.Value = new[] { new OsuModHidden() }; - } + }); } } diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerHidden.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerHidden.cs index a0ab1908d6..2976d4fdce 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerHidden.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerHidden.cs @@ -14,9 +14,10 @@ namespace osu.Game.Rulesets.Osu.Tests { public override IReadOnlyList RequiredTypes => base.RequiredTypes.Concat(new[] { typeof(OsuModHidden) }).ToList(); - public TestSceneSpinnerHidden() + [SetUp] + public void SetUp() => Schedule(() => { Mods.Value = new[] { new OsuModHidden() }; - } + }); } } diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs index be50200e1c..8cf2d29906 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs @@ -124,7 +124,7 @@ namespace osu.Game.Tests.Visual.UserInterface var easierMods = instance.GetModsFor(ModType.DifficultyReduction); var noFailMod = easierMods.FirstOrDefault(m => m is OsuModNoFail); - AddStep("set mods externally", () => { modDisplay.Current.Value = new[] { noFailMod }; }); + AddStep("set mods externally", () => { Mods.Value = new[] { noFailMod }; }); changeRuleset(rulesetOsu); From a1f8ab1735b755bd98b27697dbf3f99828716f28 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 13 Dec 2019 20:13:53 +0900 Subject: [PATCH 0323/1829] Fix unrequired type keyword --- osu.Game/OsuGameBase.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs index f310da3883..207fb91aab 100644 --- a/osu.Game/OsuGameBase.cs +++ b/osu.Game/OsuGameBase.cs @@ -80,7 +80,7 @@ namespace osu.Game // todo: move this to SongSelect once Screen has the ability to unsuspend. [Cached] - [Cached(Type = typeof(IBindable>))] + [Cached(typeof(IBindable>))] protected readonly Bindable> Mods = new Bindable>(Array.Empty()); protected Bindable Beatmap { get; private set; } // cached via load() method From 0bbaf9b7fbe760d4b57ca66bf82c114e952cf824 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 13 Dec 2019 20:21:35 +0900 Subject: [PATCH 0324/1829] Fix mod select overlay tests not running individually --- .../TestSceneModSelectOverlay.cs | 101 +++++++++--------- 1 file changed, 52 insertions(+), 49 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs index 8cf2d29906..5f77116c67 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs @@ -8,13 +8,16 @@ using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; +using osu.Framework.Testing; using osu.Game.Graphics.Sprites; using osu.Game.Graphics.UserInterface; using osu.Game.Overlays.Mods; using osu.Game.Overlays.Mods.Sections; using osu.Game.Rulesets; +using osu.Game.Rulesets.Mania; using osu.Game.Rulesets.Mania.Mods; using osu.Game.Rulesets.Mods; +using osu.Game.Rulesets.Osu; using osu.Game.Rulesets.Osu.Mods; using osu.Game.Rulesets.UI; using osu.Game.Screens.Play.HUD; @@ -48,42 +51,48 @@ namespace osu.Game.Tests.Visual.UserInterface private void load(RulesetStore rulesets) { this.rulesets = rulesets; + } - Add(modSelect = new TestModSelectOverlay + [SetUp] + public void SetUp() => Schedule(() => + { + Children = new Drawable[] { - RelativeSizeAxes = Axes.X, - Origin = Anchor.BottomCentre, - Anchor = Anchor.BottomCentre, - }); + modSelect = new TestModSelectOverlay + { + RelativeSizeAxes = Axes.X, + Origin = Anchor.BottomCentre, + Anchor = Anchor.BottomCentre, + }, - Add(modDisplay = new ModDisplay - { - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - AutoSizeAxes = Axes.Both, - Position = new Vector2(0, 25), - }); + modDisplay = new ModDisplay + { + Anchor = Anchor.TopRight, + Origin = Anchor.TopRight, + AutoSizeAxes = Axes.Both, + Position = new Vector2(0, 25), + Current = { BindTarget = modSelect.SelectedMods } + } + }; + }); - modDisplay.Current.UnbindBindings(); - modDisplay.Current.BindTo(modSelect.SelectedMods); - - AddStep("Show", modSelect.Show); - AddStep("Toggle", modSelect.ToggleVisibility); - AddStep("Toggle", modSelect.ToggleVisibility); + [SetUpSteps] + public void SetUpSteps() + { + AddStep("show", () => modSelect.Show()); } [Test] public void TestOsuMods() { - var ruleset = rulesets.AvailableRulesets.First(r => r.ID == 0); - changeRuleset(ruleset); + changeRuleset(0); - var instance = ruleset.CreateInstance(); + var osu = new OsuRuleset(); - var easierMods = instance.GetModsFor(ModType.DifficultyReduction); - var harderMods = instance.GetModsFor(ModType.DifficultyIncrease); + var easierMods = osu.GetModsFor(ModType.DifficultyReduction); + var harderMods = osu.GetModsFor(ModType.DifficultyIncrease); - var noFailMod = easierMods.FirstOrDefault(m => m is OsuModNoFail); + var noFailMod = osu.GetModsFor(ModType.DifficultyReduction).FirstOrDefault(m => m is OsuModNoFail); var hiddenMod = harderMods.FirstOrDefault(m => m is OsuModHidden); var doubleTimeMod = harderMods.OfType().FirstOrDefault(m => m.Mods.Any(a => a is OsuModDoubleTime)); @@ -97,8 +106,8 @@ namespace osu.Game.Tests.Visual.UserInterface testMultiMod(doubleTimeMod); testIncompatibleMods(easy, hardRock); testDeselectAll(easierMods.Where(m => !(m is MultiMod))); - testMultiplierTextColour(noFailMod, modSelect.LowMultiplierColour); - testMultiplierTextColour(hiddenMod, modSelect.HighMultiplierColour); + testMultiplierTextColour(noFailMod, () => modSelect.LowMultiplierColour); + testMultiplierTextColour(hiddenMod, () => modSelect.HighMultiplierColour); testUnimplementedMod(spunOutMod); } @@ -106,37 +115,31 @@ namespace osu.Game.Tests.Visual.UserInterface [Test] public void TestManiaMods() { - var ruleset = rulesets.AvailableRulesets.First(r => r.ID == 3); - changeRuleset(ruleset); + changeRuleset(3); - testRankedText(ruleset.CreateInstance().GetModsFor(ModType.Conversion).First(m => m is ManiaModRandom)); + testRankedText(new ManiaRuleset().GetModsFor(ModType.Conversion).First(m => m is ManiaModRandom)); } [Test] public void TestRulesetChanges() { - var rulesetOsu = rulesets.AvailableRulesets.First(r => r.ID == 0); - var rulesetMania = rulesets.AvailableRulesets.First(r => r.ID == 3); + changeRuleset(0); - changeRuleset(null); - - var instance = rulesetOsu.CreateInstance(); - var easierMods = instance.GetModsFor(ModType.DifficultyReduction); - var noFailMod = easierMods.FirstOrDefault(m => m is OsuModNoFail); + var noFailMod = new OsuRuleset().GetModsFor(ModType.DifficultyReduction).FirstOrDefault(m => m is OsuModNoFail); AddStep("set mods externally", () => { Mods.Value = new[] { noFailMod }; }); - changeRuleset(rulesetOsu); + changeRuleset(0); AddAssert("ensure mods still selected", () => modDisplay.Current.Value.Single(m => m is OsuModNoFail) != null); - changeRuleset(rulesetMania); + changeRuleset(3); - AddAssert("ensure mods not selected", () => !modDisplay.Current.Value.Any(m => m is OsuModNoFail)); + AddAssert("ensure mods not selected", () => modDisplay.Current.Value.Count == 0); - changeRuleset(rulesetOsu); + changeRuleset(0); - AddAssert("ensure mods not selected", () => !modDisplay.Current.Value.Any()); + AddAssert("ensure mods not selected", () => modDisplay.Current.Value.Count == 0); } private void testSingleMod(Mod mod) @@ -198,19 +201,19 @@ namespace osu.Game.Tests.Visual.UserInterface selectNext(mod); AddAssert("check for any selection", () => modSelect.SelectedMods.Value.Any()); - AddStep("deselect all", modSelect.DeselectAllButton.Action.Invoke); + AddStep("deselect all", () => modSelect.DeselectAllButton.Action.Invoke()); AddAssert("check for no selection", () => !modSelect.SelectedMods.Value.Any()); } - private void testMultiplierTextColour(Mod mod, Color4 colour) + private void testMultiplierTextColour(Mod mod, Func getCorrectColour) { - checkLabelColor(Color4.White); + checkLabelColor(() => Color4.White); selectNext(mod); AddWaitStep("wait for changing colour", 1); - checkLabelColor(colour); + checkLabelColor(getCorrectColour); selectPrevious(mod); AddWaitStep("wait for changing colour", 1); - checkLabelColor(Color4.White); + checkLabelColor(() => Color4.White); } private void testRankedText(Mod mod) @@ -235,9 +238,9 @@ namespace osu.Game.Tests.Visual.UserInterface }); } - private void changeRuleset(RulesetInfo ruleset) + private void changeRuleset(int? id) { - AddStep($"change ruleset to {ruleset}", () => { Ruleset.Value = ruleset; }); + AddStep($"change ruleset to {(id.ToString() ?? "none")}", () => { Ruleset.Value = rulesets.AvailableRulesets.FirstOrDefault(r => r.ID == id); }); waitForLoad(); } @@ -253,7 +256,7 @@ namespace osu.Game.Tests.Visual.UserInterface }); } - private void checkLabelColor(Color4 color) => AddAssert("check label has expected colour", () => modSelect.MultiplierLabel.Colour.AverageColour == color); + private void checkLabelColor(Func getColour) => AddAssert("check label has expected colour", () => modSelect.MultiplierLabel.Colour.AverageColour == getColour()); private class TestModSelectOverlay : ModSelectOverlay { From 34f67b9cadf7a01e8bae1a31dcc8e0b2435ca40f Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 13 Dec 2019 20:31:20 +0900 Subject: [PATCH 0325/1829] 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 252570a150..8b266b08ba 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index a07348b57c..9ec833c9ac 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 544bba3963..1829cbe32a 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From f349e7ff78f9f3a7dec1851241c5478209dc8ca2 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 13 Dec 2019 20:35:34 +0900 Subject: [PATCH 0326/1829] Fix non-null ?? usage --- .../Visual/UserInterface/TestSceneModSelectOverlay.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs index 5f77116c67..2738b5b8fc 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs @@ -240,7 +240,7 @@ namespace osu.Game.Tests.Visual.UserInterface private void changeRuleset(int? id) { - AddStep($"change ruleset to {(id.ToString() ?? "none")}", () => { Ruleset.Value = rulesets.AvailableRulesets.FirstOrDefault(r => r.ID == id); }); + AddStep($"change ruleset to {(id?.ToString() ?? "none")}", () => { Ruleset.Value = rulesets.AvailableRulesets.FirstOrDefault(r => r.ID == id); }); waitForLoad(); } From ea4eb6b2043e6cc9cb63c20a2c3d8461f276d983 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 13 Dec 2019 21:29:10 +0900 Subject: [PATCH 0327/1829] CI cleanups --- .../Beatmaps/Formats/LegacyBeatmapEncoder.cs | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index f367ab3817..e16411f343 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -225,9 +225,9 @@ namespace osu.Game.Beatmaps.Formats LegacyHitObjectType hitObjectType = (LegacyHitObjectType)(comboData.ComboOffset << 4); if (comboData.NewCombo) hitObjectType |= LegacyHitObjectType.NewCombo; - if (hitObject is IHasCurve _) + if (hitObject is IHasCurve) hitObjectType |= LegacyHitObjectType.Slider; - else if (hitObject is IHasEndTime _) + else if (hitObject is IHasEndTime) hitObjectType |= LegacyHitObjectType.Spinner | LegacyHitObjectType.NewCombo; else hitObjectType |= LegacyHitObjectType.Circle; @@ -237,10 +237,9 @@ namespace osu.Game.Beatmaps.Formats writer.Write(FormattableString.Invariant($"{hitObject.StartTime},")); writer.Write(FormattableString.Invariant($"{(int)hitObjectType},")); - if (hitObject is IHasCurve _) - writer.Write(FormattableString.Invariant($"0,")); // A sound type of "none" is written since it's stored per-node - else - writer.Write(FormattableString.Invariant($"{(int)toLegacyHitSoundType(hitObject.Samples)},")); + writer.Write(hitObject is IHasCurve + ? FormattableString.Invariant($"0,") + : FormattableString.Invariant($"{(int)toLegacyHitSoundType(hitObject.Samples)},")); if (hitObject is IHasCurve curveData) { @@ -307,10 +306,9 @@ namespace osu.Game.Beatmaps.Formats else if (hitObject is IHasEndTime endTimeData) writer.Write(FormattableString.Invariant($"{endTimeData.EndTime},")); - if (hitObject is IHasCurve _) - writer.Write(getSampleBank(hitObject.Samples, zeroBanks: true)); // A bank of "none" is written since it's stored per-node - else - writer.Write(getSampleBank(hitObject.Samples)); + writer.Write(hitObject is IHasCurve + ? getSampleBank(hitObject.Samples, zeroBanks: true) + : getSampleBank(hitObject.Samples)); writer.Write(Environment.NewLine); } From 0d49bc244e6972990e83a3b21474e8a1a4af8ad9 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 13 Dec 2019 21:30:28 +0900 Subject: [PATCH 0328/1829] Fix test beatmap not being retrievable anymore --- osu.Game.Tests/Resources/TestResources.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Tests/Resources/TestResources.cs b/osu.Game.Tests/Resources/TestResources.cs index 932021afe5..a57405628a 100644 --- a/osu.Game.Tests/Resources/TestResources.cs +++ b/osu.Game.Tests/Resources/TestResources.cs @@ -13,7 +13,7 @@ namespace osu.Game.Tests.Resources public static Stream OpenResource(string name) => GetStore().GetStream($"Resources/{name}"); - public static Stream GetTestBeatmapStream(bool virtualTrack = false) => GetStore().GetStream($"Beatmaps/241526 Soleily - Renatus{(virtualTrack ? "_virtual" : "")}.osz"); + public static Stream GetTestBeatmapStream(bool virtualTrack = false) => new DllResourceStore("osu.Game.Resources.dll").GetStream($"Beatmaps/241526 Soleily - Renatus{(virtualTrack ? "_virtual" : "")}.osz"); public static string GetTestBeatmapForImport(bool virtualTrack = false) { From 440a8470e146276a20899dcb8b8513a02b1fa622 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 12 Dec 2019 18:53:25 +0900 Subject: [PATCH 0329/1829] Move available mods to global context This also tidies up ModSelectOverlay and setting creation flow in general. --- osu.Game/OsuGameBase.cs | 17 ++++++++ osu.Game/Overlays/Mods/ModControlSection.cs | 10 ++--- osu.Game/Overlays/Mods/ModSelectOverlay.cs | 43 ++++++++------------- 3 files changed, 37 insertions(+), 33 deletions(-) diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs index 207fb91aab..78a035c5d6 100644 --- a/osu.Game/OsuGameBase.cs +++ b/osu.Game/OsuGameBase.cs @@ -83,6 +83,11 @@ namespace osu.Game [Cached(typeof(IBindable>))] protected readonly Bindable> Mods = new Bindable>(Array.Empty()); + ///

+ /// Mods available for the current . + /// + public readonly Bindable>> AvailableMods = new Bindable>>(); + protected Bindable Beatmap { get; private set; } // cached via load() method private Bindable fpsDisplayVisible; @@ -233,6 +238,18 @@ namespace osu.Game PreviewTrackManager previewTrackManager; dependencies.Cache(previewTrackManager = new PreviewTrackManager()); Add(previewTrackManager); + + Ruleset.BindValueChanged(onRulesetChanged); + } + + private void onRulesetChanged(ValueChangedEvent r) + { + var dict = new Dictionary>(); + + foreach (ModType type in Enum.GetValues(typeof(ModType))) dict[type] = r.NewValue?.CreateInstance().GetModsFor(type).ToList(); + + SelectedMods.Value = Array.Empty(); + AvailableMods.Value = dict; } protected virtual Container CreateScalingContainer() => new DrawSizePreservingFillContainer(); diff --git a/osu.Game/Overlays/Mods/ModControlSection.cs b/osu.Game/Overlays/Mods/ModControlSection.cs index f4b588ddb3..10b3bc7c2b 100644 --- a/osu.Game/Overlays/Mods/ModControlSection.cs +++ b/osu.Game/Overlays/Mods/ModControlSection.cs @@ -1,10 +1,10 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. +using System.Collections.Generic; using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Game.Configuration; using osu.Game.Graphics; using osu.Game.Graphics.Sprites; using osu.Game.Rulesets.Mods; @@ -12,14 +12,13 @@ using osuTK; namespace osu.Game.Overlays.Mods { - public class ModControlSection : Container + public class ModControlSection : CompositeDrawable { protected FillFlowContainer FlowContent; - protected override Container Content => FlowContent; public readonly Mod Mod; - public ModControlSection(Mod mod) + public ModControlSection(Mod mod, IEnumerable modControls) { Mod = mod; @@ -33,9 +32,8 @@ namespace osu.Game.Overlays.Mods Direction = FillDirection.Vertical, AutoSizeAxes = Axes.Y, RelativeSizeAxes = Axes.X, + ChildrenEnumerable = modControls }; - - AddRange(Mod.CreateSettingsControls()); } [BackgroundDependencyLoader] diff --git a/osu.Game/Overlays/Mods/ModSelectOverlay.cs b/osu.Game/Overlays/Mods/ModSelectOverlay.cs index e8ea43e3f2..247f4a2947 100644 --- a/osu.Game/Overlays/Mods/ModSelectOverlay.cs +++ b/osu.Game/Overlays/Mods/ModSelectOverlay.cs @@ -20,7 +20,6 @@ using osu.Game.Graphics.Containers; using osu.Game.Graphics.Sprites; using osu.Game.Graphics.UserInterface; using osu.Game.Overlays.Mods.Sections; -using osu.Game.Rulesets; using osu.Game.Rulesets.Mods; using osu.Game.Screens; using osuTK; @@ -50,7 +49,7 @@ namespace osu.Game.Overlays.Mods protected readonly Bindable> SelectedMods = new Bindable>(Array.Empty()); - protected readonly IBindable Ruleset = new Bindable(); + private Bindable>> availableMods; protected Color4 LowMultiplierColour; protected Color4 HighMultiplierColour; @@ -322,14 +321,14 @@ namespace osu.Game.Overlays.Mods } [BackgroundDependencyLoader(true)] - private void load(OsuColour colours, IBindable ruleset, AudioManager audio, Bindable> mods) + private void load(OsuColour colours, AudioManager audio, Bindable> selectedMods, OsuGameBase osu) { LowMultiplierColour = colours.Red; HighMultiplierColour = colours.Green; UnrankedLabel.Colour = colours.Blue; - Ruleset.BindTo(ruleset); - if (mods != null) SelectedMods.BindTo(mods); + availableMods = osu.AvailableMods.GetBoundCopy(); + SelectedMods.BindTo(selectedMods); sampleOn = audio.Samples.Get(@"UI/check-on"); sampleOff = audio.Samples.Get(@"UI/check-off"); @@ -360,7 +359,7 @@ namespace osu.Game.Overlays.Mods { base.LoadComplete(); - Ruleset.BindValueChanged(rulesetChanged, true); + availableMods.BindValueChanged(availableModsChanged, true); SelectedMods.BindValueChanged(selectedModsChanged, true); } @@ -410,22 +409,12 @@ namespace osu.Game.Overlays.Mods return base.OnKeyDown(e); } - private void rulesetChanged(ValueChangedEvent e) + private void availableModsChanged(ValueChangedEvent>> mods) { - if (e.NewValue == null) return; - - var instance = e.NewValue.CreateInstance(); + if (mods.NewValue == null) return; foreach (var section in ModSectionsContainer.Children) - section.Mods = instance.GetModsFor(section.ModType); - - // attempt to re-select any already selected mods. - // this may be the first time we are receiving the ruleset, in which case they will still match. - selectedModsChanged(new ValueChangedEvent>(SelectedMods.Value, SelectedMods.Value)); - - // write the mods back to the SelectedMods bindable in the case a change was not applicable. - // this generally isn't required as the previous line will perform deselection; just here for safety. - refreshSelectedMods(); + section.Mods = mods.NewValue[section.ModType]; } private void selectedModsChanged(ValueChangedEvent> mods) @@ -462,17 +451,17 @@ namespace osu.Game.Overlays.Mods private void updateModSettings(ValueChangedEvent> selectedMods) { - foreach (var added in selectedMods.NewValue.Except(selectedMods.OldValue)) + ModSettingsContent.Clear(); + + foreach (var mod in selectedMods.NewValue) { - var controls = added.CreateSettingsControls().ToList(); - if (controls.Count > 0) - ModSettingsContent.Add(new ModControlSection(added) { Children = controls }); + var settings = mod.CreateSettingsControls().ToList(); + if (settings.Count > 0) + ModSettingsContent.Add(new ModControlSection(mod, settings)); } - foreach (var removed in selectedMods.OldValue.Except(selectedMods.NewValue)) - ModSettingsContent.RemoveAll(section => section.Mod == removed); + bool hasSettings = ModSettingsContent.Count > 0; - bool hasSettings = ModSettingsContent.Children.Count > 0; CustomiseButton.Enabled.Value = hasSettings; if (!hasSettings) @@ -502,7 +491,7 @@ namespace osu.Game.Overlays.Mods { base.Dispose(isDisposing); - Ruleset.UnbindAll(); + availableMods.UnbindAll(); SelectedMods.UnbindAll(); } From 7fdaf338f3af99870215902b66ff759228d53038 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 12 Dec 2019 17:12:01 +0900 Subject: [PATCH 0330/1829] Fix test logic and add regression test --- .../UserInterface/TestSceneModSettings.cs | 84 ++++++++++++++----- 1 file changed, 62 insertions(+), 22 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs index fc44c5f595..8117a4ad78 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs @@ -2,15 +2,20 @@ // See the LICENCE file in the repository root for full licence text. using System; +using System.Collections.Generic; using System.Linq; -using osu.Framework.Allocation; +using NUnit.Framework; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Game.Beatmaps; using osu.Game.Configuration; using osu.Game.Graphics.UserInterface; using osu.Game.Overlays.Mods; +using osu.Game.Rulesets; +using osu.Game.Rulesets.Difficulty; using osu.Game.Rulesets.Mods; +using osu.Game.Rulesets.UI; namespace osu.Game.Tests.Visual.UserInterface { @@ -18,28 +23,51 @@ namespace osu.Game.Tests.Visual.UserInterface { private TestModSelectOverlay modSelect; - [BackgroundDependencyLoader] - private void load() + Mod testCustomisableMod = new TestModCustomisable1(); + + [Test] + public void TestButtonShowsOnCustomisableMod() { - Add(modSelect = new TestModSelectOverlay - { - RelativeSizeAxes = Axes.X, - Origin = Anchor.BottomCentre, - Anchor = Anchor.BottomCentre, - }); + createModSelect(); - var testMod = new TestModCustomisable1(); - - AddStep("open", modSelect.Show); + AddStep("open", () => modSelect.Show()); AddAssert("button disabled", () => !modSelect.CustomiseButton.Enabled.Value); AddUntilStep("wait for button load", () => modSelect.ButtonsLoaded); - AddStep("select mod", () => modSelect.SelectMod(testMod)); + AddStep("select mod", () => modSelect.SelectMod(testCustomisableMod)); AddAssert("button enabled", () => modSelect.CustomiseButton.Enabled.Value); AddStep("open Customisation", () => modSelect.CustomiseButton.Click()); - AddStep("deselect mod", () => modSelect.SelectMod(testMod)); + AddStep("deselect mod", () => modSelect.SelectMod(testCustomisableMod)); AddAssert("controls hidden", () => modSelect.ModSettingsContainer.Alpha == 0); } + [Test] + public void TestButtonShowsOnModAlreadyAdded() + { + AddStep("set active mods", () => Mods.Value = new List { testCustomisableMod }); + + createModSelect(); + + AddAssert("mods still active", () => Mods.Value.Count == 1); + + AddStep("open", () => modSelect.Show()); + AddAssert("button enabled", () => modSelect.CustomiseButton.Enabled.Value); + } + + private void createModSelect() + { + AddStep("create mod select", () => + { + Ruleset.Value = new TestRulesetInfo(); + + Child = modSelect = new TestModSelectOverlay + { + RelativeSizeAxes = Axes.X, + Origin = Anchor.BottomCentre, + Anchor = Anchor.BottomCentre, + }; + }); + } + private class TestModSelectOverlay : ModSelectOverlay { public new Container ModSettingsContainer => base.ModSettingsContainer; @@ -50,24 +78,36 @@ namespace osu.Game.Tests.Visual.UserInterface public void SelectMod(Mod mod) => ModSectionsContainer.Children.Single(s => s.ModType == mod.Type) .ButtonsContainer.OfType().Single(b => b.Mods.Any(m => m.GetType() == mod.GetType())).SelectNext(1); + } - protected override void LoadComplete() + public class TestRulesetInfo : RulesetInfo + { + public override Ruleset CreateInstance() => new TestCustomisableModRuleset(); + + public class TestCustomisableModRuleset : Ruleset { - base.LoadComplete(); - - foreach (var section in ModSectionsContainer) + public override IEnumerable GetModsFor(ModType type) { - if (section.ModType == ModType.Conversion) + if (type == ModType.Conversion) { - section.Mods = new Mod[] + return new Mod[] { new TestModCustomisable1(), new TestModCustomisable2() }; } - else - section.Mods = Array.Empty(); + + return Array.Empty(); } + + public override DrawableRuleset CreateDrawableRulesetWith(IWorkingBeatmap beatmap, IReadOnlyList mods) => throw new NotImplementedException(); + + public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => throw new NotImplementedException(); + + public override DifficultyCalculator CreateDifficultyCalculator(WorkingBeatmap beatmap) => throw new NotImplementedException(); + + public override string Description { get; } + public override string ShortName { get; } } } From 76aa4f9fb2ecd55d0e209a197d73ad13f5370bbe Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 12 Dec 2019 17:36:37 +0900 Subject: [PATCH 0331/1829] Fix code style issues --- osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs index 8117a4ad78..d17408ff95 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs @@ -23,7 +23,7 @@ namespace osu.Game.Tests.Visual.UserInterface { private TestModSelectOverlay modSelect; - Mod testCustomisableMod = new TestModCustomisable1(); + private readonly Mod testCustomisableMod = new TestModCustomisable1(); [Test] public void TestButtonShowsOnCustomisableMod() @@ -106,8 +106,8 @@ namespace osu.Game.Tests.Visual.UserInterface public override DifficultyCalculator CreateDifficultyCalculator(WorkingBeatmap beatmap) => throw new NotImplementedException(); - public override string Description { get; } - public override string ShortName { get; } + public override string Description { get; } = "test"; + public override string ShortName { get; } = "tst"; } } From 8052aeb2383da8302aa677782acb4f2457edd200 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 13 Dec 2019 00:23:32 +0900 Subject: [PATCH 0332/1829] Fix potential nullref in disposal logic --- osu.Game/Overlays/Mods/ModSelectOverlay.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Mods/ModSelectOverlay.cs b/osu.Game/Overlays/Mods/ModSelectOverlay.cs index 247f4a2947..7f07ce620c 100644 --- a/osu.Game/Overlays/Mods/ModSelectOverlay.cs +++ b/osu.Game/Overlays/Mods/ModSelectOverlay.cs @@ -491,8 +491,8 @@ namespace osu.Game.Overlays.Mods { base.Dispose(isDisposing); - availableMods.UnbindAll(); - SelectedMods.UnbindAll(); + availableMods?.UnbindAll(); + SelectedMods?.UnbindAll(); } #endregion From bc311465609b5ee76dff71e4850feaa409863da6 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 13 Dec 2019 21:45:38 +0900 Subject: [PATCH 0333/1829] Mods -> SelectedMods --- .../TestSceneAutoJuiceStream.cs | 2 +- .../TestSceneDrawableHitObjects.cs | 2 +- .../TestSceneDrawableHitObjectsHidden.cs | 2 +- osu.Game.Rulesets.Osu.Tests/TestSceneHitCircle.cs | 2 +- .../TestSceneHitCircleHidden.cs | 2 +- .../TestSceneOsuFlashlight.cs | 2 +- osu.Game.Rulesets.Osu.Tests/TestSceneSlider.cs | 2 +- osu.Game.Rulesets.Osu.Tests/TestSceneSliderHidden.cs | 2 +- osu.Game.Rulesets.Osu.Tests/TestSceneSpinner.cs | 2 +- .../TestSceneSpinnerHidden.cs | 2 +- .../TestSceneTaikoSuddenDeath.cs | 2 +- .../Visual/Background/TestSceneUserDimBackgrounds.cs | 2 +- osu.Game.Tests/Visual/Gameplay/TestSceneAutoplay.cs | 2 +- .../Visual/Gameplay/TestSceneFailAnimation.cs | 2 +- .../Visual/Gameplay/TestSceneFailJudgement.cs | 2 +- .../Visual/Gameplay/TestSceneGameplayRewinding.cs | 2 +- .../Visual/Gameplay/TestScenePlayerLoader.cs | 6 +++--- .../Visual/SongSelect/TestScenePlaySongSelect.cs | 12 ++++++------ .../UserInterface/TestSceneModSelectOverlay.cs | 2 +- .../Visual/UserInterface/TestSceneModSettings.cs | 6 +++--- osu.Game/OsuGameBase.cs | 2 +- osu.Game/Tests/Visual/AllPlayersTestScene.cs | 2 +- osu.Game/Tests/Visual/OsuTestScene.cs | 6 +++--- osu.Game/Tests/Visual/PlayerTestScene.cs | 4 ++-- 24 files changed, 36 insertions(+), 36 deletions(-) diff --git a/osu.Game.Rulesets.Catch.Tests/TestSceneAutoJuiceStream.cs b/osu.Game.Rulesets.Catch.Tests/TestSceneAutoJuiceStream.cs index ab3c040b4e..74a9c05bf9 100644 --- a/osu.Game.Rulesets.Catch.Tests/TestSceneAutoJuiceStream.cs +++ b/osu.Game.Rulesets.Catch.Tests/TestSceneAutoJuiceStream.cs @@ -53,7 +53,7 @@ namespace osu.Game.Rulesets.Catch.Tests protected override Player CreatePlayer(Ruleset ruleset) { - Mods.Value = Mods.Value.Concat(new[] { ruleset.GetAutoplayMod() }).ToArray(); + SelectedMods.Value = SelectedMods.Value.Concat(new[] { ruleset.GetAutoplayMod() }).ToArray(); return base.CreatePlayer(ruleset); } } diff --git a/osu.Game.Rulesets.Catch.Tests/TestSceneDrawableHitObjects.cs b/osu.Game.Rulesets.Catch.Tests/TestSceneDrawableHitObjects.cs index 02a017ce45..1eb913e900 100644 --- a/osu.Game.Rulesets.Catch.Tests/TestSceneDrawableHitObjects.cs +++ b/osu.Game.Rulesets.Catch.Tests/TestSceneDrawableHitObjects.cs @@ -151,7 +151,7 @@ namespace osu.Game.Rulesets.Catch.Tests private void addToPlayfield(DrawableCatchHitObject drawable) { - foreach (var mod in Mods.Value.OfType()) + foreach (var mod in SelectedMods.Value.OfType()) mod.ApplyToDrawableHitObjects(new[] { drawable }); drawableRuleset.Playfield.Add(drawable); diff --git a/osu.Game.Rulesets.Catch.Tests/TestSceneDrawableHitObjectsHidden.cs b/osu.Game.Rulesets.Catch.Tests/TestSceneDrawableHitObjectsHidden.cs index 08107e01eb..8c3dfef39c 100644 --- a/osu.Game.Rulesets.Catch.Tests/TestSceneDrawableHitObjectsHidden.cs +++ b/osu.Game.Rulesets.Catch.Tests/TestSceneDrawableHitObjectsHidden.cs @@ -16,7 +16,7 @@ namespace osu.Game.Rulesets.Catch.Tests [SetUp] public void SetUp() => Schedule(() => { - Mods.Value = new[] { new CatchModHidden() }; + SelectedMods.Value = new[] { new CatchModHidden() }; }); } } diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneHitCircle.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneHitCircle.cs index 64f353c4d9..098e277fff 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneHitCircle.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneHitCircle.cs @@ -57,7 +57,7 @@ namespace osu.Game.Rulesets.Osu.Tests var drawable = CreateDrawableHitCircle(circle, auto); - foreach (var mod in Mods.Value.OfType()) + foreach (var mod in SelectedMods.Value.OfType()) mod.ApplyToDrawableHitObjects(new[] { drawable }); return drawable; diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneHitCircleHidden.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneHitCircleHidden.cs index eaba82a469..21ebce8c23 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneHitCircleHidden.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneHitCircleHidden.cs @@ -17,7 +17,7 @@ namespace osu.Game.Rulesets.Osu.Tests [SetUp] public void SetUp() => Schedule(() => { - Mods.Value = new[] { new OsuModHidden() }; + SelectedMods.Value = new[] { new OsuModHidden() }; }); } } diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneOsuFlashlight.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneOsuFlashlight.cs index 64e7632b1b..412effe176 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneOsuFlashlight.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneOsuFlashlight.cs @@ -11,7 +11,7 @@ namespace osu.Game.Rulesets.Osu.Tests { protected override Player CreatePlayer(Ruleset ruleset) { - Mods.Value = new Mod[] { new OsuModAutoplay(), new OsuModFlashlight(), }; + SelectedMods.Value = new Mod[] { new OsuModAutoplay(), new OsuModFlashlight(), }; return base.CreatePlayer(ruleset); } diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneSlider.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneSlider.cs index a9d5c03517..e8386363be 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneSlider.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneSlider.cs @@ -362,7 +362,7 @@ namespace osu.Game.Rulesets.Osu.Tests var drawable = CreateDrawableSlider(slider); - foreach (var mod in Mods.Value.OfType()) + foreach (var mod in SelectedMods.Value.OfType()) mod.ApplyToDrawableHitObjects(new[] { drawable }); drawable.OnNewResult += onNewResult; diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderHidden.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderHidden.cs index a1795fb877..d0ee1bddb5 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderHidden.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderHidden.cs @@ -17,7 +17,7 @@ namespace osu.Game.Rulesets.Osu.Tests [SetUp] public void SetUp() => Schedule(() => { - Mods.Value = new[] { new OsuModHidden() }; + SelectedMods.Value = new[] { new OsuModHidden() }; }); } } diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneSpinner.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneSpinner.cs index 3ed3f3e981..f53b64c729 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneSpinner.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneSpinner.cs @@ -56,7 +56,7 @@ namespace osu.Game.Rulesets.Osu.Tests Depth = depthIndex++ }; - foreach (var mod in Mods.Value.OfType()) + foreach (var mod in SelectedMods.Value.OfType()) mod.ApplyToDrawableHitObjects(new[] { drawable }); Add(drawable); diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerHidden.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerHidden.cs index 2976d4fdce..dd863deed2 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerHidden.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerHidden.cs @@ -17,7 +17,7 @@ namespace osu.Game.Rulesets.Osu.Tests [SetUp] public void SetUp() => Schedule(() => { - Mods.Value = new[] { new OsuModHidden() }; + SelectedMods.Value = new[] { new OsuModHidden() }; }); } } diff --git a/osu.Game.Rulesets.Taiko.Tests/TestSceneTaikoSuddenDeath.cs b/osu.Game.Rulesets.Taiko.Tests/TestSceneTaikoSuddenDeath.cs index d0db193738..140433a523 100644 --- a/osu.Game.Rulesets.Taiko.Tests/TestSceneTaikoSuddenDeath.cs +++ b/osu.Game.Rulesets.Taiko.Tests/TestSceneTaikoSuddenDeath.cs @@ -24,7 +24,7 @@ namespace osu.Game.Rulesets.Taiko.Tests protected override Player CreatePlayer(Ruleset ruleset) { - Mods.Value = Mods.Value.Concat(new[] { new TaikoModSuddenDeath() }).ToArray(); + SelectedMods.Value = SelectedMods.Value.Concat(new[] { new TaikoModSuddenDeath() }).ToArray(); return new ScoreAccessiblePlayer(); } diff --git a/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs b/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs index 2d2726bbd3..589ec7e8aa 100644 --- a/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs +++ b/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs @@ -280,7 +280,7 @@ namespace osu.Game.Tests.Visual.Background AddUntilStep("Song select has selection", () => songSelect.Carousel.SelectedBeatmap != null); AddStep("Set default user settings", () => { - Mods.Value = Mods.Value.Concat(new[] { new OsuModNoFail() }).ToArray(); + SelectedMods.Value = SelectedMods.Value.Concat(new[] { new OsuModNoFail() }).ToArray(); songSelect.DimLevel.Value = 0.7f; songSelect.BlurLevel.Value = 0.4f; }); diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneAutoplay.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneAutoplay.cs index 5ee109e3dd..069b965d9b 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneAutoplay.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneAutoplay.cs @@ -18,7 +18,7 @@ namespace osu.Game.Tests.Visual.Gameplay protected override Player CreatePlayer(Ruleset ruleset) { - Mods.Value = Mods.Value.Concat(new[] { ruleset.GetAutoplayMod() }).ToArray(); + SelectedMods.Value = SelectedMods.Value.Concat(new[] { ruleset.GetAutoplayMod() }).ToArray(); return new ScoreAccessiblePlayer(); } diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneFailAnimation.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneFailAnimation.cs index f4e8a68819..992c47f856 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneFailAnimation.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneFailAnimation.cs @@ -14,7 +14,7 @@ namespace osu.Game.Tests.Visual.Gameplay { protected override Player CreatePlayer(Ruleset ruleset) { - Mods.Value = Array.Empty(); + SelectedMods.Value = Array.Empty(); return new FailPlayer(); } diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneFailJudgement.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneFailJudgement.cs index cca6301b02..1580aac8c5 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneFailJudgement.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneFailJudgement.cs @@ -14,7 +14,7 @@ namespace osu.Game.Tests.Visual.Gameplay { protected override Player CreatePlayer(Ruleset ruleset) { - Mods.Value = Array.Empty(); + SelectedMods.Value = Array.Empty(); return new FailPlayer(); } diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneGameplayRewinding.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneGameplayRewinding.cs index b2b58a63fb..5336c720a1 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneGameplayRewinding.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneGameplayRewinding.cs @@ -67,7 +67,7 @@ namespace osu.Game.Tests.Visual.Gameplay protected override Player CreatePlayer(Ruleset ruleset) { - Mods.Value = Mods.Value.Concat(new[] { ruleset.GetAutoplayMod() }).ToArray(); + SelectedMods.Value = SelectedMods.Value.Concat(new[] { ruleset.GetAutoplayMod() }).ToArray(); return new RulesetExposingPlayer(); } diff --git a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs index f02361e685..f68f4b8b83 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs @@ -57,7 +57,7 @@ namespace osu.Game.Tests.Visual.Gameplay beforeLoadAction?.Invoke(); Beatmap.Value = CreateWorkingBeatmap(new OsuRuleset().RulesetInfo); - foreach (var mod in Mods.Value.OfType()) + foreach (var mod in SelectedMods.Value.OfType()) mod.ApplyToTrack(Beatmap.Value.Track); InputManager.Child = container = new TestPlayerLoaderContainer( @@ -76,7 +76,7 @@ namespace osu.Game.Tests.Visual.Gameplay [Test] public void TestEarlyExit() { - AddStep("load dummy beatmap", () => ResetPlayer(false, () => Mods.Value = new[] { new OsuModNightcore() })); + AddStep("load dummy beatmap", () => ResetPlayer(false, () => SelectedMods.Value = new[] { new OsuModNightcore() })); AddUntilStep("wait for current", () => loader.IsCurrentScreen()); AddAssert("mod rate applied", () => Beatmap.Value.Track.Rate != 1); AddStep("exit loader", () => loader.Exit()); @@ -123,7 +123,7 @@ namespace osu.Game.Tests.Visual.Gameplay TestMod playerMod1 = null; TestMod playerMod2 = null; - AddStep("load player", () => { ResetPlayer(true, () => Mods.Value = new[] { gameMod = new TestMod() }); }); + AddStep("load player", () => { ResetPlayer(true, () => SelectedMods.Value = new[] { gameMod = new TestMod() }); }); AddUntilStep("wait for loader to become current", () => loader.IsCurrentScreen()); AddStep("mouse in centre", () => InputManager.MoveMouseTo(loader.ScreenSpaceDrawQuad.Centre)); diff --git a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs index 5dd02c1ddd..00fa95bedc 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs @@ -256,17 +256,17 @@ namespace osu.Game.Tests.Visual.SongSelect AddStep("change ruleset", () => { - Mods.ValueChanged += onModChange; + SelectedMods.ValueChanged += onModChange; songSelect.Ruleset.ValueChanged += onRulesetChange; Ruleset.Value = new TaikoRuleset().RulesetInfo; - Mods.ValueChanged -= onModChange; + SelectedMods.ValueChanged -= onModChange; songSelect.Ruleset.ValueChanged -= onRulesetChange; }); AddAssert("mods changed before ruleset", () => modChangeIndex < rulesetChangeIndex); - AddAssert("empty mods", () => !Mods.Value.Any()); + AddAssert("empty mods", () => !SelectedMods.Value.Any()); void onModChange(ValueChangedEvent> e) => modChangeIndex = actionIndex++; void onRulesetChange(ValueChangedEvent e) => rulesetChangeIndex = actionIndex++; @@ -275,7 +275,7 @@ namespace osu.Game.Tests.Visual.SongSelect [Test] public void TestModsRetainedBetweenSongSelect() { - AddAssert("empty mods", () => !Mods.Value.Any()); + AddAssert("empty mods", () => !SelectedMods.Value.Any()); createSongSelect(); @@ -285,7 +285,7 @@ namespace osu.Game.Tests.Visual.SongSelect createSongSelect(); - AddAssert("mods retained", () => Mods.Value.Any()); + AddAssert("mods retained", () => SelectedMods.Value.Any()); } [Test] @@ -332,7 +332,7 @@ namespace osu.Game.Tests.Visual.SongSelect private void checkMusicPlaying(bool playing) => AddUntilStep($"music {(playing ? "" : "not ")}playing", () => music.IsPlaying == playing); - private void changeMods(params Mod[] mods) => AddStep($"change mods to {string.Join(", ", mods.Select(m => m.Acronym))}", () => Mods.Value = mods); + private void changeMods(params Mod[] mods) => AddStep($"change mods to {string.Join(", ", mods.Select(m => m.Acronym))}", () => SelectedMods.Value = mods); private void changeRuleset(int id) => AddStep($"change ruleset to {id}", () => Ruleset.Value = rulesets.AvailableRulesets.First(r => r.ID == id)); diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs index 2738b5b8fc..12ee4ceb2e 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs @@ -127,7 +127,7 @@ namespace osu.Game.Tests.Visual.UserInterface var noFailMod = new OsuRuleset().GetModsFor(ModType.DifficultyReduction).FirstOrDefault(m => m is OsuModNoFail); - AddStep("set mods externally", () => { Mods.Value = new[] { noFailMod }; }); + AddStep("set mods externally", () => { SelectedMods.Value = new[] { noFailMod }; }); changeRuleset(0); diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs index d17408ff95..edc749cbaa 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs @@ -43,11 +43,11 @@ namespace osu.Game.Tests.Visual.UserInterface [Test] public void TestButtonShowsOnModAlreadyAdded() { - AddStep("set active mods", () => Mods.Value = new List { testCustomisableMod }); + AddStep("set active mods", () => SelectedMods.Value = new List { testCustomisableMod }); createModSelect(); - AddAssert("mods still active", () => Mods.Value.Count == 1); + AddAssert("mods still active", () => SelectedMods.Value.Count == 1); AddStep("open", () => modSelect.Show()); AddAssert("button enabled", () => modSelect.CustomiseButton.Enabled.Value); @@ -100,7 +100,7 @@ namespace osu.Game.Tests.Visual.UserInterface return Array.Empty(); } - public override DrawableRuleset CreateDrawableRulesetWith(IWorkingBeatmap beatmap, IReadOnlyList mods) => throw new NotImplementedException(); + public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => throw new NotImplementedException(); public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => throw new NotImplementedException(); diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs index 78a035c5d6..834a64e597 100644 --- a/osu.Game/OsuGameBase.cs +++ b/osu.Game/OsuGameBase.cs @@ -81,7 +81,7 @@ namespace osu.Game // todo: move this to SongSelect once Screen has the ability to unsuspend. [Cached] [Cached(typeof(IBindable>))] - protected readonly Bindable> Mods = new Bindable>(Array.Empty()); + protected readonly Bindable> SelectedMods = new Bindable>(Array.Empty()); /// /// Mods available for the current . diff --git a/osu.Game/Tests/Visual/AllPlayersTestScene.cs b/osu.Game/Tests/Visual/AllPlayersTestScene.cs index b7d1979b0d..dd65c8c382 100644 --- a/osu.Game/Tests/Visual/AllPlayersTestScene.cs +++ b/osu.Game/Tests/Visual/AllPlayersTestScene.cs @@ -55,7 +55,7 @@ namespace osu.Game.Tests.Visual var working = CreateWorkingBeatmap(rulesetInfo); Beatmap.Value = working; - Mods.Value = new[] { ruleset.GetAllMods().First(m => m is ModNoFail) }; + SelectedMods.Value = new[] { ruleset.GetAllMods().First(m => m is ModNoFail) }; Player?.Exit(); Player = null; diff --git a/osu.Game/Tests/Visual/OsuTestScene.cs b/osu.Game/Tests/Visual/OsuTestScene.cs index 4a561f17a3..18dbd212cc 100644 --- a/osu.Game/Tests/Visual/OsuTestScene.cs +++ b/osu.Game/Tests/Visual/OsuTestScene.cs @@ -32,7 +32,7 @@ namespace osu.Game.Tests.Visual protected Bindable Ruleset; - protected Bindable> Mods; + protected Bindable> SelectedMods; protected new OsuScreenDependencies Dependencies { get; private set; } @@ -72,8 +72,8 @@ namespace osu.Game.Tests.Visual Ruleset = Dependencies.Ruleset; Ruleset.SetDefault(); - Mods = Dependencies.Mods; - Mods.SetDefault(); + SelectedMods = Dependencies.Mods; + SelectedMods.SetDefault(); if (!UseOnlineAPI) { diff --git a/osu.Game/Tests/Visual/PlayerTestScene.cs b/osu.Game/Tests/Visual/PlayerTestScene.cs index 2c5a51ca02..3ed65bee61 100644 --- a/osu.Game/Tests/Visual/PlayerTestScene.cs +++ b/osu.Game/Tests/Visual/PlayerTestScene.cs @@ -53,14 +53,14 @@ namespace osu.Game.Tests.Visual { var noFailMod = ruleset.GetAllMods().FirstOrDefault(m => m is ModNoFail); if (noFailMod != null) - Mods.Value = new[] { noFailMod }; + SelectedMods.Value = new[] { noFailMod }; } if (Autoplay) { var mod = ruleset.GetAutoplayMod(); if (mod != null) - Mods.Value = Mods.Value.Concat(mod.Yield()).ToArray(); + SelectedMods.Value = SelectedMods.Value.Concat(mod.Yield()).ToArray(); } Player = CreatePlayer(ruleset); From af1566285698e8341a998d8d2f8bf7dea65697dd Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 12 Dec 2019 17:45:11 +0900 Subject: [PATCH 0334/1829] Fix WindUp applying too much change --- osu.Game/Rulesets/Mods/ModTimeRamp.cs | 4 +++- osu.Game/Rulesets/Mods/ModWindDown.cs | 8 ++++---- osu.Game/Rulesets/Mods/ModWindUp.cs | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModTimeRamp.cs b/osu.Game/Rulesets/Mods/ModTimeRamp.cs index 5276c196f7..4ce364ef1a 100644 --- a/osu.Game/Rulesets/Mods/ModTimeRamp.cs +++ b/osu.Game/Rulesets/Mods/ModTimeRamp.cs @@ -45,6 +45,8 @@ namespace osu.Game.Rulesets.Mods { this.track = track; track.AddAdjustment(AdjustableProperty.Frequency, SpeedChange); + + FinalRate.TriggerChange(); } public virtual void ApplyToBeatmap(IBeatmap beatmap) @@ -67,6 +69,6 @@ namespace osu.Game.Rulesets.Mods /// /// The amount of adjustment to apply (from 0..1). private void applyAdjustment(double amount) => - SpeedChange.Value = 1 + (Math.Sign(FinalRate.Value) * Math.Clamp(amount, 0, 1) * Math.Abs(FinalRate.Value)); + SpeedChange.Value = 1 + (FinalRate.Value - 1) * Math.Clamp(amount, 0, 1); } } diff --git a/osu.Game/Rulesets/Mods/ModWindDown.cs b/osu.Game/Rulesets/Mods/ModWindDown.cs index 680c1a10fb..5416f1ac22 100644 --- a/osu.Game/Rulesets/Mods/ModWindDown.cs +++ b/osu.Game/Rulesets/Mods/ModWindDown.cs @@ -20,10 +20,10 @@ namespace osu.Game.Rulesets.Mods [SettingSource("Final rate", "The speed increase to ramp towards")] public override BindableNumber FinalRate { get; } = new BindableDouble { - MinValue = -0.5, - MaxValue = -0.01, - Default = -0.25, - Value = -0.25, + MinValue = 0.5, + MaxValue = 0.99, + Default = 0.75, + Value = 0.75, Precision = 0.01, }; diff --git a/osu.Game/Rulesets/Mods/ModWindUp.cs b/osu.Game/Rulesets/Mods/ModWindUp.cs index ca9ce0ea3e..3cf584f3dd 100644 --- a/osu.Game/Rulesets/Mods/ModWindUp.cs +++ b/osu.Game/Rulesets/Mods/ModWindUp.cs @@ -20,7 +20,7 @@ namespace osu.Game.Rulesets.Mods [SettingSource("Final rate", "The speed increase to ramp towards")] public override BindableNumber FinalRate { get; } = new BindableDouble { - MinValue = 0.01, + MinValue = 1.01, MaxValue = 2, Default = 1.5, Value = 1.5, From 72ea871bffd35b6cab8ac8b83a6015e628e22d80 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 12 Dec 2019 23:33:18 +0900 Subject: [PATCH 0335/1829] Make constructor protected --- osu.Game/Rulesets/Mods/ModTimeRamp.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Mods/ModTimeRamp.cs b/osu.Game/Rulesets/Mods/ModTimeRamp.cs index 4ce364ef1a..133f9ceb39 100644 --- a/osu.Game/Rulesets/Mods/ModTimeRamp.cs +++ b/osu.Game/Rulesets/Mods/ModTimeRamp.cs @@ -35,7 +35,7 @@ namespace osu.Game.Rulesets.Mods private Track track; - public ModTimeRamp() + protected ModTimeRamp() { // for preview purpose at song select. eventually we'll want to be able to update every frame. FinalRate.BindValueChanged(val => applyAdjustment(1), true); From ef94df917ceb55dd7cdca2ce116495998d36ea7a Mon Sep 17 00:00:00 2001 From: Dan Balasescu Date: Fri, 13 Dec 2019 21:56:03 +0900 Subject: [PATCH 0336/1829] Add whitespace --- osu.Game/OsuGameBase.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs index 834a64e597..d9b569bf0e 100644 --- a/osu.Game/OsuGameBase.cs +++ b/osu.Game/OsuGameBase.cs @@ -246,7 +246,8 @@ namespace osu.Game { var dict = new Dictionary>(); - foreach (ModType type in Enum.GetValues(typeof(ModType))) dict[type] = r.NewValue?.CreateInstance().GetModsFor(type).ToList(); + foreach (ModType type in Enum.GetValues(typeof(ModType))) + dict[type] = r.NewValue?.CreateInstance().GetModsFor(type).ToList(); SelectedMods.Value = Array.Empty(); AvailableMods.Value = dict; From b94d5bf82eba5c96f0303e408caf170885a86c3b Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 14 Dec 2019 00:42:31 +0900 Subject: [PATCH 0337/1829] Fix error when entering multiplayer game in different ruleset --- osu.Game/OsuGameBase.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs index d9b569bf0e..21cc4eaccc 100644 --- a/osu.Game/OsuGameBase.cs +++ b/osu.Game/OsuGameBase.cs @@ -249,7 +249,8 @@ namespace osu.Game foreach (ModType type in Enum.GetValues(typeof(ModType))) dict[type] = r.NewValue?.CreateInstance().GetModsFor(type).ToList(); - SelectedMods.Value = Array.Empty(); + if (!SelectedMods.Disabled) + SelectedMods.Value = Array.Empty(); AvailableMods.Value = dict; } From e05c9426ed56921fc982c10e9cf5d3be169ebc78 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Fri, 13 Dec 2019 18:50:49 +0100 Subject: [PATCH 0338/1829] Initial implementation of NewsArticleCover class --- .../Visual/Online/TestSceneNewsOverlay.cs | 38 +++++ osu.Game/Overlays/News/NewsArticleCover.cs | 156 ++++++++++++++++++ 2 files changed, 194 insertions(+) create mode 100644 osu.Game/Overlays/News/NewsArticleCover.cs diff --git a/osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs b/osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs index 98f90f2daa..7903709bd6 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs @@ -1,6 +1,9 @@ // 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 osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; using osu.Game.Overlays; using osu.Game.Overlays.News; @@ -19,11 +22,46 @@ namespace osu.Game.Tests.Visual.Online AddStep(@"Show front page", () => news.ShowFrontPage()); AddStep(@"Custom article", () => news.Current.Value = "Test Article 101"); + + AddStep(@"Article covers", () => news.LoadAndShowChild(new NewsCoverTest())); } private class TestNewsOverlay : NewsOverlay { public new void LoadAndShowChild(NewsContent content) => base.LoadAndShowChild(content); } + + private class NewsCoverTest : NewsContent + { + public NewsCoverTest() + { + Spacing = new osuTK.Vector2(0, 10); + + var article = new NewsArticleCover.ArticleInfo() + { + Author = "Ephemeral", + CoverURL = "https://assets.ppy.sh/artists/58/header.jpg", + Time = new DateTime(2019, 12, 4), + Title = "New Featured Artist: Kurokotei" + }; + + Children = new Drawable[] + { + new NewsArticleCover(article) + { + Height = 200 + }, + new NewsArticleCover(article) + { + Height = 120 + }, + new NewsArticleCover(article) + { + RelativeSizeAxes = Axes.None, + Size = new osuTK.Vector2(400, 200), + } + }; + } + } } } diff --git a/osu.Game/Overlays/News/NewsArticleCover.cs b/osu.Game/Overlays/News/NewsArticleCover.cs new file mode 100644 index 0000000000..3274cedbac --- /dev/null +++ b/osu.Game/Overlays/News/NewsArticleCover.cs @@ -0,0 +1,156 @@ +using System; +using osu.Framework.Allocation; +using osu.Framework.Extensions.Color4Extensions; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Colour; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Cursor; +using osu.Framework.Graphics.Shapes; +using osu.Framework.Graphics.Sprites; +using osu.Framework.Graphics.Textures; +using osu.Game.Graphics; +using osu.Game.Graphics.Sprites; +using osuTK.Graphics; + +namespace osu.Game.Overlays.News +{ + public class NewsArticleCover : Container + { + public NewsArticleCover(ArticleInfo info) + { + RelativeSizeAxes = Axes.X; + Masking = true; + CornerRadius = 4; + + NewsBackground bg; + + Children = new Drawable[] + { + new Box + { + RelativeSizeAxes = Axes.Both, + Colour = ColourInfo.GradientVertical(OsuColour.Gray(0.2f), OsuColour.Gray(0.1f)) + }, + new DelayedLoadWrapper(bg = new NewsBackground(info.CoverURL) + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + RelativeSizeAxes = Axes.Both, + FillMode = FillMode.Fill, + Alpha = 0 + }) + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + RelativeSizeAxes = Axes.Both, + }, + new Box + { + RelativeSizeAxes = Axes.Both, + Colour = ColourInfo.GradientVertical(Color4.Black.Opacity(0.1f), Color4.Black.Opacity(0.6f)), + Alpha = 1f, + }, + new DateContainer(info.Time) + { + Margin = new MarginPadding() + { + Right = 20, + Top = 20, + } + }, + new OsuSpriteText + { + Anchor = Anchor.BottomLeft, + Origin = Anchor.BottomLeft, + Margin = new MarginPadding() + { + Left = 25, + Bottom = 50, + }, + Font = OsuFont.GetFont(Typeface.Exo, 24, FontWeight.Bold), + Text = info.Title, + }, + new OsuSpriteText + { + Anchor = Anchor.BottomLeft, + Origin = Anchor.BottomLeft, + Margin = new MarginPadding() + { + Left = 25, + Bottom = 30, + }, + Font = OsuFont.GetFont(Typeface.Exo, 16, FontWeight.Bold), + Text = "by " + info.Author + } + }; + + bg.OnLoadComplete += d => d.FadeIn(250, Easing.In); + } + + //news article cover background + [LongRunningLoad] + private class NewsBackground : Sprite + { + private readonly string url; + + public NewsBackground(string coverUrl) + { + url = coverUrl ?? "Headers/news"; + } + + [BackgroundDependencyLoader] + private void load(LargeTextureStore store) + { + Texture = store.Get(url); + } + } + + //date container + private class DateContainer : Container, IHasTooltip + { + private readonly DateTime date; + + public DateContainer(DateTime date) + { + this.date = date; + + Anchor = Anchor.TopRight; + Origin = Anchor.TopRight; + Masking = true; + CornerRadius = 4; + AutoSizeAxes = Axes.Both; + Children = new Drawable[] + { + new Box + { + RelativeSizeAxes = Axes.Both, + Colour = Color4.Black.Opacity(0.5f), + }, + new OsuSpriteText + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Font = OsuFont.GetFont(Typeface.Exo, 12, FontWeight.Black, false, false), + Text = date.ToString("dd MMM yyy"), + Margin = new MarginPadding() + { + Vertical = 4, + Horizontal = 8, + } + } + }; + } + + public string TooltipText => date.ToString("dddd dd MMMM yyyy hh:mm:ss UTCz"); + } + + //fake API data struct to use for now as a skeleton for data, as there is no API struct for news article info for now + public class ArticleInfo + { + public string Title { get; set; } + public string CoverURL { get; set; } + public DateTime Time { get; set; } + public string Author { get; set; } + } + } +} From 43720fbf45869a4e22d9ebb1ffebcb7f79e20557 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Fri, 13 Dec 2019 18:59:40 +0100 Subject: [PATCH 0339/1829] Fix CI issues --- .../Visual/Online/TestSceneNewsOverlay.cs | 5 ++--- osu.Game/Overlays/News/NewsArticleCover.cs | 17 ++++++++++------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs b/osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs index 7903709bd6..f870a12fc3 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs @@ -3,7 +3,6 @@ using System; using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; using osu.Game.Overlays; using osu.Game.Overlays.News; @@ -37,10 +36,10 @@ namespace osu.Game.Tests.Visual.Online { Spacing = new osuTK.Vector2(0, 10); - var article = new NewsArticleCover.ArticleInfo() + var article = new NewsArticleCover.ArticleInfo { Author = "Ephemeral", - CoverURL = "https://assets.ppy.sh/artists/58/header.jpg", + CoverUrl = "https://assets.ppy.sh/artists/58/header.jpg", Time = new DateTime(2019, 12, 4), Title = "New Featured Artist: Kurokotei" }; diff --git a/osu.Game/Overlays/News/NewsArticleCover.cs b/osu.Game/Overlays/News/NewsArticleCover.cs index 3274cedbac..e2485bd170 100644 --- a/osu.Game/Overlays/News/NewsArticleCover.cs +++ b/osu.Game/Overlays/News/NewsArticleCover.cs @@ -1,4 +1,7 @@ -using System; +// 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 osu.Framework.Allocation; using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; @@ -31,7 +34,7 @@ namespace osu.Game.Overlays.News RelativeSizeAxes = Axes.Both, Colour = ColourInfo.GradientVertical(OsuColour.Gray(0.2f), OsuColour.Gray(0.1f)) }, - new DelayedLoadWrapper(bg = new NewsBackground(info.CoverURL) + new DelayedLoadWrapper(bg = new NewsBackground(info.CoverUrl) { Anchor = Anchor.Centre, Origin = Anchor.Centre, @@ -52,7 +55,7 @@ namespace osu.Game.Overlays.News }, new DateContainer(info.Time) { - Margin = new MarginPadding() + Margin = new MarginPadding { Right = 20, Top = 20, @@ -62,7 +65,7 @@ namespace osu.Game.Overlays.News { Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, - Margin = new MarginPadding() + Margin = new MarginPadding { Left = 25, Bottom = 50, @@ -74,7 +77,7 @@ namespace osu.Game.Overlays.News { Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, - Margin = new MarginPadding() + Margin = new MarginPadding { Left = 25, Bottom = 30, @@ -132,7 +135,7 @@ namespace osu.Game.Overlays.News Origin = Anchor.Centre, Font = OsuFont.GetFont(Typeface.Exo, 12, FontWeight.Black, false, false), Text = date.ToString("dd MMM yyy"), - Margin = new MarginPadding() + Margin = new MarginPadding { Vertical = 4, Horizontal = 8, @@ -148,7 +151,7 @@ namespace osu.Game.Overlays.News public class ArticleInfo { public string Title { get; set; } - public string CoverURL { get; set; } + public string CoverUrl { get; set; } public DateTime Time { get; set; } public string Author { get; set; } } From ddb2cfc46de5ee7881aaa66c9e752109e935e021 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Sat, 14 Dec 2019 18:02:56 +0800 Subject: [PATCH 0340/1829] Use GetEndTime in Taiko and Mania --- osu.Game.Rulesets.Mania/Difficulty/Skills/Individual.cs | 4 ++-- osu.Game.Rulesets.Mania/Difficulty/Skills/Overall.cs | 4 ++-- osu.Game.Rulesets.Taiko/Objects/TaikoHitObject.cs | 3 +-- osu.Game.Rulesets.Taiko/Replays/TaikoAutoGenerator.cs | 5 +---- osu.Game/Rulesets/Objects/HitObject.cs | 2 +- 5 files changed, 7 insertions(+), 11 deletions(-) diff --git a/osu.Game.Rulesets.Mania/Difficulty/Skills/Individual.cs b/osu.Game.Rulesets.Mania/Difficulty/Skills/Individual.cs index 059cd39641..4f7ab87fad 100644 --- a/osu.Game.Rulesets.Mania/Difficulty/Skills/Individual.cs +++ b/osu.Game.Rulesets.Mania/Difficulty/Skills/Individual.cs @@ -5,7 +5,7 @@ using System.Linq; using osu.Game.Rulesets.Difficulty.Preprocessing; using osu.Game.Rulesets.Difficulty.Skills; using osu.Game.Rulesets.Mania.Difficulty.Preprocessing; -using osu.Game.Rulesets.Mania.Objects; +using osu.Game.Rulesets.Objects; namespace osu.Game.Rulesets.Mania.Difficulty.Skills { @@ -28,7 +28,7 @@ namespace osu.Game.Rulesets.Mania.Difficulty.Skills protected override double StrainValueOf(DifficultyHitObject current) { var maniaCurrent = (ManiaDifficultyHitObject)current; - var endTime = (maniaCurrent.BaseObject as HoldNote)?.EndTime ?? maniaCurrent.BaseObject.StartTime; + var endTime = maniaCurrent.BaseObject.GetEndTime(); try { diff --git a/osu.Game.Rulesets.Mania/Difficulty/Skills/Overall.cs b/osu.Game.Rulesets.Mania/Difficulty/Skills/Overall.cs index ed25173d38..bbbb93fd8b 100644 --- a/osu.Game.Rulesets.Mania/Difficulty/Skills/Overall.cs +++ b/osu.Game.Rulesets.Mania/Difficulty/Skills/Overall.cs @@ -4,7 +4,7 @@ using osu.Game.Rulesets.Difficulty.Preprocessing; using osu.Game.Rulesets.Difficulty.Skills; using osu.Game.Rulesets.Mania.Difficulty.Preprocessing; -using osu.Game.Rulesets.Mania.Objects; +using osu.Game.Rulesets.Objects; namespace osu.Game.Rulesets.Mania.Difficulty.Skills { @@ -27,7 +27,7 @@ namespace osu.Game.Rulesets.Mania.Difficulty.Skills protected override double StrainValueOf(DifficultyHitObject current) { var maniaCurrent = (ManiaDifficultyHitObject)current; - var endTime = (maniaCurrent.BaseObject as HoldNote)?.EndTime ?? maniaCurrent.BaseObject.StartTime; + var endTime = maniaCurrent.BaseObject.GetEndTime(); double holdFactor = 1.0; // Factor in case something else is held double holdAddition = 0; // Addition to the current note in case it's a hold and has to be released awkwardly diff --git a/osu.Game.Rulesets.Taiko/Objects/TaikoHitObject.cs b/osu.Game.Rulesets.Taiko/Objects/TaikoHitObject.cs index 6f4fbd0651..c41727557b 100644 --- a/osu.Game.Rulesets.Taiko/Objects/TaikoHitObject.cs +++ b/osu.Game.Rulesets.Taiko/Objects/TaikoHitObject.cs @@ -3,7 +3,6 @@ using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Objects; -using osu.Game.Rulesets.Objects.Types; using osu.Game.Rulesets.Scoring; using osu.Game.Rulesets.Taiko.Judgements; using osu.Game.Rulesets.Taiko.Scoring; @@ -38,7 +37,7 @@ namespace osu.Game.Rulesets.Taiko.Objects base.CreateNestedHitObjects(); if (IsStrong) - AddNested(new StrongHitObject { StartTime = (this as IHasEndTime)?.EndTime ?? StartTime }); + AddNested(new StrongHitObject { StartTime = this.GetEndTime() }); } public override Judgement CreateJudgement() => new TaikoJudgement(); diff --git a/osu.Game.Rulesets.Taiko/Replays/TaikoAutoGenerator.cs b/osu.Game.Rulesets.Taiko/Replays/TaikoAutoGenerator.cs index e61953aeb8..4b234b56d4 100644 --- a/osu.Game.Rulesets.Taiko/Replays/TaikoAutoGenerator.cs +++ b/osu.Game.Rulesets.Taiko/Replays/TaikoAutoGenerator.cs @@ -6,7 +6,6 @@ using System.Collections.Generic; using System.Linq; using osu.Game.Beatmaps; using osu.Game.Replays; -using osu.Game.Rulesets.Objects.Types; using osu.Game.Rulesets.Taiko.Objects; using osu.Game.Rulesets.Replays; using osu.Game.Rulesets.Taiko.Beatmaps; @@ -39,9 +38,7 @@ namespace osu.Game.Rulesets.Taiko.Replays for (int i = 0; i < Beatmap.HitObjects.Count; i++) { TaikoHitObject h = Beatmap.HitObjects[i]; - - IHasEndTime endTimeData = h as IHasEndTime; - double endTime = endTimeData?.EndTime ?? h.StartTime; + double endTime = h.GetEndTime(); switch (h) { diff --git a/osu.Game/Rulesets/Objects/HitObject.cs b/osu.Game/Rulesets/Objects/HitObject.cs index 1179efaa6e..bd96441ebb 100644 --- a/osu.Game/Rulesets/Objects/HitObject.cs +++ b/osu.Game/Rulesets/Objects/HitObject.cs @@ -104,7 +104,7 @@ namespace osu.Game.Rulesets.Objects ApplyDefaultsToSelf(controlPointInfo, difficulty); // This is done here since ApplyDefaultsToSelf may be used to determine the end time - SampleControlPoint = controlPointInfo.SamplePointAt(((this as IHasEndTime)?.EndTime ?? StartTime) + control_point_leniency); + SampleControlPoint = controlPointInfo.SamplePointAt(this.GetEndTime() + control_point_leniency); nestedHitObjects.Clear(); From 489d9dc7b5d1f56ca7429774fe44970106a0aed8 Mon Sep 17 00:00:00 2001 From: mcendu Date: Sat, 14 Dec 2019 18:33:56 +0800 Subject: [PATCH 0341/1829] Switch Expandtarget and "cursormiddle" --- osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs b/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs index 02152fa51e..e96bd29ad5 100644 --- a/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs +++ b/osu.Game.Rulesets.Osu/Skinning/LegacyCursor.cs @@ -28,18 +28,18 @@ namespace osu.Game.Rulesets.Osu.Skinning InternalChildren = new[] { + ExpandTarget = new NonPlayfieldSprite + { + Texture = skin.GetTexture("cursor"), + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + }, new NonPlayfieldSprite { Texture = skin.GetTexture("cursormiddle"), Anchor = Anchor.Centre, Origin = Anchor.Centre, }, - ExpandTarget = new NonPlayfieldSprite - { - Texture = skin.GetTexture("cursor"), - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - } }; } From 41d4609c9238e26b8f4fb73a68bb381eff1cf04e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 15 Dec 2019 02:36:49 +0900 Subject: [PATCH 0342/1829] Fix crash on trying to retrieve mods from unavailable ruleset --- osu.Game/OsuGameBase.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs index 21cc4eaccc..22b8d9d012 100644 --- a/osu.Game/OsuGameBase.cs +++ b/osu.Game/OsuGameBase.cs @@ -246,8 +246,11 @@ namespace osu.Game { var dict = new Dictionary>(); - foreach (ModType type in Enum.GetValues(typeof(ModType))) - dict[type] = r.NewValue?.CreateInstance().GetModsFor(type).ToList(); + if (r.NewValue?.Available == true) + { + foreach (ModType type in Enum.GetValues(typeof(ModType))) + dict[type] = r.NewValue.CreateInstance().GetModsFor(type).ToList(); + } if (!SelectedMods.Disabled) SelectedMods.Value = Array.Empty(); From 244eb56455d5bbb7deb1afecdbbd6013f913294e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 15 Dec 2019 03:01:37 +0900 Subject: [PATCH 0343/1829] Fix test ruleset availability --- osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs index edc749cbaa..8dcb7dcbf8 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs @@ -84,6 +84,11 @@ namespace osu.Game.Tests.Visual.UserInterface { public override Ruleset CreateInstance() => new TestCustomisableModRuleset(); + public TestRulesetInfo() + { + Available = true; + } + public class TestCustomisableModRuleset : Ruleset { public override IEnumerable GetModsFor(ModType type) From 91bb851a7dbc1db8f470be81a7bd4506d9f45a17 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 15 Dec 2019 03:32:50 +0900 Subject: [PATCH 0344/1829] 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 8b266b08ba..239e1c2d31 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 9ec833c9ac..56d65830f9 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 1829cbe32a..a90e90db19 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From a04f4b76bb93f9a94d06724cf803ac6a0b835a43 Mon Sep 17 00:00:00 2001 From: Joehu Date: Fri, 13 Dec 2019 22:27:14 -0800 Subject: [PATCH 0345/1829] Allow changing volume using alt when hovering scroll containers --- osu.Game/Graphics/Containers/OsuScrollContainer.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/osu.Game/Graphics/Containers/OsuScrollContainer.cs b/osu.Game/Graphics/Containers/OsuScrollContainer.cs index 2721ce55dc..df4c3a3324 100644 --- a/osu.Game/Graphics/Containers/OsuScrollContainer.cs +++ b/osu.Game/Graphics/Containers/OsuScrollContainer.cs @@ -83,6 +83,13 @@ namespace osu.Game.Graphics.Containers return base.OnDragEnd(e); } + protected override bool OnScroll(ScrollEvent e) + { + if (e.AltPressed) return false; + + return base.OnScroll(e); + } + protected override ScrollbarContainer CreateScrollbar(Direction direction) => new OsuScrollbar(direction); protected class OsuScrollbar : ScrollbarContainer From 5af363c92043d81c86d5254e07ac986c06a4d5ad Mon Sep 17 00:00:00 2001 From: Joehu Date: Sat, 14 Dec 2019 12:58:13 -0800 Subject: [PATCH 0346/1829] Use default placeholder text on chat channel search box --- osu.Game/Overlays/Chat/Selection/ChannelSelectionOverlay.cs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/osu.Game/Overlays/Chat/Selection/ChannelSelectionOverlay.cs b/osu.Game/Overlays/Chat/Selection/ChannelSelectionOverlay.cs index 505d2d6f89..25a9a51638 100644 --- a/osu.Game/Overlays/Chat/Selection/ChannelSelectionOverlay.cs +++ b/osu.Game/Overlays/Chat/Selection/ChannelSelectionOverlay.cs @@ -115,11 +115,7 @@ namespace osu.Game.Overlays.Chat.Selection Font = OsuFont.GetFont(size: 20), Shadow = false, }, - search = new HeaderSearchTextBox - { - RelativeSizeAxes = Axes.X, - PlaceholderText = @"Search", - }, + search = new HeaderSearchTextBox { RelativeSizeAxes = Axes.X }, }, }, }, From 01c036b0b0c88421a639d9e3d92c7f6b006b421c Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 15 Dec 2019 16:56:02 +0800 Subject: [PATCH 0347/1829] implement backing beats for nightcore mods --- .../Mods/CatchModNightcore.cs | 3 +- .../Mods/ManiaModNightcore.cs | 3 +- osu.Game.Rulesets.Osu/Mods/OsuModNightcore.cs | 3 +- .../Mods/TaikoModNightcore.cs | 3 +- osu.Game/Rulesets/Mods/ModNightcore.cs | 57 ++++++++++++++++++- 5 files changed, 64 insertions(+), 5 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Mods/CatchModNightcore.cs b/osu.Game.Rulesets.Catch/Mods/CatchModNightcore.cs index da2edcee44..c07087efaf 100644 --- a/osu.Game.Rulesets.Catch/Mods/CatchModNightcore.cs +++ b/osu.Game.Rulesets.Catch/Mods/CatchModNightcore.cs @@ -1,11 +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 osu.Game.Rulesets.Catch.Objects; using osu.Game.Rulesets.Mods; namespace osu.Game.Rulesets.Catch.Mods { - public class CatchModNightcore : ModNightcore + public class CatchModNightcore : ModNightcore { public override double ScoreMultiplier => 1.06; } diff --git a/osu.Game.Rulesets.Mania/Mods/ManiaModNightcore.cs b/osu.Game.Rulesets.Mania/Mods/ManiaModNightcore.cs index 2d94fb6af5..4cc712060c 100644 --- a/osu.Game.Rulesets.Mania/Mods/ManiaModNightcore.cs +++ b/osu.Game.Rulesets.Mania/Mods/ManiaModNightcore.cs @@ -1,11 +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 osu.Game.Rulesets.Mania.Objects; using osu.Game.Rulesets.Mods; namespace osu.Game.Rulesets.Mania.Mods { - public class ManiaModNightcore : ModNightcore + public class ManiaModNightcore : ModNightcore { public override double ScoreMultiplier => 1; } diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModNightcore.cs b/osu.Game.Rulesets.Osu/Mods/OsuModNightcore.cs index 5668c17792..7780e23a26 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModNightcore.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModNightcore.cs @@ -2,10 +2,11 @@ // See the LICENCE file in the repository root for full licence text. using osu.Game.Rulesets.Mods; +using osu.Game.Rulesets.Osu.Objects; namespace osu.Game.Rulesets.Osu.Mods { - public class OsuModNightcore : ModNightcore + public class OsuModNightcore : ModNightcore { public override double ScoreMultiplier => 1.12; } diff --git a/osu.Game.Rulesets.Taiko/Mods/TaikoModNightcore.cs b/osu.Game.Rulesets.Taiko/Mods/TaikoModNightcore.cs index e45081b6d6..5377eb1072 100644 --- a/osu.Game.Rulesets.Taiko/Mods/TaikoModNightcore.cs +++ b/osu.Game.Rulesets.Taiko/Mods/TaikoModNightcore.cs @@ -2,10 +2,11 @@ // See the LICENCE file in the repository root for full licence text. using osu.Game.Rulesets.Mods; +using osu.Game.Rulesets.Taiko.Objects; namespace osu.Game.Rulesets.Taiko.Mods { - public class TaikoModNightcore : ModNightcore + public class TaikoModNightcore : ModNightcore { public override double ScoreMultiplier => 1.12; } diff --git a/osu.Game/Rulesets/Mods/ModNightcore.cs b/osu.Game/Rulesets/Mods/ModNightcore.cs index c14e02e64d..22d8d4ba66 100644 --- a/osu.Game/Rulesets/Mods/ModNightcore.cs +++ b/osu.Game/Rulesets/Mods/ModNightcore.cs @@ -1,15 +1,28 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. +using System.Collections.Generic; +using System.Linq; +using osu.Framework.Allocation; using osu.Framework.Audio; +using osu.Framework.Audio.Sample; using osu.Framework.Audio.Track; using osu.Framework.Bindables; +using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; +using osu.Game.Audio; +using osu.Game.Beatmaps; +using osu.Game.Beatmaps.ControlPoints; using osu.Game.Graphics; +using osu.Game.Graphics.Containers; +using osu.Game.Rulesets.Objects; +using osu.Game.Rulesets.UI; +using osu.Game.Skinning; namespace osu.Game.Rulesets.Mods { - public abstract class ModNightcore : ModDoubleTime + public abstract class ModNightcore : ModDoubleTime, IApplicableToDrawableRuleset + where TObject : HitObject { public override string Name => "Nightcore"; public override string Acronym => "NC"; @@ -34,5 +47,47 @@ namespace osu.Game.Rulesets.Mods track.AddAdjustment(AdjustableProperty.Frequency, freqAdjust); track.AddAdjustment(AdjustableProperty.Tempo, tempoAdjust); } + + public void ApplyToDrawableRuleset(DrawableRuleset drawableRuleset) + { + drawableRuleset.Overlays.Add(new NightcoreBeatContainer()); + } + + public class NightcoreBeatContainer : BeatSyncedContainer + { + private SkinnableSound hatSample; + private SkinnableSound clapSample; + private SkinnableSound kickSample; + private SkinnableSound finishSample; + + [BackgroundDependencyLoader] + private void load(AudioManager audio) + { + InternalChildren = new Drawable[] + { + hatSample = new SkinnableSound(new SampleInfo("nightcore-hat")), + clapSample = new SkinnableSound(new SampleInfo("nightcore-clap")), + kickSample = new SkinnableSound(new SampleInfo("nightcore-kick")), + finishSample = new SkinnableSound(new SampleInfo("nightcore-finish")), + }; + } + + protected override void OnNewBeat(int beatIndex, TimingControlPoint timingPoint, EffectControlPoint effectPoint, TrackAmplitudes amplitudes) + { + base.OnNewBeat(beatIndex, timingPoint, effectPoint, amplitudes); + + if (beatIndex > -1) + { + if (beatIndex % 16 == 0) + finishSample?.Play(); + else if (beatIndex % 2 == 0) + kickSample?.Play(); + else if (beatIndex % 2 == 1) + clapSample?.Play(); + else + hatSample?.Play(); + } + } + } } } From 6da168118e84965914bfec15bfae2794676c4470 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 15 Dec 2019 17:02:29 +0800 Subject: [PATCH 0348/1829] remove unused usings --- osu.Game/Rulesets/Mods/ModNightcore.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModNightcore.cs b/osu.Game/Rulesets/Mods/ModNightcore.cs index 22d8d4ba66..97d96bbca2 100644 --- a/osu.Game/Rulesets/Mods/ModNightcore.cs +++ b/osu.Game/Rulesets/Mods/ModNightcore.cs @@ -1,17 +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.Collections.Generic; -using System.Linq; using osu.Framework.Allocation; using osu.Framework.Audio; -using osu.Framework.Audio.Sample; using osu.Framework.Audio.Track; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; using osu.Game.Audio; -using osu.Game.Beatmaps; using osu.Game.Beatmaps.ControlPoints; using osu.Game.Graphics; using osu.Game.Graphics.Containers; From 154bc57c6e62136b49f4560af8614fe5889a7d9e Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 15 Dec 2019 17:46:44 +0800 Subject: [PATCH 0349/1829] remove unused dependency --- osu.Game/Rulesets/Mods/ModNightcore.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Mods/ModNightcore.cs b/osu.Game/Rulesets/Mods/ModNightcore.cs index 97d96bbca2..3a67fedd4d 100644 --- a/osu.Game/Rulesets/Mods/ModNightcore.cs +++ b/osu.Game/Rulesets/Mods/ModNightcore.cs @@ -57,7 +57,7 @@ namespace osu.Game.Rulesets.Mods private SkinnableSound finishSample; [BackgroundDependencyLoader] - private void load(AudioManager audio) + private void load() { InternalChildren = new Drawable[] { From c06e558f874fe975502894658617d00214731777 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 15 Dec 2019 18:12:37 +0800 Subject: [PATCH 0350/1829] add setting to start fully wounded --- osu.Game/Rulesets/Mods/ModTimeRamp.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Mods/ModTimeRamp.cs b/osu.Game/Rulesets/Mods/ModTimeRamp.cs index 133f9ceb39..d21990ae91 100644 --- a/osu.Game/Rulesets/Mods/ModTimeRamp.cs +++ b/osu.Game/Rulesets/Mods/ModTimeRamp.cs @@ -23,6 +23,9 @@ namespace osu.Game.Rulesets.Mods [SettingSource("Final rate", "The final speed to ramp to")] public abstract BindableNumber FinalRate { get; } + [SettingSource("Start wounded", "Start at 100% of the final rate")] + public BindableBool Reverse { get; } = new BindableBool(); + private double finalRateTime; private double beginRampTime; @@ -61,7 +64,10 @@ namespace osu.Game.Rulesets.Mods public virtual void Update(Playfield playfield) { - applyAdjustment((track.CurrentTime - beginRampTime) / finalRateTime); + if (!Reverse.Value) + applyAdjustment((track.CurrentTime - beginRampTime) / finalRateTime); + else + applyAdjustment(1 - ((track.CurrentTime - beginRampTime) / finalRateTime)); } /// From ad077042ba61a9e4fa297e0c9f5e971f3047008c Mon Sep 17 00:00:00 2001 From: Willy Tu Date: Sun, 15 Dec 2019 02:18:12 -0800 Subject: [PATCH 0351/1829] Created ContextMenu for scores by adding OsuContextMenuContainer as a child of LeaderboardScore and a Drawable that extended the IHasContextMenu interface to the MenuContainer. Tried to the LeaderboardScore extend IHASContextMenu itself, but it is not working yet. --- .../Online/Leaderboards/LeaderboardScore.cs | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/osu.Game/Online/Leaderboards/LeaderboardScore.cs b/osu.Game/Online/Leaderboards/LeaderboardScore.cs index 6ac5219282..c4bc306f05 100644 --- a/osu.Game/Online/Leaderboards/LeaderboardScore.cs +++ b/osu.Game/Online/Leaderboards/LeaderboardScore.cs @@ -11,10 +11,13 @@ using osu.Framework.Graphics.Cursor; using osu.Framework.Graphics.Effects; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Sprites; +using osu.Framework.Graphics.UserInterface; using osu.Framework.Input.Events; using osu.Game.Graphics; +using osu.Game.Graphics.Cursor; using osu.Game.Graphics.Containers; using osu.Game.Graphics.Sprites; +using osu.Game.Graphics.UserInterface; using osu.Game.Rulesets.UI; using osu.Game.Scoring; using osu.Game.Users.Drawables; @@ -227,9 +230,28 @@ namespace osu.Game.Online.Leaderboards }, }; + Add( + new OsuContextMenuContainer + { + RelativeSizeAxes = Axes.Both, + Children = new Drawable[] { + new ContextMenuArea{ + RelativeSizeAxes = Axes.Both + } + } + } + ); + innerAvatar.OnLoadComplete += d => d.FadeInFromZero(200); } + private class ContextMenuArea : Drawable, IHasContextMenu + { + public MenuItem[] ContextMenuItems => new MenuItem[] + { + new OsuMenuItem("Delete", MenuItemType.Destructive), + }; + } public override void Show() { foreach (var d in new[] { avatar, nameLabel, scoreLabel, scoreRank, flagBadgeContainer, modsContainer }.Concat(statisticsLabels)) From 19a3c959923328c8b91e4653ee003b101f60c770 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Sat, 14 Dec 2019 21:27:26 +0800 Subject: [PATCH 0352/1829] Update InspectCode to 2019.3 --- build/InspectCode.cake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/InspectCode.cake b/build/InspectCode.cake index bd3fdf5f93..06c56dce87 100644 --- a/build/InspectCode.cake +++ b/build/InspectCode.cake @@ -1,5 +1,5 @@ #addin "nuget:?package=CodeFileSanity&version=0.0.33" -#addin "nuget:?package=JetBrains.ReSharper.CommandLineTools&version=2019.2.1" +#addin "nuget:?package=JetBrains.ReSharper.CommandLineTools&version=2019.3.0" #tool "nuget:?package=NVika.MSBuild&version=1.0.1" var nVikaToolPath = GetFiles("./tools/NVika.MSBuild.*/tools/NVika.exe").First(); From ab70abe8bd2b577c049cad84283f0b74e1dcbc60 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Sat, 14 Dec 2019 21:28:13 +0800 Subject: [PATCH 0353/1829] Turn off unexpected new warnings. --- osu.Game/Screens/Select/BeatmapCarousel.cs | 4 ++++ osu.sln.DotSettings | 1 + 2 files changed, 5 insertions(+) diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs b/osu.Game/Screens/Select/BeatmapCarousel.cs index ec524043ee..4acc619753 100644 --- a/osu.Game/Screens/Select/BeatmapCarousel.cs +++ b/osu.Game/Screens/Select/BeatmapCarousel.cs @@ -587,13 +587,16 @@ namespace osu.Game.Screens.Select switch (d) { case DrawableCarouselBeatmapSet set: + { lastSet = set; set.MoveToX(set.Item.State.Value == CarouselItemState.Selected ? -100 : 0, 500, Easing.OutExpo); set.MoveToY(currentY, 750, Easing.OutExpo); break; + } case DrawableCarouselBeatmap beatmap: + { if (beatmap.Item.State.Value == CarouselItemState.Selected) scrollTarget = currentY + beatmap.DrawHeight / 2 - DrawHeight / 2; @@ -619,6 +622,7 @@ namespace osu.Game.Screens.Select } break; + } } } diff --git a/osu.sln.DotSettings b/osu.sln.DotSettings index 9b400de390..105d22fe3e 100644 --- a/osu.sln.DotSettings +++ b/osu.sln.DotSettings @@ -215,6 +215,7 @@ HINT HINT HINT + HINT DO_NOT_SHOW WARNING WARNING From 8b570233495c2c654b9493bb7d6415580c4c8174 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Sat, 14 Dec 2019 20:22:39 +0800 Subject: [PATCH 0354/1829] Require 3.1.100 SDK in global.json --- global.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/global.json b/global.json index 43bb34912a..6858d4044d 100644 --- a/global.json +++ b/global.json @@ -1,4 +1,9 @@ { + "sdk": { + "allowPrerelease": false, + "rollForward": "minor", + "version": "3.1.100" + }, "msbuild-sdks": { "Microsoft.Build.Traversal": "2.0.24" } From cea3a66d4a0f9e235aa7d5e3966281507229cfc1 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Sat, 14 Dec 2019 20:26:28 +0800 Subject: [PATCH 0355/1829] Use static local method fixed for roslyn 3.4 --- .../Visual/Online/TestSceneBeatmapSetOverlayDetails.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlayDetails.cs b/osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlayDetails.cs index 2a45e68c0a..96c0c59695 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlayDetails.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlayDetails.cs @@ -44,7 +44,7 @@ namespace osu.Game.Tests.Visual.Online AddStep("set second set", () => details.BeatmapSet = secondSet); AddAssert("ratings set", () => details.Ratings.Metrics == secondSet.Metrics); - BeatmapSetInfo createSet() => new BeatmapSetInfo + static BeatmapSetInfo createSet() => new BeatmapSetInfo { Metrics = new BeatmapSetMetrics { Ratings = Enumerable.Range(0, 11).Select(_ => RNG.Next(10)).ToArray() }, Beatmaps = new List From c457571da6d69f41ac7722bda6532fa99722c611 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Sat, 14 Dec 2019 20:54:22 +0800 Subject: [PATCH 0356/1829] Use index and range expressions --- .editorconfig | 4 ++-- osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs | 2 +- osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs | 6 +++--- .../Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs | 2 +- osu.Game.Rulesets.Osu/Replays/OsuAutoGenerator.cs | 8 ++++---- .../Visual/UserInterface/TestSceneBeatSyncedContainer.cs | 4 ++-- osu.Game/Beatmaps/ControlPoints/ControlPointInfo.cs | 4 ++-- osu.Game/Beatmaps/Formats/LegacyDecoder.cs | 2 +- osu.Game/Graphics/Containers/LinkFlowContainer.cs | 2 +- .../Rulesets/Objects/Legacy/ConvertHitObjectParser.cs | 4 ++-- osu.Game/Rulesets/Objects/SliderPath.cs | 6 +++--- osu.sln.DotSettings | 2 +- 12 files changed, 23 insertions(+), 23 deletions(-) diff --git a/.editorconfig b/.editorconfig index b5333ad8e7..8cdb92d11c 100644 --- a/.editorconfig +++ b/.editorconfig @@ -176,8 +176,8 @@ dotnet_style_prefer_is_null_check_over_reference_equality_method = true:silent #Style - C# 8 features csharp_prefer_static_local_function = true:warning csharp_prefer_simple_using_statement = true:silent -csharp_style_prefer_index_operator = false:none -csharp_style_prefer_range_operator = false:none +csharp_style_prefer_index_operator = true:warning +csharp_style_prefer_range_operator = true:warning csharp_style_prefer_switch_expression = false:none #Supressing roslyn built-in analyzers diff --git a/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs b/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs index 9069c09ae4..6e4491de94 100644 --- a/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs +++ b/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs @@ -116,7 +116,7 @@ namespace osu.Game.Rulesets.Mania.Beatmaps prevNoteTimes.RemoveAt(0); prevNoteTimes.Add(newNoteTime); - density = (prevNoteTimes[prevNoteTimes.Count - 1] - prevNoteTimes[0]) / prevNoteTimes.Count; + density = (prevNoteTimes[^1] - prevNoteTimes[0]) / prevNoteTimes.Count; } private double lastTime; diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs index 5f75cbabec..b6fc9821a4 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs @@ -286,11 +286,11 @@ namespace osu.Game.Rulesets.Osu.Tests private bool assertGreatJudge() => judgementResults.Last().Type == HitResult.Great; - private bool assertHeadMissTailTracked() => judgementResults[judgementResults.Count - 2].Type == HitResult.Great && judgementResults.First().Type == HitResult.Miss; + private bool assertHeadMissTailTracked() => judgementResults[^2].Type == HitResult.Great && judgementResults.First().Type == HitResult.Miss; - private bool assertMidSliderJudgements() => judgementResults[judgementResults.Count - 2].Type == HitResult.Great; + private bool assertMidSliderJudgements() => judgementResults[^2].Type == HitResult.Great; - private bool assertMidSliderJudgementFail() => judgementResults[judgementResults.Count - 2].Type == HitResult.Miss; + private bool assertMidSliderJudgementFail() => judgementResults[^2].Type == HitResult.Miss; private ScoreAccessibleReplayPlayer currentPlayer; diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs index 9b820261ab..2497e428fc 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs @@ -116,7 +116,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders protected override bool OnDoubleClick(DoubleClickEvent e) { // Todo: This should all not occur on double click, but rather if the previous control point is hovered. - segmentStart = HitObject.Path.ControlPoints[HitObject.Path.ControlPoints.Count - 1]; + segmentStart = HitObject.Path.ControlPoints[^1]; segmentStart.Type.Value = PathType.Linear; currentSegmentLength = 1; diff --git a/osu.Game.Rulesets.Osu/Replays/OsuAutoGenerator.cs b/osu.Game.Rulesets.Osu/Replays/OsuAutoGenerator.cs index bd59e8a03f..2686ba4fd2 100644 --- a/osu.Game.Rulesets.Osu/Replays/OsuAutoGenerator.cs +++ b/osu.Game.Rulesets.Osu/Replays/OsuAutoGenerator.cs @@ -156,9 +156,9 @@ namespace osu.Game.Rulesets.Osu.Replays // TODO: Shouldn't the spinner always spin in the same direction? if (h is Spinner) { - calcSpinnerStartPosAndDirection(((OsuReplayFrame)Frames[Frames.Count - 1]).Position, out startPosition, out spinnerDirection); + calcSpinnerStartPosAndDirection(((OsuReplayFrame)Frames[^1]).Position, out startPosition, out spinnerDirection); - Vector2 spinCentreOffset = SPINNER_CENTRE - ((OsuReplayFrame)Frames[Frames.Count - 1]).Position; + Vector2 spinCentreOffset = SPINNER_CENTRE - ((OsuReplayFrame)Frames[^1]).Position; if (spinCentreOffset.Length > SPIN_RADIUS) { @@ -230,7 +230,7 @@ namespace osu.Game.Rulesets.Osu.Replays private void moveToHitObject(OsuHitObject h, Vector2 targetPos, Easing easing) { - OsuReplayFrame lastFrame = (OsuReplayFrame)Frames[Frames.Count - 1]; + OsuReplayFrame lastFrame = (OsuReplayFrame)Frames[^1]; // Wait until Auto could "see and react" to the next note. double waitTime = h.StartTime - Math.Max(0.0, h.TimePreempt - reactionTime); @@ -363,7 +363,7 @@ namespace osu.Game.Rulesets.Osu.Replays } // We only want to let go of our button if we are at the end of the current replay. Otherwise something is still going on after us so we need to keep the button pressed! - if (Frames[Frames.Count - 1].Time <= endFrame.Time) + if (Frames[^1].Time <= endFrame.Time) AddFrameToReplay(endFrame); } diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneBeatSyncedContainer.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneBeatSyncedContainer.cs index ed44d82bce..b0b673d6a4 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneBeatSyncedContainer.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneBeatSyncedContainer.cs @@ -157,7 +157,7 @@ namespace osu.Game.Tests.Visual.UserInterface private TimingControlPoint getNextTimingPoint(TimingControlPoint current) { - if (timingPoints[timingPoints.Count - 1] == current) + if (timingPoints[^1] == current) return current; int index = timingPoints.IndexOf(current); // -1 means that this is a "default beat" @@ -169,7 +169,7 @@ namespace osu.Game.Tests.Visual.UserInterface { if (timingPoints.Count == 0) return 0; - if (timingPoints[timingPoints.Count - 1] == current) + if (timingPoints[^1] == current) return (int)Math.Ceiling((Beatmap.Value.Track.Length - current.Time) / current.BeatLength); return (int)Math.Ceiling((getNextTimingPoint(current).Time - current.Time) / current.BeatLength); diff --git a/osu.Game/Beatmaps/ControlPoints/ControlPointInfo.cs b/osu.Game/Beatmaps/ControlPoints/ControlPointInfo.cs index ce2783004c..03496952e7 100644 --- a/osu.Game/Beatmaps/ControlPoints/ControlPointInfo.cs +++ b/osu.Game/Beatmaps/ControlPoints/ControlPointInfo.cs @@ -195,8 +195,8 @@ namespace osu.Game.Beatmaps.ControlPoints if (time < list[0].Time) return null; - if (time >= list[list.Count - 1].Time) - return list[list.Count - 1]; + if (time >= list[^1].Time) + return list[^1]; int l = 0; int r = list.Count - 2; diff --git a/osu.Game/Beatmaps/Formats/LegacyDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyDecoder.cs index 2b914669cb..e401e3fb97 100644 --- a/osu.Game/Beatmaps/Formats/LegacyDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyDecoder.cs @@ -34,7 +34,7 @@ namespace osu.Game.Beatmaps.Formats if (line.StartsWith(@"[", StringComparison.Ordinal) && line.EndsWith(@"]", StringComparison.Ordinal)) { - if (!Enum.TryParse(line.Substring(1, line.Length - 2), out section)) + if (!Enum.TryParse(line[1..^1], out section)) { Logger.Log($"Unknown section \"{line}\" in \"{output}\""); section = Section.None; diff --git a/osu.Game/Graphics/Containers/LinkFlowContainer.cs b/osu.Game/Graphics/Containers/LinkFlowContainer.cs index 2bbac92f7f..9735f6373d 100644 --- a/osu.Game/Graphics/Containers/LinkFlowContainer.cs +++ b/osu.Game/Graphics/Containers/LinkFlowContainer.cs @@ -37,7 +37,7 @@ namespace osu.Game.Graphics.Containers foreach (var link in links) { - AddText(text.Substring(previousLinkEnd, link.Index - previousLinkEnd)); + AddText(text[previousLinkEnd..link.Index]); AddLink(text.Substring(link.Index, link.Length), link.Action, link.Argument ?? link.Url); previousLinkEnd = link.Index + link.Length; } diff --git a/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs index b5b1e26486..7fddb442d1 100644 --- a/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs +++ b/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs @@ -184,7 +184,7 @@ namespace osu.Game.Rulesets.Objects.Legacy result = CreateSlider(pos, combo, comboOffset, convertControlPoints(points, pathType), length, repeatCount, nodeSamples); // The samples are played when the slider ends, which is the last node - result.Samples = nodeSamples[nodeSamples.Count - 1]; + result.Samples = nodeSamples[^1]; } else if (type.HasFlag(ConvertHitObjectType.Spinner)) { @@ -279,7 +279,7 @@ namespace osu.Game.Rulesets.Objects.Legacy { if (vertices[i] == vertices[i - 1]) { - points[points.Count - 1].Type.Value = type; + points[^1].Type.Value = type; continue; } diff --git a/osu.Game/Rulesets/Objects/SliderPath.cs b/osu.Game/Rulesets/Objects/SliderPath.cs index 86deba3b93..293138097f 100644 --- a/osu.Game/Rulesets/Objects/SliderPath.cs +++ b/osu.Game/Rulesets/Objects/SliderPath.cs @@ -92,7 +92,7 @@ namespace osu.Game.Rulesets.Objects get { ensureValid(); - return cumulativeLength.Count == 0 ? 0 : cumulativeLength[cumulativeLength.Count - 1]; + return cumulativeLength.Count == 0 ? 0 : cumulativeLength[^1]; } } @@ -251,7 +251,7 @@ namespace osu.Game.Rulesets.Objects if (calculatedLength > expectedDistance) { // The path will be shortened further, in which case we should trim any more unnecessary lengths and their associated path segments - while (cumulativeLength.Count > 0 && cumulativeLength[cumulativeLength.Count - 1] >= expectedDistance) + while (cumulativeLength.Count > 0 && cumulativeLength[^1] >= expectedDistance) { cumulativeLength.RemoveAt(cumulativeLength.Count - 1); calculatedPath.RemoveAt(pathEndIndex--); @@ -269,7 +269,7 @@ namespace osu.Game.Rulesets.Objects // The direction of the segment to shorten or lengthen Vector2 dir = (calculatedPath[pathEndIndex] - calculatedPath[pathEndIndex - 1]).Normalized(); - calculatedPath[pathEndIndex] = calculatedPath[pathEndIndex - 1] + dir * (float)(expectedDistance - cumulativeLength[cumulativeLength.Count - 1]); + calculatedPath[pathEndIndex] = calculatedPath[pathEndIndex - 1] + dir * (float)(expectedDistance - cumulativeLength[^1]); cumulativeLength.Add(expectedDistance); } } diff --git a/osu.sln.DotSettings b/osu.sln.DotSettings index 105d22fe3e..12571be31d 100644 --- a/osu.sln.DotSettings +++ b/osu.sln.DotSettings @@ -220,7 +220,7 @@ WARNING WARNING WARNING - DO_NOT_SHOW + WARNING WARNING True From 0e658790c141bd28eaa7a62d4b41b2f6b0231e5c Mon Sep 17 00:00:00 2001 From: Ganendra Afrasya Date: Sun, 15 Dec 2019 22:42:44 +0700 Subject: [PATCH 0357/1829] Add function to assert multiplier value instead of hardcoded string --- .../TestSceneFooterButtonMods.cs | 54 +++++++++++++------ 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs index e8d3475a11..6eb621ca3b 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Linq; using NUnit.Framework; using osu.Game.Graphics.Sprites; using osu.Game.Rulesets.Mods; @@ -28,33 +29,46 @@ namespace osu.Game.Tests.Visual.UserInterface [Test] public void TestIncrementMultiplier() { - AddStep(@"Add Hidden", () => changeMods(new Mod[] { new OsuModHidden() })); - AddAssert(@"Check Hidden multiplier", () => footerButtonMods.MultiplierText.Text == @"1.06x"); - AddStep(@"Add HardRock", () => changeMods(new Mod[] { new OsuModHidden() })); - AddAssert(@"Check HardRock multiplier", () => footerButtonMods.MultiplierText.Text == @"1.06x"); - AddStep(@"Add DoubleTime", () => changeMods(new Mod[] { new OsuModDoubleTime() })); - AddAssert(@"Check DoubleTime multiplier", () => footerButtonMods.MultiplierText.Text == @"1.12x"); - AddStep(@"Add multiple Mods", () => changeMods(new Mod[] { new OsuModDoubleTime(), new OsuModHidden(), new OsuModHidden() })); - AddAssert(@"Check multiple mod multiplier", () => footerButtonMods.MultiplierText.Text == @"1.26x"); + var hiddenMod = new Mod[] { new OsuModHidden() }; + AddStep(@"Add Hidden", () => changeMods(hiddenMod)); + AddAssert(@"Check Hidden multiplier", () => assertModsMultiplier(hiddenMod)); + + var hardRockMod = new Mod[] { new OsuModHardRock() }; + AddStep(@"Add HardRock", () => changeMods(hardRockMod)); + AddAssert(@"Check HardRock multiplier", () => assertModsMultiplier(hardRockMod)); + + var doubleTimeMod = new Mod[] { new OsuModDoubleTime() }; + AddStep(@"Add DoubleTime", () => changeMods(doubleTimeMod)); + AddAssert(@"Check DoubleTime multiplier", () => assertModsMultiplier(doubleTimeMod)); + + var mutlipleIncrementMods = new Mod[] { new OsuModDoubleTime(), new OsuModHidden(), new OsuModHardRock() }; + AddStep(@"Add multiple Mods", () => changeMods(mutlipleIncrementMods)); + AddAssert(@"Check multiple mod multiplier", () => assertModsMultiplier(mutlipleIncrementMods)); } [Test] public void TestDecrementMultiplier() { - AddStep(@"Add Easy", () => changeMods(new Mod[] { new OsuModEasy() })); - AddAssert(@"Check Easy multiplier", () => footerButtonMods.MultiplierText.Text == @"0.50x"); - AddStep(@"Add NoFail", () => changeMods(new Mod[] { new OsuModNoFail() })); - AddAssert(@"Check NoFail multiplier", () => footerButtonMods.MultiplierText.Text == @"0.50x"); - AddStep(@"Add Multiple Mods", () => changeMods(new Mod[] { new OsuModEasy(), new OsuModNoFail() })); - AddAssert(@"Check multiple mod multiplier", () => footerButtonMods.MultiplierText.Text == @"0.25x"); + var easyMod = new Mod[] { new OsuModEasy() }; + AddStep(@"Add Easy", () => changeMods(easyMod)); + AddAssert(@"Check Easy multiplier", () => assertModsMultiplier(easyMod)); + + var noFailMod = new Mod[] { new OsuModNoFail() }; + AddStep(@"Add NoFail", () => changeMods(noFailMod)); + AddAssert(@"Check NoFail multiplier", () => assertModsMultiplier(noFailMod)); + + var multipleDecrementMods = new Mod[] { new OsuModEasy(), new OsuModNoFail() }; + AddStep(@"Add Multiple Mods", () => changeMods(multipleDecrementMods)); + AddAssert(@"Check multiple mod multiplier", () => assertModsMultiplier(multipleDecrementMods)); } [Test] public void TestClearMultiplier() { - AddStep(@"Add mods", () => changeMods(new Mod[] { new OsuModDoubleTime(), new OsuModFlashlight() })); + var multipleMods = new Mod[] { new OsuModDoubleTime(), new OsuModFlashlight() }; + AddStep(@"Add mods", () => changeMods(multipleMods)); AddStep(@"Clear selected mod", () => changeMods(Array.Empty())); - AddAssert(@"Check empty multiplier", () => string.IsNullOrEmpty(footerButtonMods.MultiplierText.Text)); + AddAssert(@"Check empty multiplier", () => assertModsMultiplier(Array.Empty())); } private void changeMods(IReadOnlyList mods) @@ -62,6 +76,14 @@ namespace osu.Game.Tests.Visual.UserInterface footerButtonMods.Current.Value = mods; } + private bool assertModsMultiplier(IEnumerable mods) + { + var multiplier = mods.Aggregate(1.0, (current, mod) => current * mod.ScoreMultiplier); + var expectedValue = multiplier.Equals(1.0) ? string.Empty : $"{multiplier:N2}x"; + + return expectedValue == footerButtonMods.MultiplierText.Text; + } + private class TestFooterButtonMods : FooterButtonMods { public new OsuSpriteText MultiplierText => base.MultiplierText; From 88d3a1707d0b2d3893e497d4eb319d31a845d2d9 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 16 Dec 2019 06:35:18 +0800 Subject: [PATCH 0358/1829] ensure beatIndex is 0 before starting beats --- osu.Game/Rulesets/Mods/ModNightcore.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Mods/ModNightcore.cs b/osu.Game/Rulesets/Mods/ModNightcore.cs index 3a67fedd4d..1374c385cc 100644 --- a/osu.Game/Rulesets/Mods/ModNightcore.cs +++ b/osu.Game/Rulesets/Mods/ModNightcore.cs @@ -55,6 +55,7 @@ namespace osu.Game.Rulesets.Mods private SkinnableSound clapSample; private SkinnableSound kickSample; private SkinnableSound finishSample; + private bool started; [BackgroundDependencyLoader] private void load() @@ -72,7 +73,10 @@ namespace osu.Game.Rulesets.Mods { base.OnNewBeat(beatIndex, timingPoint, effectPoint, amplitudes); - if (beatIndex > -1) + if (!started && beatIndex == 0) + started = true; + + if (started && beatIndex > -1) { if (beatIndex % 16 == 0) finishSample?.Play(); From 9062fe1935b114fd214b5d84f9319fbdb7cd2053 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 16 Dec 2019 13:32:53 +0900 Subject: [PATCH 0359/1829] Fix crashes on custom skins due to extension-less file lookups --- osu.Game/Skinning/LegacySkinResourceStore.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/osu.Game/Skinning/LegacySkinResourceStore.cs b/osu.Game/Skinning/LegacySkinResourceStore.cs index 72f3b9ed78..7c799d9c89 100644 --- a/osu.Game/Skinning/LegacySkinResourceStore.cs +++ b/osu.Game/Skinning/LegacySkinResourceStore.cs @@ -22,10 +22,8 @@ namespace osu.Game.Skinning if (source.Files == null) return null; - bool hasExtension = filename.Contains('.'); - var file = source.Files.Find(f => - string.Equals(hasExtension ? f.Filename : Path.ChangeExtension(f.Filename, null), filename, StringComparison.InvariantCultureIgnoreCase)); + string.Equals(f.Filename, filename, StringComparison.InvariantCultureIgnoreCase)); return file?.FileInfo.StoragePath; } From befb78f83b890f847b16cbcd2c52310bc7d15975 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 16 Dec 2019 14:01:08 +0900 Subject: [PATCH 0360/1829] Simplify LegacySkinResourceStore by deriving from ResourceStore --- osu.Game/Skinning/LegacySkinResourceStore.cs | 60 ++++---------------- 1 file changed, 12 insertions(+), 48 deletions(-) diff --git a/osu.Game/Skinning/LegacySkinResourceStore.cs b/osu.Game/Skinning/LegacySkinResourceStore.cs index 7c799d9c89..79a4e2e932 100644 --- a/osu.Game/Skinning/LegacySkinResourceStore.cs +++ b/osu.Game/Skinning/LegacySkinResourceStore.cs @@ -3,75 +3,39 @@ using System; using System.Collections.Generic; -using System.IO; using System.Linq; -using System.Threading.Tasks; using osu.Framework.IO.Stores; using osu.Game.Database; namespace osu.Game.Skinning { - public class LegacySkinResourceStore : IResourceStore + public class LegacySkinResourceStore : ResourceStore where T : INamedFileInfo { private readonly IHasFiles source; - private readonly IResourceStore underlyingStore; - - private string getPathForFile(string filename) - { - if (source.Files == null) - return null; - - var file = source.Files.Find(f => - string.Equals(f.Filename, filename, StringComparison.InvariantCultureIgnoreCase)); - return file?.FileInfo.StoragePath; - } public LegacySkinResourceStore(IHasFiles source, IResourceStore underlyingStore) + : base(underlyingStore) { this.source = source; - this.underlyingStore = underlyingStore; } - public Stream GetStream(string name) + protected override IEnumerable GetFilenames(string name) { - string path = getPathForFile(name); - return path == null ? null : underlyingStore.GetStream(path); - } + if (source.Files == null) + yield break; - public IEnumerable GetAvailableResources() => source.Files.Select(f => f.Filename); - - byte[] IResourceStore.Get(string name) => GetAsync(name).Result; - - public Task GetAsync(string name) - { - string path = getPathForFile(name); - return path == null ? Task.FromResult(null) : underlyingStore.GetAsync(path); - } - - #region IDisposable Support - - private bool isDisposed; - - protected virtual void Dispose(bool disposing) - { - if (!isDisposed) + foreach (var filename in base.GetFilenames(name)) { - isDisposed = true; + var path = getPathForFile(filename); + if (path != null) + yield return path; } } - ~LegacySkinResourceStore() - { - Dispose(false); - } + private string getPathForFile(string filename) => + source.Files.Find(f => string.Equals(f.Filename, filename, StringComparison.InvariantCultureIgnoreCase))?.FileInfo.StoragePath; - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - #endregion + public override IEnumerable GetAvailableResources() => source.Files.Select(f => f.Filename); } } From db3dc4f3755e7254c4c039ea48f23c7a2edb1bb7 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 16 Dec 2019 15:15:26 +0900 Subject: [PATCH 0361/1829] Optimise cursortrail with custom vertex logic --- .../UI/Cursor/CursorTrail.cs | 70 +++++++++++-------- 1 file changed, 39 insertions(+), 31 deletions(-) diff --git a/osu.Game.Rulesets.Osu/UI/Cursor/CursorTrail.cs b/osu.Game.Rulesets.Osu/UI/Cursor/CursorTrail.cs index 80291c002e..4d6db83d7a 100644 --- a/osu.Game.Rulesets.Osu/UI/Cursor/CursorTrail.cs +++ b/osu.Game.Rulesets.Osu/UI/Cursor/CursorTrail.cs @@ -174,7 +174,7 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor private void addPart(Vector2 screenSpacePosition) { parts[currentIndex].Position = screenSpacePosition; - parts[currentIndex].Time = time; + parts[currentIndex].Time = time + 1; ++parts[currentIndex].InvalidationID; currentIndex = (currentIndex + 1) % max_sprites; @@ -201,7 +201,7 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor private readonly TrailPart[] parts = new TrailPart[max_sprites]; private Vector2 size; - private readonly TrailBatch vertexBatch = new TrailBatch(max_sprites, 1); + private readonly QuadBatch vertexBatch = new QuadBatch(max_sprites, 1); public TrailDrawNode(CursorTrail source) : base(source) @@ -227,23 +227,50 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor shader.Bind(); shader.GetUniform("g_FadeClock").UpdateValue(ref time); - for (int i = 0; i < parts.Length; ++i) + RectangleF textureRect = texture.GetTextureRect(); + + foreach (var part in parts) { - if (parts[i].InvalidationID == -1) + if (part.InvalidationID == -1) continue; - vertexBatch.DrawTime = parts[i].Time; + if (time - part.Time >= 1) + continue; - Vector2 pos = parts[i].Position; + vertexBatch.Add(new TexturedTrailVertex + { + Position = new Vector2(part.Position.X - size.X / 2, part.Position.Y + size.Y / 2), + TexturePosition = textureRect.BottomLeft, + Colour = DrawColourInfo.Colour.BottomLeft.Linear, + Time = part.Time + }); - DrawQuad( - texture, - new Quad(pos.X - size.X / 2, pos.Y - size.Y / 2, size.X, size.Y), - DrawColourInfo.Colour, - null, - vertexBatch.AddAction); + vertexBatch.Add(new TexturedTrailVertex + { + Position = new Vector2(part.Position.X + size.X / 2, part.Position.Y + size.Y / 2), + TexturePosition = textureRect.BottomRight, + Colour = DrawColourInfo.Colour.BottomRight.Linear, + Time = part.Time + }); + + vertexBatch.Add(new TexturedTrailVertex + { + Position = new Vector2(part.Position.X + size.X / 2, part.Position.Y - size.Y / 2), + TexturePosition = textureRect.TopRight, + Colour = DrawColourInfo.Colour.TopRight.Linear, + Time = part.Time + }); + + vertexBatch.Add(new TexturedTrailVertex + { + Position = new Vector2(part.Position.X - size.X / 2, part.Position.Y - size.Y / 2), + TexturePosition = textureRect.TopLeft, + Colour = DrawColourInfo.Colour.TopLeft.Linear, + Time = part.Time + }); } + vertexBatch.Draw(); shader.Unbind(); } @@ -253,25 +280,6 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor vertexBatch.Dispose(); } - - // Todo: This shouldn't exist, but is currently used to reduce allocations by caching variable-capturing closures. - private class TrailBatch : QuadBatch - { - public new readonly Action AddAction; - public float DrawTime; - - public TrailBatch(int size, int maxBuffers) - : base(size, maxBuffers) - { - AddAction = v => Add(new TexturedTrailVertex - { - Position = v.Position, - TexturePosition = v.TexturePosition, - Time = DrawTime + 1, - Colour = v.Colour, - }); - } - } } [StructLayout(LayoutKind.Sequential)] From a554ca728bf0b8e4f7db9034e08a908c7c549dc5 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 16 Dec 2019 15:27:54 +0900 Subject: [PATCH 0362/1829] Don't reuse the same control point references --- osu.Game.Rulesets.Catch/Objects/JuiceStream.cs | 2 +- osu.Game.Rulesets.Osu/Objects/Slider.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Objects/JuiceStream.cs b/osu.Game.Rulesets.Catch/Objects/JuiceStream.cs index d5d99640af..a4ed966abb 100644 --- a/osu.Game.Rulesets.Catch/Objects/JuiceStream.cs +++ b/osu.Game.Rulesets.Catch/Objects/JuiceStream.cs @@ -128,7 +128,7 @@ namespace osu.Game.Rulesets.Catch.Objects if (value != null) { - path.ControlPoints.AddRange(value.ControlPoints); + path.ControlPoints.AddRange(value.ControlPoints.Select(c => new PathControlPoint(c.Position.Value, c.Type.Value))); path.ExpectedDistance.Value = value.ExpectedDistance.Value; } } diff --git a/osu.Game.Rulesets.Osu/Objects/Slider.cs b/osu.Game.Rulesets.Osu/Objects/Slider.cs index 34e5a7f3cd..fe65ab78d1 100644 --- a/osu.Game.Rulesets.Osu/Objects/Slider.cs +++ b/osu.Game.Rulesets.Osu/Objects/Slider.cs @@ -39,7 +39,7 @@ namespace osu.Game.Rulesets.Osu.Objects if (value != null) { - path.ControlPoints.AddRange(value.ControlPoints); + path.ControlPoints.AddRange(value.ControlPoints.Select(c => new PathControlPoint(c.Position.Value, c.Type.Value))); path.ExpectedDistance.Value = value.ExpectedDistance.Value; } } From fef1877095ff240dbb65bb6d020cc376d965e482 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2019 07:36:30 +0000 Subject: [PATCH 0363/1829] Bump ppy.osu.Game.Resources from 2019.1010.0 to 2019.1215.0 Bumps [ppy.osu.Game.Resources](https://github.com/ppy/osu-resources) from 2019.1010.0 to 2019.1215.0. - [Release notes](https://github.com/ppy/osu-resources/releases) - [Commits](https://github.com/ppy/osu-resources/compare/2019.1010.0...2019.1215.0) Signed-off-by: dependabot-preview[bot] --- osu.Android.props | 2 +- osu.Game/osu.Game.csproj | 2 +- osu.iOS.props | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Android.props b/osu.Android.props index 239e1c2d31..abb3cc8244 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -53,7 +53,7 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 56d65830f9..e5f34b1c7e 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -22,7 +22,7 @@ - + diff --git a/osu.iOS.props b/osu.iOS.props index a90e90db19..c84e617285 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -73,7 +73,7 @@ - + From 58e3fb0d0fbd506aa4e2bc8342d503f60a7a6a54 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 16 Dec 2019 16:43:20 +0900 Subject: [PATCH 0364/1829] Coalesce to -1 --- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index e16411f343..4280112967 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -112,7 +112,7 @@ namespace osu.Game.Beatmaps.Formats writer.WriteLine(FormattableString.Invariant($"Source: {beatmap.Metadata.Source}")); writer.WriteLine(FormattableString.Invariant($"Tags: {beatmap.Metadata.Tags}")); writer.WriteLine(FormattableString.Invariant($"BeatmapID: {beatmap.BeatmapInfo.OnlineBeatmapID ?? 0}")); - writer.WriteLine(FormattableString.Invariant($"BeatmapSetID: {beatmap.BeatmapInfo.BeatmapSet.OnlineBeatmapSetID ?? 0}")); + writer.WriteLine(FormattableString.Invariant($"BeatmapSetID: {beatmap.BeatmapInfo.BeatmapSet.OnlineBeatmapSetID ?? -1}")); } private void handleDifficulty(TextWriter writer) From 596fda3c1fd0f1844842a721453e0980d64fcfa6 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 16 Dec 2019 16:57:40 +0900 Subject: [PATCH 0365/1829] Refactor switch --- .../Beatmaps/Formats/LegacyBeatmapEncoder.cs | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index 4280112967..efe20e8d34 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -191,26 +191,27 @@ namespace osu.Game.Beatmaps.Formats writer.WriteLine("[HitObjects]"); - foreach (var h in beatmap.HitObjects) + switch (beatmap.BeatmapInfo.RulesetID) { - switch (beatmap.BeatmapInfo.RulesetID) - { - case 0: + case 0: + foreach (var h in beatmap.HitObjects) handleOsuHitObject(writer, h); - break; + break; - case 1: + case 1: + foreach (var h in beatmap.HitObjects) handleTaikoHitObject(writer, h); - break; + break; - case 2: + case 2: + foreach (var h in beatmap.HitObjects) handleCatchHitObject(writer, h); - break; + break; - case 3: + case 3: + foreach (var h in beatmap.HitObjects) handleManiaHitObject(writer, h); - break; - } + break; } } From d56e99865cdc859be192c547e895e2792b03c9e1 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 16 Dec 2019 16:57:49 +0900 Subject: [PATCH 0366/1829] Throw not implemented exceptions --- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index efe20e8d34..e600dc06b7 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -314,17 +314,11 @@ namespace osu.Game.Beatmaps.Formats writer.Write(Environment.NewLine); } - private void handleTaikoHitObject(TextWriter writer, HitObject hitObject) - { - } + private void handleTaikoHitObject(TextWriter writer, HitObject hitObject) => throw new NotImplementedException(); - private void handleCatchHitObject(TextWriter writer, HitObject hitObject) - { - } + private void handleCatchHitObject(TextWriter writer, HitObject hitObject) => throw new NotImplementedException(); - private void handleManiaHitObject(TextWriter writer, HitObject hitObject) - { - } + private void handleManiaHitObject(TextWriter writer, HitObject hitObject) => throw new NotImplementedException(); private string getSampleBank(IList samples, bool banksOnly = false, bool zeroBanks = false) { From 98dd1c2590796010060759b17cd1a444ab3f60b2 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 16 Dec 2019 17:03:58 +0900 Subject: [PATCH 0367/1829] Use SingleOrDefault() where possible --- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index e600dc06b7..5c8d128d5a 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -322,13 +322,13 @@ namespace osu.Game.Beatmaps.Formats private string getSampleBank(IList samples, bool banksOnly = false, bool zeroBanks = false) { - LegacySampleBank normalBank = toLegacySampleBank(samples.FirstOrDefault(s => s.Name == HitSampleInfo.HIT_NORMAL)?.Bank); + LegacySampleBank normalBank = toLegacySampleBank(samples.SingleOrDefault(s => s.Name == HitSampleInfo.HIT_NORMAL)?.Bank); LegacySampleBank addBank = toLegacySampleBank(samples.FirstOrDefault(s => !string.IsNullOrEmpty(s.Name) && s.Name != HitSampleInfo.HIT_NORMAL)?.Bank); string customSampleBank = toLegacyCustomSampleBank(samples.FirstOrDefault()?.Suffix); string sampleFilename = samples.FirstOrDefault(s => string.IsNullOrEmpty(s.Name))?.LookupNames.First() ?? string.Empty; - int volume = samples.First().Volume; + int volume = samples.FirstOrDefault()?.Volume ?? 100; StringBuilder sb = new StringBuilder(); From 9fa6954ac2f139171ec33b5b887b25eb4cb20d14 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 16 Dec 2019 17:05:24 +0900 Subject: [PATCH 0368/1829] Refactor getSampleBank a bit --- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index 5c8d128d5a..9e643857f1 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -325,11 +325,6 @@ namespace osu.Game.Beatmaps.Formats LegacySampleBank normalBank = toLegacySampleBank(samples.SingleOrDefault(s => s.Name == HitSampleInfo.HIT_NORMAL)?.Bank); LegacySampleBank addBank = toLegacySampleBank(samples.FirstOrDefault(s => !string.IsNullOrEmpty(s.Name) && s.Name != HitSampleInfo.HIT_NORMAL)?.Bank); - string customSampleBank = toLegacyCustomSampleBank(samples.FirstOrDefault()?.Suffix); - string sampleFilename = samples.FirstOrDefault(s => string.IsNullOrEmpty(s.Name))?.LookupNames.First() ?? string.Empty; - - int volume = samples.FirstOrDefault()?.Volume ?? 100; - StringBuilder sb = new StringBuilder(); sb.Append(FormattableString.Invariant($"{(zeroBanks ? 0 : (int)normalBank)}:")); @@ -337,6 +332,10 @@ namespace osu.Game.Beatmaps.Formats if (!banksOnly) { + string customSampleBank = toLegacyCustomSampleBank(samples.FirstOrDefault()?.Suffix); + string sampleFilename = samples.FirstOrDefault(s => string.IsNullOrEmpty(s.Name))?.LookupNames.First() ?? string.Empty; + int volume = samples.FirstOrDefault()?.Volume ?? 100; + sb.Append(":"); sb.Append(FormattableString.Invariant($"{customSampleBank}:")); sb.Append(FormattableString.Invariant($"{volume}:")); From 27150d6bbc484c14fd1466e3751c64149c35c53a Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 16 Dec 2019 17:06:52 +0900 Subject: [PATCH 0369/1829] Use char concatenation for performance --- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index 9e643857f1..65edd356d7 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -63,11 +63,11 @@ namespace osu.Game.Beatmaps.Formats writer.WriteLine(FormattableString.Invariant($"AudioLeadIn: {beatmap.BeatmapInfo.AudioLeadIn}")); writer.WriteLine(FormattableString.Invariant($"PreviewTime: {beatmap.Metadata.PreviewTime}")); // Todo: Not all countdown types are supported by lazer yet - writer.WriteLine(FormattableString.Invariant($"Countdown: {(beatmap.BeatmapInfo.Countdown ? "1" : "0")}")); + writer.WriteLine(FormattableString.Invariant($"Countdown: {(beatmap.BeatmapInfo.Countdown ? '1' : '0')}")); writer.WriteLine(FormattableString.Invariant($"SampleSet: {toLegacySampleBank(beatmap.ControlPointInfo.SamplePoints[0].SampleBank)}")); writer.WriteLine(FormattableString.Invariant($"StackLeniency: {beatmap.BeatmapInfo.StackLeniency}")); writer.WriteLine(FormattableString.Invariant($"Mode: {beatmap.BeatmapInfo.RulesetID}")); - writer.WriteLine(FormattableString.Invariant($"LetterboxInBreaks: {(beatmap.BeatmapInfo.LetterboxInBreaks ? "1" : "0")}")); + writer.WriteLine(FormattableString.Invariant($"LetterboxInBreaks: {(beatmap.BeatmapInfo.LetterboxInBreaks ? '1' : '0')}")); // if (beatmap.BeatmapInfo.UseSkinSprites) // writer.WriteLine(@"UseSkinSprites: 1"); // if (b.AlwaysShowPlayfield) @@ -81,8 +81,8 @@ namespace osu.Game.Beatmaps.Formats // if (b.CountdownOffset > 0) // writer.WriteLine(@"CountdownOffset: " + b.CountdownOffset.ToString()); if (beatmap.BeatmapInfo.RulesetID == 3) - writer.WriteLine(FormattableString.Invariant($"SpecialStyle: {(beatmap.BeatmapInfo.SpecialStyle ? "1" : "0")}")); - writer.WriteLine(FormattableString.Invariant($"WidescreenStoryboard: {(beatmap.BeatmapInfo.WidescreenStoryboard ? "1" : "0")}")); + writer.WriteLine(FormattableString.Invariant($"SpecialStyle: {(beatmap.BeatmapInfo.SpecialStyle ? '1' : '0')}")); + writer.WriteLine(FormattableString.Invariant($"WidescreenStoryboard: {(beatmap.BeatmapInfo.WidescreenStoryboard ? '1' : '0')}")); // if (b.SamplesMatchPlaybackRate) // writer.WriteLine(@"SamplesMatchPlaybackRate: 1"); } @@ -178,7 +178,7 @@ namespace osu.Game.Beatmaps.Formats writer.Write(FormattableString.Invariant($"{(int)toLegacySampleBank(tempHitSample.Bank)},")); writer.Write(FormattableString.Invariant($"{toLegacyCustomSampleBank(tempHitSample.Suffix)},")); writer.Write(FormattableString.Invariant($"{tempHitSample.Volume},")); - writer.Write(FormattableString.Invariant($"{(timingPoint != null ? "1" : "0")},")); + writer.Write(FormattableString.Invariant($"{(timingPoint != null ? '1' : '0')},")); writer.Write(FormattableString.Invariant($"{(int)effectFlags}")); writer.Write("\n"); } From 5278236458c82cd6b0a0be6a207dbc3ce689af88 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 16 Dec 2019 17:07:30 +0900 Subject: [PATCH 0370/1829] Use invariant ToLower() --- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index 65edd356d7..d55adfa756 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -372,7 +372,7 @@ namespace osu.Game.Beatmaps.Formats private LegacySampleBank toLegacySampleBank(string sampleBank) { - switch (sampleBank?.ToLower()) + switch (sampleBank?.ToLowerInvariant()) { case "normal": return LegacySampleBank.Normal; From 3c9884456f0111afb9e71c3ebeeb0860aaa31fae Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 16 Dec 2019 17:08:46 +0900 Subject: [PATCH 0371/1829] Use writeline --- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index d55adfa756..139be3ce2f 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -180,7 +180,7 @@ namespace osu.Game.Beatmaps.Formats writer.Write(FormattableString.Invariant($"{tempHitSample.Volume},")); writer.Write(FormattableString.Invariant($"{(timingPoint != null ? '1' : '0')},")); writer.Write(FormattableString.Invariant($"{(int)effectFlags}")); - writer.Write("\n"); + writer.WriteLine(); } } @@ -311,7 +311,7 @@ namespace osu.Game.Beatmaps.Formats ? getSampleBank(hitObject.Samples, zeroBanks: true) : getSampleBank(hitObject.Samples)); - writer.Write(Environment.NewLine); + writer.WriteLine(); } private void handleTaikoHitObject(TextWriter writer, HitObject hitObject) => throw new NotImplementedException(); From be7b00cc34e64d66b69550f0496f4c948dc62d5d Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 16 Dec 2019 17:12:31 +0900 Subject: [PATCH 0372/1829] Fix potentially incorrect custom sample bank --- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index 139be3ce2f..d38ff482ad 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -332,7 +332,7 @@ namespace osu.Game.Beatmaps.Formats if (!banksOnly) { - string customSampleBank = toLegacyCustomSampleBank(samples.FirstOrDefault()?.Suffix); + string customSampleBank = toLegacyCustomSampleBank(samples.FirstOrDefault(s => !string.IsNullOrEmpty(s.Name))?.Suffix); string sampleFilename = samples.FirstOrDefault(s => string.IsNullOrEmpty(s.Name))?.LookupNames.First() ?? string.Empty; int volume = samples.FirstOrDefault()?.Volume ?? 100; From add04e98e18d734e84fd88a1aad35fe71a5c90ba Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 16 Dec 2019 18:10:44 +0900 Subject: [PATCH 0373/1829] Fix cursortrail texture not being bound --- osu.Game.Rulesets.Osu/UI/Cursor/CursorTrail.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game.Rulesets.Osu/UI/Cursor/CursorTrail.cs b/osu.Game.Rulesets.Osu/UI/Cursor/CursorTrail.cs index 4d6db83d7a..4e86662ec6 100644 --- a/osu.Game.Rulesets.Osu/UI/Cursor/CursorTrail.cs +++ b/osu.Game.Rulesets.Osu/UI/Cursor/CursorTrail.cs @@ -227,6 +227,8 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor shader.Bind(); shader.GetUniform("g_FadeClock").UpdateValue(ref time); + texture.TextureGL.Bind(); + RectangleF textureRect = texture.GetTextureRect(); foreach (var part in parts) From 9de6b62fb136e7b7705858970b3b15c818e353de Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 16 Dec 2019 18:24:29 +0900 Subject: [PATCH 0374/1829] Fix nightcore beat not playing if song doesn't hit beat index 0 --- osu.Game/Rulesets/Mods/ModNightcore.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModNightcore.cs b/osu.Game/Rulesets/Mods/ModNightcore.cs index 1374c385cc..4d11b9de1d 100644 --- a/osu.Game/Rulesets/Mods/ModNightcore.cs +++ b/osu.Game/Rulesets/Mods/ModNightcore.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 osu.Framework.Allocation; using osu.Framework.Audio; using osu.Framework.Audio.Track; @@ -55,7 +56,8 @@ namespace osu.Game.Rulesets.Mods private SkinnableSound clapSample; private SkinnableSound kickSample; private SkinnableSound finishSample; - private bool started; + + private int? firstBeat; [BackgroundDependencyLoader] private void load() @@ -73,10 +75,10 @@ namespace osu.Game.Rulesets.Mods { base.OnNewBeat(beatIndex, timingPoint, effectPoint, amplitudes); - if (!started && beatIndex == 0) - started = true; + if (beatIndex < firstBeat || !firstBeat.HasValue) + firstBeat = Math.Max(0, beatIndex / 16 * 16); - if (started && beatIndex > -1) + if (beatIndex > firstBeat) { if (beatIndex % 16 == 0) finishSample?.Play(); From 83f77d9c3510cd4c68f1574c2a90993d04932779 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 16 Dec 2019 18:41:02 +0900 Subject: [PATCH 0375/1829] Make the layout faster --- osu.Game/Screens/Play/HUDOverlay.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game/Screens/Play/HUDOverlay.cs b/osu.Game/Screens/Play/HUDOverlay.cs index dc32fc7cd5..840c1d37e3 100644 --- a/osu.Game/Screens/Play/HUDOverlay.cs +++ b/osu.Game/Screens/Play/HUDOverlay.cs @@ -24,7 +24,7 @@ namespace osu.Game.Screens.Play { public class HUDOverlay : Container { - private const int fade_duration = 400; + private const float fade_duration = 400; private const Easing fade_easing = Easing.Out; public readonly KeyCounterDisplay KeyCounter; @@ -103,8 +103,8 @@ namespace osu.Game.Screens.Play Origin = Anchor.BottomRight, Position = -new Vector2(5, TwoLayerButton.SIZE_RETRACTED.Y), AutoSizeAxes = Axes.Both, - AutoSizeDuration = fade_duration, - AutoSizeEasing = fade_easing, + LayoutDuration = fade_duration / 2, + LayoutEasing = fade_easing, Direction = FillDirection.Vertical, Children = new Drawable[] { From a276643a4bcc8a2a6d376ec43fee0ce816cddea2 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 16 Dec 2019 18:41:14 +0900 Subject: [PATCH 0376/1829] Reorder health display and score elements --- osu.Game/Screens/Play/HUDOverlay.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Play/HUDOverlay.cs b/osu.Game/Screens/Play/HUDOverlay.cs index 840c1d37e3..e2f362780d 100644 --- a/osu.Game/Screens/Play/HUDOverlay.cs +++ b/osu.Game/Screens/Play/HUDOverlay.cs @@ -78,6 +78,7 @@ namespace osu.Game.Screens.Play RelativeSizeAxes = Axes.Both, Children = new Drawable[] { + HealthDisplay = CreateHealthDisplay(), topScoreContainer = new Container { Anchor = Anchor.TopCentre, @@ -90,7 +91,6 @@ namespace osu.Game.Screens.Play ComboCounter = CreateComboCounter(), }, }, - HealthDisplay = CreateHealthDisplay(), Progress = CreateProgress(), ModDisplay = CreateModsContainer(), HitErrorDisplay = CreateHitErrorDisplayOverlay(), From 3e0fda58ea59e10d6fac5ce75d70afc769478bd1 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 16 Dec 2019 18:47:06 +0900 Subject: [PATCH 0377/1829] Play finish in addition to kick, not isolated --- osu.Game/Rulesets/Mods/ModNightcore.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Mods/ModNightcore.cs b/osu.Game/Rulesets/Mods/ModNightcore.cs index 4d11b9de1d..f4599ed88a 100644 --- a/osu.Game/Rulesets/Mods/ModNightcore.cs +++ b/osu.Game/Rulesets/Mods/ModNightcore.cs @@ -82,7 +82,8 @@ namespace osu.Game.Rulesets.Mods { if (beatIndex % 16 == 0) finishSample?.Play(); - else if (beatIndex % 2 == 0) + + if (beatIndex % 2 == 0) kickSample?.Play(); else if (beatIndex % 2 == 1) clapSample?.Play(); From c883c97bab8e81a3bd67db0ef5d4c7110b5d3161 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 16 Dec 2019 18:50:58 +0900 Subject: [PATCH 0378/1829] Fix off-by-one starting bar --- osu.Game/Rulesets/Mods/ModNightcore.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Mods/ModNightcore.cs b/osu.Game/Rulesets/Mods/ModNightcore.cs index f4599ed88a..1c46b82f79 100644 --- a/osu.Game/Rulesets/Mods/ModNightcore.cs +++ b/osu.Game/Rulesets/Mods/ModNightcore.cs @@ -76,7 +76,7 @@ namespace osu.Game.Rulesets.Mods base.OnNewBeat(beatIndex, timingPoint, effectPoint, amplitudes); if (beatIndex < firstBeat || !firstBeat.HasValue) - firstBeat = Math.Max(0, beatIndex / 16 * 16); + firstBeat = Math.Max(0, (beatIndex / 16 + 1) * 16); if (beatIndex > firstBeat) { From 0f9ff32cdc8ee2528024e2c8a3dbf545af5916d5 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 16 Dec 2019 18:51:22 +0900 Subject: [PATCH 0379/1829] Fix beat playing while paused --- osu.Game/Graphics/Containers/BeatSyncedContainer.cs | 8 ++++++++ osu.Game/Rulesets/Mods/ModNightcore.cs | 8 +++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/osu.Game/Graphics/Containers/BeatSyncedContainer.cs b/osu.Game/Graphics/Containers/BeatSyncedContainer.cs index 2e76ab964f..1374b34aca 100644 --- a/osu.Game/Graphics/Containers/BeatSyncedContainer.cs +++ b/osu.Game/Graphics/Containers/BeatSyncedContainer.cs @@ -42,6 +42,8 @@ namespace osu.Game.Graphics.Containers private EffectControlPoint defaultEffect; private TrackAmplitudes defaultAmplitudes; + protected bool IsBeatSyncedWithTrack { get; private set; } + protected override void Update() { Track track = null; @@ -65,10 +67,16 @@ namespace osu.Game.Graphics.Containers effectPoint = beatmap.ControlPointInfo.EffectPointAt(currentTrackTime); if (timingPoint.BeatLength == 0) + { + IsBeatSyncedWithTrack = false; return; + } + + IsBeatSyncedWithTrack = true; } else { + IsBeatSyncedWithTrack = false; currentTrackTime = Clock.CurrentTime; timingPoint = defaultTiming; effectPoint = defaultEffect; diff --git a/osu.Game/Rulesets/Mods/ModNightcore.cs b/osu.Game/Rulesets/Mods/ModNightcore.cs index 1c46b82f79..f1f25f70e6 100644 --- a/osu.Game/Rulesets/Mods/ModNightcore.cs +++ b/osu.Game/Rulesets/Mods/ModNightcore.cs @@ -75,7 +75,13 @@ namespace osu.Game.Rulesets.Mods { base.OnNewBeat(beatIndex, timingPoint, effectPoint, amplitudes); - if (beatIndex < firstBeat || !firstBeat.HasValue) + if (!IsBeatSyncedWithTrack) + { + firstBeat = null; + return; + } + + if (!firstBeat.HasValue || beatIndex < firstBeat) firstBeat = Math.Max(0, (beatIndex / 16 + 1) * 16); if (beatIndex > firstBeat) From 210fecc95188b72cfc1d988fc48936872161ccf8 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 16 Dec 2019 18:57:11 +0900 Subject: [PATCH 0380/1829] Fix incorrect hat logic; add support for first barline omission --- osu.Game/Rulesets/Mods/ModNightcore.cs | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModNightcore.cs b/osu.Game/Rulesets/Mods/ModNightcore.cs index f1f25f70e6..830cb87822 100644 --- a/osu.Game/Rulesets/Mods/ModNightcore.cs +++ b/osu.Game/Rulesets/Mods/ModNightcore.cs @@ -84,17 +84,25 @@ namespace osu.Game.Rulesets.Mods if (!firstBeat.HasValue || beatIndex < firstBeat) firstBeat = Math.Max(0, (beatIndex / 16 + 1) * 16); - if (beatIndex > firstBeat) + if (beatIndex >= firstBeat) { - if (beatIndex % 16 == 0) + if (beatIndex % 16 == 0 && (beatIndex > firstBeat || !effectPoint.OmitFirstBarLine)) finishSample?.Play(); - if (beatIndex % 2 == 0) - kickSample?.Play(); - else if (beatIndex % 2 == 1) - clapSample?.Play(); - else - hatSample?.Play(); + switch (beatIndex % (int)timingPoint.TimeSignature) + { + case 0: + kickSample?.Play(); + break; + + case 2: + clapSample?.Play(); + break; + + default: + hatSample?.Play(); + break; + } } } } From 72404bff9a7d24466bdc5ef761b44de981f119b2 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 16 Dec 2019 19:16:54 +0900 Subject: [PATCH 0381/1829] Add support for simple triple time --- .../Containers/BeatSyncedContainer.cs | 15 +++-- osu.Game/Rulesets/Mods/ModNightcore.cs | 55 +++++++++++++++---- 2 files changed, 56 insertions(+), 14 deletions(-) diff --git a/osu.Game/Graphics/Containers/BeatSyncedContainer.cs b/osu.Game/Graphics/Containers/BeatSyncedContainer.cs index 1374b34aca..a68e536a18 100644 --- a/osu.Game/Graphics/Containers/BeatSyncedContainer.cs +++ b/osu.Game/Graphics/Containers/BeatSyncedContainer.cs @@ -33,6 +33,11 @@ namespace osu.Game.Graphics.Containers /// public double TimeSinceLastBeat { get; private set; } + /// + /// How many baets per beatlength to trigger. Defaults to 1. + /// + public int Divisor { get; set; } = 1; + /// /// Default length of a beat in milliseconds. Used whenever there is no beatmap or track playing. /// @@ -82,17 +87,19 @@ namespace osu.Game.Graphics.Containers effectPoint = defaultEffect; } - int beatIndex = (int)((currentTrackTime - timingPoint.Time) / timingPoint.BeatLength); + double beatLength = timingPoint.BeatLength / Divisor; + + int beatIndex = (int)((currentTrackTime - timingPoint.Time) / beatLength); // The beats before the start of the first control point are off by 1, this should do the trick if (currentTrackTime < timingPoint.Time) beatIndex--; - TimeUntilNextBeat = (timingPoint.Time - currentTrackTime) % timingPoint.BeatLength; + TimeUntilNextBeat = (timingPoint.Time - currentTrackTime) % beatLength; if (TimeUntilNextBeat < 0) - TimeUntilNextBeat += timingPoint.BeatLength; + TimeUntilNextBeat += beatLength; - TimeSinceLastBeat = timingPoint.BeatLength - TimeUntilNextBeat; + TimeSinceLastBeat = beatLength - TimeUntilNextBeat; if (timingPoint.Equals(lastTimingPoint) && beatIndex == lastBeat) return; diff --git a/osu.Game/Rulesets/Mods/ModNightcore.cs b/osu.Game/Rulesets/Mods/ModNightcore.cs index 830cb87822..16ed3a5e31 100644 --- a/osu.Game/Rulesets/Mods/ModNightcore.cs +++ b/osu.Game/Rulesets/Mods/ModNightcore.cs @@ -10,6 +10,7 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; using osu.Game.Audio; using osu.Game.Beatmaps.ControlPoints; +using osu.Game.Beatmaps.Timing; using osu.Game.Graphics; using osu.Game.Graphics.Containers; using osu.Game.Rulesets.Objects; @@ -59,6 +60,11 @@ namespace osu.Game.Rulesets.Mods private int? firstBeat; + public NightcoreBeatContainer() + { + Divisor = 2; + } + [BackgroundDependencyLoader] private void load() { @@ -71,10 +77,15 @@ namespace osu.Game.Rulesets.Mods }; } + private const int segment_bar_length = 4; + protected override void OnNewBeat(int beatIndex, TimingControlPoint timingPoint, EffectControlPoint effectPoint, TrackAmplitudes amplitudes) { base.OnNewBeat(beatIndex, timingPoint, effectPoint, amplitudes); + int beatsPerBar = (int)timingPoint.TimeSignature; + int segmentLength = beatsPerBar * Divisor * segment_bar_length; + if (!IsBeatSyncedWithTrack) { firstBeat = null; @@ -82,25 +93,49 @@ namespace osu.Game.Rulesets.Mods } if (!firstBeat.HasValue || beatIndex < firstBeat) - firstBeat = Math.Max(0, (beatIndex / 16 + 1) * 16); + firstBeat = Math.Max(0, (beatIndex / segmentLength + 1) * segmentLength); if (beatIndex >= firstBeat) { - if (beatIndex % 16 == 0 && (beatIndex > firstBeat || !effectPoint.OmitFirstBarLine)) + if (beatIndex % segmentLength == 0 && (beatIndex > firstBeat || !effectPoint.OmitFirstBarLine)) finishSample?.Play(); - switch (beatIndex % (int)timingPoint.TimeSignature) + switch (timingPoint.TimeSignature) { - case 0: - kickSample?.Play(); + case TimeSignatures.SimpleTriple: + switch (beatIndex % 6) + { + case 0: + kickSample?.Play(); + break; + + case 3: + clapSample?.Play(); + break; + + default: + hatSample?.Play(); + break; + } + break; - case 2: - clapSample?.Play(); - break; + case TimeSignatures.SimpleQuadruple: + switch (beatIndex % 4) + { + case 0: + kickSample?.Play(); + break; + + case 2: + clapSample?.Play(); + break; + + default: + hatSample?.Play(); + break; + } - default: - hatSample?.Play(); break; } } From cfd811112061663c00edf15096273da32a1f5102 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 16 Dec 2019 19:40:43 +0900 Subject: [PATCH 0382/1829] Better initial beat handling --- osu.Game/Rulesets/Mods/ModNightcore.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModNightcore.cs b/osu.Game/Rulesets/Mods/ModNightcore.cs index 16ed3a5e31..abbeca3150 100644 --- a/osu.Game/Rulesets/Mods/ModNightcore.cs +++ b/osu.Game/Rulesets/Mods/ModNightcore.cs @@ -1,7 +1,6 @@ // 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 osu.Framework.Allocation; using osu.Framework.Audio; using osu.Framework.Audio.Track; @@ -93,7 +92,7 @@ namespace osu.Game.Rulesets.Mods } if (!firstBeat.HasValue || beatIndex < firstBeat) - firstBeat = Math.Max(0, (beatIndex / segmentLength + 1) * segmentLength); + firstBeat = beatIndex < 0 ? 0 : (beatIndex / segmentLength + 1) * segmentLength; if (beatIndex >= firstBeat) { From 7d979e12649ef7ea4346a7c535ebd2ace3202f14 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 16 Dec 2019 19:41:04 +0900 Subject: [PATCH 0383/1829] Add finalised test scene --- .../TestSceneNightcoreBeatContainer.cs | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 osu.Game.Tests/Visual/Gameplay/TestSceneNightcoreBeatContainer.cs diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneNightcoreBeatContainer.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneNightcoreBeatContainer.cs new file mode 100644 index 0000000000..3473b03eaf --- /dev/null +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneNightcoreBeatContainer.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 System; +using System.Collections.Generic; +using System.Linq; +using osu.Framework.Extensions.IEnumerableExtensions; +using osu.Game.Beatmaps.Timing; +using osu.Game.Rulesets.Mods; +using osu.Game.Rulesets.Objects; +using osu.Game.Rulesets.Osu; +using osu.Game.Tests.Visual.UserInterface; + +namespace osu.Game.Tests.Visual.Gameplay +{ + public class TestSceneNightcoreBeatContainer : TestSceneBeatSyncedContainer + { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(ModNightcore<>) + }; + + protected override void LoadComplete() + { + base.LoadComplete(); + + Beatmap.Value = CreateWorkingBeatmap(new OsuRuleset().RulesetInfo); + + Beatmap.Value.Track.Start(); + Beatmap.Value.Track.Seek(Beatmap.Value.Beatmap.HitObjects.First().StartTime - 1000); + + Add(new ModNightcore.NightcoreBeatContainer()); + + AddStep("change signature to quadruple", () => Beatmap.Value.Beatmap.ControlPointInfo.TimingPoints.ForEach(p => p.TimeSignature = TimeSignatures.SimpleQuadruple)); + AddStep("change signature to triple", () => Beatmap.Value.Beatmap.ControlPointInfo.TimingPoints.ForEach(p => p.TimeSignature = TimeSignatures.SimpleTriple)); + } + } +} From 438d97f4f56ac84058745dafd809b5fa9198ab18 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 16 Dec 2019 19:42:28 +0900 Subject: [PATCH 0384/1829] Rename variable for clarity --- osu.Game/Rulesets/Mods/ModNightcore.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModNightcore.cs b/osu.Game/Rulesets/Mods/ModNightcore.cs index abbeca3150..16902cc792 100644 --- a/osu.Game/Rulesets/Mods/ModNightcore.cs +++ b/osu.Game/Rulesets/Mods/ModNightcore.cs @@ -76,14 +76,14 @@ namespace osu.Game.Rulesets.Mods }; } - private const int segment_bar_length = 4; + private const int bars_per_segment = 4; protected override void OnNewBeat(int beatIndex, TimingControlPoint timingPoint, EffectControlPoint effectPoint, TrackAmplitudes amplitudes) { base.OnNewBeat(beatIndex, timingPoint, effectPoint, amplitudes); int beatsPerBar = (int)timingPoint.TimeSignature; - int segmentLength = beatsPerBar * Divisor * segment_bar_length; + int segmentLength = beatsPerBar * Divisor * bars_per_segment; if (!IsBeatSyncedWithTrack) { From 795416c066437f9b5f1cc44898c68c429b2059ea Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 17 Dec 2019 12:06:09 +0900 Subject: [PATCH 0385/1829] Move first beat offset to BeatSyncedContainer --- osu.Game/Graphics/Containers/BeatSyncedContainer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Graphics/Containers/BeatSyncedContainer.cs b/osu.Game/Graphics/Containers/BeatSyncedContainer.cs index a68e536a18..b04d01004a 100644 --- a/osu.Game/Graphics/Containers/BeatSyncedContainer.cs +++ b/osu.Game/Graphics/Containers/BeatSyncedContainer.cs @@ -89,7 +89,7 @@ namespace osu.Game.Graphics.Containers double beatLength = timingPoint.BeatLength / Divisor; - int beatIndex = (int)((currentTrackTime - timingPoint.Time) / beatLength); + int beatIndex = (int)((currentTrackTime - timingPoint.Time) / beatLength) - (effectPoint.OmitFirstBarLine ? 1 : 0); // The beats before the start of the first control point are off by 1, this should do the trick if (currentTrackTime < timingPoint.Time) From 87035f8251965b81d5a5ecb572a6fd803fd97837 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 17 Dec 2019 12:12:15 +0900 Subject: [PATCH 0386/1829] Simplify complex method --- osu.Game/Rulesets/Mods/ModNightcore.cs | 72 ++++++++++++++------------ 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModNightcore.cs b/osu.Game/Rulesets/Mods/ModNightcore.cs index 16902cc792..a8c79bb896 100644 --- a/osu.Game/Rulesets/Mods/ModNightcore.cs +++ b/osu.Game/Rulesets/Mods/ModNightcore.cs @@ -92,51 +92,55 @@ namespace osu.Game.Rulesets.Mods } if (!firstBeat.HasValue || beatIndex < firstBeat) + // decide on a good starting beat index if once has not yet been decided. firstBeat = beatIndex < 0 ? 0 : (beatIndex / segmentLength + 1) * segmentLength; if (beatIndex >= firstBeat) + playBeatFor(beatIndex % segmentLength, timingPoint.TimeSignature); + } + + private void playBeatFor(int beatIndex, TimeSignatures signature) + { + if (beatIndex == 0) + finishSample?.Play(); + + switch (signature) { - if (beatIndex % segmentLength == 0 && (beatIndex > firstBeat || !effectPoint.OmitFirstBarLine)) - finishSample?.Play(); + case TimeSignatures.SimpleTriple: + switch (beatIndex % 6) + { + case 0: + kickSample?.Play(); + break; - switch (timingPoint.TimeSignature) - { - case TimeSignatures.SimpleTriple: - switch (beatIndex % 6) - { - case 0: - kickSample?.Play(); - break; + case 3: + clapSample?.Play(); + break; - case 3: - clapSample?.Play(); - break; + default: + hatSample?.Play(); + break; + } - default: - hatSample?.Play(); - break; - } + break; - break; + case TimeSignatures.SimpleQuadruple: + switch (beatIndex % 4) + { + case 0: + kickSample?.Play(); + break; - case TimeSignatures.SimpleQuadruple: - switch (beatIndex % 4) - { - case 0: - kickSample?.Play(); - break; + case 2: + clapSample?.Play(); + break; - case 2: - clapSample?.Play(); - break; + default: + hatSample?.Play(); + break; + } - default: - hatSample?.Play(); - break; - } - - break; - } + break; } } } From a85653ebec2607ca2675a1b106ebcd814c75fa66 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 17 Dec 2019 12:24:59 +0900 Subject: [PATCH 0387/1829] Add comment --- osu.Game/Graphics/Containers/OsuScrollContainer.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game/Graphics/Containers/OsuScrollContainer.cs b/osu.Game/Graphics/Containers/OsuScrollContainer.cs index df4c3a3324..ab72276ad0 100644 --- a/osu.Game/Graphics/Containers/OsuScrollContainer.cs +++ b/osu.Game/Graphics/Containers/OsuScrollContainer.cs @@ -85,6 +85,8 @@ namespace osu.Game.Graphics.Containers protected override bool OnScroll(ScrollEvent e) { + // allow for controlling volume when alt is held. + // mostly for compatibility with osu-stable. if (e.AltPressed) return false; return base.OnScroll(e); From bef9637fdf8806f302185fbbc3545c7b85cf0936 Mon Sep 17 00:00:00 2001 From: Willy Tu Date: Mon, 16 Dec 2019 19:25:28 -0800 Subject: [PATCH 0388/1829] Implemented delete local score individually. Currently does not refresh the score screen after the delete is compelete. --- osu.Game/Online/Leaderboards/Leaderboard.cs | 9 +++-- .../Online/Leaderboards/LeaderboardScore.cs | 34 +++++++------------ .../Select/BeatmapClearScoresDialog.cs | 26 ++++++++++++++ .../Select/Leaderboards/BeatmapLeaderboard.cs | 12 ++++--- 4 files changed, 53 insertions(+), 28 deletions(-) diff --git a/osu.Game/Online/Leaderboards/Leaderboard.cs b/osu.Game/Online/Leaderboards/Leaderboard.cs index 94c50185da..0e2864e88c 100644 --- a/osu.Game/Online/Leaderboards/Leaderboard.cs +++ b/osu.Game/Online/Leaderboards/Leaderboard.cs @@ -12,6 +12,7 @@ using osu.Framework.Graphics.Colour; using osu.Framework.Graphics.Containers; using osu.Framework.Threading; using osu.Game.Graphics.Containers; +using osu.Game.Graphics.Cursor; using osu.Game.Graphics.UserInterface; using osu.Game.Online.API; using osuTK; @@ -180,10 +181,14 @@ namespace osu.Game.Online.Leaderboards { new Drawable[] { - scrollContainer = new OsuScrollContainer + new OsuContextMenuContainer { RelativeSizeAxes = Axes.Both, - ScrollbarVisible = false, + Child = scrollContainer = new OsuScrollContainer + { + RelativeSizeAxes = Axes.Both, + ScrollbarVisible = false, + } } }, new Drawable[] diff --git a/osu.Game/Online/Leaderboards/LeaderboardScore.cs b/osu.Game/Online/Leaderboards/LeaderboardScore.cs index c4bc306f05..3e5096b051 100644 --- a/osu.Game/Online/Leaderboards/LeaderboardScore.cs +++ b/osu.Game/Online/Leaderboards/LeaderboardScore.cs @@ -14,11 +14,12 @@ using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.UserInterface; using osu.Framework.Input.Events; using osu.Game.Graphics; -using osu.Game.Graphics.Cursor; using osu.Game.Graphics.Containers; using osu.Game.Graphics.Sprites; using osu.Game.Graphics.UserInterface; +using osu.Game.Overlays; using osu.Game.Rulesets.UI; +using osu.Game.Screens.Select; using osu.Game.Scoring; using osu.Game.Users.Drawables; using osuTK; @@ -28,7 +29,7 @@ using osu.Game.Online.API; namespace osu.Game.Online.Leaderboards { - public class LeaderboardScore : OsuClickableContainer + public class LeaderboardScore : OsuClickableContainer, IHasContextMenu { public const float HEIGHT = 60; @@ -53,6 +54,8 @@ namespace osu.Game.Online.Leaderboards private FillFlowContainer modsContainer; private List statisticsLabels; + + private DialogOverlay dialogOverlay; public LeaderboardScore(ScoreInfo score, int rank, bool allowHighlight = true) { @@ -65,9 +68,10 @@ namespace osu.Game.Online.Leaderboards } [BackgroundDependencyLoader] - private void load(IAPIProvider api, OsuColour colour) + private void load(IAPIProvider api, OsuColour colour, DialogOverlay overlay) { var user = score.User; + dialogOverlay = overlay; statisticsLabels = GetStatistics(score).Select(s => new ScoreComponentLabel(s)).ToList(); @@ -230,28 +234,9 @@ namespace osu.Game.Online.Leaderboards }, }; - Add( - new OsuContextMenuContainer - { - RelativeSizeAxes = Axes.Both, - Children = new Drawable[] { - new ContextMenuArea{ - RelativeSizeAxes = Axes.Both - } - } - } - ); - innerAvatar.OnLoadComplete += d => d.FadeInFromZero(200); } - private class ContextMenuArea : Drawable, IHasContextMenu - { - public MenuItem[] ContextMenuItems => new MenuItem[] - { - new OsuMenuItem("Delete", MenuItemType.Destructive), - }; - } public override void Show() { foreach (var d in new[] { avatar, nameLabel, scoreLabel, scoreRank, flagBadgeContainer, modsContainer }.Concat(statisticsLabels)) @@ -381,5 +366,10 @@ namespace osu.Game.Online.Leaderboards Value = value; } } + + public MenuItem[] ContextMenuItems => new MenuItem[] + { + new OsuMenuItem("Delete", MenuItemType.Destructive, () => dialogOverlay?.Push(new BeatmapClearScoresDialog(this.score, null))) + }; } } diff --git a/osu.Game/Screens/Select/BeatmapClearScoresDialog.cs b/osu.Game/Screens/Select/BeatmapClearScoresDialog.cs index c9b6ca7bb3..b4889bfffc 100644 --- a/osu.Game/Screens/Select/BeatmapClearScoresDialog.cs +++ b/osu.Game/Screens/Select/BeatmapClearScoresDialog.cs @@ -39,6 +39,32 @@ namespace osu.Game.Screens.Select }; } + public BeatmapClearScoresDialog(ScoreInfo score, Action onCompletion) + { + string accuracy = string.Format(score?.Accuracy % 1 == 0 ? @"{0:P0}" : @"{0:P2}", score?.Accuracy); + + BodyText = $@"{score?.Beatmap?.Metadata?.Artist} - {score?.Beatmap?.Metadata?.Title} {Environment.NewLine} {score?.User} - Rank: {score?.Rank} - Max Combo: {score?.MaxCombo} - {accuracy} - {score?.Date.Date.ToShortDateString()}"; + + Icon = FontAwesome.Solid.Eraser; + HeaderText = @"Clearing this local score. Are you sure?"; + Buttons = new PopupDialogButton[] + { + new PopupDialogOkButton + { + Text = @"Yes. Please.", + Action = () => + { + Task.Run(() => scoreManager.Delete(score)) + .ContinueWith(_ => onCompletion); + } + }, + new PopupDialogCancelButton + { + Text = @"No, I'm still attached.", + }, + }; + } + [BackgroundDependencyLoader] private void load(ScoreManager scoreManager) { diff --git a/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs b/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs index 1b45a9d270..d609ee3bdc 100644 --- a/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs +++ b/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs @@ -182,9 +182,13 @@ namespace osu.Game.Screens.Select.Leaderboards return req; } - protected override LeaderboardScore CreateDrawableScore(ScoreInfo model, int index) => new LeaderboardScore(model, index, IsOnlineScope) - { - Action = () => ScoreSelected?.Invoke(model) - }; + protected override LeaderboardScore CreateDrawableScore(ScoreInfo model, int index){ + model.Beatmap = beatmap; + + return new LeaderboardScore(model, index, IsOnlineScope) + { + Action = () => ScoreSelected?.Invoke(model) + }; + } } } From f8ffa676931ebdc01946520c5cf5072ac7caf2f2 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 17 Dec 2019 13:21:23 +0900 Subject: [PATCH 0389/1829] Add test and isolate ignore bindable from EnableUserDim --- .../Visual/Background/TestSceneUserDimContainer.cs | 14 ++++++++++++++ osu.Game/Graphics/Containers/UserDimContainer.cs | 12 ++---------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs index 472c43096f..d5d4c7e5ec 100644 --- a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs +++ b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs @@ -88,6 +88,20 @@ namespace osu.Game.Tests.Visual.Background AddUntilStep("not lightened", () => userDimContainer.DimEqual(test_user_dim)); } + [Test] + public void TestIgnoreUserSettings() + { + AddStep("set dim level 0.6", () => userDimContainer.UserDimLevel.Value = test_user_dim); + AddUntilStep("dim reached", () => userDimContainer.DimEqual(test_user_dim)); + + AddStep($"ignore settings", () => userDimContainer.IgnoreUserSettings.Value = true); + AddUntilStep("no dim", () => userDimContainer.DimEqual(0)); + AddStep("set break", () => isBreakTime.Value = true); + AddAssert("no dim", () => userDimContainer.DimEqual(0)); + AddStep("clear break", () => isBreakTime.Value = false); + AddAssert("no dim", () => userDimContainer.DimEqual(0)); + } + private class TestUserDimContainer : UserDimContainer { public bool DimEqual(float expectedDimLevel) => Content.Colour == OsuColour.Gray(1f - expectedDimLevel); diff --git a/osu.Game/Graphics/Containers/UserDimContainer.cs b/osu.Game/Graphics/Containers/UserDimContainer.cs index e44e7a0d57..65c104b92f 100644 --- a/osu.Game/Graphics/Containers/UserDimContainer.cs +++ b/osu.Game/Graphics/Containers/UserDimContainer.cs @@ -59,7 +59,7 @@ namespace osu.Game.Graphics.Containers private float breakLightening => LightenDuringBreaks.Value && IsBreakTime.Value ? BREAK_LIGHTEN_AMOUNT : 0; - protected float DimLevel => Math.Max(EnableUserDim.Value ? (float)UserDimLevel.Value - breakLightening : 0, 0); + protected float DimLevel => Math.Max(EnableUserDim.Value && !IgnoreUserSettings.Value ? (float)UserDimLevel.Value - breakLightening : 0, 0); protected override Container Content => dimContent; @@ -88,7 +88,7 @@ namespace osu.Game.Graphics.Containers ShowStoryboard.ValueChanged += _ => UpdateVisuals(); ShowVideo.ValueChanged += _ => UpdateVisuals(); StoryboardReplacesBackground.ValueChanged += _ => UpdateVisuals(); - IgnoreUserSettings.ValueChanged += _ => updateSettings(); + IgnoreUserSettings.ValueChanged += _ => UpdateVisuals(); } protected override void LoadComplete() @@ -112,13 +112,5 @@ namespace osu.Game.Graphics.Containers dimContent.FadeTo(ContentDisplayed ? 1 : 0, BACKGROUND_FADE_DURATION, Easing.OutQuint); dimContent.FadeColour(OsuColour.Gray(1f - DimLevel), BACKGROUND_FADE_DURATION, Easing.OutQuint); } - - /// - /// Invoked when the IgnoreUserSettings bindable is changed - /// - private void updateSettings() - { - EnableUserDim.Value = !IgnoreUserSettings.Value; - } } } From 46dc2251e88703029e0234c18794850a5c1475e9 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Thu, 28 Nov 2019 21:39:33 +0800 Subject: [PATCH 0390/1829] Add fxcop with every violated rule off. --- CodeAnalysis/osu.ruleset | 63 ++++++++++++++++++++++++++++++++++++++++ Directory.Build.props | 4 +++ osu.sln | 1 + 3 files changed, 68 insertions(+) create mode 100644 CodeAnalysis/osu.ruleset diff --git a/CodeAnalysis/osu.ruleset b/CodeAnalysis/osu.ruleset new file mode 100644 index 0000000000..9bcca40983 --- /dev/null +++ b/CodeAnalysis/osu.ruleset @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Directory.Build.props b/Directory.Build.props index c0d740bac1..27a0bd0d48 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -18,7 +18,11 @@ + + + $(MSBuildThisFileDirectory)CodeAnalysis\osu.ruleset + true $(NoWarn);CS1591 diff --git a/osu.sln b/osu.sln index 1f4faae6b9..79823848f0 100644 --- a/osu.sln +++ b/osu.sln @@ -60,6 +60,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution global.json = global.json osu.Android.props = osu.Android.props osu.iOS.props = osu.iOS.props + CodeAnalysis\osu.ruleset = CodeAnalysis\osu.ruleset osu.sln.DotSettings = osu.sln.DotSettings osu.TestProject.props = osu.TestProject.props EndProjectSection From 9875fcea9971470479006fe81bf15103142fdb79 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 17 Dec 2019 13:54:25 +0900 Subject: [PATCH 0391/1829] Add numbers to old skin for better identification --- .../Resources/old-skin/default-0.png | Bin 0 -> 2003 bytes .../Resources/old-skin/default-1.png | Bin 0 -> 1191 bytes .../Resources/old-skin/default-2.png | Bin 0 -> 1756 bytes .../Resources/old-skin/default-3.png | Bin 0 -> 1822 bytes .../Resources/old-skin/default-4.png | Bin 0 -> 1814 bytes .../Resources/old-skin/default-5.png | Bin 0 -> 1848 bytes .../Resources/old-skin/default-6.png | Bin 0 -> 2014 bytes .../Resources/old-skin/default-7.png | Bin 0 -> 1452 bytes .../Resources/old-skin/default-8.png | Bin 0 -> 1953 bytes .../Resources/old-skin/default-9.png | Bin 0 -> 1814 bytes 10 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 osu.Game.Rulesets.Osu.Tests/Resources/old-skin/default-0.png create mode 100644 osu.Game.Rulesets.Osu.Tests/Resources/old-skin/default-1.png create mode 100644 osu.Game.Rulesets.Osu.Tests/Resources/old-skin/default-2.png create mode 100644 osu.Game.Rulesets.Osu.Tests/Resources/old-skin/default-3.png create mode 100644 osu.Game.Rulesets.Osu.Tests/Resources/old-skin/default-4.png create mode 100644 osu.Game.Rulesets.Osu.Tests/Resources/old-skin/default-5.png create mode 100644 osu.Game.Rulesets.Osu.Tests/Resources/old-skin/default-6.png create mode 100644 osu.Game.Rulesets.Osu.Tests/Resources/old-skin/default-7.png create mode 100644 osu.Game.Rulesets.Osu.Tests/Resources/old-skin/default-8.png create mode 100644 osu.Game.Rulesets.Osu.Tests/Resources/old-skin/default-9.png diff --git a/osu.Game.Rulesets.Osu.Tests/Resources/old-skin/default-0.png b/osu.Game.Rulesets.Osu.Tests/Resources/old-skin/default-0.png new file mode 100644 index 0000000000000000000000000000000000000000..2af0569bcb30f4e87135669268698a79ac486f1f GIT binary patch literal 2003 zcmV;^2Q2uBP)0&s!{Eg(K)vw7OGA_klVuXw5~tP0kR@Dz8%i8MTl@(y z-HHy1)1^gl{JB-y+HK0-x1Q6y9t-`>_Z71(JIO;iA0MaZIq(1befqh%Io-c~gz5eR zLm$Gm41gB_aex&76Cer@2?%HRpx7S*9suqGCK+)4NX?g`CPir6_!2+@zzkReSO<_@ z^LM}y;5NVxn2{xn2}vVXR=YR*Dp~j2@G20fY&*JmX?;P$jC^e%tp`?UA%a4 zu&1YI6!hJjnwo0bzI}UET3VV}Mj~dj*+MQgfi!+r62RUDG$O!&o84~r!#T;(-`_t1 zr}!~nhvLwoLto3R)z;S5PyYV{z;cY#9Qpu~Nd?qsv4QUH?i(a@TN=^W5s+ zINU!W^Bs7wM5WSLKIbQq$h?xz7Su@L?Afz4dAr6`C(!syOAst9EQ}-NzzRxYHNR=s zu3gdz9R@X$wA};TU93o+l9ECXIGU4)pvhf!cD7k|;j34#(ya4GsxqM->FMe5LV4gL zVPg8_OE1)@(z$czD2ZQ!RAic(6H!r7MxjXaEf~YS645tVd*DWlMgMq^+n4fRFqaBN zw+4T#B&sA$0s|IFmu&!-QWAoGYhn^jPDVP-76R5i1;za`zg0#@8#V6#F((n_Uwzp! z=|!zp>m;o(75s~)Lz|tQ^^&QVlUPa%5!ppYMn;@M4{82_Uat>l%{8u0(%&~UG(-cW zi<2;Dk!NRT=LCrlP6euz!W#{;MOJ{}4oNST81*z4??Raas~UBiH*Z!|=0c@7N~ZTU zlfV`WRaXT@?cX?%NY*HM2PN^RS`t%JQ`81LLF~c6YZV+DHf%7fkUDkec52vedXomh zJW`-adE6e;ka%ICUKk*YCz)zgskynCR*g47l^%+c7!wjX z#l<_Bu4KVXl)`fOc$3fT>+5sW)GNo19pjlYI-)yb?&RjhJ6b*#`!ZjEM#_GDjmH4N zBdzDEg!iiHq8~kaw2OEp?4V4EB+$Y~_=QuaPDzp2wrv}i1{PPZa%sRPM&k^;h2Lwj zSfo2B!^6W4^4tR5xD{0CQJ?~4lo^Ze#EBCQ{70oA`X}+PQNlZN#-x8x~2pS*Ol7_U_%=En^qhTp*W9bx$4#6z~h!0;;X8EmEUKq=VAO z4EmXP6fPuFsMD)#Hk&IUA>j|u;WbLWtfZu5?bz7ZIC!_G5{GOg3pBG6=N{Y_U&tI!1Q-ydi0I`H>!)LlD z45>cBG@7uSp104&w z{3XU<8rTAj@Oe6P7}95XE9d0NleZwRn%uN$)5`{fAtKZS&YU@Osj{-Nqqnzrh9r|; z00x5*STNrSBoQ>!hK7b5aI3jmt1@(-*mT1twD2$ir-<9c^HomT($(d0h7A8xHu!Y zZ17;uHPe5A_(nb#ulv=dk=v5~f3R1R!9V>)r0sg5V) zH9!!_AOU<)Wi?B)Q+RVX$fobIVg`XPp}3U3NfT-k;)r0a7;M5VXA%n|UdF>(IS6kk lHvJ5V|K9=phm5}k7yxVV^TAT2(qBnTK@ z0-l32%{aNe_uRQn>?9|hf!n#ip2wW8x3=Ts3m|d+4Qb+fVseKf#rdn zA?|+&whi_j>@!#lY)`y^MH#JOM?c(q&ai4^Z*+HeKd=%Lm&=tO3A<6cJILgb*v)S|t*jXcwTurt&j1E-0hBxf&;7YnT zaKvIUo~)Z-yL#n|N9;wGU>Q!QGizaCA(Ck0yu7^Z+}zwOiin+^oxP!S<4u>OyDx{~UhYP_b_|;Gd6SKuUGbbgpp9`t4 zuP>&Gn4O&!z42De57RsXBCzh=d|g#lMHVtPHYN&LW+|WyMwhvehK7cGGhylN?d3wy z(_gF-T0Ak^+uOZn!Xh-gFxXFJArKb)^hJCPozzWzFLZ6OLOwxQ4y||u5%CTW3-#G%EpOKiF?SBr{}0zPSNZ7njxA)!!clPzCqVIo-wgyl56+~n(;ni_Jo1OkD1Vfhil za$v)$cVI>ZjFcm#>+F2@4IJ*tqtzP@=%Sg1mf)-rL@(a}LpQi(m5Sff)D!f5RVU)R;u zk%dU?u>@h+wc?TUV7K|g=kt+;=&^^25GQMNC+uM+ECPG1COS4pH=SMgkj!@Zy;t^zzGL^7M?C~|t z6(P*kfX1LgbBAOApi1 z{yuZhQ9(k1J@9cko>SVso=31tK4U#XWniAXQxWlxN0?XA z85)+b3Nrd#2H(8Hm=weF!_2XsP{{urDf3fW$_V)*zyQwC!s?l~#8?0T002ovPDHLk FV1oRZC2Ifx literal 0 HcmV?d00001 diff --git a/osu.Game.Rulesets.Osu.Tests/Resources/old-skin/default-2.png b/osu.Game.Rulesets.Osu.Tests/Resources/old-skin/default-2.png new file mode 100644 index 0000000000000000000000000000000000000000..dbf7bc73bc620b8782be5518443a36c91d1216cb GIT binary patch literal 1756 zcmV<21|#{2P)p$w|{(9A*RO z%p)u&yhey6EFmmnL=hHhoQDXF6GjOWgfYS};Su3)o_`i<;vgGCSVdS(SWj3U!T>%b z+#z@f_XrR8=7J&~#YA@yR?dK)=2trhXbg7}s#TVi5kV`Gf|W4K6PU!MmH&*(K^ z1P2Zr5N41hELn{>GGIKuq^71W2{vM6m$taLxGxF|3vJM?k?Rx}7t2q5wLguAeAL(1 zd#qNg4NpPuxe7O14mqn4ALo>7ayp%lgY{;GQ%tnBwmOYm3$o>}uS3pi#Q)`b!GuH* zj6OR$I(}8oojrT@wvlT|vPE&XXc}?OPItxe$&)9q8eN!WWo6gZBohMVS+q2cOy!fw z@#DvP+S=NB^j^8Ds_L?ox~~v!hiJJVuurv!|Aove4l*(_?0U#oR8-h;!+eMW>3Xn6 z(A?ZC90_TERP|ykmtMlRGWo-Y51;p^d3g4&UAr13(ik?vbCLCOa&i)k$WE$T{y?p6 z(fTowA0yl8;zM7tRasf-2Jp|bv$I#m#Kicz9gWfyi~K8Y5T<+>=jkQxa=GMn;U#X* zE&fiB$fHBaVk<)R=9P*cwed5djUQ_i*BQP+Ph_KB;!RCWZt3uM-|7r>5|ekK_9v_( zY=AqdoD1*oBftXtQN_`D5gct4Z6>5{y#*U&LWQ0n{+Oi_m^hP%Muz|*gJ@nNyo#*O zt9(Q>yrS6WVhug&PH`Qw$M^L{n|$9P>HC^+JB!{65wWKn-3I}F8i%zg4o;mqWi=A* zW5(j~V$B3@mV+SuA<7HU_T9R5>oZh} zdamPeINa&!>F1@S^Eq)H)NCX|O`7VJJiVlmEB5T!W0$7BferpI=ZA=}nHMYMkuH-q zqU-(p_n(&}f^y*oudUD#XZKi!+(JkWmNd1BHYrCSdtV{aqtmLaAW27XD*uGAG{mHl zXue~cRoxRbO8ONvuY@8&8ty^q|5LrB(b6eMBiWsSi%e>`hsB^Y;&?A{tGvra2`0;k zdtf0-nuc?HjZb;!Dk$Pa8jbW?&W6k6VDJ3N( z88eMCBHY>8={|Dg$W@K~Z!`#M^G`Ta-r+?$?w2@|ewXlp{3FQX=+UFrnQ9ptzHs4! zi*D4Zh_I0X8FeekE2XkZCas4s$Wr^}K7IQ1?Eu}8-tjRfqkd(5ZQ`ge;2%{2y}iBY zV!}4)iTxzF5K;tB0XcKx)!#O;-Sr|~m*^RFb#*T3aKvBA2T?OiWPLbEqpX$W=2Dil zQ^YyJtO=$Q59P4gY|3_RTr1+(P)rdr3CF7w#r~qaS$fxBb%?jbzE>2vxw&E0Hrz?_ z{4U-OoKBo&vQA87W@aXalXzoeqbw7*Rz^j{k#yb`>3p`{Woiv+^Jik3cPofTibjA+ z%&?M1ZLZk-d8k>dFzI}g^bYYQ8DEl2Zu*Nj%pEWL|9Oc>+x^L8s>q@RYT=G%13S#Z yFpz!1`;+&0({xl z!WaUPdgUhj#U&~~aA31EC}4od2qXp);Rk>C$q(V@0L@|`3WhWb5t+!%0Xk{M#jwO7 zFy87s^+8jVj(AW5lU`k2HI|i?>6ues16J%NAXsfYe_EJVR8;t6wX3VE zSrhpVa0^y@&r#+K0;sL=Co@y+3lnK+X)(|g6VEjuz3VLHV>CI12US&7Q6V8Ahka}! zeHcmD@7Rmu)|4I@85uk~J8N*4gi@&t=6&$O!on_*i7c2!nNn^mbApYdV-}Nxx;?_f z!vm(Krrzfv-rn9mnxCI9tTsjy9dP{X5sr3<1W z930H%4Sf)^H{*i zBS{23h>YEV&d$zkj2iBePfAL3r{lM!Xu;d&A9CaVthdcD?N@}gDm z0j^g(N?h~+p(Fv+QpuyO2L%OPpy_qMm(EHzw+0F`z+JRQz&J@&lSuWsJkUqbN^g;mSxM zT!Pmws0%MwZN(QZF1vWPUU$a#S@Iu^!cEWv=#M*<86LjhJejQzO*3&iVy0Oqs=}c^78V|VEb9L^3T!n)9mi?uJ-iwG}{)zAn>o) zRH7&YS{gtoba-xnJ#*CK%&C_sDjlchk}Nkjms_j%_xH~;(|h9TJb<>r(jQz|St)T> zBrz%a0kswq$#J<~3W$==I$n?MulP}{wpWMGgDweGY!)P?#mqK!LbJHXy&Ex1u8VV5|6Z3J^r>Hsg2ytxRT5j0W(_@fAd~9rN zQD_QHOiX0+kjBNaC8iu}0 z)H~d>*;k=$m=R7u93Pg@Ru1KL!s6m$9lpP0NF$dHN2INV1oi*UQajCJo0XN7Y2JE0 zh%4OK*!UCkszew+5Z262DjaJCM6bTjQ<}EeDTJ}Nq|}UJvgiXq_NEQNbqnx4;10eD zbg9~6h$~2Fz03AZPy#@@j*Ezh2z8d6Fe)r8ELfZioYMfu#?jHyKN*J;k2$K8egz&I zTxBA=BUD77D9Ql5?4{6dqA>RhzySB(bgRC#^C|^bHkMMh$^%4ilPQtOJaYUw8a|12={s5$!(MW|36v#JpL1403@th-uUEs@Bjb+ M07*qoM6N<$f~Rj>w*UYD literal 0 HcmV?d00001 diff --git a/osu.Game.Rulesets.Osu.Tests/Resources/old-skin/default-4.png b/osu.Game.Rulesets.Osu.Tests/Resources/old-skin/default-4.png new file mode 100644 index 0000000000000000000000000000000000000000..4564f6d8bff88ce7a1e983aa9192b8c882789f5d GIT binary patch literal 1814 zcmV+x2kH2UP)MX4xD zf25+&_`^?;7>(E#Nd$>eNnaomF(fo5Ch!6eeIN!x0uMwXfe?AmHFJrMt*yQ6a5&_FpC`1^Z%w=C zJCY8WYw)Tc313)1#2v`)6Jb+6$LNigvs5SK0`Y68Roagv#t zd04gI?(XgpsX0WL_w_Uuj!^g^YjkvUm{A7?@uH%lNN(QG(FqU9pAJXFeQ9ZFQL245 zH#f^fMrnrsQX#Tpr%s)UGP@en)6?beh7t+$b>j)X=yP{WO#V^nzYkT ziD-p&VPZL<2?uf!UK@vnZc~*cFyuGx+{z;nBC(An#oOW<1R!anXgv}n{$vuE zg|7&3&&S1m85tRoCf&**?`=v%m;{7fnh2L5k)NNR||qVjAY%u8;Hj*e1)OT4L0@dLYwS=z2sXh`JJ z%nFIRy1F#Irw9_*^);6di-j#4_6{SG#Dy$+QPaLj_>#sv?CXNWD}<+o7IH^|T&d3m z30*Ui&cZ4yD?M$zNSj}U+pZQLhy%XR^MwTqMMWqq>!TaKBZ*Om^nL@*6nY(h( zesPn{W{cm-Bw%fAZ3A+Gg>sOHTKmM+q@<)HmMw0Y1ZzYt2dx$vjA$Tln2QAKu5!?V zeB)LoVz=96w;C2o*jGwvSFF0a`rEBcq`bUb-nYh9_dt$XSRk>S;h zK?z%})-&Avj&PR7@05u^BtAxXhwD!3W*r?JNqV`9E2Ti0XQyJN6UP!^m&@uJd}_D{>E`RYWN-cbhDXLyEsd@;Ht{L zsYE0)D6<~oHKX!BSCcIMuCIl}x)SlW{ZC}8+1~;T0CqcF2-dk}y8r+H07*qoM6N<$ Ef`bE6AOHXW literal 0 HcmV?d00001 diff --git a/osu.Game.Rulesets.Osu.Tests/Resources/old-skin/default-5.png b/osu.Game.Rulesets.Osu.Tests/Resources/old-skin/default-5.png new file mode 100644 index 0000000000000000000000000000000000000000..dcef35eb594a4c047cf37dcfb7acb660cb155de6 GIT binary patch literal 1848 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 literal 0 HcmV?d00001 diff --git a/osu.Game.Rulesets.Osu.Tests/Resources/old-skin/default-7.png b/osu.Game.Rulesets.Osu.Tests/Resources/old-skin/default-7.png new file mode 100644 index 0000000000000000000000000000000000000000..b9079ad5d5f863ccbbbeac6ab2677ac0d2645698 GIT binary patch literal 1452 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 n?OHhGXep*ZTPPG6 z96*o~Ka@eKiOiH35FtuXA%TyY06%;%fA9$jL;O%6p$U)@HP(nCkWvBxO@t7JLo&jBQyWN|r{ch6hwv-du0@2lV4-PIkJVTV8TdcDlE zHUN9TS%53R8Q=i0C7*c=FajO`wgC6o^^r7LL4u9|Pr%CzJ_65g1Lgn=fF-~R;343N zmWTD|1{y4@XBK=F@FpXB5Cch%17-mmY$vRfwfX_Q9=G--K&;Y=US3}IadB~OF)=Y- zo}Ql09v&V}%I8;BR<@RxmkkRG3tNMOgX^80oogyzgKlyIa0~d{mm&*9&%otvKoq@S zP*C8Po}L~Q931Q?YD%NgxHCLFJlECLHCIzpGpG3TAYcG}dsl^+MY4?OWk4vumz|yM zU0q$B;Ns%qbPztUxw*O3*w{E&R#rAiZr=iQ0IzjTWR*m5yIWgZqaq_CgAOAlO;1lR z#>U3BFD)(Yuv@Z(Ep`kRmx*cW?MJs1zWwjHZ{u$5*{2tO& zM2Vh)OW1yhqE9w7Gz@rqdw&7z)rN(IT^$=6o7?L-bS-%9GJYq!^$y@giRG3}K^4QRZOk=;(+P-TJ(|ymkdq z^A=`iX7+1Y12YT;GMoAXUQlxbFF*+X5*ixnl$e+pEJAc(U|_Pjxp|RI(GvB5&j6-K z$Kb(0(y~@@ad9}A27w{%&17L>%T6cLsH&>EBpM(^MMZ;T`W@g;7R}TA=Ire3nwGT! z0s_3jSbSG;x6e__q6m3|TU9hgp;bplMz*-y0d51)$3zd9hQVOi(YhuaI=*D;LCIcV z0!5dSlHx6D)!N$HaWWkRqDC^8(x4Dzl*a{1)*MLj@$r75`H=+GG*eS_oRlGpu0WOSCPWCiWQbOqp6&0EOr8s14>8`oDx;l%j zO;Q-T!D&wRgzPcd*Vjk4-JoJse;&B|5J1T9q|E^z@&731&jX&54P3P{MeR%WRnrj{ z@Rbc*mGQ(zxqVts89rcpsgIu}zhlq_b3r5{)YsS7cgTsjZKDhfEJH*V3=9lBPo}Ri zjiF;DkjVvdb91GvN>bt~>I_cStja+W3RxCUI}9E+eI0NS2%lqxrD>$5rV5L8%->|X z0V(kjC2O*7eSQ5LN`XVQqqerTF;VMQ zR8&yw`CCv>nnzDh4;AdIX0l9l{LcSUQc^Om*oHkvX=!PKg0Qqz`3@69uId<39jg}X zS?yJW0Eu>OS7J;}O)WsF{sUxy&o?$U3^Hqsj*iZ99)M(QNtrluvWzeW#;5#)V5u9s zM=)SVz9D1-IX`6$hHWC;wkxd3X4=ZSy1HZs2M7EAqf-bmvj)XxE2+W00*()!scu;p zXlv>&W5XJV=xFw>(WLZkX&P@t!xQP~-xb+I6BY-;^L{YrMsnkt+wp>M_8{EN~O1jQh5XIM=AM?&4=F#5X-efHT2G4jbi!w4Y zhLp`4z_8B3J1$wvIC4EiEm{d$oQzNi2!TmYZrnEU5qs)^eyUS^oOd6!H1_ z`BByqz7>)(Fa2M9!(H+oGBg=jEL*B$aYLa_Z3P|`o z)32V)HPqho$eCgySO5S307*qoM6N<$ Ef@aS_IsgCw literal 0 HcmV?d00001 From ecfc6dfa3d41f27190381abe28f9dd28e86e46bd Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Thu, 28 Nov 2019 21:41:29 +0800 Subject: [PATCH 0392/1829] CA1825: use Array.Empty. --- CodeAnalysis/osu.ruleset | 3 --- osu.Game.Rulesets.Catch/CatchRuleset.cs | 3 ++- osu.Game.Rulesets.Mania/ManiaRuleset.cs | 4 ++-- osu.Game.Rulesets.Osu/OsuRuleset.cs | 3 ++- osu.Game.Rulesets.Taiko/TaikoRuleset.cs | 3 ++- osu.Game.Tests/Visual/Gameplay/TestSceneSkipOverlay.cs | 3 ++- .../Visual/Multiplayer/TestSceneMatchParticipants.cs | 2 +- osu.Game.Tests/Visual/Online/TestSceneUserProfileOverlay.cs | 2 +- .../Visual/Online/TestSceneUserProfilePreviousUsernames.cs | 2 +- osu.Game.Tournament/Screens/Editors/LadderEditorScreen.cs | 2 +- .../Screens/Ladder/Components/DrawableMatchTeam.cs | 2 +- osu.Game/Beatmaps/BeatmapInfo.cs | 4 ++-- osu.Game/Beatmaps/DummyWorkingBeatmap.cs | 2 +- osu.Game/Overlays/Mods/ModSection.cs | 2 +- osu.Game/Overlays/Music/PlaylistList.cs | 2 +- osu.Game/Overlays/UserProfileOverlay.cs | 6 ++---- osu.Game/Rulesets/Mods/Mod.cs | 2 +- osu.Game/Rulesets/Ruleset.cs | 4 ++-- osu.Game/Screens/Play/SquareGraph.cs | 2 +- osu.Game/Screens/Select/Details/FailRetryGraph.cs | 4 ++-- 20 files changed, 28 insertions(+), 29 deletions(-) diff --git a/CodeAnalysis/osu.ruleset b/CodeAnalysis/osu.ruleset index 9bcca40983..61e6520beb 100644 --- a/CodeAnalysis/osu.ruleset +++ b/CodeAnalysis/osu.ruleset @@ -57,7 +57,4 @@ - - - \ No newline at end of file diff --git a/osu.Game.Rulesets.Catch/CatchRuleset.cs b/osu.Game.Rulesets.Catch/CatchRuleset.cs index 506fa23fa9..bf5b00528b 100644 --- a/osu.Game.Rulesets.Catch/CatchRuleset.cs +++ b/osu.Game.Rulesets.Catch/CatchRuleset.cs @@ -18,6 +18,7 @@ using osu.Game.Rulesets.Catch.Beatmaps; using osu.Game.Rulesets.Catch.Difficulty; using osu.Game.Rulesets.Difficulty; using osu.Game.Scoring; +using System; namespace osu.Game.Rulesets.Catch { @@ -112,7 +113,7 @@ namespace osu.Game.Rulesets.Catch }; default: - return new Mod[] { }; + return Array.Empty(); } } diff --git a/osu.Game.Rulesets.Mania/ManiaRuleset.cs b/osu.Game.Rulesets.Mania/ManiaRuleset.cs index a96c79b40b..3e3dc5cf66 100644 --- a/osu.Game.Rulesets.Mania/ManiaRuleset.cs +++ b/osu.Game.Rulesets.Mania/ManiaRuleset.cs @@ -158,7 +158,7 @@ namespace osu.Game.Rulesets.Mania }; default: - return new Mod[] { }; + return Array.Empty(); } } @@ -268,7 +268,7 @@ namespace osu.Game.Rulesets.Mania return stage1Bindings.Concat(stage2Bindings); } - return new KeyBinding[0]; + return Array.Empty(); } public override string GetVariantName(int variant) diff --git a/osu.Game.Rulesets.Osu/OsuRuleset.cs b/osu.Game.Rulesets.Osu/OsuRuleset.cs index 2f43909332..b182e5a658 100644 --- a/osu.Game.Rulesets.Osu/OsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/OsuRuleset.cs @@ -26,6 +26,7 @@ using osu.Game.Rulesets.Osu.Difficulty; using osu.Game.Rulesets.Osu.Skinning; using osu.Game.Scoring; using osu.Game.Skinning; +using System; namespace osu.Game.Rulesets.Osu { @@ -149,7 +150,7 @@ namespace osu.Game.Rulesets.Osu }; default: - return new Mod[] { }; + return Array.Empty(); } } diff --git a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs index ab9c95159c..0b4cb9801e 100644 --- a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs +++ b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs @@ -18,6 +18,7 @@ using osu.Game.Rulesets.Difficulty; using osu.Game.Rulesets.Taiko.Beatmaps; using osu.Game.Rulesets.Taiko.Difficulty; using osu.Game.Scoring; +using System; namespace osu.Game.Rulesets.Taiko { @@ -111,7 +112,7 @@ namespace osu.Game.Rulesets.Taiko }; default: - return new Mod[] { }; + return Array.Empty(); } } diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneSkipOverlay.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneSkipOverlay.cs index 875e7b9758..4c5c18f38a 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneSkipOverlay.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneSkipOverlay.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 NUnit.Framework; using osu.Framework.Graphics; @@ -31,7 +32,7 @@ namespace osu.Game.Tests.Visual.Gameplay requestCount = 0; increment = skip_time; - Child = gameplayClockContainer = new GameplayClockContainer(CreateWorkingBeatmap(CreateBeatmap(new OsuRuleset().RulesetInfo)), new Mod[] { }, 0) + Child = gameplayClockContainer = new GameplayClockContainer(CreateWorkingBeatmap(CreateBeatmap(new OsuRuleset().RulesetInfo)), Array.Empty(), 0) { RelativeSizeAxes = Axes.Both, Children = new Drawable[] diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchParticipants.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchParticipants.cs index 50df4022dc..1ac914e27d 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchParticipants.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchParticipants.cs @@ -45,7 +45,7 @@ namespace osu.Game.Tests.Visual.Multiplayer }); AddStep(@"set max", () => Room.MaxParticipants.Value = 10); - AddStep(@"clear users", () => Room.Participants.Value = new User[] { }); + AddStep(@"clear users", () => Room.Participants.Value = System.Array.Empty()); AddStep(@"set max to null", () => Room.MaxParticipants.Value = null); } } diff --git a/osu.Game.Tests/Visual/Online/TestSceneUserProfileOverlay.cs b/osu.Game.Tests/Visual/Online/TestSceneUserProfileOverlay.cs index 98da63508b..15f9c9a013 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneUserProfileOverlay.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneUserProfileOverlay.cs @@ -70,7 +70,7 @@ namespace osu.Game.Tests.Visual.Online }, Title = "osu!volunteer", Colour = "ff0000", - Achievements = new User.UserAchievement[0], + Achievements = Array.Empty(), }; public TestSceneUserProfileOverlay() diff --git a/osu.Game.Tests/Visual/Online/TestSceneUserProfilePreviousUsernames.cs b/osu.Game.Tests/Visual/Online/TestSceneUserProfilePreviousUsernames.cs index d09a50b12c..048a1950fd 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneUserProfilePreviousUsernames.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneUserProfilePreviousUsernames.cs @@ -42,7 +42,7 @@ namespace osu.Game.Tests.Visual.Online new User { PreviousUsernames = new[] { "longusername", "longerusername" } }, new User { PreviousUsernames = new[] { "test", "angelsim", "verylongusername" } }, new User { PreviousUsernames = new[] { "ihavenoidea", "howcani", "makethistext", "anylonger" } }, - new User { PreviousUsernames = new string[0] }, + new User { PreviousUsernames = Array.Empty() }, null }; diff --git a/osu.Game.Tournament/Screens/Editors/LadderEditorScreen.cs b/osu.Game.Tournament/Screens/Editors/LadderEditorScreen.cs index ba63013886..f3eecf8afe 100644 --- a/osu.Game.Tournament/Screens/Editors/LadderEditorScreen.cs +++ b/osu.Game.Tournament/Screens/Editors/LadderEditorScreen.cs @@ -49,7 +49,7 @@ namespace osu.Game.Tournament.Screens.Editors get { if (editorInfo == null) - return new MenuItem[0]; + return Array.Empty(); return new MenuItem[] { diff --git a/osu.Game.Tournament/Screens/Ladder/Components/DrawableMatchTeam.cs b/osu.Game.Tournament/Screens/Ladder/Components/DrawableMatchTeam.cs index ded21730f3..031d6bf3d2 100644 --- a/osu.Game.Tournament/Screens/Ladder/Components/DrawableMatchTeam.cs +++ b/osu.Game.Tournament/Screens/Ladder/Components/DrawableMatchTeam.cs @@ -192,7 +192,7 @@ namespace osu.Game.Tournament.Screens.Ladder.Components get { if (editorInfo == null) - return new MenuItem[0]; + return Array.Empty(); return new MenuItem[] { diff --git a/osu.Game/Beatmaps/BeatmapInfo.cs b/osu.Game/Beatmaps/BeatmapInfo.cs index 6e82c465dc..bcc9ab885e 100644 --- a/osu.Game/Beatmaps/BeatmapInfo.cs +++ b/osu.Game/Beatmaps/BeatmapInfo.cs @@ -98,7 +98,7 @@ namespace osu.Game.Beatmaps { if (string.IsNullOrEmpty(value)) { - Bookmarks = new int[0]; + Bookmarks = Array.Empty(); return; } @@ -111,7 +111,7 @@ namespace osu.Game.Beatmaps } [NotMapped] - public int[] Bookmarks { get; set; } = new int[0]; + public int[] Bookmarks { get; set; } = Array.Empty(); public double DistanceSpacing { get; set; } public int BeatDivisor { get; set; } diff --git a/osu.Game/Beatmaps/DummyWorkingBeatmap.cs b/osu.Game/Beatmaps/DummyWorkingBeatmap.cs index 59a27e3fde..9ea254b23f 100644 --- a/osu.Game/Beatmaps/DummyWorkingBeatmap.cs +++ b/osu.Game/Beatmaps/DummyWorkingBeatmap.cs @@ -55,7 +55,7 @@ namespace osu.Game.Beatmaps private class DummyRuleset : Ruleset { - public override IEnumerable GetModsFor(ModType type) => new Mod[] { }; + public override IEnumerable GetModsFor(ModType type) => Array.Empty(); public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) { diff --git a/osu.Game/Overlays/Mods/ModSection.cs b/osu.Game/Overlays/Mods/ModSection.cs index c55d1d8f70..7235a18a23 100644 --- a/osu.Game/Overlays/Mods/ModSection.cs +++ b/osu.Game/Overlays/Mods/ModSection.cs @@ -81,7 +81,7 @@ namespace osu.Game.Overlays.Mods } } - private ModButton[] buttons = { }; + private ModButton[] buttons = Array.Empty(); protected override bool OnKeyDown(KeyDownEvent e) { diff --git a/osu.Game/Overlays/Music/PlaylistList.cs b/osu.Game/Overlays/Music/PlaylistList.cs index 83528298b1..3cd04ac809 100644 --- a/osu.Game/Overlays/Music/PlaylistList.cs +++ b/osu.Game/Overlays/Music/PlaylistList.cs @@ -239,7 +239,7 @@ namespace osu.Game.Overlays.Music private class ItemSearchContainer : FillFlowContainer, IHasFilterableChildren { - public IEnumerable FilterTerms => new string[] { }; + public IEnumerable FilterTerms => Array.Empty(); public bool MatchingFilter { diff --git a/osu.Game/Overlays/UserProfileOverlay.cs b/osu.Game/Overlays/UserProfileOverlay.cs index 468eb22b01..b5e7b8bedb 100644 --- a/osu.Game/Overlays/UserProfileOverlay.cs +++ b/osu.Game/Overlays/UserProfileOverlay.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.Graphics; @@ -55,10 +56,7 @@ namespace osu.Game.Overlays new BeatmapsSection(), new KudosuSection() } - : new ProfileSection[] - { - //new AboutSection(), - }; + : Array.Empty(); tabs = new ProfileTabControl { diff --git a/osu.Game/Rulesets/Mods/Mod.cs b/osu.Game/Rulesets/Mods/Mod.cs index 1c280c820d..b780ec9e76 100644 --- a/osu.Game/Rulesets/Mods/Mod.cs +++ b/osu.Game/Rulesets/Mods/Mod.cs @@ -64,7 +64,7 @@ namespace osu.Game.Rulesets.Mods /// The mods this mod cannot be enabled with. /// [JsonIgnore] - public virtual Type[] IncompatibleMods => new Type[] { }; + public virtual Type[] IncompatibleMods => Array.Empty(); ///

/// Creates a copy of this initialised to a default state. diff --git a/osu.Game/Rulesets/Ruleset.cs b/osu.Game/Rulesets/Ruleset.cs index 45aa904b98..2550f69286 100644 --- a/osu.Game/Rulesets/Ruleset.cs +++ b/osu.Game/Rulesets/Ruleset.cs @@ -42,7 +42,7 @@ namespace osu.Game.Rulesets /// /// The legacy enum which will be converted /// An enumerable of constructed s - public virtual IEnumerable ConvertLegacyMods(LegacyMods mods) => new Mod[] { }; + public virtual IEnumerable ConvertLegacyMods(LegacyMods mods) => Array.Empty(); public ModAutoplay GetAutoplayMod() => GetAllMods().OfType().First(); @@ -116,7 +116,7 @@ namespace osu.Game.Rulesets /// /// A variant. /// A list of valid s. - public virtual IEnumerable GetDefaultKeyBindings(int variant = 0) => new KeyBinding[] { }; + public virtual IEnumerable GetDefaultKeyBindings(int variant = 0) => Array.Empty(); /// /// Gets the name for a key binding variant. This is used for display in the settings overlay. diff --git a/osu.Game/Screens/Play/SquareGraph.cs b/osu.Game/Screens/Play/SquareGraph.cs index 715ba3c065..a667466965 100644 --- a/osu.Game/Screens/Play/SquareGraph.cs +++ b/osu.Game/Screens/Play/SquareGraph.cs @@ -38,7 +38,7 @@ namespace osu.Game.Screens.Play } } - private float[] calculatedValues = { }; // values but adjusted to fit the amount of columns + private float[] calculatedValues = Array.Empty(); // values but adjusted to fit the amount of columns private int[] values; diff --git a/osu.Game/Screens/Select/Details/FailRetryGraph.cs b/osu.Game/Screens/Select/Details/FailRetryGraph.cs index 121f8efe5a..134fd0598a 100644 --- a/osu.Game/Screens/Select/Details/FailRetryGraph.cs +++ b/osu.Game/Screens/Select/Details/FailRetryGraph.cs @@ -27,8 +27,8 @@ namespace osu.Game.Screens.Select.Details metrics = value; - var retries = Metrics?.Retries ?? new int[0]; - var fails = Metrics?.Fails ?? new int[0]; + var retries = Metrics?.Retries ?? Array.Empty(); + var fails = Metrics?.Fails ?? Array.Empty(); float maxValue = fails.Any() ? fails.Zip(retries, (fail, retry) => fail + retry).Max() : 0; failGraph.MaxValue = maxValue; From d7b3578cc61f6cd99d940443ef0d14e8faeccbb2 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Thu, 28 Nov 2019 21:52:05 +0800 Subject: [PATCH 0393/1829] CA2201: throw correct exception type. --- CodeAnalysis/osu.ruleset | 3 +++ osu.Game.Tests/Visual/TestSceneOsuGame.cs | 4 ++-- osu.Game/Online/API/APIRequest.cs | 10 +++++++++- .../Rulesets/Difficulty/Utils/LimitedCapacityStack.cs | 2 +- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/CodeAnalysis/osu.ruleset b/CodeAnalysis/osu.ruleset index 61e6520beb..b82799fea4 100644 --- a/CodeAnalysis/osu.ruleset +++ b/CodeAnalysis/osu.ruleset @@ -57,4 +57,7 @@ + + + \ No newline at end of file diff --git a/osu.Game.Tests/Visual/TestSceneOsuGame.cs b/osu.Game.Tests/Visual/TestSceneOsuGame.cs index e495b2a95a..492494ada3 100644 --- a/osu.Game.Tests/Visual/TestSceneOsuGame.cs +++ b/osu.Game.Tests/Visual/TestSceneOsuGame.cs @@ -111,7 +111,7 @@ namespace osu.Game.Tests.Visual foreach (var type in requiredGameDependencies) { if (game.Dependencies.Get(type) == null) - throw new Exception($"{type} has not been cached"); + throw new InvalidOperationException($"{type} has not been cached"); } return true; @@ -121,7 +121,7 @@ namespace osu.Game.Tests.Visual foreach (var type in requiredGameBaseDependencies) { if (gameBase.Dependencies.Get(type) == null) - throw new Exception($"{type} has not been cached"); + throw new InvalidOperationException($"{type} has not been cached"); } return true; diff --git a/osu.Game/Online/API/APIRequest.cs b/osu.Game/Online/API/APIRequest.cs index b424e0f086..fcbd4d314a 100644 --- a/osu.Game/Online/API/APIRequest.cs +++ b/osu.Game/Online/API/APIRequest.cs @@ -122,7 +122,7 @@ namespace osu.Game.Online.API // attempt to decode a displayable error string. var error = JsonConvert.DeserializeObject(responseString); if (error != null) - e = new Exception(error.ErrorMessage, e); + e = new APIException(error.ErrorMessage, e); } catch { @@ -154,6 +154,14 @@ namespace osu.Game.Online.API } } + public class APIException : InvalidOperationException + { + public APIException(string messsage, Exception innerException) + : base(messsage, innerException) + { + } + } + public delegate void APIFailureHandler(Exception e); public delegate void APISuccessHandler(); diff --git a/osu.Game/Rulesets/Difficulty/Utils/LimitedCapacityStack.cs b/osu.Game/Rulesets/Difficulty/Utils/LimitedCapacityStack.cs index d47caf409b..3cab04d904 100644 --- a/osu.Game/Rulesets/Difficulty/Utils/LimitedCapacityStack.cs +++ b/osu.Game/Rulesets/Difficulty/Utils/LimitedCapacityStack.cs @@ -44,7 +44,7 @@ namespace osu.Game.Rulesets.Difficulty.Utils get { if (i < 0 || i > Count - 1) - throw new IndexOutOfRangeException(); + throw new ArgumentOutOfRangeException(nameof(i)); i += marker; if (i > capacity - 1) From 3c39fde7ff938f0397639cec8f7e871fdf8c4b9f Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Thu, 28 Nov 2019 21:59:49 +0800 Subject: [PATCH 0394/1829] CA1065: throw NotSupportedException in properties. --- CodeAnalysis/osu.ruleset | 1 - osu.Game/Rulesets/UI/DrawableRuleset.cs | 28 ++++++++++++------------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/CodeAnalysis/osu.ruleset b/CodeAnalysis/osu.ruleset index b82799fea4..2f072ffa45 100644 --- a/CodeAnalysis/osu.ruleset +++ b/CodeAnalysis/osu.ruleset @@ -39,7 +39,6 @@ - diff --git a/osu.Game/Rulesets/UI/DrawableRuleset.cs b/osu.Game/Rulesets/UI/DrawableRuleset.cs index 5033fd0686..0bb99517ef 100644 --- a/osu.Game/Rulesets/UI/DrawableRuleset.cs +++ b/osu.Game/Rulesets/UI/DrawableRuleset.cs @@ -515,34 +515,34 @@ namespace osu.Game.Rulesets.UI public Stream GetStream(string name) => primary.GetStream(name) ?? secondary.GetStream(name); - public IEnumerable GetAvailableResources() => throw new NotImplementedException(); + public IEnumerable GetAvailableResources() => throw new NotSupportedException(); - public void AddAdjustment(AdjustableProperty type, BindableNumber adjustBindable) => throw new NotImplementedException(); + public void AddAdjustment(AdjustableProperty type, BindableNumber adjustBindable) => throw new NotSupportedException(); - public void RemoveAdjustment(AdjustableProperty type, BindableNumber adjustBindable) => throw new NotImplementedException(); + public void RemoveAdjustment(AdjustableProperty type, BindableNumber adjustBindable) => throw new NotSupportedException(); - public BindableNumber Volume => throw new NotImplementedException(); + public BindableNumber Volume => throw new NotSupportedException(); - public BindableNumber Balance => throw new NotImplementedException(); + public BindableNumber Balance => throw new NotSupportedException(); - public BindableNumber Frequency => throw new NotImplementedException(); + public BindableNumber Frequency => throw new NotSupportedException(); - public BindableNumber Tempo => throw new NotImplementedException(); + public BindableNumber Tempo => throw new NotSupportedException(); - public IBindable GetAggregate(AdjustableProperty type) => throw new NotImplementedException(); + public IBindable GetAggregate(AdjustableProperty type) => throw new NotSupportedException(); - public IBindable AggregateVolume => throw new NotImplementedException(); + public IBindable AggregateVolume => throw new NotSupportedException(); - public IBindable AggregateBalance => throw new NotImplementedException(); + public IBindable AggregateBalance => throw new NotSupportedException(); - public IBindable AggregateFrequency => throw new NotImplementedException(); + public IBindable AggregateFrequency => throw new NotSupportedException(); - public IBindable AggregateTempo => throw new NotImplementedException(); + public IBindable AggregateTempo => throw new NotSupportedException(); public int PlaybackConcurrency { - get => throw new NotImplementedException(); - set => throw new NotImplementedException(); + get => throw new NotSupportedException(); + set => throw new NotSupportedException(); } public void Dispose() From 09257b0c6dd17130b5d7c6e9f31726328e9bb368 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Thu, 28 Nov 2019 22:07:46 +0800 Subject: [PATCH 0395/1829] CA1820: use IsNullOrEmpty. --- CodeAnalysis/osu.ruleset | 1 - osu.Game/Overlays/DirectOverlay.cs | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/CodeAnalysis/osu.ruleset b/CodeAnalysis/osu.ruleset index 2f072ffa45..5329e84024 100644 --- a/CodeAnalysis/osu.ruleset +++ b/CodeAnalysis/osu.ruleset @@ -48,7 +48,6 @@ - diff --git a/osu.Game/Overlays/DirectOverlay.cs b/osu.Game/Overlays/DirectOverlay.cs index aedbd1b08b..9daf55c796 100644 --- a/osu.Game/Overlays/DirectOverlay.cs +++ b/osu.Game/Overlays/DirectOverlay.cs @@ -116,7 +116,7 @@ namespace osu.Game.Overlays Filter.Search.Current.ValueChanged += text => { - if (text.NewValue != string.Empty) + if (!string.IsNullOrEmpty(text.NewValue)) { Header.Tabs.Current.Value = DirectTab.Search; From d5994ed4845b196b249f0c51db70d999ccbe359d Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Thu, 28 Nov 2019 22:21:21 +0800 Subject: [PATCH 0396/1829] CA2208: create exceptions correctly. --- CodeAnalysis/osu.ruleset | 1 - osu.Game/Graphics/ScreenshotManager.cs | 2 +- osu.Game/Rulesets/Difficulty/Utils/LimitedCapacityStack.cs | 2 +- osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs | 4 ++-- osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs | 2 +- osu.Game/Rulesets/Scoring/HitWindows.cs | 2 +- osu.Game/Screens/Play/ReplayPlayerLoader.cs | 2 +- osu.Game/Users/UserPanel.cs | 2 +- 8 files changed, 8 insertions(+), 9 deletions(-) diff --git a/CodeAnalysis/osu.ruleset b/CodeAnalysis/osu.ruleset index 5329e84024..2a0c6fb928 100644 --- a/CodeAnalysis/osu.ruleset +++ b/CodeAnalysis/osu.ruleset @@ -51,7 +51,6 @@ - diff --git a/osu.Game/Graphics/ScreenshotManager.cs b/osu.Game/Graphics/ScreenshotManager.cs index 02d928ec66..b9151b7393 100644 --- a/osu.Game/Graphics/ScreenshotManager.cs +++ b/osu.Game/Graphics/ScreenshotManager.cs @@ -119,7 +119,7 @@ namespace osu.Game.Graphics break; default: - throw new ArgumentOutOfRangeException(nameof(screenshotFormat)); + throw new InvalidOperationException($"Unknown enum member {nameof(ScreenshotFormat)} {screenshotFormat.Value}."); } notificationOverlay.Post(new SimpleNotification diff --git a/osu.Game/Rulesets/Difficulty/Utils/LimitedCapacityStack.cs b/osu.Game/Rulesets/Difficulty/Utils/LimitedCapacityStack.cs index 3cab04d904..1fc5abce90 100644 --- a/osu.Game/Rulesets/Difficulty/Utils/LimitedCapacityStack.cs +++ b/osu.Game/Rulesets/Difficulty/Utils/LimitedCapacityStack.cs @@ -28,7 +28,7 @@ namespace osu.Game.Rulesets.Difficulty.Utils public LimitedCapacityStack(int capacity) { if (capacity < 0) - throw new ArgumentOutOfRangeException(); + throw new ArgumentOutOfRangeException(nameof(capacity)); this.capacity = capacity; array = new T[capacity]; diff --git a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs index ed48ddbc2f..386805d7e5 100644 --- a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs +++ b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs @@ -150,8 +150,8 @@ namespace osu.Game.Rulesets.Objects.Drawables if (HitObject.SampleControlPoint == null) { - throw new ArgumentNullException(nameof(HitObject.SampleControlPoint), $"{nameof(HitObject)}s must always have an attached {nameof(HitObject.SampleControlPoint)}." - + $" This is an indication that {nameof(HitObject.ApplyDefaults)} has not been invoked on {this}."); + throw new InvalidOperationException($"{nameof(HitObject)}s must always have an attached {nameof(HitObject.SampleControlPoint)}." + + $" This is an indication that {nameof(HitObject.ApplyDefaults)} has not been invoked on {this}."); } samples = samples.Select(s => HitObject.SampleControlPoint.ApplyTo(s)).ToArray(); diff --git a/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs index 7fddb442d1..bdd019719b 100644 --- a/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs +++ b/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs @@ -118,7 +118,7 @@ namespace osu.Game.Rulesets.Objects.Legacy int repeatCount = Parsing.ParseInt(split[6]); if (repeatCount > 9000) - throw new ArgumentOutOfRangeException(nameof(repeatCount), @"Repeat count is way too high"); + throw new FormatException(@"Repeat count is way too high"); // osu-stable treated the first span of the slider as a repeat, but no repeats are happening repeatCount = Math.Max(0, repeatCount - 1); diff --git a/osu.Game/Rulesets/Scoring/HitWindows.cs b/osu.Game/Rulesets/Scoring/HitWindows.cs index 39d67f1071..018b50bd3d 100644 --- a/osu.Game/Rulesets/Scoring/HitWindows.cs +++ b/osu.Game/Rulesets/Scoring/HitWindows.cs @@ -165,7 +165,7 @@ namespace osu.Game.Rulesets.Scoring return miss; default: - throw new ArgumentException(nameof(result)); + throw new ArgumentException("Unknown enum member", nameof(result)); } } diff --git a/osu.Game/Screens/Play/ReplayPlayerLoader.cs b/osu.Game/Screens/Play/ReplayPlayerLoader.cs index 86179ef067..c8ca604902 100644 --- a/osu.Game/Screens/Play/ReplayPlayerLoader.cs +++ b/osu.Game/Screens/Play/ReplayPlayerLoader.cs @@ -15,7 +15,7 @@ namespace osu.Game.Screens.Play : base(() => new ReplayPlayer(score)) { if (score.Replay == null) - throw new ArgumentNullException(nameof(score.Replay), $"{nameof(score)} must have a non-null {nameof(score.Replay)}."); + throw new ArgumentException($"{nameof(score)} must have a non-null {nameof(score.Replay)}.", nameof(score)); scoreInfo = score.ScoreInfo; } diff --git a/osu.Game/Users/UserPanel.cs b/osu.Game/Users/UserPanel.cs index c63c12773e..6ddbc13a06 100644 --- a/osu.Game/Users/UserPanel.cs +++ b/osu.Game/Users/UserPanel.cs @@ -63,7 +63,7 @@ namespace osu.Game.Users private void load(UserProfileOverlay profile) { if (colours == null) - throw new ArgumentNullException(nameof(colours)); + throw new InvalidOperationException($"{nameof(colours)} not initialized!"); FillFlowContainer infoContainer; From e46f6627e4f0a932a5d52c255810d6277a7263c7 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Thu, 28 Nov 2019 22:26:10 +0800 Subject: [PATCH 0397/1829] CA1052: make type static. --- CodeAnalysis/osu.ruleset | 1 - osu.Game/IO/Legacy/SerializationReader.cs | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/CodeAnalysis/osu.ruleset b/CodeAnalysis/osu.ruleset index 2a0c6fb928..0756adb05c 100644 --- a/CodeAnalysis/osu.ruleset +++ b/CodeAnalysis/osu.ruleset @@ -9,7 +9,6 @@ - diff --git a/osu.Game/IO/Legacy/SerializationReader.cs b/osu.Game/IO/Legacy/SerializationReader.cs index 82b2c4be32..aeb3ce754d 100644 --- a/osu.Game/IO/Legacy/SerializationReader.cs +++ b/osu.Game/IO/Legacy/SerializationReader.cs @@ -192,7 +192,7 @@ namespace osu.Game.IO.Legacy } } - public class DynamicDeserializer + public static class DynamicDeserializer { private static VersionConfigToNamespaceAssemblyObjectBinder versionBinder; private static BinaryFormatter formatter; From caf3f774baac67213e470d66f5e21e8e8f7616c5 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Thu, 28 Nov 2019 22:39:09 +0800 Subject: [PATCH 0398/1829] CA1309: compare strings correctly. --- CodeAnalysis/osu.ruleset | 1 + osu.Game/Beatmaps/BeatmapManager_WorkingBeatmap.cs | 2 +- osu.Game/Beatmaps/ControlPoints/SampleControlPoint.cs | 2 +- osu.Game/Scoring/ScoreManager.cs | 2 +- osu.Game/Screens/Select/Carousel/CarouselBeatmapSet.cs | 6 +++--- osu.Game/Screens/Select/FilterCriteria.cs | 2 +- osu.Game/Skinning/LegacySkinResourceStore.cs | 2 +- .../Storyboards/Drawables/DrawableStoryboardAnimation.cs | 2 +- osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs | 2 +- 9 files changed, 11 insertions(+), 10 deletions(-) diff --git a/CodeAnalysis/osu.ruleset b/CodeAnalysis/osu.ruleset index 0756adb05c..1aa8f66c93 100644 --- a/CodeAnalysis/osu.ruleset +++ b/CodeAnalysis/osu.ruleset @@ -54,6 +54,7 @@ + \ No newline at end of file diff --git a/osu.Game/Beatmaps/BeatmapManager_WorkingBeatmap.cs b/osu.Game/Beatmaps/BeatmapManager_WorkingBeatmap.cs index 4924842e81..f9d71a2a6e 100644 --- a/osu.Game/Beatmaps/BeatmapManager_WorkingBeatmap.cs +++ b/osu.Game/Beatmaps/BeatmapManager_WorkingBeatmap.cs @@ -42,7 +42,7 @@ namespace osu.Game.Beatmaps } } - private string getPathForFile(string filename) => BeatmapSetInfo.Files.FirstOrDefault(f => string.Equals(f.Filename, filename, StringComparison.InvariantCultureIgnoreCase))?.FileInfo.StoragePath; + private string getPathForFile(string filename) => BeatmapSetInfo.Files.FirstOrDefault(f => string.Equals(f.Filename, filename, StringComparison.OrdinalIgnoreCase))?.FileInfo.StoragePath; private TextureStore textureStore; diff --git a/osu.Game/Beatmaps/ControlPoints/SampleControlPoint.cs b/osu.Game/Beatmaps/ControlPoints/SampleControlPoint.cs index 42865c686c..393bcfdb3c 100644 --- a/osu.Game/Beatmaps/ControlPoints/SampleControlPoint.cs +++ b/osu.Game/Beatmaps/ControlPoints/SampleControlPoint.cs @@ -70,6 +70,6 @@ namespace osu.Game.Beatmaps.ControlPoints public override bool EquivalentTo(ControlPoint other) => other is SampleControlPoint otherTyped && - string.Equals(SampleBank, otherTyped.SampleBank) && SampleVolume == otherTyped.SampleVolume; + SampleBank == otherTyped.SampleBank && SampleVolume == otherTyped.SampleVolume; } } diff --git a/osu.Game/Scoring/ScoreManager.cs b/osu.Game/Scoring/ScoreManager.cs index 3279af05b6..332b3e3f05 100644 --- a/osu.Game/Scoring/ScoreManager.cs +++ b/osu.Game/Scoring/ScoreManager.cs @@ -57,7 +57,7 @@ namespace osu.Game.Scoring } protected override IEnumerable GetStableImportPaths(Storage stableStorage) - => stableStorage.GetFiles(ImportFromStablePath).Where(p => HandledExtensions.Any(ext => Path.GetExtension(p)?.Equals(ext, StringComparison.InvariantCultureIgnoreCase) ?? false)); + => stableStorage.GetFiles(ImportFromStablePath).Where(p => HandledExtensions.Any(ext => Path.GetExtension(p)?.Equals(ext, StringComparison.OrdinalIgnoreCase) ?? false)); public Score GetScore(ScoreInfo score) => new LegacyDatabasedScore(score, rulesets, beatmaps(), Files.Store); diff --git a/osu.Game/Screens/Select/Carousel/CarouselBeatmapSet.cs b/osu.Game/Screens/Select/Carousel/CarouselBeatmapSet.cs index 35816fe620..301d0d4dae 100644 --- a/osu.Game/Screens/Select/Carousel/CarouselBeatmapSet.cs +++ b/osu.Game/Screens/Select/Carousel/CarouselBeatmapSet.cs @@ -37,13 +37,13 @@ namespace osu.Game.Screens.Select.Carousel { default: case SortMode.Artist: - return string.Compare(BeatmapSet.Metadata.Artist, otherSet.BeatmapSet.Metadata.Artist, StringComparison.InvariantCultureIgnoreCase); + return string.Compare(BeatmapSet.Metadata.Artist, otherSet.BeatmapSet.Metadata.Artist, StringComparison.OrdinalIgnoreCase); case SortMode.Title: - return string.Compare(BeatmapSet.Metadata.Title, otherSet.BeatmapSet.Metadata.Title, StringComparison.InvariantCultureIgnoreCase); + return string.Compare(BeatmapSet.Metadata.Title, otherSet.BeatmapSet.Metadata.Title, StringComparison.OrdinalIgnoreCase); case SortMode.Author: - return string.Compare(BeatmapSet.Metadata.Author.Username, otherSet.BeatmapSet.Metadata.Author.Username, StringComparison.InvariantCultureIgnoreCase); + return string.Compare(BeatmapSet.Metadata.Author.Username, otherSet.BeatmapSet.Metadata.Author.Username, StringComparison.OrdinalIgnoreCase); case SortMode.DateAdded: return otherSet.BeatmapSet.DateAdded.CompareTo(BeatmapSet.DateAdded); diff --git a/osu.Game/Screens/Select/FilterCriteria.cs b/osu.Game/Screens/Select/FilterCriteria.cs index e3ad76ac35..c4d9996377 100644 --- a/osu.Game/Screens/Select/FilterCriteria.cs +++ b/osu.Game/Screens/Select/FilterCriteria.cs @@ -105,7 +105,7 @@ namespace osu.Game.Screens.Select public string SearchTerm; - public bool Equals(OptionalTextFilter other) => SearchTerm?.Equals(other.SearchTerm) ?? true; + public bool Equals(OptionalTextFilter other) => SearchTerm == other.SearchTerm; } } } diff --git a/osu.Game/Skinning/LegacySkinResourceStore.cs b/osu.Game/Skinning/LegacySkinResourceStore.cs index 79a4e2e932..249d48b34b 100644 --- a/osu.Game/Skinning/LegacySkinResourceStore.cs +++ b/osu.Game/Skinning/LegacySkinResourceStore.cs @@ -34,7 +34,7 @@ namespace osu.Game.Skinning } private string getPathForFile(string filename) => - source.Files.Find(f => string.Equals(f.Filename, filename, StringComparison.InvariantCultureIgnoreCase))?.FileInfo.StoragePath; + source.Files.Find(f => string.Equals(f.Filename, filename, StringComparison.OrdinalIgnoreCase))?.FileInfo.StoragePath; public override IEnumerable GetAvailableResources() => source.Files.Select(f => f.Filename); } diff --git a/osu.Game/Storyboards/Drawables/DrawableStoryboardAnimation.cs b/osu.Game/Storyboards/Drawables/DrawableStoryboardAnimation.cs index de3077c025..4f8e39fa1b 100644 --- a/osu.Game/Storyboards/Drawables/DrawableStoryboardAnimation.cs +++ b/osu.Game/Storyboards/Drawables/DrawableStoryboardAnimation.cs @@ -71,7 +71,7 @@ namespace osu.Game.Storyboards.Drawables { var framePath = Animation.Path.Replace(".", frame + "."); - var path = beatmap.Value.BeatmapSetInfo.Files.Find(f => f.Filename.Equals(framePath, StringComparison.InvariantCultureIgnoreCase))?.FileInfo.StoragePath; + var path = beatmap.Value.BeatmapSetInfo.Files.Find(f => f.Filename.Equals(framePath, StringComparison.OrdinalIgnoreCase))?.FileInfo.StoragePath; if (path == null) continue; diff --git a/osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs b/osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs index 3a117d1713..ff48dab7e5 100644 --- a/osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs +++ b/osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs @@ -66,7 +66,7 @@ namespace osu.Game.Storyboards.Drawables [BackgroundDependencyLoader] private void load(IBindable beatmap, TextureStore textureStore) { - var path = beatmap.Value.BeatmapSetInfo?.Files?.Find(f => f.Filename.Equals(Sprite.Path, StringComparison.InvariantCultureIgnoreCase))?.FileInfo.StoragePath; + var path = beatmap.Value.BeatmapSetInfo?.Files?.Find(f => f.Filename.Equals(Sprite.Path, StringComparison.OrdinalIgnoreCase))?.FileInfo.StoragePath; if (path == null) return; From 61a6106e5270f692b19fe7c265b990e64254ff73 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Tue, 3 Dec 2019 19:20:49 +0800 Subject: [PATCH 0399/1829] CA2200: don't explictly throw caught exception. --- CodeAnalysis/osu.ruleset | 1 - osu.Game/Online/API/APIAccess.cs | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CodeAnalysis/osu.ruleset b/CodeAnalysis/osu.ruleset index 1aa8f66c93..0ec2f24797 100644 --- a/CodeAnalysis/osu.ruleset +++ b/CodeAnalysis/osu.ruleset @@ -38,7 +38,6 @@ - diff --git a/osu.Game/Online/API/APIAccess.cs b/osu.Game/Online/API/APIAccess.cs index 1c45d26afd..8bfc28e774 100644 --- a/osu.Game/Online/API/APIAccess.cs +++ b/osu.Game/Online/API/APIAccess.cs @@ -10,6 +10,7 @@ using System.Threading; using System.Threading.Tasks; using Newtonsoft.Json.Linq; using osu.Framework.Bindables; +using osu.Framework.Extensions.ExceptionExtensions; using osu.Framework.Graphics; using osu.Framework.Logging; using osu.Game.Configuration; @@ -249,7 +250,7 @@ namespace osu.Game.Online.API catch { // if we couldn't deserialize the error message let's throw the original exception outwards. - throw e; + e.Rethrow(); } } From 40b43b85f17499d0e772b03ebcaf9b02434f343c Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Tue, 10 Dec 2019 21:04:26 +0800 Subject: [PATCH 0400/1829] CA1715: use prefix for generic parameters. --- CodeAnalysis/osu.ruleset | 1 - .../Objects/Drawables/DrawableTaikoHitObject.cs | 8 ++++---- ...MutableDatabaseBackedStoreWithFileIncludes.cs | 6 +++--- .../UserInterfaceV2/LabelledComponent.cs | 6 +++--- osu.Game/IO/Legacy/SerializationReader.cs | 6 +++--- osu.Game/IO/Legacy/SerializationWriter.cs | 4 ++-- osu.Game/Online/Leaderboards/Leaderboard.cs | 10 +++++----- osu.Game/Overlays/OverlayHeaderTabControl.cs | 2 +- osu.Game/Overlays/OverlayTabControl.cs | 8 ++++---- osu.Game/Overlays/Settings/SettingsSlider.cs | 16 ++++++++-------- osu.Game/Overlays/UserProfileOverlay.cs | 2 +- 11 files changed, 34 insertions(+), 35 deletions(-) diff --git a/CodeAnalysis/osu.ruleset b/CodeAnalysis/osu.ruleset index 0ec2f24797..d497365f87 100644 --- a/CodeAnalysis/osu.ruleset +++ b/CodeAnalysis/osu.ruleset @@ -17,7 +17,6 @@ - diff --git a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs index 0db6498c12..2da5a9c403 100644 --- a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs +++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs @@ -105,19 +105,19 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables } } - public abstract class DrawableTaikoHitObject : DrawableTaikoHitObject - where TaikoHitType : TaikoHitObject + public abstract class DrawableTaikoHitObject : DrawableTaikoHitObject + where TTaikoHit : TaikoHitObject { public override Vector2 OriginPosition => new Vector2(DrawHeight / 2); - public new TaikoHitType HitObject; + public new TTaikoHit HitObject; protected readonly Vector2 BaseSize; protected readonly TaikoPiece MainPiece; private readonly Container strongHitContainer; - protected DrawableTaikoHitObject(TaikoHitType hitObject) + protected DrawableTaikoHitObject(TTaikoHit hitObject) : base(hitObject) { HitObject = hitObject; diff --git a/osu.Game/Database/MutableDatabaseBackedStoreWithFileIncludes.cs b/osu.Game/Database/MutableDatabaseBackedStoreWithFileIncludes.cs index 5d6ff6b09b..102081cd65 100644 --- a/osu.Game/Database/MutableDatabaseBackedStoreWithFileIncludes.cs +++ b/osu.Game/Database/MutableDatabaseBackedStoreWithFileIncludes.cs @@ -7,9 +7,9 @@ using osu.Framework.Platform; namespace osu.Game.Database { - public abstract class MutableDatabaseBackedStoreWithFileIncludes : MutableDatabaseBackedStore - where T : class, IHasPrimaryKey, ISoftDelete, IHasFiles - where U : INamedFileInfo + public abstract class MutableDatabaseBackedStoreWithFileIncludes : MutableDatabaseBackedStore + where T : class, IHasPrimaryKey, ISoftDelete, IHasFiles + where TFileInfo : INamedFileInfo { protected MutableDatabaseBackedStoreWithFileIncludes(IDatabaseContextFactory contextFactory, Storage storage = null) : base(contextFactory, storage) diff --git a/osu.Game/Graphics/UserInterfaceV2/LabelledComponent.cs b/osu.Game/Graphics/UserInterfaceV2/LabelledComponent.cs index 1819b36667..dd6a902989 100644 --- a/osu.Game/Graphics/UserInterfaceV2/LabelledComponent.cs +++ b/osu.Game/Graphics/UserInterfaceV2/LabelledComponent.cs @@ -7,15 +7,15 @@ using osu.Framework.Graphics.UserInterface; namespace osu.Game.Graphics.UserInterfaceV2 { - public abstract class LabelledComponent : LabelledDrawable, IHasCurrentValue - where T : Drawable, IHasCurrentValue + public abstract class LabelledComponent : LabelledDrawable, IHasCurrentValue + where TDrawable : Drawable, IHasCurrentValue { protected LabelledComponent(bool padded) : base(padded) { } - public Bindable Current + public Bindable Current { get => Component.Current; set => Component.Current = value; diff --git a/osu.Game/IO/Legacy/SerializationReader.cs b/osu.Game/IO/Legacy/SerializationReader.cs index aeb3ce754d..17cbd19838 100644 --- a/osu.Game/IO/Legacy/SerializationReader.cs +++ b/osu.Game/IO/Legacy/SerializationReader.cs @@ -116,13 +116,13 @@ namespace osu.Game.IO.Legacy } /// Reads a generic Dictionary from the buffer. - public IDictionary ReadDictionary() + public IDictionary ReadDictionary() { int count = ReadInt32(); if (count < 0) return null; - IDictionary d = new Dictionary(); - for (int i = 0; i < count; i++) d[(T)ReadObject()] = (U)ReadObject(); + IDictionary d = new Dictionary(); + for (int i = 0; i < count; i++) d[(TKey)ReadObject()] = (TValue)ReadObject(); return d; } diff --git a/osu.Game/IO/Legacy/SerializationWriter.cs b/osu.Game/IO/Legacy/SerializationWriter.cs index f30e4492af..c75de93bc8 100644 --- a/osu.Game/IO/Legacy/SerializationWriter.cs +++ b/osu.Game/IO/Legacy/SerializationWriter.cs @@ -102,7 +102,7 @@ namespace osu.Game.IO.Legacy } /// Writes a generic IDictionary to the buffer. - public void Write(IDictionary d) + public void Write(IDictionary d) { if (d == null) { @@ -112,7 +112,7 @@ namespace osu.Game.IO.Legacy { Write(d.Count); - foreach (KeyValuePair kvp in d) + foreach (KeyValuePair kvp in d) { WriteObject(kvp.Key); WriteObject(kvp.Value); diff --git a/osu.Game/Online/Leaderboards/Leaderboard.cs b/osu.Game/Online/Leaderboards/Leaderboard.cs index 94c50185da..9c48ebd09b 100644 --- a/osu.Game/Online/Leaderboards/Leaderboard.cs +++ b/osu.Game/Online/Leaderboards/Leaderboard.cs @@ -19,7 +19,7 @@ using osuTK.Graphics; namespace osu.Game.Online.Leaderboards { - public abstract class Leaderboard : Container, IOnlineComponent + public abstract class Leaderboard : Container, IOnlineComponent { private const double fade_duration = 300; @@ -39,9 +39,9 @@ namespace osu.Game.Online.Leaderboards protected override Container Content => content; - private IEnumerable scores; + private IEnumerable scores; - public IEnumerable Scores + public IEnumerable Scores { get => scores; set @@ -288,7 +288,7 @@ namespace osu.Game.Online.Leaderboards /// /// A callback which should be called when fetching is completed. Scheduling is not required. /// An responsible for the fetch operation. This will be queued and performed automatically. - protected abstract APIRequest FetchScores(Action> scoresCallback); + protected abstract APIRequest FetchScores(Action> scoresCallback); private Placeholder currentPlaceholder; @@ -359,6 +359,6 @@ namespace osu.Game.Online.Leaderboards } } - protected abstract LeaderboardScore CreateDrawableScore(ScoreInfo model, int index); + protected abstract LeaderboardScore CreateDrawableScore(TScoreInfo model, int index); } } diff --git a/osu.Game/Overlays/OverlayHeaderTabControl.cs b/osu.Game/Overlays/OverlayHeaderTabControl.cs index 5b56771dc1..7d0cdad6d8 100644 --- a/osu.Game/Overlays/OverlayHeaderTabControl.cs +++ b/osu.Game/Overlays/OverlayHeaderTabControl.cs @@ -12,7 +12,7 @@ namespace osu.Game.Overlays AccentColour = AccentColour, }; - private class OverlayHeaderTabItem : OverlayTabItem + private class OverlayHeaderTabItem : OverlayTabItem { public OverlayHeaderTabItem(string value) : base(value) diff --git a/osu.Game/Overlays/OverlayTabControl.cs b/osu.Game/Overlays/OverlayTabControl.cs index 20649c8a74..4c396eabc1 100644 --- a/osu.Game/Overlays/OverlayTabControl.cs +++ b/osu.Game/Overlays/OverlayTabControl.cs @@ -32,7 +32,7 @@ namespace osu.Game.Overlays foreach (TabItem tabItem in TabContainer) { - ((OverlayTabItem)tabItem).AccentColour = value; + ((OverlayTabItem)tabItem).AccentColour = value; } } } @@ -59,9 +59,9 @@ namespace osu.Game.Overlays protected override Dropdown CreateDropdown() => null; - protected override TabItem CreateTabItem(T value) => new OverlayTabItem(value); + protected override TabItem CreateTabItem(T value) => new OverlayTabItem(value); - protected class OverlayTabItem : TabItem + protected class OverlayTabItem : TabItem { private readonly ExpandingBar bar; @@ -84,7 +84,7 @@ namespace osu.Game.Overlays } } - public OverlayTabItem(U value) + public OverlayTabItem(T value) : base(value) { AutoSizeAxes = Axes.X; diff --git a/osu.Game/Overlays/Settings/SettingsSlider.cs b/osu.Game/Overlays/Settings/SettingsSlider.cs index 20e08c0cd8..96c0279a7b 100644 --- a/osu.Game/Overlays/Settings/SettingsSlider.cs +++ b/osu.Game/Overlays/Settings/SettingsSlider.cs @@ -12,11 +12,11 @@ namespace osu.Game.Overlays.Settings { } - public class SettingsSlider : SettingsItem - where T : struct, IEquatable, IComparable, IConvertible - where U : OsuSliderBar, new() + public class SettingsSlider : SettingsItem + where TValue : struct, IEquatable, IComparable, IConvertible + where TSlider : OsuSliderBar, new() { - protected override Drawable CreateControl() => new U + protected override Drawable CreateControl() => new TSlider { Margin = new MarginPadding { Top = 5, Bottom = 5 }, RelativeSizeAxes = Axes.X @@ -24,14 +24,14 @@ namespace osu.Game.Overlays.Settings public bool TransferValueOnCommit { - get => ((U)Control).TransferValueOnCommit; - set => ((U)Control).TransferValueOnCommit = value; + get => ((TSlider)Control).TransferValueOnCommit; + set => ((TSlider)Control).TransferValueOnCommit = value; } public float KeyboardStep { - get => ((U)Control).KeyboardStep; - set => ((U)Control).KeyboardStep = value; + get => ((TSlider)Control).KeyboardStep; + set => ((TSlider)Control).KeyboardStep = value; } } } diff --git a/osu.Game/Overlays/UserProfileOverlay.cs b/osu.Game/Overlays/UserProfileOverlay.cs index b5e7b8bedb..a34fc619a8 100644 --- a/osu.Game/Overlays/UserProfileOverlay.cs +++ b/osu.Game/Overlays/UserProfileOverlay.cs @@ -165,7 +165,7 @@ namespace osu.Game.Overlays AccentColour = colours.Seafoam; } - private class ProfileTabItem : OverlayTabItem + private class ProfileTabItem : OverlayTabItem { public ProfileTabItem(ProfileSection value) : base(value) From 5079feaad16ccd4df3b0e993d4bc7c6705deb686 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 17 Dec 2019 14:04:03 +0900 Subject: [PATCH 0401/1829] Remove unnecessary string interpolation --- osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs index d5d4c7e5ec..fede99f450 100644 --- a/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs +++ b/osu.Game.Tests/Visual/Background/TestSceneUserDimContainer.cs @@ -94,7 +94,7 @@ namespace osu.Game.Tests.Visual.Background AddStep("set dim level 0.6", () => userDimContainer.UserDimLevel.Value = test_user_dim); AddUntilStep("dim reached", () => userDimContainer.DimEqual(test_user_dim)); - AddStep($"ignore settings", () => userDimContainer.IgnoreUserSettings.Value = true); + AddStep("ignore settings", () => userDimContainer.IgnoreUserSettings.Value = true); AddUntilStep("no dim", () => userDimContainer.DimEqual(0)); AddStep("set break", () => isBreakTime.Value = true); AddAssert("no dim", () => userDimContainer.DimEqual(0)); From 946a202ee555cc26f12aabca4d9964dea2d99cdf Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 17 Dec 2019 15:34:16 +0900 Subject: [PATCH 0402/1829] Fix online replays not being available locally --- osu.Game/Beatmaps/BeatmapManager.cs | 4 +++- osu.Game/Database/DownloadableArchiveModelManager.cs | 6 ++++-- osu.Game/Scoring/ScoreManager.cs | 4 +++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/osu.Game/Beatmaps/BeatmapManager.cs b/osu.Game/Beatmaps/BeatmapManager.cs index a2e750cac5..a10ad73817 100644 --- a/osu.Game/Beatmaps/BeatmapManager.cs +++ b/osu.Game/Beatmaps/BeatmapManager.cs @@ -158,7 +158,9 @@ namespace osu.Game.Beatmaps void resetIds() => beatmapSet.Beatmaps.ForEach(b => b.OnlineBeatmapID = null); } - protected override bool CheckLocalAvailability(BeatmapSetInfo model, IQueryable items) => items.Any(b => b.OnlineBeatmapSetID == model.OnlineBeatmapSetID); + protected override bool CheckLocalAvailability(BeatmapSetInfo model, IQueryable items) + => base.CheckLocalAvailability(model, items) + || (model.OnlineBeatmapSetID != null && items.Any(b => b.OnlineBeatmapSetID == model.OnlineBeatmapSetID)); /// /// Delete a beatmap difficulty. diff --git a/osu.Game/Database/DownloadableArchiveModelManager.cs b/osu.Game/Database/DownloadableArchiveModelManager.cs index 243060388f..5f688c149d 100644 --- a/osu.Game/Database/DownloadableArchiveModelManager.cs +++ b/osu.Game/Database/DownloadableArchiveModelManager.cs @@ -33,7 +33,8 @@ namespace osu.Game.Database private readonly MutableDatabaseBackedStoreWithFileIncludes modelStore; - protected DownloadableArchiveModelManager(Storage storage, IDatabaseContextFactory contextFactory, IAPIProvider api, MutableDatabaseBackedStoreWithFileIncludes modelStore, IIpcHost importHost = null) + protected DownloadableArchiveModelManager(Storage storage, IDatabaseContextFactory contextFactory, IAPIProvider api, MutableDatabaseBackedStoreWithFileIncludes modelStore, + IIpcHost importHost = null) : base(storage, contextFactory, modelStore, importHost) { this.api = api; @@ -124,7 +125,8 @@ namespace osu.Game.Database /// The whose existence needs to be checked. /// The usable items present in the store. /// Whether the exists. - protected abstract bool CheckLocalAvailability(TModel model, IQueryable items); + protected virtual bool CheckLocalAvailability(TModel model, IQueryable items) + => model.ID > 0 && items.Any(i => i.ID == model.ID && i.Files.Any()); public ArchiveDownloadRequest GetExistingDownload(TModel model) => currentDownloads.Find(r => r.Model.Equals(model)); diff --git a/osu.Game/Scoring/ScoreManager.cs b/osu.Game/Scoring/ScoreManager.cs index 3279af05b6..5c846e8062 100644 --- a/osu.Game/Scoring/ScoreManager.cs +++ b/osu.Game/Scoring/ScoreManager.cs @@ -69,6 +69,8 @@ namespace osu.Game.Scoring protected override ArchiveDownloadRequest CreateDownloadRequest(ScoreInfo score, bool minimiseDownload) => new DownloadReplayRequest(score); - protected override bool CheckLocalAvailability(ScoreInfo model, IQueryable items) => items.Any(s => s.Equals(model) && s.Files.Any()); + protected override bool CheckLocalAvailability(ScoreInfo model, IQueryable items) + => base.CheckLocalAvailability(model, items) + || (model.OnlineScoreID != null && items.Any(i => i.OnlineScoreID == model.OnlineScoreID)); } } From 59c3b39ed8a7ab63fe653ec60a0d9cdf3e4551af Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 17 Dec 2019 15:46:50 +0900 Subject: [PATCH 0403/1829] Add test --- osu.Game.Tests/Scores/IO/ImportScoreTest.cs | 47 ++++++++++++++++++++- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tests/Scores/IO/ImportScoreTest.cs b/osu.Game.Tests/Scores/IO/ImportScoreTest.cs index 89b5db9e1b..a95e699470 100644 --- a/osu.Game.Tests/Scores/IO/ImportScoreTest.cs +++ b/osu.Game.Tests/Scores/IO/ImportScoreTest.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -10,6 +11,7 @@ using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Platform; using osu.Game.Beatmaps; +using osu.Game.IO.Archives; using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Osu; using osu.Game.Rulesets.Osu.Mods; @@ -154,7 +156,30 @@ namespace osu.Game.Tests.Scores.IO } } - private async Task loadIntoOsu(OsuGameBase osu, ScoreInfo score) + [Test] + public async Task TestOnlineScoreIsAvailableLocally() + { + using (HeadlessGameHost host = new CleanRunHeadlessGameHost("TestImportWithDeletedBeatmapSet")) + { + try + { + var osu = await loadOsu(host); + + await loadIntoOsu(osu, new ScoreInfo { OnlineScoreID = 2 }, new TestArchiveReader()); + + var scoreManager = osu.Dependencies.Get(); + + // Note: A new score reference is used here since the import process mutates the original object to set an ID + Assert.That(scoreManager.IsAvailableLocally(new ScoreInfo { OnlineScoreID = 2 })); + } + finally + { + host.Exit(); + } + } + } + + private async Task loadIntoOsu(OsuGameBase osu, ScoreInfo score, ArchiveReader archive = null) { var beatmapManager = osu.Dependencies.Get(); @@ -165,7 +190,7 @@ namespace osu.Game.Tests.Scores.IO score.Ruleset = new OsuRuleset().RulesetInfo; var scoreManager = osu.Dependencies.Get(); - await scoreManager.Import(score); + await scoreManager.Import(score, archive); return scoreManager.GetAllUsableScores().FirstOrDefault(); } @@ -196,5 +221,23 @@ namespace osu.Game.Tests.Scores.IO Assert.IsTrue(task.Wait(timeout), failureMessage); } + + private class TestArchiveReader : ArchiveReader + { + public TestArchiveReader() + : base("test_archive") + { + } + + public override Stream GetStream(string name) => new MemoryStream(); + + public override void Dispose() + { + } + + public override IEnumerable Filenames => new[] { "test_file.osr" }; + + public override Stream GetUnderlyingStream() => new MemoryStream(); + } } } From 927ba4c1133088a67233a32fd56ccbe670c97500 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Tue, 17 Dec 2019 15:20:05 +0800 Subject: [PATCH 0404/1829] Update expected exception in test. --- osu.Game.Tests/NonVisual/LimitedCapacityStackTest.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game.Tests/NonVisual/LimitedCapacityStackTest.cs b/osu.Game.Tests/NonVisual/LimitedCapacityStackTest.cs index 1c78b63499..d5ac38008e 100644 --- a/osu.Game.Tests/NonVisual/LimitedCapacityStackTest.cs +++ b/osu.Game.Tests/NonVisual/LimitedCapacityStackTest.cs @@ -25,7 +25,7 @@ namespace osu.Game.Tests.NonVisual { Assert.AreEqual(0, stack.Count); - Assert.Throws(() => + Assert.Throws(() => { int unused = stack[0]; }); @@ -55,7 +55,7 @@ namespace osu.Game.Tests.NonVisual // e.g. indices 3, 4, 5, 6 (out of range) for (int i = stack.Count; i < stack.Count + capacity; i++) { - Assert.Throws(() => + Assert.Throws(() => { int unused = stack[i]; }); @@ -80,7 +80,7 @@ namespace osu.Game.Tests.NonVisual // e.g. indices 3, 4, 5, 6 (out of range) for (int i = stack.Count; i < stack.Count + capacity; i++) { - Assert.Throws(() => + Assert.Throws(() => { int unused = stack[i]; }); From 6da581f3fe86047762679905ca3ce14bbccb836b Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 17 Dec 2019 16:35:40 +0900 Subject: [PATCH 0405/1829] Snap based on end position/time of the previous object --- .../Edit/OsuDistanceSnapGrid.cs | 3 ++- .../Edit/OsuHitObjectComposer.cs | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/OsuDistanceSnapGrid.cs b/osu.Game.Rulesets.Osu/Edit/OsuDistanceSnapGrid.cs index bde86a2890..ff3be97427 100644 --- a/osu.Game.Rulesets.Osu/Edit/OsuDistanceSnapGrid.cs +++ b/osu.Game.Rulesets.Osu/Edit/OsuDistanceSnapGrid.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using JetBrains.Annotations; +using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Osu.Objects; using osu.Game.Screens.Edit.Compose.Components; @@ -10,7 +11,7 @@ namespace osu.Game.Rulesets.Osu.Edit public class OsuDistanceSnapGrid : CircularDistanceSnapGrid { public OsuDistanceSnapGrid(OsuHitObject hitObject, [CanBeNull] OsuHitObject nextHitObject = null) - : base(hitObject.StackedPosition, hitObject.StartTime, nextHitObject?.StartTime) + : base(hitObject.StackedEndPosition, hitObject.GetEndTime(), nextHitObject?.StartTime) { Masking = true; } diff --git a/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs b/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs index 675b09fc6d..a2c1a5f5f4 100644 --- a/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs +++ b/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs @@ -92,7 +92,24 @@ namespace osu.Game.Rulesets.Osu.Edit return null; OsuHitObject sourceObject = EditorBeatmap.HitObjects[sourceIndex]; - OsuHitObject targetObject = sourceIndex + targetOffset < EditorBeatmap.HitObjects.Count ? EditorBeatmap.HitObjects[sourceIndex + targetOffset] : null; + + int targetIndex = sourceIndex + targetOffset; + OsuHitObject targetObject = null; + + // Keep advancing the target object while its start time falls before the end time of the source object + while (true) + { + if (targetIndex >= EditorBeatmap.HitObjects.Count) + break; + + if (EditorBeatmap.HitObjects[targetIndex].StartTime >= sourceObject.GetEndTime()) + { + targetObject = EditorBeatmap.HitObjects[targetIndex]; + break; + } + + targetIndex++; + } return new OsuDistanceSnapGrid(sourceObject, targetObject); } From 1e798a8dbe1c31244e52e7ab7d01ec96a5ce76ff Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 17 Dec 2019 17:53:48 +0900 Subject: [PATCH 0406/1829] Add abstract implementation of slider path --- .../Objects/Drawables/DrawableSlider.cs | 2 +- .../Drawables/Pieces/DrawableSliderPath.cs | 70 ++++++++++++++ .../Objects/Drawables/Pieces/SliderBody.cs | 92 ++++--------------- 3 files changed, 88 insertions(+), 76 deletions(-) create mode 100644 osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/DrawableSliderPath.cs diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs index 1e0402d492..e6ab2e580c 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs @@ -201,7 +201,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables { base.ApplySkin(skin, allowFallback); - Body.BorderSize = skin.GetConfig(OsuSkinConfiguration.SliderBorderSize)?.Value ?? SliderBody.DEFAULT_BORDER_SIZE; + Body.BorderSize = skin.GetConfig(OsuSkinConfiguration.SliderBorderSize)?.Value ?? 1; sliderPathRadius = skin.GetConfig(OsuSkinConfiguration.SliderPathRadius)?.Value ?? OsuHitObject.OBJECT_RADIUS; updatePathRadius(); diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/DrawableSliderPath.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/DrawableSliderPath.cs new file mode 100644 index 0000000000..c31d6beb01 --- /dev/null +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/DrawableSliderPath.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 osu.Framework.Graphics.Lines; +using osuTK.Graphics; + +namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces +{ + public abstract class DrawableSliderPath : SmoothPath + { + protected const float BORDER_PORTION = 0.128f; + protected const float GRADIENT_PORTION = 1 - BORDER_PORTION; + + private const float border_max_size = 8f; + private const float border_min_size = 0f; + + private Color4 borderColour = Color4.White; + + public Color4 BorderColour + { + get => borderColour; + set + { + if (borderColour == value) + return; + + borderColour = value; + + InvalidateTexture(); + } + } + + private Color4 accentColour = Color4.White; + + public Color4 AccentColour + { + get => accentColour; + set + { + if (accentColour == value) + return; + + accentColour = value; + + InvalidateTexture(); + } + } + + private float borderSize = 1; + + public float BorderSize + { + get => borderSize; + set + { + if (borderSize == value) + return; + + if (value < border_min_size || value > border_max_size) + return; + + borderSize = value; + + InvalidateTexture(); + } + } + + protected float CalculatedBorderPortion => BorderSize * BORDER_PORTION; + } +} diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBody.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBody.cs index 24a437c20e..dcaa9748e9 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBody.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBody.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Lines; using osuTK; @@ -12,9 +13,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces { public abstract class SliderBody : CompositeDrawable { - public const float DEFAULT_BORDER_SIZE = 1; - - private SliderPath path; + private DrawableSliderPath path; protected Path Path => path; @@ -80,19 +79,19 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces } /// - /// Initialises a new , releasing all resources retained by the old one. + /// Initialises a new , releasing all resources retained by the old one. /// public virtual void RecyclePath() { - InternalChild = path = new SliderPath + InternalChild = path = CreateSliderPath().With(p => { - Position = path?.Position ?? Vector2.Zero, - PathRadius = path?.PathRadius ?? 10, - AccentColour = path?.AccentColour ?? Color4.White, - BorderColour = path?.BorderColour ?? Color4.White, - BorderSize = path?.BorderSize ?? DEFAULT_BORDER_SIZE, - Vertices = path?.Vertices ?? Array.Empty() - }; + p.Position = path?.Position ?? Vector2.Zero; + p.PathRadius = path?.PathRadius ?? 10; + p.AccentColour = path?.AccentColour ?? Color4.White; + p.BorderColour = path?.BorderColour ?? Color4.White; + p.BorderSize = path?.BorderSize ?? 1; + p.Vertices = path?.Vertices ?? Array.Empty(); + }); } public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => path.ReceivePositionalInputAt(screenSpacePos); @@ -103,77 +102,20 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces /// The vertices protected void SetVertices(IReadOnlyList vertices) => path.Vertices = vertices; - private class SliderPath : SmoothPath + protected virtual DrawableSliderPath CreateSliderPath() => new DefaultDrawableSliderPath(); + + protected class DefaultDrawableSliderPath : DrawableSliderPath { - private const float border_max_size = 8f; - private const float border_min_size = 0f; - - private const float border_portion = 0.128f; - private const float gradient_portion = 1 - border_portion; - private const float opacity_at_centre = 0.3f; private const float opacity_at_edge = 0.8f; - private Color4 borderColour = Color4.White; - - public Color4 BorderColour - { - get => borderColour; - set - { - if (borderColour == value) - return; - - borderColour = value; - - InvalidateTexture(); - } - } - - private Color4 accentColour = Color4.White; - - public Color4 AccentColour - { - get => accentColour; - set - { - if (accentColour == value) - return; - - accentColour = value; - - InvalidateTexture(); - } - } - - private float borderSize = DEFAULT_BORDER_SIZE; - - public float BorderSize - { - get => borderSize; - set - { - if (borderSize == value) - return; - - if (value < border_min_size || value > border_max_size) - return; - - borderSize = value; - - InvalidateTexture(); - } - } - - private float calculatedBorderPortion => BorderSize * border_portion; - protected override Color4 ColourAt(float position) { - if (calculatedBorderPortion != 0f && position <= calculatedBorderPortion) + if (CalculatedBorderPortion != 0f && position <= CalculatedBorderPortion) return BorderColour; - position -= calculatedBorderPortion; - return new Color4(AccentColour.R, AccentColour.G, AccentColour.B, (opacity_at_edge - (opacity_at_edge - opacity_at_centre) * position / gradient_portion) * AccentColour.A); + position -= CalculatedBorderPortion; + return new Color4(AccentColour.R, AccentColour.G, AccentColour.B, (opacity_at_edge - (opacity_at_edge - opacity_at_centre) * position / GRADIENT_PORTION) * AccentColour.A); } } } From 8cd96acffc2e3f3fe61062983804da1a4db33ff9 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 17 Dec 2019 12:05:35 +0300 Subject: [PATCH 0407/1829] CounterPill implementation --- .../Online/TestSceneProfileCounterPill.cs | 42 +++++++++++++ .../Overlays/Profile/Sections/CounterPill.cs | 61 +++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 osu.Game.Tests/Visual/Online/TestSceneProfileCounterPill.cs create mode 100644 osu.Game/Overlays/Profile/Sections/CounterPill.cs diff --git a/osu.Game.Tests/Visual/Online/TestSceneProfileCounterPill.cs b/osu.Game.Tests/Visual/Online/TestSceneProfileCounterPill.cs new file mode 100644 index 0000000000..468239cf08 --- /dev/null +++ b/osu.Game.Tests/Visual/Online/TestSceneProfileCounterPill.cs @@ -0,0 +1,42 @@ +// 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 NUnit.Framework; +using osu.Framework.Bindables; +using osu.Framework.Graphics; +using osu.Game.Overlays.Profile.Sections; + +namespace osu.Game.Tests.Visual.Online +{ + public class TestSceneProfileCounterPill : OsuTestScene + { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(CounterPill) + }; + + private readonly CounterPill pill; + private readonly BindableInt value = new BindableInt(); + + public TestSceneProfileCounterPill() + { + Child = pill = new CounterPill + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Current = { BindTarget = value } + }; + } + + [Test] + public void TestVisibility() + { + AddStep("Set value to 0", () => value.Value = 0); + AddAssert("Check hidden", () => !pill.IsPresent); + AddStep("Set value to 10", () => value.Value = 10); + AddAssert("Check visible", () => pill.IsPresent); + } + } +} diff --git a/osu.Game/Overlays/Profile/Sections/CounterPill.cs b/osu.Game/Overlays/Profile/Sections/CounterPill.cs new file mode 100644 index 0000000000..bd760c4139 --- /dev/null +++ b/osu.Game/Overlays/Profile/Sections/CounterPill.cs @@ -0,0 +1,61 @@ +// 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.Containers; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Shapes; +using osu.Game.Graphics; +using osu.Framework.Bindables; +using osu.Game.Graphics.Sprites; + +namespace osu.Game.Overlays.Profile.Sections +{ + public class CounterPill : CircularContainer + { + private const int duration = 200; + + public readonly BindableInt Current = new BindableInt(); + + private readonly OsuSpriteText counter; + + public CounterPill() + { + AutoSizeAxes = Axes.Both; + Alpha = 0; + Masking = true; + Children = new Drawable[] + { + new Box + { + RelativeSizeAxes = Axes.Both, + Colour = OsuColour.Gray(0.05f) + }, + counter = new OsuSpriteText + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Margin = new MarginPadding { Horizontal = 10, Vertical = 5 }, + Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold) + } + }; + } + + protected override void LoadComplete() + { + base.LoadComplete(); + Current.BindValueChanged(onCurrentChanged, true); + } + + private void onCurrentChanged(ValueChangedEvent value) + { + if (value.NewValue == 0) + { + this.FadeOut(duration, Easing.OutQuint); + return; + } + + counter.Text = value.NewValue.ToString(); + this.FadeIn(duration, Easing.OutQuint); + } + } +} From 9caed9e98a25993d6984eb74d541c9e3ad1c6012 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 17 Dec 2019 18:16:25 +0900 Subject: [PATCH 0408/1829] Add legacy slider body support --- .../Objects/Drawables/DrawableSlider.cs | 6 ++- .../Drawables/Pieces/SnakingSliderBody.cs | 12 ++--- osu.Game.Rulesets.Osu/OsuSkinComponents.cs | 3 +- .../Skinning/LegacySliderBody.cs | 47 +++++++++++++++++++ .../Skinning/OsuLegacySkinTransformer.cs | 6 +++ 5 files changed, 64 insertions(+), 10 deletions(-) create mode 100644 osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs index e6ab2e580c..46a219a69c 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs @@ -24,9 +24,11 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables public DrawableSliderHead HeadCircle => headContainer.Child; public DrawableSliderTail TailCircle => tailContainer.Child; - public readonly SnakingSliderBody Body; public readonly SliderBall Ball; + public SnakingSliderBody Body => (SnakingSliderBody)skinnedBody.Drawable; + + private readonly SkinnableDrawable skinnedBody; private readonly Container headContainer; private readonly Container tailContainer; private readonly Container tickContainer; @@ -51,7 +53,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables InternalChildren = new Drawable[] { - Body = new SnakingSliderBody(s), + skinnedBody = new SkinnableDrawable(new OsuSkinComponent(OsuSkinComponents.SliderBody), _ => new SnakingSliderBody(), confineMode: ConfineMode.NoScaling), tickContainer = new Container { RelativeSizeAxes = Axes.Both }, repeatContainer = new Container { RelativeSizeAxes = Axes.Both }, Ball = new SliderBall(s, this) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SnakingSliderBody.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SnakingSliderBody.cs index f2150280b3..8a8668d6af 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SnakingSliderBody.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SnakingSliderBody.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; +using osu.Game.Rulesets.Objects.Drawables; using osu.Game.Rulesets.Objects.Types; using osuTK; @@ -50,16 +51,13 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces /// private Vector2 snakedPathOffset; - private readonly Slider slider; - - public SnakingSliderBody(Slider slider) - { - this.slider = slider; - } + private Slider slider; [BackgroundDependencyLoader] - private void load() + private void load(DrawableHitObject drawableObject) { + slider = (Slider)drawableObject.HitObject; + Refresh(); } diff --git a/osu.Game.Rulesets.Osu/OsuSkinComponents.cs b/osu.Game.Rulesets.Osu/OsuSkinComponents.cs index 8dd48eace0..4ea4220faf 100644 --- a/osu.Game.Rulesets.Osu/OsuSkinComponents.cs +++ b/osu.Game.Rulesets.Osu/OsuSkinComponents.cs @@ -14,6 +14,7 @@ namespace osu.Game.Rulesets.Osu ReverseArrow, HitCircleText, SliderFollowCircle, - SliderBall + SliderBall, + SliderBody, } } diff --git a/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs b/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs new file mode 100644 index 0000000000..6a26529f4c --- /dev/null +++ b/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs @@ -0,0 +1,47 @@ +// 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 osu.Framework.Extensions.Color4Extensions; +using osu.Framework.MathUtils; +using osu.Game.Rulesets.Osu.Objects.Drawables.Pieces; +using osuTK.Graphics; + +namespace osu.Game.Rulesets.Osu.Skinning +{ + public class LegacySliderBody : SnakingSliderBody + { + protected override DrawableSliderPath CreateSliderPath() => new LegacyDrawableSliderPath(); + + private class LegacyDrawableSliderPath : DrawableSliderPath + { + public new Color4 AccentColour => new Color4(base.AccentColour.R, base.AccentColour.G, base.AccentColour.B, 0.70f); + + protected override Color4 ColourAt(float position) + { + if (CalculatedBorderPortion != 0f && position <= CalculatedBorderPortion) + return BorderColour; + + position -= BORDER_PORTION; + + Color4 outerColour = AccentColour.Darken(0.1f); + Color4 innerColour = lighten(AccentColour, 0.5f); + + return Interpolation.ValueAt(position / GRADIENT_PORTION, outerColour, innerColour, 0, 1); + } + + /// + /// Lightens a colour in a way more friendly to dark or strong colours. + /// + private static Color4 lighten(Color4 color, float amount) + { + amount *= 0.5f; + return new Color4( + Math.Min(1, color.R * (1 + 0.5f * amount) + 1 * amount), + Math.Min(1, color.G * (1 + 0.5f * amount) + 1 * amount), + Math.Min(1, color.B * (1 + 0.5f * amount) + 1 * amount), + color.A); + } + } + } +} diff --git a/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs b/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs index f5b7d9166f..71770dedce 100644 --- a/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs +++ b/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs @@ -73,6 +73,12 @@ namespace osu.Game.Rulesets.Osu.Skinning return null; + case OsuSkinComponents.SliderBody: + if (hasHitCircle.Value) + return new LegacySliderBody(); + + return null; + case OsuSkinComponents.HitCircle: if (hasHitCircle.Value) return new LegacyMainCirclePiece(); From 023892738af69c35902c39c43945906fb0b284ea Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 17 Dec 2019 12:36:44 +0300 Subject: [PATCH 0409/1829] Integration into overlay --- .../Beatmaps/PaginatedBeatmapContainer.cs | 22 +++++++++++++++ .../Profile/Sections/PaginatedContainer.cs | 28 +++++++++++++++++-- .../Sections/Ranks/PaginatedScoreContainer.cs | 12 ++++++++ osu.Game/Users/User.cs | 18 ++++++++++++ 4 files changed, 77 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/Beatmaps/PaginatedBeatmapContainer.cs b/osu.Game/Overlays/Profile/Sections/Beatmaps/PaginatedBeatmapContainer.cs index 919f8a2fa0..6684420cf4 100644 --- a/osu.Game/Overlays/Profile/Sections/Beatmaps/PaginatedBeatmapContainer.cs +++ b/osu.Game/Overlays/Profile/Sections/Beatmaps/PaginatedBeatmapContainer.cs @@ -38,5 +38,27 @@ namespace osu.Game.Overlays.Profile.Sections.Beatmaps Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, }; + + protected override int GetCount(User user) + { + switch (type) + { + default: + case BeatmapSetType.Favourite: + return user.FavouriteBeatmapsetCount; + + case BeatmapSetType.Graveyard: + return user.GraveyardBeatmapsetCount; + + case BeatmapSetType.Loved: + return user.LovedBeatmapsetCount; + + case BeatmapSetType.RankedAndApproved: + return user.RankedAndApprovedBeatmapsetCount; + + case BeatmapSetType.Unranked: + return user.UnrankedBeatmapsetCount; + } + } } } diff --git a/osu.Game/Overlays/Profile/Sections/PaginatedContainer.cs b/osu.Game/Overlays/Profile/Sections/PaginatedContainer.cs index dc1a847b14..94d5f99f86 100644 --- a/osu.Game/Overlays/Profile/Sections/PaginatedContainer.cs +++ b/osu.Game/Overlays/Profile/Sections/PaginatedContainer.cs @@ -23,6 +23,7 @@ namespace osu.Game.Overlays.Profile.Sections private readonly OsuSpriteText missingText; private APIRequest> retrievalRequest; private CancellationTokenSource loadCancellation; + private readonly BindableInt count = new BindableInt(); [Resolved] private IAPIProvider api { get; set; } @@ -44,11 +45,28 @@ namespace osu.Game.Overlays.Profile.Sections Children = new Drawable[] { - new OsuSpriteText + new FillFlowContainer { - Text = header, - Font = OsuFont.GetFont(size: 20, weight: FontWeight.Bold), + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(5, 0), Margin = new MarginPadding { Top = 10, Bottom = 10 }, + Children = new Drawable[] + { + new OsuSpriteText + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + Text = header, + Font = OsuFont.GetFont(size: 20, weight: FontWeight.Bold), + }, + new CounterPill + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + Current = { BindTarget = count } + } + } }, ItemsContainer = new FillFlowContainer { @@ -90,6 +108,8 @@ namespace osu.Game.Overlays.Profile.Sections VisiblePages = 0; ItemsContainer.Clear(); + count.Value = GetCount(e.NewValue); + if (e.NewValue != null) showMore(); } @@ -124,6 +144,8 @@ namespace osu.Game.Overlays.Profile.Sections }, loadCancellation.Token); }); + protected virtual int GetCount(User user) => 0; + protected abstract APIRequest> CreateRequest(); protected abstract Drawable CreateDrawableItem(TModel model); diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/PaginatedScoreContainer.cs b/osu.Game/Overlays/Profile/Sections/Ranks/PaginatedScoreContainer.cs index 5b58fc0930..fa74d76dfc 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/PaginatedScoreContainer.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/PaginatedScoreContainer.cs @@ -32,6 +32,18 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks protected override APIRequest> CreateRequest() => new GetUserScoresRequest(User.Value.Id, type, VisiblePages++, ItemsPerPage); + protected override int GetCount(User user) + { + switch (type) + { + default: + return 0; + + case ScoreType.Firsts: + return user.ScoresFirstCount; + } + } + protected override Drawable CreateDrawableItem(APILegacyScoreInfo model) { switch (type) diff --git a/osu.Game/Users/User.cs b/osu.Game/Users/User.cs index b15789f324..ebd9dbecd1 100644 --- a/osu.Game/Users/User.cs +++ b/osu.Game/Users/User.cs @@ -126,6 +126,24 @@ namespace osu.Game.Users [JsonProperty(@"follower_count")] public int FollowerCount; + [JsonProperty(@"favourite_beatmapset_count")] + public int FavouriteBeatmapsetCount; + + [JsonProperty(@"graveyard_beatmapset_count")] + public int GraveyardBeatmapsetCount; + + [JsonProperty(@"loved_beatmapset_count")] + public int LovedBeatmapsetCount; + + [JsonProperty(@"ranked_and_approved_beatmapset_count")] + public int RankedAndApprovedBeatmapsetCount; + + [JsonProperty(@"unranked_beatmapset_count")] + public int UnrankedBeatmapsetCount; + + [JsonProperty(@"scores_first_count")] + public int ScoresFirstCount; + [JsonProperty] private string[] playstyle { From bc9177983adc209fa185cbf549de01bcbab77222 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 17 Dec 2019 12:50:50 +0300 Subject: [PATCH 0410/1829] Fix possible null --- osu.Game/Overlays/Profile/Sections/PaginatedContainer.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/PaginatedContainer.cs b/osu.Game/Overlays/Profile/Sections/PaginatedContainer.cs index 94d5f99f86..a30ff786fb 100644 --- a/osu.Game/Overlays/Profile/Sections/PaginatedContainer.cs +++ b/osu.Game/Overlays/Profile/Sections/PaginatedContainer.cs @@ -108,10 +108,11 @@ namespace osu.Game.Overlays.Profile.Sections VisiblePages = 0; ItemsContainer.Clear(); - count.Value = GetCount(e.NewValue); - if (e.NewValue != null) + { showMore(); + count.Value = GetCount(e.NewValue); + } } private void showMore() From 7c2884700eaffe391e37fa79a80deb3a30a431aa Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 17 Dec 2019 19:29:27 +0900 Subject: [PATCH 0411/1829] Fix various display issues by abstracting further --- osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs | 5 +- .../Objects/Drawables/DrawableRepeatPoint.cs | 3 +- .../Objects/Drawables/DrawableSlider.cs | 52 +++++------------ .../Drawables/Pieces/PlaySliderBody.cs | 57 +++++++++++++++++++ .../Objects/Drawables/Pieces/SliderBody.cs | 2 +- .../Skinning/LegacySliderBody.cs | 2 +- 6 files changed, 78 insertions(+), 43 deletions(-) create mode 100644 osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/PlaySliderBody.cs diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs b/osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs index 7e20feba02..0cca3ae40c 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs @@ -11,6 +11,7 @@ using osu.Game.Configuration; using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Objects.Drawables; using osu.Game.Rulesets.Osu.Objects.Drawables; +using osu.Game.Rulesets.Osu.Objects.Drawables.Pieces; namespace osu.Game.Rulesets.Osu.Mods { @@ -57,8 +58,8 @@ namespace osu.Game.Rulesets.Osu.Mods slider.AccentColour.BindValueChanged(_ => { //will trigger on skin change. - slider.Body.AccentColour = slider.AccentColour.Value.Opacity(0); - slider.Body.BorderColour = slider.AccentColour.Value; + ((PlaySliderBody)slider.Body.Drawable).AccentColour = slider.AccentColour.Value.Opacity(0); + ((PlaySliderBody)slider.Body.Drawable).BorderColour = slider.AccentColour.Value; }, true); break; diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs index 71cb9a9691..b81d94a673 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs @@ -9,6 +9,7 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; using osu.Framework.MathUtils; using osu.Game.Rulesets.Objects.Drawables; +using osu.Game.Rulesets.Osu.Objects.Drawables.Pieces; using osu.Game.Rulesets.Scoring; using osuTK; using osu.Game.Skinning; @@ -98,7 +99,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables public void UpdateSnakingPosition(Vector2 start, Vector2 end) { bool isRepeatAtEnd = repeatPoint.RepeatIndex % 2 == 0; - List curve = drawableSlider.Body.CurrentCurve; + List curve = ((PlaySliderBody)drawableSlider.Body.Drawable).CurrentCurve; Position = isRepeatAtEnd ? end : start; diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs index 46a219a69c..03183beff1 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs @@ -11,7 +11,6 @@ using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics.Containers; using osu.Game.Rulesets.Objects; -using osu.Game.Rulesets.Osu.Configuration; using osu.Game.Rulesets.Osu.Skinning; using osu.Game.Rulesets.Scoring; using osuTK.Graphics; @@ -25,10 +24,10 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables public DrawableSliderTail TailCircle => tailContainer.Child; public readonly SliderBall Ball; + public readonly SkinnableDrawable Body; - public SnakingSliderBody Body => (SnakingSliderBody)skinnedBody.Drawable; + private PlaySliderBody sliderBody => (PlaySliderBody)Body.Drawable; - private readonly SkinnableDrawable skinnedBody; private readonly Container headContainer; private readonly Container tailContainer; private readonly Container tickContainer; @@ -39,10 +38,6 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables private readonly IBindable positionBindable = new Bindable(); private readonly IBindable stackHeightBindable = new Bindable(); private readonly IBindable scaleBindable = new Bindable(); - private readonly IBindable pathVersion = new Bindable(); - - [Resolved(CanBeNull = true)] - private OsuRulesetConfigManager config { get; set; } public DrawableSlider(Slider s) : base(s) @@ -53,7 +48,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables InternalChildren = new Drawable[] { - skinnedBody = new SkinnableDrawable(new OsuSkinComponent(OsuSkinComponents.SliderBody), _ => new SnakingSliderBody(), confineMode: ConfineMode.NoScaling), + Body = new SkinnableDrawable(new OsuSkinComponent(OsuSkinComponents.SliderBody), _ => new DefaultSliderBody(), confineMode: ConfineMode.NoScaling), tickContainer = new Container { RelativeSizeAxes = Axes.Both }, repeatContainer = new Container { RelativeSizeAxes = Axes.Both }, Ball = new SliderBall(s, this) @@ -72,28 +67,16 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables [BackgroundDependencyLoader] private void load() { - config?.BindWith(OsuRulesetSetting.SnakingInSliders, Body.SnakingIn); - config?.BindWith(OsuRulesetSetting.SnakingOutSliders, Body.SnakingOut); - positionBindable.BindValueChanged(_ => Position = HitObject.StackedPosition); stackHeightBindable.BindValueChanged(_ => Position = HitObject.StackedPosition); - scaleBindable.BindValueChanged(scale => - { - updatePathRadius(); - Ball.Scale = new Vector2(scale.NewValue); - }); + scaleBindable.BindValueChanged(scale => Ball.Scale = new Vector2(scale.NewValue)); positionBindable.BindTo(HitObject.PositionBindable); stackHeightBindable.BindTo(HitObject.StackHeightBindable); scaleBindable.BindTo(HitObject.ScaleBindable); - pathVersion.BindTo(slider.Path.Version); - - pathVersion.BindValueChanged(_ => Body.Refresh()); AccentColour.BindValueChanged(colour => { - Body.AccentColour = colour.NewValue; - foreach (var drawableHitObject in NestedHitObjects) drawableHitObject.AccentColour.Value = colour.NewValue; }, true); @@ -171,16 +154,16 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables double completionProgress = Math.Clamp((Time.Current - slider.StartTime) / slider.Duration, 0, 1); Ball.UpdateProgress(completionProgress); - Body.UpdateProgress(completionProgress); + sliderBody.UpdateProgress(completionProgress); foreach (DrawableHitObject hitObject in NestedHitObjects) { - if (hitObject is ITrackSnaking s) s.UpdateSnakingPosition(slider.Path.PositionAt(Body.SnakedStart ?? 0), slider.Path.PositionAt(Body.SnakedEnd ?? 0)); + if (hitObject is ITrackSnaking s) s.UpdateSnakingPosition(slider.Path.PositionAt(sliderBody.SnakedStart ?? 0), slider.Path.PositionAt(sliderBody.SnakedEnd ?? 0)); if (hitObject is IRequireTracking t) t.Tracking = Ball.Tracking; } - Size = Body.Size; - OriginPosition = Body.PathOffset; + Size = sliderBody.Size; + OriginPosition = sliderBody.PathOffset; if (DrawSize != Vector2.Zero) { @@ -194,28 +177,17 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables public override void OnKilled() { base.OnKilled(); - Body.RecyclePath(); + sliderBody.RecyclePath(); } - private float sliderPathRadius; - protected override void ApplySkin(ISkinSource skin, bool allowFallback) { base.ApplySkin(skin, allowFallback); - Body.BorderSize = skin.GetConfig(OsuSkinConfiguration.SliderBorderSize)?.Value ?? 1; - sliderPathRadius = skin.GetConfig(OsuSkinConfiguration.SliderPathRadius)?.Value ?? OsuHitObject.OBJECT_RADIUS; - updatePathRadius(); - - Body.AccentColour = skin.GetConfig(OsuSkinColour.SliderTrackOverride)?.Value ?? AccentColour.Value; - Body.BorderColour = skin.GetConfig(OsuSkinColour.SliderBorder)?.Value ?? Color4.White; - bool allowBallTint = skin.GetConfig(OsuSkinConfiguration.AllowSliderBallTint)?.Value ?? false; Ball.Colour = allowBallTint ? AccentColour.Value : Color4.White; } - private void updatePathRadius() => Body.PathRadius = slider.Scale * sliderPathRadius; - protected override void CheckForResult(bool userTriggered, double timeOffset) { if (userTriggered || Time.Current < slider.EndTime) @@ -266,6 +238,10 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables public Drawable ProxiedLayer => HeadCircle.ProxiedLayer; - public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => Body.ReceivePositionalInputAt(screenSpacePos); + public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => sliderBody.ReceivePositionalInputAt(screenSpacePos); + + private class DefaultSliderBody : PlaySliderBody + { + } } } diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/PlaySliderBody.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/PlaySliderBody.cs new file mode 100644 index 0000000000..aa9caf193e --- /dev/null +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/PlaySliderBody.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 osu.Framework.Allocation; +using osu.Framework.Bindables; +using osu.Game.Rulesets.Objects.Drawables; +using osu.Game.Rulesets.Osu.Configuration; +using osu.Game.Rulesets.Osu.Skinning; +using osu.Game.Skinning; +using osuTK.Graphics; + +namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces +{ + public abstract class PlaySliderBody : SnakingSliderBody + { + private IBindable scaleBindable; + private IBindable pathVersion; + private IBindable accentColour; + + [Resolved] + private DrawableHitObject drawableObject { get; set; } + + [Resolved(CanBeNull = true)] + private OsuRulesetConfigManager config { get; set; } + + private Slider slider; + private float defaultPathRadius; + + [BackgroundDependencyLoader] + private void load(ISkinSource skin) + { + slider = (Slider)drawableObject.HitObject; + defaultPathRadius = skin.GetConfig(OsuSkinConfiguration.SliderPathRadius)?.Value ?? OsuHitObject.OBJECT_RADIUS; + + scaleBindable = slider.ScaleBindable.GetBoundCopy(); + scaleBindable.BindValueChanged(_ => updatePathRadius(), true); + + pathVersion = slider.Path.Version.GetBoundCopy(); + pathVersion.BindValueChanged(_ => Refresh()); + + accentColour = drawableObject.AccentColour.GetBoundCopy(); + accentColour.BindValueChanged(accent => updateAccentColour(skin, accent.NewValue), true); + + config?.BindWith(OsuRulesetSetting.SnakingInSliders, SnakingIn); + config?.BindWith(OsuRulesetSetting.SnakingOutSliders, SnakingOut); + + BorderSize = skin.GetConfig(OsuSkinConfiguration.SliderBorderSize)?.Value ?? 1; + BorderColour = skin.GetConfig(OsuSkinColour.SliderBorder)?.Value ?? Color4.White; + } + + private void updatePathRadius() + => PathRadius = defaultPathRadius * scaleBindable.Value; + + private void updateAccentColour(ISkinSource skin, Color4 defaultAccentColour) + => AccentColour = skin.GetConfig(OsuSkinColour.SliderTrackOverride)?.Value ?? defaultAccentColour; + } +} diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBody.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBody.cs index dcaa9748e9..8758a4a066 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBody.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBody.cs @@ -104,7 +104,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces protected virtual DrawableSliderPath CreateSliderPath() => new DefaultDrawableSliderPath(); - protected class DefaultDrawableSliderPath : DrawableSliderPath + private class DefaultDrawableSliderPath : DrawableSliderPath { private const float opacity_at_centre = 0.3f; private const float opacity_at_edge = 0.8f; diff --git a/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs b/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs index 6a26529f4c..18a5d7a320 100644 --- a/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs +++ b/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs @@ -9,7 +9,7 @@ using osuTK.Graphics; namespace osu.Game.Rulesets.Osu.Skinning { - public class LegacySliderBody : SnakingSliderBody + public class LegacySliderBody : PlaySliderBody { protected override DrawableSliderPath CreateSliderPath() => new LegacyDrawableSliderPath(); From f6cde911e2b4a13e57acb84863d9b524668c2985 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 17 Dec 2019 13:41:28 +0300 Subject: [PATCH 0412/1829] Use switch expressions --- .../Beatmaps/PaginatedBeatmapContainer.cs | 28 ++++++------------- .../Sections/Ranks/PaginatedScoreContainer.cs | 14 +++------- 2 files changed, 12 insertions(+), 30 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/Beatmaps/PaginatedBeatmapContainer.cs b/osu.Game/Overlays/Profile/Sections/Beatmaps/PaginatedBeatmapContainer.cs index 6684420cf4..fcd12e2b54 100644 --- a/osu.Game/Overlays/Profile/Sections/Beatmaps/PaginatedBeatmapContainer.cs +++ b/osu.Game/Overlays/Profile/Sections/Beatmaps/PaginatedBeatmapContainer.cs @@ -39,26 +39,14 @@ namespace osu.Game.Overlays.Profile.Sections.Beatmaps Origin = Anchor.TopCentre, }; - protected override int GetCount(User user) + protected override int GetCount(User user) => type switch { - switch (type) - { - default: - case BeatmapSetType.Favourite: - return user.FavouriteBeatmapsetCount; - - case BeatmapSetType.Graveyard: - return user.GraveyardBeatmapsetCount; - - case BeatmapSetType.Loved: - return user.LovedBeatmapsetCount; - - case BeatmapSetType.RankedAndApproved: - return user.RankedAndApprovedBeatmapsetCount; - - case BeatmapSetType.Unranked: - return user.UnrankedBeatmapsetCount; - } - } + BeatmapSetType.Favourite => user.FavouriteBeatmapsetCount, + BeatmapSetType.Graveyard => user.GraveyardBeatmapsetCount, + BeatmapSetType.Loved => user.LovedBeatmapsetCount, + BeatmapSetType.RankedAndApproved => user.RankedAndApprovedBeatmapsetCount, + BeatmapSetType.Unranked => user.UnrankedBeatmapsetCount, + _ => 0 + }; } } diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/PaginatedScoreContainer.cs b/osu.Game/Overlays/Profile/Sections/Ranks/PaginatedScoreContainer.cs index fa74d76dfc..e0f1c935da 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/PaginatedScoreContainer.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/PaginatedScoreContainer.cs @@ -32,17 +32,11 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks protected override APIRequest> CreateRequest() => new GetUserScoresRequest(User.Value.Id, type, VisiblePages++, ItemsPerPage); - protected override int GetCount(User user) + protected override int GetCount(User user) => type switch { - switch (type) - { - default: - return 0; - - case ScoreType.Firsts: - return user.ScoresFirstCount; - } - } + ScoreType.Firsts => user.ScoresFirstCount, + _ => 0 + }; protected override Drawable CreateDrawableItem(APILegacyScoreInfo model) { From 527ab1a72f08ce6c3c5eef7226ec166c9fb726b1 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 17 Dec 2019 19:49:13 +0900 Subject: [PATCH 0413/1829] Fix traceable mod not working on skin change --- osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs | 15 ++++++++------- osu.Game/Skinning/SkinReloadableDrawable.cs | 15 ++++++++++++++- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs b/osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs index 0cca3ae40c..cf1ce517e8 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs @@ -55,13 +55,8 @@ namespace osu.Game.Rulesets.Osu.Mods break; case DrawableSlider slider: - slider.AccentColour.BindValueChanged(_ => - { - //will trigger on skin change. - ((PlaySliderBody)slider.Body.Drawable).AccentColour = slider.AccentColour.Value.Opacity(0); - ((PlaySliderBody)slider.Body.Drawable).BorderColour = slider.AccentColour.Value; - }, true); - + slider.Body.OnSkinChanged += () => applySliderState(slider); + applySliderState(slider); break; case DrawableSpinner spinner: @@ -70,5 +65,11 @@ namespace osu.Game.Rulesets.Osu.Mods break; } } + + private void applySliderState(DrawableSlider slider) + { + ((PlaySliderBody)slider.Body.Drawable).AccentColour = slider.AccentColour.Value.Opacity(0); + ((PlaySliderBody)slider.Body.Drawable).BorderColour = slider.AccentColour.Value; + } } } diff --git a/osu.Game/Skinning/SkinReloadableDrawable.cs b/osu.Game/Skinning/SkinReloadableDrawable.cs index 6d0b22dd51..4a1aaa62bf 100644 --- a/osu.Game/Skinning/SkinReloadableDrawable.cs +++ b/osu.Game/Skinning/SkinReloadableDrawable.cs @@ -12,6 +12,11 @@ namespace osu.Game.Skinning /// public abstract class SkinReloadableDrawable : CompositeDrawable { + /// + /// Invoked when has changed. + /// + public event Action OnSkinChanged; + /// /// The current skin source. /// @@ -43,12 +48,18 @@ namespace osu.Game.Skinning private void onChange() => // schedule required to avoid calls after disposed. // note that this has the side-effect of components only performing a skin change when they are alive. - Scheduler.AddOnce(() => SkinChanged(CurrentSkin, allowDefaultFallback)); + Scheduler.AddOnce(skinChanged); protected override void LoadAsyncComplete() { base.LoadAsyncComplete(); + skinChanged(); + } + + private void skinChanged() + { SkinChanged(CurrentSkin, allowDefaultFallback); + OnSkinChanged?.Invoke(); } /// @@ -66,6 +77,8 @@ namespace osu.Game.Skinning if (CurrentSkin != null) CurrentSkin.SourceChanged -= onChange; + + OnSkinChanged = null; } } } From 2d85145eeccde1868c1fb843c852450e37c2abf7 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 17 Dec 2019 19:52:33 +0900 Subject: [PATCH 0414/1829] Make legacy accent colour multiplicative --- osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs b/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs index 18a5d7a320..dea08f843e 100644 --- a/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs +++ b/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs @@ -15,7 +15,7 @@ namespace osu.Game.Rulesets.Osu.Skinning private class LegacyDrawableSliderPath : DrawableSliderPath { - public new Color4 AccentColour => new Color4(base.AccentColour.R, base.AccentColour.G, base.AccentColour.B, 0.70f); + public new Color4 AccentColour => new Color4(base.AccentColour.R, base.AccentColour.G, base.AccentColour.B, base.AccentColour.A * 0.70f); protected override Color4 ColourAt(float position) { From 49bf8d27d10ad2ceaf9feefe737b2f60ce2dffdd Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 17 Dec 2019 20:08:13 +0900 Subject: [PATCH 0415/1829] Move CreateScoreProcessor() to Ruleset --- osu.Game.Rulesets.Catch/CatchRuleset.cs | 5 +++++ osu.Game.Rulesets.Catch/UI/DrawableCatchRuleset.cs | 4 ---- osu.Game.Rulesets.Mania/ManiaRuleset.cs | 6 ++++++ osu.Game.Rulesets.Mania/UI/DrawableManiaRuleset.cs | 4 ---- osu.Game.Rulesets.Osu/OsuRuleset.cs | 6 ++++++ osu.Game.Rulesets.Osu/UI/DrawableOsuRuleset.cs | 4 ---- osu.Game.Rulesets.Taiko/TaikoRuleset.cs | 5 +++++ osu.Game.Rulesets.Taiko/UI/DrawableTaikoRuleset.cs | 4 ---- osu.Game/Rulesets/Ruleset.cs | 7 +++++++ osu.Game/Rulesets/UI/DrawableRuleset.cs | 9 --------- osu.Game/Screens/Play/Player.cs | 2 +- 11 files changed, 30 insertions(+), 26 deletions(-) diff --git a/osu.Game.Rulesets.Catch/CatchRuleset.cs b/osu.Game.Rulesets.Catch/CatchRuleset.cs index 9fe287d1cc..ba5c1dee92 100644 --- a/osu.Game.Rulesets.Catch/CatchRuleset.cs +++ b/osu.Game.Rulesets.Catch/CatchRuleset.cs @@ -16,7 +16,9 @@ using osu.Game.Rulesets.Replays.Types; using osu.Game.Beatmaps.Legacy; using osu.Game.Rulesets.Catch.Beatmaps; using osu.Game.Rulesets.Catch.Difficulty; +using osu.Game.Rulesets.Catch.Scoring; using osu.Game.Rulesets.Difficulty; +using osu.Game.Rulesets.Scoring; using osu.Game.Scoring; namespace osu.Game.Rulesets.Catch @@ -24,6 +26,9 @@ namespace osu.Game.Rulesets.Catch public class CatchRuleset : Ruleset { public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => new DrawableCatchRuleset(this, beatmap, mods); + + public override ScoreProcessor CreateScoreProcessor(IBeatmap beatmap) => new CatchScoreProcessor(beatmap); + public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new CatchBeatmapConverter(beatmap); public override IBeatmapProcessor CreateBeatmapProcessor(IBeatmap beatmap) => new CatchBeatmapProcessor(beatmap); diff --git a/osu.Game.Rulesets.Catch/UI/DrawableCatchRuleset.cs b/osu.Game.Rulesets.Catch/UI/DrawableCatchRuleset.cs index 278ff97195..fdd820b891 100644 --- a/osu.Game.Rulesets.Catch/UI/DrawableCatchRuleset.cs +++ b/osu.Game.Rulesets.Catch/UI/DrawableCatchRuleset.cs @@ -10,10 +10,8 @@ using osu.Game.Replays; using osu.Game.Rulesets.Catch.Objects; using osu.Game.Rulesets.Catch.Objects.Drawable; using osu.Game.Rulesets.Catch.Replays; -using osu.Game.Rulesets.Catch.Scoring; using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Objects.Drawables; -using osu.Game.Rulesets.Scoring; using osu.Game.Rulesets.UI; using osu.Game.Rulesets.UI.Scrolling; @@ -32,8 +30,6 @@ namespace osu.Game.Rulesets.Catch.UI TimeRange.Value = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.ApproachRate, 1800, 1200, 450); } - public override ScoreProcessor CreateScoreProcessor() => new CatchScoreProcessor(Beatmap); - protected override ReplayInputHandler CreateReplayInputHandler(Replay replay) => new CatchFramedReplayInputHandler(replay); protected override Playfield CreatePlayfield() => new CatchPlayfield(Beatmap.BeatmapInfo.BaseDifficulty, CreateDrawableRepresentation); diff --git a/osu.Game.Rulesets.Mania/ManiaRuleset.cs b/osu.Game.Rulesets.Mania/ManiaRuleset.cs index bcafadb4c5..dc98a063b4 100644 --- a/osu.Game.Rulesets.Mania/ManiaRuleset.cs +++ b/osu.Game.Rulesets.Mania/ManiaRuleset.cs @@ -25,6 +25,8 @@ using osu.Game.Rulesets.Mania.Beatmaps; using osu.Game.Rulesets.Mania.Configuration; using osu.Game.Rulesets.Mania.Difficulty; using osu.Game.Rulesets.Mania.Edit; +using osu.Game.Rulesets.Mania.Scoring; +using osu.Game.Rulesets.Scoring; using osu.Game.Scoring; namespace osu.Game.Rulesets.Mania @@ -32,7 +34,11 @@ namespace osu.Game.Rulesets.Mania public class ManiaRuleset : Ruleset { public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => new DrawableManiaRuleset(this, beatmap, mods); + + public override ScoreProcessor CreateScoreProcessor(IBeatmap beatmap) => new ManiaScoreProcessor(beatmap); + public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new ManiaBeatmapConverter(beatmap); + public override PerformanceCalculator CreatePerformanceCalculator(WorkingBeatmap beatmap, ScoreInfo score) => new ManiaPerformanceCalculator(this, beatmap, score); public const string SHORT_NAME = "mania"; diff --git a/osu.Game.Rulesets.Mania/UI/DrawableManiaRuleset.cs b/osu.Game.Rulesets.Mania/UI/DrawableManiaRuleset.cs index cf1970c28b..2c497541a8 100644 --- a/osu.Game.Rulesets.Mania/UI/DrawableManiaRuleset.cs +++ b/osu.Game.Rulesets.Mania/UI/DrawableManiaRuleset.cs @@ -14,11 +14,9 @@ using osu.Game.Rulesets.Mania.Configuration; using osu.Game.Rulesets.Mania.Objects; using osu.Game.Rulesets.Mania.Objects.Drawables; using osu.Game.Rulesets.Mania.Replays; -using osu.Game.Rulesets.Mania.Scoring; using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Objects.Drawables; -using osu.Game.Rulesets.Scoring; using osu.Game.Rulesets.UI; using osu.Game.Rulesets.UI.Scrolling; using osuTK; @@ -67,8 +65,6 @@ namespace osu.Game.Rulesets.Mania.UI protected override Playfield CreatePlayfield() => new ManiaPlayfield(Beatmap.Stages); - public override ScoreProcessor CreateScoreProcessor() => new ManiaScoreProcessor(Beatmap); - public override int Variant => (int)(Beatmap.Stages.Count == 1 ? PlayfieldType.Single : PlayfieldType.Dual) + Beatmap.TotalColumns; protected override PassThroughInputManager CreateInputManager() => new ManiaInputManager(Ruleset.RulesetInfo, Variant); diff --git a/osu.Game.Rulesets.Osu/OsuRuleset.cs b/osu.Game.Rulesets.Osu/OsuRuleset.cs index beaa788229..ff08d97385 100644 --- a/osu.Game.Rulesets.Osu/OsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/OsuRuleset.cs @@ -23,7 +23,9 @@ using osu.Game.Rulesets.Difficulty; using osu.Game.Rulesets.Osu.Beatmaps; using osu.Game.Rulesets.Osu.Configuration; using osu.Game.Rulesets.Osu.Difficulty; +using osu.Game.Rulesets.Osu.Scoring; using osu.Game.Rulesets.Osu.Skinning; +using osu.Game.Rulesets.Scoring; using osu.Game.Scoring; using osu.Game.Skinning; @@ -32,7 +34,11 @@ namespace osu.Game.Rulesets.Osu public class OsuRuleset : Ruleset { public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => new DrawableOsuRuleset(this, beatmap, mods); + + public override ScoreProcessor CreateScoreProcessor(IBeatmap beatmap) => new OsuScoreProcessor(beatmap); + public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new OsuBeatmapConverter(beatmap); + public override IBeatmapProcessor CreateBeatmapProcessor(IBeatmap beatmap) => new OsuBeatmapProcessor(beatmap); public const string SHORT_NAME = "osu"; diff --git a/osu.Game.Rulesets.Osu/UI/DrawableOsuRuleset.cs b/osu.Game.Rulesets.Osu/UI/DrawableOsuRuleset.cs index 039d38e4fd..a37ef8d9a0 100644 --- a/osu.Game.Rulesets.Osu/UI/DrawableOsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/UI/DrawableOsuRuleset.cs @@ -14,8 +14,6 @@ using osu.Game.Rulesets.Osu.Configuration; using osu.Game.Rulesets.Osu.Objects; using osu.Game.Rulesets.Osu.Objects.Drawables; using osu.Game.Rulesets.Osu.Replays; -using osu.Game.Rulesets.Osu.Scoring; -using osu.Game.Rulesets.Scoring; using osu.Game.Rulesets.UI; using osu.Game.Screens.Play; using osuTK; @@ -33,8 +31,6 @@ namespace osu.Game.Rulesets.Osu.UI public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => true; // always show the gameplay cursor - public override ScoreProcessor CreateScoreProcessor() => new OsuScoreProcessor(Beatmap); - protected override Playfield CreatePlayfield() => new OsuPlayfield(); protected override PassThroughInputManager CreateInputManager() => new OsuInputManager(Ruleset.RulesetInfo); diff --git a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs index 68e6a3b07e..59ce715a1f 100644 --- a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs +++ b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs @@ -15,8 +15,10 @@ using osu.Game.Rulesets.Replays.Types; using osu.Game.Rulesets.Taiko.Replays; using osu.Game.Beatmaps.Legacy; using osu.Game.Rulesets.Difficulty; +using osu.Game.Rulesets.Scoring; using osu.Game.Rulesets.Taiko.Beatmaps; using osu.Game.Rulesets.Taiko.Difficulty; +using osu.Game.Rulesets.Taiko.Scoring; using osu.Game.Scoring; namespace osu.Game.Rulesets.Taiko @@ -24,6 +26,9 @@ namespace osu.Game.Rulesets.Taiko public class TaikoRuleset : Ruleset { public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => new DrawableTaikoRuleset(this, beatmap, mods); + + public override ScoreProcessor CreateScoreProcessor(IBeatmap beatmap) => new TaikoScoreProcessor(beatmap); + public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new TaikoBeatmapConverter(beatmap); public const string SHORT_NAME = "taiko"; diff --git a/osu.Game.Rulesets.Taiko/UI/DrawableTaikoRuleset.cs b/osu.Game.Rulesets.Taiko/UI/DrawableTaikoRuleset.cs index 2233658428..0c7495aa52 100644 --- a/osu.Game.Rulesets.Taiko/UI/DrawableTaikoRuleset.cs +++ b/osu.Game.Rulesets.Taiko/UI/DrawableTaikoRuleset.cs @@ -5,10 +5,8 @@ using System.Collections.Generic; using osu.Framework.Allocation; using osu.Game.Beatmaps; using osu.Game.Rulesets.Objects.Drawables; -using osu.Game.Rulesets.Scoring; using osu.Game.Rulesets.Taiko.Objects; using osu.Game.Rulesets.Taiko.Objects.Drawables; -using osu.Game.Rulesets.Taiko.Scoring; using osu.Game.Rulesets.UI; using osu.Game.Rulesets.Taiko.Replays; using osu.Framework.Input; @@ -40,8 +38,6 @@ namespace osu.Game.Rulesets.Taiko.UI new BarLineGenerator(Beatmap).BarLines.ForEach(bar => Playfield.Add(bar.Major ? new DrawableBarLineMajor(bar) : new DrawableBarLine(bar))); } - public override ScoreProcessor CreateScoreProcessor() => new TaikoScoreProcessor(Beatmap); - public override PlayfieldAdjustmentContainer CreatePlayfieldAdjustmentContainer() => new TaikoPlayfieldAdjustmentContainer(); protected override PassThroughInputManager CreateInputManager() => new TaikoInputManager(Ruleset.RulesetInfo); diff --git a/osu.Game/Rulesets/Ruleset.cs b/osu.Game/Rulesets/Ruleset.cs index 45aa904b98..cfe04fc6d1 100644 --- a/osu.Game/Rulesets/Ruleset.cs +++ b/osu.Game/Rulesets/Ruleset.cs @@ -18,6 +18,7 @@ using osu.Game.Beatmaps.Legacy; using osu.Game.Configuration; using osu.Game.Rulesets.Configuration; using osu.Game.Rulesets.Difficulty; +using osu.Game.Rulesets.Scoring; using osu.Game.Scoring; using osu.Game.Skinning; @@ -62,6 +63,12 @@ namespace osu.Game.Rulesets /// public abstract DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null); + /// + /// Creates a for a beatmap converted to this ruleset. + /// + /// The score processor. + public virtual ScoreProcessor CreateScoreProcessor(IBeatmap beatmap) => new ScoreProcessor(beatmap); + /// /// Creates a to convert a to one that is applicable for this . /// diff --git a/osu.Game/Rulesets/UI/DrawableRuleset.cs b/osu.Game/Rulesets/UI/DrawableRuleset.cs index 5033fd0686..4ff8ce9e0a 100644 --- a/osu.Game/Rulesets/UI/DrawableRuleset.cs +++ b/osu.Game/Rulesets/UI/DrawableRuleset.cs @@ -305,8 +305,6 @@ namespace osu.Game.Rulesets.UI /// The Playfield. protected abstract Playfield CreatePlayfield(); - public override ScoreProcessor CreateScoreProcessor() => new ScoreProcessor(Beatmap); - /// /// Applies the active mods to this DrawableRuleset. /// @@ -475,13 +473,6 @@ namespace osu.Game.Rulesets.UI /// Invoked when the user requests to pause while the resume overlay is active. /// public abstract void CancelResume(); - - /// - /// Create a for the associated ruleset and link with this - /// . - /// - /// A score processor. - public abstract ScoreProcessor CreateScoreProcessor(); } public class BeatmapInvalidForRulesetException : ArgumentException diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index fa320e9a4f..5dfdeb5ebc 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -128,7 +128,7 @@ namespace osu.Game.Screens.Play DrawableRuleset = ruleset.CreateDrawableRulesetWith(playableBeatmap, Mods.Value); - ScoreProcessor = DrawableRuleset.CreateScoreProcessor(); + ScoreProcessor = ruleset.CreateScoreProcessor(playableBeatmap); ScoreProcessor.Mods.BindTo(Mods); if (!ScoreProcessor.Mode.Disabled) From 35276c37399e9fbfcc0b16c88eb4448760e16470 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 17 Dec 2019 21:26:23 +0900 Subject: [PATCH 0416/1829] Prevent test scene failures through casting softly --- .../Objects/Drawables/DrawableSlider.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs index 03183beff1..cd3c572ba0 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs @@ -26,7 +26,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables public readonly SliderBall Ball; public readonly SkinnableDrawable Body; - private PlaySliderBody sliderBody => (PlaySliderBody)Body.Drawable; + private PlaySliderBody sliderBody => Body.Drawable as PlaySliderBody; private readonly Container headContainer; private readonly Container tailContainer; @@ -154,16 +154,16 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables double completionProgress = Math.Clamp((Time.Current - slider.StartTime) / slider.Duration, 0, 1); Ball.UpdateProgress(completionProgress); - sliderBody.UpdateProgress(completionProgress); + sliderBody?.UpdateProgress(completionProgress); foreach (DrawableHitObject hitObject in NestedHitObjects) { - if (hitObject is ITrackSnaking s) s.UpdateSnakingPosition(slider.Path.PositionAt(sliderBody.SnakedStart ?? 0), slider.Path.PositionAt(sliderBody.SnakedEnd ?? 0)); + if (hitObject is ITrackSnaking s) s.UpdateSnakingPosition(slider.Path.PositionAt(sliderBody?.SnakedStart ?? 0), slider.Path.PositionAt(sliderBody?.SnakedEnd ?? 0)); if (hitObject is IRequireTracking t) t.Tracking = Ball.Tracking; } - Size = sliderBody.Size; - OriginPosition = sliderBody.PathOffset; + Size = sliderBody?.Size ?? Vector2.Zero; + OriginPosition = sliderBody?.PathOffset ?? Vector2.Zero; if (DrawSize != Vector2.Zero) { @@ -177,7 +177,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables public override void OnKilled() { base.OnKilled(); - sliderBody.RecyclePath(); + sliderBody?.RecyclePath(); } protected override void ApplySkin(ISkinSource skin, bool allowFallback) @@ -238,7 +238,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables public Drawable ProxiedLayer => HeadCircle.ProxiedLayer; - public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => sliderBody.ReceivePositionalInputAt(screenSpacePos); + public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => sliderBody?.ReceivePositionalInputAt(screenSpacePos) ?? base.ReceivePositionalInputAt(screenSpacePos); private class DefaultSliderBody : PlaySliderBody { From 69da6ed9a16438aa6b9fe034ee127879b4d66c00 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 17 Dec 2019 23:53:18 +0900 Subject: [PATCH 0417/1829] Fix test re-using the same storage --- osu.Game.Tests/Scores/IO/ImportScoreTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Tests/Scores/IO/ImportScoreTest.cs b/osu.Game.Tests/Scores/IO/ImportScoreTest.cs index a95e699470..a139c3a8c2 100644 --- a/osu.Game.Tests/Scores/IO/ImportScoreTest.cs +++ b/osu.Game.Tests/Scores/IO/ImportScoreTest.cs @@ -159,7 +159,7 @@ namespace osu.Game.Tests.Scores.IO [Test] public async Task TestOnlineScoreIsAvailableLocally() { - using (HeadlessGameHost host = new CleanRunHeadlessGameHost("TestImportWithDeletedBeatmapSet")) + using (HeadlessGameHost host = new CleanRunHeadlessGameHost("TestOnlineScoreIsAvailableLocally")) { try { From bcc19e29f2c2d41621025c9708cf976fce370a55 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 18 Dec 2019 02:56:29 +0900 Subject: [PATCH 0418/1829] Fix editor crashing after re-ordering objects --- osu.Game/Rulesets/UI/HitObjectContainer.cs | 36 ++++++++++++++++++++-- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/osu.Game/Rulesets/UI/HitObjectContainer.cs b/osu.Game/Rulesets/UI/HitObjectContainer.cs index 9485189433..b7508a82f3 100644 --- a/osu.Game/Rulesets/UI/HitObjectContainer.cs +++ b/osu.Game/Rulesets/UI/HitObjectContainer.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; +using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Game.Rulesets.Objects.Drawables; @@ -14,13 +15,42 @@ namespace osu.Game.Rulesets.UI public IEnumerable Objects => InternalChildren.Cast().OrderBy(h => h.HitObject.StartTime); public IEnumerable AliveObjects => AliveInternalChildren.Cast().OrderBy(h => h.HitObject.StartTime); + private readonly Dictionary bindable, double timeAtAdd)> startTimeMap = new Dictionary, double)>(); + public HitObjectContainer() { RelativeSizeAxes = Axes.Both; } - public virtual void Add(DrawableHitObject hitObject) => AddInternal(hitObject); - public virtual bool Remove(DrawableHitObject hitObject) => RemoveInternal(hitObject); + public virtual void Add(DrawableHitObject hitObject) + { + // Added first for the comparer to remain ordered during AddInternal + startTimeMap[hitObject] = (hitObject.HitObject.StartTimeBindable.GetBoundCopy(), hitObject.HitObject.StartTime); + startTimeMap[hitObject].bindable.BindValueChanged(_ => onStartTimeChanged(hitObject)); + + AddInternal(hitObject); + } + + public virtual bool Remove(DrawableHitObject hitObject) + { + bool result = RemoveInternal(hitObject); + + // Removed last for the comparer to remain ordered during RemoveInternal + startTimeMap[hitObject].bindable.UnbindAll(); + startTimeMap.Remove(hitObject); + + return result; + } + + private void onStartTimeChanged(DrawableHitObject hitObject) + { + if (!RemoveInternal(hitObject)) + return; + + // Update the stored time, preserving the existing bindable + startTimeMap[hitObject] = (startTimeMap[hitObject].bindable, hitObject.HitObject.StartTime); + AddInternal(hitObject); + } protected override int Compare(Drawable x, Drawable y) { @@ -28,7 +58,7 @@ namespace osu.Game.Rulesets.UI return base.Compare(x, y); // Put earlier hitobjects towards the end of the list, so they handle input first - int i = yObj.HitObject.StartTime.CompareTo(xObj.HitObject.StartTime); + int i = startTimeMap[yObj].timeAtAdd.CompareTo(startTimeMap[xObj].timeAtAdd); return i == 0 ? CompareReverseChildID(x, y) : i; } From 0a278ef9432d06ab6ae6f94be332296c5eba9e6f Mon Sep 17 00:00:00 2001 From: Lucas A Date: Sat, 14 Dec 2019 11:40:59 +0100 Subject: [PATCH 0419/1829] Apply review suggestions --- osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs | 2 +- osu.Game/Overlays/News/NewsArticleCover.cs | 6 ++---- osu.Game/Overlays/NewsOverlay.cs | 8 ++++---- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs b/osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs index f870a12fc3..a8e1f40ecf 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs @@ -27,7 +27,7 @@ namespace osu.Game.Tests.Visual.Online private class TestNewsOverlay : NewsOverlay { - public new void LoadAndShowChild(NewsContent content) => base.LoadAndShowChild(content); + public new void LoadAndShowChild(NewsContent content) => base.LoadAndShowContent(content); } private class NewsCoverTest : NewsContent diff --git a/osu.Game/Overlays/News/NewsArticleCover.cs b/osu.Game/Overlays/News/NewsArticleCover.cs index e2485bd170..e484309a18 100644 --- a/osu.Game/Overlays/News/NewsArticleCover.cs +++ b/osu.Game/Overlays/News/NewsArticleCover.cs @@ -90,7 +90,6 @@ namespace osu.Game.Overlays.News bg.OnLoadComplete += d => d.FadeIn(250, Easing.In); } - //news article cover background [LongRunningLoad] private class NewsBackground : Sprite { @@ -108,7 +107,6 @@ namespace osu.Game.Overlays.News } } - //date container private class DateContainer : Container, IHasTooltip { private readonly DateTime date; @@ -134,7 +132,7 @@ namespace osu.Game.Overlays.News Anchor = Anchor.Centre, Origin = Anchor.Centre, Font = OsuFont.GetFont(Typeface.Exo, 12, FontWeight.Black, false, false), - Text = date.ToString("dd MMM yyy"), + Text = date.ToString("d MMM yyy").ToUpper(), Margin = new MarginPadding { Vertical = 4, @@ -144,7 +142,7 @@ namespace osu.Game.Overlays.News }; } - public string TooltipText => date.ToString("dddd dd MMMM yyyy hh:mm:ss UTCz"); + public string TooltipText => date.ToString("dddd dd MMMM yyyy hh:mm:ss UTCz").ToUpper(); } //fake API data struct to use for now as a skeleton for data, as there is no API struct for news article info for now diff --git a/osu.Game/Overlays/NewsOverlay.cs b/osu.Game/Overlays/NewsOverlay.cs index db4b118bf8..e7471cb21d 100644 --- a/osu.Game/Overlays/NewsOverlay.cs +++ b/osu.Game/Overlays/NewsOverlay.cs @@ -59,19 +59,19 @@ namespace osu.Game.Overlays Current.TriggerChange(); } - private CancellationTokenSource loadChildCancellation; + private CancellationTokenSource loadContentCancellation; - protected void LoadAndShowChild(NewsContent newContent) + protected void LoadAndShowContent(NewsContent newContent) { content.FadeTo(0.2f, 300, Easing.OutQuint); - loadChildCancellation?.Cancel(); + loadContentCancellation?.Cancel(); LoadComponentAsync(newContent, c => { content.Child = c; content.FadeIn(300, Easing.OutQuint); - }, (loadChildCancellation = new CancellationTokenSource()).Token); + }, (loadContentCancellation = new CancellationTokenSource()).Token); } public void ShowFrontPage() From ad7923f9b9edf87dfd6bd1acedaa44fad9f234be Mon Sep 17 00:00:00 2001 From: Lucas A Date: Tue, 17 Dec 2019 19:25:17 +0100 Subject: [PATCH 0420/1829] Fix test methods not being renamed. --- osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs b/osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs index a8e1f40ecf..d47c972564 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneNewsOverlay.cs @@ -22,12 +22,12 @@ namespace osu.Game.Tests.Visual.Online AddStep(@"Show front page", () => news.ShowFrontPage()); AddStep(@"Custom article", () => news.Current.Value = "Test Article 101"); - AddStep(@"Article covers", () => news.LoadAndShowChild(new NewsCoverTest())); + AddStep(@"Article covers", () => news.LoadAndShowContent(new NewsCoverTest())); } private class TestNewsOverlay : NewsOverlay { - public new void LoadAndShowChild(NewsContent content) => base.LoadAndShowContent(content); + public new void LoadAndShowContent(NewsContent content) => base.LoadAndShowContent(content); } private class NewsCoverTest : NewsContent From 8aeef3f59a59747e42bc898cb155048204143ff0 Mon Sep 17 00:00:00 2001 From: wltu Date: Tue, 17 Dec 2019 12:56:30 -0800 Subject: [PATCH 0421/1829] Added refresh scoreboard upon deleting local score and formatted the code --- .../Online/Leaderboards/LeaderboardScore.cs | 17 +++++++++++++---- .../Screens/Select/BeatmapClearScoresDialog.cs | 6 +----- .../Select/Leaderboards/BeatmapLeaderboard.cs | 10 +++++++--- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/osu.Game/Online/Leaderboards/LeaderboardScore.cs b/osu.Game/Online/Leaderboards/LeaderboardScore.cs index 3e5096b051..ccac748535 100644 --- a/osu.Game/Online/Leaderboards/LeaderboardScore.cs +++ b/osu.Game/Online/Leaderboards/LeaderboardScore.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.Collections.Generic; using System.Linq; using osu.Framework.Allocation; @@ -54,9 +55,11 @@ namespace osu.Game.Online.Leaderboards private FillFlowContainer modsContainer; private List statisticsLabels; - + private DialogOverlay dialogOverlay; + public Action RefreshAction { get; set; } + public LeaderboardScore(ScoreInfo score, int rank, bool allowHighlight = true) { this.score = score; @@ -367,9 +370,15 @@ namespace osu.Game.Online.Leaderboards } } - public MenuItem[] ContextMenuItems => new MenuItem[] + public MenuItem[] ContextMenuItems { - new OsuMenuItem("Delete", MenuItemType.Destructive, () => dialogOverlay?.Push(new BeatmapClearScoresDialog(this.score, null))) - }; + get + { + return (this.allowHighlight) ? null : new MenuItem[] + { + new OsuMenuItem("Delete", MenuItemType.Destructive, () => dialogOverlay?.Push(new BeatmapClearScoresDialog(this.score, () => Schedule(this.RefreshAction)))) + }; + } + } } } diff --git a/osu.Game/Screens/Select/BeatmapClearScoresDialog.cs b/osu.Game/Screens/Select/BeatmapClearScoresDialog.cs index b4889bfffc..2c5427993b 100644 --- a/osu.Game/Screens/Select/BeatmapClearScoresDialog.cs +++ b/osu.Game/Screens/Select/BeatmapClearScoresDialog.cs @@ -52,11 +52,7 @@ namespace osu.Game.Screens.Select new PopupDialogOkButton { Text = @"Yes. Please.", - Action = () => - { - Task.Run(() => scoreManager.Delete(score)) - .ContinueWith(_ => onCompletion); - } + Action = (() => scoreManager.Delete(score)) + onCompletion }, new PopupDialogCancelButton { diff --git a/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs b/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs index d609ee3bdc..ee360d1e57 100644 --- a/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs +++ b/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs @@ -15,6 +15,8 @@ using osu.Game.Rulesets; using osu.Game.Rulesets.Mods; using osu.Game.Scoring; +using osu.Framework.Graphics.UserInterface; + namespace osu.Game.Screens.Select.Leaderboards { public class BeatmapLeaderboard : Leaderboard @@ -182,12 +184,14 @@ namespace osu.Game.Screens.Select.Leaderboards return req; } - protected override LeaderboardScore CreateDrawableScore(ScoreInfo model, int index){ + protected override LeaderboardScore CreateDrawableScore(ScoreInfo model, int index) + { model.Beatmap = beatmap; - + return new LeaderboardScore(model, index, IsOnlineScope) { - Action = () => ScoreSelected?.Invoke(model) + Action = () => ScoreSelected?.Invoke(model), + RefreshAction = () => this.RefreshScores() }; } } From 4646524bf9ff4a3f3923f3a77af9a9fb5f0b08d6 Mon Sep 17 00:00:00 2001 From: wltu Date: Tue, 17 Dec 2019 13:18:20 -0800 Subject: [PATCH 0422/1829] Remove unnecessary library --- osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs b/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs index ee360d1e57..8747bc2d28 100644 --- a/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs +++ b/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs @@ -15,8 +15,6 @@ using osu.Game.Rulesets; using osu.Game.Rulesets.Mods; using osu.Game.Scoring; -using osu.Framework.Graphics.UserInterface; - namespace osu.Game.Screens.Select.Leaderboards { public class BeatmapLeaderboard : Leaderboard From 7e58b4a948c1d4fb3b1b50e4df01b315917afe77 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Wed, 18 Dec 2019 03:03:12 +0300 Subject: [PATCH 0423/1829] Early-return on potential division by zero in SPM calculation --- .../Objects/Drawables/Pieces/SpinnerSpmCounter.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerSpmCounter.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerSpmCounter.cs index b1d90c49f6..97a7b98c5b 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerSpmCounter.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerSpmCounter.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.Linq; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.MathUtils; using osu.Game.Graphics; using osu.Game.Graphics.Sprites; @@ -62,6 +63,10 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces public void SetRotation(float currentRotation) { + // Never calculate SPM by same time of record to avoid 0 / 0 = NaN or X / 0 = Infinity result. + if (Precision.AlmostEquals(0, Time.Elapsed)) + return; + // If we've gone back in time, it's fine to work with a fresh set of records for now if (records.Count > 0 && Time.Current < records.Last().Time) records.Clear(); @@ -71,6 +76,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces var record = records.Peek(); while (records.Count > 0 && Time.Current - records.Peek().Time > spm_count_duration) record = records.Dequeue(); + SpinsPerMinute = (currentRotation - record.Rotation) / (Time.Current - record.Time) * 1000 * 60 / 360; } From cbfbbf9999be5dfb60a36ebad95c9d29f292b8f8 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Wed, 18 Dec 2019 03:04:37 +0300 Subject: [PATCH 0424/1829] Make SpmCounter public --- .../Objects/Drawables/DrawableSpinner.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs index 1261d3d19a..de11ab6419 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs @@ -25,7 +25,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables public readonly SpinnerDisc Disc; public readonly SpinnerTicks Ticks; - private readonly SpinnerSpmCounter spmCounter; + public readonly SpinnerSpmCounter SpmCounter; private readonly Container mainContainer; @@ -110,7 +110,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables }, } }, - spmCounter = new SpinnerSpmCounter + SpmCounter = new SpinnerSpmCounter { Anchor = Anchor.Centre, Origin = Anchor.Centre, @@ -177,8 +177,8 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables protected override void Update() { Disc.Tracking = OsuActionInputManager?.PressedActions.Any(x => x == OsuAction.LeftButton || x == OsuAction.RightButton) ?? false; - if (!spmCounter.IsPresent && Disc.Tracking) - spmCounter.FadeIn(HitObject.TimeFadeIn); + if (!SpmCounter.IsPresent && Disc.Tracking) + SpmCounter.FadeIn(HitObject.TimeFadeIn); base.Update(); } @@ -189,7 +189,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables circle.Rotation = Disc.Rotation; Ticks.Rotation = Disc.Rotation; - spmCounter.SetRotation(Disc.RotationAbsolute); + SpmCounter.SetRotation(Disc.RotationAbsolute); float relativeCircleScale = Spinner.Scale * circle.DrawHeight / mainContainer.DrawHeight; Disc.ScaleTo(relativeCircleScale + (1 - relativeCircleScale) * Progress, 200, Easing.OutQuint); From 12a02cf6d927e583c6cba57142beda24f7bef041 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Wed, 18 Dec 2019 03:07:06 +0300 Subject: [PATCH 0425/1829] Extend spinner duration a bit To allow the times sought to be in the spinner time range --- osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs index d0ce0c33c2..ea42251a69 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs @@ -84,7 +84,7 @@ namespace osu.Game.Rulesets.Osu.Tests new Spinner { Position = new Vector2(256, 192), - EndTime = 5000, + EndTime = 6000, }, // placeholder object to avoid hitting the results screen new HitObject From f359a79b7ec5d12b9ec8aa2b71e31c86039ab2ad Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Wed, 18 Dec 2019 03:08:05 +0300 Subject: [PATCH 0426/1829] Add test ensuring correct SPM calculation on rewinding --- .../TestSceneSpinnerRotation.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs index ea42251a69..2eda555018 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs @@ -70,6 +70,19 @@ namespace osu.Game.Rulesets.Osu.Tests AddAssert("is rotation absolute almost same", () => Precision.AlmostEquals(drawableSpinner.Disc.RotationAbsolute, estimatedRotation, 100)); } + [Test] + public void TestSpinPerMinuteOnRewind() + { + double estimatedSpm = 0; + + addSeekStep(2500); + AddStep("retrieve spm", () => estimatedSpm = drawableSpinner.SpmCounter.SpinsPerMinute); + + addSeekStep(5000); + addSeekStep(2500); + AddAssert("is spm almost same", () => Precision.AlmostEquals(drawableSpinner.SpmCounter.SpinsPerMinute, estimatedSpm, 1.0)); + } + private void addSeekStep(double time) { AddStep($"seek to {time}", () => track.Seek(time)); From df8f8ffd0d3fc699b9a0dee2e3aa698231227afe Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 18 Dec 2019 12:03:15 +0900 Subject: [PATCH 0427/1829] Fix potential exception during removal --- osu.Game/Rulesets/UI/HitObjectContainer.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/osu.Game/Rulesets/UI/HitObjectContainer.cs b/osu.Game/Rulesets/UI/HitObjectContainer.cs index b7508a82f3..1e33b15184 100644 --- a/osu.Game/Rulesets/UI/HitObjectContainer.cs +++ b/osu.Game/Rulesets/UI/HitObjectContainer.cs @@ -33,13 +33,14 @@ namespace osu.Game.Rulesets.UI public virtual bool Remove(DrawableHitObject hitObject) { - bool result = RemoveInternal(hitObject); + if (!RemoveInternal(hitObject)) + return false; // Removed last for the comparer to remain ordered during RemoveInternal startTimeMap[hitObject].bindable.UnbindAll(); startTimeMap.Remove(hitObject); - return result; + return true; } private void onStartTimeChanged(DrawableHitObject hitObject) From 0f5ef78b69c552545e5cc7dfc9b6a91bd2afafb7 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 18 Dec 2019 12:39:50 +0900 Subject: [PATCH 0428/1829] Update client id --- osu.Desktop/DiscordRichPresenceClient.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Desktop/DiscordRichPresenceClient.cs b/osu.Desktop/DiscordRichPresenceClient.cs index af5b42b275..7a661fe6a2 100644 --- a/osu.Desktop/DiscordRichPresenceClient.cs +++ b/osu.Desktop/DiscordRichPresenceClient.cs @@ -16,7 +16,7 @@ namespace osu.Desktop { internal class DiscordRichPresenceClient : Component { - private const string client_id = "563024054391537674"; + private const string client_id = "367827983903490050"; private Bindable user; From 1fe0e45a9cf4e3c1de1deab229aadce365008d26 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 18 Dec 2019 13:37:37 +0900 Subject: [PATCH 0429/1829] Implement legacy slider border shadow --- .../Objects/Drawables/Pieces/PlaySliderBody.cs | 7 +------ osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs | 14 +++++++++++--- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/PlaySliderBody.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/PlaySliderBody.cs index aa9caf193e..cedf2f6e09 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/PlaySliderBody.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/PlaySliderBody.cs @@ -24,16 +24,14 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces private OsuRulesetConfigManager config { get; set; } private Slider slider; - private float defaultPathRadius; [BackgroundDependencyLoader] private void load(ISkinSource skin) { slider = (Slider)drawableObject.HitObject; - defaultPathRadius = skin.GetConfig(OsuSkinConfiguration.SliderPathRadius)?.Value ?? OsuHitObject.OBJECT_RADIUS; scaleBindable = slider.ScaleBindable.GetBoundCopy(); - scaleBindable.BindValueChanged(_ => updatePathRadius(), true); + scaleBindable.BindValueChanged(scale => PathRadius = OsuHitObject.OBJECT_RADIUS * scale.NewValue, true); pathVersion = slider.Path.Version.GetBoundCopy(); pathVersion.BindValueChanged(_ => Refresh()); @@ -48,9 +46,6 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces BorderColour = skin.GetConfig(OsuSkinColour.SliderBorder)?.Value ?? Color4.White; } - private void updatePathRadius() - => PathRadius = defaultPathRadius * scaleBindable.Value; - private void updateAccentColour(ISkinSource skin, Color4 defaultAccentColour) => AccentColour = skin.GetConfig(OsuSkinColour.SliderTrackOverride)?.Value ?? defaultAccentColour; } diff --git a/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs b/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs index dea08f843e..8fc07d2c9d 100644 --- a/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs +++ b/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs @@ -15,19 +15,27 @@ namespace osu.Game.Rulesets.Osu.Skinning private class LegacyDrawableSliderPath : DrawableSliderPath { + private const float shadow_portion = 0.06f; + public new Color4 AccentColour => new Color4(base.AccentColour.R, base.AccentColour.G, base.AccentColour.B, base.AccentColour.A * 0.70f); protected override Color4 ColourAt(float position) { - if (CalculatedBorderPortion != 0f && position <= CalculatedBorderPortion) + float realBorderPortion = shadow_portion + CalculatedBorderPortion; + float realGradientPortion = 1 - realBorderPortion; + + if (position <= shadow_portion) + return new Color4(0f, 0f, 0f, 0.25f * position / shadow_portion); + + if (position <= realBorderPortion) return BorderColour; - position -= BORDER_PORTION; + position -= realBorderPortion; Color4 outerColour = AccentColour.Darken(0.1f); Color4 innerColour = lighten(AccentColour, 0.5f); - return Interpolation.ValueAt(position / GRADIENT_PORTION, outerColour, innerColour, 0, 1); + return Interpolation.ValueAt(position / realGradientPortion, outerColour, innerColour, 0, 1); } /// From 756d847ad8c848ac24800fd4436ef31fbf261d59 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 18 Dec 2019 14:07:03 +0900 Subject: [PATCH 0430/1829] Fix user not getting an initial status --- osu.Game/Online/API/APIAccess.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/osu.Game/Online/API/APIAccess.cs b/osu.Game/Online/API/APIAccess.cs index 8bfc28e774..23c931d161 100644 --- a/osu.Game/Online/API/APIAccess.cs +++ b/osu.Game/Online/API/APIAccess.cs @@ -153,6 +153,10 @@ namespace osu.Game.Online.API userReq.Success += u => { LocalUser.Value = u; + + // todo: save/pull from settings + LocalUser.Value.Status.Value = new UserStatusOnline(); + failureCount = 0; //we're connected! From 2f5b27e97c11d122be488e2dbb4ff5dee349e4e7 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 18 Dec 2019 14:07:12 +0900 Subject: [PATCH 0431/1829] Make user bindables readonly --- osu.Game/Users/User.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Users/User.cs b/osu.Game/Users/User.cs index ebd9dbecd1..5d0ffd5a67 100644 --- a/osu.Game/Users/User.cs +++ b/osu.Game/Users/User.cs @@ -26,9 +26,9 @@ namespace osu.Game.Users [JsonProperty(@"country")] public Country Country; - public Bindable Status = new Bindable(); + public readonly Bindable Status = new Bindable(); - public IBindable Activity = new Bindable(); + public readonly Bindable Activity = new Bindable(); //public Team Team; From f53fd6e4bcfce9b22eb692c223bdf0cb30332e09 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 18 Dec 2019 14:07:21 +0900 Subject: [PATCH 0432/1829] Fix status capitalisation --- osu.Game/Users/UserActivity.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Users/UserActivity.cs b/osu.Game/Users/UserActivity.cs index 918c547978..8030fc55a2 100644 --- a/osu.Game/Users/UserActivity.cs +++ b/osu.Game/Users/UserActivity.cs @@ -62,7 +62,7 @@ namespace osu.Game.Users public class InLobby : UserActivity { - public override string Status => @"In a Multiplayer Lobby"; + public override string Status => @"In a multiplayer lobby"; } } } From 0a3d339dd91a6d18f23e1bf7097aec50fe8a65a7 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 18 Dec 2019 14:07:32 +0900 Subject: [PATCH 0433/1829] Load discord RPC asynchronously --- osu.Desktop/OsuGameDesktop.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Desktop/OsuGameDesktop.cs b/osu.Desktop/OsuGameDesktop.cs index 9f2a4b12a1..f70cc24159 100644 --- a/osu.Desktop/OsuGameDesktop.cs +++ b/osu.Desktop/OsuGameDesktop.cs @@ -61,7 +61,7 @@ namespace osu.Desktop Add(new SimpleUpdateManager()); } - Add(new DiscordRichPresenceClient()); + LoadComponentAsync(new DiscordRichPresence(), Add); } protected override void ScreenChanged(IScreen lastScreen, IScreen newScreen) From b65847b0d76bd3fffb629176e0a33cdb34764c40 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 18 Dec 2019 14:07:53 +0900 Subject: [PATCH 0434/1829] Refactor / rewrite discord code --- osu.Desktop/DiscordRichPresence.cs | 120 +++++++++++++++++++++++ osu.Desktop/DiscordRichPresenceClient.cs | 104 -------------------- 2 files changed, 120 insertions(+), 104 deletions(-) create mode 100644 osu.Desktop/DiscordRichPresence.cs delete mode 100644 osu.Desktop/DiscordRichPresenceClient.cs diff --git a/osu.Desktop/DiscordRichPresence.cs b/osu.Desktop/DiscordRichPresence.cs new file mode 100644 index 0000000000..d1bd8fd292 --- /dev/null +++ b/osu.Desktop/DiscordRichPresence.cs @@ -0,0 +1,120 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using DiscordRPC; +using DiscordRPC.Message; +using osu.Framework.Allocation; +using osu.Framework.Bindables; +using osu.Framework.Graphics; +using osu.Framework.Logging; +using osu.Game.Online.API; +using osu.Game.Rulesets; +using osu.Game.Users; +using LogLevel = osu.Framework.Logging.LogLevel; +using User = osu.Game.Users.User; + +namespace osu.Desktop +{ + internal class DiscordRichPresence : Component + { + private const string client_id = "367827983903490050"; + + private DiscordRpcClient client; + + [Resolved] + private IBindable ruleset { get; set; } + + private Bindable user; + + private readonly IBindable status = new Bindable(); + private readonly IBindable activity = new Bindable(); + + private readonly RichPresence presence = new RichPresence + { + Assets = new Assets { LargeImageKey = "osu_logo_lazer", } + }; + + [BackgroundDependencyLoader] + private void load(IAPIProvider provider) + { + client = new DiscordRpcClient(client_id) + { + SkipIdenticalPresence = false // handles better on discord IPC loss, see updateStatus call in onReady. + }; + + client.OnReady += onReady; + client.OnError += (_, e) => Logger.Log($"An error occurred with Discord RPC Client: {e.Code} {e.Message}", LoggingTarget.Network, LogLevel.Error); + client.OnConnectionFailed += (_, e) => Logger.Log($"An connection occurred with Discord RPC Client: {e.Type}", LoggingTarget.Network, LogLevel.Error); + + (user = provider.LocalUser.GetBoundCopy()).BindValueChanged(u => + { + status.UnbindBindings(); + status.BindTo(u.NewValue.Status); + + activity.UnbindBindings(); + activity.BindTo(u.NewValue.Activity); + }, true); + + ruleset.BindValueChanged(_ => updateStatus()); + status.BindValueChanged(_ => updateStatus()); + activity.BindValueChanged(_ => updateStatus()); + + client.Initialize(); + } + + private void onReady(object _, ReadyMessage __) + { + Logger.Log("Discord RPC Client ready.", LoggingTarget.Network, LogLevel.Debug); + updateStatus(); + } + + private void updateStatus() + { + if (status.Value is UserStatusOffline) + { + client.ClearPresence(); + return; + } + + if (status.Value is UserStatusOnline && activity.Value != null) + { + presence.State = activity.Value.Status; + presence.Details = getDetails(activity.Value); + } + else + { + presence.State = "Idle"; + presence.Details = string.Empty; + } + + // update user information + presence.Assets.LargeImageText = $"{user.Value.Username}" + (user.Value.Statistics?.Ranks.Global > 0 ? $" (rank #{user.Value.Statistics.Ranks.Global:N0})" : string.Empty); + + // update ruleset + presence.Assets.SmallImageKey = ruleset.Value.ID <= 3 ? $"mode_{ruleset.Value.ID}" : "mode_unknown"; + presence.Assets.SmallImageText = ruleset.Value.Name; + + client.SetPresence(presence); + } + + private string getDetails(UserActivity activity) + { + switch (activity) + { + case UserActivity.SoloGame solo: + return solo.Beatmap.ToString(); + + case UserActivity.Editing edit: + return edit.Beatmap.ToString(); + } + + return string.Empty; + } + + protected override void Dispose(bool isDisposing) + { + client.Dispose(); + base.Dispose(isDisposing); + } + } +} diff --git a/osu.Desktop/DiscordRichPresenceClient.cs b/osu.Desktop/DiscordRichPresenceClient.cs deleted file mode 100644 index 7a661fe6a2..0000000000 --- a/osu.Desktop/DiscordRichPresenceClient.cs +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. -// See the LICENCE file in the repository root for full licence text. - -using DiscordRPC; -using osu.Framework.Allocation; -using osu.Framework.Bindables; -using osu.Framework.Graphics; -using osu.Framework.Logging; -using osu.Game.Online.API; -using osu.Game.Rulesets; -using osu.Game.Users; -using static osu.Game.Users.UserActivity; -using User = osu.Game.Users.User; - -namespace osu.Desktop -{ - internal class DiscordRichPresenceClient : Component - { - private const string client_id = "367827983903490050"; - - private Bindable user; - - private readonly DiscordRpcClient client = new DiscordRpcClient(client_id); - - [BackgroundDependencyLoader] - private void load(IAPIProvider provider) - { - user = provider.LocalUser.GetBoundCopy(); - - user.ValueChanged += usr => - { - usr.NewValue.Activity.ValueChanged += activity => updateStatus(user.Value.Status.Value, activity.NewValue); - usr.NewValue.Status.ValueChanged += status => updateStatus(status.NewValue, user.Value.Activity.Value); - }; - - user.TriggerChange(); - - enableLogging(); - - client.Initialize(); - } - - private void enableLogging() - { - client.OnReady += (_, __) => Logger.Log("Discord RPC Client ready.", LoggingTarget.Network, LogLevel.Debug); - client.OnError += (_, e) => Logger.Log($"An error occurred with Discord RPC Client : {e.Message}", LoggingTarget.Network, LogLevel.Debug); - client.OnConnectionFailed += (_, e) => Logger.Log("Discord RPC Client failed to initialize : is discord running ?", LoggingTarget.Network, LogLevel.Debug); - client.OnPresenceUpdate += (_, __) => Logger.Log("Updated Discord Rich Presence", LoggingTarget.Network, LogLevel.Debug); - } - - private void updateStatus(UserStatus st, UserActivity a) - { - var presence = defaultPresence(st is UserStatusOnline ? a?.Status ?? st.Message : st.Message); //display the current user activity if the user status is online & user activity != null, else display the current user online status - - if (!(st is UserStatusOnline)) //don't update the presence any further if the current user status is DND / Offline & simply return with the default presence - { - client.SetPresence(presence); - return; - } - - switch (a) - { - case SoloGame game: - presence.State = $"{game.Beatmap.Metadata.Artist} - {game.Beatmap.Metadata.Title} [{game.Beatmap.Version}]"; - setPresenceGamemode(game.Ruleset, presence); - break; - - case Editing editing: - presence.State = $"{editing.Beatmap.Metadata.Artist} - {editing.Beatmap.Metadata.Title} " + (!string.IsNullOrEmpty(editing.Beatmap.Version) ? $"[{editing.Beatmap.Version}]" : ""); - presence.Assets.SmallImageKey = "edit"; - presence.Assets.SmallImageText = "editing"; - break; - } - - client.SetPresence(presence); - } - - private void setPresenceGamemode(RulesetInfo ruleset, RichPresence presence) - { - if (ruleset.ID != null && ruleset.ID <= 3) //legacy rulesets use an ID between 0 and 3 - presence.Assets.SmallImageKey = ruleset.ShortName; - else - presence.Assets.SmallImageKey = "unknown"; //not a legacy ruleset so let's display the unknown ruleset icon. - - presence.Assets.SmallImageText = ruleset.ShortName; - } - - private RichPresence defaultPresence(string status) => new RichPresence - { - Details = status, - Assets = new Assets - { - LargeImageKey = "lazer", - LargeImageText = user.Value.Username - } - }; - - protected override void Dispose(bool isDisposing) - { - client.Dispose(); - base.Dispose(isDisposing); - } - } -} From 0710e5ba13749212b158f008ecc9c2b5987b3ca8 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 18 Dec 2019 14:35:18 +0900 Subject: [PATCH 0435/1829] Rename unknown mode assets (discord dev page broken) --- osu.Desktop/DiscordRichPresence.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Desktop/DiscordRichPresence.cs b/osu.Desktop/DiscordRichPresence.cs index d1bd8fd292..b53ca6161b 100644 --- a/osu.Desktop/DiscordRichPresence.cs +++ b/osu.Desktop/DiscordRichPresence.cs @@ -91,7 +91,7 @@ namespace osu.Desktop presence.Assets.LargeImageText = $"{user.Value.Username}" + (user.Value.Statistics?.Ranks.Global > 0 ? $" (rank #{user.Value.Statistics.Ranks.Global:N0})" : string.Empty); // update ruleset - presence.Assets.SmallImageKey = ruleset.Value.ID <= 3 ? $"mode_{ruleset.Value.ID}" : "mode_unknown"; + presence.Assets.SmallImageKey = ruleset.Value.ID <= 3 ? $"mode_{ruleset.Value.ID}" : "mode_custom"; presence.Assets.SmallImageText = ruleset.Value.Name; client.SetPresence(presence); From 6e0802e50cfdfe0cb1010a64ca1f1a1fbaff7dba Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 18 Dec 2019 14:49:09 +0900 Subject: [PATCH 0436/1829] Remove RulesetInfo parameter from Ruleset constructor --- osu.Game.Rulesets.Catch/CatchRuleset.cs | 5 ----- osu.Game.Rulesets.Mania/ManiaRuleset.cs | 5 ----- osu.Game.Rulesets.Osu/OsuRuleset.cs | 5 ----- osu.Game.Rulesets.Taiko/TaikoRuleset.cs | 5 ----- .../Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs | 5 ----- osu.Game/Beatmaps/DummyWorkingBeatmap.cs | 7 +------ osu.Game/Rulesets/Ruleset.cs | 4 ++-- osu.Game/Rulesets/RulesetInfo.cs | 2 +- osu.Game/Rulesets/RulesetStore.cs | 4 ++-- 9 files changed, 6 insertions(+), 36 deletions(-) diff --git a/osu.Game.Rulesets.Catch/CatchRuleset.cs b/osu.Game.Rulesets.Catch/CatchRuleset.cs index 065771bc4a..b8a844cb86 100644 --- a/osu.Game.Rulesets.Catch/CatchRuleset.cs +++ b/osu.Game.Rulesets.Catch/CatchRuleset.cs @@ -137,10 +137,5 @@ namespace osu.Game.Rulesets.Catch public override int? LegacyID => 2; public override IConvertibleReplayFrame CreateConvertibleReplayFrame() => new CatchReplayFrame(); - - public CatchRuleset(RulesetInfo rulesetInfo = null) - : base(rulesetInfo) - { - } } } diff --git a/osu.Game.Rulesets.Mania/ManiaRuleset.cs b/osu.Game.Rulesets.Mania/ManiaRuleset.cs index 8b53ce01f6..bf630cf892 100644 --- a/osu.Game.Rulesets.Mania/ManiaRuleset.cs +++ b/osu.Game.Rulesets.Mania/ManiaRuleset.cs @@ -186,11 +186,6 @@ namespace osu.Game.Rulesets.Mania public override RulesetSettingsSubsection CreateSettings() => new ManiaSettingsSubsection(this); - public ManiaRuleset(RulesetInfo rulesetInfo = null) - : base(rulesetInfo) - { - } - public override IEnumerable AvailableVariants { get diff --git a/osu.Game.Rulesets.Osu/OsuRuleset.cs b/osu.Game.Rulesets.Osu/OsuRuleset.cs index 835ae2564c..27af615935 100644 --- a/osu.Game.Rulesets.Osu/OsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/OsuRuleset.cs @@ -183,10 +183,5 @@ namespace osu.Game.Rulesets.Osu public override IConvertibleReplayFrame CreateConvertibleReplayFrame() => new OsuReplayFrame(); public override IRulesetConfigManager CreateConfig(SettingsStore settings) => new OsuRulesetConfigManager(settings, RulesetInfo); - - public OsuRuleset(RulesetInfo rulesetInfo = null) - : base(rulesetInfo) - { - } } } diff --git a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs index 4d6c5fa1c0..ca7ab30867 100644 --- a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs +++ b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs @@ -136,10 +136,5 @@ namespace osu.Game.Rulesets.Taiko public override int? LegacyID => 1; public override IConvertibleReplayFrame CreateConvertibleReplayFrame() => new TaikoReplayFrame(); - - public TaikoRuleset(RulesetInfo rulesetInfo = null) - : base(rulesetInfo) - { - } } } diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs index c958932730..ae20bbc86d 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs @@ -194,11 +194,6 @@ namespace osu.Game.Tests.Visual.Gameplay private class TestScrollingRuleset : Ruleset { - public TestScrollingRuleset(RulesetInfo rulesetInfo = null) - : base(rulesetInfo) - { - } - public override IEnumerable GetModsFor(ModType type) => throw new NotImplementedException(); public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => new TestDrawableScrollingRuleset(this, beatmap, mods); diff --git a/osu.Game/Beatmaps/DummyWorkingBeatmap.cs b/osu.Game/Beatmaps/DummyWorkingBeatmap.cs index 9ea254b23f..46efe38d37 100644 --- a/osu.Game/Beatmaps/DummyWorkingBeatmap.cs +++ b/osu.Game/Beatmaps/DummyWorkingBeatmap.cs @@ -51,7 +51,7 @@ namespace osu.Game.Beatmaps private class DummyRulesetInfo : RulesetInfo { - public override Ruleset CreateInstance() => new DummyRuleset(this); + public override Ruleset CreateInstance() => new DummyRuleset(); private class DummyRuleset : Ruleset { @@ -70,11 +70,6 @@ namespace osu.Game.Beatmaps public override string ShortName => "dummy"; - public DummyRuleset(RulesetInfo rulesetInfo = null) - : base(rulesetInfo) - { - } - private class DummyBeatmapConverter : IBeatmapConverter { public event Action> ObjectConverted; diff --git a/osu.Game/Rulesets/Ruleset.cs b/osu.Game/Rulesets/Ruleset.cs index 6f5fe066aa..7ad93379f0 100644 --- a/osu.Game/Rulesets/Ruleset.cs +++ b/osu.Game/Rulesets/Ruleset.cs @@ -49,9 +49,9 @@ namespace osu.Game.Rulesets public virtual ISkin CreateLegacySkinProvider(ISkinSource source) => null; - protected Ruleset(RulesetInfo rulesetInfo = null) + protected Ruleset() { - RulesetInfo = rulesetInfo ?? createRulesetInfo(); + RulesetInfo = createRulesetInfo(); } /// diff --git a/osu.Game/Rulesets/RulesetInfo.cs b/osu.Game/Rulesets/RulesetInfo.cs index 6a69fd8dd0..d695e0b56d 100644 --- a/osu.Game/Rulesets/RulesetInfo.cs +++ b/osu.Game/Rulesets/RulesetInfo.cs @@ -24,7 +24,7 @@ namespace osu.Game.Rulesets { if (!Available) return null; - return (Ruleset)Activator.CreateInstance(Type.GetType(InstantiationInfo), this); + return (Ruleset)Activator.CreateInstance(Type.GetType(InstantiationInfo)); } public bool Equals(RulesetInfo other) => other != null && ID == other.ID && Available == other.Available && Name == other.Name && InstantiationInfo == other.InstantiationInfo; diff --git a/osu.Game/Rulesets/RulesetStore.cs b/osu.Game/Rulesets/RulesetStore.cs index 7d13afe9e5..5d0c5c7ccf 100644 --- a/osu.Game/Rulesets/RulesetStore.cs +++ b/osu.Game/Rulesets/RulesetStore.cs @@ -56,7 +56,7 @@ namespace osu.Game.Rulesets { var context = usage.Context; - var instances = loadedAssemblies.Values.Select(r => (Ruleset)Activator.CreateInstance(r, (RulesetInfo)null)).ToList(); + var instances = loadedAssemblies.Values.Select(r => (Ruleset)Activator.CreateInstance(r)).ToList(); //add all legacy modes in correct order foreach (var r in instances.Where(r => r.LegacyID != null).OrderBy(r => r.LegacyID)) @@ -87,7 +87,7 @@ namespace osu.Game.Rulesets // this allows for debug builds to successfully load rulesets (even though debug rulesets have a 0.0.0 version). asm.Version = null; return Assembly.Load(asm); - }, null), (RulesetInfo)null)).RulesetInfo; + }, null))).RulesetInfo; r.Name = instanceInfo.Name; r.ShortName = instanceInfo.ShortName; From 826b271371188a64d9e9e6660fbe2d23af254ca6 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 18 Dec 2019 15:39:36 +0900 Subject: [PATCH 0437/1829] Use exact ratio of legacy to default object size --- osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs | 3 ++- osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs b/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs index 8fc07d2c9d..d41135ca69 100644 --- a/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs +++ b/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs @@ -4,6 +4,7 @@ using System; using osu.Framework.Extensions.Color4Extensions; using osu.Framework.MathUtils; +using osu.Game.Rulesets.Osu.Objects; using osu.Game.Rulesets.Osu.Objects.Drawables.Pieces; using osuTK.Graphics; @@ -15,7 +16,7 @@ namespace osu.Game.Rulesets.Osu.Skinning private class LegacyDrawableSliderPath : DrawableSliderPath { - private const float shadow_portion = 0.06f; + private const float shadow_portion = 1 - (OsuLegacySkinTransformer.LEGACY_CIRCLE_RADIUS / OsuHitObject.OBJECT_RADIUS); public new Color4 AccentColour => new Color4(base.AccentColour.R, base.AccentColour.G, base.AccentColour.B, base.AccentColour.A * 0.70f); diff --git a/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs b/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs index 71770dedce..266b619334 100644 --- a/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs +++ b/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs @@ -23,7 +23,7 @@ namespace osu.Game.Rulesets.Osu.Skinning /// Their hittable area is 128px, but the actual circle portion is 118px. /// We must account for some gameplay elements such as slider bodies, where this padding is not present. /// - private const float legacy_circle_radius = 64 - 5; + public const float LEGACY_CIRCLE_RADIUS = 64 - 5; public OsuLegacySkinTransformer(ISkinSource source) { @@ -130,7 +130,7 @@ namespace osu.Game.Rulesets.Osu.Skinning { case OsuSkinConfiguration.SliderPathRadius: if (hasHitCircle.Value) - return SkinUtils.As(new BindableFloat(legacy_circle_radius)); + return SkinUtils.As(new BindableFloat(LEGACY_CIRCLE_RADIUS)); break; } From d4a4efb734f8799337525c767d01e3825083d897 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 18 Dec 2019 16:07:14 +0900 Subject: [PATCH 0438/1829] Tidy up test --- osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs index 2eda555018..02ce77e707 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs @@ -79,8 +79,10 @@ namespace osu.Game.Rulesets.Osu.Tests AddStep("retrieve spm", () => estimatedSpm = drawableSpinner.SpmCounter.SpinsPerMinute); addSeekStep(5000); + AddAssert("spm still valid", () => Precision.AlmostEquals(drawableSpinner.SpmCounter.SpinsPerMinute, estimatedSpm, 1.0)); + addSeekStep(2500); - AddAssert("is spm almost same", () => Precision.AlmostEquals(drawableSpinner.SpmCounter.SpinsPerMinute, estimatedSpm, 1.0)); + AddAssert("spm still valid", () => Precision.AlmostEquals(drawableSpinner.SpmCounter.SpinsPerMinute, estimatedSpm, 1.0)); } private void addSeekStep(double time) From 54572b6de9e685e96168ff36263103437684ede9 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 18 Dec 2019 16:42:18 +0900 Subject: [PATCH 0439/1829] Update selected mdos references --- .../Visual/SongSelect/TestSceneBeatmapDetailArea.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetailArea.cs b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetailArea.cs index d4805a73e4..66144cbfe4 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetailArea.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetailArea.cs @@ -44,7 +44,7 @@ namespace osu.Game.Tests.Visual.SongSelect Position = new Vector2(0, 25), }); - modDisplay.Current.BindTo(Mods); + modDisplay.Current.BindTo(SelectedMods); AddStep("all metrics", () => detailsArea.Beatmap = new TestWorkingBeatmap(new Beatmap { @@ -204,7 +204,7 @@ namespace osu.Game.Tests.Visual.SongSelect } }); - Mods.Value = new[] { ruleset.GetAllMods().First(m => m is ModEasy) }; + SelectedMods.Value = new[] { ruleset.GetAllMods().First(m => m is ModEasy) }; }); AddStep("with HR mod", () => @@ -230,7 +230,7 @@ namespace osu.Game.Tests.Visual.SongSelect } }); - Mods.Value = new[] { ruleset.GetAllMods().First(m => m is ModHardRock) }; + SelectedMods.Value = new[] { ruleset.GetAllMods().First(m => m is ModHardRock) }; }); } } From e87aa281bfde25de44342ceed4ac21c7309c1c14 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 18 Dec 2019 17:00:35 +0900 Subject: [PATCH 0440/1829] Don't clone beatmap unnecessarily --- .../Screens/Select/Details/AdvancedStats.cs | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/osu.Game/Screens/Select/Details/AdvancedStats.cs b/osu.Game/Screens/Select/Details/AdvancedStats.cs index 3e7d4e244b..529d63b475 100644 --- a/osu.Game/Screens/Select/Details/AdvancedStats.cs +++ b/osu.Game/Screens/Select/Details/AdvancedStats.cs @@ -68,41 +68,39 @@ namespace osu.Game.Screens.Select.Details private void updateStatistics() { - BeatmapInfo processed = Beatmap?.Clone(); + var baseDifficulty = Beatmap?.BaseDifficulty; + var adjustedDifficulty = baseDifficulty; - if (processed != null && mods.Value.Any(m => m is IApplicableToDifficulty)) + if (baseDifficulty != null && mods.Value.Any(m => m is IApplicableToDifficulty)) { - processed.BaseDifficulty = processed.BaseDifficulty.Clone(); + adjustedDifficulty = adjustedDifficulty?.Clone(); foreach (var mod in mods.Value.OfType()) - mod.ApplyToDifficulty(processed.BaseDifficulty); + mod.ApplyToDifficulty(adjustedDifficulty); } - BeatmapDifficulty baseDifficulty = Beatmap?.BaseDifficulty; - BeatmapDifficulty moddedDifficulty = processed?.BaseDifficulty; - //mania specific - if ((processed?.Ruleset?.ID ?? 0) == 3) + if ((Beatmap?.Ruleset?.ID ?? 0) == 3) { firstValue.Title = "Key Amount"; firstValue.BaseValue = (int)MathF.Round(baseDifficulty?.CircleSize ?? 0); - firstValue.ModdedValue = (int)MathF.Round(moddedDifficulty?.CircleSize ?? 0); + firstValue.ModdedValue = (int)MathF.Round(adjustedDifficulty?.CircleSize ?? 0); } else { firstValue.Title = "Circle Size"; firstValue.BaseValue = baseDifficulty?.CircleSize ?? 0; - firstValue.ModdedValue = moddedDifficulty?.CircleSize ?? 0; + firstValue.ModdedValue = adjustedDifficulty?.CircleSize ?? 0; } hpDrain.BaseValue = baseDifficulty?.DrainRate ?? 0; accuracy.BaseValue = baseDifficulty?.OverallDifficulty ?? 0; approachRate.BaseValue = baseDifficulty?.ApproachRate ?? 0; - starDifficulty.BaseValue = (float)(processed?.StarDifficulty ?? 0); + starDifficulty.BaseValue = (float)(Beatmap?.StarDifficulty ?? 0); - hpDrain.ModdedValue = moddedDifficulty?.DrainRate ?? 0; - accuracy.ModdedValue = moddedDifficulty?.OverallDifficulty ?? 0; - approachRate.ModdedValue = moddedDifficulty?.ApproachRate ?? 0; + hpDrain.ModdedValue = adjustedDifficulty?.DrainRate ?? 0; + accuracy.ModdedValue = adjustedDifficulty?.OverallDifficulty ?? 0; + approachRate.ModdedValue = adjustedDifficulty?.ApproachRate ?? 0; } private class StatisticRow : Container, IHasAccentColour From ada2ae2b2c9e279b4ab4922be136c42e87d7205b Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 18 Dec 2019 17:12:41 +0900 Subject: [PATCH 0441/1829] Use tuple to avoid potential for incorrect display --- .../Screens/Select/Details/AdvancedStats.cs | 66 ++++++++----------- 1 file changed, 27 insertions(+), 39 deletions(-) diff --git a/osu.Game/Screens/Select/Details/AdvancedStats.cs b/osu.Game/Screens/Select/Details/AdvancedStats.cs index 529d63b475..f684238a38 100644 --- a/osu.Game/Screens/Select/Details/AdvancedStats.cs +++ b/osu.Game/Screens/Select/Details/AdvancedStats.cs @@ -68,12 +68,12 @@ namespace osu.Game.Screens.Select.Details private void updateStatistics() { - var baseDifficulty = Beatmap?.BaseDifficulty; - var adjustedDifficulty = baseDifficulty; + BeatmapDifficulty baseDifficulty = Beatmap?.BaseDifficulty; + BeatmapDifficulty adjustedDifficulty = null; if (baseDifficulty != null && mods.Value.Any(m => m is IApplicableToDifficulty)) { - adjustedDifficulty = adjustedDifficulty?.Clone(); + adjustedDifficulty = baseDifficulty.Clone(); foreach (var mod in mods.Value.OfType()) mod.ApplyToDifficulty(adjustedDifficulty); @@ -83,24 +83,19 @@ namespace osu.Game.Screens.Select.Details if ((Beatmap?.Ruleset?.ID ?? 0) == 3) { firstValue.Title = "Key Amount"; - firstValue.BaseValue = (int)MathF.Round(baseDifficulty?.CircleSize ?? 0); - firstValue.ModdedValue = (int)MathF.Round(adjustedDifficulty?.CircleSize ?? 0); + firstValue.Value = ((int)MathF.Round(baseDifficulty?.CircleSize ?? 0), (int)MathF.Round(adjustedDifficulty?.CircleSize ?? 0)); } else { firstValue.Title = "Circle Size"; - firstValue.BaseValue = baseDifficulty?.CircleSize ?? 0; - firstValue.ModdedValue = adjustedDifficulty?.CircleSize ?? 0; + firstValue.Value = (baseDifficulty?.CircleSize ?? 0, adjustedDifficulty?.CircleSize); } - hpDrain.BaseValue = baseDifficulty?.DrainRate ?? 0; - accuracy.BaseValue = baseDifficulty?.OverallDifficulty ?? 0; - approachRate.BaseValue = baseDifficulty?.ApproachRate ?? 0; - starDifficulty.BaseValue = (float)(Beatmap?.StarDifficulty ?? 0); + starDifficulty.Value = ((float)(Beatmap?.StarDifficulty ?? 0), null); - hpDrain.ModdedValue = adjustedDifficulty?.DrainRate ?? 0; - accuracy.ModdedValue = adjustedDifficulty?.OverallDifficulty ?? 0; - approachRate.ModdedValue = adjustedDifficulty?.ApproachRate ?? 0; + hpDrain.Value = (baseDifficulty?.DrainRate ?? 0, adjustedDifficulty?.DrainRate); + accuracy.Value = (baseDifficulty?.OverallDifficulty ?? 0, adjustedDifficulty?.OverallDifficulty); + approachRate.Value = (baseDifficulty?.ApproachRate ?? 0, adjustedDifficulty?.ApproachRate); } private class StatisticRow : Container, IHasAccentColour @@ -110,7 +105,7 @@ namespace osu.Game.Screens.Select.Details private readonly float maxValue; private readonly bool forceDecimalPlaces; - private readonly OsuSpriteText name, value; + private readonly OsuSpriteText name, valueText; private readonly Bar bar, modBar; [Resolved] @@ -122,36 +117,29 @@ namespace osu.Game.Screens.Select.Details set => name.Text = value; } - private float baseValue; + private (float baseValue, float? adjustedValue) value; - private float moddedValue; - - public float BaseValue + public (float baseValue, float? adjustedValue) Value { - get => baseValue; + get => value; set { - baseValue = value; - bar.Length = value / maxValue; - this.value.Text = value.ToString(forceDecimalPlaces ? "0.00" : "0.##"); - } - } + if (value == this.value) + return; - public float ModdedValue - { - get => moddedValue; - set - { - moddedValue = value; - modBar.Length = value / maxValue; - this.value.Text = value.ToString(forceDecimalPlaces ? "0.00" : "0.##"); + this.value = value; - if (moddedValue > baseValue) - modBar.AccentColour = this.value.Colour = colours.Red; - else if (moddedValue < baseValue) - modBar.AccentColour = this.value.Colour = colours.BlueDark; + bar.Length = value.baseValue / maxValue; + + valueText.Text = (value.adjustedValue ?? value.baseValue).ToString(forceDecimalPlaces ? "0.00" : "0.##"); + modBar.Length = (value.adjustedValue ?? 0) / maxValue; + + if (value.adjustedValue > value.baseValue) + modBar.AccentColour = valueText.Colour = colours.Red; + else if (value.adjustedValue < value.baseValue) + modBar.AccentColour = valueText.Colour = colours.BlueDark; else - modBar.AccentColour = this.value.Colour = Color4.White; + modBar.AccentColour = valueText.Colour = Color4.White; } } @@ -203,7 +191,7 @@ namespace osu.Game.Screens.Select.Details Origin = Anchor.TopRight, Width = value_width, RelativeSizeAxes = Axes.Y, - Child = value = new OsuSpriteText + Child = valueText = new OsuSpriteText { Anchor = Anchor.Centre, Origin = Anchor.Centre, From 602ce698d5633a3b655682a1b94d952a4adc99ee Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 18 Dec 2019 17:21:38 +0900 Subject: [PATCH 0442/1829] Fix storyboard vectorscale and scale cross-pollution --- .../Formats/LegacyStoryboardDecoder.cs | 4 +-- osu.Game/Storyboards/CommandTimelineGroup.cs | 3 ++- .../Drawables/DrawableStoryboardAnimation.cs | 27 +++++++++++++++++-- .../Drawables/DrawableStoryboardSprite.cs | 27 +++++++++++++++++-- osu.Game/Storyboards/Drawables/IFlippable.cs | 8 +++--- .../Storyboards/Drawables/IVectorScalable.cs | 21 +++++++++++++++ osu.Game/Storyboards/StoryboardSprite.cs | 20 ++++++++++---- 7 files changed, 94 insertions(+), 16 deletions(-) create mode 100644 osu.Game/Storyboards/Drawables/IVectorScalable.cs diff --git a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs index ccd46ab559..756aa45eed 100644 --- a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs @@ -176,7 +176,7 @@ namespace osu.Game.Beatmaps.Formats { var startValue = float.Parse(split[4], CultureInfo.InvariantCulture); var endValue = split.Length > 5 ? float.Parse(split[5], CultureInfo.InvariantCulture) : startValue; - timelineGroup?.Scale.Add(easing, startTime, endTime, new Vector2(startValue), new Vector2(endValue)); + timelineGroup?.Scale.Add(easing, startTime, endTime, startValue, endValue); break; } @@ -186,7 +186,7 @@ namespace osu.Game.Beatmaps.Formats 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; - timelineGroup?.Scale.Add(easing, startTime, endTime, new Vector2(startX, startY), new Vector2(endX, endY)); + timelineGroup?.VectorScale.Add(easing, startTime, endTime, new Vector2(startX, startY), new Vector2(endX, endY)); break; } diff --git a/osu.Game/Storyboards/CommandTimelineGroup.cs b/osu.Game/Storyboards/CommandTimelineGroup.cs index 364c971874..7b6e667d4f 100644 --- a/osu.Game/Storyboards/CommandTimelineGroup.cs +++ b/osu.Game/Storyboards/CommandTimelineGroup.cs @@ -16,7 +16,8 @@ namespace osu.Game.Storyboards { public CommandTimeline X = new CommandTimeline(); public CommandTimeline Y = new CommandTimeline(); - public CommandTimeline Scale = new CommandTimeline(); + public CommandTimeline Scale = new CommandTimeline(); + public CommandTimeline VectorScale = new CommandTimeline(); public CommandTimeline Rotation = new CommandTimeline(); public CommandTimeline Colour = new CommandTimeline(); public CommandTimeline Alpha = new CommandTimeline(); diff --git a/osu.Game/Storyboards/Drawables/DrawableStoryboardAnimation.cs b/osu.Game/Storyboards/Drawables/DrawableStoryboardAnimation.cs index 4f8e39fa1b..a452c7540d 100644 --- a/osu.Game/Storyboards/Drawables/DrawableStoryboardAnimation.cs +++ b/osu.Game/Storyboards/Drawables/DrawableStoryboardAnimation.cs @@ -8,21 +8,44 @@ using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Animations; using osu.Framework.Graphics.Textures; +using osu.Framework.MathUtils; using osu.Game.Beatmaps; namespace osu.Game.Storyboards.Drawables { - public class DrawableStoryboardAnimation : TextureAnimation, IFlippable + public class DrawableStoryboardAnimation : TextureAnimation, IFlippable, IVectorScalable { public StoryboardAnimation Animation { get; private set; } public bool FlipH { get; set; } public bool FlipV { get; set; } + private Vector2 vectorScale = Vector2.One; + + public Vector2 VectorScale + { + get => vectorScale; + set + { + if (Math.Abs(value.X) < Precision.FLOAT_EPSILON) + value.X = Precision.FLOAT_EPSILON; + if (Math.Abs(value.Y) < Precision.FLOAT_EPSILON) + value.Y = Precision.FLOAT_EPSILON; + + if (vectorScale == value) + return; + + if (!Validation.IsFinite(value)) throw new ArgumentException($@"{nameof(VectorScale)} must be finite, but is {value}."); + + vectorScale = value; + Invalidate(Invalidation.MiscGeometry); + } + } + public override bool RemoveWhenNotAlive => false; protected override Vector2 DrawScale - => new Vector2(FlipH ? -base.DrawScale.X : base.DrawScale.X, FlipV ? -base.DrawScale.Y : base.DrawScale.Y); + => new Vector2(FlipH ? -base.DrawScale.X : base.DrawScale.X, FlipV ? -base.DrawScale.Y : base.DrawScale.Y) * VectorScale; public override Anchor Origin { diff --git a/osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs b/osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs index ff48dab7e5..42c7cfacb2 100644 --- a/osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs +++ b/osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs @@ -8,21 +8,44 @@ using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Textures; +using osu.Framework.MathUtils; using osu.Game.Beatmaps; namespace osu.Game.Storyboards.Drawables { - public class DrawableStoryboardSprite : Sprite, IFlippable + public class DrawableStoryboardSprite : Sprite, IFlippable, IVectorScalable { public StoryboardSprite Sprite { get; private set; } public bool FlipH { get; set; } public bool FlipV { get; set; } + private Vector2 vectorScale = Vector2.One; + + public Vector2 VectorScale + { + get => vectorScale; + set + { + if (Math.Abs(value.X) < Precision.FLOAT_EPSILON) + value.X = Precision.FLOAT_EPSILON; + if (Math.Abs(value.Y) < Precision.FLOAT_EPSILON) + value.Y = Precision.FLOAT_EPSILON; + + if (vectorScale == value) + return; + + if (!Validation.IsFinite(value)) throw new ArgumentException($@"{nameof(VectorScale)} must be finite, but is {value}."); + + vectorScale = value; + Invalidate(Invalidation.MiscGeometry); + } + } + public override bool RemoveWhenNotAlive => false; protected override Vector2 DrawScale - => new Vector2(FlipH ? -base.DrawScale.X : base.DrawScale.X, FlipV ? -base.DrawScale.Y : base.DrawScale.Y); + => new Vector2(FlipH ? -base.DrawScale.X : base.DrawScale.X, FlipV ? -base.DrawScale.Y : base.DrawScale.Y) * VectorScale; public override Anchor Origin { diff --git a/osu.Game/Storyboards/Drawables/IFlippable.cs b/osu.Game/Storyboards/Drawables/IFlippable.cs index 1c4cdde22d..165b3d97cc 100644 --- a/osu.Game/Storyboards/Drawables/IFlippable.cs +++ b/osu.Game/Storyboards/Drawables/IFlippable.cs @@ -6,13 +6,13 @@ using osu.Framework.Graphics.Transforms; namespace osu.Game.Storyboards.Drawables { - public interface IFlippable : ITransformable + internal interface IFlippable : ITransformable { bool FlipH { get; set; } bool FlipV { get; set; } } - public class TransformFlipH : Transform + internal class TransformFlipH : Transform { private bool valueAt(double time) => time < EndTime ? StartValue : EndValue; @@ -23,7 +23,7 @@ namespace osu.Game.Storyboards.Drawables protected override void ReadIntoStartValue(IFlippable d) => StartValue = d.FlipH; } - public class TransformFlipV : Transform + internal class TransformFlipV : Transform { private bool valueAt(double time) => time < EndTime ? StartValue : EndValue; @@ -34,7 +34,7 @@ namespace osu.Game.Storyboards.Drawables protected override void ReadIntoStartValue(IFlippable d) => StartValue = d.FlipV; } - public static class FlippableExtensions + internal static class FlippableExtensions { /// /// Adjusts after a delay. diff --git a/osu.Game/Storyboards/Drawables/IVectorScalable.cs b/osu.Game/Storyboards/Drawables/IVectorScalable.cs new file mode 100644 index 0000000000..fcc407d460 --- /dev/null +++ b/osu.Game/Storyboards/Drawables/IVectorScalable.cs @@ -0,0 +1,21 @@ +// 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.Transforms; +using osuTK; + +namespace osu.Game.Storyboards.Drawables +{ + internal interface IVectorScalable : ITransformable + { + Vector2 VectorScale { get; set; } + } + + internal static class VectorScalableExtensions + { + public static TransformSequence VectorScaleTo(this T target, Vector2 newVectorScale, double duration = 0, Easing easing = Easing.None) + where T : class, IVectorScalable + => target.TransformTo(nameof(IVectorScalable.VectorScale), newVectorScale, duration, easing); + } +} diff --git a/osu.Game/Storyboards/StoryboardSprite.cs b/osu.Game/Storyboards/StoryboardSprite.cs index d5e69fd103..abf9f58804 100644 --- a/osu.Game/Storyboards/StoryboardSprite.cs +++ b/osu.Game/Storyboards/StoryboardSprite.cs @@ -65,20 +65,30 @@ namespace osu.Game.Storyboards { applyCommands(drawable, getCommands(g => g.X, triggeredGroups), (d, value) => d.X = value, (d, value, duration, easing) => d.MoveToX(value, duration, easing)); applyCommands(drawable, getCommands(g => g.Y, triggeredGroups), (d, value) => d.Y = value, (d, value, duration, easing) => d.MoveToY(value, duration, easing)); - applyCommands(drawable, getCommands(g => g.Scale, triggeredGroups), (d, value) => d.Scale = value, (d, value, duration, easing) => d.ScaleTo(value, duration, easing)); + applyCommands(drawable, getCommands(g => g.Scale, triggeredGroups), (d, value) => d.Scale = new Vector2(value), (d, value, duration, easing) => d.ScaleTo(value, duration, easing)); applyCommands(drawable, getCommands(g => g.Rotation, triggeredGroups), (d, value) => d.Rotation = value, (d, value, duration, easing) => d.RotateTo(value, duration, easing)); applyCommands(drawable, getCommands(g => g.Colour, triggeredGroups), (d, value) => d.Colour = value, (d, value, duration, easing) => d.FadeColour(value, duration, easing)); applyCommands(drawable, getCommands(g => g.Alpha, triggeredGroups), (d, value) => d.Alpha = value, (d, value, duration, easing) => d.FadeTo(value, duration, easing)); - applyCommands(drawable, getCommands(g => g.BlendingParameters, triggeredGroups), (d, value) => d.Blending = value, (d, value, duration, easing) => d.TransformBlendingMode(value, duration), false); + applyCommands(drawable, getCommands(g => g.BlendingParameters, triggeredGroups), (d, value) => d.Blending = value, (d, value, duration, easing) => d.TransformBlendingMode(value, duration), + false); + + if (drawable is IVectorScalable vectorScalable) + { + applyCommands(drawable, getCommands(g => g.VectorScale, triggeredGroups), (d, value) => vectorScalable.VectorScale = value, + (d, value, duration, easing) => vectorScalable.VectorScaleTo(value, duration, easing)); + } if (drawable is IFlippable flippable) { - applyCommands(drawable, getCommands(g => g.FlipH, triggeredGroups), (d, value) => flippable.FlipH = value, (d, value, duration, easing) => flippable.TransformFlipH(value, duration), false); - applyCommands(drawable, getCommands(g => g.FlipV, triggeredGroups), (d, value) => flippable.FlipV = value, (d, value, duration, easing) => flippable.TransformFlipV(value, duration), false); + applyCommands(drawable, getCommands(g => g.FlipH, triggeredGroups), (d, value) => flippable.FlipH = value, (d, value, duration, easing) => flippable.TransformFlipH(value, duration), + false); + applyCommands(drawable, getCommands(g => g.FlipV, triggeredGroups), (d, value) => flippable.FlipV = value, (d, value, duration, easing) => flippable.TransformFlipV(value, duration), + false); } } - private void applyCommands(Drawable drawable, IEnumerable.TypedCommand> commands, DrawablePropertyInitializer initializeProperty, DrawableTransformer transform, bool alwaysInitialize = true) + private void applyCommands(Drawable drawable, IEnumerable.TypedCommand> commands, DrawablePropertyInitializer initializeProperty, DrawableTransformer transform, + bool alwaysInitialize = true) where T : struct { var initialized = false; From 5aca523d353f46881df089c698275fdb9344d90e Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 18 Dec 2019 17:27:13 +0900 Subject: [PATCH 0443/1829] Fix storyboard flipping potentially not having an effect --- .../Drawables/DrawableStoryboardAnimation.cs | 31 +++++++++++++++++-- .../Drawables/DrawableStoryboardSprite.cs | 31 +++++++++++++++++-- 2 files changed, 58 insertions(+), 4 deletions(-) diff --git a/osu.Game/Storyboards/Drawables/DrawableStoryboardAnimation.cs b/osu.Game/Storyboards/Drawables/DrawableStoryboardAnimation.cs index 4f8e39fa1b..66c6d179b8 100644 --- a/osu.Game/Storyboards/Drawables/DrawableStoryboardAnimation.cs +++ b/osu.Game/Storyboards/Drawables/DrawableStoryboardAnimation.cs @@ -16,8 +16,35 @@ namespace osu.Game.Storyboards.Drawables { public StoryboardAnimation Animation { get; private set; } - public bool FlipH { get; set; } - public bool FlipV { get; set; } + private bool flipH; + + public bool FlipH + { + get => flipH; + set + { + if (flipH == value) + return; + + flipH = value; + Invalidate(Invalidation.MiscGeometry); + } + } + + private bool flipV; + + public bool FlipV + { + get => flipV; + set + { + if (flipV == value) + return; + + flipV = value; + Invalidate(Invalidation.MiscGeometry); + } + } public override bool RemoveWhenNotAlive => false; diff --git a/osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs b/osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs index ff48dab7e5..aa60096661 100644 --- a/osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs +++ b/osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs @@ -16,8 +16,35 @@ namespace osu.Game.Storyboards.Drawables { public StoryboardSprite Sprite { get; private set; } - public bool FlipH { get; set; } - public bool FlipV { get; set; } + private bool flipH; + + public bool FlipH + { + get => flipH; + set + { + if (flipH == value) + return; + + flipH = value; + Invalidate(Invalidation.MiscGeometry); + } + } + + private bool flipV; + + public bool FlipV + { + get => flipV; + set + { + if (flipV == value) + return; + + flipV = value; + Invalidate(Invalidation.MiscGeometry); + } + } public override bool RemoveWhenNotAlive => false; From 4befabc2573072c06130ff21903e93d94dbf6f69 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 18 Dec 2019 17:35:51 +0900 Subject: [PATCH 0444/1829] Split out complex method --- .../Beatmaps/Formats/LegacyBeatmapEncoder.cs | 180 ++++++++++-------- 1 file changed, 99 insertions(+), 81 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index d38ff482ad..8d16278f60 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -217,26 +217,12 @@ namespace osu.Game.Beatmaps.Formats private void handleOsuHitObject(TextWriter writer, HitObject hitObject) { - var positionData = hitObject as IHasPosition; - var comboData = hitObject as IHasCombo; - - Debug.Assert(positionData != null); - Debug.Assert(comboData != null); - - LegacyHitObjectType hitObjectType = (LegacyHitObjectType)(comboData.ComboOffset << 4); - if (comboData.NewCombo) - hitObjectType |= LegacyHitObjectType.NewCombo; - if (hitObject is IHasCurve) - hitObjectType |= LegacyHitObjectType.Slider; - else if (hitObject is IHasEndTime) - hitObjectType |= LegacyHitObjectType.Spinner | LegacyHitObjectType.NewCombo; - else - hitObjectType |= LegacyHitObjectType.Circle; + var positionData = (IHasPosition)hitObject; writer.Write(FormattableString.Invariant($"{positionData.X},")); writer.Write(FormattableString.Invariant($"{positionData.Y},")); writer.Write(FormattableString.Invariant($"{hitObject.StartTime},")); - writer.Write(FormattableString.Invariant($"{(int)hitObjectType},")); + writer.Write(FormattableString.Invariant($"{(int)getObjectType(hitObject)},")); writer.Write(hitObject is IHasCurve ? FormattableString.Invariant($"0,") @@ -244,76 +230,108 @@ namespace osu.Game.Beatmaps.Formats if (hitObject is IHasCurve curveData) { - PathType? lastType = null; - - for (int i = 0; i < curveData.Path.ControlPoints.Count; i++) - { - PathControlPoint point = curveData.Path.ControlPoints[i]; - - if (point.Type.Value != null) - { - if (point.Type.Value != lastType) - { - switch (point.Type.Value) - { - case PathType.Bezier: - writer.Write("B|"); - break; - - case PathType.Catmull: - writer.Write("C|"); - break; - - case PathType.PerfectCurve: - writer.Write("P|"); - break; - - case PathType.Linear: - writer.Write("L|"); - break; - } - - lastType = point.Type.Value; - } - else - { - // New segment with the same type - duplicate the control point - writer.Write(FormattableString.Invariant($"{positionData.X + point.Position.Value.X}:{positionData.Y + point.Position.Value.Y}|")); - } - } - - if (i != 0) - { - writer.Write(FormattableString.Invariant($"{positionData.X + point.Position.Value.X}:{positionData.Y + point.Position.Value.Y}")); - writer.Write(i != curveData.Path.ControlPoints.Count - 1 ? "|" : ","); - } - } - - writer.Write(FormattableString.Invariant($"{curveData.RepeatCount + 1},")); - writer.Write(FormattableString.Invariant($"{curveData.Path.Distance},")); - - for (int i = 0; i < curveData.NodeSamples.Count; i++) - { - writer.Write(FormattableString.Invariant($"{(int)toLegacyHitSoundType(curveData.NodeSamples[i])}")); - writer.Write(i != curveData.NodeSamples.Count - 1 ? "|" : ","); - } - - for (int i = 0; i < curveData.NodeSamples.Count; i++) - { - writer.Write(getSampleBank(curveData.NodeSamples[i], true)); - writer.Write(i != curveData.NodeSamples.Count - 1 ? "|" : ","); - } + addCurveData(writer, curveData, positionData); + writer.Write(getSampleBank(hitObject.Samples, zeroBanks: true)); + } + else + { + if (hitObject is IHasEndTime endTimeData) + writer.Write(FormattableString.Invariant($"{endTimeData.EndTime},")); + writer.Write(getSampleBank(hitObject.Samples)); } - else if (hitObject is IHasEndTime endTimeData) - writer.Write(FormattableString.Invariant($"{endTimeData.EndTime},")); - - writer.Write(hitObject is IHasCurve - ? getSampleBank(hitObject.Samples, zeroBanks: true) - : getSampleBank(hitObject.Samples)); writer.WriteLine(); } + private static LegacyHitObjectType getObjectType(HitObject hitObject) + { + var comboData = (IHasCombo)hitObject; + + var type = (LegacyHitObjectType)(comboData.ComboOffset << 4); + + if (comboData.NewCombo) type |= LegacyHitObjectType.NewCombo; + + switch (hitObject) + { + case IHasCurve _: + type |= LegacyHitObjectType.Slider; + break; + + case IHasEndTime _: + type |= LegacyHitObjectType.Spinner | LegacyHitObjectType.NewCombo; + break; + + default: + type |= LegacyHitObjectType.Circle; + break; + } + + return type; + } + + private void addCurveData(TextWriter writer, IHasCurve curveData, IHasPosition positionData) + { + PathType? lastType = null; + + for (int i = 0; i < curveData.Path.ControlPoints.Count; i++) + { + PathControlPoint point = curveData.Path.ControlPoints[i]; + + if (point.Type.Value != null) + { + if (point.Type.Value != lastType) + { + switch (point.Type.Value) + { + case PathType.Bezier: + writer.Write("B|"); + break; + + case PathType.Catmull: + writer.Write("C|"); + break; + + case PathType.PerfectCurve: + writer.Write("P|"); + break; + + case PathType.Linear: + writer.Write("L|"); + break; + } + + lastType = point.Type.Value; + } + else + { + // New segment with the same type - duplicate the control point + writer.Write(FormattableString.Invariant($"{positionData.X + point.Position.Value.X}:{positionData.Y + point.Position.Value.Y}|")); + } + } + + if (i != 0) + { + writer.Write(FormattableString.Invariant($"{positionData.X + point.Position.Value.X}:{positionData.Y + point.Position.Value.Y}")); + writer.Write(i != curveData.Path.ControlPoints.Count - 1 ? "|" : ","); + } + } + + writer.Write(FormattableString.Invariant($"{curveData.RepeatCount + 1},")); + writer.Write(FormattableString.Invariant($"{curveData.Path.Distance},")); + + for (int i = 0; i < curveData.NodeSamples.Count; i++) + { + writer.Write(FormattableString.Invariant($"{(int)toLegacyHitSoundType(curveData.NodeSamples[i])}")); + writer.Write(i != curveData.NodeSamples.Count - 1 ? "|" : ","); + } + + for (int i = 0; i < curveData.NodeSamples.Count; i++) + { + writer.Write(getSampleBank(curveData.NodeSamples[i], true)); + writer.Write(i != curveData.NodeSamples.Count - 1 ? "|" : ","); + } + } + private void handleTaikoHitObject(TextWriter writer, HitObject hitObject) => throw new NotImplementedException(); private void handleCatchHitObject(TextWriter writer, HitObject hitObject) => throw new NotImplementedException(); From 8e651962c7d7c5dbe98bc8e801db9a3514745e7a Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 18 Dec 2019 17:41:30 +0900 Subject: [PATCH 0445/1829] Fix incorrectly binding inside BDL load() --- osu.Game/Screens/Select/Details/AdvancedStats.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Select/Details/AdvancedStats.cs b/osu.Game/Screens/Select/Details/AdvancedStats.cs index f684238a38..9c9c33274f 100644 --- a/osu.Game/Screens/Select/Details/AdvancedStats.cs +++ b/osu.Game/Screens/Select/Details/AdvancedStats.cs @@ -63,7 +63,13 @@ namespace osu.Game.Screens.Select.Details private void load(OsuColour colours) { starDifficulty.AccentColour = colours.Yellow; - mods.ValueChanged += _ => updateStatistics(); + } + + protected override void LoadComplete() + { + base.LoadComplete(); + + mods.BindValueChanged(_ => updateStatistics(), true); } private void updateStatistics() From bf85f4affb1eca46513b17dd2442b40df78cce32 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 18 Dec 2019 17:53:26 +0900 Subject: [PATCH 0446/1829] Fix editor crashing when loading a beatmap for an unsupported ruleset --- osu.Game/Screens/Edit/Compose/ComposeScreen.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Edit/Compose/ComposeScreen.cs b/osu.Game/Screens/Edit/Compose/ComposeScreen.cs index 6984716a2c..5d9757778d 100644 --- a/osu.Game/Screens/Edit/Compose/ComposeScreen.cs +++ b/osu.Game/Screens/Edit/Compose/ComposeScreen.cs @@ -32,6 +32,6 @@ namespace osu.Game.Screens.Edit.Compose return beatmapSkinProvider.WithChild(rulesetSkinProvider.WithChild(composer)); } - protected override Drawable CreateTimelineContent() => new TimelineHitObjectDisplay(composer.EditorBeatmap); + protected override Drawable CreateTimelineContent() => composer == null ? base.CreateTimelineContent() : new TimelineHitObjectDisplay(composer.EditorBeatmap); } } From d65e37d7959fe4e89a6091c53b805059dbe73935 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 18 Dec 2019 17:58:29 +0900 Subject: [PATCH 0447/1829] Fix typo --- osu.Game/Graphics/Containers/BeatSyncedContainer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Graphics/Containers/BeatSyncedContainer.cs b/osu.Game/Graphics/Containers/BeatSyncedContainer.cs index b04d01004a..b9ef279f5c 100644 --- a/osu.Game/Graphics/Containers/BeatSyncedContainer.cs +++ b/osu.Game/Graphics/Containers/BeatSyncedContainer.cs @@ -34,7 +34,7 @@ namespace osu.Game.Graphics.Containers public double TimeSinceLastBeat { get; private set; } /// - /// How many baets per beatlength to trigger. Defaults to 1. + /// How many beats per beatlength to trigger. Defaults to 1. /// public int Divisor { get; set; } = 1; From 1f3e1b308590409c6c09c33a91d62c88f3664962 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 18 Dec 2019 17:59:07 +0900 Subject: [PATCH 0448/1829] Remove unused using --- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs index 8d16278f60..433becd8cc 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs @@ -3,7 +3,6 @@ using System; using System.Collections.Generic; -using System.Diagnostics; using System.IO; using System.Linq; using System.Text; From 5664ce3109d9cb40ede788e76b05cb5b503a237a Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 18 Dec 2019 18:51:12 +0900 Subject: [PATCH 0449/1829] Add hitobject container regression test --- .../Gameplay/TestSceneHitObjectContainer.cs | 75 +++++++++++++++++++ osu.Game/Rulesets/UI/HitObjectContainer.cs | 2 + 2 files changed, 77 insertions(+) create mode 100644 osu.Game.Tests/Gameplay/TestSceneHitObjectContainer.cs diff --git a/osu.Game.Tests/Gameplay/TestSceneHitObjectContainer.cs b/osu.Game.Tests/Gameplay/TestSceneHitObjectContainer.cs new file mode 100644 index 0000000000..f2bfccb6de --- /dev/null +++ b/osu.Game.Tests/Gameplay/TestSceneHitObjectContainer.cs @@ -0,0 +1,75 @@ +// 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 NUnit.Framework; +using osu.Framework.Testing; +using osu.Game.Rulesets.Objects; +using osu.Game.Rulesets.Objects.Drawables; +using osu.Game.Rulesets.UI; +using osu.Game.Tests.Visual; + +namespace osu.Game.Tests.Gameplay +{ + [HeadlessTest] + public class TestSceneHitObjectContainer : OsuTestScene + { + private HitObjectContainer container; + + [SetUp] + public void Setup() => Schedule(() => + { + Child = container = new HitObjectContainer(); + }); + + [Test] + public void TestLateHitObjectIsAddedEarlierInList() + { + DrawableHitObject hitObject = null; + + AddStep("setup", () => container.Add(new TestDrawableHitObject(new HitObject { StartTime = 500 }))); + + AddStep("add late hitobject", () => container.Add(hitObject = new TestDrawableHitObject(new HitObject { StartTime = 1000 }))); + + AddAssert("hitobject index is 0", () => container.IndexOf(hitObject) == 0); + } + + [Test] + public void TestEarlyHitObjectIsAddedLaterInList() + { + DrawableHitObject hitObject = null; + + AddStep("setup", () => container.Add(new TestDrawableHitObject(new HitObject { StartTime = 500 }))); + + AddStep("add early hitobject", () => container.Add(hitObject = new TestDrawableHitObject(new HitObject()))); + + AddAssert("hitobject index is 0", () => container.IndexOf(hitObject) == 1); + } + + [Test] + public void TestHitObjectsResortedAfterStartTimeChange() + { + DrawableHitObject firstObject = null; + DrawableHitObject secondObject = null; + + AddStep("setup", () => + { + container.Add(firstObject = new TestDrawableHitObject(new HitObject())); + container.Add(secondObject = new TestDrawableHitObject(new HitObject { StartTime = 1000 })); + }); + + AddStep("move first object after second", () => firstObject.HitObject.StartTime = 2000); + + AddAssert("first object index is 1", () => container.IndexOf(firstObject) == 0); + AddAssert("second object index is 0", () => container.IndexOf(secondObject) == 1); + } + + private class TestDrawableHitObject : DrawableHitObject + { + public TestDrawableHitObject([NotNull] HitObject hitObject) + : base(hitObject) + { + } + } + } +} diff --git a/osu.Game/Rulesets/UI/HitObjectContainer.cs b/osu.Game/Rulesets/UI/HitObjectContainer.cs index 1e33b15184..dea981c3ad 100644 --- a/osu.Game/Rulesets/UI/HitObjectContainer.cs +++ b/osu.Game/Rulesets/UI/HitObjectContainer.cs @@ -43,6 +43,8 @@ namespace osu.Game.Rulesets.UI return true; } + public int IndexOf(DrawableHitObject hitObject) => IndexOfInternal(hitObject); + private void onStartTimeChanged(DrawableHitObject hitObject) { if (!RemoveInternal(hitObject)) From cb5a35f8f9f23c5b53d456611d3cf6c65f16f86f Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 18 Dec 2019 21:08:38 +0900 Subject: [PATCH 0450/1829] Fix incorrect bindable valuechanged usage --- osu.Game/Screens/Select/FooterButtonMods.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/osu.Game/Screens/Select/FooterButtonMods.cs b/osu.Game/Screens/Select/FooterButtonMods.cs index fbeda8f18e..dde6e90ee3 100644 --- a/osu.Game/Screens/Select/FooterButtonMods.cs +++ b/osu.Game/Screens/Select/FooterButtonMods.cs @@ -60,8 +60,6 @@ namespace osu.Game.Screens.Select AutoSizeAxes = Axes.Both, Margin = new MarginPadding { Left = 70 } }); - - Current.ValueChanged += _ => updateMultiplierText(); } [BackgroundDependencyLoader] @@ -75,6 +73,13 @@ namespace osu.Game.Screens.Select Hotkey = Key.F1; } + protected override void LoadComplete() + { + base.LoadComplete(); + + Current.BindValueChanged(_ => updateMultiplierText(), true); + } + private void updateMultiplierText() { var multiplier = Current.Value.Aggregate(1.0, (current, mod) => current * mod.ScoreMultiplier); From 2905a4418d5960f7edadaefedfb81545d4b7b943 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 18 Dec 2019 21:30:57 +0900 Subject: [PATCH 0451/1829] Fix potential nullref --- osu.Game/Screens/Select/FooterButtonMods.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Select/FooterButtonMods.cs b/osu.Game/Screens/Select/FooterButtonMods.cs index dde6e90ee3..8419ee0c2a 100644 --- a/osu.Game/Screens/Select/FooterButtonMods.cs +++ b/osu.Game/Screens/Select/FooterButtonMods.cs @@ -82,7 +82,7 @@ namespace osu.Game.Screens.Select private void updateMultiplierText() { - var multiplier = Current.Value.Aggregate(1.0, (current, mod) => current * mod.ScoreMultiplier); + double multiplier = Current.Value?.Aggregate(1.0, (current, mod) => current * mod.ScoreMultiplier) ?? 1; MultiplierText.Text = multiplier.Equals(1.0) ? string.Empty : $"{multiplier:N2}x"; From 9ac15ef3a8141d0e583009aa7a604e112f6c1d06 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 18 Dec 2019 22:56:00 +0900 Subject: [PATCH 0452/1829] Don't log discord connection failures --- osu.Desktop/DiscordRichPresence.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/osu.Desktop/DiscordRichPresence.cs b/osu.Desktop/DiscordRichPresence.cs index b53ca6161b..8818cef8eb 100644 --- a/osu.Desktop/DiscordRichPresence.cs +++ b/osu.Desktop/DiscordRichPresence.cs @@ -43,8 +43,7 @@ namespace osu.Desktop }; client.OnReady += onReady; - client.OnError += (_, e) => Logger.Log($"An error occurred with Discord RPC Client: {e.Code} {e.Message}", LoggingTarget.Network, LogLevel.Error); - client.OnConnectionFailed += (_, e) => Logger.Log($"An connection occurred with Discord RPC Client: {e.Type}", LoggingTarget.Network, LogLevel.Error); + client.OnError += (_, e) => Logger.Log($"An error occurred with Discord RPC Client: {e.Code} {e.Message}", LoggingTarget.Network); (user = provider.LocalUser.GetBoundCopy()).BindValueChanged(u => { From 8d6987c8703d27b4459fb3f30f586a1b1b9ae8a9 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 18 Dec 2019 23:59:48 +0900 Subject: [PATCH 0453/1829] Refactor storyboard timeline to reduce GC / fix crashes --- osu.Game/Storyboards/CommandTimeline.cs | 29 +++++---- osu.Game/Storyboards/CommandTimelineGroup.cs | 65 +++++++++++++++----- 2 files changed, 69 insertions(+), 25 deletions(-) diff --git a/osu.Game/Storyboards/CommandTimeline.cs b/osu.Game/Storyboards/CommandTimeline.cs index bcf642b4ea..c71806352d 100644 --- a/osu.Game/Storyboards/CommandTimeline.cs +++ b/osu.Game/Storyboards/CommandTimeline.cs @@ -1,7 +1,6 @@ // 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.Caching; using osu.Framework.Graphics; using System; using System.Collections.Generic; @@ -12,27 +11,35 @@ namespace osu.Game.Storyboards public class CommandTimeline : ICommandTimeline { private readonly List commands = new List(); + public IEnumerable Commands => commands.OrderBy(c => c.StartTime); + public bool HasCommands => commands.Count > 0; - private readonly Cached startTimeBacking = new Cached(); - public double StartTime => startTimeBacking.IsValid ? startTimeBacking : startTimeBacking.Value = HasCommands ? commands.Min(c => c.StartTime) : double.MinValue; + public double StartTime { get; private set; } = double.MaxValue; + public double EndTime { get; private set; } = double.MinValue; - private readonly Cached endTimeBacking = new Cached(); - public double EndTime => endTimeBacking.IsValid ? endTimeBacking : endTimeBacking.Value = HasCommands ? commands.Max(c => c.EndTime) : double.MaxValue; - - public T StartValue => HasCommands ? commands.OrderBy(c => c.StartTime).First().StartValue : default; - public T EndValue => HasCommands ? commands.OrderByDescending(c => c.EndTime).First().EndValue : default; + public T StartValue { get; private set; } + public T EndValue { get; private set; } public void Add(Easing easing, double startTime, double endTime, T startValue, T endValue) { if (endTime < startTime) return; - commands.Add(new TypedCommand { Easing = easing, StartTime = startTime, EndTime = endTime, StartValue = startValue, EndValue = endValue, }); + commands.Add(new TypedCommand { Easing = easing, StartTime = startTime, EndTime = endTime, StartValue = startValue, EndValue = endValue }); - startTimeBacking.Invalidate(); - endTimeBacking.Invalidate(); + if (startTime < StartTime) + { + StartValue = startValue; + StartTime = startTime; + } + + if (endTime > EndTime) + { + EndValue = endValue; + EndTime = endTime; + } } public override string ToString() diff --git a/osu.Game/Storyboards/CommandTimelineGroup.cs b/osu.Game/Storyboards/CommandTimelineGroup.cs index 7b6e667d4f..6ce3b617e9 100644 --- a/osu.Game/Storyboards/CommandTimelineGroup.cs +++ b/osu.Game/Storyboards/CommandTimelineGroup.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 osuTK; using osuTK.Graphics; using osu.Framework.Graphics; @@ -25,28 +26,52 @@ namespace osu.Game.Storyboards public CommandTimeline FlipH = new CommandTimeline(); public CommandTimeline FlipV = new CommandTimeline(); + private readonly ICommandTimeline[] timelines; + + public CommandTimelineGroup() + { + timelines = new ICommandTimeline[] + { + X, + Y, + Scale, + VectorScale, + Rotation, + Colour, + Alpha, + BlendingParameters, + FlipH, + FlipV + }; + } + [JsonIgnore] - public IEnumerable Timelines + public double CommandsStartTime { get { - yield return X; - yield return Y; - yield return Scale; - yield return Rotation; - yield return Colour; - yield return Alpha; - yield return BlendingParameters; - yield return FlipH; - yield return FlipV; + double min = double.MaxValue; + + for (int i = 0; i < timelines.Length; i++) + min = Math.Min(min, timelines[i].StartTime); + + return min; } } [JsonIgnore] - public double CommandsStartTime => Timelines.Where(t => t.HasCommands).Min(t => t.StartTime); + public double CommandsEndTime + { + get + { + double max = double.MinValue; - [JsonIgnore] - public double CommandsEndTime => Timelines.Where(t => t.HasCommands).Max(t => t.EndTime); + for (int i = 0; i < timelines.Length; i++) + max = Math.Max(max, timelines[i].EndTime); + + return max; + } + } [JsonIgnore] public double CommandsDuration => CommandsEndTime - CommandsStartTime; @@ -61,7 +86,19 @@ namespace osu.Game.Storyboards public double Duration => EndTime - StartTime; [JsonIgnore] - public bool HasCommands => Timelines.Any(t => t.HasCommands); + public bool HasCommands + { + get + { + for (int i = 0; i < timelines.Length; i++) + { + if (timelines[i].HasCommands) + return true; + } + + return false; + } + } public virtual IEnumerable.TypedCommand> GetCommands(CommandTimelineSelector timelineSelector, double offset = 0) { From f38853d2291835e6cbda7cc12a2dcf1e4f9eae5f Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 19 Dec 2019 00:52:50 +0900 Subject: [PATCH 0454/1829] Improve performance of storyboard loading --- osu.Game/Storyboards/StoryboardSprite.cs | 83 ++++++++++++++++++------ 1 file changed, 62 insertions(+), 21 deletions(-) diff --git a/osu.Game/Storyboards/StoryboardSprite.cs b/osu.Game/Storyboards/StoryboardSprite.cs index abf9f58804..22e1929419 100644 --- a/osu.Game/Storyboards/StoryboardSprite.cs +++ b/osu.Game/Storyboards/StoryboardSprite.cs @@ -7,6 +7,7 @@ using osu.Game.Storyboards.Drawables; using System; using System.Collections.Generic; using System.Linq; +using JetBrains.Annotations; namespace osu.Game.Storyboards { @@ -63,50 +64,56 @@ namespace osu.Game.Storyboards public void ApplyTransforms(Drawable drawable, IEnumerable> triggeredGroups = null) { - applyCommands(drawable, getCommands(g => g.X, triggeredGroups), (d, value) => d.X = value, (d, value, duration, easing) => d.MoveToX(value, duration, easing)); - applyCommands(drawable, getCommands(g => g.Y, triggeredGroups), (d, value) => d.Y = value, (d, value, duration, easing) => d.MoveToY(value, duration, easing)); - applyCommands(drawable, getCommands(g => g.Scale, triggeredGroups), (d, value) => d.Scale = new Vector2(value), (d, value, duration, easing) => d.ScaleTo(value, duration, easing)); - applyCommands(drawable, getCommands(g => g.Rotation, triggeredGroups), (d, value) => d.Rotation = value, (d, value, duration, easing) => d.RotateTo(value, duration, easing)); - applyCommands(drawable, getCommands(g => g.Colour, triggeredGroups), (d, value) => d.Colour = value, (d, value, duration, easing) => d.FadeColour(value, duration, easing)); - applyCommands(drawable, getCommands(g => g.Alpha, triggeredGroups), (d, value) => d.Alpha = value, (d, value, duration, easing) => d.FadeTo(value, duration, easing)); - applyCommands(drawable, getCommands(g => g.BlendingParameters, triggeredGroups), (d, value) => d.Blending = value, (d, value, duration, easing) => d.TransformBlendingMode(value, duration), + // For performance reasons, we need to apply the commands in order by start time. Not doing so will cause many functions to be interleaved, resulting in O(n^2) complexity. + // To achieve this, commands are "generated" as pairs of (command, initFunc, transformFunc) and batched into a contiguous list + // The list is then stably-sorted (to preserve command order), and applied to the drawable sequentially. + + List generated = new List(); + + generateCommands(generated, getCommands(g => g.X, triggeredGroups), (d, value) => d.X = value, (d, value, duration, easing) => d.MoveToX(value, duration, easing)); + generateCommands(generated, getCommands(g => g.Y, triggeredGroups), (d, value) => d.Y = value, (d, value, duration, easing) => d.MoveToY(value, duration, easing)); + generateCommands(generated, getCommands(g => g.Scale, triggeredGroups), (d, value) => d.Scale = new Vector2(value), (d, value, duration, easing) => d.ScaleTo(value, duration, easing)); + generateCommands(generated, getCommands(g => g.Rotation, triggeredGroups), (d, value) => d.Rotation = value, (d, value, duration, easing) => d.RotateTo(value, duration, easing)); + generateCommands(generated, getCommands(g => g.Colour, triggeredGroups), (d, value) => d.Colour = value, (d, value, duration, easing) => d.FadeColour(value, duration, easing)); + generateCommands(generated, getCommands(g => g.Alpha, triggeredGroups), (d, value) => d.Alpha = value, (d, value, duration, easing) => d.FadeTo(value, duration, easing)); + generateCommands(generated, getCommands(g => g.BlendingParameters, triggeredGroups), (d, value) => d.Blending = value, (d, value, duration, easing) => d.TransformBlendingMode(value, duration), false); if (drawable is IVectorScalable vectorScalable) { - applyCommands(drawable, getCommands(g => g.VectorScale, triggeredGroups), (d, value) => vectorScalable.VectorScale = value, + generateCommands(generated, getCommands(g => g.VectorScale, triggeredGroups), (d, value) => vectorScalable.VectorScale = value, (d, value, duration, easing) => vectorScalable.VectorScaleTo(value, duration, easing)); } if (drawable is IFlippable flippable) { - applyCommands(drawable, getCommands(g => g.FlipH, triggeredGroups), (d, value) => flippable.FlipH = value, (d, value, duration, easing) => flippable.TransformFlipH(value, duration), + generateCommands(generated, getCommands(g => g.FlipH, triggeredGroups), (d, value) => flippable.FlipH = value, (d, value, duration, easing) => flippable.TransformFlipH(value, duration), false); - applyCommands(drawable, getCommands(g => g.FlipV, triggeredGroups), (d, value) => flippable.FlipV = value, (d, value, duration, easing) => flippable.TransformFlipV(value, duration), + generateCommands(generated, getCommands(g => g.FlipV, triggeredGroups), (d, value) => flippable.FlipV = value, (d, value, duration, easing) => flippable.TransformFlipV(value, duration), false); } + + foreach (var command in generated.OrderBy(g => g.StartTime)) + command.ApplyTo(drawable); } - private void applyCommands(Drawable drawable, IEnumerable.TypedCommand> commands, DrawablePropertyInitializer initializeProperty, DrawableTransformer transform, - bool alwaysInitialize = true) - where T : struct + private void generateCommands(List resultList, IEnumerable.TypedCommand> commands, + DrawablePropertyInitializer initializeProperty, DrawableTransformer transform, bool alwaysInitialize = true) { - var initialized = false; + bool initialized = false; - foreach (var command in commands.OrderBy(l => l)) + foreach (var command in commands) { + DrawablePropertyInitializer initFunc = null; + if (!initialized) { if (alwaysInitialize || command.StartTime == command.EndTime) - initializeProperty.Invoke(drawable, command.StartValue); + initFunc = initializeProperty; initialized = true; } - using (drawable.BeginAbsoluteSequence(command.StartTime)) - { - transform(drawable, command.StartValue, 0, Easing.None); - transform(drawable, command.EndValue, command.Duration, command.Easing); - } + resultList.Add(new GeneratedCommand(command, initFunc, transform)); } } @@ -127,5 +134,39 @@ namespace osu.Game.Storyboards public override string ToString() => $"{Path}, {Origin}, {InitialPosition}"; + + private interface IGeneratedCommand + { + double StartTime { get; } + + void ApplyTo(Drawable drawable); + } + + private readonly struct GeneratedCommand : IGeneratedCommand + { + public double StartTime => command.StartTime; + + private readonly DrawablePropertyInitializer initializeProperty; + private readonly DrawableTransformer transform; + private readonly CommandTimeline.TypedCommand command; + + public GeneratedCommand([NotNull] CommandTimeline.TypedCommand command, [CanBeNull] DrawablePropertyInitializer initializeProperty, [NotNull] DrawableTransformer transform) + { + this.command = command; + this.initializeProperty = initializeProperty; + this.transform = transform; + } + + public void ApplyTo(Drawable drawable) + { + initializeProperty?.Invoke(drawable, command.StartValue); + + using (drawable.BeginAbsoluteSequence(command.StartTime)) + { + transform(drawable, command.StartValue, 0, Easing.None); + transform(drawable, command.EndValue, command.Duration, command.Easing); + } + } + } } } From 007e2e80c1cd193e9e7a1ded3df6191571bed8a3 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 19 Dec 2019 02:02:57 +0900 Subject: [PATCH 0455/1829] Refactor to fix sorting issues --- osu.Game/Overlays/SocialOverlay.cs | 70 +++++++++++++----------------- 1 file changed, 30 insertions(+), 40 deletions(-) diff --git a/osu.Game/Overlays/SocialOverlay.cs b/osu.Game/Overlays/SocialOverlay.cs index 5b3acf8e46..01dd1ee635 100644 --- a/osu.Game/Overlays/SocialOverlay.cs +++ b/osu.Game/Overlays/SocialOverlay.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.Collections.Generic; using System.Linq; using osu.Framework.Bindables; @@ -15,7 +16,6 @@ using osu.Game.Online.API.Requests; using osu.Game.Overlays.SearchableList; using osu.Game.Overlays.Social; using osu.Game.Users; -using System; using System.Threading; using osu.Framework.Threading; @@ -33,17 +33,18 @@ namespace osu.Game.Overlays protected override SearchableListHeader CreateHeader() => new Header(); protected override SearchableListFilterControl CreateFilterControl() => new FilterControl(); - private IEnumerable users; + private User[] users = Array.Empty(); - public IEnumerable Users + public User[] Users { get => users; set { - if (ReferenceEquals(users, value)) + if (users == value) return; - users = value?.ToList(); + users = value ?? Array.Empty(); + recreatePanels(); } } @@ -72,8 +73,8 @@ namespace osu.Game.Overlays Filter.Tabs.Current.ValueChanged += _ => onFilterUpdate(); - Filter.DisplayStyleControl.DisplayStyle.ValueChanged += style => recreatePanels(style.NewValue); - Filter.DisplayStyleControl.Dropdown.Current.ValueChanged += _ => updateUsers(Users); + Filter.DisplayStyleControl.DisplayStyle.ValueChanged += _ => recreatePanels(); + Filter.DisplayStyleControl.Dropdown.Current.ValueChanged += _ => recreatePanels(); currentQuery.BindTo(Filter.Search.Current); currentQuery.ValueChanged += query => @@ -115,19 +116,19 @@ namespace osu.Game.Overlays { case SocialTab.Friends: var friendRequest = new GetFriendsRequest(); // TODO filter arguments? - friendRequest.Success += updateUsers; + friendRequest.Success += users => Users = users.ToArray(); API.Queue(getUsersRequest = friendRequest); break; default: var userRequest = new GetUsersRequest(); // TODO filter arguments! - userRequest.Success += res => updateUsers(res.Users.Select(r => r.User)); + userRequest.Success += res => Users = res.Users.Select(r => r.User).ToArray(); API.Queue(getUsersRequest = userRequest); break; } } - private void recreatePanels(PanelDisplayStyle displayStyle) + private void recreatePanels() { clearPanels(); @@ -139,17 +140,33 @@ namespace osu.Game.Overlays loadCancellation = new CancellationTokenSource(); + IEnumerable sortedUsers = Users; + + switch (Filter.Tabs.Current.Value) + { + case SocialSortCriteria.Location: + sortedUsers = sortedUsers.OrderBy(u => u.Country.FullName); + break; + + case SocialSortCriteria.Name: + sortedUsers = sortedUsers.OrderBy(u => u.Username); + break; + } + + if (Filter.DisplayStyleControl.Dropdown.Current.Value == SortDirection.Descending) + sortedUsers = sortedUsers.Reverse(); + var newPanels = new FillFlowContainer { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, Spacing = new Vector2(10f), Margin = new MarginPadding { Top = 10 }, - ChildrenEnumerable = Users.Select(u => + ChildrenEnumerable = sortedUsers.Select(u => { SocialPanel panel; - switch (displayStyle) + switch (Filter.DisplayStyleControl.DisplayStyle.Value) { case PanelDisplayStyle.Grid: panel = new SocialGridPanel(u) @@ -188,36 +205,9 @@ namespace osu.Game.Overlays return; } - updateUsers(Users); + recreatePanels(); } - private void updateUsers(IEnumerable newUsers) - { - var sortDirection = Filter.DisplayStyleControl.Dropdown.Current.Value; - - IEnumerable sortedUsers = newUsers; - - if (sortedUsers.Any()) - { - switch (Filter.Tabs.Current.Value) - { - case SocialSortCriteria.Location: - sortedUsers = sortBy(sortedUsers, u => u.Country.FullName, sortDirection); - break; - - case SocialSortCriteria.Name: - sortedUsers = sortBy(sortedUsers, u => u.Username, sortDirection); - break; - } - } - - Users = sortedUsers; - recreatePanels(Filter.DisplayStyleControl.DisplayStyle.Value); - } - - private IEnumerable sortBy(IEnumerable users, Func condition, SortDirection sortDirection) => - sortDirection == SortDirection.Ascending ? users.OrderBy(condition) : users.OrderByDescending(condition); - private void clearPanels() { loading.Show(); From dd68106d909d9deffb321a39536fbb35454bf05d Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 19 Dec 2019 02:21:33 +0900 Subject: [PATCH 0456/1829] Recreate panels only while loading/loaded --- osu.Game/Overlays/SocialOverlay.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/SocialOverlay.cs b/osu.Game/Overlays/SocialOverlay.cs index 01dd1ee635..7cc3b6e3ce 100644 --- a/osu.Game/Overlays/SocialOverlay.cs +++ b/osu.Game/Overlays/SocialOverlay.cs @@ -17,6 +17,7 @@ using osu.Game.Overlays.SearchableList; using osu.Game.Overlays.Social; using osu.Game.Users; using System.Threading; +using osu.Framework.Allocation; using osu.Framework.Threading; namespace osu.Game.Overlays @@ -44,7 +45,9 @@ namespace osu.Game.Overlays return; users = value ?? Array.Empty(); - recreatePanels(); + + if (LoadState >= LoadState.Ready) + recreatePanels(); } } @@ -70,7 +73,6 @@ namespace osu.Game.Overlays }; Header.Tabs.Current.ValueChanged += _ => queueUpdate(); - Filter.Tabs.Current.ValueChanged += _ => onFilterUpdate(); Filter.DisplayStyleControl.DisplayStyle.ValueChanged += _ => recreatePanels(); @@ -88,6 +90,12 @@ namespace osu.Game.Overlays }; } + [BackgroundDependencyLoader] + private void load() + { + recreatePanels(); + } + private APIRequest getUsersRequest; private readonly Bindable currentQuery = new Bindable(); From a46602f705c2686ad45a58ea2997bb715bb8265e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 19 Dec 2019 11:26:22 +0900 Subject: [PATCH 0457/1829] Move cancellation token construction closer to usage --- osu.Game/Overlays/SocialOverlay.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/osu.Game/Overlays/SocialOverlay.cs b/osu.Game/Overlays/SocialOverlay.cs index 7cc3b6e3ce..0c99962def 100644 --- a/osu.Game/Overlays/SocialOverlay.cs +++ b/osu.Game/Overlays/SocialOverlay.cs @@ -146,8 +146,6 @@ namespace osu.Game.Overlays return; } - loadCancellation = new CancellationTokenSource(); - IEnumerable sortedUsers = Users; switch (Filter.Tabs.Current.Value) @@ -202,7 +200,7 @@ namespace osu.Game.Overlays loading.Hide(); ScrollFlow.Add(panels = newPanels); - }, loadCancellation.Token); + }, (loadCancellation = new CancellationTokenSource()).Token); } private void onFilterUpdate() From 531ac16743edde6d824ae149cd46e26247e12b34 Mon Sep 17 00:00:00 2001 From: Willy Tu Date: Wed, 18 Dec 2019 19:22:42 -0800 Subject: [PATCH 0458/1829] Update Scoreboard Refresh Method for deleting individual scores --- .../Online/Leaderboards/LeaderboardScore.cs | 11 +++- .../Select/BeatmapClearScoresDialog.cs | 22 ------- .../Select/Leaderboards/BeatmapLeaderboard.cs | 25 +++++++- .../Screens/Select/LocalScoreDeleteDialog.cs | 59 +++++++++++++++++++ 4 files changed, 90 insertions(+), 27 deletions(-) create mode 100644 osu.Game/Screens/Select/LocalScoreDeleteDialog.cs diff --git a/osu.Game/Online/Leaderboards/LeaderboardScore.cs b/osu.Game/Online/Leaderboards/LeaderboardScore.cs index ccac748535..2578b6bbea 100644 --- a/osu.Game/Online/Leaderboards/LeaderboardScore.cs +++ b/osu.Game/Online/Leaderboards/LeaderboardScore.cs @@ -58,8 +58,6 @@ namespace osu.Game.Online.Leaderboards private DialogOverlay dialogOverlay; - public Action RefreshAction { get; set; } - public LeaderboardScore(ScoreInfo score, int rank, bool allowHighlight = true) { this.score = score; @@ -370,13 +368,20 @@ namespace osu.Game.Online.Leaderboards } } + private void deleteLocalScore(ScoreInfo score) + { + if (score == null || score.ID <= 0) return; + + dialogOverlay?.Push(new LocalScoreDeleteDialog(score)); + } + public MenuItem[] ContextMenuItems { get { return (this.allowHighlight) ? null : new MenuItem[] { - new OsuMenuItem("Delete", MenuItemType.Destructive, () => dialogOverlay?.Push(new BeatmapClearScoresDialog(this.score, () => Schedule(this.RefreshAction)))) + new OsuMenuItem("Delete", MenuItemType.Destructive, () => deleteLocalScore(this.score)) }; } } diff --git a/osu.Game/Screens/Select/BeatmapClearScoresDialog.cs b/osu.Game/Screens/Select/BeatmapClearScoresDialog.cs index 2c5427993b..c9b6ca7bb3 100644 --- a/osu.Game/Screens/Select/BeatmapClearScoresDialog.cs +++ b/osu.Game/Screens/Select/BeatmapClearScoresDialog.cs @@ -39,28 +39,6 @@ namespace osu.Game.Screens.Select }; } - public BeatmapClearScoresDialog(ScoreInfo score, Action onCompletion) - { - string accuracy = string.Format(score?.Accuracy % 1 == 0 ? @"{0:P0}" : @"{0:P2}", score?.Accuracy); - - BodyText = $@"{score?.Beatmap?.Metadata?.Artist} - {score?.Beatmap?.Metadata?.Title} {Environment.NewLine} {score?.User} - Rank: {score?.Rank} - Max Combo: {score?.MaxCombo} - {accuracy} - {score?.Date.Date.ToShortDateString()}"; - - Icon = FontAwesome.Solid.Eraser; - HeaderText = @"Clearing this local score. Are you sure?"; - Buttons = new PopupDialogButton[] - { - new PopupDialogOkButton - { - Text = @"Yes. Please.", - Action = (() => scoreManager.Delete(score)) + onCompletion - }, - new PopupDialogCancelButton - { - Text = @"No, I'm still attached.", - }, - }; - } - [BackgroundDependencyLoader] private void load(ScoreManager scoreManager) { diff --git a/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs b/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs index 8747bc2d28..751ea7fffd 100644 --- a/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs +++ b/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs @@ -19,8 +19,10 @@ namespace osu.Game.Screens.Select.Leaderboards { public class BeatmapLeaderboard : Leaderboard { + public Action ScoreSelected; + [Resolved] private RulesetStore rulesets { get; set; } @@ -103,6 +105,8 @@ namespace osu.Game.Screens.Select.Leaderboards { ScoreSelected = s => ScoreSelected?.Invoke(s) }); + + scoreManager.ItemRemoved += deleteLocalScore; } protected override void Reset() @@ -111,6 +115,16 @@ namespace osu.Game.Screens.Select.Leaderboards TopScore = null; } + protected override void Dispose(bool isDisposing) + { + base.Dispose(isDisposing); + + if (scoreManager != null) + { + scoreManager.ItemRemoved -= deleteLocalScore; + } + } + protected override bool IsOnlineScope => Scope != BeatmapLeaderboardScope.Local; protected override APIRequest FetchScores(Action> scoresCallback) @@ -188,9 +202,16 @@ namespace osu.Game.Screens.Select.Leaderboards return new LeaderboardScore(model, index, IsOnlineScope) { - Action = () => ScoreSelected?.Invoke(model), - RefreshAction = () => this.RefreshScores() + Action = () => ScoreSelected?.Invoke(model) }; } + + private void deleteLocalScore(ScoreInfo score) + { + if (score == null) + return; + + Schedule(() => this.RefreshScores()); + } } } diff --git a/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs new file mode 100644 index 0000000000..fb0954bdf2 --- /dev/null +++ b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs @@ -0,0 +1,59 @@ +// 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.Game.Overlays.Dialog; +using osu.Game.Scoring; +using System; +using System.Threading.Tasks; +using osu.Framework.Graphics.Sprites; +using osu.Framework.Logging; + +namespace osu.Game.Screens.Select +{ + public class LocalScoreDeleteDialog : PopupDialog + { + private ScoreManager scoreManager; + + public LocalScoreDeleteDialog (ScoreInfo score) + { + try{ + string accuracy = string.Format(score?.Accuracy % 1 == 0 ? @"{0:P0}" : @"{0:P2}", score?.Accuracy); + + BodyText = $@"{score} {Environment.NewLine} Rank: {score.Rank} - Max Combo: {score.MaxCombo} - {accuracy}"; + Icon = FontAwesome.Solid.Eraser; + HeaderText = @"Clearing this local score. Are you sure?"; + Buttons = new PopupDialogButton[] + { + new PopupDialogOkButton + { + Text = @"Yes. Please.", + Action = () => scoreManager.Delete(score) + }, + new PopupDialogCancelButton + { + Text = @"No, I'm still attached.", + }, + }; + } catch (Exception e){ + Logger.Error(e, "ScoreInfo cannot be null!"); + + HeaderText = $@"ScoreInfo cannot be null!"; + Icon = FontAwesome.Solid.Ambulance; + Buttons = new PopupDialogButton[] + { + new PopupDialogCancelButton + { + Text = @"OK, thanks.", + }, + }; + } + } + + [BackgroundDependencyLoader] + private void load(ScoreManager scoreManager) + { + this.scoreManager = scoreManager; + } + } +} From b67f9860588d1369333d43409ede90b36354ebcb Mon Sep 17 00:00:00 2001 From: Willy Tu Date: Wed, 18 Dec 2019 19:26:35 -0800 Subject: [PATCH 0459/1829] Fix CodeFactor issues --- .../Screens/Select/Leaderboards/BeatmapLeaderboard.cs | 2 -- osu.Game/Screens/Select/LocalScoreDeleteDialog.cs | 9 ++++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs b/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs index 751ea7fffd..df29666a8a 100644 --- a/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs +++ b/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs @@ -19,10 +19,8 @@ namespace osu.Game.Screens.Select.Leaderboards { public class BeatmapLeaderboard : Leaderboard { - public Action ScoreSelected; - [Resolved] private RulesetStore rulesets { get; set; } diff --git a/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs index fb0954bdf2..9aa2e5c6e6 100644 --- a/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs +++ b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs @@ -15,9 +15,10 @@ namespace osu.Game.Screens.Select { private ScoreManager scoreManager; - public LocalScoreDeleteDialog (ScoreInfo score) + public LocalScoreDeleteDialog(ScoreInfo score) { - try{ + try + { string accuracy = string.Format(score?.Accuracy % 1 == 0 ? @"{0:P0}" : @"{0:P2}", score?.Accuracy); BodyText = $@"{score} {Environment.NewLine} Rank: {score.Rank} - Max Combo: {score.MaxCombo} - {accuracy}"; @@ -35,7 +36,9 @@ namespace osu.Game.Screens.Select Text = @"No, I'm still attached.", }, }; - } catch (Exception e){ + } + catch (Exception e) + { Logger.Error(e, "ScoreInfo cannot be null!"); HeaderText = $@"ScoreInfo cannot be null!"; From 27163a51338a37cb2eee249d7102aca7d5c49547 Mon Sep 17 00:00:00 2001 From: Willy Tu Date: Wed, 18 Dec 2019 21:04:10 -0800 Subject: [PATCH 0460/1829] Removed unnecessary code for deleting individual local score. --- .../Online/Leaderboards/LeaderboardScore.cs | 7 +-- .../Select/Leaderboards/BeatmapLeaderboard.cs | 5 +- .../Screens/Select/LocalScoreDeleteDialog.cs | 49 +++++++------------ 3 files changed, 20 insertions(+), 41 deletions(-) diff --git a/osu.Game/Online/Leaderboards/LeaderboardScore.cs b/osu.Game/Online/Leaderboards/LeaderboardScore.cs index 2578b6bbea..54eebd69c1 100644 --- a/osu.Game/Online/Leaderboards/LeaderboardScore.cs +++ b/osu.Game/Online/Leaderboards/LeaderboardScore.cs @@ -1,7 +1,6 @@ // 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 System.Linq; using osu.Framework.Allocation; @@ -370,8 +369,6 @@ namespace osu.Game.Online.Leaderboards private void deleteLocalScore(ScoreInfo score) { - if (score == null || score.ID <= 0) return; - dialogOverlay?.Push(new LocalScoreDeleteDialog(score)); } @@ -379,9 +376,9 @@ namespace osu.Game.Online.Leaderboards { get { - return (this.allowHighlight) ? null : new MenuItem[] + return (allowHighlight) ? null : new MenuItem[] { - new OsuMenuItem("Delete", MenuItemType.Destructive, () => deleteLocalScore(this.score)) + new OsuMenuItem("Delete", MenuItemType.Destructive, () => deleteLocalScore(score)), }; } } diff --git a/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs b/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs index df29666a8a..8442e91712 100644 --- a/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs +++ b/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs @@ -206,10 +206,7 @@ namespace osu.Game.Screens.Select.Leaderboards private void deleteLocalScore(ScoreInfo score) { - if (score == null) - return; - - Schedule(() => this.RefreshScores()); + Schedule(RefreshScores); } } } diff --git a/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs index 9aa2e5c6e6..635906c08a 100644 --- a/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs +++ b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs @@ -5,7 +5,7 @@ using osu.Framework.Allocation; using osu.Game.Overlays.Dialog; using osu.Game.Scoring; using System; -using System.Threading.Tasks; +using System.Diagnostics; using osu.Framework.Graphics.Sprites; using osu.Framework.Logging; @@ -17,40 +17,25 @@ namespace osu.Game.Screens.Select public LocalScoreDeleteDialog(ScoreInfo score) { - try - { - string accuracy = string.Format(score?.Accuracy % 1 == 0 ? @"{0:P0}" : @"{0:P2}", score?.Accuracy); + Debug.Assert(score != null); - BodyText = $@"{score} {Environment.NewLine} Rank: {score.Rank} - Max Combo: {score.MaxCombo} - {accuracy}"; - Icon = FontAwesome.Solid.Eraser; - HeaderText = @"Clearing this local score. Are you sure?"; - Buttons = new PopupDialogButton[] - { - new PopupDialogOkButton - { - Text = @"Yes. Please.", - Action = () => scoreManager.Delete(score) - }, - new PopupDialogCancelButton - { - Text = @"No, I'm still attached.", - }, - }; - } - catch (Exception e) - { - Logger.Error(e, "ScoreInfo cannot be null!"); + string accuracy = string.Format(score.Accuracy % 1 == 0 ? @"{0:P0}" : @"{0:P2}", score.Accuracy); - HeaderText = $@"ScoreInfo cannot be null!"; - Icon = FontAwesome.Solid.Ambulance; - Buttons = new PopupDialogButton[] + BodyText = $@"{score} {Environment.NewLine} Rank: {score.Rank} - Max Combo: {score.MaxCombo} - {accuracy}"; + Icon = FontAwesome.Solid.Eraser; + HeaderText = @"Deleting this local score. Are you sure?"; + Buttons = new PopupDialogButton[] + { + new PopupDialogOkButton { - new PopupDialogCancelButton - { - Text = @"OK, thanks.", - }, - }; - } + Text = @"Yes. Please.", + Action = () => scoreManager.Delete(score) + }, + new PopupDialogCancelButton + { + Text = @"No, I'm still attached.", + }, + }; } [BackgroundDependencyLoader] From ed07b779b167284f7b51d2031fb67f20bca97eb5 Mon Sep 17 00:00:00 2001 From: Willy Tu Date: Wed, 18 Dec 2019 21:54:02 -0800 Subject: [PATCH 0461/1829] Update to use score.ID identify local scores --- osu.Game/Online/Leaderboards/LeaderboardScore.cs | 9 +++------ osu.Game/Screens/Select/LocalScoreDeleteDialog.cs | 1 - 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/osu.Game/Online/Leaderboards/LeaderboardScore.cs b/osu.Game/Online/Leaderboards/LeaderboardScore.cs index 54eebd69c1..d2d82d849d 100644 --- a/osu.Game/Online/Leaderboards/LeaderboardScore.cs +++ b/osu.Game/Online/Leaderboards/LeaderboardScore.cs @@ -374,13 +374,10 @@ namespace osu.Game.Online.Leaderboards public MenuItem[] ContextMenuItems { - get + get => (score.ID == 0) ? null : new MenuItem[] { - return (allowHighlight) ? null : new MenuItem[] - { - new OsuMenuItem("Delete", MenuItemType.Destructive, () => deleteLocalScore(score)), - }; - } + new OsuMenuItem("Delete", MenuItemType.Destructive, () => deleteLocalScore(score)), + }; } } } diff --git a/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs index 635906c08a..d5f2195c42 100644 --- a/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs +++ b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs @@ -7,7 +7,6 @@ using osu.Game.Scoring; using System; using System.Diagnostics; using osu.Framework.Graphics.Sprites; -using osu.Framework.Logging; namespace osu.Game.Screens.Select { From b1533ae2a9d32eee264464d1d12ee374c59cd1bb Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 19 Dec 2019 14:58:56 +0900 Subject: [PATCH 0462/1829] Fix score serialisation failing for unknown mod properties --- osu.Game/Scoring/ScoreInfo.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Scoring/ScoreInfo.cs b/osu.Game/Scoring/ScoreInfo.cs index c7609e8a0b..c37bab9086 100644 --- a/osu.Game/Scoring/ScoreInfo.cs +++ b/osu.Game/Scoring/ScoreInfo.cs @@ -89,7 +89,7 @@ namespace osu.Game.Scoring if (mods == null) return null; - return modsJson = JsonConvert.SerializeObject(mods); + return modsJson = JsonConvert.SerializeObject(mods.Select(m => new DeserializedMod { Acronym = m.Acronym })); } set { From 643911ada972f93bcb17d34514b17878dc758a40 Mon Sep 17 00:00:00 2001 From: Willy Tu Date: Wed, 18 Dec 2019 22:41:07 -0800 Subject: [PATCH 0463/1829] Fix code format for CI --- osu.Game/Online/Leaderboards/LeaderboardScore.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/osu.Game/Online/Leaderboards/LeaderboardScore.cs b/osu.Game/Online/Leaderboards/LeaderboardScore.cs index d2d82d849d..c6a3368a91 100644 --- a/osu.Game/Online/Leaderboards/LeaderboardScore.cs +++ b/osu.Game/Online/Leaderboards/LeaderboardScore.cs @@ -372,12 +372,18 @@ namespace osu.Game.Online.Leaderboards dialogOverlay?.Push(new LocalScoreDeleteDialog(score)); } + public MenuItem[] ContextMenuItems { - get => (score.ID == 0) ? null : new MenuItem[] + get { - new OsuMenuItem("Delete", MenuItemType.Destructive, () => deleteLocalScore(score)), - }; + List items = new List(); + + if (score.ID != 0) + items.Add(new OsuMenuItem("Delete", MenuItemType.Destructive, () => deleteLocalScore(score))); + + return items.ToArray(); + } } } } From d4d4ddc624c194751e9adbcd319cf42e170798d1 Mon Sep 17 00:00:00 2001 From: Willy Tu Date: Wed, 18 Dec 2019 22:42:26 -0800 Subject: [PATCH 0464/1829] Remove new line for CodeFactor --- osu.Game/Online/Leaderboards/LeaderboardScore.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Online/Leaderboards/LeaderboardScore.cs b/osu.Game/Online/Leaderboards/LeaderboardScore.cs index c6a3368a91..c0d366f642 100644 --- a/osu.Game/Online/Leaderboards/LeaderboardScore.cs +++ b/osu.Game/Online/Leaderboards/LeaderboardScore.cs @@ -372,7 +372,6 @@ namespace osu.Game.Online.Leaderboards dialogOverlay?.Push(new LocalScoreDeleteDialog(score)); } - public MenuItem[] ContextMenuItems { get From 1da8cc86900a3f3538f6c2b7d4edcaa10fcc4f13 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 19 Dec 2019 19:02:11 +0900 Subject: [PATCH 0465/1829] Encapsulate common logic of ScoreProcessor --- .../Rulesets/Scoring/JudgementProcessor.cs | 126 +++++++++++++++++ osu.Game/Rulesets/Scoring/ScoreProcessor.cs | 129 +++--------------- 2 files changed, 146 insertions(+), 109 deletions(-) create mode 100644 osu.Game/Rulesets/Scoring/JudgementProcessor.cs diff --git a/osu.Game/Rulesets/Scoring/JudgementProcessor.cs b/osu.Game/Rulesets/Scoring/JudgementProcessor.cs new file mode 100644 index 0000000000..854b926846 --- /dev/null +++ b/osu.Game/Rulesets/Scoring/JudgementProcessor.cs @@ -0,0 +1,126 @@ +// 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 osu.Framework.Extensions.TypeExtensions; +using osu.Game.Beatmaps; +using osu.Game.Rulesets.Judgements; +using osu.Game.Rulesets.Objects; + +namespace osu.Game.Rulesets.Scoring +{ + public abstract class JudgementProcessor + { + /// + /// The maximum number of hits that can be judged. + /// + protected int MaxHits { get; private set; } + + /// + /// The total number of judged s at the current point in time. + /// + public int JudgedHits { get; private set; } + + protected JudgementProcessor(IBeatmap beatmap) + { + ApplyBeatmap(beatmap); + + Reset(false); + SimulateAutoplay(beatmap); + Reset(true); + } + + /// + /// Applies any properties of the which affect scoring to this . + /// + /// The to read properties from. + protected virtual void ApplyBeatmap(IBeatmap beatmap) + { + } + + /// + /// Applies the score change of a to this . + /// + /// The to apply. + public void ApplyResult(JudgementResult result) + { + JudgedHits++; + + ApplyResultInternal(result); + } + + /// + /// Reverts the score change of a that was applied to this . + /// + /// The judgement scoring result. + public void RevertResult(JudgementResult result) + { + JudgedHits--; + + RevertResultInternal(result); + } + + /// + /// Applies the score change of a to this . + /// + /// + /// Any changes applied via this method can be reverted via . + /// + /// The to apply. + protected abstract void ApplyResultInternal(JudgementResult result); + + /// + /// Reverts the score change of a that was applied to this via . + /// + /// The judgement scoring result. + protected abstract void RevertResultInternal(JudgementResult result); + + /// + /// Resets this to a default state. + /// + /// Whether to store the current state of the for future use. + protected virtual void Reset(bool storeResults) + { + if (storeResults) + MaxHits = JudgedHits; + + JudgedHits = 0; + } + + /// + /// Creates the that represents the scoring result for a . + /// + /// The which was judged. + /// The that provides the scoring information. + protected virtual JudgementResult CreateResult(HitObject hitObject, Judgement judgement) => new JudgementResult(hitObject, judgement); + + /// + /// Simulates an autoplay of the to determine scoring values. + /// + /// This provided temporarily. DO NOT USE. + /// The to simulate. + protected virtual void SimulateAutoplay(IBeatmap beatmap) + { + foreach (var obj in beatmap.HitObjects) + simulate(obj); + + void simulate(HitObject obj) + { + foreach (var nested in obj.NestedHitObjects) + simulate(nested); + + var judgement = obj.CreateJudgement(); + if (judgement == null) + return; + + var result = CreateResult(obj, judgement); + if (result == null) + throw new InvalidOperationException($"{GetType().ReadableName()} must provide a {nameof(JudgementResult)} through {nameof(CreateResult)}."); + + result.Type = judgement.MaxResult; + + ApplyResult(result); + } + } + } +} diff --git a/osu.Game/Rulesets/Scoring/ScoreProcessor.cs b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs index a8a2294498..f885a860ec 100644 --- a/osu.Game/Rulesets/Scoring/ScoreProcessor.cs +++ b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs @@ -7,7 +7,6 @@ using System.Diagnostics; using System.Linq; using osu.Framework.Bindables; using osu.Framework.Extensions; -using osu.Framework.Extensions.TypeExtensions; using osu.Framework.MathUtils; using osu.Game.Beatmaps; using osu.Game.Rulesets.Judgements; @@ -17,7 +16,7 @@ using osu.Game.Scoring; namespace osu.Game.Rulesets.Scoring { - public class ScoreProcessor + public class ScoreProcessor : JudgementProcessor { private const double base_portion = 0.3; private const double combo_portion = 0.7; @@ -95,16 +94,6 @@ namespace osu.Game.Rulesets.Scoring /// public bool HasFailed { get; private set; } - /// - /// The maximum number of hits that can be judged. - /// - protected int MaxHits { get; private set; } - - /// - /// The total number of judged s at the current point in time. - /// - public int JudgedHits { get; private set; } - private double maxHighestCombo; private double maxBaseScore; @@ -115,8 +104,14 @@ namespace osu.Game.Rulesets.Scoring private double scoreMultiplier = 1; public ScoreProcessor(IBeatmap beatmap) + : base(beatmap) { Debug.Assert(base_portion + combo_portion == 1.0); + } + + protected override void ApplyBeatmap(IBeatmap beatmap) + { + base.ApplyBeatmap(beatmap); Combo.ValueChanged += combo => HighestCombo.Value = Math.Max(HighestCombo.Value, combo.NewValue); Accuracy.ValueChanged += accuracy => @@ -126,12 +121,6 @@ namespace osu.Game.Rulesets.Scoring Rank.Value = mod.AdjustRank(Rank.Value, accuracy.NewValue); }; - ApplyBeatmap(beatmap); - - Reset(false); - SimulateAutoplay(beatmap); - Reset(true); - if (maxBaseScore == 0 || maxHighestCombo == 0) { Mode.Value = ScoringMode.Classic; @@ -150,80 +139,9 @@ namespace osu.Game.Rulesets.Scoring }; } - /// - /// Applies any properties of the which affect scoring to this . - /// - /// The to read properties from. - protected virtual void ApplyBeatmap(IBeatmap beatmap) - { - } - - /// - /// Simulates an autoplay of the to determine scoring values. - /// - /// This provided temporarily. DO NOT USE. - /// The to simulate. - protected virtual void SimulateAutoplay(IBeatmap beatmap) - { - foreach (var obj in beatmap.HitObjects) - simulate(obj); - - void simulate(HitObject obj) - { - foreach (var nested in obj.NestedHitObjects) - simulate(nested); - - var judgement = obj.CreateJudgement(); - if (judgement == null) - return; - - var result = CreateResult(obj, judgement); - if (result == null) - throw new InvalidOperationException($"{GetType().ReadableName()} must provide a {nameof(JudgementResult)} through {nameof(CreateResult)}."); - - result.Type = judgement.MaxResult; - - ApplyResult(result); - } - } - - /// - /// Applies the score change of a to this . - /// - /// The to apply. - public void ApplyResult(JudgementResult result) - { - ApplyResultInternal(result); - - updateScore(); - updateFailed(result); - - NewJudgement?.Invoke(result); - - if (HasCompleted) - AllJudged?.Invoke(); - } - - /// - /// Reverts the score change of a that was applied to this . - /// - /// The judgement scoring result. - public void RevertResult(JudgementResult result) - { - RevertResultInternal(result); - updateScore(); - } - private readonly Dictionary scoreResultCounts = new Dictionary(); - /// - /// Applies the score change of a to this . - /// - /// - /// Any changes applied via this method can be reverted via . - /// - /// The to apply. - protected virtual void ApplyResultInternal(JudgementResult result) + protected sealed override void ApplyResultInternal(JudgementResult result) { result.ComboAtJudgement = Combo.Value; result.HighestComboAtJudgement = HighestCombo.Value; @@ -233,8 +151,6 @@ namespace osu.Game.Rulesets.Scoring if (HasFailed) return; - JudgedHits++; - if (result.Judgement.AffectsCombo) { switch (result.Type) @@ -267,13 +183,17 @@ namespace osu.Game.Rulesets.Scoring } Health.Value += HealthAdjustmentFactorFor(result) * result.Judgement.HealthIncreaseFor(result); + + updateScore(); + updateFailed(result); + + NewJudgement?.Invoke(result); + + if (HasCompleted) + AllJudged?.Invoke(); } - /// - /// Reverts the score change of a that was applied to this via . - /// - /// The judgement scoring result. - protected virtual void RevertResultInternal(JudgementResult result) + protected sealed override void RevertResultInternal(JudgementResult result) { Combo.Value = result.ComboAtJudgement; HighestCombo.Value = result.HighestComboAtJudgement; @@ -284,8 +204,6 @@ namespace osu.Game.Rulesets.Scoring if (result.FailedAtJudgement) return; - JudgedHits--; - if (result.Judgement.IsBonus) { if (result.IsHit) @@ -372,18 +290,18 @@ namespace osu.Game.Rulesets.Scoring /// Resets this ScoreProcessor to a default state. /// /// Whether to store the current state of the for future use. - protected virtual void Reset(bool storeResults) + protected override void Reset(bool storeResults) { + base.Reset(storeResults); + scoreResultCounts.Clear(); if (storeResults) { - MaxHits = JudgedHits; maxHighestCombo = HighestCombo.Value; maxBaseScore = baseScore; } - JudgedHits = 0; baseScore = 0; rollingMaxBaseScore = 0; bonusScore = 0; @@ -425,13 +343,6 @@ namespace osu.Game.Rulesets.Scoring /// Create a for this processor. /// public virtual HitWindows CreateHitWindows() => new HitWindows(); - - /// - /// Creates the that represents the scoring result for a . - /// - /// The which was judged. - /// The that provides the scoring information. - protected virtual JudgementResult CreateResult(HitObject hitObject, Judgement judgement) => new JudgementResult(hitObject, judgement); } public enum ScoringMode From 81e842f6b4bab33100c8f79eae63c6ab41155730 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 19 Dec 2019 19:48:48 +0900 Subject: [PATCH 0466/1829] Fix waveform test beatmap accessing zip archive across multiple threads --- .../Editor/TestSceneEditorComposeTimeline.cs | 14 +++----- osu.Game.Tests/WaveformTestBeatmap.cs | 32 +++++++++++-------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs b/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs index e618256c03..ed6bc5fe0c 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs @@ -68,8 +68,11 @@ namespace osu.Game.Tests.Visual.Editor { private readonly Drawable marker; - private readonly IBindable beatmap = new Bindable(); - private IAdjustableClock adjustableClock; + [Resolved] + private IBindable beatmap { get; set; } + + [Resolved] + private IAdjustableClock adjustableClock { get; set; } public AudioVisualiser() { @@ -91,13 +94,6 @@ namespace osu.Game.Tests.Visual.Editor }; } - [BackgroundDependencyLoader] - private void load(IAdjustableClock adjustableClock, IBindable beatmap) - { - this.adjustableClock = adjustableClock; - this.beatmap.BindTo(beatmap); - } - protected override void Update() { base.Update(); diff --git a/osu.Game.Tests/WaveformTestBeatmap.cs b/osu.Game.Tests/WaveformTestBeatmap.cs index 0d16a78f75..59f322e24c 100644 --- a/osu.Game.Tests/WaveformTestBeatmap.cs +++ b/osu.Game.Tests/WaveformTestBeatmap.cs @@ -20,23 +20,21 @@ namespace osu.Game.Tests /// public class WaveformTestBeatmap : WorkingBeatmap { - private readonly ZipArchiveReader reader; - private readonly Stream stream; private readonly ITrackStore trackStore; + private Stream getStream() => TestResources.GetTestBeatmapStream(); + + private ZipArchiveReader getZipReader() => new ZipArchiveReader(getStream()); + public WaveformTestBeatmap(AudioManager audioManager) : base(new BeatmapInfo(), audioManager) { - stream = TestResources.GetTestBeatmapStream(); - reader = new ZipArchiveReader(stream); - trackStore = audioManager.GetTrackStore(reader); + trackStore = audioManager.GetTrackStore(getZipReader()); } protected override void Dispose(bool isDisposing) { base.Dispose(isDisposing); - stream?.Dispose(); - reader?.Dispose(); trackStore?.Dispose(); } @@ -50,15 +48,23 @@ namespace osu.Game.Tests protected override Track GetTrack() => trackStore.Get(firstAudioFile); - private string firstAudioFile => reader.Filenames.First(f => f.EndsWith(".mp3")); - - private Stream getBeatmapStream() => reader.GetStream(reader.Filenames.First(f => f.EndsWith(".osu"))); + private string firstAudioFile + { + get + { + using (var reader = getZipReader()) + return reader.Filenames.First(f => f.EndsWith(".mp3")); + } + } private Beatmap createTestBeatmap() { - using (var beatmapStream = getBeatmapStream()) - using (var beatmapReader = new LineBufferedReader(beatmapStream)) - return Decoder.GetDecoder(beatmapReader).Decode(beatmapReader); + using (var reader = getZipReader()) + { + using (var beatmapStream = reader.GetStream(reader.Filenames.First(f => f.EndsWith(".osu")))) + using (var beatmapReader = new LineBufferedReader(beatmapStream)) + return Decoder.GetDecoder(beatmapReader).Decode(beatmapReader); + } } } } From 76f2fb378fbbed997505b64fd2a6624270a32704 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 19 Dec 2019 20:03:14 +0900 Subject: [PATCH 0467/1829] Separate score and health parts of ScoreProcessor --- osu.Game.Rulesets.Catch/CatchRuleset.cs | 2 + .../Scoring/CatchHealthProcessor.cs | 38 +++++++ .../Scoring/CatchScoreProcessor.cs | 22 ---- osu.Game.Rulesets.Mania/ManiaRuleset.cs | 2 + .../Scoring/ManiaHealthProcessor.cs | 69 ++++++++++++ .../Scoring/ManiaScoreProcessor.cs | 69 ------------ osu.Game.Rulesets.Osu/Mods/OsuModBlinds.cs | 6 +- .../Scoring/OsuHealthProcessor.cs | 54 ++++++++++ .../Scoring/OsuScoreProcessor.cs | 33 ------ .../Scoring/TaikoHealthProcessor.cs | 58 ++++++++++ .../Scoring/TaikoScoreProcessor.cs | 42 -------- osu.Game.Rulesets.Taiko/TaikoRuleset.cs | 2 + .../Visual/Gameplay/TestSceneFailAnimation.cs | 2 +- .../Visual/Gameplay/TestSceneFailJudgement.cs | 2 +- .../Visual/Gameplay/TestSceneHUDOverlay.cs | 2 +- .../Visual/Gameplay/TestScenePause.cs | 8 +- .../Mods/IApplicableToHealthProcessor.cs | 15 +++ osu.Game/Rulesets/Mods/ModEasy.cs | 9 +- osu.Game/Rulesets/Mods/ModPerfect.cs | 2 +- osu.Game/Rulesets/Mods/ModSuddenDeath.cs | 11 +- osu.Game/Rulesets/Ruleset.cs | 6 ++ osu.Game/Rulesets/Scoring/HealthProcessor.cs | 102 ++++++++++++++++++ osu.Game/Rulesets/Scoring/ScoreProcessor.cs | 66 +----------- osu.Game/Screens/Play/HUDOverlay.cs | 17 ++- osu.Game/Screens/Play/Player.cs | 30 ++++-- 25 files changed, 404 insertions(+), 265 deletions(-) create mode 100644 osu.Game.Rulesets.Catch/Scoring/CatchHealthProcessor.cs create mode 100644 osu.Game.Rulesets.Mania/Scoring/ManiaHealthProcessor.cs create mode 100644 osu.Game.Rulesets.Osu/Scoring/OsuHealthProcessor.cs create mode 100644 osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs create mode 100644 osu.Game/Rulesets/Mods/IApplicableToHealthProcessor.cs create mode 100644 osu.Game/Rulesets/Scoring/HealthProcessor.cs diff --git a/osu.Game.Rulesets.Catch/CatchRuleset.cs b/osu.Game.Rulesets.Catch/CatchRuleset.cs index b8a844cb86..26e6112f83 100644 --- a/osu.Game.Rulesets.Catch/CatchRuleset.cs +++ b/osu.Game.Rulesets.Catch/CatchRuleset.cs @@ -30,6 +30,8 @@ namespace osu.Game.Rulesets.Catch public override ScoreProcessor CreateScoreProcessor(IBeatmap beatmap) => new CatchScoreProcessor(beatmap); + public override HealthProcessor CreateHealthProcessor(IBeatmap beatmap) => new CatchHealthProcessor(beatmap); + public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new CatchBeatmapConverter(beatmap); public override IBeatmapProcessor CreateBeatmapProcessor(IBeatmap beatmap) => new CatchBeatmapProcessor(beatmap); diff --git a/osu.Game.Rulesets.Catch/Scoring/CatchHealthProcessor.cs b/osu.Game.Rulesets.Catch/Scoring/CatchHealthProcessor.cs new file mode 100644 index 0000000000..49ba0f6122 --- /dev/null +++ b/osu.Game.Rulesets.Catch/Scoring/CatchHealthProcessor.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.Game.Beatmaps; +using osu.Game.Rulesets.Judgements; +using osu.Game.Rulesets.Scoring; + +namespace osu.Game.Rulesets.Catch.Scoring +{ + public class CatchHealthProcessor : HealthProcessor + { + public CatchHealthProcessor(IBeatmap beatmap) + : base(beatmap) + { + } + + private float hpDrainRate; + + protected override void ApplyBeatmap(IBeatmap beatmap) + { + base.ApplyBeatmap(beatmap); + + hpDrainRate = beatmap.BeatmapInfo.BaseDifficulty.DrainRate; + } + + protected override double HealthAdjustmentFactorFor(JudgementResult result) + { + switch (result.Type) + { + case HitResult.Miss: + return hpDrainRate; + + default: + return 10.2 - hpDrainRate; // Award less HP as drain rate is increased + } + } + } +} diff --git a/osu.Game.Rulesets.Catch/Scoring/CatchScoreProcessor.cs b/osu.Game.Rulesets.Catch/Scoring/CatchScoreProcessor.cs index f67ca1213e..ad7520d57d 100644 --- a/osu.Game.Rulesets.Catch/Scoring/CatchScoreProcessor.cs +++ b/osu.Game.Rulesets.Catch/Scoring/CatchScoreProcessor.cs @@ -2,7 +2,6 @@ // See the LICENCE file in the repository root for full licence text. using osu.Game.Beatmaps; -using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Scoring; namespace osu.Game.Rulesets.Catch.Scoring @@ -14,27 +13,6 @@ namespace osu.Game.Rulesets.Catch.Scoring { } - private float hpDrainRate; - - protected override void ApplyBeatmap(IBeatmap beatmap) - { - base.ApplyBeatmap(beatmap); - - hpDrainRate = beatmap.BeatmapInfo.BaseDifficulty.DrainRate; - } - - protected override double HealthAdjustmentFactorFor(JudgementResult result) - { - switch (result.Type) - { - case HitResult.Miss: - return hpDrainRate; - - default: - return 10.2 - hpDrainRate; // Award less HP as drain rate is increased - } - } - public override HitWindows CreateHitWindows() => new CatchHitWindows(); } } diff --git a/osu.Game.Rulesets.Mania/ManiaRuleset.cs b/osu.Game.Rulesets.Mania/ManiaRuleset.cs index bf630cf892..0ec1264cce 100644 --- a/osu.Game.Rulesets.Mania/ManiaRuleset.cs +++ b/osu.Game.Rulesets.Mania/ManiaRuleset.cs @@ -37,6 +37,8 @@ namespace osu.Game.Rulesets.Mania public override ScoreProcessor CreateScoreProcessor(IBeatmap beatmap) => new ManiaScoreProcessor(beatmap); + public override HealthProcessor CreateHealthProcessor(IBeatmap beatmap) => new ManiaHealthProcessor(beatmap); + public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new ManiaBeatmapConverter(beatmap); public override PerformanceCalculator CreatePerformanceCalculator(WorkingBeatmap beatmap, ScoreInfo score) => new ManiaPerformanceCalculator(this, beatmap, score); diff --git a/osu.Game.Rulesets.Mania/Scoring/ManiaHealthProcessor.cs b/osu.Game.Rulesets.Mania/Scoring/ManiaHealthProcessor.cs new file mode 100644 index 0000000000..c362c906a4 --- /dev/null +++ b/osu.Game.Rulesets.Mania/Scoring/ManiaHealthProcessor.cs @@ -0,0 +1,69 @@ +// 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.Beatmaps; +using osu.Game.Rulesets.Judgements; +using osu.Game.Rulesets.Scoring; + +namespace osu.Game.Rulesets.Mania.Scoring +{ + public class ManiaHealthProcessor : HealthProcessor + { + /// + /// The hit HP multiplier at OD = 0. + /// + private const double hp_multiplier_min = 0.75; + + /// + /// The hit HP multiplier at OD = 0. + /// + private const double hp_multiplier_mid = 0.85; + + /// + /// The hit HP multiplier at OD = 0. + /// + private const double hp_multiplier_max = 1; + + /// + /// The MISS HP multiplier at OD = 0. + /// + private const double hp_multiplier_miss_min = 0.5; + + /// + /// The MISS HP multiplier at OD = 5. + /// + private const double hp_multiplier_miss_mid = 0.75; + + /// + /// The MISS HP multiplier at OD = 10. + /// + private const double hp_multiplier_miss_max = 1; + + /// + /// The MISS HP multiplier. This is multiplied to the miss hp increase. + /// + private double hpMissMultiplier = 1; + + /// + /// The HIT HP multiplier. This is multiplied to hit hp increases. + /// + private double hpMultiplier = 1; + + public ManiaHealthProcessor(IBeatmap beatmap) + : base(beatmap) + { + } + + protected override void ApplyBeatmap(IBeatmap beatmap) + { + base.ApplyBeatmap(beatmap); + + BeatmapDifficulty difficulty = beatmap.BeatmapInfo.BaseDifficulty; + hpMultiplier = BeatmapDifficulty.DifficultyRange(difficulty.DrainRate, hp_multiplier_min, hp_multiplier_mid, hp_multiplier_max); + hpMissMultiplier = BeatmapDifficulty.DifficultyRange(difficulty.DrainRate, hp_multiplier_miss_min, hp_multiplier_miss_mid, hp_multiplier_miss_max); + } + + protected override double HealthAdjustmentFactorFor(JudgementResult result) + => result.Type == HitResult.Miss ? hpMissMultiplier : hpMultiplier; + } +} diff --git a/osu.Game.Rulesets.Mania/Scoring/ManiaScoreProcessor.cs b/osu.Game.Rulesets.Mania/Scoring/ManiaScoreProcessor.cs index a678ef60e7..97f1ea721c 100644 --- a/osu.Game.Rulesets.Mania/Scoring/ManiaScoreProcessor.cs +++ b/osu.Game.Rulesets.Mania/Scoring/ManiaScoreProcessor.cs @@ -2,86 +2,17 @@ // See the LICENCE file in the repository root for full licence text. using osu.Game.Beatmaps; -using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Scoring; namespace osu.Game.Rulesets.Mania.Scoring { internal class ManiaScoreProcessor : ScoreProcessor { - /// - /// The hit HP multiplier at OD = 0. - /// - private const double hp_multiplier_min = 0.75; - - /// - /// The hit HP multiplier at OD = 0. - /// - private const double hp_multiplier_mid = 0.85; - - /// - /// The hit HP multiplier at OD = 0. - /// - private const double hp_multiplier_max = 1; - - /// - /// The MISS HP multiplier at OD = 0. - /// - private const double hp_multiplier_miss_min = 0.5; - - /// - /// The MISS HP multiplier at OD = 5. - /// - private const double hp_multiplier_miss_mid = 0.75; - - /// - /// The MISS HP multiplier at OD = 10. - /// - private const double hp_multiplier_miss_max = 1; - - /// - /// The MISS HP multiplier. This is multiplied to the miss hp increase. - /// - private double hpMissMultiplier = 1; - - /// - /// The HIT HP multiplier. This is multiplied to hit hp increases. - /// - private double hpMultiplier = 1; - public ManiaScoreProcessor(IBeatmap beatmap) : base(beatmap) { } - protected override void ApplyBeatmap(IBeatmap beatmap) - { - base.ApplyBeatmap(beatmap); - - BeatmapDifficulty difficulty = beatmap.BeatmapInfo.BaseDifficulty; - hpMultiplier = BeatmapDifficulty.DifficultyRange(difficulty.DrainRate, hp_multiplier_min, hp_multiplier_mid, hp_multiplier_max); - hpMissMultiplier = BeatmapDifficulty.DifficultyRange(difficulty.DrainRate, hp_multiplier_miss_min, hp_multiplier_miss_mid, hp_multiplier_miss_max); - } - - protected override void SimulateAutoplay(IBeatmap beatmap) - { - while (true) - { - base.SimulateAutoplay(beatmap); - - if (!HasFailed) - break; - - hpMultiplier *= 1.01; - hpMissMultiplier *= 0.98; - - Reset(false); - } - } - - protected override double HealthAdjustmentFactorFor(JudgementResult result) - => result.Type == HitResult.Miss ? hpMissMultiplier : hpMultiplier; - public override HitWindows CreateHitWindows() => new ManiaHitWindows(); } } diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModBlinds.cs b/osu.Game.Rulesets.Osu/Mods/OsuModBlinds.cs index 63110b2797..831e4a700f 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModBlinds.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModBlinds.cs @@ -18,7 +18,7 @@ using osuTK.Graphics; namespace osu.Game.Rulesets.Osu.Mods { - public class OsuModBlinds : Mod, IApplicableToDrawableRuleset, IApplicableToScoreProcessor + public class OsuModBlinds : Mod, IApplicableToDrawableRuleset, IApplicableToHealthProcessor { public override string Name => "Blinds"; public override string Description => "Play with blinds on your screen."; @@ -37,9 +37,9 @@ namespace osu.Game.Rulesets.Osu.Mods drawableRuleset.Overlays.Add(blinds = new DrawableOsuBlinds(drawableRuleset.Playfield.HitObjectContainer, drawableRuleset.Beatmap)); } - public void ApplyToScoreProcessor(ScoreProcessor scoreProcessor) + public void ApplyToHealthProcessor(HealthProcessor healthProcessor) { - scoreProcessor.Health.ValueChanged += health => { blinds.AnimateClosedness((float)health.NewValue); }; + healthProcessor.Health.ValueChanged += health => { blinds.AnimateClosedness((float)health.NewValue); }; } public ScoreRank AdjustRank(ScoreRank rank, double accuracy) => rank; diff --git a/osu.Game.Rulesets.Osu/Scoring/OsuHealthProcessor.cs b/osu.Game.Rulesets.Osu/Scoring/OsuHealthProcessor.cs new file mode 100644 index 0000000000..36ccc80af6 --- /dev/null +++ b/osu.Game.Rulesets.Osu/Scoring/OsuHealthProcessor.cs @@ -0,0 +1,54 @@ +// 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.Beatmaps; +using osu.Game.Rulesets.Judgements; +using osu.Game.Rulesets.Objects; +using osu.Game.Rulesets.Osu.Judgements; +using osu.Game.Rulesets.Scoring; + +namespace osu.Game.Rulesets.Osu.Scoring +{ + public class OsuHealthProcessor : HealthProcessor + { + public OsuHealthProcessor(IBeatmap beatmap) + : base(beatmap) + { + } + + private float hpDrainRate; + + protected override void ApplyBeatmap(IBeatmap beatmap) + { + base.ApplyBeatmap(beatmap); + + hpDrainRate = beatmap.BeatmapInfo.BaseDifficulty.DrainRate; + } + + protected override double HealthAdjustmentFactorFor(JudgementResult result) + { + switch (result.Type) + { + case HitResult.Great: + return 10.2 - hpDrainRate; + + case HitResult.Good: + return 8 - hpDrainRate; + + case HitResult.Meh: + return 4 - hpDrainRate; + + // case HitResult.SliderTick: + // return Math.Max(7 - hpDrainRate, 0) * 0.01; + + case HitResult.Miss: + return hpDrainRate; + + default: + return 0; + } + } + + protected override JudgementResult CreateResult(HitObject hitObject, Judgement judgement) => new OsuJudgementResult(hitObject, judgement); + } +} diff --git a/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs b/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs index 6779271cb3..4593364e42 100644 --- a/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs +++ b/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs @@ -16,39 +16,6 @@ namespace osu.Game.Rulesets.Osu.Scoring { } - private float hpDrainRate; - - protected override void ApplyBeatmap(IBeatmap beatmap) - { - base.ApplyBeatmap(beatmap); - - hpDrainRate = beatmap.BeatmapInfo.BaseDifficulty.DrainRate; - } - - protected override double HealthAdjustmentFactorFor(JudgementResult result) - { - switch (result.Type) - { - case HitResult.Great: - return 10.2 - hpDrainRate; - - case HitResult.Good: - return 8 - hpDrainRate; - - case HitResult.Meh: - return 4 - hpDrainRate; - - // case HitResult.SliderTick: - // return Math.Max(7 - hpDrainRate, 0) * 0.01; - - case HitResult.Miss: - return hpDrainRate; - - default: - return 0; - } - } - protected override JudgementResult CreateResult(HitObject hitObject, Judgement judgement) => new OsuJudgementResult(hitObject, judgement); public override HitWindows CreateHitWindows() => new OsuHitWindows(); diff --git a/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs b/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs new file mode 100644 index 0000000000..c8aa32a678 --- /dev/null +++ b/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs @@ -0,0 +1,58 @@ +// 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.Game.Beatmaps; +using osu.Game.Rulesets.Judgements; +using osu.Game.Rulesets.Scoring; +using osu.Game.Rulesets.Taiko.Objects; + +namespace osu.Game.Rulesets.Taiko.Scoring +{ + public class TaikoHealthProcessor : HealthProcessor + { + /// + /// A value used for calculating . + /// + private const double object_count_factor = 3; + + /// + /// Taiko fails at the end of the map if the player has not half-filled their HP bar. + /// + protected override bool DefaultFailCondition => JudgedHits == MaxHits && Health.Value <= 0.5; + + /// + /// HP multiplier for a successful . + /// + private double hpMultiplier; + + /// + /// HP multiplier for a . + /// + private double hpMissMultiplier; + + public TaikoHealthProcessor(IBeatmap beatmap) + : base(beatmap) + { + } + + protected override void ApplyBeatmap(IBeatmap beatmap) + { + base.ApplyBeatmap(beatmap); + + hpMultiplier = 1 / (object_count_factor * beatmap.HitObjects.OfType().Count() * BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.5, 0.75, 0.98)); + + hpMissMultiplier = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.0018, 0.0075, 0.0120); + } + + protected override double HealthAdjustmentFactorFor(JudgementResult result) + => result.Type == HitResult.Miss ? hpMissMultiplier : hpMultiplier; + + protected override void Reset(bool storeResults) + { + base.Reset(storeResults); + + Health.Value = 0; + } + } +} diff --git a/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs b/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs index ae593d2e3a..10011d2669 100644 --- a/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs +++ b/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs @@ -1,60 +1,18 @@ // 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.Game.Beatmaps; -using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Scoring; -using osu.Game.Rulesets.Taiko.Objects; namespace osu.Game.Rulesets.Taiko.Scoring { internal class TaikoScoreProcessor : ScoreProcessor { - /// - /// A value used for calculating . - /// - private const double object_count_factor = 3; - - /// - /// Taiko fails at the end of the map if the player has not half-filled their HP bar. - /// - protected override bool DefaultFailCondition => JudgedHits == MaxHits && Health.Value <= 0.5; - - /// - /// HP multiplier for a successful . - /// - private double hpMultiplier; - - /// - /// HP multiplier for a . - /// - private double hpMissMultiplier; - public TaikoScoreProcessor(IBeatmap beatmap) : base(beatmap) { } - protected override void ApplyBeatmap(IBeatmap beatmap) - { - base.ApplyBeatmap(beatmap); - - hpMultiplier = 1 / (object_count_factor * beatmap.HitObjects.OfType().Count() * BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.5, 0.75, 0.98)); - - hpMissMultiplier = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.0018, 0.0075, 0.0120); - } - - protected override double HealthAdjustmentFactorFor(JudgementResult result) - => result.Type == HitResult.Miss ? hpMissMultiplier : hpMultiplier; - - protected override void Reset(bool storeResults) - { - base.Reset(storeResults); - - Health.Value = 0; - } - public override HitWindows CreateHitWindows() => new TaikoHitWindows(); } } diff --git a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs index ca7ab30867..0644f7fea6 100644 --- a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs +++ b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs @@ -30,6 +30,8 @@ namespace osu.Game.Rulesets.Taiko public override ScoreProcessor CreateScoreProcessor(IBeatmap beatmap) => new TaikoScoreProcessor(beatmap); + public override HealthProcessor CreateHealthProcessor(IBeatmap beatmap) => new TaikoHealthProcessor(beatmap); + public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new TaikoBeatmapConverter(beatmap); public const string SHORT_NAME = "taiko"; diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneFailAnimation.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneFailAnimation.cs index 992c47f856..81050b1637 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneFailAnimation.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneFailAnimation.cs @@ -43,7 +43,7 @@ namespace osu.Game.Tests.Visual.Gameplay protected override void LoadComplete() { base.LoadComplete(); - ScoreProcessor.FailConditions += (_, __) => true; + HealthProcessor.FailConditions += (_, __) => true; } } } diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneFailJudgement.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneFailJudgement.cs index 1580aac8c5..a0c25521a6 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneFailJudgement.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneFailJudgement.cs @@ -37,7 +37,7 @@ namespace osu.Game.Tests.Visual.Gameplay protected override void LoadComplete() { base.LoadComplete(); - ScoreProcessor.FailConditions += (_, __) => true; + HealthProcessor.FailConditions += (_, __) => true; } } } diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs index 39c42980ab..ee58219cd3 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs @@ -72,7 +72,7 @@ namespace osu.Game.Tests.Visual.Gameplay { AddStep("create overlay", () => { - Child = hudOverlay = new HUDOverlay(null, null, Array.Empty()); + Child = hudOverlay = new HUDOverlay(null, null, null, Array.Empty()); action?.Invoke(hudOverlay); }); diff --git a/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs b/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs index e04315894e..1a83e35e4f 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs @@ -52,7 +52,7 @@ namespace osu.Game.Tests.Visual.Gameplay public void TestResumeWithResumeOverlay() { AddStep("move cursor to center", () => InputManager.MoveMouseTo(Player.ScreenSpaceDrawQuad.Centre)); - AddUntilStep("wait for hitobjects", () => Player.ScoreProcessor.Health.Value < 1); + AddUntilStep("wait for hitobjects", () => Player.HealthProcessor.Health.Value < 1); pauseAndConfirm(); resume(); @@ -73,7 +73,7 @@ namespace osu.Game.Tests.Visual.Gameplay public void TestPauseWithResumeOverlay() { AddStep("move cursor to center", () => InputManager.MoveMouseTo(Player.ScreenSpaceDrawQuad.Centre)); - AddUntilStep("wait for hitobjects", () => Player.ScoreProcessor.Health.Value < 1); + AddUntilStep("wait for hitobjects", () => Player.HealthProcessor.Health.Value < 1); pauseAndConfirm(); @@ -92,7 +92,7 @@ namespace osu.Game.Tests.Visual.Gameplay { AddStep("move cursor to button", () => InputManager.MoveMouseTo(Player.HUDOverlay.HoldToQuit.Children.OfType().First().ScreenSpaceDrawQuad.Centre)); - AddUntilStep("wait for hitobjects", () => Player.ScoreProcessor.Health.Value < 1); + AddUntilStep("wait for hitobjects", () => Player.HealthProcessor.Health.Value < 1); pauseAndConfirm(); resumeAndConfirm(); @@ -285,7 +285,7 @@ namespace osu.Game.Tests.Visual.Gameplay protected class PausePlayer : TestPlayer { - public new ScoreProcessor ScoreProcessor => base.ScoreProcessor; + public new HealthProcessor HealthProcessor => base.HealthProcessor; public new HUDOverlay HUDOverlay => base.HUDOverlay; diff --git a/osu.Game/Rulesets/Mods/IApplicableToHealthProcessor.cs b/osu.Game/Rulesets/Mods/IApplicableToHealthProcessor.cs new file mode 100644 index 0000000000..a181955653 --- /dev/null +++ b/osu.Game/Rulesets/Mods/IApplicableToHealthProcessor.cs @@ -0,0 +1,15 @@ +// 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.Rulesets.Scoring; + +namespace osu.Game.Rulesets.Mods +{ + public interface IApplicableToHealthProcessor : IApplicableMod + { + /// + /// Provide a to a mod. Called once on initialisation of a play instance. + /// + void ApplyToHealthProcessor(HealthProcessor healthProcessor); + } +} diff --git a/osu.Game/Rulesets/Mods/ModEasy.cs b/osu.Game/Rulesets/Mods/ModEasy.cs index a55ebc51d6..494bebbf10 100644 --- a/osu.Game/Rulesets/Mods/ModEasy.cs +++ b/osu.Game/Rulesets/Mods/ModEasy.cs @@ -7,11 +7,10 @@ using osu.Framework.Graphics.Sprites; using osu.Game.Beatmaps; using osu.Game.Graphics; using osu.Game.Rulesets.Scoring; -using osu.Game.Scoring; namespace osu.Game.Rulesets.Mods { - public abstract class ModEasy : Mod, IApplicableToDifficulty, IApplicableFailOverride, IApplicableToScoreProcessor + public abstract class ModEasy : Mod, IApplicableToDifficulty, IApplicableFailOverride, IApplicableToHealthProcessor { public override string Name => "Easy"; public override string Acronym => "EZ"; @@ -49,11 +48,9 @@ namespace osu.Game.Rulesets.Mods public bool RestartOnFail => false; - public void ApplyToScoreProcessor(ScoreProcessor scoreProcessor) + public void ApplyToHealthProcessor(HealthProcessor healthProcessor) { - health = scoreProcessor.Health.GetBoundCopy(); + health = healthProcessor.Health.GetBoundCopy(); } - - public ScoreRank AdjustRank(ScoreRank rank, double accuracy) => rank; } } diff --git a/osu.Game/Rulesets/Mods/ModPerfect.cs b/osu.Game/Rulesets/Mods/ModPerfect.cs index 0994d1f7d3..afa263f1c9 100644 --- a/osu.Game/Rulesets/Mods/ModPerfect.cs +++ b/osu.Game/Rulesets/Mods/ModPerfect.cs @@ -15,6 +15,6 @@ namespace osu.Game.Rulesets.Mods public override IconUsage Icon => OsuIcon.ModPerfect; public override string Description => "SS or quit."; - protected override bool FailCondition(ScoreProcessor scoreProcessor, JudgementResult result) => scoreProcessor.Accuracy.Value != 1; + protected override bool FailCondition(HealthProcessor healthProcessor, JudgementResult result) => result.Type != result.Judgement.MaxResult; } } diff --git a/osu.Game/Rulesets/Mods/ModSuddenDeath.cs b/osu.Game/Rulesets/Mods/ModSuddenDeath.cs index c4c4ab1f04..a4d0631d8c 100644 --- a/osu.Game/Rulesets/Mods/ModSuddenDeath.cs +++ b/osu.Game/Rulesets/Mods/ModSuddenDeath.cs @@ -6,11 +6,10 @@ using osu.Framework.Graphics.Sprites; using osu.Game.Graphics; using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Scoring; -using osu.Game.Scoring; namespace osu.Game.Rulesets.Mods { - public abstract class ModSuddenDeath : Mod, IApplicableToScoreProcessor, IApplicableFailOverride + public abstract class ModSuddenDeath : Mod, IApplicableToHealthProcessor, IApplicableFailOverride { public override string Name => "Sudden Death"; public override string Acronym => "SD"; @@ -24,13 +23,11 @@ namespace osu.Game.Rulesets.Mods public bool AllowFail => true; public bool RestartOnFail => true; - public void ApplyToScoreProcessor(ScoreProcessor scoreProcessor) + public void ApplyToHealthProcessor(HealthProcessor healthProcessor) { - scoreProcessor.FailConditions += FailCondition; + healthProcessor.FailConditions += FailCondition; } - public ScoreRank AdjustRank(ScoreRank rank, double accuracy) => rank; - - protected virtual bool FailCondition(ScoreProcessor scoreProcessor, JudgementResult result) => scoreProcessor.Combo.Value == 0 && result.Judgement.AffectsCombo; + protected virtual bool FailCondition(HealthProcessor healthProcessor, JudgementResult result) => !result.IsHit && result.Judgement.AffectsCombo; } } diff --git a/osu.Game/Rulesets/Ruleset.cs b/osu.Game/Rulesets/Ruleset.cs index 7ad93379f0..a98412b434 100644 --- a/osu.Game/Rulesets/Ruleset.cs +++ b/osu.Game/Rulesets/Ruleset.cs @@ -69,6 +69,12 @@ namespace osu.Game.Rulesets /// The score processor. public virtual ScoreProcessor CreateScoreProcessor(IBeatmap beatmap) => new ScoreProcessor(beatmap); + /// + /// Creates a for a beatmap converted to this ruleset. + /// + /// The health processor. + public virtual HealthProcessor CreateHealthProcessor(IBeatmap beatmap) => new HealthProcessor(beatmap); + /// /// Creates a to convert a to one that is applicable for this . /// diff --git a/osu.Game/Rulesets/Scoring/HealthProcessor.cs b/osu.Game/Rulesets/Scoring/HealthProcessor.cs new file mode 100644 index 0000000000..8af8177083 --- /dev/null +++ b/osu.Game/Rulesets/Scoring/HealthProcessor.cs @@ -0,0 +1,102 @@ +// 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 osu.Framework.Bindables; +using osu.Framework.MathUtils; +using osu.Game.Beatmaps; +using osu.Game.Rulesets.Judgements; + +namespace osu.Game.Rulesets.Scoring +{ + public class HealthProcessor : JudgementProcessor + { + /// + /// Invoked when the is in a failed state. + /// Return true if the fail was permitted. + /// + public event Func Failed; + + /// + /// Additional conditions on top of that cause a failing state. + /// + public event Func FailConditions; + + /// + /// The current health. + /// + public readonly BindableDouble Health = new BindableDouble(1) { MinValue = 0, MaxValue = 1 }; + + /// + /// Whether this ScoreProcessor has already triggered the failed state. + /// + public bool HasFailed { get; private set; } + + public HealthProcessor(IBeatmap beatmap) + : base(beatmap) + { + } + + protected override void ApplyResultInternal(JudgementResult result) + { + result.HealthAtJudgement = Health.Value; + result.FailedAtJudgement = HasFailed; + + if (HasFailed) + return; + + Health.Value += HealthAdjustmentFactorFor(result) * result.Judgement.HealthIncreaseFor(result); + + if (!DefaultFailCondition && FailConditions?.Invoke(this, result) != true) + return; + + if (Failed?.Invoke() != false) + HasFailed = true; + } + + protected override void RevertResultInternal(JudgementResult result) + { + Health.Value = result.HealthAtJudgement; + + // Todo: Revert HasFailed state with proper player support + } + + /// + /// An adjustment factor which is multiplied into the health increase provided by a . + /// + /// The for which the adjustment should apply. + /// The adjustment factor. + protected virtual double HealthAdjustmentFactorFor(JudgementResult result) => 1; + + /// + /// The default conditions for failing. + /// + protected virtual bool DefaultFailCondition => Precision.AlmostBigger(Health.MinValue, Health.Value); + + protected override void Reset(bool storeResults) + { + base.Reset(storeResults); + + Health.Value = 1; + HasFailed = false; + } + + /// + /// Checks if the score is in a failed state and notifies subscribers. + /// + /// This can only ever notify subscribers once. + /// + /// + private void updateFailed(JudgementResult result) + { + if (HasFailed) + return; + + if (!DefaultFailCondition && FailConditions?.Invoke(this, result) != true) + return; + + if (Failed?.Invoke() != false) + HasFailed = true; + } + } +} diff --git a/osu.Game/Rulesets/Scoring/ScoreProcessor.cs b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs index f885a860ec..945c21e196 100644 --- a/osu.Game/Rulesets/Scoring/ScoreProcessor.cs +++ b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs @@ -7,7 +7,6 @@ using System.Diagnostics; using System.Linq; using osu.Framework.Bindables; using osu.Framework.Extensions; -using osu.Framework.MathUtils; using osu.Game.Beatmaps; using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Mods; @@ -22,13 +21,6 @@ namespace osu.Game.Rulesets.Scoring private const double combo_portion = 0.7; private const double max_score = 1000000; - /// - /// Invoked when the is in a failed state. - /// This may occur regardless of whether an event is invoked. - /// Return true if the fail was permitted. - /// - public event Func Failed; - /// /// Invoked when all s have been judged. /// @@ -39,11 +31,6 @@ namespace osu.Game.Rulesets.Scoring /// public event Action NewJudgement; - /// - /// Additional conditions on top of that cause a failing state. - /// - public event Func FailConditions; - /// /// The current total score. /// @@ -54,11 +41,6 @@ namespace osu.Game.Rulesets.Scoring /// public readonly BindableDouble Accuracy = new BindableDouble(1) { MinValue = 0, MaxValue = 1 }; - /// - /// The current health. - /// - public readonly BindableDouble Health = new BindableDouble(1) { MinValue = 0, MaxValue = 1 }; - /// /// The current combo. /// @@ -89,11 +71,6 @@ namespace osu.Game.Rulesets.Scoring /// public bool HasCompleted => JudgedHits == MaxHits; - /// - /// Whether this ScoreProcessor has already triggered the failed state. - /// - public bool HasFailed { get; private set; } - private double maxHighestCombo; private double maxBaseScore; @@ -145,10 +122,8 @@ namespace osu.Game.Rulesets.Scoring { result.ComboAtJudgement = Combo.Value; result.HighestComboAtJudgement = HighestCombo.Value; - result.HealthAtJudgement = Health.Value; - result.FailedAtJudgement = HasFailed; - if (HasFailed) + if (result.FailedAtJudgement) return; if (result.Judgement.AffectsCombo) @@ -182,10 +157,7 @@ namespace osu.Game.Rulesets.Scoring rollingMaxBaseScore += result.Judgement.MaxNumericResult; } - Health.Value += HealthAdjustmentFactorFor(result) * result.Judgement.HealthIncreaseFor(result); - updateScore(); - updateFailed(result); NewJudgement?.Invoke(result); @@ -197,9 +169,6 @@ namespace osu.Game.Rulesets.Scoring { Combo.Value = result.ComboAtJudgement; HighestCombo.Value = result.HighestComboAtJudgement; - Health.Value = result.HealthAtJudgement; - - // Todo: Revert HasFailed state with proper player support if (result.FailedAtJudgement) return; @@ -219,13 +188,6 @@ namespace osu.Game.Rulesets.Scoring } } - /// - /// An adjustment factor which is multiplied into the health increase provided by a . - /// - /// The for which the adjustment should apply. - /// The adjustment factor. - protected virtual double HealthAdjustmentFactorFor(JudgementResult result) => 1; - private void updateScore() { if (rollingMaxBaseScore != 0) @@ -248,24 +210,6 @@ namespace osu.Game.Rulesets.Scoring } } - /// - /// Checks if the score is in a failed state and notifies subscribers. - /// - /// This can only ever notify subscribers once. - /// - /// - private void updateFailed(JudgementResult result) - { - if (HasFailed) - return; - - if (!DefaultFailCondition && FailConditions?.Invoke(this, result) != true) - return; - - if (Failed?.Invoke() != false) - HasFailed = true; - } - private ScoreRank rankFrom(double acc) { if (acc == 1) @@ -308,12 +252,9 @@ namespace osu.Game.Rulesets.Scoring TotalScore.Value = 0; Accuracy.Value = 1; - Health.Value = 1; Combo.Value = 0; Rank.Value = ScoreRank.X; HighestCombo.Value = 0; - - HasFailed = false; } /// @@ -334,11 +275,6 @@ namespace osu.Game.Rulesets.Scoring score.Statistics[result] = GetStatistic(result); } - /// - /// The default conditions for failing. - /// - protected virtual bool DefaultFailCondition => Precision.AlmostBigger(Health.MinValue, Health.Value); - /// /// Create a for this processor. /// diff --git a/osu.Game/Screens/Play/HUDOverlay.cs b/osu.Game/Screens/Play/HUDOverlay.cs index e2f362780d..236bdc8442 100644 --- a/osu.Game/Screens/Play/HUDOverlay.cs +++ b/osu.Game/Screens/Play/HUDOverlay.cs @@ -41,6 +41,7 @@ namespace osu.Game.Screens.Play public Bindable ShowHealthbar = new Bindable(true); private readonly ScoreProcessor scoreProcessor; + private readonly HealthProcessor healthProcessor; private readonly DrawableRuleset drawableRuleset; private readonly IReadOnlyList mods; @@ -63,9 +64,10 @@ namespace osu.Game.Screens.Play private IEnumerable hideTargets => new Drawable[] { visibilityContainer, KeyCounter }; - public HUDOverlay(ScoreProcessor scoreProcessor, DrawableRuleset drawableRuleset, IReadOnlyList mods) + public HUDOverlay(ScoreProcessor scoreProcessor, HealthProcessor healthProcessor, DrawableRuleset drawableRuleset, IReadOnlyList mods) { this.scoreProcessor = scoreProcessor; + this.healthProcessor = healthProcessor; this.drawableRuleset = drawableRuleset; this.mods = mods; @@ -119,7 +121,10 @@ namespace osu.Game.Screens.Play private void load(OsuConfigManager config, NotificationOverlay notificationOverlay) { if (scoreProcessor != null) - BindProcessor(scoreProcessor); + BindScoreProcessor(scoreProcessor); + + if (healthProcessor != null) + BindHealthProcessor(healthProcessor); if (drawableRuleset != null) { @@ -288,15 +293,19 @@ namespace osu.Game.Screens.Play protected virtual PlayerSettingsOverlay CreatePlayerSettingsOverlay() => new PlayerSettingsOverlay(); - protected virtual void BindProcessor(ScoreProcessor processor) + protected virtual void BindScoreProcessor(ScoreProcessor processor) { ScoreCounter?.Current.BindTo(processor.TotalScore); AccuracyCounter?.Current.BindTo(processor.Accuracy); ComboCounter?.Current.BindTo(processor.Combo); - HealthDisplay?.Current.BindTo(processor.Health); if (HealthDisplay is StandardHealthDisplay shd) processor.NewJudgement += shd.Flash; } + + protected virtual void BindHealthProcessor(HealthProcessor processor) + { + HealthDisplay?.Current.BindTo(processor.Health); + } } } diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index 5dfdeb5ebc..b64604728c 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -72,6 +72,9 @@ namespace osu.Game.Screens.Play public BreakOverlay BreakOverlay; protected ScoreProcessor ScoreProcessor { get; private set; } + + protected HealthProcessor HealthProcessor { get; private set; } + protected DrawableRuleset DrawableRuleset { get; private set; } protected HUDOverlay HUDOverlay { get; private set; } @@ -131,6 +134,8 @@ namespace osu.Game.Screens.Play ScoreProcessor = ruleset.CreateScoreProcessor(playableBeatmap); ScoreProcessor.Mods.BindTo(Mods); + HealthProcessor = ruleset.CreateHealthProcessor(playableBeatmap); + if (!ScoreProcessor.Mode.Disabled) config.BindWith(OsuSetting.ScoreDisplayMode, ScoreProcessor.Mode); @@ -145,15 +150,28 @@ namespace osu.Game.Screens.Play // bind clock into components that require it DrawableRuleset.IsPaused.BindTo(GameplayClockContainer.IsPaused); - DrawableRuleset.OnNewResult += ScoreProcessor.ApplyResult; - DrawableRuleset.OnRevertResult += ScoreProcessor.RevertResult; + DrawableRuleset.OnNewResult += r => + { + HealthProcessor.ApplyResult(r); + ScoreProcessor.ApplyResult(r); + }; - // Bind ScoreProcessor to ourselves + DrawableRuleset.OnRevertResult += r => + { + HealthProcessor.RevertResult(r); + ScoreProcessor.RevertResult(r); + }; + + // Bind the judgement processors to ourselves ScoreProcessor.AllJudged += onCompletion; - ScoreProcessor.Failed += onFail; + HealthProcessor.Failed += onFail; foreach (var mod in Mods.Value.OfType()) mod.ApplyToScoreProcessor(ScoreProcessor); + + foreach (var mod in Mods.Value.OfType()) + mod.ApplyToHealthProcessor(HealthProcessor); + BreakOverlay.IsBreakTime.ValueChanged += _ => updatePauseOnFocusLostState(); } @@ -197,7 +215,7 @@ namespace osu.Game.Screens.Play // display the cursor above some HUD elements. DrawableRuleset.Cursor?.CreateProxy() ?? new Container(), DrawableRuleset.ResumeOverlay?.CreateProxy() ?? new Container(), - HUDOverlay = new HUDOverlay(ScoreProcessor, DrawableRuleset, Mods.Value) + HUDOverlay = new HUDOverlay(ScoreProcessor, HealthProcessor, DrawableRuleset, Mods.Value) { HoldToQuit = { @@ -342,7 +360,7 @@ namespace osu.Game.Screens.Play private void onCompletion() { // Only show the completion screen if the player hasn't failed - if (ScoreProcessor.HasFailed || completionProgressDelegate != null) + if (HealthProcessor.HasFailed || completionProgressDelegate != null) return; ValidForResume = false; From 04c3a6f8a4c58672cca7b98085548e00197554ce Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 19 Dec 2019 20:18:17 +0900 Subject: [PATCH 0468/1829] Move more properties to the base class --- .../Rulesets/Scoring/JudgementProcessor.cs | 20 ++++++++++++++++++ osu.Game/Rulesets/Scoring/ScoreProcessor.cs | 21 ------------------- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/osu.Game/Rulesets/Scoring/JudgementProcessor.cs b/osu.Game/Rulesets/Scoring/JudgementProcessor.cs index 854b926846..c7ac466eb0 100644 --- a/osu.Game/Rulesets/Scoring/JudgementProcessor.cs +++ b/osu.Game/Rulesets/Scoring/JudgementProcessor.cs @@ -11,6 +11,16 @@ namespace osu.Game.Rulesets.Scoring { public abstract class JudgementProcessor { + /// + /// Invoked when all s have been judged by this . + /// + public event Action AllJudged; + + /// + /// Invoked when a new judgement has occurred. This occurs after the judgement has been processed by this . + /// + public event Action NewJudgement; + /// /// The maximum number of hits that can be judged. /// @@ -21,6 +31,11 @@ namespace osu.Game.Rulesets.Scoring /// public int JudgedHits { get; private set; } + /// + /// Whether all s have been processed. + /// + public bool HasCompleted => JudgedHits == MaxHits; + protected JudgementProcessor(IBeatmap beatmap) { ApplyBeatmap(beatmap); @@ -47,6 +62,11 @@ namespace osu.Game.Rulesets.Scoring JudgedHits++; ApplyResultInternal(result); + + NewJudgement?.Invoke(result); + + if (HasCompleted) + AllJudged?.Invoke(); } /// diff --git a/osu.Game/Rulesets/Scoring/ScoreProcessor.cs b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs index 945c21e196..093ba16e57 100644 --- a/osu.Game/Rulesets/Scoring/ScoreProcessor.cs +++ b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs @@ -10,7 +10,6 @@ using osu.Framework.Extensions; using osu.Game.Beatmaps; using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Mods; -using osu.Game.Rulesets.Objects; using osu.Game.Scoring; namespace osu.Game.Rulesets.Scoring @@ -21,16 +20,6 @@ namespace osu.Game.Rulesets.Scoring private const double combo_portion = 0.7; private const double max_score = 1000000; - /// - /// Invoked when all s have been judged. - /// - public event Action AllJudged; - - /// - /// Invoked when a new judgement has occurred. This occurs after the judgement has been processed by the . - /// - public event Action NewJudgement; - /// /// The current total score. /// @@ -66,11 +55,6 @@ namespace osu.Game.Rulesets.Scoring /// public readonly Bindable Mode = new Bindable(); - /// - /// Whether all s have been processed. - /// - public bool HasCompleted => JudgedHits == MaxHits; - private double maxHighestCombo; private double maxBaseScore; @@ -158,11 +142,6 @@ namespace osu.Game.Rulesets.Scoring } updateScore(); - - NewJudgement?.Invoke(result); - - if (HasCompleted) - AllJudged?.Invoke(); } protected sealed override void RevertResultInternal(JudgementResult result) From 50fa6c5f77284fe61805f7bd04f473e5f93558d4 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 19 Dec 2019 20:18:23 +0900 Subject: [PATCH 0469/1829] Update score on reverts --- osu.Game/Rulesets/Scoring/ScoreProcessor.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game/Rulesets/Scoring/ScoreProcessor.cs b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs index 093ba16e57..acd394d955 100644 --- a/osu.Game/Rulesets/Scoring/ScoreProcessor.cs +++ b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs @@ -165,6 +165,8 @@ namespace osu.Game.Rulesets.Scoring baseScore -= result.Judgement.NumericResultFor(result); rollingMaxBaseScore -= result.Judgement.MaxNumericResult; } + + updateScore(); } private void updateScore() From a3154f2f7b3046db8930de15b55636adf6f510d8 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 19 Dec 2019 20:30:58 +0900 Subject: [PATCH 0470/1829] 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 abb3cc8244..dd11804b90 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@
- + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index e5f34b1c7e..757e0e11fa 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 c84e617285..0dba92b975 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From 3ac0e3ce51cd811cb2cc07afbfd329aae5e853a5 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 19 Dec 2019 23:03:31 +0900 Subject: [PATCH 0471/1829] Fix iOS project failing to compile --- osu.Game.Rulesets.Catch.Tests.iOS/Application.cs | 2 +- osu.Game.Rulesets.Mania.Tests.iOS/Application.cs | 2 +- osu.Game.Rulesets.Osu.Tests.iOS/Application.cs | 2 +- osu.Game.Rulesets.Taiko.Tests.iOS/Application.cs | 2 +- osu.Game.Tests.iOS/Application.cs | 2 +- osu.iOS/Application.cs | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/osu.Game.Rulesets.Catch.Tests.iOS/Application.cs b/osu.Game.Rulesets.Catch.Tests.iOS/Application.cs index beca477943..f7f07ef938 100644 --- a/osu.Game.Rulesets.Catch.Tests.iOS/Application.cs +++ b/osu.Game.Rulesets.Catch.Tests.iOS/Application.cs @@ -5,7 +5,7 @@ using UIKit; namespace osu.Game.Rulesets.Catch.Tests.iOS { - public class Application + public static class Application { public static void Main(string[] args) { diff --git a/osu.Game.Rulesets.Mania.Tests.iOS/Application.cs b/osu.Game.Rulesets.Mania.Tests.iOS/Application.cs index 0362402320..c381ea585d 100644 --- a/osu.Game.Rulesets.Mania.Tests.iOS/Application.cs +++ b/osu.Game.Rulesets.Mania.Tests.iOS/Application.cs @@ -5,7 +5,7 @@ using UIKit; namespace osu.Game.Rulesets.Mania.Tests.iOS { - public class Application + public static class Application { public static void Main(string[] args) { diff --git a/osu.Game.Rulesets.Osu.Tests.iOS/Application.cs b/osu.Game.Rulesets.Osu.Tests.iOS/Application.cs index 3718264a42..b36d0b5728 100644 --- a/osu.Game.Rulesets.Osu.Tests.iOS/Application.cs +++ b/osu.Game.Rulesets.Osu.Tests.iOS/Application.cs @@ -5,7 +5,7 @@ using UIKit; namespace osu.Game.Rulesets.Osu.Tests.iOS { - public class Application + public static class Application { public static void Main(string[] args) { diff --git a/osu.Game.Rulesets.Taiko.Tests.iOS/Application.cs b/osu.Game.Rulesets.Taiko.Tests.iOS/Application.cs index 330cb42901..73faf16d9f 100644 --- a/osu.Game.Rulesets.Taiko.Tests.iOS/Application.cs +++ b/osu.Game.Rulesets.Taiko.Tests.iOS/Application.cs @@ -5,7 +5,7 @@ using UIKit; namespace osu.Game.Rulesets.Taiko.Tests.iOS { - public class Application + public static class Application { public static void Main(string[] args) { diff --git a/osu.Game.Tests.iOS/Application.cs b/osu.Game.Tests.iOS/Application.cs index d96a3e27a4..9533b90131 100644 --- a/osu.Game.Tests.iOS/Application.cs +++ b/osu.Game.Tests.iOS/Application.cs @@ -5,7 +5,7 @@ using UIKit; namespace osu.Game.Tests.iOS { - public class Application + public static class Application { public static void Main(string[] args) { diff --git a/osu.iOS/Application.cs b/osu.iOS/Application.cs index 30e0e15ad1..740937e0e1 100644 --- a/osu.iOS/Application.cs +++ b/osu.iOS/Application.cs @@ -5,7 +5,7 @@ using UIKit; namespace osu.iOS { - public class Application + public static class Application { public static void Main(string[] args) { From 7d090d6cd90fd14810aa84d0c30d549f198c09a7 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Thu, 19 Dec 2019 17:52:58 +0300 Subject: [PATCH 0472/1829] Fix key overlay appearing regardless of the setting --- osu.Game/Screens/Play/KeyCounterDisplay.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/osu.Game/Screens/Play/KeyCounterDisplay.cs b/osu.Game/Screens/Play/KeyCounterDisplay.cs index 1edb95ca46..9c107f0293 100644 --- a/osu.Game/Screens/Play/KeyCounterDisplay.cs +++ b/osu.Game/Screens/Play/KeyCounterDisplay.cs @@ -43,6 +43,11 @@ namespace osu.Game.Screens.Play private void load(OsuConfigManager config) { config.BindWith(OsuSetting.KeyOverlay, configVisibility); + } + + protected override void LoadComplete() + { + base.LoadComplete(); Visible.BindValueChanged(_ => updateVisibility()); configVisibility.BindValueChanged(_ => updateVisibility(), true); From 656c58450305770ec5f76a7742cf3964e74c40aa Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 20 Dec 2019 13:50:47 +0900 Subject: [PATCH 0473/1829] Update RestoreDefaultValueButton when default value changes --- osu.Game/Overlays/Settings/SettingsItem.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game/Overlays/Settings/SettingsItem.cs b/osu.Game/Overlays/Settings/SettingsItem.cs index 9c390c34ec..31fcb7abd8 100644 --- a/osu.Game/Overlays/Settings/SettingsItem.cs +++ b/osu.Game/Overlays/Settings/SettingsItem.cs @@ -113,6 +113,7 @@ namespace osu.Game.Overlays.Settings bindable = value; bindable.ValueChanged += _ => UpdateState(); bindable.DisabledChanged += _ => UpdateState(); + bindable.DefaultChanged += _ => UpdateState(); UpdateState(); } } From de8154bc7f5af6a970715c35b347d7900915f34b Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 20 Dec 2019 13:54:13 +0900 Subject: [PATCH 0474/1829] Update readme with new testflight link source --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e2e854c755..753dee548b 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ If you are not interested in developing the game, you can still consume our [bin **Latest build:** -| [Windows (x64)](https://github.com/ppy/osu/releases/latest/download/install.exe) | [macOS 10.12+](https://github.com/ppy/osu/releases/latest/download/osu.app.zip) | [iOS(iOS 10+)](https://testflight.apple.com/join/2tLcjWlF) | [Android (5+)](https://github.com/ppy/osu/releases/latest/download/sh.ppy.osulazer.apk) +| [Windows (x64)](https://github.com/ppy/osu/releases/latest/download/install.exe) | [macOS 10.12+](https://github.com/ppy/osu/releases/latest/download/osu.app.zip) | [iOS(iOS 10+)](https://osu.ppy.sh/home/testflight) | [Android (5+)](https://github.com/ppy/osu/releases/latest/download/sh.ppy.osulazer.apk) | ------------- | ------------- | ------------- | ------------- | - **Linux** users are recommended to self-compile until we have official deployment in place. From 11214628adb34e9cec915706c38b9efae6833d64 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 20 Dec 2019 13:50:57 +0900 Subject: [PATCH 0475/1829] Add post-update notification for iOS users --- osu.Game/Updater/UpdateManager.cs | 5 ++++- osu.iOS/OsuGameIOS.cs | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/osu.Game/Updater/UpdateManager.cs b/osu.Game/Updater/UpdateManager.cs index e256cdbe45..48505a9891 100644 --- a/osu.Game/Updater/UpdateManager.cs +++ b/osu.Game/Updater/UpdateManager.cs @@ -11,7 +11,10 @@ using osu.Game.Overlays.Notifications; namespace osu.Game.Updater { - public abstract class UpdateManager : CompositeDrawable + /// + /// An update manager which only shows notifications after an update completes. + /// + public class UpdateManager : CompositeDrawable { [Resolved] private OsuConfigManager config { get; set; } diff --git a/osu.iOS/OsuGameIOS.cs b/osu.iOS/OsuGameIOS.cs index 6cf18df9a6..e5ff4aec95 100644 --- a/osu.iOS/OsuGameIOS.cs +++ b/osu.iOS/OsuGameIOS.cs @@ -4,11 +4,19 @@ using System; using Foundation; using osu.Game; +using osu.Game.Updater; namespace osu.iOS { public class OsuGameIOS : OsuGame { public override Version AssemblyVersion => new Version(NSBundle.MainBundle.InfoDictionary["CFBundleVersion"].ToString()); + + protected override void LoadComplete() + { + base.LoadComplete(); + + Add(new UpdateManager()); + } } } From 8ab26e8889ee5ca41d129e0aa9e0ba2db7c2fb8a Mon Sep 17 00:00:00 2001 From: Willy Tu Date: Thu, 19 Dec 2019 21:29:54 -0800 Subject: [PATCH 0476/1829] Update Tests with dependencies on LeaderboardScore. Added its dependency on DialogOverlay for the tests. Added test for deleting individual local score --- .../SongSelect/TestSceneBeatmapLeaderboard.cs | 21 +- .../TestSceneUserTopScoreContainer.cs | 22 +- .../TestSceneDeleteLocalScore.cs | 230 ++++++++++++++++++ .../Online/Leaderboards/LeaderboardScore.cs | 2 +- 4 files changed, 270 insertions(+), 5 deletions(-) create mode 100644 osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs diff --git a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapLeaderboard.cs b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapLeaderboard.cs index 57e297bcd5..551fffde54 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapLeaderboard.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapLeaderboard.cs @@ -3,10 +3,12 @@ using System; using System.Collections.Generic; +using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Game.Beatmaps; using osu.Game.Online.API.Requests.Responses; using osu.Game.Online.Leaderboards; +using osu.Game.Overlays; using osu.Game.Rulesets.Osu.Mods; using osu.Game.Scoring; using osu.Game.Screens.Select.Leaderboards; @@ -28,15 +30,22 @@ namespace osu.Game.Tests.Visual.SongSelect private readonly FailableLeaderboard leaderboard; + private DialogOverlay dialogOverlay; + public TestSceneBeatmapLeaderboard() { - Add(leaderboard = new FailableLeaderboard + Add(dialogOverlay = new DialogOverlay() + { + Depth = -1 + }); + + leaderboard = new FailableLeaderboard { Origin = Anchor.Centre, Anchor = Anchor.Centre, Size = new Vector2(550f, 450f), Scope = BeatmapLeaderboardScope.Global, - }); + }; AddStep(@"New Scores", newScores); AddStep(@"Show personal best", showPersonalBest); @@ -281,5 +290,13 @@ namespace osu.Game.Tests.Visual.SongSelect PlaceholderState = state; } } + + [BackgroundDependencyLoader] + private void load() + { + Dependencies.Cache(dialogOverlay); + + Add(leaderboard); + } } } diff --git a/osu.Game.Tests/Visual/SongSelect/TestSceneUserTopScoreContainer.cs b/osu.Game.Tests/Visual/SongSelect/TestSceneUserTopScoreContainer.cs index e34e1844ce..0545f13d44 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestSceneUserTopScoreContainer.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestSceneUserTopScoreContainer.cs @@ -1,11 +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 osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osuTK.Graphics; using osu.Game.Online.API.Requests.Responses; +using osu.Game.Overlays; using osu.Game.Scoring; using osu.Game.Rulesets.Osu.Mods; using osu.Game.Screens.Select.Leaderboards; @@ -15,11 +17,19 @@ namespace osu.Game.Tests.Visual.SongSelect { public class TestSceneUserTopScoreContainer : OsuTestScene { + private DialogOverlay dialogOverlay; + private Container container; + public TestSceneUserTopScoreContainer() { UserTopScoreContainer topScoreContainer; - Add(new Container + Add(dialogOverlay = new DialogOverlay() + { + Depth = -1 + }); + + container = new Container { Origin = Anchor.BottomCentre, Anchor = Anchor.Centre, @@ -38,7 +48,7 @@ namespace osu.Game.Tests.Visual.SongSelect Anchor = Anchor.BottomCentre, } } - }); + }; var scores = new[] { @@ -114,5 +124,13 @@ namespace osu.Game.Tests.Visual.SongSelect AddStep(@"Add score(rank 22333)", () => topScoreContainer.Score.Value = scores[2]); AddStep(@"Add null score", () => topScoreContainer.Score.Value = null); } + + [BackgroundDependencyLoader] + private void load() + { + Dependencies.Cache(dialogOverlay); + + Add(container); + } } } diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs new file mode 100644 index 0000000000..5a75cb3e08 --- /dev/null +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs @@ -0,0 +1,230 @@ +// 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 System.Diagnostics; +using System.Linq; +using osu.Framework.Graphics; +using osu.Framework.Allocation; +using osu.Framework.Graphics.Sprites; +using osu.Game.Beatmaps; +using osu.Game.Graphics.UserInterface; +using osu.Game.Online.API; +using osu.Game.Online.Leaderboards; +using osu.Game.Overlays; +using osu.Game.Overlays.Dialog; +using osu.Game.Scoring; +using osu.Game.Screens.Select.Leaderboards; +using osu.Game.Users; +using osuTK; +using osuTK.Input; + +namespace osu.Game.Tests.Visual.UserInterface +{ + public class TestSceneDeleteLocalScore : ManualInputManagerTestScene + { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(Placeholder), + typeof(MessagePlaceholder), + typeof(RetrievalFailurePlaceholder), + typeof(UserTopScoreContainer), + typeof(Leaderboard), + typeof(LeaderboardScore), + + }; + + private readonly FailableLeaderboard leaderboard; + + private DialogOverlay dialogOverlay; + + public TestSceneDeleteLocalScore() + { + Add(dialogOverlay = new DialogOverlay() + { + Depth = -1 + }); + + leaderboard = new FailableLeaderboard(dialogOverlay) + { + Origin = Anchor.Centre, + Anchor = Anchor.Centre, + Size = new Vector2(550f, 450f), + Scope = BeatmapLeaderboardScope.Local, + Beatmap = new BeatmapInfo + { + ID = 1, + Metadata = new BeatmapMetadata + { + ID = 1, + Title = "TestSong", + Artist = "TestArtist", + Author = new User + { + Username = "TestAuthor" + }, + }, + Version = "Insane" + }, + }; + + AddStep("Insert Locacl Scores", null); + + TestConfirmDeleteLocalScore(); + TestCancelDeleteLocalScore(); + } + + private void TestConfirmDeleteLocalScore() + { + AddStep("Move to leaderboard", () => InputManager.MoveMouseTo(leaderboard)); + AddStep("Show ContextMenu", () => InputManager.Click(MouseButton.Right)); + AddUntilStep("Wait for ContextMenu", () => typeof(OsuContextMenu) == InputManager.FocusedDrawable.GetType() && InputManager.FocusedDrawable.IsLoaded); + AddStep("Move to Delete Context Menu", () => InputManager.MoveMouseTo(InputManager.FocusedDrawable)); + AddStep("Show Delete Score Dialog", () => InputManager.Click(MouseButton.Left)); + AddUntilStep("Wait for DialogOverlay", () => dialogOverlay.CurrentDialog.IsLoaded); + AddStep("Move to confirm button", () => InputManager.MoveMouseTo(((TestLocalScoreDeleteDialog)dialogOverlay.CurrentDialog).confirmButton)); + AddStep("Confirm Action", () => InputManager.Click(MouseButton.Left)); + AddAssert("Check Score Count", () => leaderboard.ScoreCount() == 49); + } + + private void TestCancelDeleteLocalScore() + { + AddStep("Move to leaderboard", () => InputManager.MoveMouseTo(leaderboard)); + AddStep("Show ContextMenu", () => InputManager.Click(MouseButton.Right)); + AddUntilStep("Wait for ContextMenu", () => typeof(OsuContextMenu) == InputManager.FocusedDrawable.GetType() && InputManager.FocusedDrawable.IsLoaded); + AddStep("Move to Delete Context Menu", () => InputManager.MoveMouseTo(InputManager.FocusedDrawable)); + AddStep("Show Delete Score Dialog", () => InputManager.Click(MouseButton.Left)); + AddUntilStep("Wait for DialogOverlay", () => dialogOverlay.CurrentDialog.IsLoaded); + AddStep("Move to cancel button", () => InputManager.MoveMouseTo(((TestLocalScoreDeleteDialog)dialogOverlay.CurrentDialog).cancelButton)); + AddStep("Cancel Action", () => InputManager.Click(MouseButton.Left)); + AddAssert("Check Score Count", () => leaderboard.ScoreCount() == 49); + } + + [BackgroundDependencyLoader] + private void load() + { + Dependencies.Cache(dialogOverlay); + Add(leaderboard); + } + + private class FailableLeaderboard : BeatmapLeaderboard + { + private DialogOverlay dialogOverlay; + + private List scoreList; + + private Random rnd; + + private bool initialLoad; + + public void DeleteScore(ScoreInfo score) + { + scoreList.Remove(score); + RefreshScores(); + } + + public int ScoreCount() + { + return scoreList.Count; + } + + public FailableLeaderboard(DialogOverlay dialogOverlay) + : base() + { + this.dialogOverlay = dialogOverlay; + initialLoad = true; + } + + public void SetRetrievalState(PlaceholderState state) + { + PlaceholderState = state; + } + + protected override APIRequest FetchScores(Action> scoresCallback) + { + if (initialLoad) + { + rnd = new Random(); + + scoreList = Enumerable.Range(1, 50).Select(createScore).ToList(); + Scores = scoreList.OrderByDescending(s => s.TotalScore).ToArray(); + + initialLoad = false; + } + else + { + Scores = scoreList.OrderByDescending(s => s.TotalScore).ToArray(); + } + + return null; + } + + private ScoreInfo createScore(int id) => new ScoreInfo + { + ID = id, + Accuracy = rnd.NextDouble(), + PP = rnd.Next(1, 1000000), + TotalScore = rnd.Next(1, 1000000), + MaxCombo = rnd.Next(1, 1000), + Rank = ScoreRank.XH, + User = new User { Username = "TestUser" }, + }; + + protected override LeaderboardScore CreateDrawableScore(ScoreInfo model, int index) + { + model.Beatmap = Beatmap; + return new TestLeaderboardScore(model, index, dialogOverlay, this, IsOnlineScope); + } + } + + private class TestLeaderboardScore : LeaderboardScore + { + private DialogOverlay dialogOverlay; + + private FailableLeaderboard leaderboard; + + public TestLeaderboardScore(ScoreInfo score, int rank, DialogOverlay dialogOverlay, FailableLeaderboard leaderboard, bool allowHighlight = true) + : base(score, rank, allowHighlight) + { + this.dialogOverlay = dialogOverlay; + this.leaderboard = leaderboard; + } + + protected override void deleteLocalScore(ScoreInfo score) + { + dialogOverlay?.Push(new TestLocalScoreDeleteDialog(score, leaderboard)); + } + } + + private class TestLocalScoreDeleteDialog : PopupDialog + { + public PopupDialogOkButton confirmButton; + + public PopupDialogCancelButton cancelButton; + + public TestLocalScoreDeleteDialog(ScoreInfo score, FailableLeaderboard leaderboard) + { + Debug.Assert(score != null); + + string accuracy = string.Format(score.Accuracy % 1 == 0 ? @"{0:P0}" : @"{0:P2}", score.Accuracy); + + BodyText = $@"{score} {Environment.NewLine} Rank: {score.Rank} - Max Combo: {score.MaxCombo} - {accuracy}"; + Icon = FontAwesome.Solid.Eraser; + HeaderText = @"Deleting this local score. Are you sure?"; + Buttons = new PopupDialogButton[] + { + confirmButton = new PopupDialogOkButton + { + Text = @"Yes. Please.", + Action = () => leaderboard.DeleteScore(score) + }, + cancelButton = new PopupDialogCancelButton + { + Text = @"No, I'm still attached.", + }, + }; + } + } + } +} diff --git a/osu.Game/Online/Leaderboards/LeaderboardScore.cs b/osu.Game/Online/Leaderboards/LeaderboardScore.cs index c0d366f642..b706adb8ff 100644 --- a/osu.Game/Online/Leaderboards/LeaderboardScore.cs +++ b/osu.Game/Online/Leaderboards/LeaderboardScore.cs @@ -367,7 +367,7 @@ namespace osu.Game.Online.Leaderboards } } - private void deleteLocalScore(ScoreInfo score) + protected virtual void deleteLocalScore(ScoreInfo score) { dialogOverlay?.Push(new LocalScoreDeleteDialog(score)); } From e42894cfcf86f6a5a78036b5833f819eed7d7238 Mon Sep 17 00:00:00 2001 From: Willy Tu Date: Thu, 19 Dec 2019 21:32:54 -0800 Subject: [PATCH 0477/1829] Fixed error for CodeFactor --- osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs index 5a75cb3e08..fbfe3b835e 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs @@ -32,7 +32,6 @@ namespace osu.Game.Tests.Visual.UserInterface typeof(UserTopScoreContainer), typeof(Leaderboard), typeof(LeaderboardScore), - }; private readonly FailableLeaderboard leaderboard; From 6abbd33b512b34cca22eec8b64629b02aa4fbd93 Mon Sep 17 00:00:00 2001 From: Willy Tu Date: Thu, 19 Dec 2019 21:57:14 -0800 Subject: [PATCH 0478/1829] Fixed CI issues --- .../SongSelect/TestSceneBeatmapLeaderboard.cs | 4 +-- .../TestSceneUserTopScoreContainer.cs | 6 ++--- .../TestSceneDeleteLocalScore.cs | 25 +++++++++---------- .../Online/Leaderboards/LeaderboardScore.cs | 4 +-- 4 files changed, 19 insertions(+), 20 deletions(-) diff --git a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapLeaderboard.cs b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapLeaderboard.cs index 551fffde54..386fadc0d3 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapLeaderboard.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapLeaderboard.cs @@ -30,11 +30,11 @@ namespace osu.Game.Tests.Visual.SongSelect private readonly FailableLeaderboard leaderboard; - private DialogOverlay dialogOverlay; + private readonly DialogOverlay dialogOverlay; public TestSceneBeatmapLeaderboard() { - Add(dialogOverlay = new DialogOverlay() + Add(dialogOverlay = new DialogOverlay { Depth = -1 }); diff --git a/osu.Game.Tests/Visual/SongSelect/TestSceneUserTopScoreContainer.cs b/osu.Game.Tests/Visual/SongSelect/TestSceneUserTopScoreContainer.cs index 0545f13d44..c69626321d 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestSceneUserTopScoreContainer.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestSceneUserTopScoreContainer.cs @@ -17,14 +17,14 @@ namespace osu.Game.Tests.Visual.SongSelect { public class TestSceneUserTopScoreContainer : OsuTestScene { - private DialogOverlay dialogOverlay; - private Container container; + private readonly DialogOverlay dialogOverlay; + private readonly Container container; public TestSceneUserTopScoreContainer() { UserTopScoreContainer topScoreContainer; - Add(dialogOverlay = new DialogOverlay() + Add(dialogOverlay = new DialogOverlay { Depth = -1 }); diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs index fbfe3b835e..e804891444 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs @@ -36,11 +36,11 @@ namespace osu.Game.Tests.Visual.UserInterface private readonly FailableLeaderboard leaderboard; - private DialogOverlay dialogOverlay; + private readonly DialogOverlay dialogOverlay; public TestSceneDeleteLocalScore() { - Add(dialogOverlay = new DialogOverlay() + Add(dialogOverlay = new DialogOverlay { Depth = -1 }); @@ -70,11 +70,11 @@ namespace osu.Game.Tests.Visual.UserInterface AddStep("Insert Locacl Scores", null); - TestConfirmDeleteLocalScore(); - TestCancelDeleteLocalScore(); + testConfirmDeleteLocalScore(); + testCancelDeleteLocalScore(); } - private void TestConfirmDeleteLocalScore() + private void testConfirmDeleteLocalScore() { AddStep("Move to leaderboard", () => InputManager.MoveMouseTo(leaderboard)); AddStep("Show ContextMenu", () => InputManager.Click(MouseButton.Right)); @@ -87,7 +87,7 @@ namespace osu.Game.Tests.Visual.UserInterface AddAssert("Check Score Count", () => leaderboard.ScoreCount() == 49); } - private void TestCancelDeleteLocalScore() + private void testCancelDeleteLocalScore() { AddStep("Move to leaderboard", () => InputManager.MoveMouseTo(leaderboard)); AddStep("Show ContextMenu", () => InputManager.Click(MouseButton.Right)); @@ -109,7 +109,7 @@ namespace osu.Game.Tests.Visual.UserInterface private class FailableLeaderboard : BeatmapLeaderboard { - private DialogOverlay dialogOverlay; + private readonly DialogOverlay dialogOverlay; private List scoreList; @@ -129,7 +129,6 @@ namespace osu.Game.Tests.Visual.UserInterface } public FailableLeaderboard(DialogOverlay dialogOverlay) - : base() { this.dialogOverlay = dialogOverlay; initialLoad = true; @@ -179,9 +178,9 @@ namespace osu.Game.Tests.Visual.UserInterface private class TestLeaderboardScore : LeaderboardScore { - private DialogOverlay dialogOverlay; + private readonly DialogOverlay dialogOverlay; - private FailableLeaderboard leaderboard; + private readonly FailableLeaderboard leaderboard; public TestLeaderboardScore(ScoreInfo score, int rank, DialogOverlay dialogOverlay, FailableLeaderboard leaderboard, bool allowHighlight = true) : base(score, rank, allowHighlight) @@ -190,7 +189,7 @@ namespace osu.Game.Tests.Visual.UserInterface this.leaderboard = leaderboard; } - protected override void deleteLocalScore(ScoreInfo score) + protected override void DeleteLocalScore(ScoreInfo score) { dialogOverlay?.Push(new TestLocalScoreDeleteDialog(score, leaderboard)); } @@ -198,9 +197,9 @@ namespace osu.Game.Tests.Visual.UserInterface private class TestLocalScoreDeleteDialog : PopupDialog { - public PopupDialogOkButton confirmButton; + public readonly PopupDialogOkButton confirmButton; - public PopupDialogCancelButton cancelButton; + public readonly PopupDialogCancelButton cancelButton; public TestLocalScoreDeleteDialog(ScoreInfo score, FailableLeaderboard leaderboard) { diff --git a/osu.Game/Online/Leaderboards/LeaderboardScore.cs b/osu.Game/Online/Leaderboards/LeaderboardScore.cs index b706adb8ff..b49a8bf483 100644 --- a/osu.Game/Online/Leaderboards/LeaderboardScore.cs +++ b/osu.Game/Online/Leaderboards/LeaderboardScore.cs @@ -367,7 +367,7 @@ namespace osu.Game.Online.Leaderboards } } - protected virtual void deleteLocalScore(ScoreInfo score) + protected virtual void DeleteLocalScore(ScoreInfo score) { dialogOverlay?.Push(new LocalScoreDeleteDialog(score)); } @@ -379,7 +379,7 @@ namespace osu.Game.Online.Leaderboards List items = new List(); if (score.ID != 0) - items.Add(new OsuMenuItem("Delete", MenuItemType.Destructive, () => deleteLocalScore(score))); + items.Add(new OsuMenuItem("Delete", MenuItemType.Destructive, () => DeleteLocalScore(score))); return items.ToArray(); } From 6672cf60590f101acb7d7c7871597d2a9b039df4 Mon Sep 17 00:00:00 2001 From: Willy Tu Date: Thu, 19 Dec 2019 22:22:46 -0800 Subject: [PATCH 0479/1829] Update variable name --- .../Visual/UserInterface/TestSceneDeleteLocalScore.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs index e804891444..635ad904e3 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs @@ -82,7 +82,7 @@ namespace osu.Game.Tests.Visual.UserInterface AddStep("Move to Delete Context Menu", () => InputManager.MoveMouseTo(InputManager.FocusedDrawable)); AddStep("Show Delete Score Dialog", () => InputManager.Click(MouseButton.Left)); AddUntilStep("Wait for DialogOverlay", () => dialogOverlay.CurrentDialog.IsLoaded); - AddStep("Move to confirm button", () => InputManager.MoveMouseTo(((TestLocalScoreDeleteDialog)dialogOverlay.CurrentDialog).confirmButton)); + AddStep("Move to confirm button", () => InputManager.MoveMouseTo(((TestLocalScoreDeleteDialog)dialogOverlay.CurrentDialog).ConfirmButton)); AddStep("Confirm Action", () => InputManager.Click(MouseButton.Left)); AddAssert("Check Score Count", () => leaderboard.ScoreCount() == 49); } @@ -95,7 +95,7 @@ namespace osu.Game.Tests.Visual.UserInterface AddStep("Move to Delete Context Menu", () => InputManager.MoveMouseTo(InputManager.FocusedDrawable)); AddStep("Show Delete Score Dialog", () => InputManager.Click(MouseButton.Left)); AddUntilStep("Wait for DialogOverlay", () => dialogOverlay.CurrentDialog.IsLoaded); - AddStep("Move to cancel button", () => InputManager.MoveMouseTo(((TestLocalScoreDeleteDialog)dialogOverlay.CurrentDialog).cancelButton)); + AddStep("Move to cancel button", () => InputManager.MoveMouseTo(((TestLocalScoreDeleteDialog)dialogOverlay.CurrentDialog).CancelButton)); AddStep("Cancel Action", () => InputManager.Click(MouseButton.Left)); AddAssert("Check Score Count", () => leaderboard.ScoreCount() == 49); } @@ -197,9 +197,9 @@ namespace osu.Game.Tests.Visual.UserInterface private class TestLocalScoreDeleteDialog : PopupDialog { - public readonly PopupDialogOkButton confirmButton; + public readonly PopupDialogOkButton ConfirmButton; - public readonly PopupDialogCancelButton cancelButton; + public readonly PopupDialogCancelButton CancelButton; public TestLocalScoreDeleteDialog(ScoreInfo score, FailableLeaderboard leaderboard) { From afc11aa547b8401cf0b22f5478e186cabdc61762 Mon Sep 17 00:00:00 2001 From: Willy Tu Date: Thu, 19 Dec 2019 22:37:09 -0800 Subject: [PATCH 0480/1829] Fixed issues caused by renaming variables --- .../Visual/UserInterface/TestSceneDeleteLocalScore.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs index 635ad904e3..da91051175 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs @@ -212,12 +212,12 @@ namespace osu.Game.Tests.Visual.UserInterface HeaderText = @"Deleting this local score. Are you sure?"; Buttons = new PopupDialogButton[] { - confirmButton = new PopupDialogOkButton + ConfirmButton = new PopupDialogOkButton { Text = @"Yes. Please.", Action = () => leaderboard.DeleteScore(score) }, - cancelButton = new PopupDialogCancelButton + CancelButton = new PopupDialogCancelButton { Text = @"No, I'm still attached.", }, From 1802e0ff111559f07dd28eba251498d3e2876b1b Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 20 Dec 2019 16:04:05 +0900 Subject: [PATCH 0481/1829] Fix storyboard incorrectly re-ordering elements --- osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs index 67c4105e6d..b1b27278fe 100644 --- a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs @@ -5,7 +5,6 @@ using System; using System.Collections.Generic; using System.Globalization; using System.IO; -using System.Linq; using osuTK; using osuTK.Graphics; using osu.Framework.Extensions; @@ -42,10 +41,6 @@ namespace osu.Game.Beatmaps.Formats { this.storyboard = storyboard; base.ParseStreamInto(stream, storyboard); - - // OrderBy is used to guarantee that the parsing order of elements with equal start times is maintained (stably-sorted) - foreach (StoryboardLayer layer in storyboard.Layers) - layer.Elements = layer.Elements.OrderBy(h => h.StartTime).ToList(); } protected override void ParseLine(Storyboard storyboard, Section section, string line) From 705cdde148db14e740e51d02662a0152800b5666 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 20 Dec 2019 16:42:45 +0900 Subject: [PATCH 0482/1829] Fix incorrect test --- osu.Game.Tests/Beatmaps/Formats/LegacyStoryboardDecoderTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Tests/Beatmaps/Formats/LegacyStoryboardDecoderTest.cs b/osu.Game.Tests/Beatmaps/Formats/LegacyStoryboardDecoderTest.cs index 66d53d7e7b..96ff6b81e3 100644 --- a/osu.Game.Tests/Beatmaps/Formats/LegacyStoryboardDecoderTest.cs +++ b/osu.Game.Tests/Beatmaps/Formats/LegacyStoryboardDecoderTest.cs @@ -71,7 +71,7 @@ namespace osu.Game.Tests.Beatmaps.Formats Assert.AreEqual(new Vector2(320, 240), sprite.InitialPosition); Assert.IsTrue(sprite.IsDrawable); Assert.AreEqual(Anchor.Centre, sprite.Origin); - Assert.AreEqual("SB/black.jpg", sprite.Path); + Assert.AreEqual("SB/lyric/ja-21.png", sprite.Path); var animation = background.Elements.OfType().First(); Assert.NotNull(animation); From 822903d5db8476bcc7c38629b03c21ea8ea0bd30 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 20 Dec 2019 18:00:04 +0900 Subject: [PATCH 0483/1829] Update song select statistics when mod changes settings --- osu.Game/Overlays/Settings/ISettingsItem.cs | 13 +++++++ osu.Game/Overlays/Settings/SettingsItem.cs | 16 +++++---- .../Screens/Select/Details/AdvancedStats.cs | 36 ++++++++++++++++++- 3 files changed, 57 insertions(+), 8 deletions(-) create mode 100644 osu.Game/Overlays/Settings/ISettingsItem.cs diff --git a/osu.Game/Overlays/Settings/ISettingsItem.cs b/osu.Game/Overlays/Settings/ISettingsItem.cs new file mode 100644 index 0000000000..e7afa48502 --- /dev/null +++ b/osu.Game/Overlays/Settings/ISettingsItem.cs @@ -0,0 +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 osu.Framework.Graphics; + +namespace osu.Game.Overlays.Settings +{ + public interface ISettingsItem : IDrawable, IDisposable + { + event Action SettingChanged; + } +} diff --git a/osu.Game/Overlays/Settings/SettingsItem.cs b/osu.Game/Overlays/Settings/SettingsItem.cs index 31fcb7abd8..35f28ab1b2 100644 --- a/osu.Game/Overlays/Settings/SettingsItem.cs +++ b/osu.Game/Overlays/Settings/SettingsItem.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.Collections.Generic; using osu.Framework.Allocation; using osu.Framework.Bindables; @@ -20,7 +21,7 @@ using osuTK; namespace osu.Game.Overlays.Settings { - public abstract class SettingsItem : Container, IFilterable + public abstract class SettingsItem : Container, IFilterable, ISettingsItem { protected abstract Drawable CreateControl(); @@ -34,8 +35,6 @@ namespace osu.Game.Overlays.Settings private SpriteText text; - private readonly RestoreDefaultValueButton restoreDefaultButton; - public bool ShowsDefaultIndicator = true; public virtual string LabelText @@ -70,8 +69,12 @@ namespace osu.Game.Overlays.Settings public bool FilteringActive { get; set; } + public event Action SettingChanged; + protected SettingsItem() { + RestoreDefaultValueButton restoreDefaultButton; + RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; Padding = new MarginPadding { Right = SettingsPanel.CONTENT_MARGINS }; @@ -87,13 +90,12 @@ namespace osu.Game.Overlays.Settings Child = Control = CreateControl() }, }; - } - [BackgroundDependencyLoader] - private void load() - { + // all bindable logic is in constructor intentionally to support "CreateSettingsControls" being used in a context it is + // never loaded, but requires bindable storage. if (controlWithCurrent != null) { + controlWithCurrent.Current.ValueChanged += _ => SettingChanged?.Invoke(); controlWithCurrent.Current.DisabledChanged += disabled => { Colour = disabled ? Color4.Gray : Color4.White; }; if (ShowsDefaultIndicator) diff --git a/osu.Game/Screens/Select/Details/AdvancedStats.cs b/osu.Game/Screens/Select/Details/AdvancedStats.cs index 9c9c33274f..ad2b5885d7 100644 --- a/osu.Game/Screens/Select/Details/AdvancedStats.cs +++ b/osu.Game/Screens/Select/Details/AdvancedStats.cs @@ -16,6 +16,10 @@ using osu.Framework.Bindables; using System.Collections.Generic; using osu.Game.Rulesets.Mods; using System.Linq; +using System.Threading.Tasks; +using osu.Framework.Threading; +using osu.Game.Configuration; +using osu.Game.Overlays.Settings; namespace osu.Game.Screens.Select.Details { @@ -69,7 +73,37 @@ namespace osu.Game.Screens.Select.Details { base.LoadComplete(); - mods.BindValueChanged(_ => updateStatistics(), true); + mods.BindValueChanged(modsChanged, true); + } + + private readonly List references = new List(); + + private void modsChanged(ValueChangedEvent> mods) + { + // TODO: find a more permanent solution for this if/when it is needed in other components. + // this is generating drawables for the only purpose of storing bindable references. + foreach (var r in references) + r.Dispose(); + + references.Clear(); + + ScheduledDelegate debounce = null; + + foreach (var mod in mods.NewValue.OfType()) + { + foreach (var setting in mod.CreateSettingsControls().OfType()) + { + setting.SettingChanged += () => + { + debounce?.Cancel(); + debounce = Scheduler.AddDelayed(updateStatistics, 100); + }; + + references.Add(setting); + } + } + + updateStatistics(); } private void updateStatistics() From 351e826120093ea0fb383f37237b361d4debd741 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Mon, 16 Dec 2019 15:28:18 +0800 Subject: [PATCH 0484/1829] Upgrade project targets to netcoreapp3.1 --- .../CatchRuleset__Tests_.xml | 4 +-- .../ManiaRuleset__Tests_.xml | 4 +-- .../runConfigurations/OsuRuleset__Tests_.xml | 4 +-- .../TaikoRuleset__Tests_.xml | 4 +-- .../.idea/runConfigurations/Tournament.xml | 4 +-- .../runConfigurations/Tournament__Tests_.xml | 4 +-- .../.idea/runConfigurations/osu_.xml | 4 +-- .../.idea/runConfigurations/osu___Tests_.xml | 4 +-- .vscode/launch.json | 32 +++++++++---------- .vscode/tasks.json | 2 +- README.md | 4 +-- osu.Desktop/osu.Desktop.csproj | 2 +- .../osu.Game.Rulesets.Catch.Tests.csproj | 2 +- .../osu.Game.Rulesets.Mania.Tests.csproj | 2 +- .../osu.Game.Rulesets.Osu.Tests.csproj | 2 +- .../osu.Game.Rulesets.Taiko.Tests.csproj | 2 +- osu.Game.Tests/osu.Game.Tests.csproj | 2 +- .../osu.Game.Tournament.Tests.csproj | 2 +- 18 files changed, 42 insertions(+), 42 deletions(-) diff --git a/.idea/.idea.osu.Desktop/.idea/runConfigurations/CatchRuleset__Tests_.xml b/.idea/.idea.osu.Desktop/.idea/runConfigurations/CatchRuleset__Tests_.xml index 5372b6f28a..a4154623b6 100644 --- a/.idea/.idea.osu.Desktop/.idea/runConfigurations/CatchRuleset__Tests_.xml +++ b/.idea/.idea.osu.Desktop/.idea/runConfigurations/CatchRuleset__Tests_.xml @@ -1,6 +1,6 @@ - WinExe - netcoreapp3.0 + netcoreapp3.1 diff --git a/osu.Game.Rulesets.Mania.Tests/osu.Game.Rulesets.Mania.Tests.csproj b/osu.Game.Rulesets.Mania.Tests/osu.Game.Rulesets.Mania.Tests.csproj index 8fc4dbfe72..dea6e6c0fb 100644 --- a/osu.Game.Rulesets.Mania.Tests/osu.Game.Rulesets.Mania.Tests.csproj +++ b/osu.Game.Rulesets.Mania.Tests/osu.Game.Rulesets.Mania.Tests.csproj @@ -9,7 +9,7 @@ WinExe - netcoreapp3.0 + netcoreapp3.1 diff --git a/osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj b/osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj index fddf176fd0..9d4e016eae 100644 --- a/osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj +++ b/osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj @@ -9,7 +9,7 @@ WinExe - netcoreapp3.0 + netcoreapp3.1 diff --git a/osu.Game.Rulesets.Taiko.Tests/osu.Game.Rulesets.Taiko.Tests.csproj b/osu.Game.Rulesets.Taiko.Tests/osu.Game.Rulesets.Taiko.Tests.csproj index b5bd384e05..d728d65bfd 100644 --- a/osu.Game.Rulesets.Taiko.Tests/osu.Game.Rulesets.Taiko.Tests.csproj +++ b/osu.Game.Rulesets.Taiko.Tests/osu.Game.Rulesets.Taiko.Tests.csproj @@ -9,7 +9,7 @@ WinExe - netcoreapp3.0 + netcoreapp3.1 diff --git a/osu.Game.Tests/osu.Game.Tests.csproj b/osu.Game.Tests/osu.Game.Tests.csproj index c5998c9cfc..6c799e5e90 100644 --- a/osu.Game.Tests/osu.Game.Tests.csproj +++ b/osu.Game.Tests/osu.Game.Tests.csproj @@ -10,7 +10,7 @@ WinExe - netcoreapp3.0 + netcoreapp3.1 diff --git a/osu.Game.Tournament.Tests/osu.Game.Tournament.Tests.csproj b/osu.Game.Tournament.Tests/osu.Game.Tournament.Tests.csproj index d58a724c27..7ecfd6ef70 100644 --- a/osu.Game.Tournament.Tests/osu.Game.Tournament.Tests.csproj +++ b/osu.Game.Tournament.Tests/osu.Game.Tournament.Tests.csproj @@ -11,7 +11,7 @@ WinExe - netcoreapp3.0 + netcoreapp3.1 From 0ebdf90dfa9d4ed99b6df992844fe16a85beaf33 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 20 Dec 2019 18:07:39 +0900 Subject: [PATCH 0485/1829] Move methods below ctor --- osu.Game.Tests/WaveformTestBeatmap.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game.Tests/WaveformTestBeatmap.cs b/osu.Game.Tests/WaveformTestBeatmap.cs index 59f322e24c..b7d7bb1ee1 100644 --- a/osu.Game.Tests/WaveformTestBeatmap.cs +++ b/osu.Game.Tests/WaveformTestBeatmap.cs @@ -22,10 +22,6 @@ namespace osu.Game.Tests { private readonly ITrackStore trackStore; - private Stream getStream() => TestResources.GetTestBeatmapStream(); - - private ZipArchiveReader getZipReader() => new ZipArchiveReader(getStream()); - public WaveformTestBeatmap(AudioManager audioManager) : base(new BeatmapInfo(), audioManager) { @@ -38,6 +34,10 @@ namespace osu.Game.Tests trackStore?.Dispose(); } + private Stream getStream() => TestResources.GetTestBeatmapStream(); + + private ZipArchiveReader getZipReader() => new ZipArchiveReader(getStream()); + protected override IBeatmap GetBeatmap() => createTestBeatmap(); protected override Texture GetBackground() => null; From a6bdf04f6b6372fc7e6fb4f62d7dcb27e761c6f0 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 20 Dec 2019 18:36:39 +0900 Subject: [PATCH 0486/1829] Remove unused using --- osu.Game/Screens/Select/Details/AdvancedStats.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Screens/Select/Details/AdvancedStats.cs b/osu.Game/Screens/Select/Details/AdvancedStats.cs index ad2b5885d7..a147527f6c 100644 --- a/osu.Game/Screens/Select/Details/AdvancedStats.cs +++ b/osu.Game/Screens/Select/Details/AdvancedStats.cs @@ -16,7 +16,6 @@ using osu.Framework.Bindables; using System.Collections.Generic; using osu.Game.Rulesets.Mods; using System.Linq; -using System.Threading.Tasks; using osu.Framework.Threading; using osu.Game.Configuration; using osu.Game.Overlays.Settings; From 492a91067191708b5e4d1896181249a4c0fcb3ef Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 20 Dec 2019 19:08:05 +0900 Subject: [PATCH 0487/1829] Update missed launch configurations --- osu.Game.Rulesets.Catch.Tests/.vscode/launch.json | 4 ++-- osu.Game.Rulesets.Mania.Tests/.vscode/launch.json | 4 ++-- osu.Game.Rulesets.Osu.Tests/.vscode/launch.json | 4 ++-- osu.Game.Rulesets.Taiko.Tests/.vscode/launch.json | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/osu.Game.Rulesets.Catch.Tests/.vscode/launch.json b/osu.Game.Rulesets.Catch.Tests/.vscode/launch.json index 4030d2d9e7..67d27c33eb 100644 --- a/osu.Game.Rulesets.Catch.Tests/.vscode/launch.json +++ b/osu.Game.Rulesets.Catch.Tests/.vscode/launch.json @@ -7,7 +7,7 @@ "request": "launch", "program": "dotnet", "args": [ - "${workspaceRoot}/bin/Debug/netcoreapp3.0/osu.Game.Rulesets.Catch.Tests.dll" + "${workspaceRoot}/bin/Debug/netcoreapp3.1/osu.Game.Rulesets.Catch.Tests.dll" ], "cwd": "${workspaceRoot}", "preLaunchTask": "Build (Debug)", @@ -20,7 +20,7 @@ "request": "launch", "program": "dotnet", "args": [ - "${workspaceRoot}/bin/Release/netcoreapp3.0/osu.Game.Rulesets.Catch.Tests.dll" + "${workspaceRoot}/bin/Release/netcoreapp3.1/osu.Game.Rulesets.Catch.Tests.dll" ], "cwd": "${workspaceRoot}", "preLaunchTask": "Build (Release)", diff --git a/osu.Game.Rulesets.Mania.Tests/.vscode/launch.json b/osu.Game.Rulesets.Mania.Tests/.vscode/launch.json index 779eb4f277..0811c2724c 100644 --- a/osu.Game.Rulesets.Mania.Tests/.vscode/launch.json +++ b/osu.Game.Rulesets.Mania.Tests/.vscode/launch.json @@ -7,7 +7,7 @@ "request": "launch", "program": "dotnet", "args": [ - "${workspaceRoot}/bin/Debug/netcoreapp3.0/osu.Game.Rulesets.Mania.Tests.dll" + "${workspaceRoot}/bin/Debug/netcoreapp3.1/osu.Game.Rulesets.Mania.Tests.dll" ], "cwd": "${workspaceRoot}", "preLaunchTask": "Build (Debug)", @@ -20,7 +20,7 @@ "request": "launch", "program": "dotnet", "args": [ - "${workspaceRoot}/bin/Release/netcoreapp3.0/osu.Game.Rulesets.Mania.Tests.dll" + "${workspaceRoot}/bin/Release/netcoreapp3.1/osu.Game.Rulesets.Mania.Tests.dll" ], "cwd": "${workspaceRoot}", "preLaunchTask": "Build (Release)", diff --git a/osu.Game.Rulesets.Osu.Tests/.vscode/launch.json b/osu.Game.Rulesets.Osu.Tests/.vscode/launch.json index 67338b7bbe..94568e3852 100644 --- a/osu.Game.Rulesets.Osu.Tests/.vscode/launch.json +++ b/osu.Game.Rulesets.Osu.Tests/.vscode/launch.json @@ -7,7 +7,7 @@ "request": "launch", "program": "dotnet", "args": [ - "${workspaceRoot}/bin/Debug/netcoreapp3.0/osu.Game.Rulesets.Osu.Tests.dll" + "${workspaceRoot}/bin/Debug/netcoreapp3.1/osu.Game.Rulesets.Osu.Tests.dll" ], "cwd": "${workspaceRoot}", "preLaunchTask": "Build (Debug)", @@ -20,7 +20,7 @@ "request": "launch", "program": "dotnet", "args": [ - "${workspaceRoot}/bin/Release/netcoreapp3.0/osu.Game.Rulesets.Osu.Tests.dll" + "${workspaceRoot}/bin/Release/netcoreapp3.1/osu.Game.Rulesets.Osu.Tests.dll" ], "cwd": "${workspaceRoot}", "preLaunchTask": "Build (Release)", diff --git a/osu.Game.Rulesets.Taiko.Tests/.vscode/launch.json b/osu.Game.Rulesets.Taiko.Tests/.vscode/launch.json index 7d929e6bbf..5b02ecfc91 100644 --- a/osu.Game.Rulesets.Taiko.Tests/.vscode/launch.json +++ b/osu.Game.Rulesets.Taiko.Tests/.vscode/launch.json @@ -7,7 +7,7 @@ "request": "launch", "program": "dotnet", "args": [ - "${workspaceRoot}/bin/Debug/netcoreapp3.0/osu.Game.Rulesets.Taiko.Tests.dll" + "${workspaceRoot}/bin/Debug/netcoreapp3.1/osu.Game.Rulesets.Taiko.Tests.dll" ], "cwd": "${workspaceRoot}", "preLaunchTask": "Build (Debug)", @@ -20,7 +20,7 @@ "request": "launch", "program": "dotnet", "args": [ - "${workspaceRoot}/bin/Release/netcoreapp3.0/osu.Game.Rulesets.Taiko.Tests.dll" + "${workspaceRoot}/bin/Release/netcoreapp3.1/osu.Game.Rulesets.Taiko.Tests.dll" ], "cwd": "${workspaceRoot}", "preLaunchTask": "Build (Release)", From ba2cff60ca15827c16836ff9f222452e15a01499 Mon Sep 17 00:00:00 2001 From: Willy Tu Date: Fri, 20 Dec 2019 02:13:49 -0800 Subject: [PATCH 0488/1829] Removed Automation Testing steps for delete local scores. Only manual testing now. --- .../TestSceneDeleteLocalScore.cs | 60 +++++-------------- 1 file changed, 16 insertions(+), 44 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs index da91051175..0441d8659e 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs @@ -9,7 +9,6 @@ using osu.Framework.Graphics; using osu.Framework.Allocation; using osu.Framework.Graphics.Sprites; using osu.Game.Beatmaps; -using osu.Game.Graphics.UserInterface; using osu.Game.Online.API; using osu.Game.Online.Leaderboards; using osu.Game.Overlays; @@ -18,7 +17,6 @@ using osu.Game.Scoring; using osu.Game.Screens.Select.Leaderboards; using osu.Game.Users; using osuTK; -using osuTK.Input; namespace osu.Game.Tests.Visual.UserInterface { @@ -45,7 +43,7 @@ namespace osu.Game.Tests.Visual.UserInterface Depth = -1 }); - leaderboard = new FailableLeaderboard(dialogOverlay) + leaderboard = new FailableLeaderboard { Origin = Anchor.Centre, Anchor = Anchor.Centre, @@ -68,36 +66,13 @@ namespace osu.Game.Tests.Visual.UserInterface }, }; - AddStep("Insert Locacl Scores", null); - - testConfirmDeleteLocalScore(); - testCancelDeleteLocalScore(); + AddStep("Insert Local Scores", () => reset()); } - private void testConfirmDeleteLocalScore() + private void reset() { - AddStep("Move to leaderboard", () => InputManager.MoveMouseTo(leaderboard)); - AddStep("Show ContextMenu", () => InputManager.Click(MouseButton.Right)); - AddUntilStep("Wait for ContextMenu", () => typeof(OsuContextMenu) == InputManager.FocusedDrawable.GetType() && InputManager.FocusedDrawable.IsLoaded); - AddStep("Move to Delete Context Menu", () => InputManager.MoveMouseTo(InputManager.FocusedDrawable)); - AddStep("Show Delete Score Dialog", () => InputManager.Click(MouseButton.Left)); - AddUntilStep("Wait for DialogOverlay", () => dialogOverlay.CurrentDialog.IsLoaded); - AddStep("Move to confirm button", () => InputManager.MoveMouseTo(((TestLocalScoreDeleteDialog)dialogOverlay.CurrentDialog).ConfirmButton)); - AddStep("Confirm Action", () => InputManager.Click(MouseButton.Left)); - AddAssert("Check Score Count", () => leaderboard.ScoreCount() == 49); - } - - private void testCancelDeleteLocalScore() - { - AddStep("Move to leaderboard", () => InputManager.MoveMouseTo(leaderboard)); - AddStep("Show ContextMenu", () => InputManager.Click(MouseButton.Right)); - AddUntilStep("Wait for ContextMenu", () => typeof(OsuContextMenu) == InputManager.FocusedDrawable.GetType() && InputManager.FocusedDrawable.IsLoaded); - AddStep("Move to Delete Context Menu", () => InputManager.MoveMouseTo(InputManager.FocusedDrawable)); - AddStep("Show Delete Score Dialog", () => InputManager.Click(MouseButton.Left)); - AddUntilStep("Wait for DialogOverlay", () => dialogOverlay.CurrentDialog.IsLoaded); - AddStep("Move to cancel button", () => InputManager.MoveMouseTo(((TestLocalScoreDeleteDialog)dialogOverlay.CurrentDialog).CancelButton)); - AddStep("Cancel Action", () => InputManager.Click(MouseButton.Left)); - AddAssert("Check Score Count", () => leaderboard.ScoreCount() == 49); + leaderboard.initialLoad = true; + leaderboard.RefreshScores(); } [BackgroundDependencyLoader] @@ -109,13 +84,11 @@ namespace osu.Game.Tests.Visual.UserInterface private class FailableLeaderboard : BeatmapLeaderboard { - private readonly DialogOverlay dialogOverlay; - private List scoreList; private Random rnd; - private bool initialLoad; + public bool initialLoad; public void DeleteScore(ScoreInfo score) { @@ -123,14 +96,8 @@ namespace osu.Game.Tests.Visual.UserInterface RefreshScores(); } - public int ScoreCount() + public FailableLeaderboard() { - return scoreList.Count; - } - - public FailableLeaderboard(DialogOverlay dialogOverlay) - { - this.dialogOverlay = dialogOverlay; initialLoad = true; } @@ -172,20 +139,19 @@ namespace osu.Game.Tests.Visual.UserInterface protected override LeaderboardScore CreateDrawableScore(ScoreInfo model, int index) { model.Beatmap = Beatmap; - return new TestLeaderboardScore(model, index, dialogOverlay, this, IsOnlineScope); + return new TestLeaderboardScore(model, index, this, IsOnlineScope); } } private class TestLeaderboardScore : LeaderboardScore { - private readonly DialogOverlay dialogOverlay; + private DialogOverlay dialogOverlay; private readonly FailableLeaderboard leaderboard; - public TestLeaderboardScore(ScoreInfo score, int rank, DialogOverlay dialogOverlay, FailableLeaderboard leaderboard, bool allowHighlight = true) + public TestLeaderboardScore(ScoreInfo score, int rank, FailableLeaderboard leaderboard, bool allowHighlight = true) : base(score, rank, allowHighlight) { - this.dialogOverlay = dialogOverlay; this.leaderboard = leaderboard; } @@ -193,6 +159,12 @@ namespace osu.Game.Tests.Visual.UserInterface { dialogOverlay?.Push(new TestLocalScoreDeleteDialog(score, leaderboard)); } + + [BackgroundDependencyLoader] + private void load(DialogOverlay dialogOverlay) + { + this.dialogOverlay = dialogOverlay; + } } private class TestLocalScoreDeleteDialog : PopupDialog From 08b477ed5248211d9f501258b33b906a8efa7c7b Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 20 Dec 2019 18:30:23 +0800 Subject: [PATCH 0489/1829] make ModDifficultyAdjust abstract --- osu.Game.Rulesets.Catch/CatchRuleset.cs | 2 +- .../Mods/CatchModDifficultyAdjust.cs | 52 ++++++++++++++ osu.Game.Rulesets.Mania/ManiaRuleset.cs | 2 +- .../Mods/ManiaModDifficultyAdjust.cs | 32 +++++++++ .../Mods/OsuModDifficultyAdjust.cs | 52 ++++++++++++++ osu.Game.Rulesets.Osu/OsuRuleset.cs | 2 +- .../Mods/TaikoModDifficultyAdjust.cs | 32 +++++++++ osu.Game.Rulesets.Taiko/TaikoRuleset.cs | 2 +- osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs | 67 ++++++------------- 9 files changed, 193 insertions(+), 50 deletions(-) create mode 100644 osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs create mode 100644 osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs create mode 100644 osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs create mode 100644 osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs diff --git a/osu.Game.Rulesets.Catch/CatchRuleset.cs b/osu.Game.Rulesets.Catch/CatchRuleset.cs index 8f946343a7..4228b86795 100644 --- a/osu.Game.Rulesets.Catch/CatchRuleset.cs +++ b/osu.Game.Rulesets.Catch/CatchRuleset.cs @@ -109,7 +109,7 @@ namespace osu.Game.Rulesets.Catch case ModType.Conversion: return new Mod[] { - new ModDifficultyAdjust(), + new CatchModDifficultyAdjust(), }; case ModType.Automation: diff --git a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs new file mode 100644 index 0000000000..127b6c1c0b --- /dev/null +++ b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs @@ -0,0 +1,52 @@ +// 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.Game.Configuration; +using osu.Game.Rulesets.Mods; + +namespace osu.Game.Rulesets.Catch.Mods +{ + public class CatchModDifficultyAdjust : ModDifficultyAdjust + { + [SettingSource("Drain Rate", "Override a beatmap's set HP.")] + public override BindableNumber DrainRate { get; } = new BindableFloat() + { + Precision = 0.1f, + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + }; + + [SettingSource("Fruit Size", "Override a beatmap's set CS.")] + public override BindableNumber CircleSize { get; } = new BindableFloat() + { + Precision = 0.1f, + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + }; + + [SettingSource("Approach Rate", "Override a beatmap's set AR.")] + public override BindableNumber ApproachRate { get; } = new BindableFloat() + { + Precision = 0.1f, + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + }; + + [SettingSource("Overall Difficulty", "Override a beatmap's set OD.")] + public override BindableNumber OverallDifficulty { get; } = new BindableFloat() + { + Precision = 0.1f, + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + }; + } +} diff --git a/osu.Game.Rulesets.Mania/ManiaRuleset.cs b/osu.Game.Rulesets.Mania/ManiaRuleset.cs index ea64dfaffa..9ab588c550 100644 --- a/osu.Game.Rulesets.Mania/ManiaRuleset.cs +++ b/osu.Game.Rulesets.Mania/ManiaRuleset.cs @@ -151,7 +151,7 @@ namespace osu.Game.Rulesets.Mania new ManiaModRandom(), new ManiaModDualStages(), new ManiaModMirror(), - new ModDifficultyAdjust(), + new ManiaModDifficultyAdjust(), }; case ModType.Automation: diff --git a/osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs b/osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs new file mode 100644 index 0000000000..fd1315523c --- /dev/null +++ b/osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.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 osu.Framework.Bindables; +using osu.Game.Configuration; +using osu.Game.Rulesets.Mods; + +namespace osu.Game.Rulesets.Mania.Mods +{ + public class ManiaModDifficultyAdjust : ModDifficultyAdjust + { + [SettingSource("Drain Rate", "Override a beatmap's set HP.")] + public override BindableNumber DrainRate { get; } = new BindableFloat() + { + Precision = 0.1f, + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + }; + + [SettingSource("Overall Difficulty", "Override a beatmap's set OD.")] + public override BindableNumber OverallDifficulty { get; } = new BindableFloat() + { + Precision = 0.1f, + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + }; + } +} diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs new file mode 100644 index 0000000000..3531e002b8 --- /dev/null +++ b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs @@ -0,0 +1,52 @@ +// 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.Game.Configuration; +using osu.Game.Rulesets.Mods; + +namespace osu.Game.Rulesets.Osu.Mods +{ + public class OsuModDifficultyAdjust : ModDifficultyAdjust + { + [SettingSource("Drain Rate", "Override a beatmap's set HP.")] + public override BindableNumber DrainRate { get; } = new BindableFloat() + { + Precision = 0.1f, + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + }; + + [SettingSource("Circle Size", "Override a beatmap's set CS.")] + public override BindableNumber CircleSize { get; } = new BindableFloat() + { + Precision = 0.1f, + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + }; + + [SettingSource("Approach Rate", "Override a beatmap's set AR.")] + public override BindableNumber ApproachRate { get; } = new BindableFloat() + { + Precision = 0.1f, + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + }; + + [SettingSource("Overall Difficulty", "Override a beatmap's set OD.")] + public override BindableNumber OverallDifficulty { get; } = new BindableFloat() + { + Precision = 0.1f, + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + }; + } +} \ No newline at end of file diff --git a/osu.Game.Rulesets.Osu/OsuRuleset.cs b/osu.Game.Rulesets.Osu/OsuRuleset.cs index d097235839..a42402151f 100644 --- a/osu.Game.Rulesets.Osu/OsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/OsuRuleset.cs @@ -130,7 +130,7 @@ namespace osu.Game.Rulesets.Osu return new Mod[] { new OsuModTarget(), - new ModDifficultyAdjust(), + new OsuModDifficultyAdjust(), }; case ModType.Automation: diff --git a/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs b/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs new file mode 100644 index 0000000000..b7007eedcd --- /dev/null +++ b/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.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 osu.Framework.Bindables; +using osu.Game.Configuration; +using osu.Game.Rulesets.Mods; + +namespace osu.Game.Rulesets.Taiko.Mods +{ + public class TaikoModDifficultyAdjust : ModDifficultyAdjust + { + [SettingSource("Drain Rate", "Override a beatmap's set HP.")] + public override BindableNumber DrainRate { get; } = new BindableFloat() + { + Precision = 0.1f, + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + }; + + [SettingSource("Overall Difficulty", "Override a beatmap's set OD.")] + public override BindableNumber OverallDifficulty { get; } = new BindableFloat() + { + Precision = 0.1f, + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + }; + } +} diff --git a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs index 29b74fc4e0..a055c29efe 100644 --- a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs +++ b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs @@ -108,7 +108,7 @@ namespace osu.Game.Rulesets.Taiko case ModType.Conversion: return new Mod[] { - new ModDifficultyAdjust(), + new TaikoModDifficultyAdjust(), }; case ModType.Automation: diff --git a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs index b23297345b..625749903a 100644 --- a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs @@ -5,11 +5,10 @@ using osu.Game.Beatmaps; using osu.Framework.Bindables; using osu.Framework.Graphics.Sprites; using System; -using osu.Game.Configuration; namespace osu.Game.Rulesets.Mods { - public class ModDifficultyAdjust : Mod, IApplicableToDifficulty + public abstract class ModDifficultyAdjust : Mod, IApplicableToDifficulty { public override string Name => @"Difficulty Adjust"; @@ -25,45 +24,13 @@ namespace osu.Game.Rulesets.Mods public override Type[] IncompatibleMods => new[] { typeof(ModEasy), typeof(ModHardRock) }; - [SettingSource("Drain Rate", "Override the beatmap's set HP")] - public BindableNumber DrainRate { get; } = new BindableFloat - { - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - Precision = 0.1F, - }; + public virtual BindableNumber DrainRate { get; } - [SettingSource("Circle Size", "Override the beatmap's set CS")] - public BindableNumber CircleSize { get; } = new BindableFloat - { - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - Precision = 0.1F, - }; + public virtual BindableNumber CircleSize { get; } - [SettingSource("Approach Rate", "Override the beatmap's set AR")] - public BindableNumber ApproachRate { get; } = new BindableFloat - { - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - Precision = 0.1F, - }; + public virtual BindableNumber ApproachRate { get; } - [SettingSource("Overall Difficulty", "Override the beatmap's set OD")] - public BindableNumber OverallDifficulty { get; } = new BindableFloat - { - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - Precision = 0.1F, - }; + public virtual BindableNumber OverallDifficulty { get; } private BeatmapDifficulty difficulty; @@ -72,17 +39,25 @@ namespace osu.Game.Rulesets.Mods if (this.difficulty == null || this.difficulty.ID != difficulty.ID) { this.difficulty = difficulty; - DrainRate.Value = DrainRate.Default = difficulty.DrainRate; - CircleSize.Value = CircleSize.Default = difficulty.CircleSize; - ApproachRate.Value = ApproachRate.Default = difficulty.ApproachRate; - OverallDifficulty.Value = OverallDifficulty.Default = difficulty.OverallDifficulty; + + if (DrainRate != null) + DrainRate.Value = DrainRate.Default = difficulty.DrainRate; + + if (CircleSize != null) + CircleSize.Value = CircleSize.Default = difficulty.CircleSize; + + if (ApproachRate != null) + ApproachRate.Value = ApproachRate.Default = difficulty.ApproachRate; + + if (OverallDifficulty != null) + OverallDifficulty.Value = OverallDifficulty.Default = difficulty.OverallDifficulty; } else { - difficulty.DrainRate = DrainRate.Value; - difficulty.CircleSize = CircleSize.Value; - difficulty.ApproachRate = ApproachRate.Value; - difficulty.OverallDifficulty = OverallDifficulty.Value; + difficulty.DrainRate = DrainRate?.Value ?? difficulty.DrainRate; + difficulty.CircleSize = CircleSize?.Value ?? difficulty.CircleSize; + difficulty.ApproachRate = ApproachRate?.Value ?? difficulty.ApproachRate; + difficulty.OverallDifficulty = OverallDifficulty?.Value ?? difficulty.OverallDifficulty; } } } From 1bd44529dd31302a62a55d424135c316233d5384 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 20 Dec 2019 18:31:16 +0800 Subject: [PATCH 0490/1829] add full-stop to mod description for consistency --- osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs index 625749903a..546533709e 100644 --- a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs @@ -12,7 +12,7 @@ namespace osu.Game.Rulesets.Mods { public override string Name => @"Difficulty Adjust"; - public override string Description => @"Override a beatmap's difficulty settings"; + public override string Description => @"Override a beatmap's difficulty settings."; public override string Acronym => "DA"; From 0eef21894561c17718fc641d94db16a193fabd03 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 20 Dec 2019 18:42:29 +0800 Subject: [PATCH 0491/1829] add missing new line --- osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs index 3531e002b8..4847ddc3c4 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs @@ -49,4 +49,4 @@ namespace osu.Game.Rulesets.Osu.Mods Value = 5, }; } -} \ No newline at end of file +} From df14f473c25f023b8b5cc25c0dca8a9042a89f05 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 20 Dec 2019 19:00:37 +0900 Subject: [PATCH 0492/1829] Split tests out --- .../SongSelect/TestSceneBeatmapDetailArea.cs | 156 ++++++++---------- 1 file changed, 66 insertions(+), 90 deletions(-) diff --git a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetailArea.cs b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetailArea.cs index 66144cbfe4..de4e77fe70 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetailArea.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetailArea.cs @@ -25,57 +25,43 @@ namespace osu.Game.Tests.Visual.SongSelect private ModDisplay modDisplay; + private BeatmapDetailArea detailsArea; + + [Resolved] + private RulesetStore rulesets { get; set; } + [BackgroundDependencyLoader] private void load(OsuGameBase game, RulesetStore rulesets) { - BeatmapDetailArea detailsArea; - Add(detailsArea = new BeatmapDetailArea - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Size = new Vector2(550f, 450f), - }); + } - Add(modDisplay = new ModDisplay + [SetUp] + public void SetUp() => Schedule(() => + { + Children = new Drawable[] { - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - AutoSizeAxes = Axes.Both, - Position = new Vector2(0, 25), - }); + detailsArea = new BeatmapDetailArea + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Size = new Vector2(550f, 450f), + }, + modDisplay = new ModDisplay + { + Anchor = Anchor.TopRight, + Origin = Anchor.TopRight, + AutoSizeAxes = Axes.Both, + Position = new Vector2(0, 25), + } + }; modDisplay.Current.BindTo(SelectedMods); + }); - AddStep("all metrics", () => detailsArea.Beatmap = new TestWorkingBeatmap(new Beatmap - { - BeatmapInfo = - { - BeatmapSet = new BeatmapSetInfo - { - Metrics = new BeatmapSetMetrics { Ratings = Enumerable.Range(0, 11).ToArray() } - }, - Version = "All Metrics", - Metadata = new BeatmapMetadata - { - Source = "osu!lazer", - Tags = "this beatmap has all the metrics", - }, - BaseDifficulty = new BeatmapDifficulty - { - CircleSize = 7, - DrainRate = 1, - OverallDifficulty = 5.7f, - ApproachRate = 3.5f, - }, - StarDifficulty = 5.3f, - Metrics = new BeatmapMetrics - { - Fails = Enumerable.Range(1, 100).Select(i => i % 12 - 6).ToArray(), - Retries = Enumerable.Range(-2, 100).Select(i => i % 12 - 6).ToArray(), - }, - } - })); - + [Test] + public void TestBasicScenarios() + { + showAllMetrics(); AddStep("all except source", () => detailsArea.Beatmap = new TestWorkingBeatmap(new Beatmap { BeatmapInfo = @@ -178,60 +164,50 @@ namespace osu.Game.Tests.Visual.SongSelect })); AddStep("null beatmap", () => detailsArea.Beatmap = null); + } + + [Test] + public void TestModAdjustments() + { + showAllMetrics(); Ruleset ruleset = rulesets.AvailableRulesets.First().CreateInstance(); - AddStep("with EZ mod", () => + AddStep("with EZ mod", () => SelectedMods.Value = new[] { ruleset.GetAllMods().First(m => m is ModEasy) }); + AddStep("with HR mod", () => SelectedMods.Value = new[] { ruleset.GetAllMods().First(m => m is ModHardRock) }); + } + + private void showAllMetrics() + { + AddStep("all metrics", () => detailsArea.Beatmap = new TestWorkingBeatmap(new Beatmap { - detailsArea.Beatmap = new TestWorkingBeatmap(new Beatmap + BeatmapInfo = { - BeatmapInfo = + BeatmapSet = new BeatmapSetInfo { - Version = "Has Easy Mod", - Metadata = new BeatmapMetadata - { - Source = "osu!lazer", - Tags = "this beatmap has the easy mod enabled", - }, - BaseDifficulty = new BeatmapDifficulty - { - CircleSize = 3, - DrainRate = 3, - OverallDifficulty = 3, - ApproachRate = 3, - }, - StarDifficulty = 1f, - } - }); - - SelectedMods.Value = new[] { ruleset.GetAllMods().First(m => m is ModEasy) }; - }); - - AddStep("with HR mod", () => - { - detailsArea.Beatmap = new TestWorkingBeatmap(new Beatmap - { - BeatmapInfo = + Metrics = new BeatmapSetMetrics { Ratings = Enumerable.Range(0, 11).ToArray() } + }, + Version = "All Metrics", + Metadata = new BeatmapMetadata { - Version = "Has Hard Rock Mod", - Metadata = new BeatmapMetadata - { - Source = "osu!lazer", - Tags = "this beatmap has the hard rock mod enabled", - }, - BaseDifficulty = new BeatmapDifficulty - { - CircleSize = 3, - DrainRate = 3, - OverallDifficulty = 3, - ApproachRate = 3, - }, - StarDifficulty = 1f, - } - }); - - SelectedMods.Value = new[] { ruleset.GetAllMods().First(m => m is ModHardRock) }; - }); + Source = "osu!lazer", + Tags = "this beatmap has all the metrics", + }, + BaseDifficulty = new BeatmapDifficulty + { + CircleSize = 7, + DrainRate = 1, + OverallDifficulty = 5.7f, + ApproachRate = 3.5f, + }, + StarDifficulty = 5.3f, + Metrics = new BeatmapMetrics + { + Fails = Enumerable.Range(1, 100).Select(i => i % 12 - 6).ToArray(), + Retries = Enumerable.Range(-2, 100).Select(i => i % 12 - 6).ToArray(), + }, + } + })); } } } From a55e5c5c437da004583e22e4297632f5e29d376e Mon Sep 17 00:00:00 2001 From: Willy Tu Date: Fri, 20 Dec 2019 11:16:54 -0800 Subject: [PATCH 0493/1829] Removed unnecessary code --- .../TestSceneDeleteLocalScore.cs | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs index 0441d8659e..6ca75ea9cb 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs @@ -66,12 +66,12 @@ namespace osu.Game.Tests.Visual.UserInterface }, }; - AddStep("Insert Local Scores", () => reset()); + AddStep("Insert Local Scores", reset); } private void reset() { - leaderboard.initialLoad = true; + leaderboard.InitialLoad = true; leaderboard.RefreshScores(); } @@ -88,7 +88,7 @@ namespace osu.Game.Tests.Visual.UserInterface private Random rnd; - public bool initialLoad; + public bool InitialLoad; public void DeleteScore(ScoreInfo score) { @@ -98,7 +98,7 @@ namespace osu.Game.Tests.Visual.UserInterface public FailableLeaderboard() { - initialLoad = true; + InitialLoad = true; } public void SetRetrievalState(PlaceholderState state) @@ -108,14 +108,14 @@ namespace osu.Game.Tests.Visual.UserInterface protected override APIRequest FetchScores(Action> scoresCallback) { - if (initialLoad) + if (InitialLoad) { rnd = new Random(); scoreList = Enumerable.Range(1, 50).Select(createScore).ToList(); Scores = scoreList.OrderByDescending(s => s.TotalScore).ToArray(); - initialLoad = false; + InitialLoad = false; } else { @@ -169,10 +169,6 @@ namespace osu.Game.Tests.Visual.UserInterface private class TestLocalScoreDeleteDialog : PopupDialog { - public readonly PopupDialogOkButton ConfirmButton; - - public readonly PopupDialogCancelButton CancelButton; - public TestLocalScoreDeleteDialog(ScoreInfo score, FailableLeaderboard leaderboard) { Debug.Assert(score != null); @@ -184,12 +180,12 @@ namespace osu.Game.Tests.Visual.UserInterface HeaderText = @"Deleting this local score. Are you sure?"; Buttons = new PopupDialogButton[] { - ConfirmButton = new PopupDialogOkButton + new PopupDialogOkButton { Text = @"Yes. Please.", Action = () => leaderboard.DeleteScore(score) }, - CancelButton = new PopupDialogCancelButton + new PopupDialogCancelButton { Text = @"No, I'm still attached.", }, From 8353c893c07200bc6a97f00b3153e17c446b0b0b Mon Sep 17 00:00:00 2001 From: Willy Tu Date: Fri, 20 Dec 2019 12:00:10 -0800 Subject: [PATCH 0494/1829] Update BodyText of LocalScoreDeleteDialog --- .../Visual/UserInterface/TestSceneDeleteLocalScore.cs | 2 +- osu.Game/Screens/Select/LocalScoreDeleteDialog.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs index 6ca75ea9cb..2369b22ec2 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs @@ -175,7 +175,7 @@ namespace osu.Game.Tests.Visual.UserInterface string accuracy = string.Format(score.Accuracy % 1 == 0 ? @"{0:P0}" : @"{0:P2}", score.Accuracy); - BodyText = $@"{score} {Environment.NewLine} Rank: {score.Rank} - Max Combo: {score.MaxCombo} - {accuracy}"; + BodyText = $@"{score.User}'s {accuracy} {score.Rank} Rank on {score.Beatmap}"; Icon = FontAwesome.Solid.Eraser; HeaderText = @"Deleting this local score. Are you sure?"; Buttons = new PopupDialogButton[] diff --git a/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs index d5f2195c42..3f52b54e64 100644 --- a/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs +++ b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs @@ -20,7 +20,7 @@ namespace osu.Game.Screens.Select string accuracy = string.Format(score.Accuracy % 1 == 0 ? @"{0:P0}" : @"{0:P2}", score.Accuracy); - BodyText = $@"{score} {Environment.NewLine} Rank: {score.Rank} - Max Combo: {score.MaxCombo} - {accuracy}"; + BodyText = $@"{score.User}'s {accuracy} {score.Rank} Rank on {score.Beatmap}"; Icon = FontAwesome.Solid.Eraser; HeaderText = @"Deleting this local score. Are you sure?"; Buttons = new PopupDialogButton[] From 8e60ae70393e891776cee0f2431eb927b8eef007 Mon Sep 17 00:00:00 2001 From: Willy Tu Date: Fri, 20 Dec 2019 15:45:20 -0800 Subject: [PATCH 0495/1829] Removed directive is not required --- osu.Game/Screens/Select/LocalScoreDeleteDialog.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs index 3f52b54e64..514c5adf95 100644 --- a/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs +++ b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs @@ -4,7 +4,6 @@ using osu.Framework.Allocation; using osu.Game.Overlays.Dialog; using osu.Game.Scoring; -using System; using System.Diagnostics; using osu.Framework.Graphics.Sprites; From 8d0dd1497b291898dc216754a7561e1c61e3b73c Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Sat, 21 Dec 2019 12:26:58 +0300 Subject: [PATCH 0496/1829] Add legacy beatmap skin test scene with combo colours tests --- .../TestSceneLegacyBeatmapSkin.cs | 173 ++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100644 osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs new file mode 100644 index 0000000000..8ad66d833f --- /dev/null +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs @@ -0,0 +1,173 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework; +using osu.Framework.Allocation; +using osu.Framework.Audio; +using osu.Framework.Audio.Sample; +using osu.Framework.Bindables; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Textures; +using osu.Framework.IO.Stores; +using osu.Game.Audio; +using osu.Game.Beatmaps; +using osu.Game.Graphics.Containers; +using osu.Game.Rulesets.Osu.Objects; +using osu.Game.Screens; +using osu.Game.Screens.Play; +using osu.Game.Skinning; +using osu.Game.Tests.Visual; +using osuTK; +using osuTK.Graphics; + +namespace osu.Game.Rulesets.Osu.Tests +{ + public class TestSceneLegacyBeatmapSkin : OsuTestScene + { + [Resolved] + private AudioManager audio { get; set; } + + [Test] + public void TestBeatmapComboColours() + { + ExposedPlayer player = null; + ISkin gameplaySkin = null; + IReadOnlyList colours = null; + + AddStep("load beatmap", () => player = loadBeatmap(false, true)); + AddUntilStep("wait for player", () => player.IsLoaded); + AddStep("attach skin requester", () => gameplaySkin = addSkinRequester(player)); + + AddStep("retrieve combo colours", () => colours = gameplaySkin.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value); + AddAssert("is beatmap colours", () => colours.SequenceEqual(TestBeatmapSkin.Colours)); + } + + [Test] + public void TestEmptyBeatmapComboColours() + { + ExposedPlayer player = null; + ISkin gameplaySkin = null; + IReadOnlyList colours = null; + + AddStep("load no-colour beatmap", () => player = loadBeatmap(false, false)); + AddUntilStep("wait for player", () => player.IsLoaded); + AddStep("attach skin requester", () => gameplaySkin = addSkinRequester(player)); + + AddStep("retrieve combo colours", () => colours = gameplaySkin.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value); + AddAssert("is default skin colours", () => colours.SequenceEqual(SkinConfiguration.DefaultComboColours)); + } + + [Test] + public void TestEmptyBeatmapCustomSkinColours() + { + ExposedPlayer player = null; + ISkin gameplaySkin = null; + IReadOnlyList colours = null; + + AddStep("load no-colour beatmap", () => player = loadBeatmap(true, false)); + AddUntilStep("wait for player", () => player.IsLoaded); + AddStep("attach skin requester", () => gameplaySkin = addSkinRequester(player)); + + AddStep("retrieve combo colours", () => colours = gameplaySkin.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value); + AddAssert("is custom skin colours", () => colours.SequenceEqual(TestSkin.Colours)); + } + + private ExposedPlayer loadBeatmap(bool skinHasCustomColours, bool beatmapHasCustomColours) + { + ExposedPlayer player; + + Beatmap.Value = new CustomSkinWorkingBeatmap(audio, beatmapHasCustomColours); + Child = new SkinProvidingContainer(new TestSkin(skinHasCustomColours)) + .WithChild(new OsuScreenStack(player = new ExposedPlayer()) { RelativeSizeAxes = Axes.Both }); + + return player; + } + + private ISkin addSkinRequester(ExposedPlayer player) + { + SkinRequester skin; + player.BeatmapSkinContainer.Add(skin = new SkinRequester()); + return skin; + } + + private class SkinRequester : Component, ISkin + { + [Resolved] + private ISkinSource skin { get; set; } + + public Drawable GetDrawableComponent(ISkinComponent component) => skin.GetDrawableComponent(component); + + public Texture GetTexture(string componentName) => skin.GetTexture(componentName); + + public SampleChannel GetSample(ISampleInfo sampleInfo) => skin.GetSample(sampleInfo); + + public IBindable GetConfig(TLookup lookup) => skin.GetConfig(lookup); + } + + private class ExposedPlayer : Player + { + public ExposedPlayer() + : base(false, false) + { + } + + public BeatmapSkinProvidingContainer BeatmapSkinContainer => GameplayClockContainer.OfType().First().OfType().First(); + } + + private class CustomSkinWorkingBeatmap : ClockBackedTestWorkingBeatmap + { + private readonly bool hasColours; + + public CustomSkinWorkingBeatmap(AudioManager audio, bool hasColours) + : base(new Beatmap + { + BeatmapInfo = + { + BeatmapSet = new BeatmapSetInfo(), + Ruleset = new OsuRuleset().RulesetInfo, + }, + HitObjects = { new HitCircle { Position = new Vector2(256, 192) } } + }, null, null, audio) + { + this.hasColours = hasColours; + } + + protected override ISkin GetSkin() => new TestBeatmapSkin(BeatmapInfo, hasColours); + } + + private class TestBeatmapSkin : LegacyBeatmapSkin + { + public static Color4[] Colours { get; } = + { + new Color4(50, 100, 150, 255), + new Color4(40, 80, 120, 255), + }; + + public TestBeatmapSkin(BeatmapInfo beatmap, bool hasColours) + : base(beatmap, new ResourceStore(), null) + { + if (hasColours) + Configuration.AddComboColours(Colours); + } + } + + private class TestSkin : LegacySkin + { + public static Color4[] Colours { get; } = + { + new Color4(10, 100, 150, 255), + new Color4(20, 20, 20, 255), + }; + + public TestSkin(bool hasCustomColours) + : base(new SkinInfo(), null, null, string.Empty) + { + if (hasCustomColours) + Configuration.AddComboColours(Colours); + } + } + } +} From ff5e6c0dcfeb8d9eb62ad5527486faa7af24af75 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Sat, 21 Dec 2019 12:36:34 +0300 Subject: [PATCH 0497/1829] Make DefaultComboColours a property --- osu.Game/Skinning/SkinConfiguration.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Skinning/SkinConfiguration.cs b/osu.Game/Skinning/SkinConfiguration.cs index 3bfc941fd7..e3a0ab23fa 100644 --- a/osu.Game/Skinning/SkinConfiguration.cs +++ b/osu.Game/Skinning/SkinConfiguration.cs @@ -20,7 +20,7 @@ namespace osu.Game.Skinning /// internal bool AllowDefaultComboColoursFallback = true; - public static List DefaultComboColours = new List + public static List DefaultComboColours { get; } = new List { new Color4(255, 192, 0, 255), new Color4(0, 202, 0, 255), From a6632cf1ef9708faeacbb35c61e812fc2a8bcc83 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Sat, 21 Dec 2019 12:53:05 +0300 Subject: [PATCH 0498/1829] Remove unnecessary skin requester and user-skin providing container --- .../TestSceneLegacyBeatmapSkin.cs | 74 ++++++++----------- 1 file changed, 29 insertions(+), 45 deletions(-) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs index 8ad66d833f..c26afefc41 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs @@ -1,18 +1,14 @@ // 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 System.Linq; using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Audio; -using osu.Framework.Audio.Sample; -using osu.Framework.Bindables; using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Textures; using osu.Framework.IO.Stores; -using osu.Game.Audio; using osu.Game.Beatmaps; using osu.Game.Graphics.Containers; using osu.Game.Rulesets.Osu.Objects; @@ -34,87 +30,69 @@ namespace osu.Game.Rulesets.Osu.Tests public void TestBeatmapComboColours() { ExposedPlayer player = null; - ISkin gameplaySkin = null; IReadOnlyList colours = null; AddStep("load beatmap", () => player = loadBeatmap(false, true)); AddUntilStep("wait for player", () => player.IsLoaded); - AddStep("attach skin requester", () => gameplaySkin = addSkinRequester(player)); - AddStep("retrieve combo colours", () => colours = gameplaySkin.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value); - AddAssert("is beatmap colours", () => colours.SequenceEqual(TestBeatmapSkin.Colours)); + AddStep("retrieve combo colours", () => colours = player.BeatmapSkin.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value); + AddAssert("is beatmap skin colours", () => colours.SequenceEqual(TestBeatmapSkin.Colours)); } [Test] public void TestEmptyBeatmapComboColours() { ExposedPlayer player = null; - ISkin gameplaySkin = null; IReadOnlyList colours = null; AddStep("load no-colour beatmap", () => player = loadBeatmap(false, false)); AddUntilStep("wait for player", () => player.IsLoaded); - AddStep("attach skin requester", () => gameplaySkin = addSkinRequester(player)); - AddStep("retrieve combo colours", () => colours = gameplaySkin.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value); - AddAssert("is default skin colours", () => colours.SequenceEqual(SkinConfiguration.DefaultComboColours)); + AddStep("retrieve combo colours", () => colours = player.BeatmapSkin.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value); + AddAssert("is default user skin colours", () => colours.SequenceEqual(SkinConfiguration.DefaultComboColours)); } [Test] public void TestEmptyBeatmapCustomSkinColours() { ExposedPlayer player = null; - ISkin gameplaySkin = null; IReadOnlyList colours = null; AddStep("load no-colour beatmap", () => player = loadBeatmap(true, false)); AddUntilStep("wait for player", () => player.IsLoaded); - AddStep("attach skin requester", () => gameplaySkin = addSkinRequester(player)); - AddStep("retrieve combo colours", () => colours = gameplaySkin.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value); - AddAssert("is custom skin colours", () => colours.SequenceEqual(TestSkin.Colours)); + AddStep("retrieve combo colours", () => colours = player.BeatmapSkin.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value); + AddAssert("is custom user skin colours", () => colours.SequenceEqual(TestSkin.Colours)); } - private ExposedPlayer loadBeatmap(bool skinHasCustomColours, bool beatmapHasCustomColours) + private ExposedPlayer loadBeatmap(bool userHasCustomColours, bool beatmapHasColours) { ExposedPlayer player; - Beatmap.Value = new CustomSkinWorkingBeatmap(audio, beatmapHasCustomColours); - Child = new SkinProvidingContainer(new TestSkin(skinHasCustomColours)) - .WithChild(new OsuScreenStack(player = new ExposedPlayer()) { RelativeSizeAxes = Axes.Both }); + Beatmap.Value = new CustomSkinWorkingBeatmap(audio, beatmapHasColours); + Child = new OsuScreenStack(player = new ExposedPlayer(userHasCustomColours)) { RelativeSizeAxes = Axes.Both }; return player; } - private ISkin addSkinRequester(ExposedPlayer player) - { - SkinRequester skin; - player.BeatmapSkinContainer.Add(skin = new SkinRequester()); - return skin; - } - - private class SkinRequester : Component, ISkin - { - [Resolved] - private ISkinSource skin { get; set; } - - public Drawable GetDrawableComponent(ISkinComponent component) => skin.GetDrawableComponent(component); - - public Texture GetTexture(string componentName) => skin.GetTexture(componentName); - - public SampleChannel GetSample(ISampleInfo sampleInfo) => skin.GetSample(sampleInfo); - - public IBindable GetConfig(TLookup lookup) => skin.GetConfig(lookup); - } - private class ExposedPlayer : Player { - public ExposedPlayer() + private readonly bool userHasCustomColours; + + public ExposedPlayer(bool userHasCustomColours) : base(false, false) { + this.userHasCustomColours = userHasCustomColours; } - public BeatmapSkinProvidingContainer BeatmapSkinContainer => GameplayClockContainer.OfType().First().OfType().First(); + protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent) + { + var dependencies = new DependencyContainer(base.CreateChildDependencies(parent)); + dependencies.CacheAs(new TestSkin(userHasCustomColours)); + return dependencies; + } + + public BeatmapSkinProvidingContainer BeatmapSkin => GameplayClockContainer.OfType().First().OfType().First(); } private class CustomSkinWorkingBeatmap : ClockBackedTestWorkingBeatmap @@ -154,7 +132,7 @@ namespace osu.Game.Rulesets.Osu.Tests } } - private class TestSkin : LegacySkin + private class TestSkin : LegacySkin, ISkinSource { public static Color4[] Colours { get; } = { @@ -168,6 +146,12 @@ namespace osu.Game.Rulesets.Osu.Tests if (hasCustomColours) Configuration.AddComboColours(Colours); } + + public event Action SourceChanged + { + add { } + remove { } + } } } } From c69e88eb97b90c73b3e2dcd2bebe18c8aa4b8540 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 21 Dec 2019 13:32:25 +0300 Subject: [PATCH 0499/1829] Add more types to dropdown --- osu.Game/Configuration/ScoreMeterType.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/osu.Game/Configuration/ScoreMeterType.cs b/osu.Game/Configuration/ScoreMeterType.cs index b85ef9309d..156c4b1377 100644 --- a/osu.Game/Configuration/ScoreMeterType.cs +++ b/osu.Game/Configuration/ScoreMeterType.cs @@ -18,5 +18,14 @@ namespace osu.Game.Configuration [Description("Hit Error (both)")] HitErrorBoth, + + [Description("Colour (left)")] + ColourLeft, + + [Description("Colour (right)")] + ColourRight, + + [Description("Colour (both)")] + ColourBoth, } } From 5b115d8d8a94fff0f265d8a5aba113c0c1b1ad53 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 21 Dec 2019 13:41:50 +0300 Subject: [PATCH 0500/1829] Implement basic logic --- osu.Game/Screens/Play/HUD/HitErrorDisplay.cs | 31 +++++++++++++++++ .../HUD/HitErrorMeters/ColourHitErrorMeter.cs | 33 +++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs diff --git a/osu.Game/Screens/Play/HUD/HitErrorDisplay.cs b/osu.Game/Screens/Play/HUD/HitErrorDisplay.cs index 6196ce4026..4d28f00f39 100644 --- a/osu.Game/Screens/Play/HUD/HitErrorDisplay.cs +++ b/osu.Game/Screens/Play/HUD/HitErrorDisplay.cs @@ -77,6 +77,19 @@ namespace osu.Game.Screens.Play.HUD case ScoreMeterType.HitErrorRight: createBar(true); break; + + case ScoreMeterType.ColourBoth: + createColour(false); + createColour(true); + break; + + case ScoreMeterType.ColourLeft: + createColour(false); + break; + + case ScoreMeterType.ColourRight: + createColour(true); + break; } } @@ -90,6 +103,24 @@ namespace osu.Game.Screens.Play.HUD Alpha = 0, }; + completeDisplayLoading(display); + } + + private void createColour(bool rightAligned) + { + var display = new ColourHitErrorMeter(hitWindows) + { + Margin = new MarginPadding(margin), + Anchor = rightAligned ? Anchor.CentreRight : Anchor.CentreLeft, + Origin = rightAligned ? Anchor.CentreRight : Anchor.CentreLeft, + Alpha = 0, + }; + + completeDisplayLoading(display); + } + + private void completeDisplayLoading(HitErrorMeter display) + { Add(display); display.FadeInFromZero(fade_duration, Easing.OutQuint); } diff --git a/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs b/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs new file mode 100644 index 0000000000..95d4940b17 --- /dev/null +++ b/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.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 System.Linq; +using osu.Framework.Allocation; +using osu.Framework.Extensions.Color4Extensions; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Colour; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; +using osu.Framework.Graphics.Sprites; +using osu.Game.Graphics; +using osu.Game.Rulesets.Judgements; +using osu.Game.Rulesets.Scoring; +using osuTK; +using osuTK.Graphics; + +namespace osu.Game.Screens.Play.HUD.HitErrorMeters +{ + public class ColourHitErrorMeter : HitErrorMeter + { + public ColourHitErrorMeter(HitWindows hitWindows) + : base(hitWindows) + { + + } + + public override void OnNewJudgement(JudgementResult judgement) + { + throw new System.NotImplementedException(); + } + } +} From 5e3c3f2a90190b9a785800627b44e4af136d6dba Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 21 Dec 2019 14:30:41 +0300 Subject: [PATCH 0501/1829] Make judgements work --- .../HUD/HitErrorMeters/ColourHitErrorMeter.cs | 70 +++++++++++++++++-- 1 file changed, 63 insertions(+), 7 deletions(-) diff --git a/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs b/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs index 95d4940b17..41401a0048 100644 --- a/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs +++ b/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs @@ -1,33 +1,89 @@ // 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.Allocation; -using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; -using osu.Framework.Graphics.Colour; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; -using osu.Framework.Graphics.Sprites; using osu.Game.Graphics; using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Scoring; using osuTK; -using osuTK.Graphics; namespace osu.Game.Screens.Play.HUD.HitErrorMeters { public class ColourHitErrorMeter : HitErrorMeter { + private const int bar_height = 200; + + private readonly FillFlowContainer judgementsFlow; + public ColourHitErrorMeter(HitWindows hitWindows) : base(hitWindows) { - + AutoSizeAxes = Axes.Both; + InternalChild = judgementsFlow = new FillFlowContainer + { + AutoSizeAxes = Axes.X, + Height = bar_height, + Direction = FillDirection.Vertical, + Spacing = new Vector2(0, 2), + Masking = true, + }; } public override void OnNewJudgement(JudgementResult judgement) { - throw new System.NotImplementedException(); + judgementsFlow.Add(new DrawableJudgement(HitWindows.ResultFor(judgement.TimeOffset))); + } + + private class DrawableJudgement : CircularContainer + { + private readonly Box background; + private readonly HitResult result; + + public DrawableJudgement(HitResult result) + { + this.result = result; + + Masking = true; + Size = new Vector2(8); + Child = background = new Box + { + RelativeSizeAxes = Axes.Both, + }; + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + switch (result) + { + case HitResult.Miss: + background.Colour = colours.Red; + break; + + case HitResult.Meh: + background.Colour = colours.Yellow; + break; + + case HitResult.Ok: + background.Colour = colours.Green; + break; + + case HitResult.Good: + background.Colour = colours.GreenLight; + break; + + case HitResult.Great: + background.Colour = colours.Blue; + break; + + default: + background.Colour = colours.BlueLight; + break; + } + } } } } From 5af126009488554a4322fa292c24e39f8ef0f898 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 21 Dec 2019 14:30:49 +0300 Subject: [PATCH 0502/1829] Improve testing --- ...rrorMeter.cs => TestSceneHitErrorMeter.cs} | 36 ++++++++++++++----- 1 file changed, 28 insertions(+), 8 deletions(-) rename osu.Game.Tests/Visual/Gameplay/{TestSceneBarHitErrorMeter.cs => TestSceneHitErrorMeter.cs} (75%) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneBarHitErrorMeter.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneHitErrorMeter.cs similarity index 75% rename from osu.Game.Tests/Visual/Gameplay/TestSceneBarHitErrorMeter.cs rename to osu.Game.Tests/Visual/Gameplay/TestSceneHitErrorMeter.cs index e3688c276f..b208a2e0e7 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneBarHitErrorMeter.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneHitErrorMeter.cs @@ -19,18 +19,22 @@ using osu.Game.Screens.Play.HUD.HitErrorMeters; namespace osu.Game.Tests.Visual.Gameplay { - public class TestSceneBarHitErrorMeter : OsuTestScene + public class TestSceneHitErrorMeter : OsuTestScene { public override IReadOnlyList RequiredTypes => new[] { typeof(HitErrorMeter), + typeof(BarHitErrorMeter), + typeof(ColourHitErrorMeter) }; - private HitErrorMeter meter; - private HitErrorMeter meter2; + private BarHitErrorMeter barMeter; + private BarHitErrorMeter barMeter2; + private ColourHitErrorMeter colourMeter; + private ColourHitErrorMeter colourMeter2; private HitWindows hitWindows; - public TestSceneBarHitErrorMeter() + public TestSceneHitErrorMeter() { recreateDisplay(new OsuHitWindows(), 5); @@ -91,17 +95,31 @@ namespace osu.Game.Tests.Visual.Gameplay } }); - Add(meter = new BarHitErrorMeter(hitWindows, true) + Add(barMeter = new BarHitErrorMeter(hitWindows, true) { Anchor = Anchor.CentreRight, Origin = Anchor.CentreRight, }); - Add(meter2 = new BarHitErrorMeter(hitWindows, false) + Add(barMeter2 = new BarHitErrorMeter(hitWindows, false) { Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, }); + + Add(colourMeter = new ColourHitErrorMeter(hitWindows) + { + Anchor = Anchor.CentreRight, + Origin = Anchor.CentreRight, + Margin = new MarginPadding { Right = 50 } + }); + + Add(colourMeter2 = new ColourHitErrorMeter(hitWindows) + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + Margin = new MarginPadding { Left = 50 } + }); } private void newJudgement(double offset = 0) @@ -112,8 +130,10 @@ namespace osu.Game.Tests.Visual.Gameplay Type = HitResult.Perfect, }; - meter.OnNewJudgement(judgement); - meter2.OnNewJudgement(judgement); + barMeter.OnNewJudgement(judgement); + barMeter2.OnNewJudgement(judgement); + colourMeter.OnNewJudgement(judgement); + colourMeter2.OnNewJudgement(judgement); } } } From b61aa660c63f0e126f32643ef17e7bb458d2a1ae Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 21 Dec 2019 14:52:53 +0300 Subject: [PATCH 0503/1829] Move colours to HitErrorMeter class --- .../HUD/HitErrorMeters/BarHitErrorMeter.cs | 25 +--------- .../HUD/HitErrorMeters/ColourHitErrorMeter.cs | 46 ++----------------- .../Play/HUD/HitErrorMeters/HitErrorMeter.cs | 30 ++++++++++++ 3 files changed, 37 insertions(+), 64 deletions(-) diff --git a/osu.Game/Screens/Play/HUD/HitErrorMeters/BarHitErrorMeter.cs b/osu.Game/Screens/Play/HUD/HitErrorMeters/BarHitErrorMeter.cs index 03a0f23fb6..208bdd17ad 100644 --- a/osu.Game/Screens/Play/HUD/HitErrorMeters/BarHitErrorMeter.cs +++ b/osu.Game/Screens/Play/HUD/HitErrorMeters/BarHitErrorMeter.cs @@ -163,30 +163,9 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters centre.Width = 2.5f; colourBars.Add(centre); - Color4 getColour(HitResult result) - { - switch (result) - { - case HitResult.Meh: - return colours.Yellow; - - case HitResult.Ok: - return colours.Green; - - case HitResult.Good: - return colours.GreenLight; - - case HitResult.Great: - return colours.Blue; - - default: - return colours.BlueLight; - } - } - Drawable createColourBar(HitResult result, float height, bool first = false) { - var colour = getColour(result); + var colour = GetColourForHitResult(result); if (first) { @@ -201,7 +180,7 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters new Box { RelativeSizeAxes = Axes.Both, - Colour = getColour(result), + Colour = colour, Height = height * gradient_start }, new Box diff --git a/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs b/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs index 41401a0048..6775b98f84 100644 --- a/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs +++ b/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs @@ -1,14 +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 osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; -using osu.Game.Graphics; using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Scoring; using osuTK; +using osuTK.Graphics; namespace osu.Game.Screens.Play.HUD.HitErrorMeters { @@ -34,56 +33,21 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters public override void OnNewJudgement(JudgementResult judgement) { - judgementsFlow.Add(new DrawableJudgement(HitWindows.ResultFor(judgement.TimeOffset))); + judgementsFlow.Add(new DrawableJudgement(GetColourForHitResult(HitWindows.ResultFor(judgement.TimeOffset)))); } private class DrawableJudgement : CircularContainer { - private readonly Box background; - private readonly HitResult result; - - public DrawableJudgement(HitResult result) + public DrawableJudgement(Color4 colour) { - this.result = result; - Masking = true; Size = new Vector2(8); - Child = background = new Box + Child = new Box { RelativeSizeAxes = Axes.Both, + Colour = colour }; } - - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - switch (result) - { - case HitResult.Miss: - background.Colour = colours.Red; - break; - - case HitResult.Meh: - background.Colour = colours.Yellow; - break; - - case HitResult.Ok: - background.Colour = colours.Green; - break; - - case HitResult.Good: - background.Colour = colours.GreenLight; - break; - - case HitResult.Great: - background.Colour = colours.Blue; - break; - - default: - background.Colour = colours.BlueLight; - break; - } - } } } } diff --git a/osu.Game/Screens/Play/HUD/HitErrorMeters/HitErrorMeter.cs b/osu.Game/Screens/Play/HUD/HitErrorMeters/HitErrorMeter.cs index dee25048ed..b3edfdedec 100644 --- a/osu.Game/Screens/Play/HUD/HitErrorMeters/HitErrorMeter.cs +++ b/osu.Game/Screens/Play/HUD/HitErrorMeters/HitErrorMeter.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 osu.Framework.Allocation; using osu.Framework.Graphics.Containers; +using osu.Game.Graphics; using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Scoring; +using osuTK.Graphics; namespace osu.Game.Screens.Play.HUD.HitErrorMeters { @@ -11,11 +14,38 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters { protected readonly HitWindows HitWindows; + [Resolved] + private OsuColour colours { get; set; } + protected HitErrorMeter(HitWindows hitWindows) { HitWindows = hitWindows; } public abstract void OnNewJudgement(JudgementResult judgement); + + protected Color4 GetColourForHitResult(HitResult result) + { + switch (result) + { + case HitResult.Miss: + return colours.Red; + + case HitResult.Meh: + return colours.Yellow; + + case HitResult.Ok: + return colours.Green; + + case HitResult.Good: + return colours.GreenLight; + + case HitResult.Great: + return colours.Blue; + + default: + return colours.BlueLight; + } + } } } From 14a77a8f16d849483a59c68cf726e7784966052a Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 21 Dec 2019 16:08:28 +0300 Subject: [PATCH 0504/1829] Improve animations --- .../HUD/HitErrorMeters/ColourHitErrorMeter.cs | 83 +++++++++++++++---- 1 file changed, 69 insertions(+), 14 deletions(-) diff --git a/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs b/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs index 6775b98f84..649f29810e 100644 --- a/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs +++ b/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs @@ -1,6 +1,10 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. +using System.Collections.Generic; +using System.Linq; +using osu.Framework.Bindables; +using osu.Framework.Extensions.IEnumerableExtensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; @@ -13,35 +17,86 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters { public class ColourHitErrorMeter : HitErrorMeter { - private const int bar_height = 200; + private const int max_available_judgements = 20; - private readonly FillFlowContainer judgementsFlow; + private readonly JudgementFlow judgementsFlow; + private readonly BindableList<(Color4 colour, JudgementResult result)> judgements = new BindableList<(Color4 colour, JudgementResult result)>(); public ColourHitErrorMeter(HitWindows hitWindows) : base(hitWindows) { AutoSizeAxes = Axes.Both; - InternalChild = judgementsFlow = new FillFlowContainer - { - AutoSizeAxes = Axes.X, - Height = bar_height, - Direction = FillDirection.Vertical, - Spacing = new Vector2(0, 2), - Masking = true, - }; + InternalChild = judgementsFlow = new JudgementFlow(); + } + + protected override void LoadComplete() + { + base.LoadComplete(); + judgementsFlow.Judgements.BindTo(judgements); } public override void OnNewJudgement(JudgementResult judgement) { - judgementsFlow.Add(new DrawableJudgement(GetColourForHitResult(HitWindows.ResultFor(judgement.TimeOffset)))); + judgements.Add((GetColourForHitResult(HitWindows.ResultFor(judgement.TimeOffset)), judgement)); + + if (judgements.Count > max_available_judgements) + judgements.RemoveAt(0); } - private class DrawableJudgement : CircularContainer + private class JudgementFlow : Container { - public DrawableJudgement(Color4 colour) + private const int drawable_judgement_size = 8; + private const int spacing = 2; + private const int animation_duration = 200; + + public readonly BindableList<(Color4 colour, JudgementResult result)> Judgements = new BindableList<(Color4 colour, JudgementResult result)>(); + + public JudgementFlow() { + AutoSizeAxes = Axes.X; + Height = max_available_judgements * (drawable_judgement_size + spacing); + } + + protected override void LoadComplete() + { + base.LoadComplete(); + Judgements.ItemsAdded += push; + Judgements.ItemsRemoved += pop; + } + + private void push(IEnumerable<(Color4 colour, JudgementResult result)> judgements) + { + Children.ForEach(c => c.FinishTransforms()); + + var (colour, result) = judgements.Single(); + var drawableJudgement = new DrawableResult(colour, result, drawable_judgement_size) + { + Alpha = 0, + Y = -(drawable_judgement_size + spacing) + }; + + Add(drawableJudgement); + drawableJudgement.FadeInFromZero(animation_duration, Easing.OutQuint); + + Children.ForEach(c => c.MoveToOffset(new Vector2(0, drawable_judgement_size + spacing), animation_duration, Easing.OutQuint)); + } + + private void pop(IEnumerable<(Color4 colour, JudgementResult result)> judgements) + { + Children.FirstOrDefault(c => c.Result == judgements.Single().result).FadeOut(animation_duration, Easing.OutQuint).Expire(); + } + } + + private class DrawableResult : CircularContainer + { + public JudgementResult Result { get; private set; } + + public DrawableResult(Color4 colour, JudgementResult result, int size) + { + Result = result; + Masking = true; - Size = new Vector2(8); + Size = new Vector2(size); Child = new Box { RelativeSizeAxes = Axes.Both, From 13425568945c4bde5c130266b2ff19156f867fef Mon Sep 17 00:00:00 2001 From: Joehu Date: Sun, 15 Dec 2019 08:34:57 -0800 Subject: [PATCH 0505/1829] Allow ctrl tabbing navigation to chat and song select leaderboards --- osu.Game/Overlays/ChatOverlay.cs | 1 + osu.Game/Screens/Select/BeatmapDetailAreaTabControl.cs | 1 + 2 files changed, 2 insertions(+) diff --git a/osu.Game/Overlays/ChatOverlay.cs b/osu.Game/Overlays/ChatOverlay.cs index 33bcc4c139..08043a097b 100644 --- a/osu.Game/Overlays/ChatOverlay.cs +++ b/osu.Game/Overlays/ChatOverlay.cs @@ -171,6 +171,7 @@ namespace osu.Game.Overlays d.Origin = Anchor.BottomLeft; d.RelativeSizeAxes = Axes.Both; d.OnRequestLeave = channelManager.LeaveChannel; + d.Tabbable = true; }), } }, diff --git a/osu.Game/Screens/Select/BeatmapDetailAreaTabControl.cs b/osu.Game/Screens/Select/BeatmapDetailAreaTabControl.cs index 433e8ee398..a6933b478e 100644 --- a/osu.Game/Screens/Select/BeatmapDetailAreaTabControl.cs +++ b/osu.Game/Screens/Select/BeatmapDetailAreaTabControl.cs @@ -48,6 +48,7 @@ namespace osu.Game.Screens.Select Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, RelativeSizeAxes = Axes.Both, + Tabbable = true, }, }, modsCheckbox = new OsuTabControlCheckbox From 119b48ccb0e77e8ed35c3e2537b2dc1fb51b4d2d Mon Sep 17 00:00:00 2001 From: Joehu Date: Sun, 15 Dec 2019 08:35:38 -0800 Subject: [PATCH 0506/1829] Remove redundant tab item override --- osu.Game/Graphics/UserInterface/BreadcrumbControl.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs b/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs index d1e55fee24..93ea6bbbe6 100644 --- a/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs +++ b/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs @@ -52,7 +52,6 @@ namespace osu.Game.Graphics.UserInterface public override bool HandleNonPositionalInput => State == Visibility.Visible; public override bool HandlePositionalInput => State == Visibility.Visible; - public override bool IsRemovable => true; private Visibility state; From 725008286f1cd5861fef48d5acbc5ca11e505496 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 22 Dec 2019 06:09:16 +0900 Subject: [PATCH 0507/1829] Move test and remove pointless duplicate tests --- .../SongSelect/TestSceneBeatmapDetailArea.cs | 213 ------------------ .../SongSelect/TestSceneBeatmapDetails.cs | 15 ++ 2 files changed, 15 insertions(+), 213 deletions(-) delete mode 100644 osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetailArea.cs diff --git a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetailArea.cs b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetailArea.cs deleted file mode 100644 index de4e77fe70..0000000000 --- a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetailArea.cs +++ /dev/null @@ -1,213 +0,0 @@ -// 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 System.Linq; -using NUnit.Framework; -using osu.Framework.Allocation; -using osu.Framework.Graphics; -using osu.Game.Beatmaps; -using osu.Game.Rulesets; -using osu.Game.Rulesets.Mods; -using osu.Game.Screens.Play.HUD; -using osu.Game.Screens.Select; -using osu.Game.Tests.Beatmaps; -using osuTK; - -namespace osu.Game.Tests.Visual.SongSelect -{ - [TestFixture] - [System.ComponentModel.Description("PlaySongSelect leaderboard/details area")] - public class TestSceneBeatmapDetailArea : OsuTestScene - { - public override IReadOnlyList RequiredTypes => new[] { typeof(BeatmapDetails) }; - - private ModDisplay modDisplay; - - private BeatmapDetailArea detailsArea; - - [Resolved] - private RulesetStore rulesets { get; set; } - - [BackgroundDependencyLoader] - private void load(OsuGameBase game, RulesetStore rulesets) - { - } - - [SetUp] - public void SetUp() => Schedule(() => - { - Children = new Drawable[] - { - detailsArea = new BeatmapDetailArea - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Size = new Vector2(550f, 450f), - }, - modDisplay = new ModDisplay - { - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - AutoSizeAxes = Axes.Both, - Position = new Vector2(0, 25), - } - }; - - modDisplay.Current.BindTo(SelectedMods); - }); - - [Test] - public void TestBasicScenarios() - { - showAllMetrics(); - AddStep("all except source", () => detailsArea.Beatmap = new TestWorkingBeatmap(new Beatmap - { - BeatmapInfo = - { - BeatmapSet = new BeatmapSetInfo - { - Metrics = new BeatmapSetMetrics { Ratings = Enumerable.Range(0, 11).ToArray() } - }, - Version = "All Metrics", - Metadata = new BeatmapMetadata - { - Tags = "this beatmap has all the metrics", - }, - BaseDifficulty = new BeatmapDifficulty - { - CircleSize = 7, - DrainRate = 1, - OverallDifficulty = 5.7f, - ApproachRate = 3.5f, - }, - StarDifficulty = 5.3f, - Metrics = new BeatmapMetrics - { - Fails = Enumerable.Range(1, 100).Select(i => i % 12 - 6).ToArray(), - Retries = Enumerable.Range(-2, 100).Select(i => i % 12 - 6).ToArray(), - }, - } - })); - - AddStep("ratings", () => detailsArea.Beatmap = new TestWorkingBeatmap(new Beatmap - { - BeatmapInfo = - { - BeatmapSet = new BeatmapSetInfo - { - Metrics = new BeatmapSetMetrics { Ratings = Enumerable.Range(0, 11).ToArray() } - }, - Version = "Only Ratings", - Metadata = new BeatmapMetadata - { - Source = "osu!lazer", - Tags = "this beatmap has ratings metrics but not retries or fails", - }, - BaseDifficulty = new BeatmapDifficulty - { - CircleSize = 6, - DrainRate = 9, - OverallDifficulty = 6, - ApproachRate = 6, - }, - StarDifficulty = 4.8f - } - })); - - AddStep("fails+retries", () => detailsArea.Beatmap = new TestWorkingBeatmap(new Beatmap - { - BeatmapInfo = - { - Version = "Only Retries and Fails", - Metadata = new BeatmapMetadata - { - Source = "osu!lazer", - Tags = "this beatmap has retries and fails but no ratings", - }, - BaseDifficulty = new BeatmapDifficulty - { - CircleSize = 3.7f, - DrainRate = 6, - OverallDifficulty = 6, - ApproachRate = 7, - }, - StarDifficulty = 2.91f, - Metrics = new BeatmapMetrics - { - Fails = Enumerable.Range(1, 100).Select(i => i % 12 - 6).ToArray(), - Retries = Enumerable.Range(-2, 100).Select(i => i % 12 - 6).ToArray(), - }, - } - })); - - AddStep("null metrics", () => detailsArea.Beatmap = new TestWorkingBeatmap(new Beatmap - { - BeatmapInfo = - { - Version = "No Metrics", - Metadata = new BeatmapMetadata - { - Source = "osu!lazer", - Tags = "this beatmap has no metrics", - }, - BaseDifficulty = new BeatmapDifficulty - { - CircleSize = 5, - DrainRate = 5, - OverallDifficulty = 5.5f, - ApproachRate = 6.5f, - }, - StarDifficulty = 1.97f, - } - })); - - AddStep("null beatmap", () => detailsArea.Beatmap = null); - } - - [Test] - public void TestModAdjustments() - { - showAllMetrics(); - - Ruleset ruleset = rulesets.AvailableRulesets.First().CreateInstance(); - - AddStep("with EZ mod", () => SelectedMods.Value = new[] { ruleset.GetAllMods().First(m => m is ModEasy) }); - AddStep("with HR mod", () => SelectedMods.Value = new[] { ruleset.GetAllMods().First(m => m is ModHardRock) }); - } - - private void showAllMetrics() - { - AddStep("all metrics", () => detailsArea.Beatmap = new TestWorkingBeatmap(new Beatmap - { - BeatmapInfo = - { - BeatmapSet = new BeatmapSetInfo - { - Metrics = new BeatmapSetMetrics { Ratings = Enumerable.Range(0, 11).ToArray() } - }, - Version = "All Metrics", - Metadata = new BeatmapMetadata - { - Source = "osu!lazer", - Tags = "this beatmap has all the metrics", - }, - BaseDifficulty = new BeatmapDifficulty - { - CircleSize = 7, - DrainRate = 1, - OverallDifficulty = 5.7f, - ApproachRate = 3.5f, - }, - StarDifficulty = 5.3f, - Metrics = new BeatmapMetrics - { - Fails = Enumerable.Range(1, 100).Select(i => i % 12 - 6).ToArray(), - Retries = Enumerable.Range(-2, 100).Select(i => i % 12 - 6).ToArray(), - }, - } - })); - } - } -} diff --git a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetails.cs b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetails.cs index acf037198f..2521d248e7 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetails.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetails.cs @@ -3,8 +3,11 @@ using System.Linq; using NUnit.Framework; +using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Game.Beatmaps; +using osu.Game.Rulesets; +using osu.Game.Rulesets.Mods; using osu.Game.Screens.Select; namespace osu.Game.Tests.Visual.SongSelect @@ -174,5 +177,17 @@ namespace osu.Game.Tests.Visual.SongSelect OnlineBeatmapID = 162, }); } + + [Resolved] + private RulesetStore rulesets { get; set; } + + [Test] + public void TestModAdjustments() + { + Ruleset ruleset = rulesets.AvailableRulesets.First().CreateInstance(); + + AddStep("with EZ mod", () => SelectedMods.Value = new[] { ruleset.GetAllMods().First(m => m is ModEasy) }); + AddStep("with HR mod", () => SelectedMods.Value = new[] { ruleset.GetAllMods().First(m => m is ModHardRock) }); + } } } From 69227d61799a79b6a71249e5769e6a657acea009 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 22 Dec 2019 06:37:18 +0900 Subject: [PATCH 0508/1829] Add asserts --- .../Visual/SongSelect/TestSceneBeatmapDetails.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetails.cs b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetails.cs index 2521d248e7..6aa5a76490 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetails.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetails.cs @@ -5,7 +5,10 @@ using System.Linq; using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Graphics; +using osu.Framework.Testing; using osu.Game.Beatmaps; +using osu.Game.Graphics; +using osu.Game.Graphics.UserInterface; using osu.Game.Rulesets; using osu.Game.Rulesets.Mods; using osu.Game.Screens.Select; @@ -181,13 +184,23 @@ namespace osu.Game.Tests.Visual.SongSelect [Resolved] private RulesetStore rulesets { get; set; } + [Resolved] + private OsuColour colours { get; set; } + [Test] public void TestModAdjustments() { + TestAllMetrics(); + Ruleset ruleset = rulesets.AvailableRulesets.First().CreateInstance(); AddStep("with EZ mod", () => SelectedMods.Value = new[] { ruleset.GetAllMods().First(m => m is ModEasy) }); + + AddAssert("first bar coloured blue", () => details.ChildrenOfType().Skip(1).First().AccentColour == colours.BlueDark); + AddStep("with HR mod", () => SelectedMods.Value = new[] { ruleset.GetAllMods().First(m => m is ModHardRock) }); + + AddAssert("first bar coloured red", () => details.ChildrenOfType().Skip(1).First().AccentColour == colours.Red); } } } From 46501cf0ac2984537d8a96b885fc87804d4ece15 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 22 Dec 2019 03:06:57 +0300 Subject: [PATCH 0509/1829] Use FillFlowContainer --- .../HUD/HitErrorMeters/ColourHitErrorMeter.cs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs b/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs index 649f29810e..d730a8d321 100644 --- a/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs +++ b/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs @@ -4,7 +4,6 @@ using System.Collections.Generic; using System.Linq; using osu.Framework.Bindables; -using osu.Framework.Extensions.IEnumerableExtensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; @@ -43,7 +42,7 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters judgements.RemoveAt(0); } - private class JudgementFlow : Container + private class JudgementFlow : FillFlowContainer { private const int drawable_judgement_size = 8; private const int spacing = 2; @@ -51,10 +50,16 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters public readonly BindableList<(Color4 colour, JudgementResult result)> Judgements = new BindableList<(Color4 colour, JudgementResult result)>(); + private int runningDepth; + public JudgementFlow() { AutoSizeAxes = Axes.X; Height = max_available_judgements * (drawable_judgement_size + spacing); + Spacing = new Vector2(0, spacing); + Direction = FillDirection.Vertical; + LayoutDuration = animation_duration; + LayoutEasing = Easing.OutQuint; } protected override void LoadComplete() @@ -66,24 +71,20 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters private void push(IEnumerable<(Color4 colour, JudgementResult result)> judgements) { - Children.ForEach(c => c.FinishTransforms()); - var (colour, result) = judgements.Single(); var drawableJudgement = new DrawableResult(colour, result, drawable_judgement_size) { Alpha = 0, - Y = -(drawable_judgement_size + spacing) }; - Add(drawableJudgement); + Insert(runningDepth--, drawableJudgement); drawableJudgement.FadeInFromZero(animation_duration, Easing.OutQuint); - - Children.ForEach(c => c.MoveToOffset(new Vector2(0, drawable_judgement_size + spacing), animation_duration, Easing.OutQuint)); } private void pop(IEnumerable<(Color4 colour, JudgementResult result)> judgements) { - Children.FirstOrDefault(c => c.Result == judgements.Single().result).FadeOut(animation_duration, Easing.OutQuint).Expire(); + var (colour, result) = judgements.Single(); + Children.FirstOrDefault(c => c.Result == result).FadeOut(animation_duration, Easing.OutQuint).Expire(); } } From eb75c6c70f342ff84d50b038af92e6873f1d080c Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 22 Dec 2019 03:17:56 +0300 Subject: [PATCH 0510/1829] Update FadeIn animation for new judgement --- .../HUD/HitErrorMeters/ColourHitErrorMeter.cs | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs b/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs index d730a8d321..b76f2c7817 100644 --- a/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs +++ b/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs @@ -17,6 +17,7 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters public class ColourHitErrorMeter : HitErrorMeter { private const int max_available_judgements = 20; + private const int animation_duration = 200; private readonly JudgementFlow judgementsFlow; private readonly BindableList<(Color4 colour, JudgementResult result)> judgements = new BindableList<(Color4 colour, JudgementResult result)>(); @@ -46,7 +47,6 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters { private const int drawable_judgement_size = 8; private const int spacing = 2; - private const int animation_duration = 200; public readonly BindableList<(Color4 colour, JudgementResult result)> Judgements = new BindableList<(Color4 colour, JudgementResult result)>(); @@ -72,13 +72,7 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters private void push(IEnumerable<(Color4 colour, JudgementResult result)> judgements) { var (colour, result) = judgements.Single(); - var drawableJudgement = new DrawableResult(colour, result, drawable_judgement_size) - { - Alpha = 0, - }; - - Insert(runningDepth--, drawableJudgement); - drawableJudgement.FadeInFromZero(animation_duration, Easing.OutQuint); + Insert(runningDepth--, new DrawableResult(colour, result, drawable_judgement_size)); } private void pop(IEnumerable<(Color4 colour, JudgementResult result)> judgements) @@ -88,22 +82,37 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters } } - private class DrawableResult : CircularContainer + private class DrawableResult : Container { public JudgementResult Result { get; private set; } + private readonly CircularContainer content; + public DrawableResult(Color4 colour, JudgementResult result, int size) { Result = result; - Masking = true; Size = new Vector2(size); - Child = new Box + Child = content = new CircularContainer { RelativeSizeAxes = Axes.Both, - Colour = colour + Masking = true, + Alpha = 0, + Child = new Box + { + RelativeSizeAxes = Axes.Both, + Colour = colour + }, }; } + + protected override void LoadComplete() + { + base.LoadComplete(); + content.FadeInFromZero(animation_duration, Easing.OutQuint); + content.MoveToY(-DrawSize.Y); + content.MoveToY(0, animation_duration, Easing.OutQuint); + } } } } From aded12af9e157ea0535dfbf8da48ed7fe3a8c2f0 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 22 Dec 2019 03:30:17 +0300 Subject: [PATCH 0511/1829] Refactoor to avoid bindable usage --- .../HUD/HitErrorMeters/ColourHitErrorMeter.cs | 54 ++++++------------- 1 file changed, 15 insertions(+), 39 deletions(-) diff --git a/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs b/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs index b76f2c7817..196eb23da6 100644 --- a/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs +++ b/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs @@ -1,9 +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.Collections.Generic; using System.Linq; -using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; @@ -16,11 +14,9 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters { public class ColourHitErrorMeter : HitErrorMeter { - private const int max_available_judgements = 20; private const int animation_duration = 200; private readonly JudgementFlow judgementsFlow; - private readonly BindableList<(Color4 colour, JudgementResult result)> judgements = new BindableList<(Color4 colour, JudgementResult result)>(); public ColourHitErrorMeter(HitWindows hitWindows) : base(hitWindows) @@ -29,69 +25,43 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters InternalChild = judgementsFlow = new JudgementFlow(); } - protected override void LoadComplete() - { - base.LoadComplete(); - judgementsFlow.Judgements.BindTo(judgements); - } - - public override void OnNewJudgement(JudgementResult judgement) - { - judgements.Add((GetColourForHitResult(HitWindows.ResultFor(judgement.TimeOffset)), judgement)); - - if (judgements.Count > max_available_judgements) - judgements.RemoveAt(0); - } + public override void OnNewJudgement(JudgementResult judgement) => judgementsFlow.Push(GetColourForHitResult(HitWindows.ResultFor(judgement.TimeOffset))); private class JudgementFlow : FillFlowContainer { + private const int max_available_judgements = 20; private const int drawable_judgement_size = 8; private const int spacing = 2; - public readonly BindableList<(Color4 colour, JudgementResult result)> Judgements = new BindableList<(Color4 colour, JudgementResult result)>(); - private int runningDepth; public JudgementFlow() { AutoSizeAxes = Axes.X; - Height = max_available_judgements * (drawable_judgement_size + spacing); + Height = max_available_judgements * (drawable_judgement_size + spacing) - spacing; Spacing = new Vector2(0, spacing); Direction = FillDirection.Vertical; LayoutDuration = animation_duration; LayoutEasing = Easing.OutQuint; } - protected override void LoadComplete() + public void Push(Color4 colour) { - base.LoadComplete(); - Judgements.ItemsAdded += push; - Judgements.ItemsRemoved += pop; - } + Insert(runningDepth--, new DrawableResult(colour, drawable_judgement_size)); - private void push(IEnumerable<(Color4 colour, JudgementResult result)> judgements) - { - var (colour, result) = judgements.Single(); - Insert(runningDepth--, new DrawableResult(colour, result, drawable_judgement_size)); - } - - private void pop(IEnumerable<(Color4 colour, JudgementResult result)> judgements) - { - var (colour, result) = judgements.Single(); - Children.FirstOrDefault(c => c.Result == result).FadeOut(animation_duration, Easing.OutQuint).Expire(); + if (Children.Count > max_available_judgements) + Children.FirstOrDefault(c => !c.IsRemoved).Remove(); } } private class DrawableResult : Container { - public JudgementResult Result { get; private set; } + public bool IsRemoved { get; private set; } private readonly CircularContainer content; - public DrawableResult(Color4 colour, JudgementResult result, int size) + public DrawableResult(Color4 colour, int size) { - Result = result; - Size = new Vector2(size); Child = content = new CircularContainer { @@ -113,6 +83,12 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters content.MoveToY(-DrawSize.Y); content.MoveToY(0, animation_duration, Easing.OutQuint); } + + public void Remove() + { + IsRemoved = true; + this.FadeOut(animation_duration, Easing.OutQuint).Expire(); + } } } } From 7a0d76ae77e5b830f158dcde6bfdb80797165e70 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 22 Dec 2019 03:41:19 +0300 Subject: [PATCH 0512/1829] Fix nullref --- osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs b/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs index 196eb23da6..d18f6f3743 100644 --- a/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs +++ b/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs @@ -50,7 +50,7 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters Insert(runningDepth--, new DrawableResult(colour, drawable_judgement_size)); if (Children.Count > max_available_judgements) - Children.FirstOrDefault(c => !c.IsRemoved).Remove(); + Children.FirstOrDefault(c => !c.IsRemoved)?.Remove(); } } From fe73b9f8d3919a0a983965f5db17569b4f2bd83d Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 22 Dec 2019 16:45:32 +0800 Subject: [PATCH 0513/1829] make HP and OD generic and instantiate CS and AR to modes that need it --- .../Mods/CatchModDifficultyAdjust.cs | 37 ++++++------ .../Mods/ManiaModDifficultyAdjust.cs | 19 ------ .../Mods/OsuModDifficultyAdjust.cs | 37 ++++++------ .../Mods/TaikoModDifficultyAdjust.cs | 19 ------ osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs | 59 +++++++++++-------- 5 files changed, 68 insertions(+), 103 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs index 127b6c1c0b..2e1e655844 100644 --- a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using osu.Framework.Bindables; +using osu.Game.Beatmaps; using osu.Game.Configuration; using osu.Game.Rulesets.Mods; @@ -9,18 +10,8 @@ namespace osu.Game.Rulesets.Catch.Mods { public class CatchModDifficultyAdjust : ModDifficultyAdjust { - [SettingSource("Drain Rate", "Override a beatmap's set HP.")] - public override BindableNumber DrainRate { get; } = new BindableFloat() - { - Precision = 0.1f, - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - }; - [SettingSource("Fruit Size", "Override a beatmap's set CS.")] - public override BindableNumber CircleSize { get; } = new BindableFloat() + public BindableNumber CircleSize { get; } = new BindableFloat() { Precision = 0.1f, MinValue = 1, @@ -30,7 +21,7 @@ namespace osu.Game.Rulesets.Catch.Mods }; [SettingSource("Approach Rate", "Override a beatmap's set AR.")] - public override BindableNumber ApproachRate { get; } = new BindableFloat() + public BindableNumber ApproachRate { get; } = new BindableFloat() { Precision = 0.1f, MinValue = 1, @@ -39,14 +30,20 @@ namespace osu.Game.Rulesets.Catch.Mods Value = 5, }; - [SettingSource("Overall Difficulty", "Override a beatmap's set OD.")] - public override BindableNumber OverallDifficulty { get; } = new BindableFloat() + protected override void UpdateSettings(BeatmapDifficulty difficulty) { - Precision = 0.1f, - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - }; + base.UpdateSettings(difficulty); + + CircleSize.Value = CircleSize.Default = difficulty.CircleSize; + ApproachRate.Value = ApproachRate.Default = difficulty.ApproachRate; + } + + protected override void ApplySettings(BeatmapDifficulty difficulty) + { + base.ApplySettings(difficulty); + + difficulty.CircleSize = CircleSize.Value; + difficulty.ApproachRate = ApproachRate.Value; + } } } diff --git a/osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs b/osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs index fd1315523c..5920e0c3b8 100644 --- a/osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs @@ -9,24 +9,5 @@ namespace osu.Game.Rulesets.Mania.Mods { public class ManiaModDifficultyAdjust : ModDifficultyAdjust { - [SettingSource("Drain Rate", "Override a beatmap's set HP.")] - public override BindableNumber DrainRate { get; } = new BindableFloat() - { - Precision = 0.1f, - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - }; - - [SettingSource("Overall Difficulty", "Override a beatmap's set OD.")] - public override BindableNumber OverallDifficulty { get; } = new BindableFloat() - { - Precision = 0.1f, - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - }; } } diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs index 4847ddc3c4..3e9c51db85 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using osu.Framework.Bindables; +using osu.Game.Beatmaps; using osu.Game.Configuration; using osu.Game.Rulesets.Mods; @@ -9,18 +10,8 @@ namespace osu.Game.Rulesets.Osu.Mods { public class OsuModDifficultyAdjust : ModDifficultyAdjust { - [SettingSource("Drain Rate", "Override a beatmap's set HP.")] - public override BindableNumber DrainRate { get; } = new BindableFloat() - { - Precision = 0.1f, - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - }; - [SettingSource("Circle Size", "Override a beatmap's set CS.")] - public override BindableNumber CircleSize { get; } = new BindableFloat() + public BindableNumber CircleSize { get; } = new BindableFloat() { Precision = 0.1f, MinValue = 1, @@ -30,7 +21,7 @@ namespace osu.Game.Rulesets.Osu.Mods }; [SettingSource("Approach Rate", "Override a beatmap's set AR.")] - public override BindableNumber ApproachRate { get; } = new BindableFloat() + public BindableNumber ApproachRate { get; } = new BindableFloat() { Precision = 0.1f, MinValue = 1, @@ -39,14 +30,20 @@ namespace osu.Game.Rulesets.Osu.Mods Value = 5, }; - [SettingSource("Overall Difficulty", "Override a beatmap's set OD.")] - public override BindableNumber OverallDifficulty { get; } = new BindableFloat() + protected override void UpdateSettings(BeatmapDifficulty difficulty) { - Precision = 0.1f, - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - }; + base.UpdateSettings(difficulty); + + CircleSize.Value = CircleSize.Default = difficulty.CircleSize; + ApproachRate.Value = ApproachRate.Default = difficulty.ApproachRate; + } + + protected override void ApplySettings(BeatmapDifficulty difficulty) + { + base.ApplySettings(difficulty); + + difficulty.CircleSize = CircleSize.Value; + difficulty.ApproachRate = ApproachRate.Value; + } } } diff --git a/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs b/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs index b7007eedcd..3c4812f922 100644 --- a/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs @@ -9,24 +9,5 @@ namespace osu.Game.Rulesets.Taiko.Mods { public class TaikoModDifficultyAdjust : ModDifficultyAdjust { - [SettingSource("Drain Rate", "Override a beatmap's set HP.")] - public override BindableNumber DrainRate { get; } = new BindableFloat() - { - Precision = 0.1f, - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - }; - - [SettingSource("Overall Difficulty", "Override a beatmap's set OD.")] - public override BindableNumber OverallDifficulty { get; } = new BindableFloat() - { - Precision = 0.1f, - MinValue = 1, - MaxValue = 10, - Default = 5, - Value = 5, - }; } } diff --git a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs index 546533709e..1405ccec8d 100644 --- a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs @@ -5,6 +5,7 @@ using osu.Game.Beatmaps; using osu.Framework.Bindables; using osu.Framework.Graphics.Sprites; using System; +using osu.Game.Configuration; namespace osu.Game.Rulesets.Mods { @@ -24,41 +25,49 @@ namespace osu.Game.Rulesets.Mods public override Type[] IncompatibleMods => new[] { typeof(ModEasy), typeof(ModHardRock) }; - public virtual BindableNumber DrainRate { get; } + [SettingSource("Drain Rate", "Override a beatmap's set HP.")] + public BindableNumber DrainRate { get; } = new BindableFloat() + { + Precision = 0.1f, + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + }; - public virtual BindableNumber CircleSize { get; } - - public virtual BindableNumber ApproachRate { get; } - - public virtual BindableNumber OverallDifficulty { get; } + [SettingSource("Overall Difficulty", "Override a beatmap's set OD.")] + public BindableNumber OverallDifficulty { get; } = new BindableFloat() + { + Precision = 0.1f, + MinValue = 1, + MaxValue = 10, + Default = 5, + Value = 5, + }; private BeatmapDifficulty difficulty; - public virtual void ApplyToDifficulty(BeatmapDifficulty difficulty) + public void ApplyToDifficulty(BeatmapDifficulty difficulty) { if (this.difficulty == null || this.difficulty.ID != difficulty.ID) { this.difficulty = difficulty; - - if (DrainRate != null) - DrainRate.Value = DrainRate.Default = difficulty.DrainRate; - - if (CircleSize != null) - CircleSize.Value = CircleSize.Default = difficulty.CircleSize; - - if (ApproachRate != null) - ApproachRate.Value = ApproachRate.Default = difficulty.ApproachRate; - - if (OverallDifficulty != null) - OverallDifficulty.Value = OverallDifficulty.Default = difficulty.OverallDifficulty; + UpdateSettings(difficulty); } else - { - difficulty.DrainRate = DrainRate?.Value ?? difficulty.DrainRate; - difficulty.CircleSize = CircleSize?.Value ?? difficulty.CircleSize; - difficulty.ApproachRate = ApproachRate?.Value ?? difficulty.ApproachRate; - difficulty.OverallDifficulty = OverallDifficulty?.Value ?? difficulty.OverallDifficulty; - } + ApplySettings(difficulty); + } + + protected virtual void UpdateSettings(BeatmapDifficulty difficulty) + { + DrainRate.Value = DrainRate.Default = difficulty.DrainRate; + OverallDifficulty.Value = OverallDifficulty.Default = difficulty.OverallDifficulty; + } + + protected virtual void ApplySettings(BeatmapDifficulty difficulty) + { + difficulty.DrainRate = DrainRate.Value; + difficulty.OverallDifficulty = OverallDifficulty.Value; } } } From 00ef2bd8d37c1b226ed39429ca0044723ebb3199 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 22 Dec 2019 16:57:07 +0800 Subject: [PATCH 0514/1829] remove unused usings --- osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs | 2 -- osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs | 2 -- 2 files changed, 4 deletions(-) diff --git a/osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs b/osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs index 5920e0c3b8..0817f8f9fc 100644 --- a/osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Mania/Mods/ManiaModDifficultyAdjust.cs @@ -1,8 +1,6 @@ // 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.Game.Configuration; using osu.Game.Rulesets.Mods; namespace osu.Game.Rulesets.Mania.Mods diff --git a/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs b/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs index 3c4812f922..56a73ad7df 100644 --- a/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs @@ -1,8 +1,6 @@ // 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.Game.Configuration; using osu.Game.Rulesets.Mods; namespace osu.Game.Rulesets.Taiko.Mods From 5d29ff29cbe4464288b299dc2841664d7c970430 Mon Sep 17 00:00:00 2001 From: mcendu Date: Sun, 22 Dec 2019 20:52:00 +0800 Subject: [PATCH 0515/1829] Animate "Good bye" instead on exit --- osu.Game/Screens/Menu/MainMenu.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/osu.Game/Screens/Menu/MainMenu.cs b/osu.Game/Screens/Menu/MainMenu.cs index 231115d1e1..8437748d9d 100644 --- a/osu.Game/Screens/Menu/MainMenu.cs +++ b/osu.Game/Screens/Menu/MainMenu.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System; +using System.Linq; using osuTK; using osuTK.Graphics; using osu.Framework.Allocation; @@ -132,6 +133,8 @@ namespace osu.Game.Screens.Menu private void confirmAndExit() { + if (exitConfirmed) return; + exitConfirmed = true; this.Exit(); } @@ -250,6 +253,12 @@ namespace osu.Game.Screens.Menu return true; } + if (dialogOverlay.CurrentDialog is ConfirmExitDialog) + { + exitConfirmed = true; + dialogOverlay.CurrentDialog.Buttons.First().Click(); + } + buttons.State = ButtonSystemState.Exit; this.FadeOut(3000); return base.OnExiting(next); From 1f41acc5b92648a2d3c51afcf775346cf9090404 Mon Sep 17 00:00:00 2001 From: mcendu Date: Sun, 22 Dec 2019 21:20:55 +0800 Subject: [PATCH 0516/1829] Integrate auto click into exit confirmed check --- osu.Game/Screens/Menu/MainMenu.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/osu.Game/Screens/Menu/MainMenu.cs b/osu.Game/Screens/Menu/MainMenu.cs index 8437748d9d..ee4d98bd89 100644 --- a/osu.Game/Screens/Menu/MainMenu.cs +++ b/osu.Game/Screens/Menu/MainMenu.cs @@ -247,14 +247,14 @@ namespace osu.Game.Screens.Menu public override bool OnExiting(IScreen next) { - if (!exitConfirmed && dialogOverlay != null && !(dialogOverlay.CurrentDialog is ConfirmExitDialog)) + if (!exitConfirmed && dialogOverlay != null) { - dialogOverlay.Push(new ConfirmExitDialog(confirmAndExit, () => exitConfirmOverlay.Abort())); - return true; - } + if (!(dialogOverlay.CurrentDialog is ConfirmExitDialog)) + { + dialogOverlay.Push(new ConfirmExitDialog(confirmAndExit, () => exitConfirmOverlay.Abort())); + return true; + } - if (dialogOverlay.CurrentDialog is ConfirmExitDialog) - { exitConfirmed = true; dialogOverlay.CurrentDialog.Buttons.First().Click(); } From 796223d3e0e3f62c640a7c4a64046c781b257d87 Mon Sep 17 00:00:00 2001 From: mcendu Date: Sun, 22 Dec 2019 21:39:25 +0800 Subject: [PATCH 0517/1829] Invert if --- osu.Game/Screens/Menu/MainMenu.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/osu.Game/Screens/Menu/MainMenu.cs b/osu.Game/Screens/Menu/MainMenu.cs index ee4d98bd89..b28d572b5c 100644 --- a/osu.Game/Screens/Menu/MainMenu.cs +++ b/osu.Game/Screens/Menu/MainMenu.cs @@ -249,14 +249,16 @@ namespace osu.Game.Screens.Menu { if (!exitConfirmed && dialogOverlay != null) { - if (!(dialogOverlay.CurrentDialog is ConfirmExitDialog)) + if (dialogOverlay.CurrentDialog is ConfirmExitDialog exitDialog) + { + exitConfirmed = true; + exitDialog.Buttons.First().Click(); + } + else { dialogOverlay.Push(new ConfirmExitDialog(confirmAndExit, () => exitConfirmOverlay.Abort())); return true; } - - exitConfirmed = true; - dialogOverlay.CurrentDialog.Buttons.First().Click(); } buttons.State = ButtonSystemState.Exit; From e2b4e3580cc55caaa7a0a0941150ab5464d063f8 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Sat, 21 Dec 2019 15:48:15 +0100 Subject: [PATCH 0518/1829] Truncate strings passed to the Discord RPC client to a maximum of 128 bytes --- osu.Desktop/DiscordRichPresence.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/osu.Desktop/DiscordRichPresence.cs b/osu.Desktop/DiscordRichPresence.cs index b53ca6161b..45552f1906 100644 --- a/osu.Desktop/DiscordRichPresence.cs +++ b/osu.Desktop/DiscordRichPresence.cs @@ -1,7 +1,10 @@ // 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 System.Text; using DiscordRPC; +using DiscordRPC.Helper; using DiscordRPC.Message; using osu.Framework.Allocation; using osu.Framework.Bindables; @@ -78,8 +81,8 @@ namespace osu.Desktop if (status.Value is UserStatusOnline && activity.Value != null) { - presence.State = activity.Value.Status; - presence.Details = getDetails(activity.Value); + presence.State = truncate(activity.Value.Status); + presence.Details = truncate(getDetails(activity.Value)); } else { @@ -97,6 +100,8 @@ namespace osu.Desktop client.SetPresence(presence); } + private string truncate(string str) => str.WithinLength(128) ? str : new string (str.TakeWhile((c, i) => Encoding.UTF8.GetByteCount(str.Substring(0, i + 1)) <= 125).ToArray()) + '…'; //the ellipsis char is 3 bytes long in UTF8 + private string getDetails(UserActivity activity) { switch (activity) From b038c192d12df09206f072214c2e20959dd4fe09 Mon Sep 17 00:00:00 2001 From: Joehu Date: Sun, 22 Dec 2019 19:47:47 -0800 Subject: [PATCH 0519/1829] Rename property to IsSwitchable --- osu.Game/Overlays/ChatOverlay.cs | 2 +- osu.Game/Screens/Select/BeatmapDetailAreaTabControl.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/ChatOverlay.cs b/osu.Game/Overlays/ChatOverlay.cs index 08043a097b..e80c51d82a 100644 --- a/osu.Game/Overlays/ChatOverlay.cs +++ b/osu.Game/Overlays/ChatOverlay.cs @@ -171,7 +171,7 @@ namespace osu.Game.Overlays d.Origin = Anchor.BottomLeft; d.RelativeSizeAxes = Axes.Both; d.OnRequestLeave = channelManager.LeaveChannel; - d.Tabbable = true; + d.IsSwitchable = true; }), } }, diff --git a/osu.Game/Screens/Select/BeatmapDetailAreaTabControl.cs b/osu.Game/Screens/Select/BeatmapDetailAreaTabControl.cs index a6933b478e..19ecdb6dbf 100644 --- a/osu.Game/Screens/Select/BeatmapDetailAreaTabControl.cs +++ b/osu.Game/Screens/Select/BeatmapDetailAreaTabControl.cs @@ -48,7 +48,7 @@ namespace osu.Game.Screens.Select Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, RelativeSizeAxes = Axes.Both, - Tabbable = true, + IsSwitchable = true, }, }, modsCheckbox = new OsuTabControlCheckbox From 6e7426a0981b8111ffc2c8b96ead455d1b5fa2d9 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 23 Dec 2019 17:44:18 +0900 Subject: [PATCH 0520/1829] Simplify/improve beatmap conversion precheck --- osu.Game.Rulesets.Catch/Beatmaps/CatchBeatmapConverter.cs | 4 ++-- osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs | 4 ++-- osu.Game.Rulesets.Osu/Beatmaps/OsuBeatmapConverter.cs | 4 ++-- osu.Game.Rulesets.Taiko/Beatmaps/TaikoBeatmapConverter.cs | 4 ++-- .../Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs | 2 +- osu.Game/Beatmaps/BeatmapConverter.cs | 7 +------ osu.Game/Beatmaps/DummyWorkingBeatmap.cs | 2 +- osu.Game/Beatmaps/IBeatmapConverter.cs | 2 +- osu.Game/Beatmaps/WorkingBeatmap.cs | 2 +- 9 files changed, 13 insertions(+), 18 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Beatmaps/CatchBeatmapConverter.cs b/osu.Game.Rulesets.Catch/Beatmaps/CatchBeatmapConverter.cs index b5497ea89f..088f187621 100644 --- a/osu.Game.Rulesets.Catch/Beatmaps/CatchBeatmapConverter.cs +++ b/osu.Game.Rulesets.Catch/Beatmaps/CatchBeatmapConverter.cs @@ -4,7 +4,7 @@ using osu.Game.Beatmaps; using osu.Game.Rulesets.Catch.Objects; using System.Collections.Generic; -using System; +using System.Linq; using osu.Game.Rulesets.Catch.UI; using osu.Game.Rulesets.Objects.Types; using osu.Game.Rulesets.Objects; @@ -19,7 +19,7 @@ namespace osu.Game.Rulesets.Catch.Beatmaps { } - protected override IEnumerable ValidConversionTypes { get; } = new[] { typeof(IHasXPosition) }; + public override bool CanConvert() => Beatmap.HitObjects.All(h => h is IHasXPosition); protected override IEnumerable ConvertHitObject(HitObject obj, IBeatmap beatmap) { diff --git a/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs b/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs index 6e4491de94..c2f92090a1 100644 --- a/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs +++ b/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs @@ -24,8 +24,6 @@ namespace osu.Game.Rulesets.Mania.Beatmaps /// private const int max_notes_for_density = 7; - protected override IEnumerable ValidConversionTypes { get; } = new[] { typeof(IHasXPosition) }; - public int TargetColumns; public bool Dual; public readonly bool IsForCurrentRuleset; @@ -69,6 +67,8 @@ namespace osu.Game.Rulesets.Mania.Beatmaps } } + public override bool CanConvert() => Beatmap.HitObjects.All(h => h is IHasXPosition || h is ManiaHitObject); + protected override Beatmap ConvertBeatmap(IBeatmap original) { BeatmapDifficulty difficulty = original.BeatmapInfo.BaseDifficulty; diff --git a/osu.Game.Rulesets.Osu/Beatmaps/OsuBeatmapConverter.cs b/osu.Game.Rulesets.Osu/Beatmaps/OsuBeatmapConverter.cs index 2296030f81..a05fb5e9de 100644 --- a/osu.Game.Rulesets.Osu/Beatmaps/OsuBeatmapConverter.cs +++ b/osu.Game.Rulesets.Osu/Beatmaps/OsuBeatmapConverter.cs @@ -7,7 +7,7 @@ using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Osu.Objects; using System.Collections.Generic; using osu.Game.Rulesets.Objects.Types; -using System; +using System.Linq; using osu.Game.Rulesets.Osu.UI; using osu.Framework.Extensions.IEnumerableExtensions; @@ -20,7 +20,7 @@ namespace osu.Game.Rulesets.Osu.Beatmaps { } - protected override IEnumerable ValidConversionTypes { get; } = new[] { typeof(IHasPosition) }; + public override bool CanConvert() => Beatmap.HitObjects.All(h => h is IHasPosition); protected override IEnumerable ConvertHitObject(HitObject original, IBeatmap beatmap) { diff --git a/osu.Game.Rulesets.Taiko/Beatmaps/TaikoBeatmapConverter.cs b/osu.Game.Rulesets.Taiko/Beatmaps/TaikoBeatmapConverter.cs index 10cc861b7e..f506f31831 100644 --- a/osu.Game.Rulesets.Taiko/Beatmaps/TaikoBeatmapConverter.cs +++ b/osu.Game.Rulesets.Taiko/Beatmaps/TaikoBeatmapConverter.cs @@ -39,14 +39,14 @@ namespace osu.Game.Rulesets.Taiko.Beatmaps private readonly bool isForCurrentRuleset; - protected override IEnumerable ValidConversionTypes { get; } = new[] { typeof(HitObject) }; - public TaikoBeatmapConverter(IBeatmap beatmap) : base(beatmap) { isForCurrentRuleset = beatmap.BeatmapInfo.Ruleset.Equals(new TaikoRuleset().RulesetInfo); } + public override bool CanConvert() => true; + protected override Beatmap ConvertBeatmap(IBeatmap original) { // Rewrite the beatmap info to add the slider velocity multiplier diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs index ae20bbc86d..f0363d2e6d 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs @@ -273,7 +273,7 @@ namespace osu.Game.Tests.Visual.Gameplay { } - protected override IEnumerable ValidConversionTypes => new[] { typeof(HitObject) }; + public override bool CanConvert() => true; protected override IEnumerable ConvertHitObject(HitObject original, IBeatmap beatmap) { diff --git a/osu.Game/Beatmaps/BeatmapConverter.cs b/osu.Game/Beatmaps/BeatmapConverter.cs index 7922843626..0964f3f1ed 100644 --- a/osu.Game/Beatmaps/BeatmapConverter.cs +++ b/osu.Game/Beatmaps/BeatmapConverter.cs @@ -33,7 +33,7 @@ namespace osu.Game.Beatmaps /// /// Whether can be converted by this . /// - public bool CanConvert => !Beatmap.HitObjects.Any() || ValidConversionTypes.All(t => Beatmap.HitObjects.Any(t.IsInstanceOfType)); + public abstract bool CanConvert(); /// /// Converts . @@ -92,11 +92,6 @@ namespace osu.Game.Beatmaps return result; } - /// - /// The types of HitObjects that can be converted to be used for this Beatmap. - /// - protected abstract IEnumerable ValidConversionTypes { get; } - /// /// Creates the that will be returned by this . /// diff --git a/osu.Game/Beatmaps/DummyWorkingBeatmap.cs b/osu.Game/Beatmaps/DummyWorkingBeatmap.cs index 46efe38d37..bfcc38e4a9 100644 --- a/osu.Game/Beatmaps/DummyWorkingBeatmap.cs +++ b/osu.Game/Beatmaps/DummyWorkingBeatmap.cs @@ -76,7 +76,7 @@ namespace osu.Game.Beatmaps public IBeatmap Beatmap { get; set; } - public bool CanConvert => true; + public bool CanConvert() => true; public IBeatmap Convert() { diff --git a/osu.Game/Beatmaps/IBeatmapConverter.cs b/osu.Game/Beatmaps/IBeatmapConverter.cs index f2213b85f1..173d5494ba 100644 --- a/osu.Game/Beatmaps/IBeatmapConverter.cs +++ b/osu.Game/Beatmaps/IBeatmapConverter.cs @@ -25,7 +25,7 @@ namespace osu.Game.Beatmaps /// /// Whether can be converted by this . /// - bool CanConvert { get; } + bool CanConvert(); /// /// Converts . diff --git a/osu.Game/Beatmaps/WorkingBeatmap.cs b/osu.Game/Beatmaps/WorkingBeatmap.cs index 1255665cf0..baa15699be 100644 --- a/osu.Game/Beatmaps/WorkingBeatmap.cs +++ b/osu.Game/Beatmaps/WorkingBeatmap.cs @@ -108,7 +108,7 @@ namespace osu.Game.Beatmaps IBeatmapConverter converter = CreateBeatmapConverter(Beatmap, rulesetInstance); // Check if the beatmap can be converted - if (!converter.CanConvert) + if (!converter.CanConvert()) throw new BeatmapInvalidForRulesetException($"{nameof(Beatmaps.Beatmap)} can not be converted for the ruleset (ruleset: {ruleset.InstantiationInfo}, converter: {converter})."); // Apply conversion mods From 3e03916c3999fe9764c6fe299ac6ae83cb070179 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 23 Dec 2019 17:45:59 +0900 Subject: [PATCH 0521/1829] Add length check back to workingbeatmap --- osu.Game/Beatmaps/WorkingBeatmap.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Beatmaps/WorkingBeatmap.cs b/osu.Game/Beatmaps/WorkingBeatmap.cs index baa15699be..6aba5257f5 100644 --- a/osu.Game/Beatmaps/WorkingBeatmap.cs +++ b/osu.Game/Beatmaps/WorkingBeatmap.cs @@ -108,7 +108,7 @@ namespace osu.Game.Beatmaps IBeatmapConverter converter = CreateBeatmapConverter(Beatmap, rulesetInstance); // Check if the beatmap can be converted - if (!converter.CanConvert()) + if (Beatmap.HitObjects.Count > 0 && !converter.CanConvert()) throw new BeatmapInvalidForRulesetException($"{nameof(Beatmaps.Beatmap)} can not be converted for the ruleset (ruleset: {ruleset.InstantiationInfo}, converter: {converter})."); // Apply conversion mods From 78b30a076f8a0a8e8cb6caba99f34c8f5e0d3579 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 23 Dec 2019 15:40:14 +0900 Subject: [PATCH 0522/1829] Add mania player test scene --- osu.Game.Rulesets.Mania.Tests/TestScenePlayer.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 osu.Game.Rulesets.Mania.Tests/TestScenePlayer.cs diff --git a/osu.Game.Rulesets.Mania.Tests/TestScenePlayer.cs b/osu.Game.Rulesets.Mania.Tests/TestScenePlayer.cs new file mode 100644 index 0000000000..cd25d162d0 --- /dev/null +++ b/osu.Game.Rulesets.Mania.Tests/TestScenePlayer.cs @@ -0,0 +1,15 @@ +// 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.Tests.Visual; + +namespace osu.Game.Rulesets.Mania.Tests +{ + public class TestScenePlayer : PlayerTestScene + { + public TestScenePlayer() + : base(new ManiaRuleset()) + { + } + } +} From 42853b5af645e4ead92c2d1ed7d9077c4d924189 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 23 Dec 2019 15:43:58 +0900 Subject: [PATCH 0523/1829] Separate head/tail notes from hold note class --- .../Objects/Drawables/DrawableHoldNote.cs | 129 +++--------------- .../Objects/Drawables/DrawableHoldNoteHead.cs | 37 +++++ .../Objects/Drawables/DrawableHoldNoteTail.cs | 74 ++++++++++ 3 files changed, 127 insertions(+), 113 deletions(-) create mode 100644 osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteHead.cs create mode 100644 osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteTail.cs diff --git a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNote.cs b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNote.cs index 87b9633c80..ca3b966d40 100644 --- a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNote.cs +++ b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNote.cs @@ -1,7 +1,6 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. -using System.Diagnostics; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Game.Rulesets.Mania.Objects.Drawables.Pieces; @@ -24,8 +23,8 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables public DrawableNote Head => headContainer.Child; public DrawableNote Tail => tailContainer.Child; - private readonly Container headContainer; - private readonly Container tailContainer; + private readonly Container headContainer; + private readonly Container tailContainer; private readonly Container tickContainer; private readonly BodyPiece bodyPiece; @@ -33,12 +32,12 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables /// /// Time at which the user started holding this hold note. Null if the user is not holding this hold note. /// - private double? holdStartTime; + internal double? HoldStartTime; /// /// Whether the hold note has been released too early and shouldn't give full score for the release. /// - private bool hasBroken; + internal bool HasBroken; public DrawableHoldNote(HoldNote hitObject) : base(hitObject) @@ -49,8 +48,8 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables { bodyPiece = new BodyPiece { RelativeSizeAxes = Axes.X }, tickContainer = new Container { RelativeSizeAxes = Axes.Both }, - headContainer = new Container { RelativeSizeAxes = Axes.Both }, - tailContainer = new Container { RelativeSizeAxes = Axes.Both }, + headContainer = new Container { RelativeSizeAxes = Axes.Both }, + tailContainer = new Container { RelativeSizeAxes = Axes.Both }, }); AccentColour.BindValueChanged(colour => @@ -65,11 +64,11 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables switch (hitObject) { - case DrawableHeadNote head: + case DrawableHoldNoteHead head: headContainer.Child = head; break; - case DrawableTailNote tail: + case DrawableHoldNoteTail tail: tailContainer.Child = tail; break; @@ -92,7 +91,7 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables switch (hitObject) { case TailNote _: - return new DrawableTailNote(this) + return new DrawableHoldNoteTail(this) { Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, @@ -100,7 +99,7 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables }; case Note _: - return new DrawableHeadNote(this) + return new DrawableHoldNoteHead(this) { Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, @@ -110,7 +109,7 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables case HoldNoteTick tick: return new DrawableHoldNoteTick(tick) { - HoldStartTime = () => holdStartTime, + HoldStartTime = () => HoldStartTime, AccentColour = { BindTarget = AccentColour } }; } @@ -146,15 +145,15 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables base.UpdateStateTransforms(state); } - protected void BeginHold() + internal void BeginHold() { - holdStartTime = Time.Current; + HoldStartTime = Time.Current; bodyPiece.Hitting = true; } protected void EndHold() { - holdStartTime = null; + HoldStartTime = null; bodyPiece.Hitting = false; } @@ -177,7 +176,7 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables public bool OnReleased(ManiaAction action) { // Make sure that the user started holding the key during the hold note - if (!holdStartTime.HasValue) + if (!HoldStartTime.HasValue) return false; if (action != Action.Value) @@ -187,105 +186,9 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables // If the key has been released too early, the user should not receive full score for the release if (!Tail.IsHit) - hasBroken = true; + HasBroken = true; return true; } - - /// - /// The head note of a hold. - /// - private class DrawableHeadNote : DrawableNote - { - private readonly DrawableHoldNote holdNote; - - public DrawableHeadNote(DrawableHoldNote holdNote) - : base(holdNote.HitObject.Head) - { - this.holdNote = holdNote; - } - - public override bool OnPressed(ManiaAction action) - { - if (!base.OnPressed(action)) - return false; - - // If the key has been released too early, the user should not receive full score for the release - if (Result.Type == HitResult.Miss) - holdNote.hasBroken = true; - - // The head note also handles early hits before the body, but we want accurate early hits to count as the body being held - // The body doesn't handle these early early hits, so we have to explicitly set the holding state here - holdNote.BeginHold(); - - return true; - } - } - - /// - /// The tail note of a hold. - /// - private class DrawableTailNote : DrawableNote - { - /// - /// Lenience of release hit windows. This is to make cases where the hold note release - /// is timed alongside presses of other hit objects less awkward. - /// Todo: This shouldn't exist for non-LegacyBeatmapDecoder beatmaps - /// - private const double release_window_lenience = 1.5; - - private readonly DrawableHoldNote holdNote; - - public DrawableTailNote(DrawableHoldNote holdNote) - : base(holdNote.HitObject.Tail) - { - this.holdNote = holdNote; - } - - protected override void CheckForResult(bool userTriggered, double timeOffset) - { - Debug.Assert(HitObject.HitWindows != null); - - // Factor in the release lenience - timeOffset /= release_window_lenience; - - if (!userTriggered) - { - if (!HitObject.HitWindows.CanBeHit(timeOffset)) - ApplyResult(r => r.Type = HitResult.Miss); - - return; - } - - var result = HitObject.HitWindows.ResultFor(timeOffset); - if (result == HitResult.None) - return; - - ApplyResult(r => - { - if (holdNote.hasBroken && (result == HitResult.Perfect || result == HitResult.Perfect)) - result = HitResult.Good; - - r.Type = result; - }); - } - - public override bool OnPressed(ManiaAction action) => false; // Tail doesn't handle key down - - public override bool OnReleased(ManiaAction action) - { - // Make sure that the user started holding the key during the hold note - if (!holdNote.holdStartTime.HasValue) - return false; - - if (action != Action.Value) - return false; - - UpdateResult(true); - - // Handled by the hold note, which will set holding = false - return false; - } - } } } diff --git a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteHead.cs b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteHead.cs new file mode 100644 index 0000000000..a1c9a09014 --- /dev/null +++ b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteHead.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.Game.Rulesets.Scoring; + +namespace osu.Game.Rulesets.Mania.Objects.Drawables +{ + /// + /// The head of a . + /// + public class DrawableHoldNoteHead : DrawableNote + { + private readonly DrawableHoldNote holdNote; + + public DrawableHoldNoteHead(DrawableHoldNote holdNote) + : base(holdNote.HitObject.Head) + { + this.holdNote = holdNote; + } + + public override bool OnPressed(ManiaAction action) + { + if (!base.OnPressed(action)) + return false; + + // If the key has been released too early, the user should not receive full score for the release + if (Result.Type == HitResult.Miss) + holdNote.HasBroken = true; + + // The head note also handles early hits before the body, but we want accurate early hits to count as the body being held + // The body doesn't handle these early early hits, so we have to explicitly set the holding state here + holdNote.BeginHold(); + + return true; + } + } +} diff --git a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteTail.cs b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteTail.cs new file mode 100644 index 0000000000..2b23fb1eef --- /dev/null +++ b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteTail.cs @@ -0,0 +1,74 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System.Diagnostics; +using osu.Game.Rulesets.Scoring; + +namespace osu.Game.Rulesets.Mania.Objects.Drawables +{ + /// + /// The tail of a . + /// + public class DrawableHoldNoteTail : DrawableNote + { + /// + /// Lenience of release hit windows. This is to make cases where the hold note release + /// is timed alongside presses of other hit objects less awkward. + /// Todo: This shouldn't exist for non-LegacyBeatmapDecoder beatmaps + /// + private const double release_window_lenience = 1.5; + + private readonly DrawableHoldNote holdNote; + + public DrawableHoldNoteTail(DrawableHoldNote holdNote) + : base(holdNote.HitObject.Tail) + { + this.holdNote = holdNote; + } + + protected override void CheckForResult(bool userTriggered, double timeOffset) + { + Debug.Assert(HitObject.HitWindows != null); + + // Factor in the release lenience + timeOffset /= release_window_lenience; + + if (!userTriggered) + { + if (!HitObject.HitWindows.CanBeHit(timeOffset)) + ApplyResult(r => r.Type = HitResult.Miss); + + return; + } + + var result = HitObject.HitWindows.ResultFor(timeOffset); + if (result == HitResult.None) + return; + + ApplyResult(r => + { + if (holdNote.HasBroken && (result == HitResult.Perfect || result == HitResult.Perfect)) + result = HitResult.Good; + + r.Type = result; + }); + } + + public override bool OnPressed(ManiaAction action) => false; // Tail doesn't handle key down + + public override bool OnReleased(ManiaAction action) + { + // Make sure that the user started holding the key during the hold note + if (!holdNote.HoldStartTime.HasValue) + return false; + + if (action != Action.Value) + return false; + + UpdateResult(true); + + // Handled by the hold note, which will set holding = false + return false; + } + } +} From 7ac6f68de8c4b7ce07d5aab461ff6cb9831558ca Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 23 Dec 2019 17:48:48 +0900 Subject: [PATCH 0524/1829] Rewrite hold note input handling --- .../HoldNoteNoteSelectionBlueprint.cs | 2 +- .../Objects/Drawables/DrawableHoldNote.cs | 58 +++++++++++-------- .../Objects/Drawables/DrawableHoldNoteHead.cs | 21 +------ .../Objects/Drawables/DrawableHoldNoteTail.cs | 19 ++---- 4 files changed, 41 insertions(+), 59 deletions(-) diff --git a/osu.Game.Rulesets.Mania/Edit/Blueprints/HoldNoteNoteSelectionBlueprint.cs b/osu.Game.Rulesets.Mania/Edit/Blueprints/HoldNoteNoteSelectionBlueprint.cs index acce41db6f..4e73883de0 100644 --- a/osu.Game.Rulesets.Mania/Edit/Blueprints/HoldNoteNoteSelectionBlueprint.cs +++ b/osu.Game.Rulesets.Mania/Edit/Blueprints/HoldNoteNoteSelectionBlueprint.cs @@ -29,7 +29,7 @@ namespace osu.Game.Rulesets.Mania.Edit.Blueprints // Todo: This shouldn't exist, mania should not reference the drawable hitobject directly. if (DrawableObject.IsLoaded) { - DrawableNote note = position == HoldNotePosition.Start ? DrawableObject.Head : DrawableObject.Tail; + DrawableNote note = position == HoldNotePosition.Start ? (DrawableNote)DrawableObject.Head : DrawableObject.Tail; Anchor = note.Anchor; Origin = note.Origin; diff --git a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNote.cs b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNote.cs index ca3b966d40..c4a3e23cce 100644 --- a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNote.cs +++ b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNote.cs @@ -20,8 +20,8 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables { public override bool DisplayResult => false; - public DrawableNote Head => headContainer.Child; - public DrawableNote Tail => tailContainer.Child; + public DrawableHoldNoteHead Head => headContainer.Child; + public DrawableHoldNoteTail Tail => tailContainer.Child; private readonly Container headContainer; private readonly Container tailContainer; @@ -124,12 +124,6 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables bodyPiece.Anchor = bodyPiece.Origin = e.NewValue == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft; } - protected override void CheckForResult(bool userTriggered, double timeOffset) - { - if (Tail.AllJudged) - ApplyResult(r => r.Type = HitResult.Perfect); - } - protected override void Update() { base.Update(); @@ -145,44 +139,52 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables base.UpdateStateTransforms(state); } - internal void BeginHold() + protected override void CheckForResult(bool userTriggered, double timeOffset) { - HoldStartTime = Time.Current; - bodyPiece.Hitting = true; - } + if (Tail.AllJudged) + ApplyResult(r => r.Type = HitResult.Perfect); - protected void EndHold() - { - HoldStartTime = null; - bodyPiece.Hitting = false; + if (Tail.Result.Type == HitResult.Miss) + HasBroken = true; } public bool OnPressed(ManiaAction action) { - // Make sure the action happened within the body of the hold note - if (Time.Current < HitObject.StartTime || Time.Current > HitObject.EndTime) + if (AllJudged) return false; if (action != Action.Value) return false; - // The user has pressed during the body of the hold note, after the head note and its hit windows have passed - // and within the limited range of the above if-statement. This state will be managed by the head note if the - // user has pressed during the hit windows of the head note. - BeginHold(); + beginHoldAt(Time.Current - Head.HitObject.StartTime); + Head.UpdateResult(); + return true; } + private void beginHoldAt(double timeOffset) + { + if (timeOffset < -Head.HitObject.HitWindows.WindowFor(HitResult.Miss)) + return; + + HoldStartTime = Time.Current; + bodyPiece.Hitting = true; + } + public bool OnReleased(ManiaAction action) { - // Make sure that the user started holding the key during the hold note - if (!HoldStartTime.HasValue) + if (AllJudged) return false; if (action != Action.Value) return false; - EndHold(); + // Make sure a hold was started + if (HoldStartTime == null) + return false; + + Tail.UpdateResult(); + endHold(); // If the key has been released too early, the user should not receive full score for the release if (!Tail.IsHit) @@ -190,5 +192,11 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables return true; } + + private void endHold() + { + HoldStartTime = null; + bodyPiece.Hitting = false; + } } } diff --git a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteHead.cs b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteHead.cs index a1c9a09014..a5d03bf765 100644 --- a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteHead.cs +++ b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteHead.cs @@ -1,8 +1,6 @@ // 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.Rulesets.Scoring; - namespace osu.Game.Rulesets.Mania.Objects.Drawables { /// @@ -10,28 +8,15 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables /// public class DrawableHoldNoteHead : DrawableNote { - private readonly DrawableHoldNote holdNote; - public DrawableHoldNoteHead(DrawableHoldNote holdNote) : base(holdNote.HitObject.Head) { - this.holdNote = holdNote; } - public override bool OnPressed(ManiaAction action) - { - if (!base.OnPressed(action)) - return false; + public void UpdateResult() => base.UpdateResult(true); - // If the key has been released too early, the user should not receive full score for the release - if (Result.Type == HitResult.Miss) - holdNote.HasBroken = true; + public override bool OnPressed(ManiaAction action) => false; // Handled by the hold note - // The head note also handles early hits before the body, but we want accurate early hits to count as the body being held - // The body doesn't handle these early early hits, so we have to explicitly set the holding state here - holdNote.BeginHold(); - - return true; - } + public override bool OnReleased(ManiaAction action) => false; // Handled by the hold note } } diff --git a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteTail.cs b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteTail.cs index 2b23fb1eef..a1f34a6db2 100644 --- a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteTail.cs +++ b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteTail.cs @@ -26,6 +26,8 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables this.holdNote = holdNote; } + public void UpdateResult() => base.UpdateResult(true); + protected override void CheckForResult(bool userTriggered, double timeOffset) { Debug.Assert(HitObject.HitWindows != null); @@ -54,21 +56,8 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables }); } - public override bool OnPressed(ManiaAction action) => false; // Tail doesn't handle key down + public override bool OnPressed(ManiaAction action) => false; // Handled by the hold note - public override bool OnReleased(ManiaAction action) - { - // Make sure that the user started holding the key during the hold note - if (!holdNote.HoldStartTime.HasValue) - return false; - - if (action != Action.Value) - return false; - - UpdateResult(true); - - // Handled by the hold note, which will set holding = false - return false; - } + public override bool OnReleased(ManiaAction action) => false; // Handled by the hold note } } From 7bb4a08f10a534246bd4f5ccce2c23e89044506e Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 23 Dec 2019 18:35:40 +0900 Subject: [PATCH 0525/1829] Add failing tests --- .../TestSceneHoldNoteInput.cs | 314 ++++++++++++++++++ 1 file changed, 314 insertions(+) create mode 100644 osu.Game.Rulesets.Mania.Tests/TestSceneHoldNoteInput.cs diff --git a/osu.Game.Rulesets.Mania.Tests/TestSceneHoldNoteInput.cs b/osu.Game.Rulesets.Mania.Tests/TestSceneHoldNoteInput.cs new file mode 100644 index 0000000000..8682604b13 --- /dev/null +++ b/osu.Game.Rulesets.Mania.Tests/TestSceneHoldNoteInput.cs @@ -0,0 +1,314 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System.Collections.Generic; +using NUnit.Framework; +using osu.Framework.Screens; +using osu.Game.Beatmaps; +using osu.Game.Beatmaps.ControlPoints; +using osu.Game.Replays; +using osu.Game.Rulesets.Judgements; +using osu.Game.Rulesets.Mania.Objects; +using osu.Game.Rulesets.Mania.Replays; +using osu.Game.Rulesets.Replays; +using osu.Game.Rulesets.Scoring; +using osu.Game.Scoring; +using osu.Game.Screens.Play; +using osu.Game.Tests.Visual; + +namespace osu.Game.Rulesets.Mania.Tests +{ + public class TestSceneHoldNoteInput : RateAdjustedBeatmapTestScene + { + private const double time_before_head = 250; + private const double time_head = 1500; + private const double time_during_hold_1 = 2500; + private const double time_tail = 4000; + private const double time_after_tail = 5250; + + private List judgementResults; + private bool allJudgedFired; + + /// + /// -----[ ]----- + /// o o + /// + [Test] + public void TestNoInput() + { + performTest(new List + { + new ManiaReplayFrame(time_before_head), + new ManiaReplayFrame(time_after_tail), + }); + + assertHeadJudgement(HitResult.Miss); + assertTickJudgement(HitResult.Miss); + assertTailJudgement(HitResult.Miss); + assertNoteJudgement(HitResult.Perfect); + } + + /// + /// -----[ ]----- + /// x o + /// + [Test] + public void TestPressTooEarlyAndReleaseAfterTail() + { + performTest(new List + { + new ManiaReplayFrame(time_before_head, ManiaAction.Key1), + new ManiaReplayFrame(time_after_tail, ManiaAction.Key1), + }); + + assertHeadJudgement(HitResult.Miss); + assertTickJudgement(HitResult.Miss); + assertTailJudgement(HitResult.Miss); + } + + /// + /// -----[ ]----- + /// x o + /// + [Test] + public void TestPressTooEarlyAndReleaseAtTail() + { + performTest(new List + { + new ManiaReplayFrame(time_before_head, ManiaAction.Key1), + new ManiaReplayFrame(time_tail), + }); + + assertHeadJudgement(HitResult.Miss); + assertTickJudgement(HitResult.Miss); + assertTailJudgement(HitResult.Miss); + } + + /// + /// -----[ ]----- + /// xo x o + /// + [Test] + public void TestPressTooEarlyThenPressAtStartAndReleaseAfterTail() + { + performTest(new List + { + new ManiaReplayFrame(time_before_head, ManiaAction.Key1), + new ManiaReplayFrame(time_before_head + 10), + new ManiaReplayFrame(time_head, ManiaAction.Key1), + new ManiaReplayFrame(time_after_tail), + }); + + assertHeadJudgement(HitResult.Perfect); + assertTickJudgement(HitResult.Perfect); + assertTailJudgement(HitResult.Miss); + } + + /// + /// -----[ ]----- + /// xo x o + /// + [Test] + public void TestPressTooEarlyThenPressAtStartAndReleaseAtTail() + { + performTest(new List + { + new ManiaReplayFrame(time_before_head, ManiaAction.Key1), + new ManiaReplayFrame(time_before_head + 10), + new ManiaReplayFrame(time_head, ManiaAction.Key1), + new ManiaReplayFrame(time_tail), + }); + + assertHeadJudgement(HitResult.Perfect); + assertTickJudgement(HitResult.Perfect); + assertTailJudgement(HitResult.Perfect); + } + + /// + /// -----[ ]----- + /// xo o + /// + [Test] + public void TestPressAtStartAndBreak() + { + performTest(new List + { + new ManiaReplayFrame(time_head, ManiaAction.Key1), + new ManiaReplayFrame(time_head + 10), + new ManiaReplayFrame(time_after_tail), + }); + + assertHeadJudgement(HitResult.Perfect); + assertTickJudgement(HitResult.Miss); + assertTailJudgement(HitResult.Miss); + } + + /// + /// -----[ ]----- + /// xo x o + /// + [Test] + public void TestPressAtStartThenBreakThenRepressAndReleaseAfterTail() + { + performTest(new List + { + new ManiaReplayFrame(time_head, ManiaAction.Key1), + new ManiaReplayFrame(time_head + 10), + new ManiaReplayFrame(time_during_hold_1, ManiaAction.Key1), + new ManiaReplayFrame(time_after_tail), + }); + + assertHeadJudgement(HitResult.Perfect); + assertTickJudgement(HitResult.Perfect); + assertTailJudgement(HitResult.Miss); + } + + /// + /// -----[ ]----- + /// xo x o o + /// + [Test] + public void TestPressAtStartThenBreakThenRepressAndReleaseAtTail() + { + performTest(new List + { + new ManiaReplayFrame(time_head, ManiaAction.Key1), + new ManiaReplayFrame(time_head + 10), + new ManiaReplayFrame(time_during_hold_1, ManiaAction.Key1), + new ManiaReplayFrame(time_tail), + }); + + assertHeadJudgement(HitResult.Perfect); + assertTickJudgement(HitResult.Perfect); + assertTailJudgement(HitResult.Meh); + } + + /// + /// -----[ ]----- + /// x o + /// + [Test] + public void TestPressDuringNoteAndReleaseAfterTail() + { + performTest(new List + { + new ManiaReplayFrame(time_during_hold_1, ManiaAction.Key1), + new ManiaReplayFrame(time_after_tail), + }); + + assertHeadJudgement(HitResult.Miss); + assertTickJudgement(HitResult.Perfect); + assertTailJudgement(HitResult.Miss); + } + + /// + /// -----[ ]----- + /// x o o + /// + [Test] + public void TestPressDuringNoteAndReleaseAtTail() + { + performTest(new List + { + new ManiaReplayFrame(time_during_hold_1, ManiaAction.Key1), + new ManiaReplayFrame(time_tail), + }); + + assertHeadJudgement(HitResult.Miss); + assertTickJudgement(HitResult.Perfect); + assertTailJudgement(HitResult.Meh); + } + + /// + /// -----[ ]----- + /// xo o + /// + [Test] + public void TestPressAndReleaseAtTail() + { + performTest(new List + { + new ManiaReplayFrame(time_tail, ManiaAction.Key1), + new ManiaReplayFrame(time_tail + 10), + }); + + assertHeadJudgement(HitResult.Miss); + assertTickJudgement(HitResult.Miss); + assertTailJudgement(HitResult.Meh); + } + + private void assertHeadJudgement(HitResult result) + => AddAssert($"head judged as{result}", () => judgementResults[0].Type == result); + + private void assertTailJudgement(HitResult result) + => AddAssert($"tail judged as {result}", () => judgementResults[^2].Type == result); + + private void assertNoteJudgement(HitResult result) + => AddAssert($"hold note judged as {result}", () => judgementResults[^1].Type == result); + + private void assertTickJudgement(HitResult result) + => AddAssert($"tick judged as {result}", () => judgementResults[6].Type == result); // arbitrary tick + + private ScoreAccessibleReplayPlayer currentPlayer; + + private void performTest(List frames) + { + AddStep("load player", () => + { + Beatmap.Value = CreateWorkingBeatmap(new Beatmap + { + HitObjects = + { + new HoldNote + { + StartTime = time_head, + Duration = time_tail - time_head, + Column = 0, + } + }, + BeatmapInfo = + { + BaseDifficulty = new BeatmapDifficulty { SliderTickRate = 4 }, + Ruleset = new ManiaRuleset().RulesetInfo + }, + }); + + Beatmap.Value.Beatmap.ControlPointInfo.Add(0, new DifficultyControlPoint { SpeedMultiplier = 0.1f }); + + var p = new ScoreAccessibleReplayPlayer(new Score { Replay = new Replay { Frames = frames } }); + + p.OnLoadComplete += _ => + { + p.ScoreProcessor.NewJudgement += result => + { + if (currentPlayer == p) judgementResults.Add(result); + }; + p.ScoreProcessor.AllJudged += () => + { + if (currentPlayer == p) allJudgedFired = true; + }; + }; + + LoadScreen(currentPlayer = p); + allJudgedFired = false; + judgementResults = new List(); + }); + + AddUntilStep("Beatmap at 0", () => Beatmap.Value.Track.CurrentTime == 0); + AddUntilStep("Wait until player is loaded", () => currentPlayer.IsCurrentScreen()); + AddUntilStep("Wait for all judged", () => allJudgedFired); + } + + private class ScoreAccessibleReplayPlayer : ReplayPlayer + { + public new ScoreProcessor ScoreProcessor => base.ScoreProcessor; + + protected override bool PauseOnFocusLost => false; + + public ScoreAccessibleReplayPlayer(Score score) + : base(score, false, false) + { + } + } + } +} From d6fd1007c46228c1d4df70c7855ad9bd3f3c3d0d Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 23 Dec 2019 18:48:14 +0900 Subject: [PATCH 0526/1829] internal -> public --- osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNote.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNote.cs b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNote.cs index c4a3e23cce..155adb958b 100644 --- a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNote.cs +++ b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNote.cs @@ -32,12 +32,12 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables /// /// Time at which the user started holding this hold note. Null if the user is not holding this hold note. /// - internal double? HoldStartTime; + public double? HoldStartTime { get; private set; } /// /// Whether the hold note has been released too early and shouldn't give full score for the release. /// - internal bool HasBroken; + public bool HasBroken { get; private set; } public DrawableHoldNote(HoldNote hitObject) : base(hitObject) From 63c96d5a83560e864d62585aa27e9443bd968236 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 23 Dec 2019 18:49:08 +0900 Subject: [PATCH 0527/1829] Fix tail note not properly capping result --- .../Objects/Drawables/DrawableHoldNoteTail.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteTail.cs b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteTail.cs index a1f34a6db2..a660144dd1 100644 --- a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteTail.cs +++ b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteTail.cs @@ -49,8 +49,9 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables ApplyResult(r => { - if (holdNote.HasBroken && (result == HitResult.Perfect || result == HitResult.Perfect)) - result = HitResult.Good; + // If the head wasn't hit or the hold note was broken, cap the max score to Meh. + if (result > HitResult.Meh && (!holdNote.Head.IsHit || holdNote.HasBroken)) + result = HitResult.Meh; r.Type = result; }); From d5288760a7e85fd60320dbbc6b91c88737e8cf7d Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 23 Dec 2019 18:50:18 +0900 Subject: [PATCH 0528/1829] Fix test text --- osu.Game.Rulesets.Mania.Tests/TestSceneHoldNoteInput.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Mania.Tests/TestSceneHoldNoteInput.cs b/osu.Game.Rulesets.Mania.Tests/TestSceneHoldNoteInput.cs index 8682604b13..7b0cf40d45 100644 --- a/osu.Game.Rulesets.Mania.Tests/TestSceneHoldNoteInput.cs +++ b/osu.Game.Rulesets.Mania.Tests/TestSceneHoldNoteInput.cs @@ -238,7 +238,7 @@ namespace osu.Game.Rulesets.Mania.Tests } private void assertHeadJudgement(HitResult result) - => AddAssert($"head judged as{result}", () => judgementResults[0].Type == result); + => AddAssert($"head judged as {result}", () => judgementResults[0].Type == result); private void assertTailJudgement(HitResult result) => AddAssert($"tail judged as {result}", () => judgementResults[^2].Type == result); From 125f4286ae75fec93c83a50c243536782a898aed Mon Sep 17 00:00:00 2001 From: Lucas A Date: Mon, 23 Dec 2019 10:55:44 +0100 Subject: [PATCH 0529/1829] Move truncate() to a method body --- osu.Desktop/DiscordRichPresence.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/osu.Desktop/DiscordRichPresence.cs b/osu.Desktop/DiscordRichPresence.cs index 45552f1906..cd5fba533b 100644 --- a/osu.Desktop/DiscordRichPresence.cs +++ b/osu.Desktop/DiscordRichPresence.cs @@ -100,7 +100,13 @@ namespace osu.Desktop client.SetPresence(presence); } - private string truncate(string str) => str.WithinLength(128) ? str : new string (str.TakeWhile((c, i) => Encoding.UTF8.GetByteCount(str.Substring(0, i + 1)) <= 125).ToArray()) + '…'; //the ellipsis char is 3 bytes long in UTF8 + private string truncate(string str) + { + if (str.WithinLength(128)) + return str; + + return new string(str.TakeWhile((c, i) => Encoding.UTF8.GetByteCount(str.Substring(0, i + 1)) <= 125).ToArray()) + '…'; //the ellipsis char is 3 bytes long in UTF8 + } private string getDetails(UserActivity activity) { From c766477abc64c192f458d8aca45edb7fe47e40db Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 23 Dec 2019 19:08:16 +0900 Subject: [PATCH 0530/1829] Fix testcase containing bad hitobject --- osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs index 02ce77e707..bd9d948782 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs @@ -102,7 +102,7 @@ namespace osu.Game.Rulesets.Osu.Tests EndTime = 6000, }, // placeholder object to avoid hitting the results screen - new HitObject + new HitCircle { StartTime = 99999, } From c7936e40d5c2b02a37ef7821b5d9698146e68a88 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 23 Dec 2019 19:13:36 +0900 Subject: [PATCH 0531/1829] Protect against potential nullref --- osu.Game/Screens/Play/Player.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index 5dfdeb5ebc..8970f9ac88 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -562,7 +562,7 @@ namespace osu.Game.Screens.Play // GameplayClockContainer performs seeks / start / stop operations on the beatmap's track. // as we are no longer the current screen, we cannot guarantee the track is still usable. - GameplayClockContainer.StopUsingBeatmapClock(); + GameplayClockContainer?.StopUsingBeatmapClock(); fadeOut(); return base.OnExiting(next); From 43024122430816e425d69174bf554edfd2be4930 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 23 Dec 2019 19:34:12 +0900 Subject: [PATCH 0532/1829] Simplify implementation --- osu.Desktop/DiscordRichPresence.cs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/osu.Desktop/DiscordRichPresence.cs b/osu.Desktop/DiscordRichPresence.cs index cd5fba533b..85e4b8db55 100644 --- a/osu.Desktop/DiscordRichPresence.cs +++ b/osu.Desktop/DiscordRichPresence.cs @@ -1,10 +1,9 @@ // 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 System; using System.Text; using DiscordRPC; -using DiscordRPC.Helper; using DiscordRPC.Message; using osu.Framework.Allocation; using osu.Framework.Bindables; @@ -100,12 +99,19 @@ namespace osu.Desktop client.SetPresence(presence); } - private string truncate(string str) + private string truncate(ReadOnlySpan str) { - if (str.WithinLength(128)) - return str; + if (Encoding.UTF8.GetByteCount(str) < 128) + return new string(str); - return new string(str.TakeWhile((c, i) => Encoding.UTF8.GetByteCount(str.Substring(0, i + 1)) <= 125).ToArray()) + '…'; //the ellipsis char is 3 bytes long in UTF8 + int ellipsisLength = Encoding.UTF8.GetByteCount(new[] { '…' }); + + do + { + str = str[..^1]; + } while (Encoding.UTF8.GetByteCount(str) + ellipsisLength > 128); + + return new string(str) + '…'; } private string getDetails(UserActivity activity) From b9bc1c954eae7513a1fbb31e90cc71ed43c2aabd Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 23 Dec 2019 19:50:35 +0900 Subject: [PATCH 0533/1829] Disable automatic retry of failed discord RPC connections --- osu.Desktop/DiscordRichPresence.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/osu.Desktop/DiscordRichPresence.cs b/osu.Desktop/DiscordRichPresence.cs index 8818cef8eb..71b73ec78e 100644 --- a/osu.Desktop/DiscordRichPresence.cs +++ b/osu.Desktop/DiscordRichPresence.cs @@ -43,6 +43,10 @@ namespace osu.Desktop }; client.OnReady += onReady; + + // safety measure for now, until we performance test / improve backoff for failed connections. + client.OnConnectionFailed += (_, __) => client.Deinitialize(); + client.OnError += (_, e) => Logger.Log($"An error occurred with Discord RPC Client: {e.Code} {e.Message}", LoggingTarget.Network); (user = provider.LocalUser.GetBoundCopy()).BindValueChanged(u => From f1f9e1f658cca54a0888629a6cd9e5c761fe3115 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 23 Dec 2019 19:56:05 +0900 Subject: [PATCH 0534/1829] Don't truncate with exactly 128 bytes --- osu.Desktop/DiscordRichPresence.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Desktop/DiscordRichPresence.cs b/osu.Desktop/DiscordRichPresence.cs index 9d2fad2e1a..ce878edda8 100644 --- a/osu.Desktop/DiscordRichPresence.cs +++ b/osu.Desktop/DiscordRichPresence.cs @@ -100,7 +100,7 @@ namespace osu.Desktop private string truncate(ReadOnlySpan str) { - if (Encoding.UTF8.GetByteCount(str) < 128) + if (Encoding.UTF8.GetByteCount(str) <= 128) return new string(str); int ellipsisLength = Encoding.UTF8.GetByteCount(new[] { '…' }); From a324bfbc2c6960016362c647458f1dfaf536a8c1 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 24 Dec 2019 13:48:27 +0900 Subject: [PATCH 0535/1829] Remove LegacyID from Ruleset --- osu.Game.Rulesets.Catch/CatchRuleset.cs | 4 ++-- osu.Game.Rulesets.Mania/ManiaRuleset.cs | 4 ++-- osu.Game.Rulesets.Osu/OsuRuleset.cs | 4 ++-- osu.Game.Rulesets.Taiko/TaikoRuleset.cs | 4 ++-- osu.Game/Rulesets/ILegacyRuleset.cs | 13 +++++++++++++ osu.Game/Rulesets/Ruleset.cs | 8 +------- osu.Game/Rulesets/RulesetStore.cs | 11 ++++++++--- 7 files changed, 30 insertions(+), 18 deletions(-) create mode 100644 osu.Game/Rulesets/ILegacyRuleset.cs diff --git a/osu.Game.Rulesets.Catch/CatchRuleset.cs b/osu.Game.Rulesets.Catch/CatchRuleset.cs index b8a844cb86..063294f836 100644 --- a/osu.Game.Rulesets.Catch/CatchRuleset.cs +++ b/osu.Game.Rulesets.Catch/CatchRuleset.cs @@ -24,7 +24,7 @@ using System; namespace osu.Game.Rulesets.Catch { - public class CatchRuleset : Ruleset + public class CatchRuleset : Ruleset, ILegacyRuleset { public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => new DrawableCatchRuleset(this, beatmap, mods); @@ -134,7 +134,7 @@ namespace osu.Game.Rulesets.Catch public override PerformanceCalculator CreatePerformanceCalculator(WorkingBeatmap beatmap, ScoreInfo score) => new CatchPerformanceCalculator(this, beatmap, score); - public override int? LegacyID => 2; + public int LegacyID => 2; public override IConvertibleReplayFrame CreateConvertibleReplayFrame() => new CatchReplayFrame(); } diff --git a/osu.Game.Rulesets.Mania/ManiaRuleset.cs b/osu.Game.Rulesets.Mania/ManiaRuleset.cs index bf630cf892..dc2485bfb0 100644 --- a/osu.Game.Rulesets.Mania/ManiaRuleset.cs +++ b/osu.Game.Rulesets.Mania/ManiaRuleset.cs @@ -31,7 +31,7 @@ using osu.Game.Scoring; namespace osu.Game.Rulesets.Mania { - public class ManiaRuleset : Ruleset + public class ManiaRuleset : Ruleset, ILegacyRuleset { public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => new DrawableManiaRuleset(this, beatmap, mods); @@ -178,7 +178,7 @@ namespace osu.Game.Rulesets.Mania public override DifficultyCalculator CreateDifficultyCalculator(WorkingBeatmap beatmap) => new ManiaDifficultyCalculator(this, beatmap); - public override int? LegacyID => 3; + public int LegacyID => 3; public override IConvertibleReplayFrame CreateConvertibleReplayFrame() => new ManiaReplayFrame(); diff --git a/osu.Game.Rulesets.Osu/OsuRuleset.cs b/osu.Game.Rulesets.Osu/OsuRuleset.cs index 27af615935..cab1980dde 100644 --- a/osu.Game.Rulesets.Osu/OsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/OsuRuleset.cs @@ -32,7 +32,7 @@ using System; namespace osu.Game.Rulesets.Osu { - public class OsuRuleset : Ruleset + public class OsuRuleset : Ruleset, ILegacyRuleset { public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => new DrawableOsuRuleset(this, beatmap, mods); @@ -178,7 +178,7 @@ namespace osu.Game.Rulesets.Osu public override ISkin CreateLegacySkinProvider(ISkinSource source) => new OsuLegacySkinTransformer(source); - public override int? LegacyID => 0; + public int LegacyID => 0; public override IConvertibleReplayFrame CreateConvertibleReplayFrame() => new OsuReplayFrame(); diff --git a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs index ca7ab30867..a4cfce0dcc 100644 --- a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs +++ b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs @@ -24,7 +24,7 @@ using System; namespace osu.Game.Rulesets.Taiko { - public class TaikoRuleset : Ruleset + public class TaikoRuleset : Ruleset, ILegacyRuleset { public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => new DrawableTaikoRuleset(this, beatmap, mods); @@ -133,7 +133,7 @@ namespace osu.Game.Rulesets.Taiko public override PerformanceCalculator CreatePerformanceCalculator(WorkingBeatmap beatmap, ScoreInfo score) => new TaikoPerformanceCalculator(this, beatmap, score); - public override int? LegacyID => 1; + public int LegacyID => 1; public override IConvertibleReplayFrame CreateConvertibleReplayFrame() => new TaikoReplayFrame(); } diff --git a/osu.Game/Rulesets/ILegacyRuleset.cs b/osu.Game/Rulesets/ILegacyRuleset.cs new file mode 100644 index 0000000000..06a85b5261 --- /dev/null +++ b/osu.Game/Rulesets/ILegacyRuleset.cs @@ -0,0 +1,13 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +namespace osu.Game.Rulesets +{ + public interface ILegacyRuleset + { + /// + /// Identifies the server-side ID of a legacy ruleset. + /// + int LegacyID { get; } + } +} diff --git a/osu.Game/Rulesets/Ruleset.cs b/osu.Game/Rulesets/Ruleset.cs index 7ad93379f0..21d96123f1 100644 --- a/osu.Game/Rulesets/Ruleset.cs +++ b/osu.Game/Rulesets/Ruleset.cs @@ -26,7 +26,7 @@ namespace osu.Game.Rulesets { public abstract class Ruleset { - public readonly RulesetInfo RulesetInfo; + public RulesetInfo RulesetInfo { get; internal set; } public IEnumerable GetAllMods() => Enum.GetValues(typeof(ModType)).Cast() // Confine all mods of each mod type into a single IEnumerable @@ -103,11 +103,6 @@ namespace osu.Game.Rulesets /// The to store the settings. public virtual IRulesetConfigManager CreateConfig(SettingsStore settings) => null; - /// - /// Do not override this unless you are a legacy mode. - /// - public virtual int? LegacyID => null; - /// /// A unique short name to reference this ruleset in online requests. /// @@ -148,7 +143,6 @@ namespace osu.Game.Rulesets Name = Description, ShortName = ShortName, InstantiationInfo = GetType().AssemblyQualifiedName, - ID = LegacyID, Available = true }; } diff --git a/osu.Game/Rulesets/RulesetStore.cs b/osu.Game/Rulesets/RulesetStore.cs index 5d0c5c7ccf..5d2a7df458 100644 --- a/osu.Game/Rulesets/RulesetStore.cs +++ b/osu.Game/Rulesets/RulesetStore.cs @@ -59,16 +59,21 @@ namespace osu.Game.Rulesets var instances = loadedAssemblies.Values.Select(r => (Ruleset)Activator.CreateInstance(r)).ToList(); //add all legacy modes in correct order - foreach (var r in instances.Where(r => r.LegacyID != null).OrderBy(r => r.LegacyID)) + foreach (var r in instances.Where(r => r is ILegacyRuleset)) { - if (context.RulesetInfo.SingleOrDefault(rsi => rsi.ID == r.RulesetInfo.ID) == null) + int legacyId = ((ILegacyRuleset)r).LegacyID; + + if (context.RulesetInfo.SingleOrDefault(rsi => rsi.ID == legacyId) == null) + { + r.RulesetInfo.ID = legacyId; context.RulesetInfo.Add(r.RulesetInfo); + } } context.SaveChanges(); //add any other modes - foreach (var r in instances.Where(r => r.LegacyID == null)) + foreach (var r in instances.Where(r => !(r is ILegacyRuleset))) { if (context.RulesetInfo.FirstOrDefault(ri => ri.InstantiationInfo == r.RulesetInfo.InstantiationInfo) == null) context.RulesetInfo.Add(r.RulesetInfo); From 0bfd7579362d55a258163c70ba1a8640b1e11eff Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 24 Dec 2019 14:21:16 +0900 Subject: [PATCH 0536/1829] Make OsuTextBox use BasicTextBox --- osu.Game/Graphics/UserInterface/OsuTextBox.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/osu.Game/Graphics/UserInterface/OsuTextBox.cs b/osu.Game/Graphics/UserInterface/OsuTextBox.cs index 1cac4d76ab..72fa135699 100644 --- a/osu.Game/Graphics/UserInterface/OsuTextBox.cs +++ b/osu.Game/Graphics/UserInterface/OsuTextBox.cs @@ -12,7 +12,7 @@ using osu.Framework.Input.Events; namespace osu.Game.Graphics.UserInterface { - public class OsuTextBox : TextBox + public class OsuTextBox : BasicTextBox { protected override float LeftRightPadding => 10; @@ -41,6 +41,8 @@ namespace osu.Game.Graphics.UserInterface BackgroundCommit = BorderColour = colour.Yellow; } + protected override Color4 SelectionColour => new Color4(249, 90, 255, 255); + protected override void OnFocus(FocusEvent e) { BorderThickness = 3; From 0677f746aaf2fb7bbf134b7dc1237c04cabbf24d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 24 Dec 2019 16:02:16 +0900 Subject: [PATCH 0537/1829] Provide the ruleset to converter classes --- osu.Game.Rulesets.Catch/Beatmaps/CatchBeatmapConverter.cs | 4 ++-- osu.Game.Rulesets.Catch/CatchRuleset.cs | 2 +- osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs | 6 +++--- osu.Game.Rulesets.Mania/ManiaRuleset.cs | 2 +- osu.Game.Rulesets.Mania/Replays/ManiaReplayFrame.cs | 2 +- osu.Game.Rulesets.Osu/Beatmaps/OsuBeatmapConverter.cs | 4 ++-- osu.Game.Rulesets.Osu/OsuRuleset.cs | 2 +- osu.Game.Rulesets.Taiko/Beatmaps/TaikoBeatmapConverter.cs | 6 +++--- osu.Game.Rulesets.Taiko/TaikoRuleset.cs | 2 +- osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapDecoderTest.cs | 5 +++-- .../Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs | 6 +++--- osu.Game/Beatmaps/BeatmapConverter.cs | 3 ++- 12 files changed, 23 insertions(+), 21 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Beatmaps/CatchBeatmapConverter.cs b/osu.Game.Rulesets.Catch/Beatmaps/CatchBeatmapConverter.cs index b5497ea89f..036c86ffa3 100644 --- a/osu.Game.Rulesets.Catch/Beatmaps/CatchBeatmapConverter.cs +++ b/osu.Game.Rulesets.Catch/Beatmaps/CatchBeatmapConverter.cs @@ -14,8 +14,8 @@ namespace osu.Game.Rulesets.Catch.Beatmaps { public class CatchBeatmapConverter : BeatmapConverter { - public CatchBeatmapConverter(IBeatmap beatmap) - : base(beatmap) + public CatchBeatmapConverter(IBeatmap beatmap, Ruleset ruleset) + : base(beatmap, ruleset) { } diff --git a/osu.Game.Rulesets.Catch/CatchRuleset.cs b/osu.Game.Rulesets.Catch/CatchRuleset.cs index 063294f836..b329f6cd98 100644 --- a/osu.Game.Rulesets.Catch/CatchRuleset.cs +++ b/osu.Game.Rulesets.Catch/CatchRuleset.cs @@ -30,7 +30,7 @@ namespace osu.Game.Rulesets.Catch public override ScoreProcessor CreateScoreProcessor(IBeatmap beatmap) => new CatchScoreProcessor(beatmap); - public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new CatchBeatmapConverter(beatmap); + public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new CatchBeatmapConverter(beatmap, this); public override IBeatmapProcessor CreateBeatmapProcessor(IBeatmap beatmap) => new CatchBeatmapProcessor(beatmap); public const string SHORT_NAME = "fruits"; diff --git a/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs b/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs index 6e4491de94..aac3f914a4 100644 --- a/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs +++ b/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs @@ -37,10 +37,10 @@ namespace osu.Game.Rulesets.Mania.Beatmaps private ManiaBeatmap beatmap; - public ManiaBeatmapConverter(IBeatmap beatmap) - : base(beatmap) + public ManiaBeatmapConverter(IBeatmap beatmap, Ruleset ruleset) + : base(beatmap, ruleset) { - IsForCurrentRuleset = beatmap.BeatmapInfo.Ruleset.Equals(new ManiaRuleset().RulesetInfo); + IsForCurrentRuleset = beatmap.BeatmapInfo.Ruleset.Equals(ruleset.RulesetInfo); var roundedCircleSize = Math.Round(beatmap.BeatmapInfo.BaseDifficulty.CircleSize); var roundedOverallDifficulty = Math.Round(beatmap.BeatmapInfo.BaseDifficulty.OverallDifficulty); diff --git a/osu.Game.Rulesets.Mania/ManiaRuleset.cs b/osu.Game.Rulesets.Mania/ManiaRuleset.cs index dc2485bfb0..28971b11c5 100644 --- a/osu.Game.Rulesets.Mania/ManiaRuleset.cs +++ b/osu.Game.Rulesets.Mania/ManiaRuleset.cs @@ -37,7 +37,7 @@ namespace osu.Game.Rulesets.Mania public override ScoreProcessor CreateScoreProcessor(IBeatmap beatmap) => new ManiaScoreProcessor(beatmap); - public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new ManiaBeatmapConverter(beatmap); + public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new ManiaBeatmapConverter(beatmap, this); public override PerformanceCalculator CreatePerformanceCalculator(WorkingBeatmap beatmap, ScoreInfo score) => new ManiaPerformanceCalculator(this, beatmap, score); diff --git a/osu.Game.Rulesets.Mania/Replays/ManiaReplayFrame.cs b/osu.Game.Rulesets.Mania/Replays/ManiaReplayFrame.cs index 70ba5cd938..877a9ee410 100644 --- a/osu.Game.Rulesets.Mania/Replays/ManiaReplayFrame.cs +++ b/osu.Game.Rulesets.Mania/Replays/ManiaReplayFrame.cs @@ -27,7 +27,7 @@ namespace osu.Game.Rulesets.Mania.Replays public void ConvertFrom(LegacyReplayFrame legacyFrame, IBeatmap beatmap, ReplayFrame lastFrame = null) { // We don't need to fully convert, just create the converter - var converter = new ManiaBeatmapConverter(beatmap); + var converter = new ManiaBeatmapConverter(beatmap, new ManiaRuleset()); // NB: Via co-op mod, osu-stable can have two stages with floor(col/2) and ceil(col/2) columns. This will need special handling // elsewhere in the game if we do choose to support the old co-op mod anyway. For now, assume that there is only one stage. diff --git a/osu.Game.Rulesets.Osu/Beatmaps/OsuBeatmapConverter.cs b/osu.Game.Rulesets.Osu/Beatmaps/OsuBeatmapConverter.cs index 2296030f81..7bc14c3e41 100644 --- a/osu.Game.Rulesets.Osu/Beatmaps/OsuBeatmapConverter.cs +++ b/osu.Game.Rulesets.Osu/Beatmaps/OsuBeatmapConverter.cs @@ -15,8 +15,8 @@ namespace osu.Game.Rulesets.Osu.Beatmaps { public class OsuBeatmapConverter : BeatmapConverter { - public OsuBeatmapConverter(IBeatmap beatmap) - : base(beatmap) + public OsuBeatmapConverter(IBeatmap beatmap, Ruleset ruleset) + : base(beatmap, ruleset) { } diff --git a/osu.Game.Rulesets.Osu/OsuRuleset.cs b/osu.Game.Rulesets.Osu/OsuRuleset.cs index cab1980dde..57d99df5fb 100644 --- a/osu.Game.Rulesets.Osu/OsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/OsuRuleset.cs @@ -38,7 +38,7 @@ namespace osu.Game.Rulesets.Osu public override ScoreProcessor CreateScoreProcessor(IBeatmap beatmap) => new OsuScoreProcessor(beatmap); - public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new OsuBeatmapConverter(beatmap); + public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new OsuBeatmapConverter(beatmap, this); public override IBeatmapProcessor CreateBeatmapProcessor(IBeatmap beatmap) => new OsuBeatmapProcessor(beatmap); diff --git a/osu.Game.Rulesets.Taiko/Beatmaps/TaikoBeatmapConverter.cs b/osu.Game.Rulesets.Taiko/Beatmaps/TaikoBeatmapConverter.cs index 10cc861b7e..96e7722e73 100644 --- a/osu.Game.Rulesets.Taiko/Beatmaps/TaikoBeatmapConverter.cs +++ b/osu.Game.Rulesets.Taiko/Beatmaps/TaikoBeatmapConverter.cs @@ -41,10 +41,10 @@ namespace osu.Game.Rulesets.Taiko.Beatmaps protected override IEnumerable ValidConversionTypes { get; } = new[] { typeof(HitObject) }; - public TaikoBeatmapConverter(IBeatmap beatmap) - : base(beatmap) + public TaikoBeatmapConverter(IBeatmap beatmap, Ruleset ruleset) + : base(beatmap, ruleset) { - isForCurrentRuleset = beatmap.BeatmapInfo.Ruleset.Equals(new TaikoRuleset().RulesetInfo); + isForCurrentRuleset = beatmap.BeatmapInfo.Ruleset.Equals(ruleset.RulesetInfo); } protected override Beatmap ConvertBeatmap(IBeatmap original) diff --git a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs index a4cfce0dcc..529dfe765c 100644 --- a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs +++ b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs @@ -30,7 +30,7 @@ namespace osu.Game.Rulesets.Taiko public override ScoreProcessor CreateScoreProcessor(IBeatmap beatmap) => new TaikoScoreProcessor(beatmap); - public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new TaikoBeatmapConverter(beatmap); + public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new TaikoBeatmapConverter(beatmap, this); public const string SHORT_NAME = "taiko"; diff --git a/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapDecoderTest.cs b/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapDecoderTest.cs index 26e70f19e4..33f484a9aa 100644 --- a/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapDecoderTest.cs +++ b/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapDecoderTest.cs @@ -14,6 +14,7 @@ using osu.Game.Rulesets.Objects.Types; using osu.Game.Beatmaps.Formats; using osu.Game.Beatmaps.Timing; using osu.Game.IO; +using osu.Game.Rulesets.Catch; using osu.Game.Rulesets.Catch.Beatmaps; using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Objects; @@ -313,7 +314,7 @@ namespace osu.Game.Tests.Beatmaps.Formats { var beatmap = decoder.Decode(stream); - var converted = new OsuBeatmapConverter(beatmap).Convert(); + var converted = new OsuBeatmapConverter(beatmap, new OsuRuleset()).Convert(); new OsuBeatmapProcessor(converted).PreProcess(); new OsuBeatmapProcessor(converted).PostProcess(); @@ -336,7 +337,7 @@ namespace osu.Game.Tests.Beatmaps.Formats { var beatmap = decoder.Decode(stream); - var converted = new CatchBeatmapConverter(beatmap).Convert(); + var converted = new CatchBeatmapConverter(beatmap, new CatchRuleset()).Convert(); new CatchBeatmapProcessor(converted).PreProcess(); new CatchBeatmapProcessor(converted).PostProcess(); diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs index ae20bbc86d..dc950e43bd 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs @@ -198,7 +198,7 @@ namespace osu.Game.Tests.Visual.Gameplay public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => new TestDrawableScrollingRuleset(this, beatmap, mods); - public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new TestBeatmapConverter(beatmap); + public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new TestBeatmapConverter(beatmap, null); public override DifficultyCalculator CreateDifficultyCalculator(WorkingBeatmap beatmap) => throw new NotImplementedException(); @@ -268,8 +268,8 @@ namespace osu.Game.Tests.Visual.Gameplay private class TestBeatmapConverter : BeatmapConverter { - public TestBeatmapConverter(IBeatmap beatmap) - : base(beatmap) + public TestBeatmapConverter(IBeatmap beatmap, Ruleset ruleset) + : base(beatmap, ruleset) { } diff --git a/osu.Game/Beatmaps/BeatmapConverter.cs b/osu.Game/Beatmaps/BeatmapConverter.cs index 7922843626..e6de1eebcd 100644 --- a/osu.Game/Beatmaps/BeatmapConverter.cs +++ b/osu.Game/Beatmaps/BeatmapConverter.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Linq; +using osu.Game.Rulesets; using osu.Game.Rulesets.Objects; namespace osu.Game.Beatmaps @@ -25,7 +26,7 @@ namespace osu.Game.Beatmaps public IBeatmap Beatmap { get; } - protected BeatmapConverter(IBeatmap beatmap) + protected BeatmapConverter(IBeatmap beatmap, Ruleset ruleset) { Beatmap = beatmap; } From d87203857b24c55b1bc8fb58229d9743c142044d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 24 Dec 2019 16:02:35 +0900 Subject: [PATCH 0538/1829] Move default construction into constructor --- osu.Game/Rulesets/Ruleset.cs | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/osu.Game/Rulesets/Ruleset.cs b/osu.Game/Rulesets/Ruleset.cs index 21d96123f1..107633194f 100644 --- a/osu.Game/Rulesets/Ruleset.cs +++ b/osu.Game/Rulesets/Ruleset.cs @@ -51,7 +51,14 @@ namespace osu.Game.Rulesets protected Ruleset() { - RulesetInfo = createRulesetInfo(); + RulesetInfo = new RulesetInfo + { + Name = Description, + ShortName = ShortName, + ID = (this as ILegacyRuleset)?.LegacyID, + InstantiationInfo = GetType().AssemblyQualifiedName, + Available = true + }; } /// @@ -133,17 +140,5 @@ namespace osu.Game.Rulesets /// /// An empty frame for the current ruleset, or null if unsupported. public virtual IConvertibleReplayFrame CreateConvertibleReplayFrame() => null; - - /// - /// Create a ruleset info based on this ruleset. - /// - /// A filled . - private RulesetInfo createRulesetInfo() => new RulesetInfo - { - Name = Description, - ShortName = ShortName, - InstantiationInfo = GetType().AssemblyQualifiedName, - Available = true - }; } } From 57382676422d614f87cb3e7177234b8a2068028e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 24 Dec 2019 16:05:20 +0900 Subject: [PATCH 0539/1829] Copy ruleset info over default --- osu.Game/Rulesets/RulesetInfo.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/RulesetInfo.cs b/osu.Game/Rulesets/RulesetInfo.cs index d695e0b56d..ececc18c96 100644 --- a/osu.Game/Rulesets/RulesetInfo.cs +++ b/osu.Game/Rulesets/RulesetInfo.cs @@ -20,11 +20,17 @@ namespace osu.Game.Rulesets [JsonIgnore] public bool Available { get; set; } + // TODO: this should probably be moved to RulesetStore. public virtual Ruleset CreateInstance() { if (!Available) return null; - return (Ruleset)Activator.CreateInstance(Type.GetType(InstantiationInfo)); + var ruleset = (Ruleset)Activator.CreateInstance(Type.GetType(InstantiationInfo)); + + // overwrite the pre-populated RulesetInfo with a potentially database attached copy. + ruleset.RulesetInfo = this; + + return ruleset; } public bool Equals(RulesetInfo other) => other != null && ID == other.ID && Available == other.Available && Name == other.Name && InstantiationInfo == other.InstantiationInfo; From fcb7a9ade50320e552236810c4ad5aff7b5d0e58 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 24 Dec 2019 16:16:55 +0900 Subject: [PATCH 0540/1829] Update RulesetStore to read from populated defaults --- osu.Game/Rulesets/RulesetStore.cs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/osu.Game/Rulesets/RulesetStore.cs b/osu.Game/Rulesets/RulesetStore.cs index 5d2a7df458..a389d4ff75 100644 --- a/osu.Game/Rulesets/RulesetStore.cs +++ b/osu.Game/Rulesets/RulesetStore.cs @@ -58,16 +58,11 @@ namespace osu.Game.Rulesets var instances = loadedAssemblies.Values.Select(r => (Ruleset)Activator.CreateInstance(r)).ToList(); - //add all legacy modes in correct order + //add all legacy rulesets first to ensure they have exclusive choice of primary key. foreach (var r in instances.Where(r => r is ILegacyRuleset)) { - int legacyId = ((ILegacyRuleset)r).LegacyID; - - if (context.RulesetInfo.SingleOrDefault(rsi => rsi.ID == legacyId) == null) - { - r.RulesetInfo.ID = legacyId; + if (context.RulesetInfo.SingleOrDefault(dbRuleset => dbRuleset.ID == r.RulesetInfo.ID) == null) context.RulesetInfo.Add(r.RulesetInfo); - } } context.SaveChanges(); From 00546787c889489362283dc28d998c2f035c8d3a Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 19 Dec 2019 20:36:57 +0900 Subject: [PATCH 0541/1829] Remove unused method --- osu.Game/Rulesets/Scoring/HealthProcessor.cs | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/osu.Game/Rulesets/Scoring/HealthProcessor.cs b/osu.Game/Rulesets/Scoring/HealthProcessor.cs index 8af8177083..d05e2d7b6b 100644 --- a/osu.Game/Rulesets/Scoring/HealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/HealthProcessor.cs @@ -80,23 +80,5 @@ namespace osu.Game.Rulesets.Scoring Health.Value = 1; HasFailed = false; } - - /// - /// Checks if the score is in a failed state and notifies subscribers. - /// - /// This can only ever notify subscribers once. - /// - /// - private void updateFailed(JudgementResult result) - { - if (HasFailed) - return; - - if (!DefaultFailCondition && FailConditions?.Invoke(this, result) != true) - return; - - if (Failed?.Invoke() != false) - HasFailed = true; - } } } From e088a856620a584ba4dd8b639e9033b6df7f65f8 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 24 Dec 2019 17:12:12 +0900 Subject: [PATCH 0542/1829] 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 dd11804b90..d684b73d8d 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 757e0e11fa..4c5f3e0f38 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 0dba92b975..ccfbee9a62 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From e3753ae29fb88c1aec22896abf4bdcd54df6ded6 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Mon, 23 Dec 2019 11:23:03 +0100 Subject: [PATCH 0543/1829] Make the easy mod's extra life count customizable --- osu.Game/Rulesets/Mods/ModEasy.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Mods/ModEasy.cs b/osu.Game/Rulesets/Mods/ModEasy.cs index a55ebc51d6..7f52cccbc5 100644 --- a/osu.Game/Rulesets/Mods/ModEasy.cs +++ b/osu.Game/Rulesets/Mods/ModEasy.cs @@ -5,6 +5,7 @@ using System; using osu.Framework.Bindables; using osu.Framework.Graphics.Sprites; using osu.Game.Beatmaps; +using osu.Game.Configuration; using osu.Game.Graphics; using osu.Game.Rulesets.Scoring; using osu.Game.Scoring; @@ -21,7 +22,14 @@ namespace osu.Game.Rulesets.Mods public override bool Ranked => true; public override Type[] IncompatibleMods => new[] { typeof(ModHardRock) }; - private int retries = 2; + [SettingSource("Extra Lives", "Number of extra lives")] + public Bindable Retries { get; } = new BindableInt(2) + { + MinValue = 0, + MaxValue = 10 + }; + + private int retries; private BindableNumber health; @@ -32,6 +40,8 @@ namespace osu.Game.Rulesets.Mods difficulty.ApproachRate *= ratio; difficulty.DrainRate *= ratio; difficulty.OverallDifficulty *= ratio; + + retries = Retries.Value; } public bool AllowFail From bc75bd34f6222c5fa3ccd5678d745700061e10a4 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 24 Dec 2019 18:23:09 +0900 Subject: [PATCH 0544/1829] Fix caret width having changed --- osu.Game/Graphics/UserInterface/OsuTextBox.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game/Graphics/UserInterface/OsuTextBox.cs b/osu.Game/Graphics/UserInterface/OsuTextBox.cs index 72fa135699..f5b7bc3073 100644 --- a/osu.Game/Graphics/UserInterface/OsuTextBox.cs +++ b/osu.Game/Graphics/UserInterface/OsuTextBox.cs @@ -16,6 +16,8 @@ namespace osu.Game.Graphics.UserInterface { protected override float LeftRightPadding => 10; + protected override float CaretWidth => 3; + protected override SpriteText CreatePlaceholder() => new OsuSpriteText { Font = OsuFont.GetFont(italics: true), From 36dd0e69980eb39c4df566a4ead1b5773dec737d Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 25 Dec 2019 11:14:40 +0900 Subject: [PATCH 0545/1829] Make ellipsis length into a static --- osu.Desktop/DiscordRichPresence.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Desktop/DiscordRichPresence.cs b/osu.Desktop/DiscordRichPresence.cs index ce878edda8..73c717b97c 100644 --- a/osu.Desktop/DiscordRichPresence.cs +++ b/osu.Desktop/DiscordRichPresence.cs @@ -98,17 +98,17 @@ namespace osu.Desktop client.SetPresence(presence); } + private static readonly int ellipsis_length = Encoding.UTF8.GetByteCount(new[] { '…' }); + private string truncate(ReadOnlySpan str) { if (Encoding.UTF8.GetByteCount(str) <= 128) return new string(str); - int ellipsisLength = Encoding.UTF8.GetByteCount(new[] { '…' }); - do { str = str[..^1]; - } while (Encoding.UTF8.GetByteCount(str) + ellipsisLength > 128); + } while (Encoding.UTF8.GetByteCount(str) + ellipsis_length > 128); return new string(str) + '…'; } From 1a7937bcf73f0fe3bc87666df542b6e1c0cd3ba6 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 25 Dec 2019 12:04:28 +0900 Subject: [PATCH 0546/1829] Apply suggested optimisations --- osu.Desktop/DiscordRichPresence.cs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/osu.Desktop/DiscordRichPresence.cs b/osu.Desktop/DiscordRichPresence.cs index 73c717b97c..05004cf76e 100644 --- a/osu.Desktop/DiscordRichPresence.cs +++ b/osu.Desktop/DiscordRichPresence.cs @@ -100,17 +100,23 @@ namespace osu.Desktop private static readonly int ellipsis_length = Encoding.UTF8.GetByteCount(new[] { '…' }); - private string truncate(ReadOnlySpan str) + private string truncate(string str) { if (Encoding.UTF8.GetByteCount(str) <= 128) - return new string(str); + return str; + + ReadOnlyMemory strMem = str.AsMemory(); do { - str = str[..^1]; - } while (Encoding.UTF8.GetByteCount(str) + ellipsis_length > 128); + strMem = strMem[..^1]; + } while (Encoding.UTF8.GetByteCount(strMem.Span) + ellipsis_length > 128); - return new string(str) + '…'; + return string.Create(strMem.Length + 1, strMem, (span, mem) => + { + mem.Span.CopyTo(span); + span[^1] = '…'; + }); } private string getDetails(UserActivity activity) From 145ac8e0b547c3f8472f4a0344dec7b6e3a4730a Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 25 Dec 2019 14:55:05 +0900 Subject: [PATCH 0547/1829] Remove redundant setter --- osu.Game/Beatmaps/Formats/IHasComboColours.cs | 2 +- osu.Game/Skinning/SkinConfiguration.cs | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/IHasComboColours.cs b/osu.Game/Beatmaps/Formats/IHasComboColours.cs index ac0d32dbaa..41c85db063 100644 --- a/osu.Game/Beatmaps/Formats/IHasComboColours.cs +++ b/osu.Game/Beatmaps/Formats/IHasComboColours.cs @@ -11,7 +11,7 @@ namespace osu.Game.Beatmaps.Formats /// /// Retrieves the list of combo colours for presentation only. /// - IReadOnlyList ComboColours { get; set; } + IReadOnlyList ComboColours { get; } /// /// Adds combo colours to the list. diff --git a/osu.Game/Skinning/SkinConfiguration.cs b/osu.Game/Skinning/SkinConfiguration.cs index e3a0ab23fa..a55870aa6d 100644 --- a/osu.Game/Skinning/SkinConfiguration.cs +++ b/osu.Game/Skinning/SkinConfiguration.cs @@ -2,7 +2,6 @@ // See the LICENCE file in the repository root for full licence text. using System.Collections.Generic; -using System.Linq; using osu.Game.Beatmaps.Formats; using osuTK.Graphics; @@ -28,7 +27,7 @@ namespace osu.Game.Skinning new Color4(242, 24, 57, 255), }; - private List comboColours = new List(); + private readonly List comboColours = new List(); public IReadOnlyList ComboColours { @@ -42,7 +41,6 @@ namespace osu.Game.Skinning return null; } - set => comboColours = value.ToList(); } public void AddComboColours(params Color4[] colours) => comboColours.AddRange(colours); From 04cbdd9c6c253f04a63b13fd9052cbe1cf181477 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 25 Dec 2019 14:55:13 +0900 Subject: [PATCH 0548/1829] Make test easier to visually examine --- osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs index c26afefc41..9adcf26529 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs @@ -136,7 +136,7 @@ namespace osu.Game.Rulesets.Osu.Tests { public static Color4[] Colours { get; } = { - new Color4(10, 100, 150, 255), + new Color4(150, 100, 50, 255), new Color4(20, 20, 20, 255), }; From 783159f7a06de9438552f0de2b9654662b78b6ac Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 25 Dec 2019 14:55:22 +0900 Subject: [PATCH 0549/1829] Remove redundant logic --- osu.Game/Skinning/DefaultSkinConfiguration.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/osu.Game/Skinning/DefaultSkinConfiguration.cs b/osu.Game/Skinning/DefaultSkinConfiguration.cs index 8e89ab25b2..5842ee82ee 100644 --- a/osu.Game/Skinning/DefaultSkinConfiguration.cs +++ b/osu.Game/Skinning/DefaultSkinConfiguration.cs @@ -8,9 +8,5 @@ namespace osu.Game.Skinning /// public class DefaultSkinConfiguration : SkinConfiguration { - public DefaultSkinConfiguration() - { - ComboColours = DefaultComboColours; - } } } From 9090d13e05ffe278e31c951f7f8ebf9d990da11c Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 25 Dec 2019 15:01:05 +0900 Subject: [PATCH 0550/1829] Simplify tests --- .../TestSceneLegacyBeatmapSkin.cs | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs index 9adcf26529..e26b671d57 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs @@ -9,8 +9,8 @@ using osu.Framework.Allocation; using osu.Framework.Audio; using osu.Framework.Graphics; using osu.Framework.IO.Stores; +using osu.Framework.Testing; using osu.Game.Beatmaps; -using osu.Game.Graphics.Containers; using osu.Game.Rulesets.Osu.Objects; using osu.Game.Screens; using osu.Game.Screens.Play; @@ -30,39 +30,33 @@ namespace osu.Game.Rulesets.Osu.Tests public void TestBeatmapComboColours() { ExposedPlayer player = null; - IReadOnlyList colours = null; - AddStep("load beatmap", () => player = loadBeatmap(false, true)); + AddStep("load coloured beatmap", () => player = loadBeatmap(false, true)); AddUntilStep("wait for player", () => player.IsLoaded); - AddStep("retrieve combo colours", () => colours = player.BeatmapSkin.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value); - AddAssert("is beatmap skin colours", () => colours.SequenceEqual(TestBeatmapSkin.Colours)); + AddAssert("is beatmap skin colours", () => player.UsableComboColours.SequenceEqual(TestBeatmapSkin.Colours)); } [Test] public void TestEmptyBeatmapComboColours() { ExposedPlayer player = null; - IReadOnlyList colours = null; AddStep("load no-colour beatmap", () => player = loadBeatmap(false, false)); AddUntilStep("wait for player", () => player.IsLoaded); - AddStep("retrieve combo colours", () => colours = player.BeatmapSkin.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value); - AddAssert("is default user skin colours", () => colours.SequenceEqual(SkinConfiguration.DefaultComboColours)); + AddAssert("is default user skin colours", () => player.UsableComboColours.SequenceEqual(SkinConfiguration.DefaultComboColours)); } [Test] public void TestEmptyBeatmapCustomSkinColours() { ExposedPlayer player = null; - IReadOnlyList colours = null; - AddStep("load no-colour beatmap", () => player = loadBeatmap(true, false)); + AddStep("load custom-skin colour", () => player = loadBeatmap(true, false)); AddUntilStep("wait for player", () => player.IsLoaded); - AddStep("retrieve combo colours", () => colours = player.BeatmapSkin.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value); - AddAssert("is custom user skin colours", () => colours.SequenceEqual(TestSkin.Colours)); + AddAssert("is custom user skin colours", () => player.UsableComboColours.SequenceEqual(TestSkin.Colours)); } private ExposedPlayer loadBeatmap(bool userHasCustomColours, bool beatmapHasColours) @@ -92,7 +86,10 @@ namespace osu.Game.Rulesets.Osu.Tests return dependencies; } - public BeatmapSkinProvidingContainer BeatmapSkin => GameplayClockContainer.OfType().First().OfType().First(); + public IReadOnlyList UsableComboColours => + GameplayClockContainer.ChildrenOfType() + .First() + .GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value; } private class CustomSkinWorkingBeatmap : ClockBackedTestWorkingBeatmap From 3485ef33a726b1caee8a0245188691d79da38674 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 25 Dec 2019 15:05:08 +0900 Subject: [PATCH 0551/1829] Rename tests and add missing coverage --- .../TestSceneLegacyBeatmapSkin.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs index e26b671d57..4676f14655 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs @@ -26,19 +26,20 @@ namespace osu.Game.Rulesets.Osu.Tests [Resolved] private AudioManager audio { get; set; } - [Test] - public void TestBeatmapComboColours() + [TestCase(true)] + [TestCase(false)] + public void TestBeatmapComboColours(bool customSkinColoursPresent) { ExposedPlayer player = null; - AddStep("load coloured beatmap", () => player = loadBeatmap(false, true)); + AddStep("load coloured beatmap", () => player = loadBeatmap(customSkinColoursPresent, true)); AddUntilStep("wait for player", () => player.IsLoaded); AddAssert("is beatmap skin colours", () => player.UsableComboColours.SequenceEqual(TestBeatmapSkin.Colours)); } [Test] - public void TestEmptyBeatmapComboColours() + public void TestBeatmapNoComboColours() { ExposedPlayer player = null; @@ -49,7 +50,7 @@ namespace osu.Game.Rulesets.Osu.Tests } [Test] - public void TestEmptyBeatmapCustomSkinColours() + public void TestBeatmapNoComboColoursSkinOverride() { ExposedPlayer player = null; From 52ba0cd816381fe5a1208c7aba8266caa0f839b9 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 25 Dec 2019 15:20:04 +0900 Subject: [PATCH 0552/1829] Rename method to be more appropriate Also adds xmldoc. --- .../Mods/CatchModDifficultyAdjust.cs | 4 ++-- osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs | 4 ++-- osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs | 12 ++++++++++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs index 2e1e655844..a3e314eee8 100644 --- a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs @@ -30,9 +30,9 @@ namespace osu.Game.Rulesets.Catch.Mods Value = 5, }; - protected override void UpdateSettings(BeatmapDifficulty difficulty) + protected override void TransferSettings(BeatmapDifficulty difficulty) { - base.UpdateSettings(difficulty); + base.TransferSettings(difficulty); CircleSize.Value = CircleSize.Default = difficulty.CircleSize; ApproachRate.Value = ApproachRate.Default = difficulty.ApproachRate; diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs index 3e9c51db85..6c76de5440 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs @@ -30,9 +30,9 @@ namespace osu.Game.Rulesets.Osu.Mods Value = 5, }; - protected override void UpdateSettings(BeatmapDifficulty difficulty) + protected override void TransferSettings(BeatmapDifficulty difficulty) { - base.UpdateSettings(difficulty); + base.TransferSettings(difficulty); CircleSize.Value = CircleSize.Default = difficulty.CircleSize; ApproachRate.Value = ApproachRate.Default = difficulty.ApproachRate; diff --git a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs index 1405ccec8d..9721784aee 100644 --- a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs @@ -52,18 +52,26 @@ namespace osu.Game.Rulesets.Mods if (this.difficulty == null || this.difficulty.ID != difficulty.ID) { this.difficulty = difficulty; - UpdateSettings(difficulty); + TransferSettings(difficulty); } else ApplySettings(difficulty); } - protected virtual void UpdateSettings(BeatmapDifficulty difficulty) + /// + /// Transfer initial settings from the beatmap to settings. + /// + /// The beatmap's initial values. + protected virtual void TransferSettings(BeatmapDifficulty difficulty) { DrainRate.Value = DrainRate.Default = difficulty.DrainRate; OverallDifficulty.Value = OverallDifficulty.Default = difficulty.OverallDifficulty; } + /// + /// Apply all custom settings to the provided beatmap. + /// + /// The beatmap to have settings applied. protected virtual void ApplySettings(BeatmapDifficulty difficulty) { difficulty.DrainRate = DrainRate.Value; From 911dc2d98dfe1074feeba9d9b83dd2ebaa9a02ce Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 25 Dec 2019 15:20:10 +0900 Subject: [PATCH 0553/1829] Fix code inspections --- osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs | 4 ++-- osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs | 4 ++-- osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs index a3e314eee8..4c0f5d510e 100644 --- a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs @@ -11,7 +11,7 @@ namespace osu.Game.Rulesets.Catch.Mods public class CatchModDifficultyAdjust : ModDifficultyAdjust { [SettingSource("Fruit Size", "Override a beatmap's set CS.")] - public BindableNumber CircleSize { get; } = new BindableFloat() + public BindableNumber CircleSize { get; } = new BindableFloat { Precision = 0.1f, MinValue = 1, @@ -21,7 +21,7 @@ namespace osu.Game.Rulesets.Catch.Mods }; [SettingSource("Approach Rate", "Override a beatmap's set AR.")] - public BindableNumber ApproachRate { get; } = new BindableFloat() + public BindableNumber ApproachRate { get; } = new BindableFloat { Precision = 0.1f, MinValue = 1, diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs index 6c76de5440..0514e2ab34 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs @@ -11,7 +11,7 @@ namespace osu.Game.Rulesets.Osu.Mods public class OsuModDifficultyAdjust : ModDifficultyAdjust { [SettingSource("Circle Size", "Override a beatmap's set CS.")] - public BindableNumber CircleSize { get; } = new BindableFloat() + public BindableNumber CircleSize { get; } = new BindableFloat { Precision = 0.1f, MinValue = 1, @@ -21,7 +21,7 @@ namespace osu.Game.Rulesets.Osu.Mods }; [SettingSource("Approach Rate", "Override a beatmap's set AR.")] - public BindableNumber ApproachRate { get; } = new BindableFloat() + public BindableNumber ApproachRate { get; } = new BindableFloat { Precision = 0.1f, MinValue = 1, diff --git a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs index 9721784aee..224fc78508 100644 --- a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs @@ -26,7 +26,7 @@ namespace osu.Game.Rulesets.Mods public override Type[] IncompatibleMods => new[] { typeof(ModEasy), typeof(ModHardRock) }; [SettingSource("Drain Rate", "Override a beatmap's set HP.")] - public BindableNumber DrainRate { get; } = new BindableFloat() + public BindableNumber DrainRate { get; } = new BindableFloat { Precision = 0.1f, MinValue = 1, @@ -36,7 +36,7 @@ namespace osu.Game.Rulesets.Mods }; [SettingSource("Overall Difficulty", "Override a beatmap's set OD.")] - public BindableNumber OverallDifficulty { get; } = new BindableFloat() + public BindableNumber OverallDifficulty { get; } = new BindableFloat { Precision = 0.1f, MinValue = 1, From 81c330ec2677d07e091e31254bfc665bed282d85 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 25 Dec 2019 18:51:44 +0900 Subject: [PATCH 0554/1829] 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 d684b73d8d..e7f90af5fd 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 4c5f3e0f38..0c0a58d533 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 ccfbee9a62..edeeea239e 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From a47e5aeead8382a9b889d30c3e16183bf6a7ae7f Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 26 Dec 2019 00:51:44 +0900 Subject: [PATCH 0555/1829] Fix sample lookup not working correctly for custom rulesets --- osu.Game/Rulesets/UI/DrawableRuleset.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/UI/DrawableRuleset.cs b/osu.Game/Rulesets/UI/DrawableRuleset.cs index df1b8078a6..f318539bb7 100644 --- a/osu.Game/Rulesets/UI/DrawableRuleset.cs +++ b/osu.Game/Rulesets/UI/DrawableRuleset.cs @@ -159,7 +159,7 @@ namespace osu.Game.Rulesets.UI dependencies.Cache(textureStore); localSampleStore = dependencies.Get().GetSampleStore(new NamespacedResourceStore(resources, "Samples")); - dependencies.CacheAs(new FallbackSampleStore(localSampleStore, dependencies.Get())); + dependencies.CacheAs(new FallbackSampleStore(localSampleStore, dependencies.Get())); } onScreenDisplay = dependencies.Get(); From 3e3415511476aa6941b8b0b914a72f7b2026fdf4 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 25 Dec 2019 21:56:43 +0300 Subject: [PATCH 0556/1829] Update ScreenTitle with the new design --- .../Graphics/UserInterface/ScreenTitle.cs | 52 ++++++++++++------- .../UserInterface/ScreenTitleTextureIcon.cs | 39 +++----------- osu.Game/Overlays/OverlayHeader.cs | 2 +- osu.Game/Screens/Multi/Header.cs | 2 +- 4 files changed, 41 insertions(+), 54 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/ScreenTitle.cs b/osu.Game/Graphics/UserInterface/ScreenTitle.cs index 10fc312d8b..bea37d4f34 100644 --- a/osu.Game/Graphics/UserInterface/ScreenTitle.cs +++ b/osu.Game/Graphics/UserInterface/ScreenTitle.cs @@ -4,6 +4,7 @@ using System; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Sprites; using osu.Game.Graphics.Sprites; using osuTK; @@ -13,15 +14,12 @@ namespace osu.Game.Graphics.UserInterface { public abstract class ScreenTitle : CompositeDrawable, IHasAccentColour { - public const float ICON_WIDTH = ICON_SIZE + icon_spacing; - - public const float ICON_SIZE = 25; + public const float ICON_SIZE = 30; + private const int text_offset = 2; private SpriteIcon iconSprite; private readonly OsuSpriteText titleText, pageText; - private const float icon_spacing = 10; - protected IconUsage Icon { set @@ -63,26 +61,40 @@ namespace osu.Game.Graphics.UserInterface new FillFlowContainer { AutoSizeAxes = Axes.Both, - Spacing = new Vector2(icon_spacing, 0), + Spacing = new Vector2(6, 0), + Direction = FillDirection.Horizontal, Children = new[] { - CreateIcon(), - new FillFlowContainer + CreateIcon().With(t => { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Spacing = new Vector2(6, 0), - Children = new[] + t.Anchor = Anchor.Centre; + t.Origin = Anchor.Centre; + }), + titleText = new OsuSpriteText + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Font = OsuFont.GetFont(size: 20, weight: FontWeight.Bold), + Margin = new MarginPadding { Bottom = text_offset } + }, + new CircularContainer + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Masking = true, + Size = new Vector2(4), + Child = new Box { - titleText = new OsuSpriteText - { - Font = OsuFont.GetFont(size: 30, weight: FontWeight.Light), - }, - pageText = new OsuSpriteText - { - Font = OsuFont.GetFont(size: 30, weight: FontWeight.Light), - } + RelativeSizeAxes = Axes.Both, + Colour = Color4.Gray, } + }, + pageText = new OsuSpriteText + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Font = OsuFont.GetFont(size: 20), + Margin = new MarginPadding { Bottom = text_offset } } } }, diff --git a/osu.Game/Graphics/UserInterface/ScreenTitleTextureIcon.cs b/osu.Game/Graphics/UserInterface/ScreenTitleTextureIcon.cs index f590e7e357..e36000af4e 100644 --- a/osu.Game/Graphics/UserInterface/ScreenTitleTextureIcon.cs +++ b/osu.Game/Graphics/UserInterface/ScreenTitleTextureIcon.cs @@ -4,7 +4,6 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Textures; using osuTK; @@ -16,8 +15,6 @@ namespace osu.Game.Graphics.UserInterface /// public class ScreenTitleTextureIcon : CompositeDrawable { - private const float circle_allowance = 0.8f; - private readonly string textureName; public ScreenTitleTextureIcon(string textureName) @@ -26,38 +23,16 @@ namespace osu.Game.Graphics.UserInterface } [BackgroundDependencyLoader] - private void load(TextureStore textures, OsuColour colours) + private void load(TextureStore textures) { - Size = new Vector2(ScreenTitle.ICON_SIZE / circle_allowance); + Size = new Vector2(ScreenTitle.ICON_SIZE); - InternalChildren = new Drawable[] + InternalChild = new Sprite { - new CircularContainer - { - Masking = true, - BorderColour = colours.Violet, - BorderThickness = 3, - MaskingSmoothness = 1, - RelativeSizeAxes = Axes.Both, - Children = new Drawable[] - { - new Sprite - { - RelativeSizeAxes = Axes.Both, - Texture = textures.Get(textureName), - Size = new Vector2(circle_allowance), - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - }, - new Box - { - RelativeSizeAxes = Axes.Both, - Colour = colours.Violet, - Alpha = 0, - AlwaysPresent = true, - }, - } - }, + RelativeSizeAxes = Axes.Both, + Texture = textures.Get(textureName), + Anchor = Anchor.Centre, + Origin = Anchor.Centre, }; } } diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index 2e032db2ba..95de1eace1 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -39,7 +39,7 @@ namespace osu.Game.Overlays Depth = -float.MaxValue, Children = new Drawable[] { - CreateTitle().With(t => t.X = -ScreenTitle.ICON_WIDTH), + CreateTitle().With(t => t.X = -ScreenTitle.ICON_SIZE), TabControl = new OverlayHeaderTabControl { Anchor = Anchor.BottomLeft, diff --git a/osu.Game/Screens/Multi/Header.cs b/osu.Game/Screens/Multi/Header.cs index 1cbf2a45e7..402c5ca5bb 100644 --- a/osu.Game/Screens/Multi/Header.cs +++ b/osu.Game/Screens/Multi/Header.cs @@ -42,7 +42,7 @@ namespace osu.Game.Screens.Multi { Anchor = Anchor.CentreLeft, Origin = Anchor.BottomLeft, - X = -ScreenTitle.ICON_WIDTH, + X = -ScreenTitle.ICON_SIZE, }, breadcrumbs = new HeaderBreadcrumbControl(stack) { From c77679e36c6e4d339544a1c304459cf1bcdad141 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 25 Dec 2019 21:57:22 +0300 Subject: [PATCH 0557/1829] Naming fixes for overlays using ScreenTitle --- .../Overlays/Changelog/ChangelogHeader.cs | 2 +- osu.Game/Overlays/News/NewsHeader.cs | 20 +++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/osu.Game/Overlays/Changelog/ChangelogHeader.cs b/osu.Game/Overlays/Changelog/ChangelogHeader.cs index b2e9be24b3..18dcdf721c 100644 --- a/osu.Game/Overlays/Changelog/ChangelogHeader.cs +++ b/osu.Game/Overlays/Changelog/ChangelogHeader.cs @@ -111,7 +111,7 @@ namespace osu.Game.Overlays.Changelog public ChangelogHeaderTitle() { - Title = "Changelog"; + Title = "changelog"; Version = null; } diff --git a/osu.Game/Overlays/News/NewsHeader.cs b/osu.Game/Overlays/News/NewsHeader.cs index 27620ab523..0f73663605 100644 --- a/osu.Game/Overlays/News/NewsHeader.cs +++ b/osu.Game/Overlays/News/NewsHeader.cs @@ -15,7 +15,7 @@ namespace osu.Game.Overlays.News { public class NewsHeader : OverlayHeader { - private const string front_page_string = "Front Page"; + private const string front_page_string = "frontpage"; private NewsHeaderTitle title; @@ -33,7 +33,7 @@ namespace osu.Game.Overlays.News ShowFrontPage?.Invoke(); }; - Current.ValueChanged += showArticle; + Current.ValueChanged += showPost; } [BackgroundDependencyLoader] @@ -42,7 +42,7 @@ namespace osu.Game.Overlays.News TabControl.AccentColour = colour.Violet; } - private void showArticle(ValueChangedEvent e) + private void showPost(ValueChangedEvent e) { if (e.OldValue != null) TabControl.RemoveItem(e.OldValue); @@ -52,12 +52,12 @@ namespace osu.Game.Overlays.News TabControl.AddItem(e.NewValue); TabControl.Current.Value = e.NewValue; - title.IsReadingArticle = true; + title.IsReadingPost = true; } else { TabControl.Current.Value = front_page_string; - title.IsReadingArticle = false; + title.IsReadingPost = false; } } @@ -84,17 +84,17 @@ namespace osu.Game.Overlays.News private class NewsHeaderTitle : ScreenTitle { - private const string article_string = "Article"; + private const string post_string = "post"; - public bool IsReadingArticle + public bool IsReadingPost { - set => Section = value ? article_string : front_page_string; + set => Section = value ? post_string : front_page_string; } public NewsHeaderTitle() { - Title = "News"; - IsReadingArticle = false; + Title = "news"; + IsReadingPost = false; } protected override Drawable CreateIcon() => new ScreenTitleTextureIcon(@"Icons/news"); From bb4d02a1f8d353c752ee2ba6fa4210869273156a Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 25 Dec 2019 22:09:14 +0300 Subject: [PATCH 0558/1829] Fix incorrect icon offset --- osu.Game/Graphics/UserInterface/ScreenTitle.cs | 5 ++++- osu.Game/Overlays/OverlayHeader.cs | 2 +- osu.Game/Screens/Multi/Header.cs | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/ScreenTitle.cs b/osu.Game/Graphics/UserInterface/ScreenTitle.cs index bea37d4f34..a8c8005a41 100644 --- a/osu.Game/Graphics/UserInterface/ScreenTitle.cs +++ b/osu.Game/Graphics/UserInterface/ScreenTitle.cs @@ -14,7 +14,10 @@ namespace osu.Game.Graphics.UserInterface { public abstract class ScreenTitle : CompositeDrawable, IHasAccentColour { + public const float ICON_WIDTH = ICON_SIZE + spacing; + public const float ICON_SIZE = 30; + private const float spacing = 6; private const int text_offset = 2; private SpriteIcon iconSprite; @@ -61,7 +64,7 @@ namespace osu.Game.Graphics.UserInterface new FillFlowContainer { AutoSizeAxes = Axes.Both, - Spacing = new Vector2(6, 0), + Spacing = new Vector2(spacing, 0), Direction = FillDirection.Horizontal, Children = new[] { diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index 95de1eace1..2e032db2ba 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -39,7 +39,7 @@ namespace osu.Game.Overlays Depth = -float.MaxValue, Children = new Drawable[] { - CreateTitle().With(t => t.X = -ScreenTitle.ICON_SIZE), + CreateTitle().With(t => t.X = -ScreenTitle.ICON_WIDTH), TabControl = new OverlayHeaderTabControl { Anchor = Anchor.BottomLeft, diff --git a/osu.Game/Screens/Multi/Header.cs b/osu.Game/Screens/Multi/Header.cs index 402c5ca5bb..1cbf2a45e7 100644 --- a/osu.Game/Screens/Multi/Header.cs +++ b/osu.Game/Screens/Multi/Header.cs @@ -42,7 +42,7 @@ namespace osu.Game.Screens.Multi { Anchor = Anchor.CentreLeft, Origin = Anchor.BottomLeft, - X = -ScreenTitle.ICON_SIZE, + X = -ScreenTitle.ICON_WIDTH, }, breadcrumbs = new HeaderBreadcrumbControl(stack) { From 89fa1be2c8d1fc38cf86dbd9dc3522c5687c151f Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Wed, 25 Dec 2019 22:55:14 +0300 Subject: [PATCH 0559/1829] Fix download manager potentially not handling cancel requests --- osu.Game/Database/DownloadableArchiveModelManager.cs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/osu.Game/Database/DownloadableArchiveModelManager.cs b/osu.Game/Database/DownloadableArchiveModelManager.cs index 5f688c149d..71bf195a8d 100644 --- a/osu.Game/Database/DownloadableArchiveModelManager.cs +++ b/osu.Game/Database/DownloadableArchiveModelManager.cs @@ -92,8 +92,6 @@ namespace osu.Game.Database notification.CancelRequested += () => { request.Cancel(); - currentDownloads.Remove(request); - notification.State = ProgressNotificationState.Cancelled; return true; }; @@ -109,11 +107,11 @@ namespace osu.Game.Database { DownloadFailed?.Invoke(request); - if (error is OperationCanceledException) return; - - notification.State = ProgressNotificationState.Cancelled; - Logger.Error(error, $"{HumanisedModelName.Titleize()} download failed!"); currentDownloads.Remove(request); + notification.State = ProgressNotificationState.Cancelled; + + if (!(error is OperationCanceledException)) + Logger.Error(error, $"{HumanisedModelName.Titleize()} download failed!"); } } From f603dd82bc87a59c6704ce30a74927b3a8ec7739 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 26 Dec 2019 14:52:08 +0900 Subject: [PATCH 0560/1829] Fix difficulty adjust mod not correctly reading settings while leaderboard visible --- osu.Game/OsuGame.cs | 22 +++++++++++++++++++ .../Rulesets/Mods/IApplicableToDifficulty.cs | 11 ++++++++++ osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs | 6 ++--- osu.Game/Rulesets/Mods/ModEasy.cs | 2 ++ osu.Game/Rulesets/Mods/ModHardRock.cs | 2 ++ 5 files changed, 40 insertions(+), 3 deletions(-) diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index c7c746bed3..84aba4af52 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -39,6 +39,7 @@ using osu.Game.Online.Chat; using osu.Game.Skinning; using osuTK.Graphics; using osu.Game.Overlays.Volume; +using osu.Game.Rulesets.Mods; using osu.Game.Scoring; using osu.Game.Screens.Select; using osu.Game.Utils; @@ -204,6 +205,7 @@ namespace osu.Game Audio.AddAdjustment(AdjustableProperty.Volume, inactiveVolumeFade); + SelectedMods.BindValueChanged(modsChanged); Beatmap.BindValueChanged(beatmapChanged, true); } @@ -403,9 +405,29 @@ namespace osu.Game oldBeatmap.Track.Completed -= currentTrackCompleted; } + updateModDefaults(); + nextBeatmap?.LoadBeatmapAsync(); } + private void modsChanged(ValueChangedEvent> mods) + { + updateModDefaults(); + } + + private void updateModDefaults() + { + BeatmapDifficulty baseDifficulty = Beatmap.Value.BeatmapInfo.BaseDifficulty; + + if (baseDifficulty != null && SelectedMods.Value.Any(m => m is IApplicableToDifficulty)) + { + var adjustedDifficulty = baseDifficulty.Clone(); + + foreach (var mod in SelectedMods.Value.OfType()) + mod.ReadFromDifficulty(adjustedDifficulty); + } + } + private void currentTrackCompleted() => Schedule(() => { if (!Beatmap.Value.Track.Looping && !Beatmap.Disabled) diff --git a/osu.Game/Rulesets/Mods/IApplicableToDifficulty.cs b/osu.Game/Rulesets/Mods/IApplicableToDifficulty.cs index 4d4cd75434..d1d85f5aca 100644 --- a/osu.Game/Rulesets/Mods/IApplicableToDifficulty.cs +++ b/osu.Game/Rulesets/Mods/IApplicableToDifficulty.cs @@ -10,6 +10,17 @@ namespace osu.Game.Rulesets.Mods /// public interface IApplicableToDifficulty : IApplicableMod { + /// + /// Called when a beatmap is changed. Can be used to read default values. + /// Any changes made will not be preserved. + /// + /// + void ReadFromDifficulty(BeatmapDifficulty difficulty); + + /// + /// Called post beatmap conversion. Can be used to apply changes to difficulty attributes. + /// + /// void ApplyToDifficulty(BeatmapDifficulty difficulty); } } diff --git a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs index 224fc78508..7b8d4bb3df 100644 --- a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs @@ -47,17 +47,17 @@ namespace osu.Game.Rulesets.Mods private BeatmapDifficulty difficulty; - public void ApplyToDifficulty(BeatmapDifficulty difficulty) + public void ReadFromDifficulty(BeatmapDifficulty difficulty) { if (this.difficulty == null || this.difficulty.ID != difficulty.ID) { this.difficulty = difficulty; TransferSettings(difficulty); } - else - ApplySettings(difficulty); } + public void ApplyToDifficulty(BeatmapDifficulty difficulty) => ApplySettings(difficulty); + /// /// Transfer initial settings from the beatmap to settings. /// diff --git a/osu.Game/Rulesets/Mods/ModEasy.cs b/osu.Game/Rulesets/Mods/ModEasy.cs index a91e4dfd5c..a8058961ee 100644 --- a/osu.Game/Rulesets/Mods/ModEasy.cs +++ b/osu.Game/Rulesets/Mods/ModEasy.cs @@ -33,6 +33,8 @@ namespace osu.Game.Rulesets.Mods private BindableNumber health; + public void ReadFromDifficulty(BeatmapDifficulty difficulty) { } + public void ApplyToDifficulty(BeatmapDifficulty difficulty) { const float ratio = 0.5f; diff --git a/osu.Game/Rulesets/Mods/ModHardRock.cs b/osu.Game/Rulesets/Mods/ModHardRock.cs index 2bcac3e4a9..a613d41cf4 100644 --- a/osu.Game/Rulesets/Mods/ModHardRock.cs +++ b/osu.Game/Rulesets/Mods/ModHardRock.cs @@ -17,6 +17,8 @@ namespace osu.Game.Rulesets.Mods public override string Description => "Everything just got a bit harder..."; public override Type[] IncompatibleMods => new[] { typeof(ModEasy), typeof(ModDifficultyAdjust) }; + public void ReadFromDifficulty(BeatmapDifficulty difficulty) { } + public void ApplyToDifficulty(BeatmapDifficulty difficulty) { const float ratio = 1.4f; From 90cb9d9162cc11909a230b0b4fa9c058235a4e73 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 24 Dec 2019 17:01:17 +0900 Subject: [PATCH 0561/1829] Simplify scoreprocesor/healthprocessor implementations --- osu.Game.Rulesets.Catch/CatchRuleset.cs | 4 +- .../Scoring/CatchHealthProcessor.cs | 27 --------- .../Scoring/CatchScoreProcessor.cs | 6 -- osu.Game.Rulesets.Mania/ManiaRuleset.cs | 4 +- .../Scoring/ManiaHealthProcessor.cs | 58 ------------------- .../Scoring/ManiaScoreProcessor.cs | 6 -- osu.Game.Rulesets.Osu/OsuRuleset.cs | 4 +- .../Scoring/OsuHealthProcessor.cs | 39 ------------- .../Scoring/OsuScoreProcessor.cs | 6 -- .../Scoring/TaikoHealthProcessor.cs | 36 ------------ .../Scoring/TaikoScoreProcessor.cs | 6 -- osu.Game.Rulesets.Taiko/TaikoRuleset.cs | 4 +- osu.Game/Rulesets/Ruleset.cs | 8 +-- osu.Game/Rulesets/Scoring/HealthProcessor.cs | 6 -- .../Rulesets/Scoring/JudgementProcessor.cs | 16 ++--- osu.Game/Rulesets/Scoring/ScoreProcessor.cs | 21 +++---- osu.Game/Screens/Play/Player.cs | 6 +- 17 files changed, 29 insertions(+), 228 deletions(-) diff --git a/osu.Game.Rulesets.Catch/CatchRuleset.cs b/osu.Game.Rulesets.Catch/CatchRuleset.cs index f0e50c5ba5..b86fa09484 100644 --- a/osu.Game.Rulesets.Catch/CatchRuleset.cs +++ b/osu.Game.Rulesets.Catch/CatchRuleset.cs @@ -28,9 +28,9 @@ namespace osu.Game.Rulesets.Catch { public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => new DrawableCatchRuleset(this, beatmap, mods); - public override ScoreProcessor CreateScoreProcessor(IBeatmap beatmap) => new CatchScoreProcessor(beatmap); + public override ScoreProcessor CreateScoreProcessor() => new CatchScoreProcessor(); - public override HealthProcessor CreateHealthProcessor(IBeatmap beatmap) => new CatchHealthProcessor(beatmap); + public override HealthProcessor CreateHealthProcessor() => new CatchHealthProcessor(); public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new CatchBeatmapConverter(beatmap, this); diff --git a/osu.Game.Rulesets.Catch/Scoring/CatchHealthProcessor.cs b/osu.Game.Rulesets.Catch/Scoring/CatchHealthProcessor.cs index 49ba0f6122..77a6c665bd 100644 --- a/osu.Game.Rulesets.Catch/Scoring/CatchHealthProcessor.cs +++ b/osu.Game.Rulesets.Catch/Scoring/CatchHealthProcessor.cs @@ -1,38 +1,11 @@ // 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.Beatmaps; -using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Scoring; namespace osu.Game.Rulesets.Catch.Scoring { public class CatchHealthProcessor : HealthProcessor { - public CatchHealthProcessor(IBeatmap beatmap) - : base(beatmap) - { - } - - private float hpDrainRate; - - protected override void ApplyBeatmap(IBeatmap beatmap) - { - base.ApplyBeatmap(beatmap); - - hpDrainRate = beatmap.BeatmapInfo.BaseDifficulty.DrainRate; - } - - protected override double HealthAdjustmentFactorFor(JudgementResult result) - { - switch (result.Type) - { - case HitResult.Miss: - return hpDrainRate; - - default: - return 10.2 - hpDrainRate; // Award less HP as drain rate is increased - } - } } } diff --git a/osu.Game.Rulesets.Catch/Scoring/CatchScoreProcessor.cs b/osu.Game.Rulesets.Catch/Scoring/CatchScoreProcessor.cs index ad7520d57d..4c7bc4ab73 100644 --- a/osu.Game.Rulesets.Catch/Scoring/CatchScoreProcessor.cs +++ b/osu.Game.Rulesets.Catch/Scoring/CatchScoreProcessor.cs @@ -1,18 +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 osu.Game.Beatmaps; using osu.Game.Rulesets.Scoring; namespace osu.Game.Rulesets.Catch.Scoring { public class CatchScoreProcessor : ScoreProcessor { - public CatchScoreProcessor(IBeatmap beatmap) - : base(beatmap) - { - } - public override HitWindows CreateHitWindows() => new CatchHitWindows(); } } diff --git a/osu.Game.Rulesets.Mania/ManiaRuleset.cs b/osu.Game.Rulesets.Mania/ManiaRuleset.cs index 5bca8588b6..4cc439f909 100644 --- a/osu.Game.Rulesets.Mania/ManiaRuleset.cs +++ b/osu.Game.Rulesets.Mania/ManiaRuleset.cs @@ -35,9 +35,9 @@ namespace osu.Game.Rulesets.Mania { public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => new DrawableManiaRuleset(this, beatmap, mods); - public override ScoreProcessor CreateScoreProcessor(IBeatmap beatmap) => new ManiaScoreProcessor(beatmap); + public override ScoreProcessor CreateScoreProcessor() => new ManiaScoreProcessor(); - public override HealthProcessor CreateHealthProcessor(IBeatmap beatmap) => new ManiaHealthProcessor(beatmap); + public override HealthProcessor CreateHealthProcessor() => new ManiaHealthProcessor(); public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new ManiaBeatmapConverter(beatmap, this); diff --git a/osu.Game.Rulesets.Mania/Scoring/ManiaHealthProcessor.cs b/osu.Game.Rulesets.Mania/Scoring/ManiaHealthProcessor.cs index c362c906a4..391fe0ace7 100644 --- a/osu.Game.Rulesets.Mania/Scoring/ManiaHealthProcessor.cs +++ b/osu.Game.Rulesets.Mania/Scoring/ManiaHealthProcessor.cs @@ -1,69 +1,11 @@ // 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.Beatmaps; -using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Scoring; namespace osu.Game.Rulesets.Mania.Scoring { public class ManiaHealthProcessor : HealthProcessor { - /// - /// The hit HP multiplier at OD = 0. - /// - private const double hp_multiplier_min = 0.75; - - /// - /// The hit HP multiplier at OD = 0. - /// - private const double hp_multiplier_mid = 0.85; - - /// - /// The hit HP multiplier at OD = 0. - /// - private const double hp_multiplier_max = 1; - - /// - /// The MISS HP multiplier at OD = 0. - /// - private const double hp_multiplier_miss_min = 0.5; - - /// - /// The MISS HP multiplier at OD = 5. - /// - private const double hp_multiplier_miss_mid = 0.75; - - /// - /// The MISS HP multiplier at OD = 10. - /// - private const double hp_multiplier_miss_max = 1; - - /// - /// The MISS HP multiplier. This is multiplied to the miss hp increase. - /// - private double hpMissMultiplier = 1; - - /// - /// The HIT HP multiplier. This is multiplied to hit hp increases. - /// - private double hpMultiplier = 1; - - public ManiaHealthProcessor(IBeatmap beatmap) - : base(beatmap) - { - } - - protected override void ApplyBeatmap(IBeatmap beatmap) - { - base.ApplyBeatmap(beatmap); - - BeatmapDifficulty difficulty = beatmap.BeatmapInfo.BaseDifficulty; - hpMultiplier = BeatmapDifficulty.DifficultyRange(difficulty.DrainRate, hp_multiplier_min, hp_multiplier_mid, hp_multiplier_max); - hpMissMultiplier = BeatmapDifficulty.DifficultyRange(difficulty.DrainRate, hp_multiplier_miss_min, hp_multiplier_miss_mid, hp_multiplier_miss_max); - } - - protected override double HealthAdjustmentFactorFor(JudgementResult result) - => result.Type == HitResult.Miss ? hpMissMultiplier : hpMultiplier; } } diff --git a/osu.Game.Rulesets.Mania/Scoring/ManiaScoreProcessor.cs b/osu.Game.Rulesets.Mania/Scoring/ManiaScoreProcessor.cs index 97f1ea721c..9b54b48de3 100644 --- a/osu.Game.Rulesets.Mania/Scoring/ManiaScoreProcessor.cs +++ b/osu.Game.Rulesets.Mania/Scoring/ManiaScoreProcessor.cs @@ -1,18 +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 osu.Game.Beatmaps; using osu.Game.Rulesets.Scoring; namespace osu.Game.Rulesets.Mania.Scoring { internal class ManiaScoreProcessor : ScoreProcessor { - public ManiaScoreProcessor(IBeatmap beatmap) - : base(beatmap) - { - } - public override HitWindows CreateHitWindows() => new ManiaHitWindows(); } } diff --git a/osu.Game.Rulesets.Osu/OsuRuleset.cs b/osu.Game.Rulesets.Osu/OsuRuleset.cs index c8a156dc57..f7b4f90209 100644 --- a/osu.Game.Rulesets.Osu/OsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/OsuRuleset.cs @@ -36,7 +36,9 @@ namespace osu.Game.Rulesets.Osu { public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => new DrawableOsuRuleset(this, beatmap, mods); - public override ScoreProcessor CreateScoreProcessor(IBeatmap beatmap) => new OsuScoreProcessor(beatmap); + public override ScoreProcessor CreateScoreProcessor() => new OsuScoreProcessor(); + + public override HealthProcessor CreateHealthProcessor() => new OsuHealthProcessor(); public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new OsuBeatmapConverter(beatmap, this); diff --git a/osu.Game.Rulesets.Osu/Scoring/OsuHealthProcessor.cs b/osu.Game.Rulesets.Osu/Scoring/OsuHealthProcessor.cs index 36ccc80af6..d6d83425ff 100644 --- a/osu.Game.Rulesets.Osu/Scoring/OsuHealthProcessor.cs +++ b/osu.Game.Rulesets.Osu/Scoring/OsuHealthProcessor.cs @@ -1,7 +1,6 @@ // 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.Beatmaps; using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Osu.Judgements; @@ -11,44 +10,6 @@ namespace osu.Game.Rulesets.Osu.Scoring { public class OsuHealthProcessor : HealthProcessor { - public OsuHealthProcessor(IBeatmap beatmap) - : base(beatmap) - { - } - - private float hpDrainRate; - - protected override void ApplyBeatmap(IBeatmap beatmap) - { - base.ApplyBeatmap(beatmap); - - hpDrainRate = beatmap.BeatmapInfo.BaseDifficulty.DrainRate; - } - - protected override double HealthAdjustmentFactorFor(JudgementResult result) - { - switch (result.Type) - { - case HitResult.Great: - return 10.2 - hpDrainRate; - - case HitResult.Good: - return 8 - hpDrainRate; - - case HitResult.Meh: - return 4 - hpDrainRate; - - // case HitResult.SliderTick: - // return Math.Max(7 - hpDrainRate, 0) * 0.01; - - case HitResult.Miss: - return hpDrainRate; - - default: - return 0; - } - } - protected override JudgementResult CreateResult(HitObject hitObject, Judgement judgement) => new OsuJudgementResult(hitObject, judgement); } } diff --git a/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs b/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs index 4593364e42..1de7d488f3 100644 --- a/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs +++ b/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs @@ -1,7 +1,6 @@ // 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.Beatmaps; using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Osu.Judgements; @@ -11,11 +10,6 @@ namespace osu.Game.Rulesets.Osu.Scoring { internal class OsuScoreProcessor : ScoreProcessor { - public OsuScoreProcessor(IBeatmap beatmap) - : base(beatmap) - { - } - protected override JudgementResult CreateResult(HitObject hitObject, Judgement judgement) => new OsuJudgementResult(hitObject, judgement); public override HitWindows CreateHitWindows() => new OsuHitWindows(); diff --git a/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs b/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs index c8aa32a678..df5dd19de3 100644 --- a/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs +++ b/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs @@ -1,53 +1,17 @@ // 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.Game.Beatmaps; -using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Scoring; -using osu.Game.Rulesets.Taiko.Objects; namespace osu.Game.Rulesets.Taiko.Scoring { public class TaikoHealthProcessor : HealthProcessor { - /// - /// A value used for calculating . - /// - private const double object_count_factor = 3; - /// /// Taiko fails at the end of the map if the player has not half-filled their HP bar. /// protected override bool DefaultFailCondition => JudgedHits == MaxHits && Health.Value <= 0.5; - /// - /// HP multiplier for a successful . - /// - private double hpMultiplier; - - /// - /// HP multiplier for a . - /// - private double hpMissMultiplier; - - public TaikoHealthProcessor(IBeatmap beatmap) - : base(beatmap) - { - } - - protected override void ApplyBeatmap(IBeatmap beatmap) - { - base.ApplyBeatmap(beatmap); - - hpMultiplier = 1 / (object_count_factor * beatmap.HitObjects.OfType().Count() * BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.5, 0.75, 0.98)); - - hpMissMultiplier = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.0018, 0.0075, 0.0120); - } - - protected override double HealthAdjustmentFactorFor(JudgementResult result) - => result.Type == HitResult.Miss ? hpMissMultiplier : hpMultiplier; - protected override void Reset(bool storeResults) { base.Reset(storeResults); diff --git a/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs b/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs index 10011d2669..003d40af56 100644 --- a/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs +++ b/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs @@ -1,18 +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 osu.Game.Beatmaps; using osu.Game.Rulesets.Scoring; namespace osu.Game.Rulesets.Taiko.Scoring { internal class TaikoScoreProcessor : ScoreProcessor { - public TaikoScoreProcessor(IBeatmap beatmap) - : base(beatmap) - { - } - public override HitWindows CreateHitWindows() => new TaikoHitWindows(); } } diff --git a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs index c5c2027af1..6763a1d340 100644 --- a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs +++ b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs @@ -28,9 +28,9 @@ namespace osu.Game.Rulesets.Taiko { public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => new DrawableTaikoRuleset(this, beatmap, mods); - public override ScoreProcessor CreateScoreProcessor(IBeatmap beatmap) => new TaikoScoreProcessor(beatmap); + public override ScoreProcessor CreateScoreProcessor() => new TaikoScoreProcessor(); - public override HealthProcessor CreateHealthProcessor(IBeatmap beatmap) => new TaikoHealthProcessor(beatmap); + public override HealthProcessor CreateHealthProcessor() => new TaikoHealthProcessor(); public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new TaikoBeatmapConverter(beatmap, this); diff --git a/osu.Game/Rulesets/Ruleset.cs b/osu.Game/Rulesets/Ruleset.cs index bfd6a16729..72973cc677 100644 --- a/osu.Game/Rulesets/Ruleset.cs +++ b/osu.Game/Rulesets/Ruleset.cs @@ -71,16 +71,16 @@ namespace osu.Game.Rulesets public abstract DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null); /// - /// Creates a for a beatmap converted to this ruleset. + /// Creates a for this . /// /// The score processor. - public virtual ScoreProcessor CreateScoreProcessor(IBeatmap beatmap) => new ScoreProcessor(beatmap); + public virtual ScoreProcessor CreateScoreProcessor() => new ScoreProcessor(); /// - /// Creates a for a beatmap converted to this ruleset. + /// Creates a for this . /// /// The health processor. - public virtual HealthProcessor CreateHealthProcessor(IBeatmap beatmap) => new HealthProcessor(beatmap); + public virtual HealthProcessor CreateHealthProcessor() => new HealthProcessor(); /// /// Creates a to convert a to one that is applicable for this . diff --git a/osu.Game/Rulesets/Scoring/HealthProcessor.cs b/osu.Game/Rulesets/Scoring/HealthProcessor.cs index d05e2d7b6b..f027cac8bd 100644 --- a/osu.Game/Rulesets/Scoring/HealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/HealthProcessor.cs @@ -4,7 +4,6 @@ using System; using osu.Framework.Bindables; using osu.Framework.MathUtils; -using osu.Game.Beatmaps; using osu.Game.Rulesets.Judgements; namespace osu.Game.Rulesets.Scoring @@ -32,11 +31,6 @@ namespace osu.Game.Rulesets.Scoring /// public bool HasFailed { get; private set; } - public HealthProcessor(IBeatmap beatmap) - : base(beatmap) - { - } - protected override void ApplyResultInternal(JudgementResult result) { result.HealthAtJudgement = Health.Value; diff --git a/osu.Game/Rulesets/Scoring/JudgementProcessor.cs b/osu.Game/Rulesets/Scoring/JudgementProcessor.cs index c7ac466eb0..54debebde9 100644 --- a/osu.Game/Rulesets/Scoring/JudgementProcessor.cs +++ b/osu.Game/Rulesets/Scoring/JudgementProcessor.cs @@ -36,23 +36,17 @@ namespace osu.Game.Rulesets.Scoring /// public bool HasCompleted => JudgedHits == MaxHits; - protected JudgementProcessor(IBeatmap beatmap) + /// + /// Applies a to this . + /// + /// The to read properties from. + public void ApplyBeatmap(IBeatmap beatmap) { - ApplyBeatmap(beatmap); - Reset(false); SimulateAutoplay(beatmap); Reset(true); } - /// - /// Applies any properties of the which affect scoring to this . - /// - /// The to read properties from. - protected virtual void ApplyBeatmap(IBeatmap beatmap) - { - } - /// /// Applies the score change of a to this . /// diff --git a/osu.Game/Rulesets/Scoring/ScoreProcessor.cs b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs index acd394d955..8ccc2af93b 100644 --- a/osu.Game/Rulesets/Scoring/ScoreProcessor.cs +++ b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs @@ -7,7 +7,6 @@ using System.Diagnostics; using System.Linq; using osu.Framework.Bindables; using osu.Framework.Extensions; -using osu.Game.Beatmaps; using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Mods; using osu.Game.Scoring; @@ -64,15 +63,9 @@ namespace osu.Game.Rulesets.Scoring private double scoreMultiplier = 1; - public ScoreProcessor(IBeatmap beatmap) - : base(beatmap) + public ScoreProcessor() { Debug.Assert(base_portion + combo_portion == 1.0); - } - - protected override void ApplyBeatmap(IBeatmap beatmap) - { - base.ApplyBeatmap(beatmap); Combo.ValueChanged += combo => HighestCombo.Value = Math.Max(HighestCombo.Value, combo.NewValue); Accuracy.ValueChanged += accuracy => @@ -82,12 +75,6 @@ namespace osu.Game.Rulesets.Scoring Rank.Value = mod.AdjustRank(Rank.Value, accuracy.NewValue); }; - if (maxBaseScore == 0 || maxHighestCombo == 0) - { - Mode.Value = ScoringMode.Classic; - Mode.Disabled = true; - } - Mode.ValueChanged += _ => updateScore(); Mods.ValueChanged += mods => { @@ -225,6 +212,12 @@ namespace osu.Game.Rulesets.Scoring { maxHighestCombo = HighestCombo.Value; maxBaseScore = baseScore; + + if (maxBaseScore == 0 || maxHighestCombo == 0) + { + Mode.Value = ScoringMode.Classic; + Mode.Disabled = true; + } } baseScore = 0; diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index f57bfb0bde..3699763e14 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -131,10 +131,12 @@ namespace osu.Game.Screens.Play DrawableRuleset = ruleset.CreateDrawableRulesetWith(playableBeatmap, Mods.Value); - ScoreProcessor = ruleset.CreateScoreProcessor(playableBeatmap); + ScoreProcessor = ruleset.CreateScoreProcessor(); + ScoreProcessor.ApplyBeatmap(playableBeatmap); ScoreProcessor.Mods.BindTo(Mods); - HealthProcessor = ruleset.CreateHealthProcessor(playableBeatmap); + HealthProcessor = ruleset.CreateHealthProcessor(); + HealthProcessor.ApplyBeatmap(playableBeatmap); if (!ScoreProcessor.Mode.Disabled) config.BindWith(OsuSetting.ScoreDisplayMode, ScoreProcessor.Mode); From 985277da797e4985d4291f86aa4af2aa5c5b34fc Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 24 Dec 2019 17:12:58 +0900 Subject: [PATCH 0562/1829] Add time elapsation to judgement simulation --- osu.Game/Rulesets/Scoring/JudgementProcessor.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Scoring/JudgementProcessor.cs b/osu.Game/Rulesets/Scoring/JudgementProcessor.cs index 54debebde9..b0bc205ea9 100644 --- a/osu.Game/Rulesets/Scoring/JudgementProcessor.cs +++ b/osu.Game/Rulesets/Scoring/JudgementProcessor.cs @@ -47,6 +47,10 @@ namespace osu.Game.Rulesets.Scoring Reset(true); } + public virtual void ApplyElapsedTime(double elapsedTime) + { + } + /// /// Applies the score change of a to this . /// @@ -115,6 +119,8 @@ namespace osu.Game.Rulesets.Scoring /// The to simulate. protected virtual void SimulateAutoplay(IBeatmap beatmap) { + HitObject lastObject = null; + foreach (var obj in beatmap.HitObjects) simulate(obj); @@ -123,6 +129,9 @@ namespace osu.Game.Rulesets.Scoring foreach (var nested in obj.NestedHitObjects) simulate(nested); + if (lastObject != null) + ApplyElapsedTime(lastObject.GetEndTime() - obj.StartTime); + var judgement = obj.CreateJudgement(); if (judgement == null) return; @@ -132,8 +141,9 @@ namespace osu.Game.Rulesets.Scoring throw new InvalidOperationException($"{GetType().ReadableName()} must provide a {nameof(JudgementResult)} through {nameof(CreateResult)}."); result.Type = judgement.MaxResult; - ApplyResult(result); + + lastObject = obj; } } } From a4b1c79e18bb9656e3c1392b42de2431e15827d6 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 25 Dec 2019 13:09:04 +0900 Subject: [PATCH 0563/1829] Initial implementation of HP drain --- osu.Game/Rulesets/Scoring/HealthProcessor.cs | 48 +++++++++++++++++++- osu.Game/Screens/Play/Player.cs | 8 ++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Scoring/HealthProcessor.cs b/osu.Game/Rulesets/Scoring/HealthProcessor.cs index f027cac8bd..270128b60e 100644 --- a/osu.Game/Rulesets/Scoring/HealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/HealthProcessor.cs @@ -2,9 +2,11 @@ // See the LICENCE file in the repository root for full licence text. using System; +using System.Collections.Generic; using osu.Framework.Bindables; using osu.Framework.MathUtils; using osu.Game.Rulesets.Judgements; +using osu.Game.Rulesets.Objects; namespace osu.Game.Rulesets.Scoring { @@ -31,15 +33,23 @@ namespace osu.Game.Rulesets.Scoring /// public bool HasFailed { get; private set; } + private readonly List<(double time, double health)> healthIncreases = new List<(double time, double health)>(); + private double drainRate = 1; + + public override void ApplyElapsedTime(double elapsedTime) => Health.Value -= drainRate * elapsedTime; + protected override void ApplyResultInternal(JudgementResult result) { result.HealthAtJudgement = Health.Value; result.FailedAtJudgement = HasFailed; + double healthIncrease = HealthAdjustmentFactorFor(result) * result.Judgement.HealthIncreaseFor(result); + healthIncreases.Add((result.HitObject.GetEndTime() + result.TimeOffset, healthIncrease)); + if (HasFailed) return; - Health.Value += HealthAdjustmentFactorFor(result) * result.Judgement.HealthIncreaseFor(result); + Health.Value += healthIncrease; if (!DefaultFailCondition && FailConditions?.Invoke(this, result) != true) return; @@ -71,6 +81,42 @@ namespace osu.Game.Rulesets.Scoring { base.Reset(storeResults); + drainRate = 1; + + if (storeResults) + { + const double percentage_target = 0.5; + + int count = 1; + + while (true) + { + double currentHealth = 1; + double lowestHealth = 1; + + for (int i = 0; i < healthIncreases.Count; i++) + { + var lastTime = i > 0 ? healthIncreases[i - 1].time : 0; + + currentHealth -= (healthIncreases[i].time - lastTime) * drainRate; + lowestHealth = Math.Min(lowestHealth, currentHealth); + currentHealth = Math.Min(1, currentHealth + healthIncreases[i].health); + + // Common scenario for when the drain rate is definitely too harsh + if (lowestHealth < 0) + break; + } + + if (Math.Abs(lowestHealth - percentage_target) <= 0.01) + break; + + count *= 2; + drainRate += 1.0 / count * Math.Sign(lowestHealth - percentage_target); + } + } + + healthIncreases.Clear(); + Health.Value = 1; HasFailed = false; } diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index 3699763e14..bc6510440a 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -342,6 +342,14 @@ namespace osu.Game.Screens.Play this.Exit(); } + protected override void Update() + { + base.Update(); + + if (!GameplayClockContainer.IsPaused.Value) + HealthProcessor.ApplyElapsedTime(GameplayClockContainer.GameplayClock.ElapsedFrameTime); + } + /// /// Restart gameplay via a parent . /// This can be called from a child screen in order to trigger the restart process. From 70d2d8a2fabdea21d4328077fa8a827552cd8f3a Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 25 Dec 2019 13:32:58 +0900 Subject: [PATCH 0564/1829] Add adjustable target percentage --- osu.Game/Rulesets/Scoring/HealthProcessor.cs | 14 ++++++++++---- osu.Game/Rulesets/Scoring/JudgementProcessor.cs | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/osu.Game/Rulesets/Scoring/HealthProcessor.cs b/osu.Game/Rulesets/Scoring/HealthProcessor.cs index 270128b60e..bb8f377f84 100644 --- a/osu.Game/Rulesets/Scoring/HealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/HealthProcessor.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using osu.Framework.Bindables; using osu.Framework.MathUtils; +using osu.Game.Beatmaps; using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Objects; @@ -34,8 +35,15 @@ namespace osu.Game.Rulesets.Scoring public bool HasFailed { get; private set; } private readonly List<(double time, double health)> healthIncreases = new List<(double time, double health)>(); + private double targetMinimumHealth; private double drainRate = 1; + public override void ApplyBeatmap(IBeatmap beatmap) + { + targetMinimumHealth = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.95, 0.85, 0.65); + base.ApplyBeatmap(beatmap); + } + public override void ApplyElapsedTime(double elapsedTime) => Health.Value -= drainRate * elapsedTime; protected override void ApplyResultInternal(JudgementResult result) @@ -85,8 +93,6 @@ namespace osu.Game.Rulesets.Scoring if (storeResults) { - const double percentage_target = 0.5; - int count = 1; while (true) @@ -107,11 +113,11 @@ namespace osu.Game.Rulesets.Scoring break; } - if (Math.Abs(lowestHealth - percentage_target) <= 0.01) + if (Math.Abs(lowestHealth - targetMinimumHealth) <= 0.01) break; count *= 2; - drainRate += 1.0 / count * Math.Sign(lowestHealth - percentage_target); + drainRate += 1.0 / count * Math.Sign(lowestHealth - targetMinimumHealth); } } diff --git a/osu.Game/Rulesets/Scoring/JudgementProcessor.cs b/osu.Game/Rulesets/Scoring/JudgementProcessor.cs index b0bc205ea9..33dc4b9a22 100644 --- a/osu.Game/Rulesets/Scoring/JudgementProcessor.cs +++ b/osu.Game/Rulesets/Scoring/JudgementProcessor.cs @@ -40,7 +40,7 @@ namespace osu.Game.Rulesets.Scoring /// Applies a to this . /// /// The to read properties from. - public void ApplyBeatmap(IBeatmap beatmap) + public virtual void ApplyBeatmap(IBeatmap beatmap) { Reset(false); SimulateAutoplay(beatmap); From bd74d086fb412e32cb9249e41287c47dbb037f5c Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 25 Dec 2019 13:33:50 +0900 Subject: [PATCH 0565/1829] Remove adjustment factor --- osu.Game/Rulesets/Scoring/HealthProcessor.cs | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/osu.Game/Rulesets/Scoring/HealthProcessor.cs b/osu.Game/Rulesets/Scoring/HealthProcessor.cs index bb8f377f84..8c2e2b66ca 100644 --- a/osu.Game/Rulesets/Scoring/HealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/HealthProcessor.cs @@ -51,7 +51,7 @@ namespace osu.Game.Rulesets.Scoring result.HealthAtJudgement = Health.Value; result.FailedAtJudgement = HasFailed; - double healthIncrease = HealthAdjustmentFactorFor(result) * result.Judgement.HealthIncreaseFor(result); + double healthIncrease = result.Judgement.HealthIncreaseFor(result); healthIncreases.Add((result.HitObject.GetEndTime() + result.TimeOffset, healthIncrease)); if (HasFailed) @@ -73,13 +73,6 @@ namespace osu.Game.Rulesets.Scoring // Todo: Revert HasFailed state with proper player support } - /// - /// An adjustment factor which is multiplied into the health increase provided by a . - /// - /// The for which the adjustment should apply. - /// The adjustment factor. - protected virtual double HealthAdjustmentFactorFor(JudgementResult result) => 1; - /// /// The default conditions for failing. /// From 85c44b5a5a015217931c16651f5389ab47d52fab Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 25 Dec 2019 13:34:13 +0900 Subject: [PATCH 0566/1829] Disable list additions during gameplay --- osu.Game/Rulesets/Scoring/HealthProcessor.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/osu.Game/Rulesets/Scoring/HealthProcessor.cs b/osu.Game/Rulesets/Scoring/HealthProcessor.cs index 8c2e2b66ca..2cb51fa853 100644 --- a/osu.Game/Rulesets/Scoring/HealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/HealthProcessor.cs @@ -34,14 +34,19 @@ namespace osu.Game.Rulesets.Scoring /// public bool HasFailed { get; private set; } - private readonly List<(double time, double health)> healthIncreases = new List<(double time, double health)>(); + private List<(double time, double health)> healthIncreases; private double targetMinimumHealth; private double drainRate = 1; public override void ApplyBeatmap(IBeatmap beatmap) { + healthIncreases = new List<(double time, double health)>(); targetMinimumHealth = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.95, 0.85, 0.65); + base.ApplyBeatmap(beatmap); + + // Only required during the simulation stage + healthIncreases = null; } public override void ApplyElapsedTime(double elapsedTime) => Health.Value -= drainRate * elapsedTime; @@ -52,7 +57,7 @@ namespace osu.Game.Rulesets.Scoring result.FailedAtJudgement = HasFailed; double healthIncrease = result.Judgement.HealthIncreaseFor(result); - healthIncreases.Add((result.HitObject.GetEndTime() + result.TimeOffset, healthIncrease)); + healthIncreases?.Add((result.HitObject.GetEndTime() + result.TimeOffset, healthIncrease)); if (HasFailed) return; From 977fb3d1bfe862f9fc38b37b110894a12d0379bd Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 25 Dec 2019 14:35:32 +0900 Subject: [PATCH 0567/1829] Make processors and break overlay frame-stable --- osu.Game/Rulesets/Scoring/HealthProcessor.cs | 7 +++++- .../Rulesets/Scoring/JudgementProcessor.cs | 14 ++--------- osu.Game/Rulesets/UI/DrawableRuleset.cs | 25 ++++++++++++------- osu.Game/Screens/Play/Player.cs | 24 ++++++++---------- 4 files changed, 34 insertions(+), 36 deletions(-) diff --git a/osu.Game/Rulesets/Scoring/HealthProcessor.cs b/osu.Game/Rulesets/Scoring/HealthProcessor.cs index 2cb51fa853..b9638fed15 100644 --- a/osu.Game/Rulesets/Scoring/HealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/HealthProcessor.cs @@ -49,7 +49,12 @@ namespace osu.Game.Rulesets.Scoring healthIncreases = null; } - public override void ApplyElapsedTime(double elapsedTime) => Health.Value -= drainRate * elapsedTime; + protected override void Update() + { + base.Update(); + + Health.Value -= drainRate * Time.Elapsed; + } protected override void ApplyResultInternal(JudgementResult result) { diff --git a/osu.Game/Rulesets/Scoring/JudgementProcessor.cs b/osu.Game/Rulesets/Scoring/JudgementProcessor.cs index 33dc4b9a22..3016007f98 100644 --- a/osu.Game/Rulesets/Scoring/JudgementProcessor.cs +++ b/osu.Game/Rulesets/Scoring/JudgementProcessor.cs @@ -3,13 +3,14 @@ using System; using osu.Framework.Extensions.TypeExtensions; +using osu.Framework.Graphics; using osu.Game.Beatmaps; using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Objects; namespace osu.Game.Rulesets.Scoring { - public abstract class JudgementProcessor + public abstract class JudgementProcessor : Component { /// /// Invoked when all s have been judged by this . @@ -47,10 +48,6 @@ namespace osu.Game.Rulesets.Scoring Reset(true); } - public virtual void ApplyElapsedTime(double elapsedTime) - { - } - /// /// Applies the score change of a to this . /// @@ -119,8 +116,6 @@ namespace osu.Game.Rulesets.Scoring /// The to simulate. protected virtual void SimulateAutoplay(IBeatmap beatmap) { - HitObject lastObject = null; - foreach (var obj in beatmap.HitObjects) simulate(obj); @@ -129,9 +124,6 @@ namespace osu.Game.Rulesets.Scoring foreach (var nested in obj.NestedHitObjects) simulate(nested); - if (lastObject != null) - ApplyElapsedTime(lastObject.GetEndTime() - obj.StartTime); - var judgement = obj.CreateJudgement(); if (judgement == null) return; @@ -142,8 +134,6 @@ namespace osu.Game.Rulesets.Scoring result.Type = judgement.MaxResult; ApplyResult(result); - - lastObject = obj; } } } diff --git a/osu.Game/Rulesets/UI/DrawableRuleset.cs b/osu.Game/Rulesets/UI/DrawableRuleset.cs index f318539bb7..e624fb80fa 100644 --- a/osu.Game/Rulesets/UI/DrawableRuleset.cs +++ b/osu.Game/Rulesets/UI/DrawableRuleset.cs @@ -72,10 +72,9 @@ namespace osu.Game.Rulesets.UI /// public override Playfield Playfield => playfield.Value; - /// - /// Place to put drawables above hit objects but below UI. - /// - public Container Overlays { get; private set; } + private Container overlays; + + public override Container Overlays => overlays; public override GameplayClock FrameStableClock => frameStabilityContainer.GameplayClock; @@ -185,12 +184,15 @@ namespace osu.Game.Rulesets.UI frameStabilityContainer = new FrameStabilityContainer(GameplayStartTime) { FrameStablePlayback = FrameStablePlayback, - Child = KeyBindingInputManager - .WithChild(CreatePlayfieldAdjustmentContainer() - .WithChild(Playfield) - ) + Children = new Drawable[] + { + KeyBindingInputManager + .WithChild(CreatePlayfieldAdjustmentContainer() + .WithChild(Playfield) + ), + overlays = new Container { RelativeSizeAxes = Axes.Both } + } }, - Overlays = new Container { RelativeSizeAxes = Axes.Both } }; if ((ResumeOverlay = CreateResumeOverlay()) != null) @@ -385,6 +387,11 @@ namespace osu.Game.Rulesets.UI /// public abstract Playfield Playfield { get; } + /// + /// Place to put drawables above hit objects but below UI. + /// + public abstract Container Overlays { get; } + /// /// The frame-stable clock which is being used for playfield display. /// diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index bc6510440a..620a9195f7 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -208,12 +208,6 @@ namespace osu.Game.Screens.Play { target.AddRange(new[] { - BreakOverlay = new BreakOverlay(working.Beatmap.BeatmapInfo.LetterboxInBreaks, DrawableRuleset.GameplayStartTime, ScoreProcessor) - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Breaks = working.Beatmap.Breaks - }, // display the cursor above some HUD elements. DrawableRuleset.Cursor?.CreateProxy() ?? new Container(), DrawableRuleset.ResumeOverlay?.CreateProxy() ?? new Container(), @@ -268,6 +262,16 @@ namespace osu.Game.Screens.Play }, failAnimation = new FailAnimation(DrawableRuleset) { OnComplete = onFailComplete, } }); + + DrawableRuleset.Overlays.Add(BreakOverlay = new BreakOverlay(working.Beatmap.BeatmapInfo.LetterboxInBreaks, DrawableRuleset.GameplayStartTime, ScoreProcessor) + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Breaks = working.Beatmap.Breaks + }); + + DrawableRuleset.Overlays.Add(ScoreProcessor); + DrawableRuleset.Overlays.Add(HealthProcessor); } private void updatePauseOnFocusLostState() => @@ -342,14 +346,6 @@ namespace osu.Game.Screens.Play this.Exit(); } - protected override void Update() - { - base.Update(); - - if (!GameplayClockContainer.IsPaused.Value) - HealthProcessor.ApplyElapsedTime(GameplayClockContainer.GameplayClock.ElapsedFrameTime); - } - /// /// Restart gameplay via a parent . /// This can be called from a child screen in order to trigger the restart process. From b348abcd0779fe203e9c10dc91018ca7d54d1fc6 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 25 Dec 2019 14:49:17 +0900 Subject: [PATCH 0568/1829] Only drain health in non-break times --- osu.Game/Rulesets/Scoring/HealthProcessor.cs | 8 +++++++- osu.Game/Screens/Play/Player.cs | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Scoring/HealthProcessor.cs b/osu.Game/Rulesets/Scoring/HealthProcessor.cs index b9638fed15..af81f3b8b5 100644 --- a/osu.Game/Rulesets/Scoring/HealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/HealthProcessor.cs @@ -29,6 +29,11 @@ namespace osu.Game.Rulesets.Scoring /// public readonly BindableDouble Health = new BindableDouble(1) { MinValue = 0, MaxValue = 1 }; + /// + /// Whether gameplay is currently in a break. + /// + public readonly IBindable IsBreakTime = new Bindable(); + /// /// Whether this ScoreProcessor has already triggered the failed state. /// @@ -53,7 +58,8 @@ namespace osu.Game.Rulesets.Scoring { base.Update(); - Health.Value -= drainRate * Time.Elapsed; + if (!IsBreakTime.Value) + Health.Value -= drainRate * Time.Elapsed; } protected override void ApplyResultInternal(JudgementResult result) diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index 620a9195f7..dc0dd86c51 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -272,6 +272,8 @@ namespace osu.Game.Screens.Play DrawableRuleset.Overlays.Add(ScoreProcessor); DrawableRuleset.Overlays.Add(HealthProcessor); + + HealthProcessor.IsBreakTime.BindTo(BreakOverlay.IsBreakTime); } private void updatePauseOnFocusLostState() => From 522847987bd4c16b6d24b83955c02a9e3455c0fb Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 25 Dec 2019 15:33:13 +0900 Subject: [PATCH 0569/1829] Implement break/gameplay start times --- osu.Game.Rulesets.Catch/CatchRuleset.cs | 2 -- .../Scoring/CatchHealthProcessor.cs | 11 -------- osu.Game.Rulesets.Mania/ManiaRuleset.cs | 2 -- .../Scoring/ManiaHealthProcessor.cs | 11 -------- osu.Game.Rulesets.Osu/OsuRuleset.cs | 2 -- .../Scoring/OsuHealthProcessor.cs | 15 ---------- .../Scoring/TaikoHealthProcessor.cs | 22 --------------- osu.Game.Rulesets.Taiko/TaikoRuleset.cs | 2 -- osu.Game/Rulesets/Ruleset.cs | 2 +- osu.Game/Rulesets/Scoring/HealthProcessor.cs | 28 +++++++++++++++++-- osu.Game/Screens/Play/Player.cs | 2 +- 11 files changed, 28 insertions(+), 71 deletions(-) delete mode 100644 osu.Game.Rulesets.Catch/Scoring/CatchHealthProcessor.cs delete mode 100644 osu.Game.Rulesets.Mania/Scoring/ManiaHealthProcessor.cs delete mode 100644 osu.Game.Rulesets.Osu/Scoring/OsuHealthProcessor.cs delete mode 100644 osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs diff --git a/osu.Game.Rulesets.Catch/CatchRuleset.cs b/osu.Game.Rulesets.Catch/CatchRuleset.cs index b86fa09484..dc8df28e6a 100644 --- a/osu.Game.Rulesets.Catch/CatchRuleset.cs +++ b/osu.Game.Rulesets.Catch/CatchRuleset.cs @@ -30,8 +30,6 @@ namespace osu.Game.Rulesets.Catch public override ScoreProcessor CreateScoreProcessor() => new CatchScoreProcessor(); - public override HealthProcessor CreateHealthProcessor() => new CatchHealthProcessor(); - public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new CatchBeatmapConverter(beatmap, this); public override IBeatmapProcessor CreateBeatmapProcessor(IBeatmap beatmap) => new CatchBeatmapProcessor(beatmap); diff --git a/osu.Game.Rulesets.Catch/Scoring/CatchHealthProcessor.cs b/osu.Game.Rulesets.Catch/Scoring/CatchHealthProcessor.cs deleted file mode 100644 index 77a6c665bd..0000000000 --- a/osu.Game.Rulesets.Catch/Scoring/CatchHealthProcessor.cs +++ /dev/null @@ -1,11 +0,0 @@ -// 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.Rulesets.Scoring; - -namespace osu.Game.Rulesets.Catch.Scoring -{ - public class CatchHealthProcessor : HealthProcessor - { - } -} diff --git a/osu.Game.Rulesets.Mania/ManiaRuleset.cs b/osu.Game.Rulesets.Mania/ManiaRuleset.cs index 4cc439f909..c693aa05de 100644 --- a/osu.Game.Rulesets.Mania/ManiaRuleset.cs +++ b/osu.Game.Rulesets.Mania/ManiaRuleset.cs @@ -37,8 +37,6 @@ namespace osu.Game.Rulesets.Mania public override ScoreProcessor CreateScoreProcessor() => new ManiaScoreProcessor(); - public override HealthProcessor CreateHealthProcessor() => new ManiaHealthProcessor(); - public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new ManiaBeatmapConverter(beatmap, this); diff --git a/osu.Game.Rulesets.Mania/Scoring/ManiaHealthProcessor.cs b/osu.Game.Rulesets.Mania/Scoring/ManiaHealthProcessor.cs deleted file mode 100644 index 391fe0ace7..0000000000 --- a/osu.Game.Rulesets.Mania/Scoring/ManiaHealthProcessor.cs +++ /dev/null @@ -1,11 +0,0 @@ -// 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.Rulesets.Scoring; - -namespace osu.Game.Rulesets.Mania.Scoring -{ - public class ManiaHealthProcessor : HealthProcessor - { - } -} diff --git a/osu.Game.Rulesets.Osu/OsuRuleset.cs b/osu.Game.Rulesets.Osu/OsuRuleset.cs index f7b4f90209..36346eb78a 100644 --- a/osu.Game.Rulesets.Osu/OsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/OsuRuleset.cs @@ -38,8 +38,6 @@ namespace osu.Game.Rulesets.Osu public override ScoreProcessor CreateScoreProcessor() => new OsuScoreProcessor(); - public override HealthProcessor CreateHealthProcessor() => new OsuHealthProcessor(); - public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new OsuBeatmapConverter(beatmap, this); public override IBeatmapProcessor CreateBeatmapProcessor(IBeatmap beatmap) => new OsuBeatmapProcessor(beatmap); diff --git a/osu.Game.Rulesets.Osu/Scoring/OsuHealthProcessor.cs b/osu.Game.Rulesets.Osu/Scoring/OsuHealthProcessor.cs deleted file mode 100644 index d6d83425ff..0000000000 --- a/osu.Game.Rulesets.Osu/Scoring/OsuHealthProcessor.cs +++ /dev/null @@ -1,15 +0,0 @@ -// 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.Rulesets.Judgements; -using osu.Game.Rulesets.Objects; -using osu.Game.Rulesets.Osu.Judgements; -using osu.Game.Rulesets.Scoring; - -namespace osu.Game.Rulesets.Osu.Scoring -{ - public class OsuHealthProcessor : HealthProcessor - { - protected override JudgementResult CreateResult(HitObject hitObject, Judgement judgement) => new OsuJudgementResult(hitObject, judgement); - } -} diff --git a/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs b/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs deleted file mode 100644 index df5dd19de3..0000000000 --- a/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs +++ /dev/null @@ -1,22 +0,0 @@ -// 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.Rulesets.Scoring; - -namespace osu.Game.Rulesets.Taiko.Scoring -{ - public class TaikoHealthProcessor : HealthProcessor - { - /// - /// Taiko fails at the end of the map if the player has not half-filled their HP bar. - /// - protected override bool DefaultFailCondition => JudgedHits == MaxHits && Health.Value <= 0.5; - - protected override void Reset(bool storeResults) - { - base.Reset(storeResults); - - Health.Value = 0; - } - } -} diff --git a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs index 6763a1d340..79de2d0334 100644 --- a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs +++ b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs @@ -30,8 +30,6 @@ namespace osu.Game.Rulesets.Taiko public override ScoreProcessor CreateScoreProcessor() => new TaikoScoreProcessor(); - public override HealthProcessor CreateHealthProcessor() => new TaikoHealthProcessor(); - public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new TaikoBeatmapConverter(beatmap, this); diff --git a/osu.Game/Rulesets/Ruleset.cs b/osu.Game/Rulesets/Ruleset.cs index 72973cc677..6310b19cd3 100644 --- a/osu.Game/Rulesets/Ruleset.cs +++ b/osu.Game/Rulesets/Ruleset.cs @@ -80,7 +80,7 @@ namespace osu.Game.Rulesets /// Creates a for this . /// /// The health processor. - public virtual HealthProcessor CreateHealthProcessor() => new HealthProcessor(); + public virtual HealthProcessor CreateHealthProcessor(double gameplayStartTime) => new HealthProcessor(gameplayStartTime); /// /// Creates a to convert a to one that is applicable for this . diff --git a/osu.Game/Rulesets/Scoring/HealthProcessor.cs b/osu.Game/Rulesets/Scoring/HealthProcessor.cs index af81f3b8b5..772e317955 100644 --- a/osu.Game/Rulesets/Scoring/HealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/HealthProcessor.cs @@ -39,14 +39,25 @@ namespace osu.Game.Rulesets.Scoring /// public bool HasFailed { get; private set; } + private readonly double gameplayStartTime; + + private IBeatmap beatmap; + private List<(double time, double health)> healthIncreases; private double targetMinimumHealth; private double drainRate = 1; + public HealthProcessor(double gameplayStartTime) + { + this.gameplayStartTime = gameplayStartTime; + } + public override void ApplyBeatmap(IBeatmap beatmap) { + this.beatmap = beatmap; + healthIncreases = new List<(double time, double health)>(); - targetMinimumHealth = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.95, 0.85, 0.65); + targetMinimumHealth = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.95, 0.6, 0.2); base.ApplyBeatmap(beatmap); @@ -108,11 +119,24 @@ namespace osu.Game.Rulesets.Scoring { double currentHealth = 1; double lowestHealth = 1; + int currentBreak = -1; for (int i = 0; i < healthIncreases.Count; i++) { - var lastTime = i > 0 ? healthIncreases[i - 1].time : 0; + double currentTime = healthIncreases[i].time; + double lastTime = i > 0 ? healthIncreases[i - 1].time : gameplayStartTime; + // Subtract any break time from the duration since the last object + if (beatmap.Breaks.Count > 0) + { + while (currentBreak + 1 < beatmap.Breaks.Count && beatmap.Breaks[currentBreak + 1].EndTime < currentTime) + currentBreak++; + + if (currentBreak >= 0) + lastTime = Math.Max(lastTime, beatmap.Breaks[currentBreak].EndTime); + } + + // Apply health adjustments currentHealth -= (healthIncreases[i].time - lastTime) * drainRate; lowestHealth = Math.Min(lowestHealth, currentHealth); currentHealth = Math.Min(1, currentHealth + healthIncreases[i].health); diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index dc0dd86c51..c56fbaf847 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -135,7 +135,7 @@ namespace osu.Game.Screens.Play ScoreProcessor.ApplyBeatmap(playableBeatmap); ScoreProcessor.Mods.BindTo(Mods); - HealthProcessor = ruleset.CreateHealthProcessor(); + HealthProcessor = ruleset.CreateHealthProcessor(DrawableRuleset.GameplayStartTime); HealthProcessor.ApplyBeatmap(playableBeatmap); if (!ScoreProcessor.Mode.Disabled) From 90a0569660a593e53e27cc1853155a73df09bbf6 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 25 Dec 2019 19:19:57 +0900 Subject: [PATCH 0570/1829] Tweak drain values --- osu.Game.Rulesets.Osu/Judgements/OsuJudgement.cs | 13 +++++++++++-- osu.Game/Rulesets/Scoring/HealthProcessor.cs | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Judgements/OsuJudgement.cs b/osu.Game.Rulesets.Osu/Judgements/OsuJudgement.cs index 7a5b98864c..845ff76ce6 100644 --- a/osu.Game.Rulesets.Osu/Judgements/OsuJudgement.cs +++ b/osu.Game.Rulesets.Osu/Judgements/OsuJudgement.cs @@ -8,6 +8,11 @@ namespace osu.Game.Rulesets.Osu.Judgements { public class OsuJudgement : Judgement { + /// + /// The health increase for a maximum judgement result. + /// + protected const double MAX_HEALTH_INCREASE = 0.05; + public override HitResult MaxResult => HitResult.Great; protected override int NumericResultFor(HitResult result) @@ -33,12 +38,16 @@ namespace osu.Game.Rulesets.Osu.Judgements switch (result) { case HitResult.Miss: - return -0.02; + return -MAX_HEALTH_INCREASE; case HitResult.Meh: + return -MAX_HEALTH_INCREASE * 0.05; + case HitResult.Good: + return MAX_HEALTH_INCREASE * 0.3; + case HitResult.Great: - return 0.01; + return MAX_HEALTH_INCREASE; default: return 0; diff --git a/osu.Game/Rulesets/Scoring/HealthProcessor.cs b/osu.Game/Rulesets/Scoring/HealthProcessor.cs index 772e317955..a1389d7ee9 100644 --- a/osu.Game/Rulesets/Scoring/HealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/HealthProcessor.cs @@ -57,7 +57,7 @@ namespace osu.Game.Rulesets.Scoring this.beatmap = beatmap; healthIncreases = new List<(double time, double health)>(); - targetMinimumHealth = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.95, 0.6, 0.2); + targetMinimumHealth = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.95, 0.70, 0.30); base.ApplyBeatmap(beatmap); From 0454c5022d997b22835f94f446f5ba9bcf345dfa Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 25 Dec 2019 19:39:59 +0900 Subject: [PATCH 0571/1829] Fix some maps potentially starting with 0 health --- osu.Game/Rulesets/Scoring/HealthProcessor.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Scoring/HealthProcessor.cs b/osu.Game/Rulesets/Scoring/HealthProcessor.cs index a1389d7ee9..8dd6cc1ed9 100644 --- a/osu.Game/Rulesets/Scoring/HealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/HealthProcessor.cs @@ -70,7 +70,11 @@ namespace osu.Game.Rulesets.Scoring base.Update(); if (!IsBreakTime.Value) - Health.Value -= drainRate * Time.Elapsed; + { + // When jumping from before the gameplay start to after it or vice-versa, we only want to consider any drain since the gameplay start time + double lastTime = Math.Max(gameplayStartTime, Time.Current - Time.Elapsed); + Health.Value -= drainRate * (Time.Current - lastTime); + } } protected override void ApplyResultInternal(JudgementResult result) From 3b07c3913dd9209be68f7f928cb704ac6c6ba168 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 25 Dec 2019 19:58:23 +0900 Subject: [PATCH 0572/1829] Add perfect and ok values, move to base Judgement --- .../Judgements/OsuJudgement.cs | 26 --------------- osu.Game/Rulesets/Judgements/Judgement.cs | 33 ++++++++++++++++++- 2 files changed, 32 insertions(+), 27 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Judgements/OsuJudgement.cs b/osu.Game.Rulesets.Osu/Judgements/OsuJudgement.cs index 845ff76ce6..bf30fbc351 100644 --- a/osu.Game.Rulesets.Osu/Judgements/OsuJudgement.cs +++ b/osu.Game.Rulesets.Osu/Judgements/OsuJudgement.cs @@ -8,11 +8,6 @@ namespace osu.Game.Rulesets.Osu.Judgements { public class OsuJudgement : Judgement { - /// - /// The health increase for a maximum judgement result. - /// - protected const double MAX_HEALTH_INCREASE = 0.05; - public override HitResult MaxResult => HitResult.Great; protected override int NumericResultFor(HitResult result) @@ -32,26 +27,5 @@ namespace osu.Game.Rulesets.Osu.Judgements return 300; } } - - protected override double HealthIncreaseFor(HitResult result) - { - switch (result) - { - case HitResult.Miss: - return -MAX_HEALTH_INCREASE; - - case HitResult.Meh: - return -MAX_HEALTH_INCREASE * 0.05; - - case HitResult.Good: - return MAX_HEALTH_INCREASE * 0.3; - - case HitResult.Great: - return MAX_HEALTH_INCREASE; - - default: - return 0; - } - } } } diff --git a/osu.Game/Rulesets/Judgements/Judgement.cs b/osu.Game/Rulesets/Judgements/Judgement.cs index f07f76a2b8..599135ba54 100644 --- a/osu.Game/Rulesets/Judgements/Judgement.cs +++ b/osu.Game/Rulesets/Judgements/Judgement.cs @@ -11,6 +11,12 @@ namespace osu.Game.Rulesets.Judgements /// public class Judgement { + /// + /// The default health increase for a maximum judgement, as a proportion of total health. + /// By default, each maximum judgement restores 5% of total health. + /// + protected const double DEFAULT_MAX_HEALTH_INCREASE = 0.05; + /// /// The maximum that can be achieved. /// @@ -55,7 +61,32 @@ namespace osu.Game.Rulesets.Judgements /// /// The to find the numeric health increase for. /// The numeric health increase of . - protected virtual double HealthIncreaseFor(HitResult result) => 0; + protected virtual double HealthIncreaseFor(HitResult result) + { + switch (result) + { + case HitResult.Miss: + return -DEFAULT_MAX_HEALTH_INCREASE; + + case HitResult.Meh: + return -DEFAULT_MAX_HEALTH_INCREASE * 0.05; + + case HitResult.Ok: + return -DEFAULT_MAX_HEALTH_INCREASE * 0.01; + + case HitResult.Good: + return DEFAULT_MAX_HEALTH_INCREASE * 0.3; + + case HitResult.Great: + return DEFAULT_MAX_HEALTH_INCREASE; + + case HitResult.Perfect: + return DEFAULT_MAX_HEALTH_INCREASE * 1.05; + + default: + return 0; + } + } /// /// Retrieves the numeric health increase of a . From eba6371526095c2e39f850f734c33671a496866c Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 25 Dec 2019 21:16:40 +0900 Subject: [PATCH 0573/1829] Re-implement taiko's accumulating health processor --- .../Scoring/TaikoHealthProcessor.cs | 47 ++++++++ osu.Game.Rulesets.Taiko/TaikoRuleset.cs | 2 + osu.Game/Rulesets/Ruleset.cs | 2 +- .../Scoring/AccumulatingHealthProcessor.cs | 20 ++++ .../Scoring/DrainingHealthProcessor.cs | 108 ++++++++++++++++++ osu.Game/Rulesets/Scoring/HealthProcessor.cs | 99 ++-------------- 6 files changed, 188 insertions(+), 90 deletions(-) create mode 100644 osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs create mode 100644 osu.Game/Rulesets/Scoring/AccumulatingHealthProcessor.cs create mode 100644 osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs diff --git a/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs b/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs new file mode 100644 index 0000000000..679addc32d --- /dev/null +++ b/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs @@ -0,0 +1,47 @@ +// 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.Game.Beatmaps; +using osu.Game.Rulesets.Judgements; +using osu.Game.Rulesets.Scoring; +using osu.Game.Rulesets.Taiko.Objects; + +namespace osu.Game.Rulesets.Taiko.Scoring +{ + public class TaikoHealthProcessor : AccumulatingHealthProcessor + { + /// + /// A value used for calculating . + /// + private const double object_count_factor = 3; + + /// + /// HP multiplier for a successful . + /// + private double hpMultiplier; + + /// + /// HP multiplier for a . + /// + private double hpMissMultiplier; + + public TaikoHealthProcessor(double gameplayStartTime) + : base(gameplayStartTime) + { + } + + public override void ApplyBeatmap(IBeatmap beatmap) + { + base.ApplyBeatmap(beatmap); + + hpMultiplier = 1 / (object_count_factor * beatmap.HitObjects.OfType().Count() * BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.5, 0.75, 0.98)); + hpMissMultiplier = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.0018, 0.0075, 0.0120); + } + + protected override double GetHealthIncreaseFor(JudgementResult result) + => base.GetHealthIncreaseFor(result) * (result.Type == HitResult.Miss ? hpMissMultiplier : hpMultiplier); + + protected override bool DefaultFailCondition => JudgedHits == MaxHits && Health.Value <= 0.5; + } +} diff --git a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs index 79de2d0334..de589f81b6 100644 --- a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs +++ b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs @@ -30,6 +30,8 @@ namespace osu.Game.Rulesets.Taiko public override ScoreProcessor CreateScoreProcessor() => new TaikoScoreProcessor(); + public override HealthProcessor CreateHealthProcessor(double gameplayStartTime) => new TaikoHealthProcessor(gameplayStartTime); + public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new TaikoBeatmapConverter(beatmap, this); diff --git a/osu.Game/Rulesets/Ruleset.cs b/osu.Game/Rulesets/Ruleset.cs index 6310b19cd3..ff58d3c8dc 100644 --- a/osu.Game/Rulesets/Ruleset.cs +++ b/osu.Game/Rulesets/Ruleset.cs @@ -80,7 +80,7 @@ namespace osu.Game.Rulesets /// Creates a for this . /// /// The health processor. - public virtual HealthProcessor CreateHealthProcessor(double gameplayStartTime) => new HealthProcessor(gameplayStartTime); + public virtual HealthProcessor CreateHealthProcessor(double gameplayStartTime) => new DrainingHealthProcessor(gameplayStartTime); /// /// Creates a to convert a to one that is applicable for this . diff --git a/osu.Game/Rulesets/Scoring/AccumulatingHealthProcessor.cs b/osu.Game/Rulesets/Scoring/AccumulatingHealthProcessor.cs new file mode 100644 index 0000000000..edc8d18804 --- /dev/null +++ b/osu.Game/Rulesets/Scoring/AccumulatingHealthProcessor.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. + +namespace osu.Game.Rulesets.Scoring +{ + public class AccumulatingHealthProcessor : HealthProcessor + { + public AccumulatingHealthProcessor(double gameplayStartTime) + : base(gameplayStartTime) + { + } + + protected override void Reset(bool storeResults) + { + base.Reset(storeResults); + + Health.Value = 0; + } + } +} diff --git a/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs b/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs new file mode 100644 index 0000000000..8b30728caf --- /dev/null +++ b/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs @@ -0,0 +1,108 @@ +// 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.Game.Beatmaps; +using osu.Game.Rulesets.Judgements; +using osu.Game.Rulesets.Objects; + +namespace osu.Game.Rulesets.Scoring +{ + public class DrainingHealthProcessor : HealthProcessor + { + private IBeatmap beatmap; + + private List<(double time, double health)> healthIncreases; + private double targetMinimumHealth; + private double drainRate = 1; + + public DrainingHealthProcessor(double gameplayStartTime) + : base(gameplayStartTime) + { + } + + protected override void Update() + { + base.Update(); + + if (!IsBreakTime.Value) + { + // When jumping from before the gameplay start to after it or vice-versa, we only want to consider any drain since the gameplay start time + double lastTime = Math.Max(GameplayStartTime, Time.Current - Time.Elapsed); + Health.Value -= drainRate * (Time.Current - lastTime); + } + } + + public override void ApplyBeatmap(IBeatmap beatmap) + { + this.beatmap = beatmap; + + healthIncreases = new List<(double time, double health)>(); + targetMinimumHealth = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.95, 0.70, 0.30); + + base.ApplyBeatmap(beatmap); + + // Only required during the simulation stage + healthIncreases = null; + } + + protected override void ApplyResultInternal(JudgementResult result) + { + base.ApplyResultInternal(result); + healthIncreases?.Add((result.HitObject.GetEndTime() + result.TimeOffset, GetHealthIncreaseFor(result))); + } + + protected override void Reset(bool storeResults) + { + base.Reset(storeResults); + + drainRate = 1; + + if (storeResults) + { + int count = 1; + + while (true) + { + double currentHealth = 1; + double lowestHealth = 1; + int currentBreak = -1; + + for (int i = 0; i < healthIncreases.Count; i++) + { + double currentTime = healthIncreases[i].time; + double lastTime = i > 0 ? healthIncreases[i - 1].time : GameplayStartTime; + + // Subtract any break time from the duration since the last object + if (beatmap.Breaks.Count > 0) + { + while (currentBreak + 1 < beatmap.Breaks.Count && beatmap.Breaks[currentBreak + 1].EndTime < currentTime) + currentBreak++; + + if (currentBreak >= 0) + lastTime = Math.Max(lastTime, beatmap.Breaks[currentBreak].EndTime); + } + + // Apply health adjustments + currentHealth -= (healthIncreases[i].time - lastTime) * drainRate; + lowestHealth = Math.Min(lowestHealth, currentHealth); + currentHealth = Math.Min(1, currentHealth + healthIncreases[i].health); + + // Common scenario for when the drain rate is definitely too harsh + if (lowestHealth < 0) + break; + } + + if (Math.Abs(lowestHealth - targetMinimumHealth) <= 0.01) + break; + + count *= 2; + drainRate += 1.0 / count * Math.Sign(lowestHealth - targetMinimumHealth); + } + } + + healthIncreases.Clear(); + } + } +} diff --git a/osu.Game/Rulesets/Scoring/HealthProcessor.cs b/osu.Game/Rulesets/Scoring/HealthProcessor.cs index 8dd6cc1ed9..597989701d 100644 --- a/osu.Game/Rulesets/Scoring/HealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/HealthProcessor.cs @@ -2,16 +2,13 @@ // See the LICENCE file in the repository root for full licence text. using System; -using System.Collections.Generic; using osu.Framework.Bindables; using osu.Framework.MathUtils; -using osu.Game.Beatmaps; using osu.Game.Rulesets.Judgements; -using osu.Game.Rulesets.Objects; namespace osu.Game.Rulesets.Scoring { - public class HealthProcessor : JudgementProcessor + public abstract class HealthProcessor : JudgementProcessor { /// /// Invoked when the is in a failed state. @@ -39,42 +36,14 @@ namespace osu.Game.Rulesets.Scoring /// public bool HasFailed { get; private set; } - private readonly double gameplayStartTime; + /// + /// The gameplay start time. + /// + protected readonly double GameplayStartTime; - private IBeatmap beatmap; - - private List<(double time, double health)> healthIncreases; - private double targetMinimumHealth; - private double drainRate = 1; - - public HealthProcessor(double gameplayStartTime) + protected HealthProcessor(double gameplayStartTime) { - this.gameplayStartTime = gameplayStartTime; - } - - public override void ApplyBeatmap(IBeatmap beatmap) - { - this.beatmap = beatmap; - - healthIncreases = new List<(double time, double health)>(); - targetMinimumHealth = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.95, 0.70, 0.30); - - base.ApplyBeatmap(beatmap); - - // Only required during the simulation stage - healthIncreases = null; - } - - protected override void Update() - { - base.Update(); - - if (!IsBreakTime.Value) - { - // When jumping from before the gameplay start to after it or vice-versa, we only want to consider any drain since the gameplay start time - double lastTime = Math.Max(gameplayStartTime, Time.Current - Time.Elapsed); - Health.Value -= drainRate * (Time.Current - lastTime); - } + GameplayStartTime = gameplayStartTime; } protected override void ApplyResultInternal(JudgementResult result) @@ -82,13 +51,10 @@ namespace osu.Game.Rulesets.Scoring result.HealthAtJudgement = Health.Value; result.FailedAtJudgement = HasFailed; - double healthIncrease = result.Judgement.HealthIncreaseFor(result); - healthIncreases?.Add((result.HitObject.GetEndTime() + result.TimeOffset, healthIncrease)); - if (HasFailed) return; - Health.Value += healthIncrease; + Health.Value += GetHealthIncreaseFor(result); if (!DefaultFailCondition && FailConditions?.Invoke(this, result) != true) return; @@ -104,6 +70,8 @@ namespace osu.Game.Rulesets.Scoring // Todo: Revert HasFailed state with proper player support } + protected virtual double GetHealthIncreaseFor(JudgementResult result) => result.Judgement.HealthIncreaseFor(result); + /// /// The default conditions for failing. /// @@ -113,53 +81,6 @@ namespace osu.Game.Rulesets.Scoring { base.Reset(storeResults); - drainRate = 1; - - if (storeResults) - { - int count = 1; - - while (true) - { - double currentHealth = 1; - double lowestHealth = 1; - int currentBreak = -1; - - for (int i = 0; i < healthIncreases.Count; i++) - { - double currentTime = healthIncreases[i].time; - double lastTime = i > 0 ? healthIncreases[i - 1].time : gameplayStartTime; - - // Subtract any break time from the duration since the last object - if (beatmap.Breaks.Count > 0) - { - while (currentBreak + 1 < beatmap.Breaks.Count && beatmap.Breaks[currentBreak + 1].EndTime < currentTime) - currentBreak++; - - if (currentBreak >= 0) - lastTime = Math.Max(lastTime, beatmap.Breaks[currentBreak].EndTime); - } - - // Apply health adjustments - currentHealth -= (healthIncreases[i].time - lastTime) * drainRate; - lowestHealth = Math.Min(lowestHealth, currentHealth); - currentHealth = Math.Min(1, currentHealth + healthIncreases[i].health); - - // Common scenario for when the drain rate is definitely too harsh - if (lowestHealth < 0) - break; - } - - if (Math.Abs(lowestHealth - targetMinimumHealth) <= 0.01) - break; - - count *= 2; - drainRate += 1.0 / count * Math.Sign(lowestHealth - targetMinimumHealth); - } - } - - healthIncreases.Clear(); - Health.Value = 1; HasFailed = false; } From e0c1072ab22cd78f002fca32c512236c6b786feb Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 25 Dec 2019 21:22:46 +0900 Subject: [PATCH 0574/1829] Add xmldocs --- .../Scoring/TaikoHealthProcessor.cs | 3 +-- .../Scoring/AccumulatingHealthProcessor.cs | 16 +++++++++++++++- .../Rulesets/Scoring/DrainingHealthProcessor.cs | 7 +++++++ osu.Game/Rulesets/Scoring/HealthProcessor.cs | 9 +++++++++ 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs b/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs index 679addc32d..85f072fa54 100644 --- a/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs +++ b/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs @@ -27,7 +27,7 @@ namespace osu.Game.Rulesets.Taiko.Scoring private double hpMissMultiplier; public TaikoHealthProcessor(double gameplayStartTime) - : base(gameplayStartTime) + : base(gameplayStartTime, 0.5) { } @@ -42,6 +42,5 @@ namespace osu.Game.Rulesets.Taiko.Scoring protected override double GetHealthIncreaseFor(JudgementResult result) => base.GetHealthIncreaseFor(result) * (result.Type == HitResult.Miss ? hpMissMultiplier : hpMultiplier); - protected override bool DefaultFailCondition => JudgedHits == MaxHits && Health.Value <= 0.5; } } diff --git a/osu.Game/Rulesets/Scoring/AccumulatingHealthProcessor.cs b/osu.Game/Rulesets/Scoring/AccumulatingHealthProcessor.cs index edc8d18804..540b4b8a1d 100644 --- a/osu.Game/Rulesets/Scoring/AccumulatingHealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/AccumulatingHealthProcessor.cs @@ -3,11 +3,25 @@ namespace osu.Game.Rulesets.Scoring { + /// + /// A that accumulates health and causes a fail if the final health + /// is less than a value required to pass the beatmap. + /// public class AccumulatingHealthProcessor : HealthProcessor { - public AccumulatingHealthProcessor(double gameplayStartTime) + protected override bool DefaultFailCondition => JudgedHits == MaxHits && Health.Value < requiredHealth; + + private readonly double requiredHealth; + + /// + /// Creates a new . + /// + /// The gameplay start time. + /// The minimum amount of health required to beatmap. + public AccumulatingHealthProcessor(double gameplayStartTime, double requiredHealth) : base(gameplayStartTime) { + this.requiredHealth = requiredHealth; } protected override void Reset(bool storeResults) diff --git a/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs b/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs index 8b30728caf..df9fba0cca 100644 --- a/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs @@ -9,6 +9,9 @@ using osu.Game.Rulesets.Objects; namespace osu.Game.Rulesets.Scoring { + /// + /// A which continuously drains health. + /// public class DrainingHealthProcessor : HealthProcessor { private IBeatmap beatmap; @@ -17,6 +20,10 @@ namespace osu.Game.Rulesets.Scoring private double targetMinimumHealth; private double drainRate = 1; + /// + /// Creates a new . + /// + /// The gameplay start time. public DrainingHealthProcessor(double gameplayStartTime) : base(gameplayStartTime) { diff --git a/osu.Game/Rulesets/Scoring/HealthProcessor.cs b/osu.Game/Rulesets/Scoring/HealthProcessor.cs index 597989701d..d8addc2b4d 100644 --- a/osu.Game/Rulesets/Scoring/HealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/HealthProcessor.cs @@ -41,6 +41,10 @@ namespace osu.Game.Rulesets.Scoring /// protected readonly double GameplayStartTime; + /// + /// Creates a new . + /// + /// The gameplay start time. protected HealthProcessor(double gameplayStartTime) { GameplayStartTime = gameplayStartTime; @@ -70,6 +74,11 @@ namespace osu.Game.Rulesets.Scoring // Todo: Revert HasFailed state with proper player support } + /// + /// Retrieves the health increase for a . + /// + /// The . + /// The health increase. protected virtual double GetHealthIncreaseFor(JudgementResult result) => result.Judgement.HealthIncreaseFor(result); /// From 96a4f9ae53f537c236a17ad4728bf92c0ad87831 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 26 Dec 2019 15:14:19 +0900 Subject: [PATCH 0575/1829] Fix nub position getting offset by size changes --- .../Graphics/UserInterface/OsuSliderBar.cs | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/OsuSliderBar.cs b/osu.Game/Graphics/UserInterface/OsuSliderBar.cs index 563dc2dad9..958390d5d2 100644 --- a/osu.Game/Graphics/UserInterface/OsuSliderBar.cs +++ b/osu.Game/Graphics/UserInterface/OsuSliderBar.cs @@ -9,6 +9,7 @@ using osu.Framework.Allocation; using osu.Framework.Audio; using osu.Framework.Audio.Sample; using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.UserInterface; using osu.Framework.Graphics.Cursor; using osu.Framework.Graphics.Shapes; @@ -31,6 +32,7 @@ namespace osu.Game.Graphics.UserInterface protected readonly Nub Nub; private readonly Box leftBox; private readonly Box rightBox; + private readonly Container nubContainer; public virtual string TooltipText { get; private set; } @@ -72,10 +74,15 @@ namespace osu.Game.Graphics.UserInterface Origin = Anchor.CentreRight, Alpha = 0.5f, }, - Nub = new Nub + nubContainer = new Container { - Origin = Anchor.TopCentre, - Expanded = true, + RelativeSizeAxes = Axes.Both, + Child = Nub = new Nub + { + Origin = Anchor.TopCentre, + RelativePositionAxes = Axes.X, + Expanded = true, + }, }, new HoverClickSounds() }; @@ -90,6 +97,13 @@ namespace osu.Game.Graphics.UserInterface AccentColour = colours.Pink; } + protected override void Update() + { + base.Update(); + + nubContainer.Padding = new MarginPadding { Horizontal = RangePadding }; + } + protected override void LoadComplete() { base.LoadComplete(); @@ -176,14 +190,14 @@ namespace osu.Game.Graphics.UserInterface { base.UpdateAfterChildren(); leftBox.Scale = new Vector2(Math.Clamp( - Nub.DrawPosition.X - Nub.DrawWidth / 2, 0, DrawWidth), 1); + RangePadding + Nub.DrawPosition.X - Nub.DrawWidth / 2, 0, DrawWidth), 1); rightBox.Scale = new Vector2(Math.Clamp( - DrawWidth - Nub.DrawPosition.X - Nub.DrawWidth / 2, 0, DrawWidth), 1); + DrawWidth - Nub.DrawPosition.X - RangePadding - Nub.DrawWidth / 2, 0, DrawWidth), 1); } protected override void UpdateValue(float value) { - Nub.MoveToX(RangePadding + UsableWidth * value, 250, Easing.OutQuint); + Nub.MoveToX(value, 250, Easing.OutQuint); } /// From 9a013acb26b84e162e0a9a53d748728d93de7646 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Thu, 26 Dec 2019 14:25:41 +0800 Subject: [PATCH 0576/1829] Fix name typo of OsuModObjectScaleTween --- osu.Game.Rulesets.Osu/Mods/OsuModDeflate.cs | 2 +- osu.Game.Rulesets.Osu/Mods/OsuModGrow.cs | 2 +- .../{OsuModeObjectScaleTween.cs => OsuModObjectScaleTween.cs} | 2 +- osu.Game.Rulesets.Osu/Mods/OsuModSpinIn.cs | 2 +- osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) rename osu.Game.Rulesets.Osu/Mods/{OsuModeObjectScaleTween.cs => OsuModObjectScaleTween.cs} (96%) diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModDeflate.cs b/osu.Game.Rulesets.Osu/Mods/OsuModDeflate.cs index adca95cf8a..9bf7525d33 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModDeflate.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModDeflate.cs @@ -5,7 +5,7 @@ using osu.Framework.Graphics.Sprites; namespace osu.Game.Rulesets.Osu.Mods { - public class OsuModDeflate : OsuModeObjectScaleTween + public class OsuModDeflate : OsuModObjectScaleTween { public override string Name => "Deflate"; diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModGrow.cs b/osu.Game.Rulesets.Osu/Mods/OsuModGrow.cs index 3c81203ad7..76676ce888 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModGrow.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModGrow.cs @@ -5,7 +5,7 @@ using osu.Framework.Graphics.Sprites; namespace osu.Game.Rulesets.Osu.Mods { - internal class OsuModGrow : OsuModeObjectScaleTween + internal class OsuModGrow : OsuModObjectScaleTween { public override string Name => "Grow"; diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModeObjectScaleTween.cs b/osu.Game.Rulesets.Osu/Mods/OsuModObjectScaleTween.cs similarity index 96% rename from osu.Game.Rulesets.Osu/Mods/OsuModeObjectScaleTween.cs rename to osu.Game.Rulesets.Osu/Mods/OsuModObjectScaleTween.cs index 923278f484..42ddddc4dd 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModeObjectScaleTween.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModObjectScaleTween.cs @@ -17,7 +17,7 @@ namespace osu.Game.Rulesets.Osu.Mods /// /// Adjusts the size of hit objects during their fade in animation. /// - public abstract class OsuModeObjectScaleTween : Mod, IReadFromConfig, IApplicableToDrawableHitObjects + public abstract class OsuModObjectScaleTween : Mod, IReadFromConfig, IApplicableToDrawableHitObjects { public override ModType Type => ModType.Fun; diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModSpinIn.cs b/osu.Game.Rulesets.Osu/Mods/OsuModSpinIn.cs index e786ec86f9..eae218509e 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModSpinIn.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModSpinIn.cs @@ -26,7 +26,7 @@ namespace osu.Game.Rulesets.Osu.Mods public override double ScoreMultiplier => 1; // todo: this mod should be able to be compatible with hidden with a bit of further implementation. - public override Type[] IncompatibleMods => new[] { typeof(OsuModeObjectScaleTween), typeof(OsuModHidden), typeof(OsuModTraceable) }; + public override Type[] IncompatibleMods => new[] { typeof(OsuModObjectScaleTween), typeof(OsuModHidden), typeof(OsuModTraceable) }; private const int rotate_offset = 360; private const float rotate_starting_width = 2; diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs b/osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs index cf1ce517e8..dff9a77807 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs @@ -24,7 +24,7 @@ namespace osu.Game.Rulesets.Osu.Mods public override string Description => "Put your faith in the approach circles..."; public override double ScoreMultiplier => 1; - public override Type[] IncompatibleMods => new[] { typeof(OsuModHidden), typeof(OsuModSpinIn), typeof(OsuModeObjectScaleTween) }; + public override Type[] IncompatibleMods => new[] { typeof(OsuModHidden), typeof(OsuModSpinIn), typeof(OsuModObjectScaleTween) }; private Bindable increaseFirstObjectVisibility = new Bindable(); public void ReadFromConfig(OsuConfigManager config) From 429272b864b022547c21c488961931b3095c5a57 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 26 Dec 2019 15:28:30 +0900 Subject: [PATCH 0577/1829] Clean up + document taiko health processor --- osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs b/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs index 85f072fa54..279d119626 100644 --- a/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs +++ b/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs @@ -9,6 +9,10 @@ using osu.Game.Rulesets.Taiko.Objects; namespace osu.Game.Rulesets.Taiko.Scoring { + /// + /// A for the taiko ruleset. + /// Taiko fails if the player has not half-filled their health by the end of the map. + /// public class TaikoHealthProcessor : AccumulatingHealthProcessor { /// @@ -41,6 +45,5 @@ namespace osu.Game.Rulesets.Taiko.Scoring protected override double GetHealthIncreaseFor(JudgementResult result) => base.GetHealthIncreaseFor(result) * (result.Type == HitResult.Miss ? hpMissMultiplier : hpMultiplier); - } } From 662ec2d8122448f30138a18b40b3eb4b88295758 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 26 Dec 2019 15:46:07 +0900 Subject: [PATCH 0578/1829] Refactor gameplay-time drain limitation --- .../Rulesets/Scoring/DrainingHealthProcessor.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs b/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs index df9fba0cca..3735dc75c1 100644 --- a/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs @@ -16,6 +16,8 @@ namespace osu.Game.Rulesets.Scoring { private IBeatmap beatmap; + private double gameplayEndTime; + private List<(double time, double health)> healthIncreases; private double targetMinimumHealth; private double drainRate = 1; @@ -35,9 +37,11 @@ namespace osu.Game.Rulesets.Scoring if (!IsBreakTime.Value) { - // When jumping from before the gameplay start to after it or vice-versa, we only want to consider any drain since the gameplay start time - double lastTime = Math.Max(GameplayStartTime, Time.Current - Time.Elapsed); - Health.Value -= drainRate * (Time.Current - lastTime); + // When jumping in and out of gameplay time within a single frame, health should only be drained for the period within the gameplay time + double lastGameplayTime = Math.Clamp(Time.Current - Time.Elapsed, GameplayStartTime, gameplayEndTime); + double currentGameplayTime = Math.Clamp(Time.Current, GameplayStartTime, gameplayEndTime); + + Health.Value -= drainRate * (currentGameplayTime - lastGameplayTime); } } @@ -45,6 +49,9 @@ namespace osu.Game.Rulesets.Scoring { this.beatmap = beatmap; + if (beatmap.HitObjects.Count > 0) + gameplayEndTime = beatmap.HitObjects[^1].GetEndTime(); + healthIncreases = new List<(double time, double health)>(); targetMinimumHealth = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.95, 0.70, 0.30); From f5dbd57d55cb285b04bf367b27476dce54411157 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 26 Dec 2019 17:36:40 +0900 Subject: [PATCH 0579/1829] Refactor drain calculation for resiliency --- .../Scoring/DrainingHealthProcessor.cs | 79 +++++++++++-------- 1 file changed, 47 insertions(+), 32 deletions(-) diff --git a/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs b/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs index 3735dc75c1..e7e8656efb 100644 --- a/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs @@ -14,8 +14,12 @@ namespace osu.Game.Rulesets.Scoring /// public class DrainingHealthProcessor : HealthProcessor { - private IBeatmap beatmap; + /// + /// A reasonable allowable error for the minimum health offset from . A 1% error is unnoticeable. + /// + private const double minimum_health_error = 0.01; + private IBeatmap beatmap; private double gameplayEndTime; private List<(double time, double health)> healthIncreases; @@ -74,49 +78,60 @@ namespace osu.Game.Rulesets.Scoring drainRate = 1; if (storeResults) + drainRate = computeDrainRate(); + } + + private double computeDrainRate() + { + if (healthIncreases == null || healthIncreases.Count == 0) + return 0; + + int adjustment = 1; + double result = 1; + + // Although we expect the following loop to converge within 30 iterations (health within 1/2^31 accuracy of the target), + // we'll still keep a safety measure to avoid infinite loops by detecting overflows. + while (adjustment > 0) { - int count = 1; + double currentHealth = 1; + double lowestHealth = 1; + int currentBreak = -1; - while (true) + for (int i = 0; i < healthIncreases.Count; i++) { - double currentHealth = 1; - double lowestHealth = 1; - int currentBreak = -1; + double currentTime = healthIncreases[i].time; + double lastTime = i > 0 ? healthIncreases[i - 1].time : GameplayStartTime; - for (int i = 0; i < healthIncreases.Count; i++) + // Subtract any break time from the duration since the last object + if (beatmap.Breaks.Count > 0) { - double currentTime = healthIncreases[i].time; - double lastTime = i > 0 ? healthIncreases[i - 1].time : GameplayStartTime; + while (currentBreak + 1 < beatmap.Breaks.Count && beatmap.Breaks[currentBreak + 1].EndTime < currentTime) + currentBreak++; - // Subtract any break time from the duration since the last object - if (beatmap.Breaks.Count > 0) - { - while (currentBreak + 1 < beatmap.Breaks.Count && beatmap.Breaks[currentBreak + 1].EndTime < currentTime) - currentBreak++; - - if (currentBreak >= 0) - lastTime = Math.Max(lastTime, beatmap.Breaks[currentBreak].EndTime); - } - - // Apply health adjustments - currentHealth -= (healthIncreases[i].time - lastTime) * drainRate; - lowestHealth = Math.Min(lowestHealth, currentHealth); - currentHealth = Math.Min(1, currentHealth + healthIncreases[i].health); - - // Common scenario for when the drain rate is definitely too harsh - if (lowestHealth < 0) - break; + if (currentBreak >= 0) + lastTime = Math.Max(lastTime, beatmap.Breaks[currentBreak].EndTime); } - if (Math.Abs(lowestHealth - targetMinimumHealth) <= 0.01) - break; + // Apply health adjustments + currentHealth -= (healthIncreases[i].time - lastTime) * result; + lowestHealth = Math.Min(lowestHealth, currentHealth); + currentHealth = Math.Min(1, currentHealth + healthIncreases[i].health); - count *= 2; - drainRate += 1.0 / count * Math.Sign(lowestHealth - targetMinimumHealth); + // Common scenario for when the drain rate is definitely too harsh + if (lowestHealth < 0) + break; } + + // Stop if the resulting health is within a reasonable offset from the target + if (Math.Abs(lowestHealth - targetMinimumHealth) <= minimum_health_error) + break; + + // This effectively works like a binary search - each iteration the search space moves closer to the the target, but may exceed it. + adjustment *= 2; + result += 1.0 / adjustment * Math.Sign(lowestHealth - targetMinimumHealth); } - healthIncreases.Clear(); + return result; } } } From 7ee0370d237a25f145ce224c202900e566589e44 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 26 Dec 2019 17:48:46 +0900 Subject: [PATCH 0580/1829] Add some tests --- .../TestSceneDrainingHealthProcessor.cs | 149 ++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 osu.Game.Tests/Gameplay/TestSceneDrainingHealthProcessor.cs diff --git a/osu.Game.Tests/Gameplay/TestSceneDrainingHealthProcessor.cs b/osu.Game.Tests/Gameplay/TestSceneDrainingHealthProcessor.cs new file mode 100644 index 0000000000..4996c86e5d --- /dev/null +++ b/osu.Game.Tests/Gameplay/TestSceneDrainingHealthProcessor.cs @@ -0,0 +1,149 @@ +// 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.Bindables; +using osu.Framework.Graphics; +using osu.Framework.MathUtils; +using osu.Framework.Testing; +using osu.Framework.Timing; +using osu.Game.Beatmaps; +using osu.Game.Rulesets.Judgements; +using osu.Game.Rulesets.Objects; +using osu.Game.Rulesets.Scoring; +using osu.Game.Tests.Visual; + +namespace osu.Game.Tests.Gameplay +{ + [HeadlessTest] + public class TestSceneDrainingHealthProcessor : OsuTestScene + { + private Bindable breakTime; + private HealthProcessor processor; + private ManualClock clock; + + [Test] + public void TestInitialHealthStartsAtOne() + { + createProcessor(createBeatmap(1000, 2000)); + + assertHealthEqualTo(1); + } + + [Test] + public void TestHealthNotDrainedBeforeGameplayStart() + { + createProcessor(createBeatmap(1000, 2000)); + + setTime(100); + assertHealthEqualTo(1); + setTime(900); + assertHealthEqualTo(1); + } + + [Test] + public void TestHealthNotDrainedAfterGameplayEnd() + { + createProcessor(createBeatmap(1000, 2000)); + setTime(2001); // After the hitobjects + setHealth(1); // Reset the current health for assertions to take place + + setTime(2100); + assertHealthEqualTo(1); + setTime(3000); + assertHealthEqualTo(1); + } + + [Test] + public void TestHealthNotDrainedDuringBreak() + { + createProcessor(createBeatmap(0, 2000)); + setBreak(true); + + setTime(700); + assertHealthEqualTo(1); + setTime(900); + assertHealthEqualTo(1); + } + + [Test] + public void TestHealthDrainedDuringGameplay() + { + createProcessor(createBeatmap(0, 1000)); + + setTime(500); + assertHealthNotEqualTo(1); + } + + [Test] + public void TestHealthGainedOnHit() + { + Beatmap beatmap = createBeatmap(0, 1000); + + createProcessor(beatmap); + setTime(10); // Decrease health slightly + assertHealthNotEqualTo(1); + + AddStep("apply hit result", () => processor.ApplyResult(new JudgementResult(beatmap.HitObjects[0], new Judgement()) { Type = HitResult.Perfect })); + assertHealthEqualTo(1); + } + + [Test] + public void TestHealthRemovedOnRevert() + { + var beatmap = createBeatmap(0, 1000); + JudgementResult result = null; + + createProcessor(beatmap); + setTime(10); // Decrease health slightly + AddStep("apply hit result", () => processor.ApplyResult(result = new JudgementResult(beatmap.HitObjects[0], new Judgement()) { Type = HitResult.Perfect })); + + AddStep("revert hit result", () => processor.RevertResult(result)); + assertHealthNotEqualTo(1); + } + + private Beatmap createBeatmap(double startTime, double endTime) + { + var beatmap = new Beatmap + { + BeatmapInfo = { BaseDifficulty = { DrainRate = 5 } }, + }; + + for (double time = startTime; time <= endTime; time += 100) + beatmap.HitObjects.Add(new JudgeableHitObject { StartTime = time }); + + return beatmap; + } + + private void createProcessor(Beatmap beatmap) => AddStep("create processor", () => + { + breakTime = new Bindable(); + + Child = processor = new DrainingHealthProcessor(beatmap.HitObjects[0].StartTime).With(d => + { + d.RelativeSizeAxes = Axes.Both; + d.Clock = new FramedClock(clock = new ManualClock()); + }); + + processor.IsBreakTime.BindTo(breakTime); + processor.ApplyBeatmap(beatmap); + }); + + private void setTime(double time) => AddStep($"set time = {time}", () => clock.CurrentTime = time); + + private void setHealth(double health) => AddStep($"set health = {health}", () => processor.Health.Value = health); + + private void setBreak(bool enabled) => AddStep($"{(enabled ? "enable" : "disable")} break", () => breakTime.Value = enabled); + + private void assertHealthEqualTo(double value) + => AddAssert($"health = {value}", () => Precision.AlmostEquals(value, processor.Health.Value, 0.0001f)); + + private void assertHealthNotEqualTo(double value) + => AddAssert($"health != {value}", () => !Precision.AlmostEquals(value, processor.Health.Value, 0.0001f)); + + private class JudgeableHitObject : HitObject + { + public override Judgement CreateJudgement() => new Judgement(); + } + } +} From 35f64d9aaea7729829fc0233792b93f3484b7c9c Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 26 Dec 2019 17:54:31 +0900 Subject: [PATCH 0581/1829] More comments --- osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs b/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs index e7e8656efb..96242205d4 100644 --- a/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs @@ -105,6 +105,7 @@ namespace osu.Game.Rulesets.Scoring // Subtract any break time from the duration since the last object if (beatmap.Breaks.Count > 0) { + // Advance the last break occuring before the current time while (currentBreak + 1 < beatmap.Breaks.Count && beatmap.Breaks[currentBreak + 1].EndTime < currentTime) currentBreak++; @@ -126,7 +127,7 @@ namespace osu.Game.Rulesets.Scoring if (Math.Abs(lowestHealth - targetMinimumHealth) <= minimum_health_error) break; - // This effectively works like a binary search - each iteration the search space moves closer to the the target, but may exceed it. + // This effectively works like a binary search - each iteration the search space moves closer to the target, but may exceed it. adjustment *= 2; result += 1.0 / adjustment * Math.Sign(lowestHealth - targetMinimumHealth); } From d45556eb6a07280a6be18c275fa5e3b9aa340e09 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 26 Dec 2019 17:57:16 +0900 Subject: [PATCH 0582/1829] Remove whitespace --- osu.Game.Rulesets.Mania/ManiaRuleset.cs | 1 - osu.Game.Rulesets.Taiko/TaikoRuleset.cs | 1 - 2 files changed, 2 deletions(-) diff --git a/osu.Game.Rulesets.Mania/ManiaRuleset.cs b/osu.Game.Rulesets.Mania/ManiaRuleset.cs index 5bca8588b6..a579a7d07e 100644 --- a/osu.Game.Rulesets.Mania/ManiaRuleset.cs +++ b/osu.Game.Rulesets.Mania/ManiaRuleset.cs @@ -41,7 +41,6 @@ namespace osu.Game.Rulesets.Mania public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new ManiaBeatmapConverter(beatmap, this); - public override PerformanceCalculator CreatePerformanceCalculator(WorkingBeatmap beatmap, ScoreInfo score) => new ManiaPerformanceCalculator(this, beatmap, score); public const string SHORT_NAME = "mania"; diff --git a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs index c5c2027af1..d713a4145d 100644 --- a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs +++ b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs @@ -34,7 +34,6 @@ namespace osu.Game.Rulesets.Taiko public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new TaikoBeatmapConverter(beatmap, this); - public const string SHORT_NAME = "taiko"; public override IEnumerable GetDefaultKeyBindings(int variant = 0) => new[] From 8903f286efa4e92c6276fc18ea29af29d0b5f8d2 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 26 Dec 2019 18:27:48 +0900 Subject: [PATCH 0583/1829] Fix escape not continuing to results screen --- osu.Game/Screens/Play/Player.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index 8970f9ac88..ab32c55229 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -541,8 +541,14 @@ namespace osu.Game.Screens.Play { if (completionProgressDelegate != null && !completionProgressDelegate.Cancelled && !completionProgressDelegate.Completed) { - // proceed to result screen if beatmap already finished playing - completionProgressDelegate.RunTask(); + // Proceed to result screen if beatmap already finished playing. + // This is scheduled since the player needs to become the current screen before the delegate runs. This happens after the return true. + Scheduler.Add(() => + { + if (!completionProgressDelegate.Completed && !completionProgressDelegate.Cancelled) + completionProgressDelegate.RunTask(); + }); + return true; } From 74d875a2e063fbf1878479d9cc7646b1d02b920a Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 26 Dec 2019 18:44:31 +0900 Subject: [PATCH 0584/1829] Give empty archives a hash based on archive name to avoid duplicate imports --- osu.Game/Database/ArchiveModelManager.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/osu.Game/Database/ArchiveModelManager.cs b/osu.Game/Database/ArchiveModelManager.cs index fd455d7cd5..45fe034a70 100644 --- a/osu.Game/Database/ArchiveModelManager.cs +++ b/osu.Game/Database/ArchiveModelManager.cs @@ -259,6 +259,9 @@ namespace osu.Game.Database /// /// Create a SHA-2 hash from the provided archive based on file content of all files matching . /// + /// + /// In the case of no matching files, a hash will be generated from the passed archive's . + /// private string computeHash(ArchiveReader reader) { // for now, concatenate all .osu files in the set to create a unique hash. @@ -270,7 +273,7 @@ namespace osu.Game.Database s.CopyTo(hashable); } - return hashable.Length > 0 ? hashable.ComputeSHA2Hash() : null; + return hashable.Length > 0 ? hashable.ComputeSHA2Hash() : reader.Name.ComputeSHA2Hash(); } /// From a041f32072ac44dd1d0ae9c6877ce7e753fc161e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 26 Dec 2019 19:05:32 +0900 Subject: [PATCH 0585/1829] Use cleaner solution via cancellation of older schedule --- osu.Game/Screens/Play/Player.cs | 36 +++++++++++++++------------------ 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index ab32c55229..6368c30def 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -350,18 +350,7 @@ namespace osu.Game.Screens.Play if (!showResults) return; using (BeginDelayedSequence(1000)) - { - completionProgressDelegate = Schedule(delegate - { - if (!this.IsCurrentScreen()) return; - - var score = CreateScore(); - if (DrawableRuleset.ReplayScore == null) - scoreManager.Import(score).Wait(); - - this.Push(CreateResults(score)); - }); - } + scheduleGotoRanking(); } protected virtual ScoreInfo CreateScore() @@ -541,14 +530,8 @@ namespace osu.Game.Screens.Play { if (completionProgressDelegate != null && !completionProgressDelegate.Cancelled && !completionProgressDelegate.Completed) { - // Proceed to result screen if beatmap already finished playing. - // This is scheduled since the player needs to become the current screen before the delegate runs. This happens after the return true. - Scheduler.Add(() => - { - if (!completionProgressDelegate.Completed && !completionProgressDelegate.Cancelled) - completionProgressDelegate.RunTask(); - }); - + // proceed to result screen if beatmap already finished playing + scheduleGotoRanking(); return true; } @@ -583,6 +566,19 @@ namespace osu.Game.Screens.Play storyboardReplacesBackground.Value = false; } + private void scheduleGotoRanking() + { + completionProgressDelegate?.Cancel(); + completionProgressDelegate = Schedule(delegate + { + var score = CreateScore(); + if (DrawableRuleset.ReplayScore == null) + scoreManager.Import(score).Wait(); + + this.Push(CreateResults(score)); + }); + } + #endregion } } From 00a36c388c76db43e9373369c1c54c9cf8a0c905 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 26 Dec 2019 19:18:39 +0900 Subject: [PATCH 0586/1829] Fix tests --- osu.Game.Rulesets.Osu/OsuRuleset.cs | 2 ++ osu.Game.Tests/Visual/Gameplay/TestSceneFailJudgement.cs | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/OsuRuleset.cs b/osu.Game.Rulesets.Osu/OsuRuleset.cs index c8a156dc57..c9ea5e6cf1 100644 --- a/osu.Game.Rulesets.Osu/OsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/OsuRuleset.cs @@ -38,6 +38,8 @@ namespace osu.Game.Rulesets.Osu public override ScoreProcessor CreateScoreProcessor(IBeatmap beatmap) => new OsuScoreProcessor(beatmap); + public override HealthProcessor CreateHealthProcessor(IBeatmap beatmap) => new OsuHealthProcessor(beatmap); + public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new OsuBeatmapConverter(beatmap, this); public override IBeatmapProcessor CreateBeatmapProcessor(IBeatmap beatmap) => new OsuBeatmapProcessor(beatmap); diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneFailJudgement.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneFailJudgement.cs index a0c25521a6..2045072c79 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneFailJudgement.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneFailJudgement.cs @@ -22,12 +22,12 @@ namespace osu.Game.Tests.Visual.Gameplay { AddUntilStep("wait for fail", () => Player.HasFailed); AddUntilStep("wait for multiple judged objects", () => ((FailPlayer)Player).DrawableRuleset.Playfield.AllHitObjects.Count(h => h.AllJudged) > 1); - AddAssert("total judgements == 1", () => ((FailPlayer)Player).ScoreProcessor.JudgedHits == 1); + AddAssert("total judgements == 1", () => ((FailPlayer)Player).HealthProcessor.JudgedHits >= 1); } private class FailPlayer : TestPlayer { - public new ScoreProcessor ScoreProcessor => base.ScoreProcessor; + public new HealthProcessor HealthProcessor => base.HealthProcessor; public FailPlayer() : base(false, false) From a4d4efc312317f2a51e5a5624ee4901b582dc403 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 26 Dec 2019 19:33:59 +0900 Subject: [PATCH 0587/1829] Fix missing comments --- osu.Game/Rulesets/Mods/IApplicableToDifficulty.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Rulesets/Mods/IApplicableToDifficulty.cs b/osu.Game/Rulesets/Mods/IApplicableToDifficulty.cs index d1d85f5aca..34198da722 100644 --- a/osu.Game/Rulesets/Mods/IApplicableToDifficulty.cs +++ b/osu.Game/Rulesets/Mods/IApplicableToDifficulty.cs @@ -14,13 +14,13 @@ namespace osu.Game.Rulesets.Mods /// Called when a beatmap is changed. Can be used to read default values. /// Any changes made will not be preserved. /// - /// + /// The difficulty to read from. void ReadFromDifficulty(BeatmapDifficulty difficulty); /// /// Called post beatmap conversion. Can be used to apply changes to difficulty attributes. /// - /// + /// The difficulty to mutate. void ApplyToDifficulty(BeatmapDifficulty difficulty); } } From 2c1a65d90acfa70f206cf46a00b26da5d93111c8 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 26 Dec 2019 19:37:55 +0900 Subject: [PATCH 0588/1829] Add simple test --- .../Editor/TestSceneBlueprintContainer.cs | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 osu.Game.Tests/Editor/TestSceneBlueprintContainer.cs diff --git a/osu.Game.Tests/Editor/TestSceneBlueprintContainer.cs b/osu.Game.Tests/Editor/TestSceneBlueprintContainer.cs new file mode 100644 index 0000000000..5ccce5b3c6 --- /dev/null +++ b/osu.Game.Tests/Editor/TestSceneBlueprintContainer.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 NUnit.Framework; +using osu.Game.Screens.Edit.Compose.Components; +using osu.Game.Tests.Visual; + +namespace osu.Game.Tests.Editor +{ + public class TestSceneBlueprintContainer : EditorClockTestScene + { + private BlueprintContainer blueprintContainer; + + [SetUp] + public void Setup() => Schedule(() => + { + Child = blueprintContainer = new BlueprintContainer(); + }); + } +} From 92dd1ade175c5c709e9da9ccd68bf6eed7204410 Mon Sep 17 00:00:00 2001 From: mcendu Date: Thu, 26 Dec 2019 21:03:21 +0800 Subject: [PATCH 0589/1829] Attempt to implement mania-specific sprites --- osu.Game.Rulesets.Mania/ManiaRuleset.cs | 4 ++ .../Skinning/ManiaLegacySkinTransformer.cs | 62 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 osu.Game.Rulesets.Mania/Skinning/ManiaLegacySkinTransformer.cs diff --git a/osu.Game.Rulesets.Mania/ManiaRuleset.cs b/osu.Game.Rulesets.Mania/ManiaRuleset.cs index b07e1d8f54..f0c78f8009 100644 --- a/osu.Game.Rulesets.Mania/ManiaRuleset.cs +++ b/osu.Game.Rulesets.Mania/ManiaRuleset.cs @@ -26,7 +26,9 @@ using osu.Game.Rulesets.Mania.Configuration; using osu.Game.Rulesets.Mania.Difficulty; using osu.Game.Rulesets.Mania.Edit; using osu.Game.Rulesets.Mania.Scoring; +using osu.Game.Rulesets.Mania.Skinning; using osu.Game.Rulesets.Scoring; +using osu.Game.Skinning; using osu.Game.Scoring; namespace osu.Game.Rulesets.Mania @@ -45,6 +47,8 @@ namespace osu.Game.Rulesets.Mania public override HitObjectComposer CreateHitObjectComposer() => new ManiaHitObjectComposer(this); + public override ISkin CreateLegacySkinProvider(ISkinSource source) => new ManiaLegacySkinTransformer(source); + public override IEnumerable ConvertLegacyMods(LegacyMods mods) { if (mods.HasFlag(LegacyMods.Nightcore)) diff --git a/osu.Game.Rulesets.Mania/Skinning/ManiaLegacySkinTransformer.cs b/osu.Game.Rulesets.Mania/Skinning/ManiaLegacySkinTransformer.cs new file mode 100644 index 0000000000..29991a4a6d --- /dev/null +++ b/osu.Game.Rulesets.Mania/Skinning/ManiaLegacySkinTransformer.cs @@ -0,0 +1,62 @@ +// 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.Textures; +using osu.Framework.Audio.Sample; +using osu.Framework.Bindables; +using osu.Game.Rulesets.Scoring; +using osu.Game.Audio; +using osu.Game.Skinning; + +namespace osu.Game.Rulesets.Mania.Skinning +{ + public class ManiaLegacySkinTransformer : ISkin + { + private readonly ISkin source; + + public ManiaLegacySkinTransformer(ISkin source) + { + this.source = source; + } + + public Drawable GetDrawableComponent(ISkinComponent component) + { + switch (component) + { + case GameplaySkinComponent resultComponent: + switch (resultComponent.Component) + { + case HitResult.Miss: + return this.GetAnimation("mania-hit0", true, true); + + case HitResult.Meh: + return this.GetAnimation("mania-hit50", true, true); + + case HitResult.Ok: + return this.GetAnimation("mania-hit100", true, true); + + case HitResult.Good: + return this.GetAnimation("mania-hit200", true, true); + + case HitResult.Great: + return this.GetAnimation("mania-hit300", true, true); + + case HitResult.Perfect: + return this.GetAnimation("mania-hit300g", true, true); + } + + break; + } + + return null; + } + + public Texture GetTexture(string componentName) => source.GetTexture(componentName); + + public SampleChannel GetSample(ISampleInfo sample) => source.GetSample(sample); + + public IBindable GetConfig(TLookup lookup) => + source.GetConfig(lookup); + } +} From 8ebfe5cfd89059d8066662fd33392a3ff167f656 Mon Sep 17 00:00:00 2001 From: mcendu Date: Thu, 26 Dec 2019 21:15:49 +0800 Subject: [PATCH 0590/1829] add tests --- .../SkinnableTestScene.cs | 74 +++++++++++++++++++ .../TestSceneDrawableJudgement.cs | 37 ++++++++++ 2 files changed, 111 insertions(+) create mode 100644 osu.Game.Rulesets.Mania.Tests/SkinnableTestScene.cs create mode 100644 osu.Game.Rulesets.Mania.Tests/TestSceneDrawableJudgement.cs diff --git a/osu.Game.Rulesets.Mania.Tests/SkinnableTestScene.cs b/osu.Game.Rulesets.Mania.Tests/SkinnableTestScene.cs new file mode 100644 index 0000000000..3822c8ce86 --- /dev/null +++ b/osu.Game.Rulesets.Mania.Tests/SkinnableTestScene.cs @@ -0,0 +1,74 @@ +// 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.Text.RegularExpressions; +using osu.Framework.Allocation; +using osu.Framework.Audio; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Textures; +using osu.Framework.IO.Stores; +using osu.Game.Skinning; +using osu.Game.Tests.Visual; + +namespace osu.Game.Rulesets.Mania.Tests +{ + public abstract class SkinnableTestScene : OsuGridTestScene + { + private Skin defaultSkin; + + protected SkinnableTestScene() + : base(1, 2) + { + } + + [BackgroundDependencyLoader] + private void load(AudioManager audio, SkinManager skinManager) + { + defaultSkin = skinManager.GetSkin(DefaultLegacySkin.Info); + } + + public void SetContents(Func creationFunction) + { + Cell(0).Child = createProvider(null, creationFunction); + Cell(1).Child = createProvider(defaultSkin, creationFunction); + } + + private Drawable createProvider(Skin skin, Func creationFunction) + { + var mainProvider = new SkinProvidingContainer(skin); + + return mainProvider + .WithChild(new SkinProvidingContainer(Ruleset.Value.CreateInstance().CreateLegacySkinProvider(mainProvider)) + { + Child = creationFunction() + }); + } + + private class TestLegacySkin : LegacySkin + { + private readonly bool extrapolateAnimations; + + public TestLegacySkin(SkinInfo skin, IResourceStore storage, AudioManager audioManager, bool extrapolateAnimations) + : base(skin, storage, audioManager, "skin.ini") + { + this.extrapolateAnimations = extrapolateAnimations; + } + + public override Texture GetTexture(string componentName) + { + // extrapolate frames to test longer animations + if (extrapolateAnimations) + { + var match = Regex.Match(componentName, "-([0-9]*)"); + + if (match.Length > 0 && int.TryParse(match.Groups[1].Value, out var number) && number < 60) + return base.GetTexture(componentName.Replace($"-{number}", $"-{number % 2}")); + } + + return base.GetTexture(componentName); + } + } + } +} diff --git a/osu.Game.Rulesets.Mania.Tests/TestSceneDrawableJudgement.cs b/osu.Game.Rulesets.Mania.Tests/TestSceneDrawableJudgement.cs new file mode 100644 index 0000000000..eea1a36a19 --- /dev/null +++ b/osu.Game.Rulesets.Mania.Tests/TestSceneDrawableJudgement.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 System; +using System.Collections.Generic; +using System.Linq; +using osu.Framework.Extensions; +using osu.Framework.Graphics; +using osu.Game.Rulesets.Mania.UI; +using osu.Game.Rulesets.Judgements; +using osu.Game.Rulesets.Objects; +using osu.Game.Rulesets.Scoring; + +namespace osu.Game.Rulesets.Mania.Tests +{ + public class TestSceneDrawableJudgement : SkinnableTestScene + { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(DrawableJudgement), + typeof(DrawableManiaJudgement) + }; + + public TestSceneDrawableJudgement() + { + foreach (HitResult result in Enum.GetValues(typeof(HitResult)).OfType().Skip(1)) + { + AddStep("Show " + result.GetDescription(), () => SetContents(() => + new DrawableManiaJudgement(new JudgementResult(new HitObject(), new Judgement()) { Type = result }, null) + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + })); + } + } + } +} From 75d1e4cc7606468002a3af7ec6ece16dc34e663b Mon Sep 17 00:00:00 2001 From: mcendu Date: Thu, 26 Dec 2019 22:06:29 +0800 Subject: [PATCH 0591/1829] rm TestLegacySkin --- .../SkinnableTestScene.cs | 25 ------------------- 1 file changed, 25 deletions(-) diff --git a/osu.Game.Rulesets.Mania.Tests/SkinnableTestScene.cs b/osu.Game.Rulesets.Mania.Tests/SkinnableTestScene.cs index 3822c8ce86..1c8a9c4ca6 100644 --- a/osu.Game.Rulesets.Mania.Tests/SkinnableTestScene.cs +++ b/osu.Game.Rulesets.Mania.Tests/SkinnableTestScene.cs @@ -45,30 +45,5 @@ namespace osu.Game.Rulesets.Mania.Tests Child = creationFunction() }); } - - private class TestLegacySkin : LegacySkin - { - private readonly bool extrapolateAnimations; - - public TestLegacySkin(SkinInfo skin, IResourceStore storage, AudioManager audioManager, bool extrapolateAnimations) - : base(skin, storage, audioManager, "skin.ini") - { - this.extrapolateAnimations = extrapolateAnimations; - } - - public override Texture GetTexture(string componentName) - { - // extrapolate frames to test longer animations - if (extrapolateAnimations) - { - var match = Regex.Match(componentName, "-([0-9]*)"); - - if (match.Length > 0 && int.TryParse(match.Groups[1].Value, out var number) && number < 60) - return base.GetTexture(componentName.Replace($"-{number}", $"-{number % 2}")); - } - - return base.GetTexture(componentName); - } - } } } From 64381bf4b14f1d9574c00641ae05b753407c7426 Mon Sep 17 00:00:00 2001 From: mcendu Date: Thu, 26 Dec 2019 22:08:46 +0800 Subject: [PATCH 0592/1829] rm unnecessary usings --- osu.Game.Rulesets.Mania.Tests/SkinnableTestScene.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/osu.Game.Rulesets.Mania.Tests/SkinnableTestScene.cs b/osu.Game.Rulesets.Mania.Tests/SkinnableTestScene.cs index 1c8a9c4ca6..80b1b3df8e 100644 --- a/osu.Game.Rulesets.Mania.Tests/SkinnableTestScene.cs +++ b/osu.Game.Rulesets.Mania.Tests/SkinnableTestScene.cs @@ -2,13 +2,10 @@ // See the LICENCE file in the repository root for full licence text. using System; -using System.Text.RegularExpressions; using osu.Framework.Allocation; using osu.Framework.Audio; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Textures; -using osu.Framework.IO.Stores; using osu.Game.Skinning; using osu.Game.Tests.Visual; From ca3e8db79f7ba1db9c98f401789c111018d049e3 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 26 Dec 2019 21:03:39 +0300 Subject: [PATCH 0593/1829] Merge dependency --- .../Graphics/UserInterface/ScreenTitle.cs | 53 ++++++++++++------- .../UserInterface/ScreenTitleTextureIcon.cs | 39 +++----------- .../Overlays/Changelog/ChangelogHeader.cs | 2 +- osu.Game/Overlays/News/NewsHeader.cs | 20 +++---- 4 files changed, 52 insertions(+), 62 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/ScreenTitle.cs b/osu.Game/Graphics/UserInterface/ScreenTitle.cs index 10fc312d8b..a8c8005a41 100644 --- a/osu.Game/Graphics/UserInterface/ScreenTitle.cs +++ b/osu.Game/Graphics/UserInterface/ScreenTitle.cs @@ -4,6 +4,7 @@ using System; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Sprites; using osu.Game.Graphics.Sprites; using osuTK; @@ -13,15 +14,15 @@ namespace osu.Game.Graphics.UserInterface { public abstract class ScreenTitle : CompositeDrawable, IHasAccentColour { - public const float ICON_WIDTH = ICON_SIZE + icon_spacing; + public const float ICON_WIDTH = ICON_SIZE + spacing; - public const float ICON_SIZE = 25; + public const float ICON_SIZE = 30; + private const float spacing = 6; + private const int text_offset = 2; private SpriteIcon iconSprite; private readonly OsuSpriteText titleText, pageText; - private const float icon_spacing = 10; - protected IconUsage Icon { set @@ -63,26 +64,40 @@ namespace osu.Game.Graphics.UserInterface new FillFlowContainer { AutoSizeAxes = Axes.Both, - Spacing = new Vector2(icon_spacing, 0), + Spacing = new Vector2(spacing, 0), + Direction = FillDirection.Horizontal, Children = new[] { - CreateIcon(), - new FillFlowContainer + CreateIcon().With(t => { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Spacing = new Vector2(6, 0), - Children = new[] + t.Anchor = Anchor.Centre; + t.Origin = Anchor.Centre; + }), + titleText = new OsuSpriteText + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Font = OsuFont.GetFont(size: 20, weight: FontWeight.Bold), + Margin = new MarginPadding { Bottom = text_offset } + }, + new CircularContainer + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Masking = true, + Size = new Vector2(4), + Child = new Box { - titleText = new OsuSpriteText - { - Font = OsuFont.GetFont(size: 30, weight: FontWeight.Light), - }, - pageText = new OsuSpriteText - { - Font = OsuFont.GetFont(size: 30, weight: FontWeight.Light), - } + RelativeSizeAxes = Axes.Both, + Colour = Color4.Gray, } + }, + pageText = new OsuSpriteText + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Font = OsuFont.GetFont(size: 20), + Margin = new MarginPadding { Bottom = text_offset } } } }, diff --git a/osu.Game/Graphics/UserInterface/ScreenTitleTextureIcon.cs b/osu.Game/Graphics/UserInterface/ScreenTitleTextureIcon.cs index f590e7e357..e36000af4e 100644 --- a/osu.Game/Graphics/UserInterface/ScreenTitleTextureIcon.cs +++ b/osu.Game/Graphics/UserInterface/ScreenTitleTextureIcon.cs @@ -4,7 +4,6 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Textures; using osuTK; @@ -16,8 +15,6 @@ namespace osu.Game.Graphics.UserInterface /// public class ScreenTitleTextureIcon : CompositeDrawable { - private const float circle_allowance = 0.8f; - private readonly string textureName; public ScreenTitleTextureIcon(string textureName) @@ -26,38 +23,16 @@ namespace osu.Game.Graphics.UserInterface } [BackgroundDependencyLoader] - private void load(TextureStore textures, OsuColour colours) + private void load(TextureStore textures) { - Size = new Vector2(ScreenTitle.ICON_SIZE / circle_allowance); + Size = new Vector2(ScreenTitle.ICON_SIZE); - InternalChildren = new Drawable[] + InternalChild = new Sprite { - new CircularContainer - { - Masking = true, - BorderColour = colours.Violet, - BorderThickness = 3, - MaskingSmoothness = 1, - RelativeSizeAxes = Axes.Both, - Children = new Drawable[] - { - new Sprite - { - RelativeSizeAxes = Axes.Both, - Texture = textures.Get(textureName), - Size = new Vector2(circle_allowance), - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - }, - new Box - { - RelativeSizeAxes = Axes.Both, - Colour = colours.Violet, - Alpha = 0, - AlwaysPresent = true, - }, - } - }, + RelativeSizeAxes = Axes.Both, + Texture = textures.Get(textureName), + Anchor = Anchor.Centre, + Origin = Anchor.Centre, }; } } diff --git a/osu.Game/Overlays/Changelog/ChangelogHeader.cs b/osu.Game/Overlays/Changelog/ChangelogHeader.cs index b2e9be24b3..18dcdf721c 100644 --- a/osu.Game/Overlays/Changelog/ChangelogHeader.cs +++ b/osu.Game/Overlays/Changelog/ChangelogHeader.cs @@ -111,7 +111,7 @@ namespace osu.Game.Overlays.Changelog public ChangelogHeaderTitle() { - Title = "Changelog"; + Title = "changelog"; Version = null; } diff --git a/osu.Game/Overlays/News/NewsHeader.cs b/osu.Game/Overlays/News/NewsHeader.cs index 27620ab523..0f73663605 100644 --- a/osu.Game/Overlays/News/NewsHeader.cs +++ b/osu.Game/Overlays/News/NewsHeader.cs @@ -15,7 +15,7 @@ namespace osu.Game.Overlays.News { public class NewsHeader : OverlayHeader { - private const string front_page_string = "Front Page"; + private const string front_page_string = "frontpage"; private NewsHeaderTitle title; @@ -33,7 +33,7 @@ namespace osu.Game.Overlays.News ShowFrontPage?.Invoke(); }; - Current.ValueChanged += showArticle; + Current.ValueChanged += showPost; } [BackgroundDependencyLoader] @@ -42,7 +42,7 @@ namespace osu.Game.Overlays.News TabControl.AccentColour = colour.Violet; } - private void showArticle(ValueChangedEvent e) + private void showPost(ValueChangedEvent e) { if (e.OldValue != null) TabControl.RemoveItem(e.OldValue); @@ -52,12 +52,12 @@ namespace osu.Game.Overlays.News TabControl.AddItem(e.NewValue); TabControl.Current.Value = e.NewValue; - title.IsReadingArticle = true; + title.IsReadingPost = true; } else { TabControl.Current.Value = front_page_string; - title.IsReadingArticle = false; + title.IsReadingPost = false; } } @@ -84,17 +84,17 @@ namespace osu.Game.Overlays.News private class NewsHeaderTitle : ScreenTitle { - private const string article_string = "Article"; + private const string post_string = "post"; - public bool IsReadingArticle + public bool IsReadingPost { - set => Section = value ? article_string : front_page_string; + set => Section = value ? post_string : front_page_string; } public NewsHeaderTitle() { - Title = "News"; - IsReadingArticle = false; + Title = "news"; + IsReadingPost = false; } protected override Drawable CreateIcon() => new ScreenTitleTextureIcon(@"Icons/news"); From 647c83e6c858c3a11e74717f8c5af754b248482a Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 26 Dec 2019 21:21:15 +0300 Subject: [PATCH 0594/1829] Add ability to not create content for headers Rather than creating an empty container --- osu.Game/Overlays/Changelog/ChangelogHeader.cs | 2 +- osu.Game/Overlays/News/NewsHeader.cs | 2 -- osu.Game/Overlays/OverlayHeader.cs | 16 ++++++++++------ osu.Game/Overlays/Profile/ProfileHeader.cs | 2 +- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/osu.Game/Overlays/Changelog/ChangelogHeader.cs b/osu.Game/Overlays/Changelog/ChangelogHeader.cs index 18dcdf721c..c6fedc0032 100644 --- a/osu.Game/Overlays/Changelog/ChangelogHeader.cs +++ b/osu.Game/Overlays/Changelog/ChangelogHeader.cs @@ -75,7 +75,7 @@ namespace osu.Game.Overlays.Changelog protected override Drawable CreateBackground() => new HeaderBackground(); - protected override Drawable CreateContent() => new Container + protected override Drawable CreateContent => new Container { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, diff --git a/osu.Game/Overlays/News/NewsHeader.cs b/osu.Game/Overlays/News/NewsHeader.cs index 0f73663605..6e17303a9d 100644 --- a/osu.Game/Overlays/News/NewsHeader.cs +++ b/osu.Game/Overlays/News/NewsHeader.cs @@ -63,8 +63,6 @@ namespace osu.Game.Overlays.News protected override Drawable CreateBackground() => new NewsHeaderBackground(); - protected override Drawable CreateContent() => new Container(); - protected override ScreenTitle CreateTitle() => title = new NewsHeaderTitle(); private class NewsHeaderBackground : Sprite diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index 2e032db2ba..ed27bf7048 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -19,7 +19,7 @@ namespace osu.Game.Overlays RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; - Children = new Drawable[] + AddRange(new[] { new Container { @@ -50,20 +50,24 @@ namespace osu.Game.Overlays Padding = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN } } } - }, - new Container + } + }); + + if (CreateContent != null) + { + Add(new Container { Margin = new MarginPadding { Top = cover_height }, RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, - Child = CreateContent() - } + Child = CreateContent + }); }; } protected abstract Drawable CreateBackground(); - protected abstract Drawable CreateContent(); + protected virtual Drawable CreateContent => null; protected abstract ScreenTitle CreateTitle(); } diff --git a/osu.Game/Overlays/Profile/ProfileHeader.cs b/osu.Game/Overlays/Profile/ProfileHeader.cs index 76613c156d..454ac72a7b 100644 --- a/osu.Game/Overlays/Profile/ProfileHeader.cs +++ b/osu.Game/Overlays/Profile/ProfileHeader.cs @@ -58,7 +58,7 @@ namespace osu.Game.Overlays.Profile } }; - protected override Drawable CreateContent() => new FillFlowContainer + protected override Drawable CreateContent => new FillFlowContainer { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, From a1c91af0956fb710ad313b61243ead16e3250bf0 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 26 Dec 2019 22:09:06 +0300 Subject: [PATCH 0595/1829] Update layout of every overlay using OverlayHeader --- .../Overlays/Changelog/ChangelogHeader.cs | 2 + osu.Game/Overlays/News/NewsHeader.cs | 7 +- osu.Game/Overlays/OverlayHeader.cs | 109 ++++++++++++------ osu.Game/Overlays/Profile/ProfileHeader.cs | 5 + 4 files changed, 84 insertions(+), 39 deletions(-) diff --git a/osu.Game/Overlays/Changelog/ChangelogHeader.cs b/osu.Game/Overlays/Changelog/ChangelogHeader.cs index c6fedc0032..0cddeabdaa 100644 --- a/osu.Game/Overlays/Changelog/ChangelogHeader.cs +++ b/osu.Game/Overlays/Changelog/ChangelogHeader.cs @@ -47,6 +47,8 @@ namespace osu.Game.Overlays.Changelog private void load(OsuColour colours) { TabControl.AccentColour = colours.Violet; + TitleBackgroundColour = colours.GreyVioletDarker; + ControlBackgroundColour = colours.GreyVioletDark; } private ChangelogHeaderTitle title; diff --git a/osu.Game/Overlays/News/NewsHeader.cs b/osu.Game/Overlays/News/NewsHeader.cs index 6e17303a9d..e3cf58ed0a 100644 --- a/osu.Game/Overlays/News/NewsHeader.cs +++ b/osu.Game/Overlays/News/NewsHeader.cs @@ -4,7 +4,6 @@ using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Textures; using osu.Game.Graphics; @@ -37,9 +36,11 @@ namespace osu.Game.Overlays.News } [BackgroundDependencyLoader] - private void load(OsuColour colour) + private void load(OsuColour colours) { - TabControl.AccentColour = colour.Violet; + TabControl.AccentColour = colours.Violet; + TitleBackgroundColour = colours.GreyVioletDarker; + ControlBackgroundColour = colours.GreyVioletDark; } private void showPost(ValueChangedEvent e) diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index ed27bf7048..47d7a30b0b 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -3,7 +3,9 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; using osu.Game.Graphics.UserInterface; +using osuTK.Graphics; namespace osu.Game.Overlays { @@ -11,58 +13,93 @@ namespace osu.Game.Overlays { protected readonly OverlayHeaderTabControl TabControl; - private const float cover_height = 150; - private const float cover_info_height = 75; + private readonly Box titleBackground; + private readonly Box controlBackground; + private readonly Container background; + + protected Color4 TitleBackgroundColour + { + set => titleBackground.Colour = value; + } + + protected Color4 ControlBackgroundColour + { + set => controlBackground.Colour = value; + } + + protected float BackgroundHeight + { + set => background.Height = value; + } protected OverlayHeader() { RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; - AddRange(new[] + FillFlowContainer flow; + + Add(flow = new FillFlowContainer { - new Container + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Direction = FillDirection.Vertical, + Children = new Drawable[] { - RelativeSizeAxes = Axes.X, - Height = cover_height, - Masking = true, - Child = CreateBackground() - }, - new Container - { - Margin = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN }, - Y = cover_height, - Height = cover_info_height, - RelativeSizeAxes = Axes.X, - Anchor = Anchor.TopLeft, - Origin = Anchor.BottomLeft, - Depth = -float.MaxValue, - Children = new Drawable[] + background = new Container { - CreateTitle().With(t => t.X = -ScreenTitle.ICON_WIDTH), - TabControl = new OverlayHeaderTabControl + RelativeSizeAxes = Axes.X, + Height = 80, + Masking = true, + Child = CreateBackground() + }, + new Container + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Children = new Drawable[] { - Anchor = Anchor.BottomLeft, - Origin = Anchor.BottomLeft, - RelativeSizeAxes = Axes.X, - Height = cover_info_height - 30, - Margin = new MarginPadding { Left = -UserProfileOverlay.CONTENT_X_MARGIN }, - Padding = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN } + titleBackground = new Box + { + RelativeSizeAxes = Axes.Both, + Colour = Color4.Gray, + }, + CreateTitle().With(title => + { + title.Margin = new MarginPadding + { + Vertical = 5, + Left = UserProfileOverlay.CONTENT_X_MARGIN + }; + }) + } + }, + new Container + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Children = new Drawable[] + { + controlBackground = new Box + { + RelativeSizeAxes = Axes.Both, + Colour = Color4.Gray, + }, + TabControl = new OverlayHeaderTabControl + { + Anchor = Anchor.BottomLeft, + Origin = Anchor.BottomLeft, + RelativeSizeAxes = Axes.X, + Height = 30, + Padding = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN }, + } } } } }); if (CreateContent != null) - { - Add(new Container - { - Margin = new MarginPadding { Top = cover_height }, - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Child = CreateContent - }); - }; + flow.Add(CreateContent); } protected abstract Drawable CreateBackground(); diff --git a/osu.Game/Overlays/Profile/ProfileHeader.cs b/osu.Game/Overlays/Profile/ProfileHeader.cs index 454ac72a7b..f9c7062c69 100644 --- a/osu.Game/Overlays/Profile/ProfileHeader.cs +++ b/osu.Game/Overlays/Profile/ProfileHeader.cs @@ -26,6 +26,8 @@ namespace osu.Game.Overlays.Profile public ProfileHeader() { + BackgroundHeight = 150; + User.ValueChanged += e => updateDisplay(e.NewValue); TabControl.AddItem("Info"); @@ -38,6 +40,8 @@ namespace osu.Game.Overlays.Profile private void load(OsuColour colours) { TabControl.AccentColour = colours.Seafoam; + TitleBackgroundColour = colours.GreySeafoamDarker; + ControlBackgroundColour = colours.GreySeafoam; } protected override Drawable CreateBackground() => @@ -103,6 +107,7 @@ namespace osu.Game.Overlays.Profile { Title = "Player"; Section = "Info"; + X = -ICON_WIDTH; } [BackgroundDependencyLoader] From e360aa458864d3026fbe5eceee09f7dabea64ec1 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 26 Dec 2019 22:16:20 +0300 Subject: [PATCH 0596/1829] Fix TabControl wasn't on top of everything --- osu.Game/Overlays/OverlayHeader.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index 47d7a30b0b..bfb2c4cd5e 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -78,6 +78,7 @@ namespace osu.Game.Overlays { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, + Depth = -float.MaxValue, Children = new Drawable[] { controlBackground = new Box From 005ec4b3733cdb3a8197efa9e45dc9f4129c9a08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Thu, 26 Dec 2019 20:17:51 +0100 Subject: [PATCH 0597/1829] Demonstrate bug in scrolling container scene Modify TestSceneScrollingHitObjects to showcase the effect of origin choice on object lifetime for all four scrolling directions. --- .../Visual/Gameplay/TestSceneScrollingHitObjects.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs index aa80819694..7ab53b2d65 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs @@ -45,7 +45,7 @@ namespace osu.Game.Tests.Visual.Gameplay RelativeSizeAxes = Axes.Both, Child = playfields[0] = new TestPlayfield() }, - scrollContainers[1] = new ScrollingTestContainer(ScrollingDirection.Up) + scrollContainers[1] = new ScrollingTestContainer(ScrollingDirection.Down) { RelativeSizeAxes = Axes.Both, Child = playfields[1] = new TestPlayfield() @@ -53,12 +53,12 @@ namespace osu.Game.Tests.Visual.Gameplay }, new Drawable[] { - scrollContainers[2] = new ScrollingTestContainer(ScrollingDirection.Up) + scrollContainers[2] = new ScrollingTestContainer(ScrollingDirection.Left) { RelativeSizeAxes = Axes.Both, Child = playfields[2] = new TestPlayfield() }, - scrollContainers[3] = new ScrollingTestContainer(ScrollingDirection.Up) + scrollContainers[3] = new ScrollingTestContainer(ScrollingDirection.Right) { RelativeSizeAxes = Axes.Both, Child = playfields[3] = new TestPlayfield() @@ -207,7 +207,9 @@ namespace osu.Game.Tests.Visual.Gameplay public TestDrawableHitObject(double time) : base(new HitObject { StartTime = time }) { - Origin = Anchor.Centre; + Origin = Anchor.Custom; + OriginPosition = new Vector2(75 / 4.0f); + AutoSizeAxes = Axes.Both; AddInternal(new Box { Size = new Vector2(75) }); From 193e41f8789c5f1da4acc038569fca9f1a858327 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Thu, 26 Dec 2019 20:23:16 +0100 Subject: [PATCH 0598/1829] Add origin adjustment for hitobject lifetime Visual inspection of taiko gameplay has shown that hitobjects appeared on screen only when the origin of the hitobject came into the bounds of the screen, instead of appearing when any visible part of the hitobject came into the screen bounds. This behaviour was due to lifetime calculation being based on the origin of the hitobject and not taking into account the actual object dimensions. Adjust the lifetime start of the hitobject by subtracting the time needed to show the part of the hitobject that should already be visible on screen when the origin comes into frame. --- .../Scrolling/ScrollingHitObjectContainer.cs | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/UI/Scrolling/ScrollingHitObjectContainer.cs b/osu.Game/Rulesets/UI/Scrolling/ScrollingHitObjectContainer.cs index 857929ff9e..04b4374fc4 100644 --- a/osu.Game/Rulesets/UI/Scrolling/ScrollingHitObjectContainer.cs +++ b/osu.Game/Rulesets/UI/Scrolling/ScrollingHitObjectContainer.cs @@ -100,7 +100,7 @@ namespace osu.Game.Rulesets.UI.Scrolling private void computeLifetimeStartRecursive(DrawableHitObject hitObject) { - hitObject.LifetimeStart = scrollingInfo.Algorithm.GetDisplayStartTime(hitObject.HitObject.StartTime, timeRange.Value); + hitObject.LifetimeStart = computeOriginAdjustedLifetimeStart(hitObject); foreach (var obj in hitObject.NestedHitObjects) computeLifetimeStartRecursive(obj); @@ -108,6 +108,35 @@ namespace osu.Game.Rulesets.UI.Scrolling private readonly Dictionary hitObjectInitialStateCache = new Dictionary(); + private double computeOriginAdjustedLifetimeStart(DrawableHitObject hitObject) + { + float originAdjustment = 0.0f; + + // calculate the dimension of the part of the hitobject that should already be visible + // when the hitobject origin first appears inside the scrolling container + switch (direction.Value) + { + case ScrollingDirection.Up: + originAdjustment = hitObject.OriginPosition.Y; + break; + + case ScrollingDirection.Down: + originAdjustment = hitObject.DrawHeight - hitObject.OriginPosition.Y; + break; + + case ScrollingDirection.Left: + originAdjustment = hitObject.OriginPosition.X; + break; + + case ScrollingDirection.Right: + originAdjustment = hitObject.DrawWidth - hitObject.OriginPosition.X; + break; + } + + var adjustedStartTime = scrollingInfo.Algorithm.TimeAt(-originAdjustment, hitObject.HitObject.StartTime, timeRange.Value, scrollLength); + return scrollingInfo.Algorithm.GetDisplayStartTime(adjustedStartTime, timeRange.Value); + } + // Cant use AddOnce() since the delegate is re-constructed every invocation private void computeInitialStateRecursive(DrawableHitObject hitObject) => hitObject.Schedule(() => { From 3d7c7a1ced8d88bf034429b38a1858a734e85839 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 26 Dec 2019 22:39:13 +0300 Subject: [PATCH 0599/1829] Fix profile title wasn't in lowercase --- osu.Game/Overlays/Profile/ProfileHeader.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Profile/ProfileHeader.cs b/osu.Game/Overlays/Profile/ProfileHeader.cs index 76613c156d..3970fb2b97 100644 --- a/osu.Game/Overlays/Profile/ProfileHeader.cs +++ b/osu.Game/Overlays/Profile/ProfileHeader.cs @@ -101,8 +101,8 @@ namespace osu.Game.Overlays.Profile { public ProfileHeaderTitle() { - Title = "Player"; - Section = "Info"; + Title = "player"; + Section = "info"; } [BackgroundDependencyLoader] From fd8c5d77061b743300a8d16acd6120d1e84f3220 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Thu, 26 Dec 2019 22:23:25 +0100 Subject: [PATCH 0600/1829] Improve notification overlay test robustness Stress testing one of the notification overlay tests by running it 10000 times on repeat has shown that it is susceptible to intermittent failures due to races between delays and asserts checking the number of currently progressing notifications and the actual progress update, which contains a random generation factor. Replace step sequences checking for notification completion by waiting and asserting with explicit until steps that don't terminate unless there are zero progressing notifications. --- .../UserInterface/TestSceneNotificationOverlay.cs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneNotificationOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneNotificationOverlay.cs index d8a4514df1..35e5f9719c 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneNotificationOverlay.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneNotificationOverlay.cs @@ -67,9 +67,7 @@ namespace osu.Game.Tests.Visual.UserInterface AddRepeatStep(@"add many simple", sendManyNotifications, 3); - AddWaitStep("wait some", 5); - - checkProgressingCount(0); + waitForCompletion(); AddStep(@"progress #3", sendUploadProgress); @@ -77,9 +75,7 @@ namespace osu.Game.Tests.Visual.UserInterface checkDisplayedCount(33); - AddWaitStep("wait some", 10); - - checkProgressingCount(0); + waitForCompletion(); } [Test] @@ -109,9 +105,9 @@ namespace osu.Game.Tests.Visual.UserInterface AddStep(@"background progress #1", sendBackgroundUploadProgress); - AddWaitStep("wait some", 5); + checkProgressingCount(1); - checkProgressingCount(0); + waitForCompletion(); checkDisplayedCount(2); @@ -190,6 +186,8 @@ namespace osu.Game.Tests.Visual.UserInterface private void checkProgressingCount(int expected) => AddAssert($"progressing count is {expected}", () => progressingNotifications.Count == expected); + private void waitForCompletion() => AddUntilStep("wait for notification progress completion", () => progressingNotifications.Count == 0); + private void sendBarrage() { switch (RNG.Next(0, 4)) From 25f6517fba6a83e9255d47521eabec8e606e18a0 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 27 Dec 2019 03:53:01 +0300 Subject: [PATCH 0601/1829] Update dependency --- osu.Game/Overlays/Profile/ProfileHeader.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/Profile/ProfileHeader.cs b/osu.Game/Overlays/Profile/ProfileHeader.cs index f9c7062c69..52baa57121 100644 --- a/osu.Game/Overlays/Profile/ProfileHeader.cs +++ b/osu.Game/Overlays/Profile/ProfileHeader.cs @@ -105,9 +105,8 @@ namespace osu.Game.Overlays.Profile { public ProfileHeaderTitle() { - Title = "Player"; - Section = "Info"; - X = -ICON_WIDTH; + Title = "player"; + Section = "info"; } [BackgroundDependencyLoader] From bd6e603be3948b02ddd3546b3302f3a2bea32bed Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 27 Dec 2019 04:01:33 +0300 Subject: [PATCH 0602/1829] Add icon for profile header --- osu.Game/Overlays/Profile/ProfileHeader.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game/Overlays/Profile/ProfileHeader.cs b/osu.Game/Overlays/Profile/ProfileHeader.cs index 52baa57121..14430c958e 100644 --- a/osu.Game/Overlays/Profile/ProfileHeader.cs +++ b/osu.Game/Overlays/Profile/ProfileHeader.cs @@ -114,6 +114,8 @@ namespace osu.Game.Overlays.Profile { AccentColour = colours.Seafoam; } + + protected override Drawable CreateIcon() => new ScreenTitleTextureIcon(@"Icons/profile"); } } } From 183307d636b8bcd1fca0571276e300459d47ccd5 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 27 Dec 2019 10:53:20 +0900 Subject: [PATCH 0603/1829] Use circle instead of CircularContainer --- osu.Game/Graphics/UserInterface/ScreenTitle.cs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/ScreenTitle.cs b/osu.Game/Graphics/UserInterface/ScreenTitle.cs index a8c8005a41..f5bb97d465 100644 --- a/osu.Game/Graphics/UserInterface/ScreenTitle.cs +++ b/osu.Game/Graphics/UserInterface/ScreenTitle.cs @@ -80,17 +80,12 @@ namespace osu.Game.Graphics.UserInterface Font = OsuFont.GetFont(size: 20, weight: FontWeight.Bold), Margin = new MarginPadding { Bottom = text_offset } }, - new CircularContainer + new Circle { Anchor = Anchor.Centre, Origin = Anchor.Centre, - Masking = true, Size = new Vector2(4), - Child = new Box - { - RelativeSizeAxes = Axes.Both, - Colour = Color4.Gray, - } + Colour = Color4.Gray, }, pageText = new OsuSpriteText { From dc720dd65338f8513f8e22ae647be0311479f140 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 27 Dec 2019 05:27:36 +0300 Subject: [PATCH 0604/1829] Bump ppy.osu.Game.Resources from 2019.1215.0 to 2019.1227.0 --- osu.Android.props | 2 +- osu.Game/osu.Game.csproj | 2 +- osu.iOS.props | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Android.props b/osu.Android.props index e7f90af5fd..82bde17805 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -53,7 +53,7 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 0c0a58d533..5ffc6be066 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -22,7 +22,7 @@ - + diff --git a/osu.iOS.props b/osu.iOS.props index edeeea239e..67da9eac95 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -73,7 +73,7 @@ - + From 380c3161f156cab8e8e6df4d0008ceaa6fe9fc33 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 27 Dec 2019 11:28:07 +0900 Subject: [PATCH 0605/1829] Update resources --- osu.Game/osu.Game.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 0c0a58d533..5ffc6be066 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -22,7 +22,7 @@ - + From cfa1dfa1a4daef0e8a0f992a275e184768859176 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 27 Dec 2019 11:37:05 +0900 Subject: [PATCH 0606/1829] Split out into own method --- .../Skinning/ManiaLegacySkinTransformer.cs | 37 +++++++++++-------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/osu.Game.Rulesets.Mania/Skinning/ManiaLegacySkinTransformer.cs b/osu.Game.Rulesets.Mania/Skinning/ManiaLegacySkinTransformer.cs index 29991a4a6d..f3739ce7c2 100644 --- a/osu.Game.Rulesets.Mania/Skinning/ManiaLegacySkinTransformer.cs +++ b/osu.Game.Rulesets.Mania/Skinning/ManiaLegacySkinTransformer.cs @@ -25,28 +25,33 @@ namespace osu.Game.Rulesets.Mania.Skinning switch (component) { case GameplaySkinComponent resultComponent: - switch (resultComponent.Component) - { - case HitResult.Miss: - return this.GetAnimation("mania-hit0", true, true); + return getResult(resultComponent); + } - case HitResult.Meh: - return this.GetAnimation("mania-hit50", true, true); + return null; + } - case HitResult.Ok: - return this.GetAnimation("mania-hit100", true, true); + private Drawable getResult(GameplaySkinComponent resultComponent) + { + switch (resultComponent.Component) + { + case HitResult.Miss: + return this.GetAnimation("mania-hit0", true, true); - case HitResult.Good: - return this.GetAnimation("mania-hit200", true, true); + case HitResult.Meh: + return this.GetAnimation("mania-hit50", true, true); - case HitResult.Great: - return this.GetAnimation("mania-hit300", true, true); + case HitResult.Ok: + return this.GetAnimation("mania-hit100", true, true); - case HitResult.Perfect: - return this.GetAnimation("mania-hit300g", true, true); - } + case HitResult.Good: + return this.GetAnimation("mania-hit200", true, true); - break; + case HitResult.Great: + return this.GetAnimation("mania-hit300", true, true); + + case HitResult.Perfect: + return this.GetAnimation("mania-hit300g", true, true); } return null; From 3feaaa3e4da9c688fd5f4c89bae004c8468db549 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 27 Dec 2019 05:37:06 +0300 Subject: [PATCH 0607/1829] Use FillMode.Fit for icons --- osu.Game/Graphics/UserInterface/ScreenTitleTextureIcon.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game/Graphics/UserInterface/ScreenTitleTextureIcon.cs b/osu.Game/Graphics/UserInterface/ScreenTitleTextureIcon.cs index e36000af4e..c2a13970de 100644 --- a/osu.Game/Graphics/UserInterface/ScreenTitleTextureIcon.cs +++ b/osu.Game/Graphics/UserInterface/ScreenTitleTextureIcon.cs @@ -33,6 +33,7 @@ namespace osu.Game.Graphics.UserInterface Texture = textures.Get(textureName), Anchor = Anchor.Centre, Origin = Anchor.Centre, + FillMode = FillMode.Fit }; } } From 2d167a51612ac2a6fd0ce4ef173c0e43b8d66612 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 27 Dec 2019 05:53:31 +0300 Subject: [PATCH 0608/1829] Some little size adjustments --- osu.Game/Graphics/UserInterface/ScreenTitle.cs | 2 +- osu.Game/Overlays/OverlayHeader.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/ScreenTitle.cs b/osu.Game/Graphics/UserInterface/ScreenTitle.cs index f5bb97d465..ecd0508258 100644 --- a/osu.Game/Graphics/UserInterface/ScreenTitle.cs +++ b/osu.Game/Graphics/UserInterface/ScreenTitle.cs @@ -16,7 +16,7 @@ namespace osu.Game.Graphics.UserInterface { public const float ICON_WIDTH = ICON_SIZE + spacing; - public const float ICON_SIZE = 30; + public const float ICON_SIZE = 25; private const float spacing = 6; private const int text_offset = 2; diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index bfb2c4cd5e..72e86b2400 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -68,7 +68,7 @@ namespace osu.Game.Overlays { title.Margin = new MarginPadding { - Vertical = 5, + Vertical = 10, Left = UserProfileOverlay.CONTENT_X_MARGIN }; }) From 04a4821a9fc1b3aaa5ed8e8ff7b57d799dc69331 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 27 Dec 2019 06:36:41 +0300 Subject: [PATCH 0609/1829] Make CreateContent a method again --- osu.Game/Overlays/Changelog/ChangelogHeader.cs | 2 +- osu.Game/Overlays/OverlayHeader.cs | 8 +++++--- osu.Game/Overlays/Profile/ProfileHeader.cs | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/osu.Game/Overlays/Changelog/ChangelogHeader.cs b/osu.Game/Overlays/Changelog/ChangelogHeader.cs index 0cddeabdaa..3b6f0d778d 100644 --- a/osu.Game/Overlays/Changelog/ChangelogHeader.cs +++ b/osu.Game/Overlays/Changelog/ChangelogHeader.cs @@ -77,7 +77,7 @@ namespace osu.Game.Overlays.Changelog protected override Drawable CreateBackground() => new HeaderBackground(); - protected override Drawable CreateContent => new Container + protected override Drawable CreateContent() => new Container { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index 72e86b2400..9e88273443 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -99,13 +99,15 @@ namespace osu.Game.Overlays } }); - if (CreateContent != null) - flow.Add(CreateContent); + var content = CreateContent(); + + if (content != null) + flow.Add(content); } protected abstract Drawable CreateBackground(); - protected virtual Drawable CreateContent => null; + protected virtual Drawable CreateContent() => null; protected abstract ScreenTitle CreateTitle(); } diff --git a/osu.Game/Overlays/Profile/ProfileHeader.cs b/osu.Game/Overlays/Profile/ProfileHeader.cs index 14430c958e..4a792f7375 100644 --- a/osu.Game/Overlays/Profile/ProfileHeader.cs +++ b/osu.Game/Overlays/Profile/ProfileHeader.cs @@ -62,7 +62,7 @@ namespace osu.Game.Overlays.Profile } }; - protected override Drawable CreateContent => new FillFlowContainer + protected override Drawable CreateContent() => new FillFlowContainer { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, From 099b044f04c556aefe50db9ab9a40fe9dee06c12 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Fri, 27 Dec 2019 06:37:36 +0300 Subject: [PATCH 0610/1829] Add headless test ensuring correct cancelling download behaviour --- .../Online/TestSceneBeatmapDownloading.cs | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 osu.Game.Tests/Online/TestSceneBeatmapDownloading.cs diff --git a/osu.Game.Tests/Online/TestSceneBeatmapDownloading.cs b/osu.Game.Tests/Online/TestSceneBeatmapDownloading.cs new file mode 100644 index 0000000000..1572b813c0 --- /dev/null +++ b/osu.Game.Tests/Online/TestSceneBeatmapDownloading.cs @@ -0,0 +1,44 @@ +// 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.Allocation; +using osu.Framework.Testing; +using osu.Game.Beatmaps; +using osu.Game.Overlays.Notifications; +using osu.Game.Tests.Visual; + +namespace osu.Game.Tests.Online +{ + [HeadlessTest] + public class TestSceneBeatmapManager : OsuTestScene + { + private BeatmapManager beatmaps; + private ProgressNotification recentNotification; + + private static readonly BeatmapSetInfo test_model = new BeatmapSetInfo { OnlineBeatmapSetID = 1 }; + + [BackgroundDependencyLoader] + private void load(BeatmapManager beatmaps) + { + this.beatmaps = beatmaps; + + beatmaps.PostNotification = n => recentNotification = n as ProgressNotification; + } + + [TestCase(true)] + [TestCase(false)] + public void TestCancelDownloadFromRequest(bool closeFromRequest) + { + AddStep("download beatmap", () => beatmaps.Download(test_model)); + + if (closeFromRequest) + AddStep("cancel download from request", () => beatmaps.GetExistingDownload(test_model).Cancel()); + else + AddStep("cancel download from notification", () => recentNotification.Close()); + + AddUntilStep("is removed from download list", () => beatmaps.GetExistingDownload(test_model) == null); + AddAssert("is notification cancelled", () => recentNotification.State == ProgressNotificationState.Cancelled); + } + } +} From fbbd16b4f02e9a4fbda6ee9d511e6d846c0d95fc Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 27 Dec 2019 12:39:25 +0900 Subject: [PATCH 0611/1829] Remove healthIncreases nullability --- osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs b/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs index 96242205d4..ba29a9a0ce 100644 --- a/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs @@ -22,7 +22,7 @@ namespace osu.Game.Rulesets.Scoring private IBeatmap beatmap; private double gameplayEndTime; - private List<(double time, double health)> healthIncreases; + private readonly List<(double time, double health)> healthIncreases = new List<(double, double)>(); private double targetMinimumHealth; private double drainRate = 1; @@ -56,19 +56,15 @@ namespace osu.Game.Rulesets.Scoring if (beatmap.HitObjects.Count > 0) gameplayEndTime = beatmap.HitObjects[^1].GetEndTime(); - healthIncreases = new List<(double time, double health)>(); targetMinimumHealth = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.95, 0.70, 0.30); base.ApplyBeatmap(beatmap); - - // Only required during the simulation stage - healthIncreases = null; } protected override void ApplyResultInternal(JudgementResult result) { base.ApplyResultInternal(result); - healthIncreases?.Add((result.HitObject.GetEndTime() + result.TimeOffset, GetHealthIncreaseFor(result))); + healthIncreases.Add((result.HitObject.GetEndTime() + result.TimeOffset, GetHealthIncreaseFor(result))); } protected override void Reset(bool storeResults) @@ -79,11 +75,13 @@ namespace osu.Game.Rulesets.Scoring if (storeResults) drainRate = computeDrainRate(); + + healthIncreases.Clear(); } private double computeDrainRate() { - if (healthIncreases == null || healthIncreases.Count == 0) + if (healthIncreases.Count == 0) return 0; int adjustment = 1; From e030266e9575f3d24be45cc8fc3b61d88a32b182 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Fri, 27 Dec 2019 06:40:01 +0300 Subject: [PATCH 0612/1829] Fix test name --- osu.Game.Tests/Online/TestSceneBeatmapDownloading.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Tests/Online/TestSceneBeatmapDownloading.cs b/osu.Game.Tests/Online/TestSceneBeatmapDownloading.cs index 1572b813c0..7887002e1f 100644 --- a/osu.Game.Tests/Online/TestSceneBeatmapDownloading.cs +++ b/osu.Game.Tests/Online/TestSceneBeatmapDownloading.cs @@ -28,7 +28,7 @@ namespace osu.Game.Tests.Online [TestCase(true)] [TestCase(false)] - public void TestCancelDownloadFromRequest(bool closeFromRequest) + public void TestCancelDownloadRequest(bool closeFromRequest) { AddStep("download beatmap", () => beatmaps.Download(test_model)); From f03f310bde651aee3a608fc0b1928dbee2ae93c0 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Fri, 27 Dec 2019 06:43:43 +0300 Subject: [PATCH 0613/1829] Match file name --- ...{TestSceneBeatmapDownloading.cs => TestSceneBeatmapManager.cs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename osu.Game.Tests/Online/{TestSceneBeatmapDownloading.cs => TestSceneBeatmapManager.cs} (100%) diff --git a/osu.Game.Tests/Online/TestSceneBeatmapDownloading.cs b/osu.Game.Tests/Online/TestSceneBeatmapManager.cs similarity index 100% rename from osu.Game.Tests/Online/TestSceneBeatmapDownloading.cs rename to osu.Game.Tests/Online/TestSceneBeatmapManager.cs From c22744de2cc8df0ef116cfc4ca32f63ed25506b7 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 27 Dec 2019 12:46:35 +0900 Subject: [PATCH 0614/1829] Better define minimum health targets --- .../Scoring/DrainingHealthProcessor.cs | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs b/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs index ba29a9a0ce..34ede153dd 100644 --- a/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs @@ -10,7 +10,10 @@ using osu.Game.Rulesets.Objects; namespace osu.Game.Rulesets.Scoring { /// - /// A which continuously drains health. + /// A which continuously drains health.
+ /// At HP=0, the minimum health reached for a perfect play is 95%.
+ /// At HP=5, the minimum health reached for a perfect play is 70%.
+ /// At HP=10, the minimum health reached for a perfect play is 30%. ///
public class DrainingHealthProcessor : HealthProcessor { @@ -19,6 +22,21 @@ namespace osu.Game.Rulesets.Scoring ///
private const double minimum_health_error = 0.01; + /// + /// The minimum health target at an HP drain rate of 0. + /// + private const double min_health_target = 0.95; + + /// + /// The minimum health target at an HP drain rate of 5. + /// + private const double mid_health_target = 0.70; + + /// + /// The minimum health target at an HP drain rate of 10. + /// + private const double max_health_target = 0.30; + private IBeatmap beatmap; private double gameplayEndTime; @@ -56,7 +74,7 @@ namespace osu.Game.Rulesets.Scoring if (beatmap.HitObjects.Count > 0) gameplayEndTime = beatmap.HitObjects[^1].GetEndTime(); - targetMinimumHealth = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.95, 0.70, 0.30); + targetMinimumHealth = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, min_health_target, mid_health_target, max_health_target); base.ApplyBeatmap(beatmap); } From 35cdd67c4a184b1284e41e71205c54ac81a82c1c Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 27 Dec 2019 12:47:23 +0900 Subject: [PATCH 0615/1829] Remove instantiation of non-existing processor --- osu.Game.Rulesets.Osu/OsuRuleset.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/OsuRuleset.cs b/osu.Game.Rulesets.Osu/OsuRuleset.cs index 203e37f91a..36346eb78a 100644 --- a/osu.Game.Rulesets.Osu/OsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/OsuRuleset.cs @@ -38,8 +38,6 @@ namespace osu.Game.Rulesets.Osu public override ScoreProcessor CreateScoreProcessor() => new OsuScoreProcessor(); - public override HealthProcessor CreateHealthProcessor(IBeatmap beatmap) => new OsuHealthProcessor(beatmap); - public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new OsuBeatmapConverter(beatmap, this); public override IBeatmapProcessor CreateBeatmapProcessor(IBeatmap beatmap) => new OsuBeatmapProcessor(beatmap); From 9f3c53cc0a896453857044e30098102078aa792b Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 27 Dec 2019 13:02:54 +0900 Subject: [PATCH 0616/1829] Update resources --- osu.Android.props | 2 +- osu.iOS.props | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Android.props b/osu.Android.props index e7f90af5fd..82bde17805 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -53,7 +53,7 @@
- + diff --git a/osu.iOS.props b/osu.iOS.props index edeeea239e..67da9eac95 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -73,7 +73,7 @@ - + From 9478fe5ec3830162fb4040bcd3fc3e0853548281 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 27 Dec 2019 13:15:55 +0900 Subject: [PATCH 0617/1829] Revert to using empty container, not null --- osu.Game/Overlays/OverlayHeader.cs | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index 9e88273443..7a397d10c6 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.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 JetBrains.Annotations; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; @@ -37,14 +38,12 @@ namespace osu.Game.Overlays RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; - FillFlowContainer flow; - - Add(flow = new FillFlowContainer + Add(new FillFlowContainer { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, Direction = FillDirection.Vertical, - Children = new Drawable[] + Children = new[] { background = new Container { @@ -95,19 +94,16 @@ namespace osu.Game.Overlays Padding = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN }, } } - } + }, + CreateContent() } }); - - var content = CreateContent(); - - if (content != null) - flow.Add(content); } protected abstract Drawable CreateBackground(); - protected virtual Drawable CreateContent() => null; + [NotNull] + protected virtual Drawable CreateContent() => new Container(); protected abstract ScreenTitle CreateTitle(); } From ea52bbea35820be055ea323ef4ee75aa0af582d2 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 27 Dec 2019 14:05:48 +0900 Subject: [PATCH 0618/1829] 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 e7f90af5fd..2928464ba0 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 0c0a58d533..55400fb577 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 edeeea239e..489dbd7415 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From b330aec03e54447b0788c2029d13d55b1db70e6d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 27 Dec 2019 16:14:49 +0900 Subject: [PATCH 0619/1829] Drain starting at the first hitobject, not gameplay start --- .../Scoring/TaikoHealthProcessor.cs | 4 ++-- osu.Game.Rulesets.Taiko/TaikoRuleset.cs | 2 +- osu.Game/Rulesets/Ruleset.cs | 2 +- .../Scoring/AccumulatingHealthProcessor.cs | 4 +--- .../Rulesets/Scoring/DrainingHealthProcessor.cs | 15 +++++++++------ osu.Game/Rulesets/Scoring/HealthProcessor.cs | 14 -------------- osu.Game/Screens/Play/Player.cs | 2 +- 7 files changed, 15 insertions(+), 28 deletions(-) diff --git a/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs b/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs index 279d119626..edb089dbac 100644 --- a/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs +++ b/osu.Game.Rulesets.Taiko/Scoring/TaikoHealthProcessor.cs @@ -30,8 +30,8 @@ namespace osu.Game.Rulesets.Taiko.Scoring /// private double hpMissMultiplier; - public TaikoHealthProcessor(double gameplayStartTime) - : base(gameplayStartTime, 0.5) + public TaikoHealthProcessor() + : base(0.5) { } diff --git a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs index 371236e47a..777b68a993 100644 --- a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs +++ b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs @@ -30,7 +30,7 @@ namespace osu.Game.Rulesets.Taiko public override ScoreProcessor CreateScoreProcessor() => new TaikoScoreProcessor(); - public override HealthProcessor CreateHealthProcessor(double gameplayStartTime) => new TaikoHealthProcessor(gameplayStartTime); + public override HealthProcessor CreateHealthProcessor(double drainStartTime) => new TaikoHealthProcessor(); public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new TaikoBeatmapConverter(beatmap, this); diff --git a/osu.Game/Rulesets/Ruleset.cs b/osu.Game/Rulesets/Ruleset.cs index ff58d3c8dc..67ec6d15ea 100644 --- a/osu.Game/Rulesets/Ruleset.cs +++ b/osu.Game/Rulesets/Ruleset.cs @@ -80,7 +80,7 @@ namespace osu.Game.Rulesets /// Creates a for this . /// /// The health processor. - public virtual HealthProcessor CreateHealthProcessor(double gameplayStartTime) => new DrainingHealthProcessor(gameplayStartTime); + public virtual HealthProcessor CreateHealthProcessor(double drainStartTime) => new DrainingHealthProcessor(drainStartTime); /// /// Creates a to convert a to one that is applicable for this . diff --git a/osu.Game/Rulesets/Scoring/AccumulatingHealthProcessor.cs b/osu.Game/Rulesets/Scoring/AccumulatingHealthProcessor.cs index 540b4b8a1d..5dfb5167f4 100644 --- a/osu.Game/Rulesets/Scoring/AccumulatingHealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/AccumulatingHealthProcessor.cs @@ -16,10 +16,8 @@ namespace osu.Game.Rulesets.Scoring /// /// Creates a new . /// - /// The gameplay start time. /// The minimum amount of health required to beatmap. - public AccumulatingHealthProcessor(double gameplayStartTime, double requiredHealth) - : base(gameplayStartTime) + public AccumulatingHealthProcessor(double requiredHealth) { this.requiredHealth = requiredHealth; } diff --git a/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs b/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs index 34ede153dd..fffcbb3c9f 100644 --- a/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs @@ -38,8 +38,11 @@ namespace osu.Game.Rulesets.Scoring private const double max_health_target = 0.30; private IBeatmap beatmap; + private double gameplayEndTime; + private readonly double drainStartTime; + private readonly List<(double time, double health)> healthIncreases = new List<(double, double)>(); private double targetMinimumHealth; private double drainRate = 1; @@ -47,10 +50,10 @@ namespace osu.Game.Rulesets.Scoring /// /// Creates a new . /// - /// The gameplay start time. - public DrainingHealthProcessor(double gameplayStartTime) - : base(gameplayStartTime) + /// The time after which draining should begin. + public DrainingHealthProcessor(double drainStartTime) { + this.drainStartTime = drainStartTime; } protected override void Update() @@ -60,8 +63,8 @@ namespace osu.Game.Rulesets.Scoring if (!IsBreakTime.Value) { // When jumping in and out of gameplay time within a single frame, health should only be drained for the period within the gameplay time - double lastGameplayTime = Math.Clamp(Time.Current - Time.Elapsed, GameplayStartTime, gameplayEndTime); - double currentGameplayTime = Math.Clamp(Time.Current, GameplayStartTime, gameplayEndTime); + double lastGameplayTime = Math.Clamp(Time.Current - Time.Elapsed, drainStartTime, gameplayEndTime); + double currentGameplayTime = Math.Clamp(Time.Current, drainStartTime, gameplayEndTime); Health.Value -= drainRate * (currentGameplayTime - lastGameplayTime); } @@ -116,7 +119,7 @@ namespace osu.Game.Rulesets.Scoring for (int i = 0; i < healthIncreases.Count; i++) { double currentTime = healthIncreases[i].time; - double lastTime = i > 0 ? healthIncreases[i - 1].time : GameplayStartTime; + double lastTime = i > 0 ? healthIncreases[i - 1].time : drainStartTime; // Subtract any break time from the duration since the last object if (beatmap.Breaks.Count > 0) diff --git a/osu.Game/Rulesets/Scoring/HealthProcessor.cs b/osu.Game/Rulesets/Scoring/HealthProcessor.cs index d8addc2b4d..0c6b3f67b4 100644 --- a/osu.Game/Rulesets/Scoring/HealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/HealthProcessor.cs @@ -36,20 +36,6 @@ namespace osu.Game.Rulesets.Scoring /// public bool HasFailed { get; private set; } - /// - /// The gameplay start time. - /// - protected readonly double GameplayStartTime; - - /// - /// Creates a new . - /// - /// The gameplay start time. - protected HealthProcessor(double gameplayStartTime) - { - GameplayStartTime = gameplayStartTime; - } - protected override void ApplyResultInternal(JudgementResult result) { result.HealthAtJudgement = Health.Value; diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index a3d512cdaa..7228e22382 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -135,7 +135,7 @@ namespace osu.Game.Screens.Play ScoreProcessor.ApplyBeatmap(playableBeatmap); ScoreProcessor.Mods.BindTo(Mods); - HealthProcessor = ruleset.CreateHealthProcessor(DrawableRuleset.GameplayStartTime); + HealthProcessor = ruleset.CreateHealthProcessor(playableBeatmap.HitObjects[0].StartTime); HealthProcessor.ApplyBeatmap(playableBeatmap); if (!ScoreProcessor.Mode.Disabled) From 7507fee9f9657479602104aa17de5926aaa373ad Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 27 Dec 2019 16:55:46 +0900 Subject: [PATCH 0620/1829] Add test for HP rewind --- .../Gameplay/TestSceneDrainingHealthProcessor.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/osu.Game.Tests/Gameplay/TestSceneDrainingHealthProcessor.cs b/osu.Game.Tests/Gameplay/TestSceneDrainingHealthProcessor.cs index 4996c86e5d..eec52669ff 100644 --- a/osu.Game.Tests/Gameplay/TestSceneDrainingHealthProcessor.cs +++ b/osu.Game.Tests/Gameplay/TestSceneDrainingHealthProcessor.cs @@ -75,6 +75,16 @@ namespace osu.Game.Tests.Gameplay assertHealthNotEqualTo(1); } + [Test] + public void TestHealthGainedAfterRewind() + { + createProcessor(createBeatmap(0, 1000)); + setTime(500); + + setTime(0); + assertHealthEqualTo(1); + } + [Test] public void TestHealthGainedOnHit() { From 2c8879f0fb7f2f754725274821a707ff95c77af1 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 27 Dec 2019 19:05:17 +0900 Subject: [PATCH 0621/1829] Lock user adjusted difficulty settings when changing beatmap --- .../Mods/CatchModDifficultyAdjust.cs | 4 +-- .../Mods/OsuModDifficultyAdjust.cs | 4 +-- osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs | 30 +++++++++++++++++-- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs index 4c0f5d510e..8377b3786a 100644 --- a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs @@ -34,8 +34,8 @@ namespace osu.Game.Rulesets.Catch.Mods { base.TransferSettings(difficulty); - CircleSize.Value = CircleSize.Default = difficulty.CircleSize; - ApproachRate.Value = ApproachRate.Default = difficulty.ApproachRate; + TransferSetting(CircleSize, difficulty.CircleSize); + TransferSetting(ApproachRate, difficulty.ApproachRate); } protected override void ApplySettings(BeatmapDifficulty difficulty) diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs index 0514e2ab34..7eee71be81 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs @@ -34,8 +34,8 @@ namespace osu.Game.Rulesets.Osu.Mods { base.TransferSettings(difficulty); - CircleSize.Value = CircleSize.Default = difficulty.CircleSize; - ApproachRate.Value = ApproachRate.Default = difficulty.ApproachRate; + TransferSetting(CircleSize, difficulty.CircleSize); + TransferSetting(ApproachRate, difficulty.ApproachRate); } protected override void ApplySettings(BeatmapDifficulty difficulty) diff --git a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs index 7b8d4bb3df..1c26e5a720 100644 --- a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs @@ -5,6 +5,7 @@ using osu.Game.Beatmaps; using osu.Framework.Bindables; using osu.Framework.Graphics.Sprites; using System; +using System.Collections.Generic; using osu.Game.Configuration; namespace osu.Game.Rulesets.Mods @@ -51,8 +52,8 @@ namespace osu.Game.Rulesets.Mods { if (this.difficulty == null || this.difficulty.ID != difficulty.ID) { - this.difficulty = difficulty; TransferSettings(difficulty); + this.difficulty = difficulty; } } @@ -64,8 +65,31 @@ namespace osu.Game.Rulesets.Mods /// The beatmap's initial values. protected virtual void TransferSettings(BeatmapDifficulty difficulty) { - DrainRate.Value = DrainRate.Default = difficulty.DrainRate; - OverallDifficulty.Value = OverallDifficulty.Default = difficulty.OverallDifficulty; + TransferSetting(DrainRate, difficulty.DrainRate); + TransferSetting(OverallDifficulty, difficulty.OverallDifficulty); + } + + private readonly Dictionary userChangedSettings = new Dictionary(); + + /// + /// Transfer a setting from to a configuration bindable. + /// Only performs the transfer if the user it not currently overriding.. + /// + protected void TransferSetting(BindableNumber bindable, T beatmapDefault) + where T : struct, IComparable, IConvertible, IEquatable + { + bindable.UnbindEvents(); + + userChangedSettings.TryAdd(bindable, false); + + // users generally choose a difficulty setting and want it to stick across multiple beatmap changes. + // we only want to value transfer if the user hasn't changed the value previously. + if (!userChangedSettings[bindable]) + { + bindable.Value = bindable.Default = beatmapDefault; + } + + bindable.ValueChanged += _ => userChangedSettings[bindable] = !bindable.IsDefault; } /// From ca862124a5b7cae97ddba65176e92003e77400c5 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 27 Dec 2019 19:36:48 +0900 Subject: [PATCH 0622/1829] Fix replay import from main menu causing a hard crash --- osu.Game/Screens/Play/PlayerLoader.cs | 30 ++++++++++----------- osu.Game/Screens/Play/ReplayPlayerLoader.cs | 8 +++--- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/osu.Game/Screens/Play/PlayerLoader.cs b/osu.Game/Screens/Play/PlayerLoader.cs index 57021dfc68..64fcc48004 100644 --- a/osu.Game/Screens/Play/PlayerLoader.cs +++ b/osu.Game/Screens/Play/PlayerLoader.cs @@ -118,8 +118,6 @@ namespace osu.Game.Screens.Play }, idleTracker = new IdleTracker(750) }); - - loadNewPlayer(); } protected override void LoadComplete() @@ -127,6 +125,21 @@ namespace osu.Game.Screens.Play base.LoadComplete(); inputManager = GetContainingInputManager(); + } + + public override void OnEntering(IScreen last) + { + base.OnEntering(last); + + loadNewPlayer(); + + content.ScaleTo(0.7f); + Background?.FadeColour(Color4.White, 800, Easing.OutQuint); + + contentIn(); + + info.Delay(750).FadeIn(500); + this.Delay(1800).Schedule(pushWhenLoaded); if (!muteWarningShownOnce.Value) { @@ -179,19 +192,6 @@ namespace osu.Game.Screens.Play content.FadeOut(250); } - public override void OnEntering(IScreen last) - { - base.OnEntering(last); - - content.ScaleTo(0.7f); - Background?.FadeColour(Color4.White, 800, Easing.OutQuint); - - contentIn(); - - info.Delay(750).FadeIn(500); - this.Delay(1800).Schedule(pushWhenLoaded); - } - protected override void LogoArriving(OsuLogo logo, bool resuming) { base.LogoArriving(logo, resuming); diff --git a/osu.Game/Screens/Play/ReplayPlayerLoader.cs b/osu.Game/Screens/Play/ReplayPlayerLoader.cs index c8ca604902..4572570437 100644 --- a/osu.Game/Screens/Play/ReplayPlayerLoader.cs +++ b/osu.Game/Screens/Play/ReplayPlayerLoader.cs @@ -2,7 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System; -using osu.Framework.Allocation; +using osu.Framework.Screens; using osu.Game.Scoring; namespace osu.Game.Screens.Play @@ -20,15 +20,13 @@ namespace osu.Game.Screens.Play scoreInfo = score.ScoreInfo; } - protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent) + public override void OnEntering(IScreen last) { - var dependencies = base.CreateChildDependencies(parent); - // these will be reverted thanks to PlayerLoader's lease. Mods.Value = scoreInfo.Mods; Ruleset.Value = scoreInfo.Ruleset; - return dependencies; + base.OnEntering(last); } } } From 6069d98ceda7bd4d036f2a28cb2511e39c43fd7b Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 27 Dec 2019 19:39:30 +0900 Subject: [PATCH 0623/1829] Remove generic editor beatmap --- .../TestSceneOsuDistanceSnapGrid.cs | 4 +- .../Edit/OsuHitObjectComposer.cs | 6 +- osu.Game.Tests/Beatmaps/EditorBeatmapTest.cs | 14 ++-- ...tSceneHitObjectComposerDistanceSnapping.cs | 3 +- .../Editor/TestSceneDistanceSnapGrid.cs | 5 +- .../Editor/TestSceneEditorComposeTimeline.cs | 2 +- .../Edit/DrawableEditRulesetWrapper.cs | 2 +- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 5 +- osu.Game/Screens/Edit/EditorBeatmap.cs | 75 ++++++++++--------- osu.Game/Screens/Edit/IEditorBeatmap.cs | 13 +--- 10 files changed, 59 insertions(+), 70 deletions(-) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneOsuDistanceSnapGrid.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneOsuDistanceSnapGrid.cs index eff4d919b0..75c57467c3 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneOsuDistanceSnapGrid.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneOsuDistanceSnapGrid.cs @@ -34,7 +34,7 @@ namespace osu.Game.Rulesets.Osu.Tests }; [Cached(typeof(IEditorBeatmap))] - private readonly EditorBeatmap editorBeatmap; + private readonly EditorBeatmap editorBeatmap; [Cached] private readonly BindableBeatDivisor beatDivisor = new BindableBeatDivisor(); @@ -46,7 +46,7 @@ namespace osu.Game.Rulesets.Osu.Tests public TestSceneOsuDistanceSnapGrid() { - editorBeatmap = new EditorBeatmap(new OsuBeatmap()); + editorBeatmap = new EditorBeatmap(new OsuBeatmap()); } [SetUp] diff --git a/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs b/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs index a2c1a5f5f4..49624ea733 100644 --- a/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs +++ b/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs @@ -91,10 +91,10 @@ namespace osu.Game.Rulesets.Osu.Edit if (sourceIndex == -1) return null; - OsuHitObject sourceObject = EditorBeatmap.HitObjects[sourceIndex]; + HitObject sourceObject = EditorBeatmap.HitObjects[sourceIndex]; int targetIndex = sourceIndex + targetOffset; - OsuHitObject targetObject = null; + HitObject targetObject = null; // Keep advancing the target object while its start time falls before the end time of the source object while (true) @@ -111,7 +111,7 @@ namespace osu.Game.Rulesets.Osu.Edit targetIndex++; } - return new OsuDistanceSnapGrid(sourceObject, targetObject); + return new OsuDistanceSnapGrid((OsuHitObject)sourceObject, (OsuHitObject)targetObject); } } } diff --git a/osu.Game.Tests/Beatmaps/EditorBeatmapTest.cs b/osu.Game.Tests/Beatmaps/EditorBeatmapTest.cs index 98e630abd2..12d729d09f 100644 --- a/osu.Game.Tests/Beatmaps/EditorBeatmapTest.cs +++ b/osu.Game.Tests/Beatmaps/EditorBeatmapTest.cs @@ -20,7 +20,7 @@ namespace osu.Game.Tests.Beatmaps [Test] public void TestHitObjectAddEvent() { - var editorBeatmap = new EditorBeatmap(new OsuBeatmap()); + var editorBeatmap = new EditorBeatmap(new OsuBeatmap()); HitObject addedObject = null; editorBeatmap.HitObjectAdded += h => addedObject = h; @@ -38,7 +38,7 @@ namespace osu.Game.Tests.Beatmaps public void HitObjectRemoveEvent() { var hitCircle = new HitCircle(); - var editorBeatmap = new EditorBeatmap(new OsuBeatmap { HitObjects = { hitCircle } }); + var editorBeatmap = new EditorBeatmap(new OsuBeatmap { HitObjects = { hitCircle } }); HitObject removedObject = null; editorBeatmap.HitObjectRemoved += h => removedObject = h; @@ -55,7 +55,7 @@ namespace osu.Game.Tests.Beatmaps public void TestInitialHitObjectStartTimeChangeEvent() { var hitCircle = new HitCircle(); - var editorBeatmap = new EditorBeatmap(new OsuBeatmap { HitObjects = { hitCircle } }); + var editorBeatmap = new EditorBeatmap(new OsuBeatmap { HitObjects = { hitCircle } }); HitObject changedObject = null; editorBeatmap.StartTimeChanged += h => changedObject = h; @@ -71,7 +71,7 @@ namespace osu.Game.Tests.Beatmaps [Test] public void TestAddedHitObjectStartTimeChangeEvent() { - var editorBeatmap = new EditorBeatmap(new OsuBeatmap()); + var editorBeatmap = new EditorBeatmap(new OsuBeatmap()); HitObject changedObject = null; editorBeatmap.StartTimeChanged += h => changedObject = h; @@ -92,7 +92,7 @@ namespace osu.Game.Tests.Beatmaps public void TestRemovedHitObjectStartTimeChangeEvent() { var hitCircle = new HitCircle(); - var editorBeatmap = new EditorBeatmap(new OsuBeatmap { HitObjects = { hitCircle } }); + var editorBeatmap = new EditorBeatmap(new OsuBeatmap { HitObjects = { hitCircle } }); HitObject changedObject = null; editorBeatmap.StartTimeChanged += h => changedObject = h; @@ -110,7 +110,7 @@ namespace osu.Game.Tests.Beatmaps [Test] public void TestAddHitObjectInMiddle() { - var editorBeatmap = new EditorBeatmap(new OsuBeatmap + var editorBeatmap = new EditorBeatmap(new OsuBeatmap { HitObjects = { @@ -134,7 +134,7 @@ namespace osu.Game.Tests.Beatmaps public void TestResortWhenStartTimeChanged() { var hitCircle = new HitCircle { StartTime = 1000 }; - var editorBeatmap = new EditorBeatmap(new OsuBeatmap + var editorBeatmap = new EditorBeatmap(new OsuBeatmap { HitObjects = { diff --git a/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs b/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs index fe3cc375ea..b94f08aeaa 100644 --- a/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs +++ b/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs @@ -6,7 +6,6 @@ using osu.Framework.Testing; using osu.Game.Beatmaps.ControlPoints; using osu.Game.Rulesets.Osu; using osu.Game.Rulesets.Osu.Edit; -using osu.Game.Rulesets.Osu.Objects; using osu.Game.Screens.Edit; using osu.Game.Tests.Visual; @@ -183,7 +182,7 @@ namespace osu.Game.Tests.Editor private class TestHitObjectComposer : OsuHitObjectComposer { - public new EditorBeatmap EditorBeatmap => base.EditorBeatmap; + public new EditorBeatmap EditorBeatmap => base.EditorBeatmap; public TestHitObjectComposer() : base(new OsuRuleset()) diff --git a/osu.Game.Tests/Visual/Editor/TestSceneDistanceSnapGrid.cs b/osu.Game.Tests/Visual/Editor/TestSceneDistanceSnapGrid.cs index 39b4bf7218..83b1f43f38 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneDistanceSnapGrid.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneDistanceSnapGrid.cs @@ -8,7 +8,6 @@ using osu.Framework.Graphics.Shapes; using osu.Game.Beatmaps.ControlPoints; using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Osu.Beatmaps; -using osu.Game.Rulesets.Osu.Objects; using osu.Game.Screens.Edit; using osu.Game.Screens.Edit.Compose.Components; using osuTK; @@ -22,14 +21,14 @@ namespace osu.Game.Tests.Visual.Editor private static readonly Vector2 grid_position = new Vector2(512, 384); [Cached(typeof(IEditorBeatmap))] - private readonly EditorBeatmap editorBeatmap; + private readonly EditorBeatmap editorBeatmap; [Cached(typeof(IDistanceSnapProvider))] private readonly SnapProvider snapProvider = new SnapProvider(); public TestSceneDistanceSnapGrid() { - editorBeatmap = new EditorBeatmap(new OsuBeatmap()); + editorBeatmap = new EditorBeatmap(new OsuBeatmap()); editorBeatmap.ControlPointInfo.Add(0, new TimingControlPoint { BeatLength = beat_length }); } diff --git a/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs b/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs index ed6bc5fe0c..29575cb42e 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs @@ -38,7 +38,7 @@ namespace osu.Game.Tests.Visual.Editor { Beatmap.Value = new WaveformTestBeatmap(audio); - var editorBeatmap = new EditorBeatmap((Beatmap)Beatmap.Value.Beatmap); + var editorBeatmap = new EditorBeatmap((Beatmap)Beatmap.Value.Beatmap); Children = new Drawable[] { diff --git a/osu.Game/Rulesets/Edit/DrawableEditRulesetWrapper.cs b/osu.Game/Rulesets/Edit/DrawableEditRulesetWrapper.cs index 4710465536..ab2332ea86 100644 --- a/osu.Game/Rulesets/Edit/DrawableEditRulesetWrapper.cs +++ b/osu.Game/Rulesets/Edit/DrawableEditRulesetWrapper.cs @@ -22,7 +22,7 @@ namespace osu.Game.Rulesets.Edit private readonly DrawableRuleset drawableRuleset; [Resolved] - private IEditorBeatmap beatmap { get; set; } + private IEditorBeatmap beatmap { get; set; } public DrawableEditRulesetWrapper(DrawableRuleset drawableRuleset) { diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index 22d94abcb9..a550cf4a02 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -35,7 +35,7 @@ namespace osu.Game.Rulesets.Edit { protected IRulesetConfigManager Config { get; private set; } - protected new EditorBeatmap EditorBeatmap { get; private set; } + protected new EditorBeatmap EditorBeatmap { get; private set; } protected readonly Ruleset Ruleset; @@ -148,14 +148,13 @@ namespace osu.Game.Rulesets.Edit beatmapProcessor = Ruleset.CreateBeatmapProcessor(playableBeatmap); - base.EditorBeatmap = EditorBeatmap = new EditorBeatmap(playableBeatmap); + base.EditorBeatmap = EditorBeatmap = new EditorBeatmap(playableBeatmap); EditorBeatmap.HitObjectAdded += addHitObject; EditorBeatmap.HitObjectRemoved += removeHitObject; EditorBeatmap.StartTimeChanged += UpdateHitObject; var dependencies = new DependencyContainer(parent); dependencies.CacheAs(EditorBeatmap); - dependencies.CacheAs>(EditorBeatmap); Config = dependencies.Get().GetConfigFor(Ruleset); diff --git a/osu.Game/Screens/Edit/EditorBeatmap.cs b/osu.Game/Screens/Edit/EditorBeatmap.cs index c3a322ea36..5a45ea05a0 100644 --- a/osu.Game/Screens/Edit/EditorBeatmap.cs +++ b/osu.Game/Screens/Edit/EditorBeatmap.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System; +using System.Collections; using System.Collections.Generic; using osu.Framework.Bindables; using osu.Game.Beatmaps; @@ -11,28 +12,27 @@ using osu.Game.Rulesets.Objects; namespace osu.Game.Screens.Edit { - public class EditorBeatmap : IEditorBeatmap - where T : HitObject + public class EditorBeatmap : IEditorBeatmap { /// - /// Invoked when a is added to this . + /// Invoked when a is added to this . /// public event Action HitObjectAdded; /// - /// Invoked when a is removed from this . + /// Invoked when a is removed from this . /// public event Action HitObjectRemoved; /// - /// Invoked when the start time of a in this was changed. + /// Invoked when the start time of a in this was changed. /// public event Action StartTimeChanged; - private readonly Dictionary> startTimeBindables = new Dictionary>(); - private readonly Beatmap beatmap; + private readonly Dictionary> startTimeBindables = new Dictionary>(); + private readonly IBeatmap beatmap; - public EditorBeatmap(Beatmap beatmap) + public EditorBeatmap(IBeatmap beatmap) { this.beatmap = beatmap; @@ -54,70 +54,71 @@ namespace osu.Game.Screens.Edit public double TotalBreakTime => beatmap.TotalBreakTime; - public IReadOnlyList HitObjects => beatmap.HitObjects; + public IReadOnlyList HitObjects => beatmap.HitObjects; IReadOnlyList IBeatmap.HitObjects => beatmap.HitObjects; public IEnumerable GetStatistics() => beatmap.GetStatistics(); - public IBeatmap Clone() => (EditorBeatmap)MemberwiseClone(); + public IBeatmap Clone() => (EditorBeatmap)MemberwiseClone(); /// - /// Adds a to this . + /// Adds a to this . /// /// The to add. - public void Add(T hitObject) + public void Add(HitObject hitObject) { trackStartTime(hitObject); // Preserve existing sorting order in the beatmap - var insertionIndex = beatmap.HitObjects.FindLastIndex(h => h.StartTime <= hitObject.StartTime); - beatmap.HitObjects.Insert(insertionIndex + 1, hitObject); + var insertionIndex = findInsertionIndex(beatmap.HitObjects, hitObject.StartTime); + ((IList)beatmap.HitObjects).Insert(insertionIndex + 1, hitObject); HitObjectAdded?.Invoke(hitObject); } /// - /// Removes a from this . + /// Removes a from this . /// /// The to add. - public void Remove(T hitObject) + public void Remove(HitObject hitObject) { - if (beatmap.HitObjects.Remove(hitObject)) - { - var bindable = startTimeBindables[hitObject]; - bindable.UnbindAll(); + if (!((IList)beatmap.HitObjects).Contains(hitObject)) + return; - startTimeBindables.Remove(hitObject); - HitObjectRemoved?.Invoke(hitObject); - } + ((IList)beatmap.HitObjects).Remove(hitObject); + + var bindable = startTimeBindables[hitObject]; + bindable.UnbindAll(); + + startTimeBindables.Remove(hitObject); + HitObjectRemoved?.Invoke(hitObject); } - private void trackStartTime(T hitObject) + private void trackStartTime(HitObject hitObject) { startTimeBindables[hitObject] = hitObject.StartTimeBindable.GetBoundCopy(); startTimeBindables[hitObject].ValueChanged += _ => { // For now we'll remove and re-add the hitobject. This is not optimal and can be improved if required. - beatmap.HitObjects.Remove(hitObject); + ((IList)beatmap.HitObjects).Remove(hitObject); - var insertionIndex = beatmap.HitObjects.FindLastIndex(h => h.StartTime <= hitObject.StartTime); - beatmap.HitObjects.Insert(insertionIndex + 1, hitObject); + var insertionIndex = findInsertionIndex(beatmap.HitObjects, hitObject.StartTime); + ((IList)beatmap.HitObjects).Insert(insertionIndex + 1, hitObject); StartTimeChanged?.Invoke(hitObject); }; } - /// - /// Adds a to this . - /// - /// The to add. - public void Add(HitObject hitObject) => Add((T)hitObject); + private int findInsertionIndex(IReadOnlyList list, double startTime) + { + for (int i = 0; i < list.Count; i++) + { + if (list[i].StartTime > startTime) + return i - 1; + } - /// - /// Removes a from this . - /// - /// The to add. - public void Remove(HitObject hitObject) => Remove((T)hitObject); + return list.Count - 1; + } } } diff --git a/osu.Game/Screens/Edit/IEditorBeatmap.cs b/osu.Game/Screens/Edit/IEditorBeatmap.cs index 3e3418ef79..df4efd289e 100644 --- a/osu.Game/Screens/Edit/IEditorBeatmap.cs +++ b/osu.Game/Screens/Edit/IEditorBeatmap.cs @@ -10,7 +10,7 @@ namespace osu.Game.Screens.Edit { /// /// Interface for the contained by the see . - /// Children of may resolve the beatmap via or . + /// Children of may resolve the beatmap via . /// public interface IEditorBeatmap : IBeatmap { @@ -25,17 +25,8 @@ namespace osu.Game.Screens.Edit event Action HitObjectRemoved; /// - /// Invoked when the start time of a in this was changed. + /// Invoked when the start time of a in this was changed. /// event Action StartTimeChanged; } - - /// - /// Interface for the contained by the see . - /// Children of may resolve the beatmap via or . - /// - public interface IEditorBeatmap : IEditorBeatmap, IBeatmap - where T : HitObject - { - } } From 651abd2e119520b9ff7d46f277040722342e8a33 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 27 Dec 2019 21:51:18 +0900 Subject: [PATCH 0624/1829] 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 a43c834406..6ff9416e47 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 3f64ce8dfd..806aadde84 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 c2d4e3ad8e..230ff01cce 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From 5efb7e801552d4a61bb407ad54728d05f9ab2c0d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 27 Dec 2019 23:01:52 +0900 Subject: [PATCH 0625/1829] Always update default value --- osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs index 1c26e5a720..c5b8a1bc73 100644 --- a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs @@ -82,12 +82,12 @@ namespace osu.Game.Rulesets.Mods userChangedSettings.TryAdd(bindable, false); + bindable.Default = beatmapDefault; + // users generally choose a difficulty setting and want it to stick across multiple beatmap changes. // we only want to value transfer if the user hasn't changed the value previously. if (!userChangedSettings[bindable]) - { - bindable.Value = bindable.Default = beatmapDefault; - } + bindable.Value = beatmapDefault; bindable.ValueChanged += _ => userChangedSettings[bindable] = !bindable.IsDefault; } From e2a55b79cac9c4bc9c5a95dbf2122baef3fd3f3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Fri, 27 Dec 2019 16:47:46 +0100 Subject: [PATCH 0626/1829] Refactor scrolling hit object scene To better demonstrate the desired effect of the fix introduced in 193e41f, refactor TestSceneScrollingHitObjects to contain two tests, one of which contains the pre-existing controls to test scroll algorithms, and the other aims to showcase the fix by setting scroll parameters appropriately. --- .../Gameplay/TestSceneScrollingHitObjects.cs | 60 +++++++++++++------ 1 file changed, 42 insertions(+), 18 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs index 7ab53b2d65..922001f3dd 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs @@ -3,12 +3,14 @@ using System; using System.Collections.Generic; +using System.Linq; using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Extensions.IEnumerableExtensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; +using osu.Framework.Threading; using osu.Game.Configuration; using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Objects; @@ -28,12 +30,16 @@ namespace osu.Game.Tests.Visual.Gameplay [Cached(typeof(IReadOnlyList))] private IReadOnlyList mods { get; set; } = Array.Empty(); + private const int spawn_interval = 5000; + private readonly ScrollingTestContainer[] scrollContainers = new ScrollingTestContainer[4]; private readonly TestPlayfield[] playfields = new TestPlayfield[4]; + private ScheduledDelegate hitObjectSpawnDelegate; - public TestSceneScrollingHitObjects() + [SetUp] + public void Setup() { - Add(new GridContainer + Child = new GridContainer { RelativeSizeAxes = Axes.Both, Content = new[] @@ -43,12 +49,14 @@ namespace osu.Game.Tests.Visual.Gameplay scrollContainers[0] = new ScrollingTestContainer(ScrollingDirection.Up) { RelativeSizeAxes = Axes.Both, - Child = playfields[0] = new TestPlayfield() + Child = playfields[0] = new TestPlayfield(), + TimeRange = spawn_interval }, scrollContainers[1] = new ScrollingTestContainer(ScrollingDirection.Down) { RelativeSizeAxes = Axes.Both, - Child = playfields[1] = new TestPlayfield() + Child = playfields[1] = new TestPlayfield(), + TimeRange = spawn_interval }, }, new Drawable[] @@ -56,35 +64,51 @@ namespace osu.Game.Tests.Visual.Gameplay scrollContainers[2] = new ScrollingTestContainer(ScrollingDirection.Left) { RelativeSizeAxes = Axes.Both, - Child = playfields[2] = new TestPlayfield() + Child = playfields[2] = new TestPlayfield(), + TimeRange = spawn_interval }, scrollContainers[3] = new ScrollingTestContainer(ScrollingDirection.Right) { RelativeSizeAxes = Axes.Both, - Child = playfields[3] = new TestPlayfield() + Child = playfields[3] = new TestPlayfield(), + TimeRange = spawn_interval } } } - }); + }; + setUpHitObjects(); + } + + private void setUpHitObjects() + { + scrollContainers.ForEach(c => c.ControlPoints.Add(new MultiplierControlPoint(0))); + + for (int i = 0; i <= spawn_interval; i += 1000) + addHitObject(Time.Current + i); + + hitObjectSpawnDelegate?.Cancel(); + hitObjectSpawnDelegate = Scheduler.AddDelayed(() => addHitObject(Time.Current + spawn_interval), 1000, true); + } + + [Test] + public void TestScrollAlgorithms() + { AddStep("Constant scroll", () => setScrollAlgorithm(ScrollVisualisationMethod.Constant)); AddStep("Overlapping scroll", () => setScrollAlgorithm(ScrollVisualisationMethod.Overlapping)); AddStep("Sequential scroll", () => setScrollAlgorithm(ScrollVisualisationMethod.Sequential)); - AddSliderStep("Time range", 100, 10000, 5000, v => scrollContainers.ForEach(c => c.TimeRange = v)); - AddStep("Add control point", () => addControlPoint(Time.Current + 5000)); + AddSliderStep("Time range", 100, 10000, spawn_interval, v => scrollContainers.Where(c => c != null).ForEach(c => c.TimeRange = v)); + AddStep("Add control point", () => addControlPoint(Time.Current + spawn_interval)); } - protected override void LoadComplete() + [Test] + public void TestScrollLifetime() { - base.LoadComplete(); - - scrollContainers.ForEach(c => c.ControlPoints.Add(new MultiplierControlPoint(0))); - - for (int i = 0; i <= 5000; i += 1000) - addHitObject(Time.Current + i); - - Scheduler.AddDelayed(() => addHitObject(Time.Current + 5000), 1000, true); + AddStep("Set constant scroll", () => setScrollAlgorithm(ScrollVisualisationMethod.Constant)); + // scroll container time range must be less than the rate of spawning hitobjects + // otherwise the hitobjects will spawn already partly visible on screen and look wrong + AddStep("Set time range", () => scrollContainers.ForEach(c => c.TimeRange = spawn_interval / 2.0)); } private void addHitObject(double time) From d828b31ae4b1582ef901f06499a83bd2eec3d3b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Fri, 27 Dec 2019 17:16:43 +0100 Subject: [PATCH 0627/1829] Schedule child mutation in test setup --- .../Visual/Gameplay/TestSceneScrollingHitObjects.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs index 922001f3dd..8629522dc2 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs @@ -37,7 +37,7 @@ namespace osu.Game.Tests.Visual.Gameplay private ScheduledDelegate hitObjectSpawnDelegate; [SetUp] - public void Setup() + public void Setup() => Schedule(() => { Child = new GridContainer { @@ -78,7 +78,7 @@ namespace osu.Game.Tests.Visual.Gameplay }; setUpHitObjects(); - } + }); private void setUpHitObjects() { From f2ff57d6b7bad548b99c4cc780e95cac9b15b687 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 28 Dec 2019 02:50:52 +0300 Subject: [PATCH 0628/1829] Update design of OverlayHeaderTabControl --- osu.Game/Overlays/OverlayHeader.cs | 5 ++--- osu.Game/Overlays/OverlayHeaderTabControl.cs | 21 ++++++++++++++++++++ osu.Game/Overlays/OverlayTabControl.cs | 16 +++++++++------ osu.Game/Overlays/Profile/ProfileHeader.cs | 4 ++-- 4 files changed, 35 insertions(+), 11 deletions(-) diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index 7a397d10c6..d406fc2b8a 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -89,9 +89,8 @@ namespace osu.Game.Overlays { Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, - RelativeSizeAxes = Axes.X, - Height = 30, - Padding = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN }, + Height = 35, + Margin = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN } } } }, diff --git a/osu.Game/Overlays/OverlayHeaderTabControl.cs b/osu.Game/Overlays/OverlayHeaderTabControl.cs index 7d0cdad6d8..1ddface2b7 100644 --- a/osu.Game/Overlays/OverlayHeaderTabControl.cs +++ b/osu.Game/Overlays/OverlayHeaderTabControl.cs @@ -2,22 +2,43 @@ // See the LICENCE file in the repository root for full licence text. using osu.Framework.Graphics.UserInterface; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osuTK; +using osu.Game.Graphics; namespace osu.Game.Overlays { public class OverlayHeaderTabControl : OverlayTabControl { + public OverlayHeaderTabControl() + { + BarHeight = 1; + RelativeSizeAxes = Axes.None; + AutoSizeAxes = Axes.X; + } + protected override TabItem CreateTabItem(string value) => new OverlayHeaderTabItem(value) { AccentColour = AccentColour, }; + protected override TabFillFlowContainer CreateTabFlow() => new TabFillFlowContainer + { + RelativeSizeAxes = Axes.Y, + AutoSizeAxes = Axes.X, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(5, 0), + }; + private class OverlayHeaderTabItem : OverlayTabItem { public OverlayHeaderTabItem(string value) : base(value) { Text.Text = value; + Text.Font = OsuFont.GetFont(size: 14); + Bar.ExpandedSize = 5; } } } diff --git a/osu.Game/Overlays/OverlayTabControl.cs b/osu.Game/Overlays/OverlayTabControl.cs index 4c396eabc1..812f8963c9 100644 --- a/osu.Game/Overlays/OverlayTabControl.cs +++ b/osu.Game/Overlays/OverlayTabControl.cs @@ -43,6 +43,11 @@ namespace osu.Game.Overlays set => TabContainer.Padding = value; } + protected float BarHeight + { + set => bar.Height = value; + } + protected OverlayTabControl() { TabContainer.Masking = false; @@ -63,8 +68,7 @@ namespace osu.Game.Overlays protected class OverlayTabItem : TabItem { - private readonly ExpandingBar bar; - + protected readonly ExpandingBar Bar; protected readonly OsuSpriteText Text; private Color4 accentColour; @@ -78,7 +82,7 @@ namespace osu.Game.Overlays return; accentColour = value; - bar.Colour = value; + Bar.Colour = value; updateState(); } @@ -99,7 +103,7 @@ namespace osu.Game.Overlays Anchor = Anchor.BottomLeft, Font = OsuFont.GetFont(), }, - bar = new ExpandingBar + Bar = new ExpandingBar { Anchor = Anchor.BottomCentre, ExpandedSize = 7.5f, @@ -149,13 +153,13 @@ namespace osu.Game.Overlays protected virtual void HoverAction() { - bar.Expand(); + Bar.Expand(); Text.FadeColour(Color4.White, 120, Easing.InQuad); } protected virtual void UnhoverAction() { - bar.Collapse(); + Bar.Collapse(); Text.FadeColour(AccentColour, 120, Easing.InQuad); } } diff --git a/osu.Game/Overlays/Profile/ProfileHeader.cs b/osu.Game/Overlays/Profile/ProfileHeader.cs index 4a792f7375..077941df6c 100644 --- a/osu.Game/Overlays/Profile/ProfileHeader.cs +++ b/osu.Game/Overlays/Profile/ProfileHeader.cs @@ -30,8 +30,8 @@ namespace osu.Game.Overlays.Profile User.ValueChanged += e => updateDisplay(e.NewValue); - TabControl.AddItem("Info"); - TabControl.AddItem("Modding"); + TabControl.AddItem("info"); + TabControl.AddItem("modding"); centreHeaderContainer.DetailsVisible.BindValueChanged(visible => detailHeaderContainer.Expanded = visible.NewValue, true); } From ac2280c4efee1fdb06b829ad32041102140e7197 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 28 Dec 2019 04:57:41 +0300 Subject: [PATCH 0629/1829] Implement BreadcrumbControlOverlayHeader --- .../UserInterface/BreadcrumbControl.cs | 17 +++++----- .../BreadcrumbControlOverlayHeader.cs | 10 ++++++ .../Overlays/Changelog/ChangelogHeader.cs | 4 +-- osu.Game/Overlays/News/NewsHeader.cs | 2 +- osu.Game/Overlays/OverlayHeader.cs | 16 ++++------ .../OverlayHeaderBreadcrumbControl.cs | 32 +++++++++++++++++++ osu.Game/Overlays/OverlayHeaderTabControl.cs | 3 ++ osu.Game/Overlays/Profile/ProfileHeader.cs | 2 +- osu.Game/Overlays/TabControlOverlayHeader.cs | 10 ++++++ 9 files changed, 75 insertions(+), 21 deletions(-) create mode 100644 osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs create mode 100644 osu.Game/Overlays/OverlayHeaderBreadcrumbControl.cs create mode 100644 osu.Game/Overlays/TabControlOverlayHeader.cs diff --git a/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs b/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs index 93ea6bbbe6..d96aa4b486 100644 --- a/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs +++ b/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs @@ -15,17 +15,18 @@ namespace osu.Game.Graphics.UserInterface public class BreadcrumbControl : OsuTabControl { private const float padding = 10; - private const float item_chevron_size = 10; + private float itemChevronSize; - protected override TabItem CreateTabItem(T value) => new BreadcrumbTabItem(value) + protected override TabItem CreateTabItem(T value) => new BreadcrumbTabItem(value, itemChevronSize) { AccentColour = AccentColour, }; - protected override float StripWidth() => base.StripWidth() - (padding + item_chevron_size); + protected override float StripWidth() => base.StripWidth() - (padding + itemChevronSize); - public BreadcrumbControl() + public BreadcrumbControl(float itemChevronSize = 10) { + this.itemChevronSize = itemChevronSize; Height = 32; TabContainer.Spacing = new Vector2(padding, 0f); Current.ValueChanged += index => @@ -41,7 +42,7 @@ namespace osu.Game.Graphics.UserInterface }; } - private class BreadcrumbTabItem : OsuTabItem, IStateful + protected class BreadcrumbTabItem : OsuTabItem, IStateful { public event Action StateChanged; @@ -85,17 +86,17 @@ namespace osu.Game.Graphics.UserInterface public override void Show() => State = Visibility.Visible; - public BreadcrumbTabItem(T value) + public BreadcrumbTabItem(T value, float itemChevronSize) : base(value) { Text.Font = Text.Font.With(size: 18); Text.Margin = new MarginPadding { Vertical = 8 }; - Padding = new MarginPadding { Right = padding + item_chevron_size }; + Padding = new MarginPadding { Right = padding + itemChevronSize }; Add(Chevron = new SpriteIcon { Anchor = Anchor.CentreRight, Origin = Anchor.CentreLeft, - Size = new Vector2(item_chevron_size), + Size = new Vector2(itemChevronSize), Icon = FontAwesome.Solid.ChevronRight, Margin = new MarginPadding { Left = padding }, Alpha = 0f, diff --git a/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs b/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs new file mode 100644 index 0000000000..10664fc5be --- /dev/null +++ b/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs @@ -0,0 +1,10 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +namespace osu.Game.Overlays +{ + public abstract class BreadcrumbControlOverlayHeader : OverlayHeader + { + protected override OverlayHeaderBreadcrumbControl CreateControl() => new OverlayHeaderBreadcrumbControl(); + } +} diff --git a/osu.Game/Overlays/Changelog/ChangelogHeader.cs b/osu.Game/Overlays/Changelog/ChangelogHeader.cs index 3b6f0d778d..ddf07e4b50 100644 --- a/osu.Game/Overlays/Changelog/ChangelogHeader.cs +++ b/osu.Game/Overlays/Changelog/ChangelogHeader.cs @@ -15,7 +15,7 @@ using osu.Game.Online.API.Requests.Responses; namespace osu.Game.Overlays.Changelog { - public class ChangelogHeader : OverlayHeader + public class ChangelogHeader : BreadcrumbControlOverlayHeader { public readonly Bindable Current = new Bindable(); @@ -23,7 +23,7 @@ namespace osu.Game.Overlays.Changelog public UpdateStreamBadgeArea Streams; - private const string listing_string = "Listing"; + private const string listing_string = "listing"; public ChangelogHeader() { diff --git a/osu.Game/Overlays/News/NewsHeader.cs b/osu.Game/Overlays/News/NewsHeader.cs index e3cf58ed0a..2cbe2fa04e 100644 --- a/osu.Game/Overlays/News/NewsHeader.cs +++ b/osu.Game/Overlays/News/NewsHeader.cs @@ -12,7 +12,7 @@ using System; namespace osu.Game.Overlays.News { - public class NewsHeader : OverlayHeader + public class NewsHeader : BreadcrumbControlOverlayHeader { private const string front_page_string = "frontpage"; diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index d406fc2b8a..da7cfd0ce7 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -5,14 +5,16 @@ using JetBrains.Annotations; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; +using osu.Framework.Graphics.UserInterface; using osu.Game.Graphics.UserInterface; using osuTK.Graphics; namespace osu.Game.Overlays { - public abstract class OverlayHeader : Container + public abstract class OverlayHeader : Container + where TModel : TabControl { - protected readonly OverlayHeaderTabControl TabControl; + protected readonly TModel TabControl; private readonly Box titleBackground; private readonly Box controlBackground; @@ -85,13 +87,7 @@ namespace osu.Game.Overlays RelativeSizeAxes = Axes.Both, Colour = Color4.Gray, }, - TabControl = new OverlayHeaderTabControl - { - Anchor = Anchor.BottomLeft, - Origin = Anchor.BottomLeft, - Height = 35, - Margin = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN } - } + TabControl = CreateControl().With(control => control.Margin = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN }) } }, CreateContent() @@ -105,5 +101,7 @@ namespace osu.Game.Overlays protected virtual Drawable CreateContent() => new Container(); protected abstract ScreenTitle CreateTitle(); + + protected abstract TModel CreateControl(); } } diff --git a/osu.Game/Overlays/OverlayHeaderBreadcrumbControl.cs b/osu.Game/Overlays/OverlayHeaderBreadcrumbControl.cs new file mode 100644 index 0000000000..d772aa0d46 --- /dev/null +++ b/osu.Game/Overlays/OverlayHeaderBreadcrumbControl.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 osu.Game.Graphics.UserInterface; +using osu.Framework.Graphics; +using osu.Framework.Graphics.UserInterface; + +namespace osu.Game.Overlays +{ + public class OverlayHeaderBreadcrumbControl : BreadcrumbControl + { + private const float item_chevron_size = 8; + + public OverlayHeaderBreadcrumbControl() + : base(item_chevron_size) + { + RelativeSizeAxes = Axes.X; + } + + protected override TabItem CreateTabItem(string value) => new ControlTabItem(value, item_chevron_size); + + private class ControlTabItem : BreadcrumbTabItem + { + public ControlTabItem(string value, float itemChevronSize) + : base(value, itemChevronSize) + { + Text.Font = Text.Font.With(size: 14); + Chevron.Y = 3; + } + } + } +} diff --git a/osu.Game/Overlays/OverlayHeaderTabControl.cs b/osu.Game/Overlays/OverlayHeaderTabControl.cs index 1ddface2b7..7e11e066c7 100644 --- a/osu.Game/Overlays/OverlayHeaderTabControl.cs +++ b/osu.Game/Overlays/OverlayHeaderTabControl.cs @@ -16,6 +16,9 @@ namespace osu.Game.Overlays BarHeight = 1; RelativeSizeAxes = Axes.None; AutoSizeAxes = Axes.X; + Anchor = Anchor.BottomLeft; + Origin = Anchor.BottomLeft; + Height = 35; } protected override TabItem CreateTabItem(string value) => new OverlayHeaderTabItem(value) diff --git a/osu.Game/Overlays/Profile/ProfileHeader.cs b/osu.Game/Overlays/Profile/ProfileHeader.cs index 077941df6c..59e64dfc26 100644 --- a/osu.Game/Overlays/Profile/ProfileHeader.cs +++ b/osu.Game/Overlays/Profile/ProfileHeader.cs @@ -15,7 +15,7 @@ using osu.Game.Users; namespace osu.Game.Overlays.Profile { - public class ProfileHeader : OverlayHeader + public class ProfileHeader : TabControlOverlayHeader { private UserCoverBackground coverContainer; diff --git a/osu.Game/Overlays/TabControlOverlayHeader.cs b/osu.Game/Overlays/TabControlOverlayHeader.cs new file mode 100644 index 0000000000..8570bf63b8 --- /dev/null +++ b/osu.Game/Overlays/TabControlOverlayHeader.cs @@ -0,0 +1,10 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +namespace osu.Game.Overlays +{ + public abstract class TabControlOverlayHeader : OverlayHeader + { + protected override OverlayHeaderTabControl CreateControl() => new OverlayHeaderTabControl(); + } +} From 7af622426a1f208142b1fe39afc4a18faaeaa5b0 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 28 Dec 2019 05:11:28 +0300 Subject: [PATCH 0630/1829] Make field readonly --- osu.Game/Graphics/UserInterface/BreadcrumbControl.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs b/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs index d96aa4b486..6014840a45 100644 --- a/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs +++ b/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs @@ -15,7 +15,7 @@ namespace osu.Game.Graphics.UserInterface public class BreadcrumbControl : OsuTabControl { private const float padding = 10; - private float itemChevronSize; + private readonly float itemChevronSize; protected override TabItem CreateTabItem(T value) => new BreadcrumbTabItem(value, itemChevronSize) { From bf162f148e320f93cc85456ee780383c030878a2 Mon Sep 17 00:00:00 2001 From: mcendu Date: Sat, 28 Dec 2019 13:48:10 +0800 Subject: [PATCH 0631/1829] Move mania stage hint to its own class --- .../UI/Components/ColumnHitObjectArea.cs | 108 ++++++++++++------ .../UI/Components/StageHint.cs | 14 +++ 2 files changed, 90 insertions(+), 32 deletions(-) create mode 100644 osu.Game.Rulesets.Mania/UI/Components/StageHint.cs diff --git a/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs b/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs index 386bcbb724..dde718d5ba 100644 --- a/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs +++ b/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs @@ -22,26 +22,15 @@ namespace osu.Game.Rulesets.Mania.UI.Components private readonly IBindable direction = new Bindable(); - private readonly Container hitTargetLine; - private readonly Drawable hitTargetBar; + private readonly Drawable stageHint; public ColumnHitObjectArea(HitObjectContainer hitObjectContainer) { - InternalChildren = new[] + InternalChildren = new Drawable[] { - hitTargetBar = new Box + stageHint = new DefaultStageHint { RelativeSizeAxes = Axes.X, - Height = NotePiece.NOTE_HEIGHT, - Alpha = 0.6f, - Colour = Color4.Black - }, - hitTargetLine = new Container - { - RelativeSizeAxes = Axes.X, - Height = hit_target_bar_height, - Masking = true, - Child = new Box { RelativeSizeAxes = Axes.Both } }, hitObjectContainer }; @@ -55,17 +44,10 @@ namespace osu.Game.Rulesets.Mania.UI.Components { Anchor anchor = dir.NewValue == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft; - hitTargetBar.Anchor = hitTargetBar.Origin = anchor; - hitTargetLine.Anchor = hitTargetLine.Origin = anchor; + stageHint.Anchor = stageHint.Origin = anchor; }, true); } - protected override void LoadComplete() - { - base.LoadComplete(); - updateColours(); - } - private Color4 accentColour; public Color4 AccentColour @@ -77,22 +59,84 @@ namespace osu.Game.Rulesets.Mania.UI.Components return; accentColour = value; - - updateColours(); } } - private void updateColours() + private class DefaultStageHint : StageHint { - if (!IsLoaded) - return; + private readonly IBindable direction = new Bindable(); - hitTargetLine.EdgeEffect = new EdgeEffectParameters + private readonly Container hitTargetLine; + private readonly Drawable hitTargetBar; + + public DefaultStageHint() { - Type = EdgeEffectType.Glow, - Radius = 5, - Colour = accentColour.Opacity(0.5f), - }; + InternalChildren = new[] + { + hitTargetBar = new Box + { + RelativeSizeAxes = Axes.X, + Height = NotePiece.NOTE_HEIGHT, + Alpha = 0.6f, + Colour = Color4.Black + }, + hitTargetLine = new Container + { + RelativeSizeAxes = Axes.X, + Height = hit_target_bar_height, + Masking = true, + Child = new Box { RelativeSizeAxes = Axes.Both } + }, + }; + } + + [BackgroundDependencyLoader] + private void load(IScrollingInfo scrollingInfo) + { + direction.BindTo(scrollingInfo.Direction); + direction.BindValueChanged(dir => + { + Anchor anchor = dir.NewValue == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft; + + hitTargetBar.Anchor = hitTargetBar.Origin = anchor; + hitTargetLine.Anchor = hitTargetLine.Origin = anchor; + }, true); + } + + protected override void LoadComplete() + { + base.LoadComplete(); + updateColours(); + } + + private Color4 accentColour; + + public override Color4 AccentColour + { + get => accentColour; + set + { + if (accentColour == value) + return; + + accentColour = value; + + updateColours(); + } + } + + private void updateColours() + { + if (!IsLoaded) + return; + + hitTargetLine.EdgeEffect = new EdgeEffectParameters + { + Type = EdgeEffectType.Glow, + Radius = 5, + Colour = accentColour.Opacity(0.5f), + }; + } } } } diff --git a/osu.Game.Rulesets.Mania/UI/Components/StageHint.cs b/osu.Game.Rulesets.Mania/UI/Components/StageHint.cs new file mode 100644 index 0000000000..9574f77eb5 --- /dev/null +++ b/osu.Game.Rulesets.Mania/UI/Components/StageHint.cs @@ -0,0 +1,14 @@ +// 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.Containers; +using osu.Game.Graphics; +using osuTK.Graphics; + +namespace osu.Game.Rulesets.Mania.UI.Components +{ + public abstract class StageHint : CompositeDrawable, IHasAccentColour + { + public abstract Color4 AccentColour { get; set; } + } +} From 5d2b5cc950b5608cdf369c1d3e226733a7648689 Mon Sep 17 00:00:00 2001 From: mcendu Date: Sat, 28 Dec 2019 14:05:46 +0800 Subject: [PATCH 0632/1829] correct type of field stageHint --- osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs b/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs index dde718d5ba..6bfb2b89aa 100644 --- a/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs +++ b/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs @@ -22,7 +22,7 @@ namespace osu.Game.Rulesets.Mania.UI.Components private readonly IBindable direction = new Bindable(); - private readonly Drawable stageHint; + private readonly StageHint stageHint; public ColumnHitObjectArea(HitObjectContainer hitObjectContainer) { @@ -59,6 +59,8 @@ namespace osu.Game.Rulesets.Mania.UI.Components return; accentColour = value; + + stageHint.AccentColour = accentColour; } } From 1b3358166796da218c09217ed7b8a7372f1d9736 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Sat, 28 Dec 2019 21:13:18 +0800 Subject: [PATCH 0633/1829] Construct DllResourceStore with assemblies --- osu.Game.Rulesets.Osu.Tests/SkinnableTestScene.cs | 2 +- osu.Game.Tests/Resources/TestResources.cs | 5 +++-- osu.Game.Tournament/TournamentGameBase.cs | 2 +- osu.Game/OsuGameBase.cs | 3 ++- osu.Game/Rulesets/Ruleset.cs | 2 +- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/osu.Game.Rulesets.Osu.Tests/SkinnableTestScene.cs b/osu.Game.Rulesets.Osu.Tests/SkinnableTestScene.cs index 2fad3bd04f..d4c3000d3f 100644 --- a/osu.Game.Rulesets.Osu.Tests/SkinnableTestScene.cs +++ b/osu.Game.Rulesets.Osu.Tests/SkinnableTestScene.cs @@ -29,7 +29,7 @@ namespace osu.Game.Rulesets.Osu.Tests [BackgroundDependencyLoader] private void load(AudioManager audio, SkinManager skinManager) { - var dllStore = new DllResourceStore("osu.Game.Rulesets.Osu.Tests.dll"); + var dllStore = new DllResourceStore(typeof(SkinnableTestScene).Assembly); metricsSkin = new TestLegacySkin(new SkinInfo(), new NamespacedResourceStore(dllStore, "Resources/metrics_skin"), audio, true); defaultSkin = skinManager.GetSkin(DefaultLegacySkin.Info); diff --git a/osu.Game.Tests/Resources/TestResources.cs b/osu.Game.Tests/Resources/TestResources.cs index a57405628a..be9f1dd9b0 100644 --- a/osu.Game.Tests/Resources/TestResources.cs +++ b/osu.Game.Tests/Resources/TestResources.cs @@ -4,16 +4,17 @@ using System.IO; using NUnit.Framework; using osu.Framework.IO.Stores; +using osu.Game.Resources; namespace osu.Game.Tests.Resources { public static class TestResources { - public static DllResourceStore GetStore() => new DllResourceStore("osu.Game.Tests.dll"); + public static DllResourceStore GetStore() => new DllResourceStore(typeof(TestResources).Assembly); public static Stream OpenResource(string name) => GetStore().GetStream($"Resources/{name}"); - public static Stream GetTestBeatmapStream(bool virtualTrack = false) => new DllResourceStore("osu.Game.Resources.dll").GetStream($"Beatmaps/241526 Soleily - Renatus{(virtualTrack ? "_virtual" : "")}.osz"); + public static Stream GetTestBeatmapStream(bool virtualTrack = false) => new DllResourceStore(OsuResources.ResourceAssembly).GetStream($"Beatmaps/241526 Soleily - Renatus{(virtualTrack ? "_virtual" : "")}.osz"); public static string GetTestBeatmapForImport(bool virtualTrack = false) { diff --git a/osu.Game.Tournament/TournamentGameBase.cs b/osu.Game.Tournament/TournamentGameBase.cs index 4d7abfe272..bd91ad9704 100644 --- a/osu.Game.Tournament/TournamentGameBase.cs +++ b/osu.Game.Tournament/TournamentGameBase.cs @@ -52,7 +52,7 @@ namespace osu.Game.Tournament [BackgroundDependencyLoader] private void load(Storage storage, FrameworkConfigManager frameworkConfig) { - Resources.AddStore(new DllResourceStore(@"osu.Game.Tournament.dll")); + Resources.AddStore(new DllResourceStore(typeof(TournamentGameBase).Assembly)); AddFont(Resources, @"Resources/Fonts/Aquatico-Regular"); AddFont(Resources, @"Resources/Fonts/Aquatico-Light"); diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs index 22b8d9d012..0819642d2d 100644 --- a/osu.Game/OsuGameBase.cs +++ b/osu.Game/OsuGameBase.cs @@ -29,6 +29,7 @@ using osu.Game.Database; using osu.Game.Input; using osu.Game.Input.Bindings; using osu.Game.IO; +using osu.Game.Resources; using osu.Game.Rulesets; using osu.Game.Rulesets.Mods; using osu.Game.Scoring; @@ -125,7 +126,7 @@ namespace osu.Game [BackgroundDependencyLoader] private void load() { - Resources.AddStore(new DllResourceStore(@"osu.Game.Resources.dll")); + Resources.AddStore(new DllResourceStore(OsuResources.ResourceAssembly)); dependencies.Cache(contextFactory = new DatabaseContextFactory(Storage)); diff --git a/osu.Game/Rulesets/Ruleset.cs b/osu.Game/Rulesets/Ruleset.cs index 67ec6d15ea..693d85c574 100644 --- a/osu.Game/Rulesets/Ruleset.cs +++ b/osu.Game/Rulesets/Ruleset.cs @@ -104,7 +104,7 @@ namespace osu.Game.Rulesets public virtual Drawable CreateIcon() => new SpriteIcon { Icon = FontAwesome.Solid.QuestionCircle }; - public virtual IResourceStore CreateResourceStore() => new NamespacedResourceStore(new DllResourceStore(GetType().Assembly.Location), @"Resources"); + public virtual IResourceStore CreateResourceStore() => new NamespacedResourceStore(new DllResourceStore(GetType().Assembly), @"Resources"); public abstract string Description { get; } From e8bcb52612d13667ef93842d570384c225297e43 Mon Sep 17 00:00:00 2001 From: Roman Kapustin Date: Sat, 28 Dec 2019 18:07:55 +0300 Subject: [PATCH 0634/1829] Set UserAgent for API requests --- osu.Game/Online/API/APIRequest.cs | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/osu.Game/Online/API/APIRequest.cs b/osu.Game/Online/API/APIRequest.cs index fcbd4d314a..0956c749a2 100644 --- a/osu.Game/Online/API/APIRequest.cs +++ b/osu.Game/Online/API/APIRequest.cs @@ -14,7 +14,7 @@ namespace osu.Game.Online.API /// Type of the response (used for deserialisation). public abstract class APIRequest : APIRequest { - protected override WebRequest CreateWebRequest() => new JsonWebRequest(Uri); + protected override WebRequest CreateWebRequest() => new OsuJsonWebRequest(Uri); public T Result => ((JsonWebRequest)WebRequest).ResponseObject; @@ -30,6 +30,16 @@ namespace osu.Game.Online.API /// This will be scheduled to the API's internal scheduler (run on update thread automatically). /// public new event APISuccessHandler Success; + + private class OsuJsonWebRequest : JsonWebRequest + { + public OsuJsonWebRequest(string uri) + : base(uri) + { + } + + protected override string UserAgent => "osu!"; + } } /// @@ -39,7 +49,7 @@ namespace osu.Game.Online.API { protected abstract string Target { get; } - protected virtual WebRequest CreateWebRequest() => new WebRequest(Uri); + protected virtual WebRequest CreateWebRequest() => new OsuWebRequest(Uri); protected virtual string Uri => $@"{API.Endpoint}/api/v2/{Target}"; @@ -152,6 +162,16 @@ namespace osu.Game.Online.API [JsonProperty("error")] public string ErrorMessage { get; set; } } + + private class OsuWebRequest : WebRequest + { + public OsuWebRequest(string uri) + : base(uri) + { + } + + protected override string UserAgent => "osu!"; + } } public class APIException : InvalidOperationException From b3d32710df2cf43bc3a969f88ea43b6cc7a5ed30 Mon Sep 17 00:00:00 2001 From: Viktor Rosvall Date: Sun, 29 Dec 2019 00:19:51 +0100 Subject: [PATCH 0635/1829] Centered button mods by adding padding to FillFlowContainer --- osu.Game/Screens/Select/FooterButtonMods.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/osu.Game/Screens/Select/FooterButtonMods.cs b/osu.Game/Screens/Select/FooterButtonMods.cs index 8419ee0c2a..bb733f10ed 100644 --- a/osu.Game/Screens/Select/FooterButtonMods.cs +++ b/osu.Game/Screens/Select/FooterButtonMods.cs @@ -54,11 +54,10 @@ namespace osu.Game.Screens.Select Anchor = Anchor.Centre, Origin = Anchor.Centre, Font = OsuFont.GetFont(weight: FontWeight.Bold), - Margin = new MarginPadding { Right = 10 } } }, AutoSizeAxes = Axes.Both, - Margin = new MarginPadding { Left = 70 } + Margin = new MarginPadding { Left = 70, Right = 15 } }); } From cb2b89a2c9197fa56aca6d86c0f3429a14bef27a Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 29 Dec 2019 03:01:14 +0300 Subject: [PATCH 0636/1829] Fix crashing TextSceneMedalOverlay --- osu.Game/Overlays/MedalOverlay.cs | 4 ++-- osu.Game/Overlays/MedalSplash/DrawableMedal.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/MedalOverlay.cs b/osu.Game/Overlays/MedalOverlay.cs index 1f15c773f4..5da573e81a 100644 --- a/osu.Game/Overlays/MedalOverlay.cs +++ b/osu.Game/Overlays/MedalOverlay.cs @@ -155,12 +155,12 @@ namespace osu.Game.Overlays Radius = 50, }; - disc.Add(drawableMedal = new DrawableMedal(medal) + LoadComponentAsync(drawableMedal = new DrawableMedal(medal) { Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, RelativeSizeAxes = Axes.Both, - }); + }, disc.Add); } protected override void LoadComplete() diff --git a/osu.Game/Overlays/MedalSplash/DrawableMedal.cs b/osu.Game/Overlays/MedalSplash/DrawableMedal.cs index a9b4bed334..3cf7befb45 100644 --- a/osu.Game/Overlays/MedalSplash/DrawableMedal.cs +++ b/osu.Game/Overlays/MedalSplash/DrawableMedal.cs @@ -51,7 +51,7 @@ namespace osu.Game.Overlays.MedalSplash { Anchor = Anchor.Centre, Origin = Anchor.Centre, - Scale = new Vector2(0.81f), + Scale = new Vector2(0.41f), }, medalGlow = new Sprite { From cdfbe96e9bdceecc7f04ff2262e23b4e207720e7 Mon Sep 17 00:00:00 2001 From: mcendu Date: Sun, 29 Dec 2019 14:52:51 +0800 Subject: [PATCH 0637/1829] Make AccentColour of StageHint virtual --- osu.Game.Rulesets.Mania/UI/Components/StageHint.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Mania/UI/Components/StageHint.cs b/osu.Game.Rulesets.Mania/UI/Components/StageHint.cs index 9574f77eb5..813a6928c9 100644 --- a/osu.Game.Rulesets.Mania/UI/Components/StageHint.cs +++ b/osu.Game.Rulesets.Mania/UI/Components/StageHint.cs @@ -9,6 +9,6 @@ namespace osu.Game.Rulesets.Mania.UI.Components { public abstract class StageHint : CompositeDrawable, IHasAccentColour { - public abstract Color4 AccentColour { get; set; } + public virtual Color4 AccentColour { get; set; } } } From bf463fe5e0c13f2d07b257a2a21060620cb672b5 Mon Sep 17 00:00:00 2001 From: Viktor Rosvall Date: Sun, 29 Dec 2019 08:57:14 +0100 Subject: [PATCH 0638/1829] adjusted the margin values --- .../Visual/UserInterface/TestSceneFooterButtonMods.cs | 7 +++++++ osu.Game/Screens/Select/FooterButtonMods.cs | 1 + 2 files changed, 8 insertions(+) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs index 6eb621ca3b..de67968fbc 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs @@ -45,6 +45,13 @@ namespace osu.Game.Tests.Visual.UserInterface AddStep(@"Add multiple Mods", () => changeMods(mutlipleIncrementMods)); AddAssert(@"Check multiple mod multiplier", () => assertModsMultiplier(mutlipleIncrementMods)); } + + [Test] + public void Temporary() + { + var hiddenMod = new Mod[] { new OsuModRelax() }; + AddStep(@"Add Hidden", () => changeMods(hiddenMod)); + } [Test] public void TestDecrementMultiplier() diff --git a/osu.Game/Screens/Select/FooterButtonMods.cs b/osu.Game/Screens/Select/FooterButtonMods.cs index bb733f10ed..d533d5444c 100644 --- a/osu.Game/Screens/Select/FooterButtonMods.cs +++ b/osu.Game/Screens/Select/FooterButtonMods.cs @@ -54,6 +54,7 @@ namespace osu.Game.Screens.Select Anchor = Anchor.Centre, Origin = Anchor.Centre, Font = OsuFont.GetFont(weight: FontWeight.Bold), + Margin = new MarginPadding { Right = 6 } } }, AutoSizeAxes = Axes.Both, From 875a25c5297b0797b84af4974c2bf5e0d68ed6c6 Mon Sep 17 00:00:00 2001 From: Viktor Rosvall Date: Sun, 29 Dec 2019 08:57:14 +0100 Subject: [PATCH 0639/1829] adjusted the margin values --- osu.Game/Screens/Select/FooterButtonMods.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game/Screens/Select/FooterButtonMods.cs b/osu.Game/Screens/Select/FooterButtonMods.cs index bb733f10ed..d533d5444c 100644 --- a/osu.Game/Screens/Select/FooterButtonMods.cs +++ b/osu.Game/Screens/Select/FooterButtonMods.cs @@ -54,6 +54,7 @@ namespace osu.Game.Screens.Select Anchor = Anchor.Centre, Origin = Anchor.Centre, Font = OsuFont.GetFont(weight: FontWeight.Bold), + Margin = new MarginPadding { Right = 6 } } }, AutoSizeAxes = Axes.Both, From e85910c4e465ab174ee8d328b75442d8886c8cb9 Mon Sep 17 00:00:00 2001 From: Viktor Rosvall Date: Sun, 29 Dec 2019 09:18:27 +0100 Subject: [PATCH 0640/1829] removed unnecessary test code --- .../Visual/UserInterface/TestSceneFooterButtonMods.cs | 7 ------- 1 file changed, 7 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs index de67968fbc..6eb621ca3b 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs @@ -45,13 +45,6 @@ namespace osu.Game.Tests.Visual.UserInterface AddStep(@"Add multiple Mods", () => changeMods(mutlipleIncrementMods)); AddAssert(@"Check multiple mod multiplier", () => assertModsMultiplier(mutlipleIncrementMods)); } - - [Test] - public void Temporary() - { - var hiddenMod = new Mod[] { new OsuModRelax() }; - AddStep(@"Add Hidden", () => changeMods(hiddenMod)); - } [Test] public void TestDecrementMultiplier() From 61fb9f5613dc47c07a96b88eba4f40f23efeb0c2 Mon Sep 17 00:00:00 2001 From: mcendu Date: Sun, 29 Dec 2019 23:18:50 +0800 Subject: [PATCH 0641/1829] Remove class StageHint and usage --- .../UI/Components/ColumnHitObjectArea.cs | 9 +++++---- osu.Game.Rulesets.Mania/UI/Components/StageHint.cs | 14 -------------- 2 files changed, 5 insertions(+), 18 deletions(-) delete mode 100644 osu.Game.Rulesets.Mania/UI/Components/StageHint.cs diff --git a/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs b/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs index 6bfb2b89aa..494da6c61b 100644 --- a/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs +++ b/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs @@ -22,11 +22,11 @@ namespace osu.Game.Rulesets.Mania.UI.Components private readonly IBindable direction = new Bindable(); - private readonly StageHint stageHint; + private readonly Drawable stageHint; public ColumnHitObjectArea(HitObjectContainer hitObjectContainer) { - InternalChildren = new Drawable[] + InternalChildren = new[] { stageHint = new DefaultStageHint { @@ -60,11 +60,12 @@ namespace osu.Game.Rulesets.Mania.UI.Components accentColour = value; - stageHint.AccentColour = accentColour; + if (stageHint is IHasAccentColour colouredHitTarget) + colouredHitTarget.AccentColour = accentColour; } } - private class DefaultStageHint : StageHint + private class DefaultStageHint : CompositeDrawable, IHasAccentColour { private readonly IBindable direction = new Bindable(); diff --git a/osu.Game.Rulesets.Mania/UI/Components/StageHint.cs b/osu.Game.Rulesets.Mania/UI/Components/StageHint.cs deleted file mode 100644 index 813a6928c9..0000000000 --- a/osu.Game.Rulesets.Mania/UI/Components/StageHint.cs +++ /dev/null @@ -1,14 +0,0 @@ -// 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.Containers; -using osu.Game.Graphics; -using osuTK.Graphics; - -namespace osu.Game.Rulesets.Mania.UI.Components -{ - public abstract class StageHint : CompositeDrawable, IHasAccentColour - { - public virtual Color4 AccentColour { get; set; } - } -} From 51000765ddca9c9f4b4a60605e10bd554e74c111 Mon Sep 17 00:00:00 2001 From: mcendu Date: Sun, 29 Dec 2019 23:29:00 +0800 Subject: [PATCH 0642/1829] remove override --- osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs b/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs index 494da6c61b..c78023a58b 100644 --- a/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs +++ b/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs @@ -114,7 +114,7 @@ namespace osu.Game.Rulesets.Mania.UI.Components private Color4 accentColour; - public override Color4 AccentColour + public Color4 AccentColour { get => accentColour; set From 20c5748342efacb4d36c6d971d9e9bcdf689d650 Mon Sep 17 00:00:00 2001 From: mcendu Date: Sun, 29 Dec 2019 23:37:28 +0800 Subject: [PATCH 0643/1829] Use hitTarget in place of stageHint --- .../UI/Components/ColumnHitObjectArea.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs b/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs index c78023a58b..ee2cec1bbd 100644 --- a/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs +++ b/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs @@ -22,13 +22,13 @@ namespace osu.Game.Rulesets.Mania.UI.Components private readonly IBindable direction = new Bindable(); - private readonly Drawable stageHint; + private readonly Drawable hitTarget; public ColumnHitObjectArea(HitObjectContainer hitObjectContainer) { InternalChildren = new[] { - stageHint = new DefaultStageHint + hitTarget = new DefaultHitTarget { RelativeSizeAxes = Axes.X, }, @@ -44,7 +44,7 @@ namespace osu.Game.Rulesets.Mania.UI.Components { Anchor anchor = dir.NewValue == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft; - stageHint.Anchor = stageHint.Origin = anchor; + hitTarget.Anchor = hitTarget.Origin = anchor; }, true); } @@ -60,19 +60,19 @@ namespace osu.Game.Rulesets.Mania.UI.Components accentColour = value; - if (stageHint is IHasAccentColour colouredHitTarget) + if (hitTarget is IHasAccentColour colouredHitTarget) colouredHitTarget.AccentColour = accentColour; } } - private class DefaultStageHint : CompositeDrawable, IHasAccentColour + private class DefaultHitTarget : CompositeDrawable, IHasAccentColour { private readonly IBindable direction = new Bindable(); private readonly Container hitTargetLine; private readonly Drawable hitTargetBar; - public DefaultStageHint() + public DefaultHitTarget() { InternalChildren = new[] { From 39d77386a809c4900600e97db86fe8558e18b52a Mon Sep 17 00:00:00 2001 From: Joehu Date: Sun, 29 Dec 2019 10:49:28 -0800 Subject: [PATCH 0644/1829] Fix context menus not showing on social panels --- .../SearchableList/SearchableListOverlay.cs | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/osu.Game/Overlays/SearchableList/SearchableListOverlay.cs b/osu.Game/Overlays/SearchableList/SearchableListOverlay.cs index 37478d902b..5975e94ffc 100644 --- a/osu.Game/Overlays/SearchableList/SearchableListOverlay.cs +++ b/osu.Game/Overlays/SearchableList/SearchableListOverlay.cs @@ -9,6 +9,7 @@ using osu.Framework.Graphics.Shapes; using osu.Framework.Input.Events; using osu.Game.Graphics.Backgrounds; using osu.Game.Graphics.Containers; +using osu.Game.Graphics.Cursor; namespace osu.Game.Overlays.SearchableList { @@ -61,21 +62,20 @@ namespace osu.Game.Overlays.SearchableList scrollContainer = new Container { RelativeSizeAxes = Axes.Both, - Children = new[] + Child = new OsuContextMenuContainer { - new OsuScrollContainer + RelativeSizeAxes = Axes.Both, + Masking = true, + Child = new OsuScrollContainer { RelativeSizeAxes = Axes.Both, ScrollbarVisible = false, - Children = new[] + Child = ScrollFlow = new FillFlowContainer { - ScrollFlow = new FillFlowContainer - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Padding = new MarginPadding { Horizontal = WIDTH_PADDING, Bottom = 50 }, - Direction = FillDirection.Vertical, - }, + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Padding = new MarginPadding { Horizontal = WIDTH_PADDING, Bottom = 50 }, + Direction = FillDirection.Vertical, }, }, }, From bcf7156882aeb0dd86fbd67a1feba7166e76d218 Mon Sep 17 00:00:00 2001 From: Joehu Date: Sun, 29 Dec 2019 11:19:46 -0800 Subject: [PATCH 0645/1829] Add context menu on direct panels --- osu.Game/Overlays/Direct/DirectPanel.cs | 27 +++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/osu.Game/Overlays/Direct/DirectPanel.cs b/osu.Game/Overlays/Direct/DirectPanel.cs index c1c5113c5e..0ec0466580 100644 --- a/osu.Game/Overlays/Direct/DirectPanel.cs +++ b/osu.Game/Overlays/Direct/DirectPanel.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.Collections.Generic; using System.Diagnostics; using System.Linq; @@ -9,21 +10,25 @@ using osu.Framework.Bindables; using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Cursor; using osu.Framework.Graphics.Effects; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Sprites; +using osu.Framework.Graphics.UserInterface; using osu.Framework.Input.Events; using osu.Game.Audio; using osu.Game.Beatmaps; using osu.Game.Beatmaps.Drawables; using osu.Game.Graphics; +using osu.Game.Graphics.Containers; using osu.Game.Graphics.Sprites; +using osu.Game.Graphics.UserInterface; using osuTK; using osuTK.Graphics; namespace osu.Game.Overlays.Direct { - public abstract class DirectPanel : Container + public abstract class DirectPanel : OsuClickableContainer, IHasContextMenu { public readonly BeatmapSetInfo SetInfo; @@ -44,6 +49,8 @@ namespace osu.Game.Overlays.Direct protected override Container Content => content; + protected Action ViewBeatmap; + protected DirectPanel(BeatmapSetInfo setInfo) { Debug.Assert(setInfo.OnlineBeatmapSetID != null); @@ -88,6 +95,12 @@ namespace osu.Game.Overlays.Direct }, } }); + + Action = ViewBeatmap = () => + { + Debug.Assert(SetInfo.OnlineBeatmapSetID != null); + beatmapSetOverlay?.FetchAndShowBeatmapSet(SetInfo.OnlineBeatmapSetID.Value); + }; } protected override void Update() @@ -120,13 +133,6 @@ namespace osu.Game.Overlays.Direct base.OnHoverLost(e); } - protected override bool OnClick(ClickEvent e) - { - Debug.Assert(SetInfo.OnlineBeatmapSetID != null); - beatmapSetOverlay?.FetchAndShowBeatmapSet(SetInfo.OnlineBeatmapSetID.Value); - return true; - } - protected override void LoadComplete() { base.LoadComplete(); @@ -203,5 +209,10 @@ namespace osu.Game.Overlays.Direct Value = value; } } + + public MenuItem[] ContextMenuItems => new MenuItem[] + { + new OsuMenuItem("View Beatmap", MenuItemType.Highlighted, ViewBeatmap), + }; } } From 0eccfc79cc84403609b080665bf70465992a3eae Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 30 Dec 2019 11:51:33 +0900 Subject: [PATCH 0646/1829] Remove unused field --- osu.Game/Overlays/Direct/DirectPanel.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/osu.Game/Overlays/Direct/DirectPanel.cs b/osu.Game/Overlays/Direct/DirectPanel.cs index 0ec0466580..4ad8e95512 100644 --- a/osu.Game/Overlays/Direct/DirectPanel.cs +++ b/osu.Game/Overlays/Direct/DirectPanel.cs @@ -37,8 +37,6 @@ namespace osu.Game.Overlays.Direct private Container content; - private BeatmapSetOverlay beatmapSetOverlay; - public PreviewTrack Preview => PlayButton.Preview; public Bindable PreviewPlaying => PlayButton?.Playing; @@ -77,8 +75,6 @@ namespace osu.Game.Overlays.Direct [BackgroundDependencyLoader(permitNulls: true)] private void load(BeatmapManager beatmaps, OsuColour colours, BeatmapSetOverlay beatmapSetOverlay) { - this.beatmapSetOverlay = beatmapSetOverlay; - AddInternal(content = new Container { RelativeSizeAxes = Axes.Both, From 5748b60a069f4e378c0028b7a46f5dcd12afde47 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 30 Dec 2019 08:26:49 +0300 Subject: [PATCH 0647/1829] Make item chevron size virtual --- osu.Game/Graphics/UserInterface/BreadcrumbControl.cs | 10 +++++----- osu.Game/Overlays/OverlayHeaderBreadcrumbControl.cs | 7 +++---- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs b/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs index 6014840a45..d4705c539a 100644 --- a/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs +++ b/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs @@ -15,18 +15,18 @@ namespace osu.Game.Graphics.UserInterface public class BreadcrumbControl : OsuTabControl { private const float padding = 10; - private readonly float itemChevronSize; - protected override TabItem CreateTabItem(T value) => new BreadcrumbTabItem(value, itemChevronSize) + protected virtual float ItemChevronSize => 10; + + protected override TabItem CreateTabItem(T value) => new BreadcrumbTabItem(value, ItemChevronSize) { AccentColour = AccentColour, }; - protected override float StripWidth() => base.StripWidth() - (padding + itemChevronSize); + protected override float StripWidth() => base.StripWidth() - (padding + ItemChevronSize); - public BreadcrumbControl(float itemChevronSize = 10) + public BreadcrumbControl() { - this.itemChevronSize = itemChevronSize; Height = 32; TabContainer.Spacing = new Vector2(padding, 0f); Current.ValueChanged += index => diff --git a/osu.Game/Overlays/OverlayHeaderBreadcrumbControl.cs b/osu.Game/Overlays/OverlayHeaderBreadcrumbControl.cs index d772aa0d46..eee43ec229 100644 --- a/osu.Game/Overlays/OverlayHeaderBreadcrumbControl.cs +++ b/osu.Game/Overlays/OverlayHeaderBreadcrumbControl.cs @@ -9,15 +9,14 @@ namespace osu.Game.Overlays { public class OverlayHeaderBreadcrumbControl : BreadcrumbControl { - private const float item_chevron_size = 8; - public OverlayHeaderBreadcrumbControl() - : base(item_chevron_size) { RelativeSizeAxes = Axes.X; } - protected override TabItem CreateTabItem(string value) => new ControlTabItem(value, item_chevron_size); + protected override float ItemChevronSize => 8; + + protected override TabItem CreateTabItem(string value) => new ControlTabItem(value, ItemChevronSize); private class ControlTabItem : BreadcrumbTabItem { From 8c378dc625869644cff887aed4aaebbb375c6189 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 27 Dec 2019 19:46:33 +0900 Subject: [PATCH 0648/1829] Move EditorBeatmap construction/conversion to Editor --- .../TestSceneOsuDistanceSnapGrid.cs | 2 +- .../Editor/TestSceneDistanceSnapGrid.cs | 2 +- .../Edit/DrawableEditRulesetWrapper.cs | 2 +- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 45 ++++++------------- .../Compose/Components/BlueprintContainer.cs | 2 +- .../Compose/Components/DistanceSnapGrid.cs | 2 +- .../Timeline/TimelineHitObjectDisplay.cs | 4 +- .../Screens/Edit/Compose/ComposeScreen.cs | 2 +- osu.Game/Screens/Edit/Editor.cs | 9 +++- osu.Game/Screens/Edit/EditorBeatmap.cs | 43 +++++++++--------- osu.Game/Screens/Edit/EditorScreen.cs | 3 ++ osu.Game/Screens/Edit/IEditorBeatmap.cs | 32 ------------- 12 files changed, 53 insertions(+), 95 deletions(-) delete mode 100644 osu.Game/Screens/Edit/IEditorBeatmap.cs diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneOsuDistanceSnapGrid.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneOsuDistanceSnapGrid.cs index 75c57467c3..c9b3d08a22 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneOsuDistanceSnapGrid.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneOsuDistanceSnapGrid.cs @@ -33,7 +33,7 @@ namespace osu.Game.Rulesets.Osu.Tests typeof(CircularDistanceSnapGrid) }; - [Cached(typeof(IEditorBeatmap))] + [Cached(typeof(EditorBeatmap))] private readonly EditorBeatmap editorBeatmap; [Cached] diff --git a/osu.Game.Tests/Visual/Editor/TestSceneDistanceSnapGrid.cs b/osu.Game.Tests/Visual/Editor/TestSceneDistanceSnapGrid.cs index 83b1f43f38..847d168e51 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneDistanceSnapGrid.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneDistanceSnapGrid.cs @@ -20,7 +20,7 @@ namespace osu.Game.Tests.Visual.Editor private const double beat_length = 100; private static readonly Vector2 grid_position = new Vector2(512, 384); - [Cached(typeof(IEditorBeatmap))] + [Cached(typeof(EditorBeatmap))] private readonly EditorBeatmap editorBeatmap; [Cached(typeof(IDistanceSnapProvider))] diff --git a/osu.Game/Rulesets/Edit/DrawableEditRulesetWrapper.cs b/osu.Game/Rulesets/Edit/DrawableEditRulesetWrapper.cs index ab2332ea86..89e7866707 100644 --- a/osu.Game/Rulesets/Edit/DrawableEditRulesetWrapper.cs +++ b/osu.Game/Rulesets/Edit/DrawableEditRulesetWrapper.cs @@ -22,7 +22,7 @@ namespace osu.Game.Rulesets.Edit private readonly DrawableRuleset drawableRuleset; [Resolved] - private IEditorBeatmap beatmap { get; set; } + private EditorBeatmap beatmap { get; set; } public DrawableEditRulesetWrapper(DrawableRuleset drawableRuleset) { diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index a550cf4a02..bfaa7e8872 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -6,7 +6,6 @@ using System.Collections.Generic; using System.Linq; using JetBrains.Annotations; using osu.Framework.Allocation; -using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Input; @@ -35,20 +34,20 @@ namespace osu.Game.Rulesets.Edit { protected IRulesetConfigManager Config { get; private set; } - protected new EditorBeatmap EditorBeatmap { get; private set; } - protected readonly Ruleset Ruleset; [Resolved] protected IFrameBasedClock EditorClock { get; private set; } + [Resolved] + protected EditorBeatmap EditorBeatmap { get; private set; } + [Resolved] private IAdjustableClock adjustableClock { get; set; } [Resolved] private BindableBeatDivisor beatDivisor { get; set; } - private Beatmap playableBeatmap; private IBeatmapProcessor beatmapProcessor; private DrawableEditRulesetWrapper drawableRulesetWrapper; @@ -68,9 +67,17 @@ namespace osu.Game.Rulesets.Edit [BackgroundDependencyLoader] private void load(IFrameBasedClock framedClock) { + beatmapProcessor = Ruleset.CreateBeatmapProcessor(EditorBeatmap.PlayableBeatmap); + + EditorBeatmap.HitObjectAdded += addHitObject; + EditorBeatmap.HitObjectRemoved += removeHitObject; + EditorBeatmap.StartTimeChanged += UpdateHitObject; + + Config = Dependencies.Get().GetConfigFor(Ruleset); + try { - drawableRulesetWrapper = new DrawableEditRulesetWrapper(CreateDrawableRuleset(Ruleset, playableBeatmap)) + drawableRulesetWrapper = new DrawableEditRulesetWrapper(CreateDrawableRuleset(Ruleset, EditorBeatmap.PlayableBeatmap)) { Clock = framedClock, ProcessCustomClock = false @@ -140,27 +147,6 @@ namespace osu.Game.Rulesets.Edit blueprintContainer.SelectionChanged += selectionChanged; } - protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent) - { - var parentWorkingBeatmap = parent.Get>().Value; - - playableBeatmap = (Beatmap)parentWorkingBeatmap.GetPlayableBeatmap(Ruleset.RulesetInfo); - - beatmapProcessor = Ruleset.CreateBeatmapProcessor(playableBeatmap); - - base.EditorBeatmap = EditorBeatmap = new EditorBeatmap(playableBeatmap); - EditorBeatmap.HitObjectAdded += addHitObject; - EditorBeatmap.HitObjectRemoved += removeHitObject; - EditorBeatmap.StartTimeChanged += UpdateHitObject; - - var dependencies = new DependencyContainer(parent); - dependencies.CacheAs(EditorBeatmap); - - Config = dependencies.Get().GetConfigFor(Ruleset); - - return base.CreateChildDependencies(dependencies); - } - protected override void LoadComplete() { base.LoadComplete(); @@ -233,7 +219,7 @@ namespace osu.Game.Rulesets.Edit scheduledUpdate = Schedule(() => { beatmapProcessor?.PreProcess(); - hitObject?.ApplyDefaults(playableBeatmap.ControlPointInfo, playableBeatmap.BeatmapInfo.BaseDifficulty); + hitObject?.ApplyDefaults(EditorBeatmap.ControlPointInfo, EditorBeatmap.BeatmapInfo.BaseDifficulty); beatmapProcessor?.PostProcess(); }); } @@ -332,11 +318,6 @@ namespace osu.Game.Rulesets.Edit /// public abstract IEnumerable HitObjects { get; } - /// - /// An editor-specific beatmap, exposing mutation events. - /// - public IEditorBeatmap EditorBeatmap { get; protected set; } - /// /// Whether the user's cursor is currently in an area of the that is valid for placement. /// diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index 195bc663f1..cafaddc39e 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -40,7 +40,7 @@ namespace osu.Game.Screens.Edit.Compose.Components private HitObjectComposer composer { get; set; } [Resolved] - private IEditorBeatmap beatmap { get; set; } + private EditorBeatmap beatmap { get; set; } public BlueprintContainer() { diff --git a/osu.Game/Screens/Edit/Compose/Components/DistanceSnapGrid.cs b/osu.Game/Screens/Edit/Compose/Components/DistanceSnapGrid.cs index 00326d04f7..53c5cf97fa 100644 --- a/osu.Game/Screens/Edit/Compose/Components/DistanceSnapGrid.cs +++ b/osu.Game/Screens/Edit/Compose/Components/DistanceSnapGrid.cs @@ -45,7 +45,7 @@ namespace osu.Game.Screens.Edit.Compose.Components protected IDistanceSnapProvider SnapProvider { get; private set; } [Resolved] - private IEditorBeatmap beatmap { get; set; } + private EditorBeatmap beatmap { get; set; } [Resolved] private BindableBeatDivisor beatDivisor { get; set; } diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index db4aca75e5..b20f2fa11d 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -16,9 +16,9 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline { internal class TimelineHitObjectDisplay : TimelinePart { - private IEditorBeatmap beatmap { get; } + private EditorBeatmap beatmap { get; } - public TimelineHitObjectDisplay(IEditorBeatmap beatmap) + public TimelineHitObjectDisplay(EditorBeatmap beatmap) { RelativeSizeAxes = Axes.Both; diff --git a/osu.Game/Screens/Edit/Compose/ComposeScreen.cs b/osu.Game/Screens/Edit/Compose/ComposeScreen.cs index 5d9757778d..1a6aae294a 100644 --- a/osu.Game/Screens/Edit/Compose/ComposeScreen.cs +++ b/osu.Game/Screens/Edit/Compose/ComposeScreen.cs @@ -32,6 +32,6 @@ namespace osu.Game.Screens.Edit.Compose return beatmapSkinProvider.WithChild(rulesetSkinProvider.WithChild(composer)); } - protected override Drawable CreateTimelineContent() => composer == null ? base.CreateTimelineContent() : new TimelineHitObjectDisplay(composer.EditorBeatmap); + protected override Drawable CreateTimelineContent() => composer == null ? base.CreateTimelineContent() : new TimelineHitObjectDisplay(EditorBeatmap); } } diff --git a/osu.Game/Screens/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs index 1b4964c068..14d69cddd1 100644 --- a/osu.Game/Screens/Edit/Editor.cs +++ b/osu.Game/Screens/Edit/Editor.cs @@ -23,6 +23,7 @@ using osuTK.Input; using System.Collections.Generic; using osu.Framework; using osu.Framework.Input.Bindings; +using osu.Game.Beatmaps; using osu.Game.Graphics.Cursor; using osu.Game.Input.Bindings; using osu.Game.Screens.Edit.Compose; @@ -49,9 +50,11 @@ namespace osu.Game.Screens.Edit private EditorScreen currentScreen; private readonly BindableBeatDivisor beatDivisor = new BindableBeatDivisor(); - private EditorClock clock; + private IBeatmap playableBeatmap; + private EditorBeatmap editorBeatmap; + private DependencyContainer dependencies; private GameHost host; @@ -73,9 +76,13 @@ namespace osu.Game.Screens.Edit clock = new EditorClock(Beatmap.Value, beatDivisor) { IsCoupled = false }; clock.ChangeSource(sourceClock); + playableBeatmap = Beatmap.Value.GetPlayableBeatmap(Beatmap.Value.BeatmapInfo.Ruleset); + editorBeatmap = new EditorBeatmap(playableBeatmap); + dependencies.CacheAs(clock); dependencies.CacheAs(clock); dependencies.Cache(beatDivisor); + dependencies.CacheAs(editorBeatmap); EditorMenuBar menuBar; diff --git a/osu.Game/Screens/Edit/EditorBeatmap.cs b/osu.Game/Screens/Edit/EditorBeatmap.cs index 5a45ea05a0..83879f0470 100644 --- a/osu.Game/Screens/Edit/EditorBeatmap.cs +++ b/osu.Game/Screens/Edit/EditorBeatmap.cs @@ -12,7 +12,7 @@ using osu.Game.Rulesets.Objects; namespace osu.Game.Screens.Edit { - public class EditorBeatmap : IEditorBeatmap + public class EditorBeatmap : IBeatmap { /// /// Invoked when a is added to this . @@ -29,12 +29,13 @@ namespace osu.Game.Screens.Edit /// public event Action StartTimeChanged; - private readonly Dictionary> startTimeBindables = new Dictionary>(); - private readonly IBeatmap beatmap; + public readonly IBeatmap PlayableBeatmap; - public EditorBeatmap(IBeatmap beatmap) + private readonly Dictionary> startTimeBindables = new Dictionary>(); + + public EditorBeatmap(IBeatmap playableBeatmap) { - this.beatmap = beatmap; + PlayableBeatmap = playableBeatmap; foreach (var obj in HitObjects) trackStartTime(obj); @@ -42,23 +43,21 @@ namespace osu.Game.Screens.Edit public BeatmapInfo BeatmapInfo { - get => beatmap.BeatmapInfo; - set => beatmap.BeatmapInfo = value; + get => PlayableBeatmap.BeatmapInfo; + set => PlayableBeatmap.BeatmapInfo = value; } - public BeatmapMetadata Metadata => beatmap.Metadata; + public BeatmapMetadata Metadata => PlayableBeatmap.Metadata; - public ControlPointInfo ControlPointInfo => beatmap.ControlPointInfo; + public ControlPointInfo ControlPointInfo => PlayableBeatmap.ControlPointInfo; - public List Breaks => beatmap.Breaks; + public List Breaks => PlayableBeatmap.Breaks; - public double TotalBreakTime => beatmap.TotalBreakTime; + public double TotalBreakTime => PlayableBeatmap.TotalBreakTime; - public IReadOnlyList HitObjects => beatmap.HitObjects; + public IReadOnlyList HitObjects => PlayableBeatmap.HitObjects; - IReadOnlyList IBeatmap.HitObjects => beatmap.HitObjects; - - public IEnumerable GetStatistics() => beatmap.GetStatistics(); + public IEnumerable GetStatistics() => PlayableBeatmap.GetStatistics(); public IBeatmap Clone() => (EditorBeatmap)MemberwiseClone(); @@ -71,8 +70,8 @@ namespace osu.Game.Screens.Edit trackStartTime(hitObject); // Preserve existing sorting order in the beatmap - var insertionIndex = findInsertionIndex(beatmap.HitObjects, hitObject.StartTime); - ((IList)beatmap.HitObjects).Insert(insertionIndex + 1, hitObject); + var insertionIndex = findInsertionIndex(PlayableBeatmap.HitObjects, hitObject.StartTime); + ((IList)PlayableBeatmap.HitObjects).Insert(insertionIndex + 1, hitObject); HitObjectAdded?.Invoke(hitObject); } @@ -83,10 +82,10 @@ namespace osu.Game.Screens.Edit /// The to add. public void Remove(HitObject hitObject) { - if (!((IList)beatmap.HitObjects).Contains(hitObject)) + if (!((IList)PlayableBeatmap.HitObjects).Contains(hitObject)) return; - ((IList)beatmap.HitObjects).Remove(hitObject); + ((IList)PlayableBeatmap.HitObjects).Remove(hitObject); var bindable = startTimeBindables[hitObject]; bindable.UnbindAll(); @@ -101,10 +100,10 @@ namespace osu.Game.Screens.Edit startTimeBindables[hitObject].ValueChanged += _ => { // For now we'll remove and re-add the hitobject. This is not optimal and can be improved if required. - ((IList)beatmap.HitObjects).Remove(hitObject); + ((IList)PlayableBeatmap.HitObjects).Remove(hitObject); - var insertionIndex = findInsertionIndex(beatmap.HitObjects, hitObject.StartTime); - ((IList)beatmap.HitObjects).Insert(insertionIndex + 1, hitObject); + var insertionIndex = findInsertionIndex(PlayableBeatmap.HitObjects, hitObject.StartTime); + ((IList)PlayableBeatmap.HitObjects).Insert(insertionIndex + 1, hitObject); StartTimeChanged?.Invoke(hitObject); }; diff --git a/osu.Game/Screens/Edit/EditorScreen.cs b/osu.Game/Screens/Edit/EditorScreen.cs index 1b57c703ae..d42447ac4b 100644 --- a/osu.Game/Screens/Edit/EditorScreen.cs +++ b/osu.Game/Screens/Edit/EditorScreen.cs @@ -17,6 +17,9 @@ namespace osu.Game.Screens.Edit [Resolved] protected IBindable Beatmap { get; private set; } + [Resolved] + protected EditorBeatmap EditorBeatmap { get; private set; } + protected override Container Content => content; private readonly Container content; diff --git a/osu.Game/Screens/Edit/IEditorBeatmap.cs b/osu.Game/Screens/Edit/IEditorBeatmap.cs deleted file mode 100644 index df4efd289e..0000000000 --- a/osu.Game/Screens/Edit/IEditorBeatmap.cs +++ /dev/null @@ -1,32 +0,0 @@ -// 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 osu.Game.Beatmaps; -using osu.Game.Rulesets.Edit; -using osu.Game.Rulesets.Objects; - -namespace osu.Game.Screens.Edit -{ - /// - /// Interface for the contained by the see . - /// Children of may resolve the beatmap via . - /// - public interface IEditorBeatmap : IBeatmap - { - /// - /// Invoked when a is added to this . - /// - event Action HitObjectAdded; - - /// - /// Invoked when a is removed from this . - /// - event Action HitObjectRemoved; - - /// - /// Invoked when the start time of a in this was changed. - /// - event Action StartTimeChanged; - } -} From 8ae4cfaa5205111b5e2afe06aba07fe66e9c5f8c Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 30 Dec 2019 07:33:49 +0000 Subject: [PATCH 0649/1829] Bump ppy.osu.Game.Resources from 2019.1227.0 to 2019.1230.0 Bumps [ppy.osu.Game.Resources](https://github.com/ppy/osu-resources) from 2019.1227.0 to 2019.1230.0. - [Release notes](https://github.com/ppy/osu-resources/releases) - [Commits](https://github.com/ppy/osu-resources/compare/2019.1227.0...2019.1230.0) Signed-off-by: dependabot-preview[bot] --- osu.Android.props | 2 +- osu.Game/osu.Game.csproj | 2 +- osu.iOS.props | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Android.props b/osu.Android.props index 6ff9416e47..0b41d5cda4 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -53,7 +53,7 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 806aadde84..565608b40f 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -22,7 +22,7 @@ - + diff --git a/osu.iOS.props b/osu.iOS.props index 230ff01cce..60355b8592 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -73,7 +73,7 @@ - + From 32e4d4a5633e907130da26f9e5e82fa991ade859 Mon Sep 17 00:00:00 2001 From: Joehu Date: Mon, 30 Dec 2019 09:29:46 -0800 Subject: [PATCH 0650/1829] Fix search textboxes absorbing home/end input on scroll containers --- osu.Game/Graphics/UserInterface/SearchTextBox.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/osu.Game/Graphics/UserInterface/SearchTextBox.cs b/osu.Game/Graphics/UserInterface/SearchTextBox.cs index ff3618b263..cdae36e700 100644 --- a/osu.Game/Graphics/UserInterface/SearchTextBox.cs +++ b/osu.Game/Graphics/UserInterface/SearchTextBox.cs @@ -40,6 +40,13 @@ namespace osu.Game.Graphics.UserInterface if (action.ActionType == PlatformActionType.CharNext && action.ActionMethod == PlatformActionMethod.Delete) return false; + switch (action.ActionType) + { + case PlatformActionType.LineEnd: + case PlatformActionType.LineStart: + return false; + } + return base.OnPressed(action); } From 25be3fd799855d4a234c05d80ff2e1cb431c97d4 Mon Sep 17 00:00:00 2001 From: Joehu Date: Mon, 30 Dec 2019 09:38:22 -0800 Subject: [PATCH 0651/1829] Move shift-delete handling to switch --- osu.Game/Graphics/UserInterface/SearchTextBox.cs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/SearchTextBox.cs b/osu.Game/Graphics/UserInterface/SearchTextBox.cs index cdae36e700..dbaf2cd073 100644 --- a/osu.Game/Graphics/UserInterface/SearchTextBox.cs +++ b/osu.Game/Graphics/UserInterface/SearchTextBox.cs @@ -34,17 +34,19 @@ namespace osu.Game.Graphics.UserInterface public override bool OnPressed(PlatformAction action) { - // Shift+delete is handled via PlatformAction on macOS. this is not so useful in the context of a SearchTextBox - // as we do not allow arrow key navigation in the first place (ie. the caret should always be at the end of text) - // Avoid handling it here to allow other components to potentially consume the shortcut. - if (action.ActionType == PlatformActionType.CharNext && action.ActionMethod == PlatformActionMethod.Delete) - return false; - switch (action.ActionType) { case PlatformActionType.LineEnd: case PlatformActionType.LineStart: return false; + + // Shift+delete is handled via PlatformAction on macOS. this is not so useful in the context of a SearchTextBox + // as we do not allow arrow key navigation in the first place (ie. the caret should always be at the end of text) + // Avoid handling it here to allow other components to potentially consume the shortcut. + case PlatformActionType.CharNext: + if (action.ActionMethod == PlatformActionMethod.Delete) + return false; + break; } return base.OnPressed(action); From a292d235d6f6cf7f78a28ad195c40f857b498193 Mon Sep 17 00:00:00 2001 From: Joehu Date: Mon, 30 Dec 2019 09:49:34 -0800 Subject: [PATCH 0652/1829] Separate statement with newline --- osu.Game/Graphics/UserInterface/SearchTextBox.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game/Graphics/UserInterface/SearchTextBox.cs b/osu.Game/Graphics/UserInterface/SearchTextBox.cs index dbaf2cd073..fe8756a4d2 100644 --- a/osu.Game/Graphics/UserInterface/SearchTextBox.cs +++ b/osu.Game/Graphics/UserInterface/SearchTextBox.cs @@ -46,6 +46,7 @@ namespace osu.Game.Graphics.UserInterface case PlatformActionType.CharNext: if (action.ActionMethod == PlatformActionMethod.Delete) return false; + break; } From b0bcbf8b93ab24b96a2fe3f73491c2703b31675b Mon Sep 17 00:00:00 2001 From: Viktor Rosvall Date: Mon, 30 Dec 2019 21:55:09 +0100 Subject: [PATCH 0653/1829] Adjusted margin to fix the 1 px increase --- osu.Game/Screens/Select/FooterButtonMods.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Select/FooterButtonMods.cs b/osu.Game/Screens/Select/FooterButtonMods.cs index d533d5444c..a0e34a7f87 100644 --- a/osu.Game/Screens/Select/FooterButtonMods.cs +++ b/osu.Game/Screens/Select/FooterButtonMods.cs @@ -58,7 +58,7 @@ namespace osu.Game.Screens.Select } }, AutoSizeAxes = Axes.Both, - Margin = new MarginPadding { Left = 70, Right = 15 } + Margin = new MarginPadding { Left = 70, Right = 14 } }); } From f40ebc83caea08d02810065d7150c30c8fe60ffb Mon Sep 17 00:00:00 2001 From: Viktor Rosvall Date: Mon, 30 Dec 2019 23:58:49 +0100 Subject: [PATCH 0654/1829] Begun refractorization process of wrapping Button text in a FillFlowContainer --- .../TestSceneFooterButtonMods.cs | 3 +- osu.Game/Screens/Select/FooterButton.cs | 23 +++++++---- osu.Game/Screens/Select/FooterButtonMods.cs | 38 +++++++------------ 3 files changed, 31 insertions(+), 33 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs index 6eb621ca3b..63197ed26a 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneFooterButtonMods.cs @@ -16,7 +16,8 @@ namespace osu.Game.Tests.Visual.UserInterface { public override IReadOnlyList RequiredTypes => new[] { - typeof(FooterButtonMods) + typeof(FooterButtonMods), + typeof(FooterButton) }; private readonly TestFooterButtonMods footerButtonMods; diff --git a/osu.Game/Screens/Select/FooterButton.cs b/osu.Game/Screens/Select/FooterButton.cs index b77da36748..18c9d1091c 100644 --- a/osu.Game/Screens/Select/FooterButton.cs +++ b/osu.Game/Screens/Select/FooterButton.cs @@ -56,7 +56,7 @@ namespace osu.Game.Screens.Select } } - protected readonly Container TextContainer; + protected FillFlowContainer TextContainer; protected readonly SpriteText SpriteText; private readonly Box box; private readonly Box light; @@ -80,15 +80,24 @@ namespace osu.Game.Screens.Select EdgeSmoothness = new Vector2(2, 0), RelativeSizeAxes = Axes.X, }, - TextContainer = new Container + TextContainer = new FillFlowContainer { - Size = new Vector2(100 - SHEAR_WIDTH, 50), + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + Direction = FillDirection.Horizontal, Shear = -SHEAR, - Child = SpriteText = new OsuSpriteText + Children = new Drawable[] { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - } + SpriteText = new OsuSpriteText + { + Size = new Vector2(100 - SHEAR_WIDTH, 50), + Shear = -SHEAR, + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + } + }, + AutoSizeAxes = Axes.Both, + // Margin = new MarginPadding { Left = 70, Right = 14 } }, }; } diff --git a/osu.Game/Screens/Select/FooterButtonMods.cs b/osu.Game/Screens/Select/FooterButtonMods.cs index a0e34a7f87..2141c04cd6 100644 --- a/osu.Game/Screens/Select/FooterButtonMods.cs +++ b/osu.Game/Screens/Select/FooterButtonMods.cs @@ -3,7 +3,7 @@ using osu.Framework.Bindables; using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; +// using osu.Framework.Graphics.Containers; using osu.Game.Screens.Play.HUD; using osu.Game.Rulesets.Mods; using System.Collections.Generic; @@ -34,31 +34,19 @@ namespace osu.Game.Screens.Select public FooterButtonMods() { - Add(new FillFlowContainer + TextContainer.Add(modDisplay = new FooterModDisplay { - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - Direction = FillDirection.Horizontal, - Shear = -SHEAR, - Children = new Drawable[] - { - modDisplay = new FooterModDisplay - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - DisplayUnrankedText = false, - Scale = new Vector2(0.8f) - }, - MultiplierText = new OsuSpriteText - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Font = OsuFont.GetFont(weight: FontWeight.Bold), - Margin = new MarginPadding { Right = 6 } - } - }, - AutoSizeAxes = Axes.Both, - Margin = new MarginPadding { Left = 70, Right = 14 } + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + DisplayUnrankedText = false, + Scale = new Vector2(0.8f) + }); + TextContainer.Add(MultiplierText = new OsuSpriteText + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Font = OsuFont.GetFont(weight: FontWeight.Bold), + Margin = new MarginPadding { Right = 6 } }); } From 8695e57f627aa2dc6da22c4eb53836265328cc30 Mon Sep 17 00:00:00 2001 From: Viktor Rosvall Date: Tue, 31 Dec 2019 12:21:55 +0100 Subject: [PATCH 0655/1829] Hides mod display when no mods are active to fix issue of invisible margin --- osu.Game/Screens/Select/FooterButton.cs | 2 +- osu.Game/Screens/Select/FooterButtonMods.cs | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/osu.Game/Screens/Select/FooterButton.cs b/osu.Game/Screens/Select/FooterButton.cs index 18c9d1091c..7acb2fd221 100644 --- a/osu.Game/Screens/Select/FooterButton.cs +++ b/osu.Game/Screens/Select/FooterButton.cs @@ -91,7 +91,7 @@ namespace osu.Game.Screens.Select SpriteText = new OsuSpriteText { Size = new Vector2(100 - SHEAR_WIDTH, 50), - Shear = -SHEAR, + Shear = SHEAR, Anchor = Anchor.Centre, Origin = Anchor.Centre, } diff --git a/osu.Game/Screens/Select/FooterButtonMods.cs b/osu.Game/Screens/Select/FooterButtonMods.cs index 2141c04cd6..a3453fee05 100644 --- a/osu.Game/Screens/Select/FooterButtonMods.cs +++ b/osu.Game/Screens/Select/FooterButtonMods.cs @@ -46,7 +46,7 @@ namespace osu.Game.Screens.Select Anchor = Anchor.Centre, Origin = Anchor.Centre, Font = OsuFont.GetFont(weight: FontWeight.Bold), - Margin = new MarginPadding { Right = 6 } + // Margin = new MarginPadding { Right = 6 } }); } @@ -80,6 +80,11 @@ namespace osu.Game.Screens.Select MultiplierText.FadeColour(lowMultiplierColour, 200); else MultiplierText.FadeColour(Color4.White, 200); + + if (Current.Value?.Count > 0) + modDisplay.FadeIn(0); + else + modDisplay.FadeOut(0); } private class FooterModDisplay : ModDisplay From 3a71abe8ff7ab10d1be61d700f9b8cd76286dc03 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 31 Dec 2019 17:52:41 +0300 Subject: [PATCH 0656/1829] Add xmldoc and better parameter naming --- osu.Game/Overlays/OverlayHeader.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index da7cfd0ce7..4356c54fdf 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -11,10 +11,11 @@ using osuTK.Graphics; namespace osu.Game.Overlays { - public abstract class OverlayHeader : Container - where TModel : TabControl + /// A control for overlay. + public abstract class OverlayHeader : Container + where TControl : TabControl { - protected readonly TModel TabControl; + protected readonly TControl TabControl; private readonly Box titleBackground; private readonly Box controlBackground; @@ -102,6 +103,6 @@ namespace osu.Game.Overlays protected abstract ScreenTitle CreateTitle(); - protected abstract TModel CreateControl(); + protected abstract TControl CreateControl(); } } From 19e7867aba19ad7c0dd7c7364c49058b4b0038e2 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 31 Dec 2019 18:12:03 +0300 Subject: [PATCH 0657/1829] Make OverlayHeader non-generic --- osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs | 8 ++++++-- osu.Game/Overlays/OverlayHeader.cs | 10 +++------- osu.Game/Overlays/TabControlOverlayHeader.cs | 8 ++++++-- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs b/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs index 10664fc5be..6f9445bd47 100644 --- a/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs +++ b/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs @@ -1,10 +1,14 @@ // 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.UserInterface; + namespace osu.Game.Overlays { - public abstract class BreadcrumbControlOverlayHeader : OverlayHeader + public abstract class BreadcrumbControlOverlayHeader : OverlayHeader { - protected override OverlayHeaderBreadcrumbControl CreateControl() => new OverlayHeaderBreadcrumbControl(); + protected OverlayHeaderBreadcrumbControl TabControl; + + protected override TabControl CreateControl() => TabControl = new OverlayHeaderBreadcrumbControl(); } } diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index 4356c54fdf..7575801aac 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -11,12 +11,8 @@ using osuTK.Graphics; namespace osu.Game.Overlays { - /// A control for overlay. - public abstract class OverlayHeader : Container - where TControl : TabControl + public abstract class OverlayHeader : Container { - protected readonly TControl TabControl; - private readonly Box titleBackground; private readonly Box controlBackground; private readonly Container background; @@ -88,7 +84,7 @@ namespace osu.Game.Overlays RelativeSizeAxes = Axes.Both, Colour = Color4.Gray, }, - TabControl = CreateControl().With(control => control.Margin = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN }) + CreateControl().With(control => control.Margin = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN }) } }, CreateContent() @@ -103,6 +99,6 @@ namespace osu.Game.Overlays protected abstract ScreenTitle CreateTitle(); - protected abstract TControl CreateControl(); + protected abstract TabControl CreateControl(); } } diff --git a/osu.Game/Overlays/TabControlOverlayHeader.cs b/osu.Game/Overlays/TabControlOverlayHeader.cs index 8570bf63b8..f8683b3e7d 100644 --- a/osu.Game/Overlays/TabControlOverlayHeader.cs +++ b/osu.Game/Overlays/TabControlOverlayHeader.cs @@ -1,10 +1,14 @@ // 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.UserInterface; + namespace osu.Game.Overlays { - public abstract class TabControlOverlayHeader : OverlayHeader + public abstract class TabControlOverlayHeader : OverlayHeader { - protected override OverlayHeaderTabControl CreateControl() => new OverlayHeaderTabControl(); + protected OverlayHeaderTabControl TabControl; + + protected override TabControl CreateControl() => TabControl = new OverlayHeaderTabControl(); } } From 6ade46d752e743e784db0a451373f2cda5eaa87c Mon Sep 17 00:00:00 2001 From: DTSDAO Date: Wed, 1 Jan 2020 06:38:59 +0000 Subject: [PATCH 0658/1829] Fix File Sharing on iOS 13 --- osu.iOS/Info.plist | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/osu.iOS/Info.plist b/osu.iOS/Info.plist index 5ceccdf99f..a82fa9bcf4 100644 --- a/osu.iOS/Info.plist +++ b/osu.iOS/Info.plist @@ -14,15 +14,15 @@ 0.1.0 LSRequiresIPhoneOS - LSSupportsOpeningDocumentsInPlace - MinimumOSVersion 10.0 UIDeviceFamily 1 2 - + + UIFileSharingEnabled + UILaunchStoryboardName LaunchScreen UIRequiredDeviceCapabilities @@ -51,7 +51,7 @@ UTTypeConformsTo - + public.data UTTypeIdentifier sh.ppy.osu.items @@ -104,7 +104,9 @@ LSHandlerRank Owner CFBundleTypeName - Supported osu! files + Supported osu! files + CFBundleTypeRole + Viewer LSItemContentTypes sh.ppy.osu.items From 47ca2804f6640a54693b9f4aba6573980a0c0682 Mon Sep 17 00:00:00 2001 From: DTSDAO Date: Wed, 1 Jan 2020 06:41:17 +0000 Subject: [PATCH 0659/1829] Adjust Tab Performance --- osu.iOS/Info.plist | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/osu.iOS/Info.plist b/osu.iOS/Info.plist index a82fa9bcf4..249474b1d7 100644 --- a/osu.iOS/Info.plist +++ b/osu.iOS/Info.plist @@ -20,9 +20,9 @@ 1 2 - - UIFileSharingEnabled - + + UIFileSharingEnabled + UILaunchStoryboardName LaunchScreen UIRequiredDeviceCapabilities @@ -104,9 +104,9 @@ LSHandlerRank Owner CFBundleTypeName - Supported osu! files - CFBundleTypeRole - Viewer + Supported osu! files + CFBundleTypeRole + Viewer LSItemContentTypes sh.ppy.osu.items From ddec59ec9158c0f88ca9a35048de161f232c5bd6 Mon Sep 17 00:00:00 2001 From: Viktor Rosvall Date: Wed, 1 Jan 2020 12:22:19 +0100 Subject: [PATCH 0660/1829] Further refactoring. I think this may have polluted the FooterButton too much. Not sure what to do about the centering. --- osu.Game/Screens/Select/FooterButton.cs | 40 +++++++++++++-------- osu.Game/Screens/Select/FooterButtonMods.cs | 6 ++-- 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/osu.Game/Screens/Select/FooterButton.cs b/osu.Game/Screens/Select/FooterButton.cs index 7acb2fd221..869e9e8aa4 100644 --- a/osu.Game/Screens/Select/FooterButton.cs +++ b/osu.Game/Screens/Select/FooterButton.cs @@ -56,7 +56,8 @@ namespace osu.Game.Screens.Select } } - protected FillFlowContainer TextContainer; + protected FillFlowContainer ButtonContentContainer; + protected readonly Container TextContainer; protected readonly SpriteText SpriteText; private readonly Box box; private readonly Box light; @@ -80,24 +81,35 @@ namespace osu.Game.Screens.Select EdgeSmoothness = new Vector2(2, 0), RelativeSizeAxes = Axes.X, }, - TextContainer = new FillFlowContainer + new Container { - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - Direction = FillDirection.Horizontal, - Shear = -SHEAR, + AutoSizeAxes = Axes.Both, Children = new Drawable[] { - SpriteText = new OsuSpriteText + ButtonContentContainer = new FillFlowContainer { - Size = new Vector2(100 - SHEAR_WIDTH, 50), - Shear = SHEAR, - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - } + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + Direction = FillDirection.Horizontal, + Shear = -SHEAR, + AutoSizeAxes = Axes.Both, + Margin = new MarginPadding { Horizontal = SHEAR_WIDTH / 4 }, + Children = new Drawable[] + { + TextContainer = new Container + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Size = new Vector2(100 - SHEAR_WIDTH, 50), + Child = SpriteText = new OsuSpriteText + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + } + }, + }, + }, }, - AutoSizeAxes = Axes.Both, - // Margin = new MarginPadding { Left = 70, Right = 14 } }, }; } diff --git a/osu.Game/Screens/Select/FooterButtonMods.cs b/osu.Game/Screens/Select/FooterButtonMods.cs index a3453fee05..67b491cf9e 100644 --- a/osu.Game/Screens/Select/FooterButtonMods.cs +++ b/osu.Game/Screens/Select/FooterButtonMods.cs @@ -34,19 +34,19 @@ namespace osu.Game.Screens.Select public FooterButtonMods() { - TextContainer.Add(modDisplay = new FooterModDisplay + ButtonContentContainer.Add(modDisplay = new FooterModDisplay { Anchor = Anchor.Centre, Origin = Anchor.Centre, DisplayUnrankedText = false, Scale = new Vector2(0.8f) }); - TextContainer.Add(MultiplierText = new OsuSpriteText + ButtonContentContainer.Add(MultiplierText = new OsuSpriteText { Anchor = Anchor.Centre, Origin = Anchor.Centre, Font = OsuFont.GetFont(weight: FontWeight.Bold), - // Margin = new MarginPadding { Right = 6 } + Margin = new MarginPadding { Right = 10 } }); } From 4f2fa2626acf8a7b7193a40cceffb584626cd972 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 1 Jan 2020 21:24:00 +0900 Subject: [PATCH 0661/1829] Centralise calls to mutable hitobjects list --- osu.Game/OsuGameBase.cs | 4 ++++ osu.Game/Screens/Edit/EditorBeatmap.cs | 12 +++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs index 22b8d9d012..41aa15b381 100644 --- a/osu.Game/OsuGameBase.cs +++ b/osu.Game/OsuGameBase.cs @@ -7,6 +7,7 @@ using System.IO; using System.Linq; using System.Reflection; using System.Threading.Tasks; +using ManagedBass; using osu.Framework.Allocation; using osu.Framework.Audio; using osu.Framework.Bindables; @@ -125,6 +126,9 @@ namespace osu.Game [BackgroundDependencyLoader] private void load() { + Bass.Configure(ManagedBass.Configuration.DeviceBufferLength, 2); + Bass.Configure(ManagedBass.Configuration.DevicePeriod, -512); + Resources.AddStore(new DllResourceStore(@"osu.Game.Resources.dll")); dependencies.Cache(contextFactory = new DatabaseContextFactory(Storage)); diff --git a/osu.Game/Screens/Edit/EditorBeatmap.cs b/osu.Game/Screens/Edit/EditorBeatmap.cs index 5a45ea05a0..b4177432e0 100644 --- a/osu.Game/Screens/Edit/EditorBeatmap.cs +++ b/osu.Game/Screens/Edit/EditorBeatmap.cs @@ -62,6 +62,8 @@ namespace osu.Game.Screens.Edit public IBeatmap Clone() => (EditorBeatmap)MemberwiseClone(); + private IList mutableHitObjects => (IList)beatmap.HitObjects; + /// /// Adds a to this . /// @@ -72,7 +74,7 @@ namespace osu.Game.Screens.Edit // Preserve existing sorting order in the beatmap var insertionIndex = findInsertionIndex(beatmap.HitObjects, hitObject.StartTime); - ((IList)beatmap.HitObjects).Insert(insertionIndex + 1, hitObject); + mutableHitObjects.Insert(insertionIndex + 1, hitObject); HitObjectAdded?.Invoke(hitObject); } @@ -83,10 +85,10 @@ namespace osu.Game.Screens.Edit /// The to add. public void Remove(HitObject hitObject) { - if (!((IList)beatmap.HitObjects).Contains(hitObject)) + if (!mutableHitObjects.Contains(hitObject)) return; - ((IList)beatmap.HitObjects).Remove(hitObject); + mutableHitObjects.Remove(hitObject); var bindable = startTimeBindables[hitObject]; bindable.UnbindAll(); @@ -101,10 +103,10 @@ namespace osu.Game.Screens.Edit startTimeBindables[hitObject].ValueChanged += _ => { // For now we'll remove and re-add the hitobject. This is not optimal and can be improved if required. - ((IList)beatmap.HitObjects).Remove(hitObject); + mutableHitObjects.Remove(hitObject); var insertionIndex = findInsertionIndex(beatmap.HitObjects, hitObject.StartTime); - ((IList)beatmap.HitObjects).Insert(insertionIndex + 1, hitObject); + mutableHitObjects.Insert(insertionIndex + 1, hitObject); StartTimeChanged?.Invoke(hitObject); }; From e4bbdb1956955e640586af30b6a52460ae302589 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 2 Jan 2020 00:41:06 +0900 Subject: [PATCH 0662/1829] Fix regressing test --- .../Editor/TestSceneHitObjectComposerDistanceSnapping.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs b/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs index b94f08aeaa..2d336bd19c 100644 --- a/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs +++ b/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs @@ -2,9 +2,11 @@ // See the LICENCE file in the repository root for full licence text. using NUnit.Framework; +using osu.Framework.Allocation; using osu.Framework.Testing; using osu.Game.Beatmaps.ControlPoints; using osu.Game.Rulesets.Osu; +using osu.Game.Rulesets.Osu.Beatmaps; using osu.Game.Rulesets.Osu.Edit; using osu.Game.Screens.Edit; using osu.Game.Tests.Visual; @@ -16,6 +18,9 @@ namespace osu.Game.Tests.Editor { private TestHitObjectComposer composer; + [Cached(typeof(EditorBeatmap))] + private readonly EditorBeatmap editorBeatmap = new EditorBeatmap(new OsuBeatmap()); + [SetUp] public void Setup() => Schedule(() => { From 2d6482f586da3cf77e0b1a50a7785754f6c1d167 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 2 Jan 2020 01:23:21 +0900 Subject: [PATCH 0663/1829] Fix remaining tests --- .../Visual/Editor/TestSceneComposeScreen.cs | 15 ++++++++++++++- .../Visual/Editor/TestSceneHitObjectComposer.cs | 4 ++++ .../Visual/Editor/TestSceneTimingScreen.cs | 8 ++++++-- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/osu.Game.Tests/Visual/Editor/TestSceneComposeScreen.cs b/osu.Game.Tests/Visual/Editor/TestSceneComposeScreen.cs index 9f16e1d781..3562689482 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneComposeScreen.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneComposeScreen.cs @@ -4,6 +4,8 @@ using NUnit.Framework; using osu.Framework.Allocation; using osu.Game.Rulesets.Osu; +using osu.Game.Rulesets.Osu.Beatmaps; +using osu.Game.Screens.Edit; using osu.Game.Screens.Edit.Compose; namespace osu.Game.Tests.Visual.Editor @@ -11,10 +13,21 @@ namespace osu.Game.Tests.Visual.Editor [TestFixture] public class TestSceneComposeScreen : EditorClockTestScene { + [Cached(typeof(EditorBeatmap))] + private readonly EditorBeatmap editorBeatmap = + new EditorBeatmap(new OsuBeatmap + { + BeatmapInfo = + { + Ruleset = new OsuRuleset().RulesetInfo + } + }); + [BackgroundDependencyLoader] private void load() { - Beatmap.Value = CreateWorkingBeatmap(new OsuRuleset().RulesetInfo); + Beatmap.Value = CreateWorkingBeatmap(editorBeatmap.PlayableBeatmap); + Child = new ComposeScreen(); } } diff --git a/osu.Game.Tests/Visual/Editor/TestSceneHitObjectComposer.cs b/osu.Game.Tests/Visual/Editor/TestSceneHitObjectComposer.cs index b7c7028b52..c001c83877 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneHitObjectComposer.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneHitObjectComposer.cs @@ -16,6 +16,7 @@ using osu.Game.Rulesets.Osu.Edit; using osu.Game.Rulesets.Osu.Edit.Blueprints.HitCircles; using osu.Game.Rulesets.Osu.Edit.Blueprints.HitCircles.Components; using osu.Game.Rulesets.Osu.Objects; +using osu.Game.Screens.Edit; using osu.Game.Screens.Edit.Compose.Components; using osuTK; @@ -59,9 +60,12 @@ namespace osu.Game.Tests.Visual.Editor }, }); + var editorBeatmap = new EditorBeatmap(Beatmap.Value.GetPlayableBeatmap(new OsuRuleset().RulesetInfo)); + var clock = new DecoupleableInterpolatingFramedClock { IsCoupled = false }; Dependencies.CacheAs(clock); Dependencies.CacheAs(clock); + Dependencies.CacheAs(editorBeatmap); Child = new OsuHitObjectComposer(new OsuRuleset()); } diff --git a/osu.Game.Tests/Visual/Editor/TestSceneTimingScreen.cs b/osu.Game.Tests/Visual/Editor/TestSceneTimingScreen.cs index 121853d8d0..adfed9a299 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneTimingScreen.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneTimingScreen.cs @@ -5,7 +5,8 @@ using System; using System.Collections.Generic; using NUnit.Framework; using osu.Framework.Allocation; -using osu.Game.Rulesets.Osu; +using osu.Game.Rulesets.Osu.Beatmaps; +using osu.Game.Screens.Edit; using osu.Game.Screens.Edit.Timing; namespace osu.Game.Tests.Visual.Editor @@ -25,10 +26,13 @@ namespace osu.Game.Tests.Visual.Editor typeof(RowAttribute) }; + [Cached(typeof(EditorBeatmap))] + private readonly EditorBeatmap editorBeatmap = new EditorBeatmap(new OsuBeatmap()); + [BackgroundDependencyLoader] private void load() { - Beatmap.Value = CreateWorkingBeatmap(new OsuRuleset().RulesetInfo); + Beatmap.Value = CreateWorkingBeatmap(editorBeatmap.PlayableBeatmap); Child = new TimingScreen(); } } From af248457b02b9380c49dc09d8dd2085b9ebe7766 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 1 Jan 2020 22:49:04 +0300 Subject: [PATCH 0664/1829] Implement OverlayRulesetSelector --- .../TestSceneOverlayRulesetSelector.cs | 68 +++++++++++++ osu.Game/Overlays/OverlayRulesetSelector.cs | 44 +++++++++ osu.Game/Overlays/OverlayRulesetTabItem.cs | 98 +++++++++++++++++++ 3 files changed, 210 insertions(+) create mode 100644 osu.Game.Tests/Visual/UserInterface/TestSceneOverlayRulesetSelector.cs create mode 100644 osu.Game/Overlays/OverlayRulesetSelector.cs create mode 100644 osu.Game/Overlays/OverlayRulesetTabItem.cs diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayRulesetSelector.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayRulesetSelector.cs new file mode 100644 index 0000000000..6c921b13b4 --- /dev/null +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayRulesetSelector.cs @@ -0,0 +1,68 @@ +// 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 System; +using System.Collections.Generic; +using osu.Game.Rulesets.Catch; +using osu.Game.Rulesets.Mania; +using osu.Game.Rulesets.Osu; +using osu.Game.Rulesets.Taiko; +using osu.Framework.Bindables; +using osu.Game.Overlays; +using osu.Game.Rulesets; +using NUnit.Framework; +using osu.Game.Graphics; +using osu.Framework.Allocation; + +namespace osu.Game.Tests.Visual.UserInterface +{ + public class TestSceneOverlayRulesetSelector : OsuTestScene + { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(OverlayRulesetSelector), + typeof(OverlayRulesetTabItem), + }; + + private readonly OverlayRulesetSelector selector; + private readonly Bindable ruleset = new Bindable(); + + public TestSceneOverlayRulesetSelector() + { + Add(selector = new OverlayRulesetSelector + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Current = ruleset, + }); + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + selector.AccentColour = colours.Lime; + } + + [Test] + public void TestSelection() + { + var osuRuleset = new OsuRuleset().RulesetInfo; + var maniaRuleset = new ManiaRuleset().RulesetInfo; + var taikoRuleset = new TaikoRuleset().RulesetInfo; + var catchRuleset = new CatchRuleset().RulesetInfo; + + AddStep("Select osu!", () => ruleset.Value = osuRuleset); + AddAssert("Check osu! selected", () => selector.Current.Value == osuRuleset); + + AddStep("Select mania", () => ruleset.Value = maniaRuleset); + AddAssert("Check mania selected", () => selector.Current.Value == maniaRuleset); + + AddStep("Select taiko", () => ruleset.Value = taikoRuleset); + AddAssert("Check taiko selected", () => selector.Current.Value == taikoRuleset); + + AddStep("Select catch", () => ruleset.Value = catchRuleset); + AddAssert("Check catch selected", () => selector.Current.Value == catchRuleset); + } + } +} diff --git a/osu.Game/Overlays/OverlayRulesetSelector.cs b/osu.Game/Overlays/OverlayRulesetSelector.cs new file mode 100644 index 0000000000..1dcfc97562 --- /dev/null +++ b/osu.Game/Overlays/OverlayRulesetSelector.cs @@ -0,0 +1,44 @@ +// 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.UserInterface; +using osu.Game.Graphics; +using osu.Game.Rulesets; +using osuTK; +using osuTK.Graphics; +using System.Linq; + +namespace osu.Game.Overlays +{ + public class OverlayRulesetSelector : RulesetSelector + { + private Color4 accentColour; + + public Color4 AccentColour + { + get => accentColour; + set + { + accentColour = value; + foreach (var i in TabContainer.Children.OfType()) + i.AccentColour = value; + } + } + + public OverlayRulesetSelector() + { + AutoSizeAxes = Axes.Both; + } + + protected override TabItem CreateTabItem(RulesetInfo value) => new OverlayRulesetTabItem(value); + + protected override TabFillFlowContainer CreateTabFlow() => new TabFillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(25, 0), + }; + } +} diff --git a/osu.Game/Overlays/OverlayRulesetTabItem.cs b/osu.Game/Overlays/OverlayRulesetTabItem.cs new file mode 100644 index 0000000000..9d6d28a81f --- /dev/null +++ b/osu.Game/Overlays/OverlayRulesetTabItem.cs @@ -0,0 +1,98 @@ +// 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.UserInterface; +using osu.Framework.Input.Events; +using osu.Game.Graphics; +using osu.Game.Graphics.Sprites; +using osu.Game.Graphics.UserInterface; +using osu.Game.Rulesets; +using osuTK.Graphics; +using osuTK; + +namespace osu.Game.Overlays +{ + public class OverlayRulesetTabItem : TabItem, IHasAccentColour + { + protected readonly OsuSpriteText Text; + private readonly FillFlowContainer content; + + public override bool PropagatePositionalInputSubTree => Enabled.Value && !Active.Value && base.PropagatePositionalInputSubTree; + + private Color4 accentColour; + + public Color4 AccentColour + { + get => accentColour; + set + { + if (accentColour == value) + return; + + accentColour = value; + + UpdateState(); + } + } + + protected override Container Content => content; + + public OverlayRulesetTabItem(RulesetInfo value) + : base(value) + { + AutoSizeAxes = Axes.Both; + + AddRangeInternal(new Drawable[] + { + content = new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(3, 0), + Child = Text = new OsuSpriteText + { + Origin = Anchor.Centre, + Anchor = Anchor.Centre, + Text = value.Name, + } + }, + new HoverClickSounds() + }); + + Enabled.Value = true; + } + + protected override void LoadComplete() + { + base.LoadComplete(); + Enabled.BindValueChanged(_ => UpdateState(), true); + } + + protected override bool OnHover(HoverEvent e) + { + base.OnHover(e); + UpdateState(); + return true; + } + + protected override void OnHoverLost(HoverLostEvent e) + { + base.OnHoverLost(e); + UpdateState(); + } + + protected override void OnActivated() => UpdateState(); + + protected override void OnDeactivated() => UpdateState(); + + protected virtual void UpdateState() + { + Text.Font = Text.Font.With(weight: Active.Value ? FontWeight.Bold : FontWeight.Medium); + Text.FadeColour(GetColour(), 120, Easing.OutQuint); + } + + protected Color4 GetColour() => IsHovered || Active.Value ? Color4.White : Enabled.Value ? AccentColour : Color4.DimGray; + } +} From b016238c16f8ac0d8e2c6e97d1e2559c6c58930e Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 1 Jan 2020 22:55:28 +0300 Subject: [PATCH 0665/1829] Make ProfileRulesetSelector inherit from OverlayRulesetSelector --- .../Online/TestSceneProfileRulesetSelector.cs | 2 +- .../Components/ProfileRulesetSelector.cs | 33 +------ .../Components/ProfileRulesetTabItem.cs | 97 +++---------------- 3 files changed, 20 insertions(+), 112 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneProfileRulesetSelector.cs b/osu.Game.Tests/Visual/Online/TestSceneProfileRulesetSelector.cs index 1f5ba67e03..a36b6880d2 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneProfileRulesetSelector.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneProfileRulesetSelector.cs @@ -25,7 +25,7 @@ namespace osu.Game.Tests.Visual.Online public TestSceneProfileRulesetSelector() { ProfileRulesetSelector selector; - Bindable user = new Bindable(); + var user = new Bindable(); Child = selector = new ProfileRulesetSelector { diff --git a/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetSelector.cs b/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetSelector.cs index 2c9a3dd5f9..e63102f989 100644 --- a/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetSelector.cs +++ b/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetSelector.cs @@ -3,37 +3,21 @@ using osu.Framework.Allocation; using osu.Framework.Bindables; -using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.UserInterface; using osu.Game.Graphics; using osu.Game.Rulesets; using osu.Game.Users; -using osuTK; -using osuTK.Graphics; namespace osu.Game.Overlays.Profile.Header.Components { - public class ProfileRulesetSelector : RulesetSelector + public class ProfileRulesetSelector : OverlayRulesetSelector { - private Color4 accentColour = Color4.White; - public readonly Bindable User = new Bindable(); - public ProfileRulesetSelector() - { - TabContainer.Masking = false; - TabContainer.Spacing = new Vector2(10, 0); - AutoSizeAxes = Axes.Both; - } - [BackgroundDependencyLoader] private void load(OsuColour colours) { - accentColour = colours.Seafoam; - - foreach (TabItem tabItem in TabContainer) - ((ProfileRulesetTabItem)tabItem).AccentColour = accentColour; + AccentColour = colours.Seafoam; } protected override void LoadComplete() @@ -45,19 +29,10 @@ namespace osu.Game.Overlays.Profile.Header.Components public void SetDefaultRuleset(RulesetInfo ruleset) { - foreach (TabItem tabItem in TabContainer) + foreach (var tabItem in TabContainer) ((ProfileRulesetTabItem)tabItem).IsDefault = ((ProfileRulesetTabItem)tabItem).Value.ID == ruleset.ID; } - protected override TabItem CreateTabItem(RulesetInfo value) => new ProfileRulesetTabItem(value) - { - AccentColour = accentColour - }; - - protected override TabFillFlowContainer CreateTabFlow() => new TabFillFlowContainer - { - Direction = FillDirection.Horizontal, - AutoSizeAxes = Axes.Both, - }; + protected override TabItem CreateTabItem(RulesetInfo value) => new ProfileRulesetTabItem(value); } } diff --git a/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetTabItem.cs b/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetTabItem.cs index b5170ea3a2..adf324b259 100644 --- a/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetTabItem.cs +++ b/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetTabItem.cs @@ -2,38 +2,21 @@ // 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.Sprites; -using osu.Framework.Graphics.UserInterface; -using osu.Framework.Input.Events; -using osu.Game.Graphics; -using osu.Game.Graphics.Sprites; -using osu.Game.Graphics.UserInterface; using osu.Game.Rulesets; using osuTK; using osuTK.Graphics; namespace osu.Game.Overlays.Profile.Header.Components { - public class ProfileRulesetTabItem : TabItem, IHasAccentColour + public class ProfileRulesetTabItem : OverlayRulesetTabItem { - private readonly OsuSpriteText text; private readonly SpriteIcon icon; - private Color4 accentColour; - - public Color4 AccentColour + public new Color4 AccentColour { - get => accentColour; - set - { - if (accentColour == value) - return; - - accentColour = value; - - updateState(); - } + get => base.AccentColour; + set => base.AccentColour = icon.Colour = value; } private bool isDefault; @@ -55,71 +38,21 @@ namespace osu.Game.Overlays.Profile.Header.Components public ProfileRulesetTabItem(RulesetInfo value) : base(value) { - AutoSizeAxes = Axes.Both; - - Children = new Drawable[] + Add(icon = new SpriteIcon { - new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Origin = Anchor.BottomLeft, - Anchor = Anchor.BottomLeft, - Direction = FillDirection.Horizontal, - Spacing = new Vector2(3, 0), - Children = new Drawable[] - { - text = new OsuSpriteText - { - Origin = Anchor.Centre, - Anchor = Anchor.Centre, - Text = value.Name, - }, - icon = new SpriteIcon - { - Origin = Anchor.Centre, - Anchor = Anchor.Centre, - Alpha = 0, - AlwaysPresent = true, - Icon = FontAwesome.Solid.Star, - Size = new Vector2(12), - }, - } - }, - new HoverClickSounds() - }; + Origin = Anchor.Centre, + Anchor = Anchor.Centre, + Alpha = 0, + AlwaysPresent = true, + Icon = FontAwesome.Solid.Star, + Size = new Vector2(12), + }); } - protected override bool OnHover(HoverEvent e) + protected override void UpdateState() { - base.OnHover(e); - updateState(); - return true; - } - - protected override void OnHoverLost(HoverLostEvent e) - { - base.OnHoverLost(e); - updateState(); - } - - protected override void OnActivated() => updateState(); - - protected override void OnDeactivated() => updateState(); - - private void updateState() - { - text.Font = text.Font.With(weight: Active.Value ? FontWeight.Bold : FontWeight.Medium); - - if (IsHovered || Active.Value) - { - text.FadeColour(Color4.White, 120, Easing.InQuad); - icon.FadeColour(Color4.White, 120, Easing.InQuad); - } - else - { - text.FadeColour(AccentColour, 120, Easing.InQuad); - icon.FadeColour(AccentColour, 120, Easing.InQuad); - } + base.UpdateState(); + icon.FadeColour(GetColour(), 120, Easing.OutQuint); } } } From 2d6a07e970420893feea193e778f1ff3cc28e4f9 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 1 Jan 2020 23:14:26 +0300 Subject: [PATCH 0666/1829] Fix OverlayRulesetSelector don't have default colour --- .../TestSceneOverlayRulesetSelector.cs | 35 +++++++++---------- osu.Game/Overlays/OverlayRulesetSelector.cs | 8 +++++ 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayRulesetSelector.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayRulesetSelector.cs index 6c921b13b4..93aa414c94 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayRulesetSelector.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayRulesetSelector.cs @@ -25,6 +25,9 @@ namespace osu.Game.Tests.Visual.UserInterface typeof(OverlayRulesetTabItem), }; + [Resolved] + private OsuColour colours { get; set; } + private readonly OverlayRulesetSelector selector; private readonly Bindable ruleset = new Bindable(); @@ -38,31 +41,27 @@ namespace osu.Game.Tests.Visual.UserInterface }); } - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - selector.AccentColour = colours.Lime; - } - [Test] public void TestSelection() { - var osuRuleset = new OsuRuleset().RulesetInfo; - var maniaRuleset = new ManiaRuleset().RulesetInfo; - var taikoRuleset = new TaikoRuleset().RulesetInfo; - var catchRuleset = new CatchRuleset().RulesetInfo; + AddStep("Select osu!", () => ruleset.Value = new OsuRuleset().RulesetInfo); + AddAssert("Check osu! selected", () => selector.Current.Value.Equals(new OsuRuleset().RulesetInfo)); - AddStep("Select osu!", () => ruleset.Value = osuRuleset); - AddAssert("Check osu! selected", () => selector.Current.Value == osuRuleset); + AddStep("Select mania", () => ruleset.Value = new ManiaRuleset().RulesetInfo); + AddAssert("Check mania selected", () => selector.Current.Value.Equals(new ManiaRuleset().RulesetInfo)); - AddStep("Select mania", () => ruleset.Value = maniaRuleset); - AddAssert("Check mania selected", () => selector.Current.Value == maniaRuleset); + AddStep("Select taiko", () => ruleset.Value = new TaikoRuleset().RulesetInfo); + AddAssert("Check taiko selected", () => selector.Current.Value.Equals(new TaikoRuleset().RulesetInfo)); - AddStep("Select taiko", () => ruleset.Value = taikoRuleset); - AddAssert("Check taiko selected", () => selector.Current.Value == taikoRuleset); + AddStep("Select catch", () => ruleset.Value = new CatchRuleset().RulesetInfo); + AddAssert("Check catch selected", () => selector.Current.Value.Equals(new CatchRuleset().RulesetInfo)); + } - AddStep("Select catch", () => ruleset.Value = catchRuleset); - AddAssert("Check catch selected", () => selector.Current.Value == catchRuleset); + [Test] + public void TestColours() + { + AddStep("Set colour to blue", () => selector.AccentColour = colours.Blue); + AddAssert("Check colour is blue", () => selector.AccentColour == colours.Blue); } } } diff --git a/osu.Game/Overlays/OverlayRulesetSelector.cs b/osu.Game/Overlays/OverlayRulesetSelector.cs index 1dcfc97562..da49335250 100644 --- a/osu.Game/Overlays/OverlayRulesetSelector.cs +++ b/osu.Game/Overlays/OverlayRulesetSelector.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 osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.UserInterface; @@ -32,6 +33,13 @@ namespace osu.Game.Overlays AutoSizeAxes = Axes.Both; } + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + if (accentColour == default) + AccentColour = colours.Pink; + } + protected override TabItem CreateTabItem(RulesetInfo value) => new OverlayRulesetTabItem(value); protected override TabFillFlowContainer CreateTabFlow() => new TabFillFlowContainer From 09cd66adb0c165817bd3f776dc2a5d43d222599d Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 2 Jan 2020 14:07:22 +0900 Subject: [PATCH 0667/1829] Fix storyboard samples not loading from subfolders --- osu.Game/Skinning/LegacySkin.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Skinning/LegacySkin.cs b/osu.Game/Skinning/LegacySkin.cs index 48c520986a..671d37fda4 100644 --- a/osu.Game/Skinning/LegacySkin.cs +++ b/osu.Game/Skinning/LegacySkin.cs @@ -175,7 +175,7 @@ namespace osu.Game.Skinning { foreach (var lookup in sampleInfo.LookupNames) { - var sample = Samples?.Get(getFallbackName(lookup)); + var sample = Samples?.Get(lookup); if (sample != null) return sample; From 546f64f951f7dc9c4e402ace175bea324aa17ffa Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 2 Jan 2020 14:19:31 +0900 Subject: [PATCH 0668/1829] Method to property --- osu.Game/Graphics/UserInterface/BreadcrumbControl.cs | 2 +- osu.Game/Graphics/UserInterface/OsuTabControl.cs | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs b/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs index d4705c539a..c98280bc75 100644 --- a/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs +++ b/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs @@ -23,7 +23,7 @@ namespace osu.Game.Graphics.UserInterface AccentColour = AccentColour, }; - protected override float StripWidth() => base.StripWidth() - (padding + ItemChevronSize); + protected override float StripWidth => base.StripWidth - (padding + ItemChevronSize); public BreadcrumbControl() { diff --git a/osu.Game/Graphics/UserInterface/OsuTabControl.cs b/osu.Game/Graphics/UserInterface/OsuTabControl.cs index 064cba6adf..a6ee666e1d 100644 --- a/osu.Game/Graphics/UserInterface/OsuTabControl.cs +++ b/osu.Game/Graphics/UserInterface/OsuTabControl.cs @@ -28,8 +28,9 @@ namespace osu.Game.Graphics.UserInterface protected override TabItem CreateTabItem(T value) => new OsuTabItem(value); - protected virtual float StripWidth() => TabContainer.Children.Sum(c => c.IsPresent ? c.DrawWidth + TabContainer.Spacing.X : 0) - TabContainer.Spacing.X; - protected virtual float StripHeight() => 1; + protected virtual float StripWidth => TabContainer.Children.Sum(c => c.IsPresent ? c.DrawWidth + TabContainer.Spacing.X : 0) - TabContainer.Spacing.X; + + protected virtual float StripHeight => 1; /// /// Whether entries should be automatically populated if is an type. @@ -46,7 +47,7 @@ namespace osu.Game.Graphics.UserInterface { Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, - Height = StripHeight(), + Height = StripHeight, Colour = Color4.White.Opacity(0), }); @@ -99,7 +100,7 @@ namespace osu.Game.Graphics.UserInterface // dont bother calculating if the strip is invisible if (strip.Colour.MaxAlpha > 0) - strip.Width = Interpolation.ValueAt(Math.Clamp(Clock.ElapsedFrameTime, 0, 1000), strip.Width, StripWidth(), 0, 500, Easing.OutQuint); + strip.Width = Interpolation.ValueAt(Math.Clamp(Clock.ElapsedFrameTime, 0, 1000), strip.Width, StripWidth, 0, 500, Easing.OutQuint); } public class OsuTabItem : TabItem, IHasAccentColour From 43903b2feabc1785763d88253d84d23690468a99 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 2 Jan 2020 14:24:58 +0900 Subject: [PATCH 0669/1829] Make test scene usable --- ...{TestSceneBreadcrumbs.cs => TestSceneBreadcrumbControl.cs} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename osu.Game.Tests/Visual/UserInterface/{TestSceneBreadcrumbs.cs => TestSceneBreadcrumbControl.cs} (92%) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneBreadcrumbs.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneBreadcrumbControl.cs similarity index 92% rename from osu.Game.Tests/Visual/UserInterface/TestSceneBreadcrumbs.cs rename to osu.Game.Tests/Visual/UserInterface/TestSceneBreadcrumbControl.cs index 554696765e..19eebc89b6 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneBreadcrumbs.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneBreadcrumbControl.cs @@ -10,11 +10,11 @@ using osu.Game.Graphics.UserInterface; namespace osu.Game.Tests.Visual.UserInterface { [TestFixture] - public class TestSceneBreadcrumbs : OsuTestScene + public class TestSceneBreadcrumbControl : OsuTestScene { private readonly BreadcrumbControl breadcrumbs; - public TestSceneBreadcrumbs() + public TestSceneBreadcrumbControl() { Add(breadcrumbs = new BreadcrumbControl { From d1d19c2cd9dbcf9f575bfbfbb49f6d0c0ee86dd3 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 2 Jan 2020 14:26:40 +0900 Subject: [PATCH 0670/1829] Move chevron size implementation --- .../Graphics/UserInterface/BreadcrumbControl.cs | 14 +++++++------- .../Overlays/OverlayHeaderBreadcrumbControl.cs | 10 +++++----- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs b/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs index c98280bc75..e2438cc4cd 100644 --- a/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs +++ b/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs @@ -16,14 +16,12 @@ namespace osu.Game.Graphics.UserInterface { private const float padding = 10; - protected virtual float ItemChevronSize => 10; - - protected override TabItem CreateTabItem(T value) => new BreadcrumbTabItem(value, ItemChevronSize) + protected override TabItem CreateTabItem(T value) => new BreadcrumbTabItem(value) { AccentColour = AccentColour, }; - protected override float StripWidth => base.StripWidth - (padding + ItemChevronSize); + protected override float StripWidth => base.StripWidth - TabContainer.FirstOrDefault()?.Padding.Right ?? 0; public BreadcrumbControl() { @@ -44,6 +42,8 @@ namespace osu.Game.Graphics.UserInterface protected class BreadcrumbTabItem : OsuTabItem, IStateful { + protected virtual float ChevronSize => 10; + public event Action StateChanged; public readonly SpriteIcon Chevron; @@ -86,17 +86,17 @@ namespace osu.Game.Graphics.UserInterface public override void Show() => State = Visibility.Visible; - public BreadcrumbTabItem(T value, float itemChevronSize) + public BreadcrumbTabItem(T value) : base(value) { Text.Font = Text.Font.With(size: 18); Text.Margin = new MarginPadding { Vertical = 8 }; - Padding = new MarginPadding { Right = padding + itemChevronSize }; + Padding = new MarginPadding { Right = padding + ChevronSize }; Add(Chevron = new SpriteIcon { Anchor = Anchor.CentreRight, Origin = Anchor.CentreLeft, - Size = new Vector2(itemChevronSize), + Size = new Vector2(ChevronSize), Icon = FontAwesome.Solid.ChevronRight, Margin = new MarginPadding { Left = padding }, Alpha = 0f, diff --git a/osu.Game/Overlays/OverlayHeaderBreadcrumbControl.cs b/osu.Game/Overlays/OverlayHeaderBreadcrumbControl.cs index eee43ec229..34941c5647 100644 --- a/osu.Game/Overlays/OverlayHeaderBreadcrumbControl.cs +++ b/osu.Game/Overlays/OverlayHeaderBreadcrumbControl.cs @@ -14,14 +14,14 @@ namespace osu.Game.Overlays RelativeSizeAxes = Axes.X; } - protected override float ItemChevronSize => 8; - - protected override TabItem CreateTabItem(string value) => new ControlTabItem(value, ItemChevronSize); + protected override TabItem CreateTabItem(string value) => new ControlTabItem(value); private class ControlTabItem : BreadcrumbTabItem { - public ControlTabItem(string value, float itemChevronSize) - : base(value, itemChevronSize) + protected override float ChevronSize => 8; + + public ControlTabItem(string value) + : base(value) { Text.Font = Text.Font.With(size: 14); Chevron.Y = 3; From 0f8a76afde9250052696fff81b32d133f5f6628a Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 2 Jan 2020 14:26:32 +0900 Subject: [PATCH 0671/1829] Remove manual hitobject sample namespacing --- .../Audio/DrumSampleMapping.cs | 4 -- .../Drawables/DrawableTaikoHitObject.cs | 2 - .../Skinning/TaikoLegacySkinTransformer.cs | 55 +++++++++++++++++++ osu.Game.Rulesets.Taiko/TaikoRuleset.cs | 4 ++ osu.Game/Audio/HitSampleInfo.cs | 14 ----- .../Objects/Drawables/DrawableHitObject.cs | 9 +-- 6 files changed, 60 insertions(+), 28 deletions(-) create mode 100644 osu.Game.Rulesets.Taiko/Skinning/TaikoLegacySkinTransformer.cs diff --git a/osu.Game.Rulesets.Taiko/Audio/DrumSampleMapping.cs b/osu.Game.Rulesets.Taiko/Audio/DrumSampleMapping.cs index aaf113f216..c31b07344d 100644 --- a/osu.Game.Rulesets.Taiko/Audio/DrumSampleMapping.cs +++ b/osu.Game.Rulesets.Taiko/Audio/DrumSampleMapping.cs @@ -26,10 +26,6 @@ namespace osu.Game.Rulesets.Taiko.Audio var centre = s.GetSampleInfo(); var rim = s.GetSampleInfo(HitSampleInfo.HIT_CLAP); - // todo: this is ugly - centre.Namespace = "taiko"; - rim.Namespace = "taiko"; - mappings[s.Time] = new DrumSample { Centre = addSound(centre), diff --git a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs index 2da5a9c403..b9d31ff906 100644 --- a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs +++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs @@ -166,8 +166,6 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables // Normal and clap samples are handled by the drum protected override IEnumerable GetSamples() => HitObject.Samples.Where(s => s.Name != HitSampleInfo.HIT_NORMAL && s.Name != HitSampleInfo.HIT_CLAP); - protected override string SampleNamespace => "taiko"; - protected virtual TaikoPiece CreateMainPiece() => new CirclePiece(); /// diff --git a/osu.Game.Rulesets.Taiko/Skinning/TaikoLegacySkinTransformer.cs b/osu.Game.Rulesets.Taiko/Skinning/TaikoLegacySkinTransformer.cs new file mode 100644 index 0000000000..381cd14cd4 --- /dev/null +++ b/osu.Game.Rulesets.Taiko/Skinning/TaikoLegacySkinTransformer.cs @@ -0,0 +1,55 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System.Collections.Generic; +using osu.Framework.Audio.Sample; +using osu.Framework.Bindables; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Textures; +using osu.Game.Audio; +using osu.Game.Skinning; + +namespace osu.Game.Rulesets.Taiko.Skinning +{ + public class TaikoLegacySkinTransformer : ISkin + { + private readonly ISkinSource source; + + public TaikoLegacySkinTransformer(ISkinSource source) + { + this.source = source; + } + + public Drawable GetDrawableComponent(ISkinComponent component) => source.GetDrawableComponent(component); + + public Texture GetTexture(string componentName) => source.GetTexture(componentName); + + public SampleChannel GetSample(ISampleInfo sampleInfo) => source.GetSample(new LegacyTaikoSampleInfo(sampleInfo)); + + public IBindable GetConfig(TLookup lookup) => source.GetConfig(lookup); + + private class LegacyTaikoSampleInfo : ISampleInfo + { + private readonly ISampleInfo source; + + public LegacyTaikoSampleInfo(ISampleInfo source) + { + this.source = source; + } + + public IEnumerable LookupNames + { + get + { + foreach (var name in source.LookupNames) + yield return $"taiko-{name}"; + + foreach (var name in source.LookupNames) + yield return name; + } + } + + public int Volume => source.Volume; + } + } +} diff --git a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs index 777b68a993..536cbdc562 100644 --- a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs +++ b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs @@ -21,6 +21,8 @@ using osu.Game.Rulesets.Taiko.Difficulty; using osu.Game.Rulesets.Taiko.Scoring; using osu.Game.Scoring; using System; +using osu.Game.Rulesets.Taiko.Skinning; +using osu.Game.Skinning; namespace osu.Game.Rulesets.Taiko { @@ -34,6 +36,8 @@ namespace osu.Game.Rulesets.Taiko public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => new TaikoBeatmapConverter(beatmap, this); + public override ISkin CreateLegacySkinProvider(ISkinSource source) => new TaikoLegacySkinTransformer(source); + public const string SHORT_NAME = "taiko"; public override IEnumerable GetDefaultKeyBindings(int variant = 0) => new[] diff --git a/osu.Game/Audio/HitSampleInfo.cs b/osu.Game/Audio/HitSampleInfo.cs index 23a74d3fa6..f6b0107bd2 100644 --- a/osu.Game/Audio/HitSampleInfo.cs +++ b/osu.Game/Audio/HitSampleInfo.cs @@ -17,11 +17,6 @@ namespace osu.Game.Audio public const string HIT_NORMAL = @"hitnormal"; public const string HIT_CLAP = @"hitclap"; - /// - /// An optional ruleset namespace. - /// - public string Namespace; - /// /// The bank to load the sample from. /// @@ -49,15 +44,6 @@ namespace osu.Game.Audio { get { - if (!string.IsNullOrEmpty(Namespace)) - { - if (!string.IsNullOrEmpty(Suffix)) - yield return $"{Namespace}/{Bank}-{Name}{Suffix}"; - - yield return $"{Namespace}/{Bank}-{Name}"; - } - - // check non-namespace as a fallback even when we have a namespace if (!string.IsNullOrEmpty(Suffix)) yield return $"{Bank}-{Name}{Suffix}"; diff --git a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs index a959fee9be..4ac30fe7fb 100644 --- a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs +++ b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs @@ -31,9 +31,6 @@ namespace osu.Game.Rulesets.Objects.Drawables /// public readonly Bindable AccentColour = new Bindable(Color4.Gray); - // Todo: Rulesets should be overriding the resources instead, but we need to figure out where/when to apply overrides first - protected virtual string SampleNamespace => null; - protected SkinnableSound Samples { get; private set; } protected virtual IEnumerable GetSamples() => HitObject.Samples; @@ -154,11 +151,7 @@ namespace osu.Game.Rulesets.Objects.Drawables + $" This is an indication that {nameof(HitObject.ApplyDefaults)} has not been invoked on {this}."); } - samples = samples.Select(s => HitObject.SampleControlPoint.ApplyTo(s)).ToArray(); - foreach (var s in samples) - s.Namespace = SampleNamespace; - - AddInternal(Samples = new SkinnableSound(samples)); + AddInternal(Samples = new SkinnableSound(samples.Select(s => HitObject.SampleControlPoint.ApplyTo(s)))); } private void onDefaultsApplied() => apply(HitObject); From 878e9f182e1e1fc7d3ba6e8b3b5961df208fca3e Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 2 Jan 2020 15:23:41 +0900 Subject: [PATCH 0672/1829] Add storyboard sample test scene --- .../Gameplay/TestSceneStoryboardSamples.cs | 74 ++++++++++++++++++ osu.Game.Tests/Resources/test-sample.mp3 | Bin 0 -> 94525 bytes osu.Game/Tests/Visual/OsuTestScene.cs | 4 +- 3 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 osu.Game.Tests/Gameplay/TestSceneStoryboardSamples.cs create mode 100644 osu.Game.Tests/Resources/test-sample.mp3 diff --git a/osu.Game.Tests/Gameplay/TestSceneStoryboardSamples.cs b/osu.Game.Tests/Gameplay/TestSceneStoryboardSamples.cs new file mode 100644 index 0000000000..5deb136c85 --- /dev/null +++ b/osu.Game.Tests/Gameplay/TestSceneStoryboardSamples.cs @@ -0,0 +1,74 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System.Collections.Generic; +using System.IO; +using System.Threading.Tasks; +using NUnit.Framework; +using osu.Framework.Audio; +using osu.Framework.Audio.Sample; +using osu.Framework.IO.Stores; +using osu.Game.Audio; +using osu.Game.Skinning; +using osu.Game.Tests.Resources; +using osu.Game.Tests.Visual; + +namespace osu.Game.Tests.Gameplay +{ + public class TestSceneStoryboardSamples : OsuTestScene + { + [Test] + public void TestRetrieveTopLevelSample() + { + ISkin skin = null; + SampleChannel channel = null; + + AddStep("create skin", () => skin = new TestSkin("test-sample", Audio)); + AddStep("retrieve sample", () => channel = skin.GetSample(new SampleInfo("test-sample"))); + + AddAssert("sample is non-null", () => channel != null); + } + + [Test] + public void TestRetrieveSampleInSubFolder() + { + ISkin skin = null; + SampleChannel channel = null; + + AddStep("create skin", () => skin = new TestSkin("folder/test-sample", Audio)); + AddStep("retrieve sample", () => channel = skin.GetSample(new SampleInfo("folder/test-sample"))); + + AddAssert("sample is non-null", () => channel != null); + } + + private class TestSkin : LegacySkin + { + public TestSkin(string resourceName, AudioManager audioManager) + : base(DefaultLegacySkin.Info, new TestResourceStore(resourceName), audioManager, "skin.ini") + { + } + } + + private class TestResourceStore : IResourceStore + { + private readonly string resourceName; + + public TestResourceStore(string resourceName) + { + this.resourceName = resourceName; + } + + public byte[] Get(string name) => name == resourceName ? TestResources.GetStore().Get("Resources/test-sample.mp3") : null; + + public Task GetAsync(string name) => name == resourceName ? TestResources.GetStore().GetAsync("Resources/test-sample.mp3") : null; + + public Stream GetStream(string name) => name == resourceName ? TestResources.GetStore().GetStream("Resources/test-sample.mp3") : null; + + public IEnumerable GetAvailableResources() => new[] { resourceName }; + + public void Dispose() + { + } + } + } +} diff --git a/osu.Game.Tests/Resources/test-sample.mp3 b/osu.Game.Tests/Resources/test-sample.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..f7c344f39ae4fa90c747a80957c69c5fd4b21c0e GIT binary patch literal 94525 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

2pZ3Dxqu% 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

lZ$27b)H1)- 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 G7x-_d5di@J literal 0 HcmV?d00001 diff --git a/osu.Game/Tests/Visual/OsuTestScene.cs b/osu.Game/Tests/Visual/OsuTestScene.cs index 18dbd212cc..8926c76018 100644 --- a/osu.Game/Tests/Visual/OsuTestScene.cs +++ b/osu.Game/Tests/Visual/OsuTestScene.cs @@ -105,7 +105,7 @@ namespace osu.Game.Tests.Visual } [Resolved] - private AudioManager audio { get; set; } + protected AudioManager Audio { get; private set; } protected virtual IBeatmap CreateBeatmap(RulesetInfo ruleset) => new TestBeatmap(ruleset); @@ -113,7 +113,7 @@ namespace osu.Game.Tests.Visual CreateWorkingBeatmap(CreateBeatmap(ruleset), null); protected virtual WorkingBeatmap CreateWorkingBeatmap(IBeatmap beatmap, Storyboard storyboard = null) => - new ClockBackedTestWorkingBeatmap(beatmap, storyboard, Clock, audio); + new ClockBackedTestWorkingBeatmap(beatmap, storyboard, Clock, Audio); [BackgroundDependencyLoader] private void load(RulesetStore rulesets) From cba6d9f7e644ea46b556b833cf2251a403cbee5c Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 2 Jan 2020 15:58:11 +0900 Subject: [PATCH 0673/1829] Fix taiko samples not being loaded --- .../Samples/Gameplay/normal-hitclap.wav | Bin 0 -> 519970 bytes .../Samples/Gameplay/normal-hitfinish.wav | Bin 0 -> 520074 bytes .../Samples/Gameplay/normal-hitnormal.wav | Bin 0 -> 389074 bytes .../Samples/Gameplay/normal-hitwhistle.wav | Bin 0 -> 717250 bytes .../Samples/Gameplay/soft-hitclap.wav | Bin 0 -> 573290 bytes .../Samples/Gameplay/soft-hitfinish.wav | Bin 0 -> 447418 bytes .../Samples/Gameplay/soft-hitnormal.wav | Bin 0 -> 218578 bytes .../Samples/Gameplay/soft-hitwhistle.wav | Bin 0 -> 650922 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 osu.Game.Rulesets.Taiko/Resources/Samples/Gameplay/normal-hitclap.wav create mode 100755 osu.Game.Rulesets.Taiko/Resources/Samples/Gameplay/normal-hitfinish.wav create mode 100755 osu.Game.Rulesets.Taiko/Resources/Samples/Gameplay/normal-hitnormal.wav create mode 100755 osu.Game.Rulesets.Taiko/Resources/Samples/Gameplay/normal-hitwhistle.wav create mode 100755 osu.Game.Rulesets.Taiko/Resources/Samples/Gameplay/soft-hitclap.wav create mode 100755 osu.Game.Rulesets.Taiko/Resources/Samples/Gameplay/soft-hitfinish.wav create mode 100755 osu.Game.Rulesets.Taiko/Resources/Samples/Gameplay/soft-hitnormal.wav create mode 100755 osu.Game.Rulesets.Taiko/Resources/Samples/Gameplay/soft-hitwhistle.wav diff --git a/osu.Game.Rulesets.Taiko/Resources/Samples/Gameplay/normal-hitclap.wav b/osu.Game.Rulesets.Taiko/Resources/Samples/Gameplay/normal-hitclap.wav new file mode 100755 index 0000000000000000000000000000000000000000..9ea2be585516a72ebae49f772b53fece207fa136 GIT binary patch literal 519970 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

=ppuLqb+3L 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

RoAtMb|b9zJ=8| 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 >E!>L*bj8 zOtDNe1>0~AhtFOm$qk>O?{XrO4>$o%@h32|uHV9JZx;p?$gsq{hFrXik^EU|JTK)V z`7uR~OTC#)iUmDlyrl)%Vc>%`Prb~SB%B~do;~8%#u_B2uTresx}8-W%Vv|yRbXFt z5(#lj0=6*}=1#2u<2fqe+HncKR_Ktn;s7{pYfcnSo`iqfTE!kwIWS*tGIM?Y4muJI z*zJd(V4(FPGOC~gB-&4auCPw`v_ybYp)5R7u4WT|{t(;y#^7RyNF3j6hTVUE2wq27 z+BSN{5Gu; zg=sRlcHa$1M-}V|*bY|HlA$ByIg5Fc2Z^bNvDLX7eyCca?7`R2cm8YfYlm;(^ted0 zcZ4A|QdVTK@0A2i;2KeNuYwK1JBZH5El`p&2q#u;VM>pVVA}O*xYT?N`j#o8)GXIx zo0+Zb&{}zr`SX!wOWKgZ`ibIKxwY)yupgoY(ENhmcIoYF)&0daq>QDZrYA5ql&TRMJir;_zcJEr(v&- z93Npmnf;TLthqSvldwMzu|%Ea*CB7a3@Xib0hRk> zU{I|O405l51ICYGQeqbz$&jHFPlH0i~lH@N26 zTgX{t$Ukakg4M$OpgpQ{2d3;J7kt`0(OC9F@qRy(Wxg?Ya#& zgfqY7VlR+$T12n)rCPKYY@^Fv)7ZiS3wki@AkN7*qy~nA_yNN)bjxf-elflarY?Pr z4hIV$V&`?-^t+b){&g3<(#K)tsxC~oPr~=FB>6SVek|Gk5{)-c;=L!P<1cRuzG8Gb z>pQ8&gH(r#`C%D;QN|3eE;Qne{tfcu^3e+k*BcMt&&hc zt)?sR>vWzdeVPJ&UEV-6$Jo$3iB~M9#6{Tq*`m@HGy3{)0Gfx&(caU~gv`x#2>mYb z;1&;qJr|DQC7ICJQspS2aYrB9*q~|#=@i2qT;#tSHiIa z2g!S3HrRMo7t$iq;o-X=h->eFvI%qGqu^imUO65t{C+@`?rHdXsSLg?It(w`vtaUB zA5wQ+8O-8el3~XT(Jbjb@tItXU%pt0OWPIsk#)Ibgq;lc&(IagdZ!CLBoTN^;L%Ka zCuI4pBT&*i784%~!rVVjxNXy43z1SDySbuV?D*b?>^>(4$z$h2Y-2GfU9BSa4Tqs* zhz83_QGg-)<)NGzKwq1X(M?o`ewksQ*LZ-WR_PJ%0p%pL)=RX@$pn0y14ZqAYv7;O z8*!(>Dfl(}Df?3&1YS2!pk`+v^X^`R^TV@I;({tf>OW^0UOU0(PahHI9E2bBKSgzC z;=nRYmSj)!1-0LANlNW8uu2;V+fKxRuUWsS%;pyvb$l20yg5bMR{LO4<5!Y2&m7kj zhA_3TWB6p`7?j`Zg(3QTSql>Oqwr6$f7&Y&+?c}5o_3PHj!67ryP4eoSB|afc5o}C z0&_n}Qd`$d9NTR{r3YG|MY93@@VbpH{H;u*p50^b8goG5*+@}vXs{S$DR|cnzz*kw z&>=64+IRq*trIZ*?OE_iE<|^y7;v?ji*v2q!Sk6dR%#prpBveDTkbL>y4*+A)n?$F znTr-5N3&Nh({RrTOXl^cUu0Ao#r}qFCE5k%!e`DScTGGo^j#pht%$%y2OmJ&y(S#c z+6#w6n{Z6`06M=p1LfcJL*u|QY`A<4;$3{OVvPY@d*&s2c)OR3wOyO!z2 z`$C6{yJ(qQ9EdDN0LjaMy2e!EbnQG?jBhIXxtkODneK#BX>i!FozzF&grK+b@N~>U zkW-Zh*F%2n$TMlO;{HLD_Dp0m@^9c_l{f6zyc#r9?PW8A%JKCnZS)l5MZ$ngsZhvE6@xWpivO%=LDJoik(ZQ5Iz@=Spn z7k`Zu|J5Z=`{s)-CufQt*Q79uN)vV~YbU!mcN*4o))p^{IE`AtgGuWfY25c=yhyBV zgL3O!*^6`a7@(+3iVQMvpQ)gk>>Q2#6USg<#B5wIKNHsvh(J@1k)#eHutRnvSk7_6 zMZcnmO_w4@sELV@Lj=?QdJvY0O`uVjSFEm4q*|vk+2(U=X;#=E3=Z|6KDF9KzTwtX zvp37)h=v?(h?2qYxna<@=pXZQj}Xr}JQoYcO~;a>b+}t=0(PAHftuIm;zIRPxRht( zZ=BiObGtxNeI9Y1_ewl{=1DS$yug7DeQdh5J8!T554&kJ z4}X%#P8Y=Rm9|SnFU$P-zFqmEGkH_^{WYW5yu*@wU8fGN3Vn-jzftvFH@p0l{P@&aj$8bvNB(Pe;X3$Bol4(<+0m8#WNT&Yu*zpESigv^G=o%1&1O zS)bl?h`^=U!C)D!jf>wjFpn9-r_8%*jNi6QKoN89v;3`vX{BH-YE7s?zR!37*jt2``i@F!1z5@<*b8jh;P| zy^>rBdv<8xijUn;7&sGa2PsjtixD`!U!NN9y^roXbEtUUW%TZJq{iF=EoUyK*M$6Q zzncYh9KHeVZq$LB{w_578cVcI4zneveR%F6U{Cr3#ZLp+nXtx~OUlDz5aPg*&6flXNVo`iRl6O}YuDNEL#(dl@_x zy@37u(}-2qI|%l76Yt&o0dCh#V1ZLO)C`G6OS_qHIJO;|I#onhvX3Eq6!1P#PRYV>SsSe)Dj{~k84gQGJi@zD03nEgXFz>q@tY0`!zwE)?z8p= z4Zhk%Of=su#9i?Zh{d+YOyk^taO0gPS$HT3Vg{T5yPJt%(RLjcKFxvk3tHjgpIrD* zIf%+f7(vi8V=6nQvba2E0p0M(gDLlqrIi~D(RPn5Tz&8uJJ(2KckxfGlRt^8zNVul zs_-_Oax~Ez$Fol9@}kmSv^YD4r!0DoFV{+P9fxKtI{g7F?W(ZEz5;C&d{E+x1h&Zy zMlaj_aN=A$dyo(h#)-#@<%UF)dqp$gWy6Chd%O>Uwygmf=eGfp))tY|;{|WBg%X?{ ze;qD&heK_86tsvQ!O=%?kTkXdb_ZR8Q8UBfY1vU&cP3OMUK2`APkF#9lloZv@>}e3 z>w7lTcq+Op4G?y8S~z2IAiB0cWfK)QqVw$(95QPxUMstaP6u8wE1w+99$8j=Pc9J) zmq}W52D;#Hg$SauQyb~13*h9af_}SR!sm%Y@cy3)_}*=To0J}b{Pd@+$Ay8xwJPz0 zfkWYe-zT zDi+QHYtDfDird)iw+t%W3ek1!1DId20xwBaKtTP+qMysa?O4Gi;S0i(N>E%dz zc@6N6tFE;4r@7EAJd>IU&+SxHq&K!E;x>{ANfS3=Zf87sIP)7LXPeokFd4|2ISm8u zd;qESBXP$86B@Hp6BU=a(rFfMxVd~69WcHK^^NW5s?r8D*f)`8e=ZIH`%ij2cFj6? za>|DP_%8;2E+V|7K!Te79LbZ-XH(bNYar2#YxIgi}_C`@u9vA`M+`n$t)>D;z2C?)m2!^zGHBckg7OkIYw?S>S`q zldWNWo;T{-D+;V67c`qvDq8Vt3w0VH`UU>4vNa!E*fufRUZ0S)!TY3Sdrg$Gk^13kGGT}`)x(o0M*>)dGg^fQp< zY>p)%`=!XU)Lx6;GkGK-=K^WnXAAZkzga}n3D{#$fhINSU~TXcw;qTD3->p;t0@q^ z-~Ea4&L-fe`3d(W$CInS_Tb=iF~xF`3)t!f=BPI60J{}99+%sGzB1-eE=wA?1pHqd zWMle6Ao{%%+gRI1PN^#3L*IqP;r>feU&!T*>MuZl*F1PQRgN3{egw0#dhoxEd7!x0 z8IP^Vh6dF-k$S^9Qt2ZH0qPVti~Zn0!WQI-N8tC07&Oj5Lq5t@qMiJEwj@@SuRk$} z&6%Udo!_h>cJUop_2nj!nfnDl_ne1Wq3t;Ik}sIWW#HGbBQeIlj(JMn#KD$nWcJf{ zxarnjxF|4^zB#ACf+T%5S{w#T`-@<$qdC}@$1 zL@H@0?TAV{l}bbE*C2aSDU^_qkd*P>bCl9jQAs4)+G(nkmi+Gj{NZ)q?>*n=JkRra z+z1cmjY5TcC%|!_6ZZ<90rxflzZLdE$}D7;NOd?fS&M%T9?L!piovHiU2b|m8otOANl$R})Xw}7596d;%lPZRQkY zdq&~9Q9(RX`-rre$Zb{^}EMXTqCC%j65E70_z^1U|d1o1pf!h56bLeEZ$BWMJ-pSnV{jBq(_~Uda2!*T%SD zrDF~+uTy~Khk=8YTj@x|1;OR)K~iqJ0P$*rDAxW9Od8yg*2hKSnY&|UBY#%l=F$#0 zeEeN}aY*VsR8+Ed9I-^wMB35P(FEVg6SBE~()qpBC}x+6)PGeV&b` z<5V)mS5%u{KDm68YF{+R;%t@tkONJL((ScXj&Y9)5|A-G;+Xo!F1V-cS$&*2W;0f%xcsVDytyiE4dtTt8F=+~E{CrO&H_Iy@z z^5L%v2COnDl--SA5{6FYzaIVgw}LtE-?x`q<43TCV21-&khmcK4_?}(iZ2$ZSX-~( zD_qaMgimKEF%^qw8C^|_Oak%F?CbQybSTUT9m6;DnHI)>r*)-PJhZ@5zGj%z35N>c zU9DE~a!Yq%QL%Q(7nzr^X+Rqn`J_4wSTAjd<4Xe2zz_S@D_E ziY1PJw$f;;%N$YPNxZQ&mVK%>!=Od;q=M2Kh#Pua$PpI6?i+_;UKt2EYxHSKhwgN) zKAO_1kgm+14z(9I5KQpGKF8)+&Cc78ztA6IYJ*YS<1Y@n7K?uan#8hWOK@Y=aEjgH zE{yBAi0#e~F=Y#%$r_j;EZkHc{{!TfosK#{8z>GFyAQ@Vc{actF1bGV=&! zlZ9*Hm5VkduN;oeV>EE^&SU7m?1=Qd-o)*Pe_)Al7;~2PvW{|Dicz3yEit|D&ZSrQ zey26IPC9_=ezk-D5Hk$Dn1wa+uK2I^4{AH!6w?CE;GizUdEy02jF~u+qgP*mp3|lN z-@zVqVN?`<3|`NtEpBpB-4<5&FP7#-ZQi*dl0TX!QvckA9HN*_qwFK;o?Qw}?N|(B z|7#T-r}f2(OCInxPX}K{2;z^2E7AILm~eAiBqn<}WB#Mb_6 zdBtE}kr&<#-irJ6&cGrCW%Mf?N}JyHrS4A_Nqzsy9H&U)?al-F(R4%3-Z_CczMst} z9txavZUmp{uEgU5jJV&F5E2X0$t=#9=G-_TgdbPu^3+d4aG^Epq`HE_jZZX4_o+}s zchso_$dT6Bn05w^?rD3x$m|DYXl17~MpP zat)||EPx>UNdX%Ga)k`C8o=W2zO|5ZE<)Hlxm+~sc^bMVbZ3?GBk+2yH&tqF#Hszd zbC-$@ILvxG+dHnpr{Sq|&{+v}%ASBv<{7cql{>R zx5Ax}AG;Bb*VGE}roW4q%gkuu1%|1odh)5uqj7WL0cpn0g?-cFxaOdY!Uz8%y})~P z$bT%Ez8k}*-51hta}VzILGs1EIZs1QH45gVD#g_>7OHprlsE4=1oijy1^tj{+%><> zYPVGtDj1tcaj{yQS(J&bp3=NI=@?#!vPAdi((^bh1p1vzhLi0Jgx)v4i!+D!DstZ; z{e61B#rIv)d8qyb-ek0%w^}Ch{vad1ZRE`}3_RI3W)06OzRm|MbJ%kBIW7uW!*h10 zu^+q=%zm8bMK7NV$%%Lq!!re8O z@o$?yj@aLhW}T+u^|%k{kc24H%*0*=^D%bJc)X`+h2tyQ;pgI5aBG?iD~FkZ($5yE zdyxiPPb_Aekd;EI{U+`%&FD`r#__E;7g;Dt;MbE1xuDa2u8IleElO#8*#`L8h9GXg zQ%?)V4Pf!k+j{P&p9&{zV`DwFWxz+61>vJQ=v z3h<>@8_q14i!EO|S}RK3M5kX?;pdqh#Gj^f@U*-;dzr2V-DRGvALK6ldOMiSUZ~LE zSU1vtlSp-)I>3Y38mu|_C^XB%S!3gW;8S~!yZT0uOYuW~vfV(uVpq$f*9^jUUqX23 zb~VH~sbq1a4Vq(Jg&SE*@am}ycr#rUXZzK|*k0Et>`NG2D(%e9d-`IC?nYX^GC>JeFvj}HxCub2K-P?{kB*x-Z`E{<&(#BcKp7X+RReU?^B|F-`fL!G&4!bcMrheMU z8oB;Z`*WVyGQnD?h;YE}*hG^c53j_yaj0V@4*C}=^(g$tF-CU0Il80uIQc)SmAZ_2 zJl#!iO*O68{=EV&KUJ*5)av18^L13{c82C%T!;grUD?&+r~J#TwUW2^08jZ8#qmSl z@X+S%{M5Ldhnv5m#BmqdXlpMt8Plz#{@fLeQSM%H_c-As)8m}IHUJMst>G^#L-0ep zIaj{2!_J?aWxnszVW*xE?m0CYTd(fJ+AI68G~*mPg$>6x+q*b9>!dKhvipPp`AnIWs{;>Myog7Ra_0e6 z`P`x7JU(83h&SK2cWfzPhnDZ+WusPBD6pa9-IYty=M#+? z`H-E@II!jMFn(`)nA_Joa^lAG{H4y5k2u|BO-a}ET5?l*rjQRw%&2`vmjs*I;e5a^ zP2w=jA@`*ntdBKq5S^s`;m>9pdeQz7w+tv37Thbq+od{KBzc2-E+2{mdMimgfI)a^ z#sTR0Vk-71=?xmK9S~MVfrsR;du)40w))s0DBj+mH@-q}zZJ|1Ufz`AQObegQeXJt z3Qid?l%+;%{<>P3XPSQF=rMn&w_hC}Z0}DGTK)NP+yQ8Beorm-Euf##46+y<_)!vx z3O|di{Jv$NwnKO5KBENvf1edTbUBQtHO$~w%qHBu=ZB!$J`97DItZ6mNgbY-!bujj z7#}1aWlPT_s4l^!VO#NjFNoMv-s4xF9cr7V1yp z;hv^+;Q0)8@@y76nuRdW3Z&@#2!7e^i(s5Ok1L#4;P73NhFN?Zcj)U1>!p5p`O*h4 z&!iD|&0dAOukOTA9}3XDvjSE9isCzZ2A|9?|O~JCq2TXRMHllzWN{rot%g#nQ?8**5jSkN&mCYPo!OcyB+_X z=qh-19L;Z<&ESk_9bKQE21*t#f^lu3s4(XabgtPXR390OsWuC6dYC^xl5Ii7@>3Y~ zFbQ@Be8n{_8Nz>mHLM4C$3fVwtd|LO|Lw?+2s?kyI*>A?!WPg)iX)Rb}@?;v$e83cZ?#IB!AaVjpwuVXTC z#jh0H)a5Ilv?{>X`D)hfvn}y>w2t+g6}w3Lc~|Qt7s6>ycqv9ME~L_+QW#<4!~qAb z$z^XiWrWY8wyb<0HC3Kz7Ah?Hx10lC?4-##PF$iFNNabD=P{jP#5|8^KGh3g)A9gb zR{I_{S-WzB^?Yob(31mI58^PrYB8Z~Df*r{Ek5~sO04xfF4(4sWMoqZ5zlr|)!|Nv zS+n4=@mvtKl&=e_Dn-eeDh0K`EVMt#4u|4 z>yBGzuczS5RB&utOmF)HK(J2>shgBT(o9uuFOGww7N02Rn+Mf@v5EPw(kLQzmEgw@(`6<2RN!icdg4u#`T|nlI(Wx6s>Y2OP3* zoN#`^PE^|xOg4X`&_C)krHuAW% zlgL^MJnb~#_1AOxb77CxZ)tc7&g*$!+Fmpan{)@Sgzb4 zPA=$Vo#y=wWDoA*lyxKU>orGgdUhO?J(s}wb?Zpc_6c3xN7;3rZ zFLn-I41?cTkjr)@bbr(!bu-&w#NDHkFKH&$)m)+PCR?P==0s}tIEXKMW{Ib~j^n=% zU*tO?^6^9AGZ>bciK3$~-Z?rE*99NMZ%>EA!21#Ch@8{OyHL|e)^af(YO#8IjH6MDXDKCj$-TUeix z#rj(#W#e~6^NJk@AZ8Kr_CewJ(0v~jZq37|SMR{;^`p?ocQL-~w-gd*twO)u1&}&z z5k_3@j=CE|QEhyGyyhB*Ba@_ep;2?K2R*Hn?y4=o~IcZ7Ibw* z2+eZ-Bn*3`OOCgGz~EU%9Q3jdTBSCrw}&^%9#^jB*%O;(em$?#)klW`mQ@Nr>Pv;` zn@@qI#zNsITmu`IQ*h{&CMxi9SSxkyl-;%j&F8Cd)U3Bccv>eMEeF}NAJd`pqY$~h z+Is0{>u9c853v9GmuS*UF~9F5Dhmu1W3C61wMR6_WFIKRzR zPC7rtmJFxA6kpB@fKfwjWHM_R)W5p|ce>e8hf^DIS4(G}8F&hFPW54`*o}TCJM({n zBHVW#%*zJcqdp@hbJk1^Zn!jq9k)q$kFw7+>5v`AT(hU20m>X~bzStIy@>3i|3Y@u zHdCr9p6Ou^4XE0XMg12m{Bp zK%ilh(8n|uIvt!WY%S5GgRjj5$L>c(UHd(-%JLsn%jZ(TZ71w|E`xRIr{lJ^N9;dl z1txsX;nc6Yu{Ktlv;EJ5w^;!&54qau@hQ#mU;j?`OD8Oy~~*%Vv_}SZ7=2#gw0hJDDS|i8^03D=4LqH4P)Jzh zjQ*=Nx%S9D1iQCnQzNkk?vCK>CsIcB(Ox!^^y^tG%Dd z%Wf<0+y05#uKG!w5(WBTdxjV z^n=E%Y)DdDMFYk^f~9+O*!Nm3EXbe9mrPy>BQqvTtT>_vD^Ihle;K9qRV+!ro=*#W zKl45Np&YRF3fGT0$={Bb@`TeBTqWrlYZ5l{sih}r&<7v#KKMtbkg*v4-DrY^Ur$2w z!d)0^q=`$%CrE6-L6|Y-2%gob0$rOc*nU?BAG)2zx3-J$M@uZO@Y^iSZR2og#CD7= zG{y_g#+VqcgGv_5pfPqOsaszXEu!^Uyz!a(wwsej-E1zH{F8$EB(sluyp*Lp!e6&# zajWABPP7Q-FH>gly{y@s;c3o&EtW8=3}y?TaQ<7_mCgDDafi@-Ft-0BZfmi@Bg4D% zuHRj8PS@E~mSBlf16Y_~-4zG)JPb?vUJ{+E%q8FN60%wJABH3sP^=T-p0KafN&W`c zOC5xoOY1Q3awg2O&BfW1j!^By{U}cv#D~XhL3Ni=tU5gh<{j|ie=D!kbI*H+6e6lu+m^I~nQfL*8LikkN#F=@<9%Fo}26X!4Dt2Mb8?sbS`<4&U6q!=FBc{ENM z7ss*ncc68oJ3pMMhigJrdEkfPxb~hA>*@BD?t!(`ta1isr3Db&Ur!zXeWw9SZMh=! zg{;1H5&yPV#DpZtJNiHiC;ztO1+Uhl;oBmyxF8rko~;tUZa9D)1|Jbu4wP8bJtD>F zw|vmDPFLLd#S{H}UqQgt;TYCrh*{cl@bQa;pV1qk*ilUwXX!?pB3L|Ex1DtxQs|;z z5U;GMrD>;Tvf9c5vM~>1+m8R_Vzmn&$hZR9OZ>@uQ3BjGNT7JRHeB^E;is!_LRHTK z3Rry|D!p^zy|OoG$=l$TiXm<{`2aJ+6YxNUHF{}pK<_?BByQgXA*MbD9pV?!$|at7 z_{;@)xsD8v`d5&grehb4fgDt}606syk={B7)KHf+&g|j1>|qR*-&4eUg*WNwg-e2; zNi7ZQ=r5i~i=n=8GAjOkQLHV!LvOYomoJQ~Ag728Fg~SKH2Cxj23uRuHMK67mau}- z{|v^wxs9^QwAWyKu}FSmY?kPJXE1b`)K2eu--I)z(q3kMmT<*(fGr_9!xoCmRm7n8@vyhvpWH%K(K;_s42`J)y#pd_fk0?Uyad}8Si+wZ zQabOo8aR57z?BPZp`&1k`}4YDK;>#7m`C6!TSe~Xcn5A3S@DjmiXfY9#6LAh!%Xd3 zQa$Yj9&zoIbgB;+4>jkQ+7{RwKa@=#H-Np;1h%s)l2fl}9snG;szEi3&dPRx2 zTE7UcZ9OS|tN#jb!uHVn7ddccu{rnj4~7D(7CKe*6o%Rw(l19P+@YvTGvd{8Nv#$s zXkLSHt_ifKBC-);fIlT0H8T&SKHt39IJ&vS#HS_|wajoqW4OS~iztjU^JwaGX3DLG%Pk`+rlDQ}FvIS$xN7r4Ojqj0q3K>A zw;s%!cAATu9!}u8eP=1l^%w_9XO_bDG7g1XyrnRgZLc(Q<{Vf4A@N5?OU2i>PS0fh zf^dlWJc^$gKZGt*uTYl&6YTmg2ds|`K&`(@7&u)EZN8;}JZTh)J*AnjzYjW2P{+&XwwF)HU`inHJK7;usm%VzSGS4Y^_K9N&{PV=RONxZtr zj(xs&7WDPrgG`uO|nKwO%jiKQDy zVV;&T7JOfYK1;XZvZuSTboqLmbYV4;n;G_XGexH@-4N^7!;Ok;5cai`#f5gUyZZtT zDRLs6n2!9W#$Wip&0bv{*sx~DatK&p&8CPd_Ja4^swp0o!-c( z`?m9B^luV%-7=j<_L?u~JRM3S&$mOr>BA|c$pwGpc~RwLAMC{^DA?5scdkE93*wAn zr0-KP|36Q;*PZc@;GHBZHE4z}t1nROt;MKP)ti@&O~r9r_38KSy%=%;$slDF&f4CI zwdO9x(T_8~DXzOQJXk)HJx5N4 zrpCSeW^@=Vt&89^PbIW+JH#p}-Ow|!n0LtvWKj(%d?LRKt47b3^4|@V@7s|F)}54j z4pZO*W`6{y{5y0wt4T1>nk;!PBn|z{ELm+}*r&%&x?Q@p0UK$!ew5Vjp^p%?rYUOqG8 z@)LrfmsLa;b0oX&>|EKu&7~Z1?Fi(2yUViu+lAASWjr9KoVr{}=aG5>qhA;oRQKd( zGB5u5w^Ho=Y77TnykccDq9a!fasZ3XrL_F}L(n;MT;8%G8NzL~u{mA@pBD+JfkmLI zRe^K*Tf(g^XK~+yZO}5{D88?H0P5dQql0P(%pIAGM<+(Y`{_e5CvqWaJ{brjf4n87 z725RSb1Lb}`}17SZggYtX>Q6nCd8kq;U_m&z#4;FT+zW?v>EtH@;58LI@i0Ij@>q=?@v8wb^1!N=ynDjyRn|up6Xe=fr6omejJ(1BMeQz_}2{1T08))%uiGOcrToAd~tEw z`>7aVLh=E{tq>yakhKm|1@Wvi#LM0Yk>YRIY*+!`64i0*_IglHlr$&*bZ{+E!pe_T zaJlg@^woF{3d?6fid7~w7`}#|5B7?xUyblpN)L{EmIiz3^;oydC$aRCqU51?K#Bi# z=1o&eNX1z4w5)qeeeEDe(>6=K&9j1`p$Yfh)(KDeOy^CKm+8ZPA2!!= z$I#DOP`mwYw>pX({oB!@4-XPcMFDGaV}~PUn^D-En+)s5IY4pwn0x7i6!-wLPDT zOTrpKJ=l-Bq!bIL`5ie7GDy3uGudj6Vg=a}LDz0I7u$3edPR(q_?hK!KspC2do0I2 zYQYj8AQ7KVPUJ(kc4F%NWR`-PaN@&ee%yOL#Ln!^bH*J7^VOX#$7)UknVu~Un=_fN ztXP3lqyJE)Fa%#OPoPg_Gca<#Ag+2Ah;Au$q~g5*qav2FqT)n6*}Rqw9!KDkt-73N znTY4=Z0YP%U({GyEBaY=#vX4&#Gu+FS`@4ZcWh^I-LZ9WZq+KDRA~ac<>~yop8rmMi=0E%MYy2vGeIlX2zQ^*0Ig*oz@$Sl#P28)Kc{_z3il86F-IG# zPfg^4KV~?_C4|kRHE_Q2UT&Vd9LlZY*=6l1ajIsb#2X8y-nM~k>Hd|zc7rdjb1V6@F)Ath)vrd&KMFFjX`GtH%_#aF4%s??e^ zt`c79D1#pA*D+~ZICOc@h|B(V!}0wu;=g?XSX>f-=5=ux`O69)7z^mubPv8SSqz8v zToF&lhryHUy|`KR2b5*(Vxt3HhmS3OuNd0XAFNk z707i5!&&)3Evbhb;SY}bVq&tt^ggb(3T^ix^-sMh-XR&P9U8@h4aZ?`&_WpMz6Sa} zcm^$-y5h1JJ)GRM7+=Kwha>&{@pQ&Ye54s7@%sAWSc@opxMT);FU!Oi!`I<)-;MYu zZw59+*@EkJK-G!Xl)3&X)EIuEq}fX1%j~^;y2ndWD!s`^EXGS(XElH6n!*Eq-)6u3 zT;6;wgPTm!`MuX7KK}JM-zsw8C+~Oi^kX%28Ol7| zIQ6F%ZZ_$|{B|X_n$4&Dd55u5V=oLh2*IKA5L4eNVxOkTnB1)|ygD=m4-Ac!HTf>Z z8w*EMg2a!ou2E)PO$|Ib+?q8410}7#A2-e13w5V0_|>(S;M98!@3F2FK9)`u6*j(rr8&u>Swjvi*>G9dUA)|~%YcKz*CE@f+~b4H{!KmU^j=DJ8kKY|d;seV zdnup)*ntbZ9tmeR_U1>sxZT_X_ijE84kzQm^IfWJ z;*tx3;FKgfoy>#_Hx3Ak4Z7jtQhS)QBL)6@*A-_qEf#!FSmGS#!E&%}gEjHNNW$F8k_rYqcmK&@12CK7%Q=}mqOzEe0?Z78H8i!X2HU)%W(4@eLT`A!+Z}{toEvhet#CA?-*0CSFpuB)2<39DX z(m z_DI$L@vyXEGwkd7561rtfxO#;(A78@o^1|A-tYlBovg;9%fr!N_e&|)WsI#p>DZ<0 zI;2`o zoYZyY?gQxY@<_`lwn*)A2KPkB#o|nVCDDSvgp@3 zxOzT86a9uGHVtqzAwkfNY?8V=qG`8J2OO(*oN^*kp?|spf4uAr&kD5JeA!>&Z?G19 zqEljZo}N&(Wt_ONwui8yMit!E4ntv`AFSB@8m>5v5{5qRhar7lk-eu8-hHLUGcI|; z(N)1zdheLOgS+^r0Y_Z3mkcz5xIu>u+Y(x(}reMsTgJF(Y|Rtha@7mryyqyQI3 z3Uf;mVh>f4*^vYo()Sgeduj|%W-X&L9^vqM=S$JGS^aN%$+yh`tc6tM)B$@am}tx3Z9z~8d56`f#z>>%O2Z#GoTzb3}n%mfWR$xAc1 zRsOBVcy1gX0ZF}ku~zO$Fxpj2h24YcfMa(yGf`)!5)Yo);{jc@ku-)6cL{D}Q7ZM4 zH0_HtCefU$sx^``u1Zb5}>r150Gxt`@`Fv3a6RW<0p{H4;S2 zE6~5#SiW^&IQYFjAuiTc5W^EysiI>#ecyhLwm;G2*hRfr^9}IM^2MzB$%7M>qIi~l z9N!!>R_cE6V*9vs3cfa;3m!FycZQDQ;WHk}tRaf>f3GPrTXGE!xT`{Y)I$6>ISf2c ztjAX;W&%hvfNj=ZFenJcbe}8`>ic11zeK3W41tA1cY&v$0d#r5!YHX1p|PdEIJmKk z7&dtw?d{g3c%4v1j()x9tl~WJp_dltpSTNG$GP#_-~v#-xrR+8pKiyb1?=nT4R(@W z>Ez(2;&rV7Qf^w29%N_IEPr=8zyGYPkH>zpf1@R2y8`W>7z3j&oEP)_C2yi*f!J@m z#8#Z2E&h-j$H>{}21WFIPcIBza+1EhI0epg z^|>MJjW8|8oWsf{gYga(PEa}ll^q(WX`})i2)#ogCKjNRn@8OTErF{`H;Bo@jcN6S zBQW&MMpE^83@Mv*MJvZIaLD79cy)j&I=s-Kb#uF5=OyLE_bQ5ojSD-$tj-f@yJtse zwR|hCo)|=*6`aXzjWW0Iyg_sHv}l}lKk`^F-Tky*$xjUU2D;O<<=I&pk{4tK>`Yfc zQ>Tuw;6?>>{8lNOa!nOXzYE}c=Cd%b{1a5y>;b=FBXDG76q+-s zv1lLd_mb1FJ8*n~%?=*|K64)mHyYP~+mZqJBP$Vt z7aqp#m9=1Z{s?a0s*G;&Qhvow5s&8g!yT2Gpw##PhW+RV?Ovnc#x)1(k>X90-x{!x ze~8X#Pvszut&$IUDmy0mk(%#fUQk~^7w;_KcUIl_aD_g*`ZY_XjPuCecrxuem?K!| zo73o}0t9^6ET?CsklpPP80_hU85=}MRPBL9lPtk!Wmhaz&Vid#zQA@T4Sclz5sVtu z8_TD|{_a*#QnUtUf!-!AMC--EYzil)uel-ad(qG*20m^z&f179tFQDs(t$#?57 zo;vD;r(Y})Z-jc`_sDEHSZzgx%1Z)W>V@Vu{=$kG$6<78vQYF=@@Cme-_g02;2hcw zH!F7+4+fgzzE|<|vZEnBHtNW$Ek-ju!Y zx2hv|-nRmbV(!y}L+-RGZy%l66hf+TiDKUgN5urkH2L{_2bz4{Lh?~oQ1Uig*z=d^ z=hwq>bT~@Op05XY{c8HPwi}MrP+`~E&*0?@xlk8Zd4AnUh7Sd&V8g4Q;*3Xdl>Qs>yG$vcu&4yIs(V-@4!wW(z#V{%!39D z#DkZwkof^uw0@ok#~*1UN{p&W-)D#~E)2$Bcdycg&@uR}Ur%;DqK#GKUAb3~4Q%)r zz{lIj>MiWyRXGOWYZ1={Yi`LdCq(nq_T3bnaORQyBVG>B$H%H*)iyipQUIl!6)S0ig z%!BdA4)aAle|mbnh%Nnf*j!?5^xY%rYDpy=)XRwFw<39_jUqqSGvHIxpHt)FP@1YT zfV@2ph=dNQbr}QD z|6i>b>zfK?zqEwQF9%>!{eMFIn4S2v|9)8gdkzNJ&w%J>H{kh+PINg#3)ZU^7XQ%E z7piNnz_gETRC>S~Pgq3pwd+3kcXc@H8n4DhTV43=cv~FQK9{%mR>R&GM)UX1!$I@! zXDT1%KssLzlDTnb`kQ)C3{L(g3_ExOW_;8GtAN?qFw{tRT$zlICS;1!)udc@??d#< z;SsKG(d4uT=kWJ}KCBwygNGwkI9k^c{Y$FJ_{$qm(a@pn+u?M6@Bo^Ev-nuGBMrE5 zkjsx(il-h|^Kj=wbi?dByJyAFk=_kFd4fIce^bWUmyio&NAY#hUbuj5x8k)|@rnK+T zn6>T;-E?rmA^qP{?1Ce(@1^7~)gMWxF01g1XOHR8la3sbF@_5__2L?p0AAQZm9L(T z=hPc5G+=KAhuLM(_>l#?U+gPhYro5SlhZ)ixRU=l8{jYDAiJvf!r?9gFXeKm@1p@% zo09+s&cv3Uad3E*Ke}EY5B86aVPr{wkf2_RVN+s6*{l*&?e;}(l@^M{o-sm4hmCl9 z%{(&dI}Lk2I!Z;74_`IXm%a{h7iW~*p#4%dtlTYximwjiKO67JZqG2{K+#YLGytae z%>qA}$94mcK*Aq0_B^-)6zvX>lKh$={0bp8pZ{P*-b2bzn*o`&`P9@=RqTImwQ$!T zg{);2ut4&JSe0Ic?;)zByKoOo@VQ7)e~MwuM+4q#vmeyOA)Iw|t`MgAoL+zZD8wr} z($a1V;C4%xxSIlt7p{0Mi^>{LzjIaKsJ#o-IL(JmPKCvU!ut_1JWVGB+XrXdJ-N>b_h!p+8qXN#WahmRwN0hhM&%&R1im@rFa1 ze154Z`?)qs_q?vGF!2SgDBn+MOWf(%+G2U)7ITO&4}%o@{c!ZxN^Dzy6fRWfVO+Hl zZn=98@7md6+3ELq(Z>L7P3tgv-CV3N%SD~t3o+Dg9GX2hM5{G2m@(rYcurkR;X+@y zcu(5#Z&*j$lA7t)h6i-~g-`;VZ<=nfpmY(h{r47F%ABjQ)olCBVl&cfTDStS+xb}giA7)_s zvk|Ck8jPVk_M$^mBKp?n;EE_(LL`f#QGBXGz61mO3taL$`%Uay_KVU&^dlU;7X}w~gg- zH7A5=(J?%1y9VfOiQx_s$NpcRScwzX4r`|d@!77o;b6D5Y~1k@lqihi`{BLuuXQ60 z9xOt)LwDrITYiX7Y@a}G!*=rZ8H_J-awsTeE;8s?ky_jqvX6&lj9~Kx_MBei%BQOiQ0?&5JiHObos-A1$HW9U zWUtI!!oI=2hH(0NDG8Ri^#Y^oizRI*6V#_g!n1=%!6@)B-1E2rk52_b(K2PMo&6GA zmvzFKhb{5*tAAj)y&Jxs*cYR(EQjaqJ#n*BUvRbG3q!-Bgn6e){!+?Jjp-(xIJFa5 zZfnfD0_O74Im+yx>C6>ttLdG@5lqRbrw3mbN|`@J-Vk8ORrPIjt%4}fS zoi%)68-Z7i6|a2x16TyZ(t)muColj$V`dWt53y=NQq8*cCKM@&g2Mj{op(5vZ5YPQl)W+ zAG$*?hf6RLH9P6zwhQpq;u8I^vVx8l7!&tDPjTkX%ivwNjQ#cL9kd7?W9JxkL&qu? z_EoAmqo69zj@WrHX-ldB5m3x{4Yv~!Yxx0VC@8gDe zW?&Gurnb?Ys}I2Mn3FsS9VzN;FGk-xo1@9s4D!|JD_6rK2|}AS*^O@p$-j_ltW6gL z%StT_UJ7*Ymc?}OSwD`;A9R=r8aA0cW`^A|_b0pY=8KbZ|xfYl0u7XqK z4gce-)v&P29nJ)~!2GYqaBjo{j<$rt2?0Yoe)TU1hfPJfEpm*U;Cp`HDrM%_8t%C) zw3?ar?JfSQ<}ph}M)8E;Wq2glg!{d=lWFrm;Gjq(uFnu;^)=?P+U^O+=h)1`59ZN_ zOA=V`x*no8kIS=c+zN+p_F!qs9zfM`+_*{yp09k0q;VO%IkJiGRaOL+olY>xqYOIi znjxCk43`etF>9I%AY3MaQScIh@uSED%QIAOVlGo7oPx)Wx-cJ{2C#IsBD0P2N;egX zGSQplS=R;8aJyT99e*0eQy-LLBmCB5!rnBjsU@tY+fy3%Fq(~5mBBq7iLC$bmDr~m z$(B9mp=ke6wgP96t~M9e=UD`(G<4wY8TAn7R6>>4O=S*lSHNRbnpv=I8Exx)O!B_m z1=ZWnsL<-!%)~AQ{ISD|S!sM0jX;kEaMjQtydq#H6c?h7e~io&bte=-nGm{XKePT~#dSK{J|Ce%}*Xfk;g+j#K+ zYP?Wq@0Q77`IssD($X9IC)l%#oHg;^Vo}z-qkvdlyNc&p3t-<~S+;qq5Hrkg z3BO1j>iZ@`QHD|p&nOb^39JMAvNhoL>LJWuI)yxcHjA-V|4GZ~E=E=SA^!}2AM^ey zm+#5fW^V26g9NKYNc?;iwsFrjp;_nQ_}(MXc7r?nPrOD3rtjqoM5dAxV#-)Ay^9PU zQKMz~=D0khh`(202AiyU6o4Vv>v@9H%+xq8Vl6f4FUCXuN-!igjbU5Sk}L^-2wW=MvR<-5_99rI9zgdVXm(Y0NG9F8N+*xyrn~N%t%cEb+>k4dLu)*3VR&a`;e*7qK+UX#bVRo|tp7m`>S_<^_O@+T}vIs=hcX2ORxtspq?6|Pu{ zFjfnuF}Gz_F**JW(`#?deES#46xTcfL5U(}^94!9O*N0P@m z1&%$@O!BE3{*u5_sO@&6nM(+2E1PDp6~DL=vopN~E*o7KBSpZ+|>cg&(UMLYUh40UXVWy-o{832-skQq_W9kxeVwnvF4^N;@ zc?o#)sw3TR6o6<`*<4431{Qza2IWo z)5BBGPxEX{&eC5BFLhoo46WdWHp6xxG|sk z{@sX~eo2Sfx67M(v2Y?Y)*tdmN3?*Plj#&a)3?oaA3z>J=wLaBRen5j@`P3i`E&-u_Mz0 z*s8R9m>znZExFCo9D^FH3_K1C8+{;JNRhE^egsXA+?kO-T1@juAT#N443lW;%cTEJ zWCG?|GFz_hVHOq(Gn%^V8Mz;6@G@jG<1TLrn)+tUQolFF58cY3|3Eqp#jOB`1PS&T zlR!0h%w~I3b=g}xoLG7=nf1QDn`3|8X7Ac;W}k!=vlgpN*e=&Rt~*kIJs%Lk-ddH5 z;?6&?VWT)&F5ZA~%Q>Ed&Sm{!u(^VCXeCu?>4KmK<90rp_89)8SN$p#$WimMzn+3yea(EFDT>#DU8 zB|a;$Ih|2BawZ%_yEE~)w<*cEdmQIhMu6Y(lPLXGgppa6jdomLo9!N3oHosg5!tJU z=4Uy!UAq)scNAeBIO+3dd=q8f)!reV%F@j7d5YlvG!*Q%EPx;%b;x)556sf7p;I}VBGGcJ*q%XH_N5<%4%NWHx0Bho`C(wRRhIRRdcw2$F@!$< zWbkPAINHnTV@6>g-n7iZ{RSae^+T7nI+;Ybs++K5YU*TZ8cg6Xb-KfzC<+hVdza z$BSb?sx%JD-bbLeb^!D(f5T;LE#XhRb3R2Q9vNZ65h0N3vZXWj=MmI7NlYe2kdH7*_Mdt} zer(`8WU814-v!{8J_#<}+c z@JTw%tS6)(Kv1^dJ<2S86Fa+vPC*q^wZaB`(E78KcU{ORYeczu& z8U)laU2`Xu4~|EN@ipkN;S7dekYa~?W0A+VW?#AHV79F?tB`jF%Ma+We;zKuMWZIH zL0ueOXO@Q68&;7=_l9X-=K+$VZidbF30_=(`J^4PX$5o53og3kbauA8fU|FI6c zQ>VM+Xt5-lHBFPqny2H@&~ToD{%hXjUrNx`un%nMG)}W91f|ybBrrAywiqAgd93k= zk@G)z(MoaPaX}UK*_DERjwQg1QdlI_%NsQM4C^IC=)v%BP+!!;PyfCOrn;%&n`S#= zZmN!a-vt;XTF(2VK7_`Tm0+nh;b_|Iw>44^j)CGylwEt!4jfu zJ4&Cs9)MS&`P93GfjR3g@jaggg3rRcyhUf;!?wTnw0XWf6X$i9>it$^)K0G?KAiVT z_^kk>2V_EnI*=^?X{3LmHa+UW@+IaIxkRnEfcsU zXh%b`ro+1y8LU6-4+G#&vnw0mliLu<@sMTQYqCwZPqkuJ=W3vopdpiCDZ_Jrp~4*9 zxB+6#jG3V=dZ7DLjag$pNK~G%(7Wgbv9X^6XA)+SEq_t`HD+o6S*oweyX zr!`d5ARiL7D2!fLW5}I$aIieaxOcmg5t|fdsqYwlaUqgv+Z}->1IrmZp9YlD5M#1^ z!*Sl}7&x-*8GVtSP0)EV4$M4HJ0&Er;g1Yvk57eyBO2(RWDOY#C8*h1Kqn9Avd6v6 zX>g(!D|UpyAHO}U@Qf1>_Ke47Mz=sh)g`QdKAHL8`GkxX4{-e;`OwpB1d?5Es%zO z^P6G8#0HcVE#(ymM&PI64&0Qu9eWZcu}*FEbofv+DsSBhsioQ2{_i?$WV3OZRuN=W zM5EoT_uvya6W@v604Jde`hL?<*mo+S!D{?I~mY!*naiN2e0|a7T#ftAa-c=b&#p=RMf# z22o+x;Fz~3>5R07i&r<2xEs4kK=>Wr90wiLGLXUI?^m%*!yOYUsxdt40_rSJ#L&;& zp0Z+`cKFU<^W(qrKF3S5yQjULb{b8lQP7>?+u^>OE18y#j}h`azVQ zITW2c4e1g^WcDX_kZd=AS1O@URxlHL3Ox)UlKlSDZ>o+r`R_&2iK*)MWfcMxa39|Mo;iWUePNw zyxLB)IZdF=c@^LD+(T5p^@luJxCI>}WWm)$ncsVH87xckhEtK%a3ir54)Q-kUe8T9 z?9dN;6&=8;CyVQKNrM?W;l#nW6IKL`(}&s_Kw5P1`oE*_DKZEncj$oO%o2Rtd!42& zzJW{3ys*_h9#>3A#6O>Rpo3oxO4ldy$_<9`vf_DIc;XFKn*_l7k+T@dGlV0WVf5Yb z9LU<6Pu@7qh4>HBkiGc_5nE&nTgTO5XSq693YWv3->1pi;bLgHo<$zrX&`bP{iJqf z0gck#Mcg7yQ0y$9?td47Z!YU#C!deQS(3Q&LKE(4V9@OB9qb6cgWnH@qPSxU<}6!= zn=W^f`mH`VR9Orv#1;LbKETl*0rXA~*9}vz1g1Z}g6awuq!*opAFU!xU)x%;ykCoP zn!XW~yET}9HN)^{+Cwnm^yFhNL!t4i3qNVZ6jT@gqdJEr$gy`>xOJHxzd>GzP4YFS zp&Rts%rG@v=Hkp|_$8ph*gW>d^=?#I`3hs+Ok(q%uEU&KRkre`5HUO;${PCpC9~Jm zp=@3*bjLSg~kBG4dM{yHGmS$!JuO;@L(~EF<&WYgd|~u*-Fr#7l~DmbRdjl zGKAiWgo<5(7*(tTrFj_`yz?SGa61gW9-PD(^IlWA>s&5pa|l0W>OU0aUnVj?MOitE z2$*ty8oSb=8Z-|{u-}Cr!ZGne{PgY-Tzh#J4{OxHm!loH%&`StPATO3=2n1HV-Bot zb%Iit9q@0U#H?`LGh)$F~4DSwzlbHs)p(t;d82ar4RRpDkF%TV#qp+ih}}|GykNz8SGDpu=Y#76B^r&>$TIUVQdvH%~D6HZ-un)_+oT- zc7oyZE0|jGi)^-NKryo_zDQvcTBT2i_gPi=?QScK^z20l{|WQ^Oc4}kF)FPrJyW`Z zX^^ZZo#SRqoBDN9zWozO?b*v)-n0S~gIq}IwQBx`#a^WDZ!|KuE6IxbK&(6-0gd8Z z?os9*j4QU`u^pu#_UJEOoBAJ!CwJo8c}XC6cMO*=G=QxOTJdgeCiz=%5oh%nfVuom zWbe)di|KWAQ{h5h0vsiBxiR!<(tMceVTJ0cOF_^5EbgBW0p(7c@zkUypdN2&pM*fBF3HZ-vH@2QaTeR6;FsAOEbF)lOU^XozVc6Srnv<- z3@b8A-`>E3GZdJK{x4=4w{h3Wbatcj5Xeq4WgiCqf}h1I93zzv z@IjC*a9ao-a|ZFn^cf|8Hy*~5ua@IyT_C~(=di&1B>egpgRhLQLtxc56qbGo-yS97 z9!))Fzfmm;EL+8_UQmW@!wZ?yncdjo`xmqX8gZ>y7ij8+;=P-B;CU;Z=9*6_*%!Q& zx57Dzx=j8?*RDmru2?MXY2S>meY;4!8sc;Ht>AJe0TaUm;G=vI&I(WfV?!BM^PdJ7 zNgK0&%-YO^q_(hrFHLaz3>)^7hyd?r>~l2u1aQjR9s`bq!*=5oqQF*zi(nkM=k$WR z)ItdBiGi65w4g$ukUS`R%qRaGhv{1Z*mFFZ; z@Yx_%_!v>`M_kuVNG~t2#hhhDrhr0*H>=rs6I_bcvAbL+FwYMxWXGNxGJP-A*v3+G z21mp3#=0rYIyX(8vBrI{&*Lm%Z-ik)O^i94|BiY~E@rOTcwo1KDU&m%ibAD2jHp^Q z4cE6|S~uk5)m{sZ@gvO!2T3p|IF9+gFL&Ukkv(g4$rECQ=CcLE$$aPHx2W0>j9#X? z_$G1y^>=KfQ@Gs?e_%0@n(572^Y{>BZ^RPr9OrSj7vtYP1!d3OSe!eHN&j+*z82lh zoI3W7*Z$g;sXQbP1`1r(du9+k4e5YG7j8q}jAZcN)eH>=tISf}uL1u>5iZorhe;P+ zW56Gd-aWYz=REigM*|DdV(~%VglR%-%G4uh`EL&Ur#BrtP8qQJiz-lKqYP^pavkNf z-eJoFI~0j2K)ICD^nB|rTC?&iuXKJV$q?I0EyBW~YjhvBmQG~euiT6?J@lEIZ_?-y z*J;cYl}*(DyA0#e9m-Q?rZK0T#bJU6_tnB;a-mI}c@%!dtmL%_BfI!D+3cDKVWr1l zdG=Gf?BH&=qTP;X{UgDK^94(uybodda%|qiY)D#C&Gn=Y5{tFzIDh&+;usi(7ksx+ z!TD$Kdwvt%-q6i4H`Lf~ejo6zwmjSQ^De%*rozf;*x<~`3T(gZ0C{+=9Nh+QKv#%8 z2Dw~^wJ&wdZ0(xhQKc%hmuoVrGVX9HMVHy(N;5Y7lbAejC1y1@qu-oi#H2~` zm_a3ZM(CR&^XyeLbZs918A~~uBkK!$c2?j}f+{UIDb04Qdq(S>6xplV3>u2)unrfC zF!`|@n-KX5g%}yu$zG0iyXU|bmFsgHBF@uhxsZ)m)r0GrR2mjLH|W0-x90^x7I z4wJP$2%3iEnB1)Mu!Gw-*bJ+J>yH|6R}th*e(;JkY+H!$_i6JUB{iTcX`@Hkn|MDv z1>KkLN5LBc?DX{0m~1G(F5GY(WsDx;4TDlN<<7t=T3$G1#U6Ze`5~RPG#!6OO5)sy zx3J^AE(g=o!3_$UXm2o$UmEv`+U^}3n5E&Q($vuF455moZHl%L!ycf;=~j&qF{F&tB#D&2TOYJ zjo1g8^i_$Kkdh+nkI!Tyc5$DjT$lZ&W(KC=93xXQmnb#-M)Smjyr?fR_;0fizR2VA z?|RO~6}cC|=~5#7{GS5z=Efy@t9c1?KiM1=j&qS9c0USdOkd+JE>Dw5+q~ z$fm-=-_3XFw>CP;Sh#%w>mJMZXQY4X*SPBvXCQ zBkx%o-Muj$Q+Ge)O$n;UNm{zJqox;K|18Ezx8G>IdpYV_3A0Z=yrgsGtMR3C3Dudq zmb#n~#;T}AAS3>piZ;Z;?bBMAZ|n}2UZ19?1G31vaASBJwV2~DWkb3{4s5l51QQjm z!v4dTfNZ!1W)8hX&fy}&OG%r>C}@I@%m-RkwTP$JunYAXm!ZiOM-JtSe;de}Xf%sXyZ$D26M9`7qHrwLoQ z=hxoXq+xzF9%`&6uP3Nt-kzs4Rb`ymR_Nn~u}p|GcEDAi^Wo(06nx)*75pb;?cC2;WSMwFVG2e%&nreYGkV05v8-d`%t zeBZK!^8DqQKL3S8`It0wI&=fS%W*nmI;_b%ApafIyR0BJ=RIk`6wp~zL+|@UfoIYT zobs)Zoc^7O_bZy{af>H-a=s`^%zcGNf+ykn>&mQiAm_)-Rc9Lmc3=y)Yr?w=$Q9cY zs3dPiV!zi?J1Iq+nKqTE7EM7(pN267)`1#V@5dAeg@#i|-}FXoxcohh>63 z8sW1~Ea=+aq5U>l9A8Ho@988G-s*33ys=GE@TPTNax$z(6a-Tnek2O_cZh#Ir$-2p7CGhk-aW>VzXQ>O;+keOc^KwDTF z3~y(H?YdQPzdZ#cUlzmXmyW=nTnG+JJ9y80yNRA?9-Z+?hm5tXLznr}VX|s17A#l< zVNd1RV}2iq7iz%FoxvN{{O*G3hbKCi;vy6<@h-n^r73E%m9 zi^OqBX**qU^(|HP+lEt(oJi@#gZQ~ai!3=f6JMnYp_M$~=20)_Y`3YXPR?=QYx3ea-+D1f8Pao>4fJt3@w#$ucK)`;?rL)?l)u zuh3rEafq=RrBB|y2GP0o9PGRnIAQ`M{*#AQQTZ_CrjRK%Dc#}nafeY(x2 z>A+IK6bO@-VS~=iCHD?}!&<@R=;_pkK3pgBmXK2P-zdiBOj(3CI&PzvP&w`1e;tR+ zqUqfrUkv2un#vFVY;M(aAfKf$=?n9_~G`EN&^bJ!}9E0efDI4hw>&3J~0! z4zK%mL5YbVG;a9>OEOdGR7H8_%BqRjeewqAo8O{E2WF9=f)2XAREB&ET!hD~-}9uy z_-MKHG!>BU!`M}?iGbt~x-asEhux#tyRVtln#FT^O)M?SYT}3FMPvGH31|u!zyk`q z;J;@-G2=N8-ify0o}*=C!u#{MJiL^M+Sky8gR`KwypY%S;V867wFb+_)} zXyR1dKYj&Oz249=#ar0=MhN9S}w)--4CPx+Ekf91Kp)4|nHRc_ zhBxS9ReBNCSg{o=#dG;%ih+3gR%c1!pezPWE#aU0(@Pepgwfs3Tn78xMm*-@2Q_{y z9`Fc;2#fpJfBYUqCq-e~@;oTpSx=9u$%6Z@o8;ho&aW29F-WgW2B%+l!LH91K0We- zp?q1eIwu10{|VFWf5pIRwH1cwdqIr#EyM#iL2G0XuZgC>UI_u#MM@vmJ5FSGSbFpB z&U%R(s*+IAGz}NelVLraC!(sWAnV-H#vf5fEPgbRJecT(8kaAD%$!&J*g3yp-Gy)x zr6SHeyFbR4m}Abw&zXWh!8IO?ZYg*Fpey5o*8o93i~(@zMoi(SKT zpJTEzazBXuNo|;TPmjxfN5Sk7b@E-k9HumP5#>+!LDp#sd>k5r;uYB>UsRS! zs|%zjCy6n8w@$~??ww$|!U0vw6JVj48dfqPJo~kURO9h({&lWf;m~H<{j(0M zKhCC4`iijl@Jg<2bSmG`z_`SmgCym{}PKOGblkA39PN6Rr4`Ar#p!j)o@4vq zCb>_Wg=WM0=5Ffd(L#!3mhlYgjYxs9C(rV7KiwbRO0h5mTa3MM?5Q29hF7AjpDBj^ z_W_%_vasx86&`S=*q0fG#+G~0ak>^N$J?NPV-s&SuES*M7DA_+V4?0r@_zX&8enjh zT)d|QyE9kAmHo>=@x%Cc>9^m{x_Mw^6hEDTP}#Y296l!E`v|P?&54)H~Rh615D{X%kK*5 zz^PhF=oC1Db(>01Q1=c7{BFa$E=MqW;uCBu*2Am|t?0aB9bFXcinBI5(__AB#FM*M zQ(Xs0jA8}PeCt#Q+7(Pv?`48mr6{=gr-R^JC3rS!$o1x^gX4PcT>QugL^Nt3INl4) zQ`=x|kUxx>w?P@#<#?$-3Ko8u4Ed>_d9SB?!<~r|SeqHd`Ika)yv-TxU!`H|26b3x z6oPs+_WYvzMi?jQg*Qh9P{XAXc}Ahw|M(T|*KNd;YdGf1nmn`3lCv1m9o0Bc*< zql}3+&PiE8oaz>pr1@pTliT;ncKbGXZct9+o<9ItrM0+scM^n4FXNS!TR^;REQCy+ z0D^yOpe*DqS#d^)ssGhXd|yst_M`}caLWt0%=IRC1-8Ps@kwCgNx|(mLp6RH!I^7k zal@~_W=|z*aigOYmL)w#gSn-6p}q|j`P10Ax0!h2Bg6K8vcTeN>TK&&b9`hg!ZtC# z=}zT4`1ZdF-n(35(m6GreBpS@L(d0n?en!%KJ6}^OB~=26cwQODiOM;U?o=OiSeG4 zU*^vl`$?9cFb6$zeTWQx2YanWprk{Iv7I>wLS!Z}?me|c?Xnn`C_N zSPxG=-b5isE`xIZ9O{`;7&vH-S99mV@-sd(TkRYTc9~C}bD8QuDJ{+uJcFI;xeDe> zEMu2`H-`cp57yt0f!%es>`&#J#BSwx)UugIGi|ovWxG21Hob|WVHIC}NRxhKpOdXM zI>hI(9%QF~C&k_jIMyeDR?-jh;@4zG>R2BsuytTYi+_=QgO1E0HjmsDHf72_rSez( z5Me?>EU{3M%YU=SP(GuC+)hlv`&XXvYB#*XSs}eN%&Gw;?Go@{suHU2e1Q>`2~@0m z4qNMYx|;Tb~8iZw%N}TVIfPlY@H)KN5xAsr;vN4Zu3@6f_UJ!ulJv zu>8Y%7_+X0@!>sCID-#mPOIVDKrQ?y(Ly}*I-xRIjQo`P3-ommO~0y(ZS$He*1F5kqi ze?qYR>vc?89|%-12bH&PfGoK-OiJ^I35u2Ivn35)eZGW)>SsXirVk$Nj{xz_56pZo zIzh>Vy>Qf~fNb4-8zN$kn+o{lz`1x!D&QOqXT~+~ZOSzeIu(KTl6T=KmwVT?xCzbz z*;o;t2^t@xQ8d*T>Z}sbM@yYN^|^%JBB68>{D;5IWzd@*L*DrSu3Ms=&RY_SpQDC& zU1=Q4=II5nb;!nzGCyF_2@@wLt zubj(4$?Sp$mIbiOItILMv_rP}1?YS97(^Ir_*(x6wgotnEXPL3+*!vTHaY=L4Lo#v z9?8vA_t1K{g~}cq#8|;`YIo`*YKVGb-}n#wXMX`zcTZxC|C~V8WN}tjCk2g}MqGTB z#hs2(IP|dqtM(s3m4_EG?6?qaRaC@#>hFklv>$mnQ~-Nc>VSR!S2%Xy49t|3W(K30 zKs|gi(`{7?V;O&7&CqSITGs(3>TjX;@c?8z{s?#Z_hHfZhw!rNIE)<6hkU_>oLATw zDw3jkwYHr0GA#|wQYeaWy3aA`N$lluHMahOJj=)~XLS^R;>ysq?BJ|BIJRj%d%ZCV zT`go;iwVKFR^dKwR9JxuuesUkavMGK(T~2{B|{sjA>@r|K*szAa2RWWABmF~c7YHx z!BT?>EfQkl=IArERzghl5@1RU@4@L0T8x&~LQre_03$z|$r+9}Mi@~ogv8Xy*klok(5Vv(tVPCp^#yk5tEn96Ir|#pi51d<3O-zaXveFYT zmWptlXNJ@-u?&A0^z*Jiy7+1K=4-_?m)lW5HwL=QLe4GI*eqDkiN#{Vk(FMM| z4F`iKJK=O=F3A5m#OY&vXy^Q|@vpMs@05vPoO=XhUwTq6tG!ShZ-Ucy?1Az(yRb+w zldShG$IEG2^l@pyy zd~Bw@YvOoYj0WiKghl+$(J%C#y(~Ws#ZkPe*6jADbZT%;m<-i85EAyBq`v7Uw|^87 zyR~abg@c>fh{1YtQ1Hv#>a~$1J-&g&V(!|+_&fW!orx5z>-yR?@80eAcB=@g9h1ZV8U^Mj`SlGNGI|XEz zU9DPliRvuIlxM{c$GOagF9Pr)c^YH>TL$jiJ%DwU&xp@RBSavQ2Bl^iV9X?;FSZ^ZC56KE0cr^w_52Wg>VSGECHvu`D8j914374G4=~;;MBZ% z%%N&NthCl8cf0n1zye-5ighyqhd&_{lq!I2~rE&W2g;t)S?v410QKGuwI>!{b97 zPpXFxx7O-1#*Sa1$j^XL!B$Z69)W=75GYs{NG=>KC3B8g9-3P&v}d%;R&3pP=u9UvIV1GNU(x(&d3X!$ZktGi%%N|(9YrviXOUxL7ex3ztsjS zJ2bFqQV8|TFQ<}|uM?jZGcuD61Bd%-piVd!j80yJ2CES09l8Ym%@;s&{dxF1=`AeM zj)thhm+&z&7(DXxz-*2>{EWB&h984S|H(+u?oZ_%zc@;2b=T2p$wC}Y(Hs-I&f_+X zEL>suAC66ah#{Nnaqcb_i<+zPxnCg8_uh%?l}l-KDW7_}Y$o+MOu4WO8Iuq~yXl4G zjZzYg(o7|rPuWw^bLvoAqs^A$14;(G;!4~zMuz4sRk|d{a8t)h4 z)gMfp#G5eV-|ki<3UtQkE7OaabmeR0Dt!9kv~raG3B-tPKd-is9wzYh|iq9H-&P7#5f zPVV^O=S;A%Jd4@p8)5T>09+L+3n1o$6EXjO(F?WWGlhEaW+ok!`Vrc^gW+M^4iipHbpHB!dN#lVGed z99KwB1KG88C^>WhZrAmr!m+L3wzeBb?%SBva(;WB?Ly4;>OeOo?tNLGj51tK^h=N+ zzT`)tqxl0KEeOD|=C|bGp)C44ISQ`iFX#Jz{|KE0Lv+{kzc3sigA2v0;B~YPm$f(n z)mK;1bZsU0@BA$q78Xs8XPhA6=T`A^a%O{4z$ksRYaVR6$$32GgWzzYHg1cGhQpP+ zIiBxasC$1Et=GKdZCHN|U4qZkFy;NYd2BXX?v+LV6;8NOB-N}gP7RkA3qom_3SPUd z4Vt3gXnc?pjI29HYy88Z&*%f)Ha!s{rY*ud6BEJcsyKSSKL^TTespeNCKv{8D5=uB z#_=3(l5IZ}VEb?(F(^Q~NwuAy)Ug`xw0|sKcr6|E&VD0J2_Nwi*S%6TMU3tHJqM!p z_n@$77zp`AV|4WtI2-(f)^}^rRn>*mdWShxvAoMS;(g;$;i=%yyHyg(ay*E^$@HtT z4a6LmCFT~};dpBWd37NazV;WFknhfLGSVLBaK6d4m7(a`=tZ{V>tl_W2x;A}iHpKN z(cMQD;I9T(G|^DOfnC<9C)7{R%xIkzm(bM7}hMcjB@eRBi0z^jlrMZqmycb;Q@Zh-d3KgVq}vL3`3&+V_4XY?V4oU3N%&N#BZG%jyX0Gmj+4tt?w!S zag{3Xh4V8i)9y)rZF@%Dgq0vRu!IZQhI9-g-O9gf=(0!kZtpeXkO?BP7w8$4En z9jA2;S*n7)b0&1gD)Am|&;%J>g6BI!sPMyRvY*_K4mFODnOrZa zDd*?qzYd2povlzCl?WPTm6`AYDrI; znu7kxcsfh;JQ*}Jr=6%y4F`Maz`?z^c}oTZzNmSq}^%(!0435-)j2;DB2 z4Cwor#t?np;LAC9Uvn!~OgfK7RyQzybpnR0=|w!h3ZHG3X7_Wvg*6T;tU+lE+FcW2 z-A@!^j%NpUoG8WZD#>{1L?XHr0X}nmM=$Q@)2rRK#3{yy?A4y%dpr=K7p238Rup zJj~6OrgZ{$N#>K?%Tw@4?0Tt->=+51NTI-t7{O;hiXWpXAeeo+#t;h z)38rm2yFTtQB>0h)~e6On_4apl_i&I6ORlBQHHhYZ(IUbXdd z&^*vVybZ4uhs+u!`lbso@Ps^o#|{*XvV=n25Y&QKWU^!eO89rqojfxi_h?7*&gvE7 z#m|LidgG}`UhSujnKo$Q7R%ROE5e&`wAiAl^ARI$srHPN@4o;?-DTch2{ix3Oqf9`A{ zF1lGXIYp1tC)VKKO_PA9zYnwH{t&-cALz;v4Oshg64hI>9{j5Wh_ZeN)Q41)q~!H5 z6!4HN7yn9@OI46c{>Hguv5(1!Vig^Bh$lPSRnY0*U*2=Wr5Lx)ngq@_#nWC(%>*|y z97Dl}()P9ZX4Y{Uy>|wx=)R-5^FnEvhb!91dr*a5Z@icLn1;*@py#yt`~=T8b8it< zc=xK5`pxCK?m7B&1EsQ;szOk8j zXeB|Y_ZA{~d?R?JOrdb_KAFCJnC>5)Ny7zAQSs0Qto!GSPleZDd)G<PGzYG?v2{MzTaZeModWPy*bH8p|8abA@eYsnPaglc z$gvBwd3D+ec->(lt_qoh0bp3`#sp#Egw#X@v=1)Hp@fD(2!$ucv&4`(5bZB~O={T*4bZY5Zk* zt#nb~Eq?mrCuTQQ-RPBBlz8RJqSgH=U{n!=DIedFh1}m--?xMed3a)D>06@Yeh{Aw zR+4Y*5iFnjmSiT2VrY^oq&r^WSzulLfQK*Cxg9m0QomTKZDvy+B3DAZgOJE9+{zmGQx9zjuAza(jF?JEtN#2J&?$Z zvKwEK$Ow7v&mntelu;rn5e&YpnFg6wC=)C6*5S2DEtS`nvZ-4OYJA8G)~ zcw^#fx-)h;>fRqg(K)*C_pckP+x!{)c8xOmZfi*QG78(~2NSt321I|IF8Nj;MiRHr zV}3XllZroKXt$)2n0Sd%m1||>te65dq(vOlbrA2b*-I+4Z(|k)gSA7pNqFB`9`CIp z09>+FeTKT3bqA6 zoo^wQ{~To;-Rf{`<6*q48Hy{rgYj_rY1m&fmt|VM!?{}maA%ek8EAe1Q$zEJ&u>D` z4ZR?fj@uHmxqal7lMeY@{DNe;2oqd#j~w}34M#sX5RotP5NZ?*%jc=EZD)N;B}-cP-0@GdVDn-EDKYr3HFj{y2faU<^Iy6t}COh?_4P&)V3Q%H*j){N`E=vv>%({8xA_U7hUMG=N%D0?78BTiEdRGP$$i z1plwmD#AF}u#QqHB<0F4HaFxC;MQn3->e6FSIi-?Gq>UHwi)EipImIaZ%N9e((qy? z=bO^5LgPYtV&!@nM~{gU(J zc-LdD$)m&o#=pKS|I6d=uuSbG%j0rtuCr>4jrQM z5i#UO>2~@v{xGp*TkuDlG1+zY9ti!s27YcpVrsjXi;~*pkemt1A73g%5dR1t%wFvD=#O(oHcN&^R&*J<3$6 z8kY&uaSfnlM<)_>GjCe%SVqeJtfT&BVy6H7Q>X1y$I02QEx5OLqN!cvIyPuf#&q?u zXk1kJnrKVbqIK$i;(cWcMsqWQ@E=pyBenAEOy(i@e_22ek2sR_r4OlZd>~or*-LF* z0!f2tFTJ{O0ZEE@LEVcGG8EJ4d50KAWw|-kJQ~fGjuC9C)WH%r2ZX=vxZ~Dwl>E%2 zQj0149oSBj484hjWFYmayFuz5(&){B64KY7L&rw$k@WJj^jB&)N%&TZ9*-81VCzxF zZ;b>*8MMG8j>$3DIgzNU%2457`XqDhd(_wWCe*hUdCUAsihc?zo!UvrktEdYvLGhE zU*mxhBQh>)CbM%YfB6XcIjI2>6SMCR=qg-Ll1L?cdsoDdCxnU;p+c>g*Y^O@G{txi*=&Tu-LLha&32H- z3Jt7jK`dEi*^KSg6Ubn+A+2%=K(hx7U0`EFH*)z^PaQY9NkfUoq-~~21^sxS-klWYRsO_H>CIpC0GBnbK8q=t<{R?CiWwXFga6P9>XYq>mLbRP{t>i6DZ09Wdk3 zC1PXeMs|v=C($3d8Qbz*keU`nv@b;BoqHi9NGk#NKXoTADS!CkVsnXT-vXv^u`DTY zFX7!y`U76>PnibkLy%)T7k~Qcum@h4(7&gWk+*X_ozh}SpM084qb#E6MbSR=2@Inj z_Xc3dL``bdwUco>HWztb&tbOHG`RRS4Ft8S;J|q+ta|1PYOR%c!ZjE-3Dw{uMFA>5 z)`XEh4yZ9W%64r{XP;J!g59DrMy_x^q$KH(HP&75qhv3cy^E00gKDHq$dK5+y$QKo zN7zX0ZJ6=RjAS$_K(F31GHCLhpLo@l%sJ@8+V=_)t2<&W6Eqt}LhWF)k`KnJ%z++j z9qPKm48;chX}9b!E^fL-LwYCCOF?louvduc-L#{Emh$u+*C~D^;S=T-InZH?s(T0i zn?!X^_`!aD0DfEE%2-ED#+3X$?1gPlp!L)#)Kxo1*2g=e&-zTFC^gRPQmi5^-68P0 zI+xg0G{OJ9N|K)l$<_2EN77f4tIQA_TJjn?25vC}7ZZ4vXKPWlu8zI^%9#e3x3O2h zU!$=nC!)GQ9TgYU1q+*2>T;|R3N;$2*x+(-?MbD}U!Ui_tyH6$^-ehJY6#r)jlvn+ zJZ)@OE>RlE&}T*s$|8Bq=r&AGdXqUy&kI(ex8BD0+c@GWBHbvlQI0>LAIRa~FHP z6-mpCNGw;X0Bfmx>;`WsG>=^miM4a-vC$iFcIsuS8?DY9SW`pw3VrcX*9+?Dw--e? zU2%bj3f5GO(1v@TS$7_vDlKYeWcr0^$fRFz!tM&MwRR7g!G8y9znmw%hJnQJ#8#qj zP)fuvO(R9Z{oI*!JCl_yXgcv%4~7qpl1cop_>E)L-|D)7?du(gOl~(WbCD({7D{w> ze;Na~^r-@G8hyKe5zR`^qd$(T)5Y;$Y1jRis3i4`W}OemExSI@DL+(^KI@|uHzu-w zm))j2-pPP;W+S?7_kp$9%i-^zQ?R{|)7?vbVRXf1QanBmZ=AA;c&{<()T3n5NZC%F|`3SWC~lfRNKOkH#Uv1yG*n_D~*;H*xS_o;x}x%u>y+<)kpI-fd+ zThnEhO0>P_I<37YPDlS%QrRUl=&~=3bj?~(s#)4Z7j=Z9C$EZn&76g@c!9QSK4v$5 z$icD=zL2v@2>i3 zNsp#HME{1TbS$A6*UfLC7nH=PXW>;^SI~>!j~t|GZ#Uu0Yial)oS*M}TbRISA$WHt zh`hbt#ehR5c|U3eN=jU}xmFBRi^P(`%pc4#sjcLR=p$yn<3jRmc@u=>nv#Xd;$&E3 z8nN-ofxhNSi25+hRCW8Yp2N!_qg$Hu07*jT1MX~CeF-h>@@aj86jf27G@w_DT5(K> zhUY72!C@Erd&5qu8>v7S#7v<9`|siu0b|^nXK2!q{+lNq5eLZ?br85&f`m+)KqTMk zlGc(?2+UO^uSSX?DybJL$L10Lrfm>C!IP}`ubJ`K5K8JE3NkGTv7~#eCVNNwGKs2A zU^{>9Bbx{2;NwYCN%T%toD`qMxEKnuy1xqXsQ+x3eQhR{x;F!2J{!_|?doj&!v(Y{ zb}H8LJm_T|YkdCvB30aX8;e)pq&EXwaHVZDop!Dm?>jH0Eq_>j|1k> zy*X#;*{2t1P3$&mEzWV_tG;8n;Z8d9)?u9eEs}mJmu3$ZU7$N-B4Lm3JQ}Ci2iF73 zP}W19v~In})V$b7EVJ#11*DM0DL2SOn>!>g(vO^;euj*!-bo@IMaY_85o9%gGn^bc zN6Pn0Fm^IF1aD?x?GqI;cdj)3DtjF+*GbVGNhav%JCn+s)~0UT<>++Nb2RxN=Pyj) zxCdvs^~N}v?(=t}`&9gC)ki|--Zh{z*1blvu?$@P@IQ9>$rAq6=S48%O)M;3t3&oT z%pzMuPLZS;bI3XI8$^GPCRx{ik(jMoP5iuo>=ivgqH9$MZ8Ifpk?O>&A{&N=OW<|w zJ66+w3e;|zLS2T9Se4m(Y2v0PRQPs>a(gyGk(ykj5F<&q6(o!Th*9uYL=hKPkfvZ%dT8NC>XHnPiF*x)m znx6UE4K;pO=)Hz1;CK5twLaU+j)ck3;l$h6YW@#PvgB#H`eU5=Mx9n&mtxlF2-3ne z55UrH2oUM4IQMXqRx;S-nlf)k2O(-GeW~A_cG$4xL$yX5B&?CwVLoL z)0l*+hQM+e7oy!82Sa_U$hNM#Fyq1~Xnrk(ElHtpxH1~p&Tq`M?ouevpM%#Xw1LdB zMtt^r5lSw~!T5N4`s_*o)@*X1Mm-bg<;SaNhw@??uyzl9_1`l3IASS1^gxQL4k*yR zW$75q(?yTIMa+VKEli&mf^U>0u5w6+$;=6SzONnBwWL_-x2j}A)n>5a0svB*rw~`2 zsf4|;hZuT@lePut$&a2+82Rl@?u!J$=(sLPmh@%9g;>~N?8_T|70(>B-NpRzK8S~= z1J3IHh(7nH(GRW)RHjs%{+jm>^M`D)eO@{YyP_7i_Tuu4+~=7Jyyo}UslYai6#&dHw$Mpc!Q306t4JO30G5{ab>$S z>5_lR&i`*RQBAwW4 z?j0CHMkbxPdbkT<4-hXHlVqW44sqik2-oO7{|}##_C&5ygV|o#?%9XRj;D=qtEaPYjE2P zIdZGH5A&RKiF=12RiCzk2ws<>{{nbKt)vJ$GoORHojQJfbO#iFwle`2;vwO#EXlT; z1tZDUq_7~2eKwy$_|jYW;N>;G_jy5D(38PPS}IU}Y$nL6iqeW$K_c*BBAvNZnpj#H z&?kpxk`_Nzs=Q2?1c*oCRdZwJsf09JAkmD)y8>YEuH`g%%5!-8XfGXM20(9{HkT&;V&(`t{V!ZcT))aDK!Sp*QS_EL~G#73c!!t zi3LDt)_C z0%v;crI=Zb+JcUByIcy|x_09&n?!c?msq^IYz;ozeFe`NOVKUw=CQGyXM0WZXA_B+ zJJDuxC0lqXk(ZKqg}J%J4Q|(uLtxQQm{fj>ER_ERw-PQ9ea%`pyX6>3$QppNJvKx; z`a5`;zXomM0MW`A)EP_xnH)R(+O!h1l~vI!uY-y1_eMEc&Yzol0OtrU zrPl9q5Oze-TGM$ntu2sx?L0>3W-Ov5C2mx%TABvAET%Qy*?8-&G<~}^mD!(}!nU%p zkn=7F@`5vAbafN#Uq1{&mvTXLuNs*cc>{`7=9Ak)7op#K6ZsyW3w<0zqkeocadWmH zwr>`b2Mx&i0 zxcpryUay!y|Jrj}w2T@x7o3O74o#;CUAIuQX#!1eesoiK2|5m^Gv;kXnpGm zIBcyz{iD-iOVl&GBsGahXdcD8i7UAIv<)j;>OwT?LSRf`E&0hik9K0s<8$n)prv#(>yK(;G1R2n8(XaM=;-)4hE!$K zI6Z&3)*r}Kl^epA7y~M5Z3{nS((qKT5yUxGG1Bil+18vmD9nt*8#TKjYtmbG$Swt3 z%+=w1ggViD;12R;Cy0deMQELSos8aH3t4mGxLkV%d#c5gICC?FCUYtBbayr`wLin~ zu0~>Mz5tk+K()$$Os-WQL?OP|vlb zzBz%lx3uNh@gZpX!I_BpN8y?cD@oWLQ?xYehTZlH*os#!uuxPUP9F^A`N?-O$KAV8 zSwjnX0;Y8PaX)bFK~M_=zlg-717M`0}}2xdxHeZpKFy8$fIi*I*m*iS@WAgyHvoW9z33 zHZpG>-JPw>ZhUG$J-QMZ=|{SBYyNS@ln7Dzy_@)KGRMSCRb<)~ROqG+K}_psX}U`O zBJ&txaJ8f?vwT$;8#j9yb6RX6#BT9}pX4`$%4^G zz!T>5;@SYNGol(gohDP>YL+MQ(u$rxn#1`{ENSivXYeT*$I$jbW|~|G-dd}Rwdrp7 zy+Rw^cCW;>)4%Y3s+-~FLn1uo88%pu$F(-cq!@RpT}7AFAlRJK#5!=^bI%Wn`JaZS zkt3$b`K^<6$d1t?jI!HTIJL8tkE^5M_!?Ps%7|mM-aTOD0?%URj@|66B~7UHE0^sS z*^LY1!r1$cF6b=qhS~MI9ZT1R!FaSF9pjix2mc#JH(3KVy6-6}*mdwwCm(k?88X}B zpRg_qe(-+9i^Bq+2PO-*n!uWj3Pz&+6!eMA0LOwMNLwY!wBHdRMb3&~zkVP5u)6{0 zuXwN@RSV$uS93i3tQ206>uBK}4}HR&$XdK-MkkNql(1~H_36jOb5>Ch>qJqDqcm_e z;v=F(Hx>J_AtS31o-4wM=m{w7v;ii z5&i?dMvp*DCxj6BP%SYWi3+ZD0G*teuk`71D#fvoyY4Dv+c3!m^?RhX4Lv9|YM<#pXgS}BSy7Cfw z3AodynhR*8Xie*!Ww3)0rdz7CP5!3ODHUw)t0c|il;@{(jeKesAc7V^Zg5$PyW6<)=YS3gxp@okY!D>l zlg#L}EtAM@iwo4EJOkDV=Tgrb1N`;?j;CC{3kT+oQ7_3XcBXtIb(t^)3KOHK&R7T2 zINg>y-ArJd&u|*VRVCix=Ob{+u@0wC*-Anb)u_dza~#`oB25Qx&bIp#AFGFvMWJ=r zafy4)^+K`yO9}ave+vV;!^y(w*YNNS0ix4vi6e{|`?7H-`^WtsrpX6`qAJ%3Wn@HV zi0tG#zAg~IP*>U<8A(15?4(vcf#gNp5za-upGbS0r;7g>k>isNQ0+gBP`Q3KRSp_u zvV!m9GG_t2_2>xe;U!Fe@kZc}uOC(Z8$)tjuT$Gz?tdIeq#w`Zk%a~S(QO})%$gKM z=S|Ke9@-A{#ZrILIPwye#b=Sh!H2mP(8%nclMg0GdT?p?2rTP9LO+OTktb^DbY{B? z@!yqBZ%Z5{t~pof>rxM{$3B)WDBn-y8pElisSA1GcZl;|%aixbwwxzE912(6!PMW~ zjC9X=NOPWxYZ|^ogur)f*f^JnyQ$HGH@U8^qS=%QiY0bm9O%ZlGvtTAKbME`Bu~wK z>G=!cg#Twg)p;96rg{va?dW{+X>lhTxvm5jeoch%50$*)#ckk_D@=2}BOpu1mtH%P z0E1mIG->^7@b(L%Z1o`MmG0yGnewD*#RmEz$(-!Gz@zV${DJ0z3H1E8KE`bX`JXd=ZlxN7}E5iYh2+n6;ar-rqwTn<;avOXYjlGec->bVxh7mb5gYbnzyr$C;Uyx^JNO$6zxb?n*1K$8ZUb8Nvl*P(u9 z9XeazMZxh~=(aHrkD?j2P!Glc4%VxAaln1FrO<1x}oy0>UZsTSx z+E3Ckg3%^Upn+y<=8)?$>HGsmCc^R$>tJid1hVjEBJ*mU1Nm|wciskJuD|;E zT+DKkC(oU0(Sp{%G*qCmM@m6yoeX^!l@G_4bz`#gYu;u12F%`n2h;C_;9$Ej^;WfD zCG-tx;u8mEj^rNt=1nm3q3;--6!?kJR8gj*p36XPOoKH{J`U=WgJF+g5Ujph4iCA$ zp78zh#Ekp><7;hFxLOmgdA{1$ z0DrI(FD$5lSsGVy?#Wz8TYCbd<(f=ldm8xb3@+lo>MY2vK81&)P055!`Dk{23t3~- zfKRv?)jP*4_-*bt_+@nlYj!^Y>Etj>bWep#=4IHjXa;QiHiYvH_p(xk9e8+I5>5~} zhl2t?P~}MmTW=^vWkeq{JP~>NRU!^VvS!eW9%aDIcj$KI*HG5kg+Yr)VEOA==((~U zTBV$L?@kqf{J=SIxBmhAUkDI`vkFA&fFy~lcnbrMIzgh%ku{>kG$F zI{OS5E;pg;&n^LXD`nbW6A3PdsxVvH0@(aJm=b=C7u3~PSqfrebt%j9dBU2 ztsop}=Q@e&>^P*WDK0y$hvd>!TEE#IN4{^PF}e|`;d_Sa75&Ah%^@_I)3|5ZMAL^S zmSNkz3-pab7VDq9g$B+YU>B@jO0!?CWB+(r(}Eo@n8)pxP{aH?6LdKRR3%y&@x6-V z-AkZx_8Aa*I*QhP zxXBvKzCyKs#<3ksF41Oz(>%MM&h(^ND%wO!a~wcLdb=?l-+xe`Itf~A+9DZh{4Wib z_3KkV6CJWF-heh(ttT>dvUJnU6GS-cEv{v`Z`_rm7yt$O z-BS?NvLa_TP9rKa6p7^fspR;hL=gF@Ohm^eG1q(*nRZi&4&^N+f;ey;Gf^~CnYgQ2yooK`^ z!7#{GZAOz5$Kdtee4HU)#Tcq`>*iA#JZaI+&eJ}K*_GOGCommV>jAXH=Johm0`}`>{W>oV-4{6`c-^#`Wmn{{@6d{!d@OfOFS&!eVIQ+sT7K(Vql(-9Pvnf0U|+4 z&Y;5_aC&GK7*Pj zEy9-&AWQbmAy58^lGz@5q%z_wSl%%p?=)_KZ5Zc^R#1llrN8iNXpleaZYvXTr-uD& zz7H=tr7=!BxY^hbW0a<6&jamONrSTjlWQ=0hyIlNf zS%s6PIN+jZ=dh?u4KLZM;mbMO@Z;C_{ID=f+?kxjh#%EQ_R1q>&HT%_SaBwNDSeIa zpZh^2`w8FKR)eeIQ(VaY1F1E&_^CpWEK$9TBKxp~?*1kR_iVQ>abFe-tnFclgudmg?+6soQ-=53R& zU^=FGqN$|{D0&xjUUSO436`RK;rXDZXG{G&qv27a6|G&X3Q2e5sC#`3|H$AsjJ=V` zX999C-C-a9W55X8W!Av2+JBVa$=&1n@%cDMAdE^+R1!?U~LzaZcKxd;*aiKD{%qYOl9DOhw;UASHjAlfw=AHT5g5s)}4k- z#?{sam;XJUH{BuuuS9R*|CD@yWd$YqL#h|>YKk*6K6U^dvV|cvqZDV^20{YIa}2o^ z0{`WN^S(AjuyW?>p)k4%dnE6`g*grA-rEn-WGSuJM$$!BMG1)!Ur4ji1|&o;&+!$%ik)~hQO20sh%BXTB_ zWl^TA?4lJ!F54VKbhOEY|L(IknKxm4>m}yvkSk2<9A?IY`*;U~o#FGQi@5((JRF&p zhFSb*xboHy)x_t3*qI7e|7|w2u6ZgW`ZR)HX0w;2#WHB`?uR0aTl1}T8gXX#LuUGB zKAslN&;JqP7{@*j5IP=+m? zK+i8LfaQ7|x4?G_S^su9bupbr&RpF_ZG9$??-LHv&u;mU@^CxdNsPhikuhC%`63%R zEgTQb3`Mn}bY^-4#k%Dz=s6XmbLuQ2Z~g|4hwLL-_vTTTYtbZUp9>A*^pemVdA44Oy9`AhKPTwsMU#AFnmUzDyANWv}2EPG(i(0v>E<>#yUZ5K6@1x_qS%meg#*bH05Eohg$D(QRYM-LrV zCho#P)Q8(&^wty3lN1I@Vr{s-L=zPJIKG|SS0-$K8fx?wGrzBH#0O{pW8Z9@#}2Fc zq7SDhgpKE+U!WWbeEtsM={b_C@Pp$S-6T^cy}`~c31oWwWEvggOmvUDMTxFkkWl@V zeSc&VJF{>FdkU>^*G5UkR;GyS-@XI+hOhCh=Y7!m(2H+RXTzgEld0d>Z?FoROYKS| ziGIBU&H35{OG?bB;+#-eyW|IEaz5Q_?|m@R$^vG%l`!(EW4zC2svyxUgN<{#4-d8X z;B)o@M0@jb*eU_kGkWk{G3UP(7NplAib1UA0~&8j2Hv?g{5r`Obba4(UGDK9E6j}+ zeg;A8z)3c_`zuf9-(pyyxda^_90vO@^D&$R!`<{ac206V%)RE%#yDofTbDO%g|{oT zB|PC*Z_I|5&i>5syIyFk7iHJ!{s(&71(AliLssq`_Jy+!Shm;mE@o-6YMsseb&1y4 zsx69o?a^3y>@nMM{3E)0eq*OD6r={D;&|z1KW>dsXH|@p#^sP1jzS7D`3A163wDx@M3N^^qT5GK{|K+Hw%NZHxINV_kj}k zT_}6*0p$htya_RD!DZSlR-so3^yPozdhgG9uUBoMH8IlI$$9F0cI?CRqU))3RXmCe zD$^#lXBfUHlgkhZ(XYXkyorU?m?#+yFDhj4`tN#Jp|_BKrB8^M>iuLca6K?HH#9v*zu8VGF4P5=tT0x>HJ)ip zDaP6ZlknLDDSGu{4wefj(QvInd>kN6PXp(tz93E=9mHu*m=L{gK8C3>e{qoZq1L)T z=usYv?1Vd5+9Jx$?Q(hRrgrC_JXQ%WW^(I#61R_I%z^QlLCnmfK>LOn8UOng7I}#h zzZX(ud&?fstq~&%8xj}|87bma&u5ODn}H{F zpPk7{kh-2*{OrjR#NyKqxYIG69JBulH&!kp1zZPU%~o}i`b?0t=+}e7x)CTH*alv+ zGQplGnV2no!?;B?v7&o#va1GmV4}|vJlY$E8avZ)#gU6R@%jZE3*goswPh%3^&Ia_ z4#vbmuJ@)U2ru_cr!HH^*jwwkj9`ow|Fu#!7R1Xy@Yqi_Z{~N9TBXbCEi)p`9Uqv$ zKuxkUYXRK7Bt>3*A#l6%A*k}MLd#?&Rh}7vheU<@tK=@8a=ki!m#h;%%d7M2jtWE;1gkT6Qvi z5lQ&%I)$`eeQtaE0URV8`7YAZB>%E7E3c+QzKq7^-~Ovk21J9IqfOG}ZT}jk=YRwe zJkDdIr+od%w`i$4_Y5(gy{8#cy!Kcnc;imvbScrGI9^rlt@W7i{3#rG+~9QPFO2V>D{6u7^PNtu*{+wxqo zer+)Ky(q(XKZ3E)^A3hNp2mqAqq#igEG+Bx#o^QYOkVDaz}x?}GCOwl<5;x@V>mRG z&fWf$$-XE{)t1Tw(G#Xib#&l(LLJ_IdI%yGF2}`3tw6+ZL;jUnml%g}VR&=<6EFO` zAG~`f&F(zV1GZg)%p5MK2)@r5=Da--o^_t-kzGjg*my?K(~#`DUdLD4CBbQTQRryM zLg9&Cj4V}vl+s7I|Jfp5LhMz174w$;xmE?=fG-|6Bg%gNmyRBdVf>i8)mU}NiZ%Z( zNay`~#JB00L;Kg4GX;CpX_C$~c(7m)%a3e_<7xe<;Epiy4IjnpGvL~u29~`-ASP3m zY2NgT@tF9Yab4;N-Lsvcf6NVxzV8FJOB9qgpNE_)SNVCX&llr@mf_#q5~yEF&|r!kKUh@;_aqpCaI-0@oW28p zR(c?q)WWassd&?)8LCQbSxcpNaQjIYyPun#%>I(Xo=r}Lue-7sl_`#JwmkyYHt9iW z_hYy-CId+tJ&^Y!hA9%LgEFgL{%x%g@LctswOZxE^J{TI)ZdH)mF1Y3AAmOPQuMCz zdEEHkfZ7ZOp}<2Ey8UK2Rtim_&-P_vrRQbzD7}gm9w}`7NCc*&6fplXxh~I76Ue{2S--{ScCT_^DTJU(6zNW~eiQqamV8ovi7;N3c90glara`N#7ZnJ6gP9D$AJ8 z_TmlxdCN>$6TmbKR6u=d0rUCjRANwN%#2;sAj=-l!n=C1^tkJ7x*p{P|9;%sKUsZ1ckwrX{eR6AyDn7>kja9c=# z`8cnP|8u(yBb(5|=G~5CdfGLa(X+qu?`NvOR0CxkYzSd~u5rS%mnGmt!ZMtrVgMUd zSE5~LD=&&~g(oMPu_~9O__KFKvkUZH0VC5`hsIclzJHFVJK-P@LR*U7BBJ_lxb%yUTuYWB|TiU|({& z|K;wr?8|kMq)noRts9(1_V>u(%}Pa*D1L!8a8@8X8&&x~i9EUbjC(GGrx2BYdr>!Y z6k;>|@z&)#;KV#KG-VH?ZPeSN;^w{m9)EZ0U5xc~=B!<1PVv({{Yv1P9X98`;hJ?PUxjnn00O#3jT`#5%Uo^YHJI7 z8%N+|WE$hJI14&dMcMo+ckq1sAM0(V0YCJ#(f39gyW-wS6x+n*K?VYGVMRB7*UiKB zOUiT>cmCWqU_`wOl<4Ju^XR$U0o*qrO{aBdaeY7a_{Vf}N#@~-ujlX@ zY2jGab?E2v0ux4sD6QobrS(pe%mqAUSGGVh~p!l;iDNeHm z@oAIDDZ?11CVdo2`+M2L_8oBUsRb%MIS$*u&BW&xsf?4;aXeiq!3d|`#?vB$d>!MH z=QD8> znvXSsp!@R^uVei+CV$IZs0u&F>Tll-wCxSM&~iF#mRN(IcHU)LxU5j9MzZmOgdc3B zTr+#kE`+IAtAXX_qTn)Mj>VhzGd$@vSdep+mn^&k*B#u#+}ySaRd+=(%J~Ozv&%K+ z3>$+@qx}p!Zz<+Te`2)fII)?-w(P~yZWA#VXB^<>ZI8NU;^*k|F#7u%tFkl+LaR#H zscF@ao_dho-SP>-+!!W%d?G1Xa)X(nIt=gUWb!R)uW&Q=GWL+B8PuGeiU%|+n86EN zhr!B5_MXw_ygk>hprz~<*k{s?W`f}`-YY;wIn8u@mlAc0>|{8$5fz>m$gB>i!rsP1 zj7Dh&ZhWZ$J5~1L*O5K&_+>X!-{c8_OX|UT&;s1X#Yx{iJ7(D%LT3GzMXek&vPC2X zN9(mo^`fVkbe%^asTXyUHA!AsE~@)p2cf%5aiz>+cAuj$?l!E(?7wS}=$X;MUS$-{ z@TQAq^{}$b0_h1a3%2OmX}W<~08#2Txa)lv%_nIQ&y)J7f8T(V8V&Glxs2ws z2bUl*a|r$&tc5-MC&A3s-{GUhJ@!wS1@Tdtj2~}pCI#D-QLKw0D{r1dt6D{(%RE5` zr%q6sFF`Zh_2Aw-18VZXk?(fao=%@HhN-VPPwT@Fd}5|RFMsL5ouRf^jq+6alr9WE zFrx*3Gl7xaMB5)cfG^2Q>2$ltAR8t{4W>Wmas!d5S=kSn|9#`H_8fxlaxM6h`5x}Q z$$%+(oTmQ%7aX}-4cb})Bqd)K=C$|2M&~&={ohO2p!XQJKJEo&V+mTET?o56HR(-> zmGHDkg?=t*7|B=6DJedz!0=Avn@n4WW5#MZa+P8x#GRcE%5dslE z?BP}T4LFqN%ldyP1~=Ka7;&6omn9Zl_+3occnDy$3%rKht7y(?O zu#b#*U1pauCy9DZ0qdu{kq9k%!@vAx8aZ$@gHe%Z;lQ_eMq9C)VZ_zhwF5J7?{Y0X zZC`;cTTWqc=@1?by@uy+snK4?V4QSlCEfC$Ai8k88dpx`OBBbNCx z$LtlU*+XeaZG3W?41m=O~k!*IAYaHx7CXMXHV{p5}6-Aa>-)_;IrsJ-uF*&H`1M)@o1fYt$$?;zC>FBxnlf!}C+TkB?L2Y1mw3H|rE(_fiq~ zdN!I}QxpiRY(|)A#&uwHSrk^YgJ4+tk`V~`3GZVU!(n$-^04hDta@WgJk-a)!-UJG zoSa77Zu|iOZ3&Xl;tf6Xy5LRDRW_(@8)WTCLP4>KOv96IEb809&N<(T3K{R&_8IXQ zBd`Q_+nmLt?M^tUHX6;+`L!7-;$wQ&a@$*S9T5TYux(1NFEh`3SDJ zKZOllk9Z}qeeBDU*t|VR++5}3SxrjFnjcU1rs^49$y{gGmgtOu=7eFqY@dFKTqD9Z@Fn1(;)emwaA;w z`@oxx>T`2g-)G_M)XhBHT=9livRwy9gbcu=s*attBMWl;&#)2NNsxOkh?#xK1yXP9 zgUxeYprLv-D9p8n4VL?uzdw?hhMDL2)7#hak{XKhYc_x9NpzJmyH}0z3I{zw`fw}% z>c4Zqlq9kT@0r2N|50?_VKx459B*o&G!&Jj9hExI=RTDXrD2qmLLoDxtc>VOduWlU z&{it5dhYv#gd`y$B3t&(9z}l7?~ktYU+22cxz6+X-0%DSe!ce?P*}%H?%CHu8gRpr zW(Jqj=`(w&>!mVHj66Wi;Tp*O&Z93WF~~wzQ*2ub#{C>X8%;mr@NEatZet4Z4wYEH zw3hVT4q#*z&_l^)RB<@KJk*N#U#tCL(9b=LpSc$tD}14RQ!5o<$rQA8| z>-08lhOOpRV~JLS7)v&pNW9t)W8@2ENoJch?Ytl>^iRc8Qj3(N^K2#k{qc;}2&@6o z@lJXWc9^oaU8Y}IF#_XdF8Qu8A*UEwSnPWT!w=tus1*TNWNjjTptFS~&hi(!w5LI6 z#UgP;;1>9jGgT~+OA`E!qr}d4_QTDwD&pD=+ricWA;u{MB0Bom={vijP556uGd98A zpnAHLArBFs4JCKvA9DJRzLFy$OE4#JkwjH7fK1*8N^bfWkeBmxNw`85S!p;*np5}E z?D732DL#c1nZAx{t7B>1m*H&0`2fnR-6)(5%5?XqytukN9~Clv#5*L@_#fTN#Hp8s z-izal#jA5tLDIENoSv5e2D$6S)hl+vmE57?WWz$J?%5&a2ZEt=vOlYeU%`@xq)>Wr zCx$N2l0=RQq|uR%61n_E)b`X}qW|8PLZ;4=L|m1n-6I!DrZ#Ab7K{y)h~5jGe+?k{ zbhCq>H%vxy##IYFyvn>75N+h=|U0jiNp2C7O*`8~k>9??|*{X1jEHgCl!R#U$X~yA?aSe3ynFm`s zT>|8h_lHkCD+Pf*+ti*4|u3VFmqxcSs?X6^Fn~Z95g~3cJd- z{Zuva9DLuFPkS88pjqTgtuH3PZI8b=qG2BMN#gm8t2JD}OEtJX=m+;cZypRf`JAiR zz7#InRq~^ZGGXexyBPeBKqD-a>J!d^^6@J2EISMzS}W=L%tCm5B%l5bNrpq$LaA(u z98C00!=Tp{{7Hv4?qIDWO_;NW#ZEg%IX3s$ecPurYmhICGde`WF9mWgw!Xy041`sh zBWS2D2Mc$r3j3wIthnnGE{IbF4c~YyzTF?L*1zD7Xnf>-RlB$@#|JpWpq#x~d=T41 zO~69uE)I8gew)ru>EGym^x}M`>$;f1z4=)o+NwFK=FI7m)Vf}`hB$_ z_k8fDrz@`dZ!%kwo`)IddW82=CLLol=pQ?WGB!M6tClY!Co^ScRA5Hym$lSn?;A{| zwwAo|io3YPvXpCjSs@C%oy=`j-N$aJo##I#&SGl^EyMbXf7~!H4LVnOk4;w3p<^p% zLs8=udYShh%wJqj{DDa5+nY|B6Sji?09!i!bt`DE`ovpITMj|j?y-CaBWSj?09$!$ z_Uq|cHf--od@y1$+n*>RBb`w&P<;>GJ}ofvicXSidL^iJ-=FWu?h55O6iKg z_%xq?n%d_IT!Q3Un*Ci$+!&KdS3K3lS`n-0tb&d>#KVEqwL8Gaz7-p}F%bOjbnRxt zMsEA{4=hOGCr)!24rNK($rz=fSp6(DWEltujazi)_Bz-x@Fh8YNQA^`|LBKf49u#N zlc?0?!Hs^3k{PSBU{95dIcXi4y1x|J#mej6qV;0iuDJYlD(Fm_}ox`nmNu$JX_eWtMAqn|B;xGanf}#68E9O zsP(X8Zayv>UB(Vg&BVtAe^BGlDb(AE^zULhJ}Fm`EO64|SC#2Y8e^MS&pJcNyS`~K zYPf|2)fU4{c|*yU$Z?=0?4BiT2(%wKL8ZSgFw?_h$P!Po6BjDk-J#0h-&6^w1&>;$ zL|z>ID;8chS&NMa9EOV{$BLh?NrBZNLKlbMMpmeO6UHws#`1R~Kz{ufoWDxKT&Flt z_wOWjCnSVCYjbhzc0bzm+m)Pp*U=#FJTmEQqk4f;>R6*LDJe9UTsW;Ekun!Jk^S$J zLhM7*&Pb&nbrUJ%b3F#SnlUQyg_z$f08ajeE}`@5PJphs!~Gf9Y}FO-xOWKlztI;T zvi5_Ipes&FS_Y`CD=xgU1ty=?7SCBx#a3;41zj7S;y0VA5Rqw5qf?)w)yy^29($Kk z$7az!xe*crokV&N?<5Ho_6zTxIY}nlPb1BBBP5b(I{X%tkxV^m3qApzWS(^h9*#Xs zm*+l$OY^*_`RQ$d#Bkgkdkn5GPG?FZQ^9*(KD_kv0@M5v;^dg4%u#QG_`lY7Xyjxi z4*yq9H+ePjS$s|0qmwZAqlV;C1J6F>jgsVRD$#sdJ;{QM4fM(5hA``flCRbZ(u)~D zAH1&P_Zx8-G%t=-M5p1gb8}!%>_7B-h9Ir$PO_WS#J!(43b|)%vEuMVIvh7fyl2^L zYOkCozBct5cDaue?{;nCOssUoI(r-0q3%oIR$R{F@1J05pDH<*tau@FP{D6BQ;|&U zl*NQsVmkW7o^C{lN1k~0D142#D0wvxW~Prm*Xaa_s4Hy94KTguT1G8{s-Wl@0vxuxmUZs{pB{Xw&0|h-o zQtb;O^F@cKf9(paoa;(AuSjz`qb~CeCvURY(tZ5E@EP#B+!lu|Uk(zbNKu1n3M5se z@qyAF}C&MI^Sl!&G1jMIO`y zpWt}h^*I(Ah24YJ@G>~iz7dR?cfyJ*aqv8RDR6ae;BK!D*H;XK^S}4=pFUNy__3xG zc*@O2CT5^aL6ww}TtLbrR*y2nUsh1*CPM88-GB(0>P>gXR`FoHX`31Z)lF`@QOc z6IPG-lABlI^~+H9u&D^*y8p7CTu=DrI|U53y5pK-d7w1t0F}BUnrTV(rfd1v z`x40dVYc1&;DdB|q6TE?f1nxqMR5DV07*|vHC*=YqTz4L!PVBC0#3)kljRC*$rELG zw$2Uq-nL}8Cj+#seu*x{7sA1WO7xW73cu~$$m`nx_#CE3k>_>5^XVU4zGW2@Y@J2Z zJ?n!2@ftk#E>nEmq$`@ukD?xwNHdr?`g-vW$5GN$wsCB9QEEK)z$!FYeR2E6Q&rsv#9%%$;;(F#!Sd0o3wTGMDQ#Q?<%G| z?{+Gu12njpXoa~uymnfILQ^UTY7Wk@DVaB%i5IH{|%1VF0RQV(D`r0iBT9XYQB-vn^ZVmZ;!(d`+CU-;e z9ltc_I+o6!M}Je*>4I7%rK%ss)>}gN@QV+kjV}jErpCu`tse$Sey>}{TTSmLSvhM5 zE)9N7Zn<_eygi>jZJR6j2Ex(e?j)iIznER9I_T{Io`2=Vb2J|FY30Rm?S(ow>(~p{lim-A^`}Xn zd|~Z@X8Na?K)vys_ zv!I0}Ix}3{wrd(a^c*0bCz?R<^a?)cETYt^a(G>`mckC{z`2kAQIeJ+{^$-M{Q=HY zXucJj59d(A+Iwt<^*x%ZzYY2|NK1V7w8MdCebg!RrF#o|m200Sjlbl+RUV@oxx`ILmYKIA8bt)Qq|&C5Lx9@Ox$1aU(`Ysf2GB@ zGOy63yiee)bc}2)UP5N^7E(4m2q8(`_$IiKtvh%Sx0)5=Psur)V>pf~*6ZQ2*G2T? zfHLd7(MqbPPqCT&O^R+a0qctUbZ}Zc^f^2wi^rwV_qmZ)KN2*o_5^yHYy=CPZ{eBE z8SKogTy{eti#MHT152I%L(?%c;l{Dk_7M7C)|Oj zp26v<70~~qA~{&(!0Ua7F=}rt%zI(LJ}5KrXcrjMgR^kdsvR(3_I{G>H~`yI8pz}F zQrNuYjKEw_XU^V*)Kk-ntE`<#+fsv6GEO60QYZWS9QJ*-B(wYTu;rQ+C9kZ;E-6!T z`Q(M$Z!M*ungkZsmqhz&M4)jonO+`=fmPGPXuNg?(De7{H-81pTYX71_Q@D<-TI4J z9W7&jO#I>E>Q(r;J{I&+Z=j)RHUyYmz~cr9g6_Ntm-r8XHE)#g^!YK&Tk`|1G-+YC z_pPFGm(g&=se=6V_Aznj8Oonr&MB`vKu$OPYYax((Zp&~%9rcqN-h?W%fVpqdUKkF zAKU}G&t9ajb!o8QsgZWN`oIF!c&d2b!X{1Ov26D(cFKJuyIwD_|HsIHLSZ(H{GkSQ zOa6n8;~hcE(hgqLq(JnI<18odFf4p>k6*Cl1SmP0Qqh%Durn=zMs7L^1C}MxH3{5Lbq3|Wg=~AEvb^l1Gky1BNr#+LD zGCB6Rx`ZNx@B0jwC-eaxg!hX*$Y)dwoUo9g?pHj>4n2wo=dXuOqwVa_Uk-L`ihynD z4lpeyA0`DF!+@(NV5y-s%$B(i1|`w(RN$>cVq3`X6Z0oaq6u#jKm(hHb5}zod@wx_@jgx7TnZRs}ucW9i+bL$_De}kF z0;{8eLT($=c)i1Pf51%i*GeX*Lr2&v6F0iF&=7R%v`Bd^z}(F|CR-$fz2!>w>@7md z<#nJn`4O!8Rt1$+Zy#nm!KHU;a6PCV5|6d8L%wTZ@nKa`s6W6I${pyh zvn~1?_MoUX16u+LW;l?2T`4_LiKkU=0uNzf93672roXbq z)Nk-Qx}trF+HN1l{R1}9pdm@3S2OPN8&;oV%FAt7^6$~`u(gk+xT=GOW*l6IQeeZ! z2%g#^Ush`F0n_Hsfq6X)P8cM@OLcFs-5(DQs#=-8tQZ7yQoSzc_9Bru7-+UEOH(D@!_jPD6O!EudlB6Zw^QC(sp{N>-jIbpGwv zgztK@>GL})INU4b;kyTd-?bQuq0Q{V`Y}{szLp!MHUZBKdBnZCb%jX_+3vH0{J`~8 z1~Upt2Di)CIDMO3*lIZ+-*qnn+4Z(`ao=Wk`E)kzi_^m4;W=b#H4EKm&!vOwd@*5; zIW@KgVTACdSoSI6{isQ`f%}!w|9BIV5zofwRt8Wv`6|B9T>w$~!^r%k;0-z|MS&Oc zp?iBJ7EGvyHO-4~U#)kWv|ji?3B>@#8?MvdA1?3(ODXBH0<4~-Ov`5mFuCqRrthd&{p$K0 zA%iy<4>fHEvpph=99j-v^o{YS9SQGui*M5{hIq&RsF#=sje5sX`Sw&8YTSZfDy1QC z`WOE2`!C!F&(W;ax&xOM&SsU%=8)OxCT`Za!&E=z1h4S?5;>3kf-kg=(+B+!@<@-S zK}Vx$WT_c7?;b_vBky3X#a^6JF$%Zssp7-Ny{;X8dp_H&@JbXXqYO!JYdDdRi*~s_ zi3OxK9f1)D42;H!m}brm|Jb(n#{r8s#8`o>Why zAErxa_rn~TyLmpX9d(oj?)0Q@HHRp_dpM=dPN&L?9yBrOHV%2Sg?^5_$*F@a#o|-$ z;@^0FW0xO0IsYeX>lw}-oy!#bl{K|S+*8=?sK{LB`~laz7Iw<}E_}0j!y*z=p#R=$ zOt0SsR-}KJJ?EuSKKUwZ%({#lk0`^Xq6U1Fc7Ywg_6#pSddF#s=F$0S4{K7E=95~! zF1B5~MAyER;NG6sq``jU9-EtF-SHQ5cjwaDttI%i;SQ#LIEAYMOIYamr`T+#1noYu z7@{f#q06sxyHtlm^MfH=ZoUD`xDdzWo=XGw%p87yaD-EPJJ@W${czM{K8CKVhgAt@ z@Xe-T_-2xb*H6p>w-YsJkhPPoxxNGq)^;HmsL6cBk0(1J$){?fNZR8>{P7nj1#c_E zsK@6pX2C3+x9Bd;Q9R9G*q}#WixpY2!Y0}|yO!1cDyH4dUeG(TUhte{3tdx1}54l!-H zIYJ-u9H?;iqrJt&5M}%yu@kr8MAb41$om10|H{!h!Ozw&S5;JUC>=Jb8iL$fclc^^ z0GLD;o@jM|mG(f<;xl*PU+`5d%WVZaXLFj@c2bzj_fTH!4%l<0gPvE(K<~3hG)5_% zSM?Ec75-(oW~tD7-7$_#MG2HCQ%T$U4 zS9rg?6gCelV$0%_;odYOG}zz``Cne(piUvxOYeig6Gncmc#atXZz% zNve8Ph;hPQta#Z+TzI#bF6Nv?`S888DCr{F^qJCxECqVz&?T~{v8TD2r&yqGG;K)s zfDuP3DD7=69MGtyvXCcW^E8G;Ywm+%j4XBGQK+*u!PePf(64wi~j8+o`W~7)}$|O_ME>YIZoUpbojgoW8*K6`P&q8$1>0<&+}P^Blma{!TSh z|GU8{l<^porNYM5zeVGnIV?NQ86WgmLeHCFO#1jV5D&b>vX5GT7hGde3*}&)(*kDn zsD)M8cJihpq`0T!YjAYqQ%o3Nh^O_w+*6{Hs z-=!uEUJIu2XASirW|2Qm-2I7N?s+1H-AE-FCW=e%i;92{Sb4? zeTCoBchy=i*T#^<0vu`*&W(3niEl6Ev4{VT@M|i9~S+P`~JPVChNs-QRISG zqA|;+W6$*oIE%~0ha1ze;HwQcHEucTo)2K9k-JcNoqBDI)_ZjQVu}f0K4NR)PF&OX z486}CMOJwa6r-2KAY-3XltllsL3Ri4{%Ak+z+mof>pS6N%9y5i0zf@RtQ7sp8eA?y<=Z-%yuLq1 z85szk!NWMqumtDLZ@{p1-?;l>pRm(U8cG|VqrLQ8C=mzZ@Ykh4@4NUlJFkHDfnXfw z+X-HyGEigsbyz&EUeNrS;Nj2xm~g)oR*vy!hYrt!vTRHEZhngCmkfpA$vg0#li)}F z7Djz9UNDO!p6>kR+0f4y$>>Wt+n;cYLPpEMlNZk@a)v4>$loBjs3*+yW}D!XjAg?F zPe$K}qZswOf*y5kq**(L(3C~#B;BdUcKu2vvxs;YlMq79DKBAi(M(jx>nBc2`N{sy zloA*ggJH4XJ@A`V!>qm+!kMngY~TWCFnw3XY5T}RwCh&x`idW{s@;k$Yd*@}L{_km zhV7z*a(~&1VfV0S-BG6D;7&}HJvW%?Pcw(u`!#Ip>t5Cnf11r66vd*Av)FvC z1K3*PYG?d)3N??4z_*j*=~1UPs!vKIG_e!)W+l^fCtD7(qN$K?;c^B9(yJyh8&zpa z1s7|%*yAl2Dm@JqI)C!5))#S-^lp)Y`bTVzOkjm?exYJoARIL;Ld}o+;Bn-5UZ$oH zjF0KC4UR`)ZErFQ>pBG1+cz*;nGMT6Idl83Zi7#{3Bn#6;PcT3wbp56OvA~JKRMKf zFA#`P4__;jx>Xu>sAiJh;fd(?04Z+SB=j9xN9T(k^48%zwVc0Q`(sG~wbVw|zS^{a zT9snC+$~DfQ@WcyRo{gw)!*2}pR>8~iS;bJQ5DwwJ;MgfTn>*MrG(#X7A(l9V!1_! z;lG9!Zu!+6knj7Q8ya8%nxTGdW6ulr(CDq``r%6~eW(jMg&VLX)0)utgC~x*awK_n z9X~z{r|;cTbn0vnt$QM(ttBI9@|YPkb@nEFob5^SqhD~|{Tyh+h79HrFGXX*AG4>8 z_UMx=4f5XgT!3La>-!tSN>(dDeNqA27Q;cIR2?g~9tb0rM={0BE9}NR#%$YSnSMYy zt379gQEvCyhfA`wEGwH0&@v*^Ujz6IMLP)ExJu#!(-^X}XCEAK7va30*>03r0&5>m(gM zS=H~b@ckLl^|Du>(4*K6~Ij{lO|RC5uM+iM_ca3VZx0J z`t?zcx{s}=;787MK=A*06>X)v#$R!@*-@IG_ldtD=-z#U1s+QcFCf2WLv2tB1(xrG z6ec2rmDR8{B?CR&?tu~G+fSDNb`Ac7dGNq)2sQ=GfNL2# z*n49kEZ;sBWkPnskANh8SbHw$CVDa-pF$zOb%(V+lfaEfIjrms!R65#_!`G-fmx%2 z&%>PHM%zbD!EGb!vrJ=R$4|U@uNiCCDaG?WKCE;22#S3g%4C$bkxlgve#X@tdjIY- z7JWHH-#ZWE+5HW)H&2aiI$2J;FDk;V_Qfd@4WK7t=J4jntX*ecOzHnQM2 zXRKJp4$ri}c>8+y2&!-)&A;pUF_+HhFp#VMZ}Zclck$HWZfL z#(g^LOC$8{F28huPnOa2b)Y|#99>V@8@9lmHEyIcp5XCSCBYum z0gFxU(h31yrqQSlH3J*%Q`vxZXri|{v_M}I}C0w8vxQe3ZU+TuX}?lu*>1;JOD>oohwVkj>; zP0}-m!wyLdU87%RcWmm_IU$uvwd&7u3c2JElEkFtBE1?K`A=y8byoKikTdC8#=HLH?Z z_U?lRn+}tfM>`XggyL{uIhDGwfI{iPpRT7wPS6A=-Aj@EIK}k9!?R1M)p2>FB1zT7xt63 zygwXG-$)T}zp~4bj`Vm%f3{`UO!_(Q67TXklIG|w!G;sQw7{w#+IbG6VP~vajOZMy zXzpUBK4aOE(;{Z!JrUk49mc*M+XhA_FLGgWJD_&6JwG<35~3S&`Lit*ASISzb3DDE zxw(dYUbdChBgc{~>+B*&1mkG0xwx~w6DtaSqT7F#l<25N?(-w4cXBUo>sUl#=JohD zMUg%)iAL*BOEB!5KVHw2;ZLeLU}k|lcO@wo7iIALcF#Zf%(x%k?tckQk|MZ{XR`bq zZ(lY-zl`m4=9y>YPge9)52ij-g5C0hu2}zonS2`pR}ZCf{)&%TvSc!TPT9}&*UDqI zmkSHDQ>&e(6UE8oYjJ;N{Q08lDlS#BmT!q~=6+7TQu}dS1Hb9g4F2rHI$RV#3IB`# zjyI#@aZrj9z5Uk4pLBYP<;&{0v$Ia|FTc)UMxDn5t>1=CJfjKU20rE9ujvN?*}2>| z+1Jc#k!S5i>jrk(U>TVEJS$6>gD*V2#zZQ!0b)9=ek1 zcML$?`zo~YUJuGWlg0d)S(MNb!}M?urKLS$Oh1`k*L`6NRw_|U-e@S=nZysh<^|Qq zj)|In*nsiW;#w8MDX`5E_;Sy1@U;ENhd9oJZo7VbQnv?~49a8Wr$i8N%S6Znq%jKh zhJ@|8IC7j19Jd`nS)qn-c)T;|9@xo}T6U6?Ub@{U>4Rk1-<5wU$s-w=a_;>143Y^+ zWJ{TlX^JRg7stDk>jpD6!sQxHGgiV;Uk-B%`#$5<3x;suf+@YfodVwL?de~{VUVex zPPvmLVE8SVoEytvQV=6YSwTPG^3i%#FhmDwaWWr;`smrIOuN4k3|cP_X=|iG{K^Dg zj`>+Dwi*cwrcI)g8SXIfqre}TWCfW+^614RS=jfgidO!o0AWLq()3M3K=EM)T`|#y zoZZgUDoJCm5+#ZoG?>r1b{6&3X7hU;tkAsqIB(jSRl8}?F{GaZ+0H@*nxay`3~m_- zIlZCa*eS4ydRBt`m6K$$Qs|JHok#B%?F3aL5hXp{2BYoTQ2Y3F7=n7W%d2f*#7Hx! zs8@#DI;rp{{R|s=DF;SAFlAOTCGfq^7^m;95|}tL^gwqn7-~4va`UC|cII-5{G$i0 z%Mz&T_E{Df9!F=@Hi_D1`O-u6i>MK4NFwRcbV}+U#uRKKwXn_jJ|v4`b;7tTlN}VT z9>9{uNz+oC;ol}BGE^K1MUgeQL3;>9_4DIs121q^KQV4y z6Swl$bf{`y%Z<2@Com5Dxft;g2zC*P%)bfe!;pM_)4Vw_a>Zu+lIjAqPS`O#83LgP z-{SqyH*E4lQ@YcAnQg03A~)}aOmp)tzOZ;Pewv@dv|JrX%H}Lv)tEtQ<(Js_oyVy@ zzkxkbs-ViKXI!h+PEy=83}yBtkin})zUsdjbml<3=-ez_!mM`QZ|*s2dYf zQutjB(@=GN3Tl)S%W>4A;fd2>(_=kS8om!8`Z0>uG{L1m4(RWF1M0l@a6e9*heShx zy}79rV&g8et?ChQL{AIU&W(nst!5ydJP0oLTEo{GJ9fl75SHIPk19cn;Q074w0P+_ zP!t%7F6FYI=Xsx6=GJqrbsuPX@>8_$eM!$!ZRzOECMrE_L2u5)P`INDiDtK9ddxC9 zb~jnbx343EFK^htw)wQlZz4pDoJ=0k>%dsqo;>uDV3E@oyzjal3>DpRlyMH&S~hdi zFLUAcg8{JO{su_4+z2oHhCyR=DOg>5!uc&|fWL4ar6)AQ!E3hkwzD1-Ea#9Dw+CkJ zai^a90A3Sy==Xl1f7iJO`z`n2wJo3G^p7WT%-u5>n5|E$*#~g$4u85{6o{*qY^EV$ zZhTI4CViV}%hdjr(J+$}OhaQYZTy_ZT+VH#({m59sE%0_eNoWnpQ}*VRWW=_{w3Ps z_JL*YYGI}$x;ZJeb~Yl=18+LWz=d!PTK-}rO!(tTuFL@J@+Z?2B^|K%#F5s08*u*A zkM>MAgXsf~qJOkJe0F$KTea{t`#iFqJ^Xcz6@6C&3+**5^{W{?KKz}V@Wc-y2CfvH zR9OYq)mixSo-KG-$WqdylgvuH8?^!~*sS-0b|km6c2**^>Lm6-=K{=|Y}-W*t?ydOs9yTOcERWRz8F}N+sgV8#=uvP2< zy<7DmzAv8L)Hj3r6(?%b<{LnF&JsSf6`6;$6yo;peAd85yd|wl>*h?MekpV5j#Uml z$V(#I8&$NpX(ts%7YW|MBszI2iMBorp{vC@bbr$fa`%5KYE==FPQMOjEU!yLLS$g# zg{yedxR*73jN^Cp{$lrLxUqd_hJt(FGv;b-3tCI;V5$kg#X0`4L7Ks$8QUPFzJvAO zxC^q2@A07?d2lHAHLj>A0MD?GXc4{_wg{fAzSdPR)F27nBX6;+JX6jgej@gb$Y#z% zhg0UX11z<3CC!-lgR3Y@BX5gbkzZ*hnLK&P-82?5?)`eX7@2IEKTV7EPuWMd-}keg z)4A00QNofvgSh>v*#CvVea;BPxi8nkud6xuQE>*u&dk9B^E}~v*;&3r$q4$Le#RX- zI+%GJC}1U4Nf^F+D9Fmb#n4JWu+N@C4WB$fZq+V|_@DzP9~Y3rj2CS7s1n-Xxs5%J zC?Ug1e`-H|Nu@2b=U{8AJ7rd_!GP_EYm%Zc^+Y^ZYFmt7A_s!jit||QmI0+k4-m%H zfTMN~vcL-H4!wavaYbGlz;p}3p*cVWvPSnZ^G_2&^=kpUci9%?PaI>D z*YyMGvyN<7)M0ifA`H_n8Zz~3qey1h3Esvio=(K=!l*UbEKjt4{N)H&*+yM4B0RW?8Z5O{QWY zZ44C>MZP=q0c+AY!-uwYabv0_{Lq^w81sGs&dYg&uiKtuw!1f_Jsm*V6PD0sYh`kH z;7IF*%t?@{6YcVyk4@Vq(~d{SxJ5g4sByJ7D~~ybqecg?n|B?A+v5m!>iRd)PJe^Z z6H<<`Nuf*eaGW^=KHQDJ`;UXMzRS>dt_ehzI|}-NIv7-P{Ga`DaJo28G`jsO>o$AG zueo%Dok|;qYmIc6SLeIhrdfMAe1a6q%3p^?kG&RtM@NzR@I|E*#vQ_N{lpCJ@Zm7}@{VSZV#1$R6QhTwm(oXLq`I1+n= zWp<5)hlf?6&1?j$I?do#nihN!II4H#Z!(>SZomawGr#@@V83ri?Y=~9$m`?rgUJte z=%_y>G&^&x({|Be!`rw?*l`<8H6!uD1iBeuPY?X!DA;-e9dcMkzZIP*HA;`>*}cQ3 zx@mamLo;96$T63|DsJ4E}{pV_*CGb~>CQ)r(evixroYaO}*SF|W&{88a9peRS7Z}!uLfgIUf zyFkxwdr`JxJFR&!Uhwo>qE}ZGsl+RfCS(-jsQ!j@LL$bEVbQqp)(~#jWo52raRxh; zE(_BRcClq2JmGqYDwtl_0GU}9;BIgVq+}<9%7c4QA{P#W?_Pv&9x*V|=@^_@y$tHl zY=_6w)xm6w3EZ`oV)y@OGRq|u*nej;UQxCbyo$aw`iu>oPKcyYs)khiJ(fDP4XL#{ zn^LPS$k8R6COqN<{UMU-HwivU!T|~J^n;EML z2d3X(=d@-3pRNG%&*s2jA48b7eH@%kG6%m!=8#k%4U(hEu-I@P%N#Ehot6YM*E`5A z*e+m~6CSZ>+bCA};3E5eqJ}+gk!L47cd!@vcGzMbE0Weq#COG`u=r;_-g%Rbe`YAr z#kzwSXflw74~Rth_;z%%9Eok-jVQ8l;uo&Gf%`(fa}SRG!s&^cY-5Nf`8?k*Dn4mU z78mrfcFA|d%K7+ujv{v0F2u$19Q&6s8>fB!z`_fcqSk9Gu!}o}PtXlM*F44s+p(~4 zUk7$;*+RW!FM5152D`j}yyYexm@y-T%g`GE8?}ku6}*ar|5JzaB&uB>tO6@SVzFoT zd$y+P7fuTAVB0$FXmtPD>{Yt(a^^ z4^}*3jrkm1xi|G zBl<69s{0Dqku}F_$19Yu(t5$SHTDF1n%0Y-Rt*5(&wAvs!wqI{<;d^c7C1OUlQOEd zLUQL-9CX_OEZ0O}|Nl<2&^dSbZHo>0MV{7tM0+dl4xGY$FaL?Zy3E-&A&)irQVu(> zHwU+Obh4*%DR@(BDCix1gDOiWfQ*-*Ax?CMa>Y~{m0<-ZHTIB(%0Fh7xq>9IJK3MN zcTjud@!I?&iEK{iMch~^hB|j+f-D=j7wkbNzYm6WY!NjV%Y%(p7(M&ez`Vm3&_3g8 z_W6njt=}pSA0G`O&AyQ^d2=XwHk(4vw5xVcG9I$TV-widCmmd|x+chf2*S2cn_*7r zLws;96~?BhQle23%xTgjNLUHKBc$l7u~_hD|3QtO)bJowpr2`VVJR3JmEWXMwa}#qjL*mg?Z9Cg`S_|_`KC!X~r6Tcl4(w~C4HUz=@%nWP3yZ1-*Wmq)} z$cbPYljPZZxjSs4_L169M+>-XYR}D7c88CH6xq^D!8hUrY~HhBVDFR1VkcZ?17DnF zLTG`DRxf3t9U8R>hlO)?lR5t(c@K`+poj;AUw804J)}wZalx}b{_Kxl95~+!C$8?r zElW#qM4<3YaaEz|N|$ljaZBonZ^R}~UGiKKgcr}gz;td&Eyg5a*?1ZD z6kNX($Gq#or6a_6S)~NGG|ffdFRIw@V;pX%kmaSPlq1Yu&AF{Ohy}Zp*pq83v7qUf z$TTbhFYMhXO5Kov?>${u%D8YGTf2>2O-e=CkhRQZ?OM#tPhgABde^2c9l>^b7%?sT z68=fcWM=qiG2S~~%l2uH#y74)_I2@o(cE|=a9lo@v2_Ds<*{70I{g$oHZzQkd0ow1 z#Yv*)kr!A=Km>N*uVU%(_wf9-3>GB1i=#d)W2!3wtG7CFl(dU`rL-DVHr&|(uS7{F0+uv&shBZ2pei5MJ2)v_;aZSRc(I8uN>k;;|DLp&Xy@OvZoC9+#gE@ zUGMP4(@8XMixDY4ai;u4Q~EjjJnla73oo2#O}s{i_r_6~ZEXAQ&2EmMKcnrV}Ptvpp~%g{fs zfB1dA9*xM-qC9^&8W=N)#(K+8oY0fgZ-^n82Lw~7g9>Gga1gqD_uzk<{^7vh7?Jau zN&E$R&J6WC*d`AT=ss%)&vZP6d22FEwzY;WvR+VWGZYNk=YrJ&1qkmK0zc(mu+}3h zpw}GPTB(KbWo`z`edPeX@15C?Vr6JwS}d|SvV&RE7M$*4g#iPl=*4bb`j=-x&(3?1 z`4$gatTB)3WhYaMXEe?GtxD|%nFJq?W1_&r_1Rm58+ZDW|Fk98b3&K$BAZ1!8|tw_ zegZS@QQ*Jd-oex+?qEykAq$v$f=$R(hQ?XN?BRY3u-3fG+!f6rGFAoVcS?b)Tt67} zDKyd+Jw8&6`aQ!gJ=_Xpo!*}$INP^RE3 z`cU`c4~}n&g%epV_#mnPQVg=OYH1qyRNLaN^chgv)WmnU>Or|iNif_K$Tr8wHFN1(hR$tOtZG>qx6C?>IX#YGHDQBU*{*|ZatvdJ@o$*Dxfu%(c2bSg^SDdw zI8zQ$uDu&>&3;_I!>3NKsJ(QvlfM+7j8BI@u6=i`5!FVz@sn?7BRt&2x16%XIQKXF z6w_6BY-Ri?!^B<K2siVPgGPj47(Neb=fO7VJ6pP_a7A8x(p46=v`W@?gDYI8ru_SUD+%R_%zU~dqu z?Kc<}beK@)FCF-ER)(54DZ|r%GwAt838p@tgjuV8vm&?6wat7wTQo)DR#oat*#LE0CQ;0>necA!MAB@sg>C!9WFM*qaa)GbufiJk z=*wl?dBBL(9q!<*qi%AKy5wuuEjxOA;jSIEVg6%r(>@tCq4O+CJ5;k%^EF5^cL2)&Pz%X#xCuWz17}4+> zx48cb@8YkK|MB*o{@D6h8&j;}`0)B_-g4Xp&N|^Qf2~rJ#rz1zPj4KUQK&2KRm)~K zRBZXC>uC&(?M1CQsm!UwoG%_!#lAZa;rM@Lj5jW3b!vXhcI_arsqEwa4=?L7oWU;p z4FS2ba3%?R%cO#pSnJ#MEP1DI_3-yu{HUwy{HN6ia6)tduQVs5KB6Wiu^%L&fhOJDT;Z3XW1hWC- zlBlZYIqy`kpS&(^!G(YJ)B66)aJ51*EpKSTNhe(Bhxs6yxu66yA4rpPKTBpC@&@0% z_{ba_)akC51~fUD(|G3rFleeat2PYd$R-p?W}?ij^V|o~l!mAjB9+QW3u%3t z_Q(uHWJZz7IM02gYz-Ba2Bng=hNgDvJO97`yzl$0`?{~|cawLX`!Fdn0^iIZ#P_4W zq4o)J{%E@jUwN|v9i3J9vrnhfv;k?}Yl{U0=}7YX@>-!jS?~`oy914R!|2h*LTLXt z9GY;C{wx^4K*T3J|8X1-lN-rzy2(@pAGG3{fw{RVK}N{dGS2nM?A&f`s!_V8|U)&cbc=Z8(0x zBBZfX&@Lqi(`@9ZMMo-FYxr3B^=Fzae9;qd;ir;< zc!3>#a{m=s@l}ot*gof6|5Y)L=?*y8V?KR+BNMN#S;m~4bP|n@-zR@PZz8uhfNaZ_ z;BOZnCE7z;Jemo5%NtXEe~JX@eQ(UStM=0F>)&vjhXmd$mBTVUYka*{7Xr5~z{I0( z!A0#aH8h^h7V2ekMtcI;Wg$*vOV~P=R=d+rLN?6T-4z?>PG&DZ4Mt1Jn{dl&DyHgt zgILpRnzhyu*2i9Ey6Tfj>|-}zW(48R4e7vm%ko0H61exyd`qVY+?f^49}KxlL{De( zhh5ZRz$TU-`EoKu_uKJv*35*ShJI8S?+M<YP}ML)Y}s_)jAy@9tup)J_XFVJY}KRF7H1HsGSwisL@GKv&Wk zwAy}=7{0iSO456|0PmN0bjo59zU~?BJ-ZivuPeqKgSWx8dpYjudJA7eN8_~Zec(7~gi>=whE(XWB|`RZs%pTlIswb)_s2Rc5RV)BPR_-ecZnOmPh z#8iZr9Y2z-zXiO-=?}2-@qFH7X$7bi2~5k7Rq$}aH>~%}ATOe<@W53~^!_WwRLV5r z-}$z%bJR~Y+Np}q1UB$tL4ZTd%K5tlSE_k$#i~t!ji+#1li0r!J%VsWpLC(Ec z!G7+W0HZVgSp`dFqG}o_u&xYo)cV;1|NTDN2%4JbpegT{)d-UkTzQ#&n={y6PNRax{`G4 zYfFB}?k2fY`U^{6y@2qF4S4sTD{HhVn=G>pXV*)W!2a*MSl1Q*1el})d)3mA?fU%; za#g0YbDIspLDGyp?B+w29}4fmf#vwts}~l2uEyF;_aO7L1pi$l1;)KJg(QNt)U-8vp)Z$Aaax^Ud~&K#zM9K$7BH0YUt zvuHHsQq7KORXA(1Iy}4GfsZ1D^QPzlt~fOYGABI50Ee=gfrN(wqD&sAgx6tI=c#R;uQ5i!HydRHN3!XDZK|}Od zzYkp#kw^b|ZsZ2)T*wVm6|nzv2q>Ecrx_{sT4)_~NHA<}T?cs0n9lBc@)T+kr?RiD zPQ%dfc($rl2Sid1fwRakSv>O)9X-_uMD=sgH)J|!ZN7(Yof}||kpd5^Ghovref~uF zJdhQ7F=Or)QbpmNl=3?t>kd!gO`4xz{~IwrZO&-^{q{&4Z>`SX38`k%MIT~akqeB? zNyE~BGcfyiA+CG(9OgTsFp)%>@{_g3sdx1Zc>d3&~FP!f*E0sA%c z2$1iiSVyDZkkDEPdfSCQvu8FrM+P8jtUBenQNVh6psNuIYG>VmQ@ zD!lj_TlUbfBER6fH*0y~4~kw{!OjtF$3LC3*~dTjp?#zUTc3ZE4tzIbmo!Gx7H=bV zeqa=BYg1-BY(~&$cD1l?+fDNRfek%8J`+q+6!?ddH4x^uhu5$ugZ1aKc-`-(V8_@b zzG-O@luIn-?XUQQL$shn^v!~5)f^mpsQ^f>%vcYsjd?;%_SB0kkiC~Ygd^fXZ%@`Ld|1xMrFRejP6yV};>kAP`*aP=3meJmEK*{Bd(2_?CfTx+ z!-Cj&O&fN_={4+*<#ufRB_;MwAh4U3ZG>HdhLbt{D7Qveg>@GX6&OOpV75cpmzQJU zBb-NKzEP~A_*<$LqQ#0w|0Jc~g?TX1#b8sX$R1s3 z#BNzC#X3(4XPd*6*u>+9ndlbLGDJGBX zOiF-V*Jm&*4a6aj>7Z&;LWtF_IMmNqrv??z@$eiYJg{1c-?*m?t&>go&y})#{cV~z8fE7f&715Nox;&nx+nK&SfFJTMR!|!;q(M&u5HFPG%U=%@sk>7AxfksWqbbjy{dk4BC-{Kuy`B=K zX_oxgt_YH8CCa1eNV+304fm^wQ`|nvDTf6`Qze&)wYm4AO z{AoH(>LlEcosP%SPr;;v?x>Kr6~z8!V2iI9DT#fDsVe8`u^&o&7%;f`^e{?v96`I# zV^}124sA=3-alK0g;gqWan%tlS(^<(U5Pj{?>ZR$bi~H(L$E1ZT;Q_~g3hRCoU7U$ zSlgfhtLNT;eLr(y>}etYb^op)Y{bJ-PcgRj(sklyBhJp>t%_^l7Q7AYL7insK*{+J z)}M5Rq|`_FXefu=!E2~=XBi!iKa1}6)3JX|E`HwKfJH%psIcfGKC$>fyUTCkU_eLp z)Vb&I)~6@LWD`*EkxQZ(L+U?PtjFdB)~}MXIDBVgW$`eQMzxy?7}v(e@K&^;VCbu&9~g8BSEHWwtst*7%J_ay{V!Lk}{b`Ai(D8ghkPK^!=&>w_N@DXla143UE#fh zE~cC`AQ7FsmvF`fcia(o7W3S~@$uGNEKGF6l9n0xzfYu949@nEZ$0Uw-RL6~kEq?^8hQ+q|(5dU|u;rI{OU(f}KubLs(I|S~%*bK8ITgihh zeO&pb)y(g{?P!oakd$S2 z+UpTySfr7ZSXrWD)NH(zSci=IH4L!+i4TRoe`tXOFF99-m+=&I6Q@zUOzsWr7V>E- zsU5gm?>O$wx{ERC@mT6mgk#I~aI(B8uFXGApO(HNx9Cx(R3{h6TT5`#?}Zl}2k)aq z*lB%IZ0M8+z+_HfKVDA))4MwCEgyThI`j{+mTN-i$#!@i-b=op&jZtuCL}#h1$?&M z;$~e{rJV=#@RMv9;<>|kN9+Rz&F#j^6SVn_ZzcGN;_Ce8Wm0_D)UE&ut8rEQUZvIGvV?|kZza8DQl!sHI;@mO?FWBW2 zLquA~lYwF*s5}3Nij=K~`ZfnNnR^KQ%gXTblL~lza2Wes%HivkfB5QgF2t_AhnYi> za8IoPTVve8v2rV}bg+eKBQ@zW2W4HDjXharezBo;Mn63yqfp`f=;!f z-|1R-F83KL6*dd`x_(^b`k8n|7GaIa4JI|x5wD-K;L09U(JOUL)ViUy#`N|c{OvKo zphhK*Xk9{XRUX6Zx*y4ZFC*}E^9rzT_Qa;y;c)I!4b2kY0G9&Wh~M#OxIcLw_+}SF z$+z9mJUbFrT|5N4{<}&dX(KG}$m5bPeSu}e7if=^DC;6Q1BbUi2ViVj&UMwlWCR*6 z{b+EKE}pcpTBM_nE}yj`Zr7l4c}Xu9@q_)C)N@1eLLaa z*Dz90y9NRZ#E6%D5iD}oCYnLlAm!d{=67T-{E)duMZyLI-|=D;e=!K7ZrNj-TQ`X6 zUZ5>I4#O(Of{uzCB>U7Hh+^&$s(eZhrvKcH0~Tt~Se%1@@0Ad~C>DpQ2;_W7K+ywQ zuyf{N92uYiy6=-w>E8;F3&}+52|^Bfaxs3$8$-{WE=3VzWiczaH zE*76SvBl9eFl`K!s>O2k%fet~-w5u~{0y+XdX8JYBoV|@8);u>Ak6CfNSUfc*wPe9 zHzyXrtbZo-+vRvzw_+6Oy}chs9GL(GF|$B^x;rc^li><0CW7XKndqukNVM5-^v*a> z%5MZ<4e)1;BO)2fvi&i9~~*caprw}@OHrw{E5he_b88gkqXlAqE` zQBgaFIIoCB*Q(28-uEK3wy_mhgvDsz>H@=7Tk($GOz0K+O&h|-LWYU|Y^HomL zQtr=GOl$Hc-s=zH-ftt}*X&l*zu*I!WrEl6P%IS19Yog`RiHHP3N@Q}39_wr*Stz7 zhrYx`R*u5CzwgnWnmbk|@bzD%Mf1ueV*Pj@v#08}<+8%Z}n+;|@n+of2hEw z>L9$`Hi4er5e@^ID>=Crmhh%mgqxvdPCOSDGp@O#aK*B%Wbf=)T8y`4s^lcaptTFIlya?p~ssJ_NoGB~ zDSrTRZw%p6M=89z-a{5@tcHo!0ajDLX+cESXngy%fjC(gV&Bf$wCuzS%zKr9Ez<^Z zO{WBJ`27YRb~NJ$!zxix+LnKMa6YDrSnxBw0=c>wqWnSoyJSJsN<8&<5~O?$CWpt^ zf%BU{cw6ob+ZFP_Cprg0t~9|q?PuUwc>&fvRAaRrPJ&0OA!|6h7IIUJagi2}i@ttfZrVARB`86fpUnLWN#1Q_$ z6c?;|YRd<|kwlR+d;Y+wN*Wz)%(pC(qs9;VaGK>IF8IhKe0uOT*OK&@ESafE`!8Jp z{k`(^?JPxBK025AmaNJK<>-U9!Z@~cT{v9xQf0f&`NELC3j6!&1dv!ao^?0WXO_NG zWXI2*k2%{B0@I3caic0MiOj{ZgB*2_48XVFZs7BSBhcAKhgVw}Nqw4i`QP*H>E|Wd z{DUBET6Ii^7Y{J4xqMcH|J2n);;gIi-d-Uy*7_f^;~qldN(sC#^#Y`%`)YQ!mw~&V z28f=r5R};p&Bi>b{MQT1T~E`0TVBH3EK98Hy9dvAZo_DqGvN247+2~Z zf_|S82pdpPEb-Q*l<UMrB7dD4Pr~1I+1R z^$*0sv!AF;nM#6>xkJ~#@$_y(94s5TfS!AB1bXu~(}PwOAmcBMazhm`N^c%6vnz+& z>H+xMtq|q}Y{Q7uM9{X4z>%w_!`V+WG4Of;=^0;3A6}N=zA#1t*QAvuMk$a}b3AcR z+%=M?(S$C+SBZk+JuF@ImKgkL#^Uvc@YSph)nBNBM^ptSzCS_!oZp1Y%&dsm;%T&B z!iu_@{cr#71qwlKeJ%Y z$Pj!oI){AqjlicPHc+Cs0(0KopiL&SxaRo?OtI0W)}7vX_o)kUiaCOsDz&6Y$P74S zD1pCO5q6ZZaBy<~Iyv+ZOM!Fke@B{3TR*^ME*xTZ&l88&SLa%}{|M1jHm zVt|g@T?L*?#nCM54U8|;!0{XJ!Im@?d|z4xONHKI`jsSb8LA-GM<`*A3;GKv;*F`} zpiL$pqjy<=ZO?rSsKVA}eVxFvo!NE}K=o2;#{+dcvRl1!L0EfSSo zc%X9c=qUGmu&vi5LxIcSjz}bU^&c1Vm!IIbOf}U~6=Q#7`QzKm&*7+K63W(IhKTQ( zsPs7xa*Q%ivfl;j#QgEnb!kYGR>FJ7C1BIILVENYC4EY%oa0=5sw94yMA*4vcC0@9 zxqlh`^JKwqzbv2I*g}+R<#?<5C4@11icMFtY8J8O*nYW-z7%o5pu1zySvAw5d!!s* zd-;Tn`lyYqr$j+ILl>t!3xR02iMVC36C&Szp!=Q4j(+8fQ)!LbzHTs9{vyBm_M?PUWix^Bi~D* z{oZ&un5>2;+)AOO&jXDkI5^y%Dty;)L31w00k_x8(nV#seT_EK@rgJ}FC5)^G|=LE zK8D6;F%~-yqH^D4SaMY#WsmKHlBSuodQ>tDvxn)U)Nr`9Qwx(99)L$qqB!qy9#mEp zQ0~7-*rOanMLZV**vB(ld1F|_NkiYwX2w8&F{t#(qWOar@VHt_Io3=^*jn5zy;?M*`K;L8W(?lK5B%jk<+zl5HS*x{09eh7jW* zS6*@dcWw>i#^1brmiivB<6jTIrh22t@=3l&=_j)f=<%@J>H>{K$xk!L?bLi`SmvhX ze{-in=*ci@ZQKcke#)5ji?H6zaui*#hF$e$Jcio%vkO`~X=VLPc71yXb$uzv*57QP z^cajKTyn%qJz>aSqhJ*!D~ zj0w2QW>-HKJU*?lp6KxG1oTbp!IaW-Q0bz^|K8jKVbqv^qV)tY^<(;*foUE4q7x*|aB`H0>2~>n$^2Qj{ttO%{A)mlJTA{#Ph| zLb1eg0$U`^##mx##%Ai?!7=rQY}Ma(d^A;-UD0qDt*0J?*Js@joF(D#UuRt8XG3K@ ztno-|6go-2payzxvDfzix8kl2KVT&xc+stR$LWV)6rI99W!oUU#+-K?z5{DGab85? znb5z?$HrY9@JWy?94q7DO~eKAOz=vqe-Q>W={-4Na2eJ_E71#$qU`7$48A>}#zv+l zqV2tjY^XhlE-6NAxDAJkI#t;f_5zQfwg)bTpA>wAE`t70g7o!rsfdD#5^HvZJV0<&5LEQIt0DBBx|C5P+b zhuUuH^gS2a&OBtkHwQuJ0TodBF%j6^g>Wr&u~lVgE1ZAlgY~MHV5(L1fHd znJK9&0@$+fv4Y;Vu#Itr$g8KHO#w-v311S{0QEnxx1ikeHkT- z(%|Uv3LNw2ELoGa2478fr)TC)rc?9f@cfuzvfFhRWB*J`D9a34s&N zxS-zPuZK0Oga9IVj&z9~4|Xrak23dBUAgnQyOk+uo?-P@W(`eaQk zR6I+i&0#H|-FS#vPP+`dijUK7ktW#Ic!M5#o(;CqfIX}+_%HEB%`7>vnJkX4#l^tn zU@{%E;dAw>JF4`J%Q31Qn8Ea{ZJ-J_6dB9@l|trxHk~TpfJc_~(cG9GbebfBg+1+P z#t8r8%M!HDoXl;zv=nC?T}>42Vko=m7zvyj$*kS_AL*8gwrc$~x_Vu-B;MDCEw3Tn4W57V(9!f(;0+pCf@@qpG zYI%z`ir%DGeyiZp<_9$6wk&Q^*ho({Ou*f-P1MI&361t@V3BDveNwazKiw6_{TI)n zh~so5tDa!pT2B-!+*?dAr|OS*|w zRvGl}U=Su{m=mMD6?9SPAaQu!!Ax5;2PW^&B%y2KKt1Ibxz=AG%z)hj|2$5DIadL@ z6dD1o@4y!8i(sDn4w@dN!G9O;!{(UJM1RR4NCkL-R_MmRpEJLjKv|SPV|S-+b$>~F;BhFjs3(h0 z9fd3BB*}#NXP`&q0NE0L5w=+9!tpsAJbLB@`RY4`+~QJ*ZS*F8{#yzkC0ua%vOu`& z@fh{*$-}$FBYCIxUMn973ErnOj>$ODC#+d#%Nc(QaPqfb^!PHt|DbNUTVgPGt}3Yaj0IDRLu6yyH^Q!;#5oM!B_HPX)ApC2$n!24ENzp4g@?PTM3ya7 z%#Nk~7zKAu$kL>rTjA-T3itfp5Xo9|ikn*+S#xAjGBr3^OQXK`(B3Ip7|w~~SvP_+ z&OWDcj=yPNS|S~>IFd?!J;mjB+t*aa%h&XJ&*N4b)>#?eE~JmV9x)vczf)f&MH1le zgreG_WX3)}tRMc%G^*=i!uAtngIgEX=&*&jZVl?v5CA)W3^Fqf9N@lE0$KUg4o>zF zLdQ;l`W?B;2+(6xG1v|-9wX6d&@l> zuab&y&5H3{YAOCJT7tLdAIIiZIaKFF6fRy`NSNGGI+PpThV>pbFje{lv~DkhaWbY5J1Gu`aw-?; zxd86_OvDRHhA@2jKMZ(l0RjDqcy@#Zcx??w(Z5f~^B+s`fPSad+~q!KTsT0#-AYD{ z(`#|h>~K6*nu#WJ4DkD(QVg2ZL4BQyG2>Z2<0G*T`6^>56Y96$I$L1T9%HS0jY%-ZpsJ^oxu;<_u}w45{-` z2E|A@`YZ4*QI^i7(Z@HFMMs;di%Ti9S@sa!(4xWQuYb#R$$#J`*b|1_3#PV$hJ9na z3HK=OUyaW9V8-bPQvE-qCc}0le)l_Mb@AF5v|f?M{K^@J6GP<~y=l6*b4?y?|3&G{ zo{6aIB_iCz=6Gl1X4>99OjnmB(SMJPY3sg8^xe0`WGdNEvjhymDBhE~TI2^K%v?!i zKLe(+3h>P6H2FHs9r98LQQ0fZ8w!>s12xOR_3&M*ceo68os#6#>X(B`&p3{3afAAG z?o=sd3~cK9O~q;*$hSZXtPBs~v^F@SQ{iR0*2NPI{<;bCzohZ8T_pPXi*WstiMV9M zOyVG!fbygA$(@!JIBl9J95J*-h0YOB5IG6;QhLe1p_kO_5khwK3Q^yFiJWtk1?Sf{i1Z{I=*g@n(-*CT{%Sp1vPh^=2AAWg4cfp2 zM__bXKMAfDqDb&Gb_m^#k_ul2>8NkS3v*6!!F z_vlgm+yPGWzBKNN@uE-ejz{^OyJ*@7CERcNg|jifEco^=FuMM>G_-;t78SZwYtA!f z?6+d-;j@8A&4{BLCsvVpGROo*E+LaAN0HVGc0@b%0Qq7XL#(ggCHrDVF$T;KiQIOa zt~}{TzWIva6W=b5|16KPWA*77Q3YhR;%S7o7XIquX<4qez%IQ(S4xSX(?{TF5WAbJReNfd^f#Tu;j!Xx7|H6r(4DNro~^ImDG0Akx)eJa&%Nl1!dc)B_QK-FZ zCV9H*B(8sUn_jg&h3XnR@#Wl1>{G8qt@fSxO0EgDI}Oot-#L_6-bz=<*WnoHS2fEI zreWzW*%r*rpt}60ak%>#2B>4UP1?b#)7biB=;o|M7xXY*wTOOp*RbLR( zt#x6|mw40^-VjV$Ijz<20x|c8q-yv!BzZ(bXV_gBJlq66$9kb9qYaK1^}_29#UM5I z9-MD4gmHJ8VWiDbAYYR~{fQ^c57C8dOU{wG1*ul1y1tw@%)wm+e`rNtHD(^#gH?yx z@qSVzrUkX3Ac^AiXRWyIK^kuRQ;(jqQ*gz}LulSmPc`*j(73CSDYYGi7t7`0bNEzx z?X?~_W*j2l+C~Gfr3sZzX7DM>1seY81J~pR6Dq<;y}K2(bB)|%$Df2u*+#DwHxcoi zkJL}+oS^-go(?s=~#%;>!J!aRde=3=)csP4MV z&G~5x%koxHrerBt&N)E8)_8#Y;bdB?s|8{fb7|YhLZag`lXfO|GWG{nP;z%J6$#Ly zB+UR1g`BF1&0dKz-iG8%(PE4nTun@1A)d&YM824KVfy0bBxN`dD_!Eqs;)@ii^pr)2NXy2DgC1MgVe|QyD6yA1kW=^1|1g}hUCCi+xKT6#eXOp%` zCoN|vNULXD1o1acZkuk zaxiJ>ARluQVak^r;(A3HQdcRFE3dpcjrHr9$EGqkW`i8}F@Lha<(o@Ww~oL`y1(g) zj4w1x!x0CX%<#kH&A2(x2onwk;Bno5^hc!@wnTiPOTSc8k<@xRX=X9k`*;K`dH#$k zP^)1!b{aD~oV(D7>xreU z(e(Ax7@T`w&FYi>29#QtO?*0rsMf1LWU22bPEYV*{WFOnsZZ;O+G8E~TIkM5?qQ+x zwJbedrv%E2W$3!Q@-Qf=MR$x{1Z%^L>B^5TP*r)Z#-e@%-0@w_7^T*eEB$FSWUne| za5ln?6LRR@J8G!iCytupmucZp7tPS}p`lt|X{YQ+vhJb*+SgW+v0Fq?{F4EZdtXDR ze+xHfFN)zholRWVPeDT{Xy%qSY@_R%gBS^~h-!#BLX`i_C;ovih`IVh5)rQe?!ii+ z+bIc>yH(*&dn%C*)B`xv#FUC^fc9X7RlQ~#Sraybj#H2%Kf_b#j2rQE{feV>?4T7^ zmkiOCFV5Js&kF-XbNjxf$fCA? zAHY^|QEbaO4n&LxD#_+dlxEsCim*c``e>5H6=0WWV%X9Y z*lIcprx|&|#y+(Z#>^u%HEc@ZM|Bmvu_Wl-%^B(|(QhBtR@$139iG#s3VV)JGA z1{kEj$|U&h&Jy%G>A}F4#bmnRNo7NpK&F=%rZXvEtUrP4)jI}Tcn2~rI1jFsrjzW# zco1I}Oa9cx!0f;QV%zHvk=8*VbwdfdZ&$!FW;e<9YKFIGws7C=DC8$Srz^x0V8n4( zY(1_4S#$Q|A^V%mv>mH3xV?rBV`q)=udyMch18OkLYmFvHo51}rs4=XVD< zTj8wV(>9t;@fNa&YFlYXjTg?jr9m5l_u+ukN#;$673LmMAdV}u>B6NO7z3$du8^E& zw0ldLPmMBU<|`M%ZDPrVfRSYVffO=jQLt6w}YIyoEhqfJE2)&`_srkNfkg@F&{ijt(l<)#I6Lb%$%DuGp-2!H> z$UN?1z{%qFMKOr)U!I%Lzdn^de~4|l}d5Z`7@qWwpvV}`z3m9Oh^ z?B5$f`f)B^B!gt>M_D|%cbHhMtf%F94MhFsX*%)cJ`$__fJWU@C1E=9*r|7xSvIMM zzCHAdiBIvbNgks@J}KQKD+lVBW)(M3^7E?EVUl3k(p+xQPy*Pz`@r?)u7g~^NE*At z7HoQpss9-<7+1p4*Fq20@$Vbjvhg1GSNky)dlJWGsCUwfhM&2VhO2bMjlEQScsl(% zx{~roBdkXI|E148>o=F%?gR6 zg%%Acd`j|5s+fed9x_@hpIBZRBF3@dggn)Or(?tj6X*h?=LC`al|kU!kHm5H9ynHY zjRYGn0&dq6a$2pMi2FY#$!gct|zBqAO_xJFEMQ`dIGavxO2vsfUDvU(m7`=JpC~Semolw_YD4!$IGn2 z{oesHr%)4i#+|m@d9aZ9)@f6xW8%#4v~;>UOO8%%Xr%AUF4MTcYw>d5^}eYroS9BPqPJXA!+B+eP)mWGuP&G4zjav*2U*q>i_jz|2r% zdV5X;%-ykq6HD}g#U{37pPwNBKSuDJi9p7OWiXW3Nlq0l2H~+nYX3}wcR?EDowYeA zp3q}fl)fX?6J)5b>r4{yKmjFYMKdQlBhaP#C==m#4E4ItF;n?-*g{8HK7Mf)=N+Cv zFZ)JeS@2DIXwDcEwhBJZDWSESLvXljHnBOIfKx+^p-W>8Cat%Jh*4rV#djgxJCj3A zriR1jd3))+r~^>>Vg}VbAj}4A>EP4@6XA?{3?q`40){(=$%0;6Xbz46qm2dR!>Ti2 z{~(!3kT?Y|{g+VfzxyDtY#dh3YA2^F15ndu7WKHh3oAwb(fX3@xJpSLqvFyUAWXVIPB(PU@& zGkP@a6vTs_ACbXr2u&e|VtkM_iG zUt>Tc{TI!N^Mh-jWT~)e;m*7@WO;fc30^LEFsCmiN$pACuT;V~NS%ggzpad20fmYY ze`-|TH^40KcB;MSG}x3m3$t{V!b+K~XcOp7tOJ7a((^quWmgog_ff^=u7Ynsdjn2X zWbn6gCJsKiPcP~m!_I_Uy4Sb}-w1gK&6qUQwH506o^a$!_QU0)Zs`5348r{1(#>DW zfnAWtO_xi8hxL&pPM(0?YFl`9nUaDB2cTe%FFCs`9Xez$Gi@i+pk=z5)reyeAbKp4 zd+zA~FFswP-3z`F_fmIU7}>#8G-Y6uyTH?(l#kk1F43ApAvpJyC>G2AqCGY`s26B2 z)Tf%beMxjf7uj*IV<;gw6LYgMBkh7CF#+KBHboG!Ao;i?C|9i4a zsCO^WjpzMw#_RVqv}GpN_Kv`C^=bHM!zXH=JPymgbkL+pdud{^KlNWYpKLE3XJzJR z3C7HINJ-q;K)(`{iKMVPV63q-x6!Q#Co=(tJ4*&)H->Wa*c zf8E5RzKFgz&LS6nO~YJ4YdX*ufk%p^X^K=Vo?Lv678fSr!t(~$G$9-nWESCSwYK>0 zMmG0A@Jh$*R^xIHS>O-1qMG@xlK8qLn7jWjm5x6%(JJ%yZEm$^6VvZpcD!uUN zOK`tM6`8voagKB(>C)rSsYRcpNEBets)J;7j~`APQA0FG4NwRDU(6cmJ={;788k+< zn>a1MO6~6ZL5qPLdRV1HsO{_rKYUjsDRZ?IAzn_V)#SdLW7THaTF#s(3Q1I2LRFQu5s^8>hW&B`VfA zm|)>TL`x2%f>e3Uzr1Kv74q{IYHk>17(@;7N1=IQK4){thCY?8U@Z1VlHL`eWclD^ z_||rbMC^!xu+H~{KX(Ys4xJ~5+*09`-#7temkHYE8<;E7SZ&vMXVGG{Q z*|6LB7>pU60$Zka!TncZ&^GHXR8$Hqp2{1*saBJ{>zW`+JAm?265!E&g1et-!Lo!M zSo<=L{C<#%UIW_H=S(&_6{+CXTM76-L+2Tf^%sV5JJ}&BDIqJubMBK!G!-q{lhRP> zA4+?fWkptIMJf^DIrk|lBcff3v{a-m5=Er?|6Y0FjgRL!zu$eX`?|i@tQ|glyxbNp z7oN_Q*-~Dz^%~dsH-h^)J>(kGeDTbo>eFxr6fYgM|LZU~19VkM`V+o*J8jpPp+A zU2t=;;9whgA8Hj96x;xd@$vBUPL7}#)xv>GAu#=G6O3;?K`v%jK>0LdjDKYgBVT{U zMO7+nVB~V{bt8m5TN%M?*T;|(<)Qp+OelE^Q#U;GBF#23MFsRr%*ycsI@nbT?c1EAV%2<GLc%wn<>a zCi>Z7&7&&Vy5IpWnX?Td52*9SZzLgqh9%F@_8^PRT!rVxVzT4iVlLOG1(yw{^2U@X z5_{E>H}?pcc6&A6GW0ASY&edJvd{4NR!i2<@)nn?y(AH5Z{jV#BDmeW6HSL&(f7$g zY%_7C3iYOiW3D>UXB!Qf^ry*mOjjP$IbcO~CIqn2+jZ#R?d2k!asOcYFkQ%sI|b$e z8Su<(G#Rq%5)>brf^pp!VEXb@TyC8X+an5abBb`jr#!%(c4_PwCdI8pr*MYeFh2ie z6290pf(L84<7;O*UR|q+{P7d4d~Pc8ycUo1E?gi>yvGPTnNV_1EuTr(ydX`x9LTfX zZs0RuI<(C=2P+@@LqWk)kiMA!-Pcv{MDOYMFl^LH8y2UIz|~BXxO=tq#5M$c}GsF%j@VPQ1i$936RT8cz(| zOh=5Syd!Q6U9yj%oPjc(dUgzmmDa%RQ*Cg@6UCDU8PfZe$5CtMT*^esJapSinkB8x zF9y$|7fdwxj!ZjxrQ4Plgj&;{w&~nEWH>#yZaNR_Z-8kQGx$6Qd6<4@G~X(*5o?uR zqQrlL`IaM!D4D#5n-AR$gKNV1vgm=-CN7-ws!4RdIqaTbt0bgJVML! z67bDh5zYGZ2!C9-1?_^SW@#S;n%)|iEU{sc0fsvN+ z>|8Fz)!znV-3WW!KYI-NK7Y+-Z+gnadA_0r9l_S$_STb0pOfL)$w|Nt8Pc6o17LE& ze0u)v8CY4jmPQ?_f*dz@ny6m^Une=!ybBrdWV9ij_RM0XM5nPPB2C(lMjT`6!SK98;c~0j=!!F&Ry2I|VFXfr^WT*qa?psG=EBrD0 zdO567If{Wa5q%vp@L}dme*D;3w%=OlM_RTVZtOV6R|$8pSB_`+!bSJUUz1qAcaRqB z*NWnLRlC7*V<5kHp$M8J?6}f|ewa&}(dW?+dXt;uC0$h-ENC4)zBMpuj<6f}@{ZZYZ@zs{+jhqKNJPdi0 z$5YYQBR%Mw$k?~?)7bVr2B~W|+x6fCj>l(Y3qa z(7tjC8?IY}56;HpMv{jE|EconMH8;(;DjZvlGf>7t==yOX=FF_#j{;`!{@JnS!;Mp-)kbyT*|GkOksOM$MB_j);NB~GnCzW0_VNR z#M(W1sD5HECjDx`g?usgL_6}xdlvX}UKszhT^-RxEZ!pKNYLFMwjOIzLEbH_zocgy2tLvx1 zC~U)S)9;Y7x*xyY96=jm1pkes63sc{!auyu1oJ!Q+cZ077NUiVVH_1ojckCUbcDA)s~Y;eGkxAFDBvs1!tkg zK=8wjhny^3xN?fJ$D!}#8}9{h>RWWF=WS?Ehx%(vX>M7>&pjiP6Y&oY*9 zDXrfmDodUJiTww;jY)W9-%<*@l+h+=EnR*_7c`A6DK$`}yS@Lw+4a`6Gc^ig4UMVA zscWK|8VlO7Z4AEFGo+#2VHk9x4faop!!H44U^(h6CT=+gr9U!IEn60D4T-^yk0K0R z6^mJ-5>#Cjfw7gnINE;*Ue-3|^Dmzw+oSZkZS)Cf4}62gfpt*T7lvy~PeY8)Y_uFR z1?IL(qN1@3SQsr3#p-L2@x3N6@*Y>M$U{WB78#jOs`rJ$AyZ6G5;KMLrax}cC z^aK6A=S3$jsfrDbMxw3G77Vy>37Od?9HX6$=}+F{j|XXJZ1x?^Bv<36WpS8l7%6Ts z=w(BM*;}C`4J!GZkcj$KT72T}sgHDI}>`2`oxRz&!hm1Z#i)*BCo?~E&<$1iT zwi<5fpU29jtKmOgA50$ng+~){g_y+1un2@!7{mNq0mDvzWOb`cExJ`>cGp zzM>Qd*FSQw!~bLOeOx9(ndTu^QZw|&`E!iTS zivw`SO)X5Ebe0<`OQxKtOg?Mv=yMu^qYvPnt5S4j z=~pb=Z%(f+{D=1&TxnW&1E$ZNM1zK$MC<EggaPiZGA^0n2FwQisWP0yoF=^>@QBn1GOdXO>%#Vx_m~aV1!F>j=d%Khzv3BHV zrnob6Z4pmynTHihWBAh-7jWO4zepcn#_)UdajW-03`&zE8kT;5c3yB+?Hdf(Spg^3 zOVeYsYoRi{8+r<>z(2edCWpO)mD}sUVT2mp6DMpx+)U_`mm$EnO`_s!p`f|LLAc-A zf|H>F6JsJp4mYah1-xT?4r$6MMD&kQ4aNuGxe)4?chyqVHtMdwr^E@Dx@r@uqIcMpPyx zh-Rd^(I@+s&=BH5y{*R5J5meiDFv+?gT7~R-{v|>;pr&OE7kc z4%n-&B%?-+6>Ak7!o)Zq{C@ohmJ9QS#n~zR`Q~BVPbGriSu~Q{EluZ}jYe^+E%E&J zUTto-WFPUSzW`gf3?KhZ1uUT@gTP6_W~Z*^49vo)Bm{rh&$x=!8zP|bpmN}>_ij!8O(3x z5rm2{xGG8)(_dy`@^l+ATJ{bu7n_2wNg0mMw}+ED=dee5J6wK$2;Xa0!Cb!(tbHy` zO%~>%{X_+-6J3BecgoWlEgavyJrATK8%@e|#oE(U&}PqX);{$EIj2^^_OC02pp;Ig zyk!7w+PQ$O5jf(uuLH^BSp(@OgBfDq-9mQpgdX~qe}QlD)|hN0Blz3PS(M-xUw3Pk zXn}(grGCw1i1ByOFaAju69*Wvs9W?fbr$OVk;RY38eIKII)+Kl=j-*K;Hgee9x}cL z?}mABlZCNpFnk$TH=B!jqvvp=dUJMpg8^?;FanX$8_bDufUyfBaCw0-Ogy8_;I|*l z=sg01q>jVp3<-Mo=vlaLZb20+&qITf8}(a#5FAF%qto>V!b$1zbWD1H*x-aYjj~n4 zZ!&_P^NKNbU$;UmA|vvWDY|2RBh>HZs?kQWW2; zAlv62#_2ns!3({$sI+PX9rAq-PQ43s_>cf$KAKG{qYt6|3ZYK3G#Wj9UqVD#INq#X z2QORuSoXDOvU*$(xtXbtDVww4+mIZ*J*@${y=zg?@d5Ok2w9+&SD}tUdbhrs= zR+r<(OZ=ehfhNCvqZCS`2lERVJ&-+9nqQnUobsFk+&FhMeK0%_{lnyh48l_uweT)v zW*d`&$N8|lCYt=WFbd4ROor_Tl;Nmk2^s(^5H=G*`T1q^wf5ev-3hb|YDC$b7;pPQRRucmC@YpyH z@Y!jPe-+YT9tPv;h40|ghAsHy*kF2Ky$Sjo>d^Sdl9+SdjQ&V!U|zjrXy=AOSe7kG z#~USS1$53AEF zUyhRx1E)|mmBS)Yizi*wdA;b$%>X*8^0~NkcL06YIa*{lbQQ&2Kgk?#UHU{_1PPyV z;eh-ZqSp9;O!$3_?VX^HT5DI}t(o;0`{+0tqu^~na2SU_o582ld*Y%AJGk_J-uO52 z0RJSn3vH%uKP3 zI{f0Ae^|EmAC6u20~3y2!FTo_alwmym~;0c_Fp*0GJ2Ho>aBsWLso2^p_~Lh^UFzy z++)~%S`ni2-@uSwd(bOvh364R!6vyIcGP7Jnqc1(@`7D|&JXzS1uV_0v>&fI=Q7oEG{s zjj}L4O`A)fT7X|467KW7o2|~B!`seT)*b^4I`p)m}eaxyy_(`iz-9Oedg1d)?v4_sz zpwm5AwCUUvFrBFj!4AcsUveBi=nDIQsyh(XCD=P`AHgan52F9Xu;l4<($aPgc6D+# z+$a`R+5e{tFfRYnfvN5?J`&Pg3U zn0E|^tcymK$|{_fJ%Oo2f5*!&H^J2laeg${h#(qp)BmMw3&Aj#vF3VgJF3BLTgJddw_jn314 z<9+837*Lyqv%?$lmTwswJ@*;Lo&QN@oxOrC39(SExENpE682R-4_RL1I9f9~l#Cqi zN*}b|f~w_nDLfiOEj(vZo9@XJ{4D5G@0oO&*#{siXVZlRhVcE|F#7Yw1J)lJ11>se zkb2A{sktq9;}FHrKb`orycRXef8f)j(p)U~%$8b9aH)zvXeY4!4Q%9j>84)%R3XWo zTA$#IuIJcrsS$s=rJ$>&BsUuF$$nKnL$fYd2)?`t|Cl}i`vpNv|Lb6?bV(cb{4t{s zrx(Mab9#a|rV08N^}wXU=WyzJ1Qbpv1LM6&B7?Kx#BDD&wLcdIt)7Fy-sNzpIR=xX z?tp%a$K$lcgJ9Bm z7p%X386+>hW#&yS;BYKo9O%*lw?Cg0x7ByR##^`8k;4pzN9*8O4;}ctES-tW{fPg< z!KBM8o_$dZB)cB0M#(>QyS?(b=!-Vmzc*NI$EWEV}e+R9E1LdVeUn3Ugs+<66ivrj!{}ztlc>?cGDA7Y8 z%-%C}XwULu5J?QC$3Mw0fw^+ZN2m zf~nfvr9d7R?U3XHj!zX2)Zn;T$cXk$8i)CNLcwofIJ7jt3h`Ibo#1LLSZw7y_rNLi*0`56jf=6qpbJ@Rj81m>I z-dz=kVfC}{z5FOVIj%|kDXfI4UseXaM~lVBGs_@7=pFI8CPg*s!oWo6%&|UI2fn-X z=&K!ybnHrNdb-w#4lWh$I9-<1;aV4nUue=AK~IVHWAH?8Dg;E0guiQ3M7JiMC|Y`3 z7v<}xp-+4|-dlej16p4qwd}^|grR)RQC%J)cHnKtbb0NA$z1=9Dt|E3iofb@#}bg^ zpN_}jZT|>d@c1ALEox=iW^c%L`+K6E8YlR0&mEF-|AT9{^I_4qlVJGlC!98GhUz9m zy6UGC-P#Ux6P2Kqd1I-(|1X$rtw-muJJA17o|=62h3KlAus%DR%(4|`+x}OqdAAHK zIIt5-HUkbS&BrkOjkovy#(6uf`M8e?T>NDs@1G>af88?We>)H7*BHoe zrCPGl{T*1@R!>~)%kjZ51K6T56=g~n!;}Hvie%20LzuB8cq;URi)A1@HkP2FiGC0~ zv=_EdS_I=9DxvM(1lZc90s|MgL3~yX>yDf)Wc}A*ZeS4n`VoQMcwErC2L4lJG14=F>>97YZd{uy@@tG{o~Gf9PIF_Pz52Lon;O}@cNRYFT3htmWeZm8 zsgl02{@5t(1E%j*;3K))@Yi<$?iDhb#&Q?go5v+^@<1gsu-Xk@B;>?aV`qvbivJ@P zZ4sDsJb*-+R$)nCy%63Ne`I?M=$*$o6Kgwy@MXGCu=l(3`zhi5(vY5#cw0xaPPWiT;Y8k*N6SUjnD7kpXQ5r zLgFEMXf8&tn&%kr_<{xal%n3U4aD`1EuL2ry0W}Bl7$7=VAAdLU?uwq?)*1|+G+lT z*fv5q8X?y49J%r{3G9@#$)UB4q~m!JyYIM)96GcG-7L$=R)d3r zKL6DEKyCo4FD_z_damF$OGVsq@hS!hzMitQ19(`-ZoQpsi;}~hq5GOl_Vs2C9<#S3 z8)s}qGqE(tzLrGwCLib>ULiUb8V6hC(uwY;?O^b+h@?!N4rh85V0iCn$eq_o%pcX0 zf@29X>u2H32uRg z^j2|G6N9wkuOfP27pR@PK>ph^3(S9yfbjpULF&h5sJku=@g>W^qIdwT{kR+^t{MYM zxF3j91G&0m8QdQ1$M&z73~EVBa8~bFSoom?4}U8pmU;3#dj1%ZSjaQ~a~{m%%v!N& zUmY9oACJ#2m}BsSpKPndTC7pu%TiYF!1_RY_HBzhRw(QzjfT3|QumEa-D$}>hhHIg z<|mRI9V1x&-W(*9&%nzq>tKOoH7vb&2%PU~AQedxV_JQ4##Nx=bZln%moTGE2dG=P2QVa#KIylg&a7D4-ZK ztDoYjJ@J^5^d1Y#Hlfutj^XY4$ab0gLizh}CYPiFmQM$w)KGmAlNEx>`^OGDQ;S7AtHROX@@{d>zLU6qY{~sPxVm!!>-}^IB5z5tDf5=VOvCJ=Bc5V1 z?rH^DxaU!kp=T(ZYqn+XxzC_#%{#H!S&mwMy)0_)m#5!K?h@5SAHX;LB(bZ=gVd45 z%)vDd_DHV7dxJN@?51$6Qanw{*5shVe_zDC5t*oQ=K@O`Zi}_*Tb#&rLYLQPmjgY{sQcqe3cE3zl%k;1Z`l$S3Da~2h$3hus=>j zD^}-XX^$Iy`=12{hE1fwf!j&Y1tq%Q{}}WMf76LsZ{XvaKg1$bf-1`oV=EW7!|q$M zSUI#&$QW!z*$v;}l2SE}Ino6#Up4sEcePM+)Q-PMO^4g<3;35&YS4Rs6?Y36#{TZ2 ze9A{747^*2b+>b|+cwN1BduR}UdO{jD+%7PU=SU3_#Ljh;y|U=R}1>UB*FWWiF!hR z)rb0{xa^c8bvlrY2|<&oyH`A}Jv^3nR{dt1p7g`Ew;kldflUx?nGVTDiLCw5Z%}9w zvaSNpy-{Hp-*WjkY#wXH(;jRFm8%xK$u?db>!!iSC`+K4NfVOJ8|-d&5?Z94wvM^GnBS^?K-kUV{EI7okV@9(oDSiI#(< zNE?@n&s46*3EoyHRc6Ur^#|j|r=Q4}w5LpB%tp|#_|6(;9Ea`K{;-XsuR%tl4(bkh z2$DM%;5OMO5bYa}9~%F{JKN(Z8>mI?97f=u$3hQ9dfQ$GvnxXIDAhBKfTnZ68Du@ z@E}vVX|pP1OtGh)Hj7|oi5*qF4Dex^A>FY;5_~)*sc~eHC?Yx^3T}6?{Rzh4GD?J3 zH~X;eH?Ns;M*#lkoGI3RdI`G@>X6VEEqLA}gdDF>;4~tRxU`MnbX_X~RQDyb zE92T><j4eP&L#W9cUAaY(j z=1Hl5y=Vk}zW0dqC5{uVR%^5V8?6C8gYDVB;&eD{@R0q9{so)5CgQ9DIr^|-0xsG5 z1IljpvNs!EgY-ZJlzUwO?<>7ACuJ)98*>H&D(;HU6eda;QUEL`1T{m*zjfQJZ{-e^6A_k4AdSD!w%lS`6b&y;?XH=%Sr0UPs1u$&`Hle`~8#nh2>{;Cw1YGyzqYlj0~89^7myDa{d ztW5>~8kP&5#NwVx-1xN-PWcP|!R-mqd+ZM8Dp!&$OvMke()jVy9PGN3fh?qfU6}G2 zZMA|}O}3W65}L%G{x;?o?dr_R!HVzG)M1OWZ1|XULqsD#j1`#CzsO}Z9X_vi3(OPp zm@7_%!6>&3j2-O*EJy>NY#0GMe8b6@a(B|~7z`SIM&fztZ7};pnmA~YDIFQ_C^{A5 zNC(c}AgXd*L9gEQVlORr(csIy%<$Vb8e@NvxjbG($=nG{afK1pa0_Bv+XTPp(ETF2 zkHdMuTPdveDMOXx>u~kDW@Z=_g3k*7kn0YysCoJ#%oTiNr?-ECV6!Nc zn%@A|+M1Y)eH{$6-A8oawZoRSVX&a93w}0vLQ~BzNO6jVK2JHCIx!h;ZEc0ekJDkc z?0@ieS{l4t{e*pR*bQ$Co}#+D6=W?O#OrreldB7d^DqNBR&6qb=b4VeA^-JY%9Q{t zIE?st+Zp^YD+HfwCu4}dGmacG3om>!!144Ud%Y@$o!JpqbR!{;w0e7xq>?OXxN@J2 zZ<3}*qMwkdu?AGD=>l=jA59GLS zqC>+Se0_~zYjGde24=Fp=6W>#p}~R;T+uvHi##m%VK=u8fFsibiIL_!xOKt{G%FI} zn#v7WqJ0-;T<(Sm&cYu3mNI=FB}q5j9Zp}E`~;gsZCccSS>P!5LYkf{ki#ip+^TF{ zbaX5EdVLz2y6T~wMHtQ+dJ!j22*cfjCHcd|1hf@=o3R5jaTg|Sp2u^qA9r}K(B1PaHjJ>w_ccAx}HL` zRxNBxyaR9L${;8y4r;O=f?l>A7$>#EiVbowEaV3~7QZCl0$;)AL(j>7v8Q05n-=7* zF@SA`BcNDYENbkoB%?=Z;JT^Cq<>5jhK227Iq^A|BR?845>wt^We)fB(Q%^_{&n-+gerP{g6O|6?U$2lA zSKbhv3E`qGB42jbvd!wYts54u=n^OEWMQ>m0eh2GhB}KCaPzEhDC?yroM|N<9~H+; zEo6ADYO>h3_YwXq9>DUCX5qa@AH|7n{%CyboLDNph>Z%1WRRUsPC9n6$-ivi#&{35 z>|zM)cIp!C-k%BLH%?^d%St$WaWAQfc?Yi+slr6r7tnji3i4K*fT5->M3v5jV~+jA zr1})8o_UO@tNvw5H-cERPb?mL*u>UHrJ(-2QWj8k3}app_Wr~HJf3bYx?^gHUZM~( zwc`Y{HOwXR0>6vXEEeYL{dWw@R{OZ+e()?PL^lm2UO(*&(>CqEE02PpXha{|rWX&ZmUoDcYz=_mP4mgi zTgq^-bqaV(%pjX*oPk}Jf<)_!ZbQtv@$Bf*PjLQc2eS=+4$ED&aM9~ikedwX8Q}_^ z<7S}ygDA57^>}yu4IHP6^xEL9uWmK)`)nsW*mww15WZ1Hf zb?W%x$}iDrHBHt$|M-f>lukaNKYeZrxP_c^$FX=~V_OWS>pV zO5pyUAPm`)3B^Go)X9#4-%iU|xvr2?9XLRovDXXA7akXX%e_qoYYi2>85+V2#m9+; z*Ltjdrv-9%g*$h;~P>WS(_h;_~Y2B;V#WJG(m&!e-CMpM!5fS4$8!+76_<1JZEp1yj1v;s)kz zGN!gouW_r)AGltBA5$hL!HPXem>++ieD>XdJ^vmvKLrn*zaINuhoQ+; zOadpbfzRj$9)9+qZMYNibsiC6TLiNX5OT4~6~5>-h<-@f!S1;A#9o-yLNSH7H4I>W zCd-J^TNRwJG1aOpayfp#`I7}T1mk(PaI6&v;pS5pu(>@5+l^CE&hh|$ulC2qLwrzf z`2w80%m}YgTYUA-i={b@Kw`XKzGzWuPKnf8ix;tbN1!zU4!x*AXnM zTnc|KJ;aKIk|fdT2UY~DIP^m$)H+%2RG*h!|!GC{Pkcx zc>SL-S2?+t{2VZz@11YP6t;}z3hr%8-&cmeE3w1SwWT;+B?@P+j=%wm`B)sE$hJ4< zp`DT@jNBH1Lya=PquLbDmG!|U`2uEQDX@&#Fa~ht?3_04r6ia=mz`3X2SWi1Tg?)WAUOabf7(n^~ z7EmikV{U8U;*}OO*WMSSM%dCztpVsV)`6~pX&A8AoMxp;W3HtosK@?7wZyBfcL3 z{Y^vo6M^I2{G4@4 z+2sxN#$}5lYE`KCLMpS4*P}IUv#_*lIQ7$xMYTbS)X4uNR!F>oDz9uDwI>4RNM6FC zSCvHLVK`bi*s!~sOmSbcEWQmg!qwY1;nQpjthOt|Bb%gAwMK^POm<^OlXUs{Q|4se zU>&YFU@XiLcH@#4B4Piz7Z~As8r%=;!BIOdLR(+9I5z7dY*uR|YTi+BbB#X8>2we? z6)(7Ie@WbO_asOj&0@ob7r^IjU)Xr*O7JPrjI9#Pi3{BzV_8 zP7pMHV?9*Sm;h_$TMC@UcUECXdN8)mRV{XB2j}!W1Y(@QXn0M_X^sG{>5u(lJJ0h)vgor!g9oR zewaqQKHM)Ybj7LWXuhNhz*TOTvmM9J)dMR6)E);#E+_{F`k(6l*? z6-On*llBsJ>B%+F3qHYizIqCFYiq@4bAH0W(r7aHwhT3qbcB(?@^nP=JP2L+3!aR6 zM(TNLKhqDDv_%N}EBqrnD4`-|$r5<3J z%x!Vh&psTtRsv1DRr&QLe)v{<7_VJ%5FNC&d5Gd1JS+I;t5G-)e=D&qC_>bI*b~oa z>ciJj{|f6z&4YVu0CEeQfXq&ZMM0);WAR6r^4JVYD+baDBwM_nT26kF~5Di=X5>u%rn8(O)3)3*LnXJs^Y*WGi#6OIv3WRBfuW+{X zSa97{hO0*`BRdpNV%wadEUAAU>J`smz5$Z#>oRGpNjnwbOY}bS!sa|wMC>GA66LAO z+!E3Gf2LHv)rCogo742y`q+GT2$deX6%(%gfP``{Oo=)JT5~4hJAZ)db7b+q-fP4* zBZgJx-xn_kI>=gITI0vdC2X5qB=)Q?V-0VL@t;$tIBY`)-g_NE`u0n36>0}7|90RO z&1C3HZ@}Jtxe#7?67}~+LgxK`R+0p;rqPOgiP}!oc8&t?JV_RwdIbCw_Ok-de8@=% zXQ^%Z;CJ^7Q+}5REoYvw;;JhU;-H5!A0&W!`39_>Vk&$d2T)S|JXsyJ24g>b6{j5& zn9rjowznqD~>Aj+JLk2<1sd({kkL}>SyjZ+RCk1Y5jAt|A^I&dD z6x(BR5qy`{vj>}FAp4XuMk|g5&2~8)Y+nZ=*kxUw7!bos}&&x%IXwgp0Wo2M#m=jnSC=2_a&G6a75oVMLyPwNT zVd)p7d_ z7xwduH`ZQFWVvUSqyF=esJGMr+s_4~YQGjvPRqbS-MTm|I2|X4%3!5(I99|qvhZiC zQKqqhW#l_z!n{`TkMSm$YTH7buRmlPf~+7GL&UQ)jbO!{VDjD26wa;xM>aP6A?H;b zg!@nkc^sGk%^9xb$dYvU=kLrQ+A3Rou zf~ti)Jgzzp>TdT$y%jg1ptOk@M9a{9Ha1w@r%snnU4%vbs`PQnJ`9>ILp=2a_CPb|`7q19;j;|-* zqFkIaC>)UGKh&Ziyk`(!(u`0n%zLFmMrUE648PuT5oQFRMisYc=ugOJhNfe{`A!v) zIq<9SUce66@x&I-xm7@6cPzdr`3ljwC7At8lCF%ohgxrx=!n2G_+`&vn)`h{{+p*v zS1r>;Z~3R-wDA!uUg-~EM>n%Q8$(IP;v=Hr_K%r-)+-|3au}(ZEnJQ*!^5k>;fC%_ ztTa0Ti%;CaoUkJh+h325lHEW;>INp?Y9-l4g}6|oO5}bw921UG);U5Q;}1Sy^RJ7T zb^0$h!)HG^VI+gvf9+t;9!s>|7z|$L4Y6)h1oYo~$0`<)QF+H} zVg486Yw;1{dhRYtZ;&O^mk8|nPtU|guh*dW+V?CZf2Fu1-3kj=%EP)>6LFZc4;R z{Vr0gE4rU^THCxkXQ0o=aSnSUTroJCsb!q!tfqc-<1g)P2|*%fy#a8!AE@ z+axHX>O|wkFJgW5Vfx%Dhk59Ig3hSXCZcxs)O&9x(G{LbgG@R|@roR@O&TH#2d*$5 zUo?~0x+=K7-;oTuOd#GTmqPV38FG}{K{h;l2P)DQ^paCDEYx=3_&uvZ|I12hw_6JC zhHRw$RkN8`u%e&KRB@k}KJ_)s!=1$%^vbOYRPKC;-z@~_)6g`w*1>>AAM=On;$QK= zp;6elIh55~G?jGqu7hIfQP`dO1k&YYAnm^~n9~@}-Pb0Pgrjo!b-prrB{UtC^|-U> zyc#6t>XIz0FEB+{lzjRlN)+0|V9P00;&Zj1O`9;CEPbLz^WxvZ$~SS;cZn`6XsM@@ zCb%>9?j=<3iZFO{cfZ{#+EDXFgFdAHc(y0svXyRexKOkoyq;;&+RukboZmibw$wF(e2%8F>M%f_0Fbl)m zbKqOjek$8bLFhp)O|U42oGMDC-#!3UH$Kgh{RszC%D-Aet6Q;;o(HAD0 zAz@@GjhU_jy;Za5j&pU4W{4XuzMzZSYP(^v=R?#zI%CZn z;Pd^lorJ;b?2GV2OcY867ZcsVJl-{(42@_J<~yxg{$RLa)Fn1nr%4D*CyAy;z$gCY3n9Ve;2k?`#CVbZw05rl%)lk*MV z;dQPxseP|To*!67WKK^bCK3w7=VdDx&zFQmiRsKCrxEnrFo{VO*@%$!2dpU&+~w%U@|Ybs>j_fRt9s3_Sf5kdYduVGTwd6LX&zUaZW zf#B;Vtd0-j7v!J7ik%Utx6g%HRWgVr)4E{gy#fqqTuCI4e;|L&<1`Ccq{ABc@3Aqcc~6l=`Vun-?Qly zCjlr}r%vSsH{)T)sZ`+XA1otsRCqGSijcpF3&PxJt<-5Y^~7rG>bMK~l5}WWR3`}O z{6Jq1LJ|*|qg;S1$=@Oi%eVmG%j`P%`^$tZU?s@dJzL_tUI|f|vwCRp{*`pj@eVp^t1_*%y+mcyhcP;249!H=BI7w+ zOy%w2dy6!w;%3Pa#}LA~_(;=gN>rb`BIgXAlVwGnBs1g{5o~HAYLDtURe$aeVYKlor&e#4@Uk)EB4_-oRaQ^0O6s zUwcfXX0D(o^-Ia6x-5EhvlF??+@}K<_QQN;Cc z)q+6kyrYIywm-*tCEq~L$*VNr&LZ;r44-a$e4J?BxJE-&1Idar7isID2YK~jK0W+= z1}Sg!Xa2N~gVyLOZjS2#r|=ZA*laaexpO)QUmq1X&Ctg43qCzIpM)Lf(Z97GP>{Wb z+uhw{2PJ{pJkdeNEmCxo+Ywg!z+}2+`Xy%j%x~!5oWhu{O~+8LUA&0g0M;z>Hk*R& zjF@~b&iG^jfxbzYmC*xbp_;7yWnB__QvhU&IDK`i9qe`?WWm+j@MEzenQk%!mV>px zKXe56ac>x*({uQVS7OjZW`G?N;+U6zvd|;)A?_`mMSstIiSHr^eXTA?A17q8>GlrfiyBySq$OF&ynIW6IgKFiD-xAGOkNhiQ-#bR%H1(sCaw;Z?Ck+i_(qw zy?+YV`TY#5IIZ8cm5<)s4yR{QI;v(C&|5m^&~I7}U0NiM(q9izyP6}I%>At$Gb=D; zSetFQ8iC1v58;I-CSvBc%cK1p+A$<$>?dgMc z%Uqcg){Du^U|)SGv`S~ zXCPi(Cr%AZ7Zs!Qp_VIjf+py|F- zA0gvO3H{9%hw;b)>Tg)YY0Yu;nhD4Fw_Z+b|E;6F&Yn2u&~CcXqZr;4oTXmfmPBfs zDV))I@+^w{T-lC_0*2(n7CE~0-cit;MyN{56%1C}PPe{y zqB4G-bo{|lIzP>r9-DlGCS|fHSsF~o$G@;?qW)AOe>$@_Vl9=B3WU^Q6?$fE72u7D zG{y1;x1SfFLtY`U`s6jVPfXxaY}?tz7@w3k14AlXF@XB zGcOT9K7>qL_8B5Ftcg>PB-t!72EDeE$;u02kpEGOBr9FUhsSM+xTP%h(pX52n(ERc z-D1S!h9mvenFz!_f%b@+0{=BjW2QzhLWMVI-{K|ME0ar=YYH)#`&=7k+`<9 zfG%;LfOV--wEp@*a7_P$8S^KTEx#twyPKWKS^3FS$;FRo&mF`yfx%=Xy$Zv3pX0LF zJ27Zg1i9&Bgij7$AO&J&#edVBN%fNT5S1@Xh9z~uS>F&On@5@AXA7|@F#x)%yYQX& z54dt=3hi{5PV#?EqnXw-$jkfcl&MuFixx>y1DhtO+dq+BSUAipKP^K)wK-t7f;0_% z8-eaI|L~JR5Dv*@qx402eELq9y4}{37Et6-Y?}B=T>n{idb3P-_yrD zr}uDqpgLX@R--c}KEQ!^O&WUn2|kukrE0Q+I6LM){IY5s-S@j=^!zwX;9keT8OMu9 zNC>FeU4+hiuYu?I4Q$%SLHU&=NeR**ql+a;f8u;1UGxavrD>5t;dpQlmn0tV*Md{r z7_fN~Fk7=33D-y|0S;X)sc>3Y(w@H{Td>zj*v#9IjhxqHTI~80fLU(gM z3D+h8dW=L;hke8NAm$PWF@J)`eZA?O{rm91eq}mg?kawo;BoYimVXSkdCs?RW z1BHEu;c3idvPLTzhE#SDwfc5Aa66KG{XK=uxRXI-W|@-g4_C=$ktIaVFNJ815TYdR zM{Wm56Bk(pVpi`7TLp??wv08}+3`T!K!olcG{WWpqMmD8sv>9tQkXrPlK-Rjs%^=t?6>fG~GuB{p!cIj}v0N!}=i~E8g>3`2WP-a0v6BrU;d?EJo@N%g^V*g?-xEzDt+a@#vO8H-^BOEF&4^67 z6AbMYCb+X+f9`emV2dAKV&5_~gC6LWdKu<-uEj@->OeR@4g>VA!MC8-DE{jr zIJSt=N^Mtgv-pbdpGiXe@O5lR6Xx#DjyU9=&!5~>#a<{(WG)FGXR43aGW$OG!`X+( zdh~JU=ciEYuqXq|;Z%I#u1TyW&cWTW+sLo2rA&>FAIZO517-P}$^F6Uq*GFaG|gB{ zn7Ua^&Jqc-Nvi`xPZctL29}if?grlM+e!Owy~W%DGrB0h2c6c8U`}2?&Il~PD+2=< z?2>~Q3MbIvl-sz?n@4l5f54t$2b!|+DW2)Hq2{X=;I6QlRCu8ss0_v-*&{=m$D<)& zzXSPUvxK-5xe+PXb0ogojC?wiMzXY&$*%iX$qC;FP^Wl_l+{YZqp@9NyzV{ga^8{b zJpLA&f|irm>+V$A`!kpykD}H+a^Sx&fmW83UJ}fmSqIf6(NmObxfVk>+Yo% zBE{^~MT2xbc@Md*kEw9?7NY$#gF7cLke!9w>HLK$WbUsKEf)^K zpN?xJe5wrDJvEd}(+VQd!n24T$4P7XJe6_GA0Z9J>Qro8WNvs;I-Pi2W^TVxH{JXB zFEKFwkN$a=MY!@~ddfzCxOi|g!>Be2>~gR@Z=-NrY)iS2knTF9+!y@-cJti0aS8xAs1|nKy#%TG1jVr+J95XM)h|1 z+FA;|=ib7x&~#>A_$QG6E`e6I4}sl%9j$&0fVP7am1q_w+iGm7!yy)|jkuZi*Eb$} zB8nz%+<A@uoS88;W9Z9l>YeVC8w>tacxuPAddCx$4!>IR-y0I@b+K^*?B zBBM{Xk&08p(CA`CQVk|TMVdajAafj(QWVJ*Jy|N-*##RCmeQb2d`Me)mafDq$i5px zRfL~{qE!r)R?C3mjtF}AZfNm$)ezcRpN|fwR?~MAMCetQw_`ls$^ouOLINOZAHOaz=>m7Jn z(VM-YSHND-ae<)hK+yU%3K^nb;CGKMQI%9C^JG?#O*}1Uc^M zhv>jBGnBRbO!fOE=>_E{)HP)dHBBw1J9Ku^1Ixnbi;ko8?1?FKsq;o|7ZAw&ZdRg7 zD~(9nv~t{ApFlECE8@Oft{bBMHxp9whQz=vSUH#Dz&41J=9*^G>tRNEvr@^_Q#%PQ zT1|{|b`v|#e~`+tgw3L@VOWk3*Z+3l9+hvPvh@cB{@DZ}*^)Fn9ofEQ9*t-?ftPol z=CYFs*j5lrjrUgITH{a}-t_>%aTz@rdB` zo6zl#j)L4dW$Gl(>1|Cy)FHzcx)xr(sn=?bzY}hJy9+kze(+~J3OYg}AziDBG5nPb`~LN^-=wm^?^zm3jfR2n zuTFGT>0@H1^>g!g>YQ-yJHhb3O!m94Bi4H#!P7$J?ELv}aoqU`uRMA>Rg7<9e&k!y zv6(jD+_awVcg}{NUgp$m_X+S4`H0&+elvSb#@R;>+rcKx07k;Mz?b`z$s^B~#kx{^ zi0qdvlw)EzmZK6auewAot1YIlOwN&2H?8SS@j&AAMTweDIz^s-NW!<*r;)!q`uR(F zp3LX5xo~&oTP)ag9&GM9(nPon%8GGxa8DV$U0+1|KMjC=R{>pCAV~x`Rzij}kKFd! zN3{x#NQ|rv{UF&1^SI39l)e6If6&8i6KKGfBqf_a&Eu!S6)FyhTz@Kcnf!f8^5y=ouI#yahUVag#FI&!#zuO*RV!Je9U^X6j2jHta8O(zt zP|#->E}xl4`CR9M<|ZHN<&!|VG`Q@_T`sR+*+$FSE|5tg9aLog0WR!QO-H}#kre|8 z)Ob-mcs4sz#gGhRqwCrD&(#W<*JS|7`M6(b56RyA0xwnOkmlFZ=oG(uod{)rlL&o2#?QL?m}sPn;opPf#3SM%t6@EH z?!>o0`2&)p#Kz4gS|nXD{}9}L zW=2nnhVyovip7{Vb+mp|0M93cqS$F)61__Jd%TBIcA5^Gjj!8GjGW{r*?#Fy(em@qRg-RrXyo|QOryNKJc z$tQqgOmZ1K&Qtb1PlbdHlu;eyG1%x?N#B3+2Jg58dU{$%1-0w_&pwUIZVvszT&`;898B{iDZHx`6trK zezT}!2Cs(l-Y{J_yO7i0b*<^eonK_TqC4w_y3^4Y%2Cze4c)_HdBgCq}qS~`pJo}ME`GyX&VK~M6tHypd?&L=(pl9<%2QJ|Z-T~qaRXnp$! zu2fCO)g2PV^Vl$!o9htU220v}nUJ%AhiHSiHrWwzhPs_mB&ivvXnOr85YMxxBTCv} z_30M|%s!85(Z?{Nf@4)qIM3d=xsg^KwFg-lNBU*aSLpg`LZ>Gv5jk;jYGkEJZq_wo z>3wx_OF0+Kp9_(`JJC4lQ9DfEuZY?+E&*#hjmdDl%IugM4|~RK(7#|R`IP$%>vpUo zotDEGX0eZmGhF8A>vl3)^cAxb70B!-L#Sur4p;1NVEUV>>_#OKOq^(pul~6+tY0v0 zx_cCcUuK|H*8`yaxAA?p0vUFer;!|M+hFHndP2{FsQIm>xfk`xmke7f`fLpT{MDe7 zUu}c+ZO&+aR2E|lm%>PyDD}Nk0V?~QX?^Jj5FQPrt^!iz$jLC;_n#bzdl5(tBxHz4 z)nRHVt4wC@TuKjQD3DQ+E=<(?0VY!y^PhU;!%?3hsJqa^#G36TPlO(^<-OTNnSU0S za=i5ED?g&enL8wR!gPuWm1LT?1ijH1$7PX!;x+|_G-pduxBn(Fh8Du~cZnjEJ=Bc( z=L6{hu@qF^nMXaoF2gC4nrOzWTqa)TDUG|52M0brqHP_|;TiuXT|Hw2CLZFv=RIG+ zT~mzymiYx*9fx_>qD9EE6=Ed$-&gq6>Q92!)j{D;uIFq)KIA;?Cp+(YgR0FJvSeYs zvGRhqB$h12s(1IvKdX3TUS1*D3O{g)iy_HvH=t1=A=oC5cD5b!jVUXfWsQco|Yd!Fnj zmkn#M?BgCX>xdgu{N0?Kd@}%x^{dRsKG_?BD7k{t9=H(&Ob0{C)RUW1@!opzD?Pc7Vz7^Js%hO(+ z`A{>z8dHAMG2Y#?uqEufaa`{Jzd7+cJFiBCQR2>Cb3q<3qQcZ+b`y+zRHrV>l*ms3 zdHU7Wnh=9w6n@}Hem~!h2JQ?gcrOWu7mAV#v&-S-;mhFlvKtKRD6{e{r^)@2W%jL^ zK$6wx^DHNFtd5uh_O*8wY`H6qe!2b-G^mbu*QkT-BoFl8<<9$h@*X}`xy5!F{zEIR z01R&YfuX~FX#Jxf_eM$5rKJzh-hL)+@i~QlHkwqaFNQsR{1ra%mtb1k)??glHF)Xp zj9qy=5IS1VG7noaz;3_~vhBGYR_-rl!&If9_h#s zCiC9^1CxO7@I~|hgt*keYA!cuqQmE1*qerr_tc?c&3_nWqD`Te``!PorQcIEY345{ z+88QFH$66@!&6i_4@V~&ZPcSp@{2HR-yEuXGm`f*MuTp;)5fgW+llY9#9;$p1q;)+ zz~3<`==vB98SoL>_Em$Cp$##gKL$O{M~Lp-Pmt%mi)7pm0n>*o$t}@4jJ&cD>Dx1v zt*-eGK0N0<*X4U*{k8^NeUxSFm2y$|R}Xtm%ohEwx1sXwpDg_(N1bMs@N#T4sDY0d zwEUP#%Qk7lHY*u=M1B^;tG+mP=T#N((MSa+?*a6e6|RI+#7` z4dzXPsA&I=X*ltN=TUCY%x9b#^NlZAAJZCE=w%g-EiuD2mn3Q4!!1~H&XDeV?vKSi zD{1iJtr)7bjH(L;vziMgbAG8iOwhZ0bbJ#A9h^=p;{O6%MBNx&PS+b+y9;*r%aJXg zGC}OcBy#%7b2xnAGu&x@1&=~gfZtOJvlag_sy1=(Vgj;PdK{tCF9JJe4>5{ii74)P zjuCvDg0nesWu){CZoGr6{v=JR*kO)y<}9T(^D}Y3r75lW#-jLC0lLQ`6$2)2!QcnE zc*Zo1aW@Obk%BJZ9ptmZhg8T(`B1*-Yc;Z=I*66Jtw1{N?qJJ4{DA-Jl^CgcO>lL2 z9it_d1*yk0z$ONu;M_&nrW{+;$9n*i@2F$dwm~pV;qIW{JHXjgl#X}a=5&I|bl&1Z zI2_rD>BVWVD=(Y#tj+?-(@Qb2=>a?Sx4%(Q{0Ynu>tTF0Tt#OOMVNM|4R8OGfQ6ma z`1q>}Ox_xRrzaG`J;PwsXeoiwRk!eYd_Jt$`Vuw24Bc%5{=pSYReS>4q1y8;mtmOnA7pr*lcPnv&}P%|44E+o9pAn^Xi#} z{!qf!RG-6g2`{wHy^fv%$#`87@moO+ZrxRmxc?glHay3rdZJXrybE`8--#AX1{$7f zMeoGV>^dhuR4}8=3e!?{``U1bkkE&uAFtr+WE|42)fHOpnSjt=m``M-> zxp*6>N7<5;?JHsOhUKJ-ivy>+E+TIp$-wikDvSCTEaP$-!FPT3DCug}JN5NNs8rn|sKD$Vs&@s>cqHg$+4SsT@Z9 z1m%hM80WQ^q(LS)o+ICzIsRptIjNKpC!coofu67c*(uV?M4TuETYr1}?s^R-JGWz~ z)m6wnB1#i0P2iucKCReT!Ef%drNW%|)A7K5>g!jBZp~b`=N)0{T;or7eVI&?_i>tN z=^%!T{)akE6pgq&>X=p*9$n%Nl?Kfywe$}tXw{+sH>2G0zJRH=MkFa_5AN)?BBOT! zS9~=mD$gpJyFXSCo33j3;ku1HIeiPt{9On$k_eh_W)R!$7eH)QEu7Ib0JFeP%%;83 zOq;ejE;kZ@>}iv!iLN`4Q=6#us4M)w;!T|fl|Tj#)0wX+?{gEE=bV+#DhVy2I@grZ z?i<(3S+0$?w-6iFcd=1ly|H{~H?Kz>xeF=8nfPrt0%G7$0M`f-4?rF;e%Uu_M_G7kZt< z#Ov=d^vHg+b5x;w7Dr-Sf)Sll9*Zsums8=sP(1IwigvzSg?(F>(V|gBcDI)%WtWLS z!pCYf%vl9GC%*G14@AL(l&jpV@(_ll)QPoCC&U^oBbMJEz)$XdTJQP@gvEgLtCd2) zgIQ!pa1gAWEKjr>hnRwYgD`knhdp3b3L|QU=$Lv6(m(j(_VcpL*sLVnu-p+}s$NGk zjnBB`4>xC-o6>@*J!rMTff{a|MDGY#Qv3FC6ybV1G;j4{Ltq_Ri?rhF7tT2A_z}$F zPesjRmx_gd{AO<@{b4qqf6C6@euUGfG+4d-J83 zV%@%&^g7FunZCsqrETFBJ>E~4fr#U^!w2#ZxXux{e$MbcI;!6>FGn7bh4WH=DJ)iZLvD&-abK3!Ph3nTq|B$l(|x$P7^? zvM#sbQVK)-w`h>gADSfLp*8t)tOo>T9Ef%Ib@(Y|LL_=Gg17m1SoVDl+`4KD{~YU? z|K^@xS1GSz)wjgsSi~+oc<(X#N7mqsg11=p{x;5Q{EAi+?s4b-IBKSMqP~eJU1nH_ zi+bg#Lc)1;5)-9=+rm+5YcKwr?1pRGigA6dAUf-Hv*&~Qji3GW2B$g+Xeph{^+g5( z%Qq%d4&MU%KvNya~4`yiY19UoLl1$C81cy>Sv_F0EPtw#+bYcUg)GYRwV zemw7J`ZvDgyF;w$w2u||`E$AOthBpdd;r10=6U4E4yb<;k zpB#w70OKZX>vTak@i<&wtA<-kbnuVNS9XnjFq=E;BYRX6*d@o-vZtEW*qOgpGBxJ+ zc$sg?n9a&Jn2o~&Ow0Hj@bUY=q+iSejd@R)p_N=lla+;$obT{M+XWVJJv)0#Js_xZ z4XjJw1FOx-nF>FDa61~x#=1v-?RYoim+q!?F!D+?7q>`H~?*GJ+l%&)J2Be0)I`aGu^Ae6C^#^8yeHbD|({ei9BYOn~ZsPn@(o z4pxS7To%P3IJ0(?|L2P$Xoaak`lqwZ_R^&=!?TNt=6v9#db%)bbqIWxbTi{0f?>Y= z8|Li(aF`G`&dmB23SW!A6h9)NaR0?_+_v>HywNVjpYtxlPq|FI^wJ!5j2y=a>9b)l zW*Zu@;&AV{I%Wiy7C!EZW!Iqyih7-3n?}~-xY=RWv;8Xao@?^Ljr;I@fj&sNzC^hb zDM0pRgX`Sq0C6e#YB#MfSL`KR95V!zY^%y*xM z($yh&Remy_?9M~Ag7)HnwypTUTLQ*~u4Cx|Cn(;r9H;AM!qr-isC@Ge#P$ZUiEAbk z&%c6fApQo;HFUGR3b&@lV%U{IX7X)sjQH2c$_|HMVF*PX!C=(PpL+l{5^LoBs)dw=B{x279*0GCV~od{F}VBSKSt(d4SbN4 zftt){5O7`rGt2eB{$C)hIdq*j_f|Dbb6CR)nLUR!kNViaw3{$V`2@DNhrm_08+c9f zKjvEsqMkuE%gEh8&)-|{#N0}J-;$1!wIwK4U5Ua&;rQj+W%LQJXE$f*;r5(-#=@(E z4Yu3_Tg%(ntxAP(WtA?g(%t}n&h+t)Zm9r+{YuQLw@I+RJeZj;?hLakHDO};6UM+Z z2#Uikc@ZZwK=N-syEo_rc)RJK^oLfaCg=#3=5QXuj}_>YYKdljz34b6A19t^;2!7W z>w{sKx;Y--TT5fXL|gPJ7GN@5AF)x^uHbOcfq&Y(99|eUF}GI#2TLsXz!tS1u;p(7 z%$=XPf3VvZo#6*l#E1 zVedpad{DC;pG7Xmm+rCHo~y%s4r_3-gD94+slgkuKUq!JF!V{QV)GoO@qPxMeIZxO zH}kyDE}b?BZl7Dl7Ix>soTN5>>b7^Vw?K-WbEgAxtyeRDe&>RZs5?wESqk^tW;@fLx>!1TJDEh`U z+`Who+txw2R5)4;hd`>F9=d%kgp*Ttu&pV5kgF@nmlXU36KjC6+tUH3FYy_*eNiw| z?g#Hns3y4SFJXP^mos8M7ua?8S+?`3Kf6)G3*S8tWBZ@P;s==oc8PKY&O0uE+4cQc z_)!mg54^?ty$@LFv8UYZF`a>rRcLor6l@$4(A0l3WH#7hd0GwBCEaGH75sn*sb9u2 zpGP1Qs+lV7Td==!0rUhO;`Uv~A=XR=Dq>P$(5sWTG_e}y?GVM3JujdnAq95~{em)$ zC#aDA4+8g%V*379P;M$jjTDMuh3ao^J~x5iChzda;a211>{3)R_{L6mH$uI#5M+fU zcsUmkx89J3`+1z#B0dDVNE_ml6!^8_BmN~h5XHR1VW}P{cId*<4iTbx=QYN?l_LJ1 zZs0v+@H&bhDF27n;}b>dujvtWqI?~XQqPB zur~fVcM0%V4icBS(6ONxowGzBYUMDVj9mf`SNwoFQMbHE0D0cO^u~*v|dseNHZ7f#AVBZ61 zeJX}Evd%-7HSz$X*KzCWDDcvJj&o~nL;b7&Fn@RylE@=8Jjd;Qk`pnx_a#UTJY~a= z+=B`QRTyckfwPNPC|ht1?i7E6N;wPg3i<~-YD}2!XXBvu{TciF<9iU?#r4H>C4f`J zE3`FM1MPo;bWdRkb1LX7p4}kL&+xg2KNqjVr@|!|Y}|oI#G)}lQIyX7vJ;o=6sCJ) z95HOi2uj`k#u^4c!2q-KOy!1PO#8ACuB)cAAtD#y_w`W5QLq6_T&KaMj?eIT*b0st ze}L%HNXUNI2f7;?x$Mj!Bu#w?Hc59u)1n53e1pI!AqT!^xHJD|o&Xy!J|Xn<-QQzm$3$KnDt@yWmgoEY{ez=?ieVOi>KBfLpy_A zxFs(T?bg?@O6AA#;0kxf_TMI)XtE4)hcvKfTLcj2RqP_od?@#M#YE3lNtw>Ohv6vPiFX5KQ!bErVHmr_l0ZCPs4VbtA_+O4QnXfe1M|QJ7ZZr_Ru1$wHpJo)fG!p`@ z45I0DE703Jfz~F?gPj`Uw1=v}y8mS9GX896n>>x`lM!Z?+Z1{xSb=R`(S;(`inwRX zRlMT69lJmAP~J8My+ni=n;oHe_)QQT;JiCG`+q}u_7}F-Qk4iFOyjT9Rv@k7pLu(h ziV`K`KxWQW0di$oFSC-@3m%gUAWEVN`j#vN-Ba;k9K8%~J=B8p9c~~xWWbt)TEO%J z9+;>v1hbac;1q%5%#w(2*d;rMb-6!?Liy4d-c^P3ULE4}n5%fC?gGj`Nx`%Ap}43l z5>LDgLkahAe0KIM&iw3#E5}Xnq=6hReyxP@>aY0A*Gk|#eKCmmcaV)wz61t0LzuGi zHW+qr1gWfF@VPV(b}bo%r2^G}SqQ2{_rRkh6lNN5djR#lFy4C?)=HbhqLDPPPgaIf zvtalmHOSl+*Mhr2LA;TrQ(1w?S@<>I6N4R6@b2Pfv}kX}dmhU4tJ(+r)-aDcb7!?w zuP%+cUy3dD6RDfb863&JjqesL!frV`?2wp(WnMS=!orVP>wA)5-kHe$E=`2<2Q`eQ zdUist;a6tLR#_tY;Ru-48W5=nj{ld+bu|c=!DPNL5mIGgw$)wOye0`|SL}kK>Qx|~ zX2FEcf6S~by2C2X*JdiVdSYmY9P6N#jQtZou!@~8@XW92xZ$-NJ=QiCd(Ugp-bKc^ z0gb5KMpbM|F{D#6xV`iXd742^8=HHSV{~LAGuD{GhL@Pa%b*1?f>tp3Yb|(v69Ap} z!ek^kpPAmx^<2l#Vs712A%5mZSh<7Kh}F*txPMfcB>j2EYA^Z=xFnOUjw}Y+{+^w@ zdOF0oNur}jJ8SNwivP}XRDDx(+%|h6?SDBF&)k-yXFtcYlKK+#b?6jk*|djPBCieG zPMvYueQ^Ar2x@_T0Aqz$+{u95#eq6`dt4(?u<}SYr_nfN1{9zenI(`D3&sU)G#~A17i~^CkhhX4o3(}#X z@V+FJH|GvAx%TQ9efTZ=^H~B8tUHL^j{V$yEfNRRHK=J3AA@IF&<8P(v77S)=SKd- zwK$vJauua19s<kga)}sbIqQ~Loxf;l^PlO4ac3#$A&K%v63;$De z-tkobUmTYiAuGzPRLbgp-bY1JX`l#c($pZOp(zb}&!p^CMj`I!oLgy1TS<`yDcXCX zn{)?8GfUBJPcGMGc7f}6*@wTMCl3$jd*g`W z(_{gI&$6kBzp&Bp4!d%6A6<`AgraX1wC|q+yllHcr~35Z=IdrMGYo>3J1vwMmj!#R zZ_~$3k>G7yN=b_+K?#ea(?_1Li$Whu!>Wpl!?WTKJu#RKvQWBQnl5|~2m3M7^wjeV zr1#0un6GtU{LhLqp9$Wuk^b~xcmrr}52u=4N1$+9JSCO7!>7V9`o6D&>Fwbte%nZN ztyaafKr`y!9Lp@^0x0yDBCH9GCAIx_5bblAI=0V*&t3U+ZjmO8l%&zXsKIdS%sl!N zGa9Ddyo~&U(JDf_w#M=YUd#~f8Rbh%jCuet9b~u z$}{vGx)9n8r&2)}2g5!&lJ1y5c7D}hTHTV&ht0o=2R$p$JGL7qxI5Dn6A@+R$BW}@(e<_hym(3ci!14jZhv6b#d>U=dKio{2<4pKWx$6-OYT5#G|Z}T z7JKwlh9_w$V&9+g*#Cwzx2AFuZK-MHml_Xm8lEK|B;qAZ+qFEDPt zA=&1gz>AfAnA1BGjjP0XOkovXZCj6~ffrENT90MlE3isy3o1QX$em)3`QIJ}V0kl= z)A+L#)+R9~X?1{_zkW>AD-HMjZ?d;eC%B1KBH-SH;g!s(FyrJp?Co}kW0k+eGpsj( zT*FG1C|(Z*#Rd>+XbX}oFHrven5{Fng*MZ1qAk+Rtj;0|-8x6He~F3|v8T)2ZPV@(p^C#1EY9Oyo<~>mEm5!XbOF*Npr&ksYPoWb=FKGzp0n#aJLj4nDI&QScak7 z*)B4FFqu7Rx<{{cY+-TO7Si962yO@S@k4zYxCEwg0~Qy-fe?LIY*q?u_7{PBb^`1i z{v7r!Sq3{b{)730udorr<*k&@h2z>as#XJ+ET^6l1uJQ;oB}nU!{6NV^tC1lUhk+S zo7U58-kb(H@uM4GvrCk3SV041Bgv^#NixXDm|ou&RIkZAsFV@(yKB&UZI zgT?|iNxT0ukllTmHXFQ!3+XYGFuWJS=SkCN#ZE9%ZD3bgDuMr!4L?pVf*~cZVMcog zGm%lUif{_$voy4=bVWLpYpHETUwx>qSKdnVemo7>@)bfCA@QlVVS!RD!O$IG5mQQ` zwyT)RynSR|r%G;({m3%=Eak=C6@^F*lq?EsXO*`4lDV$7P5)c$+I)&y75-Os(#yI#7$Dxs{*AGzuSVV09%^pHA1wSY6uQhRV*@U|R1T zT*=16!co%nCriv<+}?z>zo*lgW2XG;_9k*G+RxrxHIfAPGlTe@6D3j(2OuJRs^rI% zqtO4Ftt8Pm0UXUuB$cmsK&Se58WtDD?FW~&ETbp$`Ap;E8mePt~fs>H#C zDuFjr|G@SSE~3t+7G7+TNSh26(6Ix1DJAd@?O1F^+J|H%^_ko7Q?QN%t-_f5^wE;- zV`jmUEJI1fj6^tn;U5_tFM;TmTw1t{haK(}`08Of%>KYL)?5tFUj;!;)(QAJ?mF~8 zeFm1k`~Wjrg_>th7i|0-1+1eRJ{=qbai5<-*``Kr;~Rt{)tVHakOO~wlgNjQhVzLh zX>WlNm~6OARUfvXl-fCpZuX$3!t1Mg5KZ}}HG<=yk^+SLN8Rjm)HNfJ_B7;Beac%5 zPd_C-z2h0Y42fWuvddw2 zw-kIW@r0x=Lj|Vd3CsIF5k7wU#kE<_1%*YMkV_Z^$*&wpWGe+lW75de>@5qtaFLEW zaqP(Bmt^z1KeuLl6FI+Y6GyDbr2c1yAk7<3S&PPCyu~!$ws#tC{33$NJwGuxDh197 zdmx=_^Py>s9xZMvgfd=_j=ScA#`RA8H!=cFi*hmhqbp3$6C&u2!@(|^IM)T&7>hc` zDh}&2=OHHW=|?$N-RB4na}4nQBsVxS> zs(muC@WVH@CD;tFU&4C$wodF(S+MUNGlqs zqkA?scweUfY!$>FnM7$`i`lu(Z2B`ff=%g~OU2RQ?7}2Z{33ma9Y0aa?%ue->U+0? zh5mGwGN}?Q0=IFc1wy~)eJ4M^@+~}(_@IqO8>DIO#4{CFz<&7}Y_2Q?{&xVfRlZQP zI2Kzso?&tY`TRpIP23o)#f9t`NCR_#!ruh03w^2` zMK17bRwHT8kA^99jI_@BLwscfech%9_g7fa$IwF7RjYy0a?RXj&t~>^<3fJ#i?!g> z7=SfTBygbpH0rCph1Jd7_-gS#I6)Q^Ip`zIt(s3iPF{kcwd=?wDFt4S^CdrdDd-n! zM)LY&Fp5`Aow`yBD73Abo5WoBsq~4sE*)dWNhHB`(|DyFBa6& zqtWtN3EX&`j7t&;5*n`Z#R_8BSoe^#t&M>CGqYLC$_el(*qe>Y>|<)NrXt8<~ge|G1(T^8Ee&cp}e(WT3St-Vx3-ht>ehGW`dlDIE zM?sK79L;pU0sDIMX}IM(h?!nV<|AaRcCHlD=q6zY+hD;FEdLf3d@dr#e~sX897G3# zc`*0BffxR*hC_Maehs-5XRl>P_;+FS&OXt2#tQ@pAla^O*<1++5uCZ4VIu_*PJSPisx0PbuUST9R z{RJzz7E7k3&LFR~kH#H60cSQClY+)u(2JYP?KPLO>fJgUq^`(Vof}vPg&W@km7j;_ zsX3rhbQ(sS=?502iO^?k&2QQ>6eh-8#dpTuY@)k4JhTrib$O$kBkCAL!(* zz0_3nkS1O}Nz>O|qTu6K>B0CE`q#gj(*GMxF@j4%{Z|KSXJ+Q$5yeVgD; z@GWe$+yQ20dUWxk3;f*#eerY(^*azbr@9-81`s6n} zRMge(PDR{YaY6eQS~F0@*|HS+x>TBNO^cwQKxCgzO(rQRLx|4K#4TAv;il?8Zq5^V z$lUvYZF^MDIJ#~5of~+s5j$zejpOW@ZYquIw1bLgQFLy63T*Rr zqL4X7U?K2t$6Ahn(%9FyHu3=6J2L|Z3iG;(VF7Gz*jn~2a~w>$n_qR%DIQE4%rHgm z6zqKW2raXoz_{n5sKvDlW=77SUl)IXwxiIW7JY@2YKfGn+6Et<9VA!j!!YvO9&$~+ z!lIUF(X@$mnB+AarHoVPjH*3z6!JE&Et=Wu3T?^I7Xx9!WlPB-FJq`2DePsxHW*H9 zwUUfFs0r6hbS0C9PK0;YK2q#_C+Nu)=3HA$;OnFU#J@M$%HaUb{S+A=@CZut5;0tV zh*iybW2*gNXC)OqkB&-KSoLq6NYdd#&a?Ovu3tIJYD1b6`ft^;+NbbAe9QJUX!^Hu z7ni(ehn{}oQj{Klna6mR+pf85j&&U6#{bzl#B-l0W(TUJ44mk(BkOCZkK zkF#`Bh<{SqkO#-cIj_D{`pqP`bH0CIsM+Un?A!}h{spvvwk0p%U#Ca?Z|-x zFOKoehM5q0ClcMeqT$)}vlt!Z1ighfaAfo^_FL4SR@a8H5q^W|)~GnKiok^zkKBQm z(=EwjVJeQEZAt52UBp!x?v!afntq7p)8E*Y^i1H}&%GK#9+!r(;m3~Q8sS-rn-z=a z=0$=_r9AgC=qOy@dx^a<&4tAS<>1rm!>~02h-Ic{GBm` z+@H(Lr3%@R`JG~iGxx=;Bp9pr$D*#SCf&KFK$iSGD$JNo=7-kMjJ%CBrF|KN?U+YC zI&)}GrY%j4no4;h6T;&r)Hb>T6AX!5eHde&I>x{whwlxLJQ?wxC<3R}8Y7Tj2{*b}hfl7g<;D&R8 zKO3KLwr$?vCvyc0-mL}}>qu+EMnTuQaLVX^iv1ACm|OX(>}WqHQaL;t^L81~R!JYu zzw#Luak`ZKFA}{YfmYRXXpypw7A?=`i`23xWbPn#D!72Qta!l`t`<{~)TqbZ;LKlEhiQNBLvQ6APYutJR>*Z#TpBkFqpz9Zxb?C=}MN_Y}nOGnd%e$nkCR6WNB z&V{d`FaNc&8To(kf`1gBd*(Y|+;bk6_*t@x1|qU>$Ya6N0x3W33A1;Kr={11fzsS0 z;W3N}SUvQVRKq1Xn zYK_0G?cmqs-I(hU3o`LbaO#x{I@krms&8W7xXrL4M1wND z;-O+i2nCr$f`&ph+1q-8!sc6adY=h=Id+V8&hle-RhH3@JJJ~aA^;omqH*HCODtyG z72I9n2?uWJ($hu9ApfQZtJ+i{@n8=lk-!+)V!X$J;LD1N*Rey)*)CB-CvT| z5)TgJdPy?Q9Y(FbP1S>6uy^fQbTDc>S8cSA)^)GsMVlJ&vE4Xav__x(_}h-(4@`pR z3&+!IE(d%=cL|@_21x!dnci&v2_vQ^lHrhUAqNmj8(v=mow3vDgiSIOS!_Ul%v9L1 z!-K8$Eo2w2erGw~r{jZx^I?b5J9NGf1^yG2=zP8KzTOvlbh&Ae8)S0n}X9Qg!7m=C{v@%3@ZbeX%mR?RO=QfrP;q%1G~)3_kX|N`r$_n4U0i zYrA0%NtdE&{({M{{)s*@7aNesCG+o;IZ#^`#li;agWcQ%Oy<)c#&j;T#ckKvP(@3a z)VGCQ3v`7`(iY6feKKrOUn{<>H4|P&<)dn&BMeW`BJ0ctY=6Hwq&h?o12g>T)FgE> zQd~*jmu#i;b5>H*1;KP1JCdq@5=H$8#f^K9P_9cumBZLTvdrAePQ0|Hv?gU}yre)m zXGQSRXAmlMT7p|bGqYT*3vbd_z{f!*uxY^sxaG@1{D3|3u4CaskNg#Eat^pr)@vUdiwLg3qq zik_m+@b~mle-YN^DN6iT4HAV6QtbfG1CcUT(n}sLBt4GfRem=d;r=W4Jd<#hWnZ^+9wO?ih#GSdsgMtMI*M2lbTJ zKw?5X_2gE7{_RZiS&#_5QF&yaW)JJUvgq*Sqik|=1lcS5>BI!7CPpF1(Pt8cP z|1L0XUyVx*WFRididmIrShkzXz}_`eDgC4u%>I8r&n6Sfs~^(tv??exeL?mE5IRFz zX>rUckUxy17*YmGfr*sn8w~Aoi|Ea=i6FcF6{hgg;QUFBb-aw`+*VtG%CQdg$HSmd z8$jiT7on{DG)WYjKzj5m(v1;ZuuVUx^YS5Ryx2(*isrEG?maR-MeOQ?Y&yBunoTGk zOjR8R_=(dSxZ@Y=@m{+D#3yq!>p%?neqKS&X6GO!B7_PZpTf=6L8R>54VG#PC_k?U zetersA6mYH%g%vR81n>NsuR#-OCgxcD5JIDp4c#PAOEPw5%-Itn8LyNbmrRt_}WIa zFmw_a{C!9YhV$WRdMia{PlCKn&GfKX6Q*9NCyR64EYS1o9xXj-?ob6G=$GyVt zq3w;>BIN6f0+nd%iZbX8`hrS50pJsH6#J>aXU*=n`9K>boY?YL;8BOugA559k+GD# zts2?5ADii##x-^~Gmh4ll(1#t@wA}!vT%&0lgpeAwkfETN}?{Xjaelmy<#C-wIQBX zO^M>{&p8uslvLGm^eHk=1026`1~=#Ed%XBc3rJg2$lmOOeuq`)sB13xs>{>glv6N3 zwjU*a=RsrpPrT-N2(rGs!TZ_!Ab4pqzBgF_vmM(jdp?=K%fp-5n$TxVdulIx!_ITT z-pgQi_$h1|E%bnvOriplB+$^0r!@Q_8O9u)v%+HPSl=| zCf@HciV9pG;`u#;sAcwS(w!?$25aMJ!J89k>zz%%Bku7tLUO41k25RSkwLZh6d+%K z!=H6ngUka)4c%^V^HU;52w9fWMs0R`t_>tQN(sJIW4N$&Cd{=lfMLG^pdnZn!V<&4 zUVaFyII#~b@?=4^#v49VHM8Mfli`=aCe~5@gteTXgdvR;T=7gsnKD_tQDZpeE}x6` zSM%xZELqC`Q%>J?=F-oRS+wZITAH$VGaa*=N85jnrQ92%Xu^d$oR$0=okJBca>Ye7 z*))P(%lpO8HPV5NK1$|*AqPhPl3`!H6=xvb@^szrU zis!(3Q8s)0Miq{0%L)F%V{C->a;{$4mfKwUmH)Le1EZF@;W49uWUL>;pZMoS3)F8` z%@mmI_>_U@^5!7j+^`U5PEI4okZJhXFoyU9S-iYx8GURn=J`|u(knLM;LBw^tiFI% zs=M<=EpbeHTMpCP;mD*thC#`WlCkSu{lV$SOmyCr0OhPh@ET`9>B0V#KeHGLoGxR> zp(yw_!WvaOC&SY(RpJa$Cv(kGVGB!?nQucG+p}pV9(^bcTXiaN^*<#Di*3M+Y3k7R zO`F074HbMgHYAErhB5I&$!)T55n8BDm2v&pQJVqOYdwhPE?wfHM^ zJnF2h!%bes_#yuR{*t}Umv8Gr55EZBw&?**%ef*|gR5eC3`57TLaoPa3^|J?IQ&M%zDeYwpQ_(>xhwW78i3 zwMVhXbI!AmGZr#+?FhClyPNx$-^@jv6=r-xRK!XeYcO`UJ{Ps>2p-#6&yBCn!Dadf zMYZuac#|=M_=wRN9M-Gjn~`%lW%m`>_pCs?^kouGx5^VoEjxriFJ|xyo_gR~6+bLk zTfmnzXQO#@D?cdzIF1Zjjx|fG@J?bL8iyUl=^GNUQ=*GQb5n6GU5H+zDQ zw>~V_-zn~=QZ`-ua*l1R zt)>amBjM|@a{5p@8=jobq37GC!3n)k!B1uh%~LFdI!6~&Rtgz%@ey{wU{X^Pd_#%%20-zwU?qXN+L=`;(9| zs*TmDHbeGqKejaGIXub!CXNYt4L|-Y#kAYkK{7cX+gGK77gb~G?3tk4aT8;$mauUH z8&J-=QDCXXIN50%Rm+DVai{2cq5;ZFJ*7p`Q@G#lKgd+tj~(*qrMj(EEb;t9YL$A+ zTK+4eXNT@E{dsF>(uBRt`Di5WmNgeWnVQG^`n>VZ1}8`tc7PO03PFGSD4OV44?dpu zbm`J#Fj}&R+Lu0prAHm<)wf2ty=@GQEI0+47XM+{?3LiM(jTweM6qQN*F~?kXJP)3 z>ujRcN*ba9a7A27?;pE^wlE(HPxb)~k9t}kyBkh>pQW;08{tHH9{ua*1y0dR$z%_J zrfWT3z5k5mY`S4KfzxEc&l6bZa%oK8BM<6y5qHdS1DTI<^j9STdf#c2w%2i(wNsz6 zFAyl$Fv@5zg+2Qwlg;V<5UD?o);w2&_TCZn)5?kMOB_O#jS_x>LM!HetwQUbspud- zfU+|7b8F(Q$#-HN>rGlq29+w{pqWH>+^iv8yHv<@F9rU;W7OER4QkKE)4%mG;A3k* zcUKDjV|Q1aQ?n2vI&X33wdBCm@GP^Qs=?}u|FQ{{tI=TG7nXa+jDFM&ft@#^Xvr`y znEK}km5+=9&pQ?LyZQjAw^Y%Cs3;h{x`dKHjfZD7d+0{zel{jjxT}2+z>Q{GaQz`h z?nk|uztH=C-7pSf6!+5Xw<%E9v6K$;C!wX(nrb@FL9f3a&5){uo}Ka(#vg&;^bWjY z6$0{GcjC|lQ+V3;Nc>2%g85CE$6kI{Vtf$rIbv~2PLsGS-?%bViC>sJz)eF=h7hm*$@zvZ;|qm|%Nm`Xp5U$OjFMKV=WW@TH8@WgZj ztgW@ft%-FwZgm+y#ZkziS9FNPZx>Rq>24->dm~wMXP8pWHoCUp9di=;H9Z3dfPV3E z%8pZok4d9R4^C0#OwT%qUjhe)xy1ha1@iLirE^WhquUF z7tS4hj0;yeL-vFpsPTOd*jIkT)~GN@?z@0@ynSJJMHt4_h~SOg4ACrsn^*ar#P&HF z;YZKUZ2B81x-nWFPWrnDbE|={;n@<>S@DrANS#GTrd?u(_Yb6zYYwt|qDXuvy^n>& zq>9tRM>ESMA?%<_AvbUAC${O+M$UJ!DkSuu$6dD_20gQ)MJ+;hc5B2~zSysoN$wBB zl*%%;xqCOZ{tROpRp;>dQ+NKtMtPwxa~vH!%xPP$49%~cPCU=i2YEYEt)ES&derG{ zggvQjOTqI_6Ud?MD&L$igk*~SxjO$+d?5bFJ$m<1wD9n7=4U&bwT4x**whlHSf~nN z$+B>#Z2}~0wSwD8s~}Zb1dh))LtExph`u`wmhGAh&+q?boUAT5x~*qP3i&KJ{)l-0 zGNJA`GYs7_Gr6UA0AIDr@t+D^ap?7N0xMmKqS#2G*V=%}>P7hGPm{n=y~AC-iuB1@ zi#%I6I$@$uhmB2XVTmT~N&kxhPrqZ@^%8t%kc*>uYkaQm!RMTxS=jY)oc zDOWIEmqI5_Wj_?P$;eZYU3m2Zmu0==E>B6u<^9UJ838)D$k&!joL?r|pQ9Et@zCtE%17n1_!MkQT$o7h&%&Rf1Q(!}E6xuo22=8nRgfW z9-j?{x)0I#Ll`)>oI@v}k7_qG13kh*p=#YhoP59=ERUbTPYSY7o^}gYHfphpBhzt0 z*G%-*lki942GO(!bGd)pm(r8ph1Fo#k-dfDISWuy zwV)ZFX2Sb>M{r7mGgz2OaYK^FfYE=UA-hlj2sI#^peEMUq({g8)^Th9YLNdnH#9x-A8voHKnsi8(YtUy zxz``T_S6t+th&Pgd=pBSbY$37UtvdT;BhuPXd|g+zGtW8gl9AG35!;*z#OZK?5SZg zuW6RfoZsd$cNWM3rWnA7HanIcJO@Ti)L`;5%V5>dz1-NHzR>TwG5;~Z2bSdu;2l~X(*a$^Znzo)268qEEdzO^7{u=(;`Wdx@ z=U`o65C0;)RB|Dr$auZb6S zut`C@Q6fwZ{>jc}1c4~4oArA*Mc~Q(+3d0ww(s64{#D;zk(FpGZr=C`%XVDEO;rxG z`+*`Y_SjD)5Amt;S?PoMOmi$RHN@sCb!y9rdNh+egtDbkG(iu zQ5WAe9_4b+U*fi|zs_Foe9rhaMzB!GKmWEggZ6v}7?NQHqcz>&Ve$wNt)2->cKl#U z=ggt(cMdBU@PgTOhqL2;b6KX%dZvBQklkE8jM;5S;MmtQRo|A)$A{m{(KT9{tWMm( zxq1u9(xyMvtc?*qll`dBFPfBWQgGD!1>|+<6CXSE4@S)&%*9P<)o1;Q$+McaAW#VBf z_f|v)TY=YTHRpcp-%M4THZu8gb4uM#Z1TMpbl!1`-ElI*M@@g&jS<=`$$O+wn|@$x zwH-lg$rPv(J3#vS2ynPM2AbMRK*{9?6IO`8Qp-Bd%Ju|&SXYgmFH%5qZvthgIDz5f z2wK#3hc&z}pwy0o;xqs8^zG_LR0t{~Cyn_O-|qlp{~(q&hc# zY?!EmZeH(XEv?Bk#c~-0J$0nZ>k{Eq=L4MXpADDiWr@8PCIQQP!fM?1!C>?PJM@If zeX(%fa0J|vIRGn9mNMm!iEuJrP2~M2P+%D2G0VUM!elfl9noZSRLCTY z0w_&Z1H9x-se7{nbZ6efwq?s<^1BsSY~ca3_S_atFt>rdhZ>mq5g}V8HyZvWJ!M9r z3!!!QL{_V|6}}kV;f-HJf_`EUK6x1m>WQ(a*4B8s23<_y!bWYP2^3O!k+l32+ zT+~W|eO>~)>@~>nsuRpETZ#ssbwS;(m~-%|V^jWJWqmx0&VRIHFO1w}h=+`Hy6lN~QB?1y({er_N5 zBkF$Qiz^h-Qaul^*iFDqR|n9>k{;gUJfl+mV6mx|JC*vTag#S}q3_>5aRK9kX=+w2 zcX8BmI_zN}S`4OSIv|NJQ2B^awzAlJU@s1t@tGILMDmi)HvF=~*SRtFvSLTQVz#=x zRJ1v>Khzz~4t)!H!WViQ{ zZ<$^FCU(W(JKL>V$Vr7%vZ9+kJa=yxa}#`TyBw$SRrX1!KiLB%;|lS9sszo}@%Xps z308UYcqsS_=G;1umrL5vetivoc$$kpgosnix0Sf%LmFQ73PH<-<57ziqR&R_Dr>Em z{8^9hA}(+~_fh34SKBP`kdouvx#d}`b83RD8*0y|-D<6M4?N=oxF>c$!<@c$^LA2eL2Hj0MMyW@pQ* z#Y@KxWz%&RVC)f9CJMfWUauUvrP-fRd?klh(v+q7Iqs;OrbD+DC*fz!F(mu#0Pd=@ zpl$cU@qD`wQTrBz?Mg;eJA5yW4>^bJ>sMe(i4NWsGIZHl9h^y`G~RA*WN&`X;V;UW z!I4}`HfYT%@RfeazHiwB&d&zIr7K$jUur>0%wmW=s|S8pE#b{j6$tp-+y&Fy|3)CokVGmvz&f`_b6dWIPlV7ztny;T|fXUg&DxFl}ka{sQz4)3H8)Y%c zraY#&SD7`ZPi5tc&A7aw4@4os&%`>9MhJ{_32)YV6XSbTQQ1X}X7856<$EkiI!PK^ z_Sn$Bg(I=lY6Q(uT!NF#+ELA9C7%9iE%*awVE>s4yraY(v!gn=Hvw@t)I5*;7IP52%u3m7)%`fS2iSN!U0l59i&)#~CTAUFgpU%d*~|J1 zxNJ^82u;->4`&0om~Bo9y(XZZG@K5l8bRAjJ^CI0idim~CF{ULO!@A6TrhA2J0@L> zYbt(o;z0sS^u4)Cx7CZ+34F%iNF;82a3m_mrn8I3AK>!1dd8A8XqWE~)@wbUHoj4S zl8x^4{@+g~WiW|s&o;4pr#f)Xf-*M5Vksv5iDk`|@*?j^n^l7WBFf&wSb8sZwRO#Yd8};F2bu1RU4}c^O z2@dhQ&T#oVd@$-Iw^7NE90!d>>5_3|8CHRF)aIMuvY zpg4I;8dF$-bF0lMKt`S48O-QZbu`;~c?>CZ$-|BdUvX-M6GWISL3V2oxX7#+`@3Hf zm_*00k%lR7M@;#C5*_jfXPdW*oj^}=*$_*mz|b_V69@* zb(4pd_7U{>uPpSf_NUhNJ~j^{$S$*t&A1XyRozwGlg2ZrkaGa%SY}T%U+1&?kIgCXMjy*4)u2eJL2xZtniiK?z~;(7xOS2;^hVyo zn={m)ZKM;9b(MmnzS-RSn+I6BUj>ts7q(aEYQf>Q@mRfXBDlOS#R~?Wz%9Row!MBJ zr&o*Nue>3a34B(nJ)He951)}L#AOe{0sGU~&T=(eF)LgYu<-^zVO}WSTq)v*9UnsG ziPyvhb3CZC>y{{W_+}ct0B|W0bl5uJ<{_l1{JLL~|r55tD>kq)D&%-%0t!yZ^?BE)`Gr;}v5cYBO zUN~kxhc*2g3j<_0_A$GH?WvVzdcjhQvEMrrhcXQ4rLpf&~RInwKtL`*$*5G zI}2#%^M`zPeF3>W(!r;jlj-;L?HK&ghZ53G;@dMr=;GWzsJh!8TRuF;BjzEjU_?H4 z9x{dFYZ#6j90+gs4;dR`8UumPj9J3%NVqs*?<3bobOEaqz_Pe-?9vU+J(of^F;Vg>W{ul^DyexaQqyhh*KmZajSSd_f}^--q_N^MffS> zY9nJdX8lvBbvX8!uNjVSMlgq{o&+=Xx{#GHLDQz zOlLK^uv0TMaMyZsmNk6_uO9b^Tk<=Fi)k<98g$JVsGsKEZVqKCE&*ItVIu3aj^gd^ ztzrXh>~Qa~Y0PcJCA@2VopUqjM*q77oU3j>I<$HS8z%U8l&%kF&tAU8Rcl%}!nKD=wdV9(zcIG)~UOj-&mk!{sn%T3(BO&L`Q;h6G%3MDQhl z-G)Zpqu_gDJO6v+cwr}aJ3saCWEdW8flHgl!>T4TT+ufM+Hz)yoqnl8UHJsI?9V-B zale%rPn^Jpqdu%{O5nLh4qDF~#l}8ep^vCY-rOtp=J*J*^r>WPKTM*U`orv_k1NgW zG-RKmmeUQ(HQdKe2l{s5gLv7GkyK-Ak4uCDe|^p;tUIs`pAHa_bVMz;+h`7b|N4SW zKITfR|CT(o>S4Msdy!Bzz$aGDswPe0ti28PsfM@~dB z>F8V*YTv`X?CWE$eILcsw8p|pxezooTnSr7{lxUP^-w>;luFFp!S=^wvY4U?s+A&Y zTAs#Ezw5z2(w{^|cZQ;0gfSkGH)T^ia`E}Zvy2PAfmRBy*h|lE_+9@#TU|GhdhhTo zWw{A?UD(cI+{cl_-H|M;(3)Vs23z@e7!}QQWb3Yd!LqM%%q~0<|Jz^4i*iqjVsk37 z{6!@*dDw$}wZcsG`2cd9KN?()y~X#wB8Znu!U9_cB1-4I1s*`5;16f~Q4R7Y2Qx<@ zhwncqh)vZy%(R6$L+849alznS%+=5dYtns~Tc-q#<_5BNUGntvr6+51HX)ggact#~ z@uX2#!Rh9klb`1Eu^!=ybgM@hZ&hB#m;VxR*Z~`iKeZl5m&kKtWC!A+!#>PgK?w`B zbD96!3%uLYW6a7zjepyAgSC9lq-s$gnFu8rU8GmOD6p9)3vu$#tDrDe#V( zO!VJu+^}Q}Q;6Jxu}unW^1)~v(GkOWUQH6*(q}lcuvzG1*TAjbyorxkiCoy2Jnm^_ z8>cp8K5LIN;@;$DGN-8b{P3}PthhY~OAQm*CbMQ7e~Gb0lGk|3FM~U|qY;0mT8Z1Q zWT5S#6n>KOR9yJk5}QxI;6HTi!nTX0yuC1|yJmS@oSF9-UA(7pZL9y_q+7yl=*-Hja|1=CdDVtlpLKW2Z3%xam2h3I34(5Buup^E8pzQE3F3vv*#5KeC%c==r zLLOYS%z#1$lI+i~NspR9Y(5qx=~mD_JphLc?OVB5TWTxZvbdOcyNUTsZB z%%|hoE?;U*`ynn&4Wspb^VsGq`)K#{gUlsm1I=_xVWEY#bk=Mq8-Df~8V{Yyl%gN- zWjQywUuUe?xV{7~_DCx;)J^5?t}_GE(~aEQfZ4DmbqLeTS_~^=0_ z8Z@p6SQrZj8kW4>a! z8MT=TKP!e%6{?|yOE*T}w8Q!n;V2QSqDn&qe=t#nzkNQO`>-QI@^da5)M&&RyXUjXQu^F)vx6)uz-g?(zeuLIbCOt)hOlYZ2eW~z7m0m`C9ub@ zJ<;+)A^WP`h{5-ZS(KGLxuwRl&_~jAV?;mp{ni)!Z#xs^2r6HboKxZq%YS_S5_^8q zwC|kO^G3e!)lrr!|A&`Yd}H=grwFc89r$@W4!_n54C%dM^b59v!9t(XbKw|pXph22 zU;eV4?zM5VAc9nmst;J?N8P44pS|iKSk|jam-QGhLm*Avhnj5lim2I zO#b&Wy4mzUiq6BItM?7#NJGgEnHf>m=REgEDGkv;5lK@6_rt;NTO6<^*g_R!0Y9_KIeJvb6?l>zPSCov76u^K7n~(R|(Eo=0Sq3 zqM&jy58&8K9K5W>{_Q=BYj?=tSWP0WZry_0RaIf0M-sL--G%YTDzI|mB)-m$B3xBu z!r$wiglk=Q@JF@$@Rs*3zUFmHytS0m6^n;xPVzi{?ej-$pxz9Ay!=y=a))z=YzYAA zq<>_tMF}(+GT4<+08bo$q3_rkcsmsY^G|6&@LCVSPn!mwWp|)p?$#9Ans81a8Ka2C z<|hTy>{ejt=Vb!FkzL51948ofaTdMB6L6JxHr}0=!}}O|4rglyLiw&KxOKw-C^&fX z-liGyZ)oYkFBdz0(bp1iTC|lP%4zQXDhK($*A2t7n(chwmxW-(Wnp41wnKEQ2*2UQ zXX5e46n;zWU~S*2;n21jcz8oCnuX5do}7^2ZK*vbUz^75%_8wxxtgH;bT#hSuO@ic z(v41*5(2lY69laTTtC;1PTcl=qF@t^L(g@kIP=X<`k?MReKUO?Dg6D2cy|TB@aham zUs?rwws*mkv|4y^cMPg3F2QHrL8uN40@;h-U`EPLXq4;$l?k@+*{%hqNIW20tYaV} zZ3C12SPks+J{4Hsxl1CiC)2XQ(SpBbzv;Dob8&PuiaPx&!~@3`P}yxiac109dR$3T za7=wS6R}-RAS|6vn2$fuez`rd{&ESEZRFSq?pd_MzL;G$HJ?1%CQ4h5?}gvW<8i{% zV$j(=4<`qH0!NsJyJxq-#x`-(YHJ3)^!L=aqZphoX41i{8DQ<5%dY9ufXN>m+1$=q z1#!<`Ge@_pVY+?|k(Wt9BhO_p`}TjRxjh3a84+&x^%NHN2?+!lWst}*lSZS1LBb*c zg;Fn*_h<6+YyXZ=#}{s(^Ya?IIKF~sRjoK7Ya0KhTMs5J(C7OdYsBi1*&Kha6y+Lc z@>`5APQ^WXYaonv9}_25#kWvtw*;KppeqpR4Tgkywt_B$9vElm zCTPDd#W&DBAW)kt%eS1kN3gF}j32&#uHfl^-QfFh0EIqW0L!#Pxc-p}DDG-tWDf)| zc4`kmWby+l@^l`*M`|nbCVKMChm)}|fn!GS+AxyKs$Y-$hRyc^IPSzm!Q#^!_`w`2 zC}6fE|1GDTYi&LcZ%_4L?Wh9%_%j9TX!zzgbAX)3t(>Nk1UyiM@9Cm-~Z_Hn#z zQ9e0%LJ+f5l`qkLLa=%J4F0sYYXrm3B=`fT^aOYEKf^K4@dDktWcW6cfWIY`!PL~3 zDc1y&u}%QXf@5fTpCNx%&Nhr3JIG(3gQzO)$GP_&q_E zzb?8Kp}z@g^%Bvwcne6x@o}41E_3hrMtb%O!F|Q2h%q-eb)Qj(CsuNT_D6oOVDBP9 zR{+BLJ&OhMq18aWmkKnG=0U5Gi9p~P0}}VRKC1N_;KPdoOm&{QM(^in9DhLTaZWMPB@?eC#j zB^rBfR72nX2Po(31LtFFv3*Y)DdajJJWijZA>2$EXtWRC_1NIjPf_SKJCWULa0x3G z6_WUdN2qbBi^L!Az>HC0sQOom+FEmfO^?HoCC*UpYm1`w{ty_Io9CL83O8f;FeL-w zmBS6NP)h^XFEz0D;Vy8CE(H#O2mdw)0-I1vv`>k`lH*>a=Bzl8&WPqU-wkHBn)b1b zZW8^^dj@rk8l%fcYiO9e8#?wmVz_c49^LJUvJ1QL^}rtPU1`PqKfc&=`6;^0I*V=g z=kal5FkXJJnz}5t!NWe%kTdK`8JELgmvEKj9li_el@ws0Ja(Xl{$u1xX`=4O0xW;Cgr3RX zi;-qSW9qAy3X8Q18YA3ldB@-^cG$U0(ui*3CA>J9aF(}!P!ZYsp0V^)NVof%d zz=iv@>;{fKTr3$wMCU&yg{!B4{5^Ae`AHF3QB+2ghevqtd(<#)X9KN&whcQCHPHkU zal*Q z&{F)5ZrUscDk*R2?-F5nOg(9E({u8BM?gXU{3bFr_8S>|`iWFjnZtkn21I!OCvv9~ z@{b2w(6z&t=zph|qR_{wxW;u8di>dl!hP#dxMc^<{AY%1Z|h=*F1KeXYN7eQ(kQgP zoXX_SM#o>m zEZ&_1QEjJTSoaE~Y*2wUZbzWX33=|s0b26M=pz>c$dX-zoBi8}$P8~huyY34HV^TK zk{127sU7Y0^>E{xCm6x?ppPEN!LjXmcqJwtmjo5zhVu$2sE$U;c^CwFI+gC6If*0F39RL7(GG zSQ2;!c!Bk>dj29vD!T!LQko#UU=LKi5Evy5E`(Bz_tf*B1lZg7p^laV`Eb7iWeWn> z(#hZP$i4|^ul@@st~rbOv;*G_6{C1t7Cun9iN|b~;N$#MoIiYkc5MyA_6O#qKfoRv zI3IC*(ioLrb5yq_3C6qcV5babK-0`iBzx91F#l)(|9nDW-{phA z#;AjbS|X&ydJ#GAYzT>|pjF&A;){UUn0AW+0nY0~uo^YlS95*8&LkSg} z&*C;`2HysTpbc*=CiySK#SN;cdHg$FJ-C|=U2vdwcU4HB`vr2~o-H|Pq6$aHy<

tFR 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

nQGn3r64}5J;&RaW= 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

z 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 NeLFhf%H@ef{sEMJC3ye< literal 0 HcmV?d00001 diff --git a/osu.Game.Rulesets.Taiko/Resources/Samples/Gameplay/normal-hitfinish.wav b/osu.Game.Rulesets.Taiko/Resources/Samples/Gameplay/normal-hitfinish.wav new file mode 100755 index 0000000000000000000000000000000000000000..af270ae12a170eef81ef9def99a01a386d5fdfb1 GIT binary patch literal 520074 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

mcsw7o`c8&f+~3qxF?n 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

  • f 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

    _kKKjzFuPDBzg{w z-fyJsi91mzPMqt0e3;6P-6ku(PH=@p7Q_0b^XSLpC&8u0l*R=nz|hZ6ibQB@`-v^ zn0ES7kqb%0?9l=Y8b4j-HM|?Me=wLhMGozgW6{8)i7x5#!sK;|7$qW%^xPp#Vwq?0 znltf7cpw&gWRSi5JFqS^29)>Qpy}@@NGob{Q~T0E{sliNi4TJTuX{v4X$L%e&U%MZ zroq9PwUE>sLtMtXSbvoOnPOWEYHpELO?MVRt8M|6D1JsfUmw6@8bSa%?db5nibSw} zz-MoQ>G8?4Sie{i@5L9;QnSmnLo1qCDF0VgHatK|Li6Zd_C0Xw(!nU#X!5E^4THW9 z6CpW*JAb*t?D{CwSYZXB?=moC>?w(9T#KJN?h_yRi}Yb$BXO{^p|1aenKIpA>acky z?VqDa52@Bum)&J#&WU2WPHh43Wxlw!Ozat%c=mt{g(jJNU8eYP=9;8VL^^KN`k|~-=x@yLBt$vXlg8m6PkmQs9*^6Vm5zg2e0Mz+Y$%P73Kvj_sYQMQKu~zt|gZzdekhI*Baf zYn(n7iNL2jvkCdV5>;4_=R?<8S}fl|0*I<;Gbe$#sL6U@f{S{ZH>mY4= zp+T=`E=A+p=LodM;dU<(_$=v#F)R4M)J6`sZ5w3XZjnLf&8>86p#iR2GZoVpexm1v zDj19JYE{;@q44egLNG080{zD&(4VpuwCW03K1CeU5uXM_-}vb9y-|>tYeu)9a{~k6 zLFVUpFA4Ws1u82VnOWnmkmY-YD|*1vBu9P)4OR+8;`f_sHa6q#dl7gyD*+?C5D!SK zLebbe=;u8jKjp9txr||Yc}Fd_X3wX~8!WJGJb|nW=;aEQOp-QsKBSeb4V}>qr0=gW z{5+UWMmhw*-dP`V(q@tEGp|6r?h2By_XVUe%i!CC0;s4f0I6V2aM4c!@2(LtFxQN$ z$8u_AWv*h=#@TfC(d%fe?S;4P7hv;;e0)_|Ytmp-hZR+ONZ-j06nIw4b%+SWm&fX9 zz`2FYSN0>|#@cJdQCAF~e4R&*p2;O$A@$@ioWaK4M>x0D7MX81uw#xq&3()bj$oK_;7JL8teWeS)!^~bZJwS=jB+gjEpi#ed7&Yf|8&r z+62L9IniP6t0omO5=yMTk*Wv;i~P$4_N;1YwqWRC1@r;PLEg2pnH@gFhPO!7CK9j zjU^@^zg-4|*gavrA9z~Fn($vu1G9kVWbKh8c-pJTvh3!;e}0lI6Ywu{ zz3e2oZI7Y*tFypAeHFgCItxx;jl}n&8FX~RO64d*V?cMUL7Af^2gmEfCxQ{~cb5_s-`LhvCmOMz)lW z9;`88>I^W;*@c0~ZPfkX9PU^so7WAuV{Xf`>>l4Z?pf8R7D?4tCf_&~osGEI1r~f7n?j797W??Wr7-=m2vzw@I=VwCP`N%)>J4}$-lq#3k z%~V121|98M}A{AI85YVOZFrwZ41K& z*&GPivKCAG@4?J-iL@)T7O0>Y=ADvACdT^LHyEMJ#yRNIu^rR8f~i1{GCJ9>BJU0i(8gt(pfgVg*Jzc4 z?9$aZ$}*0|He1ozOL$PQnC-?iUJ1c%M@hAfH*w&*NYvJeS7DM0D21-1>Z_lV{0!~2QWu6NXLVj->1Yp?8_IEy_t&a`=e^|hQ_Nqy&BN7IkrN&Ux* zxbEUUkeV8eYIB02@RS*P^|QW3P9hE1mB+h&Chiq*zf?0ocU~`K!cx{h{ zje2sBAl?Wjr7C1*e;YL2S4MX&*6Ubt9;eHMf@NbqjvSo{F5k+q<>OHzIPWngk7UxH zbqJD(t%I z3WWcz^~3dJJ&_grno8GA3G+``YeX+{w)3uCj9uTQf&77y=P2;qSl0ytw|4jtk< zO*)I>=mnpbebh|ujSbDv$g-&!g+U0C73M@Fwn3sAJ4gH( z3?q?jdZJGY4s6PVhpoXxQz{H}&JEK>c^!Cr*Bvd>g6Q@4Ca4ybi4T!k+{TbdG$a4Gajf4neaUC4bLJ?0-8~&= zU4Khto@&wM?0W8y7$E0oR)X#mmMcn%S%0`W{M*OAdv8);-tB03+uaN$dV$b-y$~EG z+lb5IFT|5!GZNi})M4D2{u1)V%6D>9TBR8kdCJ@mJ`dP_W@>!MI~n~B717-?oAJV; z^{7{R7O!f0VjQcBu<0*08)it>bVZ@SsWgz%OUCo7i(yP;IZivc2+mKNM;(>s6RxB+ zan+I|hJ0CM-uM|ZE~NqiHw_sbsbu(j=NYY=$OD5z46ZN_2KIV}@}-V2mhp~?v6-OI z=oIb>4G|b)ft(k1S%Og92^#b}1S$=a>8uf9IN+W`YyV22S#(&HnqWFQtX&Kxr{b_| zQvn1!JK`VNOK|Y*Jp6M|8xDvHVCL9g?zOQibl6lJwe{`j&dI547HI}uIMz3JwWN!llk7KE2GRuEk$DZG;Mu`!0^zRvy{nyTM1zE514Lvb*%0Gzn zrv{*XBHN$oISW1e%czjR3etScnH$ig1kWSK=-6V`2jAg@R$`C9FiZ|rMkiQ3;v3N^ z{|UzgOQ740^$=*WUGTSZxI_0QnD~VyxY>1(F5WeUhIN3-o2K$4RM#Od?;pzD^Fg8e z=TOvc1?$aUOP^ZuqmD=kvm<9ObzbU7>(9(#s&oZuo`ot@F3^T8f0JNThUEd-2E%>5 zGqBxK8~FYMQYpUz)LQ;f)jet8ng5Y?%vlG2b_Ou&sge-VHwSumt%vEdVX#Kg92!n} zL&v*gwBu77qjBINqR9eOUnk28ynGO4H05~Po(G__^Auj}i3k**!Dd0<2jjZcZ1<3^ zGKzePCkekMxuUlFp?<)hz&NQSzJy(bHPC=;uUCq)mScNQGnF?9#<$!SV)QNnxvR9{c+FlM?lOh?;XibL%}IE%+m{-|L_zUYO*%Q9 z)uoRJ(@<82k?+)G&>5|+#nQpW&eX3$nrvgeYXR}db&3AQ6&H-gyGu`^ z^=y9LFn=lPrcGlx1?%wGvUixtkpP#`M9iuD1tZV8>6|IDoCT(dM7Zz;oN+eA7a)6cR@Yg!I2tcW4CEN{iH>@3&6{vjUnX6NZ< zGCYGc5j5C1n>X}$9?Q|mHKUfX|PGZolQ3=|O z&M?aQf0y`sgQ-s%cSJW7+Mg+7=koLL_iPy6b}EN9<{+Mpyb137p;V&36zZ7{lU0lT zp;BQJ&FvZ{d23B+>5`3P&0w*~^EZb{#QsPcC_a<)hDak=b@w8j}7hYZCiUsw3abT`#2FI4 z4RXf)XWy{i-t+Kc-##onR}AZi60mUT5_n&gjEec9OkZdOUZ3`e%0F_(KZaZy7Sl?L zrZ48|7M&v`L2_eap zDM^|qNhN8bkfDTh_F9sVDM`qjIdl9&lFYpO{eHgmJDt6swVwOFE(hv$EAUzwu7)JuHtqZq>sl{WtNFkPWDueuy?+n1NB#w}atD zBWyS<M10%J zIAG4rvp)*4(%nyfW)dFJO5_Xu_F-7T8*Z(ToKP`pCuTPLK;G-K+_5nq>XTLrMhC`W zfb<&=oxU8;_Rm6pG{)zDkPw+5@kjsNC$A;(m=<3}ro$dU)4833j`Ms7u2)t9g)379oyAd9 zRcem!7v<0%hx3?YdYuk7J;%$D<~(743jW+Ynde@pfwXsHSi!TgEaZqL@9CLLc1k@+ zE9@AJ#M^KnJCq*gwSYq38Dj4<|AYf2(_r|5d2qUSFL?9Z3++2k6MOc{z~+H{VR%~< zo^l*1b(bcia^?~YXb6Q{_nv{W_g^v#$tACUp6sMQf<3qD^Sjp0oH<-hM#Hk`kHnN1 zGw&ifCrUY%VmU8f-mU+F|wAU_l&0?SHhmG47x|KC_l`UhD_0 zEB)ZamT6c%&K`|3($Tm3JWMazieU-H_*gd-i@yxV;I$#BZLrRZh1(qThiI-hjd0By+g`I+~A;n$gFXY zea&sj`9%zSPW&tebsEnaCY5xg#+6>a`$%K{{)1OG%jrmxEl#x91`FTx#)@8>u==Gb z_Pu@yn+&5cI`AAeeUsyp_EhwrUW(ffO~NC?XQ0jgV$i+W2+fyL$;a$5*gdo6g%2G- zSTU77W>nIxx6VAdpX5PU?8Fr;c})gP;6<^2MI#G$R*u{z@t0zF-OCi#)G1)^#Jilc zZXtJ@Be5QnO5}S3A~@q<7PRdW*r?8)I(A%4i!O{HI{61Of)QP`=b^vNeJq&Zj8m_E z#EA=SuBHVp_GGH9FMsMSBnSzPpp- z{o5%uHGx|<9VZ7(iGdsc)8 zeba)Ec};ZNX98-K1i}3Sg_yc}3Eq#~f$GT%u)0wnKMy_%9yeMctYjm2Y#D*~V*D{{ zi~;uCREmAy|0n1O>##iKB~@)dCWJN&-$6sXJuAfgv1rNsMt^HG*mHs@MbA{?Ug{HJQLo()9&-{>A8*5P3a23O zzwP)y=^3c~Kor+nx^j}< z5>9C=p>L-of9=EJ;Gmq$z0Rb-6t4`9dDxfeZ;I6A3L&pFMP{K$j3{^yX3RPw#=tJ_A2i7(hRdTeH^DHgQsZch)yQDjZ8{ zr}7^^DRbjd`s>-r?`N=n=pU;7vIo8ztMRV(rQkmBi(Gx6 zji46N2^-Jr$#-q}0;QKfLirXYp)2I$-`?G!?Zas_o8*Ln9|X+zi$?3sRg~eZfCeXb zv!zujyo)L4mV;(^PdZ~*J+Ff^vHlb{xs>eErM|(`5j<$RAuay6g*2`@aMeX`@uE&Y zu7dTls%cx~-BPkZWq=2C_ZWvy$OCGBuS1!JI_y8v87)6Vz%;Xk;>wd*;CkGae#h(+ zeswzt0b(HCiT?yc(xd5TLjeu_kpf$`7xLy0c2dXr0yiCSK%38-*hAI;uk1`DPfiE8 zVjsg1$$?aTHieB%ooI3IXQXq&ORQd{h)v-M;+Bj|R5wkdZL2P!si`6FOnHQPBOUnS z*G4?QZyO~%Ou`3_g;3>DE1ny818%Le=6TUokX<>Jceggcp7=mY`*#frOufMUu^r$g z4QN}eAYyhAHII*`b#F9y>i55t>NJJ4_5As|+!%sRF5~QBTHx6(y=#0{3NuH(kg2`U zhUB+4==-!te5mJz%@^eql)4G3ivE;2{ne!eya?_tL*Yfbl%rT;j0^fo+&Ss|7#g_) zN_t#{qf?{7ufSEXIv6ENpFC`XRq2*Iq`)5?VpX}@=Rl~i+bQfd?7~_Geeg+ujIqc7^KJ~_hqt~$?H696FzdeGWgj<(uZ6vICS`2>W zH-*QQiRe17622K-z)s69K+Vov)M}K8Q;H9QY0*$V8+3*)BG*|~HdI+^52{w2xfyG)7ws?#y0NsDw&xkBywczEAuI>+1`hi6xo zaOkEi+}}^mayW%gq~CiW)Z>C5F8uE25j=k(ic)JHLPm!JaAJEp9mt&tgSTFy*!A^v zXwhEr-^w*0jLo79!QAh>c-`nW zh?g_q%H)YS`&S0^+q4dy*g!PexJcru7(wi1iF56$F7cWZW#vApV3w=MVZ~ior+hr8 z9Si0RjR|C7+MAace1+767qXyDolvLR1g~3r!LF%k7(xvq8SO;V_EhRTdn?-2T1q~~ z7>rmM$;Y3$p{s)AxIE)thUgT>RjSB5b zvhLHO0rmugnMo#PMt+B18hzQJk2AK;nZvbS>oLi98jp&}z>-}(_;Juy^iNHt_M^6F z`{e}v{&xf_Mzzqe z&(!626>8+@ox}+{f+^>`H1ECqBzBFN#b1{Eg3p0^(4@N_^~Y_-e<~>$uRm7W=2S@NAwK;+w@L3bVvEyI=Ii zzB^=mi4~i!>O(=Bv=@2Mi}rda^0cT#>KibX?azJ|quP3i6U|4$fjhM@cEmY|-}xN= zj&_G;yJ5KhT$VV_W)t4)ai0RLys#iaV(Bk>3}-e)a_G{#l53)gbR4?ivE0jWT~YE0 zTDf7~=K&P7XDEi||DsN<1l}?w&OFah@p-3ER;z>;Z&{#nWftt%F&_8#aiHp`2B;e8 z!)njcpvTM<&WyPNk1n~fa*rEeF{uj&+=v#-o;FcJdO{Nay0Kw@Q#fK`$Sv-J zAnD!)Zqyhegtv>FUDzgfG00=}#zR8Fw@7Zt>;i3_lDJ^;7g<}-c&=9p0)>B}BY(`D zfMYwl;H}CG+>uy-hsQ^uz1=pPvZ4@5!|ZX&z`eArtsA;7`AD}WmBTi-vt%;fAF?D~ zbz$WlA$m<4MfxrU-Q!Dno{uuV5=(jRijin{K;$diYvH)#I*#cQMas5YMdgnPT(4q+ zx+Wr5PL9Fs+bj5%*&Z}Z>%?XE<@o7RC)Ntwg-;I+=J(QGxL2k>rC$3d#Q4-g>L5$; ze9;ut|2spl>X433dghQ}BxOD)y%Ii_#bc~Eo2mw`6M|fjU&cA|2H7^wnC{2URY!RF zP9vUObegXZ(Pj6)Wqfg%1_#tebET&bH5B|Mla|TQW-|;5e9wyEsr{Bz;NUPOJ42aExsYZSE0|t&=X&-Y!Wv@U}boBr4+dQg;fL8Tv0fB-rCNh&!#= zBfGL`4Ck-7Lf7`Ki z9lsu+2znO`x%5{uD0+6|w;37W7Enwt>UyI2<%7bSz-;`N(*bqI*5and0T>#+3kP_d z2M4hk)|j7%Svl)P{lQMyXqrQ5!UoizsKS~V0q?#x+#AzBS#xRVb2vPp z1MfW$DZF@-PL6&4h&9`u%P#hIp!8$kVD*A$bZ@FFuCvhP=a-h^*tI_?3m0S4kPV_i z^GY1fTj9NR7#5Z-m$-#4Qm-b0Mx`8s-ByZhVs=dGZ)_KDx;BeWj`7eIc3<>**^#o& zuMvx+XL!Far|61DDNXF{z7avP#f z2XOnJ)%apyD@CivVAHl-G31%VcXRk9%Sj2s18V6o{Mlz%Fj5b{f9_0q&XaM$qdTOZ zJ{DsVcT;ig7@TUIN^5d_aIJK1)%n;B{Wh;={m*F>T^z?pCXeC+1152GgbLrNPo%On zQB-O*6mFeJ6ORl%3O3K31fQ~OP>ES9)OHyP-?YQ1?Ztgzn28!&Ki&rEpP$mqzu)2P4cKK|;8NNHI-;iDVGpNbZF{z-Uk;xo%8A@0UFx^;ZI35Is>n%nxmf_u{{}={Q-)z^!-v@jq#{ zULH0Q(_E*+l-46~YuGIE9AOBl1D{bwRLveH{VvwHds4~iaPkWiSQ@7V4D| z{L{i5&NnP4-68qnfuq|&LCVUTJ$xuAc=QoVvi-<*LMPF0`V(11i=$ktbUtcGELIo) zDs)&U@eJmc;pDtsm{>U%_rFcYnNLLM+B^f}G*s!)tnSjYSjKs$&tATsIf~Olx3kTaR7z2DmvV@QV3O3`*&UgP z`}0>)p5j^T;y4ygS{}rRsS(0SnFpGI#FBPOfySq4TsP!{XlV1C`tGTu6?-?Lv-%?{ z6)s^;`2~91eJw7wx=knIet_S{Gvv2f-7 zefb)GYMR2o0|Xu$KAz2{SBt*K_KLldBqwgoPiTKW91EQ`U}}_~$T{v&R~II&?f1ACq<|E{3@9ktPl~t|RpR{RJ}b)X`VmD`t0W5t|PC4t^KvTDjoU}*MGGn60X~QII=q}o! z?k72uaw%M+pTwAAis&|6mS}yHZf$x4j#gI)zZ&6-joo?33^$x^t1q2vTv6R_7j;~v zg>O}tfunm*Y*?m>5aN=;gkh z+uSaS=d!$5ft}&TLvIeX(#D3q6L>&iH)$R`EIu0Afw0;P&&~1RFR4+eM``?SjpT!| z&EX%94DsszM1G-a0mbP?T(0UU<@GL!A2WKR`(YHc3dZ5&%L27s?v9r~J`_`n-wGRK z3!rOG2sMqA7yy&j3$AlKV9kCX)Y`foy4oH>|NeF0dQcb3KL3J=fxY;nLOm>&C$YlW zHL`!}NAq^0w{&OiO0q2eMs3CGX?fNK@z-fjKHcaJCYLhUJa0JEbe$wI&GLkg#rr9w z#XyW}oI@)YTZ?5MrjXe_52)I5SstN!2RwJ~0P|dlN1UvHFP`oK=iELR^l~z+X|crV z`4+HJZGgmPi=<_@;vjui65k6BhkfVHan_W6xU@QlD~hbKzly-~bbi47Md4Jo>XfkH z#xkf?GbNR`&S;<-K`<=|Uzq$LGMa;)O2PbBI!`Y5+|RowBndg;tGIdcW!W7oD~jzk z5F^I!6w<@b;u&Ql>hs_t=7bKW)Jz>5*>pfAw1129J{(NCbuPFS6we$ ze<2(1Y_!H`$56aI^d!_JSHhu;B+#AHM4J~?L&rn0Toza@bkWY?5w#EK=$aIMlQK~1 zb0l%;vBzZJ;{=a75l5~S4ea?jnoX^%t>I8EaDZ4X$tx*M%rSjOF-Wl*(y zH(p!#i&S=Jik?yHX=Rk2%=Um1`fl$7#gg}-8{LF+ae1h-3UJS_VBBpy4Oh1pfs$S? z)cj#eYHOXKx%#ra$?u-9cFJ`j@YP0m@W7dDPxcjbmOmq#axXH;UP%@`lxXdO8&I;x zT6kE#9HY0r5Km{gpx*w|R5IBXGClUuWyAYay63Yv@PRFdP0OO1Ycu$XgF8>N9muc0 zxU)k48qwQ&6~*o=gFcBW*jMu|Y;WI!AsPu_cr*t6ws^}eJNLuE(hmEh-D(gU(nxF5 zK~c?7Td_2cwtTjU!!=s1%{tlUN7w=Ep18Oguh zT=`d04#!RXM>uo_`;GrXudZLAnhjSebgwpfeAp}o?MfCl*H^-<_;B!!?1Bel?n3$;KcDeoEZH;&C(ZY2{MEdZHy7IUfYY&|-)htP6KHCquu7D#Dac zAE8;x7ySDC2J11gkUlL!C|&SNeqquRy6)DUTf!@;kHU0rlo!c{AN@e*UlfQYcW*<_ zPpVw{`7lngn985p8gSAMD?Vj#05{HUrLwb+;r16rT6X3nwf>$e?3^})BgUSXnwg-x`$+;;d56K z3af;IvbUsZxEBEeb&pF;l!1p23owHxXrbT1u%DW>}rPyY1^|2MChpq;T zvp!g-D8ma98>Pp;B%GbN1Dt1U#qYjF;)~>2==>+2UWFp|?L2_z&l`l>Kg>Rt1sWdnDXgX+R%lzo150B}nLiWi z50Az&)s>KIp@lfbM0y`dP$X%G`&i2JMeM7<)RtG2Z@mqlM*%Nxkd_Y~ID`U?xQ9^f6Cf=jjQFyc=MhTZi>{kak==HC?yUrlSc zc=R~cN7|4@lMc_$+yo2mr*Lo`VyEIu(w^T9?Vd>v2*t5jl~~Ac46QN7d>k9?wvu@2 zdGsQ6D4N)w612nCgT}*E;Ng}^kpmCFmB0NsWt_z6Eb!qVVGervZROUFd%$9vbSEF9 z$MOr&tnL%T-&CjbrSYn4kf+Fvn_M79vq88!urr?e-4|P5jKMQ|6wy&@Iga{p7cy24 z!xgQ4Q7^X6a+AA(t+n{6t<6ZfsrMg`Hi(xw}wIu8$(wL3Up#@K0c;#_eF< zH;VuJa7v8wSjyoQChWO)27Aw(#3mJk7#qCk-@U`6=vM%*ZsZH^&s+xGtYP?lh&|L_ zFU5i|fB7vng;5P|dqnM9FR@ehBk`@V2U^U{6>fxCL)Fq%V3S!6zT-X$`Abdlce)zw z95@7bf2fsj^H>PO>sCQ$`CD=by9{H4rTt^&DmWV@RhUQFgPJ&tt88)q9SujnXx1VgL+R;Rr2ECY8EY3WyC%oN0oqD<3f^g&*4cgNcPWMkH#lJ?-RQXZ7 z(oGW&jWi?eek-vceKBp@HW@>@^cMDt&mqp@Gz%s+tZLxGicV6B%9qPBbu=~kDG;yW}|1#Z2s&iAQAKjPOb5U^XZ6}UX z(1(BvU+IvMtK4E_D)qA~fZ=Pp)Aha+@!Xv%G7Ry@dx75UIn)I^`^2(F@o;>-7PvTW zABc;L#LFjk3EG;CP^?%B=d(4@X{i|+E>%U($~%&i!vT9Kt|re5D>2s3o&9gNfvT{Y z9anXwsYXV;Ep-6tdp8S*3LE87bq=UrtWO4WM`P?ed#X8S2sT};=zUBHT`D_G3CY0} zk^h0p{zQvUqb#XytUK8n%n|KtjbaHc~}J(o-ClS9f(0Oi{Mt#Ec|g!3EdBlz$f7*SpTCG+%0!OMAzrS!%MG7 z-K`JV7i97Mcj?sYLj`}G9YcYKgSl2~6GbRJ6az}XiEq2faOReaV*j~YP^G;yt&3QN z2K(=l(dVI9x@IIl)fs`kHpTOqU30PV^#Lx9oQK(t`y}qKA!b^Bqy9_x3r;q}(KD+b z`z4p4neJK+3fqn4wIOU7x(T!Q$8uHLK&WY zdnhmLR0n^|wK?zbbm-S*H))6?pdl-X>O*v(Tc@4kp(nef{MH?)GTZ@I=a0j%Ng859 z-=TPHdPnw=n6zyj-S|jVIQVPJI0o(sIwQZ6_xL#aA@#IwKGx)}Zti^0KcC!24&mg4 zJ%Tv52Z@J9ifvme;d^m06?t_<&n6YVdhT>e0Vhtz>ez(2YD`v&N-eg|w_-5FnO zQ9-R;diZA580=~nN%mqoH$1AQj?EFQw`d0S+H1!fwNvPUQy2c# zdWj+~oFMlbS7`Xysig3Am$`|H5-s2T5_CTTd^z_GMj3a)sW)|S`|~Dg=jDbunT4gFg`Wb< zSLj0JYU6RMVgXsZAH{uA=Dk;BK6Z@KCY^}OV0-xb@$cKl@XFk|@@GzsQg3g9{Qr!G zy!#^PYLQq zmEK27@5BOjsDCn*uZ&C$a_bp`O9SI7xCyz(W%Y}laKV_K{ z_rvRZJ1Eby6W)2K%n?1+(YRLX(w&!>pbN_A>2W>Kcp6Q^HLAsXroG5~O$PmR%K~#V zUviGo!G!JaX@Y+XjQlT>*K|7yzIzX_s>6Q}GIuVQju?qiJx+=XOdau7!)aJK=oKh@ zEQG`*muTYH?qGhxkM-YelLh@XVzylmRozm^&O#Th|7;*^osEz5nrV4~FZKxeMjq!r z!PXnwBo>XQT)iw>_`i0Ab_a>Y68=5&`F{7OfiUM_r~HU{6@?qW^Jw=?)Y@zv}E(4760-Dk{`^=@q7iM_ki z(tBIDFkvs*Tq&T`nWk)b{GIT%&4AsTSA$oQGA$0;2mRNbffmyr5be+ojVGNkY)ntk z-tCB0CMp!UZY1`*Z%rHCx!~RwX+Lwf0E-O@MrR2W_kz;8QgTdEN5_Hlsd}I$w)W`>znc2Oq~%3m zmQgC@?3cmN<7!kB_)qrty>!14=SK>S$`*}_yUUt$r9JOTCrs*pUOJ;NK0Z)Gznzbv zhty$vzI-(5nAvc|g@^L?dA(U2(Mk!KiPUlX6bV#YDPUwUYdE|FuLh|n|DQfi&K|{) z#**XfQW?2kJOJ+He`M+VdQyb8smyQLM^d@8m#SZWqvXmNbS7Q82K{*)65OZKe7C81 zuNlR5mDyO`93(XC7>izE-JtxYCOYekhQ>(%x+^zAggk=$2joHTJ01CZONkIx_?;du zE1`xi7PKbMf-NV^fv_c3+;!m(c)abkc;eS=?DQN^Nn;(pKD7p8%iclU-r4xap_#_q zo{0M=7qCK_1%}k!W_51(OvunuaT29<&{b4d(zkr+KUWuLB zQ+VE&OR%@?BsZK1m(CCux!{h7b}tX}?3N=KeAANiYTU5w#%D;+S_emxpW(QTUxXFI zI*-!%`T;)oK8^PZr()(LeVmdo4i&0}U3Ct zxe}xpj9|$XBzjd1;)a)+)Nsm*qk3GTQ4{B~7;Vihzg;-8eIviIQR3PqTN&q;QexF+ z-s+e{cKVK7eJYN6eA`axE0U?;*-nWWs6_??jPZwe7#xl8MUOmF?7b--ZTH*axT-YC zZ_xw8I;P+@*IMwB`Vt;Tt3h#GC?@({1)-+~)|UMQG-Z zn%U3c*dTol|2d4a){o!~SI6=C#xqne_v6&{aq_L+hRjCk!kWPqV(`sM@$A(ixbyrl z8RST_gZB+8?b1Vjv0@EXJRy2^&X5!eCmuhe6G?H!mN>{}7!6Ge#+aJEV0uR4B#u$S zkdC8JEzSXr&za$(&J)lySL*dj+5TZ~htm+%POvz&1CJDI$vLCjG1bg?p%1P zvvwgLnvlfT7fZb7ADL`snZ!HNRNIxGPmdhL*;6JI~e$MkCxDNKg@1H86 z`im>>bnTCWq;qm$vNtvzx&sP|ZuohFHafX#V0)w=HYjZavy1Mib3qv@DyrbN(?Hn& zS)ZE3m%?flWiF`A5G}&ZS>@mZ(W}o$R{8l>P?)}zQk`dszC-?k$*2CTy3`3T{|n&9 zt8WUHvmH5N(j+!~{*d}lS;aBGj786`Pst;0Be>*sg2Ts^u*>|NkZWy;_3BD+yC-5q zUc7vLN}Y6<_n(FB$rCbt>sq0zVWRBd%ZXCoNEgn>k_@OlenqhchHv8(Of9)8XCMebIM;0 zzV&W2AL@Re8g9v{VO5Q&wJlDt`91+o>r1{HFE!Lt+KV5XB5*`N9S&?OMEilI7};$O zz6qI%1(+@GSauZJySLGZTp5(~GNHFldj&iFU6AARQ}pZq5Ht*SlYX~T&}5^)zAq)7 z>LEL}zP*Kh{|)C)DzliKcXIi(nO&lOM$Di5jvAV(rcRD1Z&O{l851ND{>lIOJtTq-{YhYyh5UiNtfO*DN zIJImHUVYFH^FQd|yCJjT_}s~OaP9<}cQ^?R4_eaXQ{JeM<1*6RWE2QHdsD|u9%)^UtO5&zc0jx8wj@-5Sd6x~UvDE0a2x4B^yAW8~k5KBNHe zGMG6jm12`!F$3e}8$TtY-;}k2-QW3=Te*wy_T^hBb4`T>C4-?bZ4w4|Y7}OlNS2;A zi)6t+B@WlK6mpy}64m!9u}YvWc>dGmNrT7HflYn5R}X&*9N3XtmPUy=3!|vsX`9qh z_7Ni14k^2v?FkEibf;H#YXseu(`oT*f4UXJWViV!otJWZ?=63b)6(lH(gGo@bRq?g zdI@2#qXi@B4#eH`xN!Z+HAt{*7h>vO3WkkE5VNn3IJRQ}6zuvWmY=ARnt2a-cHTEV6XLdlI%Nr_OFT!7M7uxmE3R>S?IkOwDz$Dr+}q!;pS$^tJ{~O?I%J_??sbM4(l&)28Jpul_sR6Bm*fi{SvWFmnLeI3&4vN9FT$Ivzd%7% zM&8|yz?CKcNX*F;U+waxo3A6OK3fjfA)Tq>kRv{Esuh}VkHl$v>tN;Vbh*ZyZm723 zpMyJ}gqlaESZnMESa|L#Ps~b%+l71haR*EE+^Ek9j#78;%1pVjwkdXa>jay}?i0-n z#=zMN3cO3Z60DazHVd#%Um^H*@9_j$0Ca*GYVmxR6%V|c}J zdwABRnu0zQ!;6w4vHtNisk`qDnGd%L=5wX@ZRJ$BWBdU!?;VGWHLb$q>2txP;h<0! zzL_kZX`W z>t7c1bFN_fMN76~xjTGFQpP*U1P2Sw;|ldEFw6Un<#JURn30MTBPWQdoz+DB5uM2J z#$9T@_lo{RnUdoMU*6ohnAF^tvPIh@4p}FsvO^hMIaP!w@!NRfux^;JYdzck@{yS< zdvHZJXkK7|XTX105d?1PhRROEu_-tX z!=>!5n$kVAco>U|$GpX3wf2}~d>j)#+yF~Ua||;{l{IePUv^{X28y{bi9Ix2D9`RB zS9SU(bGC0}+YQ}8P5A{IxpgMx)LJ$#(dW1wY24ad>hSJX<%84La$DaOg6f_I8aDes zF!PQR0^tobFR}(_Lm4V$D#+(vB2?IyC-<FBLLW`-0nw@8`txk5vttys5d)bL^jh)6hb$R z;;=2{aNyT0KKJROpr5yvhtzmb`S1Rcb4`!RMxPhGWHCb9Z6%?+`xVgdvPFDZx^7L{{XErT6mk3>7f(Nt5;3se~ot%izDye?jx^NzgHhfzzjyz;$^% zeBV?jSGQM(SgjJF{$GTA_<;hbQX55ecT3^xfM$9tF%k?e2&}%o2aGQjI3j$fU@

    tW;nV`F!e{e|^ip^;&6N^ir#Nw7FWeZBN0B;dsDX$6(42H`eaa1>L@l;hj;cD15WzE`TVx1i>r7&1JzN|;*Snffi- zqaTM`+EXCICIH7O%oe)&^n`|XJ33d@o#lq6RDQdSqAYe$seg#L$JgPvyF#J=ipM2kfz^#Qav zmZQ)td=i&>EWo{PkH~%HEjTe`xA1n|J`yq$z@|?mn{V7Cv$D$Jl$513L>SKB-^Gi& z14Y@L^}aAy$rRj&{DP!W$K^4@24aiXIJxG>W>_|HJ&0LnpyKQe2;HED%In==^Pzum zuSrAD>$jcQL<4Tz%wPqZ*QG1QUE$GF!fE>Da;|+DE1ox!`b&95@X-AZ{qa2p)e8T? z49g~Q&DqV^^Y%XS+a}#LO_)hlpRLF~Do`+d^obg0mRS7$Z-`KsnL=GYj=|2)ztX{y z1hoA#l?pb-;==WTkW*-nzGuEdZNyF(ERMy!??;2ddj||`DujO<^1;vGlrVRHXG+Q{ zq03R{B_75X>RzNRI%jgKZ?8AMhoJL!4o zTM}>ki{^<2TsqUiO!?FQ8YyPSR{DLS zjG}CRQNW87QutYL+%fkE3Fl4FeB%JY?v)Gv{4)_de$vH7RDz1JGRcd33vE(7G3DkZ zEKdFgzNfcgU7v5l#>hUXymUW2wwMm3zHVr~ySI?_t`C||oK11BKT@kq;t>xx#o-D^ zxWGl~GIg(Et1el5%<&?tJQ&JlX8Uo-1XpPswf>=Sw_LW$a{{3->1);I4*| zIQ(BU>?>G`SxWUnX^$8zzt$ZU`b)EqeK!7TRm0bTnRuf9F(kcv00mul$nd0`GVHcc zWYS=+8?asOTXTorruBh0)s55;Vl7`huqP*9%%hJ68I-Hgi38655q7&3Q$gAcapvDV zA@r>cR}4E3=CTkj%T9y5h~HG#cwSt;Dg=~Iext zZ_9=??dRWng!YavQ|8c9d@5vpFA1YEYV8m*iJti9; zjTnL{#XC`d(?wYICjw(_ieU4dr?7m(SII~ESZ?s@DfrFFlb8C*A?wa>$cPfbqH8K< z?Y#@iw=+>NbphDf7oY9BN(H(%meUh zo=Oj%HgMOPec-WkhF!zz*-t!Agx;X|LdTf?2Y#D|>YA4e7)*46_ z$_3AbkKuf!KP)X+h0A@FAhhTNuK4Q!kIJ^-&kd5VK4JuDed&p+YY)<1!`EQlpd;PU zT0;J&&H{ce62}xJ(w>Ak>hIc5^8G!d?N-D1eV_vun~&w>%wP`tJc2vEb7#k10$p#D zm}`R?;QqyZl;&@M8Gqi0Q`#)K950TfPeE6+#mpD=`eu_<|zt2nPw{Hzp z%~xe1bRx#Z*-K8-m(b=rlPzPFrCC&RI_5m0st(ySY~ck;elb`am=QqN4_}oZ+F=Hd zQx=IK%HP26-d5qXK{P}!iiK6Zq+FCi9cXA2(jBjBkkZWwzL!OUvr7Twz1IiBerw2J zf>cOTGiK*a$K(kHuju&-J?h(Wta#O=Q9eB2xp1a)6_hsZ5}b>*@%xrU;dJ43C?69A z8xNls^Yd#VI&>0ib}NO{&_phA6Tu{EGT+J~h}W~EAz9||(XT7I&$%o51kT18?Uke* z(GmaquE)Q-To!iz8N?wu{ovobDvAo(4W)hu#k0~~;OviE;8&NCV$IIqu&0kA%ZJ8- z(<*niO2{O&>?Q2Iq?J6%1oqfIl%kI0QL1=OXr2%&RMo^<{5BmA4MqOc@cyZMorXJo z_$hHE=H|=VPHWKjQO+{2lA+M0<91qEv=0o&FQm9d>EOCS0}UFpVda{9jO{lHoli)f zhON0cPRgLJJC=r7wke{@XUSdb7DEBIvShN3>JqQ~J$3jpi_1H7VzJtQ>yB=x2s?Mt zT*@WAh+PYjqn5GC(o^Esl8byuQIXpwUFC~Z%x4Ts0EO-&ZVKYAUdG zkv>oTbQTX8DzM$OJs5I5jiNStp%DLDeB!wZY6CWi?g|e{HD)3?=O(dJzuk1UsfJ%3 zuM}VHc)*)p&V-ej=UAa1{kJYHiX(z%$18Nncqy;_1D zCI?Y)XgZqcT_dYYgYe4jc(Qw*4e#%z3Kk)OV7oIKQms}9M;B}X*Qv*8#`q$5_ehgZ z1RjD#mR-0lTm^1zRAS}hs=`ylAslYG81yxV^Q{y05W1o#=N;VzAM?-AbCvyK;nRgQ zsoymk{@-e{-w{U3r0>LHaVAtty$0p$L(%ZmU~<;^1Pbd;lwH0mP{jAq!o`y|oM}G} z99l#8#yCBEQIg2l>Ls>sk2IbhmyR<&E$8GzThMv+9U43$1ot2DhNC6M7@XjUUWwh{ ziccY)kUBesQ}1HiPw5P6@Dl&Y_i@v!TX@fYC+qkZXSOs?6+cTazSr0p|!ZESb6 zyraeaa;snqoH1Z3evv-uTqleS1*Zi59wt`f;6$+Zv_bXPrz)n8_ai^O1%%xgx&uC zsJihKlpgL!Zw{%VcaAZfkMDqQ9x~`;8Ntu}Q*h4D7;^JW!y&^y(|U0wx(ki;L;V%3 z(pgP)9=hN=<)%!*tw5%=H&|$1l|thW2K%wr8CRCD2nxv8@)!l0gNv4n_ zNizG9WQZhWN|Q86k|aq8A*t?OTO~vyNs=fcr6`qz5R&hFe?hmp=bU}kdf(^4?`Q0| znw}gte4fECSUo|dm(RIc!#z@?e3N(2{RYW*4Ec(%GO)d|6pFpZis$$DgM{`WjHtN< zd&7=kQ&AaAox2{3tX!z-0D*~99!=GPwvh*4U8v0Q0N60$AZ$))B*jJBMOM#3&^=%f zSlVC1>X+6~JU)=^?)pmN6JCq&Sxte+%QZMQU=<8|`v)`TSh36DE8#%#Q=IH@fL5z0 z@&{!xH0hZVzak|?TT*O!IsxYTX%T8fCbSqFN~k%s8kdfamPDyaQy%=ZXcZ1dhiY(+~NGc$^m`L=`U z_F!n4(?h~T27<);p*9adV6y^_pzo{#2L zyJPu1?KtMR(}lYTpU=G|N$7h?P*YMvF1;=R$<;1ke*Fb_ZzVA3(=bYGzkAXu*X}9ZFICt(Jm<~6@nNQk;-)%g9msA1=>kshY@(QA$y^l}J zdW^HU8IJ`G9#XX#v*Yv7?iGV2rYFg#9vxb6V-Twr#}P*m&9#5CSg`?WVV87}3=42cfn>oo=(4hJEq65Zb3eTqhsF(imB~ zK`9fL@n8PH>if`7@!l9tRLM>9Tt1A}K-(5Lf=ZETU?FEk9e>X0Se+RBJ4 z?b6|uHqF@d1o4k%4eDYts&Bi7FNN8?{%i$t(n>Y_)Q|{4iSq#q^FWdog147HsrLH~ zeg;)+*8Cn&`MsUpnCJ%j=F`RLF0MAIjwWnLhYKc;dnIn?1voD47?kP<;cnGy5Z@Ck zy10BkX(^8+SA`7NGJ%0TWr~eo%2At_diXA` z6*OJGu&fWSi1yNP=z3p^Ot^doHQkQF%poH5lK2N+8()#Euk9eWL<5rMHIY?%l{U%O z3(dPT+BYMHjrGmnr1C3!J}FHpi<9OpCKIT{lL2aiAEb+Wb*=v@XWMZEQ@L zCE6uBmTMb~gx@jKxclND(2mGNGlz5VHNp~$)t`V}2IWgS??cOm3*2977bG}c`Mc5{t$D4 zAr)+9DqiJU%D!(%!2E;|l%`X-?ACNt+jo@DyDD_9(TX$aTA_P6M*KwBk96)l1GknR zD-DAiZYexOXYmr%N1&-hFB6Qyn2T#p~ zGmva0lWIxFBdSIC-DVAZwhO`aodf7z_jBy?y>T?Z=`emcv4u*-+i~YxVKk%MjR#EJ zO^b35;GOwv>G}l=!0X2ZntLCiFYp(vNVy3P^X`eOh38t1RS|a1uVE8+-NcdM*RbmT zJ1qVQ_(NwT&sW$B?#WL4mq4C)q3FXEHX?xce z6ouMSagPW7G}EQq!)9WIZ6CC@48!(%4+ky`q&AxS0jUkKj|;M(ps5;DO>L%r5o}|59)c{>_=kxBWJxy#}Lj@?ljPk5cU8 zM^*6LHVyR^TkxG(8s-8R7&YM!)z{AhY~NDOR9 zSEoHy!DwSv3+iFgywI+NB)n4)_8i{m_wg3)T~vb_ZjZ3##YapzF%>UFeZZEp+TbZ` z&eax5!hO*Oo-{fH`vw{EsRO0CW^)$yoOy>@jnB~Y`Ze^uKzOprL)Ni&2>;iS2h2w3 zH=cH)t`0(0HR&LozA=)z40EN4Qo{A~yapbB-!7bU=E0+vQnY)}IwE!d0n<7fgKyF< z;h&hvJS(Y^E#DH(9h#A}Eso&p)rZ01UK1W#aFA^Bh(p^lWW7q#_`E6<9gv6)-;2lc zlM;0F1jOHhlUAx)npdlnYSDH(^2Pt-AUMh>R^{SPdr{bLR% z45@rj7UU0fruSP$QK@oGT2(1e>uNudapv`4|0)8#x?^Bj+8SXuqrrTNr5IJa$v%t@ zV@2H)AeZ&9jl%zRQeqN5@wA|AHq*JuvM2CsLIx+kS25b*4$n|n$&J#I`J_kVxrFI2 z^qiW2BNOuB$H_$8{M(!^i61GrZu+6<`h@>G(_m%7PsBi>zoQ_5hJ~Kgbg96yWAkb3 zlTq}vk_&{vI)2Oq!{M+~ry5BYM3#T*xQ>#Y;S6d><310)}H1pZsm1jU=S#$1(Kzj&%KN!xZFM{q}LXq%; z0d)=NAa#$tY4XyaOmnFo{Z?3v!(8&f)vO!a6WT!LTN<8n{{?QFDK?!)xGo=t+13vs z&l#~j*mkIpL z=ZzR`p30B9nUk?nVcb&v2)X@k7+)rON?PI@aFcThF<S&Ap;FdMk-0$cx9yMYoHV$w`mGBtiAL0&nrXA#N@lIHk>O$J>B*2v!0N>9g;jL zyIH&-aRag~NHkPdkaoG#utIVyY|2Og2g6E{^A{~>KlP3|HjM(cV=vf~bva<4@SFHo ze}-+pg?r-IT(}@)oOJJ;COePo(2q+kak0=BZ+!g)EB%b<*}mCaC*nGI4RzrAxg@O3 zdykpN97)C|Sq$4*%Vaflz*BD}PPa&g;r|(9^sdt+e&7_`yw4R+n+nfBw_8>U&K`WI z^aBX|JyGbkK7uP})9}^qI1jyZZ0)Z-*n90RMps2xF*PlnE_tj+**xE!sOz?*vDf6LNQX6cy zoCK@0=1e}g5wu<0F?iB77<8o(8x;%1sdEJP+tu?pQmO>+-a3w|^?$??henIfwoL)! ztaV^BXdi5_dQYzX+XP?LuVT4470$g@;!4`D;HS+stmJv%#+%usso~63K8VTuk>tGx zlvzlA8#ek&kbnLqtXH#L9H2NHXsj@E5zglwx`}8dGaC#W`iXBu8Y|qrg!+Gu!3u*o zI@B!^1CGw5quVI{dmIK|AD4*k{W&hi+#{sqbske66N>L32W4XCay`1@g9Z=K`wj*UgZbEX-Qe)tQY70VPmAOX>6*czAlIQl zi%vg4iA{fVzI_q04(GPwI`wV*Me!oMX}O3y#P~8U^mpac29qK~~Xn|>Y)72Z_-#JZUM88=FSD>bF6~O%1AVBLdg&E;P!m8Mp1pgK~?dJWzceModxR zXGW|?iTZt_L9zuz?sfp+jZmnQ90RTKLKjXx24vq|f^~+J8pN)Fis~73$a!@fm7M?~ zz10}pdCEFz#U-p{3E(YsnkW5qqM_T5p=FIbHN2jMDJ5~>;I@WrK zZVB^;tvqMwA#j_%fiE+RfZw-0_+@bgaN~u%Ua=oiuKmZg$zPbhdp^H6rV=uJl=-fH zS@;oThrf-}&_#U<9El&uwJVLNqVX3rY}`(3bH!+08cEYO3vX~WQFK}VCvq&wk2XKZ zfKdIVwChYXWY+AZ`cGrY%vljs{e%~(d!|Z16^TVYr8n`A>nZFpI?fGljpinYOL=dy z7VoymC6pFr3u6X8AK99#VF5$?s~Sbbvy z`!8<@?tB~%WnKmB%VbF^4{MMOZU?7`J9ucVCkdX}kD4P3@l~WQZxEPgt?33l!O;V! z+#JLY705yO_Md1uREDMnbmQ6A6RAtfZ6V)0k+uc=5f?CRs{KKVP6{;zTg7G6rK}RY z&DYTpgEe^H>AAEg@h)Dive zZPEzn8Cr=y-&KhM-1nh&uo5x$v%vd#LWg`+E)!zoo5Id9k3acM{z)V>&3mGVI(A*=TBgvXuB=v*q z!kgIlrxR{@Xycpm1>hd}kcLoE%5}rC>Bwc?h6~P zR72++M_5rZ81*f8uZ>w+dgm;gG43w(7$(DE znV;m=9%;H)LxHWkHH=zrU5vxBo1!1m3jk#o&XEYi<^d-Ag$Kotoe~9{Zj7bSI__kB&ta^Vuj4SJA6+*6d@(E;du9no* zXp+b!DG>_)%z({?iujpdfZm1Dc(nKp*fx$Jb|*$smCs|vnI(ct^uq}J`hEsIZF3Q` zE(6ud8Ol{Qj-Z~>wmhrpB_syQ^FX_CAQgIqX+JT>bybE?w`>s4xNggo5*KsXGf7yn zdp6&vG!aW8ZVTR|T@c=|n)Q!YqV4_-Eal1@kiT>QcV9e9YRs17h^qf^(@w@zz8ppQ zrVrxuk9U}a1JBE_Z~@N&|3vP?#jv;cvskZ13o7#`qomF#+`(6(LFpcBoBo>B)r@0p zlDdR?NyFZdrQq7I4HWg8LCgCXSo|=e{h9<6MFw=FT?RWmi$V9{!zeHMNK7&sFyN9B z+t;DUI~NC_+M{=vuGfODo4T3p92p+C-xZvGbYO}~6x>ugf%b|*w$kG|TXA?9B#ym6 zCZ9`!w}aClak41{mk$y8d%mniT8j?eG#4e(LZLlwJU*RtgP9vuF}HQGXdkSM{#(oN z$)QMewrIl0^S=1ZGy^NX4G}H7x(w5o2g77_7aTP2DCC?UgN4%*$ybA!tnb7Wj1l&C z?|)vvp0)SLxL;wnq}0Js zD-lVO9}+w(jwZ>mE$H*)t+;KNBJWz`!c+#y@MW!U8G{u3bJY^7s%4=wZZP|?T9!^% z+6Vvsj-*N6KjD?|ZvMNb1ty$43KN=);E0a`sO|sFn(OxwO+#Ot<$I3}v)9L=nT7a4 z^;ovbLzEzVC-xd25+!Yo!3CFOz*2A)N$b4t}&?{%i}rxfch$zbtp6<%JT3Qg~hBK6OQp?2jYet!(~519_>Z|{qIeLoTXf+AMY zUPK0-(*jKcSrR350*Y0LXoHm`U8;G3_)Y%^a3leImmoZpZ-;1UOE|Xt3Y4v`5UY=i zA+S9X)1E}L(5ZvD<^>&${yu>_`8;Q$%-MX^$m62oJs!Mxt}L^EXU=oxOvRd^=WzQN zX|D5G4mA76@qHN#M6V_Ih0`}+kcS4g?~8*~AF@PwDUuK{Zw^=)cZ!m>h+)>KG352z zW(ZDo0ppdgVbd4kz7l)^WcQiSKU))^;;RSE7_k#fRxPB#S{ua+J7uX^MG2}aq!0rk zci3_<2_4rD<_<##^IoGXXzD63iD&G@^apZ$#H54l*8K+b_hb-svlp|byVB4OdHy|j zJ1r1)l4|qJsaJU}n=P3HFUMaXXJ_`4Ma~lh4wf{_3U!3dd1vqwCPVu4ZXC2hfe!9T z!3TTI>AAs6*q~4is*+O5Hmp4XF=JCOK&6fyS^f`Ce7S+Tr*-+R+ODRtM^hHh@aFB-J!k zLV6PDJzFVmrqBs-!dy2n?*VInc?8RDRN`gZXl5(F9g8Z%;X=_fv679zPR>5bjN-yT zNizrSdem{DLO1?*Ns^mAZpGmr)wrFB;5m`XMWtXHZ0vf)qUwqUB7|_8`+5@ zerMaf&^!o5cb38KxxeARC!sJ)atsYzF%-Z+Mqud4z~$>Hr0i}5%;_q_dqv}Doc%ZK zRoW)Z4>zNp;zpWqZW1=`97;_NB%p(>lg)|GwwSDZ9Id9F$QwLq5dW+k0_C@bo%*i# z5H~5G=h+Ipk;ZpiQQ#V>(?|UFm`+G4-oh()$B2hF9mG{zE6`^|k7(fiN}PIuz@isl~wc%2<3p{iOKu^w~V**$I4Hyq2f#Ou@YmhI0wc z6{51%ZnRob2vzgPa?8ti;Z2YyA6dT&RRqs7%*PR0L;d(!q ztA}Av?sTX=P>AUsSvIbI7jW)aP3Gsi2Rm;ZBCeVW=(pgKNH^AuO;GZ{Wr_0S^}gHK zF}RbAF#m~*H@Ji0AZ2dr&%rZWk82H60DelJ=f4d>XYT<#*>(+1NiyYmB z%dl_SF-T4uMhll+VFr7o=#RJAEa`bR=zA8556%!nclKCjYSsfU-mFILvJGJF^aqcs zJK#WD8ZYpPSonv z50MA93huvQprZVMeQE<3b6bZWZpa3yw~M%p&@0QmL->}L)2UmiArESBqEUm4`3vjs z@JLOISJ?h0Y6qfFrDh~d_!~~<#UB7ipD4&ZVFO=pzk|G?m28_wHyFx1MYq~Nuu^Qm zx2+sWx4fOiXN?&v%*saa!paJ0oBM_7xBepmUxJ{>E(Rvdi-t>I8{yWNYSM5bAKsn* z#&m{EBDTk`V#lXeJkfXzH_TkbB}(^+rhA3(U9+Bp#EAJ^^MMI9^EBf8rXua%yM%uZ z+z2k7(Sq0Dohaq|R-WazKzxX{;o2GzcKeNnU*=2DYwB{LuYZZPww$Al+v`Pr<4)7` z&!J+wfuU65-9ILKcq=t+zK=QHt7u0p;qj&e>C^CG+ho9G@)OyJW2v}r_AJIPIoiuVHVt? zIe`tGsKoUz+l!UhR6h0N5?E{z$n86aQ{4o69&_J|KKmPt@fuFFG<632w=4x_Tj)?V zJ&M8IJL!=;PSu`zV40lf5GU-S?o)F^tV=cmjq$bBM_o1G2E?5^S-`#I1(mFl%HfYV@bFC$Inu znrl%qwv2>7?8lFlF7W$c9Ny85CB+ggtotBmO2(SF`I0>L8z*B$#y& zwihhh-jXWIv24Vb1-KRaSds8Px>0{5&KuN6uJuXsB?^(SV84j(I2-|y9+jA3J{%%? zdr08}PgbrfMMZBOvaFASn>9`eO1;Oz;bd8wzQ9GiB2~z^@LtjCpR-Aw#0pq#kdLOS z4e&|13{x{p;fPcq(og-wSuY#+PL;#}#|C_^QOUBOn`2&EA{!kw0RHP4jj3Z4;Y#)q zoT$>o6kp}wmW4l2DJC3??uvMPGeKuZX&(FHiRh-rVv_6V0osCdQss~YRN6Su1_OWg z=;|C={6vvW2Mg*D(U#Y~${W%Pj-#K4GfrHi%i}sWVw&n;zJ6p1ndlS9+TjLt7M+Bd z@<8+m1X-=WT^gh zd+6NJ4c}_Sp#QO)jCgwsQc~`s{pVoFE7#(lTTRK03}r6rdQ4XS6=O)wSxA_xfJ`vJkZrBX8*2C z1I?~> zpq-k~0o|Bwvp@Zi;An6JzvWAXzY!9BG$PH!&*PLOA#5oKYxe{-DEywQ* z597Op!+6&^gxuPApFP}h2TDE4NvQC7-#SFVtB*49ZfPk<412~x&ecJ?bswAOn+Bc} z<5}0ZX5#nifVeoVNo=k?77{+0u>;jt!78GFJ$}0j>fMJ5pFxZD1QoMqE(1_AbuqbL znn+r53y9NZSvYWRGI`9i(Ji`@)V}xN_b$eQ`;j?3)%PaEDhfR)E1@@dw3i)!^%*(4 zNnEPj`EAzAAovob{T#U!Mx2-l)+4t#FaPsTO^ykR?iUI0C~@R>J2e0nGR4 zO4?;}0`Fg4E;tS!pryhq$aPFXeeDOLnQ{G0&!mERPP@nE9Jj=Edg-|E>H++a@(~js zJVU43s%SUPm~XbKgcnB$&uas^;FA*PI+PwwEW&IlD?0LHEZ$btq4`HQ;oskdK+0C) zi_7t3^+*Y{wEo2$r(A{mEDECwU1|08YBYQ{jXrLAi8^n~A-Vl5DqemBT17&4QdgZW z96t)38cJdM{3k3StpFcxJ4Pn^1@lug%gC5W1~$l4iFZy`Lw!S8TvhImpX=X~ zfYSwN(GdarvrgcD+oR!Nni_ULQ39)DNvu#mkEJB!kbLDWm_6e?3=;Tx&R#R=s)O^z z=V~qJoC^ZiziJ1(X%lu2Fo4lbO>jAli)~lG1lxnMBsKm#6e^~Rlc)b7;l?4%II)I# z7KO9#LN3QxegaOMBf)L#DsX}Hc<#~v6JLdm=Q&f3qGX92&&ug0%7TMg#`r!&)$PS= zq32;o?{f6-PykiOfe@b%M>5~(Q5CHf;{M|CbjRpXSo~=KHMF(CoLkpHVx}bVdU^*| zROLba_%K*k{sE>P(#ImHjjN>MNcffm?0JCT*--vUG*0J}CF4fH ze^(qxbBPKpQ{76+ELQ{73?35zJ%bjItM?+<(eWK@iCi$-tGtV;eRL2q+;_-~i@(rh_ZD%g&NO~f@(Nz_ z2;>T}-8kyqQT|9OA4|8!^PPQXuyTeG-~Z+%rX4kciQ@`zLy`gAVI&g!yppFq25aEe z(QcTy;uMsNY-pEhJ-GdzO?Qu#r?PFbRC>{SD7MKV$Nw3Vpu_HX>gajg@*o5aVmITc zpmS_tl@7CC=mK@GAF$5H1yJ(5g*8eDeedy(#B!Q6u6lIY=31)(2DI$MwlzTJ9y*T6 zX>kx)v6jUzI|MN+7QzyD&NMYzw~>U_DBSpf6p+T#|xM% zmB7@bi?}ZR7*710kIIp8=k=za??zb_SZ65Oyb04k5qgO|w{XH8YCmkcMXjWxjy4t8{ z`e0*KW*->tHNE?rf^+#3tlzzBBpG1 z;RoB2Vd{#heEG6r^!$!9DAQ67g_{Ld>E;jQ{})?g*A0={H(#2;mNLz>;dD>ZMtt=v zm)L6VM7t5+*{Y_+qPi)_9=2M*5b3`xN-c(HL=3=8c`f*Cc~=yvT@KT4^b;;w0GU>` zB-}_J+6opz&;CiGHlG(DU$IlP+HW&VDXAydu^RQ0Zi&fWcV7RpA1BR~;XPSfd3^bQ zup@pmPZ3y74O*XYZ|xS)+`EL>d|ZxC^MtTM!wGh+<|VOSvK2fM8d*VEJ1HA@kbRps z6O)G@f}sU_ae|cu-Ijfujh-b#&$@(*HqHA3R!+I{rL&;aSee4}dGz@A z0}#~VOK15Oi~CN<(a68jEMWd;vij{Ian<8x%qBm8+27E@WfD4K*}c{1dZ&Zji5$b9 zFR=iF{RTX|)R6?c-@waejVyMZIkFic%qQVE%P}|x54*>J(#%n`@I^5!-aU#g{p1Qi zQU#AuYX(~(j)P3OCT5tuj?C`!W+n-zk59AFoY~E=A&`tt05=vO=sH zI*=BJd_@lreVX-Ei`(UnplQA%c<9L8Am!GFIloq+lh!p%Xivu>p^`YhKahR3$RImz zrxO+LlVEFqHcw?lGZbibvs6(HsCn68{Dc=U6z%Ywg^qB%+gHKePA@iK>1UX>M;5bfPUAuZn4=BHGY}A^t0V3^T(e z9q-uJ`w^lMdjKQ`B#6uk{K3sx;D&8C2lW>kd`HVn`1(MDcbi3ts{ii9n)ff!V%`?m zYBPi9q&CCwOV0dhUkAkd=y7eMILP{viX&$qAi?r7d5!lyN$X@8;9aM|bX+8;n|Ht{ zeHEHoUJvn?r%~E88xD2LQ2XI_!d|$P?7eUrtM1J}+o&-p<$oD3R7;>oTN}!R_+!wt z>-Z_!3ES&BnQ8SDbkC6{lGbtPq3*^0uK0zoTUX!&`;ol+_x-$+V;#6ecO4k+ROM50 zRp=aLVaKtr0n!uPpiuc59C0;xp@p z!R~`&;p$Fz7~Rqi_nn?Xrk*t2c1oV^RQ&`)GCqRexGM0rc7P!UPN1dtnf(qHe1Ela zJXIe(MPz1O|(^{_gu{&^HMjM$m&po$+?10Ifb_2HA?Lk}1n0UpPS9)Ub?UA5= zvL3Axzl$nr@8bMbieVRzMCa>i3 z7jj{>)mUDFoorXFA3l%zi|O|$1pgSs^_@#0TiDS)w`zrvDkdoYt44RLb0%wQPxsv2 z%2IxApcVD1Y|nB>!Jqw{we3#^*@yzMY~eHvhN+Tmz7^P&8HGg`%Y{thdFGrr z0uv=yv!fUfh2wpNu6GxFsgmI;v(CT{MKgXmLjeEwJrkTn`S2xYI#a%-O6}K`i_$+` zhif^n7)czc515PWCf(J97!-~dXbn?HM zVENjYPMSLzbF-pp^blcw`eY|<4w@{?CH3h8P=+ zRXh#Xj{m|6gO1|_!!;PaH;=g`#G)|1fnRf;2tA}3v@t<~Pe@rxLk6pJgGH}kR*{f{ zxl=Fp{91&;b~nf_`#zRFr4dX9Zy|#h2y^FcPvN=QOA==3L1CC5Dp`-CjSe@_(2T-;$<7&yZLz zW)XI&Xq!D8-^)zJSEI&)-=9J3#~2ejcl1v3c>HcUIkAnnF0!G8YWKn6v7^|%!+@?y zm*qaL2DJ2=8lQ5Z8g8BrM!B9b@bYa3*|+EnS#U()P(EKr;(P1hr*4T@_0TFPzif|l z_84Nyy(&E0%yGyjOaApzGzQChav!Tj?4G0tcdk+;p}j-+^Q$U&9i`CAxdro_k3e5| zJ!*Tlz^b_u@$Tk9be3o!OZeLh!Tyi)Qa4J`FyY>`ISJ_9wjU7o)`ZRwhS60#4bI=K z2Z;x_tbZ5HAbxuK?A;_^EV}W7Tq`_jyQ9ZsK}b&$mxL~@%ugojb9ELO4{7& z*;V2-K*;o%iP@?#3jAShGy6M8i`%+nij{;e{Ncn4Y)NOyVeB)A>fmN$9|z zdP&-sTL`zxbZOD>QYaMd1J^V$M4uUncZa4!=as7%zRn%gB|oBe)?~7*=Lcr)31sev z1lD)V8@8-RgaN9Cgl(OHH!k@?SBMhEJWv3WwI@kotvX6A8wd6yEO1Ni0w`9D%w1h7 zhCQx2cqQ`=9Gg0vPbk-idw14wBd;kK>tVp#jvl}(BmD5XeLstQRKwCuE|cJZyW-+2 z!p^j00+hdf4HYR`wCQmSIGg)Ym7E|VeRBzQFp99*nPNw$b$MgurIB=?qYl6Q-!a%a zZ#2)=+kjplOmWqFWxiByE8LrA#_fOZ1Kml3x!>9vqUjrlR*L7u8OCN<6S;}imCwTS zsitsHGaMf-F{Ag&*J92!Kk8lQ%s%@W(l7P#|FOd)1+Dsv*0r^aUh-*oyVu zJQ{XA7+|SES?E_*=k}ZHW9)8$nGXtk{WF5IvxEv^B?Ui+0 z_vT!|1#iK7XG{^ZMYjZhfD5EsZf3nbMlgC7g)E&}OuHiu?A6a>VeJk0H&2P%J}-du zhl+etaS}wGI);8Xku2SlAYMMa_$1d0-obeRs^6^?+ zvFigkeHh7qF8TwW9tCKrqDVu(%s`17<=~LxEuN^?Neo|K2Tw_RJUPIGl8Z;sLtza4 z5k44Gg;{upWhQHzUIag;yJ4S02vqLehZhbVApMWdp{vy~Mmptq(9Q_5^W#81*}xFA zc9r1cZY5mu;v{Y|`ibwWGSMjJ4?4}Bi#OLC$2#X^Xv^`%rnPo7&LA11&xz{Xj+n3AfgTlt%TDkNyJjUoXVfK_T-^X>+4-dU)>lYsuqM9_-UZ)N(NMQ~ z6sWHk*oQ|Z;39P)1FxybD^v~Wl5z{)sHRNU=KMy(!56{r>k(WMK885@ZN?ZY;e9TB zAet2mxt;8ER+tO8b^SF|>DLp7{8rb||J~-C!k$#W*!+7DyHgeyr$n2uiXN zeBA@+%C5Qm)@enWB4y4E0zSh)6K^zZ$bs-ZPl>RQf#GY1LE~yoma-$ARI9hJYOg+W z>s~tBSspI1h*d~KBEtS{2SHQ41qNAt0pH4jH1%dDOwy=@x2IwtD>sbT?zAR0yT{>? zz}IZ{J~Nbz3B}&=x7p_0f2bR<8nyCfaOa2|94pKu6p!o>xY5&i@i==M@e&~my(I$T z;!hK@?J9h(ZG<1cIa%&&O`}TJ3muqQlo#E_xsmELTdfQi3SL3`Jz41aE1l7O$|$;c z3g_(pM-qZ>2y+V&B<8rF`@;c5D(4?5e)&Gn{pm%)CldrFqpiSrLOqNcdRRQ&I2s&M z$3t?f1)Cq94;K%_poEqO;e(ygGyXJA-I77p-AO`Tvkg83sWGqWeGuF{lC4M|57h$8 zXU9xtXal%`aBun#Or>DgG{r^?fIbVVmfXK_o+pBu8f7%|VWn{|9og-|ejV1SKddI{WCVVP& z#R1lu{OOEixH0Pzw*C|N-Y?6ET!{$E9@l}tQ8Gm93p@5b(bmH^Zh^wBX&6*!3Lgyj z;M}>fAo;C@tnZhhLE$%HYxPhXc%c?vLKYwSHemS=e?@wMi{ z{`t^fwEEDUx8i39>x|5X`d?{~)T&O8HB~~#yd%StXHOFwtX1U(<+a2+!3X1RYk-MdC0URe z4ABDl?(Cv+knq=_#x5z~TDge^-;HHaj~CEe->WdlqzTNfeZb=WeWJ*NLYLtbVyLt) zW^yCGPooa!Rn6kFBjos^NdjXmDi_&tin}TZTgzr>OBY*{@Y;b znmO<`qKkAI+rvp8Rjg2418G7ia8FhexE?nb_qm*h#7SRC;LGtaDpL-UkDL(mKN2wQ zv>$3;GlO3%vhl~9a0ve{#=a|e!OZFe?vfOE8-07R(fv)}S7VJYuBlLIy&`O% zu1JrJ*XJ!=D_~ffHCMep1z)?C;OQ`d59VM7#n<)u1aAdudb1EC0|rvR=I`ReyN^P? zMgeI#{ez_B%R%wKosf~P49`|wffhEMy!cr~((a#RJ+FIN)x788vYUlWCc+SkPkGt2 zoOJ`kWkIC->r-NN>kO;A-$1bB5IUO(^T&mN8bTja!@is}%~=5BkFAGFvm92rZ7Mu{ zI2&aoEy#9X3rw7IfXUk?U~G;7x!YfhWY1jK>wg2|nk0Z6tzm~s1YdVeD|wtMi92N6 z!82APFT?v1dFvyBlSkrl_phfU<n1+iXG&f*$YJRb z1oNY|ByGVf2+VpZn!Yv-5=FEg7Q^=IC*S(WjsbnZgg^)@T4br4iz5D%m zzMbwi;8RP=VHeO z;y2$MoIVZF#y<}14f3!_s{=wO#be+6U0^>woYw?zhfs#!?GFkGMy+cwoSF*4T1&Cc zeu_Yt&l{^5@&RkBt-z%jVoUukD9`zZdtP3Gh}HdgcYYWMDZ1gP*$t4HV}i_@9{AE0 zg~G{hU`S43-J%)T=@idyE{jLQZX;l$$Kgugxr3>~bhlj^xY&JT*%Tqr?X@M*^E}Wd z!~l*i%}4DeABnd5Q!4v)GVL%QM}#UK6+_V;JVGBb$Fg{Di;)((yJeCPxq4iEe5~N> z^DaE-HCCYb^%C#mv4+fX@r7th(G5xw+# zSp7VOo!7Jv&D2&xC-;`F4iy#zWNgGBc@2TKc@Sz3EEH@|`wyE{cM8_1=}`Nj<$|7g z5j1<+3Fp@vWB%?cws~<1-F}+yg&-CDKD2-v9o~o{PZT)s zHLA2Njqd~Ev!VQ;1h;$fSiy`_hTN3UKhXMCp34|)hiHQ~qW|MDpPy$aID4cBro2`Y zoGF_IC#pBVkm>|XeTogZbp+A(Cv$OuH+b&DI$odYMm^RJGXFhS zK{MC&)Ky~^3cUPKV%GvZcDWh#%P-TwPi0sutpOA5pHOPB2<+nxKPAUOigH@$(v83-Ok%KrCMxY_-Ww~EzI7?oGUhhf{Vfw8nTf(GXdmp}aB-C1*OK$$Am4QDiZf>-HWKZP#%_6Z~+FJ3oVS z`Alj)N#l#J?;z>gW1{FHC2;qaf<)y=D0wPMe43*4vK2ltK3koO$>2(2*)IV$HFK!} zd?F!fQn>uF1C8o17M06J!fcoq_6L*9T!S~~X z_{D1&-qh=0OVl!ORy+tM1es)>rPTjpHr*B`B6ztslZr2D1RuwXH0y2>X-l!9ucvoX zQ`1M3N_Wx5G4L=72gZSJg8nQkUMCvaCcaXw#@#TVFvIRgC90kb|3h+vErQn2&DxEN3 zC1{hKhDO#Bf(z!msJ!JEQ#|&fis)~-L03ji zVXQJQ!2e;TdukK~YBimt)O@O-c|Xq`JyZvgMsaYe!2!-xn8E1IX!yBa1s)DN@SMFg zGBhWbwfVb<>9di=(7?+?(y#^(7hi@r!Bp;u+;`Y@M2TzO-~(g%Jzbo=2c57c9=G!R zgVA9ZoSBe`ws%udJZ1~_pYTSZ1Yg>Qy2|Bd}HYH7y=(#^b*PI7u!5S8ljMw>yr9@*N*Z zQ(F#f-@P10uZKgogfWD_84vOy^I>P+09iNnILItp1ku?U5c%%{q;7f+X2C4nZ4(uw zi|6rs?pcCoe7$LMTuESbr;D5~SO^^+T~v9_2(Hlyz>|N^a=+ZJq4vB4ZghSx?)VtN zNhu3)v(vOW4a>*aGQWXZsym?LBN?8dHIXIJ za_^s-LF98`t}v~L@tsnO`7y_+`pY2P)xD2Mx^>dZO`cHbv6d2tM)3NRMSH$If%KFY zME3R;5~n*)aBM(|^Yn-pWW09fmafba>}}QLX7c@Vy=p!Ex=u=ZBux$DQK_3+GH zHO9_qH&}Q~LUogLJ|AEQhA#ff4Al{|w=ct{Ef??`k>IQ?22fRe5K~`m;h9D^amK^t zuz!gW8YsAe$`o@b5nfB{_jiD)-WYr~b}giC8_UQfL}SOl1K=zp&ZUhMLK56Y>s0|D zml;H57cOL~9~eNv@HjjxV4jPP%!=~1n``znU^ad;Orx?DHS5s zsp4!WzccESc!*=m^_^#?&wFibun zB(U*62y(oh)~NXfjod#Uj_d^(jA4Tr=JUET>*zQ+swpVfX`HZ?YB)t)7u&mjEbA za)H(pD|j|v4b+w&rizUpK>b@2jeLvnv~>}bpLQgjW^M4o@eHo)tAfO3)!4FtgRe*L z;_>sX@as(py7|Vzd$}uU_$81W=XuET$|#*BQRmqjG32s9NX@1f?0F5 zQEl`&C~jNJ?pgB|{+f%!+lLWwQ*j2oTw@DYlZQxA*A{T<>ZUS*a$xi3Hl|Bnr44f_ z4rX*=o8%*QZJiA#T^YtR6VGyotJF@fC64XzfiW@Rk zQ}yB%WUEagx%sRdrbcWaCCf|Uhfot6BAG|3ze>;>r3X=QY6%_o7{MLM`|t`FDa;T1bUR*KScxBuYG@wddJ>Nqn~uM|$j#W8ovRRwYN1>`}m zfuJQp94bB*fUkKGsZ(OnMT75sqD;Bh{k&etT9JDlV2mBZLAaxBDgBr?2d`{>PP}Dx zX^X@G&^(&}-nX-fn3$Nra4-lZwC=(3MXjh-@ggy*$$0QAPEPYx- zckRtV4}SKlc_;ww4zsXZMUQ9&8i1S-&r@t#fZle$pzZ?ix2G&Px=n&jdy0so-D7Yz zx=a%mhQQCod9*tIsea3w^%TbbrqzdY^&CI+Q*AL(7<`q*`)aR4nT9ZmRQAJi%hPyt zM<#?{$wiNy(;4rLML4_WBZ}Cw7@fM2OEtGf$H&&3jMqbQ<9ZW*I+6otw*l0qJ%WEz z6$ArA_h5V;KQDUc1D>vv!Og9Wq|`5_x*K*D`)ALj{yx*ORR0UjGIzie>(Ar6y(LsW zJpyGDYl`11meQcKJod==I-;Weo|$&j2bR5Z0EG=dp?F0GG+mx9NVwq)?vpwpQntA` zLs*2YGBw56hY^^Ow;r8l6k+0^Hs-I4LnVs?7&AT#FC4#u;wQRMF7*4(8xDL4< z)%2&(Us%f~!-AS9keJW}f~<{1#CJ8!XZZg;&w^D>HinOX9?-?l${=q9P^t7?rq7!Fa^~BbeY#caq8<#j0(#1D4xsG~W zcxmduk;WKUoodS6`}&tGpOTARzvHO*L2bytFGGA1Kf|%+0pjN|LGVpo8|ST25F{=d z!5PbE3kp*I;`i73g8W_^Jhnqike=xQOS?n`vXR09`^fbW$+dz1Twl5_Z4&fO-i4Nr zF0#M83UTP)AQ|NMatCXpVB5RNoab*(_?Yw!e_a|RF?qYO;om>v)In*&!8I^>R}!UC zVvu`VlO9^JjV+n^QD5SO240_PK)s$8V~1A{J@Eb|cFg-lhsTB@z4?kd9%73(X)mLb z8zzB5sV;E(vanWX7~H;2BF*n63QXx98gXrcV7qBF&94^{)aee=x9@_%N5~Ze%q96; zpLMAF;}HgZUQ1<^%TRpw6=sFp5j44WMSqo$1BySFCY9SQaPxu$V)tj5E;wgFRIc6A z=V8EfsDFT%o%Ltbn)Vazt}_s8sElx4S`hi^0`Bf!DmYUUiB36l1hZ7PV&9cry!Y7# z=h)fc_b-2`qC_A1&Uj7c=g#KVe7OlD3ijOm+q}NS<1pv$T>}t4le-)g4{C`nblZi? zAQpEO40ig#rj(Dc>ESYx{{A1h3a!9%Rky)s#a@h$NCfZZ0(wj5AyoIxBH;yN1S)mE z^?Rn(!`K<>bl_(-iTxH-EHyF(|IW{$_CL(=*5zw>+*luJ=>(24PAFIZ3xjutL%cWWw3+k6>b92VB;8Uhb zAH48jbnFM=^rwsTjP)NFQ^DtbNJ>H8ohR5maSyK3nZWtvEys=vv$?p*+rbOwa6)cU zf-zhV&J`9Bod0u)-fXvnpgwK>9tx!zdki74P8_)#woub?j7t6Z3EpoLSz%2Lfw5B) z`(>gpd^)_7?7i!X+ixS;7!`-f&xT2mxDxi|@EY!6^mPe0Lu&m#;+XhZ@O`2lSGV>i+g^VOl|*yV>1HDA_rHY$^FBkqPB@0u z=|hij2v%qV#_1?xy(qs+4!K1*FEd&Vr-r3{(-cEK;h)1c_#3(us>AY)tw zS<)Z^tWG)|DPNBFFZtk4p{dASOTf}t22$mv@W_tq(7f~l^RZhRPF>KZ9k1fh&&3Io zWfZwjUHVua@e*SbX45~qlC(T?2Hn}EPE6M87aux%7(>ICLh7q4sO-=RuDAWDt&Eu9 z-bFWf;?f2Q-|9f7Z3V=97y|nT#xS(u1Bgw!019WVLFDOv7=Kh5tJ6zZ?ag7hVWSWJ z8Iq-!|3i$ESp%A_ZG4ur9gIZY!(OwWf8d?vOSwKHzxOFe(|$Tr4tafUpj%9I#CoP^((uLF(z%edLs z2NJm=^ix<0SH~?y>wDucWZ@TDZ6?C?TRdiuZ872|@}7x9sp6bY=VN%g)c`m5j>46W zLh>|FRRAw}4#9?Hf&(k#!PITKAox=QlmsNe>KtW(+dL_d={6QviuIH3w@U>!iO#gW zPf;N1(TJfFLZJ2QB(5!LBA#{aK$YY2oReuLCdwV){^~tK*3yZqGt%Ks-j(M{jZL^? z68EvBL4@0y?vCwqztHYVe=6gg0y*M7z>V2>_-+<4EdNIJXZnyK*B`W{T@r+N|3!S0F)Rrvr>PMUaMDW{$c+>*T3APv z<{yQst9!B9JexUnYYMmh_7-fLtjN7dvqeAAWK?%OMfVQXP-EMfw658O{2DtKU-Ov= z&YKdkXV!edd0w+_&3kJ<{j4Rj2ZaSs5Ak|VuWtAetN=Sc7QqieFm+y3PX7HZLJz&` z>=M}r*yK7Jh@Lp^E0F}3MIlU>@JYNg@g5^uK8^eRDUocDP~ucii-5S*Lq6lgo6lab zLq)!3l1mjwI`5k|PBh}JO;@2<<~B}szXfNK^D(nw zB8;p}qNZM==)5BqyK!1pB?JiEt~T(NJxs7tB=8|31PTx z(R}*+sW*mMUnYUfbZ9!s!K2@rf*pNdcoz8v!JjF&;l+TCpqHkD&xs_SBYFTV8hxnG zjU~(qRlZ(-GZlSps;S1g%XHuUX!`LWWlqJkvr{=;yl|2wjocu9;(e{5eSgsJKncBL zc%OROpTObeen5U6#Ks1Mj(=L%d9Dn$Jn+Y@{vohpUncIWk%Y2CD^W!uo{mxbOV_`d zk5Zl4l)ZS48hi8ogzQZkv`msry%U44%tT=Am_(e)@8~Q;6>)B!IixOrqu*>g2QqjM zj@g}QB)qJLI6yA#`xZ&IxM|YFCut;^X(yUfYRLRhJ5afIk68R=fSsI0oKFOj61%Oe z?xVxZb}LnE`Ldr>y-dP08()y%7sv6f&~}JU_SHX7=>h zaBh7*q+i<(84wUsdGo{&$HjdkcnEgQD*x-;uo;#pXomP5nPj!Yalhi2M}wB>jU z?#l?le&gFXH+%^BmKgQjzF?2~CDvCX2+8+oa_mtHF>d2|UY*yV(Y6j;s>;BrJPjIo zjfBuSb0~i|6=KhbLH4KLOij`Ya^k>SCaJcLd6yVPgAKlz}pyMf_~Y9Y=@@I?mK8 z{yue>75Vg&L`bF+?~^9%XenQ7-8+b)v2KulG7g^)Wx%BuAF1zP7Fd&$WGSCT(^1&Y z_&2SA*&2m@v}zDFO3)o-qZ#%COX{l{qvm z0t4E{k?m1~gzN05icU`8=IHF|-!OUbLmUd6y-CG16UKj@@&yB!T)B)o5tcJMDQ(;V`H=KJXOU$$` z@%r&t=D^x0n5A=p%yPGc@&Q94>mNgYFVAA_-XJ~G8c$;<_@d<>BXmjQu=rglz64*4 zOz^`zjHkIg2V%;;lk}#|X|gq60`s?Lz@n`wbmpwfu-VLpBrgjkGt{z(?VdP#>W(kj zR638{7Q)9<>iN=EK`i+(VvDNXvq|l7J~PKWl&H@tN6{0nNXJ4S+U4rq(kJ;uWewoTb*Q&}{>AX>*Vt zF84OZL+&ZmMZ*SVF0>FbK8n_aNe~r}1|qoonCfb05Et`U`gK$Y4cBNet=g3+YbI6f zvHvyp%RXc6O|PLsL`898nK|}ItLkgkOkyvl1d<2&wlHk99mYSj1^t?ENayE`9^En^ zr1DVDP*;rJXq*7ezY3^{^HtCt-&cIdEgR$=KC+gn7eMoZEvhvZLa$R89$Xm)jq51| z8(A89Etq(Y4Zxmno;12-3A&~{p)q2H#NU1jXv}#-GCWGb<>Vw*HQWq>j@qIG`An0g z0(f4KGtN3=g;b-Mu3PetmOk$w_g>f04nD_DH~1RkYGMc8ll8!~Ng9+jpOc#@*(810 zGiqXTM&EMXJ{&Ni4xC@itMxoT?Z_KW@tLe?} z6igrbf&469pC0)DMn|7QiXaxgBvR-&GD>=XXMtn#WsHxkxd=Z_j4&$S&8dMGqq;h(Pu+2%D8I@c~ z)4MB3f<`*C&Bzgkk`u|itSXpr@Bwkm836H9Q_1gZ2yWd<)F*l@SS{Q_UB-y;8HqN< z8+LD`(}x$3pu=)x0eyays);FmIJquqK=F_u_Yl+0^exh)07akQo376+|;rG3k zFtGYHCi{OP7GW&!$_yrI3OblRL5qH@DrOv9qwtiN0Mu=U@Fe;{_K(XrhQDiaB`l$5 za|M$=MpjUFV;d@|_Cmi_6At;;koYn`)J02HL0TBT2Ty}7&KIFeB@k2;_Cee2gK%() z2~-$$k^gG>`TM#u`uBVd`LUj_Uyp8JqijX_{N5SFOs*HTugZaPffj1_&jXLFRZNB0 zV-nr%PhYARlNi@Q>O0E>{_OIi@|El1bL<@IbFNhX$6rhOTRaUNAE2K7(cjo(JeEyx zd4+Q`KhwN3M=@${G8HrB_rtjvtOozRRX*Kgb$40e#G(l><>MV@4L8hZ9K}QL@kxS5 z`TcN0rVIuegau4P64}U=!>M_5@Ywkb=3iP7pBtBnXKX9+*O^{y;p^S!Z}af)Knruq z$^_SBy<$oh&cF1Kt z|3XM>p*H+mf~41L3~V_q2^Ql5sB+tH@+rj#;h{E6{mTE&&0FE>13NI(|4bC0hk=fU z0?zr|L{d{~(JOqI^>clOnp#>kM6n1p-*2GG@_g@i{W|@9;3GYCsgF(|3B~dzdvN=- zQS$XpH8y|Ofe)drsBW4}1p1lCnq|_@>b|sdJI~DF{pccFHqh>OrQljc$(p?}Fkg=+ z#3;Na9~a-D+Dc8t?9Ur&sHp*wSKbi$RF3=@p9gt)#cXCYfA?HUV}EN4;DK5>3HqW* z`VMP>*UN4yDEmq#Z3saXQ+u}Z+Ep~{kil%p9T?|56=mK2D=z$R1vCF}CsFusG1yMO zNv^Nh3^CV*LHMg3*rWu*`sHTu@&0va+tI?@m*?o#vFK1N%`I4` zi1#L@;x+wlYBVT^J!Zaa_@zhG|N8?%vsSTw*2U!0vt;7DxPo>NTM|^V3_T1yS&y%? zQR>`OQkDFjs;ylFn@xnVBsm4{7ki0MXfx&o-D9rnHshC?Nq9N-G>UnJE2Tr zXfj3=RAsa9z}+fHjWon35)IfA`8dQieqD5*|^w6!xy zhxaZp5k81E5#eNe(G#pTmL;F})ML_unKZ{<8Drf}Abs+R$eZ?{!`b~H>N?!{IIl^nQ0`bPW8z7q0N==Sl z)E~(bC--QrB5pv1n9D3d2Js{^Y`JLDg zy6t@>KH8pyPe=CQ=Z#NrQ;G#Cg38MNVYy z4{7M{UBlj49|DS;A!@d!La_~^@P0m> z1I#m0!M2!BU;|U|!+OI13LFP1~9G3ul79?0VQ*c@Sbc6JTh`MQD*Nh5p5l zq0}`G!gfy-%v0oU7FhOrG_7~pAmW*%s?CEWc zdw3U>6Z5f6vyB;E*MRcPnJ~jfnyZgH02>CxI4R#YcIA$FczvlI{ppkoXWiAHAwxyr z3RZa zO;1OUFClu>H)8emls4ljnF=yEz-PJ17t)FQDf%iq<4pJQ_)VNa^I1E|CT)glx{Feg zfllJc@VgnFGh8uW3;UV~R7>PCvGO6%H@=%J*p>=<%>ODfTQ)Xs(qTR=(k zZ)We7@i4|Y3Qj~s6XiFbp(N`f$#{|j4YS4I_2Wt8h~s~-_TxSJ?es13M)o=pA4(zA zme0{J|3)%4-GXBUMI`#rJ22tRjCNNeVR(i)`D;59>737G_}~;SYs46Sw3>4Rt2cui z@6Yu$oez-?kFe*!4$`=|gf`Zc(QUSh5P$zTX89+=6z}_ZX;vwG%1OqcQ%%tP)sS|G zuwXY&1nTeKBGgn3I$eY?@=7bI4gL?KUk)-=BCXU;;teD9=mxdRh-436=%*d~gD_=i z2eQ+LQDj*ZK00;{AK3qgf78EElcIT$+IyVRZ3WPKGn?IIZv>h@ei7Y6huLF%2C`Dd zb2_#9F%@nBuwuDxbx?M+?y&ey>E$nIaMIa?~B4C*TLbI zW7IQlH(lfZjy|{(h64(*tn=;?^r$g_xZ_1ws;Lf-EUNKEd??*#lZ!LjE}?JV7JMMe z=d-=ELt*^@Qn=6$eZx{gc#I5ok3NQ~;rZ~Wz60`B-GO5NLaSy?5qP19yWrytR|oL6$#7rCc>z;Gg-N7A0)n!#@fG|VCAS6j%78- zk%Ku}%sR1$kPgbKic`25IWdVXmTDJ?@f;8?%+)+Bc|O?h1%I?(K^KnI{UOA74m~3g}OO3QN#j#uB>9CH>E>- zc0Q@9p8>ju{Xp~AIlR*H1S(c3a+?(2!^-jEoWZ9bFu`*lULE2&E_D&~Zp3=p8;106 zWf9ugoF(&RhOvrC0^c9Poax`!ASL!0qoYb8Vp#+q-c#h|NnUKzV z>U4_z+Tzn~vE-(^4K8ogffJK&VcjN2==v`P8~FSC{T>@4gH^;}nJ0W2n@3vCp97cu zyJ4Uz2s$NVp@V14P0(Eh<$HKmL3ki(wY`QVF=Oa=rJFb!T|!QvE1IeXgVZNql$^g1 z7M=f$%M*o&cgrNM>UJdUIv0sI?gyZ2z;y7vf1S@04()EyQk?#9KwYL;u(!G|WmWo*=mpOV%&JzRfo&>o5jYr(B^sa6DK^ z-lsoL@ZPgSM1R$UNpSR03`qnnnx~OZ<%<{a@2@v{E>FX6uNR_q?G+3!`^cU%uts&& z@5HP91%0w76hLgfe&b-7qXN z`pxU$o5=PDt<*H;1ggzJqS{=D`GF=N+7pVu_mx1T$#Kj~?*;W$0(?AL08!Jf(j^sT z#KmDe?Q{J@Ur8?`72Z-f@jAeWQW)bK90@&Av&hq2chF=$vfY1_NdBdzRBo_{u3FSV zgp79Sy`@%gY|mS!SUHBAsZXV+CU>xt%9qk#Z{Aa#XPG>ck)I|1ct8sGc~Ws>f7aJ4 zj6Rl*qMg(Lf9-ifR+hM6yP6jiZMaL11dIclvrUYec@j0z6OczN#a%g<$!iNa?xewF z5`0jaGoE>nmOQzNKi2??-!-D!Z6(n+d?yG!S+6%n`5p{dJs@RVB^={xX^+0GApdX; zo#PzJyx#SV<_7xHQ1NZ-*gN6miHk3^LN@%YZv=g@elUzFgrdE5@ax%OP>Irp%6MHM zL%QhmMXK;`+jrDI;f5=>4PnoVL{y&Zh;17VpreVc{^e!5G*6R~b<4%!Ks7@&HfX@f z^;N7;zLD++t71x0wQyGAG!$K}gSpnSDCQJR=l-aoJqmmE8!UyEP4bRE*>Tov&IQ# zz01bP9y!64af4`--T-YYw_|MK10uz9Q6n#EpuFrHdV5z6R@^^?&!Sm8xO)O_eU%sC z#Vck8FIdk1%6u@=0<(Fi$?@LfM0vtdT9YA0_Rkc>P0y6U@#SRwY0EEwsPr88FxLn! zb}B=U`&o9=0}+Oab)|w!0o4DE6p@z@kfAgkQlP&Q!krDN$L(Ll%yAsfyKt5cjA&u^ zl0y31WCnhoxrJ8TzDI>(7GTw)Qa!D9M+29IQ_R6 zxiV6}S#1|iNo2|01Ik2p=08^FwGC`A52MG|U4Z7n{X}Aa4v6aOfQWe(Y-?Fh-rTGN zZ8sk*esLGJPyUWl6Zb*snwOZ7@`cq`-jBMAhNyeH3|%hyn*HqchSW-LpdUvxK|}aF zHf4{8-a1~FdftIhJ25V|%a7z0_~4#dy`;5!JLw%5VRG{h!I{NVP)-z~e6G7#l85xrlMFOrW3El$D>1g2%5#$p~U%XWNSb$ zEfDMBYt?gL+Ab{E`(_FF{K$kH$xT#_XSrQnRZGoU&XFmb4XAL<8eC-8OozXI#Mv!M z*gLTuWn0#>PGSbMQrrxFd<*6o(*(vz>;}D}F-+Qu|59lOGqE2fAaeORGcev(K zoAk59D%cd4`>zK5z_s{A?E>&|XqaN+2X9{Tes612u(63}UglbXPf;bgIOia6E6Pdw zzAGeJ^ac?-VS|%3uaPwWEBstOm0ag6G2Fb1ZQ*a8`2C5v&}9M6fBP4=M_Tb(!UDY7 zNzks?fvNxDiTVC1AUIu$CCdD4M1uFZUcC>gdo%Uzg$g0PjfKGNJAmEW$1{FInP1Q9 zp}zJTT}z8WFy}8l_8|!-@fzhkEf3hxEQh*N`RCL0*mGl9`uib6GX*3&_Kl zU1D%(!ZrNc$H0u>H9UWIDZH=d`=JFoka^=W{*_)#%y{o$o4hft?T|ns8pdXDubD*= zKZ@#kPT&^1b9Aq)Hk>-+N{`f9@!YIP;@*=_5_Ci%Jv0D(qDS>o9Q{BLG85&l-JpkG z*3eVUwdixcl@xpWWBE=aaL?@`*RErFbENYQJ6`Xk?Le%<@~|Mr7GA~1W4h}hzTXVR#U?_qX6<&|(7ceu z_DkRv;Syr+bcHT|$P%}NM5?qzkyfu#z}*WP>3=fzn967{u3d|f*Gs}{r-!sfBZnLd zX=djrWzy*Mk3{y)02TI&f%bbvM16A$4D8H?0J(ZtSb7i4>%PkatL(HXSak8!M%oec4@05V-bB^D zg?imz#uo0rN<23xpwGI81b(~XwYvEl@xJA?`5>Zs$9kFrD3 zOntLHdRKRA10i|c>x-v?q?7awLlD{e@BCF;sCK;S`6BjGl{C_7Wnz$G5xnSkGvAyi1L5V zkW*$qXu<+fX48XhWJYEx{Wq(CfOs4A@cvy~d{PBF<#p-FktFOgze;mHwP5GMT`2Eh zkD8&0=yG;5)Qwlgx-UbpvZjfQbW><1($JYJfZW;|5+`KI@4EJYNFhH1SE+&TpT*$k z{ZvpO6EKSKwYoY*$;UQmB;A7rSC^vd!v+-hYo+PMj_CDbh*}oLGuyuBQ}3Vs-}=`RucNx^IUy-M051HJYBn^!98-zg2Ryr63t&!`?^&DYkv+3$qmfQ zn5vGtX{9U=@Q0KSQN$|g3=BLrfKz>SjC%fJU~@fD#Y7s8e^KW-h*wB`$5%3CRz9`Z z9SIrxYB1R&4`y8&&sp{rf~ochKC#&iOH8KYJvB4h^wj~ZcHhT8qYaQ6tie49xC2+R zmAF%?X<%=15!aqL05`u~Bnh%w5ZRCgc5!3j_xf7Mo$`Pg+h5Fc=45dPe@1-Gb47jC zr|iYQZkRrF7N3ea;*gO)&Ya1h(>D`pIjW4yH-^FzcfMbp^b%YZ>M;FbGJKa=jk)|D z!Zda!=z8+J;7M=c{pA{F%Dh3KVP;gl)eg#avynoQZyjYS9$1kpe z%SlMiA6*9-j;82!XCgWC(-z$a#PQVB#pL^rzw|$MKfXsRAq_S%u;y|)g!tsqk7X>F zEYd2ze$EkEF3Cb1TSKA}HqzvVdZM11jvq7j!W8Kwl#26!=j!7zHM5Y&c5l-EQ{79e zZ-tXrPp{&+yE8!VFV2Hty)XQERdxE%@fEshc^6c_LcQAljWwK z|3|9~_zaei1$5P$QIs1e1x)G)I*D(B&4*L4b@N;}DVND~4PGUGSGdB%nL?y(h7WxI zI!wg3q`>briy=ws0~~PYy`^hDKxRcQ+5Dg!_VH)O#-LQNzxJGP2N%PT?)GATneq7j z_eMI>--wduCs1?8cX;%fA60&T9l1egy#2%utAgvX?UXT&IaH4Ys#EaRUQ4_X<3P&R zX3&8nF_59Aikf%hVJEi_4d%+gT}KN%tU8{4H)POw*;$$yI2G^zOC?YJo$2|KO>kSA z*Vgj;%0IKRK|Ljw^msgj{-?uCc}*iEs>YD+mfMh<6wfqu+=262W6>nu3tDC$#GNm0 z(4VqS$eCY8YcCGOTQRb5@-~aO=eI3C(SHzF6{&H4m!jx9-z%(3X$cc= za|ui~7LpK&5tuSAnDxKi1!)Px^v&I1_~VjH6*9h%yF%0G7p1pM%I;(;b=QWZ|4pEc zkF)vAg%r}z*+=U$mcXt4i)ixR3!>AM@zjHOc=7Fj6rE{6O>Gy3n@fd+O1!BgB+1!p zrGbQ^Ns^F+gjAA*q?9xXsWg{LLPDXlpOsXSgd~}gWTprSiOjzJ{p?Tmyj_RKIO4sf-DrBbyb7@ z;R{PUUxE1tH{!dPqflaV8cP@ zaXTsC-$?LWd7qhX6Yh1_T-nJ>{^%iQY?9e%wC;Qf@ox3J?}j(nF?JJgmpjm8`j2rq z;LSBm|9t|JYv!Vj>Q(f-rNfE)4&ufy!g(l@nAXo9cesY$(vqHqUJ-B*_MExTr%oO~b~t&{;Y4@<}Hy&?(VPnqhi|p84EmBQ~Ye zjQ7%z5`!e+IY``bNuS;R>nK|6J{c>IKZKbPQYOAf{c+tieUsK_M{xM|ugJX8vHSps zN4Dof$l?@m_u_~XYA{v_+v%XZ2To1;!Zs97MT6dRkeoISXXOHZTk!xg-6mmyMLsud zxfE8O8A-<{C}ZWbD(W#8G5}9Ml8RRV$bWfGJKTzS*<}~#?4akYP1wn6=0#BH^Qlzk z#OV7b3-U|ZFJvB`G0~*aM8e$E`g#$opZ-+fRt1;+9@B-RZytpGVR;y`#s#F-?!sZS z_rQL;16b1=hoXrV80kUCMVD~{r)Slp6zVh}FL68gkQCla8tCKj7i?l}4*tI&C zh9B7cH`>%&hSeKg4Xp9Wqb&qWX-{7rNj7l zQw)Cja}w>h8RDkU3ba)H#9G4}v3KGXns_N6-7meR)~VIphnBN+`M-4feD5r)54lRZ zzsKY7De-jL(-)uT*-`VI>Cn^aM$Vl=hv?^cdi!%b`^Rg*g!yjRyekI(YNz0TiGf0n zSQi~#q`@=5n)7-yib{lgv~ki5vZg4q*WJvjLN`&~1ugt9egMro)Mb>*_JEc@eVSUp|+H@iT zj18}|6`KdpnyvTP*=dfXhB(huO=)c#9GzJPz2E%fSc8rFPO>bz& zYI!*L=052<+=KgzEhy~lH7Ink;Q{+z*T#@B(OdlFL< zm^)h%H7KH|AOF^Gr<&oe=qFl0-M+$n9rBo*=ouN9Zsq>2sH4cs>%=!*4p3v)S?25; zOV=MMP|CVxbT|16pB`$#D)fc9$LOnIc;+sS8~PDUo>t?E^ef+*gesH%DVoObXh}aYnag9ULrr2qm*TNN;H+ zY%WWn{>86Bv3Vqw-;0CMCl14qZK{;M(gFj@E|Rm2E=auSr{FqY(mVK&a>kvY@^L#z zMRhNEPQS^qE3>Fb!wf5TDpFSAN>sKH!LX?UuklnO4$n=+pr~7TsX7Fwj4sC3FkjrD zoD1V##G-1e2B}?Lk2QB>Nc(59=;YoGI6K3K?kKIpUT>Zb+en~6=_QK2Am&@YWRXwt zV5%zKL%l2yLVJ)3AoBR}k=)QLw}ZumQ{Kt7(c?#;n=xdgbAbQ`0;=X1}yOOTSj z@N+jVMj8Lfu;##L2=(m%t5iv233WHHK7Ey`yFX%9t0-W zJ2|~~zrlC4H)QF|Ko#?4oZr`(sFNGPvbhF0-Zz}AY=$!H7fq}w_Y+%qKpu1j5dM`hOJrZ&>R80|Uv<8#k7aja^><3?Xc|WYF8I9>HoLKGo@hCoL zPSAOj={X;wcl=?>k$*<(PDWBw`6IeA-ICSp$))1B&7ADycWg?72g~0jxC1Y|W;%U5 z9$jh7H9WqHnYCN-%qfQP5*65dG!<>FTJd3;0s02s#W9cG@W=XN@cSh-8ae75H)+EU zrZQQB9Cu$~8+W-=^m7R^6mo4F?@XXe+!>}TJC_=7oaC;z3@1yc#hllyK@hz3C}WvP zxcKx5=5+5SE}p0aF=w*z+l58&;)oI zJDgOnAEgxIWTsgpW-HDeWNrK}a2j38wx8dC3g7x!MSLWRYk=O!c%jk^1xg5Z#HL|( zP^vDE@r&kRTo#F}6#`J9Y7X4DfHKYKO(;YRd!q#otU%^s~W|y9$MhX;eXKG zl*COiZGc-Zq9AVOW{AwV2U|2Bv0@PBd>eiUrQEteNzO5F>*(j$Wz;|7~t-T8$pd@#tw=~F)BENsV^tTpI2c{cV- z?nkA|_gU&~E9@#iDR}GtL;Z|qin;v(6i&91YtA=b^;9cmU7kjPoA#4+awIKK-os+% zM9|^rfpkpx`?>+QXzz4K)?oIE9%{V;Rbdy>5iQIqenw%=t5@K%wFZ+rt2mb-#fT5@ zGs^?}g|0$0wUiz}m*ttHJEjajXRj2FD1^@vo7hIl9T;}}4QJKm0liO7LC(5W)H1ja zsw%INM35V5d_E)a#$r)IK9uSU2VmG>Un+RCl)wAOh1~v=Wu-19Od+(Ev+I+>_H{3S zyPAO4(stodje|JwVG%0x2l4pHnV1|_^F*7NEgio~K$17%MY^P&lz+m)J z)MZ85!i?hTTB`Hz#H~GR=(JWoI>&xxi4KjNZBZ(#-DXCQKmXthni7TmiV^tDI!b@J z>#*Z&4h8wD;_C!iIvL@B9k%LdcgO?ByX9iU{ZEk8Sb$-Z%2+VnMX~8l+H2U4Ykl^U zuTdP|~pdNKx~#0ZdL(iFx^?KuX^>D2%s(H$l7M zN9ASK7p}$v{yI_8%T4U-2q!YkkB3Or@$9zNH2iRC5*pz+jFJ=Hah=~`-w{7F?&I)$ z(=<%(ErCrXBT#Cr52>A)gx-IesZV}9uI$JssTVR})--|QvsRPtiD>q!@F^W%QVL%4 zZc}LGLA)C^pPcsfVoKK@HmcuXJ)FM>{`7=kQ=l?!H+_st&I`}aTW|5s!y9bl z(NkD7cpOuS>jTl83hwo(DP*pm$_LmrQOBBank(?#_#r%95;{Alu1+M?^^vq{&IL}Z znUQ=}Ca8zk(%?2nXo_lPK_T;D@aJ>*v$YLO)=e<^y+RrF{tP$y=JF1{Kk&iy48fs! z!-b-T-sB`R8|hp1S>A8o0-EO4CvNzf0H0!0xkSOMQSCLG?-1GIm|;iQf6I@fVc=w{ z9CHF!Z;=%Ih#j!z-6O72_XkUl`wE?1TWHR(Zm@1Ipo*d|qKL)@${EnZBGx<>+%qF- z#nJ*Aul!p4BGi_NC;Fh<3MUNtlZ4+F#Uk5yl1o&y#m4msWUVq17qz93V!Jyg9N5D~ zuRMi`iZudb_87jotBxTFQ6T=Ui$9q=&3r8&v~L|GbN#{0N^3Ex`<`V3d*-t5K|e$% z-$cW}j6xXW+6?2C{DYf0MSwCR1;*={Dch`b!L4i)yEbeGyCZ#@|9nZ3RFf~W!26{v zbW#e50^SN-%6RINY+yg_g9X050Xe;m#=y&=Y}xevpsN+dxw|M)cYHAn^E<*CemS9i z@GUT=?HJf$iL1{&g|0etbeqt|Z1&VZ-@-I1S#yeQUvz@PhB{Fg?xxOvzuD3E4&+hP z27c+n+{Yvp6&)|aFqeH;yvZ4NzSPE`b2CwsONCXh%~12lVR-HwkIs$3@Z*3mW7d}_ z8~AlKE@_n|mGfS3rsF2ncK3?Le;if*97;HY^#jV|4&(}Vkt{O!Jr}Ji2T)?%LR>5C z!$uvO%R;4xm?T`gK-0|(O%f!3(C)dz3H{r4((6DA@U4J$oSJBL@*?d-O z@uy7xOB_3?5d+GXWT-SU0Yi%{$u#LLa@A@yy|5l78lre-H+wv5Ig^V!KLeuv{bj8S z|M1yKp#qCz1>do8C)K|4=4t}9DX^X6Pfm*A(lX94pC4){x;mVeZkUV;GgE0-o(ir= ze@hiAMX(rdlEU)S++o3I__rktvpwy+o5P?SaM(L(1cgcjH#C+w@P=iw-}nXz4*Ilhl$j)-e4&hVCz7ithx6>ehPp z>Z}_6QXI#$8;-Goq3wdxXg5tiya4B96j1$}sVGzAL`y$PW7drEq*!ztY^`%>!={HI zeW{BqE$_ps$ycc8*bua9`N}?g3_-hHWze2pfCg8mqLyYLveHECems;f61b+yekUj{ z-V+xq{2{FZO~&SlDRoi-c?9V)?OPRO_V6pnj@Bfr9nm27xf>#!Ub6CBJM52{M`Mq< z;N|u@7OKBk*c0Z6%sZ4(+5Ruzq?N#Vz4m62IzHUbq$H4W-2nyeJ}5==V8da7WAv($ zult&eOGn&f1HaybFApEE$@3yvasO_f{wR`W-#U70Du*DyBSinJ`eTPo7#E(TRJp2H2zIhu|=Wh^yZ%9G`J0e!B6LJI(lGt%w zUsQleCk4o2@}{kCxKzR~z_-;d@C(IvUwyH>w;aWwJ2% z3VYnui#u#j^Kk=A@utc`$h{NGK8^e=9<@cCHWaAPyZ{e+>9CaA)I-SOnmo1KGA8ZM zlQ`c2mTXx~6-aEkD7u=ihHbCpg&o;nn3`~t^#^6c6Aw>P*;m3H6F9L$p7?XMH@1 zXSTE9#_8A!xiNgWyE(SEjnmksZ$|#(Pg~X-Cl~Jh(KK_QjT=)cJ6_(7PLp>wdE9{)T9I zct5MrTF>%dRIv%xQgqZ}FMo37AaLlCz?YX#z|WI&G4tFNwripcrmH&A*)Or;;L1oo zY;_)+wg?Uz)0v1_NzAKvFd@tPlI5d(D)_xg2k5r@9NZx?B5998EI*}2;hD!!zU2)Y^hn5= z%-6&JlATe)Sk`1`$TU1>GSWmb;V!&azJ^QkMzSsD6H$75I5}=}L7TKjs#YyW(YZ>J z{JIO@)eIn$mH*FkTEgOig1=+kXy`IuPAQY)nUeQ%l9)J?o(R1~>$(jz_jxeQ@Rtz$ zRj*h;QYTmNPsGnQXn^OBWvR)03oI|PqTfzmIm4VotpBYd`mIsGlRA5Gzh(@2o(RLC z>yz-9MK!c~Z^wa#`}l4-51is&4ac?h@!qDhs2F~P^Sj=OGm}gNreg_y|8Sp9mS2Tw zQh&+WLGT96CK5N-3iF%6)IUM!&+MBl7Vr~Pe0dCnwv|xiLH9DYAd%X3X@lHG5Ax}b zLw_1VgKO`igtr@~_#qi3O2?sqeTSdF{BcEHF>F?;gJ(Y#QGKfw>&qQE`Vnx;!e z{yO9yxRgQ-POxv;=h)7b@i58K4f0<&;OQ)B46|N^4pS+!a`{)*Tqln~-_)@} zss^Ut+l(!_hj~?_4BRVmf?2+QfG6wjv8EyglR4{#(5I&#(7ELu)9Z=DzK03?>C&$d zxi*tu{WcWNT{I&rrSlBJ*3q%)`E)hh1QhdM(4$jA7vo?P`K8{&S;3d6#Ip{whSw7d z^1*3^!rgDY7i->@0DJdDQBu_{cw7@sQ|1n#<~h;qk8r2aFED@z51#q7|K+~@oQ>a8 z|A_}YzKmH>LYKLz5r<9_I#r4s7L69OsEsH1`ko=oY1k^5ql3)xOy?!oBh6%FQs zBjQcqRvZ}C4+CC=rrCzV5+=f zLEqA4>9GGode)#z)3-~~YYV}-ESJt#^|Z3al-1xK6Uer_SPWK0-R!FBLWppdCd1xa zTuJ#3Ucw-j4YQHQ0+0}ytX9Ak5v#E!Kp*z3s>MKVI4=&X!^oWVoTOp`POJIHjhy}k ze7`Be8fzce_H8#G(qY8^l2)SG4a)S+F`jzDH_|5eU1S$aRA-vb>beBKTEi%OR(_oR z?Vf`I@t8KLDqwQE8Z!|xPPNb4{r>}88bp30VAf2oKHPQR%^>JwK~ zl|%#cuCtWZO4hi~pO(#2z{|tZXu3+X;NuqZQi~N#&RwiyE;n1T;+-L#xiJr?HziY! zsT*WCIFRe7U!s}IJfVB(JZ_-d6m0QW&J28CK$OEj7E}C^n`omIJI@-P8O5pOO(nDK$Dv>Z{|Lva1mL8gdIbJPX!$^Tculp4SXEj6h(P)%- zI7U?4ya$UOm$J(8NNDNlVa1;XpOZ)=KDi>F&FoafIL+r^U6c+Bo=?NNmIth;+7v~t zBC21nj<@FfFmaF~d`>mMAm7VuyTv)I-dWC+f8N69ftkFz`g)Agu@b(QyIA+;=~Qo`<=?!{ysyos+Ou!@u~tV|$JIVot0*mg?O{)D7bkFwP@f{Z=S{h{Wj34f zGm$Nr`Vy43&lGNHn{iN!F-3fyF6<|Ni>4WrFk7_23)9nR)W!q2?CLODJNE!Sd}xaw zw+_bDLU$uvc+ZotBawU5K)HX8!tuBFXvY%`F!Ucs0ao!atNAXN%IxP}U*CaW9m<&F z{Umf4V@)yI8Q3~;KaGw*im#_T3hc>PoTFq9a#qh__GDG8MPD{`lo@1S6;X~;5c9BA zprGsf7~9|uT9ZTA>my&_?!(#alwB>GVs{JbJL`mwS29ki{X@2b6KwLJZ)6+Di@Kv4 z$k%QT-JTRe$_CHtu9yf*q?c*v~OcVJ`NR*(}< z#k(OAXjo>*26+}i?)y`8cVIf_WBQqHHQwc#wjQGg>rz3sT8_?EOvYZlk+lBzE-Wow zBIK~Ap+oz4a!r&IJO+8}!I%5gASc1b1Ty+M_Bwwr=>a?ar;qR3dVzPYa^c^#NVBz% zCqj=!7D$Mnf@bMj{Nn`}pnL>{S1Yb$QCK0ZBObW(Aa{4G4vo*0rV{Cce00r0=JNIc z)@#|r&#DWku6h}|GM_+MNh%!DUP%XpjKHN2$EoM74*OZ}M(N*X(6q#E-s@8wbsP~o zKn9j%RTT<;+Z>oo{c;XJW`os|#iGibVHmVlhH3R0VDLM2`qgiN)h1)9X4*&ie&8ZE zGIBSUIBo`3H}$fXQRb*zBTTU)`lJ_j%SYUBCavbov{#eeJY*3_7avzjDeMxDXO z89(48tVAoNYBqMsQg|f3N#j2p0vlW9a)X^t=pXosR;Ul5?M+&gQ23o&t3H>UkG6W}Q$)7N#>c}EtRvjto;|7#Fws=h--%5$m73h?y zKo2hL!mRssa87VMJn{0wcRPjq&Kkm7I}fsPs~@Ap6dkc<+FRT-V*#jSe#R~wAr4-1 zAD{YuU}i(t;J#Jr0>{-z$Q}Fe{(s!q?qXS-7q^J}+uZ?;onBCpS;cGD4d&Wa@|eBV z6E<__Bqkd#FtsnnFx9v`fsd<75BAuTZDIiBEmxuoZ&OLYM9`TB(NtexOIpbXSz_UE zTCXmA7OQ5nxZuOs=b_Ghz5fiye6fYnWtFHb^ma=u`?;MO0v~umD!qPn39urCE^jvm zd+$3exB4yhPn zG0A~4N+05pU$6M)vyHgp_auz4NXHCR$1B-$F+hrgC0(gdIASR$_vSPk<@E+@Ul+2|u90e)UP(68z=T0i%}w|b5E{sRvIBa#H(ud;Y&$b1~6zZ=qDSz+F; zyKqr24JuCj<05CBW|Fd2khVshist-*<^4z5Y>mO#b!-T)5WE|t)+cg(`Yv44q_=Q% zKog((&=FrgJjPTcmC#ApF)xX~#qWLpku|7k(nfD}GAa_-<#JO=qEU`s6}i(5fwNhi zv_{DE7SQSc?{(Hj(nob8(B3u=GKx(w<{girl?yOo-$QIU#b8)oF>3GCK>$1RRp9r@uV94^`Q$Ux zkW09^nyeH|#C_%`*r??*$;>+r>duK!KvnT9l)FhaEbv{Xnm7sgG z4c)a5chPcxV>E7#p^$SToZwPQ`jT3>e9s<#lx*)Pl-p74K8xnN_}2kz*^U6^b3A3N!+kBH^?yw}k{IneY9jpwscE80X(gobegw^Czo)06&#uKGpf}V^A>`dQc)*NI5F%hZs zE5r_rhn%JL=Mp&PIF|}fk72s4#fS0T*bQ7lllJX#QT{g9}%mfYh zm2B@(HP%1M6@NMQv75C~X!u^8j_ZAf#R-B-c77wIy@+9p59~$R@rQ+4h8X+GU&58P zWb8bo$z+nmpy~a99rDws#Z_n>x_FjsnMSA-Iu zmcicaslxqUgrXN$p=!1ycI`J6Ps*_oGAJ8q*U}`M=y;91h5hmiZV^=*cyUdYi?Az4 zl_rKZp+bod&52uqcdcv5P)lI#PHCa)kMT62W;H9OdsB4LSStNL9ZGlxze)jQ1uO816*e$NSKfznI;9 zA;KcZ$FRXH6HINCupAaOMEf^hciSFH)_Kk{W8!G7 z;2rOg5z$6JWdBFIxU5`g>5F@tT*18Srod$K0GaC#QF+G< zkZ)r6{gfHsIBg@Q<=#40blbi)q-`u}!-svVl{0_Ps6zl1rQUmIWNj=tfUzn&pI6 zJrz?zrv{_E?>DZ_b2pwXz6>3UqOeJrTOBoAjLkx}vTmyeyCRu|@3l*)rg{W++1#gD znJ<~vM_>A4A3*b+2~rXV)8MNXSYY2Qy4LwmT>e}R--d^g>SR-#RJofXKOTakCoI{^ zLrd9!+A(OnZ9l75&Jq}LUJ#Mpiof?gh4h007h{~@hrh81>&$o2>yb7r`*$2ATUZM_ z9%zn?;2ef}+lU;AMRsdcHbAmx}OQ7G_?DwuM1&3*zVI zH0VrNk293=A@Al1@SM9)>?W{BZp`jy3w@m^z%QRoygQhg25y7XMk$~?z6FvFo#hs7 z-p09%zsRkbI+7agUx0auosg|*g_FX4Y+7D2m#`q5bB=u|a{TxP2Az|~X#*d@h~GN+ z;hG}TP_ct&%>${bB9YH@$YdjmAF;Y~d7@FByQpq?n$TYnGGvdw!lz58Xz}n;P}(Eh zfz*unfGzTTjpI7DMN1N8t`UofO#tl}N3uG8fCaT5rJ&`p+=>^`)UTI-FV^`p)s=^_ z7f7#Moj9TCwT_lm4Va zi@t0ntLX8R=zC6Z7Fm<&fo94FThcY(KzFbGV2+~`c@4`}v1QBz_B!AKyi>EL;Ahf! z;i@wQtTw`{Kf+nX4=pU3a1$i7cZmZ7%+Ro;fn|*M$H!B;naqX-s1rPtL?eVw>Yc$?i9lKM_3a22;U)YXZJLH5@v3Z^Cn? zG4Re@7WLlz;f{L7L2lwu&gjV{ka;e+b@|62xj%yE(Qm{ZrMFqpx!o*T zQJZ}oc9F$xdkUe8-muCrS0NA6!fZ??;>>xgS>lr<$gw-c5{Fo`d7?gMrZ|v(eEG}o zk_xA~U!JhJIi1{Evf+KOD?w2dSD-9UU8{BYJVROXy6gj@;seZH=nG{271~!tt06_{ zJrqrGXHkz0@Unh4dq39*|4NoIo68nh-ZqYtnB$L)XLrMskliRwp9_Me44u{<;aii` z&~%b5YtB;ujgq^fTE_>B6`X`+bK)qCm&FUNd+AZ4a4vn-$3{F%MYUx${0RqRJk;@) zuLyn3Htze!CpzTNtD)X3E{rJcnk1#C5$X4jr9tyflGHg}x;k?#1ur|p@-M#x16~@| z9!$gV_wx8Hq694^hGL=9e$=^F2>%_?K~t}ENItiMQ#msluPw}EW+RkvU8XOa_v9JB z^RprI+Mz~go}Oin!S|Vlun(75_)Yx0dK9Vr&J^7&9V+-5o{4AKFJRIVUIK?#*!8Tg zg_c|X`2NHKI5#Nn5_f5-Wb6Ui&uPG?|Js*@F#Yxdo@k_t|oB5 ztVz}>ifcMDodpYhw8-?^T%M8}W^}2+naVw!?e5vov%i(GSvC-L;~N_;{elZ97g)g| z2_o@B4Z1#WFzgb=G2#}9uQ8v`{yCgv!qx&-Nh{L8%L6bqI*je# zsEJMcufgXtx8Zp7c>Mmin!8`!1&PZ0*sO|CuwCg1d%ew;J80^`tJsZZ)*pUB=u#yz zcm2qj57DDOTQp z!&2eGO9_-1{hghAvj(;Zy#(D!R8TZ4ZJO|RyyK`phM*)N{H=* zWu1jo91sMxkERMNLgGhd3VZMmovg@jJ_|bYj|DnghFZHx@pv3?!55d$HN|nl{(ADtci=s95Izkp<6LfpgVdlXrr8()KEk}9r6P|jtr$#R zjgQ&W5jHea>_U(J`BTVJEqaq|Lr?RhS=Y*DRwq0MBc0U6#V>EM@;{eBq&I+ak6wfF zp&bJ2^+#FLoHll9k_~%r7SGg1Hgc}din)dP!GbGiIj99HL;ck@F7iU0`0jHh@bnnU z{?5GyFW0PMU27-dr&m%CQR#xZ^%KykVheUV2jbK?KU6o3#t|nZaO1WFoR|5Aw=Xe3 zpRKy&rzOqYbM)vn4x@q#i&&Mh8U=2DDf*)On)MqO@VjlVGnf~`?k>+{7WxNR{?RyA zw=0-wuD!}YrH@S*JD4^cT_jM5=g&w^!Pmc`H7Fl6?lKoaiIuD>kF+ z`!v2-<`ig#2lE;h()6n;4<=ap(9*i8DAk}N>@v;K(fS3iy*>oo{3Nj5JxQb+7LNh1 zcf+UmoAFQOU5IxNfZMswoWZ2MtR(*@v!2q%yQj`4jhC^|@nk-E=KkeE$LLY@$aH=T z$x(}%1$auFWQ7lFVEq0TPPw9$BZ+6AY#GlI7n{JlFLPOL$RA!9ka8z~&Ig5{Y|izL zCBDl$$U81F!Hg_>W-&Jv;QwgJ_%ST&a|{3K-6=M5^fTTpT8ceAqrq+${oxFf{&Edt zO1aqXAvmh#2Ve9~4ULB*lXws`#eSL&JN!k8B>GnIk!q8LKR-p3)x3$0UU|XqG|d-W zH_7bbv`{iPsAE32FZ2HQO_``-2@W4{TVNl>3!D*O9JEyhl?>M4gvXgs8l!=!_s3y| z=mflNjKt)PX0X3i7bOgLiHz;bMI(0kHbXVy z*GweM#EIlLS z@4S3rS0FI7S9h>6j#4Cf-kI8F-C>?vL{yL?z)faMVe1{_VAH?BSi95=l*5v6`}}ms zS+Nd(Eu4>C+Xg~Q=K=g1P{{0r=b+}FaMomH!Td}V7+U;d@q=|(Wco!WUh2$7`3)q? zCKKk;;77$4^1OnrHW@p97PEJKaP;OZ7A#qcA>aP6QCkZzrhF^Kj~aq&2QQMu3wr8I%|3N=bNeA zVj4r2HFS1S6aVvL2a9a^VmwEoj5j_r0{-sOWD=sQ;41VZpXHgLr|b;y9Bqyshi`#V z-%^MQk%AYqezWg(8<>KfCmk4J$j0$IXz8+Ppfh1AtV5Z|;LYE3W0^flI^?qy4G+Wknb z$oDwjKGGomy*&{nca3GSA0EOQV+%-}N}Sx=$yn}q9qu?A;*zUcm>8-85r_LB<6}6B zy-*DbYbyED_K#dc{9~{_IfQyDjId%~9+~VZf*V7M>GjkA=5Amobh*B=$Ge?ahQ$pw z{&oZ>C7Q%)TgQvo7DrwnsIyO*0@voSE0d2lB)MNHOhI6?X@*rY$%)3~*!zwx`L>?f zx7}w)6+VDOxiRlFC;)$7oP>`*EI}!oXq>Su7Df*qjH8Yyu;_7r`5aGemisJ@ncW}4 z#;4hGU+iSriK~yH;!KmcewQ7pm!w0F$qam!z+p~@;J82PfI(6XEWEk{%-0PkkpQ~c z7^6&fBL`A~b`7gm8AS`e?`6tWf~(u}9<$A#!?cd|vOcF-TzI?#b8YE@l$olKo%RTR zMP|Y;wLI28EDZ)+j-$uNm%s;yHFTN9aoSg3m5E-x;B`m*0_TMJocCtoY%$?3MD~c! z76gvKo~gswaM99nd+!;j4ql;m7#}`(wxNk~)t`u)Iy^1N%x&Rf<)>L>* z2e0l(q>7{KaL^{9|9pBis@FBKO8-O9EqQ~pTpY`G{C)(@dzP|0*D66|Ac8Fw9Mtx^ zgG}5sn5=Y)^(RJyMXD0?H zf8E8Xe@TGZejGD0{BjPj@?}faR%|q&5lgzwD(n_Q?z^ zIK3a9{ePMe7>xQA#(L#Ae@sU&nH4+syDhD z>k15ozp&Cw@bAjk!n1qJ$Vz%OC#NRN1uJAIbNh3qmufGFV?U}fV2?7a%Ti`hUDykgc~y5>I?0;NQBr#1=H z^KDS17Y9)Vz36(@h(A-+iGw^ou*3!fGz*re>ya5uPuR`v*e6L{lN9k}P(16hUxt@r ztHqkCW|+I=0TgKLg%FKps33oljnp#1%Ue_Fn8HvN8eUEN2XCXw`w8^rXcSdF`Od7P zIWo^pU@E;TbnNmucKYURCKI^?7WYVU7gRUn#&KFW?)+Y?|Ad0q%n~ndn*mGQFG9)F zZG394Gx$`;at-xqU^3$<%=Wkp)3WBkjMJ|0T6rcbkRB(lzjK$J{cg;?6*9~Z$EJY( zbOruIT`O33(Hh$doSV!(RteI-pHSrkU-u|D`mS2-ZzVe{(N1B3yS4~pIp$3X_)B}<^n>LQq07J$m%Loh0|knI?|pUamurOq#E z6#Qxc#m&y3WHh4U<9YN!-j4R?dy&!72dqc5nfW^n2jiM*82V=jI+?Y?cwuM!&Hg`j zSJ*$>pBhi=Z+N3Z_)m8FxecCGPvQOvJY16c0WPLbg!B1CY|PN(VX1^v9_sSNVFy$&k-V(6-`1iE&+Q&oZn_GsDASEWC&rRg`jv$YXSr>L@!2nKAz zB#ucug=%?yZmVrCG-n#CA(N~ z5Pe1&6YKWChPhr8nLb=R{2NDCauew1e=_901+Dp zwRJI{(-%rQ*3%WTn$!%f$PPRI0O>^f3N$pRxI!9ay#v0o)Fo@g-i$+?ly15OJ-UxmJ}!p_w16N$Y|8>Ln1jB?CN! zdAOurHhdH2fieDrv2c_Q^L!^{Y<-j{!1MsbuNGMF%SxDWn=>hSkD&zTi)^%~GFct5 z6&cCN(yd*4*=t=9EgLnDHV2KPX+n?h*{WO2M`1as2$}7`x6Rx*-x#Vx7fd@CNcwI& z@%FVx;*vYw_`Gxg{#ZE|&&GR0L{BW1pXuk#Zk)kkmvTTVXeCC^jYO%eEKV^h8v9Fq zS&H&}{Jl|?I-g9#gOc0HW}*RVsfJO=Y>pG>Rk8L03;G&%0|Is?QeR#-yxn+!w%cuC zs?%esp?(p)aGF3vH#<=~e~(vFYGp?5?GSWc#8j065sp=q&GR{g-}mN1aD%WPUw0Zj zKjd-+yQVe=hQ-(~Ko9jXPA%<-~ISMZpKIcOG&%@${b>foIhOE&k zoms`IQte|;PCwU(wneDn@FIEAz5hRo&cuyn zlB5#SBy*8aNiwC9kho`U6h%@=5~UIng(j5-qVYT5e{i|?oU_kb@B2I-!Bf2y$9%2W z)eoC-^As;U^3R5@8s#|IL$S0({5Ld3>ClYP6-1p(SM@QIGILGPiI0i-C5%0gFmOf0r|3djMj8nvY2>~WpfHaQ|JcK-`dAa{MXDe+vY%+ z_DQlTR|6UXvS9No4L0Vi3e{U0iT`eA(wE0yp=J;SAw~$)CVLf zJFifoiel1y{XX3$;7aUwouO4E5`jX2jE$DMof3`Mt3C9)B7aBiYC6u2kBr1O1TpWTyab4~~)>jW}u zSQ(8MlBw)q`ycVs!dRK{8faRDOJ1 zgB(e_4Zq#|$(1QaWNp?iVtZ#T*`6d$D!nF?FAW6sv(nigQ{`y>$|Y1(Seo(-|D)Pd zKH)XD*LWTm;m(vQW4oUdiOt?j=n6<6Q~sQTlxYWuEM8&CUoRqGA6Mc{F+p-<)Pm~W zivz_jX&QXQgNN?Te6#Ktrtac7qpl??u;jotJU7>bWgY)X(Kl3RC?plEZjtl-#N zk8bhKbM=VMh&>#;@GQIPSvHtN^u2`*9MVK!QJ3k zdm45xokq<46tGakoLryghOHb+{(6flX1MNS726u|Q!7L5Q36@H-PWB@Ba6! zTqfI7lI1P_0EbQtFr8~|f%`cYP0e+|jtJ1^xkcQ5!DCP2D(K86K5{Xx#31?we$SkY5C@b~c~s^<@2 zd3piGC9hFLwh!l7RMEK=(?MloKMfEwBfQ!iTDE-$xjw5MC%rHuiyj|hALX{dc}YjM z?q3Z*XSD*HNxFtEwX)#r<^0f0CqmWQVhJ3ff{`X}>;Ndhjf~J#n zl{s|6CTUVE9!yuhjl(ppQXKqhPp5u+1YVn*sF!j-*tAvSq5Nv*{La^m`ldr{-TRq5 zy_BVR>g_~YC_jxZS`bU0L(qwV-)FZUqgn(Rugllt0Y6ZoDpe% zL=LE~rI{sn$Vu}=Dijw-k`rZVc|`(9eLv1d50zor8D%VPHl+I%1ZiO1V!EvO5I&a? zp%u43f{23zu9wp#QUzxi0p0}u@79OBS!Wff{PrmPdRUBRY?wyVmTyG#cAzC9^D%l* zj;e26jouS?^T$3$!dTK#5N`=41K!6Wv@D9O8b1xZv|A7;7X_0zevuCrLjR-*RPL)4 zdA)|48ToA?p95s6Oko#@Z~ld*f=l?%*%c_i;u7m*GKsf&jR0$-UdKrTtC?i!W5^j< z;9l?=Jo0`TFN8$GjUyjWXOAw)8=6O5ti*|+ngVScnGc&ib5ZZ368JBW|3F^+m|sG81kse+x0oS7Cfm43-o>!v@|-YExB! zuG{!@>`*qpH{>wAII{(wn%dBc1Fj_W&r3}24Td1>%*cG&DeBYkP)uXr6JD^Nxi@))VYvGd|l2k zO;1yaXTm?QHMApnm$k?fCIRm6)g$v%Sd>gm^BsZE8UshgG;)9JZ|FC5uDzM;XD*m)`gx*die(;?q@P7X=9QdY0 z0e=wdGJ-LXpIeAL4dXA|xzy3iiDJ0ajHxWr1~l5O86DKe?<1jBc+% zpN-DY=5-!-{&m4S^_=JLnmv^**pFVTkI=rEYShxkms+JqP^X}Gh#j0iKv0J<_PUA_ zbElCa?fXpf;z07c))T@FXOS4GeUMO{#<6N;h*0iM(EJ-lj!T{e&6|;=ER4$#z1T|R z(Gg!xSWo!Z#ppku!=U{|g`Tdlq9uQZaO`F})pyQ7-7T}}k`J})pB?U4sv`t@@+mTo zZcrm+POZM~;pMoP(7yGqn9ZMxJEDZ~r^y%aZ)ABoSzHdm?H2#LtOfZb5zN-@F(*~G za`{Khze3@IFxDxif#+TL$=E$z3N!5DK+X-ge6KY)zWHb0P5${D8_I z9)NiBWRT4n;bpqm5QXM`99X}M7(I!npBl`0q1lw)d%TeD%!;S$1hr|sq8myYii34! zCIk#=khG=SK_=o7*s08ch}KqQ4-0VpU=NPNrbohK7g3MkU(Bak1sXc_Gd?fbh{qIU z@p9O8$WJjMJ+70*YP1IFW!U`wmKy7VI~t;e-4st>)4xx2y4y( z>VM|A@vJ(AcbtYv%X65%Ig>HCVGmgRmZr%G{*34}BPuDGhOf)H_kPu<7*N&7mN?x) z64TC3RbPXnzs*tAr-tcD>tHMBH8?sQnQoN_(A*dYsZVj-#~a zDUfOj(n}0k{o)gFVdWHh<#Z(5xyF*RVTv?+nIx4&mhL+>hNeCL=sg&1Nmf9=Ofh6} z)qU>XJNOb#JNMy^2aaT|`+HQ5bs^D?N~r5*O%BLdfzBFF5}}g@E9Mij^2lo@(D^(z zr6#g>!|JHb*+a~H&YgVtP%bp7=urh;AKV@{0{%IU!F=Hd2#2|1H+3NTsh!yPE|yF* zti`2U-ANN$k72IO(Bx5r-wl_rZt~kP#Z8

    }q7Ye($1dau2avvW`)K`xDseq?L4S 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 Th5kiXrt=cFl6`>+TDqEB#+cW2uWJwF6 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

  • ZBSQj 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

    hozX^ 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≦KJ& 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%0DBtLvi0&<95P&wt4y1r?!Qg)jeWP# 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ȆisHgS|Zwg(w3v7jc8o@LF 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�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

    eVV{eT6U=MH=!`=y+9RW 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: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%0DNnwEXCc7p*Wh*O__?ib*UppO zp1*#=PVxLB?K{2fj)5!xoxZT7Nf+4_=bx>*9Ap5Jfm1rIG#E-ea zRBWf?EYg1HK`pVAFWGp&e8@pa_Lp}ceJULJrbvCBr{>7oVr|J>kM~T2! zVj^5=a0L!7D8%Qz(L(8tk`uFTQsZC^!x{O8`X`r=c@4cod#^^xq_L; zZ{S<&YHV=I#8;B#sQqdZj*=-r_t#@FJir4dJ!eh?_##rUJM-Fi#reB7v7Ev!D`8) zwZ6RzqU_Z)jcE_(JpIM5P zp0I9(3ESR#itO(CQCprR3hN8@!Y%j5nE&E^KyG|ztx}Ap2p_@fP$?RCEC@7K@SW?Z zGjOl?41CgN;5qshtQ1X#67Pp#m@f`{y{^Jgt|k1qEKTKQFT&Ga6)G;c2c8;|RB#|4 zDi;3*T9OUxo~h8**XQBpu3^Y{bR4u(q+npo57Ko-2I`9TkZ%_EKt6U0tex%#4drGK zqntzn9V5v{`^f_FYhz&H%29-kjs-9MDd1gI0bJWWSUFe$H=fMr``?YA*Vs+QZzzYo zRtsTk{e7@~5k#z3@aOH)VIsNzAY66xfN9R_z))TnqT}9!blrQBZZd)%h!=w_#Uc2z zb2jvzmZUuTMR@T@BAB_vW8ZiWm@nvH2ZWt4dU`#XAln0v-kv1W^Z9+*2?Lfkm`b7^ z7BQ=+*Q7v3h1m`+0QuExaa|*lj}J<4P3L{0^l&^*-SU|%ap_>2=4-?K&{^pBLIE80 z5o60kKr=BE&ke7K4}sd4c`BY{>^qOwq^y{I=S|QRxd3C=-=|_f~KQ!Z)Oa*S-zAAKZ5~6?LVVtME9K%K?p-FEn#)_T6wn%C2YWQKS zuWvxbq-5N&_b|$>3diDS@fdq?1MX1@N8ddA19AHlQnrDoH0pjZ;bb>PO_) zq>lm#Z%u)2j~h98<0ey}#{@6dogjNiI=PZFmuKpYC$kq%t<@V^C9wW95&bI? z@#zrk*nUx0+MJh3|A4eZ1I1{-{St|JFM7}&$rE^w0G6k={;1F8K z#!qR5EUPYIZsKbZ&tI;0w6*Q}_0UF+Dt zwzZE84aEvL_hO-Qat<+mY{aJ7M3C_f4WuFI0DC*dm&E*DfB}a`;@p~J*!w$@1;j_- zp}DJS4-YRw=aM90VD%;(J2{Fet~`k55y52jv~*P5VJK*u=z*gOEHQs;CO)5g46i3Q z;{U3m1WNs zzQ$jxC2+(A1@6%cPn_c3fX^RUp_$=Y($0iJRif|@)yCG@(Nt${^#tmiz+v&dkH)7R*dViFCtc* zy4>yfwM;~87I&TQMg1~8-iLaHof9+R5)&q~@7Yq^{O$>sfyuW~%I>A0Zto=SeP$l< z{%FrFBo4&iz=g98lV@V_GTh@eR|PJeE$DmLhdj?ejdgYM0>bYEUre+B&A+^->TxbC zKO@8CEy^MfyGCgjM82UjX0T~w`R!N2%HXrG7rqORy-bIh z>B`L2I0-DyE5N;ohw$YN@V{ptIIJ0lKHGK>xr!2IDL6u%S-W_7FZ>Ap@dG&IJcqS;`eORoM$9- zgEO06dk+4X|6yS@A3)h}9u8bUnB+1M?a$^yRCA_q;ikhNwd^J-*l`MOP8HyN>jdz6 zm5j#oF2lze;aK+UD9qb52fu1)0iAgP3%x!O=cli50zdn&@Oy%eA}=8Mb1F`28~}}& z6g;z08x*o$W6Z@Ga$Z-1yR=jee!i*Z?`k3tzVRJ9@F)``uJQhQ=R|mWEe6kASpv`b zcbwD)A871di|z5!uxHD1oMmu@86+J;%cW<9uUoBL+hc20XCHzn=Wz1-S2$?Z zEn%vK56J$rC1m4^>14{WSlC(BLB>r9f(~>iW_BT@WB+IJ>&RtcwVM`1uQi8hrsKdj z&=EWvW`UOfCU)ClEBTk8%&v#@GmGPIEzwL4hh`oZ6ex@0zgg)d=}Q#b){#dXuBZxr zpHvm@Sfs?nHU|pUMg$Az@3E-4E2D|!H8#HXI3wLb>bPpm}pNS}5BHT$=)La9x^U73!&2DmIGk4B=}n+y`=po*0zU10W+H*9KrDa`eWB8gw?!0AC8_*{4hta&Qi z7FY()t{-PBJ%XT8?UnFeNdxTh@ngDDxqv^57@wJfY%5K8+P9O>QICh;hB;6*)0XJ= zHG;lyB+9!tz`^hYq401SH0XRLdg%l#mdt~5J5Ph2^Fb(EWe>h-aYWxn7XmL@z(1ec z@LatH#*Tdj^yX=(J+m1Wk8y{&r_Yk#E94;I{IKAMgEoI}|3NB^tYB;AJ}8z?frl#? z*#44*kX6y3D5}AhTSP`~Zv^8@>Yyohh^(0J2gK0`W}M}q#M2YJ zpX`VK63+{x2hu@pvXkYeUzYH-w~UxxYGyiP(n;g#LnJ%PTX;lg4(z$~T+q_hLTYm} z$=KW~q4}u};;x{B+AN(K%${F2aR*)In35xG?W$7knxTAtVndut*Hihr#mqy}`?6vGh0nZqie3l*i5`qr) zsZ5>^d5l;(9f{Rai};2L*}WL#T!N~N(%jzWJTx8_QYn77{f8zk$I$BeADrowg!-1A z_%rDQrn{H%%&Z64HdU2dzw#&ES02GFf7pm}?>^v5|7`s7N1QwHp$AoYzh$;e5dbfT`N;iTJ9hk4{pQNGL0B;b|e0i%)~_t6Y(>>g8p-?aDsUoN)D*v z7L6v<`Mm~9>)OyPeKJ~RbmDMwA=|em38nqVvu$f0Gl@-QWQl@0K5_gbn6qUfstk3o z*z6~Qhf^zsI@PJdels;t>wU{qZrmm}$LR{x)gFvM{Y+3@_(5oNb_VRr z%qM%gyPopF1puQ|@-q;L`_%<-aZ3x;8`9k4ToDqX{{6 zSIMi+3>fEU#{6~i$lXJiiRZgG;u5tJLSLrAtJeofLc~R4nsuDT9I)dF_2q&|XDi{Y z-vu&mLn64_mDIXE-wJUvj!$a> zx^JD#XmKU1E<8#WYVHP`h%lkJ_FXUKu((^F}3=-5K)a?w27@2^NQX$+?OC>IzZSY{^O_pI>4t0m3 z*!dYzaAC%8R%z?bKc7~>;hFW2#ZJPowiwOP*afRPp8$KAO{x>Z;ob**kd%ExHkYQs z>$-E0vMdM`^>2e;@l&#;gLi{X%7OTLKXA;ih62B9u%qukP|*7eg1iUte54q?7x@>e z?2RFB_%}?NR7WZz-#|@^2drJ9PIv0bLcoqo5N9WVCHre3Q!xkbj1i@3Rz>jX%_y2C zVaR7YZ^2ma!({5J^&n>QM{pzO3^d#?B25yvVR^+yP**qx@BJ4Fehs$6^=Em^Yvwsv zsd16yKHmg>lPideStl4Mh(b+KJ=p9s6P&-30*Y^YS%G;z$y>XDZOJ|e4N11_$6yo~ zH4d^*r5cbZ*ouQcoZxG-87h`NfxzKo>_0x^)b%BoZ4l-{SF159cP2vVpDVa{>k=?5 zFF=p0Q(>40(AM%|`d&twm?~xqKmh479?kjY5>yZka?^7P5cW!P#w{1|Xto*$Z(~rnK#~hu9LE+|-pALI&a#&wFYvM*ziaDw zhgF4_QNj8GhPm@|O_?|}*O-H?J4*2F?&r9nsunjjKg40TRP3>xgBqcHN9IxjW(P0A zn(AR36EzFtZazZQ(MEVGw;F3-0Nx!{i3fyR@mBhHe#+9I6WM ziWCLA+~OhUz4) zj*%Q2d^-|EJnG1^CHA~)*orBuOG0SQ2Ar~G4bg~?6NE)=5;TXe1#{l#+GRuG`-oKX z$)(Fu_H?&p^`aZi?bSKG3vPYuGaUT=h4Xf0cjw}D`p1d|9jOV~Lr z@~JPL7!`yt&+&Ij-L-LOHQ_r62sT1Z0|oFP)fUPZBT3%EQRJxo1CpC$Bupo1HDzU^ zSnH}ee7|ob3CeXRgY$Nf{D|MgEnqIW*(}B?3#FMwXFM|%b!N-<_gdz?jAMx|RYcd) zoy{IM0miCbU=5)=;p&(q=D19rpZTw2WyZ0@#4uktr0`ZCx~+wsky*e3$4y4lTaL^_ zRUCb!^N9HDzrxPjGa>!u4svhyGqS1tv|#JkR>8?}QLI#Y8Z^Z?kRhf(7PP?ggv8_Na1- zflu~fHt_TVyegGs$qij_8hx0O$9YKqw~VDLMS@@309ze<3f8DAV`ya=L_9EKPd8

    SU?SzL8TEfHsV%hGBeGB}q!tnr|CI1VC5Sy@1lXwqWBZfIy#YBWh>8$yH(Cq7eu)#Q zmrFq`L=H}txr1n-IouD=fyT=(NwjS+bebu`{_$&IiES2)3rm9%`RU-uIm6!1k>p+a zD>Ai53S!5tf=2!`4_2qZ`vebY3YiOYKLxTcCHZ8&*M3%@GYO8qNny9PCd0A)ftCjs z=fTzB3FK66K9t(`2={+(0T0G^;R*&|rL{9_yA=$EYrWZ%t3Je~eg*o>tt7IMr*YBu z89*ynqEI0jYFwYy%39rmJ#N5^T+2cAZ#3H#;{v^}lG&DS8R)IP#%{mT0m)kh?8^vO zFx?cuvinmZdlkQb)LILDHFNQ@n=X7*m&GsRCqgdoA*Z`#p}ji@wNjT0B#s`F)Gk_aw62vQ5NcfC;&9bXO4KTR@Y9nF0=G`Hk<}MT@TgZpL7yQEh3>+=QGdyU z)3-6%R+>2Q7J;?^eV9Dejx~Bd6+Ap0BeZj$i1jbMQSg4P@WG2%TsnN6^l5I#`7>Uy zg3T+i?8z299dj5v&do*H@D$9JJI?a=TH@aUWXu0PXLlFu#|uC7Fl=il_5`d#Yq>MH zw=Wj2iN@po_F~is=e<$hzBtM7JRbaHg*Fe4;7+@>c=ntVzJKU~i%u>;x;GdzB;9bV zeI?4AFUNgDrMPMOEzEJ6fUto-`_|P7y%N{r=|M^MBghZ0*4HwT=l&SdB!~9Fk!ZL* z0B;WFVdOGTtQpI5(yzO-E#W)y;`pV4sXpz@$TO?9YxP0Q(pJFuf>sO^#A3;~R-AKd zH@dV4@tcc1`dx{_-)pDg#BXQu^T8tabl-2xFP0^va(-gn!SgJ8<0TBF&L}hLDvB)a zWlI%aVenFWOO>y6_~|5J#R(_yB0I)f_gCVZ{O!Umb`P-0K3yQ_A55jrrc`$usGw$*h z!UerF9NQQVr`#rE>D|>(m-&P_Yx68Cv1FWH69DH&WMYN!Y*@>m>$~lP;7qj=?t6R+ zZUpQ>kZU)CN1vth z&@)yX*Y(_hdCnoI<#8G!METyp-!?dL*+giNGYB2aj4X8)T!3!%3+!fOJm8{vII$rg zMy4#nl&2_@PfYsqe}EQ8e0kx2FaBi;V4D8^?hQ{$6y@dGPp za9xCj>og(o8)KP93!td?gD}+73l2`OL*=l^@G~U=FU?6Hqr9T<{el63Ye_j?;pYwt zD{D~Yy#s6xnvBPlRzq;i1nj*2o}Avd0&BlTl3nX;F)ry3ktN$v^%a1|yHq@pV+Q)O zj4@C7CiyYT2xBaZ$f<9~*mxsVVz^+KjXF{;jJV{6Lle%kbL!jCHTtj6t!ojcsvozU zojuGxR#plB%{xF87OAt*4>jRC%wwBZG7{PMnZ>F12(SLyiJ#72WRmk8M7}^4w&;bUeI`BK5qW~r$(wz z1kJDa3-<9{!s`VS1lHBwxG^b?gsLva#7jqD-?A1ad(#k76SMKm_zbcoF%fs93=#Uu5GWYpKk{4PBVZnT_4zcd0w;|{)1^|frie;-X08p(u3*HI-w1KxZo z#|v-s2_~;cseP`3l0ye^^wOj3gXS4bwU)w1O*!}|awoAVI*uKMb!4^4a`t0+nQ;F0 zT9&*uM-X->7;oLvC1Ve0qT8iX(zA0Wd#*bXZY)Y?>T1)W_{~IgEl(nMXZ>a2Ws#(K zdzUcoS*+knKs~*=@8lr zZCFPp&*%Bs&)%CV5uc)6xa77Nb9I=2y_LDb1LC~r@TWEES$nal8`IJ4?->@=-5|IV zx(FBAcao3OCSlF{D5&`mC5W}ohTpGlGWEbDBC4N&ck~ak^^T7CkY_WPTw1|*g(ksu zhcisDaHHj#;_=wlH~Tb!tr}wPHCy4(sshBR3locg{2l)ZA<>Wghq)9%F9_(eks&pcI>vx2do$KVgUzhpr5H7nULNW}h( zWa0uNh#vovsjhH`c=KfT({c(FJO~%|S=W$+ft{q%N(B7Fc<0d0bh6BHBWs_P#;(=X zTTG4`1C?~8VAZ_YaH_^h2pgV~e;QXTO@8JJzvMX!Z>SFoKYR`sG<6rS&)(C(i0dF( zp{-=?uJK@WQiM!Cz{tJFg@Rvw-vzIOnZRbTDv?rmBJ;0T2{s8H2=5IC2oIVD3(7qn z3s0YZNnYeO)XqMk1%oe=NJh&GQvD}}L>zxX+RR_FJ}G%nlzGQis*A#YdWbzxb%#r) z7g)$xHAtOT#^ynt(E_L3yH{cI<`m)ipMLGsx0pE;=Bv&CmaGoX83 zJi08)0r8#T*se4Qy6lhPg6qvBC#D#W?{S2RA!T$_-3XGMW@y)?$j@0f;}4}oa@aKi zCrRtTk4}G_b29{-}cLSd4743foKU`iJAJxQJs^>QD6sGSA3e`N7< zb3@|i_=KtNuM_N3oWLf}%7QH#BQU1)5Zw77ikmxhAph$GJY7^op5%42{5>t?bAAlI z7*wq-B=v0C`AV{&at6C`y~J{4;~}D>pF~79cau3I&A@9hki1Y^;$<$vUT!d4^lwvLtifFvg6gO062;Bc=UK$^@ znY}yzK@b?p&lY-WSP0cY8T%v*FbTo1=1L}KZG_$n{D@ZKaP6L7)0xb=>#Xgg3c4*A zhoAFA@y%pOj9XqnuA3$cPuP_R)~{W~tj7Ej?)Ni6gITTYa*QTA4=f-DaxMwd8?;$~ z!6w4VFJ`KZBXN7ZB-*E(WFG{31v|PV1j|c|iQNZ6l;4`*=%W*e_k(0uT(iR? zBO}OV$$QM9(GP;&O~kawDw0)~iaSfcuh_^C@_7e0rGJb!tT%E!p&6**wk7iG|ITd zCV#Yq_3G)uZ&G=n81+>cK#o9)x3=(_%{@}6v6eU=xlU9Te6uWf+y`SdUerh>hXNO= zL*{JV4j%WyNPpCNXiK(cfeY;T{M|}6bB;EYCrd(b;c<}PxBxbk=R*ICwXl6u5quAq zfwGPg_&lVj>)1@@mFL6djKgqJR0zJ6xe#i868>7NL;fa1*ytQVmhjmG)8Z*m znUey0U&q0W=S47!cZNpKONTQfG|8Js;V|`z5jbS)!Omsb@bj<=B=%;&t=C4d;lFuM z}6O%T4x3527P7UZEjK$kqvWmVMyV+%E~lTwClj_Zls_z2jL ztO(cgqrq;gH=HXN0X_5vai{g<)aR>~q7wY)_;>p}D zrfHc*RbcCNW*dE-+xGf5o5suMmk`4(Mt&bY(PC!aVU}fgk)#(sXB9otY?QJ#Q7~Q36y6SyU?VGGb1@2Kzg(|PvRud3yj{%v z^n*yT^;2?jal9bCUlFXG`A%J31v5<%L66d%Ec-{NP~^`kVL{=2;g02MXnyKE(+IXg z=lBS=C3l!5wVz>?C$BICD@V2)kcoM$WCOjqEPdmBHs$O%q?a6V#cd-Tjy1y1rK;8ptk0#_$|!j?YBZz~lIAU;&Es zugA9azv)KNqznvV7zqJD?$EMcb!g&kksbFGh8NN*B=5T4Y zxGaOx?d_5nCSOc*Ztq0MyFjG^4&s-R>3G>)1Rv+GKp(y#`d`yWx_)y4jnsQf(M<~F zxc79|iL1TbUgFEc6}T!NaADsXw0j+j)o1OoVEGALrn4E_z8d4|e}cHh#Sph~pK%KKpCcidNob~cG!c8nk)dCkxrMtPbAm>ePZ8R zz9OY73h0iIeZ;_C5VbpF*a#3uZS4YPp^h4NZoDL^hs@Fcks#=7@24+=RA8Q{D#`@R zh1EMe(d1e+sZjI9t!~T6qpiaDH;@l}icis5mN76R*qcVGB*TFZKWSR0Gw^&?$7#1u zlWj$2=#tn&8o6HK?ex>&qH~Wu$NAe%#oQ-F4so#OO)SZ5j)29lPLgkRr#T{S1d+;) zf_v-QNzf5rP}^BYt_n{BvH6m)y}}&+(OKZMVH*fWM#4*8E2vQ{0Kt1RVf{XL$XsCv zGg<{edf^jNVYwP?md%3Y8s5;p*a{N&9E0!t>%m-gAI#zA=G&C^!qd;*;IU~xSaQ8q z-0tn*vZXhS0G`EddY1zth%UoYq>uY#eb`{a*$ z1XM1X&g~o%;p3Jcq*F8>q_*-yQ5knn5^#c<>Tf|wbs2be)I)CFd&1Y70t4|^$PI-Q zn5;U^c(1F3P2Bk|{p}j4tl(g16{&EKvSfwfO}OEl1nXu_g3!cTjz#(tuILnztd>l0 zN}UQC4!hxnWCv0BmJV-!jdFG9I@Ij40&BY}SlHqMhdo;%X16O?)!ziCTjsDxs|c1} zj3q})&%(SP{EU%B8vMSsj%b)%28l6AxSibuxg0-a)2DK{kuXT^SDt{UKW#zfcml_& z@Q2r+{qGzCx-PcTziGLrfok zF#E-?MhZ@TFgvj>mlWSht@XX|jGQH7|GMrgAb_5E>$+56C(3cTZJ zuUqoyWw}Xanzj%+eorK+O-s>d2W6zI1hLLqfwukR!J&Z%^jkD9W`FDB`hIad!Q@ls zzB7uf2&1QGSz~$7HM-tc6T_!4xNDIY&OYFUTO3Ye*sU=14vxkxDrNYpITbq#IL2j6 zE(Uog;o|Lecr^V0erPVildWek=|U1dXlO=zGmdQvZ&C4cEnW{E#P7OASe(G^Ki#gO zB=a2Gb~m6Pmx*D^SA!8;_T#?L6l}V~U$@1j06!%0);YhZM!(lQb#M7o`qHV^euAiqx*bn-4lL*<2sf&2QnWZ&DZ| zl8O7xCg`p$r_f&QCVl!UA6?XWQF`JU%Ct|#Ex);3PDi8>)j8PHA5Z1?WMiYL4^=5l zz~1ib)J`J}&wsGS{INsmbwdd=a};svM{hQ913yN~Ot8^HZaC(zi=WJ6(S6<$91&lI z{Vu#Xys(J=6Kbb3=SR|=BQR z4ywTAxf{t0IZN2dWwOqDT*A$)_Q6ZPG~j~xAp40kOso@yf=$a|Y491ce5NnVn=b~> zKXNSNhmJ6Jq5yPbv>W#1DCF=lp7xF>UB&XMy@td4C zcOd;0b3vh75?=h=1cB}wVHa0-OA76vqGcUey)l7z+&xR#h=J}QuJ=2A5}1soApSZY zww)a(fvL+u-q{ZN>uuoSj*GA%&>hYmcZG!EX)x{CRM>Jy1X?)e`BM!_I^O$&bA~+e z{}~T=J#UckgPR~f><{Tln*j}fXAs$qhVXIceBz+Rjdq76pfp<%CUi5%{G%!`gMWez zF+2sgQHYF|L!N$MZOlVvR>_3Om z>t)=msF#-t?UMzbjdpDQxp`125?9kL^N1Wib)9*s+DQC1uV>e`*uht!Ic6LFE#Q>c z(-^Z1O<1u?icU%Nhorl*bo<$SIBl%N1{o}e-iccJ)xnYoZ4|<0t7oL}N-MpsXbl

    ;`GADnUkP&ekGBo_!tSQ%#T>iM6#x}$g@#g2u9>oZTX*7b*^{ZGH zm)qq2>Rb{&Btv&{zE!y`SX=Sx9hsq|4C|_GU_V(3O>_6JDwwNUS zh#~cPLhwFuHAp;tN2==o1H&aV;X=cHc-Wdo^xq$a1Eiho2si;Zjvpbhs~q5RwG~-@ zb3JS{zW zpr|Pg%cow2?&L7+9M}bOmg^w@Q&q5@u)z%06697#p-7xPL}50TE_MR`>_prZrU>g2 zFQecGDTs}|jr!3BU@Df3l9|%v&@yjqPdrG!T)2dP{L1LU^hQjQk)baS+{4PRR?Nuy zCft_d&ZO_5Xn*fFow${WHrEueXCwt%YkKJ2QVx-D{w;6C%Z2#zqDj^hMw_xkQvN z+KT^4N1{Y%3D(zhdP}X_SXs{Ew3@rPLFFRqeR_x&mL}mH^KQ(@mgTgb-S{`!3WZ-? zL(T65mo2D6&1Jrr>+=OQPG)16XD<$PyQ9FOces_~!pLj?#@R_4D9|&Eq6>_0!tFQ8 z%#_7_xjc29=DPT{unSi&*}&bwU*pC5*Xg&$N&G1~m2?}8p|4)DS()-ZOcL12s#|@) zItN*L=H6?()mOn>lp4c%G7XIS-k-Q3HJhCwI*41pMX~2j_F>wQSH!391xg(jhNp4d z*|u?#(YCC>!bUzbD=y#roRTrQFLD`!WnYs2bP}=gSqk|Y9fQY2kCTg9z8Eos7n*c4 z@ObWi&**L^Kh+h#2ye?DQ#Z=uoLe0euq=~{N_vDe!!6n!sbi!B+X4l8-XdBW&ZQ>9T>Gfx=KQrk-tm}s4oRB_>%4;7vK&{{p&X)q zYnos8dk9-b)y*5Hyo5~73;S5<33z{$FdzQG`HQxSnUBXjhO877^M3&aU?-|`9pUgN1>hnaX#nwDnrx;H@ zD6mi*Q%N>&S`+Ce8 zE1(BQGx1h$9lh|N3`Z`Cpwn(^)j z!8#+pQoI|aTX%F{2O7WB;}E($b!7*H>gE=AV+ZoreMoIZUXGu-t?M6lwky@e{NkxQ zARu42jpr$<*o)SE>gYr98KQMHuJ^DuRJJZN8FA%-8FihDt|RYWzB=!3=W(iXANFdd zBmd0L7^rt0qg(jv_Qn?@PZv*}#>aFF=NrR^FY+*R`yloERpvkoD~c zjfm(bg~=hbVCqZ|nmtZ^I*`aE^I&U(F$iqlLf81l!F0!;Y|s2yQ2X<+_Ii;y=TDge z0UAMYq`8x*t*r#ZEF}_XSqOjRor(2^Q0PyYK~(Gxf=h1+bC>hl%^=UoJgIVcAMt{` zE-QxFS={sVuLOhyI?2O&?E>edjsl5$#7^zK1BZ725r*< zfekqf&uuQjDIK@!o|KRGXQGM`GjI zxj#9s?d0p)IATv*G#aV))r)lWt_aFVDx+KYGpfHv30E7=MA>kzhkap;dj$CL-sl^O zWy;vQ-ij8kE~lrQxm^r*?jJbdjJ^}XDA^%}!sH}PSH4a8ZoXrZ8n)57;(ut`h#Yzj z&A|F||Djx;B+iU*#ND~7xa2`RO`SdqqhvPXHHp1cj^o9KMA}npV>|r4-<7)k6vCZL zQmCGvGiq7$;@X4W*tm8!mX(EIY3)orCe3M{B2Ut>V|@7ZX*9K)G8gBDi=ajKNp!z3 zMx*C*^FYZsdSE~gGa`0SbN@V?1_kV#NA}p@6i;XSo8V*ZSjzM|;(D2C`Z#zyDjfSn ze{JDsb`RQkwN&62@`;(VjX>Jb&w@ z*;yKluiN#hQos{j=Xizso7SU z)^`?%(rV~jOU~DMIkncMIt%Th!s*p*Uie$Ijh;E+r-9k^jsoJ`*lh~mn<^tj;(^v>sYPydc%#_T$p_;ncy+Qw18 zqHye#ZKK6E!cfe#kh&~Tz#Hbz=#I|m=%Mb6Yg{AnVApCK&Dx3cB&TD{gHQDLja&4q zr3mVn{G{q>oGw$_3?nZs!dK@3ADo^^wVpK47uIUb-G?>w_D?yAYVN3ZK9(+j8;QF* zn%R$@i?IENG)Y#!LuFgW7|qMdcxIxXCLhj5*<)rX=G1|zl4Z1LZ!yMt*E4%n4st!p z83r4D(W*O)zW;O#-8Cua6Ue!s7}}P& zg-pBpgf9JgjL0UIQJF`sjOo*FH4YJB#4AgQ_FHN~smodFqTvRyH=nRCc4&cv-)*zX zS@+1s{eRi!^D3~(y@M@zTm+g1Z<+bWLST4xPAzZOSCYCtmQCv4%lSuw$#nKC*nEm0 z-*<(B%8^^dG$;&$_#cr|3QnNneUaRYwg8u+Fw(y$1sa#NlF&PxKDx;Qvi}?e-|w7{ zNhuRPK3M|~FBHM84f`QG|0J|8(uAqXzF@NPDM?p33fJc@fSJ$FgKt9^*hj{~mXI@G z=NbjY&qBfPbUu7C^8|-$_qZM}3x<#01ZSommK&V|p*J@GBcdVUNG`lxS_q}D_QAKs zk70!C$y24Sz|#abP?h2QsgvpV0$pX*#OR%-F7NSKmK)ItcH0($jNv6Xr(OUP#-(uF{XXPsc|pHW5BPsw42veKpv5f~+@|G& zLtY8oU&Wn?5{b|dn-6@+!5sg+5MFg9!}ye6BDF#_Rh^dMuG z1~^DqLu%*|(Bw~rHAj3P)agH{IJf{7W?RC{fdt~J!&NAK2m%O`hCY0sB6> zlP^+QVC?V2ik1t(ltWW$Kh3>C0=k$C+^`YNH>Ecj?6eQ6L&H@y2xLsvg#8;+UdR3km6T*i&dEx*h@Xfwtxy{mMx zkE^@uKhnt)d+|Yx3MNer$Jr}aC*jHO>!@K&6#$@VZkHDn1sd^Ez`5 z=Za6Siy1nDa)-vyI6e~hM^B)rYCbLt;Hi7(d=rHe1?u_^*JH*T(YkLxJn5LcMYxVJC_p*G>2*AwIVgs|Ii}5S zoYOpn8^V2X)mDMJu}h)cUW>18&c!xAb#V;y^F zNQD}#KTldk8yVfa1V&`pOr~*q743cg)vU*=l%}2XA;!no(88NpL_jfuEgYug?N}9K zdT@lK>*5}5U-29nFK}!d|d8XJ^W{80N-AJ0OPkC;L$dI zbH6$3!LW+Qd?ITnv@Vjoa2HWr7YdDr3E&gVpMdmZd~ z_?ZNST>;fl0jPdi1U`GzVfLG1*!Zr8%;vNxKfFVU-#5-r6q-!@B#*(kYZJ-&F92o< zOo7pg82I!4J$cX=4#{d^ME}+v$nBX<0@POmUurJd9;OV{3hrc&fDA0z`ptAt&{Gnf zzNjYT&vxdBM+TF1n1>XN7?B^x>PcclB9VQ$il{9}B}MVA%#LN^iB$g^|PX`z>8X6&Y1<@?V_W3zQl62 z1ip7HW}0GEQ6lU#TkWzIJDohqjae)4a?(_A?RiZl_8ua}AHLINM}=5fZck$-Gn3@L zJdOCPkBmBLVNpviQBMCur{u`de`3M7bCmN_bG@ME$P`i{y$t8b#<7QoUC>|Mm6m13 zquv%#+Wj&Cr>FuO{qYRPWz%75^W5-uRXzd32>h@pg1q~E9uptmBaP;%__UB0gwpq8Ucwquws8|4y--Uw{<6SW z^G>4A6NyCd9?80R9N*MSLvfr5ZcSbXrg`JEvseiRy87r8mmkFbhA4`bIucm}cNFtf zW7g9ZIDf2wQSasWlYy>g29A5s@=qaoVy2El<@bq!aX$Sp%YtYbh0yB;OKXJo1=BeH z-^Af%2-WLvCaqSHwCY1SBg?a&CdJzjNg+|1eq#%9ZOvdmzy49{S*cAPP7srd6jsh;9_;6lApf1-3?AuLL}^MeNXKY1TVC43r-t9G?MjaI z@a{b$o9zbmk({?9ToN*GzMvN}mw@-uBzoe|3HYlPMcw0qp)=qM9o`xV#l|6Y()R#7 z`+1hR#AOyF%N5pYm&8NEcrx`|9tyvg4b#TMN5L+WA45}4!la}O`ZjNZvzm=GW-B*h zFMYI|gC87wwGK@cQ|iNyHxUQCa*B!1TcW8MCdb4xr?tXBi3I#}R){bxjL>LUExV9%(IJEHioK3luk z6bBb2)#e=kN3S!dSt9I#_3IB%?d}NNS1v~NckaOr5pP(xZ@X~tdI8;UwHhbK?$IOd zJJ8Hr4kz@sqQXB*q%Y@S;t5^6{6`VDE+_bPsw6tOYvX)}71(Jt2hFNNv1CXOj|)WL zj+kJ)P-~5{{;{arZh)3iL74b)8v0*ahT{$zsQJJg|Ao)RrS2Y>p|%nUclQ?jHVcpL zO+%)Z2je50@lenPwC}ga$5l4?=u#;jTUbsnSeIhXOl^9k$_oRIrP4dc7NdM!CVicf zf(J|FP(7#tFKGOtJ|{S~vi~;fyeG#*&drDKzg@1r>*1^vxevm_PQ8 zT6*n)ebVFfmHJPzWlR+RPL~1A=>}++&jYoJrua#~6zbgTXfe07ovANqiIE%FjVm_y`3e!JOPlIJp;m3Q$eLd1KL+vz~;5hM72u{?vA}6;`fk|JUR@ysnPKM z;C%4b8sYq6>X0WQ3BPs4U_Up5X>n8m?YHsJ#HR)vtPYF=xjo@-j{9$51bi};Fw21R zvfQhJ96d9z{n!YOHp(DTmIOCS6G&CzSuoLlK+aE8!sp%m&{p^vei&>9&2L?hyjvTN zEXjmTX8*`O&m{PBe-1b`JcQP^>9Ej)*L*P4oY`UZ3TDT5F?k8~;Q8_nsg(W*;oH>U z-qA`(?6)O5AEv;LYu3b8s2IYVuaTv9f5Q={0aBaw6aF4wL-Ukx!KqwL5g{$+_!2tiq#4(sbi59V(AuW`2K3&00>;6s2Uk z%xodO-N8NAw#Do_$6VUlc801~#?xPQcjy+?IGSatK(oiZskPQL9En$^57JDqxxbnA zeK18+&oy-Ql<7F-oH!e*JVqBzi>Gmu5*VQSjJiBMjJ)q&QJKf_Xi=g^Piy;QX5C)a z`o%uH@$m&qW(8r9UIDF9F5z^fKk44i6_LWE8T;>l&Pb=Zt@|tEGj@)nB za_9wqS*pNG&#&!&g*kd`}Zva9X$KtyAkHmw%zs znPb?pvV=Zfd>6Ot@1SlkIx(X64{dG#g}ddJ;hP7qF(tW=*6ja)o8pAgw&E=so)JKe zu|8ZhIE|_mwxHx_D3uMS*eNKBV;^qf>DjO7!nAr^^}v&cUU`ZuC8yKlzZ$STCYe4n zOT%r>Zgif1G=?p@LvQZ5!(}dX0)l9JzWGPP{AUV(s=s5_Rkyb;@%iA{XZ1uK6d)!M$3Xm&TIVoxMe0{wpJq zGUw=j-?x*~j(K#);@MQ?%u*V^TZ#E{|0@&d97$|0H8O!$%a~U89keybn>}yhMx7MP znD;emW)5#m*xgUJG2yCwB+k)}X@6ixgzB4^-AAvHzqYdAbgq`zZ&U_B;j>J&W*zBj zK1y_AXMwfB2{Pif1T4-N($A(RAY(oei*7K4!K77{3#0_(!+neWb=?{e1x!W_5*cXWj4?#5=Ye0iBMjL(K@ zhr?ttBm@5YcZtmFsNj5M3S{y`p?@@y`H~0c2CG<~&rQ&N zDTKs^T!VslCFFy7Atc*rGII(Fpt+n4}L6J3(L~TBkApL4a^fsZyKs~h1tauOzq}Y*M`4-Ogq*IQSmq#l-wOfd1~sYz-(Lk zZ9Mn|f(Yw*iJOe@Bac{Gt=-@pO4~D!m`rLK7OMV5fOH z6>7+#|BepPR%1<6KhAks=9r_!RA2Piybs6YEHP<;7uwq?;z4SLSr6yoB|&NQigLwy z+h<@*MmCP_lfgT2`Dj<=f$Ou9uyy-Fl&QLegORuB(U+-sC{Y6kI9_wj$8{)Lmxwv% zW@669IGpm`k-qsAk5|0JvF<=Vo~@I@=^sR6z?bg)EXNnXe-CtO=if@h$%^Mx zC;ToRno~|2rj+2Cgp2I3uN{{DeZ=moQ^&V3k8X)sf!~@|a=vI^Za1@|r@t7S z=Snf;cF7#&`wSzD?(ZG9g=z6805xS@=Dhb*6Qsi(`V0usNwVE*S{$s_)Z>_ zf3AmZ)+*pm<3QGi2Sz+|V4d`7vR*X=p6zWTxxwa8=om@#7!R0bTSgA(906N3J-Cq; z39gIvU`9&_9GNW#3a7&$-G$>ju8W1?FSB9hb`MaCT>*Q+4i*@_iKgK3VJghIZ2{pD{J{6+F!=NR;OfOm5IiOUQh7eGW1Tzj-#!jo zY7F4+(@0Q{{7Ax%d%`d6M55)T0BVb_5=~iYa2Oe667!}&)T{Yq^@p!S-{&<+=$#H% zxO4Mkvmyxi#gKANPqfm^n-SP)K|tGvMDB|vb0+SRowq-cfinoA+}Rhl8kCEoC(HlyplgO&h{%7QOw5M{GIyB( z5j}i?NxGrN*jUHWc_(~nB?!|~PoB|H`*2pV$AVg%?x02XDRge~FfF;GfLqRZ(5p^= z>F8ris`aOg7PAfXd%px`_lski8-vk9Lg+bVDNb>jhOTvH==$se&3h_?21RakK06O5 z>#oqfOH|Ru{Sl2LZ>Sq=VGCqg+O*A^ zf0x#VDw?3H(HuHHQA}4|b7Vw5oTfqY?#zz`lDOxn0vqXVg75AK(#qJW=rgaDu3c14 z`_2u~lTE5P)qNTc*m>iNTap+x=8QehgmC&5&TB*CXsnGGn(OW|bKcZRm9twJ^7aAs zdj5m$Zyu!^7yY6$N1sxadxE&et%F)myrWq?QW)Y=Nl$ev;;X&gv<__0Rj89*6JCic zQgW%Bp(tj@1W_C5xv2Fpg!05LK-)iQwes=uIQV>-ncHG9RF62x+H!1GyG(Ps>)LFz zcw<8UoU+1mKe^q4fhoS`$!66LeWiRk8myK_4_#5sPjeTEaM`~<*&|OL(Oq?2jLOU; zW_MQzTVZIxOj?xCOP8+Fz}z(IFz_G!8OX8RXKo~?j5FB56@J9DaxXosw3tXA*+aeF z#S*oiSv2`lGbz5DOJCV5fRSkwJ@e8M$_tB_9uH$MRnKO;mTA_;Fd7N?M#6iE#Jsv|7`HS)kysP+17FRUroM&)iH-4s8af=EHEGmmS+4^#%V=M=w?$9Je$H&>BTegmHsozvrG@&w%1dp!xd}3{YU3~^1-t96xzJ@ zIBLG0juoFz;?5#Pd?R!Q#m;D8;(@D}sW2ZE-WA|CM-}e77lkQX)$jy=7!rSJ%-fKO zA`4YG4SgxL4R6Ez-(}d(dSbGCJ}%Iijkl{4u!Vc=Y|BK{Tz&up{$9mxN++H(|T>r?>7UUn+rnjg0_Eq!=}|8b>UV({ zvnXh5w}i5kR1jJ>8)D%U7|Lma{O>4uz0Mx`WKy6{VGF#vQ3zi(4uhU|2^d}qfN8%j z!yoj5XI^(<#U5`6Y`6=fX**$0F@=AoyJ0@Z63wv<1AoITcx@L0@*a7Rd-@FA?yiIL z5;5R8(g$68>j=aAx!rNq!tg?oNNiOwT(> zj(pNHyIzt^cxzwo;l|swx-tK=WrhCb1dH~8B@E| zRHlaUW(5DZ(xd}fw9jLJmK9FL@yUGpnDe!S+m^A18edZtn@B34I!G5h>*mfqF}y2B zDGAWV!?T6x<@Q!ucw@A7S3npYw%9{AH~*#cST4s-b{6(KO5>jDKXkroKV|x*(fLR{ z-ThVx<8ObavdkhpnAJn$PC4Mkcz&!Zw#Isah4|BBB}z>$!G+7LQAbV*Ri^L4ehmXI zCu1u*O**6YsY6&5z8d#do#FTib{GS>IM>V_!_Gxw>}P4bH6sQWmrX~nd8hGYuLJ5_ zibjP1OH3UK!QmW9{85^WcSkfa|9J_9KXF9gmP!n>bjP1Vd06zq0~xDijEP@_#b3^# z*9RwjEEvw|1@_}c=}_!ny$8h{!*NR3Hgq}?fy>DX)b;g2Ppw_}OL-~gzzGydlSD<5 zihiT3@aT&3*j68m#zwIi{%!|qdvgrcsWUP2!(!wi+#KkGCbs5J#gChpVahCFl1C3BW~m z7nwumoQ6SPfh?)y=7*ez?m%1+y69Dr{kUUkZe0o zzHD~D%9=0agrg>o^YxSK&Npe-zCIHA@;p^*`A!y8yro|Lk4X(5A2vkXCn-&=YZaP8G17mn`#|`E*%EC`0A6U@)nWPGO zLyXaM5RqFB?e3CLrY{Lbc0!+kfuX1-R83WeH`Ob^!%7P-`!0kLBQ?R8~{``JdvHm-nC^%T0Qcq@F?388{A zYoXdanp%YV!B+hu8hzscSa*G;Jlp+YdASh2wAc%I>XHcec0=Gt8pXJ^+verKSH+o$sy0ND-64B zj0$8*bKbon%Drbsp3~>>daWVT8t>D4dZFZ*Lo9pxJ}*(&eVskRJBOUp{z4PHcW`$Y zeaww6Ctu_~QMvE@BqRSMUEd^bcJ8_o6>z@DWJ=|ly%LNgz2W1v0jd7n{$y6|?d8=b z@3XJ4M=va5`8#81aC91*xY(SkpRZvKc?%G?<)v(6yfN8el204%>|hq!AEbAs`fIH! zADW51(<0?HCd`K}C$d%<>BDFCwXb`}D5N;DpVL&>T?6T4%i6r!WEEa`6r4=k%3qVi zXKm==kQ=1(xd=O+R!>TYGHK-I55#7;n{Kn`0U?%S@>+Z)8hnHF&yne5>W>au+y0bk z<~OD%{=Fv0wXLZBd}R<*J425;%mBW7F;xCyKbfbvlk(V32WxH)cJPxl+^HF$f0rf_ zuhwk3Yf1~#ZZ(@8(y1gPqRZ+1DqZL}ev2kA(S!!sZS+y?3~(@7Kz9#5B%0x|bolrK zVlP@kCC~Pe&R9*_{Bx8{tlUA5$nX-wk7cxAGL)#7mr`jtF*sszvw1W8o^gKkf+GuqBt>wsjV`>*&W`zgzv z$#)N97gc{@9KL6nMz;;KXaCvLrmrpRJWVsIHve{Q_P+b#am314vnWu$M1~ci8@(rk4S4Q`it;MpuJ5<=u3WMier%S3VQ25Io zYCA@7a&jY$eXNT7g>CG^zm~Y^i!t?lI2Y%{d(yA6{Akq_LGKpLMlI6?H1o_{)bCNJ z*IdQ1GMA+?Zw2ta+F5FP+W@sPBk7`69n8TpuC2hPkE;i?KN4R;n!4$4+UeqGnU0sLs@AdiSj-b>nrU zDsFkK%(ycfvGN6TbbB7-?e~V+cW)i@;nW4j?coG7RrfdJ^XD*8YZWEK^CHQV7JlL= zqe_h0?a1A=BaHZ(Lc%YynxygFCAYXbUUusWIj^{isQ(Eh%J*!Ee|kU3Tr~xZPY}qQ zKL@53&IPrAe}oaLCGs6D_tOToh5PO$9bOepQ#2u`xv z(5ki%9tG&an;IVo+Ghl(FM7fOBaSN+xCvSlXTbY$XO8VT8=h&N0I&N-Q0R9CLZ2|; zXBGqKs0@x*c7tB502FPHf^%iu@9{*z*mF~k0~i46KbL@u?`F6{=W;tMKe*f|0=7p( z;i2s>qH`-2e%~J@^=;!`8R@E|y?HcT!{MZ&KVB`7!@1DT1^;PWm39?TyiGsh2r zz{CiV4Dg2FMKxsWiN(-(IFne|*}-{LWx^P3gX6O$h-C0u;E4$)(l^#XP}g=+`gRoz z_XeA-xnlw@qcYU*nJ!#Q)}mtd^TEsGrtt;F5WZNQV7zJo_Q_haongzsu*;Ob)X;?1 z%w06ZO9HAaF4AT8s_;1Y6pgt(6RaJ=D9@WG#9*S5{=Om%a*b7Vs8Is=Z#C2HMsLZT z0&WkJ-bLD{$>Fk>*~H`8EYyz=BU1lK;lJQ@Wc@NhoGNTU1`;JPaWxMSmC?Z`OEnnM z>WFWhE0{3n<>*$pn0yO1#dmM`$oxGEky}lh75FU1kEH>%($|)80-_wY?~fhoJtu)@$2y?bf3t2ytMBL?L8WTS@zRW>vJ@2J1&kM!(sSV zI)`d+4#qV(7ih|>ooLBrcE`^=i6hPSrU?q;?ft{pIOD&5ciVFPRqgf zx=!S@O$IW~$C)bibY$(7FrO+Jv!*tqDyA262hwB zG~!gKgfo`(5PyAB^yC~fzZOU%-?>$Q9!YwE43QdETo|>CPp@BVadss3np-Tdu@j`*4Z`^F`Lm z-_RhxH-9mc_~OA_y{BGlG2<5VQb>!brE5rL%Q&;TViTDj7fssTOo(vQ8$xRDFh^dE zk`pe1%zqyrlY>&**k4UoNrBV?_DO0Z2`IE;Fa8sNY`t!?JPQFhw%CIW5#n_I;)Znj zrx9{xh7E1woeE+L4e5=!zsPNV6{?mj3|UFKY>28V)I>_sinv+ulG6!$m&t(f)pRN| zs01}fHqahjVR-l?h%U$)BxNak>4_2d;i$`8p}Xu+>9>yqzs7_&NMn# z01^#1)5dsp*fd>*hB_O-qpjYoN{}4rt2EbKFExTV)y&%FY+u;s`HcC&e*!MwktMG# zZG{C2vgG`ltWEL5a)naSj2SP)qU)EkH4?j&6K5 zMm{|=huTH=$#=hNAUF1e1j_ygKb4jf|7X+4?-QMz=j=BT8<6Dr$C!b0>k%?!FAC3} zoglS0O2{?-JpSpLe&RH*mhKas0`V&;-8nV|4tJW0053)aZl^zCE2nGv=4^+Xr0ef+JICam9Mv z^xgtr&8+7yq@Qre{Db_Z3F zsU|s2W4u@;#Tv;wnI;amWKhOyCROqHNfVuqPz~!glU&LB^xbv`V`&>dYQ&d9!Ogmu zKSHrp>lotIuUPX>7Q>?wxE)79fRCf`ag*CyfqH!jpQ zM*-D;9Hjq^EyYty@+k>T#V=zYsJV6)rj@GWMVHn1&hm+g4d+bj;D^#n^1dh=RxQ6yE@%uB&!ne3?+s$Gait1<<$naU z)mNE*NUVVY*XR6@;8M8q;5Ky>$^y+&G5%h=Z4f-&l3d?s2)bvh`M0Pkd<=iZS6ujl zJddiYyZCH2JbhBkw|y1@=Vq1As}<{E+tCR6NYoxQH8V+wGRH~{GX*2_2##g-i%87W z1^e;;$oQ7|P}cL3SHMew;@+9?)bw7QlFm!kFo^FH@i#pq#qH}*m&w$CJKg=ukd1b2Y^c(1C2q=>uw)4& zotg|iJ|*;}(Fgt>KUb`^_ode-X`|`WSG>u8kI>GqHALvUHJxMMM52}oVXwz=BL2@1 zdt6jNBA%t@NdX{s`xM<&qYE)+vv8Kt0g^NS9L^t?BkcP@v`bGUHQc_YFA_<6yAVFe zPyki)nJDr~03xT|#}$VvOb)5bu)qJzqOWg0#4dwOzTe;o=E$w3kB4Tlil1evikKX0 z6tjgMS=Wbd1$lJCdc<3wyhwxkGc0xyf~(7xvwfo4=>D6_lJo+IJapsp1S-2vo~ns#g%Vyl2{#8Zy!W;PN$XT@EPSr7vn(G zFD%h_!Sb>peB7jgjMg)h6lkUv4&|u1wwrGimVj9z5&Xzk6dym9p-sN|`1amb8oj^~ zOB1_jr;#o8e%OJHF+S)rtq|)yBXPl$&A4GZ!TEVzG?5viGiJS|$vkexe5)9PH^kvy z+w&-L=qfM#%OYIkdjMqLEu%4v7%X~o$CQ{x^CvMUsp`;be$YKPoDo$^UPk&Ly{HA- z*ZAX8Dg_Uhok!n2pLv4aW!QT^6eP8DG2rSw2=57`3a$+>Ep`!Y$_)cStst7dEDN67 z?V@An3nB52D>b~^00(TMOy4ZwvL$5l$l*JZOqJO<+2kO^4Bw0+S&Cd8H1i}*`#GIz z_IfUxRD)UnJOXmP)R?)(73AEgEb}JB$K;Nf45vjBhi9M78S^QAoW>}Cn^6xFcB2*3 zBcVrby_>=4Iz1t&3k;c*9f43Gt;-}2#emMGS&ZJ*PSUYWgW2lzy-sVB6m$K79?`md z58mIHMjQ;Jm@LsGB6EXb9tD^};BPNRd|ECjW!W*}9OL1?9qNo>k5RgKAwTtXjMzlJY=uM*kVXPo|dA}kFNWcJ=k>=3Sit6k|t$m29v>x+@EUut2}^KiH+(FokRgS;UtSoup6YAbbMv{wb* zay`*DpCwSfB_AdZy1}$P4xld<4`DCWVF~)d9rZv`7#Ik$6Cz0UgB)lL+(Uy}jzQ&A zmZk<-!hgFa(8PU9$(z+dRLx>KJbk|pji(hs42{R5KT^P1{6BPgKNUo?k75Xyqvo+U z3$tzfL<;s%pNL&hcxD=o1}MUXn(H{eFrN4Y+(vP8j?>t50(XCpg$$C8 zJz}AtS6YiV|7-)b6J7Wo*FcBWBdmJCgXIeKcwf1l^y+t@mYyh?QYOS|bRXh%A6H=G zx>&MHrV}qm@yV;81Pq!dQ5(829iPah5an@yJR7tS>|VO!*C!bukR0vHyh=9?!|bk)w;Kw51t3I62YD&%N!rKlu5B7l2`qB+o55kj{9K7)$68y$@V%*}JM?sb+}Mv6l_!b7)CcJPS%Eq)Zb08M6aLT_t}oB6AvP_?aZ>mOIB3&~T3YFFAiN1f zg$$sjtrX9+Yrw;kNhq!929G1p;96HpSbO6RX2uWjC!FG=@?s$@J)g{J-QJPIE?!tE zvIzEdyW-hEU2?O;1^=^KPj{Gqrzz_^NZEtOJkc@@SR3z2f_9%HcZ03)^*sN&Mhylx zhPV-ZnKPzl-O`Zw+X#eB=8>CxY0yrK#ssx1{KJzk;RCfw+U+m_)kpndq_CHiHa>wL z_7eOexp>&-vb=+Wtlq=S72` zS}yJ^FNY_IHMn=YA1>S$WUrTe0IhL3wsQ76=(qfY>kbPu)?41ALZ=8L*3^gph4q8_ z6bbgu6BbqkX|mF3H^6@JR8}!XnrRDFU|(&S$~=v*WSvumnT|0d_M58+mmhDy2Az>% zqH`@+J*T_i9J_;6tj`5g?_jny@fMu5+07c8{eYk~YuL&Y9U%E;1$&o&2x1I<*rH$F z(AE{nikFO$lHq9fV)+Ph<%hGCLs`%<-Gm)xgS}VH-5B^P=8Zvs-Q! z(XG?;+3i?N|Mt#iYX%JHomYlz*qkfWQN@A%x859wOx4&#lVwEcOb04@-Xrft`cZUn z0?t+FMbF38v?)3bS8bR9Ys8LV?7=qT-RzGF8k)HI@kz?NTLeE}+`yLHOVA&79c{l9L3-U~Zcf$>^g;s)$~*@uD#z+* z2r$VdBWPVUiJ5kRqjR~4GG}tcSnr&75H7Kh&H5_HX|CTTr*~;Z6zFUb15sD?apc8G}tt5mm$1OfbG~kpD8O}z>dyvWOgoI#&+s#W@`4D zu$J?;GE==~vhsy4O#3cN*6d;=(^jR=v51c|9oauHQ#GF1A8?=JAVn}~+@3g2Fp;_5 z`4K;sr83#?#8{=f`#S$Vi;-@jq`?MnBB5U)b!{fCbD({2|gCd z{7Q->OHUtVw)~t%1TA8i9l{MHY+wh|UiP)_lkZCAzTkE`=f-?SF#8#uyUB#P9JHE> z8GAFPhxp{Apc^wMasn)Uu$WOF`as+sEnx1zQs~=fz%^JC`p*a9JH$e znY(}B=5P$>arpx$^2#A?XcQXe4nTe6SMYFu1G!bra3Y`rCR&t(^~nKP-_C~x-zPD- z<8H9MT!E=DaU(({;}BOphiHm^fu2pDd1`Ap=9yM3Uvj@8bM41PzEkC7CR6q)zvZVC zGtje`q$-z7Lk(v$tXKpjn{S6GwxXY+LCn3)_E7ItR}N*7|Whb{BibQRA1 zrp&~@bivZ=M)a{$d`dspZt5tpYWt~5WUw?;H`}h#iIi1C>1YrD)*g)w6p!r3Gy}m0LEI3Bu z9${5@f21Ez+I}N1T7_7nDSQ&Q&ysC2jjod;b69&1MY^K+FN$o)o64AgwmOapU6nUV=u66%|@mp2cPR@h9gZC3l zMmfFGvb@=FmE2|lQ56gm0*%OgbnDkMTm0ys8{(F|NEw5`Z zT*8YD9GZbshL^Cua^Ae4Wn%0vi81|o^IZG}aOu#pvLB)EFJ78|lS zk*u0<7OjmFU|>rP&a5uOL z!ztMbtkUoVkg%G|-2;>;a^<@BS;6lUSxB{Yl6n@G!E#`lli#!N4nLH+iw zU>Xh!;GxHQ%%+$9G-Bp*CbX)V64QOmn}kAY|0kMB^ctfopFJ2`t1W0CvWR){#};>F zZeTWwous!XhA^!UE9inoN2X158D>1yW26nD(b~w1x$a6ILZ+4|avILX9lk`J+wE=;h~*0(5@h~tPU2O#O=5(eE`!FUlbO-MQcyA%WuimF z;l;uRC=MCtos;r{_T^`YPWA)xy0r#G4+nxzqd4>ZdozrNeFDMB+o5%^4kq5|<;896 zfxoj)649VfkRdM)Po*Bis&^~sqv}U+z$gpFeO|-Pd)Kh<J^~LMdr`nqlId<1VC9c1GPajB+4C}T zjFRVEc6rDYrfBg@_E8EjRZ2>%O_?@RYM{veR#IU;bAGbBa&s7i=rwHURW0UI#`BvYUNYVh`ldBGzMhDr|T$j^2Xtpdmei(^Qv&*cKVqPSycL=E}2< zQQN*7Y8_IB^3mSL)^)?~B1? ziyYoRem@Nk3WTNNSu|IN%ktEb$2UigKzdRzb`%?d=7%-&%$k= z{=&f1H8`!f72ZzXhZY-x;oGh=`0L$in48vyGqT>ni{D*%hxrW?I{NU)F#+aN&}Y$;*0F=rM_hWLVWa4MyaV4BI{1jB)>~#7bmZGwNMhEZSS}@eT z4-37_m}v1%R8pP8wCoXJeYriG@f$hTzEGPv)hoxInxfCFZtKC_sneOgZC&VKD9vAI4nu)UB`;tLu|4UT5KLe88 zb8z+jGU9tX1^?S$Kzzj$u=?O#4!@C$_uf7+88FJj$A!i8Ri`i3?#ZTdFZJ=^)-U}2 zse0&A(o669Ct_t2_pH{RMCr^7j5iU$)aoL{bMxrq*iQ7_`Gd~gd>aean_*_nKb${l z0fv0iW#?>k z=Hpdg8@3~KElwNsWA7-=M=zsItkGdtyb!*T-Tm1a>;D9^l1`8LD`o|;%1`%_gI~N@ znV+t_@$6;nGEpJm?_SHA|7Q(`y`ikkB5lx6+s8WT`@){LJJ=g?$*?fdm;HMr1yst` zuv^yEK!^{jQirdY;{BZ*o&)UF#UvLW=Z`rW6tB%0L zC^NR#mI3+6zz&<92dzAPR%-npNZdMyE$V*=w2sFPpR0u{D`&Dvo1OyRn#gu#i!!Pf z@9^LG9vHoN2g~s+g#TUB80N#51_Z>lqyWbq2|tK4{7*LbssD@aS>^ zHn+Wj&O>%6=On>+tlW)yYQjv}rDUA8u@4q$`{Je#Hz<}>ln8Amq=#FYpW-Lkp zL-u@!&Qp!_rt=i$(bTD+c}anhes=(xmcD@4C~Fwzor6!VIxyksRZy#53aMtVVbh$w zFeR1q{Z^I2+7Sv`ya%w~z7gu`YhnI)A(VL3LbCQbaOHZ9#si&@E-{mFQ0#%tGc}l2 zX+GRqsm8=9AA<`#ZRSgEA*@(vz<6-}>cagNjK%0eIM=k0@qOqD)6HfxepVYmwM3UO z6w`!qMSUh`SOd<-TQXh$Z32;l+|26j46xX|l_|MbO>7$i896;M5WKRQ`B$mQ`I{`6 z9N7$#p}3d{xBJc8CF{%_yBtm21J^UhRloCFdR8zk#?!E`(~_wdxK3N0JeY>}zPw(E z&CKRy+jx^UyD%kbnY3?;EpzOvAYN~?XXZSeh5DWzjFm$$UJF~t5G5b{&DGU!Ccmk{ zPA^8yZ7$9oTg`~x$@y^ z9o2!?k0x*#oo=!ZmDS!^`YQK)V7fKe7wdTPCp5274e!N{XH889<(MGx1xVN2$zXT{i8s4=I(@WYvoV zAk3c20IO{x*Is_ZEmc!Vx7jF8m#U_fYNP1TJrPfHUIm>?akM~Cf?d^jjbHfV6F#nq zrVkAJxIVO<3Z6hT?(C)B-F#fR-2*M%yKt$XKZ-gvp`EM>E_aN(z!bYn{937B=P7TvN=LPBjnuJB8P!&3J#Eczta4Y#777DD07 zi>O?50W4LI#n;C-`@nIWJnH|67*s{WLaR`Uihlc_Mo|^(uL0EX4|?%!Wgis_dg< z4zN0v>k}KIV1^Z!ZNIk&+HZ@q3;rd*6afR4f7uy4>`d5cN6aAj++6nCtXL@BWysF1 zZv({}7Hr+6A@CSBU}qE#g8DBVcAsMpm~(TVaO)vRGnvIc&yr_Ws!w7~)Hq$KpFDed zHJAT4Cc|2NR$$g>DzMu1qD(@p2^)V_l3}OnvMKVqj8t?N?y%Ekimsi&1q&xKQHpP| zMP7lK>^gz%Zsu6M=5@HaE`V{G&Y+&<7G_(PGRm8HGvew#s5s)olm$BCe>EEzzYWSL z_vIjSZDkx)>_}rQPHR$kpLk}~zcDIx%ahTzGDFKr*33D(>3Cww8pdbUF4~9TOppVR zp0FThXj&}KDb9*nGbYJf;ttFMR*a`U+ny=SI!hwHuV%2dmE7}L%iLrJNulR*CU5^R z`Ie#2csNKxajFKx1ppI+Yq}hdLJkh^n$4{4h=V=}L5{tU37XdZu&+M{elBdu;WMkyWVs0AWOf|CHi$E9+bz6!Qjxj1upF1q)n(TImxsG_^cZ=|E7-Va zCiB>?5mz1uW{ja&)osY=HZ)>G=S1exvwPTUEy`#PKfp;L6PaKC`fyp%Gnl$*0DZ(cmC>6o>rIf^Wqjo_lzQxU`Jpiu){` zk$De&OfU040Rec z=eDlK>jwj9+t@J_#uwBuxD`KyKBuM|y76~N5&c_Qg*&o4=;9N3I48;pt+v+Sz_}e9JV#uDf2sGvjVSG7k3t&?(6+)5H|g$1-4;cDeK3OpH5O!R<3iL)(k9BB z4)g2X#k4Cl8s~m3r)rER7X31%9%@su;Lv2+#AVn&$#9{Ur4(_u`+2IYX^T~t6_6@M z(BSe$YV1-)I(7u`v&VSkSlSL6JkN?c4zI!|=f%l`#ATTDmIv4L`{|YFQy_fTn}(b& zfTt<>v?bRDK2*oy_grZRK6M4_o_{8d!|6DPfnXz@hD!%>Kp^EhmRlyng4UO~$FmA9 zF6c+)eSIKqd>ys(Z@>obobKEb1CO+Na6+#)xcGPB%Ox>zXj&U)=a<6V-<{aXD~7oK zVN{AVgyt6_>@0f|GOa^^b&5Gi)K$AMs@xC~ZJTjrygdBc--Tyo|Byx5S8#0Ae6Z1r z!kHb4(7{2bEytdc5w`>!dUL__?EEwM*)^Gd?mB@7c2x77W3*79bQ0;1mcgkmqUbd_ z0~fD$#`1^d=&vA2pUqr_cVAAbtGm%ojm>4y^u;h;Sg{Oaj0Nx@$GI_R@1!~t+);Gj zG;I1;jaBD0@L6#QIvy{j!x?=#a_HAr1?u@TP%^CtG!Cpn{m_??tJOz;$u~oUl{dZFlnLr} zL)2+m6qJUv(b(L4c&{r$%i$`VF<(ywfAqqi-`D6)CvgtL9m25z<~!3h@1r5|EuT8cS3_X6KYgv94XQ|^1ewG8ztPkKmtbL5EY|+J3?Z#8_#i-l33=3v>yIcgdrvlEj>Kf9?jyzVpKm~D z3yU>#nn75y6Gxh#z*ONfe6?MO@xSYhicWu_$7u&D)I0&pPi1(r;5l4hcLuAvo`L?E z19&^J6qHL+QOb5N6j$)^{Lw&I@TVM0KIOp|k!&pgR1LM>u^6$B!h;(IIM4AsJpR`} z`#8=*nZi2m9oqv?u^rDe9D}x~aw_(-0%pFtM0Gn0;ePTu>@|u5$3<)KIPVZF6OEvg zm4aZ_#7!jhtp%tIS`hZXwXm)-gztYW4SrnPKu#$(!I8GP(5zYyMepaqm<*R0-E@^W zK1_mPA9d)D=Qsv$EMXOi03i=i_>>d|HZw$EnZa@Raa#~_#q!{1X$SG(@|&}28_2;v zU(mQZAFf)7g3&ueXtSLI*?;7q{YxG6Hf({Qat|(_Y^toN< z=lgTq#BL|bi3-4EL>sRxZ-tjNW+a z5%6noA})(R0lGg{MYiCzKb-tY_bDg+|uF6=oKuG)_|-H&oO1>Gtr*$7Psl2B%A+}V{h8olVTlZcJGoK zWW{-L_MewFWaf#oosw2W!dsDbTC$u9m20s1>&@!CL7(+`Rmhi#U&ua?7eGxdP1amU z8E=@#vj^6nrAfynSnFMLIIWm8JL8iMUHkJRHYWAZ7w@}qOzRLXj(vlhwJ+eVRsV48 zS1O7Oy+9XkM|)1O3omU*$DF}(EZ>xbeZCPmqt%=9wIpEb+EvJ}Pe-i>n{Y#ZA$m)d zVWV&Z9vZoeH*+rH_>~5v9x>P>d=#(vq~NZ^Sag_j8PjfOqGnk&UiWdsJ%Xq4oP-u0 zoO+DYmiyzZW?SS5admBC4aIZcXx@VPbhu)GHb*a~cRSTFu52O&M-Qxg+e|YLMkfI+SB8heMd8=$5p!}nn+6C@_ z(ccR6q46OY|651nj~svywP-3A8w2$(3wV{^m&56qk;H26Yx1h|m#OTpJo2ElhF5S( z4!&z#B7Y?2gZ*DZcI15(HnGPLE5wOqL86roY zlLLKYBz)ym@-$JKWW2jiqW1hFC9$UPcVadyc`^w;R-J-{CI!6l9xd=$WKP}5bCO)4 zN;|y|z`2>KbkfRncy#kM?OVDX0(+EDaN!b=Kh1J?2zOYg;7x1d^C0KEES86tLxNEe z)`iBwxcnZJf0G8?cenuIYpu{FuZB+}Kf=jpiKx{4nES06ys_aG%&;A&1+N7eHq;-l zWsSjJNWfb+Z@}2xO&GpE7pgy)W7w`@s184XRsUUs*@lRzZ6%=0Z^G@unK0FIKMqyq z!nQZ-@Gi*)pPA_h;d|i0@iJ6+6#)w$$DvhkIgDS3L0R28sAr4uoXv4KGmwvwb9aE@ z%s@2N_)f}(x%pf8Epkvd2=7dlfb?Gn@t>^{bQ>?hRktm{UG@YOsXh$Z=M~Ad&l#}m zLIQCa)&=(fCvtu&kRxyTB+6qEc`1=d)(Pp8%HLh4H4+!dEnNZnE|HQS8~2&|x_a}R zCS{RDJ+JuQTcaVQAclO%GF~y+4mS%OC(NJu+?_N4N;b7n zwdwh=|JZ!07@rQ$i%(L4`Vd&GAdRD(2B+)g8jKYPh9K+BSYWjtJ_fG9xQ;EbP{$pa zO&nj4>_xr#H{iTx9In)82DQ)JGdfTXOT;gt-IiidF3v^oysNNMwGkgGHiEriFDCW8 zhP?hd%oY@3wB@+7oh{5b94W?sX#;Se|0*tCQV4FZuH!Msc33p00@sFd8VHGEtc?+1 zet$U4ag)lxX@tv6t-S!h_SE7>#eZ;|W0#m1i86X$3h{Cxm$iPX13z523x8dEFyJfK zV{jk$7g|Eh1nyorzLD!+mipmfRwEqRdkdk$T^A!jdo(J zzLvMfWIh<*-bqB4C6JGynWSs2G4H*HD%>}`&pW#+2{x*#@-GVIL(lqjDzC5=qSO3n zRC@$G(rc|#olyaDy7{!Zt^|bE>tk|2Dr6YV#>)MNfpHJUAp7GWW8jNt4LAnYpFcF! zHXRfi<7jty5lku&#JXRn;BM1zI`uy;QN~^zgN>|UgW^(-J#7rP#E#<3RcpaFIucdX zBjK>F2}+)ehKlEoG`}JVCb{I zhkU|~i*g}<*HiqXS_PH8O^6|v;k^A#>{H2sWgS;hojaF;x9TxBF%ITAJVPNrjsqki z%G%|w13S;}X!lSPT;s>E%Q>3R9a3yitp&O5CB_;p>nCc1U-6xe5XUEZkDoFeX;qsb zYXX#BmK0_eNyy=j7;azgtc_ir_pnXxEluKPcOf|%xK!dQQVkoFwywcHj}36blXm>| zXFa~P|A`UHigDwG0o=Ab1h2*x;ghy0D60~K7rl*8Jo`BQdNB|0t;<2(J>vK_A_h0W zGQ1^w4!!-_P~&Yg$|}D@uheSv@})>Wp2Y{AC-BGcDNcJGkFJ}H@Wk#gJT5s0*QRD+ z!rvTRx8NbR=$^!xR)6vFA#c>5Ifl0+*JAPB=a>-hf@e<@;HR4s=)EBg1A|oYwP6>h z>s*8*9lucbxiY6kZNSEtgl1apMvuK}G(Id8Q?3TmJ=c=|Rwo=x z+X3AZb%G^9+mn>rcb^LlXt0sRKOri20fT(A;d8wWx=FglR0%r4h%*$ znPTJjWa#AxTrlq?i&M|R6GsV<<@D<7%w^%A##_)e(gSB@ai)sP+ugb12aHInKyk|; zyiybbO{W&9EnEOIewKn)>;kC$av07Y(*e)0E9|_v5crG6;ApKUNO1n1VTVsVXjy4jePFQ3V2&P1v5!DG0& zd=_bpO+yd6o2GMa??D4GO3mxfVEzMJT9sRZvX^CG;z%;;?Ft0-O%*8gQ4b6}+HhFv zEm2Ep#%rDx#ESbib#_QXM^`<*o}mLzUth<)=OsXg+hGbV`bPGiet_?|dtMth;hhU> z!LYanyZ0HxtY43@DEt&jJv)Y;`x(+G#AVo&4iR6=9&}l%2ba@dVsgq>@E`kt<}w>W z>SZs^W~4#)Q6KJGm`>t+KciC8F9NlnaaQm?uuAE{N~d(li>|>6>4gyU^(qEFRs^@F zqX?VlgPiYgwCVMQgL_*Ml`Np|9d}2jr-_n$F)rF3O=d0SdpJrQH?NAfhb)YH2nUOe8t6}0zjEKgQoB2OrH4zI)h z0ZG`dPU{oI;nF>2tjw4T<{T?(G|v#$nO&#uvAbZ9yrB1NPC-n;UTjjPK#C)f=lKS9 zTkE4lh5+;7wFy2gdI@P-;g}Ke9K2KaV}_y#v)g_TI=>KL+)Lc>QpPB3zY~amp9(UI zx;Nn*b17!<_7b$~P+`80_+f;pD)V$hE*=;D1LKDIcvie07DO$;*+z1V!~0dZ##@0Y zK3Rn)g`Yu>eGbNPUo7RW5h@rc%w){4z%z@-LBFsaRTA>S^D*LhLkRR=kHVvyIGWTP zU+jC)2sh?m!Vo44lrMb5>2}-UhUXAU-?szF(pC)2_lAjY%F(NZ)6P$+!L9Dw!BD0i zKTq@ov$PEKblDG6MsqQG%~lw_Jc54vTZq%mZ#eid)AXKTF^*n}CPTxSxTO3J`K53U zBVR-k5$AJwqS}yTNS#H2*!4WEtH<%07(G47PkN!6yo~s5L7Tw>@2p ze*5CF@o)^Tt9*d3FCM|2BVSSK`BD_-wPDrPL7Fvu84qTb(6e99V0UdXH8VMb<7Y0@ zd%73!&uNY${;mQygai|D*LGaGHiJa3yMe+j3j7tq9q4}`i;lTm#gl8p=?=GhST}Eo zC+g6R)_G+_?S2KGTlb9TSd@<$St-0GxvzM9o*2X~nZO?Wu^zmhw_wOb8`ymPEDkuG zAh$A~VDkPxB6r{=?keoAD-iRlsh)=ecpZny8(hHV zRV+Rv7vbF^)KIweDA7*Vh@3Xx72cTMO`g*hjb* zSVR{e75%?|mdX@!+>3P+cmpF+%(X|rQ~n{&Jd>25hT4C@^QI%M?~vnm#`}ru5izFW zju|O~lBY=mvxPX5&MuTX7_P%@_r{CK6XLp&cE^0FW&uM7n75~NLTg5>Ep;7sl*=yv9q z({uG8CpjB}g=WI#0V~*VwiO~CS^=H46^wJO}z2GCaq(N8wZWmzq%1aF~?JqZ{65LD|E0ns>PdDo={w)cmV3 zmz|8y4&8yb(z+;>`U$GNg)v=s90CpQ&`6!{0B^<6E@T)|dO6SSyaBk|e-|Sbv+!gC zH(!^(4zu`$czoL}7&&?bxAXZh)Ek2DD?2$Kqz&dZk3;frAADdV#^@}r!pSOvOp(YP z6w@4pwr6K>p6U&7KyEfHb`fG7VsOIxCaxFHLQC=M@TmS6ehO@aO_vX0Ktlsu>fDGy z$&C=OBneHrTHuIVF($>Ih1SKV@rTzjC_8i<*L}<9*ip53^iM2!1^>WT&Eq5~;0cc2 z8zrZ6j$ui>JM7=#h3@t?(6uTP9ZY_cow0m8dtC}%Ol!digXd(^y7RbX@GMXHS1$UM zU*TVC55yl+hw9E|I-}j=X5PM{Sj?PvzRu`i1~&YhK#dp2;^S%JRDLuctt;=*^}9-O z&z&f|9hiaxH$yP+g$*w3Y^8S{*J9we0@~Z3i@R?dV7qhy8q4oQukSIakP(Oj!XbEM z&=bp|gOCX2;G%z+lC>=zp`_tg;gmpS0J-gXrE5Q2^!ZTPWiE$Zn1 zMxXG0I#W%UWrLpA^`*SVu4`-Sn4aHgeaaa1bvSQXb~w&WpUJ-6eTp7a6lWE#edDc5 z6J=NK{Kr>lpUO@j`^x|9pvJN@&XTSC39QDu!$dr26h(sb`Quca)$kIb-NjSc-y-|@ zMgyv>LM=lyITr8PRf-U{OM(^kY9ibIO0YYvkrW^LiOOmcV3z+1rSg;@AYd3Z_q-&T z@+0VSW}GPczr$a-)8XzP&ZF?q6KH1`{$!4V;xPj};v4|+&71Lw#t!hFxeG;Z#l!8I z?U?x?6?8aVLVrOxtWdVXJ&_C%A-;wS;K*<;6*a3RJ6@P#plBgEdrAv6O_brR^%UCeW(VngmVB)l z%b{%3Nm?5=4}$ZiAtU;eSUT}=YO*Bc8qLD`)%x(FOdHjLv|)dWK7NlIASci5!i`Nu zMBUyK&#N?%(+}OwF{C=55-d?8^!%rUUR927I%uqh=Prj^BG^9X^C z177&ZXcc${m|&+w0@phn#aBP0K&-X`#Rq)h#Ax#04-m&kA$7X63}N z9;XjG3fJ_cal)QBSQobpmkz~2md)jWRv9JOZ`{Ehev=H^bk{ z!lvtH8$v9fnr^)y0<%xX5Rpj=kcHETMu-Y{mbLN8`x&t1c{;yEz#RGtPm&`2De%kT z9SHk zOm8ivJqzVXdV3Q8ZblC|@O6-9J<8P|yFhYZEfx|AACSoUNZ4*L31otk;g~+hOys;^ zyB(BZoy!r3YNn56}y{Dj+%G9G&{M61Ikq^Al4~!m7p_{0EPd;9rtF-TmMI zm?xyx#rwqqM`khoQx^lVK?c;%a2>eDZlqr78@XHwEqc3aHGB)Y#g|>N1WHE-_)}j@ zgM(cY3IBjDRCZ*OmsU$a)@BBgJfjQA_8(3AK0PB@r=$2^YQK^Ue_?*m-D%*|f1Bqt zq7G{dRC%>3edMyq1p4gLeG>9;oVTu`nnd{xkcAnEeK% zUQH!OwAW4>X7-}CzW!9(Qr!I4J)F{S~1|3`=wGU<6-|=m@y|0&|5l^I^T^r zY0ufS$ZNU9e?Ki1ZzL4(e!o0~N_(Tp4b=#=XmjT2b*AIj`?)kOG6jXW`;yp7FTB~e zhTrgK4Ho=<#{bCmbV8NlxbtWOzL9@VTSDS6VE6I57e|+)Md+d0-7Q;jLq`DZo{@@{ zue#_jqc#MQ;TA_6KC;oSjP|S($roZ=X#G|eGw5x1A$}H}oA6JK? zyOTa%xR-(3d{*F`*IQ86?GugYn}zuzTBh@7WYh0f2S~lLI_(oH=NSz>r;}<~{y@zV z{5DC1{{5Hm~FRv2mtghp{-A7vKH8-YitK&U7*HpmtOZF>r%- zDPt84Sn;;@w5k`~ygiQ|`mdLYOMj#6LI#f)iettBU0l#0h0dx6=;4quTEoxdNl3KN z#ius&tRDsFGNOt<`9fHy}t&77MGmJZ#g4_AnwTtNq4T1gV! zCUx`X9Fs@auc7?S`?c_Ue->}c3oE3(cgVYPDO6EuAOT4Y^xwlx)T-71-yP*s8_^Y5 z6>*Bc+ejT3S?iNi8#S=l!k%PIQo^3UloY#g`EnxXi0&LwjBQilS&jUMzapD?a#0o- zYyFJ4%)dngIFFkCa1GU&a)Xrooq~hqIlOZf+L&BpL4E#5(Rqhc{l0OWXpk9|C^IV( z73Vy+&=jJ9iiA>1Wu;P@X2{G4*()=$I_J4hs7Q!JLz+UVFD;4&`h9-?a$U~ly3XhG zJoo#4zhCc#irA-{#gUgZz}TRBw-C0Yt3ytVDO%`de-bNElJIMF$ zKCZ;{y|6XUi!5L~gj3#G#CFbOvWy?N(+%GdG1pG6O+doDRLngi=LW)QxfY>?vrL^cf;fzAeHh$(7d*c(e>&CGuA ze6a`|bVk75X9f&c_QF0!%ev6_1Qz6vlM2rPI2mjNO{MRFKV}`AjlT!$wGE+B9bxXF z{ZL}l1w$hduzpt;99kI)FMAUpC2lo5eRmf8Yy@D`BL&1S*}?RZ0_cnjh5K`_!>H3z z=zJCjCv^B>ws|nr44r|!o%ygzHXCS2G2Gp!4c6u^aCrKCw(Ecx#MQU5F6A>EfbKXV z7OMfP6hD)@EL)iMxslY>DFXRDrhnvl5czZ2iW9D9OX^%S$pVc*5>{kQME9G)xTQFE zMY0s^|07Q4_WtAUl^o^z95_zTcnPw^Teq}486sh!d z1-8+5Hm5m9lJ+`%W~-emquUZIxg`plsI}5By4AUhTR*S@>6-cUn1TuVmfxddOa9Pb zqGMEPyqOj_*3uXQNxW}V$IWAMR3GDI>04Vdj0s^p9nChVbY~65ElfbiRgLsuswtj{ zXOSb3k+k^tG_qS`EvhJdv&HVe)=2D?pj)bhISuV@h&g% zhA4_v;GyLox| z>C;oTcX|%iW?v);Oul!)u@T~bFdFT0+)4P2c>K!S#G1FI2IHG3TfL(KD_Reea~o1{ zXMsS&UXLMFy0UvCr!ohfgH}Z#oPZEas2E zKib9YBsyg-_a7a3;2u4=4)oG z$A&Y~`1XM!R?HW~Y6DmFHWb85FAt+_nGOvtl}7K;DXz-JCv?xz0;<;kkH*XwLyda^ zC>;EPnu}eeuD>79IUBBXJtw7cSHCYe|6&jQA+n#_{6U#&Pb!dyyWMHa_9k{*+aJ1M zX9_oOSOE9$KTF;|>ZA|zXTX-oGRn>tfijUo+GL{-pC!*wiA-^Do_>?|RZfuE1%=c; zNd(|}13loQ1df&8Y4_VDP_gkTy=}4^7P%1aA;#OdXR++ZkdST4nNhVAflx;af| zc1j1PP0>S5PLSC<568wC7Qpsnv|V{0_=X0u-znt7@A=b-@~&$jEtYN&dMpLZV>~DwGEpapDphYh#mV zCTy8nj$@Y@!uoVRH2QTGP6vx)ti3%rnk+#1*I{6PaF~iL&VcbPpXk@<5TFYzko!jn zPK*U%!e|E3G&qXo4>O6`gT;9N$ro}{x{=PF)CT>AcKWk>6@)EiGHTc4phZ`f@n8$W z*+w}$Zx%rmt(B0YoyRV3k;9`#w>ch)%%1CSIBEDKi{{k%?b$DHEKErJdnZ1tDS;jSBW z_|#2$J^3Z~ZQBy+?61Nu8rVVyEw{0R$3;-&^b|K<)&MuIa%cbdNeE>=+mZ><7HW0; zA_?q`rEFFMsee|@ZQ_W5pQ$_@wJRZ#hkPm5S^!*)C8=+}127ex^!zhP7<~7aDu|{N z-=;w-@=y;lorkzh{{=v6<~FW?kU3ll3Z#Rsb3yUd3wrsXG^pnn(&=Y)LC)BQ25scFT=gZxO>U4dC`li-Zh$X!iPVVC4%oRm^vf$2yel`S7WX8;xl$61{5#1> zyH%L#Ee(%m&Boi71fIEN(!Yf2S~bfY&b?*ssaqI+q)jzF*x?R=v4na)J^;nj zUvt;n9e|`#U25|o3chW0qA9m?z-8uXy7OupNEBsI*A5?0{7LApC=V#6d)eI|g5cBj z739C3I7k^gMBb|9L8tUi!tn@#M$rUfSnL3;!^cV3+$<>iu#3c+WWhBi>(?-R7%~@J zAzi0dKwS-oJgeFWHO`$ReA*F^I@&?%htERl@EoA(esJ>CG?*anz}CG@2DzT#Y9$N* zxrT!1APeG`gu=u7QsA>H3OFA>5tThLuy(wFpo2H$O#jLrk6`!;8TSmn4g)lLB(cPg zG5L=;!I*!0Stgx=T)%U%`|g{ao~-}U#JX^;mmG3m$I&!$qmMm${&AMvp!e;Z#wcabF0By-AF>JHnE@;>_fY|IQ*YmSVh>e-p^E zBvGFJ>3c+6dID`Gq?nmgkk`Ie6y()s^9n{^k(61J7%(+LZk4^o*^LWf?8hjM@7IH% zZNG3ilLb_FZo)tHgG8I@g)+Y>1)mivQ9n%$dJjFo#7)B_d37iHPTeH?R2d(!o*<05 zWMEeFHh3GBggPtEz)kHqT;gX57USNixknE+5AVbiZFcZ>)k&;r-UHv#eK4ll06KO! z;Lm4q<1YEJDVKz=G$kLd$;0uqrR33_ zwV+s4LV~l#N!6S|_K(=FTlFcu$Ed)A)zP<=Rue zIm;pIy*?E%I0}~!-QpH8V2SW!u5?kOB@9+)(_PVogi1 zegV_cnckk9Hn7@r6rr5`sCIl}z>`9ybP8 zL4HRXMviyGl@;N*zW)InG>yQ8p`mbzVFGrP9RRB%xhSI&3bI#XF-9>BCRXL5Z(|hj ztKPz6&Kn`2j^U^+>nFn=e%L89MY^0X;>yCWBtfed1DbD;2frH8y}XR+U%z#Fn1hmfENJf9;;9QfZ>|D_-Ogg!lu=o?O(72Rrdl8K#nrn$ucn-SHkR>nd zQ*qqzKAYQq67$YQaL0e!V$P2>^af`a{&s!BF*9YJ1LU}M&+^JZIQ&8 zv*p+q+b-a;1qxj8oIso~TSn#;E=61`1m=$QG~6zZ?2`LPM;3-qd#eT-s}@7IOjD;p zQ~4yJ!;3?Aj*@(p2>RubG?_6FLBq#_*q*KS?4>(~h}XB-#BoD6nSE*(H*f6=&emta zv~Vn%mMWyve zB6rOC5J-ESBZbbJpf1;pq|W|Gj)?%t|1J(I3my?rH3FILzeIfR5*QNbCY4Ktp*6^# z@EI(GmwEw&q13~*wS1sA@q_uU9f$w&6yS5-RWL5y26t8cVGh3tj2zep>+=iAw;4e& zU-l7sBpm>UwUkMJzX>di%%fxPHo#4fS{itQVQ5x_a(O>8K#a~{r(BN*&SMSzb2C!l z$m0-demoWURGGV=1;hG0@sK8O3Zk_J8*v4W zqX^m`2!p4qcr;V#B<$nFP$f$n_?DJNr->W}i6fEJp3x~ME*z$x(zY_*L=Lt8r4Doa z=31wQ%w8+mfoyye@nBP1Zat%0Qxye=)0ta})J)VU0QZ(Yg0)36FP z3Z%%N<(}9y`zkks@hUW*h~;)&i^YFxb?gkw0Nj01g^Y@yz-1r%*t1t&!kdoA*eRx2 zh-IQTtwL{LnoAN}AeoD58#j>B!27sB&Xp{F)`h(*g1MJcy0FD*fV+M_#qkqqsjyw3i5wGMt{Jum1dW5cG z%Etw8R4yLHT@7LOiV~dDs1EbW%5m%0F|t7~4cm@9B-R2+ICr5q2ud;hjVo$!sOS*p zim|{`#UIW1^&v3tYFUua)xyQ~f62+qir6{yiafXCV;I;| zq`ylLKTVw@u@{suk-d`p&~gs8k4tg)ZFx>tJ1iot_UCK5=ARa-BtNI&2fxyT zLqfRaOAmEs&A^h9Y#RBzfIg6PWohQ-QtkDI?By;@p5st6_0kJP`4(Z+?ny^u*BjKc zuoB}w2XQ+FuH#nSx9nKUL_F8Dk=!nb!ugv|lLhz6vDNnhInTX=O%6Xu>AYt2k)IA# zyBcul^E+~F?$)h5JbyY~~z+U7RO4T}>HOHvYq#Uav@7+$iRyErU=_ zCvG$F0W+runEu-z)K>PPD1SU0Fc`)w7FCciql@v?w1V3}8#=7#f^X6=e#kC{ap&K- zI)TymhhE`GGX=T!I=old3;`b1xOJEZ@rQa)IW!V>EclKmy{~~_+GEt*{~0FV6rf4e zC^Y^~$5ES3;17tync>esW7BFhcsjx`h^Ha%^mCwh#%aQjdg8&~D2x$rmSrv_c`A zearM&ZfABTS(jjZb}1x!GyQYA`Jk8>32>kojKwd2dTBcFKiCIybCV(8_7wbncN08j zhQRaIHy|PI3r7yufv#KtD62n&muX&bC1Sea)DsQxO%XP{^QMkGKmP*KcS#cqqX!_R z|CoKRsSlJMK48O!Avlm%&3T#l3eKvFP_0|9LCO3KebG1xBj+?xYu;}diVZ=>T`$1j zGX(A98ey?U5W3slh4HRf47vXhhP)H7xTFVMf0tnOnzz7ry9=+>G{D#LA1E$d44?nc z|MAI(^U*(WDzF61KJoFg&zHco%c2bX<2qa)730~LR)F8sY@WCNO>llA&8t0{0*h>w zd6Nq_0)May&n;C5!Zxb&RIG+c)tCyeX2oa5FEgJvBvVF`b~2gG*+E3><3gT=ZXxO6 z$?&$WyH7sYi1KpsSmYR!rwzY6X>jQkKhHxagnK1*469?(xGimbyp#nNG`)8M3;J%* zVD;yyzUVcxODRC&Iv=ag4O4NG`}lH?6&hUU;3a-DR6ZVt%5G!yX`CHisv4){ zhZ*+&U5+ku3EG}8L(^}@m?!9lLzMzp*}Mmvv~sBDqysK)N~1z&_M;@DvrLc}EDKwV z<5U2Z zK6Dl@NIYR3t%*mEsKxY#&mHtWpFwwrJw{OS;adyCy|9K< zgIdg5=M71k_t86&@p8Ou!r7m_K*Zj)DZ=nfbCk_c0IlXVsOZTL`@c*>@_IXIY=1&~S6n9B^9O0t zm40&eYataJRUx$_S=38z)6FFH>olkT9(&N&gWjHNPCm{TF>rs=QnR&}pIq;pK`$S+ zBVEZG*&n`MAmXD>xdoeVlGES!)AP+0L~LE7LCBe55>imkw&0jU_*EymYTqSr2j6!oL+vZ)bci zgyp~FtYhUt?FOK4Pv^jdCA;!fdB0rTH9I#mMK~E@ZO71 zvO^ek5;j4xBXgHB_5wct0Gii-3DgwjX~98nn5toTPINi+P1;kL=W@__GMGMUHh@oI zIW*_$Qt)%XL@i|XAm9@DlilVT@wT_6ODD}-VCf}-Pu+KeBg0X@>$eRi!wE`eo`;Khi?M~92CTK~vG-Ft z)J|EWX-Fwpm}=m2;|7@fkFNwwvc{o>4#(9A@tqADA={j(W#3g;5+dj*Rin+b~-)h8Yeyjo4xDUF3!^o zH-uJ^`p44@?PFwMqT~^rN>~6YV$A2A;D>EbJ0Vbh0gSHdg!;bu@Tn!_O^qeWaFLSEL;jX z=Zrz1BoQWOGM&tvXt2HI47a^+z>-u~C{f4&r@C#hQ`ZrA30C0LbOPL#?S+XO2@v;w z8@${b3;y4hf#aORU~^^}xb2e%4&N@g!sPh|G##K+bbvHGC7{2rjC5pvB6pjZ_tz;u zA`>(nQlqaC<+BQqSS|~L+#E9bS`=KRUvrMUt|!)eSmYmXAvB5$!uF+yA;MZ24i;E} z>c8vkX^;EJ;Xh$?w*wLskmi1UVhABOLb!UZN8rJ)4$9`2gW*eBnB9Ad`2I)mRD2;J zn_0L*Z5sR@+KF%0Mw8OEB((EuXTP1SM*~A6B7EQ>)+(BiwNXzoq*s-yUwMmHI@M^B z<}fawmdv_vgr6s&{fv9zBh%gK6hlX>WO)DGxkkr_w0III#&m8j<6ZF5#Sm#N-t-NU z=zp5ca}5$j=P&Dc8geSA@tN>)J2fzs&ydHKmO#bdcDw{vRdisv@;*heQ0AB^uVUs# zd}yV^6AavdKkSWosh?bt)nv?zs5yu=>zDI>TwvqstmVA-(>G&V@Je39k;~W@tIpfT z&cM>mN<8TZ2RsIPyq0bi^s3h24eB#JJ8|=Qylp{vpi_w_kd%rC_N()vwq8Po$5K4K z!~PhyOn@hU?IH$RP9kXxMUmVo?E7;D3-e!N;Kt2(%De(cEwiWnNXB8y z9~SqacLc*#ai+IOIBuUa#x3dfM!EKAa(i?!cJ==w9E9~#WgSz`~bIhpj| z45rUM-5N(kH9_R`R&=pC3$igX*wz{eTg!wnJN*c3{z%aGU>rEkP{DiWAA-+l0e$l9 z6-e)mq`@Y2;Kc0Vk8{#t4(||(O(nuJ@ufJAQvo5%3@G2_JK#&lxsmeT%f zdj5YTWJxC&mt7}u619*%dWgh&J_IR-E&uf1d*&{w2E$vv!i0-B#C&Xp^uW*L_1+Q? zRTlxByVbDJ=PwD?XaV1{*TmhR47MD6Ok%Fa!G)A%ASRy$bhjg<{w#;OpNi18Gad4V zXTg{76Yy7Z0Sy1J2h&AsK-wu95++PHrnlg8%bM zG8Mi9{_NOJTyCs`kufhKeT(U|FpVaM7+q(ANm|db(1Us>W-vdg0?NOf==B+MK=QQ~ zO}VEB(Hq<7s>u~leP%KK`Dh0z@>W>)+zT?uCfv<7gOe)_vCvW#iq)6lA~|cAF-HrF zquk-tq0M;pmJ8_Li^lK6nqbhHjE(me!6K;>3|q?x+O0fM?Yuddy}FEg+sq*S-c>A1 zItUAXMWWY?KyXow#gWnF@a{nY`e=8M{tcBVAu9l{3aYUvgW($%m*d0>F41(&N5M9G zBC{g}SN#qk{yiCZxV@Ql*_7kc_%SkPOB3pO+K^>U9DMfNnx3vqLHqI+YV^zltER7^ zOAJq9hK)Z*MEVkTwtVIOWH@LadSdCJyNl52Z3Z1LTY=5{>*-_pjhHANPv5Q6$98FR z>i*jh+c_`jcf~cxQ(T7a^=kO1PzkSn?xV)X9#f~vE}D_jLnCJ~c_|LV+OJl_4c+^Z zB|Sm2FY6$ze?vd=siKjQJl@*lhic<%urDYC&%9T}HIw?dT=56B(&R^z4?=jfS{I-G z7DKC*zQ}9nr~l0lLdW0cbWg-SO#Ye0&9m@D_wA|FVkil{Y_HSxi;}Q%K+C{i(;X)~ z)5zWjMkt&9gZ(+s4s)`HxYu@uqe$pGuBx;@uAd#kIpnk#`7+|@fA9VA%e3cIY1dWU zxGbM$XkW#`YFRq(kqbsD?xgi=)}g&?4-NehiXPLOsCiHVre3a~4=P+Sro@H{)aYUM z8As}l8}N+GZ<=~#2TCT-#Qi%Dq3eufx+T|*$$M7QzuVnVK5s6v&c))R2XkL0)Ep?I(hDN6cu@5?a;vuAEU7HgAyul%EsFPx_HEhi)_%r`^#>lUWhz? zPpQCjRdTp^ZYGXTDx%XE!&KA~!8t1<(5`$Do~jB&t434&Hgy^6p9|yRU4iJB*h`bw ztVhM@RcK>phX0hkvHPtPE_r5+*6$55>b)^`X-T1~g9dKzmd2y1o%H163>w#Tkm~Z* zv2SU$(M|se=wJSIi>58y!`ROqCA*-! zBnQ6A?t*=_2{7-58!TMr3B2!@ARsajzA*cgTk6ShkUtu(FuBp9KVeL6ArMrmW8kZO zFi=c`otJVU;YB9cI~PIV@dWTZkOszLp-}iZ6-w@3hIH*L*rZem^3hemJ5ULsv)Up0 zO%5!(-v~ONGQmx$7?zY(LXKJmY%Z$Zg#Q)5p{IQTmllDeOP@9j&_E>#PO5wY;1={0=)69cn+KEUP0fv{*z8$^aNj2^-3u)C4T zcpu0Cb%rzZxV#qNYy#B#)WAq|1au{zfOvg7IJw#l;<<;RSNJkmoW2B)95Nxu{uEe& z19;vtg?^z4@`&t*Byk1c>iR>F_&(TU?+2Riq~SxkCAuHHsXD?-T#R?)6=S2-STO6aIr!j&_ei`rj$2B7 zDmvNAWZp zclH`OzD-60zfiO~dIcLY{LyYS1y{=!;{CK#L}r(|b73xu{Vqg-oD}RbO+?elJm!v; zg|51(nDsLQO+_QoCol#1fBIvnSvZDC`7=GX=P;-8B3jB{z@xKLQT0hSI-D)QojQ!Z z*i(oO{OusKNk z2hH$6lpXDi--NEIGwFoc1{{8(!hVx|kM?c5M)qr8q=k=1$);Q({I}VS7>Ze;>;Xe| zjHLj!Jc%GVt8Z|1e@KAqc3GNuWE#kBe8lWrUXu=ucKXJNxhwEi(!231KuGg5*FaMS zHg7pdEqbScOr8tX?zDjLO8=W-E1Ar`hAufItj_cUY~Xf#Yr?4i9=h1v3idX~a`W=_ zq1DTP?5tk|ZzcY6^j1iMzc`0}Jn@;d2|H8qx-PO=e+F5;?H>7jREHh%`UVL-)x@0@ z9YGFiByttxBglaZuh>r7Da0hqhHT~TCTd=ttQ8p=WbKg|R6HV-6g_idpVjIh7DHRe z)i3$vh|y&>-*c^XQH;B3M;jUZ-NS7Xctn)G3~}qLRlz() zfs!pYMawWMRr zmArYfl~9eV#6?|_d^LGV%q;_n`Y{hw5seu3}o zYhUfqH`$3T)N>KneMw=*FkW&0^DK5D$e__z4Vt)80tL-$>8mG-SpD@bHB{ikZBiNZ z<=AKHeDE5>?UTgio|4#_J{^zaM)bDsrZeR1u+x4PwjA=rC396U^veY-7i6KRhY!Ov zQAeKFA$;+-lcqf1i)Qt~^qr?J{#EFvo*VUXpOz{{i0;O?86W6+i;Y-3ph2By8lha7 z617UQM%58j`sRW&-tr2dhhmt$HoK8Jacr=r^cM9I(?{>XKzdw$1`k93Or47eVeF6^HMTht(hL)vxRJ-CTPd_#ou?i<8UO>Q;eT_XZsGS z5d4{rEfpovOA6?-zVk%IV1n)#OJz51T!^Ai3U7`XJ*I2yWymj{FZJ+qC2sa!loSoH zOOyHO)T0aJzX4bFdv`&o8ZBlk7ycpRfz#RdV$#Ve4j+5UH;xo|gt4Q0UJ!dDal#54 zA-isCk%lI5IG-L)UiGX3;q%W)nU^it{CG&Fq|ISan#n+`+rbNLCkLl|ApId9v|I~^ zGxi^eN=z=S4q5~zZIz&`Zwq~fWw7#%2^3tagpPx9plX8fpX?&2Vpvm=2KsRS)-|{i zuL1Frl@M;c9frnk!#H!E&Og)&nvC~Y_I)?(+-(dj#SUn&R)M~V+fd4AK(>xmu*q2o zIE!*&nurQG?kNMSgi`*ir&~)Y-F@v+PA2-G9oTD=+ke&U!kNlCy&7`(cE8 zg3QMJGum`Ocs35`ZKpDovRK%WLc2wT(CWe^`g_|F%-)kqNB$nbw>*AaQV@?vm075E zC=>s?wj0GQYVix><*j{zxT#AO|J%uQg!V5*tG@~OaDxSUG5f9d>l<)$2nWNmY_MUN zhw(#!D8cCCBX;R1cJvkg{FI6Xk)Kddipc?Qp2A}0IJA)#;H^$AM$UyXZ26grG5SAn z$r&zg5ud~xIS+A9<0QH!wqnldaa5kmL5n4yG3IbCp38cH)%y8(IqN;9eQiL=dVb#Z z|61@viXhK;CgSI>e7p~j>hSi#-#F&hh)YHOVOMwwez*IEa%cUJ9}6+c!Vd$FoWY8U zWc2@=gIn`1VD9!CX!*?+vxVdF4BG?$a01aJFdR?Xgki^`07TtMev@n8l;%L#OgneF#J%1 z>6vkWd47xFK9A`F{Nw?9WWu1tF9K3#l>u){D139RWV+BI!A-da?yN3^Qx;9|_g^hE ziamz%6XmdEM-Qa?WWWQX#}KcS0uE76Ag`GNb)&CgQ&pcd+=zBY1iJ4Ky(O$XD(R-~0uF+p9(x zjCljTR_&m2ZV>Fkd*HrM6U0P502z<#VD*RtT6r8W4QmBCofgP=^9*9N>cHnhHJC8Z zu*JVCpj%bQ^e<+Balqqug5*6Xz;X8^nO*1$e!bnq z;Y}a}w+lf{Pb}y;bP=5o!JuHJMN-^0LTGyg_h{NG_!j+%J2+$wJ71?7Y&J24*hpJ$ zK^Pw_f<)R%>PVXGAobW%M^vI7(z{!4u}=-nz{oCJnwe&W*6eh8$Ls`p4Cc{;afWE| ztd+*QY9rq#d6Zb`f_7KDapsQ*#y52tEsHN=&ChJyJuMzxb|o@-(_9>g55nuuD^OFE z$pf$9aP z@x`=qv~WL*AAIj(h20ITo!N{7y*%t?xQ~C{MB}obK`0+(ggyyAcu!RiN52Q-De0}a z%_ITkI#%Ja8wvRHpfMg>b{@GBR(O}S8;u2+9+njCpX^08>v86E%FZI{=qB`y zUAa*T)m-Ap^&?;DtG<4cIE^2x5(miwK5<;}Vt}x-n(1w~Szyy1MT;LUg_p8Ybl|8B zynPZvzh5wgidETEaXQv=6pb)Oiiv_c&V%UG#8|0?4LECW`!!t~VOe3ZvK(&(Dt7kDB^~W&y zA|ISxpFpu;3HXIF&*vlug8o&*!-fYi^syVZ@wyobz z={`3=`9J1&Ywv*p!@#xZY=c0LH?Uly2~LzTImbPfaCOmB(2T4Go^=NlhNAE@pKf>5J(K=3rQ={CaCZAl^M;&C48Hf1q98Vfkk7Y!f#2g!Ha2>3G22M%ANL2*JAW_6#1j|^8OxF8so#n%z_ z0vE6pu_HhJF&xva+u7TXw~)4y816yLCqGw3az!#85lxYKG^4GDm=tHzSiDX4S+vsi z4MXH^#3=pAJeNZAPMH7%c{{O<1yXwBzQCZGV$`vHgR^dPFjV^kKDt+pqRGuDV3Lpj zl5^2fp$Si~sKfz@mrNJmW7KM`#~ppoaD&QqJjSpW72n=sbW6kvzgt*sbBoEp)!>#V zrTDS62-l1zVC9Y~++G%q&AoTg&N2ey#~N@dh?!AmK0yuZaGV|7&*Us(@avuT=zHiq z1{k-XRF*L+G0d1}&lpYVS01`WEJvGpnYdAh>0M%_qxUmm+<)ORDpu9fM6W<>t7Flu zCxJ+8gy|!BCa<~p2UmCYcC6f{O1HbqW4FLMT6tz6a+l7fqP44VmP8J#bW9pkmiMwH zEyCzOS67l~dz))2&m)GX#pt8{CK4%fgoYn0B?0FQY3ZSQB0ThkZRxKKG7HMdJ;MtS zD4It8F1`Ro*TYD6{b5kdoCfO-?13<4X79fH0?bvM18+7Z!B&waaN4mPj`nN^{;pcM z?!g9G zLhZYs;8Wrc;wnSXwmt&f=8VI-{?jlpFw-zF>?nMb5;c4ta0#9c&Nl4ZkOG0h!iKEc zY!Le)WVlNr1q4C`4gc6j!sM$dP|ga0)gM2?5urd(xZ4fgve9tnb2nUm9uNE0_k!%T zG-emj4K81=!JV)7KyWw%oc}e@?Eqtbik(Gog1v9@?JrgVAI!X^0mki=mkuZ~etRy^9}Q-0W&r%Jadn zRxnXxW{#zI<49rDE4DFz5V`rng>AC>FsV&bB{_~_q|R~$>Eip&(cXWLbKW$99zS)A zE>3cxUkol&{#z#O_X{#dwT>jUXixjyQy9YbHv9H(uwCuulAlV^R3L^enC}%taGBXVgtB!p`4z_}ifzI}xz;NIA*{$l<@A zH}If@3|@7p#&g?6(9NO}`>OkC{n1;@o%9*~aNs7o>}F;>$wm~n6~(jP8gQEJ099qq z?9`4T`sWTs)xahi>Q{ran);}7Xfgh}-%S;nv-89>O7~=PvGDR!Iv!hv<{oYIUt2B) zcRr%I!bRAWIUSFlW4OFOC2{G|PRt3Pfia{KkDnH0?(OmDS|Wh0Y4LddS0_DJn1#7& z<8(MIjmh<`z|BlvuI?HOS9K;J&rcq|{EWgpV=WY#6^zMIfP161qKLl~o*7rbo>4hW zKf>_dqinHhqXinp9l$PO12oLDL)Gd9xcZbGW{>fq`acJB`_f6xcPQg`sU%wcTM*UV zHEH~t`3!$mnD*>fME*NWAJ|Goq&J2*tIPqETjC#dZ`-$fUQP=!u;(gy6SIVQf1M@jEH(T%FP01h*3i&_ zInXEB!~M*s0wPYq^xVZBa!jp*Ch`9y_XE+7 z910C1=SW0h3ha!&!?`S)4bPu{WKUJ+!%VSR07FHvY41w-FOkAEQw=aqy8*X{HbA7* zRgk=Y1me!;!t;LzAp2T942j#r)V)@C|92N0?k#{*BVJ&-JOm^;p`ctC4dsk}{Hrkw z`afR*ov6#O_HP>G*zX5&BMG(-90#8(AwUK%!htt&py%Wcse5xF{g@f_b>#wou@Wp8 zi-lE8*SH{)f0E8^WpGuD_FkJ!6k86!-H;q&TND9a6S?Hmo@j{dZeZs3li;u}ln5*D zf;lN(q|VA0zC5Gkn4v!m$$cY>#dpFdqY_ebLlowz6tIuo?I)R;7Hq$hQ{?@I+w6(^ z!$h?&kiAm%HR*YAgR83jo`^;4qHab{$kMR{`gI+be7llMA50g3Kda*Dn4uWMq?u1w zhF>8CmeKSFFOF?f(n%vOGP&i@*K}P}7*{&Tm&v2<>CF9jVh3HX zdu#=2`vkeFoCA9qzB@tGVFjSGp-cG)d>c*FBG@c3H z98<_{J!WQ=93oFF^?{@%5LWUWNQ`34YOg(k)80?<1>kNG=cxN){)x#axi)RA_>v?O^%P3kS!no zkcmItB*jGphF&AlQIUf^tBuK<^-AF8`i7mGpaUwSD@m845zLMBC%HoetO{dD^F0>q zuf0ZOWNqP=+8D8Va1@j;&xO5Wr$ODD5AMtFhljuJ5UC66q1(5OD5p6=fc+=(*zYJ@ zdeuOLi~)kvFA=kCf)H;jMAj59gp0DeEh?Hm}B zxk}iR%HU-#MP{`afOO(@mi%LRi1Ain`S^S|OG67QPwuYNgb&Q ziaSsGE^9}U9k>7eH!e$X9!*{8PYY+Qr*r0)(T*dP-1lzGd-c(E&dTFqR5OvE);7MO z$4Xpj^7)Un=KN+FHv2j)-SnCp*ZiL9Ut-f2rDDv!p`3Ege4*j*YiZ`gXLM)fReH5& zfR4Qmq@{a1sgckQ`ljP14c;0?w<~1Og|WG`$mJFNlu<}K=PP2&+3QrHSrK!DyQql! zY&_A^NjF*yQPETP=o6;gsHL)yiiTBFdfSI~ovEZwvyRfif&Xaj>@vFI@hB~B|48`~ zTBz)YnRqPVHm%y-Lf`Btrr`krG`lE^a)Ml_sLnsS_-zr5nUuv1*XH7HA!R%kN-(li z2iaNck$;;u-WXeozk`+VXR`)c_szuLn`E(RUlTQKQpek(_0*uz7+cgPnfTE@thJnv z5B$vV$FKy>Sib@{4F94X62{o>)lV;^FT<7DeYDPQE-wAjMdva;zF9*5^Vx^^ryfP)^f7(a2GqS+gdbN|VuG+owmC1nb2K%egNL0k z+xA37ttt)!k}>)C6>gF1ceG56<=3=7!4p3V`LwQFjCaoCY`rS*-SnxBm{Az^c?xzRp%`4PobX|FBsa{j9cH0p|C8VkYt3>{43- z8_7LkH;sx|^9~t^Ym|Z~#&4Kwm>i5zYZsXBw^>wjI};0^F=hzQ9)!JTlVgvtV?Mp? zlu;WC8}N*6iB^PJuLgn5dqr^DHWJeE`)bqmn zF#EGN?A|W$PldClc(aGl<%oh!MNy!!FBDWZ#=xhk>p^MpE*LEn1M*^sHa3nm4)!Vu#m@RRfg|5Gtg;Vb0Kx}w2v z_DX2*3y1ASOJK$HRp9u{2;`C$LQcOqY!f)Ll{dVg=gunFDzJ$~>xA<$Q5}wMf6FfH z`OefN#cWV!59=;3WdUpeBu%McFOAyS_uC8DfRDgb)D75_Sp(TXA-Jex=lLYma6L$TOASts3wAWOodl~<*S6PF0A2p?S6Q3vP4me5!%VtxouiD>g~UnDC!a7+8h&#nxf=UW z@M9pwbF)Y;VH8!G&Z5smqGGoM9bGHQYm|qe!g*Kzc>fY~i<9BKJ9|*6(jJ{B zD3bT0!)R}H6F>c%hBF<~@vTV~s*T z3+$*LhCN)T)O$YS&|dD-<8*%i!7<{t#uq15lPb9L@+q9_uR&~Y+IMbtgNBWj-9Yii zCyQ}q&>&1`S%yy1ru<9$VTgU#xJY(Lls0HI8>)7Xi|^ad0zJi?z4A$RBE5k#Hb`aa z>=xG=dXtMfK38=4dMkJA=pV6hTMUaBoIat)_Y`w&F60JG%V7=+|8ag7*Rub9Cvm6S zSFoprr@5z-%9-{3QZ7$mO6U&U&t*ltW_kxW_MVr9_m(Css9pl*&Mf23&&*^`D>}H{ zPxdhF=kvLwi>H{QQHFT0Lm^X1apGbxnX#5td${$bu`AY=mmOg@{J;vA)IMaq0gA~$2-h9?ilOTt75}*cQcj#Y&LpwBTMnx%pw;{ zgLL&ARv9rE%p${CV#al$cjwE_W&L6+_U~nN&O(+$I9oU0F@zf?ZEWRdTd>zJW&GW# zg6HQFGySp*DpZC;h*UJ_KemI&&D%lxizRH*42P^=Qjnp%40_=qvpTjC_Vfu}4!>v! znlE(i>r&ydrU}$nvet+_C_A2MK_()wgcXC=8&nCa&99(Chmu>~OGfwcxNRQzjnMY%6 ze>A7M{w2Qpy7i>jdlkws+rmrERic@8^}KAsK(bt8%g?*3Nu5`sxwTQk3`R|b#cz?O zoX<`C!8(B};oOM(e1j?O%y}Feww7+)&qP0GOY(WL5BakeWGeK$e_nDX8O%ZJh6(h0 z`2qYoNuN%f&cbFhb%7n1hwtx>qOQsBu$~w4*qxtnh>Vculk~$rhcUQ*@?dmcZ7A?D zYOp@Y4wn`y(y*moXt((_PMExnhePFfO|(k1cyR^#RvOeTaS1?;D;3-*pFUnSbUnKt z;f-b|7cuqr{rLXAfOgC*#|%AV_R=jA-9On2-K%umG4Ui5yF}osif?TFy;!ulBHY0g zD)G$rAFQYKG2Tv)5O_dm(cM)IMm5dB|NdGE49AJ6ooNrf4x3SKv^}USh)0|H$xvOW zgI&fOVCmOj)H#|6C1!`vZmcjDnU#t6hxx+GJ>~fLzp3!OHXbi7ae?1qDZE9=Hh8J; z&d>W34_47KX!~>>tQc3v_cbkrNq--6m8%j2j%6qJBr5?P6iISg>()ZdfSICu_ZP#V z&P2|kVgYzhbL4mYa)J!!E%+(l1{P$V!t0?15WMy}9&P;1o zZ9^)pf6;V}3x#xzrBANQ=$_Nu|Nn13<++A(omD8IF`QPt8%>h8cF}rOdooJNq(aMq zGNqWF&KgJ#afeCU{~D@wRM4udBM;`A;>h;OFnE+7N})lc;p&=TAtP-J1uCm(NQMD~*t$@l@ZNu;c{EP%hv?Wf?fR?^MrZQv+?6~aBC@KtG21m1u zfN+r4NMv~{gQ4!rUbgjO6g+<+X3N&*fN|(6mR4OQ@E~3=Q|F@)7jT!!)rz5~p^Z&$ zZ34?LJlpu72|R7?u+t6~z;?kiHtWxAsPZml11;Y`(%ER1aO*G3`qjn~1V_#0%E6GA zG01MnmACBOF$ufYDUqy_m$chu5yC8YO4&L5J+V3fS3KLZu>lTjmV}50JX9X+ zVbYRiFe@a6CI3!?`(NYPl9y4C-&f9FEDnITqEx2*dF;S=)tgFCVi!dkJUKIJe*p1jHc%eV{AZ27 zdrUCcdNVQ~8D#r{u=qnPzPOx^>7W&5EKe)8=CC$#}A;b;jbCF~Z>96VH8#qj6Sx zs6HT-)b?3or|eEr@65z-lX&`(LRh~nohr?ev8B9(yuP~QWg$=Qe=Q$d&B`dSp&6yP zBjmE^5o$l;sb72z3&x+P4N28#7C}NsDINdqE~hs|yHRXeN^WD1qQa^Zbg}I;p4o7g z9`8PkE&H0ND1H;3Yar_Vyb~k$BjpU4iI#iLlEsTg-bwhm)Y|o2c4Pz1zum&uPpGH) za00{MH_)J#Q2hO%iQHHHuziw$jGU*<;f!8QoefT z4bI0;nu>aW*@P)lNLdt1Oc_RPA3K@PnIUAJCMPf|ujB2}_gLM!vv?-Ep1rHNh(SWO z^xKRie7f5}$c2nWqhdYKiB`jwTUu~7%9pp09S7+Xe{nD7m_T230+Y)d3j6++GpA}9 zP}zKm-FCKz4LZZY!Eq)OdpUyrfRT_HEp&1J@ND%F18`nZ#6%hv;2~r$tCiP4jD{+k zS1I@yr~eSGk=p`FGKaaNaT`FqwVA7R7dq`Z3e4?MHoQIW$1R&(03wLw&rB?W;~x#s zVsaro7&Qt9k1vNM65sgP;**e__MU&WN(=_8EbwMp6`XgUk1++6AXY5E;Ah7nHE|aT zH7Y2GnuJ{G85n%06g?-NghaWAC^w)K3~j41sjn6`uFJ&NLmHvq@fMy*s)hN_Wd#pW z8C>*NqdS4eU;y8Z#ZJfJZ(ABl?>+@lm3z_Y>KSNIypF2|0lY6*D1Vh{Lx349xaH2D3WE{-?a4x;>#cvDX3{d8F1YexgP zz}BPN4o$eNHwb^*Y5;wEEc&A=35hG_vE*T8Y=US68^7Q=2RF8I&J8J|D>tu+?Gu~C zi?_+(zt|7_u{wXW?9UYVB15r(wW8>`HoyB=J(|>X^YgUJaAd10#_J2cmcyplnlP5u z)cRwpuw#p9zkq2Cb~Ia|6}@#_$<4V8w@7=@2CEv380=2B4qnFed+VqqTVT3G#gI*g zGEGlRpv|E&L{9N^$Fm2U=L=4YSC8?+p%b*|$}{XVK1)%l7f^R`4Y_NE;;ZgzitL?$ zYG$VeZ=S%0I@V78x63ix=`jV4aKi5FSJYT;AYR}5N|?EC7H=PVmjd^G;ZL?+r|O9s zSe102=E_gu6*9X?ba?~Eoq0;+5Y6>pdqnSofza#ib5sWIwhB;x@f@Jrb@b8GaA%P@@adL73jSVrfeY_7Vqmr^56+;4lSp_YRkb| z-JKjhctLsBWO5kl0vbYgysE_m*0t%-k%Pf7_w*Bd8#xyauDOXF)}}Dxm?ZW4P6P*| zUUYExf~YV1Fn@wAjLw$DfqiPwa|I214Gu z)9n4AG2k>&0cs*tVYQ}^YpcA*RN??qh1uJ2i`g)I{6qHqmLKpoxh&T;5f;`Er}t9m z+*;;vj)^(2{PjdOKwxY4r%q*)vd==%@LtiK+1J1$Q=2!u_z3jJt>phSbc2VfFTWw@ z2@KS}!}sL(g1B-FpKByzx5cBfZfK#Bos7;saiPAP-I#OISa?>}?!NpRzPVA^u2?;q zi%!$Dt127JY900M{AXE(^sdEajSv(8Vjc{ds_@!z4h-xI^Szki0%;KsR`y_Lp^4X|me1L=4#!mj`R zqrZbL;(4KCq)Jxws5h22?)9U}XVF6nzdaQ78lRHW!vwB&x22QnkBsK>?V4$T#0d87 zdp(Vo^=9c&L=gr~th@3IIsF{YIz(a`y558fxh>@598mOjQ!PpS$q`9~T&7`1E{b}r zZ;(&GOKz@uE$NN-U^~VM&Wo+}Tu@pL{k(BsB)V2Wf4=8&2doazB-z*8JN-nux~ZKD zm=RA`LIuay^dz!NOJvfDJ8App93}+u=$ss}s)s^GH}gDepEs5)1BgwOb)hJWk1YAp zeERQ}4qON~pnJj|%O~YAO5rF_vundBZDaWU_a&-k-D44*RRX*33Hw=F1_x^IGU>(DkZ^?9sQ?~IqbISaoz0+hv{&@^iC}cw zv4@Y!Yy*>`0ciEB9vUAy+GhHNyRL?JW$re;F)t zgl2gfuZ&>4DLZ#Wr`@?bPTrc`i)*YDj}>wne0l6z&}NWF4PDewM9Bq zaUuh3E3L@fB@Jr&$CFgDz#eMVBELOhFh5F-Dr7dnk3ZVfyx$YP^bVucIg=q$V;JpH zwujqR2IQ}A23wEol1xw^i&xeca*j9HpI1g?5p;!}+A8?87nHCO4I^mDBS-f4mlfTK zJ;(iP9Yc9h6S=)<3iLE_05AXb6`GbD=5LR_frnGfFfTxzX6M!6vd5O>`*S$?6pf_5 z@jB$b|2OVDJb-3&{y`ssgZg{8962~UQKFX;4OtsZ&LcHx#hqAsd_jta{@YGtq4B4YQ-S#uaob!;T)Y3lzDGQNHDQ zvJNt#Y5J$g`uY&MGp3Fng+9Z)8})Q;w;WCNYNV~p4CtjsBbE3Kq~207`DvD-fJMdvc*xLRiO!eD|bPqXgIh%+$HSkm0<8^!D~KT3T{e9g8WC}j)uvw^!`M+ zVI=TUc344`TNT8YerDUki(uZSF7~XZ5?V!4@b&gd*yz*4f)AF1=vxPSI=%=tt^2|3 zR~?7Dsm~a@%fqwIBTO``26pS#vljuC5Ty2pU5PG(=X(W?x~L4MH~nC;b%&v9q6EB( z$p!EGZ`i|6xnOtb4eRvIf$Yv{qP=iCO6V zRnXylgFSSKf+b5|v4^{NLE!pICT*}C5=_k4-Q;C(v0){%aCCunqg$E&gIVDCua;?s zy29$Ju}mXnD%@3$<1TG5hm6VP9IViWa|a%9lCA2H`Rf`N-Kq%AVaG)lL*B5yj|*(0 zqFdP~15NP~VcuihwS-5nLxMB#Cx2$yCgy!+DxQ5|$5it&vGTY6<8|%PnjFPZ(bi6>dY2ZUg#wym0hBY zTkmOu_q00mhPU)&LOyTT&_f4n)UnFqHQD=}<)6KOO`Y;b#ZK|B=v>bp{^Q-3bgOs_ z4qthfws~q}bU_o%IwFH!g+dl}rZ(o-RZyEqK6`bRANO&s`b`o+}4g?wg)7CcQ6a^9o#AnEN9 z`0bzv8oo6!H_8P5yaJyKU)kT{*HEjzUtlkOgR0_DEb#PSn5JmOl>hWY zNLdg&v*ims?=WFs;=h4^T@x3&@)O*8?aCdK{{XgAUx>m?Uw~fLMc(}DQ#f-#3*8n! zfaF|t{Brm@T-&3BF4Hc-ydj2|Uv(BzwWr}w;T(M?%zaA)r_O=?W4KK+4ca71ac6rJ ztc_cOhZ{m*R=hU8+~W(0!x<_D2wlSA_83#?4C|jE@81hTZak9rHys1d^B(Xhtq9h` zN2AWRAMAgC#%%j;Ke6y-7P5`lILJM z_q;b=HJipalNq+Yo4|#O)%lts<@_f4EgsdMk2$4%{D41aQ2Mhxo@-9Ux;>^Mld*?z zT>3Y0s%|&F9%qAYva0l4VliH?l@)yNdRXTvK_*93&?;;ot@~<)CeMeG!L=0paa!2v zjoXgbBh2aD=jAAUPhi!Xl%rv_8*Tji9G4pg)0(V2TvxG~ay3U{)XfljR%?ep)ECugj7f_nDc5-dPh&UP#HFF))Kr>UUWP-H)9KB} zQarAlNjo3I7LVIQ^`~MndgcN0kz0swoU$q9-!Lpr+fRCVD^XT+Ck0^) z{@oo#A;)&1lv4x^9Gr-X%E6QwwFT9}*3Vwy4`6ViK-{l4p4}OAnA5qLEh?S0mot@rz;Df(Dh`?Z zk?$(_Q1|Zm9;^YsBITM!;Cs!Ts66r`dEET#Zn^>M~48%GfVh0yS zf`(KEvqN9-e;>}0z1D-)pfENr#t%N~rnBWvPVi;g9`U_1BWO(!l_9m+mc9YvdK8tmz=b6DZ7%T>4aVO4=DpY&RSq!R}6XUrtXce5*> zpDRgE)Z)c&i+K@0KmZ9Q6-($7D&8cFlz7Vwq} zg$&ndQw-khNPgZ2asPP>YBSEpfvws!u*?o64~?K1N#FPtH}z=uJ8Nvuw;;uN%4p>c zLYAyetSIF`vfozmWg7Ohx!NBkMN`Nf3h_HrC<%Pu4S`!PZ7_gBRHRw?ETwk)dB1;>tte}c06;n{D0B-Q*UWnZQMMOk&S$UU8c? zY-Vo$b?mT7EjxMR9m~$S%Bm*bVJ04R?CiknOndY-Hnc$#)@=LBrXO{HF1^o8$#Mp? z&iKJDB`*a1$@0MNMS=BwGmzVr2vZs-!UsM9Uh6nRaD6f6m=P}$ z{79$4;A$}Zp3n^A?LtAUilC$u0N>V^z}CEZaNMU1UL;O|XKJPJR*{25iNXTy1W-B#3A+o4fG)rj? z+}*ZS-1A}$cuWf8+Ftnx-LPRy|Mx`jjq>BNs%s|wA{Fhz&7lbbq9 zbCM~IqV(m~^xxxX`r`$3CN`0}#S^K*A(?(|*MS25$=!0`6)nqK9x?y>gIc)*;9o|D`8q=sceK$1( zPNu4WH2U6QOfnYP^!>0D)i$P(S4I!M-yccGJ6~a3X*BH~`U=&*Wzo9(Qly%Hn7nL< zP>Mq)Z4Ld0O6|L-Gy4v@-4foV1FxW(emsR;>cCmochHNoO_*_gI^paU7P?D|6N8(fC|4U%|h zOBGJ=iRE*z+{a&~FL{xF5t?1G!io0k_-0Ni@4J6C+LWt`Q*D9m< zCClIOUy3e?YtL!o<)0y(Rs0lW_1n4MJ=gea1ta(&fd+i@jv4&(%E{uHGmeN$8X0eM zUQ2B2m%tz1euh8vC5iJ`{g8L_bz-aYGx&lsea7dQ^0%by*?seDu}tI@wsKr6w`-6B zNad)qE8hgB$YU99e|rZrJ@BFKrSVhNxlW1&$q#~0x7M*GbJW1Hbsp1jGzQ6JA?wjN z33N5@GSghaD>_mZ)(r}SWrO5_^WO>Iz72x{*_|-pk|{V|Pk`V#_R!fI0|`=d;gE0# z1?`RC@-80QHgAP_H=XUQ^nKOzmBJze3qTr|va83T!h0T7U<1IIr2!X2?KoXp+? z>-rf4D22m$t&y^3&@&<+~;5zd@Rx_jUlebm?N;5l#A1y%OiW7ND-{ z6a^l=GI7_&qZFG*o>e@)nGj8DR-Zwe=@I07D*@B??x24U6VcK~*fnww(CEwoioh4x zBlHG$ul<2<`j3$FNhMlqfkL)gi;kBx(idqBx_$ICZI#s`(m+x^Zb+rAO_W~YK(D4; zrIPB2)F^X{cII-lx9F0<5S~ujITvWQ(|j_pyG~Ify=dr_Ta+v0@+=ozqS1y<)Z9Td z>zn}FwrQiF(*d;e@*SEY_M-pv+UWeosq}uzX_8cSrc#XGxlZuL#W)-g^G_n!%;#$ceBkC%&nSB5|i8T=Wh?H^bm3?I>O9gL@i%X z%F*m)fnvRQdm@>+oQ&2qGC!)sE)4pQwudD#%`GmpudbZ=T%1Hss?S;98ADprs}Gu> zPl9F##t6*0WM4a2B6Pywf)fP2m7v>GSAq7-fh2wt3Xk3mA;rU?z>Sh2yYV|9q2Ugm zbW8;+<5E1`bUP!D*{PQx^^c(?PPdX5J9sgx$JR);o5!VLTmte4b57_o33? z@hr?GhQ@DIVJ?PIG`)E{7gHZadzwdaZ++rO_0T<$&VwZKdQ0N&v;?YYe#_6$NTsxE zi*Q6;9z`k^;)~UXY2p0y*y&h8r_T4|Oi?k(X7ypjze?Ko;t@tIYNRB)Ap~jlbjx!r z)t6V2L8l3QeNaOQ8s=1drJ1_M2<~I$>!j{6haP4%QR+fB8aiL-34a<-+nf(j@L$27 zQG1lW9h&cl?&dyzce;4ah>${zN|2%;qQgoGDqx}Nch*P=z8G^gIDVaMSrB1CTTiK4WLXPlz z39Bo}#lwXsnVID}Y%)K|d?4(aagbF8g+t}tBH{ge z8(jVOhRJX6g#slhP^9%jH&F*tV`4#4e=PX@i-VF=lOb0wQt+V72GNK8c{G*8}zqX?4_LFC6C@ot!;B~V2Q@1$F%J`G zSX@@hERRly9V#vx3ruCF-X(PQDKbg)hFs!=dq#X_t<*9bJeCX0&l z4M5>oFF#G#;m2jJ!^1*{%WAnjrWb{>4r_n(6BV)gc0{9Yp&J=~1Jz(C?|tem`h7ad zpZ6O=3%~EPmD#0Fk7w={H3Uy2O`GR@(!sfuVz?1E%ypx6N20Mu-km%)CE;$f^)%4G z5GT~{B=k=#6<_WksrwE;#(sZzG-f zxJ}^o1e4gvh0>k?j%I=E}nE1+eSHhUZs4Q*5P*`|*P(B~@0ismK5Q>nRZ?4(rC&EL<)x5mQlzlWKE zc(ag}&S7$sW1x_gvQK3xaCTEOvx`gxYqeIE9Tp>;6OUNu5KK-Q@@arIx`WAqTbm)M7BY!+~VEC*+;e2le*FuX#JmXrwaUM&fBi-XpZAh& zwA}zlMDLmBm|z(FrI*RHZi9Uxjm$!EJ#-qSu$_6!!K#J3 z>2fpZ`KE%YqsD;9+X#aW8$;r42~_PE3N`1(;uf=~Y+(8&oN*+P?cVSOziPU$yo4s) z|16e$sLT=WNn6OkDY$dt8XB({fzNt3P?%#5b_K7c$jo{yJm63B z*WADbxQ>2gy+pmj9kk{3Kspt$o5oF4qGi_;NcEHwHGhquur6r|IuS(<<`PtSDuIq| zQliT}o2cim2}xXCMCoV7&^ui}Iw7M)US4adegA0sd~hDAWdcQwTSnVXyOK=VTCxrG zCLMkuJ$=5C?&Qp-|9Tgbv7{%3rMXgh!E6fiTtHUs<7sckT6(kAlm?v%rR+yzNbTni z8nsZL;`*X!t&JjG*|LLd2fs$c7ja}ip&oB9N}y{`?-6?cE>ZYeJ(WUYc4FniG_rZ+g<1KLBz;Ag(@zuT!fp%$7Ddvh@E3gVpB+^B z#ru?(o4?TepUma1Urc|O)z>}hnnhnslSG}4*7Pq($Y)2`l1-i|>(;TL{i!@BE$qUt z|2)k(d-r2y-3XRFw*zHzSFrAU!r*0R*qg6A(68w|n=xD!U;5o+!~DAV%R)a-R@}xH zdOT&8N|)>2{x<}))QY*Wfy&^ptC;IwF$BIZE#c}f4~93JXE7~51K9WNEc-Tc5_EKb zVM>`+u(n+qju_fPkg^60du0!`n@nMwgf++Qg?!^-tVQUKU2-wx9=u3|%IjnJ z;{%t1)|4n-U2O^+7?;8~K6Qg710?y;8$4irWGZj*+#2>&yWwP)p>U2U zs4UE|n_i#95$n#e0h`;bh@K6@o{}XeMyR#Ohix?eY%JQ~f z!*F>cE^z*5R8OBHE)g=gZ!SI)lzFG|MEi8!dSE-MDfIE1BQIjC0L^^*?+AvSZbOLy zJMq-Rizv&O!}W#*8J`SPsv8cBR6;NL(1cjsnZ( zp_O7FUGYlghj;i<3n_@V%E!>%!KJ)WLMp}i4@RYp`)Jep*Zlm_J(O=1CT@9{LjM|; zatHpV(57&)DD{3ab>y58_21b?SALanAwsTK&##<2EO~&=+a+>3p$BOBgE~=0Y8L6a z#B+X!(r8qcKd05blimi%)@7|vp=Q-y@sbOfB-2xFdoCfDY9hvS3dskkp==QAzPE>t zm8h^sE}Kc~L@}49wwhiq)D-RM7u>{?<;B$tw^3C|jz~9nGo`ML<^nXfP@vu;PS$$^ z9r%RY_-)H*T!0Pdv}^{Ij@9Fg3nr3Xor1{O+={B}Q^afTnUHs+D*xb`F2&{OaP}7! z>GD0ElRtS8C)(C>bx9$3Vapp1;h!Yg=OLSNM{X zNqWxBO{w4t)HK-g6^A(qn?Z9Vc~} z`+!YRqC%yUFtWdC$I?2yCvJ_fowTN3w*1(meO8jceI9O`i%!ex`f!$JB zd|sUZ%gTr0ou=I|des~}_&XI&MP#G3K_d9DU_4=x1bn+Gdc4jA$4^`E>%4T>@v9R9 zyrN)7_(SyS-T+m8XVFqimO9;!7^$f^|uB>XV@^BS~w4k8#DyBxEaK`s?(tL zLLL@Wg_)ri3>T}>tCdVr%07 zGE<7i)G^JtdcbPbio1r9=DYF9i*Ag26OVpFg??|64)$q(!pDz>;;!v-RKHRd7uRdj z8K-Z&*U&MfBOS+Y{AoguEfl%f2s43SypLNUKZ?9tOu4pRBl?`YlHc3rN=FN}@>j<$ zC#gd#M3EEcld;PzuE1b6P2Q1ho9X0D$v#W@EcK;242kS#Z&r_kFMocrb4(wMr7yCiIqD$qzlZ(p)`5xNl3BQp}S}fuNr2s4J*gO_SjHn{&^<+a`s^3@4G;cd@(mIVg|hZbnDc(Pd1=zSt3$6 zEBs9}#9Vu`Bc$%^=Vm7V2O&MdT#(^^@FHXy_h*n3q)t`jR_$|uv00M*u_QOp@IK3* z^_>SRGKe4YWC5gJ{leoGKUn!h7RMf52Ir58@Zjb7FyXK!PImHz=0W3yet4kZk4VAd z(50X=uO4@t@Pve4HR$x%2X305z$;^xL7V9#{C032q~97$hs&Jd(?==Vf7u2W{*a{2 zxmr*+XBaJ!PzF;WC$sw95a>3Pq&FveSn*d0dazi`JQNj4TegZpy$T(gpUhIXsnLjE z)7gCq4RXKphw~kvMM9>TTP|=IrJg?GTTZKz(bypvzD|SA-+95Ogd5Tbqv`nO@n~{b zU4ytnlbmDDVnMqyZMWd@g0&jW9M*{@{aY3bbL723g;sStQ^W#QQtz2Wl4WY-{lJ3? zAIi|LL2HQ5mlin0D}+79Fq)?2L)n_j^hw|+UkdHRlGCxY%c4W*;6~9G@iUBS+eGEA z_p#9{m_FXPiVyulXv3|8SiF4;Ej%8C!?ib(^kHwb+7&?REFQ0YiTWQ!=NZ@I|HWY{ zLP}b)8j6PYyw52#P|1kOD*Wt3W|3LiQE3;El!g=)^}Wv#%F324n`FzD?SKED)~lX; z$9+DZ^L}3!r;YL_kK;)!3a7;Uw~2fet;Nv9&C=X@qi(Odbd&P8invGNEsedSgtw$jf3>$7M%>*^FZCraQ+PI=?D`GdcpKTb z%i}|r2~ww_1CH2sBKN-6AmYUlS(emsm%q>n{_T**ogGF{a_B0Qv};4wkrJ?R3xm?1 zZvky8KvB6DMjXEm>%TRC+M2K66+9Oro8|CB@kY4xsV7!9#lZ?YT`9k91-g%H@z4C< z!p{6jSQ+|Vc%Zft3p@9Nk5&;#hK>+7JR0>}`oqva3Fy5vN{HN=h8OofbDZ%Y9V;$n zII29z#vyyngpr%evEhA;aOKHitX~o<^h`R4Hp=&fh}0UaeVHYsS2J!8+$?-P$vDgK zp)ljL3}yCjgjumw=%|EsnU4D`%A~|-^J&f@-SeX9qG)D$Cx2wDCbrv4qxCzsb@A~xPlHf_u7OmQ&!QMmRZ=% zx`EzUxZ~J&kBFtrK*8txv@c%jZAz^2l*-|F%Ig%3x+=}lTc1b~E{VlVZ|S1+ocy}# z2@MWcMOniaS`n>)CpG(VR$wbUp45+R{#=2dot60ezGCoP*Nwe(Vqum`H%`7Y42I`* z;|+-&!p@`WyeWQ#pw~&4=k~P`oxJ+6wm5{|oRa4?_2$&OEDl;oYlJ^}Q#)4I%^9^;Wqi-t= z`PzpcA8&MwI;YQhgNubP(vH%i8^ZIqmb~w>H+&5r$mOxV(5BL#Uwuu6(q0DayQ>1$ zyO{9c+TC#dsWEp9N`(m?)?7Q_EVL~XIB;Yq6!x32tCP&nUqG1S2!8yh6-uTE9OQKX9vE4%eZda+CjB3Gh3zmeVi=ppr-Fv<1eX7`8JgZr z=ahfJVBzn}OIBt>x6vc{!1xkS4f5dh)a`I|>NJ)WCd2*hf$aHTEL_+=iI+;w`Q;z{ zxjJ|Ybo`pfb3X0>`#~X`m0b@rTPO0Qt@R*N9l_mO4uZ``Hx6n%0tN?sc=psvC|&2n zub&oxxYnEVrd5OI(b24PTZCGb(Olto7)}HUJnX+}xcbJLBbV$2nW3YUdCms6JJuX( zwFk6?{v0;)E=)V2%5=OIbjM5VJh$;6A2O6z9tE)YV98B$)`9-bKJ0kA5Y8Fjr)NP$ z@SmKFZqF-#qYrn{V(mDHaZ91S`J-T_ZY*gZ8vuKpBI!r(LgC)7d6X~TOBgoGgjN># z3oTNvsB6Rz$L1Nj)EcB)=h=2$49GtqcFAg#IaVl;f`-howW}@-e(55l9Gprw6k{Eo zHpkJaP);lJ^k7Z_X=v-LC;6{LYh0<`vkkdyPi)cnm68 zpJ==8XHeTAb_=IFUFI-<+<5v8UEbxi=Mt&ilb-$ zp=OJ9c;JN`ujvzsk5ryf!+(+=amIZz7?Xkp8-GwkVH&=E_>&IhrQncHt@O|+2|o_G zNE&`g7##bS@?LC1&F!6exk(1vR<=?P(+r%He3gtQ?!a%>KdHEF7gkkD{M#8BxT*FJ z<$5RK$YYNwwCffu`t_TfO5^a~C3&8cnSkM&e^8QVJerSuMc)1^F#7yU8Z;#kUtPIK z+O|_9zshEMuQCT+e|DwdiIUez{km9s$pRnc%F!HF!(5NwqMRUy0WTWGH>NM4C2pTX z*xVB^J*6|q3^qaV!XXgdtz7t`GywkYxg$F@IRHA3wGc0C&4WA9SHvTsrBLrbf~uXW zp)^qHPL4PaU4m-qW&Tx|T6}{P?>>TJhsV^CCyzca75U6$HPqjs%^Sl8;FB);Y(HHe zzr8eKU1f8u(=+9NCmis1oxtM}anRCXyl|yET77ip(T^tL?t8whr{ISVlxMTQfgf&I z;m0+d!Z2mPNH!Z5hf%d2T;>vw54!rXf^_fw^wkue9k~{lOZ&jTpElzfy*aEbb$u75 zE|63r%kWgnT=puTi=$F!u~)Z1R4t#yf$ygwdd+3W{gd&k(R@BO*;nF}E@bbAV==X4 zE)O0v6300QaIlYnLz<@YQbRoqN|TsyNh)X%Je8BP6>*7<5BJZy1t&iEa-?Ggm?e+p z4dHdLIL3{;E!Yc*&F-As%}2_Odh$-2@4}M~OCII(OqlqvFUP&;0YhhN^V3mV1dDt% z_PJ^-d%xrh<#nxf2_ouo0 zo#^<7QM3%T=ydx`ioQOO%3Y(#HbR>c4U)-n>RoaB_k;AGZi;9)^DMQr%@DVBZ6^EGv?8&q4s^a1@D^Ah zG=}eo_QRDYr}JVJW&AE%&(mgf$2})Ean2uA{IWQRSN>K(ar|s9MLE1^yO0%H-hhkl z9QL345j3C8X2InfbXvNQcaHoC6|DhmZPx?Gmm%l3sN-Ad?4_mC6CKS=xp}}xxP981 zb+5eyaqeJte)2&X@Ryp^FUh_gh^$ zJ_|9!K%MftnxM;Ops#K!XmRhW*xsOt8})UBBHtnSpm!%wI4~HOTMPkP17jREeH^Sl zI~2W|$H0uKCb%Zn1`6VJaMAJvDF4zOkBmMBS53R({t;Kfmf(_RHP~ktgw2{;h0!0TVPyI^;hX$?^ihixbVsa`veQX*N2Ig4ozEvxzKg`= z^%zTko=icl$4kg>n+u+d-cHYlI^kE(db-i%jsv=$B)!ZL7`py8EhyB%&)N!{HcJ)d zz9{p6wT4(*qr!8Q5ij4+$I)WFR&JgFFTEjm+Dv{Z} zwH&&^l$-`e@u)XWl)r7AIZ#Di z_En*QX^Y_B4df3dd9cyUmA_V0!U0Wh7CT9Iy<_~jzDf<3 zS@`i*$(PtLXBdyIcEH`?z+q2@VV`g}-gJ5lz8UDsXf_K!SP$V-Ig8Pxpby_PT84Y4 zsd4(H5Zqv_&avM%qxqYzQdT1aOJ{ZAgF3nBv`vK%KH7%IPAjs9ZkEJZXrkqhN^#}C zTspU<62nFm)1E-dJ#hOF`LElKr?njZaGRfIVC zhnOd^ljRCtiVNL#Vs=T5=n%RC)nn(>g>2Y^LgpEv%C-bOA6kI1(H^vSUjfTXve4c) z6n30VK*!3t5IlH2{;0~3cw4KmH0&~5zpx6)=`O_Et;7hQeW0&98!PPh0?zft9GzzP zb-@jXPyP({cWtn*;TKrtXpDoSJ7dl4p}73LA|{=d_Kk}>qowU%NE-SbzA0UWm3GQF zLhl*eaWlZ2?yZoXY>lla8er`&8yu%l2^L$O@zYcha#eir->ieMdE{I?)4B>yc3OhZ z9`}Wiql>ZggG<8b@-=8#WKegqelsrpbyEy%-h?9!JH+m`>(L|Rmlz!%gKZ@dlxwva z8)BXjZ=Hp24)$T8WhCymH{esFCZR%z3BMRN6E|KP#vZFYaC*-f?38JSSJPMVo&bCN zIb#i97&shf{MyX-dYGVZVJ@q#P{LVV%eegBNBC!0$Wu!nz*na{ZnwG*tKJszE4>Er zP1?^znfYMZRL+wZZH3Jj$~j_t0#qHZk$kn1181Yi?XC_mZebn!b?*gRmk}?!-%0qH z$oyNFC6)}4@k6H~@&3Ll{uR?8rmQOCQGo)Ti7e$^5xeQE{(g4LuBX6~LjDnPlJ@EE z;C{cJlJA>5rgjCMP_>&Af2(tR<9xM z_izcHUDAUej$6pjIv$d#%6x9oWx8VUAJ=4;ko}RFTrc(P&no+}r^W`F#>4?*FE^jv%EFVtq+aB`Rlh*i$~AZ;duH6qJmCqvJZ z$VClapnuPmH(1Vupqnmy<;OPoy3v_mr#FM;{SoZ+{1^N_X2+)@I!Rg8q1-f9300*t z`u3$JxYTU`D;0a<&twCBD$c-TQ7XK={~|mda)Yj%ia^`z)f6xFy$nVjrDBzI{Pnw$ zQku5olGj`5%#D1k-egS=RrcY{4O!wmu0;joJO}^vM{soyXQBLM1KLk_6mA5Z#id`pZx#QM!#Dd$xhrk^8u>RR*=~x3Tf|5hzZ$hfl)~ z!{VM#(R;`Zc(U^adWR|D)uC@u#Z46t&v}J&vwGpLix1IkpgwLmeGS)|*#I%x$b8%Yl9s&UOkSsPF~n3Wtwy~#$lHgIk;ok80>l@1zYF2Vb|^HI9$&I zFRx9IGP*u!Q~n>C*ZZQ8uNzLP8-?26$Ks}pQ5d*z0!Dms!zIrLqUIP^wD{Qq9mdXB zG2klLZ8ybhS=V81nkH^;*#qx?^+nw60mqi;;LO$9pk^Skww9y_F}-_8`z=Lr*s&iV z>vKbNOnwJuD(-YTw;lc@?Iq)|$8b-li3-{Xb`NQ%ZX?DM;m!-Qkpn# zY7-w(>PA|dPV+?@eG2wH#pfSQq2J2q`N_`}6kU6sr*3ek4=rc7U!o$IqoX zQ|?NB^sVIJ+`=2BUNUU4vn>MC!t<&TMEH~uoaezGR< z$!YG^I+=EDy2vvpZ=f~O-`nO5qtp#1*MDtLFuF{hmXK zpO10mkN`?_tKfi$N!0u8F3w#aKzUcP*;CP*zK19AhR*_xl^iCMPOhia;yK(nGK)rL z+j79?Ow!R+lk)Z@WTp0(ybLNSpyUp1Y1>U(OLmj#^(bmIFeXcn)#Pv@LR|7;2{~5> z3EtY_RP3V$;>*?avcLxJTCAt>ebZsup$+sQ_!_Ku9!h7OK0=MtGLkn@Lbu^7XzvIe zynSdqRVW(c&98&0^8OI?EwiV~YldR~eYW&$j0M)%{t~YaaK*~GO0@mCKYlUyATtGj zTzYm6ExR-oZx45-#q)x2zO@s{-b(qj&!%*Er8T)61DEO8!GLeM|afvs%jBjiAP~L=;Y0(va&(=%KAjGTm)Bx&EElzdap| zdpr}pi!!k|_?(!>*_gY1gSguw7lSlz$qX~H@Lr>)_}3)|9gX~D`M&v*+da;)Ia$i$ z=f?{gBg;{ka#*PPvKP%Se-K(!c4G0pS|K7O7yVYsgq=4fU-IXHFg!IIs~iHQ?}2o* zZ(InseoC&qr(0qB*myKitAOUfE!a1t40eo5#~HJw`Za6 z`-L!m>Tk7# z{aF70{Q|mL=*h`bHd5H@5qxP(2F;M!^4JMGDN56X zHEXh{_v;}%X!le~GabPFw@1?0t7=kL;E2SBRpDr7$(t}kj=LN#AX9^P4#Sx-D#k5nujOL_9k)lZreG2oYaEBeVz<{?R_q&EEk1BKBc9zdR)~7Ls7_nTgFUVe7vd+$!C#|D z;q|^Jg5$hDf`4WZJb$wa;u4bp&qcvyuPA6JTLO75QPAs65`6iU29{BkF!FH`%yl^i z{S##HDfk}9O+Nr%jk}5ZR?GU3+kUU(<83Q$=S-;6#CUs84Omjl681!H_G ze-oz0Sz-0-U$98i4Lj*8p>Y>qtO``Xl>XE3Lz5i7-57we=M}O3`z+j9rGOExbMZ-5 zXH>g97yqBVnIty{&yDGaU2JBfYMTZw7v^A6tSSzZ3&Og;y|DY|6}U%56_1YTX_zeHwzg1>^58+XMj;T51?+3{CA{) zticSI4&Di$rWm8YiW@o6bs{CrH% z44MJM-Y9~4Q@IddK1&EK=mIT^{}XlmHKEXZoOp0%f^hz%fw*F9QC-!^hjr~QUUY1z>NsxNs#a|Gp#wO#V0Qw zASE?D&e&g0w+n3eqr*}9ybM`uz;$|%Y0cW%*XggR6@NZ*i?$tb;bn84(T$IO{Ak-7 zYI-u0w_fa^oR~#y-u#DZD_3)H(+|qHxQSPKex{yn>v`S%Z)6)D#mTR_@PM!JylZSX zes&{)A?O<=Zc5@0Nu9aHKa*E`_2A(RX}sR+FIgPjBJq*hsrK*|UjFD4MM!+Xqjl}1 z&?$?TeZ5BWqEdLy(^F)T6U&pWu98bZoa8xaqNeP4p1i%7me#CgALA_2XHkz`mnfhTscrT^qduwHU!y7zA|znsu2mLKiOqeph7Q=O$t{fZ6;VRas^f5S)-$1h-3!=pbCM7}=OD22M7(}8 z=vVKB=;*CDsazXEyyEb0)gbV?xf$1ed?z%tuf?RGR>3G>1!fr9!NuD_IB(WcxT55b zhMPx%apDMEJg+xQd1r$&y~aT2sit`IWFj;?(82|W7E8InKcHD_3Z}nafYnn+@KSgV z3zjEB7w@xhd0GmLzfcN8&qRUI$22G&xKZMmFO|-Tkzf?u8+4{jhwkzD!sBy&U~;3m zp!4v8px@LWyLa@QF!uf$aebGAg3;j%;snE^j;|G^PIB>knZiXidL@e#&89n1xcYb5 zm^~pRv#65&wFx7Wlq7Lq@&Yn^B}Yc{rCHCc6P-R=Ob?u2i(wxwkVTq0Wf;k`(>gyg z9@C%myGBvMY!kj}<4^hf%{fGSFx?+$&k;M`i3`o$`BL;Jag%{J8>aT9;7TtZzTSb7 zoG0*ilYZ3c+H5}Y-Gm;iE#tzs_B6#Wm}~1aY3$qu9KJUx@3rU`PpYRLCkvVgxD$unlZaH0GZ)dh8vR323n7Jfqz=a*97 z7nXw3uUtB@bgyu;VJ1yF@lG&^)*(xUJfV|OZ(5LY(b1&#k65qP=2$mnw}|zYf>Cv* z=w1@xm~-}eUBKhtvTdJ73-=llWbP;Hg(=~OWM*caVcX}4vW9vM_+Y-bwtlfb^l2-R zEl)9nisN0ybDdU0zghR{Tt^kcwExV6xdn%yM`5I(B;7lhhn5Hvt!_h=)*WGy?FT54 zT^3d*{07@rnXrECH;6j-Owdg4f$lR5U}Ux~j$h^j^BYZZe(Efk^Kvjg`a2h{hil_4 z-9Y#}W&rly5(o=VSYf4RA}o4~*iHnVk@i@pe;uTcBigrK0gta^@Y(w7pj9;iU&BLC z@g9arTR+3JTzjyWu&9-_ZZ^L>zxY0p(|p#U6{)@vQS`tjf|w`@<5iY?{85 zr}sgh25k&%8G*8?8rX2r8NVePB83dY&}@4Q*eIR#ifu9c-*5~(V1}#Z9dLHCF=lr& z!K=-Nc;SUEe(=@7b%6u%!zUe-0_zy=V2Eym<*~;IO*~ru4x$cq#q7d25OGZf-|l<@ zdrJCax4VboN>WdpEBU&0Og};1ve^(nSL*u|+d@?IQ&?-(F8FBNlzaop!Y`8};J!pv zwsU4G%=5V}zTQ6%YA0Eesoq==(*mg1qG-tP6hR%^LLl!{4!QU13*95?$X+i_a8|uV zZWE&%U+2E1sXFqaR?m-=nGrAAGOH|)0&a2x*FM`bR^q9 znaDP(PV6#dCV#dY!OHUgahbCR&uU!E$JV=YSZD-44js;~T_kT_>@W`ZNMJ2d;GgaB z{Ns)}ch`+)Qw>Ajb8#E*n`p?L_GWT(`(XYZkj+!fw7A!$T<-Z#nLi#a;C#jYoLN-B z=iKzzBQ2MkBra0ehi$y!xjeUcXYiY-t~{$-Ha~gXgVpWRB<7bKw;3exV~Nf9{cN<< zPrXDLqa>f5MGKY4ui^x?7E*XRm8Gr#eL6gnpSc&&G7o+QdH3!)e^l zw_@mLFZ%mfjh?o4qox#7y05WGw42e7rViiY*u3M8C{v0SRFh7LJAa=Sf+vaMqt_hA3$lfwNU zkKnnd9Vowg2HUHGAZ_gr*f1v^y8Fvvh?omQqW?j!HT$9aF*)qguMq-Qbi<(Z{e zE6#uX4yNiU<3pV;xTdZTrgZ6v#ZNRa{-p|*e^SDsSGDlL3QZi{PY18;=#O1p^f9n! zKOEDiADS!m!_^smk>xbe`+)%td##N$1+br*33l>!MZY(IX5Sof;&ultS!aeto22~I zC&^F&1pOy^7wb|01qDlv^h7H23sd}gtH5kiB=%T5k zC3bzKjZ=4+qW55Rj5O_sWoy(V#!7#D6r+kg)*0gAbKS81lL7i{P(bqseQ=pc2TcFm z8#fMVgHHQ3ELn=?=aN=I}KAB_Q8d=a;V@k=(}ha zG=-EvZu(}pJ~;`tUHuP&_D_YXO@2^W;tMV67VtW3G_Z+TCeTUBp>jsV$CLd50p6+xLe=Fq35*wa~j{3IZ&8Kg~&3{T|eWC`? zN#i|rh3l4)6=aJ)J{FTzk~E(dSCf09A8B>pP194ykg0kd!LD#JKKh7S&Pp?>#ZUT} ze2@x!J8{Pa8LjR3NiV+D(f;H=G(hVVh0pp+&wM^njjy!VzADF|tGlt%v(Gf&y%%?0 z{E}wpc4r6W7qs55Gf$FzC3l6MTp|5zPE;>0yQ#&>Qf~3@5Dj)!{y_!XRC!a6KeSx6 zFAu)ci5=T?qz>gXQlB`86~>+=t-L`T>o1b8mjT}>t0%eHdaQir1pSvdh;NTRK-Uiq z;eC5EspFU~f9oDY9qKB4ZC^AMyy?Np=VK_@LWA$DokJSbi{Vvo+PLsDRgJnYzJBwF z;(EOl)qL9})) zwj3JYB>)cf1!Vej4ob;q>{_@_s%1jXmylK${xTP zYm%JZH{j5KL_(wT>+V9lul3c5^C)IXIx#>zl{TMpIlDg)C#nY7v}AB06A zq*{;y`TfUIb>TP&@|jFA`d#7u<016Ex(fu3dnIn2r3P=7=#t-!4MMNbQKWMCnar~L zP^uVfD2_VtL=0ZKMfRbhMGRMR6kq2nk*v>d@y2sqYIMFS4tdsxswxcWh3P->a)2*A znJGu{%O;Wfo1SDbQ=cZ9eG?lun^5G3Z{knUoR+7VP?@(G9U4D|TIcFh{`e_$?~^`# zQJYM$YDViBG14^iX1?pN_di4YLkX#m}46?Z9@LJp3VTF-j)0;1|?0EQwZ*enQjN z1yPLhYg+AYNghi(ah0MIC8jI$`*Yr8@>-oUQ*=m9TbY-<+$IK|mgiu_$ugyOd9KdC zTi0oJ5B}F@yNp%3a9ozMz1H^HwT-zjBb z8WhZYPOA<_!idj5DCEu(So^yZw}5TlvH4P&3U(s{d z0?_;MiQINKOZO<}Y4o2b@N=gWI}&a|din)A^z9iW%AKTA^M7!wg4HTgMzARr?s#`X`>73}I!_Lr7QBMBU!K6O`ww8Sl(T|9t?*64 zmEGN@g5SE;fb9ZxOuVrjLM30;%k3Fp6xSVlR_21TuEhG4?n#RDwD95l4RBXg0ToX9 zLVH#_oCzKab0R-LO5k|tD0vM*Nfz++bu*|8(Sl&z!;luH41?_p;rN&v!v1cVa4#ZU z*pwFo%e4F)=bu>t4W@Tw0TGiSHTjv$!fh1PD3j~91KdGH3!ig9KZh7qv_ggyg26aD(e*Th*8rQ?J6`#n( zBnDyz_2lu|{%|~6jc5A|0n4tEJHTrY9QEkMCiUtN;GxN;Ri-fIpBn2YDM~$9MZVwI zD6FXeO*(hFLeRAj^}+IgaFI z27N}7#+kE@U5?EmhXv`vw@V?kr|7Z}d1W(s`>BFBB#lI8Cm0d1kA%!6U=x3m5;W7` za@#E$xJmvRQZ+iAw?gAkYcgK}0}11sGwQs= zC;OgykE;UjWBij>7JX#1nW#340&O*c5ceLIt2DWW{L-)?R!iY01R1`i4D%9@K`O4X_p5M`e^b~1# z{emi8;-T-pM#?RVhs3zkw901%D2%y93w{9{;H&iA9bi^v1Jw?j2rAM{qxsSmnoTQc zOUMxTE32ZK@AA;0vWv2lJ_x;IHc&s8SAv|`O7f0+C_KCpMDI7O7QDteQq~3wS?#tb z;y9l*vOnJji!;2wI~IJ|D0A(R<(Txl+VSr)6m8>6gya71qUFxdFK@$TlvE**6#XFKb%5P`D=HH z!Lt9i*7C5Z{!`b6nAE)Xx7yt|w;TE2X=1aKLOdjcBI5 z1Lx!XnXifaN!;n~9aR5!s?_hiO4lr>qyLReN?W-A)#iuOV3(Cxws{++yDde<*esIC z0-420yD<*Gd#|P=+9PpK>kP7Z>Vb!=k=!i& z@HFYubU82VUt&TB$r_V34J8Npp*Xpu6aClO4ntlZ5tnqeLHQX^#Jh(~Q9JC3SRp?c z-?SVP4~-m%7EbzNk6*p;MeIh$#UmB4x1zt0dHE4^rWnD;RfN>X-h%R`1eiN)oUpQw z4V+U~fSro(g?tGewcjUJcy5HC@ONpQ@laRDtlB0Xcw`K}axKYewHBDQ=TTe$Lfz`) z)abGi4%wWi|JJ0yGmm!q+LS4|K&A6!;$HAaBi^=SKj@{}@t6;_aCaf{zVZgZUGDtx z$Z5zAp3a~4pNFsRp`0nZ4oWkmocxPtu%tYiHV(~UTuvfF$efZ7e~yfuj9{40cS@X;~IIu z!c`}EhN=x-*{DpujO%`S=|Sv zv4oSn2IA$STD~2ijHkC8?IehFy`0Tov*B^Q(oJyI+!85gl`<3H)>GIL`&D$ju_A1F? z`qP;8H(e2T4A~gua^hKwDzHO8`P`Wee;K>6L zJ1s>VkWfYY9p!|L%BLvc)F$Dh-$e?|cpxOXTqWZx|993tp#BFL6h3^Qe*3OLWxvi` zy7ZOA!Bgaw|0$tik}~&~K93t*wD?CK9Zaj&;M8}Ps6Jlum);wLJVBk0o}P?p^Y!@i z@R>NmN0UKZiOcOf^LMRi9609_b*q+qfD_tju}du8cWfi0x~&-7?G?>7Nyk%8AISM( zCT8fhl6+t`S~oNGD9%SGqayk~ybQaaDWt6Jl{oU|PRjeaANOh{(V&`rIBiQLwb_-U z`t?|nm)I$~^S03PumhMoG?zRiKaB0S3>sEliPxTH(zr`Ccz2#O*IubX-{M+|*sve7 zmY<+gH}_z`q(&OAyGQcR9HCx~yK!Px9rd-z!_B9e5~gHe?{z2XXXkF1$1`qN0&R=01UP1sp)CBpV5W#l{3J%{kj;~B0bN~C5w40e+dL!F4N`9_MC4$(PM+S#Z2+AWGY2D9HLixi- zw7Pu?wAOa!pEkQ;?;;Jh>{<@hQcuh~y8?o9kSlIphWU$p*tY9u=%n)>|Eu~6GoMJk z(6G*U-&W#=S*c=+Vgk<}r-$V!shr|H2z9n>XC)VN^pd#O4i6DS2Ip}Edf?WQ?R+uW z3+LqS;$E(!aNyTHY(C8s-`f?ja;-nQ=oj)CjsMVnO))RJFa;wnlybVE#N8>~#~s1L z@q*iawhJDKXS_=Jx|Dws?i6xmXIG3&DB+V07TEJn1&{2ak1l%-@Zo>`F@917Z^_WW zhtK!()0bT^y#IdAPx}H3ItqD{PCE?A*v`I|k05bNCYL7G!_FR=9Osq|`j5A9W7sON zs)*qxH7BSS!dakD?vj62 z^{pY#?>UBQ8&su!(IT>MdPk#tqiAaAX_{V}K*fp0bo+Zch3!~Fs~_zljj!5NGPjbf z??sEfR@Tz?yl;-}A5PH#FHO)cdP09<=77!hAN1^V62!Skd2yvmh;sW!H%DKCp#Jh4 zJE$`{hp2IGY;T5sKn`Z75h;3(_9d`Zq8`<4vhdDll{uCL@@+~AAj*GPB# zWwWt$oFOY-48he=hTPe09X=Uh#BSv=m^;jdbERJBwEMu(%TjPezAeAhNy9?Hf>Y0> z;ruzktGZ?5c^LmTQo&gfm-)M<1ny!-hc}uK0{+pZw1@vxH=cTcuaL|LneD#(a#!qvU zcnA(S@6lL3IMo5ayr0Q|dM;@CVj*8nazY*{@oD94aaG+GzH`PFLpw5g_ihWk_F*TV zy=8*JzyiJ@v&8{1d!?MJD|&3$&&30z&s%y8+lMZv$T;SqgmYB%r_?wO? zHaj&*cg@Ba@c0ZbGaZWGYR>R?#laX;c#_pe>0?g&arWri7bp1D^M!Mg8}id(t_^I1 zafkMCc6%$l>r}v>3qOHvNiGlWejlzalKSPMwC{hIBIOZxz_#~WI6W=_8a&ppm^K{l z?VHLsO&$m@HhOaPi%g+#)^J{Z>y~5eJBb0oD`kEyJ-Kasp6qwQOX|65o!E5mg5W)0hCj(kp8rC_|G9;9ql^p;3?u(Op zXz_!7ftd7n2;aFn2Mv}CVe9fRZ2M`*RYPKMrHT>Hu1&z6?~U2qG#OipjCh(>7W&V# zX6&1V-PoS{8l_^(Yg>M+oPiq4ZFx!i4!nNAj#W?QVaZopE)Cy_ce>kg=G%Pyy~3R1 zEsOE1iy^m}R^XK0gE;L)H6E5c3%4#GLc4E+I4|cgCc5hKWV0ivDeWu{3_6OdRt;eH zfps`aTl#%a4XT+Ka$IgLeqJtho#)C>eYr9(JbefcUG2$aRE-@MmHAHGLA3s=$UBtE z@WT8Kn*C*$cjR{R%s3b}QHAjCF)z7xW=IL^D0WL%0 zrJht4TMJ{3C{XdmbkNxKLp1U62E*zvq8)VzK6}c2OPZ}!(-xi!#$-0 zuD!4WZqCZ!`z!asME6|Y`Sm!2P0Zog%G)r5>9&`j;8v7>S4j6MxL}^P7D`AWQMG{W~CVV^Z&e|0tfRAjZ~oW z$ni<~PP#N*Tl_I0h6>*t7j3n?X-8(5*f*pPxlGbw@zG{enB2cgtXks__d;UDxOw4lK|feLcrOjQKinY}&%6n`9R?(G$ zbX;h@jNGfYqyF@Cx;?B2zhzdD_NxjExllmova8U|I+{)uRiWI?7@D)|5FT&bCV3@U za$2NN{E-H=*5mds_SE=8MF0M76#t)yKc56rt3dc?`E;5RE<=q} zW6DviMxXb_bRf43ee6Byxmb!}!Fr@|y9D>c8L=j1H?DGQ5bKU+01wY(JULv=AKDG)WfP?uSJ!D;+QI^h85po3Q7PC&rBa zEa=U5!F{DVuy%CQqzbshX>p48QBAwetor9z;wcxNygddh? zVV6cK+=yt0U?nfez4Q+Z@=ai~rX0?)YZbmv?ukdd3LK6b_mPPzS z7{dps(RnK?{I$cM+H!|tSxFW>k1$2e1}2vL9En{Yko{qabwA|?B_6X!)0}P`bIlA# z+H3Q0sV5EYX58#F2tWEb^M!H~^xx>lsdo+W@qqCh`$!8HD$nIPBh+!O>k7VIrGfok zh4RzJ-gwSs1DoyYgndh6xxB{{IGwwd4}>?tK&N!R+jbm$Pv^3NuH+k1%;GM6>)=m* zDqr)+ggVy@?zT(1xSEj72YLOP=Us znaVqMT^6l-EC6Ex^bZ(et~fg0kKS$pt#`mp;4X<1yQ#Umcj(0P|=bzjMq zV{x8xub-!%Lz*ew?3l!JI7gi_3W?Up$h~$o6(21lC;thgx2BT9PK}dzrh7>z--;%; zWzqUG9pZxW3|joL<_b0mCu1yffP$_LQWGzv)EU1nk;Jjx7gFLQCVH zG^=F_4!`||CS09|vtG7RW&1LW_|r;N=}Ym*tryf%wHS|UKcMJ;>+r>tYZP)U63>_4 zrZ3~daJ_Jg+Wdpj*zYtA9I*)1&sEV2w^bM*d3lXThoZ%oM*3L32tD*J(`B5Au2P2b z@3|TH!R`Px>P*M&w?!JaX9CtG*3)KnPi)zLh~_Dd#?7rI^y|uK9C#&%CUhQ&7V3$# z&chkq-%KZ`AV*wd*PYHe*x}&7I&sTPBfR|KfY^J!9(K106Tg4#gDYRP$!;qsVN>tL zb;pi$Mn5HE;ojSy(3;i{b{cewN*j@Y#FM9tGRTbs%OujOm>D3*LP64^~mBX=qp0xhZ z4;Vdo5^cHD1w*>W(otPyEHy78O*v(>Fsh_s%H6R_?g&+fazZ^dH9SR__%$dI1+)-z=Pv zX1UkT-Z^&q&yaUIm^vDD4CVCMePq3D3^=6dgiPB*opt`l(V0i(^nQJ~c}|lCp%FzI zRnOUXlaf+Yq=}FsB*WKGNg+*=l2WFMgbZ0iX_SuQkfDN8YCrAzw^F-SS>Bf zVsV~x-+O;P*VSsndYDPlXmW%d;&#C0UxwJBLNQ7jW@D##FCIuyMt*G*etRH<*J`UV zTul$R#}uKF?@C;F^&}qI6@p(@9mDRuK^Qpw7|L_!rWN}Rpe<)WTq5a@MjX2>@v#%; zsb*n$_FRP3(U?AeGP-oRVZOm#_E*X>3~#Gq4JPcz8LMBi`qEp_xNQL&XzYaZFDWyM z-_0;}auK7p)Eui)4luo&Em8coE|Z;SfO9KvG5Zv!qaT+!jk_`(yAsVI@3}cHEzyI0 zRbIHzYz^!^VT%;=V1=m?ws&3QxPa6w*%qkHzq9(41 zq)wHHfHs!yRw79`U)bLhCXulG3vBpQJ<`4TH2aosOl~I!vQBR-NPF~0zW!@R;(BTp z-#*HX1UmZjL;o%$b_G#ocgvhe%eXWDrGga+?HjCURGUKz%`+{JZ!jYtvI2RA-e$zO zM1}cmWI%NLjxzS)+GH$?Wv2eqBs$A-ncUfGq%R4nh_C*QIN}UeS zX+Oq@MRBI#)T_+niy2V-_70OSzZZ0@hM9^nFYq~{2`ZwqfZQ?w{-=M;rwIi5T6~#` zX-mNC=Tg3}cnB2zab*1;uK{cGgRI%bWw3T#J9~chY7iS&!PrxYptnX34P}l%Oab7& ztaSKq%La6RdkDUzAHhZHsqiG{BAPa3Lc!_+w7-=GEIo}8#e1QbcOJ!R*MmQJFt)w3BZJ9TREFu+nlTbZu9 zUBJ!}Q>8beC*pB;EqZ5<2Ilwa&?%C0@Urz3s$vq1wKpel@P! zg{as+k^c0o#Mb&L^v1PDl-{IEKQ?_p-KR6?*?r$}WzP(n*4~Y4d#BQmdT(*!K90U> z@)Cv5OVFH%R-9!kOG}=0V$~p*i{RM&H${}`t+{XTUzQv-|Mm>e#YxjK%V+4gL4qFP z=7WF3h3RCY>$pqsH!ibK*qkV}%Q7*DXv9MUUa6%fIp7?-Q8Y*ozg` z=P_yR7p(ev9G%{BS&l_9xUKyI=Pq7@9?xE*pBU$*NvJ`u%5|u>?;`dbw#Dez>DVRu zlD)cMFE_*8&)UZ(qUR$|wuhT3eJtO_Pp^;0o?F|PgugQ|e)j=LMnA#uWGhm`?*;qogly{n02V(O;{XFu0+C|V$oI@sMoQ0gP zoU4w@cAZ*lL(~@)L8jk)Vsif&T)D!zW*oyI^_V^xbzTRd(>2MngE6o;ayk*L-wfh% zGl{0X4$N7hPLwo9nd-BWB>R#OT=^nE0$21h`wBWi-#L>}Hh2hpD>Eu;hiz zy#WSiqWGUxlOQatobR8y5Ej`xvyxwRV2op*U2p%+EW3S)J><5I36>~hqu1RkFWe=K zdpef0+OJ(vPyR0}=CBt3yJU`IF00Xf!%D1#6}a^05qyxGj)%72%0EpwrQvESFI3zB6|{7u9!&gKDdsL0%lPYLyDi;E$E*=#h9kTqnFBVVDKhF;}4Xh z=a&Wa@P*6RR_;qTJ#xje>*I_~{%laz6al}ewXo{9J_PSdf{!-KU~hRQ zI7dan!N{v{MkNjMS{}oyzXcE#Isj|KYr%S+FgY>pG58M3krOJNurXhY9E%%)?ktW> z?ErN5$CgB+1o<^#9=TyLmADi*lh03Qk@J5S6Wc?^q~(Awx%l3K?2lbe zmP*)>m&^Q##Qgb0tJI$eeV6}ASaTWwwy>;xDh24?!4{gM!MWR$cTX>8Ma+W ztUS$#-hzeX-mh7t`@AcWe`-WRcP%C>ybZ~z>Se@YSeG3Byn?I}(I&*mk9bYcAP&}E zWYZdDGXBz^v<6KePGmJ{F_k5Yulf^BAyM*lvp@OVIs!sP>&U|ieGu!qnY>o&2fvU| z;=bw)Jb1K@B>3NgzYo`t^#%nHJu{Hp_j-<-m-`xvNQ_`6=(^d?_;N#8ZCQ$A2(op(H!)W-lx&uw_+- zTA_DZGdteEshZNJqf9XO`B`Oz85TTv{?rz`z9<0Bi9)HyLMG&F4vwa2u&Q!-XuMMs zDc5^Z&kVpXiFa_U`w(ux2e@PcAD49AL8%GPv3>6wyxrG{@;;(;liCoDf0d*&w4^Cv zh3VWSlj&?zG1_v1%l{pap)66<#(yk=Lc=6$7-@6-3?J&} zF_W&$Sw(+&&7hIa!E`fsRu$d9iJsM+O&?y2pdXGJ)3a;#(S7r0(wUvHv})5#dIu9| z(P4AWJHcg&dDiri@F99BjiG^gN2pu95xppIgnlTWLvL{NS@k7^ZVW#}KYr&?9lbO< zT4PC%TOFnu20;Cv9iW=A*7Sy491Xi;MZLJMQFqMfbf-8PSUj65ckZR`zh}}%{*g3< z<9K+wY^7VBr_x(Pf%JK_A{D;0oSMIpp~J;XXwh*oI$y$y7ORfqa?TH2vx4JXrA((9 zw;y5r0dC*r@dQ7`i&DK^_wmvbVH&^wDyo$BVVdqCl#)VR@govFH=jUW%IEUxQ#{bvD+MJ%tzwVO5ciZ-er)+bL@$d^~Mh)LG zYYnp*>0|+@wig7)SYx=m&xFfm1jFuQj!-r$1$q?&KuG2yw7MOJvdnv+^7ay3`tlaG zrCsMLMuTwn&vlq3BTBZOZ-9l|-r+{@XK*W4Ba#1xpziuiqVz_LDCo>3Mm35g?5G=A zU!zW%EtZmpZ}iC{g;gXk&4PrIO~lEM^I6F6B-5Pck!h9T#OD1X&f5}2Hi~oE{K!3I z`cp4*r!A6{Wv?O{KO@M(W9!K)pK#)NCzwPwajc!it4O!VdeY#wj(cYYlgkJHBf_5o z$!YWd$SKKXB+g(f>E;-|>ov9$^=fZY{$nS3tnW>FE^i}q7r7Dl)-ZC_Za(=o7EbIw z*^+4?8;O@CkED?`giJRk(Z7QU?A9Ugn%9ytX+@H4zMPc%NRfqs9vo9toNQ=aLVA4r zp*q!*T%=7<9`C@-x~gFF15={vcMay8o=NmSXM?n}7FlkX0wekgr0>c;nEqXYG~36+ zS?->>Ec*Zq^1r~k^&C@V-4m!i8~~@n_%MYZ09Tw6!2h8Kgr2d6>-jTbez!906j6fi zg*O=0;EC|5u-$U$q92T4Un_s{i6SN@I*h$_;3V^S!Z>?nb1c)>Y={%%H}d2SJ#fEH zH-Dl^5^8mvU_U0G!^=~Cu%nZ&>=mVFS7+n(XjwYz z0w1d;t583=4&1q1i%w#OG5^>snqMeFW%Z1y8@E@qTxd#d&QGTPJTq#cqDyU7GcP@iCDS~~7bBf1=EXv7j~ z80SC}W_Z!di|5h0ti{yp*<9-AwuowJ+0a+D&Q$B9Eo~^Wr*%p|*X?2G30GsfCC`Ee zel()CRh*;hj1gV4%7otI*ik_}s`M|%j@gtZN;S@F(BVfy)Z^S_YDY$~qfvpDrFP&Y zPZ@fGbC-TslBZd#i@032G|gU-fxD)N&_|DU;C}*w)Hu`-XX|&NsYeT&s(u@L;tbe$ zxl(*{O_6z-k&kHwZyDe7Nf^lmJMl^I=A&96W3PEQJyr(E0e=qPQFh=jri*661}b3 z1oLN+L_>zSnHZ9V{ydVJZb^QDGVU8M?ASKQYcY*=tDY=Z6TYvcXH&ct>n1W zQsOavJNY)zk?ba0h+e7{vAea3D4ZbVslP9Y@3SWBMV51&11qw1*qulZ&m@EMEXk0q zGHFblMkEi*lf_MH#4?Y|ULKSnA0%Xm*t_pg9`FlZD&K`;J{>T>{|pSxdJc{4`$0qE z4!EbzfsNXQVDtGpQyOs)nw{=j_+>4D&VzAyMkWEGAC^HYniMTM#L#C+;&hjdGd&(ALAQx6qKmRssmxh>TJ%Ym z@_ANN_tkWIpS7nC*6L7CNqbr-IGy@0n?qB2rqkveefsd;465FwPwUNQ($kJcbPt-) zg4r|aybBGVC8tfQA3v0^#Dba7?)w+BfpS z>~9+sU%L$_JbFRKt`;>MXo@1r2O*K9;gnuN#_RUqS{ zW6)9RL{!vz;NK??BBA>M;)@rP{be6OuxK%vE!hG0M*YZStygfG$da>Kl)Pn5F`8c$fp1t_YB{^{3%P+fT@yo(5$)pW*KQz3^(^a|lRCf>}d%;N_t# zklJw$yju^!4zIlsbRq^)Yy3djFAh#gIzVAe8eEN?0flGwgXb*?*t6UomV2Twwub ztVV&xA4%YSiPNIKww?UGxq4K({0i%uJdJ*Q-^)II$31(?1d-ZW(ekHSxIf5+*8T8C zsXAv`?H`7RFU_aR3%28H8CM!VXA6GKa-&R?F4RUZ7T=c5r?%W~LrTz<-V!Rr z0yQ^UpLYRSTtwYc^6`6~6D<`hLXp|F^z4!fTpVD@@wzTy<$xJox#%Q5iZ!LDW%BXE z@#*wTWdSmOCeb>zQ@B4%m4-JQMWf{^w5dJ=&4U%_Htmxrsw+)P5-;LaR}ng|>n18U zjN^Rmdel!F#~g`T445>^aZWhqdTlpKO25R*q!YWIwPDE7F06KXh0ZG(AW3{e%O8$O=ViJwypr( z>)UXS!&&r7Z^t!0N6~Q*M_MrBuR1PQX+jTKF;qYD z2>pUvSl0JG@|rqWQ4bc6cQ&z~VlU#WP1o7Uu1E2-_fgjD-#&a<@*n%@$SVBmC&u0$ zv_?nwjIuh}3E1wh!@E6xoxKvAWvQ#+&ep!%$2(Z}i67ZLz8Mhu>`mF^1BrJecIkzBv zSs@X=O=jOKlY_}?-lpzR-Aoi~AOG8l$^h2lha-w#mH9|b8cACz#vAH2LI z$a4E0aK9i$oc3JHTKA$8G-J3ht+5Nz0a}ptV7s z+;y*l4N`K%RlWeuJWwRf|FR)lP@N3dbN-wLO|oojG6vBen=o2|jP>Y3!gg`*Y7W6yj3YB~hT;yO5mDlIupMDK+@b|z{@4HN1zy`D%HetlGH{rF=E4-*@ ztI>FguBGi$KlJ%K%s;KW4hOEpvjf}qV`$c6He~uiG`1E({)%|?Z;`~3*zIT)riC%P zV{odRIc^w9LO;>@DAsoXkIwMLO7HzB680YkzuAmGM7Uo3uhpo|agwfcu5g^6h@m?- zA^my`cQps0s@{2gG;IYYg%{uqX%9R%uMi(}>Y-H84UBIaV6(4Lobvn|tK3o?(d_pJHWY&Q@fBd|k%=R|^#LP90?6lN=oE?$J4>9V;o$qQY z>g0bRho-66Fg}dIG|zG@g8TK}Z+VFqeqrjrHOy__Q5-sQj#>9?6rWuxWFDUWiE&Tz znT+aQ+?G_ueBb*6AG~Q`vg(G=x4)c8ZyHCl^c&2c6~gq7`fX;z7eQ)y^)ZvH%l$mL zmnqvUPP0s9Ve4usI{&3S>|!R+tU3|cYokcN1qp#fpaPw?SPV8rO`r~f;;^k>n$}M3 zVqQ3N)Dpdu%$h^u)c)g1X0fy&ZR>7ke0C0CCVpZ9ZQh}W_&cWiY7^SkeP-rutwrTK z7YCL|n*1Ib%5xMvk-oL>092cHoW=GhpK%UraVNg_V7?IYzY$ z%v&aex%DBCe(ElJAz&*wdY@&5Lqp(hPy*XxxB+fYp2&Jx{|6-y&AUAu0}q3onToP~ zuzDzkDe4b{@tF6F&i8F#V>bmZYzqgCM14@1x(^iV9iX54I;ye@vK#lo&)Op}`$Phm z)SiHCU*h1(?sKrgA{shfOQD2gRBHCuLWFTV^w>9mj^}}~`B?#$wv`5c~}-UG{` z-owJKgV2-F1MT+7P$l~VCS6H{#<*_4*-^0VQa6ORa*hG+b0c?%d#~;rgWS|Z@B+tR zNd`C1oB9`S{SE^Ie*v->y*S6K2#K8lpsy-UmK98f1?xn~SLr{@p*Q0o6JN@xkNgJq z&_d?uM2>MP{=9;g|AlY|bJpSOIK;c}VmrdeKtAspYZLkxI!%SqbN?VXT`sY8=D521u*@z$vtFg1FF8g<;=$mcBz zEzgJS72i>8@^QH0H;BxlOgJnpK70?fX*bs5*ve*ZPr8#dl^?}YpNMXeQdoXH5+_`oi66i1$Jfg4_-R!Lb{lL!)*Eo^^%zv{)kNK< zqxi&83$x7%(S6-oaN) z8$uCRV&Nk=%z1$y@`8+haeRy;jPsXY*vsBy5}plV-l`fVNN@xcZV!|D{MxiK|=`K+=3sr+QB5R7W5pP3Yw$$ zu{KH!>P_#UZ-6G8*?S9DMi5vXS&WyK%>t)QXR%X89=-*hM%`9JXnK~7%86^Z|7*F( zm;Mh1R$Rf%z*P`?pX8F)5f2dH;WgNKv7!1kyW2r2tRz@PPCqvQ=# z?hy3MGlIgk=fSRE5*#zHhVVH`5Pjn{;7=(iTK@w!*N8%MtPqK`;Qk$)WysoMQ4ms5 zAo9(_OvrK-lJksn{0Qg}#{*-GxYsO_a8;S>-Etjz7in-5nn?mDKWF-rXOdmAoU=#C zfb@C`g1$eOgEf+cHw7HuBJ3LzC8XCPsU1GtoyC$V`J$X5}IULf8UEM^v6HT$0a>feg8KDvmi_D?wCN{@|4# z6eKY-wfQUG{egY!LRiN$e_;CIPL><^f^Oy{ROj5WZwyVbUI((;8JiXYKnE(7nccVnow0nB>v9m_EbhZ?M(^@|;K=KZAbLnr4cPn9L?G&V;c4rv3EnG)Xc0D66^#z0C>v<`rukoDg zsfzgKCtUBXmM=B%5JP^Ouobgz;mEq9?23iwkshpO&%Hj3%$N7%5F?J+ia*-1E-w=%Wwhev*Sq2F%tq96apHQc1^C~ZS>Rk9hpYc7 zg6oYayf-EZFXHy%Ybpw}?=QjgzHb@kiYl7u9AuuK`^(O~D#&aN=wnaHc=N(bU$S2l zrt=hdJK0skah68j!~A8!uPw_wC0LnLHavq}+HA~$amxmeY5bF+#g>K%HVohC3-6+J z857p^AM;0|m610~Vn(V3;qBLC=FCK0c)2N=dA7zJ=B3Iohm0-YdWSqO({TwjQXa23 zVlULL&ElPtO@x56iM)^8yF22|&x(SC?XbIgoc~WU1DKH%)}$y0?rs=mkLIVt8CNyj zb~_UWT&JQZ*Q@lGCs=mu0wk{sK_8CE^rI#cqjgxAc0U$xUA+T>8!|EJT0NNcoWjrJ zth2){u@jvip@ii2z8G(_8tJo{f?R>;9dB2g-Nf{m%_MCV~EdIYGFsJ=JY_DzwLaTzlo*NMcn zuLB48%A|du8=1I?#Qf-QRQ6CHDU<(lUI#gHWbRL#0Taj$j?3`ZR+?NtHGsR{i4f_4 zPdK_(fP7SL!DZsYevZF->5_$CH<_kcx3Jv!xl0{!56 zT>9}bDDSF3pUpKOy(k~Abl1QH%)qA?D&c+e0rb031{beJVWepR{Nb`Zxi5~vjs`=# z`EEbF4V;SVB1=KnL<-OEG=)9(w^+3;GvI@_HT&kMG~7;!5vt0*|?Rh zI<^yXsuZy?IT2>a+TeuVQ?R&Hn;CcvZ~Lu^zp@=d&8A#dy@apItxk95zVmVv$!4 zikUg%oW_I5&J4l{_m<;6iTzkrtBt$DGcaS0G|szw4vXLSv0pn&@PpPdcJj9Xl?Iu_uD^GJdj#{J%$5GgD5RT}`QbCbpkfOkK)A1bGpHZP28?J+c z`b3H)*SUO$9DOc#9p0>vqb~X7u%|(V9u=>GS*z5zKG%Jiaan<$$!>&#?Q%4{x(dwB zDbddNB~a)(k?OhKfSQpB^rCbjELD)EcY;pCyTg*yKlC^pc`QZ~Z)8Ca6{I}>To|Q4 za4qLyxl{2DdsXrwf9E6o*ekmXFV`=I`eRo3soDfqx7cDY-x93dt?_xa z0mSD>9EVJETSyi&*X$F1`R44Py3NYP5o#g+yjE-kCxV+sZ{GqQ$Vz_+7{B%Qd z?!<;;^e}c`gdF0@XhbZL)z)BQmGTkCLohXm~v%3Bt;40v?(qiEi%q}eK7^INjF)m1X<7%p3XLYJIgf7KjK>#T;a(_zvbV) zBfuUlvF5MSc+4i;Z{lqkwZLpOV6G@d;L)X~jAqaYtcuyod=jX{@b){5w&QyYQ2fGZ z%pAvC`kc37K!!%N3Bp7%bvjF27CMgV)8p%Bf%j%h%0I-ww;?;ub3Gd>7P!)gF+F$~ z?n8%9&j6Ea0aPPs7F1QPp)Gf(?wZ7L#+$2dxaYc&W1f8mgHvnhEIZCqlf06)&HDgsoi9}!{tSL* z9#mAk6CAAP(+9zA;1Og?i~qiatu+?Z$m2N_I?tr$bDjaOa|#XJ@d6^YDO3C7-0%NF zg4VxnhbWE&6S?Iz2pD}re~%WZ+VueM1-^u|xfgK3j5fH<&5aU$UqDgTS{&m3oO|W~ zN(9`6Q^$u{{mFOWcZ(mZe7q8jv*%jMq?f_QZPtvU#$~v#-o-?(KLJTwY~YP~I>=57 z<2=nrVXIjd1U4Um9>;P}aZZ6$k!P^!Vlu=;^n!DDEQp^KB5DW1;f9SY8K1ig(#oe2 zIW`0qjvEn$7w(`PZbd?}=0TM3d{P9v&fPhd&YIkQL^CnY-a69I$7u<%#6xqaLm0t-kkmEWPwu_FGlS! zIkj#!uRH%B8QH7ESAKYaSVkN39~dQ&>!+jnTW3d;Iir%S_pwdnXsj$fI(UEgN%HxR~hO8S=#Q4_Pq<4=3`X*|UDe7j}!JUz&1%#pD zN>P%~m4?E%M!?zsG}2=qp=NU#W*gQ)nd5yNd65e`Us_P1JsQ&P{NFv=2fjcz>iZf& z@}W`gK3c`(o{*vk3*~t3!V~H0`?jo5t2(`LxQ^ZaM4O(^o`Kuz^yy>&AUy76MzbuE zv0$PNjs1BZg+-lcKwCA}Q&~u>C0bCfdLdnC^96S+y3qz9Av)*aQabQRj-J`(M>|$b zrW=3x(p9y3^pCzbtrq0bHQkG8$+vklj?3h1+~`hia-67~(lXj}j!Rqp#gYsXmU*NJrD`)ao7TLKk0zMTE&5l;_465?N$ zh@oqz%woJgh0~{SnelDkN>x&SFbBlf)5CQ$A?=|*{j+%+gim&(mFqI#LO!9QX(vFp zR-aadorYc8rqCd57B)1=QMVayAgPY~yt@4pR5Cj-*#0LNmEXcKnLm*CBoB+-B*@(h z`|$?1mrm1PjG3hhMB6|gJ*OxVnW1*pJV}jgbe+Xk{+>#%i0|bE3+R%257L=GRb1a_ z;uq#nB*&UOJqcEGPW2;ymcp{7Mr6sVH287Hg0yNBgKaKD0`>31VrN1g^nc`-WLCt} zNrFUI6LQIBD)}XCLuP(9AfY`Dq<$ttY)a=5`^S!?v(}F6(DowF4%?Dl7lTOMMO!jg zVhfovU`=@8J4sLk*Xy;4Aiqq^$qnf!GWUfci8vZV-u%=f^_OBvo&GfPY+)RUn#(y# zzsD2n3OBndB~V{3`N^V|v3zZ?~o zI}wNW7_5)CA`A4h@pI1{GCs(?$2S@f+mrXWF0(qBw6Ph#?iVM+X)o|^?hr`1zr)A{ zpWwf@J@|ChBWNxiN3rn>Fm;s(r8h%?V+7HUty4Hot|&cU%V$0Y87#%AMrxu3=sPO9;8npW#z8j09 ztF8~?3$rAeH1!>ZsHRZP1cn<|q)^$8hZtXdh)SzhVN!D{H9vb92dAggX>X6=t4|qJ z;$=K0dS+0Cmz!|&`!qT?YB?qzPo?WK98kD1h30Bc!54C=bl{Kx{uoT50U7UErKn^Y z%9gS)CxHqIg|hLSS9E4j0zcR^g7UK8@E#6?&;`yL7?1H4)JrOtS)=4Z6%5`m$%=Dn zqRdn{^vH-#6SIM~(JAy&vlo;_$kN8dP_SA!hLZ2&;6ILQR%&+?{)N||kb53TXcnNt zwIaBhl!W1(HPAS3E{4r*g8qV0)}rzO_>X3?P22B+hL9e=$?Fjmhr2O(x1Mvo`+LkW zE>okJsRqIUk3iqe6JYggNKA@>yL#N5sv!e@w|<2)Q!YUM*KZ)wUIp2Ozajc$EAZQe z$yS*Gi05)%E<}{XPm&`1#Y&{-hXk4FphdzvrN|3y12U2+LzH*$h(eMKY5Fpcm=;Kp zN7_q>&VVGBA6-F8(j>`3lOQ7TLX4EXSkG~zMaaCWFtRRGfJAr4kOj|1K-geEi8UO7 zw`wuuz3mTBirP?HSl=5gnPO~iO3*VpjeNFEPM!jp_p60JGLXmHP)d-4lr z@1+3JIq?#+d}tZTwFzVv9q}fTlO&k$<{qTS#DzDn#EE3T)aUOzV@tdYO8GNdEr?p) zZ~ps`*~E0_E;f8XlWe~Hja9!XPondtqx*GX^7xhmZmJuEv}lfp*Vqp0OZH&rO$skP zPvMX2Cqd--Wjqv?2;UrTU|-2fZq`wYK@lpj+59D1-_2wWpZtKLrO$b{oWJ9akdNi- zTK?gKI8D~eRgyYt)v%eFT;8Ne24@&fp`0cOXNPbZn~6KoPIwwUz2Y$D#OqTl%~QC` z$%Kj@F2dW(O=+J*1InE;rahW(F`8pf>k58H@c}~9xS8B|pe3ydR-%<1X7sDqWV(Ku z1zpY8q=)Csq5m%H)66(yDxWZi1}YfR=P_3FW9n`my*N0Ukf>GYCS)J*gj_T>iB?S>o^z(0s;rMIDpb`b6M zX~d9Ot7+WsN>tvxns!)U!$+fmbnMYdth%|9G6C`UPQ-`mngrnuS1)SeYl9D)yy=eE zsp#Fjgf_c>WqrT9Q1Q6`*yMYTv}|P1Lbb()uCrXlw4`%?H^Bx*?~oZiXP^kt&kbo- zfFsP+pT<3pQ6OTePNV)Dg~%03RCoD#ShZN1HjbA=oX%hLYQ6(2o8MwCw{Jc8=K;!y zy@k4!73i?G4_bF+WBZ|h5cYcmKIZmAKPO0Fg_JDm$?{}fuB#Av10^n8ra=zpZfBUU z+9Y#{0LcB;CC*~5;O9P*>=TcJ@XIDdd_y)Iab-x39v}9_SP`%1jnKD=>oj2tEVi~M zDmUMOq^Aqn;xPbwmEFjZi$bJkn;Y@vax_jUZlsu-eLdh<(xZDP5ZUYnA=&DFEN^Qv0HU&~EXhG&3P$2c{Cgi1*GC2`yM24N!$N{d?Nj58!wiBAf z(nNtMx+{|fhvi5q=S~{3&jI4u79=%)zVm5VCRt_kOB`^Cu)p$ebHs zttLXgjGTqsy+Xv%kz;nA9ED!76c|eT31@Zo!;hdLu*zKl&u0^O{?vpcK`ie9XEgO6Omy!?UkBzwq-%=-?wn*F?7CA31T^P6y)ssZ%lq`Sjc`rnB?^xrk)q+(2!&Lm7BSh!zmcx-^ z0h+r&9uLjkezkqUPH=sR!Pb@R%=Q}O&n{t`x^Cci-$Hhx=_PD0EM!d& zoZ?7oC2Xo{JlajjWy^jA;-srN~osMjwdt1d#2W{3>b+BSU>s7JmR_?>hHv$GjR*J zAD4l?<{0?FV2`Q@d1L() zR-X|eGM#T>l9D9xIo%CGiCl)odH`%!ij(|{e?U4;iZE^*o8D2DoPs|P&vpF|EE@&W zH&Wz4%_!XFJ{Kay|G*q6QO-j@08eKMk`GCpaGX2K%6YYc&-Bl*H0dR@E^3E|9~)r1 z>=S4cD}!kl?m+j-i?Fl%DtK6(f$uwy!5;rqxT6*aP5(thVHel6s@o1%^c`U!aRq$Z z!{rEW8N&moLgt^1EW~;HGv(vbu_VK@xwF5AlI9nFe#ep%1>su=@#&K z7H#a!sKWC84;rX*>^lGYUvo@L4`u)9+GEj-8a8<<=dRi@$Yyf0;ob+6vFTj~DxIE- zckRyMzwRIudUhGjV#4t=!^gD>d$IZLL%igkfZmHUTaFBYRb8om~n}(^IFzyOVGdJBfY?jKe#t zRj9dPGB*5FqA``3h|3fxeSZXBOp&I}EeUvAPl$RZ$D!NRAvD{(9~)MD#m%ANc#q$X zO!oPr%zVk5C>e#-;rd@-KvZ#BXRimpb~C97l99UjjAl0N!AfP+3=@p*h{;{`M;MM(}erqq{wc$qRnV@Tb=>liY`xmowioOMgj2mCOjERHgxi%N1cX))FQ>nGUR+ zJLET8z&xjQa7k_kEwl-q&bEeCCC}m6A9HBocR>A!16;e>1)~iv;ClQsoYMiAf9V?xTI#_-@Nalf zqzwT)LDIEZ4_e|y$^NtY&?_iOQXgo-YVNrTJFWrJfs$m-1ru0fDM=#!*+T{AiCy~B z0qPRO$gX8`VOE+Lnf%rX(ie)6Y%?E7brm7k)@+2Oi9&?g7yZQ zINmf0>nk_HVU0lu`x6Sgj(mZEE!$v=-b;A3JsjjJ>OiJ?8@xzl!6s`ne1FV2zUD;0 zsofbMnh*`UPeens@m45`4uJEzo8jj%D>yKHC#>~Ug8ZXf;kNTfrow6~Y}Go?EPWjb z&1V-gIm`}tfBpkcHhncjwk7fYbM}EHN_sr2wLZXC*~`B$*9)pAE@nRzFM@ujTsAh4 zfge_-?D0)gA*Ko0#c|_I{eov~*v>c1CmBJM(5hngoz_7g!B}R}DF>81RK>eGnRA&8 zzN;7u2*Jnqz4^sU5-?SX@((OJfou2pvFDNsamK4l?5k~j)SUZ*9m%(Bp2NfU4M>Jy^=|E)$hjB?1i>PFhio zmNafd6Ty>caljqD=jCGME(`o|G9Rz1h@rp2c^pnnVSPLDxy{;osV~}d4gxd8C>WY27Y_8@W9_BFyN=) z<;vr*;e0&uT+c!Ct?l^zaRI#ixCVVlA&iX$VIj9$NtOskJLM8?_wR*y|0-a^=LMLx z{}$xlPk2@}`O$GP4J;|dGV!L<^OE4reh@@@D!$%XS6)j%$@6sw+8 z!nNKtcr^MZ4A0w!B|bOd*6nB%;kp+8hT?HW<7Id!m5xf|Iq*Z~1g;D@4!+;gIFC&R ztk;c4v#|qkW-uPFxa@$ch9qo__kvklci{)Mc_69liI*>$K}M?$j#N&8R5QSeNs=IS zMH4T34KX`MyV#(2?TnoMDK@mcg88c($OeWaF#6)tS&!YOjI>2M|8@0kp0He(#hvLv zJn@KmyugeO%cUc)cpA#~{5KQlF>m*2ur?xzOizsmJMHKR4h9j!>W}6!vwoMb=9=Y< z7s_5IV5W8<4y7TAlz+=FVF9QyC)Z*XjnSr zc(~z=-KRl$`#h{3z5-_13vt%;Y7l)AfXrs-HvG*?1f|dIzjDBT>|^2!35#jgE)U!@8K| zXmjf=N;Db_x^G1E$uy3v?F?-`^ZcoK4z%wt&&yAh>Rjah*HuJl`@j*eeM%Q zMN-PhNFtR#-EPLmeaG;RY7n<0UUx0i$L za&@8WF&6?OO)<)38u)7vTvR#%x+l!T=8Gb*G+&7~4%ot(_6@ky!x$P@@4*w+3UDIs zDE>MBl7wtKg>3^ES+gk?cVaTBA;(cwIe;9WdJ;P;jmXep$FX{Px9FKi6jq2&ivFqX z#UJ&4E?0tg;as1~g$A3~V8?>_-=Ahjvz0FDpK# zn8CcuMv12`UB$Ycmlu)(1vcW5viR8yiNbv*uf(;VJ48!|4rCj*hZ4yR+N>x42ANoH z$y5a=n}pRcHmI+Qv{>z8-}g(ws#Rsoxz-qL%YQP1nXZC6Tn3+K%mE!;WnA!bEjTA? zV6WjW_}r+EUHJ#WA=w7!K0XN&rOxR8BL$9}w#Ao{S#aCO0DnHe0>gqd@u4(=??QF_ zyX`Ktd#dAmt7;f8tBR*P9>66nCG^!4dI)O<;{J$M$RH|sJN66oJ&;F3Pl2zdu7D~1 zUC=Q6AA38h6P~!#vh}?mA53k^>6YAt>nlmK$20r;`$I9L{~Lc4?*hC;g-xN0FL`$R+X&V{Je8wpDl=Hj&Q9k9M*1_t$SfU}FH;lTxKp>XMB;r>4t z6vO_*iB9gY*VhYkeI~FHRJGSN+^tTE4cbMVE*FVV6 z)PcC=)Ky|RqL)eZ$CC0JUzzTSNu=b`8zxp;QD{22hlzyeVW#;(By4OeeB858~L|8seyW3diODCe!}K zVcSnFQ1?i|#xp}<*VfB;N`DL-+EIXN&dXu{O~hNf_QF+%+h~_{9C%Y1&YG758Sjd5 z*o`z8A!H56&TJ?sF2*rV`Ec(K;`%lYmI}pK^{*7Z52;3no(ix^e~4XcE5YH|J^Yeb z1I>n2xKI8OyzqODwfgrVeDq7qZY_cQ zBBEOa)}l0AzW4#{1+R-k-&@S^yht9&yuh8}gXF=A`xrmhl?*#vf(|yPMID^s+5uYP z*qH^G9&F9_Xyqb%7S9@0&!hW)_3ZthlY+NE5%>R&Myn_tVTZmSx1cfJE(%36UlHDa zyAT5pPsgzKDL9J>@1u&*Sdh02H*B%PePhD$jkY?n%LnnT{%_`A6@?$XzOh5=4xz61 zJ7#<51SXu%VN){CVt2zPHfdf4PV|_{Huzsb`{6pw;#(muKK`umI^Yic?+GS@(Il;$Jx7YlPV!2v9Y9=R9|?D)`x82_}Nx0|2_wLHM?-zqfOv`=r`Kz z*$10<{Kc-pu~1k22dg$;f)>pId{|8>cnZAO`m2w@qE&)xPkaYY#{I*d?cYJM;16C9 zNz&(0J^1mFJbf^&9Zjwer1LK~VWo;X)q5y-5-ZfH`jQ$vt)@*k|0=~b9eVWn)$8~p zT%R`1%*JRb1G?Ja0#2HtPYn&?@io_=o!cVti;B>HIJpHY{pD$&<67*SB}40irl5Az z0NQuY3>^x8!PuWth{f%YJ+_%0yZ0LYSZ1(6Kb{D@ICW;Sq!Jccom)X?!~r26 zu@criJ^@ib=D@NKXQAZAbf}zt5pn}v!SZK5T>YR8`xlpkNkIoW*;)e+rRxcX)xp5d zJ7jolBQ(xQA>sTZC~f_Zc>L{z#9JFgJDh$&>-1)^My~{odcJ`zpD078cBiwxuhJA^ zzX@^_dHS+{I38q!Xj8>Pv~<*@?rXQ<=~6AKarH1JO){kYM^o`-sX5J9eI4b8SVe4?+ zybKt%XfaAlC&9N`Z+u&F3e0gbKJbr%f_6t7Z?hJ({LFE)`9$bX(ZOXRQ_y$)#q>(L ziQ%eS>~B^P2`CU4gatulnZq$QDbG)&S2>NjS3eN%%54?L&RWPu-rFc{8XV7N8htFh zVR?t`uHuE>*-~htnuSNy$Rx2D|T!Rro?*L`k0b;CNcvTGa<$(v0whK=E_Q?SbKw>Iw@jJL7;+BxtsFvqv$NA7rTn~0?eeh@D(Vo0j2s7R>(-EkXDwl5bTaw=P!7`XFw$+^Pxiie zO`<-%BJqaG;3t2UY^$_^+nxK!tC*?KkbIKV+OL5rGW$ql*dEYr5Rt#Rr(n{B2_zyj z3*1X0iHYfT7#4Mze11>_dU|(ALro=!Ywi$ovL14lRukFxZ{b1dD>8M3(93phAx2)m zfnIGO!{ueD%!w!DzR=auD6S*gjtcZjc^R2HNSTJY7ZP_NQ}8(;o}5kArsvYai1{lm z`nYa6`QWcX1MUwbdF5J^%o$N&yibo-G`|&h=?R&=kdNYu4o&L1#h4X5*P&A|nca^w zq`5_%tpBDF-E>_8m0XReMVio=`_GV;s|t>odAiie(G!D@sMDd}z3}NI4f^neFHRk% zP1mhoj(<0*((->nDD$5*z1tm(AE)*~k53@>e*Ocy7H+_T(l#j12*$dsYFIUC6Y4z6 zhcljQaM$r1fknIw^;f4t?WH9clouh)!Iz=^vS|=-a|zZ}n1Z=zHtNZ>koWst(Wf?y zbdM$Y_K}b1_^R=Ebc+J3UFePlgHE!er^caqT^%#1orwQ!(ZXsz8^yN&;n1j+SX>&6 z$JYvOj>89WYt1Q@%T}U-t1NfboPZyym3XzUDdwJ3<*yg3VAU~Aembe0WedFFe{-&~IUkL< z0McMXO^x`nmOV^5!+?*l^I|TlhWwdXqqy~;5tqL;L0lN5&wIx$6F+;S&Mki(6NfBN z=QcJD;)jNs+||=aWT-ZfOK*8DGFmCkjUURBhjs&a`H?ZiIk6uzS4Wbd-d{M}Kan_Z z?7-U>GRWWY?{Md-46^I#GhFO)mApUq7-!9YOMKSU;q$)=a8C0vnpGJ>tbZkDjdy|Q zq+-1K)Cb(W-;+UrQSk1`GM84Mm4n)KJ~ z6`<3lL&uyt1ouwr)3FcEfJU(~P1Cs~xWmlpQq3Z`UuRCAl~oFSEmNAK{t~|Fn$X{A zpP|0lm@a+t2f$gM9?X{(c9Vl>RE7c_zd(*YKc_;aB6=aheh?ioq#b^UH0b{2^pf$XD(G=J-Lc=pYhmNurq`US=`**6Bx85+`YS&=aCq9I-Obv^jVnNiQuX)w;; zoO%iQdGGyZ)c^Q6IJj>xJ+{ppbncl6jQLhFP55`is?G>|4+A>J)`5HrF{aDTIf_!= z>eD|hB5_l$8r^)*j=lR&k#7Ew#O#DFcb~xeyHN5EUMO|3gfU-$73-tt+vhOLatsbz zTLyaG^MrdRhgtk(y!Hiu>WElgT0ib`NM%R8WVzFh zcT9G>yujFy!Ob>Gyz-wp-k7JxSG^vCHWPIC8u`gsT&2t9{+o)j|Fn6K67{5E~^VWt&Oz%+R^C!09fZd9`SNs)6BuVqdyT762ngLu% z_a~a%|Aw~&cTrVaBTh;ZctIJ}IO>};pLXFM&bO4|)@RCbyBgvEhmiU2Ii= zBX{b%&6yC1F01S==4A@x~dM11jP1Vw-RY{t3^9fz5`bLA!O3Ib(_d)jK#0e=oV3Xbk(2)yS&E2g}H@3z+T=dK#)uC<`2 zXCYh`+!VOyJUo&xqgjC`;8m|7JsKMZ6VB?A5alIIt(Kc2O)*g21F@VyOh>%OwOKlxC8 zM-Ru_WkLU;5omcl0qnIr(QC*7c>7=_ZV2!POCh5q{cIxq?mmoNZraf1oPh0GwPd3`X6pB9vLc0!32T{!vZV%!tn zi}GtCQ8q@3%S}xb?qx!bwDu~Va8%(J+sZH?UX7bhd4^B=)%hcvj~Jw&$+^OB9J^VY z51S>)->U0!iEA>v%0rjyyj0*PhU@aAxvG4F@O|N&roq2QYw;=1wYX`U27g(p!;_Ax zb2eC?>(#4qgLZv>AVZxi+3NGdURt~|T#rxMsl!kI)8+eq>+;+UdVF|{0e@1X$3Hq5 z^ApXwe0-oOH=;Ux@G5gYCrgXpj5Ft50w?66tQk+sQRQp1jD~eX(1HN5wl-#?hfYY_*Vb70B7P-w0 zL<{z_Gs4axVxA3qS)Twq)H20xcKL9B_0o}Ro>W8d+{+@9Q_Y|u$ZkE&{=i&ob<*D` zOU2gHNy4u|v^{1&k)LKj@9c>o9j^z|-;pU~N`(#mWmQRvFF8^b(;sBcSZA7iSm@;4 z7)f{h84QKtg#L6G1$%2KmFk-Vmjnim!oFbWa2-WyUo_-A6fzLI6XA{E*w|&10|9ph z2FS@`cwHuk!reWQu_cq z`q|BZt{Q4hCzhJhKZ7jjD@_YpQEo)t_gc|W;ex*~YbXsi(xfd1gq&i7GL@KPMHO9+PU@*j2&r0Z`ynoI`ewexkuQUKGdLV^2@+JOodv!xeTM{$x{WdI7p3`q?b#> z;d;U^n74gCJm2~SYNy-5lgeh;?b1&!{A_@TOIL~3{70a!;7imF+<}>nxuUlJ7|_`k z;)lN3uz8(58~fx86q+S4{m3KW^Wz>1a^4ODLt5GUyt(lDw*p$YIznQ!6>51a!b|tD zcxdchQn+d+7RSsd&fkPy@mpijz3lC{)JBR8kUNa~t4^~!d(YtFH(l&<Ip9 zfj=*B+D0v2wy+8Fg7kQ_PAeK+H{!>tzMyKSDgWsD4Miz~dBD}*xP7w~-_|&Q50%!J}>)W$GavQ^XqDM z+zOm+dvrT!5wJn#OqR;D$Y`MW8O}^y5Enm7-h4*yWa;N9A z-0O@jue>^dztptl*HU}%iHr>oob?I21qa&c&Gq=z%z`htUWtwi%=n0##VDs^%(suu z!(`#-)2viH8mP_tg*)8OSPlNQGy-b`UwGE0jkw5RAb->~6aSM}<|_s|qs=r0{v^~0 zrEkb`-vUW|n=H-y#bwN_djPKxrWLgBCqA1yn6+tk;Lp3gh1zGDQQ!WhNH*^&?o8cE zqF>&^^fO387UW>$;(l^BKMsf89Ri^>VJLTM8aT{zN3U(`AYhB&X>`qV%^aUA)_n9?w*#WrGBdOoqVW_~A^?pVFaw zKa8ex#ezF#u{&j34QSo(Y4mTPA$1J)qVuO4(@EaGbcOIv>+xSgO%IsTVeu>JqIy%> z8R17ys+-f6`+-!lK=39_*hFm>T2QHT!PJRZ&?SdL>B9Ge>50^BlwL5SXTI*Bvh$4S zn1)@nbeJCP4BSm^R5j@vwcYef=s;?`WG8Lhr$86s4%(S6MQ3Gf6Q2E_FmYBW&ARjv z+Vz8Jd{RA#qSjN1WfjosE4T#rUxyoWm(u&PX)t%F56%5`3`U7&Qg4yq%A4;_LuKZ{ zLtRQuitS<8QU^LiPX;t%&FStZH;MC19oikWmK;-6qO)ZyMKYiMf}?Y3;qBmeaNwW; zyCC!uUYH+etHK3NSza|$n|TISi6l|Ua1X?sH^y9>nNZT}ieqcc;pfZw_-n{#(%c(} zYApxI_5b$b`?^Tc&bFiYB~^l{+a_Y*{3O=e9ygxlQ;5$+cx}%YAAPev*A-M!}xXKPZ+$L^R+|xnYulEVYC_7 ze!Z8=Wf*ePG5dI|r5;yO-^WD*wRqsEy}Y$vmCxC;hyR$a$kP>e^KIj#`Mote`HUU^ zaJAJAp2oi6o3mSauF*%tEy4W#*_Rl+e*9qvO+WFPcpHo(C7ax}@f4cgxg zq&hXf;l>mln$#^t*CYw9#TZ38)ZLDLo25>RC%Vvz0s1seYAl_0+=NDcbf-g3ThOi_ zQ|akDHdLWuHr<};M5k-|(1Gtp(AGhV=!utvYFR9yK8r`w_rsP@$=AZdO=2)IU8DW_6m< zpQ{hTtU`U-J!b=?=xWfr_OoEj6D4|TuPZEXlM#46LjYIy!%F3W;PSE)6k9(L%|mZN z%Bz4R#y^3tz8i?r-!hmJ)+MalM48`>8@O}!Z8lrTeQvt0 zhR0-IVnDz++!pdla2{>IQEfd~aQ!H1#P#E0{qvZ)U*MeXV>nk=mTz5Cg-?&l@i>E5 zsPk5yThxBWN7jlQ+7)g14hz>XS1iaBpkMFoC;&eoO?z$L?lFju5N18MO6B?R zWa0ngCb)Ui<+$R7pJ=&d0H^l^FPHvTY-xRg>93mb#qLUc9a@c-;%=hP^FmC&lZ(!J z0y9!M6+6ZqMnCl!%=;aP+urZSf>krHPI(Oua3*N4?T*&d4Dgn#39h~`>^{qWu!-Lr z*x>c~Z2ZJRmV0I?J2xgqxSt#o?+%~OIu2Eej`f(b)%W+4hS|@=CT>s3{m<57;rtCY zxfY_7Wo|&%OOlCi0^#ZD8KlHWaEc`#BX5;bA+NfK^x5Wt=BIaLnerWY=PL_K#t8oU zcV=*Ez()wn84uHHd%)driQqPrq$wkJz!fVcTAY6vH0{)=mh@TSZmCU;wq1tFeMa>E zI<6^OEveV)2f%&o=H0jFA)2QWDU79d;1|22zIAyA5(rd;>bc4W^&D1la=9<&#e_{)|p??~E znK^{U76{MhCmV|LlW5982RdcqII7(=j2c)0o!&8m4tU~3#YrN%(s>9i+X3{#TSK~Q z$SCSRN1X=D8claN3H+=p0zY<2FPzjKLsi}gci;=IwENcs_>nq_?nq>C!jV#uK?dlY z5&R6Nj>B)^oPXYL2k70irjBpsfx5$B8oELR*L@A>V^1R((V|ALeG~ZE*W_r)ggSD> z`7cEOJ4?2g3G5qpKhh)d0JJ`T@IEb;m{)xN1H$zE5Et zE`#CtvIlJJgg2yTku(<1^(W_-8spvXUtQ)WI0<_~OSU*{9O~@OW0kw-{orBN{)iK8HWd&fwb8D|mV2C5(D4#(*a`&_2Ex z`$tyc!n^ly-oY2R@Y-|yWYdCO{mm$;(u0vxyYSu_3I4kCA71__$5m2fxoLpFYWh!w z*Sl%)JUtEmE8Kt|)YRi4F{XUsSYvKB$CBI6H|N21*8JH@D?X^mj>|jR@I65eeES1C zJ}$|R$RgHY!#l@N;!^gowqYrvRj=^mc zVYlaW5~PEqC`6owfT7Y2RvpML2T$xSWa(&?VxTL zJG~r~ezpnw);o~Y)e1}OD`DuAcTo5J0p#y)0Hqf-Q0@N|KD5*dIon#8(pm?8HWi>4 z(g1W&G4yS10!@hm*#E5=s>cc)q0~=s#4!_|lyyS1RVq|w|Aaoh)9_$*9}LNkf&GaC z=)%VRF!ka9I^)SUsLUHcM{QaT;>-cGDnZC#-tU8BiVm=C)o)mWO0ekmS6F|&l7vXK zLwigJF*)%b&eY|LF6O*|vdPQEYV#j}%^FwsVbv{=xtzi_3-jM@`xi{cJsa|tN(r;~ zG#K~V0Ocj(;LjA{4Ap!H^d7t8*ZSQMI>HAd#|46S_BwQ%=L6lzVHi~H0UZk?aOTtD zK%O7OX#;fOUQrCjS#=Zfu6WE(&Li=DDL88TR#MY^0aN_cN!!Lt7(Yo<$uVya9 z(&*1P`u1ilI@f`FL-%1$%{Rd%ei$>FexrhU9BNMahnXg+*fpyUhgoJ|U{@cS^k2j! z3;VEN>ne_bUfeEZe4pL^jo$@dLvha!Jla`^4KupY%}k8t0(WFwbpg5wT*x)I3b23T zbAOJfV*-xE$~rPIwiIf!(<{R5Ka} z&dEiOhCS#Ydli%JZ$`UmS1{FQ4gNTF73-rHqj~BzTvRg`lcrwB1?n@g+9eMywoSt0 z({u6WEmw>zKWBBs#6WhKG+1M_B-pvef+*hMrtp^WF6 z&tvlQK32Lg1*Q8wuzI&d-2C_k3sX9Y!>bOl(~i-ol{k#mt=Wwq)i;WhmIR`XU!3UC zA0Lcwm`WxVjmPq}XUN3UHmH|SMV{N~;)v_LM2<@%ZPtasNewJW-5DNixWx8oPJ_8d zVNBu6Dj{z)m}Rcn4P))H#HWQ`hxtCsLNAE~sCtkn+TnZ-?p}2wV*;}Pxcxz{dmNaYJ`lAH|l4|cbO4RxK4p^9{K85F9^z&L`@p~DO99K`m@nt)3))7jXeEnAkIUA0bCE zF_yhEeu1666)f#f2cA~`%erq#@-%Nrf-;2FCBYi;0VJuzMWCP2PfQEG!2dBlhE)-)B*Bk3T-EK8pY8Pr;`; z0^7sJ8q3cw$9VzD_`Y%iR;M&E?c%}srse{>{Y4&+3|q+#1ifP6I?9YUr7*8u|A_;} zPGc)}>Wjj+JP?=6YZJwRu}j9!>Ew%#5((RuN|@t5@*?FqN!)gud{L2r`qPr|Z-*v8 zs0EClWCK4xPJ&-rqhb21br8N|D!kT@g5|cpFhTA#7<~(X{@_f|^Vp=fFhOAD}(pjl&QM@1E?xe5qv@~V3L&z4HM=tYu+o-shiqCPhXi% z$oUELXRFZJ>m_J$whA>nAWJtrRHk44Q>F{+1;(77Iz5*>kb2+IrmZ0ZY4~}4nxLpe z6NKGtsBr$)xMW5{Q{`x?Fth61D?_7>2z=H<5_I(!bDA!k53;tHQN`DPAkE8!h9rE0 z#K(qIrSTK=9MYw?rZhqHQVsg<&ofw_DxBfhS3^~r0#$4moYp2%v|-3K__gU57zLyW zXOPdZ_}xiJ&v*$1!w$mmG$9vM5DZ4i!VV|dTbS2fghOxLAa+L_jMR0489{sD_Xa)K zJ$eD?SxG>@q7$49FDEfc5@7RsE4lFD9COJi(lO z-|%Y43%o>rqS~?s9J==pj>Okk<^31Eyx-yUJAbjdz8P2h{==I4AJBDWA3C_VpxUKg zwA5_Dj_H4}dU5mryTVKdzQdVT-?7r93CpazutK2`vs1rdpYXn267v~lg*@1*k1aTN z=3Pvm^d5tHZ(%-b#Dn4@lvaL*Ei(D&JM|$N{mDVU55ms&c!tmcx`&yi=Wu;tDVFX| z5>{=+XfyAmz`ifSWFddyVo`{jy`r$G`x?HI2*=@ju3-0Uf4r!Xg{4z{QO7D36Gu+P z#IvU{Gkk>bj32}OA_Kg4I|5BzWpRMRW?|0vft~DJhz}xiS+UauJhpuW+Zs9;SDo$< zrv@pa@AuZir{V4F%${SSJ@1i8EN~-LlXkMPRcFcUb=s`dqmIm-wM%?)oZ!4V(d3f2 z)KKVkb&8S_M}zk0X(VLeGB9jDMPh#LhMUXEiBZxqxO%9SI6p~+`=?~!-39wiZt$eB7Otf(1m)(ZaL;2C7&O0x??N~3c>P;2366%89Dy10Ck_re zeFh7g6ex~sgV41Xz#ym{=03axr*^l2gxqzosr&@{tP0@Fh*pr!EP&EUZ=v~A0d(64 z3{>0efS(@2<#Zv}Dyk9sLfLTp&^`DtF&&P#-iB+ZlAz6@2n?*_q551te5#KDdg=-o z-rf(RYqLPNXE(fGeGb$|g+cM#1PETY8InC?pk@1Ncq_jj6h1A2H5d*Z_VeM&@F0+$ zH3R%2R>F^^9`J0+eAxHY6;38khe75}ke=lU4(H8a*6~S@HBKF39*>1rhB7c#ZX`_c z>mjeDYyf#L~rM2X}$~lr=l}?OxP7>+;A!L~P zVe(;yJ+bnPBDP=eh&=NnNQ=)YmmOR75{K1$#5S;>EE}ZHo~}MbJZGu7R!q9Ts6-%TXzO;DXJBsPbfQSFf%k^Jp}#*^)c>JD#= zR+A>GL;QukX`!ewFbwx-t`W_dasY$cyj|kvAH}uv48=b@9V9>pi(Rsx+IeT%U)j4Y|xQBOmLI7O;+h z0<@!yIr`=!lPhAEE%PxmtCY2D6QlgDYWAq92>FnDw!h&fW>08g2O~;^{?K=(y|x_x zjFP}ws6@G5DGaz#g>%{^@P_CCstxRAA0E_TEB3IAT@TUtaXb5R>JgTY5SSy+9^r)I z3TCJF2p65c$tKCyqB<6_XR+0|`8a1abMB+3;Au10yNkH`9J@5E1dBh$u;|NTlxR7? z;=Ha3EQjsvR`LaGvYf+$ekbDhcY2I2jKO`nuf^TvMX~dq4cNSVta$Xxxwzzn zc;snC5kAqi5+%&mL-RX9qL$i!%%!+Yl$LRqWtte1iQ0$Q*Jray_A5hXBN;@F2bqaA zeWS@it!RPTW)r(5?PQV11M+LuZzA=+oun#B!t@;q z@P4oiWE2{~m}d&09PS9?E~|n-UV|B*HH2=D4-_8O29xxS(0)-9_Kt{vKf>SN67I59 zt}22@@GPX(D}mWZ3Usa4PvsEZ=^I z*72`NcH&2fJ6uJq8eT&4A|#)MjE2$83#2~g7MQ$=B)+?@!omekYo{c&50Lq)Kohh zrj>?k)16RreiH8Pcg6*>aadbC6186(!Q2}zC@FBerR+wb%AXx*tUV6NJAa(Md_2}} zpN}gBO~5(VCSds0i8vJ<@$!yIxN*G^F0P$~CXeLty72wblk|akHM?QxhTE*`;V68i zk-{X$I^(UL&CLD19VS%RGg&}>U_BK3UoQ}MYmdYk8_$a${+fWUG55r`4o$XJk*p3|t%}1+(fs@KUj%;3*h`-)|6jHDwsK7tDdp zn=G-RCJ<`=n&88;5fHaf9}|2}K<_pcyf{4tnlgIX;1M~HytbL$Ez5^d!ymBx8V*CZ zUtV13hy}Y5%EO5CJ}Z# zPA76D$04z{fHZE6g7Gqywen0~G#Exj znzCV=O`y|&GPhh)7|}VMsU95+W%f&0(D@;7aX~0^QLu&GsnP8EFFUAxp2iX)hQZh5 zV)i7Tz_ctuqS9TNoPk;yiS@lzdD4?-)D-KhrAVwl^G&>0dJm4uab&GYTTvx&1vA(jg7OO^nf=Bf^vyrY!pr}%1+!NfSL(ej=m2=Qda6YZRI33O6ZZX|BPkeIY3A4oU_;hqT8%SKxdy@q2`00Sl zqvdhvEIW+o9)#uoRzmj35XD=K@bzlpK0i5kt;Viz4_VoV_#J3Ls+@CxE$Q7x7% z`$B$9_b%MkAP+fpCq;)%Okr)W9T^_KVVCU<`1oWs?ClmXoOjkjW=sKuz&fZlxdx3!8=%tlGMJ=pf?qya z5Fix-3%%0d$+IA6v`K{fhXSGEKrFPT3+(?xhoPxuHN2P}37ugJV8YU!5ZUDk6OM0y z#m`2=(bvmhM~*!Vx-}QRUDg4sQSOlRU;spawT0;IkI1yON`TW-$emjaWTC_&vb0Lz z%8iyHV;3wSvSW=zN`@yzb5xdzZ?+#056aPJ#qN`t@|c~h&gwiX&b+{W?0(NI7L>7D zZmOus+Ss_9A!uEzjKTUOOW2#f}guq!VXigAz&0mGX+t;DUW(D5t zSc8XdFGK(9%kjp_Ww^)52ZyFD#u(%OP|M02Cx^KS=jPd%@y!+E#nbS2=5V~$;DPP& zmiX+~?*i}39o88O$vu#kf{4>*;WQ9$(O{`Ynrlj0_ z$d;*Vq0yl{=5ui%DxN&bo=6YGb9?<+V(~zM4GnDNDR~?<>7!V`{x^$Iw-+xD{>X-9 zTe$pp=q;OcW47qym8a~%iU%UshsDfkt1+?Y%3$FM?nJ8KI7^wnl+0Ne%+{aYMQ$$` z&pbvRBQ9yOOzl%LxzvA3>@@W<(K%mI*p^*N8pYBgFP9fYtL?VPFz!839BN6@D?XA( zhXTp*e_g~g>#Vp0zCWeBBPQ3uVFW+d=py%-m=V2oH*g{q{hm+X7m&jLz#iaF55NVXNB_>`&NJ8vq(Y%obqS*CJuiepxoif3g>u|-=l#P@thFsDmRV(z<&!H^I?SO)RX?4(0BCV#Q{Fc)C|e7Y*=F+-4MQG{x=b0&(}9At+o{QO?@|ud6S{ zxCUqZ{C*ayFBy%d0t;Mxb2`3Gb4Ky1Wq45des;RL0T-*w;OmB+=-u4JRPINi`qMkC zwJ;Xnq+DeKD$e2~NMv>vnKe?)I)B|i8`dtj; z?_hFKirBoM2oD|UFWi-K4W%DTyHxjPV41Ro=B5@{b)joGu}b zZ7a}*N0GpRQ!&ppnb;LM25$4S zSx2ZXD75TnFMf-_M|&pozd0UEM;oyuGf!AvSuU39@q#Ijb;a@57DL=IKbKGWtKngM zkjS)bBSa__iL5ntf{n!&(eMosp!`~!sBS$7zTTrrsQpoxmbskF3poL!6!(zxTTg+* z%2;xvE)LT2Ge``Hhqt{2L_a?cwln-9w;AVKBVZb%EPo)nIJRWLT)wM>f7#0#l|}lL<$* zgJoUmHb3Y)WL}*%?bwHNUF#MX{4EEDTW7vN$V9b_DcxX{2SeMMgTMH0! z4Hn_18(C2LVl6IIJ`HyZg0VB`09^aM8^47Gf|jLlCX1N?3FBhW*UlNfX2)U78x2Tp zJBz-Nt;8cP9p|QJ6Ysn%Y_48Rk}qDtzNovRz^(cCF#2EN;yy9H95{sa#d2IV_arN< zx`Ez}51Hn^o0u|F9=#QB3iH$yIv8-ehR`r0f<$5BQSG@ z82?!x!LV=n_|5nveipb}7d9r~g{PPC#M&fm*n1HRJ|^KOavoFLk}&jOGKTagVNYEG zjyaKpBBeO|dF2d#ayx+$U5WU1LJT%kCgQfVBWN?{48AEjjM>}H;C=OIT(mq9Lv|d% zo`M9NEwLAaLe5}j<5mvD9n_EOX&s{~Itwm%yGX&RT5&b>U2R~L9 zQRGjvO51^j6gE|k?WxYAE$aiAd}1Eu3?^n~l20dAyl0QHbLnTeE{qiJ&tU_tVgEa! zuf=p8eDTVlS^L(4Q++ypd>;T&VJXz^6bq7 z^%AOlz4%dw1Qup-A!j6H1{>G-F!Q$eFjIPoyD$Tb2b)n54RFd4SI z`3@P|T%o<>J1kwe88()DgJm}l3S7<4&{Pu!3*`!s7qh~`B-k-|H*-6ALU>;cW8GDeu);o*Gd>&)ckYx5 zvxYzT-1^8n>HET@SGMTlw-zq^Jc!BiO94`Z-10|3PYP(nFyT&>{8U!RdWgZM{{XtY z%o--Xv7%77kq|R=I{m&k4BTEXqvv-A!m{=q)c1-i>^>Gs4mID|d$$;B8{f$s8U#)H zKr>SuewIcF{`e0ux{P;c}BX7{*}5_M;?y#k{)`H&X7(f*#o zoh6)x(l2`4I+-g=my-r$q>dl-LPHUg2RPIrij@kDSFN)Qq2o0X(VN5;_p zI||a_VUx+bQRvYtm`mpN0>`JxjZ&xlrSn-{Wd8XZy<51BB-le8gSOKQg)YkI^rIi} zf>LkoqY18!#I7HtR;nfLULbuCw1`J%f=P2p1xYMIDRgEY9q$dL_&>?irWr=VLWKNz zVJPhm+DG$Vhf<*C8j>#yrHf)&SnA(rL4+=a!^LE_E4iP-d#R#`O zWHV$r+WTx3w99hd%*BWP-EiXKx;!X4VLE$M;6#p}OIYuisq{Hs4gx1zQR@+}{|6K_>0sbZ`M$ z-unvmI>WJRy1aO(ml{4;rzRex|BAnPNkA>ShDMjnfUC* z!If?5mg2(pR#DN1G2#On!QA_HYw^0xwVcQA@#5+vP4@81c=6w})0k4!c=0uvovh)X zwOB_#f}I?1Ek4wh%+&uIE537}oOw8p7K?UQu~wH+;`!%pv+Y;S#TME1EaQ%;xLT=^ z$&E4*f75Aa$4rKZ%@@976Z;s5XSlv&mo)UmvlKen=?{Iy+3oGj=Dxbv^hy`oldmLR zEBls3uaXf<>ff`5{a+yNlORf035=LXd6*<>gw!g5=b}^tkB95RsYg6Kel-M)R^)+t zr3IW^oeb{I<3O%30%C<7#i$e8VBpeeP%vXL+z=;Z?8j;RY53l_q^#;2^) z(FM*;N@quhFN4>AXR?jLxqExpYHnb_YOv9|##`-L3*I?CsFvpqqxniSzr79~12iec<7%J9K-P z2YA1FM%9UP;o-OU!6-PL=-a_{#4S zvj4N3reW1dJ88y`5Twa=(pQ*`(kff&Vee{OFwjm~e6|yv#dcDCLwVZ#cdGQNem^>w zK1KSe-!OV-Ia%n6pFplc*MQ4i2htuck`8Hcr*o>-(wF}U+3%-T(vpb%)bEeElq(FO z+t-IlcRh}x7i~kNz9n%)TMVRLdC9b`kDfIBd>Vbs?JGSc>}{_I{sh~*nbiN7inLyO zhF)99OEs5flD*?EYHClT^3^?bUho_qbAL_??Gnj-P93GD#0x%jDV_RpoLttOB~_0o zdb961T~H0D^sHUfA@pt4*G{9qks(yhYA#|Nq>oUzBgCuYkD_UWrMOmM71~a<7CU$j!a@xuez7HoudSIgkz$2+if zlfb6wu7wS=V&U%Y8nD_M1iq`Uf|raBXdfnck~Ry>)|J9_%aO3DJP)R}seoGXX*lM4 zn^{E1gS%3ouzNWI`+q#*yy64EOnn)jC0-8-73=Wv2xqWY_z%z6h{5WcCOukX3hAFj zv{zmiX2`FkYF>KEc!5g|-g%$qnFP*XO4)MESJ}2 zBIRZqa=K9#(!WXOm9eH{q~o8A;8SDAOAFHzcyk3N)u`^`pJYvvzN$9B$ELPY0oR4l zV<$EL+mu>8{r^rDZ7AH zO4FrB^seB37dz?FLp3;H`(&xq_#sxMFlnfA8zzdzOLM~BqCamb{hr^8uC+q1bCLqt z=NU@JwQJChzq-<>Y<*huR$Y2&z7eSu%1c+yHz(Kl&-9zdQqG;{Wb_Vbt)LsKrrDEg z2GLr%ITRmvmNqPLp?Zp?miH@Yy>|d@`MZ%?2fNe4*M20QX-(fw2a)ARp>s<}Nh50n+NhB2O3JmMXDe!J;2H8dB!i=}c!bPMKa@WMt2fHe0 zRS&0K#rJ_5?nk@-Jcm_RRuT;FhNs+Ix)Svj?y7T?6(=KJIKhORn-#@Hz3TL9k*c`< z=_kDCuO{9yw-FP3G{jF=UqZD@TH>jrlCf9lCHShl6*C`dix;&`Lxa(M#RCTG{dHk>>R=cVrUyUX$b$7yeQ;{8 zWubTUAtv_-OPn_d-jV@3JaQ;Z7Ku5rp)ve@8Nfe1X$%)S$0PPNfuf{XtQc$xdmL_J z*I9F@+xG)K_nO1QUpn+_w;7ZhkD`0oBZN*Qdm+0p44lrmkyHPnaQN7I>gPHTwi)=7 zYk&?s6|{hOD|MK&GK@U;DuPBrB>mkY2W8ie(Z+6Bn3o?*8T({leM=l&Tk?ZxlqFJm z>?gKaE0w+rSs3$8>D1@%6K2?Sn)0pgu@ajsnqqyO?H-y>(<93n+LzF#JNc~dFbVZu z&SBy2FOYBF95%0_irBDxHf7u$n))i2`N=fUY@ez zIJ${{Zj;YZt}>4LIh#d%GZFMgp-cR#BgQwjv1$J6aqm|x_}+a0TQse})hGl5XF5Vq zX*4RQc|wo&8C?5%7d$?KI5=C_0cPC9*7Y&4c1Z({z(g1k{v0>!3Vj9J&XD(&#f z0Jjx(wB~gR{Ef4t4!wAoS7S$)JdeVpm3E~5IT)r^PNj&&+hLc>M7n)q87$amLtaYL zVfvfV^v!D&+_D-@GnVy(etY%E&HpRwb5oVFLaUh(_TutQNo?r$1`N3G!PeQ8qGh-u z6U~dq4Qb9?e2Wh*Z}XD;4AjTyhLe0-Y#v`5qJWVWqxdt=CSY=SQN=NTAIvRW&E2?v z6eq_%=H}c_N1eACEWrC5isDV!=!I1{ck~37x~v6_LY!I1l>gYy)PLPvavVc{$Z?WA6r&W@Cizoy&6292(#HJAK1~HNq;|kLvvIPZG623yk8Vh)9h7{ySRjuGMB^md1drk z@IN*zE2ZADMX;j!9A&4@0%xUS;Z&IfkA&Ss_=s_k@b?VqtC&Nkd@5Bu8U%l26UcU{ zI&A3|P1Xbduval5bZo^d*4JVe8IQfg(r7hZ9$(6OH!Px@nnc!~XG@e5=UWByyohCzrQMxExH2OYy+UPb6rx5xJU z8EDaPo9{6T!w+*#N;;P1;fg?it~cyIy!?6qle_dz@N{osn4v_c=ccgzF9*=RjPvZ^ z&ym#j=?M$A6jS;k8NmKC>EKgsC?DZYN)?7Mt^Wqvw8Io$?A=WhSB?R5Uttc_oCs-4 zL+S7_NBI6Tf+P(K;meq#G%3at_U$=Jz2+N0HYbu^x9@`MuOsNq=tJ<|fC#EH3xh(h z!<6vtC=7icCh*!4V8G=Nio2KwM>_-QNqaUJ7#t+=xI$PNu!lC^E`jeed`Tm`64tNx zqBC31!>R=fN&C)aP_%L+RmW>!Tq35Gb8diM-bi|`bW_mP29RaXO_2Olrd?4tAY# zxE?lOLlEUbJBuvcN!neFO#b3Z+Llnu-d}g33cK^nQ`j+tZOvw(zb(n{+A$VvZa_8* z4l#qxDwL}2!d!OupnHoJ3!hkrUwsp}3HoIyXO|!<`Id-p4w><~;X!DB^bx;g*J{i> zW`-KQbJ4VQIr29rpm$(6PEymvdgT=C*va#U1{LG;wh8>UA=hx_9v7Rnw;!PGhNIlQ zx@Q&@~e1(@Td9$1&-DtKeRbWNe`GFNcn6H!&ox95S?TqOw~#c-CIS zQq@whOuU2_42z)uu#2csoeP?!=W*VGOjx)?ifd~UL9p9nM13^W$0P0v4uh8$FW`&J zeNbwA4LfG87w$RNaIxGHIJNi!vez?V;PZ04I&&iYy-|d^@}nSCdR#B&T%_DI(caEl-#neX#s-E{P2PKE22Fgnp^PQ~*{CurR9`8ML@G%|Dx5lKenkkyV++`{}K@;z~e z>$|^#eu`z-@sjftuRWGU48KPI{ani=?llyrbd-HtaGO|A2J@+}qn%pkSfR&#S`$oc zfl33JC*H~T7UDE8m%p!B^Dd`Te``Z6eaAgq- zZMsD}mz`pI2{lx?Bb>F`RMU;xl`J&wI&Da{V*9UOq9Nbja7JxNyOwO_oY$38c7wgm zG@W7!jvvoYyqrTlqHO;9mDBWV_*;HpYBCjA48XxR;>kvRJj%X|A=&lwa7q0UGJn1S zKe&d_291NLq_B@#t_gFF^CoiIdlZiZub?fl$r$v+g_PsPfzwFBj~_D{H+lG`T-czp?~( z)SB^jp3Bg55**#jN$eIk@lM2^Ozpk7^#bSatnq3_J9X)!J%dx33|n{BGp~ zeE=fX74zZe++eDQ2R|yp50phNZ7lmIy#Y1muIyGvJ)H2|!%mhrLEyck?8~+nU^OD0g=N2i(HqV& z+s&UqW&0)OGwKKA$=+e-G==P2_X9TbvYdFLcOx5lQ$g&h`f-q^MXX=ChPdCoRCdQeOZ=}Vj2*k7B{nkw@`~FH@yrlmsQHH*n_(H`M$?v-=;tT$Jcogns$@m{1=qx9$x~7ij z<^RHl+A-*I;~ThHJD{lO9b{gei7(1tfV0P3B>x7XDD(oeF)Q7^9rv2hWTifbZPDu{T$gF*dP+ z-5>jlzcy?I`&j&yFMV`@<9lE5Q9>yg%%)0NTH#{Na!#vDee4B&R8w0zVnZ{x zz^k8hMfgT;<0)O~SksH5_@jE#WVN<(Zo9s8{Z<)%E-!RFy~*Tt-swvXzo_7i6n$y? zUJm<4=t;vbtj2(Uy3+DJ;kfLWkkQXb!U`WPsbx?udOcN>`aCVh`+Jq88&Bk5a-^Je z(eEU@r|^qv_n*MUV?WaAz~h+J)InOagE1|jnbLIKanrdvTDg8QZd!4JihMa#@jFi! z?pR^K^b$Jm+!xJnW>b#gd*0DGm8Qwp^K;tb=i`~8rVce#`C`o)sJ&2wq>-gKM7=7|(!S1Kx4Gn^XU%;S`z)G6gxCD%6P z172P9gBvjEIv)L`&$O$eaDykuwrsb=AFz}eH;3@r54W>(@{E)BIK&3njAWl=!`bYf zM7AL#iXDx4&Q|XZXP5Wt!0pH_>_!_0R^u13_7k2U*KQ~Ho&y2n#sGQx?n2aN?rRtBON0n|m*#CSI`X7T2#{=x7=J zfeT)uF77*jFq3Xo7rT1SV6#rEiEnIQ!`Axu5jW}{VAVo@OeRDzv+v5{lfzS(RjREzI|L53CG($$|v!`D)@D_SyZp zkV*Q;s;)Idz_rgzS+4<>Ykpw=&G`>rXuoCJUv9v*H61K)_$6rl{D`d@Q~_H3uQQvF zTzFwu&c=*Lg&O`eJLPd4cKr)xdw&E2o9@7tsc(df2UVHRmU)mlFNrhxV+C6WSJ)U? zsDu2s4Se0cd+g1VH+*FAVP+z4jfYF**ui=0uyKXIMC1JtGB6(Wgl-JQ*XVZo1zo7>!W{=X zXqUrF{2tgz!9mYaE3b>bJbNzqUtUvq$W!biWOf8`51ZL*p$Api1Ny$A87YKnt!*^i zGZ#ygp3#$4v1r`VNOk_Z(Wm_`wQrq^Kepc@t8!Dc+9k}Xvhw&vij*_@3a?gmj(R8V z<$(xdb+UDK9Iv~UmYSh;|w>nmt;{u$nLlmiX6 zYUKO+o71NxHB|o6ha9&|K(oLH7}@HKJL{q`=-EnauO5cKhwZ`pbuN6LUq{itYB#qo zE(MDPcFq^Ybi^46taMu{4m|vn@R=@%7AUD7erd_`C!^-Ecb6_8C-YW z!(Cj4VD6B_9s7Gx$i<)K3VW`ByhR$P*uNTvR7G)egKokv+`wt4-hxGbW4S{Ey79v*5a03t5!mqOPqB$Ti+=G)u_Z@D4W6KXw_x$ z>@B#xvR5E@pbwYZa|y!UALq*BFG1hwrQC(<7a$|z9yhiZAE_O8X28Hnw>is$Nf2FG&S6#z41arqdps@-I1N|sx5;kE z1$8d^_HvkW{fH>w(R64Fk+&K1(hTYbx>X)&Qh{;rC)?bwYGC?%kBELgPG&DN25=E0 z9hmLE!`y*)xm?kKI?ikEf0ATF1-7ie94b_sv6oA{v3jEi>)4ZvmfNBjEO?F{6Z6^m zYE{~oUd6H$hS7_CkJ(_;i9&zaN2XD_kfP=(g2LQ&BzIpOT+;&R{z7fg7#~6NYx+a8 zz`YoB+z{$FBnn!Rz?ztJnwq=^L-(Vzv`}L(EP0wwTV@-<=kG{QYoF7h-Ne|g9lS4FTX%+L|wTs&PCBlAYBdLq?*g`c=8n`2twSJvPZ}}ZexzLWD z(ma+uRzzt7ELfS#C>s9e2e+l#n2OEPxP*iKNxQ3ONrZ!E9=>?|HO)8jX7K8?#wawTg|r=tyy5ZU$3 zz=lbaxG{Jd58o)|xHB2}@RJJj-dsd5N9J+f!b8Ow0=c{7%?$PAC}R$@i_AMjdBsyID04Zd~1KL;t= zocBc;?uvdZcYNGWoB2_5*~;En$&IT9+OT2O_hn&-J4)#5jjq1n-HHaCeF@j)KL5vS{@32skHXk{9KK z!`VKGRG||F1)Z^^)*c9jpQEU|$scmQ3%$#)eZj)v01eAu19~~W6t&h3WS%Xj%OhsO zQt^Cx?jl5s=T4#8a~5FWXGNx317U53APJdbQ&xm9F zOay;g@EI17uS|(=i`ayHedyOMDT{cnL1nw^*pMJCn)a`g<+^IoSHFMkS*Nzp*Psl` zJauXJ3N6qR>Cv}1Ls)-RpHg8In5qw?7d0F_nV?7gx*TC#nl=qS><+e0YJyjDBZQkM z(Eh!9;LOx7=;js-W1c=k=OIVn?AhB`zV8^Mp678!(s6K~l!-N|$3ebdB<9u&+KSS8 zO!SKe7GjShM;w9eCPT2|LI{kr?c_W4_QB^9alGoHb#TPlk#CAx49Rb_dA}Mv7(e@% zkD2bo4ncd+INPc=PV)LU^C0}mZvpZ7`RX!7sVGk9D+IVp~ z%q44-sB?8YC*u$L);G0^JjlV+I0&2&I%PSc6mHMeOI?= zqjw`e$M2Y^kFGYp*D$w<_yTxp#SzIrbuT=b!1y75{PDa)9v^oh3V3{EbPU|au_h-=Q{!Zj(F6Mr4`4xGlb z7izKgQ6`!zJwT1HGe`?sFx^`CuRFiM(w(`O^tKE49Y2e2ih8mC(@eDZBTr%e8F)WX ziL44vWAPGI60b_fem&aM86|XM>l#q?xzm^-Hlj$I(|ByDDdoM*Lg)Qfl;Bc`JO53f zU;RsP`eH_ULrby0<|KMF1#xVe9mW5w!cnIj1fN|!Zme;nn6Z!WiMxZ~O?-;uOYJCV z(JR!D2wjG{A8=N_h_^3G`n0PTC)NA zys8y-EAEBwqGMd^!60zE*T&7e9}4pVwb{bOVeq(n9DBMj1eoh`=4lcL0sDj5mZAIL z(duZnWbh7{xb-9(=Di-o7CEeRgBQ$nI?t3`+`#5`9W$_V0_RJuOl`g+xCDM=U++%_ zwoeug_l^gDV|92CVGd8841kd_gTdI#6qecRK#`F({4G#{;SK_yLEs_|-rxj9)1I-^ z?Vg~tx{3w0t`nHu1uUg;D=d~f#>@hC!6~sjJ8{4d0*9-!P0#&c+t3hhrlTJ?U%gU! zP)LU4j7j3{6nB83iYiuhZiB9+lhLnr3wZkaVfm4bkTfY-*h8*`vY0Y-4qXn0PSv=7 zq#HcTX+e*H3&6eQ10Ktn4d0*t!v_5sV3eaknM(F>pjKc*4itmwBz5xtI3DtAH0fgW zI5_OAMV>OFp)g0ClwO!Zmb%bITQCTmf|SYiuomPtDbx1Ozf5_RGTqT=Vn2o|(|;4s zu{9%9sZ}S8y?Lre?^MP!-Itm)^X(aK`QrZ6GH{^ejnxo}YbxRo)efh*j>GZUDGN$^ zwiDfD$IvQK3cl@UO>54SpzpbHs+vV{<1CsMn^yhTS-Qs5%*`e!!MmWh%S# z5xuU;(VHtDF{$o5X109B1)5zLFu4~mCO^e${s-nHHezYrZ`AXw$CWX1)b4r%2bn6- zE7=R!IbWGJe=Ei%H7fLLZ7N1as#B$6B&xS*(^-?9_~p8e&;#U*Gjer>j*MwP>@`4yLxh5e?zB<`skB{Uoog**Pj8&9mc_MrDD z6LXSlI?#sU*uZrkeuTD6iJ6t&!X%ZUEc3GjM@U7i(L4jQmd|8SJEBoFa3OPBeh~NP zEnp8SJ#nMmeD>?+c$_`Qg{c^7-@p|815hoK6hJUXdKFVQ~#^H6CTdiS%-@fR1Y)78v{6bxhUqC zvXpz%5XZ7NALX>hrZVG?72Ju+3|6h!&1t1%u>~7-m>*ZbmUfI|gXT+E(7%Q3%z~?I zZqiQntGbri--}`ck33{GCo`DA%pCJ51xz7j{$qDce#a50AyKS<*gr z_%-|^+pt&{ET(;9KFUMEz_6E{@*f2o{2UP4L(qvTYTsXbx3yb^d z3RU~MS+8g%L`-?go@j0W>CjsC<=i${aJYi4lkXDi!hVr z60<$o1=|48NsFN@!C`9U;(~Kr;`y7BuaQ0?@pCi&kj{EuF4>XK74}`mb$j^W37$B6 zK|b$Uo`elQ9`k+XUdMNlGN@4a8hgb$0&7i?ygm;{n{j$Hz>(p7i5aCVS%BgTj3igq zqx9W$lA9WccQ4MRDJHS_EP64`_;ME4e03+SnHO-Dl{;noH(^Dy3$?!ZgNE@7>Fo7> zH1fb4IxFOCKR=yD7shhb(|013D9xhbzSiXN!=1j=nv>ty^~638p;MK+DWXW9s?-8$ zdreQ|R|mA4~{l>XFgW=j2> zw5edGDs5EkL;IIJM)`4aRAZZlxt?F})dE{QI`K8ib|vun)z8r5s~+dH@;<6g*JUeR zYO(RkUKW#e3kwAAzw59&STf=++xMdm$K-xsT@M~$-2r8RPx2fm`su?4QTm^cbknQ^!Unn?0VecnQ6rSakT|JmowGi%xcOu8R2>1RL zR6MW*hAyqfB=4n=J|z!#HY@|5$Z!lh?g@8Ir{U0_Ua%mmjqh)<2FgD-N?H=u!PEDf zI9c2Xc81z)oseZP()4Bla$8|iWim?`umilUrA$$07i^i|z+MdUgV_5$Y?aV?HDiJT zC_LT+OS&~+YuPS%-=Qb;6>NoVRYRe3;%4ahI}APzSPwlThrx{Xt3Wc=7*=O41?Bp| zaBAivIB-HZ&j-wfDHAkd+p}p9s-yyy1!CB)DhnBUL%uMJ6>zRgm)bxD}hlt&0C4j zw~`0@j&gor%NKTa{8#?nzUNFmUKyuPsAU`9^u#VP%*nyOt%7 z^0N(Cdd&kq#Uqu=*z;ops#6w^bM^e^RutupFfUm6F`m!ksMezs3#Q!&mlg^z%>R8T&yl^J4Qee)jmr=&TqIa478nuq{G@DrC>9tff{sTL8Y7J@n$U)_X z)l~Cc6`IbjAe%BRnEK3vZVJzoTDLnXED-KlhuvtmzZ#s%Sw!j4N)T;6Uzo*zvv;#+ zl3#NdGudWGxtkubpr<0L5g1ud)GX-PT?so-W+*TUbJ(iUeQDRo1ZHn0PtRtCvroQV z`0>n6CeE(MS-U(~lA;t}D9vD+HfdO?GLcPl+>6#vCJ8<7lkug&bhh%M5?Tt(%a|R< z_;sE0S*Vg@Wz`8`zwPM9f#)GMIP)Xte*7@&8$FJ#RS#zwackL)x4~?>?qT+2&0$s{ zo5aTC#xTPJIn3y1EK`44CY-^s%--@m`zd6x{_0<2pObRg?5o1ATIV8LIp`Amz4{^3 zQ{-9C(Dy8|p@c=GD}dw9d{($$2R>V6u#NMF!{i;pyTZ^0ZbhZAO4sO}sJI^MQ0K4K`i&b5Z( zlft`YyD99vVgOqj`@{0C{xHcz4z`WbhRKyp?C{e*usgnxjUJ&0Vj zV!d`OtMk^NhG`*e>qkS%lv~fvEw-Y5i>EQ~iGl|6Zx9=k;wboII=DGwoGDEl&7FU@ zoQ~MM6Gc>PAoF{&l9Nt5Nvpt;cj($L%(L-)R!A^WO+7!^DuQ6QG8U8`rLzUY(CmB+ z%|A5(Z8}bnOP4KHdAJ(kwSNeSqH;Ec}5h| zITULoaxVa!5%ZnE!WoWcCLeG3@oc}8${Wq^y%g>b%>A~c)7pUZh*f-C#) z;r{e0;@^00PS@-yzteUYcWQkZ&zmHRq-QtsHVW<)iw_h@p7+g`)JL}2=!ysP_IVP~ zEY;mS+xAZs+jx#Y{?LGHvwp$f@*d5(+>*t3%Mn~lyax7L^Fbt$(Z>$a2GQ122DtU$ zQR|uuIvC;PgYQRhmfCwTX5?p) z!F4~(yDh2|joyn}OSE{43p=pG=QMwPiw7Q5kiq)o$r!iW1T*Fh#}y`aIDE7Q-dx~= zMr&X4b%PJ%#nw!|@0>(@wbhdEs?0)p>+H&(yDM;&@;8x-d^LUv4CiJ!3p&Z>IxgnU z6MXNj%5wj<g|I+Fvq`3G4I6>HY3~w6)wxc_)pLHOcf=V%>wul4N7pv z_?%?tL1ox$ur7f3Tgy4|C~jU$eH4iCkL#BW4tm!^K~? z#x6S+aIq7LS=54JE=cYqa}x91hRXr$w|^;DJ=%k9s6WF=Zq8t?T?JgwK49(JFLJXt zk7cDomz41t#!~iGb9_iR!IhZIG`P!%W&1z``+2l`lTzzas| zkY{)V6DO;}P?nCP+vT9=V>xm*y-czE1{x3VW_)%7E<4e}Of*|Du(pQ1mv-TovJ&Rs z`3@DZuWk4H{K|i#J-$=g=SImETX;zJB?zvsc&j=(il?_r%rg?$C1~c zlY>)EHS!J`$8m$5Deei~iW8T6;V#9QsQo?y6>plN-HlUtWR(mWyXNEkunK6~8968h@U zJ(HCz>X!k{8o83mPBx)84l7t_&`7$M>&eExx29FO%b58spl`8D*{m&7=)fN*R%>QQ zKW(P61(&Ch^;QuJwRIrl92-`8dOBUwv1U8gO{1z4BiSx5JNkRol(iR6pBb3D*7#-=mAo9wX5X`* zz&Ccx=$RRf>srDnPw4(o+0FvOhSRseP-b*@7}a_oXE6pQG~!k&+x)%;`wq7$khLiZ4qjM2lyMl>s5i6Tc6P~S`q%c`VRZs z%fiXUZ&AMgPj=~CH)i(su+=wSV$Om#_Bj6`Zr5vKF59ayy7WIL2`0RB>@qWSEW|sV zW$cFCDO}uL!0LWPpv$`)He0eDZzW~1y&4Sls?M-`^8_B#;#@ZUXbyif`yAV6GKili zSIJ5?$cfti@NAFE8qQry%2Mt%a}86^vm0{8%wtBSkky&ToCmn?TahWVID-aGZOJ$lBLGb%j9J6{A2wq3SSx!j+ z*j(Mh_`m+3IMJEK&e;i*d#u^8Nn2n3N z3QEz5HgC%p!C56$e$#g+h#r2Ne;zjr{vB-Q+^Mtd=G!kABt6E`AOFEWT07XOE_rHP zG>rv~>O%({`m)Cl`cbI%6)x?GA-(=RlUqN)jD(tFn{lVDDSeY8pJ_T(cqZ@ic|T@T z%6CI-Xmp_sYQp_2Wd-Ga*@(W!H`CtPA*i}#Kjj`ehRMdEoF3ptjjJySv(zlQJ*!(XMSn6SUsvJ&lO0EXi5IxH;l^aXS)Uo5)}lTY z^Vou;z38!T4;vp+FYH{S*yito?o@M&o!LK{y6Q+GA1C71Eal@BVnBpu?%JWL#kcToA z>??*R1*$YRxDc+*QKfe-`9eRUB00Rs0h8sjBo#7@t55$#zB3)%&-UQO$H{QuLJQ8Z zjfb@*H_$3N8e|DKbD`ypDdwFN z!>!|eFj>(YG?zc*&4iwwe~qd9Y%4ji+rN$%1-7%4A0zll5!I}^`LQJT##z=P4V08m z3uD7({a2a3WHD3E?zT}4uwa{1u8VF)%djmsO*ki6L93ta&i&oJkqfX3 zB+S>4ir=#!{g%P>my`#2R(pgBJ@+FWo>yp_)h5!EJWMT)g_E7;5*RoC07-u{3H6Pm zNlK0x-dV7ZOm*hraOgTR{F-C@A9o|`W-q~m(NjoF?kaSDCrVl_ti{$_jZDP8U_3i_ zHDlwk5l1{u+V0q~k#m^G^4FZ$fP=)BZ7x}dn+mI0dLaNu@*cCE0?TpwLqV!H?1hgN z)ah|Ej%&7c8jW}}2j%X}qTlv9VA$YXYOh34NZgYy>axO>*-L56+o^c*#7cU{(-?Qz zE~lSDC*$XX3#r^aO&n-;rV7Fn(P}AhJ69DvpFWvdi!0*%WdiiAlPq?2b6$gc;>h1n z!?x%OplnPooAu!%Rh<;b{`~laHtg15?YFm6o3USfcG+2KH!8_)%gLm_XHR8aO@in@ zZ4cJ*pE3P%atmv;w4dGRp3I))^cF6G1?(k@?QM!8R%y zaSZqtwy%3J*;8?Yb=|y~JA`(!yRvqZ%Cc7Wrhhc4dvk_8z{U|FsYEvMK{PQNbYu1U z!bq;ebH3uMRb<_r)3t7)uH?q8FSc7ho05b3V;RveDr9h9Hv>WniR2kK2Rs@yAgZnDWHxUa+1QsuLi%QsV-mT< zOnW}@oSsXjRIVUfE%S)H;CfBi9xblcArnht5s#oPyEcy}_H>oQ8@T{6j{%RkA!#>3>wRRLJiR7|$}i$J(m75UvN2D;zQ zk%eC3@S^xENnRrg?f0w692p@9x>8MIg8z`C5@(1&>PK?cx0J-ae@^~9JWhhA_K+>B zi#ezD719N#N$}}vk_YDr`~4^p3aTa3)Dp<5FDzMgFo^U%Z6Ry~kBCWj61b^Gto{x0gxwI~EYJ*n^M=fReu?2v|4tTFpJoJw{*ml`mCWdvAn?yMFc0pEK**wp%v5g) zcsl(vQ)?mxit?f)D@_V4=S(1%|4BjIpb-f&l>%ADmdqFyhZZ?Uvcgjg;)k5bDQi*K zn`}q+?-7QO8`H^pbwM~PWJ12@jgyIowaE2~Kg8{=JV~GVgRJg;$G9B-LgLNOF+UG| zA|tjDO!=Zuq(DiNIbryPR2?j^xpMX^8LODYo+gX`gqAMrc%!Ti#cw zukpS<|K= zx>x@c>oWM9I^6xrcB#Cj^FWAPVDA7$%8f#sMl_cu?Z1a7-oof zrtQWfX?pn1CLFJB*2cMi!f>saDn?J;f;aP|Ft9KfFU=XJ->0lW)BabK=mwxi!)Zonwa_sRvPN(=RMKgm0DkHrV#WVcqHQQxqIK`3*K3`<1I~6 zn+moHJ|bIuWl{IwXJY?J95c9G-LeZpSbkFyF6I2B;ZzCikBm~4ehsM0dq!cN0i0dk zPaRK~!A^(U^xJ<{z`8b3u_6YVX4TRK4R-MCM+JSO?F_qf3h4RYbK&1m3jO+W9@Nj< zMb}$+LC9Sn`gj+|`|h^pa`7wSj+itpboPh$^IKTcErD>!WfQCQV-4Ka>ERn?uLZ#+ z>uilYf?)g6L(C+VbzpgRn6Wsr4sy=wk&Fv#;cCcIvVPub_z_SIe0uV2GXZWgWsEIFbbB0FHfW3$a@J0(L4bD z#^R8!u@|Bpg<-e)PM{fo$mt1TaIya#snH7oIhV&ogkvd*V=EDT8UTSGxXi-+6`=Aa zgY>-efvD{pi0U*?_*iB|E_u0w<(<#W&!e-UC29j>{%aOkp0VR|)H^8a%V7^yTS9g0 zUv}oW8N6wlL9HE(VFB4dUvX@|l}nOoMdKuRE_H&-D5yc;+#33tyYGhaTIi|i3ebAI zlXlw4zz(rNntxZE>wtfxiSdHKoDjk*-k-_uSF&gzJ;e2oHL*+K1_?em6$krIlClgt zw4V|~{w!UDTN)g=e)<~pIQ5JPj@XI8#|LaRK5|~Gz76c6tTe3KBTac9@-ei>oBC>( z;@ZJP+CNr_dA?<|XL&8ok!qmhQ4M%#?rr*Y%~h=McuWHXZ({c1x3o0&Hs+3grG@(4 zIF|91+J!yj_Ele~|LI3)`u;n&OC7>r0l(Mq=dIPk-Kl2A9{-+;<7l|<}I3URL1urZ}FDEM0~C`iql)Q@z|GP z^m(d}V$WXUPe~J${rVKUGt4lc?-5QPpNd)+d-1ToIkts#V&u$e_`bCjBYG`xL)B$e zX_|)X7GA=0Tg}j3z7j9_n&77@jtgdGfE#CLBO9%a#(Hsh=9N0;W`^QPZvS8)y9C#L zlR=Y1Hh4x$95-!L!7O`0Y)BfWFH*kH?%ql&ZugAxLzd9Z+&p5af0RwU&_acO1~c_l z=c(7NndH^bF{&S4NMh|`Xoh4znbop@`oETjKh`QVB+(T3edpQ3?_5F8cYy!Re=YoW zdSW~LDH6=1jxo*(sqlvXmoZ2>0?+HL$dlMI_)y_b6vZ!q{KjZf0}YTLnnT3(+Cbw@ z8QG`S&E<4ziS6;nAlP}G{8#!4_B?$+)|9`8d}f5K%H-UBR@{C{=nveHkc85qarpOD z8Cp&V@E+>vz?iKd&)sbb45kS3%q6Wsv`CQGIl!@r89|<%!5nBT6ySZ(S_E5(0MEn9 z7lft=@OG!J0Nd39ypRn6@GnY$Cpaw#!lnuEp1ux(V^7C{c^?ShoyVXr#~-3qenRM_ zmB2sy8T@3IfCCs3I>jjXK(SzBcXF&6VI)w8}A^NmD99mca4@yL#PBRyFp88InakmlXUX`&vs1e8m2NXuqN7<;#uELb-M(yqIbf1-+TIZ2MV zRemJFU%7m5cq4f#GtYK!K|D#RTg_g5u16AUh3OQbU5sqG54Ad=$yNsC(jzD2sT12s zM&H(Gs*!Rbe3P*T>D^JHjX!-7rN@^}hvT^Wr( zV|ZBBoPy}&fz|1G_~Xq|jH)?~SGt4nclaqBPT!7tv1jq9c@*}T)uKs!JTB$2*uE_l z&j!?^Lu?k-eQ(4$9eH@jtqEH$9L1}DE@Opz5nefZ8P{8uV0AZVTgoiQjk1@qP@)nC zMH+DW-g7whF~uv_FQWKmK926@qrk0NyuAWZVEqM*k8Hr5LT6EIXCsC-aD2KS4fyR@ zIad9t$G~RJ_fd*y6m|@a?y&fwEC*|z)Zv1XR5ZF+i?lrsU#_}<_nRZprLYQDv~I=H z&8KkeSOBgxDZv#@i%@#-7?R)ixI#Dw4Lqjd)VgF0FxAG1^JCG?S`JTe{r0V{V|3y5 zVC?wUPiJ=f;_eYj&o7wEW&iT%@yRx5bv}rGxUY}YL6g=;DWkXJ8CJ?(7`y8%_=zuH z&@8zmX1xCfJ*Pa0JTb1M|E6vy+j$xE3CE8tzPpx&nD&w+mUG0b3&Aa~x9sv#RVbJi z#h$JrR{jj_vBq+_~ZgT}SRPG0wj5;gt^grm_}R`uUSn_qG6YBaOH-yFmDT z1$laBKNzK4C*xD1;AF&8a^+tXIA@KM#&glYYvK3|T$Z@kZ8BUs77ah_E#d8=Xt)v1 zvGM|=Va0L}5StPMKM(mp(A`*2PxA+}!8ov55DZIyB*3z$P>$u13|c>TLdmLhI4-=O za|&fb9`~%9HINDO*%)Yx%z|%6Vj=5p791sqz+8sor>{B$Uz{@F%5W^qdXx$qCd9%C zn`BsXo$KeiCqTiY0}$2_3*fdJ8k`S8?B1=g>FORBvsw>FZ|wlHct1EIv=vrVd&0Gm zU^uwg1&*h$f!Heqz}z2v&zr-+H_Jh9y*`|t>;tANCc@H!MeyZ{9PFxbgRCxLaE^3> zrNLjxEFB&kcX>jL@q2~~J za_5_E`{b*Hx_h!IS*J*$h9rIDmqwb})>1X`jbvJD32krZJPLEV>AsR5%<*0UG`?HL zB)F*J$yifH&1Wi}Yiq7O8RdlEo=;}mb}zy8!3FFr&GmTtz*F{n{4TVAE=O~!VsO$C z6MCjI34OQDq8c;RzRB_41bZQ`@jy8-BUHNMwx|WL3 z)q+|m6SR(UZSAQf~!(GsLkO4@u%DhvN`_P>5rSmVkx%H@a|n87!B4 zMbBoHgXo6`wBF+s=cT$y$&XX8f$LS->zszBduQoMzf*9^u8b~9DTfz&M`@o^Ih+ws zr87IrAh-S?Rk1IFn6iy@lTI1%suocX{W92DWI-!cIYwll6jiu(5>l;iup9oBLT^O~ zcQ-8o1CwUH^|fLcd+^0Za`FlA%u-``V}(FBB{3E&j)AZ6f6T$b!=T3skv_R>kbR*} zOd%C`&#lRDd_2rQ>P4oOMuU^#cJk`f9!Q^%KoZP0!<*OHEZu8lPQEG}bZjFdZL;ub?k%Fn z?S>m%?-JdWzsS?4J*2z*4PoZ>lCCEMWO3bnvhmhEQYvtt>~w1*KMlG_Rd_uazWE=S z+g?RBpJ^qXafQU;P!nlgn@XDNYf13mog4t|Gi5W9E?-$6T#+PdB+NX$}&n}=xkSgx?uEp0MCgN{HJ}z|8z{TN+EBPAu zZ+0WD&(^@FV@>$`ojNWPxr%PeDkwYo2JZaEG5g(aV)T#%hEKeOm6-zgpz$_dcY8-? z_}|4K`#x%;-Gyq^H|YAhE?lj2kt&XNp+nel+HBX2MK=?uQDPT9lV3>>=G;X($(&NT zJNQXXg7yt`An9#kz4x}_gF7qP1szw=fqRG-w;(2kmfQYltigoHHB5y08FcQw%<%P! z@$o(pqQyB^j)_kp;W{aJyT+4PH$`E^%Shtzax)%R$|t+HS^DAC^F$!i30EYylM}h- zxa|20ZU;IEBRmDbcAq#l6w1PWrBV8R<|Ih@d4u|e8$(~`ajJOUhV!Z=S`$f|*CvQv6-GYUgmQCE8M)KC9i;eo zNwa)796LTv61&1d`@;ly+OZ4FO{YTmelEYN$A>)x8GV&wyXvv zw^a~baTW|1UUldKI46-dM(kNLfLA}M4&`QRT3RS4% zW_dz?Khj0F&^dI4f*A^2TS<4$;CM|PyXfOB_J}Xy>1Rz>+_^oQs`@O#;F=<8KEoF? z|5nh09V>B>0j1w+R%7Iqb}Bx+7W?cUQnoG#&6}Uod)tCg@b(wV#INPp(js_dYap6V zlEuiJRXE9b0{+cehSGbrF|x%QuQeE>(d0#_xN;g!_wYc=Dr?lx;c`opY|w9`Gn!}G zqS5!+I9-rq%8kxJwVoN6s^WoZF_!o-W&uXZPQ~&PPmI52j8c)_sIx;4iwu3RZixoQ z-1EgEePw*+upDoXOXH3D6&PhGiqjq~$764P(zR!n;a1-l^uFwJL}qDx7X-bdVYJqes3?z+8h2|IMv6LZeRY7{@W}=&o>U!fg4?{AJ;)lbd6`F zy_)F>)lU9Vooae-ZlLYvl*9C-`&@=rMN@HwD#qb*5bZtrix~=AK-Xy)k)-ohwEDFt zk%?8LdTzT(#O@JRU^JD)PHABC?-r3kn^@NV#5tn1`WxSSLkqdN@Vm_(k8UD(dm-Z< z@Qk#N-Ce}@1nU@qSDzD{du#w!*3R&UX8_IroZbtkn^wE!!Td}^Iy0gK`<(eunSxGdaF^JYzj{rT@{1UEPT zr!9ncSDHfZ8fh%do&taCl(F`h30VJ`h$sAw!RL@RUI;OSu+@6#(5eU9QVelgxi%!m za=VgzH8A*ShL4rxU}K^sI&wK8yE``M@nwWm+?a`)C3nc??%DWlVGW7(^uW+_Ib_!t zPwwY7676ZexIo63G;;aU$Hn)U-#LDG<&_tsp&o#dqc3dKqyy0k6-QSED?Y~g}8^_Td!q-LSNOlqCuT?TcMm2Al@8+`wz&~~1j zHU7JB$@akVY1m}2&9F8z+72U37q*`B@9aA2qUB z9jeII3eb6HW%27zeR@k?1W)dqPwy&zr!^NMXiwoY8XK2E4~yNR8#Wfu#M$Sl{EL&^ zD_|OJx2&crnpg*Lk`3QZMqXb=R4^!=f#$ZhHXu@_Ltecuk zPiD`D9gf+wepvwY_odOA$}o82nn*7W9e{wBhv>RZaiGx_OV#(KKr}>A<8@iEa&tJ{ zz`0pZRfW*WE(M_29!w9b6~nCjwKVU18RRGV(??G#p!Do=Iv{%%X5$iS;8p{d{Jp9F zr%O;~w453pXTgRIpc5}6+|6D?rM5PJiPr{tzO@lH`GnKh zm2gY^A#zee0k6(9COhh+(IFv@k;>$HBnmPt|Ic6Q*(*(-R==ayqju1J@_jVPshU=X zUZqXXhG>WTS^B|23jfYMM#0bk!>%S$nKC<+i{oBgSrg%f?)}#_eDF z*wa%xutB$peQ>uEi`N`yhs^I|_LeyIPir3r*88)w)E{HYE+h8w*dTrj=;n*558+3x zSibJiV-&n4!`JT_K*u=8x|wYcF>!qMjP+?f__N~gjAL1y`0S>tb^V$SlxH8;DHdJF z;leonAF(Ff>x=vcGgxd<>*vG43)s@E%BudXz@f=2*(G(wxawIt8+H2#CS;eep>Hxd zu0{pxq@IZKwdYy)@%`8wSjP^ga(8K!Q>-KFjgO8WVu$1%v1FSSJ7wWCu5;tVe;cKV z(dUlZp39KHp{LHwjk*y!<<|)&(CZep{r-}1Qmdx=Nt$HOl_Z)bIG-3KdQ;g2`^mj` zS~OVbFj*De#kO3(K&n+4cDqO?xy2l}jU5{$%L2=o-*<)J6Dvcqb>v`&lRLTXr49=| z#gnp!lfmdf6?rn#3_1gEliJzSAtLlGNtzGvuU8D7RoKJcT@%4nzy%y1nnHE88#u`m zh?AQS84a`H`K$%tX1xG#(R>J)<_qNx^FXrG51ih+LuGa#{BxTN(P2UG>zE_xKVJ_I zTW3P)rj1ZrKtMq#1ngGLfWy5Z&>uJrt}WgI0=33aF%k+X^L4?{Z9C+4szKxV9k5ti z9&UDVoZT8xFcOP^{V`w3P|JP@HW?u82~p6h)I$8CV<1GmoV?qA2*TA9i1fMyuq^N* zzbsS0Fi@QY_@zT_?p0>W%S;G5>d5RY%Yn?zdu&{o!w}%0#hxq3hgm^K*>Q_}Fmk-j zS`Otx@WuCRQ$!X_|1CCq0CC=fklO22*H1`blzG=#e=9sOfN zr(E}euWB~5U*2>ovo(;0@u$#zuj(MtbM-DLf23_ZBrR^nv=8VtxWH+{?Tbz~@W;q^KE z>wk$c<5T>&{~NREcMD4UX^>Il4)nH~MRq9OL#yel$nS5xSn)BE+jn8Czi1^mmXe&HK0AJzI)lo8!eTmJo zzlmqhb5y3n@K@$3p45_r^$#Co)izm}e5?--y;XqrpWV1SUKvy^ZsQqg6_BxQ<@irZ zkYm$?M=#5RPtPUXDk=keC91gYsTgc}UW@~7zloj9VH9+JLDbG9qojBTvD_Gm?Ci5d zo&;got8}uZ)g6=4Rubi9=7^uUJdBa|Xng;sl#s>j)0e^DnfBXXWl)EfVvQVc% z8%J%k9|qEuhKtF#NFJ@+c8x?IM*1^e9{ywx(w|Cp;2R)-3W}Rxg}MSdd8NRpt2PP` z6hmIVDJtB&1bOZ@C=u4i`5Npo@5e)kH+99vNpB!fVG)Y1`T@_5`C|C6AkVVEA9t=0 z=dDOxkNhvvJSp)lSbs^L7dgD0V+Skq7Gy>s8msaq{yBivnd-b{ZBZz1J&Bh)EgCJ> zXz&iqjOKO`nml8hXpX6^$;&Z`#)f81p7;AGOqJ2(u_Ov#&D7wz-8g_&YbWv6uZ%<7g#<>LVO-yf&5?f-+6n6GqhOd}Yr~if{A_`zgu~hM z4hv97tBgNFLQrhm6wnbjgO48!>z5wc4>xs8>Q@-; zg&|kd`e$i7VcFcN^?%=P1rfz*^_xSv9r{*_dhyGCFwf1h-f)XIXy34`-xBWuE!QpU zL$hYXXp=>~OYtm7ylGzlZzqAJ9%l8MV{KrgjY<85x*6QNk3qc<_u0iyxBlX&4LoSl zsDFLm23Dk~*57Edg`)zB^*k;kAUa99zNNz!V2emSXHfy&mS33YY6Z*oy}_kdr-Dw! z1N`>e1fCaP#~*4&Fute;_gm_54y_{0U#bP38OdmFGZB6q*oxBAR6*^u8`?H1L+MO? zJT0!s?PtblX^||Lzptgc+od2t*_Zl>NP(zV8q155f+eLXOy3D<5P9H5+FZC@W9>!q zRb3topZy_K+zz7efiB#iqXeFQv*CoaGAz|y3#nmBptCC)PEA#SrC&24^NKX+UOEAr z#6%&u<18dU{7E7t8sYNi7i5)l2fXB5(iO)ZfW(iBWJUH1SbZp;h`jj(H9_Iz#^^Zo zwi6=PB+AP_I>t<7rFoWv2N`!WMP8tIf31LxD(}^bO>A-gB%aCX$Lu6|ZQeOIL#qEn zmsef3ii-K`^X{o8(6@C4yd#qfY0(D*UfRM7^gyKn@2=%FdT){ek8SPYa)^4oO8Hkb zs9l#Ady>2DG1|NjB0?BpsKMLrDTSN+)Oc05lyToW72d9AnmEr!fu}WOfFV-SytB1a zQE00u&tr=XrU(3k7Ee2TIp+&}n>8EX?sx@PqFk`$ZXYzxn}cFmw}E}=f{v?Nz+lsC zwD+%rWtw)_yZ;QxE8Aio$5}HhGDn>@j^q7P52wvL1lhuBsO%F8`W(Cem5DF3C63Yf z&og0j-80(UpaUecgQ{u^LA=2wI^uAX9A15b_DZG_=jj<#+D)5iGx4;cLWt=vi=t!a zTiKoW_E6EQ8)%EjZhG6kj@Fdyr@3igs7PWg6_S|gpGUnp zC*}0TMKpp$qtd?;x=AGsgZGxuU+zb+>}D}_7C4C#n@Z_T*RyD}qm*t<=40{`j_Y=_ z2_>c_txr8s|J+V+M4T_vBI4{fBYIQv*p<~N?${<>nhCt z#ugMG4`y2OuVAyzF-CM_Gv*oIV0PcXjB7N%F$**rxO}8CIkbz#d;86Z{l;1xi=ItR ze>sQRD+0Kl&lwC`eUNCxp5!=k>BND{J!fkckoLK`$kRJRTz92lBd14L9vY2=dwxGN z-h$2JT|||0VCM(*li~tL#E56adyNS)W^af+qlgo5gg6xZpk7mkiP)ptv~SHbqVfAA z&8U1p_}v`a#r-B3m}^D1=+u!cxd*JEYZ1rtm1kclM-yprQO2y>iTtd;!%VsTh0(ob zMb=cCGwmM^kgx=G*0uZ;k^eNzhVgHcy&s)ueactzZYZAW+>(XWl9g0s-ekC{+d+5O z&46OPmo!Mg73%R9UCyq62bChYM=ccO4@=>^htUwvWmv{Gq(Ys)9KO=YhooE?eB8lt z-v=e|f=D%BzA%j=A)W_#BEC@M7t%e^#a^7y*9yGw+{nyf%&kv!J=Sk&0-UqWH zJ9^En3yyl3(k%~eL+cM^`d6wQHZJ|ZPEfuMC-rOD?YT{Gep@ITx}O3S`p)NRUIdHe zrFBuARp9l!+4eu_Q?T&1H?!Td7(N%BVw_EmLBz?Ij7M26q<1J1i<%6`J#Rs3;*(*w z=R6{p&)s3`){?fX`{38--Q+CS6}^8Umi(4k1=^X3#ME&fMBAj2@>v90oYKhEBz=fd zNFgh(%0f{Fh0dwe}aWycdDG zGX=qOS1f+h6@gjfNhl*K2EKh67=Bv}me%Lth`bn_`CWj4%Y-5KRtahh{v`)ZPh-~5 zC$hh#8h3hg?(W$a(e+6Wc^<&xuHdUgaZe+jKXaB?G`HZkxFh6UZ7V`q44ENy3!%i9 zJQC={710KyK(Pyz{hu%oX7%7A!97eQ>BX}*587&&Kg1cTf~;9{A8uY#%&L6sNBe|7 ztljqk6zG{kcXd3%pU=GMMd`=5sUw1Zc>D-oUr(iHCOpEs8OP|vKYbWFyPR6S?!|&z zXJ~eR7oJ~tni{6u#@>A;^!A!I95Xvg?T%i-|NK&Dq8=id6h=SHs=G54>H#tQZAf1~eM5dla-H() zVoj!)P{eYlVneg z4(zuwh1svQLE{9+6j9QGPS2H)y^Y(6vf*&=$V9-v1khzw!M{2egf1w7LT3p~sgecB znsZ>8B@QkT4REef0Iq#*g9@ilZ&04D&R6DLj&r1^7-gRBs_j&Ex)RU$T`q0gp}=z& zt)&lx<#?q7cWI`D49{=oD3zQp$@>s0h-VW;d22Ie@k+WN?@HDr-23wv95*+{(0}h? zwuUv{?|ueO;j=L3%zelUam8q*Hu!Gmg$KX$;r@b^=&5oFBK+2%7E9p8p7{M}Cv%Rd`W!^tKTFBS3DMZEbe?hj z8jZc@by+zV&Vx1Gn7W*b!RD?E8vZQ?Ka&pXeIo|@orQ4j?ih>`)y8whF_?IS;2f7& zeA?uN+CO5^?nemb<{iSe710=B9EY`|DcCT=F^c03WAMRvw7XM`>Q3=ky}A;o%!tDs ze`+ylPAneY$7O?LqR>gd70da%(cb9}4$s+&7hc{+->x-y+T;-)_~C==N1xz~yKbm( z<^^VLor!8Wuko6pIZ8YkMonWbPiH@jg&>bMqpy&a62L&um&lWQN)KOthM&b+=+w4B z^x~Lam2dj+`?7=d?0-EN?%_zAeLAsBPJ}uhX~#WX+3b4Z>$uW;KHpTM3BCPX8QFRk zWz-)r0T*g8rpAce*;0-0GJxz`cpAF`)5#2rQmjy^CO=(@&~r;0>8v?|4anB=s zIdiT{_rnHW6dt96w*mYs!l{VoEZDNjihg)w4*`Z6PZbKLG%72@~C+SqtN3%DGS8jwv;pNbwy%S`VS3#b2 z6j+9=hJ`J0Ae$cqw~i;nv5gzxa&0*jqlhv>U<7)d(ZO>fo!^0D&P~p5MC>wk-Zl*1l|n4FgYz*LWis=Clz>&CA^U zaGuOHx(trON6FzSjgWF6j?7f3hxQNaNogAkijA|0Lr5K%>*|tgJ{MunonMUo-E%Nh zeu?S%TnS+>eVH733IacFvsLGpz|OU&`Oy}IaN~|QJ8=9k2yZB1m1HvE!NpGY@a#lr zzVw|9-4+G;MpD%8a2Uv6QlS=>{;=6ai?(d>fZ-)ZbVs%=oLOi=)mrr6+)_eAxO-8L ziwhO~{gdc0i>cg;J0zN2O)Vr#iQM|_bf)BHvM@ZF-inqdwHH7w~cG?7lGZeY`29NHy#?j8#*e*t}|HupU6|=+pH=p4B^|P@*_%W)kbH!a@ z{aEwR12=d+z>(RPZ&TL&ZB8}N+3Di*79`9pK={c^k-*RB`A-a%-2hC_|_?!uj7C#x)0Oeo<{g$VFDcvlf^>w za9Y>@ntm_vqkCO1(u6Ko`bc*V-CSxz>jUJdxQqe48l}Vv=quA@k%^3+mJm&{H6s;F zFIz0bu}YpDV;7}0khkg1tbOQvB7vv)eq!=aJxAAe(90M)|4d~%S{z`{g(4FKXj+@$jkOV7!YR2Rii%G9W|XiJpK^;mYb7xtqDWtLR+{56)8C(+GXU2OA}dg@ix&yF~ZP}$xdwy8n}jYr#9 zr^SY-$f@B^_1mN8%j4{$qNO;)*_U0tClp)uT;R{mjYU0yXEv2PGtjJCi`jSc7;3C9 zWX?S=L(R6=%uLa9`16zsd2)=8mqM+{W8Ws^`OYVQgl}N(qyVz!YzIng4kbGxJ8`G{ z0U~;<8xKk!BJunOSmlyP3dsQC{!|hkJBYR;8KmgOQ}n%@MQT^Sz{~S;2)mTyiznog zA&+5vV~|T0ak+feH(6w;bp%yUAE*Auf7r7F!3-s z>GuYe^z+E@%GX#wkWH#NU)n%z2FX%FeXEi+`u zjdh36;e{BvI5`aCE(#Or0AIZPOO)(bKMS9~k|bAk^>Jv43=!ZMW+f{X$w>7RSM9T%DA^T5IOlUn9H@kaIf3N#uS*d5%A14~G;v-5 zXL50G8(6p7khA%naLT}xxT!zj^6olB;{9WoA*sUselOtJkQAAj^9C+Ei<3Oz_i)-* zjF`HAf@A$$o@>JwFgz_z=5G56Q;*4!nt5NLa-SNx)&3dIO`S|mDSU)W0aM8&{kLG6 z$`HvnuONA`6IovI1U`IQKwb*p8wdwl z;>h&K8o2u}Hi>){1sA?% z5*gd=;Pobr{Qe#Ye^io)Sd=H+)r%#S%j{v)Z5Q!qGXsgOf#gJxI)sF~6Bh$v*d%Ap z`P3c~%S0*8D^)?Ro@`_4YQjkVa0p}gNtVnwv(~nCraD6o$gty^li2%%=UKhwR`g4e z9G&(kgFY^qOLLFjpeCLN=+qZKsepL_cQ>7Y%dfI@G2wROH@oSh3RiqM_KxOF^T!TT zVO0FK9se7V!<{~{=v^}jHPTaY@Q)E{4d$Z%j_J6B6yp7*_NaA>d(YhGhHhaMXcg*> zLXWF)u*V^W7qIbn3fgs?@_^xhVa zhrtgW9!FtiwovN(D7QZB|!p%FUV7SXdoD-mdR+sI#nLq|VJe`UX zZ~xHAZW?%Il`c=k;x%Dy9xprk6**>r-~? z9R(UFX==N<;Wm5z%2P&9b~meQvV_F%XycDxIYyR!{bzIYbvt=}NrTyS=^JT(9LIFJ z%W)ZWWHt)vz|n?LCUuTE^#76}(@OxNBn?SVvI~^A+mnu=1+Y7H87a;2flaGJ$&=`n zz=m+XiGkHHe;||a?yiRmT)(x_Cj`8vTqH6BTVTnOtHd>zbA8p_CGi5g;g#T1ZuhyL z`@Vi5e`2Cw=NTbroEi)DPo==nHy$qVm0;qkWT^c<2}ZrsA*ERlzTD1&ZWYcMe;^Nf zBd0-}YU(D>#F5*b$TWsM``-8Kc) zJJUe$y*`MHX@XgR7UZ9mhJmSSa5&)`nYC6Cvd8ZcMFkmn>r+MY)y2W~Q49&H7J_!} zU1FEoB?2MmSS@@-8Y-sI$LF7uJ$f;a+{=Fl;&PJJ4pH$4GdSgLH^4&#Y%n?sbU%IsHf!1LKlqPd5PTj zUxaJ^T_DTKmtnroS#lsX5W}o1Nt@Y5T>R)XY1$o%OYF)?kIOD>eNsZy4o2cT!4u@h zNHku)UqCeNgl@*`F2JT&5$GU00coN%u?H$m2=)BdwcFQ{%i-Rw7hx{XR6=F`3@w zZ^kfw-6eb9wDxgzo^O2E5y@tl%An) z$l1PrT3IO$mh0PT_wk8f#PI3fBU~@@>~Si+A0Wr?5WSZ_7a(CN{a3LV7Tz?c4|P_+ zFC}sMABC3P#F<#DmyfhQ8FS*w9ASXEfs|Z(R%LlYiQDtrbrTsjF3=P^4@=S^+(s$)z$Mn z=RW8A{d^K@a@f0HgPAk?CbEu4EttRUp}Yw{Kk_bB1u^>5=kiXQ>Y z8sd`y-ao;zUTH|t9mXS(VlZpFFx}fR&cs>DP*L_Rv$|w5)$wR#u7>N-7yGX zxX$LTOtW3J`qXN4aGsC64&5bkxY%He8a>jynlJoXk-jJQ`A@#fP=WOtZ1Exq`ZUIa zRq_#|HV2Z~N3p_O$E}1Fz9~pw$39{k9&xbm+qx?V9k|@mUEQ51n_0l>YAwb2?8Yzm`L7q|unSN4^SewFS%rty#SQ{t?3@Rx z^K9n3v5OAO;T;GyWhK50^McnraAn0l zrt;|)7@m5KIr#WA*SBh6L|10Pos6GMcS$YWE0cl3tFM5kKNT!J$01IB0ZdSmBzhm$ zz>)zKQWUTQ9!KkuF#iDfD``S{HBZB#wev~;@;C?@;CQ{(Y2ZF!N49n3!u$uD$t9Iy z2xVPJK}iXS?%YYXn^i+Y-flARu@SQF?eXY`f zcm5@;sXh-w8MUBa5(wj!IZ$-f4ct{YzF?OX?K|_oXc?KPmus4jF=~bp`W$ zuOR$r3TFO@moSx$lNnj_txUe6BX9lj1H88?0(^0j&)>egiZA-%KUVUS0$aejH%_Lk zWQP|$U@w*VvVNjp*@qX-v)x=L)c0-%`=U$&ADk>=_pDRGzKON0#XU{j-QLPJRO{o4 zlBaCY$SllJdclfJw?O?lFWG%tHlbh3Q+7U=x%`&Z#I{X5jdpiRSj&tQ+^{#3)s@dj z6g|rdUaCd*`&Rb%(I+TVFU#sY{eTu^CBJ3=8+Vdf|&ydE>bb$N(X*BKqPLMihNQ0vN;qJH| zy}Tg;R=&}qa|)v%Bv6%pdlU-=cNFMcj`OE$EJfcqB!HW#DD@M$1YcJD!^-*?h+X;} zj}4rGt+F4GsSF0&Z@t*oydP@5J;Faa8^Pb>A@+>`Z258@UtQ9G%)6Bsc}xI`ttejB zuVkJt$j6V4!Hlm(HoEFeVTPpB@#vyp-q^M{98!_uXSIf5;chwhOWkgyD#7eMohA7D z7N1T3qJlOGpIDKK zy?wFv(KHZC4Mc$>cCb(=6iYb=pGij;#+aRfF{21{vPguU;}KYAo(c9Ek+|LG76d*y zgSjQe(5n@VUrI|sK zBAbIHzC^dk8&LeJ7oR`B2FhQbb8goRc%IUOmv&x(k6gbm#XgN=G(5vC&r{%U=rfLY znFI#!y3xQo0ebqnI2PzdIQFd*ZE|Aa%d&Rdmv#XHeIFuy%&}&q8!(~rJdBHT{SfbH znDwC?C$~p~(RsuZccVeJy8ws2Tmakd9NZ`o1se5NFqdQPs(eqxRuTxYUD5c!*b}~M zM{xWfJ2+qLgHD@H$^FPC76Qwcl1rwxS- z%h|x;0gTvR$=(|NgZg{!vtmcZ=p5!D8zm@1pJz6+Q7KCF53h#xJE2Zv7U#0s=e245 zsVLUaLYEG&aAzx`_2@-Ec{X{Q9{sgx8h`3tUD|#noOdNcmuqm(Vj@ep?lui$ir;I~ zwkO%lkrqu_wY7IzVknV*>SkncFSy`OnJ1JZwpJIJjBU2yUh{KA-OxL9n zY)ZJo9J!y3|Co!+w3JJ@>39?qq!ohc2cnqq^_$QoFp*(*=wZNwn@r@5HumkiD#m30 zRMuicH=`N!lxI2jCu8!rftlkc4fW=8p~zehthbziO$z~VJOc#H{{zEi^&oz5CrE1# zLYQ|5^fDqODj^@F{5yc`^47)Q9uP zTTe0WF0g_8`uOn}ASCISB4#fP%a6ds@fvr<+y;na+^t9y79M>rB#SIh)*d zpGxLWm`?7!R428mdL)L+99`GbARX2di9P3fym$H^gl2Kwl-VEQai<_j>v;l|?}p*| z(Q1fu;hZRUZbIP1W|$;#5e`O_f?=^gNO$Kz;n|fCnv?{owJMOjD-xDfKVS~N=NMAL z|1m#zt$~dAMP`q7n8MG88mx=69F&j7vG=9A7%XjPC!RRXs77h@-=5s*7y*PsmG(R>1k{?Pr=GH7ctQE zDr(B+#tN_CbGjKjFK}F5$sJp)wH!aIWuS=~clUazZA-$XvxdO9Kf5K15 z<%s(KVrj=?oTV*JEl&62?n`pCUVI4OI;zw4AAjQ8etjC)C_tB%&7`NKgemK1MsZk# zJ~1_?gsu+pXzaD?vK$u!3gS{lVaU)-*Br3y7~ zv96cnj_vBfGl}!5d}R$4#t%rUb!xUe-BcW^6X=;X_R2{rz$o}p%kTtvse!($AnKQ>=;{# zx1}$$&$icMqy824<%Ayl%iJk4o80k0vag*~}h%_7E>w_OO|W&6s`XH9P3d zeLwv@TM^ZW8vFsaaoc^|`QZ^;np}y6+)TOMi1S$I2eUtWZ((4wBrAI*0~h!#n0IG$ z0!GzLVSF6V;K_$qn6qE~FadrtL4Hoi|1lj_u3n5Wt2V;ZIhq(b>je1q{9s?naW{gu zrEI=)79{NmWA7!F!CW;>_S@8lu*YULpJ{#uPh}4C&bz#aN5|9|!7JZjx5FVWm;4LH z$1<2_9P?-6SRLb2Fb>0w1B^uM9}xXd5cs1bAT?VOoc?_Rfo3HT$?FHxK^>^m>Vl#p z#!zJ31bSU&FeS4RG-g=92sbkpNdE`A@;P9n=m=RK)4*t}2W_86Q0 zWgX9=&<_5SDdH`hZUtO{jEUcG21}AGnL{&-VUqeWX73_>_|Nq+qi3!O8Bh33O7vuy zV|t(2kS7miqa0&ZVGmo^UAEo+%dN*eGUAJbeg)@4q99-&lme%O&FM z`;rjYxjmTGJQ4z0O*L$9Supq$Va!kngp`;1ST*e^?0UBdYnO04^F!-UZOjY2BX;4> zpF5yvfgh@U-UJKp1>?Y))u2kl@NT9RjA)1B-bwS|;7Bm%EYt$Op=0>HSR8hkdU099 zLB{sVRvhfP$LxBt9QVYhFrRZxaD&%gCS>Ylyv4aWnGyl?qpiH&9go;wU$uCTmfv7i zZ*>)Yusz5=A8szb`$n6+*>byhKUDHNtX$?j-no*WWip@l{`{w+M>Rmr-3&4plArJedtuVEHT5 zZ2tKgh>_mIcg?N_$1!0x*}4K+D^{?+UrWJ!LnQm)6N224o9vof#n2hh#MVtI1cOcQ z*}hu^;9Dt#vl|K_Z>Iv5nDL=YRu6dsoR6=c^JzHVh04NZXwpy(L(d%X_=Y-Q&L6^0 zTONSH>qz{O{SeCK6Hzsz8Q$tADl!NygCIEH)QDf``)n5ScxjEu>o@~do#n`0Jf~^Y<362E)H}#5UT#d4zZf$yamG~M>nqOyXHY-SG@ehj5siwH z;yrs|K-U*^6|tpybg!@h|MM#yYUhy8uWi<%KU{U$zI5)nXsREpu~&m0;dUpdKB`e) z$sTrWff~KCQxXOKsL?vH*|;N_>-HC{$4|G^=vsGwH0Ya5rE)G{`YmO;w)raVIio<8 zQi~9F%5ZzY``E4^K_3rxqT?x1>U*Ofa|;A1u^Ym={}_C7&Tg-JB@SR3lxk)XBL>#={I6kY#_Vnvq> zU2*Xm_F5@W_lIXuWJsBY`#a&pAvNkBtbwuHbm+ZlIV@k%fS%v`sQ7ltbb7fbj(PBQ z7Cn+T89YTy>22xlpfQ)BkxlXNW5ImddmF*pZUKG#`6(<+SwPE|{)CvK1@yk?bnj8K^pYZItMZVC)2)PcI4hM zE?;nL4G}Dqq2hOJ$-fA<=^r^r~YQ$Epe) z{m#A(a3y^6Jhpb;HuBZ!KlYdDMv@eEnSU^Zb8t`#o^`Y}(Q;eH)Eg}(>FRfwWu|7N zux*T~k1!&;{0!j60u6HQu>;f>NRiCCV3@D=7nc9H%&H90 zj*xVd0qj0_fD{b8#p5PkWF_Y}?3=lpJUjdWWdwJS(T)!&J;Rk`uK9qK)0~Ke)_YX` zzJ=7ua?a}`o5``kx42Mg1952^K&@R4q;=hEyxa00v75m$nhUMTmbT}}Mp=-38=vBi zDu%qj(~il4Gl}25Ml|TsA^h}eY%@|MH?m8xlqW{c*cWo24PPN+>P>W*@EFp>G7f-{TyfF4zK_kB6ZBikYyW^a#34odEN+_u$>MLgse8Bgby} zk2#)fgSqj}yxgY6DEI6h|8E;X$1kC5RInLtmw&=Oo;(l#+?L0(=kw5Kra3+l;&D!h zJvebEgVN$r*tvnhJG-+`I%_WaI@h3V%5>y$zAJY-UHshs2hT*SqV^97D&HrCOU|j% zu1NyeDs4z@l-{u}Wu`Q2VkgViFQUWt_gS|gYiik6&hE%tL#3aUv0Gv{(EZZ2>_NG$ z)V-*QjsNXT#oeE<@fY3bw%PC4hw|I$w|76-Uq`mnt4{^cN!6X6)fPwPIA=QGCWj6V zTd1n43T}(qK>yuR#j`PXwEmkqj$K|!^){>H$~9Ir?7j;2KblV$FH^u~4O2QfNDAF5 zrc;$9A?%y0OSg}IVxd5lN^_m;@F$iv1h7ZH^ z#G3&+Y-JdWxAu#$yF9O;uIB^(%JS2wRqxBUxV{I|YaELe)U2?5#DLe7sgCOwweoC& zzp+|Xvzfs&EbBY&%jA7M&gw>9VN4B`*e}VAOzEExzDLAYM!8$v?3B0!?2jzsyHtq@GV?~o3l=HZGyMy~Ajh|WXYL*kM}6h^u}#+@>69{S zr$XULa|A1w@&L}xe89fQeh#Y)#gW(f8E$k<#W0h9(D!sP+FcYS+CH1`q=6&}Ro{b` zuX2pa0AG}7Qy{x%2P1P+iDYh%!0&66iA?-ybPrG>ZIb6uphSW2)h{6Bp1t|`ai|8e zL{%>l=ekLe=yNHUJus2@&*!+2&Z3-yEFE8RJ^W*CT&LpJ7`&dAj(Xi+VZ(4T=4-x# zRLOYMu%RY5l2f}vf6;0n7WewyRT0??yaFAdvwVr@Ab5Ya+%LM zN1CLlL1vdb)AQRV6B`G2`jaY=wXyIH=^o~PRLw%2k(nDz)janC|y$u2@Qd` z;^!@B9AAs452QnM`VT7mpw=WI~7yBtdyvzRZZCa(sSBaIZv9209)^xctz_Q<6O6apLDs)th^w}FlIl6D(OlvnF>c(1x?hfv!IvJG zcgc@D^*V+npN|u({4neYK0y|^UchPcCrN@=3YMjwAgi>vxzs0sNJ#Q=*GYepwWJzf z*B&L^1suEH?Jx;7?#6%K2Z*2PYdnzWMMfTf#ES0S#OKv_^eWp<@&w0FHr|QMk`tsK zqc)KwDgE%yP6P}64(q;-(aEQhOw`R~;(a9*- zWkzF1uH*M7iz)wm0Um;tG^o4+rItF-&$Uf>wbPNFdEA9-1l;JAcdt>b%7gZ(4dWF} zPYSdC;(CjHbh4~4-6!fzk9mvJK^Jd&Q&^HN_VA`%@zT_PiZ@+$R)*$J-bal&CvT#Y zC(U=0q+)OO(8oK(X^`V?TDwn(Uii9`CT#hQLpJWT>(U^GhC9(Tz2{h!u!%Z*wV;%m z1O1Rzh33?Tb~zN`k}gYXY?zG?zcbX@DHUUwnbiAb4Bm8^LZ42J#Bn!8dT;J=EP5zP zowx14kDbFf?r4Kyy^pYE@hp^(W%1cWSzIHTgypXvvyTi;prCIct9$D|TxEEXZ|A3r zN#k#LgEBwZ|H3kuk+356&?ZUP-X6fZtFHjNnrZBm_8{0G*uodhO9R|z%5OER0C%CS zWt?LKgt5J|3` z=!3jGF6UD85`33M5J`((xKtKS1o+*M+Y?4qj&?#qQz%)qr3IEog^-O;>mW)hn9P4z z4wW{6WSVawyy6`vzgOl!gq1JZ`Y#O{W*#Ju&d0*3$zJ4fOgNm^^dNZ$eIWX(3;FA^ z738uV$-XN~A+%;4IhHjOyi9C~NQeq3p0_4~ecXON$C5l7d%^HGEg&mLYM2ksrsU+R zBBoP)I*B#E$@KSY6Zg+KO#6@`@wj-KsnMHA{xGGC*T$dl+?l%rwD&;As%K26OBG1- zUo)D698=-rJLc=xQ=l2~jtT#{1!~0KFh4yxuD?kyW83+JiS6rPoG-0lzKPZ`PPHS& z*1M5OUL3@lD`zpEkA7yWgpwH5=SFxX`3$o(a07}=J;-dY3_y=RD;WjjXnbiqgQ+mM zinw$VGuOWWSG;fF9UQ4fIuOG1yxoEQQUW~llGm7M`Dbp0;tx#L*5Hp`6``}mium|j zmdc$HWnCs{Qm-v0Y_69P-LY{idui(cg|^nWVFZT3hM;ty!#k z#!hOtIFD6I@TPO_6|&v@BUGiTm`(cRPX}ZR*^iDVX~LA-ta(Hrh4CELU|k^f2)V{; zE1aZm>FMm~qvJHtIF(&H;TW~mN?|W8K18pTCb8P?p7eH1IxA(igC^|GVLL8vqfzgR z*rf~C(-(b}?6mS#)K#mAU3k-yV>WlPdGQPtJ@b@R-Z+!K2z<;AZPufmDXr|vy=pY= zQUmL{NuGAKm9dXrOri$m*{m}6{_L6_$D+$Wj9Yk=y}|V(Kb>FB9(Eo^-FRvCW9c9! zbS3kx4i2E;I+fxzlCRKD%#oK}-Hn2;Kk@1l+tK0dLT2{MI+RWhVr2VDFeK+Hqh^+i zpMKnDMlU7cIhk+FhOiJ^bxj^%)n-i3Hio{N)A04lm9R?d9sB71ZfFoY#C8aWgPKf# z@eHE`(7j{KtbLFJYVwr98|C1*LJ}T1wZg$>2GrGG0aNb`D-V8wv}?hj-7^kB8nF=c zLxi-QNC$gS2{II$3$7W`#FcZwH5`>A?KYKgZ&aQfSR_4(DA1j zrf9W;!H-;c-QNlG^RIyN-KStb^CB!T?t%ZpPr>7#J)rmaC`{ba15&*%Fkj*+UwpJVO2CN{$LOf?u!sok~7~>|izD++o%xB!7Uf`k93{cpTx%1JU_8 zL%VeDV+Ssz@~>KP+vz3Lrq8t z8+!Y-9{sjpF;(f)qfVmpC=_!Y4+kS^xPxQ6PSU1lY;|e+MMXL$rNeQ-Cea&5H0XA3 z0b1^(LRbA5!VUUzv@GBS&bTs>rfq6LHxogMhbpl9!4QhQxQ!dFx>07)6>N8^!q}o{ zyqbC)um0oa)|%6pYT}He97C$>;zF!ErGgg}G%>k8lTF|HojqG-!!HZC!RlSu&Sdt_ zWn1(FK7N3miE zPRb+YRTW^=euoVFYlM|A@=5-VPFSE+K(vfsfLLxm+3WBDoY&nUx?!UbJU5S=78fKF z&gGK!8KPvnslZv15=T!U`--y%!qjfkDS_O zM$!*WB_D3jBVMHnq|?!qc-9D#X^L}*?X4G}k}#8aHFGatP*^3jk~cLJ;qhR;b0Q+g?m=?f`dP}4*ARfKx(=iU2=0K zs6}hg)7PaS%#_Qm#C0)K6XwuNffz=sZ~;AaUWrNDw2W>t`ZsT`{u=rtMU?e>zlpZM zX*O}b8x7ph${Kp_p}9B_o68PRYB3EDo;ymPe^`nmy(g#+$1U5pE|_jBJA%Q_L+QHh zVVI#AL6O`XOx0wWQZt+%YDTp{j1{@#Mu>wBofj zid{6I*L(rx`n2d$ejgR6n}bA7IySe1fmEj9BJJBZgkN!@qmI98avf zFfT?+)on!MK_yTrpN;0aJa~FQ9HSSm z1>>V-tnqnoZf3G#U1~xhBq_A0sPY1U@;v64elkRw6*2k#88G3m7!0T9fa^jYgvj23 zS;_8D#xdB?A_7LX6oayDGE9i$L+s!!F#lT&P3tPaPooI#>}-J;uYCA7xfd?P-h!N) zA0YkD4VWP_0uNKJK*zv1Tx(4R83AG9nja71#^S^?@*M23mLySnq0q*1%p*r1cw4JP zT<>p%v@&(#Az%p`6Lg7-{uFrP$mM1o{xWwz%q6)Oiy|E6Z&pa}GwZ#s!>*th}A=JG!0xvz0=Vt-HvYc_tXXe-F7PWs7^a?ICZ^?!umv z9%PHd3DhcbCC=fI=uy0x6iZ&f_dgdQ+X}Nd$LM>A7Rkrn$M+$@xD@vfWB@*@N0~!`@Ivt^vSSNj8uK2vJr@Fj zrk`l{K83lgAWZitKI1K|l%RvZQ}}HM1qc*6tow z{S&8GpWnnfSua7%SN;_8iNmuMzxS@SCl;ZUK`TDf=OJ9h`95!NyP737c~-@aM|=Km@OoC!QM!zXTGP z(=Wrpevcr`D?0-h_soZ{_o5)<=VAEp`2y#JON3YPu^?^9?I9~JLF~7u@Fq9~QXGE4 zs-kqzD3Kugh1Wr8NR>4Hx(yz`4M=4Zg&}!U5)fVmhI<#0nz#l?;kb0K{X3vA#-1Dy zdk*J}Hxs4nuOaHJGdX-`5bjrPC*Lm*gJ;t&a?)f3)cJeKS*uZ)k?lnS!bad({64ZR z{~Nq?*++Wqzkv4~FCr@W0sN86VvD?jDm@RPN*}|!E;nLO@c^#%Y$I`dD?rh56Z!eF z0E+tTNzC2r@Vdf=^vp_zyQi0sUxr*q&Ci^eaUSV@5i|0irwm`O4}JA>C0L!#zm z18-jFaGnnyY>!bRk&~uEpo1d0KT8EJb6L%$Q!fOTEbkeOk=)oG$<)e<6e{d#U?HYm= zyXVnWpA#`)a6bKYJRg7Vx1gQN8*z8fGP<~}A2r{tqF*z|&}Gz~c5Ir&?V>hP`?<0s@0y7-DWO|$!tUY>K1np!x} zn2$c(E_6M;DBw$V8aGg0=25z4D(4Q+@uNnPYpFn`A5HrGAKh)uegD~-YSy%oEF+RVtVI$Ok6ex=i64}HtC6| z+n)_Yj-;7CmH+=2;!&n^q1hJBT znKgC);Eu{arblZcStu<4?{~|Slj?%t$T2XQ<_N>w*ZL&(t{4H@bj%LxfiJkd;B*OtL3^7^UsYOQ8WPg);+{$zY*m9+)pmfGlraZhsj~R znUFnnlb+tbk;TSyImiv<$iFqJ;$B#UTF@;JAKk{n8 z6gpQNBbQToa4q^Mu~7ujEcYcBv>8|(euQHW%!4c4KIBj69JoGsknH$36CUgDClZc^ zpyuXDlt2@fo$%oH8}cw};Yt>|i$UL)&7@({59Vf~J?9eXW%k*vAg?wwFson@Y3wax zOpQ#*KJTkc))hnYPa~euiO?XYea6)eJN#tpAcNK=e(4wn1*I||XbUN<- z0CkRCGWad}3Ewmp!K3BEq(jLa_V1A(zFr|P=dK*d zm>Um?cU8#J-`AkMM}uQ<7sKasI^>4*Jy4d{BbQV=V8s)CjyU`Rl4Lpl!-5a+RNs)i z+4l`(@(juHbz_`=VjB5VDM*S24ata!Fz2^5B)yd)1UF74CgNgb#aUfax>bz$xM-1~ z2co2KlPXEe6d@f}3Z&zS5V2Y+NzSJVl7e<&a-+&eeE9}fg`Yv& zza`eFNp!%E30e7gh<}fv@Ykp!VEV@cG-u{Y*SWGmW6l^;Ywmxxa;~FJy#K zXx{7yT{`)&eEC8!kI4e55N(JRPY1gtg7BdK5;XSLGh?Rb!PzK|sXZJ9Zx^m$JU<_S zLj})xj`^-opHpJi_`n*RwjALv%`*geBEvp(69Ln#9jw=aT4pRIm30>IU^<-|+5TW# z-loID?1XY*cGpZX-1aM(^_VJ)Z==4kqv?ux=)3{iM=K&*=zy|0vS{@z0BxN(Fpfn$ zmZ^&2a+8~A_G<#}F{{B33kC7?rf%$6BY~6Ha}))s&^0;$)eLs#9Ldx;t^KJNWECZ!iT436EB(|&QqrK{8+%{czP2U<{3+Elc0gDtF(4Cg)% z1K{%LWM)gvMfj(Fh_Uv%4JsF|Gf%_n;kwWhW@ly}xSbS(`99-dQ8*Qb^`!{QE(dK1 zbrK)w2{$(wk!+4P_1_JK$or%LqqLl8nifOJaQ_0@2*~ED? zo&5HlOCp0Z$idLLt7~peFoXxf0dar@e0XYD8~e=q>`O~8jAlq zB@w?HJT}1WA}JotX1_g%CT-fk+52T@$;z;)_)lhbji!AqcH8E3G|H;K;63BnHP6uL~n3r9^aQ(oa(d?lDl9by=42uP** zZIf|lP%7OQ_nGa}Or=Xbud~6sF4Ka_*=)RA3Ox~dvB)2i=<&ii%;gCQRAX)tv)wD6 zbKHqQgnkTlTV?{S3Q;uj?Rs#DI7N#-9D_I2q4bLXIe07(Nc*Kzpf3Ih)tr$Hi_N?! z&!rf2yWFW+UL{QKbEHnKjbQBHKwmj^Ktj<rV^1m+6D_Y@qoa@8Q_!Y`S8~ zFud_KqF%M5@W@`5k%R|9!k>jpWF--DMI~ZCy`b2#xV3c z*P#>qgrE7+X|8z4P5t~4cFP6iB>%W0%>1MT)zCeS1B5U~f4IFY?%qno7WBQJ%{Ml(O zuue>wH>g>|^`li8QQKnJ!F9nj6K{YyR54kDNx(btkI_961?OMuKt*8?gr2d2m(F{* zY`_k%eQpn5c87zrFqeyINdg58UC1!YgAeb-VDpYjxcak$*?FWL)Eh4{ISu_V_qZ7o zKj%BlPCm$6(_h?uZrA7zNm<8$m@UnSD*U(TLeqe@z`2H2A))QQMH z5&X{W46lDw!Lwl+1QMp>3V#h^8nO@@qBMv{z8xC5X^_fbcT{XpCzJhsG0j+=ydDn6 z!-gD-%P|%c7O9g*WoZ~ZU7h@K&c%b?>V)ayqw_~~;yI@pqpQ`)Kgnh+d8I~Ne4paL zDpj)oM<4!CS0S4+KVarDMe^e57nFDMjr=u^K<{#=9~2dvXM` zd_F;T;5Qr=?t$>Suei0K5!$YQ#TnB|;NZirIJQ3<($l`-VEiR8R35<`qcBJg|H0kI zJwSBq7qR44>5<#V5iG3w_ksKKhFW{^iPUt4S^g5g@G_a!nwPkF-UzeM<|W2@>OxLm zFFM4m0Lw2usIzuIOgh(%?uKU}Oz#PonN5RlSKCphu>c|*AL5quS{USRE+%Dkva_6|dIOAhw#> zl_XKm3ukU}_cAnn#fWlDlCu3;@S^-TG{0H}1s^|w$z5Nr3-A&qoQMX_xdIQly@p;4 z=jC-Og|cLX<>}4vx8o*oa#I+kS3zXSFl2v8gaKOtA~Z1uVh)OutCgq0U0H%04+w?Z zXQYXMcpyZ)mn9QIj>3?#Jo&48034*`$#=`WP&!MFOmFsp(yub4PkbjRRY()(wcA0d zPm0)=xdM1ek)<)tz&c5hbRj1gj*=qHw%g#_4r$^qv=!`1Dr9ZoKW6V9RZ{O>%kcZu$%!eU%qk@K_0tFHp?z1Kh74#FC_EU{ODU9p+8& z=fOD6O)Ld?a0D8EauSKgZoc~Xf+RJIedV48)*u0f# z$d;n3_uDX64oJ~gQ`L*BE=f}Q+lf6sPlA?aaJ%n06X}vzeN;zLDiN{;*S87L=RT(} zw)-FQzg|NX-YBk#s>UUXgQ#$$7dQWXj+0D&V?c8=^7c)l+s~F`)^}xEusR19`|HwX z5|8kbB(N)Xj9kr%VX@x}HkL z6+?ECJ#EjZgM$74QPcU)z;e$@`l@CKtfnucu?iE&*HH_a!1*|}=PslHTja^-Y(kaH zCzI(Mds^?B22uB$O9uqB$$VE6`qfICSl1iV>5f|5Of{YUjMpF*&x~lJg8L9S{c5I&GfFiTTiB_JHqfd;p}s z9cJGxjfa)xRqTwEe27sK!s4k-FqUV44$of0s+%@wd+ZNP%<#nX;bLUn{BR7elOa4N z9)AZZlltIHY&gc{$omU1>D&}DmRXGg|E7|{xox;%;dBz<@DlyE&msbrLwINMTyk>7 zUyS-^Mz$nH_Li0s?|t1WNh%d3k!Yxt z_Rv73GP1H|uOhOF6z_fAX^W(xQlum;S~P#{@q7MqoZ~phIgj_b@9X-0KOfHKxYB85 zO8njX`E<)a1@0^)luLT(H^vDlL8+Zw~#LU zs=yyS@uW3#6}j;oVQ-$wDQVzeD|LNJvr(e)()CX zpP5$*y*ClPSC)^Ay6n(aMS4_7Q=*_lzbaM8t?&G=dZ&(=z?CF66T zS7n}f*?c^te$lVp^Th!whZ{31frTX6l+SD)uZEG)y{yb^H;i97 z6ctto&t;r79v_|xk?-cCMA{LM>fMAVKb(Nu6C?1L`dJW&rTF&7H3(RD1T(g^L392I z;jHr<^7ZO)pv4EsdwCV79r_Kw=H0`J6VlXA?J4@WDbm8KKCHYxm`Z>8fxluk=$3bq zeBLl!8rCew1AGJ@K(h*0v^1x(zt#EkjiYF!hc-`68A}_+8S$jNakNLjCds2xX>ZKrWNK9;)VP3J3GM$x@6lh2nKL6?1* z$<=2X)AYB(TsTsf8gm(C!1Rel=RDiYp}R#W*|gxxWwck=O=o`lawZ(YgYbhpGFnnr}iF*HEx$jCnVw-Qs4QL_x zP;bIZw|pT>7n$>=HAc{&YQf(J&w*)EM)F$IoiO0lNPcKiB9xsT$zLWEK~S>=UtDko zjunjHOG9tNy;o-3@!LyiI$**_4EYJ`vkm#i^)hsTj~-v^qC`XPYH`cP!Svm?VSM|O zp|tmb8lUx7lP;gB!o8ZcX@-+LcU-JTpS+dgZz2t7knV2`7-2-W$Gyih8;z;jwC9*@ zZ$dxCx8p=V6MAXW4UDNXrWHPy@Nk6SX8&A^HoFbzL%(vot*T3t?DKK9>2UhIBMB$R z3ho$jC`unup#$7kqECP)pNgkf zmV-pq22s=IWcWS6mmGP$8NBXZA-bHx`)mcsbCrU!L*w9LOB&hj>JA|VaU$yl+ktf& zu%xyquqkb1`&b%`IcFQ8 z_CS7ulD8Meunhg?)CiQSY!IBY>VJrH>UTiw{!l)h#LIZ z$rm*lP=gaY`PFN>w8wWlf3KxQ$+|6k)$*bA&CPXOIYW3?WUl1(M)K5uus81)7)9Xa z%AZXC4=%5n&a%^`UY$Su?<82L%5o?BVi?-+ z1(jQ~q3^4}j_^wYhlG0k_V)mUMpfX59sY29PAZP5SqQxo_uykq3LE#i;K}{MuB}WL z*Z+Az#z@~|w$5p!xZRnl_Q(+W{H@I+r#H0)N8^am5PPPuM;`iIPcbiRS2(yu5;Jeb z!D%`g=d3sd>k2$j{?r4=*58MDWB!4j{vjN)R*kMOIEEExP3ScThT*;<>h9Z!Gva4Z zduYY{jUMzrZJ~R<#+S}s)`QcIZlPZfzQu9ZcTruxe!SunN>BQ~M~B!5+H$QQCwj*S z@4t6K-z1J|TfV~Pfk{;B%`==m@euWwcr5TT(rN0{cKkIvi*C!ggEDftbcM$a>`u(5 z`n^{%f*ql{#tk^rwUBNabp_pL9i;}%^|+?uC>`T+1^c!ir4OtdQE6Ktb#Z7y)hkD6 z&Dm?Xm*-Qv>}KJ9n@fK`Z5F!yS#-MK+i<#(PNU7Qp?>NiI%QEK8VpXN(Po#>dTAUr zDd#vLE}Cw8c@n?I9ia109mD8ZA+$U=8(R(sQeWFRywS6XwqMzetG}(JfpW_*r(+@Q zygn5Vo6n|O7Mfy+*JRq6E|2rSTGD$GT}=75A$^u`g8kh(gg$QxV>`#n(5U0KEaCe* zaMu1I{=VTB{MC;aS8uHXDJ9QZ)A31gNPCK?Z`2AHbN+=$^1VKg1NNlrDkr_NsYE6E zp2+0NeezFD6ZvCXWoOl+&Vtaq#5XKf!l9%30CMe zaF=cl-o;J)>yjF{xaK@8i(DsD*cBm4k_23(uyd@bS|v z{;aN?N&J_I7KYh2qd8a}5ra-l2@1Dxvli9ga4lWU5t~R8L44+laU%xm+zHh1E4coQI1pQ+E%H*<5-P(M3}qMUBe{G?9$Pql4QUIC(}Y?d9C1-~7OqTOi2+MI(Rq6qs@(g{J`763al-jz z>(Vm3o@z>bLN8$a@Q`<+rqiy=k5uKO8olo(h~QbZlK|euo2JvV1WO zKIp*5bgrgqN9}p`z^!!W;K_Vd-!3|{mvE`(Py;<9sa%UX9pEE~nq!CSncB>F+op9ROT1NPjJ@jpZH2BN-)2+|PgGS|Q zTJT~CT>9lj7flHR!?!N9a$zbsMNFluhZI5M6>Iuvay9I0GpCK+XFlhT_ML&{Rj?rau{-_Q*b#5Igk;ZAbmRul!6{Y!kQ&O zAGU+rpAj(VK`XG0?}%Go3!I!CO$>5x!0Rb_q7R#!!E#rJ*hTQe)aNI%q{K$Z*zt_{ z9B731sv3CZN)yPwq}XMB1HjN5?;mV|%X4?3?Ss3JAuy5dI<|q6bv9o3{s17t4zuJg&)h-&*=YW(XDXabvEVwsqoJ_Ll<%(@2A^LT@}Hw5 zK>m#`U;gC=Ilpr_cMUp3(lUkfZqrEeG-nXMVKYoL%3Ohu+j>hp_lXqesR2wS>?e+{ zyu|LE?!)y$j!t23H*RP!!PCd?3hv}-sAYHs|1({Is!wY0U}i8{`xar~+JiW{Jq4ey zOGRVJ5VVNQ#pRzp(X6u&3to-EcEu8O8z6~Grj+64r6sJgs0?LKsIqUDN^##mT~VUY zy9rD1CI_mEut=|o%#Rx+cuJYe`7>NjSB!lr;CHL-NoxQlTFVuf2jv^^7?%KW`SPKB^5N z|I|t6f(|mfpi#6TBZy>ad5cPwwurVo-({0DL55ik@~EAXTg)!W-Klj-k--?Jj@nlp zw&=CrwYKEpc5G-kY;!U)15GON=RZbMlt;umF*SwgY zmpH+qr#th-CFQJb!6d%!cnSNfIht3u6fuR}+5$K7C|fj6f#>W!$~uRAKu7U0Hf>Zh zHtSUi9;-q;ee(=kacCpWn&f>A#pEJwGP?B@w30w6- z1qQ!pXG!~)LY3e-Erbl{l03(D7F-1Ft`Zhm`5M^TL{=*$PY0E4WOZkSJw~xDJH6hL z+Kg6azwg-7fiic+a<^USSieK!+%zAW6gXKN{ct0l+xM+D(QX&L+*DLMHXw`+kjSfb ze;P%rGQZbqzKatw4&LIl%48~+Tq(XVES-*Q7kH+Y+0=QKh()O93x4yBOk5}IDch4+ z$h#tXZEDsg3JUMCp9`I8X(X;g zmr6$!|6mtF6KSbpFT2+hL&tfyvwJ?c_r*loYXJ z9rI{rNG@~AoI)jC(plrovGkWh0#ozVp~2SS%*aQ9R#vQK>U%zb?k7ife)tVApEis= z2r31;{intLeG#C(=zQ(Z&qCgR@hFj+wInQecqnrI7ep599ZMnxl+@;a*-BpPB{6Q8 zOR|*|FxlubDf%}Dn})n4uRNphLZ`IP>z8q$Nl(|oskf;WgWjd{Qwv@uII;Bg$bOK4gAKe5V$}#aK*B{a3x_qzp;G} zh{vwuHj{%OZS)%Mr?~@`N3Y^h5nG{c$_ic^vk4k@F6GChH$bL%5to=I@aSz9@WUpn zA>)rT|NCq?m|ULDYm}CNm$@C66!xK~=Zm=H_c^exZ4B?&ZwG^OO}P7!v4ZbSi%XYk z!=^%2zNTFUuC>eX*NZ#I&nf?5|M)@@AJK*5OPz`QpR4$#Dov!m>lFGLt`G-Z$VYQ8 zU|GiTxO`gR%9wAb%qQ4~WNsU11E0KFxsLSL1NF<`TH`HvykXZ-vl@iKy};1pE#p zp~9DFu+~V%UY-bH+R5m$Bn{f~lCXDbHVm#7Jcl3i;I&gC4hug5T|!zLdO6+edZWEKCu?ZHkLq{f)_e1Dus0)oN$2f z{ryF@C>wDMCMk~=xMxMM{+ce5lA~bxNd>yRBxYIX@kt50OxZ$`Jo%CGDbML`Ni|0X6^FOQ%aRs*zO1$}|8*Hf`&Kq`lz{e40 ze8)OZFg`q4wECi4H-2!SXku}a9u2UbH+?`V7|xB<5uoR0s-J_E!1%kb*vA7JAah@VDCBI-Y=67Ra$(He3RbLLH_ ze-uyR*m-m4$1Nw&*xQw^axTRiIqtOb>k)J;@uW^yGVtPjFZ!W24nxm-QN_U_*r@A8 zcNVO|PoAEXSFrcYrW!w! zc5Vz4`!92(zQ@!>Wq0kVO2t=^e#<0kdT$DO?GE%!dLT&>X4@K7he(9!7&=nDlzcg0 zM)&qIvd>$e-qCI(n}RhcJ$#=O8V#b0g^Q~EzJZj!`AL=z`US(!4FucZSI~HM5M%}4 z2j3xDAZ2_Bn(B;T$KP`3**OAQ%~N5^hEbrWxErLGje>?qXSkX_0@BP4Aw9zgoUil| z#aEi}#V?CUm?{I?EKkBiB|z)u?b>N}&&d`|5p%PyC*Jpp*~8(5#PDZ7YpM$+tAxC? z_x%~9O4Sw(9h6B<(;|FxzE%{yHV|#|okd%^4`PnE&1S)+EHstzv$?jd6kj|aVxuyI zVXS0;4+V=2DnYnRAVQIR)RDv`nk zYJ7doXp(9_0EjgnynxB}bPHN;Wc+lxbqEu~Der(}B(b5V7t{t)8 z+DlGgPR$4tw>WBWowEw;BvIr0(mmPRXG;9Z-b0M}%JQ-kXW7>30o-!S3zm0K$aMJ0 z;H)BG;lB}~Tucmwubaz$aRjQ)#Pp*btV$6tdmNyxaH$VcI< zhtc>eBpFk(HsjK+93eL{2e+0L3*J(5ykJ{}mUE>s@PvSRZok4_?Y)GaJHl9|(KQ^M zKY&?D-o{S1=@WV`-p7~xhsgL-2dbBDB@LYd@7KJFBxOIs-)o+eiSs%zOHmOvwBJMN zSH@t|d<)}_O@j67uA=2-cd-3@9#{X`0Jl%o;#{pz(3Crl&0k~TRCxjJJdzGMSs9pW zaRhAC6Hr0A6lBImpi6Tlv?%Sy(!?5Ak+uPc>v2#!>VsCpgsg0?2L}0Ef{U(mamS=a z_%q502Q9h|PwJ*(I2G6+e{3;2Q0Vl-1gvy?2+>IvIALxV+|Jj-B}bov<5N|fdgwW< zN&U+vYrcT_?hn`nw-@mARuu~?c@CqNM6d{(XRv-MVQ)u11-H;!;xpU2A?j9K?VB}E zz;8^7$ich|F77uc;r5*{Kr5VVb?X4r?X@KM;` zgnpk13;M-S8{`W`qT{e&@_x8}<_IiZFR+lmr-JRkeE9Px8dATW0QP1##JipcN7>cz zSJVQ&<6NP}ryG8boCF)5eSm{w%)wbhg1!zM4DwF~(g=aMYj<3U7Khvf+VxG}U3X2;w{ow+^mBJVLyaD5C-yWZfUEq5W?;u~&T)BvZ} z4&dDfg#GxofxK$aQK+m@;4R6C&}6B?w+eaZb(d6m@sqirt*XXHIGTZ{iy9BJ{6+ds z59ZtEA1CP&s=QZjCb=A=%oXdli(tM}mA~P>P+9C&{(#4~4Z$2CqqK9F4qhD4jceMBux)J{K2x#4VfU_M`V@g1 zG~*)fzbeA?w9|OVata=BE5_vSGx1+kn$Qz<#Yp7{jDP5fzr<^>Q}}1xch3Q@nXE+J z7A+id(HHHco-*wA#TSy%EbPA(C|6V^j@`RVV2C$~JZrphq+1#}d1E13z5PQx_b$MU zw>D4$u6V?43uL-GqxpqYXr1STepS`b;NXaBX5NA&d+hPL=Nnjqld!;8ieC1lc=kV4 z`rmlKw}M+$N;nt3*gcwRPM?CPVM~9j%*3P}GbvMc!va@#`uzEF)Z4S1ek|FBQ%g6{ z^50>&`l^s0b&SWHihcCK#SEPGHH_}~S%3+(5%f!R1vX|x(V0rMxQRv6?mg%6-WXxu z@u(5k{EMb%t#6^4;4QS!xrYbUqiE>8cJx^nLH)LO;AQP_DyPDdZ7*P2k)Yh z;=5??;V*QEZ{Xj-Yw6Y2E4Zj=DIL4#4E8y@QB~tgys&fzwJkl2eM4>OM7u-`oIQrV zv)hGFtPN;Drz?&XT<$ur%}}*kU=-~5$|Qfjhlm&XEUVxiR4ZyQ`x*|9eUm19az6}n z+~vu>EfG+mw4dycSp;>HPm>GgBS2UBDH$;G6Dd0*4d2Yu$fVd|;P?BfsHNHzUe+gx z{j?`QP(%p(p==MQe?Md^Oj)Nq{l*BgE=nAX<@wQ#6HiOCp-wwZ8d*#w9K0rEBeCDVR z|I*(j{xRR1|2Uw<%1*m;pYM+B=%2a#eeFgTGi(;$dohv)zZIN~y@yzX%Ot)^s*uGv z3wwTcl0`iq!~50Fvf}rqyho{l{c+OeV@_UY=RObNGwoVgx|st1RQ#CD-t`avoq5F! ztX`wSg-`7Ftvh(n?=SmX#&JxbG`_ob1Ra*hBlU^G^vf!^D$5%O&sWDdYcpI{p@mIB zFPX|KLo6={VYcZO7!njH_Anifvz0%I2G>x5p_W9NV;m5g9+9Srv+>|kfj_o!KGyq< zhPQ5u@KxCi=qg!?eqKvKB6F_XKACyex9F>4h{MAbk(|!OAa`JpAz=gd8|R9wqz+#|uct%pO3s zx|)dR4=H-&*Bx?4cOacR@E%!YB1dCpwvau2!e{-gMsm(ck-Dv}Bhg+;RPS*Wxw1}~ z%9s?B6#*)Aab_;rUOtFE+?zo*E*VUVeLM~2gTBa_LLXBspsK7|b1G?Xscl1fh7 zsL^dtvWR=A3O)ItfM^JFniT0u5?UccBL`k2r}8AITlamkYSLHmd;X40ocjhQ#7IHu zur4_1qXy}(@4(Y-#?U>!5k~ddz@#&0AXV21EXsxb;{h*N>{1Lrd^bR{w$RBA4Te{} zN#HXi5;WID!hhT2LDeV#BqCD5LUswPEXo0gipfwbRS2&0bijL33DoqwC*Peb;EG>9 z3D2nn3lk;cal0Do7HEm(%W7b*tq05Q5JS?VbFAqG3ir%`===K&EYli`=XK9P>8Obkx!ybRsRX{Z)l53lbZ#$O8cQ1qh&SL9!Wwya8|0tachK@Db? z)IgS>kmr`FfQQ%XguLKk*fH<|{;fy`2gS=+TN4I;ZVi}azX}?LU&GB8r@(@7H?icC z2CO%|gKk!jh@AXA99|MaG79daXI7-h^3Z+s*d@VYq+9VydI_5@--6d~$YRUj>zKFD z7SqkHVqMe*obFkVcFW>X)#@T%dL-PdZk)qeuMr1tt-~Gc270$6hHZa>IbF4wZt_vc zQJun(of16mQ6>HjmgDi&<>+rWh}Zur##U74k1PxDj^1#7bxJPIHqznd2QqMLn=XH} zJq4Alh0dH^Jla3k;l<@qxYJ6DSMv~@HF6kVV&;$i0v~cihYxzIEAY?X=VD`?Bwt@V z86O9H!JP@C@JsPCp*ubt-45KwSmAG3+IJ2gOn$@Mt1B>E==>>pXQM-6GFzA$gT{wN z>{Q-%VL!e>yz=crJa{Z$)Hi+-)@H3Ei)I<)Z1;VyAxtFNZRlfZ6q#D`LNt@faH(b76dGMz5kvHvDy&+ifKiRprK+Lom1 zMjwdguOO2>e?ir}aI#{n6us`0OyVTu=nKM&wmEdP8mQ0_L&gTyPsfpQ=U9h z`zW{{dqhjNz68y$*G0Uu9eRAOiXJR#f*IxQqVH$LFl5_%QS_gq(5NU&#_vmlz#|&O z?K?lew|2WH{y|sE;8uRbzFS)J?WCXgCivVkgIxa z==E9(ZpJ^t@fEV*BrmW?E#)C<$7{@cq5wZve#Fw%O3Q_)HE#9I0QS97=UOYwU~1Sfe$H?V7_8Ue z`V}_dTByN4so6vH$6;K1eo2uP8fLGw&Pcoa9HkGk6W_Cprz*o4xbeUR+BQYx<3?l8STUN z)KDl3a>lDqL%?g8HbySq5AqZ4F~itBu>8+jR<9TU5lu713Spb!k=9Sq*NRneVO}EX zd$b6yjqD&@yPV;5rV8ABFLX7f#=?|pOW4^v8-i}@!GaZjQ0}h`508g{ckNelxjP=r z=iDLHzq29YdKrm3CFCC~_K?jTr(y6012RGP0(>etD4OYh4V)h|)vj*83(8aa#B*K> zIqgsn*4ZF%{+DO7WBcDg&eJCLbioH$A^wl~Nq+^2H-m6O*f02!Zj7tCr>kw^Fp@{16PV9zYW%R^n-i07}37qfQ0{bhZuvPmSNZyyj;%yhfFiQoq_SFK*8;U2VmBOF`U7_of z1v1kbg-pi@;leK4!3EbnQ-DXA3ou!}jZCue!lJ3! zB;@B(to}QL@z<*{DydccFJl!xzTwJVv@OSRJ$Yb zahDmG%)_u>k|?J+73F?u;mjrD&^C1(PAJvI8ABcMRgeN|9P_~A@B7$Wnbl~U*2GML zx8bD3BDNrJAEwL=XCrMQ5Y(KQ&c0Z5-=WBgmZsp7t%t>m;w=1oGrU&Cxd7R0cafq` z8O}-jC9*26#>Y)F$?x+V=O-K_d+uC9yE)aQ`PemF@7hjQzrT$MdcVp3mF=kYZxB2e zvRmH%`rwiG6!Tq2gZrl!cxkTFOx|JNgGrDr?CDp2vjN+n ze(cyV5_}f*W7IKiXn;QaC8q%SZ{Ogtws)j6r3amlT_&H$cjK!2hlt;YcC?b8O+qdR zJ(T(`(fX=O_|)~3&1n4^)c6!8zS~kP@OXzZx2g=Zidf2yX2;-9pLnLVK-i1?DrJYf zR-%c)c{bN+F1`u9#l8kk!Q;O>S*D8(#%I1_LyRmj`^HDs8$Sj!F8pA{D&ufn-#=zk zB|>w7y(~M~9<^)aFe!C5?vYVJSMb0o$!Zw+eij<+?};+FqZQMG3^ zwzVr@Z|O2T{96)b^Iefde`F;?CgDI~5AQh12s?s>S$c&uVt*Fv&1`1FKKZkCqhr{A zl7v0$RAE1Bq*+@_eyy8BwfJt{DN#q)T=D7+w&c_9;@ZT5NV36PY#m)vPM&0buz6g4 zjdT{w5-Hm~BOAIyL<={4BR^eIL@SR;!;Rh9BFBY_z#&IuYCag|>?#mt{2dAdMwN-` z`iFymCW>;rbz$xBTO#de2Jpn_t!TqL6Bw{@AUQSN0{lXC$l2Fp!C6^Ee%-SHZ9_LQ z(nffpiMEsL8BXx~_(3u#*&X@}a>+KI<&e=`MY{KH0M9#(>6+`F*{-dRh) z?HM89AFK*RsbMhmp#dC{jevj?V^M~6tIS`{41ow>dz-s3{Xn2wf4U@xQ-QH}lUw8oOdeb0X;QNWj zB*MG$D7f|~65dXWh5~1?RbUsc;DqLAZywswT48B{LP z6n}Ib49Pyr#cyQ4l5)8$aY#TTIdiO0+`B)G=$3pJ9~?W2*!XBLm7#Y;H60V!>K_Aa z)>gT(&fH4zNtXb&G|q~t?TKgC%EFmxY608wzJgikFt%4<47n!WVo`TKva*^U<~nR3 zhM)b%()v{~WStT=Bn(H*at-VsWPq>y4DgYs35Go}!vzP;utIM%UQRW`R?G3o!4b(z(E zPQeKuZ?bl)ESytypRL$_82!JuG2a8iT)DTErD|88?M5vdm)I{>3Xf;^Ge3&k zr+BbEe}9SFdNtYQ99h;)uZV{!sj|>f)5K4+hcKt5{WZf~RM?Oo|7@JHC0Jf-f@s&@ zd*XiYG$RD*hR|;U7wU9}#5I!r`USSKGLSg0B=j>L?ZpeK0m#Ovo zL#(V4M%%3w_Dvc%yml$f=`%#lA~%TtZxmJu`}7CR*4W``3y^ILwIrV`sUE39>ed{2Oh3?pDbC`H9#u0ZPi+`-~#?3#X z*!LPwwD;*?Rv+DP`mvn*-IH7zO{#0I4kfUW15)iVLfFf3nq1sAitS#d!*@P8BA)YGpJ(dC+C+Xa;)(RF===y%uAZ`#xZgG7 z#sc%}(pPi-Z(2LizdC}4Je7vKt`?+|XEOMgXpA#P zoP(#6zOt7VmqC1^m_0CVgog0Z%<6Cx?2=qsdsV3!4%|>9VOq^X*CdM+)(dyg1Fy&j z#YXsdLK~!OE`g=hG=N`qP$97aioI)L*+k*lA5jU{B64AcdI{L?tAal>kHGFDmmp9& z8+IAA!m>eWFtPYK7&|7zYPru)b07g^UP#b!3h_Wb%ToW=SWw!nLX#T~f{)O}ZN4S= zfMm4jQ?qC&sMDkR84=)7Xhfrrgu>CsrgVW*5S(8*f}T9H9&Wgfq^B&sVfW`z^j^nI z7_@W@ZB?>{jDuro;6y$6vDcE8r3?g{E#v6yKaa_;8RO}mDODu(>v&r16i#+|T2V{u ziR7S)6}^-AUF3In9Bq4-C3<#oEbaX>UR0GnidM96o3T#jbdUT%o6Sl_G~ic5&6>a3 z)G5BP_SN8_)XreK*q}j~4$vzARvr!5?C~w=(R^`0LqzkIJdfq#{A#@UtS@t76Yl~9n-s8DOXFL`70Rz03 z;MO1S@xk}?DAC%7Qo*~>BiCvop|~}B1+7^hdO&xG5>e7z(mW$ zIjWb1XEFze%szwO&3Wj1?ldmjd<4r}E3t9bQOvY2$Iq$9aFAgMF7YqN@!}#Jb*mB^ zA`8*+^=VZ5br>I1alB!ehn^l6&|To~osPSL=XVIML(w&yAd!S>#Wye~AVxS3+`{Xw zq3GXp3(Kc&#!XSTP-}??9=?48wGRSr32Vk!u_hX(3%gIHes*5s3NGDR#y&b;#2@?S zu*F4nXfrKMJl;@@PHp2vn&OjqLQjqS8C8LM$XeogwFrN2N+VtNd8je4lJpy=s z2mQ&>}w6SOQ^!G5MKfsuzyS&hga7N@-wugVXD z>1wfJnc7&vqx`vc-i||Hci73g*fa~Kg?zK|3(AG;U2P zCj36~Pc--CAy{ucoXi&P^gpRJnWzv2_5(dg+PHo2AZ8!wJ-HDgd$P%Pu{X%KoF&2D zvtX#~b5j1Cg2dB-@U43^gsJJl0ViW<&ar{0-6FZ(w_qw+X?=L=Tlh2ALA>1c6|72X5+5jd4vvq8 zF+-on@XU8QySwZ@=+mvNIQBZUtvblwJ6(j&DY-0Kss?WKpJdms9D_lQjcm1kCTP}o zvWthJA@9u>c2!?+8oLb?cCyZ}B2g8895sa%9>eik%Xeb2OdsCX8FQURy0o?`K%Yr{-Qj(+8g81RX5nSXui z1bevPB)XL)v1Y+3HfZ1~R?z+sHxD*pKQ{N{(ey@fs^AcN8#qvW$4ri&3zQMv-a3eP zbvBB2{T|B44lpH>wc5Ny-oBI6qHpATyFi^M}j2$o!R- zeEaRMWCxDtXQXA}^x_HJtaLEwEwbhxPYMQ_dTV|>%n-85tof1erf_DaHTPU-25ko> za8bSBowv2(j;D2CbnG}@&@lw`g2!@?U^z%p7|m}l`a!%GTJTjdPsnx;Gd?Jwo@oCt z;(rg865^!K#|%v*Lk|kQ(hr-7M4JZR=;A=i2CMTFFD+uCr^;i0_lW8=mAJ+9G||la zvi$pNSyB2|Nsb;FHRlU|VxN(@SoLWi-s;X4+ZH^*j+`#>8=KqsTsT`!Tz&y($XPPm zNheT4&zULdXXCX`YZxny#O(+7Fz<%d7~mGpIyTs$?xF}*)1ZlmFNClK_?D?8tYs_8 zO4y9^l0;R}ZYt`_qBDl^}5TE_zPe@$Wicy8hgJT=aAaoxRW*WmOhZ<%XHKqJA!&Cgq6p znrF~G3#Velm&w#>jXm1g3T$d&K4n>FL4z_Ju+mD8231W%`_jR5_iRTjpCC=Q3Ox*+ z({G`+$R4GuZo>N`wx}Og3G;odaI8fFbd9yZ#x5_oRIiWw)(-`Thr)Sy=V7umQ4PP2 zP!2B&;eMXQIi1qb#}ys;z-^Tz68)YwvVurkFj6Phr(U<~&3 z^rF*1f;Y>hxJ#Qow#^yBn}^TFnP|ihjb4CD?vLkPW0v5l)ApQfT!lXZ=J6PXjo9;R zDQ|b!hQ{wU@Wu84`1p4ax0)A(l4)W5p8YPoY81`YjCWy`Q9S>#pXq$Ln#`|^a`U?9fTALip;@5C0>0-i3r1CMqW@G5D4eD|k- zr^*O<+dT#R?1t6&V8sz`*}W8V3-bB6lkTWvlFNrh&ql3JnLK*89g6>?^1`K-=(sG2 z_wUw4KmAy~Bwh|rSVVA()B^vA06wSj6d;ergGt3C#vn)jok=XB8Oxh=TR7lWSN zX|(;a1ukq##Y5Xep{_l zbm>cQxus5X&%cC%u|sLZ^Oq27Gn5*Cc?la~C>`_lC5-hFz8CtrjWvQV>hnwRpE-<5 zeS8UjH8g1X{+Dn|L6a`Ecmb;;ge=fvA@dZkO~*-f!(}5q`sZ~g;A}%0aP0w{?=zv_ zm$$;Ylo3?6{RW&HIGWmyXn;qOmICwUEF79Tp31(chD}aZR7qejp4YOXeakZie)Tx& zZXE+Jr;Vlcr~H8)9Z8=D%>!2}Gdj3_G?aZapbFdMpA`vqwD+KvUBt>gAH&n+es*fFz(?%U!b(d9UnD1E+&6(Y zeR3(*2z%VJTfum-IvBiF{?8+H6`;eU$GJ1pn#jpN$ddnoN)ic-(Hk5MU+ zk&q;N6EeQ`h=w%nLMcf}l36|HJ{lscg(ND9QbveKR`mP){_48?@p!JT>(e=(`+mP) zuWb@JnDu@zcy21dX{iGs&Q7?S9j_qkwpU@)mP4dxZ9UeGvLQEnnz1L}Ow|6T9XHKE zagu5$F5R$_HBbG7ddo{$RZ+XWdCm7B}E?yIkzu{|L=18D9T=7e_|l#yQ5tSbpdcw$HzUf2Cev*%`rut@0K% zU5?@Y)7^M*bqv;Q{e$jnHsJ_QNq*o{AX-Mta(`hiKX9f3-_~Y~i-VPUa;h|rh*agX z+8?v;v()%^&s3K5K-jUq_GL4u3NJWUDL#Hnk-s~v?lNuFKz@2-jp)WmY5r}GH;Ekk z4^^TM5T#9D@kd%dQTo+^u2HqbR90Yie|$^!tgXTiyL-r)yb{!S@RNkbUdCxny=2?w z4D7!2nG~Ejibw9gCTC)!P|Dy5dH-xJ?icQ@=}G>Wo^pY7`~o~PKam(-Fh;T3W^#6@ z9Qw?4BPUwrds?CcjdlGEdHkTLsts11U`wBygF0Q-fHz z;9RK^?(%9IHK=AaV_LE5)GwluUFuP#$3lNHhkMF&&`bq1=~bY0I=bk;P>z-cnxTZY z6ipgqk9CoKkT=6w$c1%7=PH81J{|BAM&SJ)&%hl=V10cB#Ga=(M#wCH89}q43y?L& z8TDLGLS(Ex)?SH&q0(m9vGG5crlf~@oEQ4*6=Kfg+5FX=5p`Z>jmbnijOTZb;m8y>bd|lvUMR5=fZKU z#U3)R?-&l9ewt)A=i&gfVp8Z_g1Kpri0k7T+%~I)>@jLa=Y8!YV(tfA9Nk9dy#9$k ze+1uswIuJXyGMQ>AIPscT_KOIDD&xYiDcn84ZgTPg#4YV!@DmIC)4@{ajQRHMbAeV za____(buUa{OOWhS4TH>%H z)`Vev`^YO|Bah)+_upmlJw*{8{pgC=7|bK^!q_5+C(_O`)#*WL|amu8WR%5_is47TpY( z$o*uFi+1*n=i+w*$i%v_{Ijh$`F7WXkF7``C09oBYZ0X+;g~CreEXfu-r~rU1`4~6 z@m5^p34vL@hWv}$Ojwqt$@Mz_gA5mWPLlRP%alG0AAAI|tUK^_Kq_3Ts>b%tEckLi zA9u~m1Dn=lob%}#Z2WIGx(`ICQSd=C&tlL@RKsJ5H{g%fRpyp@6SB8TG4o@$AaP%T z$a(QC@OyNEXdNhn-)#e6%7+rLl6L`1vCsk0Sq4iR1b>2e9E6O%Ch(s!;Dgmg2x(-X zSaA+I)oS1@IRgtMT4Bk8RCx3K8@PN-0{x$obo}K5kaA6tvd(?*NluHZ)$M}Ee+;O$ z_G4}y8$?dZSK@v!r@6J?u3@XQpbf$;w8ui!?{wP-?lu$RF3l!Oi~AKEma zjVR|$qGyUqNt@jidbBKsTuTx>z)`_ug4|TPAi;z@Tjxi|>N8PLyDyc^EOYf-If>pK zqbrUa??Y{@O2o@IjHR8aYHX&A2W@s4!SqIrqT~62N7i?iU@1Y5 zrpuvJPY+xy(81WFZ(%{IHEQQI!s>jAL^ICvPJ4)kR&Uc_U_okVsfGYV5(JHR9!HxPr5 zB%;ONzie{I3EcJi4J)0LigyOqu*|3F!r!pVZ2!Pa^uKqI?Fu}LE4M6Q#+lhDf8B&> z+{wmjy9)7=*t0l8!&yx1GcoR2nah>Tbi8LXPW0cx6g(MsR%Gj%h)Or>MTLs{am=D0 zB6sa5ye%O|wn*&2?S{%^_Nicu)lnusIV9(d4Efpk3);g>&B z#Nzc(lx+JZs_(bMVgEIY4n4O+?gCv}AVW_!QiIE{8SUnuLx^#q7nF@i?ZVj3sA#VYJ3QmgMb$A0sN6chx8i zc~Hre-%`}Od6#{3Bj}KRlbL-Vj^^P-Y~#YAc%(m{JvFt(sf`!eC~Z?5J~WpZ8|k8s zRW7?FrHDW5FEZCZzgds{6=s>)%vwKQW6S^DU=tS=vW;G6SY1H@iza)Sbl+7rW8-9Y z{M;qxv`dk-?a5`Dm-magPB#0c!SZVrGTHUn@uFvH>FmEEHR8B8h3)#ZfbhIyEPa16 zd2!+pi|)BizRSn35W8;j>*zLiKvxA+as%1w1!ka)PVBs!E6mT5VeRk6L7{1m_+EV= ztS*!iml&-O?)>{)+wW`w^S}tvW`i(TRM#R>zquEhRR)vPnKAIUcs$vY8wWav{v-N} z<3VQQesb?%90VUoC;1a%z@h6387{vUK5e^6cFXR9*QaaAJkK={?cGMk83w_BhCRf4 z@>r-;l!isa93jJA1$d|~%=xYdCNTrRW1|IRNk1m!i4#;G61bF_!`8{ zuVwlHC7?6s2eatD3oGiB@q^t%c&}xQa>Jhr{wD_v6EZW`hf%cs_7dh-jKTQ>+o1Z` zI6T$g3K#APnHZf{a4c^eF8T5tWCFc#@}7FwtLcuL=GTBx&`5O1E{Ce$A~bk{u*`Tk zzA?B6vHuN2>CdNO=0OLPUXlpoJneB(Pc-CBvBl@UTVY3t4Ze9XAHEg}-KdOl;8bXf z+M^ud@gqCoU0Vyj$J=9B**9{;U2iXGDP&`3K&ye~Wl{eHNJJ&dw&hDv+E<4ft-?Ecr)D)J=O z?~fMsSe?Kz&DEk2|B|r4O^#H^B;kH(D>7I&36HPwBxAyo@T}t;GPySi2c@hdl~0q< z^Y9+BIW-YQdQs$t&JlDxwU1o=wIB0?qe!`|;QE{rL7X;*;m=p0}}mf!eI_Z zd2A_nkiB(K!f~@x$>E7T?C$qmB6asMlL+Eu*jKc*>*Yy^ki0kc!0)W+GcVa@>3eQPzyI=GNc?mMCI&Pw7HyBB(zVkHrcFPG3i8IhHI1Fce&VmC9>hR?KIrvqr1Ku|-z`#X@ z(6;Rggb_)C>(a~|wfHU!zk3|J?j2_06)AVx|NB7Nduq>c=@jNJ(= zZ~#dBTnMWk{~-5U#zDZ@FT`)U1H^xLM-E)p0&9Fpw4VPW1ElMTWO=2~v8y1peJ9Dh z*~KJd&1^FD$^~+F-gi-~T?)~de%H0gDw+&go-Cd|dl^}EPsFZlb|b;_53@6FI^_J* z3N|mPLF6z>5+^xFi^kL&Rx~nf%)?I4ruA zt&shLJWCp5yd}A<)*y^|D9aOnJK)SfMSktCC%)@Y<;gb#(QC67?@3vM^OXnjn{&f3 zE8dVNVk~C2n)2DZj^KbUOa5{F=b=a^eZ~`PlSn7?=86fT#8j<@vl2hi`GaXJcEvo!s(Ip%%lII)5xw!JBBsX2V6MqIfY3nXe8SKZPv8107g@|0sC&8Nh&qOwi6Xfhl+u4xF)o!^Wi$ z_}CgG&)$cj?sh^>wH87g9l-ZiBT!u@P+#>5=K70Zqs|-H;X4|(mUO}>k8zN@y9*+_ zr$V1iH(b3p7j_-_3f;EBaDUu47*)C%WKMpAe;(m*_0~7gy&4U@Y2RRM?|#sd{{{zz z-2D{iuYz|y1&k(i!+(JpaALq0IJfN_yj<4>Z#whf=c|tp-F6j%LOWrxzZm|xy@hLi z95Tkd2G^w}kh`M=f_Im}-QoriPcH|Xtj91!*hBA}R}C3;_aRW`E}R=(1s}%Vfcw*H zV3;X_R?-8gJ9I^O-+c&K<8t6u%ma8bCLNAku78 zQ+zhS8`EMiNu3W@#tD0BLtiLr&V%KaZgA8h6YkqNL$~1xSe$7CV^ZVc>P{0#6z_!i zV|oy{Yd-XyQ3d+b9e&=Ifj5&)z;Sjj`QADJcKjBy$J6hS{kQIr^-B{-u4^vYDK(6& z7=M7sW@m`%H!mh19^NRJrEg2B)bqp%OIt;nqs`dg(iNhgg{zq5l<6+ES5L6JnOKFRk%$Lp@8c>C@MYj1PG-inpGrwY5~*O-&xgKx__a8s`vb|k&UCnYYZ67wF_ zrrTk;`3J0AWg^@MKH|rfx&rU!6MF4Y#p#>7@a)ck=&bY^x714F6Wht zJqTxvD8+pj2IFy=YdBxa2t%G^;lj+p=wEgW6PN2@&&g=PtDuILkFUkJuQC|AYBCP6 z{lav0ZSi{UL$-IZ48B@@L10dnv;X?{G1E0W*z&xw>{(a4P;~ASU%nLWS``v1{_ z!|}QH&{10rS1*r%wD@|M{$e7mecTL8e=an-b%2dk2t3LC0NUE2FlJ>p7@drQqlUe( zK~i9nT>1sS1;1K}s1FiG9f5--e__*%MA-H4A6&pBSQ*w2&n6uQ`J#TPeQ*MNO8OyE zGX(;6_ro-=lkh0vA8h$_5}Y3PL4M6iSTyZ76n3e?FM|6SR zi$kD%<~>{*8xLPKI^d3Qk3V^XQ&YrOAO(l$* zGz2CMDTk3J+TgE!9WDuOu7h!xVbAjlV(>l_{EU;yHm~E5_rag6wupo3zHX6FZh{H# zR78^u7QpG(M7-hpScnnwXCkp3ILP?0t3pok_`FzFDeUFd{#;~XYf8x0+FJImGls}b z7TigfEs24vs=(-+!(wWa~B&+PvFoCPjKSU9L$bvL%U!xmR|Xc zid&D5_ ztlxvfeFk$gj~}S|)QER1_>CLdOt{C6znHhtj4xa;K-l$~^H-B4c~*`Y|FA-u%lew~ zO=+@x#Rq};I#8ZhA2r|}v5H)KjV`|?r^1z{YVhL|)wuO6CH`JjgO}yV@IW6;uDh!b zPn^}{I&(f^eGS!M`Ux0mzJmOxZ!dU^u9Ah($~fGpi+J2`W$VJUpv)$hB^(|G+w7LICCZcF zef%r2{k|mv!>7l^Zp02akSIw4W=F$3fqS5pcL*k>+#!ZF$-tM$fWF{z`r2U)a@#L} z_RNWJ@@oNX>RJVuR|=D=_rlj1_n~^|QIM;w1@pb9VeIcF*uCf?jCl4M-u7_VJmw?3 z_=@YU5^y0^Kxl=tw@#5 zJ1b8^-fGfY4^=1wJvy*Tld1#{rX*93whNqGZGnG09V}>&y&26JB5?nLtSB32OE@^=pzez`Z?2qPV2R!#fKf})`@m>h{O=uDs4;mTiQ~$Mb`ADmnC(Ku%xf% znFuUGb6Q!bPsgX2(lw1*)b~GQ8uw0c3kW=3m48AvX|g`GeJe>v%+#fNX20OoL@oN2 zeE`>5HR_bz3~FDLsPvNuP#Y?^!vB>*^=c_P^UNh!zvmBB6s19-;b*8bOMnNjS|QJC zBU}urgW3&~A>w2?3>skp152;Lhig5=py)K*otQ=%uI~r8b+Y91qfL-}%R_wg@npDp zV+Au4o5O&!4_I#hck($z6YqUJOWqtDg}tSY#Ph^r{J1>L^~J6TtOsdkzwa=nRVT31 z_NQ>L)l*h&05Kqj)9Lo}H^xTbc3vOcJufzEF{B0D4XQBJh zd)PZuj22TX(6Hqm{`IKB#c2(A&9w$E*1yBGTOQ(>i9a!Qo^Y-#k>baG)nm&L1^&pp z2?q)MU%u-l8YgMBANYi4*BS{qhF;9EGUFEG`Y|oml3RvKbFXR}?)9HM z|MJbA-x#67{ep(_y-zgww{On;y^1b(zbNA6efr!yd4#}DH{$bZ-1x2%Q~p}ki#Kx% zZmT(-w_dj9OYcwQ-;?e5kB7cIXoCX}mY&KRRfh5R8>jIXPR@Mgw`n~4#c)0^U>diQ zapkd@e*6}7<#Rqv=HHjP@U6ZR_=j|7p4c!}=qC^5h0*SO!V7!;VjSf~AFTMzMkgNs z!Gzz5wB<()^m)CW3I8urLvVp<^O0i|_@Q}hs{ zA(Kfrl;Fu{m2R&QaAXf$0kpa)JDjHNoO2GH)vNmSGzOREk~ zquO@L^ykN!bkAr_T6}d5jZ_>&11lF$mkmZ#cH|Q38EP*0W|mWf2{sffR#L%gObg6b z(|?J>sD^6@-CR7JUd>rczp9Jq$;fr|O$?zUTh>tr37}es*3rtHZQzxFLOiw;C1?)u2!Mxsa)p zp*!r(!TjId5W67}mJfLb*BirO$AKb(E zaA3$@a;xhRDLhdjI(%miDYlCe7i%=QPRv=uc0D&^dtEEp+@Y7*>K!WRUMq`@Qwc6D z5D6KZ`Pf#t9FI6e;7-4ItT9VOo&A~k;b|7;wiY2AD!}jO>+oMhIqpm9#Mhf^@kq!3 z9%$2oFs;CY zo1A!uV=V=y_uCG4s3-9x4!Nti=++Nsw4HZ~x z^zU=bMO*%SZxa^!Tk<4f*SwjT@VN0$v7z69YehZAQI5LYF|GznTr{}d%6k|ocuKsV z-9X=zf&7R!LpKX)Zh;q3?_WRmYGvYdnV)z(=s4c^^I6DY#tHp}w>V(^4t(&Y1%KMk z!`W}1VBy!%D6LY7x@!#aHk6|MvL9@j$5kAiTEGl^gwI&Iirv|gh+1dc#c@yfV*eiX zd;|YrT(G@P^re104j@xVk(&jsGB{2efA+C+33o{M!pqFMxrcOr^?s}7z))YsCUhSZtS)nn~w?mKg8 z5@bVtdn{<$c1x=N)sn8PHl^m=idxPvq`A|r1rnAX6-Qaqm9ZMMQN@}D2%Y@AR!bV4 zFGJrqo74L`f1$eEgnsqvg5b=-be*t+&QH^&-3bq1(+PFj%1dD90|k0aIS)E#NztC& z$#D8+FUU>U2k8^v2>YR>(Cb+bGxk!*`>z}feN^D$@T(v*|1LRq^b}0_yofaV#)D7M zX3;CM7EWf}6fcSx3vwpg*s)uKKwGk$`T0I4D}p3ZH9VZGonwN@0VyJbJtOh**fw$0 z%o#W^HHA4{TZR7$`q`}h-59jl1;-`C;Dytx@Yl*ixNnef)-E}Yo)a$O+om)unOK2t zqXb`lLOZ7B)}VPT@bua` zG@a(jCH)(*^wK20yRliw;LYF_sjYbU`dq>S3G9p7U7(=Z-7?hX1IhI6U& z?U3Gvc%oPaWlzt+g*Q)NfAdwi>iHg43J!_2t$hM_>=q3BB1cEbR>GFy>eQ(F z5wx4>)2r8>!Mm$w^z(uiFl@1-Q-qAd_{GljM$AVTG>X!sU*90x)13}k@CQas9ZOF+ zO3+^kKD2O_G_5q6OfQP$=%?RP=;UMaG;G>58X|Z|PW$^)HdTqLH_o7^UMtbNl+2IFha#-2b>F=iUaboU_6^_YF8Fygx5^ zji9tF64pGr3Pf=^j4eD5XKTDcP5CrfPq2c`b&0U_xEu_ZkAZakIx_grMoP-(+Zpk0y~}Kp zPbk~=yO!nJJz?_{zB8G5TG(_!5e<%vM%FtR?=~$%D@TEmRIm??lsqvzJ{e|>@dm0}leZ?-4i*qIZqOL^&CQp#! zM$b!d;RQKf({dNplNGr-dw?UmU zw>4tgcn!WFun|XQs`1C6jkxWp3Rf*}#IOrWTvfjb9YBGXe`*wRmva0_LId(lX}++% z9&as>;KLRRT!4pvaAHX%j+x(s+EZ?!+n0}cxsRdMx(u+FasACqbU&_(c?*wYOX5#vSP_e6!*8;rfrKq#B)`NRE~#B4`~S^^=cnq)id}2r+5O+du{Hwq z^;N*a>i`_uX$YTpCBwyfdziUC3qIRZD7knEdN+-O=ROE_VM3-r;0w0BTnK9p+=nW~ z^^lkU0F>s3LH@luh=`AcH~2NdpYg1y5&z{SN)Q1k0E?6+xxNvFQS z&ZCVG7t{-0!n5_y^e31PtB3NpKf!ZAEhx7AgfO=%XsY`GA-(0$vHv^Vd~qGz$yX2; zUIy>`f{T4XCRm%lgYV)**c;UfzVr5iiB1!YY+VY&ifUo%&(YAOUIEX9%z2Jinb5m> zM65S4*x(&PUT?buV+YR?y%jts{z_8p?%R{#I^z^uC-nL{!+x{KL$RP|XNPqb;qc8l z0B7y}4}xxoqOR9c*i>^EbBY7OtnG}zRGAF!cGvK8sIZ?Zxq(Y102&gj(0t@j*x>gR z-7~E~w&^8?$r{1$3GXm6vcVyapPIy!lps` z{E2j%c*-RMZna`6E4(#WxU-&MLjnzX_2^0#ILwg89s142TMp*SXKG<9=<|yU>;z_^ zE{{0ljz8Npxm|-l23=I;Hvg@_6?F=H{=Xf#HBN>bRPV!r;(j!{eGr|BzTu`RCr~Ho zEfxlzM*FNLY|S}`|F+lQw9}VRD(42~e=5KX)vFj5aUCD5%)n{QH?Z^fA*?dKgSQ8V zVUbNGwph-`V1r-6nktcF!e~kNAnUU4oAK>8)o5=p_6?kiQ zHnE*@TloL#iTmbKTy#Pb0(=p_wCh92nyZ-HG8}XrbFp@sFMPRr2LEnZ0g2fuc*#2) zY%Gu93(JEblM;*Dx21t>+y2`b*Npu5SMgUK=g7yG~f-eJlG9Q$GwG( z>l_58^mn*ZGZ+mNB9D+f2==t5&kmNs`C2Qwcw!A4cy39% z9ySX7MGHDVy90VdOlf@Z7x)=rNI%N|hTVaBG%ZkqrZ%h7COH|p(Ncllbsb1A3I8^s zN`ay<7aCKnM5R=kK+Z;mE^)dIdj%$HfZ!~9k*G?w_a6th|5T}^&`*sP=3%lCLEwE| zVCu|vf?a`1^sTfayiQi2{)el{w^akFuTm80Dw3g}R{j%h$(N+POOy(S%=jnt=GE92 z$6na=E`jY?^a-K|KW0*&U&9q=C2R_5gkJ4oSUBwg+^(E~s$RF?VBB_`=3WS6?GIw( zwR13cZwBVCPlnv0e4Hv2#_Y@P;2pzFaAegp>}t!$7uVs(vsOHFO&iYbH0S#7zu?(-Cj6CmKSt#k@|g3o{F{$H_ui?@XEy5a zMnf$glcdQ{d+T$f&1yWV+L#Yorp*7uTJUIJ1^(YE8y?{<$CEGH^Apn2{HMDk4-@7) z&m@O&Pho$mZ|}q-_kPCMY9~JQLpwfea^f|e4cM3H#CI(d?!t;r-1BfTZq^&dBXaW4 z?7AcWRDKf69u48Yo#SxeT06e+*LwVzWzGK_@x|+r7TkEg9ip`<|KcEr66+25=tK9J zx!)ijFBi^AinX}Z+g9<&G*zBzDKC<1mFG{ohm)!UQhalA29Y=Vh3x$sVs%2;2QAft z7tsxQivr zO%s`JHhdKr1B+YoApLv@d(v_ZEF-pwr&%NHX>Ssp=`03G?^sf%auZ5a8;JeE+i>=* z8blP_gHiuE!=Tto&}*Cq8!c+U(`p^qZF>j_zESYCpcd-p9)Zyh>LAb{9TI-j!?%ff zp#19@JQe20H)9)NOZPqaVbugg`6)~k&c|-mc2Mzr2KWATLzz+?_^0RgF;$jM z&AkoPn}p}+ABTktHR#$+7vc9?UHW80Iz0I_nA$Bl1U}KG^uv&F_;cHmdX+7Oh6A>A z4Dk_w#Y5=w7zY^odMG`IS}BXS6xZqdUu?%L2xy0W-5+=6a>t%{4Pjp?9a zdPpPm>9uu6=*YF`xqIfQJwt^$XWHOuUpd;haR?5c(GT|1hvNLDT`=Cw2@|HifCW39 zFkHU^-W?o- zUTtE4m4oa#@6bUF!{IzFN*&L=r94KgfbA>X`5+HTluY&FW1e-fnOn#4*eUgFy`~SB zHD$~!!iRtMI?g738P8XSuV!lxjN=W*tXWCaSU#wvLY(tu4Bs(cUA*b58xPs>#FZxt znd7JnqN%FDZ;VnDn7A(d&BjrrcH1zX8@h%#3(x1#iv47cf-O%UewJ(=X32-PmXMSw zrrfamDeUnO42bJwOPq?RPo_~gZm-oYX+e*~9atw0higEjtba?YC58aZ^f$Xd_ zbndzg3V!=>*I2P^2I)R(8=Iq5U=b8d!Ll^2;+ zSQ{+%@@K`v1lQe}81eq`@4$D_DN#k(JMgGmM(#fr9Fg;H5I=kkpK4@aaqLUb7j}zQ z&P|}!KOGh})j{XR?I7D+4c<8i!8P~}B(D<~50gva#ft)nEiHh$#JjL~*9Dl>`3!vh zGvJZH?tWN)OgNW*z)@l6feDiI+lX+8nKF<*t6vTJ-Aa`E&H&X*YIJGhNEmZLlRi{2 z1E&|-^w!XUF!P8m)d+7QYjg+E(f2Zl_Y{4KpZ&;+tp@a5W1+}AaWHl8uP?k5ZAfoh zD>IjcM)aOU7+ch0L~RFMXTNKW=t;jGHgT2_4Y{d{#fuE-*MF`!ugZXa7#)BeM+Z@l z;!Sv(>ri{OI9#oyNteG!#_k9edN*3|T=WXxvk&px97%esSD0bE{0^}{>v6}v4k&MI z!z(xHK<}i`p@EwqTJa0@1mD@yL%xUgM?p7JmHQzWR$9M zk~tWz)~NICQ9sB~4^4j7v6$TWuE~WDChO}oxhT(pxLRuRHOYCR*X8Q`a@{kR&$m>$ zM`@(^vzs!XrzFQ(-4wX{RUcOTN|tweN3s9AofX~Bv4!vYQNy^BW!L>gX^GG5{MT-D z4^>2w;9$-*G)0LYukpbOihHD+@%hpjI7Ia+s&{U{j%N=9_HPUZjJ=0?uTJ1VuN$~d z<2**@iIE8`MBnm@C|z(5H?7LTY0v8Mi*E{M8o$PtH3!kUt_zR-ibQG0Us&6-4pVd` z_}fi^= z^|1E-`@-h(Jy;1w3(Mi=`EpqEpi=N_)WI^V$ABhn@K~=AY#)9GZ+XGl zH?|KR4Qz)?byBoQ;~k6;*ldf_=C&9Ju6kRI6m6oMBS(*qI@;X{!L{qOT#DE?$h#~GKxhe|VgG_(K? zg`3k~KhDDf6$`rR<|&X`U_r+l9fhO-3;KP0w7`5Zr;C#WYm}?G5Z+w`<&I`_{P{`H zU2Q@~L=m{6WlURrEMZ~SU|MOQ4UhNh(>z~U82??DemVD*EYs4aD|R%II7tn}zKq7e5g=0zKyM z#6AHV;8>9n%N{cU`eP?Bx#dPeIc5u+W8O}f%whJqE1D=PXEEQtRFT5J0@l;hElzK_ z&F-b1VZO?BEMt=l#tnSM^n!#wlJ!SnpT7pZ-U;tMo(Hk@=m6YSk&R==%i>^@5-h1# zLWj|hvFfFkkX7gq-u(=*q^B2aW2`XYycBP7al)lWirhhFGiKEzyRFXZNNYK`(XATUA}+PC_F5s#qroMJT9xo6CYZl*K0*S#d0u? zI4Z~0KWU<5wVgcCLZt}WAZ<+&2caB^O@)D=;Wt(^h+hP zJyC;QpONM5yMsm6S*%&L6azOTu=W};b{t&F8g5?3AK~`Q>`e|@&1n&9UdX^XZzqeD zCZ(YIq=znV4;(@Fuj@pm3US!p|3p+|6^>iFRf(tfI&`~fPvk$%#@nMjiFutj4yu|- zUa1eocRPZ~6eAsMtK3c6m42`^Q39zrT*4d^Pm&LFcC(6wmx$5N@8X_0w~3c@nCpGP zJ(e=Tf}Bh1C717?BGy3z!OgLYRNm79l?r39Tx$Xj=mWc{J!o#&0Fk?0U_faCn2j9; z*`m{MY_TWY5uWqo@#6$${2h>0n*j1rPX)i=1X!o}7LLvt51L-RaM;xgMrugXGfksl z{)~b2>c!#E*`Q3L@@(M10}Wbn(g4mV>(U8bO7Q-)J`Mc-n+!T=Nb6IY$jVA%>QKf> z>MBz@(c~mCnrBAq({_^RVl(<@g}@k%Frzz$tC6lqQ+j@Bp=d+BF?B0a71+#%bTUaQ z><|y4GZ!a`^}@92jD51qI7y9Gof*e!n-u6P(-op~oyS%Zx#A$_PBrmkGVjLZ0r=K{$J42|B$IIBOHPBC($aNBpBO zrQaTQ@&l-^B@bIa9Y4~V$S7aIH+QN0=?1Jh2`!qACdnTcsHTNomTBX8Vd!E1E!@rZ+Lb)qfq>lU#HyV1CR<4N(I zpVM%$%wt!jisjgs`BxNsVTZtKSV%VC-G@0l)5zp02QgBmf;_K1hBc$QN%y=oG?Gw+ zcX4NMZ>0hJ3(LlhNA2N4%6Z)GHUb{Kzks$CKJZ}PMSNTk2oGc~;jNVApieGgufRU7 z$-aoH*CXKFggjhm5(oaPbFpLkVX#ri!FS{YT$^zgXR%XYmw5)OYqKE5?ldlp&ILcK zQ`q$LG7Lyb#cv(Lx#WKmN37&vYn_7aq7u-rJ%JN{-GHnY$IvkACft2^6dnKFgzGT} zafHE5h}sZ~nSG@YHa#4794dm`A?vVX9D^%{LAYb;HMkk>fk%q+pzM$p)*i}+h(C(> zvLPLIh+5g##U~)^_jwi|>`N6VE@gM3qhU+R8*!>*C>%0)o^PDC3RXgk06+|c7n|mj z@~7Ug{dE>eY8(#X*3U>lsTsIlmIT8w0xz&x7Y41AfJxH!@Fu2}-1;^W`~)UcRbT2>a4A$0Mdvga-t&@J7-%z{os>Gh{9U}-w| zSJ$%8gQwv2%nD{BbqXe2C}ojC=OEenDzn}!bmuHH*bwD3u&+JD=6R*U(v&dPGwdYX zmtM@$vXVg@;LVKI9EWuiY#Gl=gfRgsY^K3s_?P-YY^c5;Hs383TOW&o--nNhwelmO zt7VP&@$67IS3F!CpS=-MO$UfA(}N++Kf5sD@B&DkDP4HrKmhpYdAZEGJQ3EHk8pJ~ zaEGS(@vh@;IfFB%yRHXISfUZ(DsQC&$Ma6RxxN*&+^;I0j?w#S2FUtf0uZX zL^N4F`-XViTQhRmUWUa;dWdeHab_mMcM0uT%1F>;W-xv~`=W53m99R|;;wvT!8`A= zY<)c}%5P`7D=7}`8-V3J2p^}YAYZo)XU;XiJMD3p{?rm<)RNKrtAo%}%f`+7U2uNU zH5~Jt;+NH>IOgGK{OvE~V^5Aj`FVA?eyTT~4t;@7WG7%wL^~c+@Wmy?AF$hO8qOd4 z6(2mBfdN%N@Qd~=yx`U+>~Q8_WkJ8->X?r&OeA>Mq(!JSK$71`UW%7aN^+a}6?o#k zq;St%g%OV=`LN;;95+Rh51z1Ic;+Sep{f6&u?IZ!~p~+!4(rK9{+3_tlYNR zHGk+#cs1$1sO`ZlIK0D?Y?u)Q%L|W@_rC(+gx6zI8AxPBz~kUt?$1@GE^k!HJ2>1r%iAIWJi*!(I3FUz>7%FdkKdV z`bBL+>tKl7eXoHzrZ+skGpu zsmfs8jeFrjaS{76a0|Q(f5d)&TMWPVx3KsrQ=xV1TlS!Kv@q9w&rZFzg9xP#R&h}m zj2fS_aSGD#KZ?#foXYo)<0305gi=;0kz}6xa}=_Yl$Ihw6e6V(DwMsq%#@kgKs@*7 zprTY(8EN-z4^q)C8o%fF*STC5mvcDJdG7mjzu&J{aLp|$Q~H#AdwPi$uV9Ej+j%_q zKAGI#dWxp>T9GBEQ)#-xD~|HuG5Wh$lq1ErgC6Of&nTT)MR_|OG7EMtrK#!om`Jyz4{hO05O>8>E%o105@vqb2vSEuO%S4nDCSWm^+?pEk%D>W+7qZ91Rvufi? zTHZHAcO-44Cyu|Qv%7t%d(KxX(jH7_KADO|D~{3XWl|_s6G0nsK3<3qr>4dF_|!j` z3P@O^`Xf*JqSF~i`q$7D_5HZ}nL14ljKV{|#+Y%dRCKc5&&HVZu#uT=xb8^_a%#_T z9RF71GYNHaC8`cTb_J0W1x@&Gu#_ydILWl2%mGPw zy$kVpr#$?b%RZBX3*oQ*IdrIG`;+#SID3;JOwuCMKW7BLhH{Z!GhsQI>G;#a4A|*2 z{t7h*K~L7(XkiYG$3jp{Xa!_V4Mc&?We|RUA8MHz!iD&~IPs6=OxF8hVTUTfpf4VL zBnPJ)cVY0unGk+#CoY*M1i`j$D6;DpIhgH;?lEtP&$jibc<>I%VL7CKGOv=_(PfyD zQcpho)5b4%ib$&JeB8SzmFx(X!o>c=c=GgVJX@)COaLCZ#*_!#FN8+9%-Dpg6g>W z>}Sq36$1?I(jkJCtTX8J9^&q^1`k>1k_bTu!nKb{pXx4LF!qm>zu1cx zlO#b#Fc3rEs=(r9M_6`}KIFC?#r+c&Fmfyc{~O;3=?kOKyLmfEMn~fx`908_7K5{& z1w&9kEIRmygQi9tM)yX+v;H_-svHZAYVoKq9|w;V<8cX%g^l5H=w=@SGakm^E6XSt zFpa{CR^h;>bqxJ253{b4Knx1l2NhR*vFxEIJn?hIxiU`h-F^dZc3%sD9u}BaW(uAE z8Q{J%x-8#L9j|Org|*r9u-aN0#%v^UDNco2FHubUK0=Ha3gDZ(Zn9tUHx;TnL+Ttp z(*+*srH*_x{&-V1v6Me5ab@yB7mJtWeUGHk@yli@t!P;y($2yZq zUll>!a%a#7e%om1q0Kb4n$T}GsdS=5mdb8vpjVcBVvL&aP$l_hM)k!HnirGAJm?d{ zYhcWD$<9SjOQvbA)j~|)RHuLMJv(cTzGrwyl;v+c-o*K#v{ovQ00Xrz()}^S8J0$=Cg2rA0Z1)3S*6wIgyz4 zi*`G&BgVro>G-HSxw2xA^0yu)4|1>3r*6q)dE!NS+_;!Lb8MjsODUPHc8U7?^%3Lg z9khfuO!nUDrTIJfAbst9y4+C=oD^SC)5S8dV$B$xa$W&KM}N_GLu$~fGzE*J7Q?ru zsTliG7gm%Cqs=V>K?g;##>s?rzE8uWrdDud!!*?8u7RNSq6jnW!B|8XOJrQ2<$(Y` z+w29WRQYgynLoIG|4!%mAA+_O?C$@D2#(uCfBLl=0vz)&QO=7 zDPX^%jAlusL(Q^edgNv%bj;dGXU$~KUk<6$u$j5Q=XHa5+MWlpiTzEtIR&5)vxU-dU#aRy7NodaWAz7)Xz%r|x2%jo~SwHU(>%w9XIx7HQmX|>Dd<776DS?;m9IzTL zhV|;};l|Y>I63YE&d*MQdTs=?o<0G><0){&ARh|5+51Ly4%AnaL-c{;aForjFV@Ti z>(!L)kEMZR{3VcbN`ccZ9q{dG0-Qb83Ga`_fY)R<99VV^CJ?$tdB zMK|A5n=N@@Q8NQ|9kZZ~EI_`76kv+DXgWU*{{FSa_eYMwB1IQWdbk(nu%D%NdfPzY zZV1|^uY&Zd7z})=4_5GA zO?d2>40)~6if?6ia-ue0L1q2XChg7}_$mJhvtFqejVg@k=7K(y$%v-G*9Y+S?J6q! zZVZr{#)LUi-hEHv(`=2u+&ChnJ&CeS72yh2fmHogdtv+ zarqZdc0J1aKKg^P-mMXrT!_Z(yXWvHnravF` z)Yx;sUs*VCr3KkcIW9K4#%7>m@!`ZRyjgw}E6(3XubMshUG4=w&12cbrlVNkwF*<) zzu=?)vscq5@w@tbv~-xlTdObw<QJ6|1~O@Dn5;vEn#WkT4WJE(KDvEwrzPe?zPqyO+19&J)02OY;TB_x3S z?R|}>FP0Jw)rWW~y^HAVyNPwyA4$N2%Xm#f6xJr!qnqqJi26~Ad5TLQ)9yIxWSD~N za136DjnMqjA0-NRKve5yjJXv6FK)1F`rruATeApb|BD0vAJS;^s(OwSn#HbzCBt5BQ;5sZ(SLT;|%E+{7xR$HjsS_Z<32sn@K`mDLJHkjm&ZPCmO+b zi2D>d5_b6=x%WAVqhZPqUjCv@%cLY>VqOj79zP#OhytDIuMbwQ-RX>eus6hNnB)g2M{P*-?qFnhjyTP7SI| z)dG2gGdPWP3iKG9#f6@8q5H}ieBL4n|Kw{iuSo*XgR1GsH zwp<~69AH3xx80{(W@wWF)4VIh5RE^Q`X_!pWVRBjmwYI9WR;0`pA6$*h=pAY~a$ z9?e|>Zach)LW41oDqCWA(-y|NRmcZxM+lg_&tdF$z;M4BXQJK@o);=I@!o-O=;{>8 zcQFizlLuW<6A3(xGI~!j7MMe~=^`&Ss9eT}DWSAQXG&2tDIf2At48T$arGu2i7lMy$f4QkHeU~4=%FEg4mVbnA(;B z_S<&gy4Ex()^No|0V$v@>4@_85@Cn*M%3<(gYBtnP$o1QDppxz$?tH8cQ;4p14lp@ zjq%gz15jto#rEa9VSlj!>a5rao$=bZc#8{kOR1xknFEYJQov_)104D%iAQFxg_}VF z_+P6HJe7S#mxDE%g=wXpg;ww}D2?i+S;DW~CN#R=0;FA<7=Z&8umy>s`XUP$yY-ag zI#tqT&EtsqiI7VE>xO*W9&sGDXfl_KPIHFV zJYnvSxNw?O4QOoCOT*1y4^y6|i9z1NV)|xULz9I;2klHSVZ3TbXk}g+Q=A}-c9Lz( z#Jahd^XDsL{#%RvUrW=hdQ<$qQHyR--iY_&R?yWWI}x1hsL$bGbcnO38FkS(zH1{b zuT4SmM^@BEHW$-;w5a#-VjN2lrG~ewG2?GD)05wTw=Zfi4@{epUUD`Qpy6YJ-{CyCore7i}?N(s z2HE@Y9kRxuAA_$yAZiXbu?8NH`+Qv}?>0nKVy+^;NH1~Kx`_K1x057I2A5VglGo?X z;Y_weM_#fsRJY?qe{~Uh=!O%O-FbLFX#-iTn~ABz@`UM1#!EU^IC3}Qkonke@n6J*BmsEVp%nwqWHAa9`hEC(eTxtIG}NzGT#GG_Cy}tr4x=#XVSa{(IUMVQFY{g9p-8l2u(2~}w(Y`(t=N+ooV>t6+)zm?JJ zOC^|;NurE3%Qd;ij|!RY}|=`)L`Bdo)nbkEIatx`0|5l)~e{So&~V z3FyZ7(DSav@S?A4XuX(3mI( zj)Ttg*4F z>9KKG?y!Q&T^<3V8b$L@JOlpHO3EjB7o6)@*4UwLu+RQRBYt0mq7b&TtyT|Df2*Q} zLpfYo&&3nnxiBwa9R@5(hJipYT;dYJ&X(V$D+(FuT}@!v+#?da@PsohC?RLkAi>zD>km^jHI@>V1U9Asm)#d>79vTA5XUW&*1VfKP-|i$KIxWY?g{;%sn}X?~Z3;6dcAG$_ZF`>L{D# zJBlSWk+>^l7xsLJ#aBujFg`gM!3S_jdKNNI6!3TJ3G~dKf<;SDRfal!%~y! z>TNJZ#4IE7b}s0W?){5&RpC3uzc^D-1!juG2y50%@)x-zElc3(IK zTNm*0#(u;@=fU4tQknt70YC7Wa{;KW|Aep4mcnYicle>U2IL}NAb)KGcrJU02IkGc zS2uv=0qyX-uM=n3b+U|*%ecMy7PztenLiCfu;N86O8Py7Ult{pw)z>&D9T2YHE$rL zDjuhudJjDf2hnllGkiI`83hD>!P(;m==k<87Wb=cQc#fV zTF-U>l=-=~_cp=LKfhu5;100c{S^e<{UN3J9rPUw28Sz8A!vFS*w_rgPrY#PVfU`0 zViByXt`#nDB0zjq9eCx2!w=JPSZHz#biU?7t8W{>@<`~j8FISvC!GtuC19uRds)TD&~@%C65Q4GuS zg7E&WGWHxL36m-+;P?I$xNf8hM%7qHL}d+#6;ZsUbq2hrbzlf{7J}sZ(A?lW%app0 z0=;$6zv?-*U2OoJW5eh<)Cj7jA948z1N#?!#nFEVcSU~TtFmUW3jTxtcr7r}&BuH9 zt_4cl_<5~=o8cO7D(?)tA1|&K;w5crg6qQ~y!-3xfV)kMXZ5ridcTSDW~h|H<_Za3 z;r&;oWD*Yh{Q*1~BKb+0Czji1(3&U7GprM&cMgj4N&{o)n5i-P>H~hB z(~3Vd#poAy7S6$@`=c1MO9zcFvEI83E7V=xhng20kiWVO&pq+RwlDSgD<=r;Ib|5& z5{ZJc$FYJWV1ZsVuDy_kJbrK7Ka!2RmRO?PjT89esS=vA@9$NLU#W0p1uEuMQ1Lyr zcsJ-Hi>?LX)b|S9Im}*sjtX3@s-1Xv zqXIW!gCp)gEzgy)v_U@idEB2H3AVDl?eHNLBoec^@pq=-#^G7q$d6B{=4uIUqiqEh zvz^Xu@Lf-P9|&{b*`8u1v<0~GS{pf64*Z7G8@NPM;xl|rIYs)c-+~3ZM$spaAt{&j zjLHo_#7-?RF1ZHIPgk+dR~}H7VEh1>aqzq5ao>Gltvb@4WBQ&E@mZ!f@3^zE+@@%&%qb-}g+aals|@Rv?88tI(EXw71jx6Z-Jln-x+*niG zz;cX~NM%tYR;m?|zqAP__kSR56;13KULLe<8&S2>6n^{EBh%mxlMm0}ugq|`msx=c z7HOb&?-YL3I|+C(8&?|D0AwbiMH&O|EW>eK;uYxm>Wz=3Zh_U$wHVy+0CpPc;~(-G zc;mD2N#;1@H~pm9O_QLr;0g_~7vNTPCezCqBHU%Jy0jx-oahQw6C3Ha*7JK<-kkwgY{qRwwolG zVk+FW6Cx0>cs@5|KoX7(Dseppn)Y}+XKKl-eUI>PdJNoeRbPss{steb%vz#ZP9Vn~Efn~Or zQT&K9*ni|9Z?72e#Wmv5$794+^gKpf>L!xgt8vcPN|wu3hQVxaBXi3s6yD}U(w^sG zOa4Mq=bXjnhd*%Y-BU13C7rWrS{x2W_Zr5m2}j@g)lIiG4&ZyWRA$W$541lw$xIyE zi0sRxBi~n`id!(9=ckRI_noBO<#X{en}=HHB7|X2UeQ~JUQ%h_sc3TrY58v%eAAUe zhi9sztd1r1A_NbuyUi>JT8Y~Io14y@w#VA`Qcj(v2VPyKM?$`_O#b3T;=1Gr&bf7w zG#W+X(FdQ213)Bgh6- z;j^1RA*Q(sKmFw6ZceR2nMYH(fBGwNijD|(`_2lKc{7chGG2}^^u@VP_LO16l9^nw z?uH~dt%qc|U0;r4|9Tm2 z{7^c&G1A=qH7kr?bdC&@K0J&KxsGr3T?4|#3VxqkPzqsT*1uAj|1JaR*b zyW{6F6p9ky_8wV?sWNoX_TCu8)IjCqva5-h#k}WAu{GfAI6Z1hrEi zgu+K+jN+?npzfB!;Z-BlEL=nyJZivBJc9iEP{6MJs>wUGL|Cx@CP_8k2kzTH5WgQb zz)=!}b@lVX)imk1a3dKVKhuFpmflkHZ|G7M&E0c zKG_NfO~ug1YbRV{`ze0)d!f^4GiI+m1XeGC&_6aDJU1n=%(`eu&?&&YzBu@>y9z)1 zC&C{-2A6Y_q0js(4$MgbQBFVlJxK;H&&L>0p9C@@!DVxhsuPbaNa%uQv}>p@6R4 z_JzuioT2|IUZ8s_E>l%EAKDu;NL%MTWyb2?P@%o243xSj>Ff`$I6iAcvBAQT$S#$^ zoZAH?>#j1ozU&|)2et6vlu>fKl;BD#1aV_#_$yHs+_|>cHGKipd2GZ>YxH2q)d3~H zn82JvPAIv|7PxPn@#LQ^;BmG#bdk*klFu-f^C*XFAHoAW-23^-h_&u}& zMyAfkdbu<3)J6{V4%NfP9trGHXJFF;VZ8T~2Tm!!=$YRGsc zz2DIOVh!xOoWj{YSP9|!PdSo5%E87>npn%1g5pdA!Y@<=S%n*jR>2AIZucWQN^)UH zFOvA!X0ZWFs2U%^EM1ghH=XTYQ%bwcsW5#)6KTiRi*EA8=<6>Z!bCI+)ekM+ZH^}K{-K6>S zZ4&5GMEDb*6Cpki(y;Usk!t57fA8}_-{C>Su@j;&exQtbI%gJKIcGtg?#n~Sxsy~y zSsi}xJ*Efjbird#9NX2F!LG|%=wECJdycKfLD{wNJ=qJ*dhMZ1H5^mzSU(pp3Ei%4 z2UDROoL1-wAYFvM(mt^2Tm>HAu$w(IKZ9ov_`#)F4JexD2TAvv@Zs0pU}=X~RqhLK z5_nj`u7^8Qc$k*r4JreOrF*>~_dbL1B3`g&VIxj{^#rvCbtngg1tUpCv!T+;GS* zgs2v7!D(@G368R76sLVSQ$5Ua*KuJcV*>{do*HNNb}YgVmsiqxzva+~%|Rt@6h%SL zGCH#M1C4xmk)CC)QH%L^XylFp8e=s=!}n~ZgFX{fUFjPWS~3;I3$f{;y%;JOpX5ZT zOQJ=&0ojr!i@$g*3(QlVonc=jhow|mKl6J+uWF*5-E`por;ipZ=EM25EOWHb0BrZK z#tO%kpt!*Sw>fWtlDM7d5U>-rFFk;1OZJ1P_c2`jBNP&j#9(At6zjiD#L}ENI3Asf z?!HN|a#sebsilFUV;0I3Wx^8YT82aXjV$Jf>Qpc-_XbrclBMsfCBmStjPhi0MV z!xEUIl!XN$W#IQOlVwAdgW;o0tXh8>zQ|@_@Z!_3DmDufW6Pm*-f>hADubGl=7v;N} z!SS#wAp@3nB-1K~Bs&!l`Q^!^Y+nzt6^bN$F%zWFc|XDbW`W04ck=I`1}I6}6H#9i z@H%QuXz)f5mR(K~Vp+$C*-~N~91QoDD3kF&QLy^{3?k%^1j~HBae@XipwYIS^CCGH zyt0mRKA9In{p@-}!`a2K(Dh-HjC2{S`dZF7xSfU&qZxGf=?W;1uw&hfm8=ghfm&Uz zfb~z#QE#u)aHsYTU1U}UWrzOK&yL05sw~a&vDrDcfd(>@d2m6|1Sg7)gZhPyXd|2s zL2ta!XL%Cjuxqh?l~}mc6@&HH!(oGe3Ua-J;DhgRT;J*oEolWfaVAh2iEZndF4qrTrmn&t!Ev60&@&!TK`2uSDj*#0r4EohxBmZXe zaB*)D>t=7oV{!Y4Q~hOJc1@8yH@S+%;hRR?wcU8YAppCAoypE-Qz4WY08;TyhN2~86 zn%;j-)AZ}G%Vm^4a<4#m^_3PEv3>2dzf@*vI!0X(z%Hj~H2N%z+pqcKW4Gy8*0&iK zq)MRKEF+8EoWcczerbDqEt!@){%Qo{h@5m(HY4Ix6_W{$tZR zRaLazTFmKoR>j@=Tq4y!AEno(kS*g1`1*J=sfn0_KV)B%-j$O0enJRJazyZHbhW^&%PXV8>~-vVG>>-QNP>Ik zQ>bxu7PMwX(&7at;Q2g%y7OQuSSC17#Y@%Des&qv>#75(eM&S_jlx&}AKh`G6H=dTRxy)OtV z`oD?C@hR;0_7EeMS^xcW0onWHBN1giu!FB&kl$CwIBf<)L_lHOFyTcz*`K?eDY86E zR5YehqiMOse32vNdoVx7J9cDUO%vUyr$i3RJfw%NJm)y<|I233k~ynQByi%z zJHz>#l`vFGzNwmj2^M#AnECer_wFoW*8DQZM)}vw?GjtuazdKEx7dVj@*KJ_WGmbI z+CuNgyJ9TcnXKe_povH#6>syxgob=teaaU@7FW}ZWqZ+|#lpV%z8{b5zE1zJuEe|U zw`qfL2-Z$Mp$YckD1LF68h>PGpn{)hheQnaNc^NH8e-9{>kr*N6o=C~`B2|A9>4vX zg3hbr(eX1s(j#%m4^z=of<5yX5X1w9(fBz|1OpdFV(m{coNgG7^Ut!3;NDOyelQC! zZ9a@o*UiBfJA;s4Q30n29z?k2!{%Hm@F|xovNzQ2g(E=v}H{yC13;fPlW5o$G+^N4D z|Mr>SU!sG@&lsWef2vqAhl4D)6_;h`;2bu~rz)z68^8aee?nAoSKkvV_*)*w?_HsI zRtAj{DyU|$IBv>HpcYT3Vo#Vo4IlnWdl$-3-TRNJ;-6|JTK5X&$ksGf&OS|RZfbIt z-iV=93J*A20YdJSRzafVCZ#k2T zgh02!fEdFZxVJKxq@UA(FOh|$yp#(!DqDzMxHV*HKOjuNCTL9gO5~$l;8ULv2pW6B ze|IF|)pcK(vT`2WtKJI&1**`gz8}=aSib$&191AI4s3aT5N!Gl*-m#5%+NQ2;UkBE z>@tQ{y)YP_ZwlWF!r@vC+e@yCgun?C@cR%A#LpOHrpH0B)H2W>i3c+^fG@s@?0wh( zs!~|@_-0+!$Cb?T9+tqy;AF^IuK|x1Cd22F1t4LZ1Y4|BK>Sex0P9GvQUr0;me%gF}}Wz`31IiLH(r7|&`Y z+w+w{X=yH5XgUx0_q(%RK52Nde-_!OCI)&cv7D^0d=PaqqUrIYcVvFXO~&cT0C~tU zr6OSrxzmwMZw};>N_nLFRD+1M$_uJ!#vxsKf_P>B2uDdt4x@b6a@JHWMmPBlO}}n0 z$8~#hn1I$b_-~sKO>%WcGr1LX!OLCvDleE;9AjOi!#R|XU3b2SsHbwyv3QL28)17A z1|NAzH{M9c$SIR_O=>od6^bC|dOjwvoP`>;Co$-%JaQ$9aVk~AFJDT~HhwW`@Rea0 zo4=hbD?^VaeeA3*!)1>RSx-zU>H)#F*CqJyG(qR!V(efaH$$xnE2XBwYPRtGOR&gyJy0uF^}{;T_GqQA7of~d6ZIdvG>Do#c9oa~tv$s$s^E7hx zz-Aiq>;lohwV6J>bC-1A-$HGhzY`fLN80|3opqjdpg(!C!2P|6x(&^TH6K^gu!UN% z{l8_@-PI5dC#loX8^++AE=H@ztU%>(9}_jr4*G%unE8%dAV+RtQ{56ba7ExKYwZHB zd3QN-g8RWIQj_dkcNh-t@gqyj!r|1+JaSVf3ItV~$&h{w=x0A7Isvh;z9E}As zO&mfZVj;9<9&Ftd1OECN@XU>6&N^}+rXw8u+%3S`I|TNfUk9Vh+3QJa8#H_RftBqp zV5E0Kfm{IiZgYmPhES0By8-<6vDq%N3Q~e%pk2%aCS2m+majh83&(?K)FLo+j{{FB zMQC%3f%ki*L3K0&vM0qr$>Ruos-6moxA(%O1%Jq!Iqo2}=M%}t^-xgwh8#*YhM%sF zh^_P@=qc$V{_i9}+58H@!ZBiTyn(bRHj|(Gi;2qHNH)ioL_}6dk>YM260qTsp|&WH zkSmSMqn`p~?Z35b*Xsnwo$b(R&95=Ms5n5IOQje`8$O(~=OR<}NgBo2v*Qgf7og-0 zJNng6A3xhf(sM_Qu~+>BtunI2#h2>Y`|v7sUU{89DYC(QlLz$0ZW|0NeMg1mSK(rt z-!v7iFjhzyr)@LG!6g!yCt-rB(Q@cJ0jT{}1zlKX_L!~~uAW$ey*mx@x&0z6nr?#L z@~Rl5xe~)V6>+cZS`5517hmdaLX}UlXnolcpS4Nh(|NAg@=_cRoZ5lEt3}W>+6Rr# z^W&rhn=$D4L6!FeqxY6!y1er!-qyHBKMqFXc)&F(;uV85@B;n)I2NS~O6UsdI1Jg4 zMpKkxQE!~haQ%$J?KYcf;@fa6)YPFN8HcelPMpSl*^BMUkC^Oj9{4i)G}A0+&oZZv zGQ!_1aX{OaagQ=YWn#dbZdib|Wy_eg`7$ia(~)rr7sPMhBbnNJ@94W~x|E^Yh380IXYHn+bp^B%lm+)jUChC6pKx(cIAOi8YR z?TLp>;ba_VWb`VNb4ZZr)D<&f7Awh?e!j}#KBzYHsV@{yC-9-t9YSh2aA(K?0@Dnk zws{TYIvc>^oE4D&R1a>|>Vx=@4jfKf2$D|P5L_e&?mmlwo)(8}Ep@2$=LhvS%HUEw zMx_6n1HyxkNXONg5Ot-K%(y5BGDjG)I_VpkYjK)v9ehg6`?E-lOE(d7i6l8v3_02F zMg*eENxvJ1urm*Gq)CKC{fQ^D7oOv6Xb2}GAA~rkMFWZN^SY+Li*}Q+mLg{0`wnt{ zWIBEJ-I)l<*wOSe8%Tm`0(BR&AZJ2qX?%nhSt4|k8ts`uG!#BiL$@JL;Q~R_)jPl` zIWC1+A)gFRcPQeON^52>(Lk}tXUxV%J#5GnVX2Vvz&2mS0Yw#c14}eM2wlW9sL(1 z;zNz?*i{>kxnEteep4(Ks=DANyC~G+I6@L!J?i|^!!F?9Ncx6T89dvb6PX?mwQhS>7AkquX^c*@8PuT(phRX+lqQL zq|wu6!t|VvCtbZdoe^Slm9q`MHLmL!WsYWhaNg~RX68qH7@)gs-*_Eikr!sK6RMCtCc9YFNSAYtt9Y~HW=8nkZJaM zP;c2xjI1~yn#?06U$|^PoJSsAUJjvbU#q{#1ZvLk$Ypm^SpAqsHiwx&z+oiOjmu&F z(k2qy!-Z+b&yz9MLAGvFC0Qe-3mWc)Wa~b*_ZFN=PG47tx;yH5x{ z?ds(SOc4U9vg@3>8N$#IdYPkABMQEonm7+i!~wpZ;Vhjp3yx=$bFu^EAbX&YQ<0<$ z&Eh9GU60wkZb=>|zf>F6+h=nEuN#16c?PFpmr6Q+;tT1muy+P^uhpnr#-FCgLrOIEKq6x~B16y2zs;PTEll&rXV4#F z!_1CB1M0klVZNVop*xKaGnYkUsjC1V6XJ4;3Zx&?XYqkl|EvV(^5G%c(v`w#jTxio zjt+2Ad)U3?lxZZoO9FST)F7KC=c46@Rb+*-8Vc0zBA+U>kfRz!%-Jlr?$S(RwO~1( z3@j#nZ5Al7>%IWM=;(P=pjF)j-ny$Cev*qaZ~;cGOsuW-|fFbqNlLVHp3P&k0j#_?|O2cKMnhi zmXq!KGuY3oY~q`ph301?$^3)ac+T00a1?XVy}sg}X_Nc4Jlx%p$1F+C#Xz~Q%%&&V7%-h3u5@Iv&L$h0I5h*|fe)34Nx>Z1 zNIESg0exO3Q-%I$e6%K;hDRO6XDtP^ru_i^^*KeI)_Ng3TchLe+0UQ(r|2aKTkM-v zNab9XFh|iew$B!(yi2Gtb@_%aHaln63mXnK6Kz;n_R$O~!Asr?`iDng~IPO&9f9%Jy1jUZ+dTWS}s%je51S?5q<_X5tJ$xEAuLdzn%w$-K3I+(i;sd4&!3Fun^=ghxWJUZ zO#t(>RZQN0$)J<{U*l*;8dx`Kan`tILear4j@qr`;HRZVa$n{^*GV73ADahZOg>3v z8TGICT_&<;@?qwsSLDB6d9ZllR46-;3l?V5P%=Fm_WP-TP+bPZ@6(3S-6^p93jxKV zc-V8A?H)R^&x2zD>6RhTm16~y{d*xob0zHW-43g}tl+EG2C(^M2?Ezl*>!~l$o6T$ z*$w7UdU6hQR;>VM7Xc8?Gy#9UN2J$eIYf1yBctJ5nE5S|94s<~M-xj4)1w17Q+S*O zU79edv&=B^p9*-$$1s9Ha&S{soVHrdfK_X^P#~))IyJ>(jigW1oy#y1so6|>kxyVnwsaw`EOm~T!aeF-sD+V# z?$L^SEa&jjU26JG0jrMOrtKjzSatXoeP25r3#N3^>J|aq)zC)Uoxamcnv^aMenXp! z&(OcA_o(i|5^Bxvy>-84QqQAp)XgP|{w+tk&B~MN$u-janicf9Zv!=(kf%}x7idJ) zFJ>&Ri5@O$W8N>|(Xj)W%#4UuntRNF;R?0U6FfP_XLbjD(DJZpXY&nuBs#CDqP~j` zJ>T4vlhQ?(hplQFqt|FjPJGiy{w4bHY-po)qPXfS-S`Ly?&E8`cO zK=ZYen7i-y(yKRW7+cwu)Zkk;!xq};KW2nc6uHe*Zxf_DYn&Oo32C}izyHG2Eh_ZY zcSnw0*-{$t=@}_bCK{nshOuJ@Ghm|%r=#ElJIJaqt4vx#h=JIFs zles)d$&Av^qAHNw`Gr>PTLj_)6V$w28=k!RLzC~oO$<)Dt4H|Y1HzHEb0vRo)3Lj}&S54|lk{X_QeLbb;ibIn0Mn2k1!=VB(&vgNm)PhNI#uL3#fM zPROBUP$|;F!BsjC_FIt5s#Sv(xRi*f$U*LMNAlBO9Gdkbh~~>FaHTz$9MJnf`mdZL zQAT%3s?`lLm0Tu1R?o?a$V##)c7n8RP9x#{qVQsc9~oaE3t_f|gw9ZbOM!gk?7}7R zTQ7xE)K6fnYNp|zt!CiyWE=AoY+!rzC&uLFI>_WLrz_90o#VR^bn}D*d^4-0&M{lz zyYWqG_RJBAe}1MfWwwBMzZe#1Z-6U33K+p=tiFHJMh$5**sEZQb0rCwN7&)jrCMNk zbsH*WD#NTEAGA6r4ef)0cy)~^d^ZY5!@fy!mc8GkpLk8Ay5jNnxqhBL(toYOl!g31x~%nL{dL z#?0b_hzto0Qk1b&G^p;`o1{U5lu)9Sq*O?zGEcwr{r%NiwYsg=UFY2M-uv}DFC$}C zsg|A{-s|zU%PRb_TNmE^tviqIsKPl~h8$n~oyG?b;?Mfclr>;DKTVc)A}ynMqvW4| ze`g%q3`?Y-HIvz>cLXhNaN_JBe=;BL!e^E(A`jo$tYra{8v| z8atP#)y@!C9G=a6pP9)&o4W8+`8!!csuLgYbwrSznDoDUjv&vn;|CoyL8_(YKN8E} zUpIt1Pn!m+X?>-hnU(NvvXWnTR&5DvVSW)C%|pu_G`+T0!uVbQ5%aq=>R zI-Vv?i#UiH=0|R23GgFr0j=~-gn%O;Nr^45| zJn>DO2+LMp5^J_+!c4^-qGwz_yqd2o>In}(!|iSQj_J>!m%LGS0h(Z2)?p#wrPNhC zs!sSO`N57j8p8D~1=Q~{6<+sNk-7@EK|rf2{ug=z>~?fQ*T)wj|GDH7dy)#5cXh?D zqjF%ohZf#Be;<}F*Oj>Orw~-rQ#upZLBHz;cv86;T6P-Y(ta(la?Sv(7h562-V_(u zy@%!jLou}LJD9%I5<|AVhDXP&aGPoaY?mSeXKkxN*Fo}Ld@h4d8*EWXx(D;T#$aJq z4yb*$#S-HTc=CF*#H5RGCLWO1r$IGY;+v)vI8{C9|3B-VA2Y;{E3U!7NG%MReiaPo zs-h}f1wYSkFyr)9xE}lh6x|ZRzPJD?+*9DBED544(!u-GDd??p1BN^8hKZZApx;nu zSTwr;P9*k+i1Q_oxb2hRdZ`RdHeL`64?cnMKZXgu8=k^2Z4FufYZb6{{S*18-;ba& z%2&MptQc-np%`p@2X-y!M3et9Xu1ripz3RouzCS)R*i5(S#>*Ai29V~;YCpe%Jlt-GsT70h>1Jx$aP4Pn6uo1rfl0TMs3%Z^4n^n&q5`d zwbnkpb>Kr$?OwaA(IZ6sTkJ2yQ$I0m#zVnv(CPGwhn?XDbP~!>4TZMM2qD;U8vNJq zz3^uGN~kUA3thVJhV#agplFYh1x-}FA{ksS2^@2h1W+AxDJr4i! za^Nro!c-&a%v^XF?5`w)cr5_ZZ^VLU#R2FO8x6Oo9)Q)K!lBz|e>m1B1a>JO0Q2s_ zu(sYG-nEB7%2j{(9D5p^2Kd9^mFFN^e?Od6yaJ79_QKIe$uN1-4p?M<1MWAh1Dcfs z&N=Sj6IKW-tf#^1wZ-7)3vjU0eb7wn2VGwmgV&(Wuur`RJV(D5-k#5c4{fEw`|8`E zzmkMCT^YJK#0tJ^QouMjLfEw~4!)!v6PjjRfCPK=BY9 zP>PYoKJtZotew7g#4@NE_)UJeW;)b;+a*RV90lK|7l_$q10b`1XWDb3JM^6_(0rW^ zaD2BHMPxS$OSBGC!h~`mUF94pm*xxCBh#qb<(BX;J&$&bP8Gg%EvH|1Vgz5aS}NEW zEbNPKq^R0;!txPsD8p`$VE+0IJ=uC(_GbTUvd|tP-~8wm^^G$V2Og>=rNNP+-m0f` zs_uno+VcUO%kD;(rPuvBV>k_7euMH(%%Itc*T_+IB~|%G6HVDgW6FLg=veM9S6;r}H6Zjo(XbKTXZIFe zO{!$KhV&PE4)wK)y)#0*J@m5NK4g-p|JG8pd*>zo{vIF>b@Ug-t*N5Li_>C{;-{jL z!!>cS=}*zdC0mTY+lg8?KNi*IYm?^P*W&P3y=Yd!FA?VUp*e$9==_JiM0TAhF}ojq zZs|+|c>oQpQ>Bvc1L?uAf8v@~W^~ZBNo<@jj7|sTi8B^j(iVskC%IXW){S+d{#{e5 zH5()<=IN9EomX-n8&%q0lq%o!<+=FKIbQDk@Pe5A=%w7O(pJ1aX0SNNUMAoC)lamC zPqL+6nPOIQxL{(XKsATH3F8Nt&@A0ykaW+H%!aLm=!6aQ3x)Z-%4zjJc@Qj zKZJXY$<*NX5wJ9yBJQc;q@NF{u(b!?D6OHu4JNqnVl(~eH4=~Me;|uHcDUkS8%-NF z6`z`Yr9!3Ic(LXSom;R79jZT*)h{nBw){Yy^HyNa)E3gOUy0NDHqm6y6_95vOSmQ{~Qu3cO6g#+=P-?RQy1y%;3rjTd zgnc1>{r3~nwDZZa;u*Aj$f2^IH=)-3HjUYE2CRSIpw?~MVN-oNjVZAP?}#Mo68Br! zlpI4#b{!N*Es`!YD#!wYj}o02E2g~NOiB0di8n%~liAQ-6uNC7eKem;BbT&`?msuu z$BCihy7FVRH1>}C^PCGbL-)DNHa(3-*_{_YLO!LMC`0cLk14k2C|IT2K#kAW!Q4F` zDdSWKEZp*o3f`xHWvl|{pS}H>DpZ zxQxL+^8VaVVT&^-n6T?o8!Y~3!tGtHac-3fKfem-rfb3@rSnCtpD~|&Gy=mv_TdKU z>>DOI0mmF4hUdEJaqw3Q{1vFhQ6DT&|E?y-$t{pe)%eON3mp4ViT6J=$3A!d(7MW@ zsIK2ejwwUXX25G&W^9Jx2Wx0>H&fiO^#MJu9DogPv+2bjDT`u%oxHUSFmmZR>KdVo zYJDWnPk<)Mc5R?@o0ag*{0T&t-@`54p5)+M2Krws#Ew_fAlGBFI4mF-l9N}thjMA13@$L)udP~Kp+7sc;-}mAgaW&L>S<=ty062Hw ziFnsK*N~8RDgd`aHt89}X}uWLf+GG&3~f`I82rMofQxn`(-!Lru9sZ!ng3G?&=3 zLD(gG1eX*Jkg`0ZSfBc0^tiEn!MvB`x}GHYj=STyqUqc`Sxw@UXY{ zrmS)0>MMO=2~XwQzQ2X;2kcqB|kBQm}%S5vb z2l?#0qvGko;{@I2%i`ptwL<54*`nXEVbC$UUaTJI15J6#loWG2x-SqjT_XT`4 zT!ZfzM59I7cUtfx5@V#?-rweM4A`1ZJ-dhDjOE8^_S|4xJ=~RI+>WE4fg0s$1Y&j7 zX7SUML+EpDvTS&>CAO8Bo8#8H7cQ*<$nkM4w zfOOcICqvh!yD(eI+Qdj_DBmmH@XX#fP;>W(bY}Pp85bYGxGoA9X?O{CxOT+5_1>U( zsuTLG(}Z@rE|@vgUWoMWjsX#7VnmcSmcLM@VJmdeFLNQa&d|fB|4!4V=AO9yXbz2= zsgD7^&GaF%H;zCR7XI|cbEdky&R=pmAL`F1C+g$yAWOb@Qx7-Kwqf(JI{3V7B0KKs zhS7_ixyVTabFJs|PXjf)mF2dt|?|IxsXi}{6970r-1hHs&%bmsOfc0PKP zM(uavK`?=aTy$`bUzAJ!s4fMtf zEfINmoYdbLOfCxi=#^Ri1V+-p>p92QNKMNKW*tRs{1G4w3;?~^%044 zD2R~?UO>o?064vxc~Ud7j`Z~uuSTNla<^d!QdMx$NRy}B~_qh8UoWCGC+C$C1_g{ z1?f{#p{Cnj2vy3066=Ye-=_$?jk-W+#Y4EV{;H6<@+o{Xtd`YZsDWwo6~uIhI#4pp z5Y5}_p=V1U+I^t`x?T04!!7kNUD}gm+17(yRT>R={}NuVuK542>m{H6mG}m5{oI*1 z_taN(_9#ZJ6}blNFPa z;cwO=UM=m@+BeVR4{9f%(ZhxPJ$8eF`&7PhU?J>vvga~kG<3T@iZv2@!;RI$SpUR7 z!O?dBtB))eGR25Om|*ION?*87LV>yI|ksV!F|dHY;i?w2Rt6GxLxkC)=X5+hpL z?U%TFrZUOh)#*t~sd#9tHvNyixizgf4OnL?hI$%P{sEBt?lGk?{~eL-u(zOLu2;@8Ry72VlD4NirQm9h5Au#_d40~=vGxD{-da`sMIWZXKzp$l=iydI} zQXBH@<^?Ugtf{PJKlnTWa+((b5r<^7w(&ZwbsI_X_e$Wh+>+j?yoT3K=CmV60rMuC z(g(e+*dg19#@*?SE@iqje~T&pZ}!ta!3wwb_#kwq4$Wou7Raf34bsS5q{|BiJ96?++j+`@@(we=N1!J%*mu z?&Q!V8263+j|!fJ;mkdObjdUVts#=O=bync%`0S_6@{N)q*CnjXzX8^NnZ2L;n8)4 zk~H%iR+W{KPHPliU;3D?bw7)Bi=NVij0jvZypm$yoNgm$JcDXUhRL(jC^*FwHHOBM=X8DPv*Ij0kL!dQRzb9WLOUpY+ewzw zAHwq31+?X8JoJ{_)D|7~!a?6&q_or&w!ir%mh6oXay_!em{@=L#(pQnIq&Pl3C2^! zq(Wyh75~bWa!ymRPoVsD;ayt)NmH)B@Egs#b|Za9VRueSP?5i^8puO≪8iXb!V2 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%0A9_SfRsC(4@Idnc(pj;tB` z`BZuoX`wo2j66V-Iv?W<%WEWTDYn@8nZC>uF2_@ImTW1*;c~q4UKU5i)Zm^)SzKdj zL&?i$@w6P|Uq)wnT)8%^xP#p$cH!*P8GQIj5AJ9#9JXbB`O&wd9NefstL($zSp$SC zn#zMa_UHQH`#Hn0udp_DvuQw2-nMQ#517@BEkd`jeTfeI&s1jcx!(LfBZ_l=Y8*5? zgfIIy;)&@~dB8pwe)4P(-=ZqqZ(K+A(aQ0XCE|6nlyl$Miqf4Z?5ky^xUAb33iQdR zk_#Tw^ks*r-Ipsg{%ts2ymEpn^hN3fduddqEWNJ%77~`6LD(>~&~KX7d&?ABG}2tW zDZUhUws(DRBJr00Hq1~T(A)Wkv%?cY7}n<t9ib) z!IU4Hw7XT1+^P=N5y@pU(O$I4~mA(|Bb~H!P{hyHyuqO4aDb+%hRsGta}l1O%=e- zvMce8r74zJxmI#>C!ZkRa#h=|Q3Y|_Z#iIA2 z=xMza7k8VDKTd|LJU`A(P`rTN82UaKwLLBISHyf&UV#oLrsKZwayYNX1dO#a#)20k z@YutLFlX-om5l}`>W=SUty5GA<$-{>94|Q^)dX87w_)7LabB?;Tj;*)16OP6@{xYtc=zKAJw_zV%IV6Vb*$ra5 zq_wg)8zuMIT25;@fmM#JX4mO_sqGrI@8(69RI58HF)I-A^wrg^Z;ue1kF4ftMaFDMGE!prT}LzN6$ z9(&{z?D_GJhOT-Gmli*ufkqbSGV~aAY2}RV#;vCx#~Yw{edyx#7WlHroXS=7!FPqN z^m_gLv6G>JW)(h8);kLb9W-5WJmGHZMW|+{)klP3-Nfr^R*LrhOW@y_mH2JCBaRxi zMwlzE*g>@KU*%h1;hYUvrKT^Yq;0~&u7ee002c%XD$XDJ+0Dc)F-pNiPPYy{rCS_T~o{m^Z?DPB3$O?0eZ;`M8V$1c8v zzUgktp9p)BtKqi!XO(wBW_miv91O$@1c&UiK<(E`2E;;#O`&iir5(K6Itng^9MZ&p z2Mg>^8YCYID$_l>>_x4&=^PsWV}RDjJ(Yw%-0a2D*TR%*s&Aer{N07=`j?Y+dDYXh z6gsFiw+U)T;z{SJ$7axl;eq0TT1yd^=d$w1>>L-yjR%}2Z?7mGGWb5J+~$`*-{|jx z^^Bh8EYB|<_rOv4ym{338Z0_4w}07~<-EWT-CFR@?nylVL?=${n9Ns4_2z9EDeQA* z5O?v~!!KrzR_Ay|=ZWIiO6Gq9g4p(L5}&9$n-4tR$zO3k&xlUs`DYfg;(_<%#cUJ2 zmD@E5=Aub)+|?_XRSu@kr^P%dWE0Psyod{V1FtMMUvgKmoEtuicZbPyVewRUC|J$o zqXXIG(Ms<5XE;m7Q~412i&F%vEL+bhOT=5!ntO-M;nLa7#OE@RpUOITsONB2v(uAd zeYlpNB_Fiy#H*kFAjzchJNJ9^=ZG8Iw>Uw<@Z=_jt+fAZW$`PAP|PDoZkykYs}+L_4@Wv^%rnZ0sJ)+X?VljJpK z7FcBO6))jh*j2cZCVfo?ndOqoB(Jd>NWx2nvtR3xXwq;n;j=EB259elB$AX6YwEkPmD|RV-A6^;Tm^Fu>snxNC=>%9(q80{t$Sh_`ZS4JM8}!y( zaC{Gf{gvwAihkLUU8)YY^tcT-kGSBk46W^%WQbiftm8)0RyvX~<6Id9XfRS&TA zZCKz2V{e?_-c+&Z@I*mLRDR^KtNy|HgPoPv43rPq^!`^c`q~`_KK%&eOna-`8weW> zVexA?QPdaP*LVhoPknK*Fiq`Wg-PqKO|?`!3S@Or@q5P!KoRk{Vs-wf52o;0|_VO{P6 z5Z{6RqeTqV?PEh{56qFQX+yeo)CZn->`7m5)&$Aw(fbd7wJ#yjBy)Dn!FancQ6sf$ zflT5Z)7Io&Ao*SHXFfh4$%ZsL()cs=2&`lnxy**q6f&D94PH!`R)76(q z=_Lx(`G@>MpNN;R6TJw!O)^JR^Hh2~ydAkEXOn!NRDJ6iQhp4Z*QeAuj?5lqkUArN zEhQSud{b(7J%gS+`KCANcanq`s)z19uCgk6k4b6teehL1bL?S~47{$MLy9Xozik4E z|6Si*ay_}vf1_8(UrwEOmY~727Z%ScOnQ!$3`0%om*11b7eSMExUu@X9~qL_o~1N95?{PNeDqzCvxK38 z%Tp3wxBJW|FG;*~+QdGu$h%vdCVIUvSf6U`f8Qn11i-k}MH0U{EdR?S+B&G$EFM`{ z@-d8H$XZx=#Fw0xC&GzvdlEjsWaD&wc>R-LU;CFqII*C-#;cp(0AaXl!tH?lRjlEO z)pK=yg34s3?w%^Fmk-cyOMM47&wtZD5vMz@HZh9P+EI9~wCnkZ~w@Y6F2&WsySDXXoN+&>8fiF~T zyaCQltO*BpM8V7-KQ&n&VeXs*noq|;P{YDslf69nKD_EKSp^UtX*1zbX)-G`bg`PM z{q%Zd_}Zb4yPOAg@qOt94IAphkkWt0d+EYSp-;BW^)3NEYxQX{l6N5IkJ>nRtPGm(I|I-A%r$R_Nx@g%mJzm+oKBf+O#q*27lWvu)l}y}^u1 zEbB6@464QHrqxJt_&hPQ1!bOW!Y(C;$t(@k8HqAKx8R(nv1C1<4e#r}n@;Dn=MUj0 zNc+=C_LbMEXaBA;4|pjVn{FI^OP=wLKHTJ+316PggO~o< zF6`O6JUbuk$Y*O*;6ju3oTxdm@&#?3ZO@nbwct6WZDf8XkEDyHEKGIY|L-rw9<9w= zY~Rzv4i$OGmix5ijx`^{#cx*QGUs!a@IQ%wvu8IC^n4J zMS@~hDvv8g9}J_Ta}xF8b*8Je#PGv%AO$?y@4oP=7dhFK(PwTpV$RC!;Mk0%OHDAT>2_Uu4`*FJ#!0g_9%;i+a7~>LU8%RS1@#~ zBfj?j06UL4V#EATP=BcdX14eY$99#)9z8$9mr^#k?dk^@_0t?1+r5P}Gh-|l{2U_2 z{{-#X1F+KHKm*%bkp1T#Oij1~|N38qlwmp0r}{B48+r;H-laf5r!+WSaSME#xgTVn z2+36wVbX!wFw7wq+%^q{J})9*agTP&iwLUgVTW}aXn(UZh&KSF`vWv1(tcMmmo?Z* zyZOot3apY0=Y31Vsdlltdp`$wX!T9MGXf223YP=E1-BR6NT| z*l8f~PeGIA2dQYkG5Yu2LsL&$tLzj>W&r2bil-_L)v<2+dMY#%zki=-QX0MD{STKI z`N^y?6ZgU4lfv_ybO0W|umL}#gCIUFO}woj zUNKGf{NQ=xxe-c{^RQu;7{JM6q@< zdCvi=utT_ytq0KeQZwLK{9Fpm84n@(D`;87m}1Z8_>m((&1}UB4%rz7nz6h;9Ndvk zn+Ey9tuk2@SE3CpEqOusQB7dn2yI@zmla^_x5LdGqpa_#rX~BrDF-UThW91H8kN{ zL#L9;oj89DC&yGmf_dMX1#{qt)V_YVl$md)FS zQ1r!$+-THPs^8gx+Z-4|MH{SmPUCK*JhlTgptL$)X-rWy%6#@%Jqt;Ck;r84d%flH z6V&+iG2Pu^f3cS(t9JqkyG!r3DTbuW$6&vBnc`o$x3O4ETWlw3o0mCS5 zbfL(z%#S252-l8up@*k^Va^aw5-kvf7f+r=5wJSgjD%MJl2_FyuS@{BR&-%afyeiP zRPjv6?7pRzxcMlwaJ#F8=1aeunVa%RLjJgE@M1(33^v~gimxXcJM^|Z1JP%$K*7Is z*n9MOG2cS8Xb|QHY^Z32$KNJH)A^;aZBzm%4XR0(4Pat0!8bFbVcKA0m7M~4{;Tc^ zu-g0+9Q%(2;eSHf;$Gm-ui)XQ<{*rAIKR9$v`%^mhMKle*fAf*oOrJ(f8CwQN3@WQ zcV+Jqrp>ju2h!i7sh`V!#{E<319`7Y4dN$(Hba`~*M2`yT9{t>$qSgwnfl$2Z(;ws zZ~Afk2tiF9Nd69zd8K0A&ZHf!T2%stt*pK;bbU6F_PCniw+RbLm?c=aJwj>r_@`_% zrncK-ICk61dA;9P>ksjNY2?q_jm6o z*0M&`TBEoZGc{68)H7s0ou^_O*L7$@7u;FSJS>rYS$N zyX60bm441}kVt%(my}GC_-?UF7pR{TAK`mWJXAG!0r#bRG@2< zLN)0qq5{AB+Oeng$)%OE?B|-%!wnrE#?pgMo}CD4KU-;aBviW4f+juO2+~bMQFW4v zb18>Ur-EpkB%WLlb~_oB&I0KPq0OT%fH0~_v95#xN@#8bsZ4AoJN*VXdht4G78w;e+b2J#snZ1_QQ-a;KykTSFZUNezZYDL2$t{91uBeO3oRZwz^P`5Af8Q_ zdgTxVo&K!l`JaHsyKiWjN$2FVJ*sWpdIkQzjMqjw<-xbW2+e28EyexP8r-`LqQPku zlWu_cirm+ik(|mVlhn*lIq?2!t|9+;CfLMu)h`@50*gF0>7u)frhHi!y;o&7DXeD< zNM{o%U!&w&Y0-yqAU!=~UZyidhKwa)mq5Ay7E$YPb115?f`)v$t|d<0NVImnw!ZZa zlIN`U-LRj8{p{X-JBufzgki;-lO(T6uhskqV!f zH(fk=?yN2}KM0B?1acnN z?tW!;UewflSM5Q5Ej|l=2f|=Uiwn@N&u(zubVcPGKxHqU%zh6Ojc>x05vIj@$oFp! znDXcbl%7!o4b$_4n%o%gX;;DOh!?8NRVCGnV>Y==TlF@ zj~~OaR>X0*vt+bn8jixNp5riR3&FnLfq1s>ANW6@&rau|VQ@WP8FaJ2g<6wd>6?K!e|zv#Vn1PVhKM6*M+ zXYTiM7@plx9_}3;igK-Md)E$@8NNZ=wbCEOYp!Yg`YXPIyW^R@SgBW}fm-y&o~MTC z?*DqA%#rlhc|PI|wItJ=E{Z8dKaO_9OY?`(=jQD&`)(L{&uoQ_+iW63)8@t5%LZRH zlyC!v+!}Lv~cx*Z8qn%S#~_Dae4OGQHJj(xUgsoteBw=?ag_5mzF%hvm^&K?ZjUf zeWO(ueZ~9rlw_94mv&yJ*$(}9Pa&#h@|SJa*E|yxKpt%pILGXrY@=@y6g-18dgWR&fnl`o4Vq|Gs06buEo7r_oyCw z*0aUqsrC7nSQ#h&Xvi{8$5G!J%V%C6joUP3w}>X#a-BP8_5sx`#*fGg z|I70bpOJL#9rondxvlW=QBQUcXoceMmg>-ikK4Lq>fL&5xv>Gt zd51^NsENiQ<$2r03aGjZv`#ko{?Q*g>0A=)Smx6$pSMakp#{BiLFTShdWr!CKJHIr z95;e=&(QY8vq6d}^z75E)!LxN7M6yi+wGuAz+ve-p9#Xz(q_!wD`%dbhlS@1K~oy( zs}`8czr9`W^Q;<{ee_6|GllqEOUqi{9lPDDO1_6iDULbmRcGOrHJ&7zG|KN6HtI4w zcdRW5&mL74S#swn3=ujMyB2#@@TRT5)}nkzG(BxChJ6K6jMA=kn$hbIt7N9qkgn#g z#D0D1Ql?Q9rhckUlg=+iOA}|hJ1Y#!RCXlEy5jMaGW77~931OrLxt<7;7PJ3;nm`w zRW|f==O7fWDIICwQ}X6c^h5G!D$8m*(*xhS*QF698ldz@Q1~P15MAj>pmw7vHjk~QGhbOBzt)h#vWH}w2ox|q!<_E z(Y!hzZnTWPr!{0bZ_?V5!bPezn~qlN$ggjXp}3p9co_AjTXsXZ$F-JJQVU@5Hc@;; z5TCJfBw+@y$*Cg!{F4y=lXq3`vVJK$W+&(s+N@y7c<3oMYxrxuXNH(Zv8o3!RWdHT zcEcfe#aUL~rqbGW9(5#AOPjh=WoEUycDq@aB3jp$DJ)6R>ZsV0Vg$b!fz&Czc9Y1LDN0Tt7s(a&-C3XVYi^aVJ4mI1mrM568O1B$JI z4{q;)PtP}EVNw#<6m7-!s}jL%^e*%|u~nT3Fz@1K*r6Z9m4{>DIE6;I4Gn7jrw{VrMrqsy*-M#X0vGL<1}pEc@6a(M_9dc68ZV3;uz5> z2VFaWy+W^1#l$@r_wqTV&fA6Ee*GfnmkF4ro3h)g&G@W_EqDL07UP;b@!odJQPZpN z(@DYD@kK4pyc&o(A6;4X6v3;8yx@a7R`}}1UVct^=u1<@sR!@2?p*%)0WkD+=N)GT zgG2dd+{v(4dveu{#lxYudeK1T>QtvG$K=G5!~eI+-q;q_A{O(S#cY9yMsLVsR*T z1zj+l@dQ&#<$Qb?YX}zF*&W;~uwaov2Tr{)lIso2JkC{FD#%ZJ-PPnvKkU z8-CS!#e0{WH*|J>%@0Bhh5_1Zbzd1QGhVT&_q@U+w zBZeKy+>^y6wsdoUoS4bCE6v!<}|z#bU?tRXyI{8nYSf!90Y zwwCol<^Q}YxPi=Rgw@~)Q&MLM^PvNjs1k(%k-b0|V5*k}goA?h3P-^qPg0pP5I+=# zG@by`2aV?|kB5#Y?_hLR00`p`eI}2Fw~_BK^VLv!9ba+r_5M)8xDbz9cZW)&OL)ZB z?kIEAk{}tV@boR(5SA3hxE6A+@l_{ zo{4YO!sF&xbGW<0++*_^Q#cT9=5h3h1sttz>LDG9;_oiyA=)Cm(TzN$D+HRy{>6vp z&0zDa@3`5w6P#F7fYU1ufr?9>WBkRLpjgGrW=Dc&(iL3YA{Gjlp2mz?+hN>M!m3jb zLc=x5=xmw}^=Z+IK)}=XjNyJ7{|j>?+R(>5c;F;sV7USIjW+%7DyI^k=;mg6JHos}MX(M$lS+ zC($3$Nc;j?f!&*8Ce67vHoW;~ror}Y9sZTEN59&=jq+(L?+-sH>P~^~)A`|uP?Fvl zzMLFSiue5QI+NM2IF2^EBAvm>T(9scZ78R+&8}}GJ#GAbY)Kw!eu2C6F_--54XzMu z#lJHiaMl7_R;+#(^Riq!?<0$Uf~y#Qvg$;2JNb`==gzZA8K=o!h%L65q#a;mK7Pt9 zt$yo2^me;N+UI2-DDjJBTE6XLn)SYPn%~D;`%40VX z<(E#I6t$Gf8!U_azq>s%PZQmY{70ImiLZm&buvy9uc7#1{;9bQ)y?_NqD9mFX75>; zOth)f6CNCAODRKdiXYH{MhWxv`;$uatNd{et>Qv8j_ub=>WG!|J^6m_LKFAQ5q?Zt)p1CE z4Ly|3WZ2%e9trP9i#T0@s#WR@Ei6ls^cq9*?OXcNy*EHHS|!ViD(n39ZWZavPBr+( zdkB-EvU^kLjdGo8**7QPc9YdwS*uX-zFg8i&0CGmDaP>af#f+BRfd~3d$7|scZh0{ zhS!&Mg-^}S;>BOXVAqbTGKUF*%c1#L^X(F_T=EJ-M@7N>+|MZ9D+qd9h)>(bgY_FD z59y=_XEgCxZ$}XL)Xd|}hfH{7ZRsJiUC2FK+GEVqd{|S{+C#D1V@+*5CM5lWZ?QHW z|J;nR(?c7NlDo|@iflYW23ez}{9G7y`1zZahh!v>;!ArtggD}aOkp0+bi^fTW*(Uh z?QzZs6OVcKZ1C^ak{Yz%wQvVQI<-y#MeHY_IbY=axPN^KRv1 z4eMR-S(vRxPnUtQZ4Oop82}i10^^5Qg2}ZGA?-Y+#T6#vtGo)D{i5~wpL3WYu1O?D z&snCA7$1a^wb5hR^})-VtJABPX4v1XGbwI@^UXkt40!<^{6p!Q<1X;&9IaS=@Z|b> zlKv(w+dp1u&APA>=|r&nza5iFxUO_MW*ybC?saw#p z+HNGv@t>5(j?PT{#Y2Cup^ZaIq}j|`O@lTYr+u?uMe=M+%Ur&aY%5x%MQm9?ZK{_} zi!@t7V-l^>o@-Hb`Gj?v;vZJ)Xpd=VbD|DtGm!uFQ9X()7tGDV*6b zMn5(-j-?+_-&l7Q?_K@fAkRnDmzi34cLWRn*4@5)Tk#i8)~Z7d#g5d>mz3o78;wA` z1SB0gaA{y9b^g`?JaWrZv_*i-<*oE)i$lS8M7$zY`~m@-$#h-)37*ZgF>exfssEBp_eoa+i7>aNDD8b09oB}BS{yMcFy z38+{=h9Nz1MMh7M?lt`E(@*A&6>xgQ0Jxj^7o@8d{ETy;94a*2l89MoJriiEG{ zt2OE3#Pa#M*O=3Yg;As5wCcds;^Xx@0|znm`>o%Mo60k0H=rt~Lbz{_!Ia%$C082~ zPWj_E@WCVhkz%k}ni(kPzZB__&mq(8seCr*0Tul_#?E1%sK%4i+~9~2_q=hQ>v~&q z*~nau>1@Yi=G@>C6Dn}y#do;&nJVmKe4nFd)#UWRe7?TD4)1!A&$q6-@~Kt%;>oMW zr3T#R0E_zEc>Y~sw7RlUrQ5t=Qys3{;|7-suf>-ZT;rCztMc@rS9tD~3cT0rqGG}D z@T=MC9Ld9uo#CV@C3$s^48Gz2iG1oD6NYL&efQRRUh`~9JGGzd%soWWHlQK} zk-$SBf^HArDCgJFv|7BeW!zem)t?AH8CjL8Y@W|y^GZ_4^8o40xu%zX*^m46Ptp}9 z<>H%QJ$rv+7S@tpw9Q#@Ne$Ip&7|vYs$uPhXUhB3bhp_NS~h%@yZQJiI^<+0bNS{Z zI-g{H(sbEVN@jU?vvO4~X!ZA8)jE#*qrJG;9ZaJgL3)aW5z`1>nB_uwmoDIRPIQOc zqal89WjsAB7@E!Xz{03i;CZZ%uvHRZO8+UUiwVk&4M)`-BAG;#=LvK%OTb?aA7NJN zUX-31yp)uN?fzI}%c9e`$fE+H&L@u{%b4(HCrC&%vLysk4aApQo*TnWpSyMj*DMq@%q zHctKHk3%0xPgl#HSfTzgd^ET{&YEq&Yk|_0SF{hiX1JovobX~DXIvYSfbaj6#yI26 zimwS4{bR6n!A-?w#9#FdV7EJ5bfDFc#0#XSd?4sBNo6tM@uR`0^oZN7yP>ctQ};LV zz!^I?>$~sQL}4M(ve7oU#dEOmMLvMa%Ls!O_||@UJ|YGZ3og*G=q|9@`X!~_&DUP% z{Zq4Z_k%8_+4WtRK6S67bR;`d^RrcW>+)%o6XC-3tL&uYvkf@3$yFNb*M!?Y|3eXr z-1*r(2RWyKtcmsc`!?W~tJ<=8hQ?u41{V82E9{)YHnDE}Xh#Si9npX*Jzv3BSJmOg zW7f+(QG>l~xAJhK%8ZstJf?4XE(qAqH5b`)(Gvsr+-Jk1{~YBj?xnf(xeQ^RnzPlr zvph4~lzW7p7Z!^NU$wl#M@O4*^AguN{%tAV6nc}h@0Mbj!Kl3~Ta>uZxA&PUelhoc zV#YP9KH!V}EV!)61L5ada*x{ieCls$c0y_Fh_Dhiy%w(>z_uSI_ z@bo2~?rX`<`sMJeU~_KV_l$U6P1V_%TdXi<{l^i$F}DPt-fZAh`(L!;#(tJrDG67d z#gj+=brZRMxw|y)^?z&~b&-}BZQ$td#|dk!5x@N&5}%CnoGT^+tM&W8&|sFC0JX=N zT+*clO;{Vio#&UO_HzcYcs+Er!2IYfI?lcUp1(w3K&Ksb?V@tGncLFATx5X<>oecBNn+Bu@=ap{A7aXsbg0gl(k9CKH!}T0&+oj=-?0aBhl8$!|T!Z|=OjMq{pr+?gx*Oo!%kwxX z>lhq9bqRayBDnDAirSY$j{jAxT5wQ#;xKLCesK4?ij8ddLjBKIl;<5b-nk^}q2%{$ zE=VSLD-_f}hi7YSD%O|WZ^c01#1lBC!73>0l!h;UFN3xbhw*QNFbG(`w>amrd($pd ztl89!3Bqun0H(g16;lp|c3mf3TmvC~el&`f5A-;)cs(7S5{hO!TS4sJg;;60J3I@R zfpu5cg_+GK2&cOeJUlQ`d_*=dq?bQV-1AfG5Yr2Hj<}|^Io%oej!)1UXS70@k7|Ks zK)SIGyJv5#udql6}%y7}w6bn9=pA z;b_ror$X|^2&%EYGIZLyg>H0PD^s{b%0pu~(K1_nr>Aw>^oOMSL*~EuPU`$R*kCHT z?gR8Zwk-GPen<2PXYS=*f;T^_#o^cNxJi?Syw$fBe{1i~8#cOg0(&YiJiGqS(Rs)9 z{I!2PlqhLPOByy&)aP6WB_u1Gj6}BV8L}xwQV1E9l1fo&e9m>uRQAe-jw1Mb=q9SPm-bDwTKQ(2uUNYiXb?F7T8=edjB8 zD&_T-${p80@lWMKpAItlbf`R$-bUu!2$#+kP2_bF0`Ic5kwe8MX?5E~jz3Mz^7i`j z?WGvm?ez~NABR-=S>nIQ{{LO7{(k*(%Tu#vIrRH3ycfP-UPxJmp>}D+D({cP_m{=n zZE?@H4072$5$~@bl#~G$hqVVK&1AGC=Q67Kw1fXUK;Bwc*7iw?4C%9jB`!{qG^=J) zYR9SbE~|5CyX^MK1PpIP$pyMCU~bQFImO)_I>oP$?c_j6bC^YJ_KDDKtH12OdNIVM z`AEgiqdk-CUbz|ed}}S69*hIUs*A6A0LITTl>1%sp!mQ~ocZS@Tv_rI6S6M=J#TPb z{!KXZC?9<~KL$~ih(q1qK=73)jIR10{8+veQ@{M7xs4y5S)|Jg&UV5T33d6;FIHHm zyD>l9?!CCEHRr@{7JZxBaO!D_lq7rV_tn?TIMGbafY_)btvGRiSnI&Hoci3bB*jI& zJHTPNE6+*a2<|&I{6fe9xa$jia`GAaJ#tRnBkdEg%xbWdKhVn~e+wj@%19-qdnlXQx!6%$+#9Loo#4~3$ z;J@ar<`Wl_lPo8c6DI{mT@B}F_r8LzwIaA;6xq++$S>~~u;&gZgd zMmwyP*_qrX!!aqwLw=jP0w=h5N^@V6umZ#ugUr$MWS1hw9Ce`5cNV9zDdF&2W zT6U7=!zyq=W1x=6cYIpURc`XGC6C%TOHDgNNf|`>(6@oyvAnq?SCHJQ<0!*gG?QcE zZL7Os6~t`5^UGC!t7<@Q%1+W?o3VV!Jf&@+q3m$qOZID7M^3WsCAaL+r88?E88l5t zhIsdtR)c%>NJT4C*68yq@Eg&b?%_hIcTcaSz#J(j}xGkKFBZ96NXEEQfA9 zh~XzSk`LUCFa4b*d3^DGRSW9FO+w!p_T;AWpp3E=b3RJ;S!YlWT=CpU_&P&E}_eJ&ikCo%p8IaFEI*zyKXF_bXvBVEG z;bX6j=FYyReCDU&ysCy7k2M+0&6*RBYh+)Z@Y$R%%<9e~23YdbH#%}#>XHN#tHWWh z9k)wwuDpueC9)CkccvAuFHE>om@|*4(&O|zCuZ<>$ZXx2N8Wfw{>rYr^}uVO_$I4D zPr^NKAAUD66CRx!$m^eu1L_2Fuk20G@ZWHL_xW^73$Egb_H4@YnVmo7l=ZLYGu zt(p(x{g!`c)Xh+ARYsW=)hA`tapEq%-kOxU#Cm%AL94oM*i+IDSzA`sUp{%fMP<0@*{+9)2BXOT-2*$n@vna8&@+y>;0fs2e7vNdIX=2I zPSV*POS%O}a%$rMeSb;WR5{9bgqr=z9Je8IPLzXOU*aPN7qyivz6bdiJId6~9+Gwe zGDD-03lj#(KL?y-=eGWGn_W}+dfQZ~vg^v%l#M2`iOWi<`?0nxG+8G<&iIMVM@Ps^ zkC%9TV6<$Ob`5)DjJ*EjD3YH`UNPT~l*LhAW}ImeM_Gs&NS#jAB-gSapIxq?>9Y@Nimv_N{jRR!Won*M^?=2@yI0Oa89+aiX zhl)>ba&^<=FtprB21gVD5%%QX&*z~_s140|uYvn|Q~9ZG8Eh-3S@(`daATN`B+n_> zU;7VF9Q{Z+^M}}Y(GM6GeGy$#C^K1CAUPqqWmF=DXV>B648Z5}>T&9i;+RGzocf|z z8s0#?8?fss3*}uDX)(lVZ5FP*oZ5)fJfCgyYOEX(tfZ!$n)O2KS$2HFo$-)wW5-(# z+6)g@*mC0$InXcMn$tZAI#)F0;pLy9sG})$E$i~|$A-Ldsx_Z6y*97+yfrWRqoZ~; z{KC(#Kre>M@efa(V*WtS9r7v87ODK97I@dLEKKFXN3ioTTna2)}b85Bk}L zb7Eh>L=nNM!v`{J6IcBAd!4)6I`2G%>Z+&Kp`{NUHoDKJiRnIbp!(u51)P$|Hi{v{_+r|(6}&KD61p4-;*;Fw;gGen_|6y0Fg|^fVp-w1=A(J(xo`{%CN`|$ zMyxf|n_uj^3ERx*$P;>RLfei`eAuu^R2h}N=OQpAvOd3cdp*)S7km$dqjJnA8-?S_ zhbMq$B1l;UQ1jC9oo9mBvk57G43;J_>i)~xX6{DC5x4EPAIVuE=3LIA{A!gr^FN7- z3*M>4X?${XDK?*3g5CUgiisMZZE<9_ugY(m)B?|EAdB`j!e@0#H9m` zWY1=QaMvSiIWGD)hS;=}w)3m7!3~W}i>#zxNe}6|@I8)OK15#rT#k>oj+ZHZW%x;d zo=l!_0sFmOB`>!@d%L6z3SQ0Ht?~tk1$*W6Bcm|AY|JppUIB3e3^1T*XR>&X+9 z$6A-IQ5h{((srS|QfLaNMo*U1se|2mBcy5LKJed+-ZCs|JgD=+s@}n%_?$i?*TaWc zTY0wA7MOFqzBJml6WY1gkiG85!>W%J_~m92y;n-`_W1qKs}W+9ODY(z+l!a#q`{Mg z8?epr1E6MJ*NxKExf)exiuT@EtJwj{YTpnGZ>0hC)x_1=X>gJ}0u9R2;9Y$^Cf}y1 zE--sAA&vHPwaMj?28)Jxz>JkC5MDkXe1`8+9swYiCzy;r4BT)J&<-0M++tzPuNUy69e`7q6Yz66MtH{IGss9JkqnzcvlTU6VUo{2`ZEa?g?cPsfqYggiq36rOUl;4>Q(V~6qe zd93Ma%si~etGsh=COl6-9AdB)x?`^5+(JyP ztm=-y`QPcdDCRcHZIyz=F=tjo_o8|ZM-14B#Ge+YG|{xrsf%fCL$Som8+X^5ha1nY zQfyp&)ICmR4yhlZ#W-JkT;+b-6jv6rN0G`oA-OOk7t z`3~qIvrepHXM?=uq5<<*(D$Bl@a6^VLq>1alVfh=GAMr)&B(h!9;5{3Jhd;~OY@jp zS|1r`eThvx-AhvMl?9r4%da#4uvQ7(B<=SgD&1YqJZuWTH!->4vL&={=d4`o(D7Px zNzN-ESG^?GEc9O3fSm7UaC>51NnLsBJN~A>>)P-;_a#PN`^^mWN|4ymtn7O}W)(kY zbk9cX-}l(GxD{x<^#&u3Hl4vQGv)853@$5sy%IG^jykQ2aXnWe&L-nqlNy7 zP#(1Wkhs{2IF+ML3zc^=sd-bNZv?Lucv~F&9Kmn3za}ysN2s~A=noN`<_{v>Y=i1u zh?_y-s=qA8WUS+qEfkN3hVali@3gan+;Qw8&pMHrcR|G$*HXmVZ>gYDUk~#2%D8EM^f!?mVRUBK>^aIAxR>vH0lh zf0p&ka#W5JwlLCCd1ct_fOu}nsGXE|WFwRq#{rW=A!Y($Nz<|S0JTgQ} zoGKVU+*$n0nhMnO64Ms7fIllP3d;90@~;TmB`~#%qtBFhVCaJOs~?KHH+mqQk+G_D z1k&FdR%HY#9utyVTe*=`Z?`)4zV>~Xa>OgI5E6%5hWJNecN;fpUu!c~t?nsHdTl}F z#ZC6!f|JfnBS-lb{5)qV&4Htlm}#^hiA3_f%k}LyV1_{q?SVqk;>k|=to|zMHOEU2 z=O7%@exJPkaT-oIOmmxEqcQl>0qH)%2Uia`D4R?H+&L>#j{Rzn-ymByF4afx>4)Xl z)At4O5GBn4MO;OWoL|NTIp&qaMmu#xE_v9#XgW8{l}%?wv#FzVWZQ_RtcCw!NgO4p zGbEe5X+6Lh1vtoNXoXzoA_-1C?C{>J4H4&_$qT%iT@ei5a&PARS( z(wv_9lZN=HRRRC{uOYrqrXke}dn_$J#>qp4O9md{N9MZX$SH#FiEzj1o$|Q7XAiu3 zn0T8>{qREGL9TKnjw91Jbxd){^nJV{avE;5iYEr%Lez1Ot@gZymTXr2F>LQ1QSC*$ z5fH**!d46}T+BuEPE2Y#jZ;1wAEu1r9eFY~;eF_Ck&5)0qdagrQl6Z5?{E;U+BD>| zKOIEtQMJg4c@WAKbtHx_ytojLtOh+-zwM}YG`K#CLdvkR z9u2~fxO!T0P~(G=?V|gk0OI=BLG^w8wAdR5UT==AaFy!k;en5Fv=h20QXGyVF%rd9 z^D-n?jJ8qtFZl97Z_UrW`f~GyfvomM3#oX>|3){L>3KCkF+S={YYxNByku!nZ!q03 zn0)eqKpj=-X%+(1QIih6qT!|Aa=CTKE~u{?Cd*GGf{A96^zD)Y9V%nwE@tDO~I?PS(A_S_|$sTj9Bd$!*pzw41V;SD!1Eatk?c$KHJM5=iPCX_T*lKGT}dkFFxI zAy}mOVdXGmG!sU0Suy3MAvY#F7TgrcWy(|^lKNb1Uky{SbJ#Vem>5TgKV#m;M_Grm zZ%lP$sV@M;B?aQ~f#$!BK%GwIxdZBFz|%2jfLupFTomXu;XAu}qzY)S%6h!2%l*?& zu&MVglpmChjcCT{na@l%y7JVD#%$m0ZuGu7qM7|^Ag8&crppELmeujemrG~yzDt6& zm-;LxN8Kas_Eurs&%KdoUT+hx;nPd_r^N7;x8{qYle_qo57FYmw*-DVY`-wJP3GU4 zqS$sImCu-bUcB0r&L_;eD~Msp`vg~rj5?Woi0u#Ic_5PycC3ly%jScx>EnIPA-=bs zA#MoB;5pL`&@DBM?xnTybg%tfxmbrgB@$Ehji_q3N4c+r$G+{H{nW_Gb=*ZL;JtTS|L{LD>~BTf6nx~IJQszN(t^a%NTioGCau5wk0 z6Uo7Hj{b0=T&~n%5Jjsa<)h!z#AE9iwJ#J=c{{8BY1A@ao;Wl`_+})^y1V>^v`kh! zFQGlTUlJEfcxzMSrG&wvq)V#Yx4frlcPv$|*L4&2ozj$-QxtzntM>PW=O2)Yy)i63 zUEaN2tUdoMLoRzhLmOy+NLJ2`&405vQ-1q=!EI|{7R`H8G{gpw)ZJt?XirK#3N~7mIXU?|``@@^dG~#7NY+h|1B{Ho z`dh4g^O5?ump02^k;dTsVZHkMfk59?lJahFxWi29JAa~{_z3#@xXl!sh_bb;+hMwY zQs@2Q%?6VCP>gnNYVNC{J_O!6doJJFG67q^*A>oDdyuhjtK|MaM&P+dE4dh|QS@>$)c&_c6hci9q^L0N2uGFsKCTAsPJljBi zJ<5R|-@-pwAdYg}MJ&5Kyf7k>*D1|H4^0}k%RhjZk7e=(l}Tu^Cy$?x-i46`l0VrV zjZfO2;8QxT!w1Qy6k7|Ywk_syKmBob{%O9?qbI(ZeuiseoUujkGu-H=C2kmVn)sJB z(Jr@$KWuVOv|fLTr=83eKTnts&8bB)31L~>u2X+S@Y)7?)~ z_-qHgZ*OT<-`LFiTrShBe7b?tolcXkS<5M-pwY2ez#GRnYHFMtPp-elZnyFV@;_-u z@~LCUReq&gjf)=yXR#Z6RRP3<)y+P0l6XzZgH7t(0T7}$NuR|aTj!TPR&(#c~bjNTed&YEzV z53G~+UYp_YgiW$CI~Jnsw#m{D@#OH>Et5)M)d^%9aJUGgan8&byESUGuW#&VDpE3Cfn=^^>7i zR+ijW5D&LDWXg>49boQsNVfYG1yj;9RQ>>h>!wS^n5pHNCL3IxM)TSf^}d6~CdqP+ z^n&ld6Xk^uF2p8Dkjq*%hG2s@Nh}4>_S+@j)&9UHE#0BGFznIJ81kLQGn+k|>Ag6a zjhnGax;`^vlYVSazrN;At1wA^$9#u6Yb8!QprzeS_4CC1&s<5JfAQt{6q(8=5$|cV z`uBx_-az>+HAMW~)=iSfN|elVmDKGLyUsNsj+nnVeb|gxo}C5pw3KU0`1?Lqd@!xY z2C3esTGd_J-fxKZS!rLSdw)Lh+{C!(6>j7q)DDkrsp)PJ$cRg-Y1YF`Ww$kyhXA@a zX^6=H-i^OuG_uW98a3_nqYz@GIgdA?f=ir@Rd0g#; zRlg>;`&#r17HWo#^b8>;*hWmx7Tod5ChS_Ot>);OkId)m$814SKbP-XuoZiL%;Lms z#QeqwRsI2~@5B{R#xdR(d%0a(k|LUG=0RxwnpqQ3D$&zOLBT zSC6Y)i{-fwsxL068v=BG(%L#|f%^XW{lCP*?*9ASyq5*3{+j0AoKA`>qtOZb$;ct8 zIX-j^BR+_Re$E|;&8e}SyheDxyy$k;wxEY)Gwrh)VMxqZZPy0rNOJ^o z5niUQi>L5U|42-%8KUw(;>=MlpvK}xa_7B0B5Y_|nRz>1{2b{a|G4Lf^DX+xR=;vY zX+u9rGeU8)!BpASFiWJD&6mRlWr&OKR!HTvd_5;rPTjdvtj}9dzU>Gxeomz7po)~p zXnG)fi~NUMCUl??<9dYEZ!n}|ck~;OE zd`8E<+^Kfw_V4uox-T}C${BR+No{#^^L^+&_b1YO0)BmZN%zg$@G|T==KQz@{j82* zYS1N6&i0dSPs8@I4M>b`sPGKHDYtUL??g+azhC(Fzj8rrLa5v^OH7}<9jGgm|D($W z#r zbHT#DRRsVO@L!o(#wx81! zuG`31(5{&n$$d)MIrPW%kf|H5c;O`R0^Ge>ZmZHjSKL)3c?$#<#zUwFi- z4}ZmJ{%_&M$Mkf?tt;I5jiKFW$L+>z{1||KrfoSn=W)pBrrhb%bX06;i*`$J{bOUU z+!^k*^|;EFlCKJii#Ou%VGn?~zPPyXG)#1e!N-=Fkot26miE|Q?ZzfwJ=|w|kNI;7qFEnYq12s4k2byj|m32?gTTAMieP~rO6TP<{LCO~4ks3E>cjJbo6>pK| zf=K&#=~4TgAdicrxq>*g$&R>WlZ471(yU5rf2R|j4VXBp2V&2Ubd+1z`bGO;@YAF$6VVOTT_QSneD`y-lG0 zafr$@!JxJwihl`-E!V0XJ>2zJEy;@vy+16IigOgdY>}j&6}cMcDmMsZ$wmVprqv_rAb5ky4F8_g2^vq%$IR*N;Ks|nIHXMz7*jVA-FI8Ty&1F7 ze4Yv1yzY&TQFL#NYoypOkYDy#bgwi9d%tke?>|e3fF$iA^Cn<5?uF*agLXi3c1HX- zXoY{7qv!);`*whzcZLHw?}3?5P>c_F89D>b#P5NF*7IRhpKQ3;Wf9zeR0#Fc7D42R z8&IjU2x6O;136LD+zLWw%mVAAKh!;&1S!dSyw~YbaKxn^SAU+|2IR{;?FsyfHQ&D9 z8R7;zaOKY3-mwK&j4*O*sqX<(`xccaAjTx$zh^e1EGmzjT&WrF$@!q^@vd#&bJ}B4 z&)1+MCx^IjTh2Lgl|>!;rMuba;FVVzPQ3$cc+XXR@6hU{3$L9sOR=N)iK6x78gE5C z(cQQzu?b}x4`P==w!Cu3QB>#59TP8L=Z{95x`{~HJRbY%DfK3Qg6HKo_)70Bv{~^9 zJ+kk^;R9c>B_8Y5wFp%DfH7@yk2VwT%A^d#KQ&am(Os#c^}xr9$~MXcA&T=^bCVRQ?8@O{Qt3w znHRCsiepT#Q8BJt7Q*QHjWw{dKJwxf_t?F^py0MVia8 zxr-kv<_p_*;xT0!C8NwA8u~q9uOWJ^$B`iasc8oA>|&RMeWC!J<=a2-;bAa zmIGx^k!A^ye(NsAm+b{&F%T;>OY!)K@pb};?}%x~FF=A$?{$QAUFaL-MF3>$|$%&stvn6v*{$+TbX+m6eN4Rv^kQ1My znu&GVy9>M>@egQb2I)ILgW~IrD0mKZ|An)Lx5=Z?LotlVTS^^{3JJ6;gYu>s5VYJ0 z4C?NoGnyk1TN~DNvjn5POMsXKkapd#df)1w=?>cPe~g^CFtg(q7W7I7{j7+UqS??-F_eYKL5>x+9OLsKooD}3VP+fOHvpO(adPmH7-4;%ttBZbJ zG|>5AD@<|dq%ul$#_J5^fI-!XUDI(jeP%jRH#Z8Kz0*LiG4a)`xr($y#A$SfyRVO- z>g*^c0lC;9)#m{c2?zeBy~EdCo4}03UpRNGJ+ykQCsU``0Xaq``7u?_mKbnN>HTLX zKNK{FBkfv9;_1M^-|gh<`|V)iV|E^QBv6AlE(Cx0D{KT9f`HrtTV}jq&focW`u`PSkuX~l{w(yk4jN;hA zC2r(99KxQxZb>txR~jABNM&l=vTTUAGEk#Ex$PgSGfQE>b0j~aNUwbkiANxAY(799 z@Wn#qDc&!Q64dWe`3f;w#|9hf?-NIJ3&g{eRQ353G=CN3s?lt1n<0EcH#7Cm^}at? zve!ZJCB1`UiwR;2C_bPd{=4F!iXNTPfjS|A*qcBcOhIlZczFDpsGU#=>ddpDV{N|r z;&)-_V9K8?tb<9D8*zIVOZ>0688`me0{u$b(ypu{+B$0Z`tAd8v4uPTS2TgRblv#= z8cWdDwU=@QVO+C*{M@N%oH1k&KmRTkPn{pi=ig1hp^ZlH?ArS=_Sh(H(KZcB2ao34 zL(=h-t3TJ@o`JQ;_;ZKMbX2{PZjI9LL6RSD7`6}X+l=B-`tjI!;|N}vM`sw*;nZ1) z!md+>QI9eVEA9;DlzT?vx+-ooicLP0nF+w$ie6lIrZ2L$UX;%pfPF`Ma_V>Br}mw= zx~~p9ON?ilKRD?-bMiXl$Ap%A@8dyeciVwH<3p>@aJ1XQKP}C;``IB_tVeE5x+7B8 zj8mQzZT^0NsIk4U+3~03g6M|bVy^=6t8q%#V?doXBu*Rs99p8G!&acVGAd@La&b`3 z4%FZCjWj#*jNTH3PoJ@QItN7XlQ5>Q5V3%p zvfQn`i1)UfQTGq&=gy`X?8W{MZnDpYCs4USI=6j*?E>pUc>kYhnL_r&N5pq+?f}fo zwwiHMHo%GQST11MzZ0=H00y7xrDpD+a(Cz3_`sK-0J$h;IHYG!Q@$r?YP>)?m(K&; zS9TR5m<(8ir0^Bgq8=Ja4HCy>uRm zQ|3#LfD5oVZ<_KTLseM-af!$gxYt*b-yNPf`AFhfz+ZAs|A;vW&-L7hJ9G?IjcF-O zE+Tc`8cBN3!QLcedANTztWB;ZhxR)NSIs_=dom6F?YM{J7=sHdis?O_P@Pq!*#VHt zkN)0bA?NQ}r1uOltNc-QBX=jcDu+Gvu4jOnw~?^qOtJc|0?jyRei;t++}CSE7OYd> zDb4s^A<*#LdKUk3B`ChoV$UUXN3@5UDRb#vHxSf5`1ycUpjboX*Z`Ud)7&f@hHdcz z&xz;3WtAH!SG&r^d42judwp}bGecjwk70ss1A4E0U>A1V@w_X1eu+JfcIWrrzsF*8;v&8M9};7Xw>|e0d&SxE z@DLr@e|>#o#nw`}XnwMXzMT8=IVcV(%_m^{_j;1{ebtT$>M+9T4rVgv(gYx{u2k=& zcP|=B+PhTuAs2-Bu{8yjlJ@p_4ehLmlQBh|)g^JRML}arN$+B8-OWN~6;DFqlu7!# zLCOOwmmt>MYARRvJA=w&u(I|OB(`aay($ZJt23$ZM^kpa!cGop_!)&` zYZ(<=jxC5!Quog_EPLTDsSku|c5tinA*4O2q`oCuT^TAzCWPXp-hR@XjYsAAq;ogk zV3XyrYsMIqI89P^M7aN*C7mim#FcCFq}utW_774S6^)n666#lZv*+$hC4I(N@Xlqb zJIwaqS}r3!?O@mG6>`U-ZV(^1QmUQGl=my8Vi*pzTqRXsA*jzP+4*iPINPt1EgC07 z_S%(_c0#cC;0o!vT?=iCm&?Z=PJr$FrIb-U3q2|q$%YnJVaT@m@_)XiO9QGm!-XBX7G&6)tN4DkB z>`nc9Z2#VHdVf2DgVQP?zbV}T=0f*#`+#zSFfQf-&~qO8TYUh^5kjp@eXh|aLtcQ@{dw>Wzx%NZe+SE z|9;QSG_%;Ooo2I{Q%*$uTM*4DS10~@MsaPUCBh~vlCq$2A}J<<(;Y-~>axCi2e>Yb zI$=wGh^dFy(#*sF3*%OD#bEH=u!Ixa25Z>OSLawHUNm2*?S+54PNbc{2%NsikE{IO z!%l!W2rvjUuctN?~j9fl+Q(?Gezh}8vjj=~WKW~tl}`lovUolAw?+fII z|6PO;tL90ZSPZ8^W=p+~N5L;>x*TMY3q2-GmR>9aetHGSNu83R-Gq^{fms~PG#e!E zU)lj5Khe(8Yb$i~@*odg6qJ1FAc@ZaR=-eW#STsP zt3MOE^~;0U1MToXgCccr!pg!Dat{x{eqImNdlip`y-`ebY`^oH+6!Uvy&Bx4Unq9# zRfl{d8?pRAeclLSaO4GZKGSax=IJ!zhC#{IGs=p(Tq%Qs!-~0!PtMF=>GAw$gB38Bo4K z?wWHJ)SZL;fAC)|LrGZ;pnjDkXF43cP*c8G9}4r^{6^*6N^kfD8+Z1GC%P5Y8SXY_ z4{)yCKlWo<2?mcn%B+qT5|4E(BVG?uwojunHtJ`lGC0}i)(FbYWBiO;LeFwBCU$Iq z#4y0*d!3P3Z@B#D1Ug4Gz{2QtG=q2~+MnM^zKs~sy!Ih=cNd$3Pau6pG?R_4V)CCQ zEF$3{Qg)PWTK$%IBrTxx^KYm-Y7D5|eg8!fK%FgV-fBM_xNjgA>z{!3V~l0+BkHo2 znaS2SE5NnBh3t~>3;cUnOR=;zSLfc}H;uUWO*?sbpgFnr9Aw#YYp&R;O`1{8eMl1- zchjDi?QbH7O?2e@hBuM^9~}9H|2atdcQ_uimt#IVaPNk8Qg5L>|K8kI{(aY&pBZZ- zU;5Z`|Fc#yX_^i1@zO%l%!GT`HY|2{9YBNC6Ccn1~l<{AM-<1_ZjOK;E9Hg`jt`;33`9!a_4&fMkA z930ielaqHB|7`9~y~h~!IprOX?!yMnd+~EGb8$gVZ~k_EF)9|xsoJIJ;Nrtm`E#UQ z40(RPAUQASy`)24UmxDEkG`DWrY~2F(cYhX@lT6QB{{3OTdBFsY0{P7^R|?o)^y@e z2Ut~qFMVcN$#6?2KBb|RT>sIL>(#N8{^3^2BP55J8S_z54Ww&FJ+An0*Sx-0=kDWD zUXVYlp49t%6Kn_6m6Qoka~gT=a2|PtYs&9KQefldKe&{*D3s&H?h)%jarKKjE`;oJ z&u~`Z2$(qU4ifVd$N`BjKidGYuJGHmuPpdW4sMIfVYeOkBe^;l^-q**M?>8bBur1gW@yn!tf*gLR-m}qeDM-%(!M~iq<3~LNy)%(! z3flC8Z*|cM*A&IXD$tIu33$z!eR6IoGiSZ7+h_x)YfL|9a{;-Oup83-q z0d6;qpc(37n$-o8pCl0Azb^RgydR|fHAj_6qGy=cZ{-ft+wK6J3s?HqL+>X1$jGFaO`EJ(AV<&TXJDF8}xX9@Iu4&@(hu)9Z^G@uvf=Nf~h>nqN zK)y<$_8v4Z75-fURb~_^`wWI-ov?ItBwTapPkgkU05zr~Ih2Td6N1ZDWJ9m`&Dj3) zQHYL+!xL#|;LgcZ3_o51XFnarUZ?NE>|ICjLBuo27*vQfGlcEt=P~4VCA<&5ij;$g z%5A0O46VtFmfpkbQ}p=jW>0X-U%HQOdXAL&=Lf&O!W}COd1?Av?AfCpC$2N9@BJ6U zkN9^K{gaqy#C=e%N^E9nz!Mt0uYM0-nfw}0o~_NTCOt<7J3UUkF4UIS7IBbivUybKg;KXc_}Ffm9#OZx(FE8UK- zG7iJTz({bjrKt222Rw4@ljqExBbg@!Er9%I$>H z@(Rfnor9h&&jER$kmj1ue6|*o@7x07L7+pohllYP?-T=dU+4lJF3qO%eSCa zLtWxGgki+#f1u7F$*aFZ(ARMovG9YMZ)47-au{ChqV}ic{CO zSpv=X;+XQehD10sqsab1Y$#3pkSRb}Q*DRttKru48Nz(@CW!uWQp^va+-?s&tZBW! z`uzH&UpCM)ADjMn1c+yfQ{NQByQZ=D=*4Bos(T0{7L@{JS#a;Vd(eOEO(Y%#46k~D zy>p&|TjQ@tJvSicw0tr08O&N=N0xSZRy|7(Gkyx}ftegK>jCutVj&+~ysh$+a(j(y zU{c#oZhm_nRBvE!Rv~ocP2{~(3$O7tg%N{=ufYq{=az^2Ph-u$S zF8AC=`1tk zs|I%D6paDHNbBl+*1#3!@;|Rg<sQ$YZZj+)R6U$&L-acXEf0D2ZQ0X z`#aK$?jBe1MQVE}IC~VGPg#RBL}tc`zADsSwI;J4Ka>1Q8nJ?KkPV`x#tvWqwI=V+oWb9uC)Oa^_wZ; zm@70%ix&@{k0J*46|vN9CG;r&BT_C!!|M^&sP}a*q|aqY`7kg!KN#t|0FxTe!u8#+ z!lr}}RPQI#2hnIZ`4t>J@oDXspy zKxZF)z9Y1x`g>D;q?CBp`rJ%=7i&4|Q~&!RDqeo`HBYefIz9ft@EP7;tjpW{dq&QV zTHL$h8G4%47)Pw+Qq) zUO_dldFy??dcHDhXc10wI|)nf9HYHXE|C8MtwU02ACykJ!QIuJey4GfP}+MN&fLEY zRIiktl|URPwG#mS@uQW0lDZ9Dk>(K4)U-KLMu3g5tEYI^j68+nR{KGW_&VbBJ*|dv zV9Gg{PcsuyTx=kSYbog06~rjl-uahHS+t({G$#_jH%Ds@Z8xsoxvH+g1h45#^)SXR zNo1yrM$uj3GBdB5hrc7gGGbX^%>4Rbxqh=^96a`{s?IA=;{CE-%t{~8z37EI7k+U#l#u9J;qmyXSq4@`FY?Etjbrd+;V z_5c0AY}@Md;+c3GNHQ^yudXx#E$B<~VS-2fT9P>AP~`X>RqnmtI*%^q~_yWh= zZw)kK!GCAl0nN)%aq?7_b=_hBa>=2$aVMb9JJvth2~@X-`cg3V{AAoz3=r|GI}V=7 zKrzmVg8{||E5%(;SD?9ySSno<|5l`jw*}hq=i7U?QrUNQj5UKgPLXVht%Ld=vPY*H zfnw@q_p*Q`R*ulVu`#rs+6jmc1+;I0_W^$x%`6~5`<~sHFiWxN7-eE$Udko5*>ny3 zE~S0N2bT0;b?$1DnrntMkvwRcX^@p?c<$ zCnx~O`9ThyelW+_0aa#1{rcn(fD6tRNZBedZ)b}2vyGsQe?3&$`}Ut}lOyaQ{hjNe z^gO~|{`W=D?3$e%`igdc-5GPbD`@7US&(yH&~8|(oGsK*7t<$Z3mwC4g1TVhOjwy9 zrj{TF0Di1BUwIGlCUSSZ2J{0^S!idrhY)`i@H*G69Y9-nuPB6sb6Buip{R$%iK}y z^x?DWXUB-4rOsBY;iFufRjZ6$3{S(uyDHUe4C}e;!_W0wkeD!_+#VK&4$xb70iLL6 zLq4w2#2}`@**-7wC3XYKU8{R6PzM~Jx()~0@ruv+0mP%fTHPrmCM-GGW~+I&$VpmI z{k>h(IT!}NE72ZUu^d!}dxFUdH3Qd#danTGXSoW?V5T>9Wet`9bqm;*pm}iYx(*CE zI1MPD2Qz1k1HIi|l+EykcX5+J=Rz;|HZc@BXga~5HQS&!w1pSe$soJgfwN6Ee4Aoi z?F73JrUUEg;ga2{oE0WsgkPPC*~+%pplh2%=KG=)`V}l@;pt^ivC@TwCEbPJ{fjlv zGwuWV@Z20jAAsw;@ml5kqQ0##n(`2`hK&)e>OX`%FLw&x8xP>sx06Eu@qH+`^-^rd zdoZP_w(_#VuOKTNJmL<_u568W_TL8cZXQT`F(}FEk0a*X0DR`JIP1imo{o1qUaj`l z(mMj)+*+;p#Graz#Ji{O?MA$E?IfH#zM1-C^zj<9L*;eg$Fw-K*GmVNHp%F)ClP!K zGf+7P;!<+)fORAUKRH78>eb|mDnzx{Ym{>iTYLCG@~kVUvR&k3QkhuLop}q7yuHU% z7mV%|EP42Ca+BIrYSEdy?N~u95Ml+@6RO`$86vIc)oZHXotHJE6cf)b&{UO{ z;iZv3Gzq8g;qmKktV5%R_ z@Dvnl+N%6H(43U!78NktZa3V$`34%<$3eGN@1bx@0_?i>f&3GR@ZRMED2GK^`?t_2 zJO#YozEnFbu;x$5@0<>7T^XF1eh?PhTmhT8Sr9+J5XN54f!UApfcoTcYfK7!vzO4i z(GG~Ic?<&Ugu&yvCqVc340!pa0PHjRL7S0<@O6(9{4Obi4iN@GTumrAUCQSDEu<{N zHa25<0c`AS&ul&&RoMi$!f*LNdsOZ4{4AKddb~)hOaVFku((@q4^a0`JjjiLp6$)C z_M|mnf2af2?l~D^qX*OZu@7urF$d2qaDu64!%#W>O5(O7`Tp3vx5=n?K8NxD9maP4 z3)q1FolxE|HuTX2r1!0cem^SLs-2zt2+yZmirFJ8kg|uO-hz+HZ6eAae?!M!MIy%X zue#R>oo_Xy@+~h~r7P*Zhtpf=t9Jl8ETq}n>{gglVIYYSNV(T~l04IR-@%C3A${?- zG?FSGVw-FvqxX)(+7pdrWYtW}?^929ny>`dbT^QRO+)bAPJP)eYy%z~s4Erwb4rqq z{9AJe4uA85x@LQDW&TG@d6I~Gl3wB~o`UJ^9+E#T9fR7GV&4-7(Pi2tEM1p{|5g^^ z#n0LJ)s1*T0XeugFBiY0=b{*T5YLw9;k+Ix=+iPE_XZ{^Z#FLez6Ythj2~<7MALw5 zyj5o#DmS42)o3K?QMsXsrA_^#ZwdHm(JGACv=ieG%)>K5Td`b@N7Jf}_$Zis z6Q4uz#i4F^|LGD`_h4(^8Axt0q)r+VzaHzF_a;Y<4td<%$i?|oQ1*)4HN`@CB=5A| zC#a7jwtozwTv(={yPPm|nJ38gqJ=MY1??a-xt3<(D+iLf0|MaWUekGdjPs z@n>pQpYaBbXa=<3WSj2vrXF+^TQhaG+Ec*C2;%Ed9xV2D9MCfhE-uW5*&V!TcTof? zhZWiRChTlI9tQGfpyrHx-Y3{GaXB2;{|(!>ghG=RwN%akx?Rxck7jO!qHczq9FWle zk`eE}J{ktTHm+t*R>qquw=87MHRF_%28a7*yzQiou>YMIr|uePr<-x*!)v+QloKZg z9vm^@M#+nz-b>nVI?M*Y<@Nav$BE#st;f4|8v(Z-8c?>pFN_GUqZ~yrHC&HxOLPIs zZSt0mjKyIZyf1G{jDW_BvBFjhuS}x#8TZ zoHS5!;zzz+tOJy0$I}_CK6L2*Pn%=-i`o5YEp+_vGSvmi&X?-vBxttDRHi<_m7e32 zfsfhQfvKH2al$k-7Zucb*8HER^N#De|K7NfJwnRLOezZ1`P()i9 z4UuFuZ0dbZB0H23*(;mOyR2-!=hg4=`2BG|Jlyw9>+^ZPUgtX3^}K|0OVTBu*7oFO z>M=i37rm0!KCemgY?mIK(Ioz5QW~=C!Rf5)3GpcvsXs5Tk0P1{HF({EB9h#@^z;@{ z%dS27*25xNvBXn$NJUiGXeEmmmmEFU@vl|iNO%EU!}t#=O)omC4F74K!K3UdaP6t* z#BWoD{~L5o^_lVU4fnV~;|ARB*Avk=&A9un0)E_}6<wtV95y#{gXmxXNkXgH_Ue$P{GjS|0T0gGRq)tv0odkok8exILB z9>oS9Zpi&&IE#N>{8a+>vo%A41sPwc=i^+p$`7|>%m}A;EdsP@GfyNyv^E6O8|p%D|&(7+K})gOWA+grLN z`(a$za5RYSf?qyOR^6<)qQ=6KUfIDzSK_@b7I>m!Aij5Rgs&Ed%2{fRea=Uy-7&VE z7b#iaQlf)y#HiKp;nvs97?*nknl{<0&M^>86)zZVgKf2TmUyZTPuYbTLneUa&roI~ zIJ2#>xoeOu(C z?h$HsLAg7VWC?NZ*)=3PC{*lcrOn=pO`*uKCb--?jZV26prQ3?y8ibmNaqoKk2nFs z!=m0pwnIU25v?h=3YvPB6^_dQ_;RiqFN-sS<-Vres_2bY(aV~}U#oQ<(w?R3LOUMm zrn)Ut&(jzdCWPK8V7AP7pY`fBeL1ytduse3K(ZIBsFmp&7VjGMT)Lj+PE2kKVmNn9 z1-_}p@ngLyE3RTnTnDbUY#R^HA1+(Pitt3w%B;hCS+ZH&;J|*_z4`M8s{`Ee#S-rCzmKKgh!sERm8l0GP2b6q zv0%BguxK$n);&hCGue7c1YfIU#p}-o3jeMi7iasi?}UnczVUok&xH&7r?AT1FZ?vB zq}Ocw_kk=u!}RBTAHEdPoJ>Nyv&x9B`PxakT-K-MPjO-C@Ya^cw`a*OXvSTg6=MUW z15)k>!BG2*GfU48NN+I9eyrrzzNYWN{BC=e-HP-Ex8uS8#HW*qynmP_idUFtyS0-p z^_JW@zmKpIn{cB)qt$DWYrA^k6s;QXJK~318<*vzQ$dQ6Lw9DaMd{=v%Uv7sNbMZ) zYHmf*sHo3}T^Q7Q2YLV5qjHS&cJyIkf6S%BPK@GLBk?>73(K4;Se#VZ3;o*V(FoWFAr4Bjm2AW!!+e%%*|Y^fB6`# zv~!x;G#VuvN&i+yVb9Rxbm~O_>D5kTkyRNvC8+z za|&Wncu(B5-X^TQw<}jkj1`Vb4=!sMgZce?@U96Pgu~F45BtekUcVF1nI0nZLwokL zT7})}IIx<3(=OQYw+YiweC(WTGy+9?5;qT;X5?>~y#W z%lVFTR#a2F3v@`Y$fa%Hfb_%jqL`cD5>T2u6`h6BAHPui3KSojXvjhCM zcsadqdWgFY9zb1M9FlIrCQ3Kr5pGZPvu*bA+cL9tzv_Ef7@4Vce<$&pnH{yBeRm3{ z@2nO#I6?U*VcVg2 zqaa;Tdfnqm(5&CdG{@)bKt7H(C*2!*AI;L9TyO)~g@8N{A$;aMkb4ZYPT2wS{nSoZ z&jZhap4uaW((1i#?>efU+9{+qo@px?%CfpyMh`rCd8NuSV(IT!bbLD(r7MU$vR7ia z4?SpOg%I5T%a<(kB2aP$r1mHee3*`yM&Y<0dGzveBnq2>Zsu%|_j$z<4N>M=?&=$^ z_(q)7GX$^o?#zkJ12D~N2n+uQ&EHL7i!O^XHQa|?yyr;|Zy+nJ)}%P1q_fhb*+xG3 za3V@>nrlmMS&jVdT-tOv&g+rL4`2YAK2KuTGQIHBktCk}!v%MUuRqB_lReTdo^-+r zix+NZVOZlqhj?xrP#xWGZRFH$rSR;h_58YK0StQ_#*>XNLCl8$?z8_e^qjmxJhm}# zx5gqCRwt}Y_u^iO_E4+OG_I8SM*HJ1N%X)z+NnGbUa_}vYJ6i4?m51n-pXM-OIM-Z z%6hEq!K;u#>EOzVKlEcizT=2qquW%3dz^R zGCNaT%|YBEFpCUM_u=75xg@)J?mzG@IiGdph|N#PXtFhTihV_iyBhJdoVV2Ilp%lk z_L=H6`$HA0{w8d5hZG-atG=HsUX0j~{eAAX0Tuk?@4j(f&5Y zT~9#iTc+~QlCZ+1gEZ&E0mWLO8?71ZcMFp|ccyq*W=S6VwEX$*WK-=t3Xg?4cFMu& z-|p)FoxP~K{q)sOE{Q+FBelVqODKGQE$U$omYaWFvkX0tGXt7I@Ru|4{||>9K_^gV zJ6M>SAkn^y`A_ZkGfVx|@VcD0rz-F#=IB$3Woer-S`1Ivj)E0fVsfw!^TabXSbjlA*~tO*&QL;ViYl zs0q=qr&|Nn#R-us3~^}va4^_hMs_-3F!%a9cv&0@hwSqpY~~u6|4fIFNf97 z9`fvcp~s>Pu;Z;8)Y}&Y(!&eVp$)=-(qvB$!hX7rdWsPDP(+hO>FlO$dR_;|Zerrb55;_fgmjtB$E8nHZ=)YrzM{eyI0$Q`p0oJ@$} zNxcg+lWiNNYc^OD&6e#aow66*iwE}Do3`acG!MvLtqYf({~mv)tG`F)R8sy7(WR)- zoj}P{&n9{PDK9S>TP{YUxDMi%09Nt*CJC6Owx$^%#AXWLHYk2T2y*FZI;3 zX(W3{U3v{jGF1ARs4Zl?Me>vLBPqinRF|(wydDwyCEbT+)ZeVHuQ{1w+9&FhYPylI z7WFx$EM(5zt4m&*NN5MDu=e7zuDq-m;)Ml!;7!a;}BPP)CYazNPent0x!((AdJu%1Brel_83 zK+i+%?3kFM_j!WPzr3jm@| z>xMU_e(|Jl>PpUM&QV~>P`R(ap(-By{ns4F`2BpgU1k{KTt}Ivj1z-=2R}{n|X- z`3J?^YQWXb{-g{0O!(c{A5_b#7RQ(RLSZwj@|WoMB%VNi7V&}xl=(s8DJ0qV)8{Fd zNM37H-cB+D%Z}2tC5dz;MrIn9^(6azQd|VN15j6=P9%K-B-}>oGeYila<^1^l5p>I zVLIvJ*H4ojm@a-XdtpN8!l%>3ua+jB7fo1NY4YziwbziHA;=Eje&WxjAenxx+=aFv zdrnP$9w2!lP4%!#=eA^2=R(U{u28~}`Z8Ves<9wmMObN)0*WszpD%c{IRR?-Y>{vi z%H%!*@tFw|^#eTkT}E}Kf!Z+$cS7~2q3SD_=PRlnxOltPC?7-gaR=OZuRhjD?Wi*U zC>~H$eKGyt^~3*$nc{$vL(v*cF?H}bOfGDIy|zygEucOQFrF)%ntB+}b15G7ZGb%{ zti-4*4bkk=>XMzAYxiJ0_|zP;e}&?IHa0l)!5Wm;9ez0%jzeQzQDq)R`MaSwyHNEu zs$7kQx2Np+gD|ARJXBt6$={&dr!oB2DxBJO0e0CEgr#k#q0%%J2S7T*u*ZdA*da3% z&6@Ye%Jv~jzfk8R;+^i8-gz}z<#ob6jw`TWS$mW|Z(RKya8kx>l+Ho4S|Z%|%Pp|R ztdSUf%Zq7lF}K4~x7o+dq^sq%WT7oAv_tcrg8+GJgP z3E~Bg*2QxyuXA1Z+;c|WCwKLUhl@z^^}2Y!_~M!>bb7ft|9;+>>h^c!miIbR@yDJ_ zy*$aqak$*~!^mgBM3&EwrgjmYfXg|Oy)@4p^qS<1=Q_FNc;ewXyxpdrx@+;vtv13& zoy=eSJF)CHg{3lt$TzmE&m2KuR7Y?(^g>k!#lI(sr|C5|_yftqs%92cyz2qWtcxn$vzOCgd z9uDVh%42!fv;OfWx3U?)3qtR3pHrh*<>7^s#7P71@%O6pc=eWhT=)4hc5%GR6?(1W zqVu=8Z)6ag1l;6b-eD|#daN?Gic7k!{RZh}IL|L0L~%x&lU)6F3^(&gXSuWSypQ|& z``gX3gWk!n`o*!^rx@<>Ogu1eLR41)J3U^+hV^1t-3LZSuVw)NCNvaHW;M5J z|A*EWEM%t|Cn?8k0*83`)4FSJD(gcZqL6+1%|Cp6bradimjT6)zVvD(NdAr%XP<^* zv0fcMTMBKagwTd_jZwO_sr0rE=;M&1e?2=AmDlI#qlMVXe2jr_sC&*pePRmqsO8! zm(lp1r^>A3(7iLT`uape}`vbde- z;kH0{8k=x%t+{yhas3bfeZgrfaIVNM%y3cu6Byj!R{vi)%3f{Es$zid=nv12JIvMLJ0g!-74 zS1cJaiTwvEA1+>=l0HGJ7w@6l8#z-dz5v@pH%QJ&m~U{8Bx4D?5*|}V&{b#=^PCj# zc*}_bYV2|rt}iX5te%;$?D$U-y#efg7;r?G4)GPM^7EL3@ba;dV)21I1KDj%0?2-q z#bX5L7Pe&RfB?z&h{tU%D1N-`8ss_9Q86(<*tjeiN|3#*oTvY3E)#n2%|g( zwRQ!a*>pfft(K#UXcKkqML%ZAexf#shX0oIa#^|NIV`SUJ5e#@__tu7Ln4Q6fa8N3l#SzhQ!B9!FJn8e3~?DT%zLQ z>WhL>NZ8P6l}GGTUNcQtU?h1(E&awpQr#S#wxo*oGX*>Z(Jf3eSkfqi6jSs;=L`~N z1L!M`2>UDt*4#Zx>96iX%N3clmtTS3i=)&j;6KP7euN}v1H#>-ZofZ+yYm5h^Rp0I z#wO9R%LStIZ>Epw`B2_0oNhO~14EWCC-quad{pVR1lcvwv`5(>-eZbAash;&M+tkg zV2jUJeb1#V$yr^}18SZxxgXVPdO_vFb$Kqx{W3!L?Qss|bJoQt2GY%{%NzpYOVuCr z%mKwJ`8o3n2(v&J_O@iPI_qk-=%HKd;xh;7ao2@A4eL*DOOqZ_koRrsh$VE1p{16R&wVah~@uG{tT#&pVWS8n2!=9j^tAmYkv&%K62Y`_9E) zp>yOu=7mGvEM~<4^Pj$g*KC-81;(pcF(lfi2D12$vF`3*=>~Sdw%KY|Ylfq`u3_;2 z;_;6W$_om2Hmu{yb#7IKh(bWsjmzHRp)mHB{x%ctk-6 z%2~-hYe;US_&H^E3`X&W(a)_xCFkO=9f7DAAkX{))NV_64qmM^aZP>vFJ30lqp?4V zP6t?NB}xw?Sfu(%m(2?}-E^7qN#Uh!Sonop61vQJCCa?uPHlJojBq-N9o_< zwb$z5Z;vMY>}@sdeWwY3Fe!_{c1^id>?cV3*pw>{c&hHUEFG4hy3oaw58|y=jARh) zi50(j+l^){_iIp|O_>8hm_~Bm3 z)VHNZEP8_d)oeo+KSWx@g34;X)Ss;~U^$a?>7Xv*xFm#rBeHhg6^H}(TFNPK|Fgjdu@5~6Fw$+E}-I5PO4cC8$Np_8i^T7-!^sM*SaLzD_j{| z_U<)(_U()gK?Nkw50!-@?Cg$<%RN-R^~y7$_isGYC;9AL9idHj1f5e~syP(2}v=P#T~5Z@)#KYIeib6WEItra^$i_fVb z938FWiJh_=tFOs3TC|I1x_msyX!Ti_U5@xf`>QM%2oHm#7X&)ZJF8}KZASZ#BwQ`6 zw`&cxTh&G`w_usI?S*F~_ZypwEfyN<$= zPqFBo^nB(izOXNb=5;&C^$$go(Vt9~Glmpz^4RfU8lFyU<>*UsDTlZycB*_WdpKmA zI~8Q?utMCFfr^RvhtW&ygiNCw`O`;+^OXzkiyrFbYH)sKCW`6F~BkqGe15 z;fxADdNQc9PkQ7_@>=4Bfgs;0B%FPaY$U198^^F$y7c#g><@MIGZG(}z3?EkW6$?$ zm;@FYxb`5AlAm%wWBEDR+3%!U}| zvXu}8W}usmb_86y#9NLm-jx+O6@PN$JZ3zY6LDH`jLukrR)CpSDN;40?JuO z75Yv<_5O6v@WAAnpGkQiyN17~^7lufWFbjB#rV5I{{O%JKfUaO27%`#U*82A7$2iW zBiiA&cKb>3Vsg91lk%Hxtr{kLC`-vF&7gS|&9Pa(j->7$A1Br$)kivs3PtB^fx>{% zMORWYgyJ*HjBzh*Lbis&iA(j9uS4Cn&Zl=l@p@~U#<`(%(P-yFhG46*2et04J#g=m z%bIhUnJAtf%?lPPy#?-{@Kt(0xD4=D-etJ=Wi`q^6C|IC!f%A*=K}HQr(y8)PXNlf z1W9{VVYO<0(C3vO%1jEv9!ANqLCT(Kc-3?}j2S%|W#P0uiu}6+T4{vJ}Zw>UW?TpRr zmx0xZUg-R;6O7+G9KGzS%IxBaV}7M+qL1R&Lv1wI#3d-q*;MhgtGtBn_H;G!?o;~b zp@Hg|QNsLDJdWQl15nKq(>C}EYiSM5Em)@V7j$giT;;EpJ*h{@Gw@-0e>qP}@$Q87 z$`{7ZTUlVME#}f4Q4?Fuc3@YFA0WO{u3Gyllo~ahmlY+$4vQ%~^sYaQjrZne;VxkF zdj(f-UaU!99oMm4sHHRv6~20RJMo?J!(;Bc@|C|Edr_}twSm_a)Sz1Cku2Ucnzl2F z+i#pm2dhN0u!^YP&nV?(ri`tT{JiuLlDjltNzA3aQEOScj!AqlD!a$x%@b~@F$*_^ zuSd3E;mdH|b4OM^7mZu>;j38-SKQ}NK&IwL| zoVm6ySN;;rwxc`qKL1cIHbd@X7s~o0D|T2M%tklrbLVRTY!+Rar{7x1OR~SvPw9)@ z?tGo3$3gs3`$;jq((HmsdMeoOXdlsvT-Di2i)Pxfc-wWKnk`s(eRksGXJIaCpN<={ zXzTF#ZaMKx4~F@zenR=g8x9P{8w@I=YSgZO~66UewFVB(U!Y!S~#JgQ_-SO@8qjWd)z7b5q z7sL450~D_or3amS8xBRe2k7lAM~iRkx?Q&x6UFnmLlZW#@`~I4p?Hw06VW!bt$6b_=QcvnbO%`avX(I9Q9Nsv{ zo#alei;qckt74@&QetyQYEhU*@8)`w=tOk9UM!8j`i#^(-{IjelKx8)|1p1ye@ksT z)#E^eQli7P;QsY0bEhqKJicyi#X(V-T}~|S#VevLS)EtHES4TLkCJ}0ZtG`oZ@(_; zj;HowEO`u88T`J@SF`L!c;THOrbn`Kekp$3f#W&7Rk(O0#;dcHO+StkZj^KwOdZE< z?yqHw;4#9~Su3;ANXflM@Qlo1>=qWzq52^HT6GO)UUy^JJ@T!J-B~mZu5!42$=`3` zZ6{ht0ROsd$--o2)$6LB7wRrr!+1GMhKXnHT`cUlUvw~bf!f!JS96xi#FCn83um7v z*KcoQu;@lJhMQ~Xl?)A3>ek2Q0v9WjIH<=Tx%zQ+J9Z@brQs5iDfQ62E}|@a`=zZPB5xnRhhw@(eG$oR4n0%#mz7) zU?_@*6zffyfa@de@al-!sPu5*3S!3ojtHy#vEQ;DD7!qomJkW-rN9;KCcTaqgyg<%N>nz;?9uS&7hQ7d}}OgzZz4Q1l&~JS(N-&njNkn}-`Q zI9|9_b>dODj#&1?Hk3Ui7M|aUGgj`zBmX6eUoipgwo4yl>Lz@)I~j#PiuFn*q4amD zeVNR#tCU9))6Kkv^S1@B|D1rccWuN&-`!EVy-+chP90r?p@|mQ>sAnoc2x2;Z5a4Z zv_7AbU3r5}^U%jL9XhU=hF;TR;8yTBZ0t~j=$uU2u1 z1Ik%q|Nd2L;iyHY)i*Flr5!y@YM@vmy7a$EkIsGl*5`7l{78#G7J+0IX_CV&IQXSM zb*`2H%2VFKDOT;$Nj$3{{oazrwwALvl|*yWL}yZdV*6cL4<#e2>B2W9>0s9t8&~co zB>l}?`EUs395Uvn3l37fIt@!QGm6z6m;aBX^P8t78?nq8?D@`;L#o>H3|HBO@3&+B zg9F5GZ?AR=C0e~=1gY6x?Es{+jVHH_;LLYcig(MBMP=2MDGWb32a~vBX;VHj;sC#S zSVugQ#PjTGv+KW1mR%E{cRI_$jAxnM*!iI`J7izsJ-_Pmsmj-t7e>9`_@i4h#a-a^ zw=KAf(*s_x$eKm_lTN_4{K!ar&AT;WGCk$4107j&f5uNVXTI+AoCn-*U(%1No<|RR zKVu^gSFUCDgeUas#Dn_e^V+JNIOE`5R(aTl$6sAbA}rzpA@`%Vj@1o zuCf=jMDek}=J0lS$Y%?f)OV9^X@+NJ(hD-`3Pi1*iNb*amD#Sk`8&J~7LT*!RlWX( zi!ZS%Hg$+b;S%AQ*f`ZMf|HJI7uJ0P%YucqQ3J&e0Q*T?$98HHJo zD|ct0U0)M?-60cQUf04>V@}}CN``pd=#+Rws-a!e)0hxZ8Eq3zqwGY`b>k_?2UWs_ z)+ZG^67N(xj*?5nD^-rlUa%U*3=!MVeM6kz?+}JRki5XCJxbTW`Bise@;g(kC@dA> z5TR*qH1br7lIO?8MY3c3vbv$@$E?k1RjmG+|%xriJTt*%PqZ;VZrEY}w|dI^lQz*QaC$ zE;A%aK2p5TK_t(x5>JT7Co}O6@1jPvo2rZ^&E3>cbv=>ncUe6zoCek{$shDxY%F)t zGCaek7E9)n%Wbd5;*D4Q67fkl5e|N7#UNto6QSvYK<=(jNb$rv=U*Zg?;99ml%I6B=(?-vMFClSn%Nlrs<)K$sgCfy?Qx%pAxh5>E*w#zgpVz31}qiO zql9Jcf2J4ivVQ@>?ZrJ$Zh`C`)qD+)&-O*rOPM9V%Ips+e_&E&8>rr)fWaG}?MXMh z_{<;F9ru00L{K~)xqpJXm$&U!SA1AKW&V7xsa|?vMV9;;vfWa8PkP|yW_EUp8?AN> z;!!~H*6VU7LD?zk?LT)EJ;H19$k{$^Q{8v6oIyV}N1{zOp z#m4xxR}xJZ-#OHpLel`h$ z3W+Dly3ue@de^`wO+k1m;$69|1$M|K+titw^s-W7MjLzKYLjI3(u6ZheQpfaxBq-6 zevNJVgfhjd??s>ZwG;~vQkG5?S^OcCz1C3WW=Ne$YM1miv$^+iE^}Ttb^RJ~Mj}@%uT$8XsmbsXktq)UY7PT3^ zj&mNBm9rsAvYGNMSRc#6Md6#Naa_f;8%s`8`1hlDa+z)HeQ6FW#l-9;7P#HhM8mdC>UV`2H+=A{Gss>z6sn8|vBe@=eECo~bO)a1My9#fyc(A≥ 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�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 t-wdg8ZVo9N8cvG+-_p-ZeQEi;ca&D#hyIOz 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[ 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 z zZlT!9cEg<7SAhY&=W%CXB~};2AmBrsb|MG3O|~~6Rf$FZ#q}6;H4cCDKf}sti5Se@mV;fBQNHjYK3tTF+M<M5 z{R;YiDaGk)a?oC{5PPz6v0L~WZm7z`XC;?$@$W)>IFyV#zm}lPuNd@ST8jQN!ccN{ zIm-K;!U=I6{uKAYFijqQGv1EzW#xE^S&jFq%Fus-3$EB&im=WOCo68EeWNLQPAkEy zdb9AEeG&d$B8R5>1(@nBguh?iK=}n<>9}4lPIy++i$2+GFJUH?dUP4Qmw2UnqOrO6h*eAXSuEI8$Qh6f#ASy1#DDf7{3GB;h|^A7t8kg5zh8@1 z7w(bgTJ8v~Z^(tiPWa`)5aEei28C)N-8h~?=?(lGvt-2N#DxVVZqpAdmJkMhWW*Tvx7#{?oZDh9j4 z{7L_NQJ5CAh^(^^f!F&~Ne|omq;2w+v%y9P#`1$Xi^BxLORmUzcBB9(ITnQKn)H<(M?MH+_l~nzd^ecHYM#ekvxCT$ zWvO_0;TdwuISXla5Q%8d!xipfq^k24@=L^${@~jW|Z zBYt`RfUNd?g;!WTFn6*Y$41)7uh>txWX&hiWAYVMs=kum=%4t`aDaFPjbQJdQ4(!2 zff)<_68RE7#w&aZOd1L>(ftCDn<&Jb4q=&biXzPE=R#1LD#qk|7la98Nd^xI0R1A( z@N4qJ((vib1EDD}#4^Pt9R88r{ECd7>K_uGuEeA+9VLIxC^J?uzesD2GIM(M5K&v8 z%)D$LAo=^1nEMBRkUx5gjKJSMayLqzS!Mi?k~bv%KRYDT!fh0Kl+ItGlf}uwVyna`Gc=FeJ2&G2Jrsd zFT}&88&}Q!NE+i`|I>SUw4;NX2RQlE~_JVfaty zC<$%x!qo1$WM%RqoS!I3P9M`nPs379Zif(V_%@wWq~1u0aC-Shg$vXTFYt8Q7t)_= zrqBvr3y7pQOa$Po^9$tQcGznzVRlVnl zZQ2$3F!~1RdXUEUI8>2=&n!=3cPq)-5k@DL^^u3)e5vZ1e?-xK1&v7-22BS8YUwBm zIoYGU4}3CkZtOfyxotWGzS>ZJKWjSd^l;(iI!}YZ_X8X;M{!s>ZypI27XbHDXUUhI zpQNSYIys@!O42t!C11_I^Ln(2@k@sk-FlUnMXbL5^{j7TC>- zu^yjh0xi0mc(RHBruuyJ>`^DET;fW1XS%@WYmu}xaycX(yh;D)u7l?@Tj?i*Eg-#h zg6iDg0sPZs@bs0v5N)oFD|&oj*D%4I3jSau=Aq=R_gMSykB5$A#npf^t{5z@m%mwZoo4~u0g%=W3*hA1M2Jyaq(Ry3~wt%CD#lnI+lmCo6{kt zITQW#(?D)tDk{%lZwnZQuj&)v7h77s1(GEkbOfY02WSq7{SR`aaj>H9Af zQnVn!^a+*omVxx}Ogg$_g78fJX@L7na%Hgr&8W{Ot#`_KhV8-Rcdt-++;SUI_u>Ml z=fQi0!rdB5*B5Vvs)Uzx{qDoC&31@}EevKm`b2Q@Z6tImDPfLwB3KRTV$_F= z;CkO0W2a}s)_7->{e1)U+?QiiRSB2|Y(``#ym-6^w^ZDN*E)x>Z}KrXi=M*Fx%IHZ zAp~FgzJx8C&au40w;(ncjpsIhg1_(LP@Vr9+!RP+Ije)PcEbhy68#%iZ%RRhd2DZk zc?xb{BE)sNlZ?AIiE=}86Y$;nCl&FW!v1Y&{nu7F%$qG+M&=5i9OmVI$Z+m2ekt zm<7_KTyB7?BIvTYHz6%CXfSc)x=4=@(cSa7vrAu+eD;QfqBn_(#A2?=v>0+w!<9Sk zxQ29`a$|daWyyX`ckcREmpQxH&k#?r_Tad2!>)Poybrr@KgkXAY-TOu+Ia(AU@@ON zVCqK~-gM%Msie`|Qaf(@4Wy?%xZG=!ujrn;R$K$GpH#HVlsouG0GmY&xx!neF!6&9 z_jI!&{s_|KDnx2xz>o@;Y|+EfdGg$EPDc1DS(^1pnc`0|G48M9=D6~tAh&+KCBC+v zgzwc>D5?AlwhdWhcfePe$xkq9{3CpvBp5N}4IDYn#Z=>F(37=Alb&ZV-Q58jo<4+i zJLY2U*EX@>r=lBH4_^VPK{s~JPlpG6 zZYc351#&jKVG=J11Rl7eV2{F>K!|2gOHE@Ap}fetZJHl`m`c9Q2t zTWN|@0=YLFLnGgm5(%+e^k>dXva!02PMjGb2G{s7KwJ_oGxE4!Lxc4-8luIJ8H~v| zVIZreY}~yTXPsIF!~1=3;jkyHycvQ|oR0$>j>Gjc&%&79Wo%=;@(20yahoU0*YKd| zQ*jYgH?upJO(y)h-+(E%ufoyr*LW!E2FytPgwpN>Kq~vtq^S@(77pW<9Yx^rZ2~*I ziXbI*3iA&BuOA6AUQvZmCdl>$>lc8KlQ6SfHVP}5(z2H93m>|dc47Nk}kOH%{b`>~8C^MNS7ee>!8H`IkfPbbsld?`9w4P`(CpRj= z1)o_=&9D$`$kAe+D|8c$x!TOC&z0oH4sAw9Ifcj=XfrogY$AoZT1j&K%ujOr?`mnWB7OI(l1)X>LuUId|k4i3&=0U6{^% zsBfZO`=ptz_qypj_U|$0{ATY;B1}(>5T4TzVvJNJ(SE@cCNFV1uC@7%r!*CCrp*8@ z(p5rL`yR~HRL0WMb_^+Fv!yQ0*ypQ^Q{|tcRj49P54(q&Tjg-Zu5z5cWE!^pEx=Q| z*&eYUS5fWURQz`03XbPb!N&9HxboQ;eRVAr73{v#D4h#fYuZVZrX`_KdmGjAOTe+^ z&*`(_IEU&xv!Wv*|V^*`b)F!lVB#oWav=H)*-t34EJg zK#BVy^iaM=6NY!=`c0Rp>jay<&5ox^`&VFCR~TK%w-Dv;9;JiAT=u55g{o=jV_EJz z`rca!EtpyKp_VYF6;1G_zW7E(&fVl`Ev}_D9nQR`G5K^ayIg4|A!A9Dj zQpk~zSEuVH1&GzFM?4TUBCA%J@^(uuA$F0qR@`VBEOvFBZB3)t5^$xv4kk}K>9X9Z;JCe? zW?q>BCZS{WS>_lS&*Z~d{{3Xum>~Y>`$WPuL{Z4PjXW@yz!%@2k+3-|GdZk+q?btH zxOF}$`YnmmlhTNKsszSchmnUBVwjS=jhspqL5H0dF`8$SvY4PK>>0M5@h;_0l(w;xTjRDQ%FB$6mMV^sdf%oSkr%UTKZO8g|c2ycLcU_5XM>1Ht%X z)>7V^u9N5{I&N+3=Ys-9Lmba3+fjJsI&#T-CEkfoC$lZ)W7D>0WZc;rgEEH6;B{@B z>MIRx60%t6J_|`-J51et#A+9tWBN~dJ;y0L9;R-)!#QA+0zxMzIsDp}U?@zPJYJLu2W z0VL?2R6wP@ zN?6^$jV50#fg_FrxKaBitbM7B@fU7F&^j}eKX()MXD&qb;u6>=xCL`#ia^EJ4;yUr zp@}(*in-SyqB{=7ysm&|#w9FMOoh*%Z{VZ*Z1>7t9xlmbJEjC4;lRg}tXKRwjs@=p zFZB;-p}Q6?pYFr9iurIWdK`~=S%ULa0Y+eJC&J1)m20|L4~>0HG^~xs4%OWUvsQORG16vV>q=Q%8cBg z8ON+xk$F9%+j{(nJoEHwyLH`VmdCeJj`Q9`npr%`vL2kp*{;htPVn2Q%;ob8N7;a% zkzLWnk-z#I6E;ecY_p#@JIs(AnB9dX|GAL`#&7Uist@tDXvFh|Q6ziGBlJzkCLbFa z^!2?*9DI(C;dqG8iEm%@^@>fC%_rjmMYIs2?>z-)+%Q-8>T& zUM7LZLRGvr|1!LIsepe*u7R4Y96Eg|X77#D(dHXMx1kIQHdR4V+cfOi^9)=&Sw4|@ zGsqgr;NYg$AhSmXYid5gP6rv}wSESff6_?ret{-7=l{y$8!VNS!2B=YVEG48^uPHH zjCKfP{>-oNSX&TVcJ+Yx3O>9o{TUK2j8etVY{#wcck12o1_nGn(mm5#;Mk5AG`_I` zgH(c`cGS-Zujda75?^6&~FV|LmLS zb1`4=viU_{{0szJCoy)m2?rG?C3Lrsh0jvj$cs$^&j=Hg98Ck&cLek8Ghq0x1Ipdc zg3}EPu=dtf5Ps{94Xdt$d-^I=$<716mQCn=vH;fX*o9t#MKJx*0bDz`7`AZzFm`GQ z3@8VnV?qhozdVDRib_CZI0P>Wl|Wr{7`|vJf{pbN*c)01hZSQm?q~tDK49mbSNY)E zo`mY2`LJkz8XjkV8$PLI;QRmbp#-y0#jpT=|H;MXeTDGnSw8M9D}vFWV)Sk*2FLMR zxc6WQ@LRC<&pOs`zn1M0WwW2MoIBW|coRk!R-*6i68N$60eXFBbI2PW$!}(6(@GQ0;D|sQX@cmC*S{Voe&4Xx{a14ak{K99w2SKE37&Bz|!h(CFNV2!V zufB0?4_pToU4O9e-ZBt8{})3_S^oOlNfcN=pUqGI!_0k7@SUHJNjzc?bA|YrvW>Q| z{=h#}QlA5(ODBCT~%Z1;oUm%~eHLzt_*uKsT%ycR- z-_8J%t4dkc|19u*k&9j5RKP&vB72*f4)N!sQRuKZs4hE=M>hzupC0HZG6i;a&BOOB zXCz~bHrov`N>b+uV88wd`Q~0lMNNK@hwVq`@_9pK>{AQxcK;BOP3gAooERkFrAEe< z4UiD42y*n@58`;@0h#f+pS&p0j*wZ7#W0flkL=uD0b%Y_ z!FX*otg(;+-hvmP6RHTAiXR}@dlpQd`U(-BOrW4}7`A_~1wDB_?g-Znv_}NF-JdtW za!*k%pWj~S-5|-mVxS^$2Dd~i z65b@La#st6fyO}8(21&%U)PgDb3w* zbQeTuvi*{BJ0Sd-7@jUBrR)f@$SeC!hFMQ)=zWRt@Fw>qSxHe_xeY&v127#t*ancZ*Iiif(v9$&vq2!?kAy1d-0vB85uJ>h>mN&bFPj0 zqvwBnIPR&e4!CYt*?El+{81Uo%PS7YEe!(HlJ)0DkIthZBXP)#1=9lyl5yM1>(nhI z4Hat|sdV^d>=YTNQzkO;#DVE(T$6)p%xr|>YiQGAk8g~wXMTfQl5`{-kil+mjdiR7K11E6kxDh60Qp`K&ys}$ZaXW2j?^KYhoehdt5^Y?;`f* zl!v3X#Tb%MfZIh%uu8cI^T$ijrlJThw%x>4MMdbe@)p`x7vlBhw~(-}zG0QFw zVSh2ckIlt@t_ApaP7aQ+zWF)j8F=hOHZIRj#kcvF@Zg?!92-x@IM$Q;!6g>Q_nkqh zDPfr1;DdIfC-IBHW^7g4hZk13v6}08>>1?Z({+n5UuZU#Oyl6(g$k%QLmT}+3Sgn3 zES9tT&Co-BoK<~?{^!?4KjkD-`|Z`V{F4WbD$Jt;3My3fKrHRZzs|cbe?P5#om9@* zVN0D~7;_fpi_*h`wVZy}Y+h=fD(PLCR<2>=LWXo~IkPVxA&d0Cb6SUEh??y@GRDay zOE!j+8=O*d=t>dM4}L@x=D#43f-S`B`4FjB?Is7>grR^tN(PH$!HmZb^Vl2eK!Y&+ zy{ip#L&V_z;B08o76V-u12`oj3=g*G!}HcD;FqimuB(TM=dM|hx~+@wDrc}h{THP8 ztUL^TtR#~fk`R}hN1P7|z$fDb5+gcDk_UXr?6^1N`4Cf?rPrPTGN1$Ddp zimJ>xNmHZ7sphIIYIa!?Iri0bX|@{fd)i0+`Al%_0a2E7ZHHgA)$rO|H~jn548zAZ z;PCf(IBDmFTS`}>Q0{SzVYP@muS4+D=@U3@N)e3s4g#N%<3SQPw~g6f!z(^z)W zjcJ$g1pifhl9Gk11oP29B^R&o-NcSh`PiGo!=9tXc0*} zQ&7^O9s_Tm$L&Q8*s(br(;FM{@VirZ)}V=HU+%-xEseO;bv+)v*MK@%i*RRs9qy^+ zU}qbfZTYN?5i(DZyF?aW6jb4iQhuCXeh2L>yXg`sicRKEsqTGtVzJJr*(YzXT5Aj) z*2zTbzmq;*l7jL3E$H#jF=)7*pL(7P!T8o9URsndhRo&i0!lYw`h%BcV!IaNiIG>< zqS@xiWNzft<pcQd2)T3Cyjrn zLz3pG(jGYuc~YOwE38{g0;F%1x=!&REr}O7syj{-#aLxh^DvG?zS&Ba3tuBT!|~)s z1dc2ef_q;SAuB)@3d(iCyly5ud}Rejc4qK( z<2;aN56n)%yP3y9S^O+KIT#E#C8I$+>>LcQ zN`$*QvG8ppOG@9A2tCSKU>cSR4ZE&`MdoGTn^y$w*Ro-%aTyfkU5D>K7~l_KHBB~; zd|K)j-1U3}N7+oV&&sFZ^OXVpnp)7n1n$!p@OaA;@HKCN zs;9}2cSfPJTO zpjE39;_hDp`|vy9|1=qLZEizEQ!MOfUn?DF!a*#I2M2BkLd{?qJoGvU>+MUSY|b_~ zYQ*;5Y*@y!ZHgf7k`ok5tg|CcDHDFj5a)yucmWy6hQmQEBfT5 z2rP;DNLP#v5&fB8=*OB@T;Npn2w)xX;~79ts9~PwY!Me>JjQ5t4Sj2MrrP{ zGR_OJF}kch-Fkh&C>_jN!y9-zLJ9uk-4+?4ywHVoTEj2;itR&uy>FO~&B~*vJjSR+ zd_6sOW|I004bUDfLF}m$LuQ*Owx3kRef-kM=9%%zOnE$z!a>)QDk#3e3HKCh;AE)_ zYOL46agF78N6QfRzgdH~tjy8k`UVWyO>kgv6E^>|!$XI*py8-9rd`~MZVqlJZ@CR$ zhp)f|m$qWj-SyaddowP0v<(l^4R~?&ZrtU*7MC|4z&OEG*mv_V?pI!pG5p7HPt;Nz z{CXTk>)r5X$Z^!&>Vo`hkK(UAi*QZ#VeDyKfZz0e&?$00YChYGK3>kKskalwW#{3d zWm|AYixVE@uE)7A9I^b|D!k3+Ei`=p!x=y9G5dfEdi&eqAFp{>TV;dB@wRx15R{VU zVAn}Y)XXr${pU>aO`H*q&NM`sAyyBI)5X2Ax)^k57Pj!Tu(DnqoqlNIy#ZAWyQ_w7 zs>&F*OBq7~=q<4%&XD>b_5OI9v(@c8{d)EzC$y@EmjB}? zaW6kn0V!G1obZvhKGh^$+dHVkgV`idzk~J}8xf`9_w?aSL$a^-9aXm1Ca*%@QL`|4 z64TyJceelIyu@~TO{|6^pVv;G9E##}4ZNeWtE4&c1|78AD5>-d_cQI=rpjA1+Dn_W zFYzWte^6)lue^`kL3)LwLMJW^QJ+3L>h<3cbyM3+uNDu`&pB*YbzeUvArZ7!;v231 zFNs<_?xOE6T%u*9gL)mxq9QNf(v+MWYRBG=a+R{_&Vg6-zUyV$+tEV5>0hAzM_Q;~ zax}I4+(LQpgXr3^R+{r+KMk>YM?-Q~(ElR4XvQlp?fLYR+FVehhdxZwNRcU2!BiOM zs668Zt4u@nEpa??Z56EAVaKyh)y6iD{PJEoRs+3q$g1lru=li&)@p@Lcye$Z$IfRl zYS~@qj4t~R3;TOGkJhY4ug9!*C$s@q-gYKiFK$NnRlX$D#RDZ$<4H~OPQ->AB(!KZ zng>>rMHybGlFZIMulD03yRRgHdZYXMza(_pL97T70nIN5vA{qE{9_Mc=a3R;pE!ic zJ{oYb?I6~LYD1gdL9}<94VmdaxU|gxG*|hc;zA>k)$_q46Gl*-?Tw*n#&BnHKb~G^ z0#o*S;UN=Ki2t`6D_NZhKkmYspXP9`Z3o)OT7stScHHpY5>8)Y@9KJ1K)O8GJEJAU zoZo>mj0Gqad!p?nQ-G^pXsuufISxLk^FbT7tUki-_%m2OzzIC|LRSGBSAy z?Utu=GKVgq$Xekw$j8d~rZSs`cFEx9Z3$FBO$^`N3ZQ>Y`SHyXcWU_I7p;v`q}Ea0G)=dHH*M)_ z`tB@0Z}#UpD%Lh(trK2JwX~md0tIf;gb72kHYJPh%05hvElH#sMlX@s24`tf%6*dW ze}F>HM{<1n63S%$BmU2gY5iRZ;QJ~?CDOg%)GLLDDAX>n}z4epAs|3 zlq@Du98=isSVvUyj9Csx4^iD{1da>%;2+NrDnuor?P0VByVn_BO-LL}TCS;-!_)Q9MC!-=?t6R}c$#vYKtND9S#*29lek zuy^DVbk3WO-5Xera;-d`mWu|Xeq~IT42AbM)bY;yM}pIk9wdC_dw;$a=|xw!-P z530e|zx#1or98y-`Jq9RBuJK=!t+yD-{`*}{9*T(+^G%4x5+=r=BhAkR_h|27tdj# z=UcMMClYU5c}Ze5qH*VB6KT5^gHw&0$jPx-hhAY+i8$A?oY;I=Ml2hAqjoC ze+d7>cvPt117Mj68HR$8bUFfEf`uVREEJ8$#K4fB?Vj|J0-d)$_;mSnXkfiV%7%(i zziB!4JI;U^ZyZtU@l1GQrfJ0J!v&@)T((EK$lYfBifP7P{MW;xDkdo->`C-0oD! z?=mCZr!!#tdT;WlF$c72l1Xv&4N&}5M)DmC;os`##OG%*6xj9=`ShExQdR)^m)ruI zXleLhbPK|&RpHj%o3L}Q9<1*u0gpT8Am>>O;e|HPn^6eW7w5wJ#(b!8Vl_>zJeXaz z3_Mp{2erPn@MrloP(Ho|1YczXG203MMO=ZY9(&1aNc$UhRrnqU+w{v8rFt`Hi5{k*Mx?KaD4q#4Xmrqqj-=ij98|i%RObd zrJR9*50yYZnC0j#REC|q^U=gd70NqHu(Cm&)zx_Tu7K5U{VTA}Ru{r`?xPc%o3Y>c z2)&Jr;HfB^U(h#!s;*~faK!{t73^+l)nvWMO_sGny=s1P_rHSg#@sy5r5*qQM96k2K>atw9oK`W*Y( zKaq?JjR?nD$d*&}=>7RI3DT*>PaGck`{F77HO(c)3!b1+{{?b#{2{iEg_A2yRT#O= zmn=@JMDzR0i1L}cnDN|{s5w`lOp-J~Cq&Vp51b<(%J9|ogKl@{Bmf8*T*9PI^ zIyY?o5{7qAxZy6@Xl#pi#oEJi zK5kCLcQ-gVkixQda?LUIcr4cKGQ#ZeNG#c>hiCSMVO`2BRPhYPKrMBA>2nHu_bKD$ z|NPhvKsmId2T=H!G=8r3#3Sw#hc3KV# zu6R-H^P>18*op2r@|)_8*lr;>oh(`w485MEY*pY=iD_r zMB_!SaMowLP|5fK&hH&M6#LZ4CjkNawa1YRi9O-Dm~A3LfgL?Ma+k#A=W`^k-zJB8*K;a&m666sw)XOJ9+4NRDQi&5AVFTj zyd?+YhG-q9~X5N9_b7h#<K_Te%Q-C!<|$NwvWi-@-u7(R%<#gVRIxpiBfoUx;9iPh~mL4Lzuie1?%=(u-=!S z^x;YXp?|Mw@D4i&B~>)J-wBMHuF=)K^VzPi2>L&Y&O02-_YLC`63MENG(**n-JxF?u$@LGMlO|?WwePY5ktxU+>}QAIIC{xv%@Y&hv9d zzcvH5--a$w+6;fE$(}@r`7StsT5H3?&KEw?m>=Hd%0PJ9oA=l3l&_a5ArlDEI9Ee)|*h$kG9dWd4#H zGaWc)=M;!Bv4=h~6P^ayLZ$WsSgK$R!sXiV`k5v8lo`OBty_V)vKDHDxgFhwEzsD^ z<#H>m;djdh*!syH4!W#^o=v;px%?UseZLph?pOuoYOXL>S`UVA?t|f49gch0=-_%q2@7P;O~s?(X-7y`mY+ zi>+Sp@3$2rl)NAQMtVOnL+ppqJuus$ zihVF|7i`hK!g}U8zyRmb?DVvU3t1xc&vQGdn=MV>CE9Yc@+{go#|GS8)o8DZHOJ-F zp{}2{!9&B<)E=y1Z0ekj4*P9j+KGAi zY|3^}WEOLG<{exfA5clx0Yu7-&}nQ3eBIA++9Y;>-GCK(nrw$tyX-m5#0K{N*@b;z z3E92Qm@#`ZoW8XW2UFI8g@zaQiWtN8^?vv}ZUs1V?^ByXfI#0P=>Jy-6gdWh;!`cC z)eS}E&x;`9PACdHYQhf9FidjSguZ2AXvA9#e!Idj=Cu|Ww}hdsm=5?`hNEFV1M0pJ zII~<2YMw_T*|!Q7_C#Y?z#6!x9g7hh$FJ*sJX(8f0*UKMSklYQSZ%5Jv3DDcuo-x9 zqaAFbS$NEU2Tb?M#Yh)N2u;n$;&;12R-_Pf<~qa2=0cPb*awRFh4_Gag5#e8Tx{bH zhG+9JU}hkv{pMnYQwS{kk8tiO|L8Yb)Zf1%^X`@Vt3kt<$E3#nh`4POw&w>o)0GwT#1v#yLIQ}yeRLo$&jh3!aYI3cu4`kbYhZ<$M=RvNC`hcU@5Ak~Vl)xMGli z8l=~|;T@O-XV1CgQFm$3lJP{vE)f`5>x~0RKZw(5Uo`vg32Ec9vf9i5G58mN^ItcU zIrIo#Tu?wlJdWWV?MuZfiuxP^z=DlDHzSTU;j13+~-vl#W zjZ_@U225b(Bja$jST;L|ad<)H1*@89YrYjL!+H5KpjvT67l?)yJpLHD_3a4f#lbnfX4JaM3dDo)72>|H(d%z-qVw)-kI zRY}3${Ws}y?L_W=af=?ziN&Ofo3wCA6b5Qsp#d{O(ca?{RrzxO(_XjGuy1ZyFH}z- ztk{9cBSqBc%Vtd8nnqP(xqFFo6n&$qjWa*_()Wq;(C?}p{V^bo0Wxd2ecS|;h+Rt8 zaGKs6^I6o4>7p}ZL}+JWIlZ0xh!t~;rcruLtPxmI4_^}rd`L~Y(d*$s@tt8+a4)GLhMuRlDpSBWIcNHL*jwi4IdicC9qPA)8* z!DuMu5oh^dyw8i9$c+AS-kkGYR-{ z*qhy_ce%VU|JfIsVxkAB^1}G_;u`3F`u`qnb6BS!j|R^iz-H4t^mXxopgS6PQzsBA z>~--?LIiwkU4en+agg$JEmE&kxEpMav(vKRh0k`>7AydE6h=Q!M()eNrNlh7ib!eWm!jPq=T!Qf1c z)ocfvl8bj@&%p%2BHWVQ3AZ1WVW!GOXgpVq_cFV<&a-+vJf#~{teY@&)nzDo(Tr~O zJ)pXnv#h)Kf%mIcRDabE2^Q_BymS!Go1MeeldeEt^?9tFaRoMUb9wQGL13~k;Ew2i zkQTUz5j{O%EPWB%JuZP+{ssJXxf5EyccR6!cChK{#1-Q$@Xq1_{`Zg%X1*8k`1vMS zN%DF5UjfX+MfA~iBIQ;P!Y-!jL35)LvwM@zig-icL zTCCRuLgQo6mWj)KK+#I9rE#qb=LZmPnfJvWGB1j^h`qFc2v)o$AZZY&O33w{oj9spOpYBohlBA&#PeP|J~>`U=B{i*wd)0>KDiY=EDMPui#T?yh}0&q z*lS)w7AQ2MxGvXe;NOILD@%#FeFJ(Ym5}?5T+hqVBJ!)R5+^n1k;1E`TxU-v`PE;D zGnG;albMU_*?1EE=L9y)KTbY#XTyi|X!6Z20r~MUgt^LTGw0*Tll%zms!1YA7=o4G z(un)eVU+uxMYbRF!_k&}@+5UX-fk==Y@Q2VPbnv-7VSp6`PHO<%pQ%OpCsQ?tx=!z zo(l?C;MHxE_&wi%E&ADii;sVuqf0OuRRnhbbw@H{_JUzN_giOTk)U5R(F9}zn>325XA;!!OMvot92|0@cb z?*EaIW0S!*_B$baCPO0EyWrv~3dTzE@L<9u=qObI%d0{#zHuq!EEELEwfZ0>`tx#+PA?r8Rsm@;RmSl&iH7VU#+RdvK@ znkRIx&mk#IKF})>K}1pxK*S^~;%OKNdVY#z!L?&>Ybi3DO~c{lssdi3Q53{w__Mmv z$H9M>3^h|ofQHe1^zh?kh}ct1&-$msU$&1vEzAV;{Y+K1=D<@S3DoM!gH5w%=cCu8(+t>kpo&FGb011B2ou>MIMET8=>*|exJDcJ9 zp+J1Bg0P@J440Ijg(Z#A_@bu+thM7YZC@vBU6YJMc^5%9FAa4sPZdd)~ObWgi?SrEK5>Pbi zGMKa-$7j)99B(NS-)MA#Ck@4mk?rv3Xdo(Ox4@xFUknQ1gZImQ_%gT&CYbETn|tda zf3hulEUkfOrd#maxpGjJG{w} zHBdn&3RK^!BTp?DHf~YJt#>@(kCQsC+2#n5<7()0$s9)W)bXN|5u~*(ME^Hj|8}e< zX5CSRxc7@ux=J2K1D2x9kttlyvJM{EHUXy0Ajo#TBPQc|I9zj|v_!AOK37hUbzY4s zv6qQZurbD(ULb$S8tlD(p6H0I!4&rkM17($p66dCN|A=B=Wvbq)EHpun!7~%6G8P) zFUh*}WoWVd2f6or5$YWj;yhz&_|;Vc+ONz*or^PI$<0|@*Y8{q=Q3)Y;+pW}wJZ)w z^WZ_hBt8sV3CS(u*ydvj9deVf(Qga9*eS?yO|2nN?-v!&-T@P=KhpJ&c0rNmD>`9l zFI?5 z4}|32qtg@|L1O76I-+O~=l(sTGbF7cbmkj+G~FE12ENb+p$#x+!(VFj$OLT9O+-PP z)c_rn(BSTs`{8Sd}2BT)kFlK{?Mo{AeX8Mvt@i5>HJAfhOVeOGi~#a{`O(9wZ} zVR3Y?Sq9dtCu3X0GEnsvLB5X;Y}zmpTReE2R{M{(eF0c8^E;iOvJzC~-%;C)HL$w> z8SVGp2c$?$@pyPrH@YuJwT_oL739{vl`*tDrB(gJH$n z0($yQD7f|IP}}(tFl?PeOP58#aB3di^e-Cv9u!l>&g00#! zp-d{ct$ss8#L__7^9y~Tn+}#jf9c}z3?QE-;^bc^AfSE{_M~LN9c?jmc$E!*?{Vzj zdAZ>FZ8FyI@<49BC@$jVgXuXTblS@C%T51Lqoajz`Oqh7XJ5pzv!2mgV#Sctb(_X* zEQTKsd#Drlv)12My0f(iaOfl*-&6$uRPyNJ^M#;$_&6OAF9ex#cY05{07|8d>1m~W zs1H$~fyQ~j?s>o-2+M^_-=bKr#2komy3Vgq%Lc#g8+dm)zp+Q~cBbG@I%LWBF@w8O zLBLgss6{1#v5X@roE{H?95Z&hNDS0aBy!f_z)?9#_q`*KVk`s+zkFcYae2@ecI9SN zO~_(*fXZv`*|}u_z2%$1>djhMe9r-@<{QAiQy%c2p*9%oJ`B2x7eMzw7##PT2`1m7 zpk8k(xc482S9KGBmk|dw3a`ilCLU53Tp^c);=xY6i9CN53)f>(NnAw?_)6_2R*jJm zdQ^#I9SVbD^(JQZwqRIwGmj@db`W0anzBrQH*EBI&mQ-1198_C)Zy(e_@x_0-}>6Y zr?yfmeBJ_N^)FIfYX(9^Pw9cCm5{0-h_Byi!{&D!Cy-Hrx8ZYfKx_uQj#`XOw?!dO zcsYLC@RP9i#wgYJgp?|7!ZUxakq$>|3_R6EwBPN->+v0=+TR6>Dm#e&Wv(CXN+)^Y zeh?pzTqfQAM^Ss`RgzsFj%{=QBPw&Fk$w4;M2W=Wse%vWV{$wWeE&@pPbcEu%88)d zoQ!>=lb|>!6@y=i!?vesSR5@0LvHDq#AU-eINpo-m1(eVW;(ig%z!sb((u0&Igopk zf@ANvccMWuPF*__GN&Y>+j2#?n-ho54;5jH+HqW}F$?5cqmTy7g08I*Tz*9f7WIc> zkkK4axgU(jyXV3C%ZE|iSOsQOAHWC3s-W2KgUyFk;XuiLtZY+(F>phJhsq$a!U;83 z%>^lR#B=(yI1iFNUTc+u--~QeUve58*R;g{Dx_h_UUS@^Bn1O^HX~J%g1P55;Yg1p zgeYvrZ|0IvvwaI{I8TKFPjlQpBmrTsEbtIJ1zJB_a(NLkcpYbriJWIh#KaD@UASG` z#vLdcCj^!+9I@cBASC_Si*1P$;G6nByyW+nYq2?{2gk@yFd z`1Im@^0T)N)ysY}Ke{;o>b%p;J??t2?2;X`@@)q`c+>4WTY-WpuZsXpK8SL}RcQJ8ND?6t17|))*&fd0sfuFzJXJ^fOjVFhnuv!{r#4=4_cHxkVe&M$eQlh|^cZ`T<^ zB*n54$4o|v(UW5Q(l|~WbMmktaT2^U&ctQ^$-vd~DLDPsZ1|uakGfAaV3K1L`v2xZ zKy(Op-dzRX$_`-ivvnLJWFLk^T0r2R9q1>r9rQMuwU+$y5fj;pwCpcK8$50b$guldG5w;cJgG|1M;LV6z|z|Cs@s|64^0E~UY} zzd=N3W(q74$|DzS6F_^EPueqLph)8iN#SP9*zD)z6}Pwhm-majyYCI&wHS~GHQq*OR=-bzXIVg=Pd7R8bsM}NKSi$haC7pu93r>d5#BxsC#o@f z!FsYCIc4e!4pWv8X)AZg{!fU+74C5% zZL=O*gx?c)PaFLE_8u{`aK`5C17!ItKb&IKPSzQPqMS)1Nq!rRF>A}o{oq8@nw~@W zBk34goJ5xNfLVrD_v zS$z94lbNuv74_AVnHA>{75Bt4-uc|$!tz+=do+tv-zG8b=6t*{n8nDnoWUC<<;=%_ zO*rv$J(IVq5wk}dnA>R$7%X;@xsg|g@e@iIO}koLW}eJAa7?i*Z#PEjS~>bno6YQO zF2RT4yLp2)+#RjyQ-W%xi z9}zfw`w+Fh9D&rGp3LlW298lw}D#GQdF z@ZSju9H=Ac`brGdJC@-!ok^Huz67&x2x8l54GeY}r;4DCliJ_Vzk3$olZN~B&RG>q zm@-I@hs?*>E2{@ek_vhO%Cn@2ItP02?xIlxkcRW&agFrb7!<_`L=Xs7tLe@1gEJ z+6ID*kNXI%t=Ymn(;TJ(?lFws++n(EXD)N{$OzqQRKOheyhpYEOJkC_-*I(f7;{qT zA)UCvobf;Yh+emnWA2qdru^nJJeNby>7U8^y7zy-rVU#X_}|RGP~H{=_UZY*bm3ng z_FuO!=JG1o8_y)rSMCmL>@SBY&LXriT^XB-=THTCEj+Kq&140lqMy8YM^xR+K=Jcf=n`&CF&d znm6FP70(%M=~}!MJd5-XZp8|RPtCtxakpqTmR03yrXWYSgiqhads%Hy9^GM zug9q#0H>?;ai7cz@cgj|Up+AdPo>#7W7`^d#d15q+iT%h!*9wgUk8qVN2r3&I&exv zdWL5T0@E|-TM-jDy3K(;TWAFL%%!M{(n?Tvj$rqB11KMz!Yf{<4NnbAnad685Sb=V zzMh@~+t?lCaNY-8cM>ZUMMS6Qbk*baf;P7aaSVm3- zg^v%3-U3B9Za6|plhq)<^A^!E)&Vc8>%{lk3fLtzNS<`9gVm*dV~e{+4HJGH^ulMl@sdEhLCFsGluskT;_Yzc70tQ`g?5{St@2Q!*=p;Yt&lxAv! zS7a9q-B=8vf4kvQ!9wtK?gjI!DiCAc4~4I1!@1@G__q%{5tNc={!!*38qHA=|d=>stC7E2=H`@m_E6EW@V zfh8(DqEz1v&+CQBtEw)TI8wt@T)O~H4H68I4ZkGDbd;xZVy zy%U%7N@3F$XFTIw3=T6q@Op9~eB}J1m%8#{Z_xp4KAH!v+YY18a4uM#2|};yxuBbM z42|dIL1}6zD#me{(2_8GB9jlBr-ozhJ?<`dJPa>g<9N!mLvi0gAr$`#!V0@0$V>}B zrSu}uf8~w(Y!Mu}?ut*ci=fPWC+;vS0)Im*OsFb^Ad~gz`>_DdmK);ZJq28s8^g_0 z`5;`h2-`Rhl+XA)JZYB?UV?JibtVtS>%`IgaV~8C^pB1|%7LbWQM%YE8|I7*avYIN z*!$mU`Xes`&MnKL6Cn+L>^nl2-c5#@gJx9VM1^P880XCkz!;ZVfgIsYSJN0-R zI0mKhYhq*JWJV`1Z2ob0Fdok67)HY>`#VgZWh5}&Gf3Cwa4?)|NKVU#LevizV$l}_ z4?aeb-AlQi({q_b*wGJGO|2lMKAv!Ew28P(aD(iUHZo0l4~Xu#L{3KAL$U&=wZ6B4 zgn`>6p?@1+1DP0Ky6c-YgV`RL};tSPT@8X~J%v z6f{UK0Q8s+m#54Hn`#9}Gf{x0&9h)kO9r~b=fKuEVxatM9!#j30OPAUebeU?$8=l( zk|mEwuBbW)oxeg{n1ygbwu8&TXu#Eh26EM65%5b&$&AJ&ptm!JY`@($sxCwH8 zG%R@sN zvaZ?CnrnwaZ0=rK-E|Py)xPw=Hy`jz3Z+($+@We?9Bmrh3*Rw=`uXhufkQ=9cJ4N~ z5q6T}i);qHxh=G>&J^CpchluuHbsZq6%IYo2cdrt=?t!KE`@zX`&TXn`-YF)oqQpj zO8-vnPAbDs+uw9jup(q17r?*n(;(ryAin65fB`8Hl$tt;%VSSQtuSuKab_yM)c#7W zrccA4VPnK6LIH28JSN)Xv(eM;KjQa#K0YtFO4Nna(QDUba*VHu_Ya*Xo*`Ozcu^bq zv0n$Hf?A2#0fI$wXUUTz`e>BjL3%X|QK9MrS!-{CYjb*tWyg9vY;>JSmYCyv|GQ-N zEok91davZ-E>*_JMSP?CCEbDCx1LPRTg^Y_~Y#*GEn)= z50%eL!MX~6JSZs%dsiLAccBvSckN+xaGV06AA_;!sW{AL!|?SyameKOKlEz^vD|mPDWHK%MDjwDt zXDmgo;lHxSO#kL<=wj2u#3fxr-FtORg6}m9lSpLhrLG}Q&WsTnyo&q34DyOpucGg9 zo#sA{`#Xs@h4qaZ;QYUF?6L`cctYzMYnIiGe3YQ_$rsQ@O_!ci@4)}0x6|)hEx0o% zgr1+;jKw6C-YIUtRJRi9__7+OzH6ip4a@MS$vL_!rvPKL2RYtb7HT{np}q;JXqz-j zf5^n6MDb@@8xhIfAO2DCPh58Kun5i{^}-mw1Xd^Q#=7a#QPa&5Z~dKx3O#F3MNt(y ze0ga8XEE|BR55KPpy8J3_-4HkHi!t}pfIP8$UdVYDYmE>eU5fkJK-yZeCi$Ri()p1 zsM-dO7vsBv29!r5$G)RCGP#^VH=ot9&cMj=)$BZpJPb?Y@kfhGP`BV=aM+y9n_ z8OBC#e=|%u)&bW&ykX}ZoSf87`kQaz5~~(6YyV9wS35(Rac=KNZ886Ag zr-#$YO3M>?**S-#YoudDW+5>#OvQ-VB}D2@GJd;LLMD7k!XrR){u(SI?w^y; z^G`n6QJjox4RXjO&lLQlnohn=N=5CGc+zIV?Ikyc6aC>7oS*AWgtC)SsnV9@%W?is zx{@^POu(b3RS26NhodM;tox5+q0W8gsCW!63Tt3argH4AGr`Phn@IfhPmWo!I|3&b z>hTgh!*TLSNB*N9p;*{Dll`T23~wAhz$Tmw#9D(Q_AsZbc-+6lPF>=SeWtJ33y1b$ z^SMdXWZGW5yLJ{0`EHM*yk*q?jTKtV-at(qH>0TNK5Dyt9ez6%NzX1a!n9Kv)G|dM z0}qwa*S5O2{dgm_->?Y%HlC&T)~TQ^*NL=6aTdo08=$RIWpUyA>r|0W#=+~iXkM%U zCX@eYZtr`l*YqE?!ACS!oO=r1T&F#%BXp751={#+m=-IYrrWLVP`S&+G~mt+x;Z+D zJ~17nKNkejMG=>&?IA0Q#+@`(Z7Ibzq_fver8R90)GqiTJ0?_4lPA@({%JY1xc?ZN zGnztodM{^RW*w)0YsUGG`k_=VFOC1`j3+&mC&u6K)0WfJ$Ritx@#%vn<+`cQY?vA;&Kv}6hy|R zxRF&q(uv2W1TxdRmROoqkiT~4iFHZ`IaPU!JUx1c1PzaoT$PVxn&v-pvtAg^Zk`Mo zTVy~fMg~^f&4yJ*ir~O51Z@EoI2Wn|Ba;`y!BYnCWQ>8Z4JM!gtD#VABLwJf08f1j zn5(i4WQwg|)fPvnUT6(!yY@jxp*7G#f5>61;oO8{AntAjQ7Rl$N5TSB)ncK;X(J2^ zB*8}=Q!sm%2Ai+1hPGE(Fu&dazGvkF*buO)Du!+!ZLsg;`b>i~;nJ51*tBT@1oJu%$P6p;r;_f;tWguX%6p}-v z!DDVQ)Ot(7evtxbDwTv>Zgvfhk_3@&nef0u3i5xa!^jzF2zrtNkFU!@A?G8L-XsTt ztKz_}O%X=!MMK2Wc~I}id1so`;C*BW#A+>pA;H7YS)vOO#y;>xK_8NCyTOqit3k?b z57d^MfuGF0O+M zUEEG);W{|P?XI34Gv)k{$*`Ww7b!nYg{9oj)@A8XlVS>K)3|PrSW_sK%>?y>rZ5zo z2^xi_@Oo1w%+Xs1S3^#KN!dE^SI>am{_DU+Ck;FW)`7&0WcX-g3W8G-q3N9oZ2A)m zGX&Rg0E=iCov|8(y1AZ(Sq3ni8w%HAcyLc72$tMg47Y0!z^j?6aF^2mcy^=&7`$_8N4c8M$#^6K-wAwlCw-13SLbhesARA=$uE(rP199>+(2HzZhn|?4tbk4!taxa zB*Uwu*;OSw$$*O@YorcDp{~J_CMZ(clX%pDf5_n4H7i|B4I3UE}~D3S2M|7fz-9wmnlL%zqdl~ zI7RYW-U)AMX_24YoY?%^i2PFxL(lUzoK_!$nKRtU+k1&vWgbY(WYaOLFPv0&WZ~hQ zXkzs)4=s9+lRE1nTr@kD==>=`eX$r)B2td0c1DmBcPemlbr3mCt8mNg{ba?u8k{+G z2eIPUV&~qCL~8UTZaStbe}ETc^3J5=F-r`?PxyHoUWgE4*%;p zN-y0!j}c}k=WAp<3zyJbew3!%zJ%&WzSAGTvC?*~#n8Dicv8a{*EmMtS+iB>jK@$sT@Ul?0`QOt4_j=!@H$@$C!OLl zw;MEY&EO8Sd8UH)lP&R=-yD23ZyjQf0)7`Tz~dUzu(x0dUTm0(bzkP<{Kb>;*)&-^ zH98Tuu|l}u+i!Yv=nb80_>pRKT%}HS&*{Vcr>Q{0Fx7aRNk2DSq2Ks{bf#Aql{H^S z55=@n)<=>0cAlck4WF_vzLe9%FFCBeY91ZsuVh!hNu_T#vi#%IV`*UbqtiP2Vbp_H zz|-00M+F|pGsb1RX_ub^bK}_-YJVqz(QP)MIW^GD;{>BpDgfb&teIvlQAk+O z&8vJc6=Zy-@pWaUgK`GLmgLWbg*$6m0rxrZGXFQbs$3amePIRf4Eh-)Vw@B6R0XLiZMaW;E485O=anE#hFcd090l6jc_DU%p7S;s^ zirE2Sa;dKR}KXmuO?BL(5-@M&$r6z$@x^D|Nj|KDB51B)7y&}_KU?M(F? zZicgxBYGtOe~Pz|W9zg)*CT=`2&i)Xq(wxMW7!@{Jxg3Hr2!BBM}{>;VN~TCanSlp zZgbjHPR$snPs@Y0)-94Bs0NEmJIHN&2D;u=k?V_1;H+jUF??hRF2DUr;Dg-|;Jua@ zFkav!Fq3Q#4usBYPna8O;o$6;$An17fSSV+W_lIJ0kK=doA)jm=FKhOS2d?Y%QibU z)-nsqyU(y2YIC9Ff&iVLUjTO!HR6P%ttBi&XR)9%NF0F5<09Gi4UKptWQTGVyDO?H1C+(wG#44e9XdU%lSqav~ zs?_&PC75#j)hL-Na8>2Ab3ChH{G}bcnVWwHVkzH$bv1-8j?fkPR1Jq!-tZK@*TDH} z8<=CvNtn7UmifA~4h|YsFxS27!7TV36KdN4UeWiNm%69GPVX19x#tvE`%EQsuW+BJ zL`pc%_Lu$Yq&B(%Bo1nm&6f4BIs(Y9_b1`3*DCUHZ!Ki*HzltA)o>!koP3*63I0v? z!!s}tq@GSjSE2hPYm%;&xNq5sic(iM}7**Cg)D3!N7(>;(sg&)@~^w zF$d!S!^?5{jEXk-&wMF=~m7gaFJNu-2|_z`-t`q zGccNPlXTjwf!^T}vS4f_9JukA7|1OLQQud@@y;>`I`)wqSiJ~>X8$Co)Kx*L>mOM! zuLPdif*{%_%k7o8thBorH)nJ2#h(HkLv9lH{(eW2JUL%$-d&O`A___?dx$LId<+|# z$;Nxa;0q-rmg@>q(oP~<9VWuOoB-lsKY?QwnUfptzscHb>SWo-XCmn;K&lqJB9W!_ zjCk!mVj!f?sM%a0XFtmFwj5|D0+GY~RGnIK?PMq`>YGWXl=QNhTf@l_e_{F~!GY-e zDRceAK=R75?n-sC7X{2n_?~kVCgm9is2$Pg422 z&uRZiD>Yd3lm0R3p;bj9nEvzzZ4j462eJFKcd;UVST;(#bX4(J{71^BYhixyZ(1#- zhZi1kzBlbPSmr2-t`9fi+$3@A*l)w_AtX?6@@_8gITd?tJX#16e7{)krrZgb7&cMs;FlSVB6gazkAudd}E)6T(1|331ImuF-A z^#yF1Fn69^*~MyzmjmOb8NRO^u6^(9#Hgw!55+#C<(pl@mG0-=IrWuCf%+xySy(kzj zALynZr4FO$x5qT^=K-9v{2$$A=ZEbpr{azoT=pMlpA4MXv&Y0B`hpMmlVC<$8 zOiy>jOvw|tE6N@{-elv{9&1#+n}_e#THpgxh_=f%VC=+VDZct$jJM@A&V6fR=v{;hJLX_cY9an?P()?x0yKRthiA(3(9LHW zrdH%&j)F91FUdkuD}kL`GjI{-J;^7j7&whP6Vem0Y2!Z%M`BU-!za3bQ54G0c|oP$ zgyNM6!&EFI5M#^+=wWGJyzuKBJw@Cwe&!jvSIm*SCsb1Ua~sb1l1&?SY{D%C@lwZqFd|B#lsWvlPkxy%}YKMTxYh z12*W4GaH4u|J!f(nJG!Zxcy-}!#n`zc#u^3H=0g`-@SXi0eq?$FMpr%LUp#XGgW|Q> zjpLWF+4%@7;ogHbf+cM2k6yg><`R4DYag1iFWHh){g^f=MCU&4$LWRB=#T7vbof4> z8eZ+gE){J$r>Ym7TMQ_FZ4ch*UrVQybffP#a~hk{h12q*sUM?m0ZA~9U~ z2-saYWOU+l5a}!@D!f-e6LSk2=QvdlxKD z2!#d4olrJ2420U+;X*(dJhg9yYXxC2zJ+^5lyh8<&CL)T5(c;Rn!rvs4EDdRhs=>s z*tw_{20TOIg;ph;lnRA;6HCD}D+CtpEP(u2?$bY;V>5@qe@*FdO+OU0w35N@SSXZf z#6!ZLP}qDm29j&SfcX>&j!xmQY*#o$z6^)6Peb6>x(HC04uWHe5nOLd08|}}fX5oX z;LHta8(a6oXni<*wswP`&S7w9nG>8CJqF{KcEN>-MIt zDasu>i?(q&d1n~>VF53-cEgI?O^|lV0p3)sgOauOz;ic-cfEG-XU$4@e$*C<<(Gr$ zFKZa|)dj(m+o1mRQc!$t1^Q!);bgcKd}!8$93d;1d1WC~6ec0LF7CW2t7L&+TIvK zY~NgPIb#5O*3W~R!ocm#m7!^&4$O3z4^b&gVDa#Lczkam@Z?qC$5vI4KQSMSqUOOU zqYUPYXM@(pxo~4-Cafw{f{<=Gc*f3zYRTzbURn-JkII0p-E@%W_Nq&>WWe&F1gx4a z$?3-8@HrfuXNt-T5ez_W3>8CAx>aSUW~M&4Fw?^^C0Ylpx#29+26Noy-ceVU9Us z$aLuq5o0y+=0`Ty2rjl`1HTTCbBl*r#l#*Wm#;!w+b@t3-VVCm;w;fx9ZPqeJVT5E z%4o#WI^tv5M$ZeE5i)#}_T*+0$%A9`by*_$oAr-Md<`QyMU!z`lqbpHbQ+0!w!|`J z7T!=ZBK-Xeuu)ipeB8DaE#AuzAw4}@9rc4Lo^FhHF84D+x*IUWrI`8qaVrW>b!BGH z+Rpj#L>Z6IyKvQXSzh3KS6pFygdgeUg(1y~to~zvtP|VE@}m!9&Wdby>|GEp-_yW9)Un<+ivgHD|`RI0=a`3rYZ-yNQ~dHFuNeX}P@SO(C%c2E3h5kXZxd139v1e!Y2 z2dlKR=;md<*y2@6Wd%9jsbvF|cRPq@+FEJJuEV%C^fFz?G1yM=hN#HuquA#5h?+)* zpmV`%dS_Y~ew_G?IuC_o@4LVB5yz9aZJvnl7sp^$&_%yZ@SJ!Pp;!utWsoT&rs{$uY+kqBPiLpIH zP+H%#H6$ucnxrY|_x%3qmGerR!+DYT-gf}sTO7tS zGeeNLmT-@4$2$wkFmjbQYTd6ukv(g0)5D{f!x)56=OsJc6J}TuuW=c4FVJG}^SPn+WLOgq41FppI z&`!<}Cd`b5HLqNE zCG%{d7o=8%Fhv$?p-DV}`C+mOqDoSkF`4Bs?M^CVw%HD*=EX3#g%-jYqpi%|B0lW) zwPE_hO<~myea3`88y0c>b!7uCt7I$2ocpH=>FiUUW}gxa&^n&vXBoJAD3IqCCJxN0 zTJs%(!tms&e9OeTF(Ul!b<1Pf?<7onHM?K(Gs(glHnDqv$o~Am9+!JdYWq~EtI-?s z^o%7PHhfFWd^XW6-T)Du98dL6zbEOB^J%}74JC@uwKiMqIcktE2a>!N*u7_9uEi+$N5P@buW zU*8G9f**Pq|NJ+(bV?sxlZJ@wjhVQPdrwadorRN)ACab2vrxF^3c2){>n46_CZ~VQ zz-XbPyvb&c?0ZhVwgoY#YP#sNRvV@&`x<>Et%lhKTAUIlxnB%3*8V#F#N zR5HfR4$Ui9onme&sWKbiU0~K)RxoET-C@GaMwr6SPngHIG>BzvKVv=3nl$JPFjv3( zkfF*UCT=)}6r31iW|tl$&x9rrf1?uOylf&_s8>Z^n9CE#ss>`acq$pwZ6bmGGl*#@ zOJ)*NVjW0{d*ghvK!GLhIgVrluZhGsdyqr-Pm(e*f1=dUNU|-X$@e$MNnUOS*>mklrR0sU1RU-u zBIzy)FgK%s4B4r{ldxPO)T9gZx!3Tq)g1URKa0#d&cJ$ZuJcRU5?=YHk$E z!ORP^HB*T4D=#=+o<@wedch})Oky0i0Tyh@CZXn@aFv%&&iJ~+xxNzOVe1NyCs&b_ zi_4)<@&sWA9NNg=khCrWs9x4cxBcWZYCRFP;Hefm4Ca z(F4nfsUU4X6K1DR1*!9#Um<@gG=PZC55Q&1Qpg=T+u$ogVNe*)Y%SbRb{%z3Dz3EigG}!5-#b zyLV~GvQLzu(M*ivs42ihFC%(w+9YV0wUTa(lZ5eAyJ*22QCP4ukyechg1Ay1^;kGY zN>5gDnXm7}-s2>dygNjuZfT>E3ZKaV`72cOX3X^$1)d!jV%KB5FZ9t!x^U?KWAR#Lj znOZB@cs>>lN-SYub1eS3&gU?DF=%>-2mA>!NL!3S^;;BvUo;y|eK>$O`e(qP+CGkn ztqCWXQ1s`f!EfK}#=?9hcXSZXt$Zul$*$=-L z4w8wTemL8xo6O(89rxoEvLnbJ9a5XfwdNi8MX7@9PzXe~_=Dt;;BH)P97Cqdg`!uQ zFZn39AH5Dc6TQSJWQFIGjY6^bPTrW*G{>XnM;&q{ED4wMREbPvD(UTqIW%C5$O%$oeiH95xj?3moW`imyQD3k1qVOABqNO!uX6jF zUs7k#*H#2pWS-^v9NaZ+{so-nrUW0kOrGv{HK?_`jGtq4>cVwg{>SLnBlP*a0-OVSu(r(|rZhgohx0Z-9eIUz0-K>k zegMDd_`!OCPpCS^P2sYJahcF=cs=I_nmr1E*gKxOD~h(7xlcg}W!<6lOxp_j|O2>-%=iq`O}?i+r7!-p)fVGJ4Mn9a*Sq4wk% zpnYl(FNZ6GX3<;x8z>1KqObA6lUGi=&bPWUQ)D7iG2 zY~S3=aR=J~;ex`A=?_*!8INo@27Z>kRL9zJTDEfIO z$3Eh6uHAe*(SHTm=XN-(*^Z%|t1gR@(?}&=@QcSk z=Eay4mVys==ioP;OcXwqhQfY_(5o#Dz31g)OK})lZ#;})y<4z%q!=|8xZ?Zor8ru! z5UVoFIOmZO%C?r{%WzdJu&Ka{B9iE>Sb<0We5NuE<>(sQNzDh2pnq8n^%E$?WR8zC zbg&5bYdBK3$O7zj5~n_QbI`CXm96j1!n4N?Hrt&}!vzgN%*%)*w7x#hMEl2K&@zti z?Hq+UVhKb{KMd379w%9&J8_9g7kPff7Y~S!l2z$m_;rpPXs-3Z``R3*=7kH&30Xj6 zvm-v4>jJ9DHfS#G3;Q&zF#B-?h==u7_iQ9uPe59T_mc2XTZJqBPtoq;}624LieA+CP&4r~nxc8P{$FFaQg`xTE2e zL8$r92Ng#LVgIQ>e5~^U+@tnmz12rZ@rc7fqfg+Jkb=@SpW*bzEZms)1rpEYq6!%X z?*oTXLSh8;!b?$l=o_TIF2`kEKj8O?qgc`Y3yvSJLWOUm@asu6_NM)X$-y=Fnh5X( z;%jgPE67jKsNv3%!u*L@)%dbagkR-dh3(p+{Egv9abSZO|FwGsu30P2H?{-EJKT)MkyXO{F7BErJtD|IAP|GCTLt)cnHby^@fUozaQs%I zQ3#5T!L;BX;FcJJ7E8WDUrY?17yk^Wrp931!9lp`5{+LZ-oOW$DAY}T0RiXsV_U;h zD7+MgF()2@OkgnfbMwt1+=&kt--J6G{7^~s8s}>D!Ks-Sf$Up{69?O1?lw1!d))%E zdzYi`&>iz4EpU`9zOTvM4$ zOv(abi>?Fd57`DYAB2-2^n&X`xkNO14VaAAlYWa8a53Q$$zEa)Tc354m1`HmnAvCY zF`W+|PjUT@Cnm7zoCE~b&w|7jc_ixu*wPOQ&#*5d%$(ii229Q5*#QZF_fO8S>?$rJXasn)1jV1e5wG*C>OMIqE8*KzDSYwE4ce8JaPFox z@Gw&im#tX~4F)qXv)>aIH_t}T#&uv=W`aKpIo_l_K@(3;P&jSD^-Vp1v@FDSfz{xT zHYhp7u}6FCuy4>A4#zp-x~P5!OJl<&jGf)a>lFq_Anylf?0a@(66)- z&kopuD|i2C!2Q{^$_?8;+d;&3cl`X#4!UbR@N$AZw7v7hYl|IVaKQ!?;j*6H>fSha z$Pu1;Z^qBvOQG_UFVc5TU@_ev^?R1XlJ^0aeb)s{ig#i9R5uWu6^u%{Yd}3^4`%3l z!tvNJOz_(PPF{O)(noKo*ti#SOt(TL8-`-7+qv(bd;G&r*v4I(R;ved8JaM>(;5a+ zJHqhY!wAr74#R!VqTyxKUTl952a?UDa2@@b$c5{c$pGr&|K z3O}9Af~WsQ;nVSKupNoUqkTDWNih}&x97ogfjHdrJ|D&#;?Q+bA&6+kW6OcV9RHH* z+qe~hX=XfLe_aFm6SA^nu zqf(f^YBy${DTSpgcVg;ZE|Vm>9qatcfS0rdO?Q^V8ooF7E~1bf)AC=lD#tbp=Dkf|Urv0yKrQJ({YqY>!+QWr)?qA)*I9o}#=LgAdr zP^1@!W#45$#3CNUzKOvT1+D|r&Uqk*5>Vj$Pg1`;5jF38BpOU2KHd6??8{Ez_RCMn zGw*oJw|hX!C&%H8C$xI+H+MPvD#b7bM4C=~kHOq4C6@FM5f#Y2$@vQ^~j z(nws`R!TNBM53Hr0omorbuK;}B)7t%&_^(x+_#Cs9mkT%Tf->4{yl+oc0{7uU>vch z2e5T&9MKPqz}n|=WOK+q>^4av_f+@d^ZsXN+&~8$sxdz40yd?e?SKv#IE5E1M9-Y&^k~WXe2jD{|UV4mDSHlfRAfn6mE{shh8a!S^o_$A8K=O%}yIB0UVI`NootQ43t!x{DY*ScGXkYsi*VJKSAi zMRYrza41oiEEjgcLnD$T>i#NJ%;{rZ8n40dprg#AdQTJ`aAhXjZA34vi@Zo_AJkiz z)SP%}E3Q=;Z<(vG9nabCV0FLlKu!|J>KE_i^2D!LpM`;V?6eF$?y?h&-_N9?js7?% z#+q(4-G)BO>*&H2oAKPHJ#^+8FPyU{iOznv4wFUl=;uEkc=JgmH6C1z0e($XYm+Og zxn8D)4bGUtF}J>6T8iV1AL*Bsb|}6^5Mviwqw+5)eD>H9mBm%ieKw$u_Y4f4ZibU1 zOflw~5pFJCfL7~g;T6H9SgN3lT?MPrYE%>DCwb#3pJ~|Nza3XhoQ!MLLU7sRNmw&6 z0@wA6_mI(>gC5#8W6d*)suesP)0R!AqI`cos`E7c@C|0tEY{v;76 ziwTmf*hGxl$tU$HiI}w|fHZ_9aQVheqEgNMznN8JLQov`u5BaRxZjy0^fnnYjYi|y zFUSj*1Nc^Ti0GZ$i%$Ok$jr82jCm*uKK46N%UK$_{I=ma4+UT*Z9>lqWms{>6D7DT zR%wMB{&3TR5i4gjZk_?cefD^XHwy-8ji^_=0u4Ncs;cqLqm(m-2v&IKZ> zfwE`Zf#GRz_oW`(d!;6(7kGlllpGx^X5g~P8$jix9&T6L2q$mN#9<>Zu(CJ6 zYp1-RTzC%ddE^DAt4wjz4ll6i4|T zPYAxU1nVCGOvG{L#jtl~}uAH^=&N;j~P9;P`T9{HPob z3m!V5ttxlFX6=aaYa^lUwjH)?iGrh=w)kv_a}0}Fs1mqxv}KdMx~zuZuo~v0xFP zgL_}az_NsuvUbxw$j$8WofP}d^ zGEu=Gu|^F8%!9xnRuzu~?1V%Ars4j!?eMc_8g5&)73N8)qR%C7kl-FS3s?`|kE!8~ zbsq37Spx%2+~CShEgTkifnFOO6yLE7t_0|!=pRQYG1bR&-~b_RGx0Ll8{f@kd{q7} z0htFgaTeE8k+htN3!`n}Lc1Qy$Jv7D?-}TL))vOSr{l7POW@ZB?&qy#2|VAgibli^ z&crF>HCcPmKdXRZ5e}gDp9~(g;{4_<66m7237?Hyh}Z`m zAgfH0$w%4E=ebF;!9U3aIDLB35U4t@6rzo*MRw%=Sz5Z*iAC5SQtv zhpFy!K@f~8r#7ZPiTwIn8Z9?S^xrp8y#9pfy=kWt!fuc~a(C&+L zhN$|pa`HY@054w6Bl!~~u+lq~$c4xu%gyM|j;i2bP5_}RwNbudBk5?Hg)a(M5kFBg zoYAt3WM7|$>jxZ3t)2}&m0e1zS1rRaofRZ;+G?D6c`bR6y8%D@`VkQI#k9ryNy2}D z_>*JvM#b$#|LNJJd_pve_m+^A`tkVfMlE?Bn2ZO$wvZ(447A~RoYK<|q0z_NWKwbg zp0$2T#H33xM`3_eM^@s1(swe5HRv`h0D0FNxY-rwJvww6Z#T$*!b28sU*n!v-!u5a zObs4uox^QUb)drb0*3e+fZtdpEqN)NQ^ZeX^Y1{_#_19hsDKtTQmnm(QgrCdMVaGxMN z;^w&)dp?m$9+#(U>n3Iq*KwESWn#MP8Y-!uAllVeu|)1L+1YmmTV>Hi z|GbO>clhK<&1Gz>Rv;wcGH!_MVdS}aanEh!)*6d5l4Bh>@2+=~)3FZhxFODt zD0JYArLk<>!b@28_9ENncoA);jI%@L?YNVtLR0>o$FMaDKQRvU z-XK>an&wQGl(X1dv5bnvHsf%q4V5~`J^#Zz>Qa3Yzx!y@-<(rdJyViO_8!M)HqY5F z^XjoJwThkBRg14SxwG%j)gXULN6V&j)hO+D%KW=fHLm(2%J}_Pg{D10%zD{s{J5Z& znSQSt^^QJZ8ZOsh^Q%A1^@LjdkSaq=bnDPWQH`u`tivH!J@S5_4)6RjCZ;8ISQ0dk zc$e3r-BVj~?N>Ekj&~uOI*;KUk9FjPd?mhqv6;NQaRfi4`4hdtBIGFslbEgfctUF* zc{48?f7?Y8k*qXsHWfvh5)+WdMUe>cDD0XWMec+IVO@6=+5L7C3J1jyV@vKFd@GJ@ zT)P+@-XxM;Tvs|tF^&AUPzO)%KSsK;LY^^T<9PT~D`WtiOcN?|?; z{2}Y&2N}mELHOLFO_t|QfRxkAiO5xP?j9n77#K{1OG7#2Z;2Fm?WreQrc1*YyAE<^ zwlpXh_L3ih(vUp=2bo|e1uZ>duuo+o^gL65l?f6s9H#*XkBNau=PdByvhUTx40NiB z0KIJmX3E_DOWYAE<_o}9ZLaU?Jx1g$JR#2LCu!64fg=iEiFU_!xOe>{xz-&7Zy&xT zS|7q-(}5Qx@>T@Q+5Cj$J>;@-;rEI3wipPKx=D(PV&Q5lx6j!b2aoSwASbfopzC`p zahMnfLpIGMZ$>QW2%aQo1!Ev}P6N4oH3~e#>&fM^15hbmPpV#pgUhu#(mHhysOi^} zd4~c)$E<;jXZgX1?n&|{#Ro=KpC)@e*K6CgA4+Z@W*DrZ6Xn9B3dv z`t8BzPc0GFUIK4^A0-c0+JN)UQsO>mG4x!_Bh}Ozw3cU(O$LkM=$UxZpKJrd&%((# z*8?^#+D<-dIKarnb>wgVQs{74Mk?K%A#h*;Sr*|6MO~&uR&WhCit7abe7agT*jqf;Y3Vu^bXl*)zEU z)gbo6jA;!%4ykSG%wMI`ATwW-k!_&x@AWfY$C7i-(vGnJRyoGQ*?m2uozpI$$xDthez(J^TVv9 z&@Nn+fBugsx_?sP8*2-pzx@=x(xg9BIaZNBY3(rmS1!kIvw24YkIV3%b6qOfIFUcI zyo=61F2;Yv?X50w&v$I-C0d>`4!s&@=-#65;4*rO4(<8~BMNo&;Ln$!Bg|zGMV~;* zkzzXg)@{gLl1D{5FGIuLOlqmx27z)(bWzMH*xwjM-@N2HOou|K$W)GveqkGBx8%T# z=brS&)KutkSV8B>#(+?XExmqw7yR+Gq}InaKu-su8vRaiLy1RU{jq?E5p$}%z!07w zL(MeR;Y!F{y2ySKBs*JCe-i=N=CFkBp7@ePEOe%qxD14X(OTNBT1i3zwoAf!*b0oPki+nnYU*+~d1zC8*R1Tj%JA^{Ra$Kh(4}C`D z@K9X=t~(@$yqv?hR6-7)XcnXHR$27&F2UtzCZYR|QvA#9g?6ktf{L}$Xc^1p4!=tw z+gFZ8*QD@wS|vt3mcp$0$58OS6#92op?0wpz80%Ng@K89psxl4&q?BX|5`L&B!R6N zwRmc^7~WB?MX>}C?4MVI!k&U?tx=6r&itXC>@k#&8llsqAm(~n4^8oX~eyBgm^hRiQ7d+ef-F3C#T}Y53TIY9VwU| zlFTZEB;&t;xoq&7By4!y(b6QGh@)!noBp}Rqm_Lz??OZ@&P&!{JSw7*?%m1c{)@zj z$)(Juun622dWq3EzYl-zdCM%x3P%zlOf)|4Mb&6IVx_qkryo!yS>a)LpS!j$=nlpE z?`IHQ%}{(7rb{Bn_n_Ry>7;8zC@ND`V$u?ZH}d7lZ{vNqMRfw%V;zYdVMEM}c`>-y z>Iu`kDjp9dTx3!elX2PC8b*IbI?npW`Dp)fy%h(4X6R=gE*i07DQ-MoZ8#DVv|ypzS}FwZcAcku8f z%wXbp`yO1wUmLP`kt(;aD7T2`?0+BCf~$Eq<~&B{iWc77jZZN~^(xQD={dUV_VNO> zU*YJaU%Z1;-=S;!B<7si2izMwgE?OI1^Xl{ndG={_~z;=MsV;qzDW*ZoY;SO@OdH= zeN(7aR4JQrJUyXx&gfw#-dnsi(7lSWzAD-Jeo+%MG$Pe1_WV5a=c`O>om?klO=Vku zSv_Pfa-`I#wSA229);Gwp>G+{aK+Y3Q$I3mH!8K(e*4J$m@&Dvxb7X(+c3E`C%=yo z?3&#A-mZ&@J2bg9LF*b*HmuaTQU;khgNm&?pI0$n2@0+IopYF)D{`$fFU2sSnUh+t z?Du6J$w{}ybgp3P0wi0ve70b&wTZRHH_l>KeG+NaH_&1Z{Sa&&vD9S>n*L(SD+|VL z{0B;Gy>anB(ue(R}R?BO7@aj~$dE$KPK=TPJOD zpy&c_`^qDQ2PnRHy@ccyp1}QGt2xJWH5y;tOwRsy1dsgOMZ^y0Bj0B~@!XM#W1_J{ zBq|XH921H2`bg~Eo=VPe%<4{?Od=Dv5t#?sWKYHle3+j{PX4zDi`N|{0jte%dN!A@ zTRa2Hy30thgc3?ta2?Aq5j-eaL;CCA(yz1X$?-=W^g&?*iT+nkOMW*JG4Cj<(%VS% zKF+5@Tpn+Eo*-TIyq-t}<*@N*YRKCYH(D|t9VJ4CB6#2X%1E}p19N;$3Gup8#*}6C$5agk?c* zi{#a9CX*zy$U3<&qGg&%(vQXyW7iBau`!c8=u9Uge+o(Q`V4Yz@lg_InMp`nBiZ#T zlN6jhL-hV-lEA`iBupTSlw>_1i!Bb4B{luTXL=5qllzH$fdWz^`;)w$UP7MV94DRc zDv8l!L72qNqZtt9JUvLJeiw$@yRHzMW?@j=(MA3=2|@AGevcFJq<=s zK7N@jd}|6tBCTZKR0fJwj}t3Pj_vGTN}}xe@XJ4oWbfmH?bKMZON|fF6SotubpV@E zmXV>O1Pp>qNP-!GuwM#_=v55rH13(@b$7_jw8e7_&osn4Le!3rL#_HonJC zE%l!VArdcIVk9kKtN$wYo2LaNtjc9iI$OZOv&bgvS%752Q+BBcH!Icq$Eqk;fZl*C ztvBa-7xT1em4gM;Z#SX&8WwQ9X(8R^GY{N_TKrblaTsGfB@TazvZqS_p;V&v_`95tB604>g^EKhIXf5sf zsSY^5jy~fU2d~WP=uVDXwB}k3mD5*&(3i)k{%y`}?Oaapp(6Z!QAEeA<>4ilxz2K! z1cl{kR9;7l+cQPeRr%r|f83X*{15^ARZBTepdj2dFru3kM~UYuS!xtLL7-zvDK{^QCWCq#$c0P(B-1UPoNZoBOtu~-TZI;rrBhB2zbVG##Nx}OK1`LUh4c`U zy^@4IGEB&qVaDvS2nYz=WrliWA-1@Yv5-{*qY0_Z_LP|*7vRJ^OXGp_EFtF7xD}k` z&*VKh=?DVf7PQD|yTOcK608*0@0oSZn|sPIzJ-@18 zP1zc{SgRU_gWTztt}2LNSJ7Jo$Kcd;7dm?QC}?y$)4+!nU}3h5#x<6~H7-jOZdD4; zw%Adox(MtmZ0HxYLdbYyO+P)(1A}pEI%J&-1#XLJ*Y+H)3%{7&kjnw_bBpL5n;ZyC zT1YKV6hhGs zE9#i*3KL-%#`sz5$Sh5AwF&$*DedM}muoCD_z;;4X34mSr) zr&|sm0)eJH%B(vCCs&u#OszxkXJI2P`I-&Jh3BYrdp6uQze6{j$c9f3U($2A*|2HT zPr5W98v@)#al|Vd?roF9>Xq3L;-`u+`kagKwl3O8WkdW0W8@DUgg5GQv9$dl1n?H& zmpsnluHk?lwg=(+_Z7JKb{0&Sum%_H%!1c~JuDFu{sa%FL z@_0Hd%nZW+_-PPr9D?!DDc~#}ijCPx5TO)?qB}Xi^!_l6Q;GwJvtekE91ZEZdvQl~ z1k8%ui5YwXed~%Lj>tDd#2VjVI$B$8hQPAW~&|3`ei6A$O9F;tRz^w}+wRIm?zl?VY%Be@jdK9`5y=D#kh} zc%r7GF?&H^B}y+{!z!scV6js)Ym~eYZ=TF%WrhH4q|4cq-*YfvMI+lQtcQwK=h#mM z>bRop9(&MA33CkJvsKAbXw@W4{l5!ic)kK1X#YW{1?tdc3U8@aH$$VAKcbIE?dkr( zt8_z;2km`K=`2A%t}o7U*3X909~>VbVsZ@4`Y)CK+n+>j)52+2b|$szUPtZn^Jw}P zE9(BPn7*l)P807|&=t2P(Cr^;s2zKk{c*dI9ynUae*D%_dZ$1cFQdq{ACG~`TZW1ITOmv+x?KTce0r|hac18tU5;4 z`w4wM;UZIUw1*C^d%)Pud`it+2bmA+p3+G=Lc~)4DgCuco*3mnp<3EAi2Acf)Jm2+ z^G)xfq+>bJE51$Vb!;ZOy8qDy{Sm|?=@Om!I+gr3Y@^ZY1*9~lnU=X$602P&=xL`$ zQdVA1L-rzBT3bU!u3RGWi>l~Y;4N}pc{F0J0{nE&rGodSfahe6J3d_% zg4bu$cNUspo{~l16zKp@F@q}o(ub6>6gm`a2#fm?srouos5XkDD~q}Nfj5!ValisH z_U)x@%NKDRx?oyxatZuh5=5n1mO|6EAj+>?0r!ps)7nRFurx7@W?fzjd*?+^-};Rp zRUS>_@;8G_bR306e&GBmfu4IC0BcKC@H}&^#nf-z`jm!&64s?A&BvU*BW59!!E6`mOBY9f{!BSHVBkVEHjadQWH*bV~ybTkZ{=WmYsk&kKGH+S2*C8{ysVrPP(%YT1F)J#$+y!z580!9T8LX|CMFl1}Lg&+I zbly8#I1?g8Wp*xtjq<Pu);t96cSQ*Y;q3mjJ1(@h~fi1l&1B0iouo3em;n}-e zEUPgAB;B5{^%us;BilD@N9b3wL1dVHXZM!G*!^X9dG?T9P9ik(%55V4LY$iOJ4o1K zDcYAw$)ZAOy3^!1nXD{DSHCMK!KcOOdanXrRONuV<&hfkbR!|tYBXP z@h=x**EA#$Tb?}g=1$b3Evd7nGmDNpv*%SGaZuet)=gy%Z^6p@?6p@i zX5apC-sxi9mZlAQ9HS+z<@Y1JG4El`KGw-6!(R0-aX5T{-ykgtT__rG2E`hU*wA^gm(sGrV zuc3$ER^MY}UTNb}(_ZG^S2aBB_L`~Nri^E^J}{9BRM=l&re2vdoA6Y z{fDVfDxojmjWfO*4^r!0f@Fg{*FAhIL@KO;slj_el99fVikJ$L)BBdwpPE8MFvyB} z1PPI%9uw-iMv#2W*P$El{blaIolFh&IJUZg1a&(7j@jn?joq`Mhxu@QbpZ3{%}=7@;>1{si@?j4 z8O(o;lHgS}%-ioS3$OE{c@DFb;7(KEsWQ$BX1?`si~WDo;I+R#8y~F(ZX$_n-7(JH zF!4Ma;iv)Ae|%>Lw`zdMp2_s&H+6{dHKi*qs6lME6Ak11Ve+QF^vW(3;L#}RoIV+> z-=xv|RSFPvq>!$^C=1Ss)%4FnX*hL;rC1;d)frc*9_I~Ry7v+F{w)H<*WPj-6JeMg z@sm2V34)xe2yPx00GDbhynIanGJYtcTY(@rj;i9|Okr3Su7jgR6X0LUY`ip0g7cA? zqVb3n%+2NFta);vpl*e}4wHcrTU7Zs4bIg%;&;9_v`DVNsUiBX(BBOgCL4j@j zkU7jS-iUsy=fXQz9~`x}g4bPJ@xmlq=(pL9e>5FoGsjRgov|GDuiJ&^C%HhaK`;sv zR|w18!}YjV!H@T07=7OroYw8bjh-&xEpPyTbUA_8+9)I!mcWlo(I|Y2+mlU;#hga~ zx1-~@Ziz9tizQ&wVqLgUm557wr-9YVWYpn$63bOnacHtAyndaAg{eP?;qeUoKEI!A z&&a}=dpn7DRyGQHup}=$hs&Q-5N%!_o_LZ$zCOxF0pW16bVnh+7FbQpCl=x6Q|9DI zTQSCKE0AofQp`?!%gn7m!uctVGo9+?80Z+t@OM?<#52-N&CN=bjb6-CSaA#srKYtk z&aFbj>z`W8f~&Elb3S`Stp){?V%Ws`8Z_E^jMY-B#iLvQV;z%g@vHe~cJYl`RJIi7 zc+R!xATpKSm9InbZUb8CT!#zBtSIkj9kwg3rr8hcF!6{#J(5$0%iSXBSYIt3^h%2)j4?Ulh>bMrcNwl|@@f9vVb_&Id_4sKs^+mI@l zY^4)g4C!&634I@HOs8HRWu@d9s+?5724v2sr_cOoX?C`!oR)&uEwGwn$}D3p`);ER zil>=Zv!m$dknhY_zYI!hrV<0uQmPWfCwn3r>DPm9Bz(gKDrg%-^4;&!rTgMZ%7%VA z^+YB)96U@viWQPx4FQ}jUqM>>MbV?7jtsw+!hxaFM9WE@>sFj08a7jK^0tdaj{Dv| zy}eG-f;F)<>@G?2)ZrM3-DJi`J+#n$L7dcPW7MU$G`bFFI$e);x~)aW?j+&TgHaL)w? zQUoFVv^&1oB?O}9*W;rZ!oa@s!Izc7@cNA({(dG5_w565o3aStNH8}26o$B8Vfe?3 za}i(OkB=*apj$Tz-yIMH!<=Zm^Y9;eRL;%W$NrGbCb8JL=O;P1DHeOr4iov%Slk-& zfh;4j*usBJJ{5Caj;daA<4QFC+VYT8r*V1Tu-oLO{{hT0xK8p0_o2J_B|>-Y#RZc& z51DN!wp6r|E8-z|HIkB*r-D#<8%r|$0`YDSOOnL{&{`2m?Z|fQozzCo$@pP*LOXe| z%on?yuaUH|Eok}p4pE)51#dp+CKjEWF;Mj-vA?<*6U#pm`~6(5_xVpUCcYV&3_*D8 zO`#&~fyNeR!PTqiSb5x+DpX0h(sX}Fi2TuH^2712k zn0-hc#uvEZML%`mZ*)Zs0d+Xw<$|J-YT$Ip8TH<&a@@gXxJFeKD&{(&oXa%MC+vvz z8B^gwgB|w#RDm`>8%(fQ0VDf`IDLmQNOoJG)9xt%Nq_}D|D))<<7#~0INqX^hITY5 zQcG9=b z+44w5T6j{0jj2+kCJPi;h`kbx^pR$dUMbPTqa>Kof68&GR7MCcrP-#ZiBcJg_=@p*7``)oRH zQxRx4S<@etgHtQBz#-=m=yj&R(ASr+`er;_RqO0+6~S>BVhR17hrtm`+vQI@a9Vh zc<@@3_<|r_+X(cKMG zp1V@Lt9#&S0R^)%0h#_%#q)w4k&h@)G!Wy6tK71Zkg=k!4p zeRDe(rdd_fb6NTDY2kHxApH{LwBO);dc_d>u7)Z+y$r7VYN^1_VJ=VW9?8b(SyF3>4B=>-DyEh0KSmtnWTH7 z@d>Y^efs?@2Fg0nnPQhPqHi{(@)andZbdg;s>k^b7PP1F0S;%FP_w^n*!RqU{+Hc@ zX%Bb?gZm(=d{d*Zr;4#(N5;@S_oZ0V1Q|MbTb@aOl%PKPYWxoUH`t!hX6gs}!04U< z`?LNn^p%@1|EA}#*u{dqdC&xVQl~R#!+PkLGMjmrT>-C4^O)tha!7A5$hfV4{0XydS zG28p0&}+Ysxk3nh9=V@=>j;AVrU#g3Vh}hg`m;CNg21=NpDlPD2zy-)G8gXvP*Oj{ zI{qC3JE_CW_QyUD|9F@^3fKk4509`&i7ha`?kKAqS_{J>0jw~=6;faDUi{OJp!qV8 znaJ4kp7@EUoG}c`bjMO$QJw(bcCbBE7&ZPBwB5RzjOFncbGW&rif}(?o zY(^RgRL>=_vsu^6$E=HIauXYc{aJC$YZ~Q5-C|i?^l|QcR1}k1QOsp*jbNGn&$%%1 zaCYpzC_eBHVOr(tc<^2T^Z9IsKV%NFb>9{sSLVxhpY_1?(cWyS$T7Uz9=eY4Tjn#(p}UwJHJ2@od5lJO)~vXq4dIX# z+fv+xZc4z!B|c&NC`)$m;{bm4HD{+HhS2SVDbwfmzN@cIVVWn!nRAsfQ}-LmbS_S2 zSq7t6hy5hxe^!QlY|v+G56QCp<>T4mK{6IvuHDYaA z<@mkMgqiFr#LsD_?8>EFbo89Yw9GPbV4{FUTuMfl@4$WyoyN3lR&2`82u$5Ki!F)@ zL8}KgtRvAMZN|)H*V?zE-&i|l{?83HeC(OF_yX+tY|jEC2`U`6XCX=xaI}dXvso*P zljP>IcRF7LqOv5&duiCMT7+dr$F7`13HvSu`B6{)he3`0;+Q)Z7A^4@xTMdo#G z9YozxVAB5k;q6>`W-%umCYQ*vVEHr9AvKzv<9QNq*GjY90~g@P!xyw9Ta0=R>dHw%I6#)!p#SQ<^3H{R&C`GVIo! zVOUf=nicem(fe+4Jll)kgBvTbmf_LVW1%9OX2pAG-zzhP(`vM^P>mhy(WH)%W7!p+ z@pr12&!KRgM0MZmvhH9L`Xf@G`Mflzmac{jb^~n&6E;D07OmQ0#&p?Sy0hAnIZbw; zy?WExM>i+>HFy@gvveu7dOL@`>RLgyr|`bQ$!q8l%Z2PY&x1BoaAtPm9#m__61IHv z7TS7i8Ph$qo%%j-WwWz(PzjZl>jTt&)-qP7;7@m!FJXbF{OS2IiKJqpTL5B)k5R0 z2k`e|wdMM^&0w7=M^^r8f~?vAQZ%j^yoDTjee6D%{C!WNwI4y<7HKG-`wX6))rMnV zTfpAM4Ai?{gLs1t_@3lhO{<;2Kdl$$Z(aq_TLxfwa3kEAIRuuzUeGdLgcij3LPNV4 zHFEcdUV{z)S(Zw+#K9U@IT~ah53Yvt^oDZ+tQ(;~71R=8Z;JvokV%5*$}x0f zKd&tjQ=&&ErhxbyW%{o$6?zEYpSYZb>7P|->%Vk(x=NKko0kazJ5*`EQWjkNp+ZZP z&Oxe-3atr02U*!lv`ac0uCcSzg|F9_@Wm|87FU#)=0g$&Z)R>8WR zMey_VRcO7P4Ilig!K*z9%obL|$fQ&7W&ahhiwc6p!whDq?txG!2aT(1AnQvZNY&1V z;r8>;Ki2{*pQpkIM{PKz6$9yoqrmA%FyxQuCGY%pfQLdoxxQjCEGKE?keCIu9oa}! zdX>R9QHJR5{Y0LGt`gK~my&G{rG;^`c95BO28AnZehGH^xN)f-Ld&f?GPr4QMmQ$? z5hr{&j+@LRa6PW&jE!}%L-!;%y59Di@tL@t}blbvaeii#}X#C<|7y4x14?W(8+~;Si$x!dCna%bz><{ z?sCV+tYHymRh(CrJG*UhkvlPQ9doEo0ur9bU`E?m8(Pk>bvV4k!pSlh*L19e26( z+G@5iXrv%UVm0gP3K0~!xv{0!nZVv}6?3b7A=tlcCG&mRB`}=0g4M6<5OnqP8r)xv zg8r6eY{TPof^4y6Omo*Ffyl_EY}nkzk{h{%b%(qv|MSs>IlMV7R48(0PZ$3Z=9xP& zgFP19q{WNaGOyj7(bNTO>+>Wo;wgX4pIOQ6B6h4645_`~(Qv1ZaIfz80Yb<^F|`d-qvQH>@u-?)HwEdQ9iaQtFdR^m$Cf0A}hR9h0Pn~ z*qS$WX!(2;^FPsqTbGVtRaVb2BUXf68tA~K27@?r;3JkOe8LyC-_cCs4K57*hvNKh zy*gilHAmmate8=3bn|UAPmyE&P=j@8N^IcR6*S0FXCsmjQ~b49c~%)7vl-7qww9n| z%S3j$xDcPp8#BWb1z2-;DqF3UkH`AVnaZ_}j=oaHZK`oc;SWVw`b6nz{}y$Al1Bnm4ox!^bGl5bvY_@rQ2GJ=kJBulFKmtn=(DxVULAlRHzD{HSzL< z3gr`GaP3Z2I)A4OuTfB=W1qg`X60y5pP!{%Lh?A8KIq3iY}caUWD!A+ple}BS0A1Z+Q<1!<-hA;NrVx-=Nk-T zvyAD5&IE8hYeG5giy+uMh2Al_3N|mM(6O6%USir5di3raSbfWcc1#|G9bv{)L1YB| zqhLgH<>aWpq9M(Fs7e>68qjP%o+bNWJYDf(5^epULm!MZqkeswbP=!9Tr547{(N9f zzc;ATrM>p_Q>qfhJC3x#Q-PLvFQYYPvh>$GH>xEoO@n@~r$!e>(%uH1$30%0`fc*2 zBOU)iTk9VBV{i~UmHwjp<^xe|m)Jz~4^ZWBx-ACNADf)u&E`?|Xfysg*HIJGzVF z12fQY^`=!8025wsrBBPPVWpiXeY<`>c=DRGrC(jZ=))R1+`9^5H?5?jUvGjvyf?Z} zW+yl|^PVjef3UsiK$nOF!^thSbYEX26ZZQ>fSL zJQ&dAL;miSK-iPtoZaB}mH+1DaaN$z)tF|OfIW&^0aWYhWf&}e-FHcLiiqgO7O7zCu-=Oha zl`15CgT-ew=(NU>X*DG9vss0iB~WWQ zk!G}HL8Lp+GCCRuOAHKYb2ZNoIc-QQAA7@=NJF||gELHA$!l=k%;9J0Bx+xv45RK$ zq^D-|liDl;dTc>8c|4iVBkMg$#8;1}8~>P-g@ZcOChCHq)Jlss9bHhiVB%Ps6n04% z`dXEa3!2FNJ)}ev>ioF2Z}K#+B$Kmt8qMz#ZgV~HQnWO_kGs$+K{cI5qol4VRn^wT zD^rG`r^f;tI=_O`lX>_w;RCEYvl0hScfk3DTQF|)OR&}QL%oX+;q};~*mwCJh^-06 z3|bE(nnSTg>>6D5IDu0aR={Vu2s{>34uy*%QOTeLL?2+1t-S z!VN7mS!0D1*XV1*dxn;96ME*b86}b2LTblajFRq7?BKhX zc;bU2laYFdy84bxBBl=~i7#TNXNR!u@B%hYQH z&0Z`X$4b?;S>seycA-Fvc`X^k#)@gNJGrCTk9nGGzl9Xr70I(B-iou%a{hHj|HHc5 z8m!#?2j;w0XT#q|idrd?HI{avj%sIJEL!7=&|%O-VBmM$GQ)AF6$?!v9=4@ z$p_qh^A7a#zrf*$HmrVekh>`V0#~U{;4Dr&LA&-y;e7$019kG6N9lM3s%kC0u|9bp4Wsp>FtHmQbhj(o(=_#17|Sp zO$6LO6oZw0e6Ls)iHDEG!+}XB@Lq2+oUA&IPOr{_xKR+^4bFnfydx;@avrJ$`%$6c z0?ZuVgQL|hL79U$PMTZ{^?WV&<7Fw_TE7wBtCfRj$XYD#6N0s+8@^wU@ZiUCJi#OL z{Z22&aPta?YT`y1{!`Ghv=THn zO~zF|Rp4Mc5&v6y1%kN=xZdt69F>}Y9)N$(0dPq5> zidk88Q0K0S8mtza)z$IgsTwc{8;8HWZ-7{@4n8%y4x;V)_;u_x5Zs-NG_@L{?oP!e zWz}%1$O4=8UIW#a6hnVr2RVCdjCoK42lec5^QL-emso_@b{ndcmf@{44X|svJAPVn z9~Lxj!4pc4;lKHQc*f@$pGy&d53F87_|k9;>uCiYlUSVisT~fsrr?-!uVA+Qc}!dU z3c4ni;G&^6s7k6rN0C-gi@k-NOI|?ooky6yO+5gcU^26~yA8hVo5Dzt8!WOgXOkW-fKU%h*70#VY-lAc*U$(y1yN>rL<7<{ zPG?2sQt)K|bXM2(iMY*}&K`E%AxG{|w%9L^JRAUKIe45Hza#AVnnh$msemO$%aamo zOLpyUq2S8KX>4kgh+va}8S}glTdwLeg)Pqu6y72{TXgqJ;po7L?4gW0SL`^R%`3C# z^E9+r#*%&9C!Q7aV^kdXaafV%#9ie2N69kz!t30ol9BBE`zM@Gljlm0?cx5M?MDy0 z-&|DoTfC+)5#9!F$#!wFVr!SpN&6WtHt|pKvs4q^dv(#VR}F85{^N9d#vt{%#znjvh423baP?&(c<#?@qB|2YUA`-p5;%Y}P= z-K5wlpWmN}@ScH7aO(DGSeRc7clK$(BhxaNv3eqGl0rCj)B^tMRzX$uY-rwe4g7XG zgJE?oEXZ(&OOJ0sXO|aD;_K^;zYf60y^Y|sAQ&nSHo?J~6HsE?1hhekDo9XS`kdU^>&4PAtTu@|80_a!(v zoB_`_7eV;*1Xy~Y7{dNV@^wH7to{`QIeSZC&RkzuZE_h7K3oS5d6(hyPDeQU>@t|% zvVx_zE`y(l5&S!S89MAWAj#%3bcaa6@mHl_u;Mc@+gS<&+wKvggC!8}olpMt6@y#u zapG283C1& zjGLyy-p-RyUpGnU&=(8~rlpX-TklDgN*S5lU$>qW)!>$l$=qHR@VGE{h{Of<6 z3Y*eS3%loQ!1Ph6!s)Zc!7DmLnC1SG43{MfUt1ND-ubb@am4{7H#bEbf-4-j!lar|#d1}R*uh-Yrqlc!V{cfb2Y4t+4eA-B;0&ePG@S|2`l*x}Xr zvtYtu7kqVmC7eJv{Qk=q<_3CVop~5^#_q--p1bkil!JKO<{U_R1Yvn2e~y*HFeghb`i4WekGug=eU%_#H;PZb9iW1Mqy^YaA~83cbT` z(WR{q3S2*+yK*0N;wRJ^^M&U=_oIKEg9Zk|DzFpW6sWl+%kF<42WJ<_Fo$Frc=Jk%RZss#?n{ki??$x~^D$EAEv$9hzb(GeCVEym}!P6$^&o`drf>V?%WEKzH#7#I1< z5Es7E=T2?c!l8skT>pF}bULt?Q<9U$*(8Qrc108~nq1)K{`tnG8D8f;Ozh_VRXpeZ zJ@rdO~N~JSA?E% znz(-RY2h#`pw3n|;oXaTX5dE!;p(Yhxw~qm<;4y!IQw*ya(d$iN0%-w%iM60yShaoFL!ww zC^THzUVbJ)P3Z7mMrfb9z5Ef=7T#F-pT!r+2|}qkk(NDcRfHN(9$J=4iV7zsiwc@E zuaqy_tR^6r%*)5uPZ7u`rCaQ=S|Iq_bi>l`&=x^wgsH$WH%KsNxxb+LO`>4T=`6wT z6&D3-JZ=k)d|`suSH23OBWne{|Ky2kRGnarpCNJDUN7+JpG(Sv>IDHJ8_C|jy8>&e zAktd*P>{YRkpx|TE_nH;n279a7l>NiBYn1S1u4RAGQ#$gfZY@aRRK{)RY^hV2``wZo01EZYvdLbnnw z!3Vb1`w&w&05+TcBhGS1z{_zjdD#>Iy&rdwWmdu9>avcQ}`MP7y0#6Py9xT5pu6 zisyjiozLZM!x!MD`SbF4K@oI}2`;z)SO!z-ewAwPtbhrgNtOpURl^oA5g1C>g5vj+ z0>^c?VDMF~;L@IZ5E=Pbkm=G4nTvFYM$$uARWX-zu6P34ZeGMR{}~iq4(B zV`e)v->4v07PiCRA4TNK<~9f!bB;KLw7{ZAapb=dFF<`xFtL+)3fW&g$px#2FlNkL zGIg*K8ltty*nm6GBlsbh6;;RUnl1|FUb+T9MX6xD+8V92^>x z&UO7b4Y9LRxE=FPgS1^7_eLicHcCWr11uUov<7f?Pfmexxi^Ptyq-(Xl^fiC0*ql6 zH&rwYq%6mCTc?G&OI-vSMy{Ztc0sWE=^|M9>4Ts|!xmm%RU@xztRU{Q6?yj091e!9C7Lpm z0p$XS%r;%{zY;@|oz+2LlSPg$P=INsmr0zd6vUaAX)nf@f7JNpTBmItv@@7 zmcb8VaO*L#P?Lbc;hQAAUKZZJW+c&34JOaMMCQioLi_YgGLU5m{toeEOo}OV>YXHZ zV+pi~A0qp6XTbI^Ye}5c98eIWT-8Gbs~=hscRjL>I%@?J}J1G#B`lHJ!`rae_%}JUQjBj&MFPlzZ@L5jej~ z;_{Oh!h^jRx$4jbkXu;6x#&5-u7R7J{Em50SpJaHK4=GzC$@5v&E~>ye9MW?oefSI zyi6wE)q61=Oq|5b|3IM|fJnQxR31Fvl81?9?z* zYc8x0Qb#wLdC;La77a}oLhZS6Xp-U#MNV2Mt+*UMCh>ho-fAcxGahID-U#ZPKBjE) zf|%oz(BrHhKi4+GfH6nFc#{dfSQrdDUr*tALg7$eJ{2#uMFQTRitn;wVVdPs6xb(# z|63DOElGjV{YLn_FCE;g4RKt{IS@Z;fc2@lpjW1ccB3xB&rRAmAYKT{H^$;{UNO8l zr-}nFN@0h+BKl;P@k|I=gl$5w-8KqG{Nupkz66?oKuG6A@C9YC?anVQg}0qv$QH5y%WZji5hi(da8dKl!?n(K&M7k;0=?R} zwY<(CE3}Q1hbVZa_KNdL2!Xd3I=Ms3_rjJr@3{rH*Fkc5FSpNc0r*RQ32GAbCa{1Hz@Da!?9OdOnhi67qacUqc)+R4{p05_v{7(LchSc*{)S^KT`{^&lf` z>@yHFN1CJS?0G`7kAPQB$Z~c^XW=WwZCuQ?xj4Qplba&pfF`L8oM?$7O1=HTy^daj z1Apc53SEJ=o)hpIS&e>?0_>f!4wFXAM-`<_DEDb4Dm8lYyUDG5X5JRmEZv7MRkvaH zB7T21xD9`Q4#f-FUKlGAiD6@RpuAHIChp?dmNjuGF6x6DPbc80lD)Y2bQ0!F^GB76 zWPBFOGcT8qX2Q)N&K2n zh?k?oaIs1;j`k117U>d9`xSuQDJ7^I>W?kgOK|6g-RR}W??WGWVArx@%bXzH=3zg1&dm|bz+G9NxVm3c zFn+BlE;*osg)d}K(qA6$532He>)+go%JF#k$usWchpBipwU`TTx55L{LOIWc^U!>` z757MT3EG^0E^sB^AEP_ch6x^$Y8FD(Z#L2EZL*c^a) zBB#ms!eCt1m{0P@hT%Eu8)Qe!Njzcml=K{n!mro5$-%bMXsGpzXjLboHi*O2GiPyJ zoD`^y&B4wQvM@EG0H+oyfYYfm+{^nxt!u0BNrDPIJ64A$f2zXAvyC`2OAXu}K1IPM zb@*?@YkVQlfKiGc@Zm!Z{@U~vTlS8H&RIj)(mDv!99Q?TFm#_VTjArVy=5bU@t$- zqhpysE)7z{)tL@vfv=(}8{d!%YowHTUVQ;P$(Cm~*A#*8M;X>JlGh52kYaNtltJWF z3AQY|96Ibo7@yDzn@{}208I}5cJ!fIyAVX*d_a9$Av8{VgQ?rf;ZSWW{!K3fhs>w= zqmkG2U%Zc6_e;S;>K;CAECKJ2_4wm;F-SYyz;A;^U^V_K<{1~kf&CSDa8n^1?-HUR zuSfs0^D>@&R{*Dsim_r+0eChQU~|nyC^x=<9ibOt+NK;l|2H4xR%c?nV?NxQk%nGV zF2H~w2~`SmVLUy9#iP%|RuY5e%d#P4Y9#7a2&0Z0Zrn^v1CUYB$@?bMoKb( z?=jSTn*f#~hj7pIGf=F%AGxKmP^P>WcRoJ_B7;6Sh$kT0W)E^=$6@uz-FU3+7<}v4 ziDyUcgC8q*;NQV*u-e%hixbztnq6MF@|Y7yX?kITqYc=P_d=CZ=Abjj3qR=ULrkj| z{u{3b-M-$KY$*em&hNm-uSDRG?r!vH=p%PieDQ?ETk=-yKkWPUlGv&q#Hy;tB>w7A z?D+VA?70$%9;v*#hrcF#EPg`X#)jg!fR}{khvSriS7f{INz@Q@5rqd4NLKU^_m7ci zlku5UKRJam&0k5v?I`S)`%ZLDMdLOcBt|1+Fz(w=QsEPWE$P2VRYVM44*W$HNyVVS z_+Mn@)M%9YJV?|PqVT}?@8r*pNW8bCpY%JPM8gZ8h}nxU+_R>e)K58%#)mq|GVLIo zbg7jrusVXRN1u{#@*khI-bB>L?#8`=H_5KfttdWxmF(NJk?&=N?B+f zZ)TA>t6ebJHi_W$g{apVMMS*pao)sG;-WbRD>fe?tZycIFZCtYPEs_Sw~Z``w!{N( z){}c9%+Y*?JJH-T1*JOHkv^Hp81#5ExiLW>FD=_c*h4M6r+188oTZB1h2g|tP?p!m z#F0bg61XlhlPq8TjkB0hOwR3S%KA!FPWA|8MShS~YdnN+JAaa<>!&PyD~Cw8caWg?=rD1a{!?)4=x_4N zLO|ql|B!7yUgV$LU$S`3DH3e{mpHD9!`-+rIP^mYZX`s*L0LTzDM^IsL3&WunE}bi^gw*y1=uoA4~!g2 zVYap&91W=iW&XPLcWxax`ssk&;U<{erwQ+LUO;2K1~fi?17@pLV7BjP=n_$Y7oUH^ zZaHcAmo7?Yn~THqx{NXeKPH;3jOSNmCTJCOI1Si$6XJasjx{K9v4f1oT)`HjE zk&3xAC1;rXsAWrwEu_($*wSx8Wh|axOP|cw#{R~+RQc2-K38=veIjFqs`uv5gc%g& z{>-K~|Jq>axY;!7-#iqvwxQvRoG{PCnuawkMYZoUX?*fZG!o9B8}F~d!Od3m)US2; zo%ebj+`AFoX9N9moX<=070|A|TQPr+1-*V{JIc;8=d*^q@!2#}TBN)SH!q(;lT7yD zwoqf5@8OFVpG~G0#r9!?y&=78Z~$N6MB46i2$O6L=#i~QdC%ztYH}|CiP?C1EHns7 zp)UQlD+E=Ccn@G;D1Ox9b3ea?(bF~P^ea)gPEC!bDxOBSN6I`aBp#a` z73t4C$@r~Fo=WPS#pfGkDLlx;agU^_yP>h+}Kb7Nf{OBbiN#HV=M4LM=_|B@{dak;3KKT zgED#0*<6V|I@yqQwhAvKXFx;t6})>S4K`f6iUEs~LE&~a-fxJ9hL&p>EqNMtHDAZ? zvQZH1e*$Cm9ihph;zYT^&YEV4c9jI~*j`vyu z%`b1@qU3q-W!DW%ojemRcU;Hd3)8?#;W~yNpA2D*)ws4(7d-l|pbOOiL*A$GAyyHb ztr@CDj0VGEA?A*g1WQte10V)6`laaN^P6aD6l49yAEa5T5XEY~l0^LibWQ$5L^kDP z{E{9Ld@c_k{d!08>dxcsv`*5IosB_*ZRE=IEY$n`g2+Ej$LG#Z$mf(ae9?8Eh{va( zv_=y@e@w!8ehoy?A`xq9?vduwcpSKTk32~|gW;NuWK~rhx+XT0eX?=bJ@Wx+IdU3x z%^s58XR(+Y@Q4t8cQ-2TAz70XgWSmbwJ_;jU zZV}&Gr|`<3n`H5&NK|mRMV?qhVC03{#CG)wlo-5A-rfks_o|JAWd!5S`X(a#{20m} zZ6-~A`|&@QX5u(|7oHtzA~l;l(N?vI{QBjFdWj8WOSTKfX*ZBt)E?(QZ6LPyt?<~| zCQ{dDhUa1)5bvFn_}}dlvcpsxqug3Z+goK!J<~xxxQ@n^_V0;&tOS}W_LAe~e4ks< zM?4yPIFHo>L?N<;lZYB1!QJ;b!?FFur{xM)-uH<({VwFBcDyGIc^RDXwpS#6Tr8LR z@G-gcI*?oV{T9JXn>p9Z6{P*G1GmI0pWk_#auG^NlY)#Z78=MXcWj#fS$QKaGC)WvzxA&FT*`5&WHg+uclTa0WoH*K2r2VwT z^wzc%-mw^VHs{5cseY|6Ia`toX-t$Q1 z!8q<%+a@A9p@7@)>onYDyN%r~ca#*}YiqEQaha2NY zu>`Tr&=Nh0B`w|wYnn%~(x3Yv>BcCg>vaq=*YLg>?+_r5q}al5;ou2U?C-);Fnfz6 zdt?#|Lx)GQW#`VoytENat}GEm$|ab)X$o+^#hH^~8d%I0XP>>!!k;Z-tXd%*(s_-y z$g*_k%M@X^CZxlmxPNF{dKOH7{=vyZX~2g$p?6&>zlR^fZN4e6%J~;gaZ3i5Q9se& zC<#hhe&8SDMBexK9S`hCfbFLTFrp?NTq?fe7LR!N9`pqtZi@%YZ~R`oC>~Zw_n;^5 zx%De~hXt1t!1;YA4h1HH&z*J@ZA^j#`(ENBpA?v5{1k(w)4);gAs&c23!8fy(NZ-7 z{%g8}U57JaS8qM$)Mi1lXbmdJX2WKMYW%x62hJ_4#HMrSq4On&Z9j4$+oKHgk6r*P zkrG_yei5#nzl2SjFG2IJd^EXQ1iSX+qO^J`;Hqr==UfJjPMPSRDTHqQvncihLG(s4 zuH?0L+uP&uz|5<#;c6_F+`I<4ai?&>j2f6}bOK{z>tJne2#(-xf>LS#X70NU%g+0w zZs#2^Y4XL!w|5~wdk13pJxIQ>1*d(v2Y=>mM9J+9FeLAe%3m6w{_P6%c5VcPFH0~y zun{!3JE1VL5kAx}z}C!0Sa@|Fmee&uPPHATy=#OSjkY-dZzCMcvBmqsM)56@~nrcBNpQL>$Px=pRG)&xdAIb+GCo}HE0R2MWZiQVEfhCIBz_^3%tV5VtP1G zthB-t8_S@x8_>a{7;@(b@U~(BjBuNVcD}g~amf@@J+pxBo`L~0(?9`@aoRuvh}Rln zP;4v|RvO_-F+OM9-Wa!d@w=`M#%R_R03F6AXx#B1q)M5f<2!FCk~YTAKR3Ycm6Opj zaRvN*G!Z|XafH=#^wH167H-_v!^xIb5UZerzY@%0l#M3ek57i<2^!e>M;9y#RQb7x z2255~!dG{dVEHY1{4ZJ#BE3eV?zK^{my^U}p(DUcT?`Mjh(gNxL2jGEUt-wso(t{x zMfir63(x;SmM2}~Cd3brxmzx9dlUM|&pXlFKHJZv#?_nK?%PWa6yYqc zPdB+7b5eMI?t3B<>Qw%_xQpzcX)Xvh=_1`dcLj4ky(PoPG|BGyZ^`;?OGr^(C)r&V zK;B<@Mf7LKlS0i_B6~QG=|9F?ESv3*gbG0PA_Br{hRYkh@ zb&~Z_mq|)bFVQ)lPj>D3Ngml`68$k^e1=RCdHG%v9{-3Y$?|e=W??v4vQHU81_Q~? zS7YHYcYru+kB9uryUEx2lOc2MRx)(d3{KdrB@QAKlx8d?mwj#Ex|Kb-)i#gsMJ>tL z$PJPgMuBJO3#;IQB9<*ga_|IzYSV|5A+-u;p#^gc$;#O`S$%lnG zy_}m|0sN1mGmob7`@*BKDgbWR&R8|_ijZN4SyWY?atx7 zMtLz@{m*o2W}n1e+L}fWoKNE{KBZ8>?JVy6l8aPKC71heHLpFbzsb3h1bXH?;|R}& z_ov_Hp4eWX1Do!0(z|#KM7ENvo*zb!U3|o;tAx<`6CQJGWCLky>{Cuc_AEWx{hX`W zewxNMyyPCAIYF-_z2S!C4%6)x?c9o}ebn@1Cs*6Di?*Nc;#zCHXtvuYZcxXaZhZBH zJ34J0t)AA)Wm>PKy}SFlEaE`_lzrptR%=?(^__c^VL>BResYb@lz!g*n+xbSq@ybT za(*FGsg=Yqm!PUeJBme$YL(QeWus_O|H3geuvV-{HeZ&GE*CGl{9cOMW=j;g_li<> zNV2H3?>EewD^;W)@(mKIrHayQzQ9{O>7w<$ouFeOT@**&K(DfNQKs2*h%1pQ3SRXX zwi!wlwYxt6xP2MhYcP-xg&o5;PPjHJ0E-yVsH0zqiwxl%i*tFV}lFKl=#dgZ&?D?)4Dj< zbLJpU-f>?x8^AupR(`LV1RDQZxZDX!pi$h!-SCqHl@-r87wyksQsi7caSUSp;LsP>#k#{Pcr`9R)B|PP9rnmM>j`0 zq4v-nT=ZE3zdotJ9n)X4t`*hT)auUyU7q5a57oj&$<4TDxrZQYZyV}VIFX+xx^Qe# z0a>#BE2h8tK@xfg@Blxkc2@px>|JFF6UU2i6FpXge5Dwd6R;Piw@GkO+XG;^xfB;B z9Sg4&q&aibOJE-=%^iN45BAffxx1(D!ZTMXE`4h)jGiya-Co!XNsGm~@|o|T`G^Qt zy6+3f`~Ak6oB`Ny{2Q(_{tGhSKI4naqBMT_J2br~K~>#aaABl0ZT5bOM@(g?`;SMM zaz~aL8JFY8Qwnrc=xwa%QldNhg}8993Kd^}6IWHK(&+4K_&ZI5u3m8!RTH$RbW{#% zAJC=HmyORV`11y`uw-y174FEyhdoBLZFB}Y@Cd~}<#Ze;ZA$lTNW-Zs&FMV1vG>d_8d?jpy~uJ(`x(Y-a-c6PMQzoB(9zwB z>h+#QqpeodbAvyAer!dn3;eNh{vtZI?JTbMT}1yX1>&cPizqiG1Vdb`=v3=4B>Xv9 zCC{&ifCconS{%;d_jHB-l5y=Eb9zuR6QhDmsp8EmxKfYOhnY9g_^}DSGMU5b{#kU% zkvpjGXh56fDlo2pIyEzSh=1PdQ|q7AxOL=Ix=8d1&J^lV&3O$do~KJcDL3QIiMrI! z`z?BKI#fQS6DO8V=Cc<*;}tV)YWHve#b0PryO1GtcArGYUY6j-%TA9dG`;9n>m}?cxMnko~2ybxk2c@2wa@_5BSItPG;v% z7>p2b%a{I!>53*?ckN%;z1@hbdO8d)=7wB!ktp4LY6fRlD^AxP(&x&4OHxS-J?^^o z2x{!8&9%Rlp>aPoxD})2Xmjm&u6(Nk-TqODJ0hk;yXeZwc>vFJooEFX3Pr|9$ zn)IcAC{9~Di7r+>i8(rqQ4+DeA@;0-o!(DZYw-7Oop~^ zO>kK{4NBS`L(Gy(5Iprhe|B7f<`2c-S$rKliV6Tz3*g|DtDyXogVfg<&~xApR3A=) z`#$&JO5z2GUhxnlKZnAHcQs)ADgcTN>iO*7)1cDP0Itf%VAj7TDDl|`E0tcta>*U= zN2>)g6gI;{+ZI@1zaFkvyo7@)&R|^B4EK$e!IoDq;LaTfun2zv78~qA_DC}j8GBeL z`wCim?7@0^D>#pIgf~8&5Or@Ew8?*h$`h+$?w4MOv)c$`?|lb>$PVbb@*BiA9)x`b z!_f2eG(V?8j5cWn!Ovj{T01igqW4MD<$oigafuA|>b(F-wsO>IPAoK^SELC=F>q(} zSh`t18f?#wqunG7L|xVRnN|U?;HWzF%{~eLhBc_SgAWuwm`H6~*8-$Xq{mKJf!Rk5 z>bZ9Y{5+ygPgE$w@p3gPvRMRzZ;Yo>tuIJIj0(@J7myEGW9dqr3*-r>MANq&AjSQP zble?h(qXGWR~6ckTd(BkOJy6f_L?j`-Qh@j^G4CHnd^v6wG2J7cN-DoYwwlxAlV)? zf_B)SA<}ZvROD0$NpO**oART`$ssYCBNa!ME*yr{TN8-wlK-35Xvf_BzEdw#t=EbiEE={b!THic~l~Ya|J#}CCp`Jr~)wKx$PXLewdS2E0d*N*RtQ=nhaj^V}WPn=fclT@6be;2Y=Umz(@H7(E7F;D^n1RFMY){kK6F*`v7X+ zxdX|ff6-aJ4BXC&auEm1LE(=CXA^c0?#&&+rSe=#jNT~D`q4d@cV3QbT~H2L(h8it z<6UUYRp3^|-vQ>Wz&UOzfko@(In9=0@GF$%HU<~N*?lsc`1N9-ccr;?SOT6|5?r46 zU2u>R$kJ$4X zq`ut8m1*rTR8ovrR6an8P62AhegcR79Nasx7nV**LvZ^BOH1OhpnDJs3Zk%l!!JlN z4a0~BzhHc92(EMa2~I6Rc-n0cI=cdKh_6ergH+73 zs0X9yO#EF|2ak?k#>VfDd5tRWTJU0_xpj0aubf#Q=ujC}kS8l(cT#OWn`stUx_4;!E(ON%o z;Nv?Y-7tjJkJ1sS#q z+(3+sAZ)!NH^+DXtm}P>+)=TS!Y=92+?2PWLaVEa+=>sK!paH-PQp!#1Qv(x9{8O3Y3t;ilfYh~fDWo!6+ zfmB?g?tvGK67k;M9Vl85gGLH|$UD(+hWl~!{Su5*>`tTUVt)*`Jd4k!A3&v{0Q}hC zj#W#8F=hG^++iPzXO|h{v6@JHvr+|H55%Eldq11B{~{*8Eo8NmE+IR#h0m49MVFdK z!myVG_}S>0$)0n!v1q<3srp!sqfP}ASMf(UlvYLRw$$PQP8@c8sY9_Dnoy8gkHb2q zFd^hA-r?{48CCUI?CAv(rF9ti@g)1(*4{&or`6pd~h&I~5{9>ZSpgQ9XuSj5Oie_e>!% zbND*beF2#>Wd^rgdn-{&oWhk%4k2e6wYlMr%VgcK2B&56kldT7%ISM|5%KL~In^`? zn1ei1vO*c;G)8f~VtU}4DaG+I;^62m#syT{!s?;F7;$qw=!k#EV=H$<{roSubc8>w zQ+kKVF5!HRbPJAjNP=Gy&(QsLHq07ZjZ0+nq1@pf9-m#z>({r@$fFWe{>#S@nOZRO zyn-%=pMk@xbe!h#0?G#yaW}8K&&j%g|N8k&5Cp{tv4#jgLrYxFvdu>S!aXI5c9{)NbRC!8=|ls@xt zKv69TdSs3r28Kve$4YCwVLXav)?4DwZ}N1P`+N*7R^mO_7Fg}8LZk0lpy(e}`b>2` zDqqx~fes5%ut$s5yjg@Zm38ULW%j7DWh&LXyBx!8rqdAnwb&?QKnr%d<6fUx^vXVX&yG&0DU&15XaR3_08Z=tAJANkHx6=b2fc&_b%o-n9`5R zm8g4RF8y-m5gwUuPW`fK(cP5K1lnAWZ5j(`#iU03!Y!m-^Iu@Zd@Jf=--3xTi|A0y z8`LbYrkQ8j@JqmAYPRbg8YtV)&}|>^o{bH4dcmK;el~RDKo4pa+R)U5e!SglL({tk zu+G$$>K^=w*OP2{kHBC2JY-7;*AHXPLOYthO_X!GYDe?;ig8Xwc2tFkb3-w9bmcQ~ z?({4>I(3Q!H>hGuTU{hLTc5@BfEUlHyDg%6<0SZA*g`5eBF^>j+($tIzYcp%={cUI zeBDC$o|OnUZp19=r!tHWqxGq54 z{{p;`YQo{Vb1?sU11jCx3%+Jgan{_mQ0q~L^I!q2DXT$+z0;sdqYB-`m0@u01N`A2 z3K_R5@bu4CB5qoaKcSptzbHkwk=dk8zXU)13ndHNZlOY+FS#PZVZ8PtqSaQ2ZX)XB z+@_nj!Qi7{{Ml=G`+c0?gl!JqYZxyunwH6X0B##!(oR9OcVa>xVLU3QBnZ#%k3y4z zeqnQE2&M+>u%Nm#=%%%TB{uEHe+SMmBISY0#-=dC%}a5%N-0yFYKEHn%)nu`$2|bwq-|oi-9z{sW*cUaABImf^jMU0B#u%0A#A=Cg*Vnk3Ei(p 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ξ*hWQHjM+7Z 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%0A-G=90f_i!?OAaOy2) zgQ6Y?Z<<50W4(#ep_7!y8q)@KRlNN*j1e*ZNniA5kwtRr=st0MX7CQT!!f!^<82q< zs@_g|>5~QS=onzFWAnIfb2Bk1q>LhQ1)Jt>W3^;Unu}4?uLCe4w5^7Qa#xb@~>gW$jD@5Vh z-nmfN5ksWKTFI1>S%lpGNG>V%v3duUVU_t?IzjzE(B4=?Wr;DU$D7mBB|*?!nnJtd zPJwFgbY|Q1OjzifLdG74fk59NbF;??vMd#esnb%<<8X*`NQ6MrG8?kwzc6qKY~#;) zzYmVK)v~-h!4UX&8w6@T;?uw z^_d_j4~iqtJ_F)@W>UGW6x!V*tyQ?L$30~{fx zGZPNv9ENi>{?J<%N4~Cgg0<1DbXNOe5H5dBqieRozc;&S*OTw$#(LLag{Cm=jq6rj52RawHcF zl)jPKT@jow{XUZ-J{PQXQ)s4tJF%WN6>nCildL7b=-$&wME~G46nMFn-0(Yw+pY`I z-=AGkV6_A-pEePt<=dF#Cjw~v_6RxkMjR(SnFh1nO=-pBH85?G4|&6IUcW7#WWaHZ zxP3d%WV+5JUrlfD3Km|XKDyKBwml0`?eS|mTJRq_UUx&8qdVC#*#r1-GRuyu$>81f zb@W!cGRoFZMCM@ve&ij);3Jhde+kQFoE!1qvJC7W9m9;rTkx->NZrb#UN{ujhHf9t zaIaK2-re$=%5Xh0nf|AAUe`tbT~S%=sWjxB*44lVPN!LKeO+{qt)^PG+|D>rhTA)z z!J|PP+}@}dO%8EPK{gvTxqbSR_WkH^{49#H`!L#)%gUb5!wS5H4`1HKTNj5>!{aL! zytt2pUtc2Bgkcxwd3dO^7kzEqabun-hX2Xnb}z5#9xmUk*k*#?%M&?1n?2T;Y{Q(F zBKYrFHV*t;g0)x2@YjMWY_Suq%a~M&&HdfDY5WlWP|f9@gIhUY$QqoH9f3ick7AX| zepI|)g%iCx>6)5GT(;mP`{YS0I$1U{YZtWQuTO5wyYk1lvRng?-TsVyOa@w1+(u?s zC|c(>pnKXXG+W<}0hPg69n*>}VVnbDl#dhp<8V;88U_6mP{h6ki#fjZs>;Xsuip-L zE4{%iLunMd+m4U6wX!ib6&RLqlvr@jOP`M>R9jdZ<$GL^zabAlOxuim?|wq9IiIQe z-61Y7Er*{tcV_3eAoOSut2=Lh3eyVSp+n$uoRNASf2o*K>wr=;7#1ZO1ux)`B8j9rMH8lr1o|cX# z$>BU-w82jUoit;GE56ovMW_7DLIurdY_@e2T8$0!yU+RK55vujj?-EEmYc+G63j)5 z@04Tlu19s9X8Jro7`IM!rmuv`@Nls`Yy3PFHI6P}s|#Fkw~#Is@0m`^s*;)h`X1sn zDhhoe)5!GqTR=kRGa^(W z5iau|-o<{fdQR=f2B?5j3Z1RI0|)Bc*vm%`;NPatOiM>TE?TTYXPewY1EG3axi%M9 zOnk|hom57Z3<;R*dYA1OFooJ#vLqwQ6uy;ACIZ8f;MwlUzD$*YwPrsUd&wP8z;7jk z7F%I%S1M)Vtktg_CpEzEb$$Yx;jsKDEXN9s783BiN zjL*P4##`$Px!K3{GySz;^oA4cKP?Fc(FM@fJrDjoJqdTN?SRwn-f*m89SAJX0!wEG z1be+8d$R^~rzn8_yEbz8_hi^U9!fUWt3h$rWEh7P(0%L_j85GG`{q1^FZc4{=K1%a zZuJ75Egk^Jut#u!V*>3xdky>#2%8;qtcPb?CCqH|>!82oE&PE@u;ljfH%o({+@~5; zb_K$Mx^vJn#TnN9%Y$Q~)*#EVm*YqNN6~r5Q~ADeoXpIGjO@LsjPqQ#Rap(uvf`_$ zfrzFCGRg>rgfx+m6mg#GR!Py25KW>qRcLCc{GQ)`{KLzAob%k*_4$0>pIu}U$6C;O zol6utG6=uYkqE0EB-2l^kTY6Erc7K)?r67>2^To8^vOPwP}xQ_KmH>@9DDBPIa&Ly zRiUKt=`V67b1gZ1^E-+CeTb-SmbUNW814`EO4?UG@FnXuNZB{PKSHF!CfKLV?jjbH zl5xCFp03I#g?*RF*{|g!r2aa2^zs4;DT^dmEJ{etLOzs)93fqc9>6MBt|L;n6$H)? z5Sfx;xN!0%(Ju)l$wjT?L(mcObg+YXt*j*xTVIfv<6We4eJhv$=_YlrC}~Q)OiD6Y za)ir|iq6R)OK&7|z7K}{@m6HSy^P3QJq`A0V;K1`gJl=W#gXM%A<*p{M|yJ|$da{} zi0}CWL~PPW^0gXC-In|0j?N7t*~2G2l_f+l^cu&SP9bY!&XdjiB1wPxIkI3=1kq8y zNnW3F=k%UxlA88^Ejf-{{^d#j4xc6-XXlfEh_B@779(PJ?F$K0ehqOm8;PpYSBU>~ zko3*ABQ}j&iK6~r5DVE&!aG+1n;K7yTr|ku-+Rg96hb7oXOhXrui%qxF$vyi&Yfcg znOxvb1_H9U{<3Xwf6F5BKCHXWzn({qXsVKTOHv4pNha(6-XzDO){^&~&xlXvdg8IK zg*3G#k)0pUlIEsVqWS4KnbeU>=EtRwg$ok7%yKH%8?lHyG_E3TuNIS42UJi zyq1Kk#E}Wcl$7sIASz`I+-rD@Xu4ODT{=fe_UL|6u#wZHR@#uqDosFgOvz=JFL2C% z135j*irnquI#h}#5znzD#DvQQyD7(!^KV_jPbHfO4sHhjO$WHU+ePSUVaS`Uli=S{ zeR6xYAgo-HL{4{Jg96hy5)P-JiTMe>f^#@-wG`|w*vZ{{XP~|JbG)1W0k_S3#z^O- zqi4ekU7*Y?`g@)g)oZ~Xtt+UtQ=NKeF?4haLrvZ-qFo99FyL4fir;#G zyp4g3v7Q2bkPw8HODE7(XOG~qn z?yCK49M^lTzi1{qG}wqQGd^O>S}Tr&<4PSr3Q+aTH)wZU2d$#_;P1j4C^RV&e+8y; z`t*K`(mYA$gh^4)Wh?2EM}&sjZ=unPJ?XE(1N4Pz0j+$PKySrYaxB{r8oV!_wqHr2 z9r-a-bMtw6K6w%C5IIIK(P`AZHJWP6?fL&6mez+A(Zdst(7549dQ)v3m3VUqg{KA5 zwr|@p>*5@$GcH31$VPhLr3n4u*+|#i*Wo&2MyW+xEUmB-YUqnOK`m=OQthGBbguq5 zZBs0wVnGTGe^+ud=Fc&Dn)|t(mmX1F)kNCkCDzb7v6zB`Zi6kkNyCI>8=9Ky=*Z(v zdde$|dxo`8t?z^mX7*Eyu|@P?eG~0pV?y64XVWC9*;K=_o;us+)8LTD)Wv=!jS9a+ zV|w)IdG2oVL?(_-UG{>?kA>0fWugs7D+K8Cr~hc7NiAOg?*?6PRhjDkuB5zb9ZFoU zP{Ebjw6L#%y5$;BiL%Rdb>9;_&~lGDwe{kGuvTjMJCaI1s-pwZXXwA6%QTqtvQ=od z(>l&yV|e5|)!sgp2Hwb|$s)p>j(3WFyJtcbG|tdpYj||Sqto<0)u!ubWzw@hMXC9& z)l_KdeoU+krgvX2#ep9@Dy+=0s|Ux?=(jNYKK}?_YmlSdRUtt}(1( zC7b#12RJ=*WVaucCf>Qhc%;;l{PrKktvy1-es}>DJz)S={Q=bIR6QeN{u1p&&DrN` zCD2&c5A!Wg;|=RT{Q9jMsZ$LbZS#)3<(kGUeKG+CpVq^PhRb}j_Cb)mlY&cb2f%03 zM6Ap`!J68w#a;2YaG6#yj&wi58{=>4e^qO;U&IxN%e>tXb;O9sSf67qozH~4!?V$Q z?JC%EU@>dyDFUIJCUdjgX%tMl&J&wtgNpWMF!yLKyxO=LqQ+ZcA4p+r=P|gceH_E% z_CU$;6PPb=1OX#uxJAnjJ1h%vy5a_GxFd^?)n+mWz?z-rr3O8L+tISQirJAaghPYN zKw-QNasz(Dxdcg4`tvn}rF{aCdDG#Dy*G3m|HEKz3|?Gz2{N5lqq^FANb-(>$zjr9 z{&FY$tNG4Xnb}l-WiTCXMa;l39L61j*9Pi?auJ^EPx(T&Oa|Zu^;?%S423$VegpWiO zh~Hdw?0WJYq9b?N8T`Biw|0i&)1ZG)sa?+QJ7`3jvbY(QZ%z_D){;*i_9S$Y0omO& znJh^Sfk`r7c#+_RN=AR!vrk0n)o-_$=Efy-6eeOPmnrx=`3nXgv7?VV^l_)eGaUcY z4q;{f=x#O$;=}T|W{DEyy^X_w!-t?Rp&c~>dZDqq2^NIJ!H5KUXN9t-adKc+P5PLhUB;{T`M;n^iW{ ze~~7s&elXdO_@|0N)hjopTOmiNW$HZkTH?Vr*WL7FV31|$;Z#I-}^Rf650S7JLJjb zpn4Ga?m<@Q7?7`>YsfEcFS1~4Gm(3sORk>|Cb3cdaCeym@w^uguFGQB3%260W?wBv z9G=HA0iT)mzeh2yRg~yE8_}$dXBhpfLUhf(XpHG-Mg^IP?8%L{@zN7zc(imALTD2+ zZH^}Ub=VGse#h{|)+m!(Ze@TC3Pg0@SNQnl`X!?Ei`P1qj{ZeSsIV%IkuD{CVegk< zf4B_vIp#&N&LLQ1Ye1x{YCz-cCs22sNEDoIgTrHCaz6;+fq)#*Hhu!Jj3j9Y?1lNa zA3>Cu4t(8t0bZ=CW;+dLv(~%jf!W8S82jFnq!oQ;+c{t5<KD(!Kv=U@FWhw@j?gU-43N`VIO`%4TomQbQrCKg4Pi*I2z{Ej`n>&T+ShyrciTZ2`e9$fE; z2whfEL~HIIpl0dWwBuVhT_qAlr(55lbMyDnmAoQa=buiq{Fl&iI|CXmQiBVsU$W|< zDj3g!r@b|D*`TFoP-&SnWBP{MeY{D-?_;g_bdfQ=F-@8p=f6cGj%Bc9Sv2Gs?7_5a zVq`+?4YvKLK9uyGL@$Xq^$Xc4v?|w#*P|FgAAB0dXWSg!ZOG7yz|*vxJFkZZSLq}J zCz`sWi&jhiM*~W0=oTF#I*;>>x!5aE$y<8#@7R6LcNRc3eJ-N?(0*F2)`Mn_esnZ< zA$y!ZndW6KhfC);2CZ-+bEJz<|0fBkv+*~MH&WEQGauuMs@b>~9OM4F0@xKjLf4?1 zaM$oOo}8jW1jl~j@e}*u8OM^Au9BEJKz$T@$1vhLD*&|lII`nv_;?2ImE={70g9Ious*VAB7W|V(G;|P(< zM&a-_VY2s2CG9NSW+n{vB{8)veyl)%=H`Ff|Dta2@k~ttw=RvJ!c= z!Hu+RnhRM4)5-cT>zK7uT!{ANUfANqabC-25jlHfqOd8JxIULA`Z}@Xb#Ne=9kZ1T zCWjLP={%DENro(PNhiC?&VtdByYRd)09G6+WI`i^F=*XtFj8~EDxG~y^`_m-$PQ^J zY|m#-Ouh$C*8u9XRN z?8!Ft$l#;y*mr)1!gaPmxC`h1J%!O1)v37UY$+7@~Tt?@JAg zEYYqjot6P-NA9u_wzomjGzDL9odE2|Rup+#!0Sq=KpVvetZ&s19OE)FLQ3O!^FL|o z$FYQ-UfPcXcWz=!ehL~6CpoIb2Mj9<&;(L6i}_pT~t27lM%bkFtZl4eMqO4RAV zikEJ#qOe| zoR;a5u$;v4^8@n-oT|1 zsrY%87hcNm!B2ka%pdNx<`p)v7rTOKdBzyF$mme7Y+1Vaz8kV1kKohJU(6?)v)JhU zjT!3^qWpXTaH)Qb+p?#C^}%F(ylWC$l*X_c{svfEr40FIMf}R-xv*zJ08G2M5u~#@ z_RYyH5ENs?z3;C=ndmBV>x&I(ySkf1PB0;l=S7q7&(+|QqfeeCw!=xz7y7W^6a;Ww zBJZ3K=JEy~;6xP2tK$C8cRYh6cR66F1-5ciXf zkR@LO8=rn)*AH>N!a7~b_nSjSLiDNSMxcwgalHJi9e6z487=y*V#%ki%*1MOsy8wh zW=6bc-yBPYp^DG&XJ|GopQ}a2)i|*E_r;`-yWhU8OCxP@O2oz|oAgVYlM5<~$<}Zg z@?yzZNYJ_s!)1JUr1uQmLIsFsa1VG^dBIYDX>jjbU3bCc3EPzv%Dj#~hIWV7LiL_4 zD6#wztkVx*XXjUfaD*718Lr~(3lGC#r#jw*oL0=4QUaCBvhlTN87#T@ixFC|1P+qD z%-y!xtdILOykeqH4|%&&8(vU&*lan~+TMD%oI7SELlIUxV!}Pl9X}Vt`n%YS3 zqXud-X#3i?s4Dy&Q*Ya%kKZ|b;I55QohR9Mq2tW$eqUIjeg@`ze#6A&_(7~gIs0{Q z7=OfaA1`r@Im%UpGD4e;F>J*JjNPxqb!NKKgs8iU z63)(?Mi=dGVohx%==A#+u&vshe%&NXb%Hk1a8`+9CJWMYOW&~4E<^Q$Z*IU;$(PLL z+%xcdd%8z|rHQXrj9WJ_b4AS`9us zo;ZO~;_YSUwNHX~`Yf#5*bHR}KVhEfB%--11)iI{1tl9P^84Ecu-WZL#4_(N<)-h4#Yk}JDq^(fIYhk~0?iqpm;>cvAZ4J-=r>A`K)nOt zb3K+Q>dKQJua}VviUH(T{biuOb4gGAS+=&@7aBy;@u!9_eq5@FL0#_b)5EolPt<$6 z#_RF0^jZz$D^d*wN%tZ3E*~aFY=q^*Mif+?6aYQY4nOt|UIvn3Ob5BdnMb`8Gv?%s6Zawo99!FycMa zy=yUiaXJL%Tt9V{gF3_4QYCl(CgKG9*@V>!z~v1Y(0%0^8)evTwYqBL&PBvhRxN2@lUL67P(d^xFvAIN@U^>bW-o!`VR z%Xa0Tv@yq~!o}EOUx6PZ1MzjvSKP8%16x;rM4pBwUca*jufFEkPrGzbXz3zU`5{N$ zxk>JsxfFeRgi9++@H4fAa{meRO2QK;ZL!8)S21#Rs2J8nTENPQ?(p+S zA?gie;>91wQ7?EKN;&D{(H%xOgD-^Nk4e+6Vy+W&>wH?z&GW;4!t~a*DAJeS!8a5Y zCN;mhKyIND{HeGI%_r;G<>d=-d|3?IskCEsax6aGtA;X7LwNd}4|{qGj}G7OMU{Z- zIQ-X}I=(r`e7Daj>T4VcdjLtr})t9kW8#Ny2c7*L!;ir3UaL6IKme0mxjObp?yh%cMBhnsbpWa!c3gD6@tnbwv* z#{tLlXw!ET&(GP62l98Z?~>P|g_R#f{7J!vj*Z|Lo`wHzs6tj_9kvAsLiVMN=(fR< z7rJIW_B`Lp?p!#LjyW{)+y$C(+xq+L6yYLvM)G64sdf@KRLF9CZ!7vt>Iq&Mm`VR* zc^F!$O(hRq!{>UVSWhhJrM!12Z^hlC?@y%(8p!H-Or(E9k{SP2O{_}V#c?P1Gb6?} zaBRg%W{GqTyWDXhob#WK{;j1@l+|goPiPBR`)r4KZb@ualO>$-x`=_j$t-KZdCMe1 zvBTF2qw>A6v~U4mzDya0cUeQMOFl^b(Fc3)SBzbO2YjVBZR_^zg`!{$cs5r9?!BE4 zkKevyOLzR^hjx@A<9m%KdMW|;*cibsv2^xD~_d*sDR^_}An zzs#sFoFj~~8#-7+hc-5jKMM;ikFir<9>(htm6(1x4!>4-V(gP?FiUeYRM>unxzb}` z>JSg7%<6%(>#-5XEO7q5X7*mwbXszH4C?};sDVK;-M)(R*xTE4yLTHJx@#}%rJ+IZ z2XA0je=Nfkr$xMw&53q7Nnc@iT?L%j5=^$Y$dZ;b0>r_z2Y#JU#4Vfb!P@F2hR)VO zc1k<8fh0X9B1+HSc!S|$dbDMG6mI6SVw3zo4~@avImbc58VI5Jk-OjjSo;NwGhv4`@p_`7>9}devE?7eSVQ!1I{~N z&a8PfnTAQmGiQf1P^e533RfKllYd7b8CB}1X$>$nrN*@Hfdwv*u%Kd&FWHlsMY#U> zN5;L8!Q!$`h$14mR85+k4|>6@ z1p+Fv^m$Vs^W~^J)o4tC&cJ_|laLM`cQasXO$_u(xsq%8Jkoi@iUbC2Bl_i{WJ0wz z`NZvgD>J8%hNJDwd|y5CK=uMtHBFXS?aT+4k(nH;q6A_;aJ^bC>da%A!>~m9G27++ znyIl|h9&#Yg4N71EE|mhxtc9vfvtud=w$-ZdG`2gArNbas{8i`w7)#`MT)K}$v;JCN)@!MWOf z{fYjF0bZyQC2I!9Fw$fn)QpMIMfonUH(G^mide#oXlT(P&UY>?^c7`tPx9t$x`=r` z*Wo7{hdWAyNP2h`Hb;GhRdrpsckviRo)W~3I%D8HcMlV&U`Ng+iJ<$?Qc`>^97nFI zkePpv;3oSR=$1W=#%Jo7KjCvRGdmF`-#myPMc%@$@ebS@cn#+J?#E*_pBV4nU;OSZ zxm=#ph&?)f5JJyn?TRI)hl_Vi6Xae3?P+$LCS&MOxN@t}u{pH1O zea-%Bdk)*v#@KHeK}08h3BSkkGAs(sU^2}XqH6nfet*zRtkX+HKR+L^Y~s3#!kRe# zN;Miag#dH8j@^2snsJzy$D5n>j6GpE&2IY~&iAVPnsj~qGWNRgN*wnZVH}26;kntNV61c;XLwq| zXhJ)GZXB0EZ2JrER&hBnD@&wi#g#uT*#xjXEq8f=Z;f^REpSiRkk(J)sY zr21LZ-;)S?jc(Z4Tj@fN_aSDBdkz1ziU_voO@%PkAhs>^J}67{F?)|Rfz8Dm?6=k| zh%%ami=U*!;$>cpv-@1o9u43(M##dw`f+x~3uTz^!e=tq{bSF*jAcfHRp^;FQMmfx z8*G?&3&ZYIGn;pmp?Rkd1Ql(c?J-(*c_(HEX5>V9Ok)g zX4Iwkp|$uVQgG=V^RsXcsr7#d{+gyl__hSORILo69gVO&Gy_i_`onBF9f}f1#hKg7 z4zQ9tgP4#|85|#6ga+DD$Zu)D)F4?1eqPV}F4k1PdNqf@w|$8>LR_);TpIT5@x)Qa z3Ksa8v8ld%W<$w4zSW2-s-9Vf!A8T(oi#eBs&oU?OWnZj<$I9aZ$|FBDv`o;7qa%S z8QIv2ZT81_DO8 z&e9z|ycDlZ;FWnE|42K6=k#;fJim)$2d;8*Htb zLFP!@1k?2yq(yWxQEJE|3(s^x{?i~bZ2yU8s`d}I3+bb}k}}DX>|qms#}S8wqs(wj zEE(VE#@d8WB9ob!*s{+Y9J2T1Z6DqwP@++pV zfq}@=xbpZ{ZZGa#NEVBAI{EBvM@Dq_Ih^t$ z5lT#j=*f=dJcYqHG?6T3f1DS`qUmRt+v0h+rK^EIlzG{DkxnhU=|B&xpZf;V^Txrb z){U69Oe8TME8xe=VOaRtl)c{T1)Jv;^342enI9YrI+^Qlu5Vq0{2Z|Ok9W?C#(O!@2++<2IwHn}{^!E(%8poHt}?Xj!*FmD~d z1Ob6E~8gl{LZ6{FHZx?g>qcC06VUM%?Id1HO*lw$jL!4qcOkCT~UB@SimkBy2^Ws~Y2mh)J|uvz}jDJ_D^F3|3SW zps&s%c#^u9F2C@RCvYHx+VlRy%U2H2ANRSgsmXElV2U8^_~}UNt?uFMA{qKZaX;3( zWMFK5FW=GN312>B2RvC@$P}=AaBHt-az34gBqaL9|}0`(g)cX$86AN-TNOWPi?O7WhIcJB?g>q`jubKDIflFdLu zGTrlJ0?itkMei;0rbn)5(szvtRA^lf9yn8s`_&q-wtq6xd~rIuOOrQU@E4XFnPcz# zJp6Q)}+tz^HRVP_*10`HlJBit~QVX}#9K}t`6mX5hIGzev#?*u>vDe+t^K_@4W3~s6 zvzPDg$KEBcSe(Vfv!%JL_jC`tJh@u7)wT(bu6l-MA?s*O{|MU2FQe~vr~q+!j(QH= z5Zhvgj>HDu6*K7SV+fm)4q>ntm#t}yNA-em;#Tj%Z|GS;ek85uvi&M#`Ly>;+5YE{ zGk%^QW0DQd>wB1eudKl%%89>GQ?7oK-fay28IP`c_H@D9YxsXA{$Kw9yzY1j)%^rP z^Ymr*>lr@~P1u9mj<+!di5o99f!7dQ4#L}VAmLgZxH(CawV4Uba(^*Wtgw)s z>#!H5nCxZzC4J%6)%EZvssPr;CxB(HAI$dC#obSr!JLE%lz%TBO1ioCdxblgRV-r+ zUncSIm=Ck8eI5H}V=9{;>&?{g$C<-@HcZ1xd(hsLz;tiZWc*j>LcpCA);-+@o|IX` z;B*t{x&Iv8AG?$J+eYC#m%U>)2$6L`B4jPqB-LhuWZq;w@@9B4iCD+!n7xsZF#S4g z7?OmdsyaBSsYF&jDuJkNo5-dQW6;0Nfn0cQNPbNy1CMVq1n2Gt2Mt4#!TD7y&Tb&b zGnbGH7U?9}FqL5CAyO*7kNh_|f(YF8CsyKSWO=g>@qa2sTn5a^`c3jAW^XneJMThX zv(q3(GMb#(dI*f}ITFmc4RQsi!8xQ4F3Wsja+ejqPUMGHL~@Y=kvsboqz{S^L-}r4w9$~fRr?H?LUvpS z+6VABCq)G6uflF&j=j(Eb8{~_;PU!H*4>9L5b!RJgtQ72qb zJO}rw68R$~MUEfxBbRq^ozbzIxQ;XlVqIZD3Z{sVhu(#7AXb(9-0lfVKNN{uVkJa& z3Xpi8I2iwV5r(c=u!FS*Fu7d@Rz}T(htWpFzN44xC0j`@b`i2*yBCq&9Yp5l8IsvH z_M|lVG1yv5k~0HNF!o|5>^+^%%-Z;Z-FqpRT@%pF^d>E5Li#2XzEVGYoFz>RV)`ZHheqZ!ZK){9xxk&dPF_-GOP56{}W(3uMxF)x$jkuNXAwsTKWv$q7} z^LFCDAZ;wxIEznnL-6nIR*aq@Nk`4sqjK>-w3}j$f)0f^@?QiNWlGx zuTbSzDE=ubLDLo`_UJWhjJqrWt8L2p%E9GuXT>#W(>)K8>@|qCGlZE#A*{8756^Um z3r?OTiK^?3Fla0ro5C)j|4l#K?of|0P70_Su@fU>KH?#XxwytghF)7|hW_{R&|%Lg z>$ZG9PTsl*r&-;{b(TW(QHveT>r|m8amlnfT8y^8%A}EzK!p;vP-g=hdbiY?{`$wq zz1@a1^L-ZT)7dm7yBhx+_odZ^QuLEXC=JYWq~qI6sCCV6)G1tu_fJ%@^S(sjYW_?1 zvSKh!_31OO>3ve&#M62U>**wD!_$B=yE2lq+4(5rWkluUTbhH@x zj)E|AStTZD|Ag`flHBf03XYyJWQDRGj~%noHrf4^ZL{2pK*tQDi0EAw&UiCcKkyqSOZW*W1_3V@Lp zhw`wqY^tRZmI?~c1F2khT!AIMV5&-`0!(Oycn5x!m_*&jyYOM_d#sMKrh%#@c*%Ap zjdOm(Mw=+no>dHoNjIv2 zX(%$2`+Jtwap%ir&!0X+aji|@)|biNTh$3_p55TJRf5QuJ%TXft6Xn$75Fky%!?K` zh>wxxo8s1&M&Nx?wz~|WQ z%)!D-AZio_LrKR$(qKJ!2R8D2b+58bCHL&M*xtqNUjfkFbRSb>=D}dvBGfh!=1RkrHCOrJ8tGgI^h9Rt^&gDfZpHq` z6QGhwP}Xf@FRKQ-i|{=6EFud0dPR|X*T zmGg4nG%|wU?=u%qnZS(KnJ}_KgcUbC4I2tNczla|NST)l({i4{HQ95Z&3^^+6J+6_ z+(a(BcY|5J8OWWBO~9VAC5}P@+f=40|}9lE(Vw%%1SaAbWH_>+;MU7^et)UK9+{drsn$$Plne@5ViQ zb(rrv73f^iEN1mCX?mwL4#Y$!Q5&rekbPQ;kN%000F4x|?wCp(E_A|lHCYm}ZZ163 zn?kyG9O7-}{6%E{YSeS*b}Yrc_`%s6C!ABF6_MxJQwl>kMSlu17iH~opIPv)b9WMf zcig-kY7sQKfcYs@>rgF zHSpQ*8uPGFb2j8(p2s}Mk|Ul5)m&$hG+DY*nk|#*fq44E?nH_tIUJ@A&JqG-zuju| z=~RNIaE3N3ujZ+bIMKqLr`XxgY^g{`3-)+mZP<4SOy+6Sf1e&?|h^G&V+^*32 zN(LzP$l^%2BB@Qz$2IO!#K^WCi#+ade#jH}RWuDwoh@Z8bhBWEX%BCnSqQxP!8!Nu zJm70)oyUg8AZ#(*ghS>zXf2eCy}zVzM8b%kpLUz)X1$1hJJ-)R@A-(fYY~dol(8uE z4;*;ujb}b*f<(h8ItUdratT(nUn8Em{+dUfG%xWY7R%D#OM`Lq>QPL)IfN^YDAH4V zxo5bS8g+isgkBT=V)6!ee17dTK3Jm6NY2Q|ZI6~fLrFKDnGy~LHyZHa;Qe~Z{b%s# zAMUIlR^a^@V=Cr%1oeA0ssGWd*m5oo>pk0XbHQvlJwFGJpO0kAZThg8^CSM6Wi2q_F4GQwYh$@?%X1}H+vaXC|9M&`?RQYTphk(`Y=KFC)@ut z0kxl*urj86Hf{cCzKTUN8{=Yy@`g|GfNdv=+Z#})55*X-eG5Ab0@;k#m+ZRfhvC1L zd1&XJ1^bSa;H?}PT&og+-tp#mX+b>uNM#S`B(H@NJ9;7FcpntJset7ZkHMn(S@0*x z5$f!Jz`>-&ATY;>l&Wn8v&U~B{N@nPGpriMuV2K4f6hQptv|h0lFFYs@d*7n?10rf zH_^>+ zaGnmGAMksf2;LjL0^gH^u>Hp>xapIJ?O}y*tiK&kJC$*qrym&ODF%}cHeiB_0!Uu5 zL~*knu#maW8VhotBehz%)HeX0W-MYKuAy-7-$qtPkq>7L)#+-9J8V)|I$gO;4_)Rb z(@z5Vkk#fx_b%YxTb_pWNn{^Hf4h%w&4o$uKp{?AX-phyF0(n?)X1tR9_*g-7S>*I zWtPvF18;lw<5yi**f-?{cDkJhnd58l($!e-Npr!o4@%%cL=HL&h>`g3obTx7eh{`6 zr9ay*@z>RJ_tH3`xq3U^)L9LqSM*V~PL%jU z5%6jWDcy?j&|xJhnq>^TKP)0WPL9mVS<}d_uU@ckwhG~W<5;O(2C%TKoF|oZ1P|}K zh*`s1F|D^4-yGb-WDYF1Tf<0#@}@ZW+Bs}T(-y(N3SDrVu?zNGm_RaVI>f)9LY&uk z)jQs^Agaq$*p{P7gx+rhU3!v?ZzJTzgc2fiYA(5T=`1l)noSgcrV-&g4`7_$Kth{yeGcyUmlgtu}1P)d$O?z$cM6=g>LTP{EvrYn-A*An64dJ(ee zvlH`fBm^#LtDt?zQ|A0LVGO*}1$H@c%rtI}Sz_W0-#iS-qlj?$^?4b`=x+x-t!Q$g zTA3Wx2q5{o<1lxPG0|Oj4~VHeae7q_O6zTjv&IRqUAKUoDEk6;f2or)&t8x*9D<{t z&cNzTjwHwCAE=#OM&fkGpp50Z_3|ajii0c3&wm{I_DBqQvX1MC)Mv=M*|VVKycnqr zNdk=%I;7_1HCXX(Iw`RF!o2u;6}X-W_Tw9MkP#7pmo0Z;{iGKVnJQ1Nd=Miuj-^3E zX$k12G_k=UMr@q?7VKO-2hUX>V4tX{vp>ExLH^Br@IIzNWK7iwzr%zmywM~noV;?o zeFky5@BrA0_GEmn4Xo)iCbh$ZaCn&tIn|*;R&!sA`;Ed@jn}~II>mg@?g5^Y4SqKB zhRljz?DU>$hF2(!feOl8_jILQeO?*Fk8K3awSr_}u@2m6dk7)rCNMT5685`VfPj?; ztm)i|0-7sf!W%i-F+0;Xqe_k*irj=5*;4d@%p{zrBTipWX=GGmn-C|3LBFUl{^vah zb|r-~>4C{`ZE*P0V}77r_GbRQt+q5pVLkut_$_P-9cD6JuCR`Bk)&livc^SV8`mp$YU(fk&bQ~8+gHV?kBlGw`RPwzKVE}E!E0#oYHfTt!;)qz zu4TCN2A<*e$iE)uGOd;A@OJ8sddb%p;qKDoyaukl%g?%!5n4IK>wMYIYWDl`KIA_{ ziQyr(hSU4*aC3>I$7fFOzRS8^P@#WwlTfU9A(yL?p-$hjXll3dJG%dY8a8Hp#%}R!#{TYC z3>>)u6Zh-Vf$<+O?OO!BaMll`?x)j3{KM?@DMr+wGXq;xtMT@ivzU3qh8Az|z!>E$ z`mS06zlmhfHLIuM?zEk>e?tydCx+30&_+BSKZE|4QpKbse?sROl4M4TJS}*`hk~G) zbXm)5ySW;AwCKtdCOXcDuC&)?Sfw4*VMiURnWWRA*K%}KNES6pZ^W{I6ZC0H5x&z& zpz|%apof$ybx-8MpixY`xD1*7>X$Ms2O&b{mhdFt(0$d+`^W=Eh@v zRtEN6RYb*9QKTWNjK-{0m^a|hbB$=lbp}i7OZ?>MI~`eE`beGr2|a|Z>n732^69wz zy&^sAV2fWGbZF_zOBnvrmd3SF%qTUbKWFx#oT(f=)o)41H>%LfmQ&~}ZzXy!gkq7d z1}#t#q*bx%v|0Byo<98m*OqSNr^cJ%ft(9`8G|`&RlEns(>}_2d)(xEBp*P9hOdmm zMLC+j&ygP{3xkk_0AIxo!O?3PzdTRR2YrV{40S`?R& zJIFMs61HP-FP!rWff2=NWQVH`F`8>fJd(e{c7+P4b(e)JR~x~ydy)2rBkDzFsF!cUWCYg_inV^kk zWUGEAe9V+1>z`GE@`wZ}7~2Y&Jbm)&XCME!i4yrICxKZDufvh*cJ@BFfMakd%9*8r z`#p~5GfRS8D@(-R$wuVy#0YjF*X5;k@;|usX({>gV-RFs7LgJ`RZ{)qCOI^H1^J>{ zPn?}MkjqPQ$Oq1A)vR-p%-LyAqEt#r^E(UD|2K(fwf*7FF@RX=ijim$FVZ?sog{MX zrKkpNax*B2tazqRBs=0ru&)$p+dqpusVjrv^!Jc(r4SYz7_!GkoJ5+Z zl9%37$mE8Dq^R^GwE1!U=|Y@NaYda3w><*YnHD5dXDbNU>XS`(1VFAzftUpObI%H8 zQt)LLKreS*F0D*yT@buZ?_>9wRl~Nf*Q|4j5Ye2b0@o!cl1=#wA!`YjFS*C(<)!t4 zNs|TBX^;gTj-&NKNmJoZbOn~B=)rI86BsMXhrld*SgUpm1pQvZmr0G#=w=J`?jPZS zs{+>fKL&nvD$7sSBtM?H!P?F1$il?EAUkYIoRS*Tdg}}8 z?p1>o7cx+>wGi2#S8z|dJgqu2ftD?^php*e#z+vS3BPJEqFID)P&$OJha_m$XCdC! z&8N`w_+D6@e}^4bOl0yNZsPSiJZA-)^uY35F@I*eAQQ6Ru6|&2jJ+Bx!V?-^$8Y_f zZPyqUj0^3S;HwsC`l&G;OGK2Y%(-$rqaZ?iUbdj=@=theN(IW~@bTV;Le#!kjSABW zP@-=X^#YSPp4Ba6IIVx;&nC>VO~yAuhV(gHrxzjXw+ z+&GDP?X}p_Y=bj@H{<5$JIHXq<5imot*exzlXV2?N&QdU^Fy5OVGrZCc`X<>aVFl- z2*6#leNpkuWNb2JF>2Ws%)8WyH(izJ*0)>HJgF&B@SShFfQFJEmSbbd>M&>y(4~0k+QSt6|k|L>0r6?*X z(V$dFlgdn)2_cnGQKU@oUMD0{BuY|AqNGy&Dv9R4^Zfx_uJ`huv-euhbKiXWc4HIv z;#s~+?W9{?KSe*^YN$MqUQ_`cDYHDYp5)pZYB)v3tF*+jA{TAkR8kOa23 zIf|V!7R)MJ?qzMu^w^d=s_fdPFZix26C-9;V6yohR8}p)`TzD}+uS>NI>`gqI8!u> zZo>~{PRBCD3`LRWnoU#>q5rgbetkMo8+fv7h8&!v^NevoIc_Vm)zy9T(t zmL7JsxA6H~Ln@c%& zx8(XA;}T^16_)S1a*U`fOXYc3*V2=lvq|Gl6RiI|M8`}2@$M(OBY%e*Km5BKY;L}Q zop<7D?9bfBhmoad@H!AB&RnJq;EomFQ#t12evGRNXFc)yg0yibCqrh%kqeKlBUS-|=6L0I*nmb~-Y z17eDoc~Scxk$VCHL??)Fobzn5aFPJ@>{$Uvzeia5b2+K10V%lSISJkRY+%8d9G+Y} z0pvF90I9jPFur0KmV3=%Dz6JLFTCb4f6i3Hi{N^A_b{K_jQ_*?XJ`mNJcRiRI5b1d z_%EKlp9)BvNT9kedT6)Q3~YLqK~oZ}G0;W>{L~`paKS%vc$pC0v8Rh}EgI$PzTZ#f z_4mM##3-3_;{hD)E+xl`jzCO{Ierk_KpFxY@Y25{G+5&tE(=(JUjr*>ie(ZicWIE> zF{x-#m`gmRx6|}gUtZXKNyyFEhh0ZX=%_kF2%&Ns}7UrQsJ z2T+jnU46Ghq~UvT*U2n&X<3EilTY9^lMB4V#1j9g%7c@rCSCKpji&lKpy9#_lz9IF zh3dFmg!em*JeI!S%;0d8`XCVpQNP%>~Wkzc-_Mu|*>mFZ=? z%+L97OzIsk!mS-PihIy`p~W!CB^#623*eU}!aBsI!uY-)SYa+dH_`qg#^o5|``Cy;m<4IyKSRE$7ULaI2h+Lx{f5sYpsVQ#;p+-O_02=t?^MHe zG>7;(wzF8CpCC`sO_6<0e^Fk;eUuM6i0#Q@C@Q-d!=BZXZf94XMT8qD%wG*==LTTn z;>TbxG!7F+m6_~agT%eiGe)0*q=mkqly}+jb2MLM3$D4LG zo`g+RMfX8MuilfuV=b#`-KxbH^?njar)c9;Si;RL39rXr15VxAN;hULgp-d8Xh%H9 z=GG~Ow$*Flq=^`F<=!%wr+)|b3A;c>eiyJ&JhF3c0+@WA!?TZ{#p^nrMwG@JEDs(t zvFvKQS<|Z~1e(oP>5xnX%-gI(j)z`^cO6l1lJi}gZmfkp3Y~CrVK*#~d;r3RIZ&K- z4rUKeCx6G5fGs158Bz{l>fcWDnG>))beM-VYeA>b21?x@5KK=4pKCJk=UW(jek=na zDQ7_G>~2e=f&buk{ZaBt?F3|yYX{{Iq- zjm0=;juV-Zb{QKA253j5I9pmamBhQg#m_ynA!Df#&RhANcK|lw=7mO3sO603dorQj zVg(rOT?sFBxp}!B*ZB&)0FqhaOv0cxAM}Edj`ty__T9{5IH&UlyliLBX88Jbjw|n92{%3px?rtVL^r*7NiVde@Wa>j^Q=1h ziIYhV?1;>TnX4|s;Gzily^ZrNuSx^k*Mdys|NByQgCHZN$q3mNLxjyEU?WmtMr{g& z>t2Gxug^of^hMxbH)7N`ro$JJgUrouKOoY|mbv^*k-1@;2k#@fZd0EV)Wt0Y(~uZY z>D>#Xuee-@K?&Hp&jRJW;>;AjD6_BHf|(|}lriZ20^3w{8Slhj#OIGXvr{gOm=+l^ zMeVOif{g(4Yr=HM75NK3KG&fAEY~fsQQ-2h63pVOoU?grG2A+E8N|7d?d_&2U~bAY zsX{EIiP|z%HQuCEm@tAGR=C6AGraj=#4$@s;QNnC`pl;Ss`uXJUH&=%k@l(J{9Bkw z_)mtJq-f6c?&I7)cNHgnhH`oy2jK2DZrpM}uj-@jDc375*>8h}Pj3@TK`h_2lHleZ9HT-_} zEuQPBLjE%WcJ$XM9vr!e)uk^GWTSAmZXrHk^(V^^V6;U=weS?l)7Xig z^=Kbt$?p9s$xhg!#;#Q5vGE&6Fm%E!wrAT5Y|0U23lomvGxI8JGOR_u+b2w#uEM^y zmSKIS3$Wj~``e<}-#BAq%`59`Zr{eFshV1ajWY&9p4f}J%fZcq45xeQQFstD+ znf2Q;m!0u>7Q24tLH4fLCib;>2&*`U<1qi2$(oueu_C<^>?ZDS+?vpg=N@%q@M&7z zy7&NQIKCs%Y!AKN)k_t%1W=3P;O61I7<%wFHM5Gt@7#B2{)#dhJ9{#|6>8_}&rw7U_>NhL5h&>x zkCOM=ab;W)`kOt&c{eZMi2i?AyQUwvuU29oy;flDIPc=wq)yabUXIN=ne_0CJ{&ni z$^O0a?D3f&NPKV&x_y}s7ICw1iAOa&`rt-q+vmgI>>bbt(T(0Nb1R}G9nR{(BXikMY7!FjUauTO<9dO3jeh}`+HfiytIIsQ`H8l0dyscUhU8$BAtP`)3Le~@#E1lMgJ|QA z5Zrf-_;%z$MXDY;>8$14hS%|p;2hZLN-@t@3beSrt*2!Jk&K-IJoe(azuGp%kSw}r|8*@7_qs}~G< zW}c|6e}J6Y`2=O|IO2sVow!Oaw`QpRJ3Ty*59jZG<&Smbz@>tCzJr7`e0E2g()E%| zeW-_CL%)f}DtYV-ih;Xp=OB95!MpXvxPIjelJ`xFwaE6s9Sv&it>Prq@lj{ddMTQ3 zkYg(~czE-`TU=Y4L^l|B;wP?qDKr>`$tQYYyy^x|VqYTI9*O0Jg!6b?b#|bAMMKT8 z?}cc-?g|Mv+=Dm$Y$5T91YXa-3-pi)Z~pTqFjVbGt{*CcobYMU+9l z$_l*QEQ|5qQgL6IIBxk~%dy+!sYy&7?l|U$-p{$adGtDbd0T?Lu)>U|m7&W%*L9-j zKB}<^XLqAey*XOSZKp|k25|M|DwtMo3d*+xVB}C8DcwJpiWqF|CEkLPxA61b}YQ9F`Jjj~hu64%et%bSL ziS$@@4$ooZOxmrlfd^Y>ptDCXUc0&p7jwLshhn;T$!Ltq=kjE zvY4MD=0mJPOriM47T6|}3;)gG*e5FAVg445dQ+spd^pQFqnWEPO;H>C{q5+KV^U~P z8i)5*r=v;4R-|u=Q7hvM{jQdPFP{(6=NAL9|9cpkF8k}7Eb zX@J`g>v*AGcEP2=lf=Ig=wHoRlE1ExH-AMWai02s>`?8ZS(+WhMD!dwik5O`mSQxm zT!b&>HgmnY)%dI2jyC^xrAv$}YMOUS@s$mip_;z|z7kEwZNu|WXdoMFl7-00IcM-* zvI2Pfy`WzgmyqvY^r53g87f6QV8*dfIHvrMcj2@qtV`H~$DYTM{2j0GU3?&Ec=Q!V zi`r=&BhC&-W#TstWtKfyfDOOjqw0>sh$U^fP|+5za2@e-#YE~nT20?*%!28fsbtQ> ztKg$K%mcAvI9jYrs--g^`=KxyouA0LA3gx0i{~Q3KAc7M%)wHDSh)>y+;Oq0Zbn zvyoCyvofyyvb=7BorRpEL%kB(K)DdLq-V0xDR9Bzk) zN4}7f|7zjnp*!$SU<_U^lVi} zJ}m;=Dvg=AI$`G1@tMrz!5z%142EgFoWP`C31@b5+*{|HnGD(I#5py*n00|17vYj6 zd?=R_&RRAswjyAV9Q@yhh z=w{JL-|`ONt_|6=P}vO)4I~g1YKU^?DeCQ<4!OFHV0nKz=-h0ART++OFQgjYi>!cI zA2?5;p(Kfm4g{0tn|z_4N1;OFGZ{{dfJY)GAU014beg9^#m|kF#?PE!dB}0zSivzU z`lb%0o7ccW*AkfH^_bLM{R(Pz4@fOGL#`s{3hB>+6)FT0*4zgXM3Q#92`+1{q5fQ7 zW^+I$3a&Lpk$x%GdrBrI+?m0eCY-_-C$(8+?(XrvfFfpW!NF4;L+p?_2DSU4+=qMg ziSR|f<9|*reCRsPKWuZk=Su>h~{Yd1-O1 z-dzXQJ=>3^_ZP4VlV`G9LxtI)mKV6a&k`$R-_y9XTq0aXKx&OT*ql8BEgtT36NbgW z^xYp?wPz;vl!?c8R)SPRybGs$JL31P?>II>FJ`sMv2;X@ePpb~Mw-a88xQ}7hOb%F zt^9-WmpOLaL@_peg&Hb#l;O+V3d-0u;J&0ARG*o^{+cvE`)(+*4j&58hjZ-)Y%^nl zC&lImEMn(ch_jl8>a3^YV|-Bj3wE`gruS z`+!NJCvfbH7Q4IZDm61AY}U(VTvuL}9R)?U-}@|Pyx=knqny&ibSl1WzfSj?rc;?o zwZz{%oxCym&ime;$8qUzAhT)@sBW3b{(c*b?_MlmV^-*}TFT2<`Rs+P;k6~~zV5}W z?ph`G_ias<32ntUZci}eX&tUB;iGBuHeBdufMMY*W%+|tJY)v8N*_WIJ9E6dcRNlk z?V}=x<7j#BL4Mx$NV;i*4(zpBg>2(r;#<%~AI7c0e#da0(2Zfd-@>`QI-a5Aw~yEs zl89?NBJo1W9$a+58PU7}+ag5RTU;0B+AdvoXzgKizbeLRFQs_F?jx>;JnXw#goe`s z=>c&m&c%3{KdQ12b1hHNoUt$1^F9KHV?o;AS!x#XtiCN zh!5st($aXE`S%C96y;&hA|3Wq;UnCgWyM;78P1&U&YA_6k#o1^vB$se;jOCrhe5TQ z$*DUJQEA0t*sXQ}Ul#0wXD{YpM~VmRJ3d5d#&MWq$z`5{c7TmyAI8`%hEeG;JZ$)r zD9ooAGE0Z(GhrP6;yH0LSYz3L#}j7$>i-Sk9QGGRWR^Ed&YRARCIqya2l!R5=P>UoOojbTew~D7Zv97Wp8kokz%~JuO$0FB79YE_Ii*!&p#{pH6rlV=`TD&{H1wD=(rCSeW;?0B7$cZSa$!bCD zQdfXoAGVQ_giPM%(9&w3)icSnmR$NTX*N7<{!Q(oQ>f_2y}0XA1kTldL(^xA;;LJM zqD$`S`NIZeW~1;MIM5`Zsk}KP8{oR3k=TSIxVYHIpzq*o1otz zJ)1M#K9pg6vxh)7=oBn6JPM(13n2GT8d=v72`krq&Xc z>1T4QXKsH@HZ8FLOW#i<=4~Z-nq(7vX$XD4PLS`WfhceEv*tbAN4D4xS1RY@k_|=p zJR_6FU471{x{nEeP!pDAo`B}7E8!>Ck?~yD4__ZfgW`=}u%smec>34CY-9!~)6?+O zWexq&dk?NZmZNGu`H+3elg#bb0^5WYP!LiG8*J)fOV(7zC8!134rwtW6W)N?hCV1r zYy+>D1{koB0WJ08P?Z@C28B70=3E2|f98T9CNS-+l zZYwB5Ov*&qx89q|9Mgwdp(~aG{u-8pjv1u;WHwg53nt?hpYTupME(M0N!E6BfTs7~ z#H)u6(^uZP^tiqZ7=1iT+QoBWzOoh=XxG4;`Sy@f`4sf-?}Xw<(#+K)UD);P7{c$8R=F&+VdG@SVCl{$|$W8NVj7KwFqrzJ5*?8LT5)&+CCs<3(Q7=DpC~DFSkP4#1V9 z)u5JR1I707#Hh(0?CYg@SCovvXih3=Ed59W2J~s2bsG9}9ioukld$m_*S(o;N8X%B zM74EKE#C}3LB7To{Q9T?KUA5ZT=!{=osvU4bggi7-VuCtDUy~noW!Gn_sGKRIq1r{ zZsmKb=)HORag*E8qXa-J9nM)+k8IyMlO;L6==j7Zmj&BAe*^MV>vGD`KY*Uyd+h8EX zo)X)RzFC*h>0|;*|2D&AcCFakeH~?=)#3KX60DKIC!F6ez;0=hXGeWTk*pD54O<^# z2a2(Q&JOrwjucxcl*R8GZ0CGjU#ZdcZhZQY#kl=S?3`1AY|rQfw(4ppp5MP7Rb$Jr zLR1HR<*IP2t{VoP48ZVp%483W(}Cs;VmPXa8v-t)^N%GsH$sU$-|?~LLi$5Y<@Om} z&1+CED;nl-nD-^0F2ef=4QQx)231BIA@bT2P&;vvxSExLyF)82j93l&MJi}oH%MmV zQk-fo3I~jeu^`kECLb-uv(DDgDeQy?DgZoEmGInNN*-57p|DB^eP90&^IbC#JfC4? z)B)VmTZZQ(viP!vdHAI-iAcSSMf24sEGI6yh}U$V(?YH*u>R5pOst@IQ#b;*S@+|V ztP~W^_=C6iUd2<1Pf^#k25sgDun$Dz@pv6!e+OmYnWgjC*4Iz4bf-2;70dCph7v2d z=Ni|+y@%^#OyK(tL%L|l9MZzQp{yVr;$AHSPwT>WHv^?f@5>ZI$KlHX>Wm71-&gq#s}z}rT(PMJ%;KU2tnBG1YB-D z18nS$;zQ4B=rQyoImHv1W-fELdxsn&@$DWgZ$&6L!STlCAA`HsFM&1hA#5A0gAD`Q`9+>K+IfjewEgT2Q>{GE^Pj4=abmLAkjDvZ5_u&qpDqWWhRkl{=Yn zQj37C6J{}DXA8hAOOja=col}{*}>~Kry0t)zn%ggJyUofxr02hpG*q2PNu^W_vzg} zNwi8Vq3_GB(4qc7^%rqHY|G<;%Wh%Z==>SnDiq<+TXE)#p8ykit_OxK^_ZIDZ$a#o z2&20CKCF8u$}DZz1VLvtnIXFYlB6C9O1gjOdRwGYPfugtST66%FCo0~IUeqOH04Q3 zK8Kk*eTW2e3yc>yz|0ViRs0|VF02TG2R?#OKVu2E``pDZa-GS|_a9Yl)vboQucEL+ zUV(AD>I*~lvdqMDH%QqgX+~(@W)j;Y&%D=-fNz_JA$3F@B2xQd{X9pMPk93ey9@A% zkvoWYC7>S1beU&CG3ww^R4=%Lo6V!BU2rKzymEngp0Ck;@gYz-%H^{s$bcosyz2;a zg~QUh^rdGKoROVLW||d1(19DIXGs;zQvc2Kbk7DuB{{lnODW|3JVEw6mSN_42SR|< z24=-Wclh(bi}}4>og6tL&xCC;$ADsCCM+fwhkhzBX;*gRY0oBbIPrwG9E=8^sGIav z;4c_`IgPi7OlNKy>VUq*6z1k^Nn#*v&TRTS9m8|9nZB<@=qYanqBHujVeJ^b{@+XV zx++Z1pXG*$6Q*-yYX{`7IohvC+)N$y6rOjSFs;%y_IL$ zRKno-xy8&`xziBExHBEOJlL|;j#=V-n4Wy}2Qpqu;*<_AP&dn@&GUAFf8`+kd@qZ; z<1WUV1=S$rIUQ#&>4tR?TuxA^6Y46RaDPrRq?F|2@XvCd(H9mYM`zQ4@J9TQU`-YN z_Thhpei%4GoE_Bm!e@CZY#?#QKW!T9=#&Te-%2Gm>e(>I^c%zT+CG0zy~ubDzd!(1>^_yValR$zNz7#_;X zRxfWXfym?#s`V=Y%Hq=L)YwAeDiT0n>E~Oz(CiwixmlpO+a8Jxf5DahdPs>9Vaz+Y zeF1+8Gfz#N>GGJ$toA_quRBU@QZ$csgxY@tJ7g`n-z%+cYysZ zTgcvlQW$ZVz&~Vj3J&@oCwyKDX_Am2=Aa0Q>*X*cJ_ghexnX6BHXIZ@iRb`a4(T`>O{?1F%&0?vlDd=pk$B=%bKyM$~R*hcP68^xidTSvRFY|NAp{PW3$)p7U3j>Rk3&ZAB^F@H5TOBtk!F3v1J zV~C%>a|}B-n3FbU4Gx%20-Ie<_(gFkNDYQ!cg#!D?H-L|yaiOfd_9uQW+-;I3YCPp zz2zTq)}!$XiU|Hi75ip9nDiT6x0GNdom5R6R55S(z?KnEy3D^sVd6$xHiNn-VVk<2|r{x|-r-Of} z!P8r)ySJH!Z9T|kVP6tDF&yvnxSrvSXxtjN74jyxW(ET?nNltbg(aoQ-;2vrs8yj!QTU_hF^^)3V`_ z(Pv(fx*~wkV|s3fDOnw}8MS4!Xv!{oJp0iRZ*2KNui59Kb*wRJF^h0#OeB}R2&I`N z>Nqhuo)$e{O$H1@85*!Ofg=#52Ji172OGYPXX4AGAhjL4zzE-e8Img-cL?dkx+GQ%MUC9Hu_U z7E$JdBUbAhAvqF^$5+n6<+;iDLm(7S3v{6V?enOmd=cMP+T(lokCeIpgkLJ}MSl6@ zQm3Jr#LFQC4LmZ@-2NH5pEY1DJ8Lm_#az~P?K~XcEXmIPw-Zg*bmN6TE!gVGoOV&X>32&%=oq6aYK#eL4yC5=LCEuLDTj4R)6!9zdgvCn7|RX=D< z*5!E8xO!#C4x5QV#Q@9wt?}{9X}~zXq_@v^kojkZsdi^a72CT2UkyyfEALmM%rYIk z&CR+@c@JsF-(ZaY<%|tG4&getcvMXz_7l*sC56X3J$Zm7^F&>FQ2s_tJR6Z;a#6Qy_jFs^43+Az*n-em(@&x;ZTeREj) zDu)Q!TET=ieG(Zf3YXKPYLv@8A!*EkcT@H*pvq-4IFvNUS zrY&zNNGw@QJM+>Z!YYaMjkLh}FcXU1ProFe=UOre8V<%o+vHm4Y3hTyUP_FL-E(jY zab%*LuS3mtFJ^!73y6`nXT%EBnK%PQCOd8tbNR;$cz3=NvN%_L4oQFzO>?GmX&SH| zN{sK+R}jLTKaI+tfY+f9ueh1?hlZanI1x(SsOjL{3 zg8UyB7(Sf>UmyU|u3dqHy?US(-~~6OXTwqxVTcn@fF6zuXuPSBL|xPe*YM3GS2~$! zFF8XM9(?Bgo-_?r|MrttLEO0^Hw-Eq9Oxd60$8S2YZtTH}w|BBUDFWWsX@Qeuuh0k|qboj&i!=IvBEiPJSeG!r1FfaF9*{k>sE7 zJ^46niXH^7W1QE+s}3&qYjV82PvCdY58Pffz_?rp%y{JmbKXjDnRG2E9FyaVk$S?L z*~oJ#4u*GYdCV>C;MyW9cvABi z-fQcFw_OG}@>F1EoGkRXXpryaJD@uA4j1Bag>BBVxNLNU9x+~mi#TWD@p%VuP-_wt z?Um)8DG4NawFs|l&naqjuaabjtfV&|HWQts33MprG|k9-Mtf9(vGht2RhhgF+oVN7 zG;|-f&9{XOrfYE2_b&f?hYYm{sG`oZy@@8XgeT%rPIT?#=0xJ;LCSry|KU|SK0AwEAi5Z%{dlUhF?{4DEW_Q6r@s7cFi^R-+SLJmuKtaL)6W zB*DJC--^fYc%WyUCpNFCq4%d|^CRx1;PcKha-6#ti0N^hy&pp8vbvhsdYq;;<4@`G zURSJ>;MnI?=9oHr7Pk5i&=-#Ne9~Tt-Mbv=?3Qlyej!Rr*X+UXlA6@+XBy^iTZd(% z&4@eB;>eL?91Gcso*V@K@9v3cu+Iqd#As9OE3L@1C42i0M`t(t7%o1e2zb}Uqx?Q05s1(wdO2O`n zX|VayY2xjaO1w_k(KCJ)ydH&A+?u5a_iHbr%~l`ck)(%NF+XY4OHud|kV##Ar$D`; z58tK)c%z3Glc1D7^4i-1tR{aXN(%$Q+II;(F=`DilC#KUFFTHbn+}yWS&&@N3NJWb zD^@**bs=2dd0!7Wdy6pZFSo*=p*mA(a|u#*t1@#xTmrSVAK<|IUifwLG)y(S!Ew36 zz=fMvp1zU@zM+%g&f6RCPw6g{D=0EH*-DJrTMOpNd0nQka|)C1Bg{PfUI=CrqTq|^ zRq{77f)sDH=bI0mp@NTJ@ojS*u$>InNQNFqDlW#&Y9ldjk^y$>9mNaHoODZRI!?=; z2>*6YrGrkDWTm1A{qDJn-_q+&KYm?CL`&N$D|V#7vdJbKgQ6Ffsy2baf7RfWs=!po zAAr?stQkx#gZO=RjL#=Q#*6cJh1U*3KHUjPn=)Z3<@&h`5MC$WhUGWj!rpcTW>Mn= zW}3VjV?BQkBXRK|v~ln9pvW*7J1Ea|-Z%p#S5>+9^b06m`56{p$%4+Uu53V z9Qahhz^%C@fD5zXM}9Yar4M1f@JR?SLr7^jOlp7If^EedvT#WgvAMVqG@lNU8{GdG z)r|#iEei`|3*oG2CcK$v0qv`!p!gZ#iMI6;m!@a@`cW z2G2Bt#JMi8tr2COnLL77A{;-+>?(X&F3Y$qIt>R8y#P%QKk#Q9Al0FS+?u3_p4OVg z&OaG>uI^-Hx(oyz?~Fc^)W}feZv3X1%8$|zMSnjHv`_d(BRD^zaJ>&M z+rTIHt*)V(lP}pgVFSLkGeA?{CQ5!qpk8Vs%6!PgKZOz49py79POLyfaOcx(67yL8*WE?Q3q5M=a`Wy8MxeurHjTRu#i1L z>(0pHWtlLlq5F!rBtM!T*FP1`K39cajDmSn6X3b9=pquG6qgFT8frk=uNtHW3vlY@fak5b8#*YOFb2^yER$E>y%njTe8#n!vvF%4Ue z%Q6oe-E7e!y`5gzP(}@Pr=iPFZ>qoUJZkJcN-v#1k8yvZ=>2=1m|=6BmN$stWxohI zV}Cpyp8`ztT%IEbb?I$QNN! zkSN>lrO5ud`T#4hNw6c=)}q!2CEOlO>EV%l;`%<4`f_;>5%~zRXju%_O#L7Eyd2+-PsFCN#Hkf)+6~#6t^M5GK$YEd`2i06RcA-^QgOxSZ}@cL z2-W3guUF|Bnz?%`7H9pYqZjkBI&UFP&P+njzdG2&WwS;8DpH?-)2OB1#(PsY!a6PY5J+pzWIC?o#oV6ZP5;tI5LqfKYkI7t{So?pKH-o8rYBCH8@_W&c@1E z;A!WNXyZ3X$+{lAzWy-(n{+1Thu8rVw;PpGI0h%zcMXzX1v4yGp@HabkjrSKzA~ps zjJ7X=?QR^Ys>h6+Q&>_a!p`>Hf@g3VtGy|Y-WdOf{>DLMuRu21wdPUb{%2^AJ`*3@ z`-H!0`{-t^65O|74OLAYLhm_x#9+5DJ6bS_{P;eA>s3Xu=ooh<@V$V6ra#gAOEjkS zW?-s#Fi+Y31e%vFC)RQq*kz(cs;q6W(0dv*UVKhh$xFfVni=?HdLj9;{u=lF44|?- z6WG-f(KxKE!ls5hV{Nn)tMQ#dafeG7OhN#D{gP7^mPHzaW z!VQ-MENZPH(B039Z_jb~=#P8!N6SylKUF|oe*ERU#=bQ2T_RrZ6QwERUum!M2>-uL zr8In#Az$*!I~u4k1X^DDj4hikr?|1V(jf# z6c3)dGhTPr=NO)0k_L94~&V8N*6f z5QqJp&{<#yKf)Y9VPz}uG|qzYy8qzaLTLupzJsb&l8pC-0Wf*e3^_~FVJLL~l#%Nj zTZu8RHV>0ap_Ont#Rr@}M8X|~E#T%<4vzvW$WxbkxchJ(h)89?jj5+Nufr=c?j;RX z78~iB&dv15v2Rr9z$W_Yr2>AqkwI#H^wURwRl%XBoZRj`2Ng~TB}ab4q8v%4w67d& zH;XYZ6JL@r?hZJwwUj)n5oQX0W`M>47UbeZnd5UyVY9v=Q{N@c0c+Y2Jp28dOfK3K&MkW(vXz`!gsn0&|<7HTID_f^(pK}7@ijCo3h10-k~ zH$^|RY&KarJPs`MQ~S_nSV51Waluv?a9@GmI){O`^50z9BbT^6W(S$7$7S@lE`^i9 z9CyYq3O?rvF#;yCu*ZqpcXBf{H}6;&QXAl9{5c3)&%Ec4a=D3Ce^LB{GC}<&Xf4>rbLtjmS{7@<@>DHmg3Nl5*dxq*SULgz%8D{0cO8ki zpEMKk#LkuCvPZafbsKe3JIIi=d3f5<9(A8fKmVMU2T47nbc>59h zGkGdvn=(H6GzEu(ITnC(9C|FN#3NnhIPyCa?@4;$wB4(*XW3-T~q43%Tfk|Q;fpjoDwv>y+LpPQzER1hIPv8BZN`3su;MuMlI?vLFk zeo|jeQTChT13cMc#=haaj7ld3*n;!dv3Bw_RE+k(0UMSywAay~w=eiDy9#*@eV0+? ziv%t;sztdYrI>teA1aNe;*vEw=>BXijxUy{W5-wGMU&6GiF;!4TWmec;2L+WNy2Dkm%C}{<>c| z4O*GXUJ9%cEq#tms@3T4_8@XQlt^t(0kq9fQ=C8nZ2trkv3jsRstl7AN8j_qVw>wU zS?>@I_?JhHTA}DS_!@cC2)oM7d&qr41wx?|ZT9j**Oe;te33rZt(!|lx~>?t_!wFF zM`6edPZ}2$g74Sb(A$1RygQVr>0UN(GVw2c-;~7_eSAhE)4xFTnns#?@d(&icF~QX zbL>n|4;6-vCi6#sXxU*mR%7^zZpK&f&DK0EpR3Kz3c1)!2Ww~+rqt`+4+n*pf9RUI z9D6#xm^5F?g3Wb%`mfUhZ{AL&fatk+T_h#m{L@18Npp;N@{=g?nrNq@iIA8F(y5Y?02`Fvl4_iMDM_ZSn6uRjQ6NiP8 zlbs=ZcI!0FE?S1G+@{iU)kD}{r-CKUzo5)!mf&X0f-M^^Fk_oYxU+06ojY`!&-ENZ zKi6#`yD3F%>f|k?=$_45+g;c_^S$hH+7>ojzLxbwX0n#n`E(`ZE0-#6Wf|s?+==Va z&?zwPkDk=QC<9;Sp{$EbBE~XryTLfy_!*n2Hx_w&v(o+~FH{vgIXZvmppAn+j1WFU zzvHBtobf*D`uTy28a|k^mnFgAA-2pY<7CO~sn1x0nhE#mf{dtA^$w&r+yI4dXW^03 zEZFq!S!u`R2KYBWgRxorG3aPKEApO#3-}-W2*nXBKU$e?wo21suX1Y0G@zi$&&1u) zpf|^A=)32Q;`op06d+{5P95+hmGNIo{~9hM{c}sf*<4Hu3=;4Mn#a*}B=+g4ZG<0+g)$TQ;p;-oWHA8_vW28qKo~xK&auSJ~ zw$nYFIUyDHO52m>7e_pSV5Pn^VgDci3^3?41LM)%oUG|eoZml5^ya4< zP7jUbat;s0M3YizZu)d=&)*MQ9f=qWP+-95aDboCVQEa+)6f-!hDcYu$0zc(4p|p7jOF!!Z^0D_R`1_vH zu<&lGRanj^&0Ij%wU^j~cXwIK>JIj-HGySknu0>(5s(a@i=J|e(Mu^0uUZ)3l)Yzg z_YZ&YuUZc~v?JNsA@|tJXXj~~X$+(Jt<*Pqed*ub5j10&Hn{1}XUehVoO(nKg!uUW_JSoQHg+;+7Cc?S3j(2+lof%>2UaYChoWVk6UZ!jqOWLmK^+Y2(=_8K+>fX zxS)6ksx0N&OU)5!f&LP;UJ zs(0fS^ciX6bo787vJId&LmS^jBw@MnF+BC54v!A;L2bnX6zGXCWk)`myp+b-8#{2r z%Ww=huW8w9dIeQtv@9#0r=Xfi3kJ>(6LMO~*!v87A=O41NV1Bcbw;w7+AgAn-6!F`##dG*70OK3Z=#Oh-`TBSWn|o6 z%r>iZQ}NutEGxT(-aQ#d7}r1(ey6eDT1~XDH)Lwn+Z@`iGZ0&3t~2?SF*sqh6uxg= zhwY(np?icjUT!jB)BDEbi#uD{?)FJ+qDQK*qdLYmmJg=3Q#zRUxS!$r{jg?=3H4kI zriIyswB$dcduDy4t6M?A^25X(y0tWS*;w(P@?`Sy9WHKsww!W9)y4HO11ac8KXn)W z<-Ol$kp*QycZn;>$UTNLZ;!LU-P*9W(o*R4M)3nLFK1P@m)NDTM@aJaSbEg)fwZ^y zkm-doQeS$897oBK?4BIjp|_gu`2S$N9S6xK$Bi@4S;riYSO6SQ!DNF0xL76&-5N^4 zW7{b#HxFZb64XI*>~Cg2CW$B; zWyE;OFUw>KF+6SHUi63;1~JKMw!A0#N*uHclC@@QWxxp6} zd=+{-uktxf$tEz>U&nB)9)6s6i)Cz*Bp5QQlU*O`$pt)K#@lhuv{%>-B-@Lqq$P(%9Qg@D3U9Ni zqdjrCln2dP_YB-k!^k~x5NCMGh!kWVbA!fJvyiFVVOzy?=zLWMj}NNj>h0H|?YDku z-|9quncFTZD*MMuCCkV;<`lc)nMG?atMVTgJF%n>{V;W{K8A*$!Q~RZI9uRDU%aps zjeY>ysJsI=Ju57Zm%!`ZCsDJ<5jXxhkLO=3K^>RIdPIJPc_9FJ` zv;k&oPo{_8mh-xlO`iX1*eLlx%0Ah{TfUhfuz|dxAu*W#?#bqV32vW=(kOOHaS**| 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

      { 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

      6i9EI4?)w?&^D$MFLxV}sScvt?zRN*+-iC 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 z yNA1)KQC$g|&6`=2d%k)L)B>d;|7?&RqgSN~jGQO{mG^uC6tc-e49jt>ei`x)N zrop$wV>sup0*dr;=skB5k!#(G^B0EVaL_FhJu*N?1@&OwsLX1uvw}M3N|4(ziEKHd zj!lWSbi^ndt(X)Vto4X~X_Ue@t1dGiE?q&e7U5P5+o0-fA

      9E->u73K) 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 z z`i#@YnRR@4;7^DhrC2H(qQdG957_6MAhyZ_eX@k7i!vCG-FT+-%(iVBNJW`?TsCzrTN*~9$Jsqx zKKeV_&QfA)r4H!0ubBppxGnBf^J3R`cZ7px(LC8gm$7OKPs-m$5e-byk6Pf-?4I(s zTfJbh?{>NKl0ur(X&@)xYLu-SI*79+pW-{0uAHW9BhHmPyR&_gaA5Lm{;Adp^~Oc< z!5xxcrYe&T@09kM!ZylXK7mWKH?mEt4Ua1PN%wy371s6X#{Jd{Lbvuv&g{EH81+=j z#GBp&<$;;-)3zG-Hw*_OV~Lf&e=2z_0X$rPj?S$-Lc^G*4tAu3M`R^Q; zHf|GMRQH$vycC85CfVcNhtFW2WltFL!A!g!pU?hV!|={TDF^g#A2!)LN}i0NVu$fD zq>-!1zw=Z}HIE%7-?%V7cdvw=zupRF$Mw1D=nmf4?Fl&bUdRu^)A34BXGnHv0^6W( z^mIlCn)bV%+ZuvEJ1LFjJI;zqAM+$1-U2Fp`;fX8TB7$xV?Nli0@kE^ft6c7d~~>8 zLP=zyRgmNXJKrBuF5D1h&y{dqWHAS=mt(`oGLEunhWDSGSgp@owhy=_nEwcb?`x{T zH}(~7a!CY5^%r>kNvaI57Q(HxxxB>oGK9uWGW)c!$8Fo{MK?Z-eNC)*>Z(qj>Yi;r?)U+whnJ?--R6}-w-ZVR^mysa9TO$ z4x0ChVr!=)tdS@2vdj;7uVNL{J93|bJP~gd>h#%mC$X)A-e0Y zgo>j!(UoP>gt5l&dEl5)m>ZN#SA`nD0Vf2%jArPvFPYD#2H}McGr6D7AYosZM)v$` zE{4rq&8=?-;&CIyX&pA;;*{T%T^ERh`XAyVt6=PQ?h0L6V~J+U<&+wp3V)v^^1-XS zsJvLxtm=+J%kz$Gt7?H`TDy{cYdN)lP~rb~z$d(Opd03n>Lo#PgEY`u*v1a38gj^$Pmq!wpHS8*7Fq zhNbet5B8vdQ{e2H2=vYABdlu5z#T{OsQ63=l(Mumcu*9U!)EUNT*}iYc=BlZPQF|z zqmbHeWPWrsCG~6-Rz}s+?wK2K*FNd}`xAvXwfAwRNd@@s75HxAC_Llr&YMqbVU>9_ zx0a2k%YRSPe7oUdL0Yuf_mnnv4b=Ni!de#Cxs# z#jg8eC}GbsneNMCq5t3M^q}i(Ff_@bv>u&tqQg8=sjfw{yt({D*n{K7edfveL*biF zZ$9_34Q`};llL1?C>*SIWX+Z?!dVXkbl>8KrHj8qsBJpP;l{@gD{D06BLfP@c7V=-epMt+mW7lMFwu3#S5^BeW z856no(-eB*ZO;`Ao5{UPAf#zrpmDWJz_)8LZP?Ub{I~fdEgO>xAwh}!w!sk9RCjSw z&0{dwUPh_|a_y(YPC~Wbk(7RT2y6;CLi2|v@`?ln-m3nd`YNk)y1a=7KRhqQ=Nx3a zW(Jic9d^0#NBG&;kL^3I0JZk}tbKk6Pd(612Xh-~rl}TIPK?3&h28m+^C;m^fhU)^ z@8(NI*36bB+_e8P>s^@x`wz=Gu6eVpYo;RKmU%G0%pkdXEQhI7koo&p)Js!FVO1kx zYyAc(OV&z@ou+f5s|<9WEaRu!jL^oalvjt2;VJRGOPjws@TGkUr2~9!z~sHPv~+S7 z;3Xm+yVrDL<J& z#2@ZlNOg%3q@n#)s?zAid9&l;Uk^7PZ8J>l-S;Son!p`<0spLz5PHQWQq9>I>Y|rR zeMc|l1dDB~G4nR9`g4%qzUjcP4E1`oKB9IIpr)7wSs49TAt`--Nz3>AAwe`=?vhGuOz>Q@RL*W=XdMo2tpY9wJkPV;r?;+o}a@JVBgJ$-$XloFkQ0!kJSF`;T`i9LGqAZ9OT%QJtO+?(l2)0ZvB-K zM<0c~#UH5mmHwb>HkbbOT@LQEcG1GdT`=p`Bz`yATU>9ONF!Z#)8L{CO5g)*{WFZF z?nq)cX@z^ClOvV=NZ`)K!`P{93-7L!vhJBtbpKQ_DYUGlQ!Yjrc%UnpKWzciy;?N- z!yw)eyj(nEVoCF>7C`cjF7&F?WX?&;s8Vo+0@rvI!Sfk6><3gn7pMG~NNYV7a8`{y|Ly3;K3Z{L zdEbH;DxmQ5;vE_rxtTX+9{}^5v6S*F9m+a+E zOXuK-v`TKSmN18sUv#PcZ0>UCGo4SVrgGT~?jG$&o|81l_UL|^B5A)LE+tWg3xUU$ zYji}WAsl(zOO&~#^5yxaSSaLc zACudja$<4We29OrlgD=GiZNYOCEx0FG_Lm(S`vq$`=BIVfJvgCloMJ%N15h*-$r$k zj?u5@P})=G48Kk8(5vtl)bp+#4-B5q-M{9sL*W#hbTfl@r|07Sh?k#<9f#1Awv;!?FH0=JXYURxoY z_sNBkF4f}9x3==l10IvZNI&>%aSmqGw1{{z57dNwE_>RA?}S(J@(!~+L7zr2D12h zzp!Oy2f@ham%ZvQZ&VC9#2Y>j#K3cDj5c5C_`nyWH}e`?oDxr8v+khis?RRce7vyd zQjXplM;D?8a`P-Z4sMYA;q_ZN`*BZJS*%8pYNjyiY*%uN55OE-eF_dp=ehneJn(KZ zcRw)!JBaL3w@`>nf4*^jAB4rO<9Wq3ute33y{D|Cxj8CO zIx>|Wc}^v*1^eicmbs`sbu00hwX}5a7J4z~H7|TQoj1A6;*=Is-k6X;8qMp_n%vlP zRx{3iG={FYEr3(EJz$DnCmuaHN}Mo!2Q3Kb%kQ>ma71+#`HoWNH3JqiI9#XMCP{3% z-HzuZub}Yf7b)1Kl>RGR0d<2WvrIctco3_@86$T{eVy*&=VPYyy1wek$X(+yBo* zj(}_P>OjT5H!W?hfXvr_D4Hj5M#uG{c2pnkWMP2Urbdajr!2X=Xaj$7zD+?EH@Nxh zFJaO8C~?206Cbnnmalvt20c$N=l$tl?aF({v(tEGPV$_Mk27QN?ZH~Ie|Ze8 zS{-@w2m@)CpGYZ(4|7Ka1?aTuF!wx|2pZ8V`2r5YD}BzBiF_>{e)pMLg4PHsje~jf zh8Qkh(u+&)ZYQ;4d30iv3gkUJKoW&Z>^R?ygxv?k-GxL8yN#t6F9bSvL;*vbu9N@I zv9f*r69p@~C~lg*8&=#fX4T(gc#td#zxwX?iZKsDCdm`4J<} zcK;6JE4+Ax-96c)#a3KBst3pK+9f;u@g_7GiFCo)4}Y%OBYAlTu;!R;pnmr#U)S8s zDK39#T&p>!yl90F0pUEMS>k*is^g2J0rIPJXvkG7Am6VLGFsaG{`*M3!miVY8Iu_M z+Hu#C9yB|s4=YI>5)Es%@V%*`cw(7C^o54dRRk;sd>(FsEIHLPKwUdA^kY*1wc=Icb+6b%3obc~0%!H`2(G zWcWV)k+AXn8uWT~oOF%mkbUY7{`qSlFMs@ub{Qyf?KW$Pp*ogVHyno(g+HKW`ym*A zGZsE{i-H`NSXR0^nd3}5a~J2qd?r{8XTPx)lst#P>-M$Or)d~x4V@15C0;!CrXmzi zIY?vP9H)ztF5>y?89e^HQ1S-NLtUGmIKO`h{mt~jb6XGdjGKEYqt1g>%kB#01yN9~ z@S476SYgqJSY9NYga|V))Xyy?>%a*7VAM*&_YiLH+z-_4SM$y!AJE)7RCrw-3wFLO z&=kHv>^nY0=C=6&+f;gU*Uf`jG5EXG_x%%Y{0^iG!#BalbGu|SZoC%$8{HLV&)3DH z2UR)AM;R;64rT3MU%<)Jm27*T5(K*f$}_qtEYv+Dyc(egKPCRfmULfk?5vEtY$B;n zE0VXASYi*WdGK4OtNq5IAaxT;yE1A8jmkTs;vg3cU9bTHXK&?rgTbh3RKOw27UKNu z4?;taa9P?DC0;h}B)I_r;~>8;fyEm z*?0=F$7;jBG$nb_Vga67XR}Al04nZxfq+?wNE&MY$1AZmY!aw>$Ii!BeEp zPaTf6+%0LOAsne&4(kqe#p9D6gK1q6ZXI)#l=O9BYGgglTo)mF_v}FRuiw)Ep$pVb z?JhCny~WYqJ*c_c4Y+V>7PuZ&#@{{U!h|tu)Rlx3g_=AHhdUcH~ul*mcqhs1ZZN6HVKY#D}L8XB186@p=PRWR}XDk(eQ z06BeouzK_>ia0d^U#Mt6U+9D-C*MI=%{Q=e(@McXdj1bnZwZ|a-h-Pv9oQ!LjeNY( z9e!2WiG!lF_*=cb;B{*iPHp)J-}FWZr5V|G-mH|6TjPJ+_3$B?#k zHb;z#1k!Soy5a_i8}4?3ac9p!Z~eV=<4iZ0ziA>TmHWV-v(g#zXE2sHRKlG(?V@7K zUwO3720pf^lC~s=@~9!5d8+d}=&RI1kM*~sY?K-{S|r{Xw4avr+6}TFdTjh;r+jPtcbJ{`N*ua09^aJ9 zIMiyW#9Dk!+WVbw^Yl7#Yxga9Y_2owOwhm`{b!Tz66p+(O`=67=5biwE`Iswk~H5J z@UXN1dxwnaob9TQ3c(v_&>_ha!`ZTKTFY_u9eX(YE*`H(BnzM3CxYK4T?~Koi7xCb z7Y8pb601ujAME_|Fy@aT@$<nxsj-xI$3*n!*Un~=1pBitW-5@%H_ zbNU2LIQvDDJGZ_i55J#u-ERkEm0R!yyB9R@nl()*K1BZ=QO7Lpbf|gU45 zJE6+xNXdI5@QnEmSQOO2-c2jPqijCy7<>edUR!|k)&B^6wFgt|wRN)93Hls6R!Lm5 zbrm&OY^5y)i%5QQB5i6h;tm^6Qb(m4PBdm9A^=PmD?{gg)7 z?i1o~X>pfy1^yJ9CG~4Z@ZR>RoDw~Q<1Tc=F(-g?+C5Q!U9#+&;snl9lX_40o#XoV z-^6RLW^>x?I?$Tp<}_aY&UAy4gg(=7c!=0B86)fz>@q4yku(vDo&5!uh;$%{BZ!4kRo~` zNZB;+aA>hU&1Tn~;fLOB>V4jVJH8BthdNKF)Mg)z7oD)|iw4UBbnuu7l41KK@xjIS z6jHW}8Vvo(qgtj5sAv53Ul)w;w~-AWXQKAHQd+sg7^<2(@zK9lJeK33 ze}L45^(O>(Yg_YSeWq2?IcM~IAD=FNbGm5d4!#R&*u_wpKilPD^s|mME7=2TRu>87 z8-2-K-h*ciU4t> zoV3)PhirTehPf%+_nkG>s%>E9m4j*8C>3e1>WyY+c z&~3gv`aw7Ji6FjKq>tln1cPgI2o_)Ofd9Z`F>JyP$iCcz4MURY zk9{@I+_N2NV<$E+n1z4x4Kcwni%g~p96fV5wuDQZ+aaFPx35ytQX^o{!A2;X(-|}3 zJ^1F;Sa2Sb&ifZ{hD7Tk%HEU(-)6dTht)q}^%rS(I{v0$*1btMdS;QZ`*H&u-ROor zRc7(f+9lZ8^*LYqJ_cvc`7U{^=gQ*RKS5e@yQrX7Nue|Q34cx~@shKaSeI(f`&6Ie z(>sUQulr$CJAI$VALj~}Y%fve+t*)ZKOD8G~nPp6pB-s^YCwM!o< z^RCQyLUmBleKG|!CBR<&eDWVY0~enk&x_siG3Z}M{*1BsY<`V+XZbhi8aanfO8U&~ ztBa%s{m9-wBrzPS7>4RO)T4KxHLT-$P!UZ2h}a!pS$iLDqJJu1WBL z@9f6!w3KN&hSNuHy9si53+UmUgYHU!;2Lz6q)p!{nKg+xt#Fr82- zdzUG3c@<2=A)Y$$sy-FEIR)eQuC|zMI3D%4|AN`eXOjB%mGHpoK51{?2EAUb7IS|e zhNG7&!FZ`$_&qX^taqIhdK?+ZyF>J3Yi||8*Bg7N?Memwd9Og4tKZYrfNc=}@gRAe z9)NQc=Gj+HOOai?Q2K^b;?;fuBZ%M!(YOVWvVbF#|;MuN_mk?JGz|WNrM#idE8SatgBV#9ITRGavsIM zk_WPEkRRXJQ$;@&Ccy9nb$qEc4Xw|a;0cLS^k%XePB!}i`|s`%mXrgobxfhJb6ogv zq6YlCgY?w$Gc1bjfW2>(i=NruJUF0={8x;l(E9#3;zKyN-b_Y*6m0+Dmm*sh2EhvB z@%*IUC91Diz~m{T=;*^wFznqK(CB+Xi19oxdgZ;KMN(0L*~OW>-u5tzshmJTfdpB{ zG%35gJ>C5GNGKT*LlFT%7%McupD*trPm=KWIPVm96j*?^QME9uleO@{GX?^NpAx=? zJBbU5r-A#_L!#Xp0flEz;gaSTq5szmxL;dI1?#8NOOsW?h!MfGX22oQJyTKeTNO!9 zO3c{B;2iWG)hjrV z+(GIaAIBOgr^)!wHqtz;NUqZNqVUa0^iLhlZb4fyVzw@){+J0XVl*U%4MWxYwX(;< zBW2-qTb%yP2+B2TLG_5Wlrj4tE{@$zx2{<65u1y!!P1v6xPOFIy$WcT?NA))t$>bc z<8jf{TtUNTHhz75OVZ7+LS4N(KRRbe*)z(>xN9s`6(5Bf>jv`vRt0|V>jYE96cIXf z!#hLAN=TwybQD|5!^yb}7RG8WY(-8gOD9Fi+d7M6TB z;oDDq=)ysS2MY|i!z(Qe8t=;|pNER0>yJQkgAs*k55k2WccFvJH=0>B1qxKs&WAAS1hEB_xfSSgKea`zXMh+I3O4+DPxY3F;+|a*1l7Elgi6>*+heBeD>-h zq5H21lseH5Iy$`}_5BAaOJOdD?b=P797Lhdr;*V0xi@?npe$bh_gLILbqQ%-zDU{A zzXHThW-!dylKN0 zMRpzZn%WlSa_Q~{x*?juy}%st`JnFj=HEaeWY|)KlI!H8@((@-2E*-cn*3Ht4R(4w zCAB_{^wn(!k1ZTRRtDp^yq^PKkBo#vBde%y+yXJ@iwu`lXcA?hA7&lMrPtQLt zhn}-8Kn!-~(8f%m(6FbJpIb&hdVBDM*j=)fYMXfH-pz0&JB5=XpOnl>IY|a(j_l|g zkJnZhkf^@^8wO{=7xfrQeb^{}C3W`A*--_SQ89c!G?Lz2b>O0{op^rLDwx#kn;0{$ zMYO+kjM}>uh?VvW;Y%ND(R`>qbg76D{>}BI)2-$R?-yX(rAdoKJ3T*N zMm=UZ@r6@gXj9;Lj=5yP&vdLQ;CXL)^I{PC+HR$dWzm#0?hv>n9D;r34%mUR@u`0X z)U9<99u;|kw#qTM)-M}|*#_dB+N<=h{uvdbIe!KguMbvahk$*k(cO+`F585wuXf_& zJ^zCd-D~N5a}G2pUl!jUI}UL^BZL?CkHNwBmng1t0Ax%V25T0FgGT)dFuBEm=_7Y6PdYoTtnCy0VtHw|uC>KE9r!fSIKNUmGude=CPW$RS5b>^FXAlKDxsu8lmAUNfH3!av~hA@crt%D&7b;G@b0pW zOcV_;bax=T)O-=*Cv@Ns{?mowjdf(U(+FFW?D+H7(-7;b%757&hhMN@|9|oLV52rC zeI5gzW4;LCkCs!*O&9!kR~dC*j|1~nKGM6S#vYH7@a981PP9COq$u&!HGe>pRT&2w zM$w-kQS6u1UHsGOIQ4`iSa)%&P=EI{n5@@gQ%OQ~&$}Y_O4WPkF;e72vu3+?)ePQmLms%9xP9XJTipI7kIj6j^Ub|x=0dLZ6eDzM8uMLs?tjMtkUgLiR* z*jCq1^h}SCm{Gp4Sx4d;noCTxhJiHEbTvM2x1qMv??qwVAGt6mI&?_*eeN0l$nQsm() zXTuMR<+OU%Q7n-Rr3>~d@$@1?GX6~gc6bis;$l_)Pc=cDJi~=c|BQm~2|oOpyBhtp zvIc)%_oXqrI_}}jcZ^=?LLnP5nAR&z z;_a(|7rTw+6I5M!bb&K}Q{u(lzvN-rni_mPB92ugE{CqQD*WN+3`lf;2n~4=NJk5E z?Xy03z4jT;N-YPCi9`9V#{XdXjaPWEAsry%As(189w(ONKvCX6o;>vhE)Tzf=VH(B z&*v=Z28&?6STU9+N(lbjGdUs`pSiqsfHt>Ku5;XeV={zum>Fx!I{48gL-Y1thlIo_yxCuxzNn1jPc5yeu#n|) z!VI@aa1xy}x1cR$v+??SfkWx1&p+E|pohT=@G!xEwOc_=$QB(?3)a!%A+65 z%2|;zUr#PGDx6;(Hj+R1Pn)&=Dn^M{103(YFyt3!NAR7t6Zjp~{b*RxL->nq;%q+^ z{?0RJj|GpM@0j2C)O9@HI@{3EtmZuW>)BDI=6Jr;XF9O#2L7YD1&Urv@Y-AZAb-ph zK5W8OwBI{}7fqDs(x1)vaj6oLv)_zAxF%!(|85q!`iNodxpw*uu820KZUN%XFo|6;!!QDep>ZHJSn=~F44m!crA9<5a*803Q)t84K z^I=j z+QDB}{KnA&t9_uO9~D6IMr&sDDqf>z#;? z6PBz!}tC1cr5Zh zX_?ZDGMdH^+8M>YwyX2yd&iNhF6P|%k_iowi4afnbLK}>?Qu*{5ii^34~I|F;lI>7NW^q`ez^1r z9CdWyZ;yUqL%xkhCFd5j_01*MRzDyg4c2j=yHfD%yflIXoLL%@s5E z@PPV!?lmQpAKFrj$GnT7>_Zbank&(R51*je!T^+?Hn0inzB6-~^?X*K3?G@A%J<(D zW6QZQeDwt`y5NCKZ<4N-3~gc^p7u_P zj9Pk?*&U2yj~6b(;SZGfhdjy`X7}O{%|Y~5mO1)_6hf2i46vNbF!ttHY)d&oG&C0R z`PKLEfski#pFW9`x%Fu4br4OTUKI}un2KAMD6)q+DqO~I9p@uJG{vJxtGwxEk#sV=f&sB-NyH&4t&+ETP#-HmZpS` zz$ZnWaA%Yx&umRab)oaS`oM9xl@`YToz5b)xkCQi`49_I2!YwUk050D75MNv3zQv; zF{dR2%kJ#LiRt5cgz|Bm@}n2G-PORPcc!o>A{R2qb5Zf;dt~vLP54gr8kX3U61yiM zICp6h9Ld{-D!)~*w^D|uHhJKlvUegg<05Rg55ak=_B>9-ijSN20qrC*@Pe}~T5Y(C z(=GVmfE7>MRL8U)jplK|MYyf39}UMk@Ns9hVblzUar=JYJT{0%FUdj= z{j(yarFs}vb^%}PjKaB|C1h{z0A9DP88th9`-kgI*3l!LFja+t1(wbKd+ROZp zJr!Fi^s}9_+QCt9Bv&6XBkOA#$+M>+U|MU7D#h+(z4!y!YhueWxJz8t(S@oTTzO-v zFlRD|_OUKKxikmk<0GM|q8pcmOyR>1OY(;g zH*io1#f(W2e3-&2-lea>{XB;A5N`>*qF{>>7LHuMFp3AP)#Sx*hwxWBA3~+oJa{nd zxj5v!z>3ft%=>2wT!BQ2MN{l~QerW-v}kkN{B(S%HI#4PtI98xicv9lD4)A}3yRkk zz<*iYIBG{CzKS>IvC6yn<3tzyI8TMCeA$n$KSe<1P<#IE>T?`pG?pK)zJ=CvlGq$! zX6-I;-s0PYu8-6SKE2hLTTMEMnk5Sz%GTW^%EX?h9$doX*6+mE`C4ecQrNd^T*L{X zN!a3*C!F03xwb+(+C(`EpPd2R)olbHI7^o+=nWV4ixpy3XTrw@8*|?u2ifH5Go;G!M2>~BGX)v?&$pNakpu434>Qg%PG zf%)v4ii4M`a{W6|NDN1FnNMp$-$oMZlJC824enHkMx#wD;qH$YxV8Qz>c6=U zcjfP3UL{e1Uj>&-0xKw;%zvsx;Xo%N(e#-05$R2XHi#(C0f6=!Uz;#D$N|FfL&!#?R`;?S0mKZG|*9++8gERf1Rc z`C+p8m>!?kunHPa3`3~~J^F3J8>l?Eizx0+#^G*LNQ~V|EHu9ZN?lJNuqhhy&%Pqx z!*ro=q9ypHJEGa2061}W0=89{@$>EB9-L4=-*d|}yrHTa?WADW+&qZy(V_#Q?;cS|X`s1%AQ&IHMi8rYkPutI+^ zE^*a>j2ls?8+!*zyQA?^{8>nm$wD#P1&gzJ<&g8&@Orum23XDJS>aDafiDB#ilQYg zoIjK&}slb@I!|wNZf{Rf#YuaHgO263z zUDNJVX0Iv{ZR=?Pb0NRmBAmzXpZ>>s#(J~!$pSydz#S%ziN(|Rf5G2lPE@5L6nYLA zQM=(=Q1X;AH=Ow$d-a~M>a&O8ko0trERUg?Gse()kIZSe<_}oaWln9USz?r^4YL3H zjWTk2csV|n8O|vN#gjc?wrnWvxc?Jd^h~MBn@IffF^o9Lhrlom8^}DLT?jH@SB;iI%JvgFTlaQIdLd{+$U zq>Q3oJyzhf*p0?+I0<^=)4*?MC>ytX4}KIK5QW=opiO-bv0PaPhv%1*eZz$A-{5dm zc~nkMtSG@}Kju*7q7#s{t%%qPk!&nMffe7;9 znGtSI(iYBM32?5-fxJ^qfJHC7*uS%b_|WD5iQZ*sD)=NxQ$kTzy&t6)g=Pv3;PbOxMA?6 zpaf?de}vY*I$UbBG~E%i2j!IQL1(!-D-M4}Hai>AenWrMPw}9!dzYd4+!}G{z?GzV z^cG&aWD$;-`5)P*bCc*ZYkJ7sksADmV6bv4Y@YuRessG*`H^v4HOdN?Dif|_PW@UiQ^dlzPpAe-1hZ>xx|XLpa9di%0OVH(AVc z=qmF4kOm*QW-zqJ590&ei`a>(a(MLLF_2sk1h#J)!T#nAQha|u_Fjo$d0scrd87}B zbuK%`{R^X#S=rDSm;_FnJfZuoBbU2Eg*%})TmAC_?vd4^Wo_Lk6`={kCzhdq_Yv~= z!9h0U&1Cw1#8PY+PHFIlJbd8mgvn#tnC2ia9@YWmT%!dl2d-g*`-alEu0s4X{0%H{ zxx`f7mx0a9PSO3pIS}nNit7Xf6h)+So`S_L5aPt0}`0A1@*SD9T zVViXLz`ud;O{~Y3`KOB(x>EMqB@*TeJhNs}2XoSW_?i|8x`9=p^f6_jvtz_JdCcdd ziU#tt#_M5Us5~3p5(e*u*-vDU9<9b1nnhdNVtKM>C_#@Kmu55A%!gMR|qTW3wTI{aV6nR_w>qLn63Ni6Q^zoChu2qjABw zT+pnYiXH`(xbC((KFXHkBed35ewq9Vf7$knB`qfMI+u9S@|F9!ZK@^p1>ydt!W9iCL#@|1N4;FbJiTzO*#C^<|dbqaoX;LTz7VSEgJTLN^1(`l$ORHdQwhru$F zk^D+@0HcT3aIZ;Nd23q_2B>QBl9XaRyIY#O+xlR~s0gqPUJGgMF`$2EI;38|%d+Q3 zLCz71BNdeBsPwzId$B4_XYJ@e!9sjU^%v&HF5+=pv-#{l7F;KA9pAJ>0oBvEqtT z1~bPf3wg}jEKbr5M!W1e#V#?O-1C3kC#gBC6JNipi9!@|KHsd}(k1|8UEZulZ5}j%u69{DWF_;o*N|z_z#W z$8Q*xCg@Y;N$bcZcN=&;^Ag!U-iiN-7do~@0?oGC3mdNa(=pPg9d2gLp!RP^@ZFjn zP<_f9_kTYOi7orV|L0+R&^HVeKdgdfD?Xx9$pM<$aT_BB3Y?K^wXkW62JCZ-g}pJvpTRBr~Esdgay*OYJCnT#(>*7J!oQ-n^BE&6y! zkSN_%WP9LY8ZKEVKGm5-$DRs+hQenky-VmRsv5F{hq>^2YZ!e}y@=>8SVdRA5Y9s% zM^ni|`g~Ef7>c|;;rG!mAab+?e=tIg&N(WBw+9x&@9>L|WU5NXD!+mCh3lbdiyLiw z;)Ms!M}k6EKG?7ND&A`R7cTF#AshTA(AnSZ`17}RwDKV3yM)|pN#`xBxW0xqe$2s< zUxZz)$vEoawv^iZ&ZDwco2c}-X`r~&i71r(!VljI+1#`nkZ{Ne=6ecUAN9#}=k}>M zGb)vSAK3tBzwf2xnF+Al8_;|Rg-cyBe9Go?EHg3*jL+`@&vUiF?vJGty?p5^mom7Z zKb`(I831lef+4oVfW93U2Zeu(XngA?7-+U121V6F_8da|7lyzeG8!g|8evF~jo<{+ zqQWT(A59ofzo}gTJ*5m9yfJ`IxME7z2kj#MFOR^6Nx}^5o)ygatU`B$=U|s?xxi@d zg;O~PaO%VoTL1Jdne$~Zbr`vmL}aN^v-yi5KkFXoE4k9CuQfQ#8ch8H3Pj`Y%R-sv zXj=7Y7kjp5A{>+|fSD8fKz&&gady?Cx$|?d(IB664Ll89-~DO)J$35-@gN;kVE}8~ zkd)Ld#)Kw0(qX5Mx3%3w-S<)<%-J9Jc4^Y{bF}HVLOXhW%s@JIffF?tbQfMZ+t3fI zcGI^CRp4uI4}QJ-1W`5{2#G0xiC^BqWr3e>{-PH&-KvRbeGl|5?t&+>^(1n!nB?rb zKnew?PlC)QdbuSO_~?4*AH9^!$~z3ITYrMe-$wY{{}Lj*3dt+~7BFqJpnk)R>2}E= znwK(-2FB!r(t;6m+b?aFqyL>aYfh%;st&=dx2bfk$5cAsz6BDekH>wVBB8rxKVEBo z50Q8F(*n~sua(Fn8Jno3<|9%!l+fmp!c0Qxd*u#UeOj~dKXSKI zlgd0)p$m6N(fH}kcL8kNe;`fzl0Y}!6|vNZqp4bfJGDA$M{h2iMqLjn(JRkY&|?;*Gf$;prn11;4NQQ= z7lUc0&~sTBHI?p4k_6Mw1*~GQ23_EI1@8~2hqtAPaHUxW0w!g`%5j8h=oiA(g9imS zQWPEEQVL%s&qK;73I1xzC;YTA6-&EMz@LV{!p~gk5w*>5;N?uZ=YbUNZvuJ)55vaX zx8zSwkHep{TcKp76%Kb-r}L)Wfwk)Y!PAJhAT?RYLfo?<6Yg2l!l!SrHks=?J}MOj@WS>~k7P z%7evO-SK1!h80$z-@O`X>oE5Jsx3M+#oRb>JqjPxEVxXzlu0P%m<$9#4ld zbyqRiO$vl{`l(EJt{M$aRl?hUPBT~4`(U(4pUd{e(%Fyp5|(XGpMOpQRpo*3vc&#LY`oBIn*i{WH=YL}Tch&LmeIIVS zb2C2I{)KMyQqb+M2`Uz7z^Tf3jDMz1Rir22arynQ>!%57?ei5iKKMzDGWX*Sp$B2$ zFT>Ui)8=o2m8f~wQT`_A8e~bx@V=$bLEPU;!Z-uC zb*qUaeHy^sD%|^7rH+PkJVSOF1wd0ZWB%($ zlgk;kIJLtVCy#7H$;q0yZiE{T8Ewf1E|cb0I*QTg)n#0JUkBCpMZl7M31qXv3DACh z5LYD*=RLQMfg=v$xtrB#_{C_9R6j>{xyK?`a>tNm4mjrAEgW~v8&bp4@kl@v+3kBu zR2Cx#Nm|NiH}*D(p7|cDPt4^BPWKS9qIg_IJ3_lAZ*Amg7c9puK%K8*EIC_3*XOT(`)x|zd`}Xy;(rsy%lEsaWC+X z+R>9>Q-oL489GnAjaetGV)Uqp%RmPc0<6X-W_rQtmh)C<#paGs%%*}pPH+9fA>aO__Gz`DvKf5pnwfr7=d{=E{VU5 zjKYT(CGbXZ5R9B5LvO7e54G7G7W{L?0`i7ceVhRivtn^wn=*BNCdK<@3rOO^yCV6Y zUqt0w<-z^eE;i}8z}HmmOj9$Hz5>EK9O`h-B;T4Neop-9vG6v@_a zpJ2O&DSw!q0B#X;aM;U3La$o}M;?5DFV|i~(VFN=@3I>xwcsG^Hb2Xv+I_??FU}+v z4(4E$Fs~0b?S+#YD)D!PF&+1H9Zt1+&s>l0#&_{;4x6srVMBAu1QxU^KRaa${yb^Q zWsg_lzIT*Ya1Q@j+4KGXjLCz2WklIU4ell@;oO{NsN2|wRW{KT&gQ@IP|s1AwIKr4 zUi*pBuNY$LR^y~uK4fCcPB@{c$tSq`v-!%oxM6}Wq-!3>uqF55#q5VzgFTf$AL(FT zm_BQ@FSk%6=|qdp^l=(cQgRbjgj6sW+vX5ut3X zcpx31k-^^6b%03|xzzVfWc}w%{CMgpvHrG{9A4(fhWQ8KTbUkmGDMEcyUNnK=tnq8 zT5vL`9mc|`#mx4yCSToo6rbhRQQbcg{N<cy2OJ&||LF0Q=LGRz zgZ6@jaz1z6_?XnsutHg zx<`8Dt@yK3LbkkLgSUpBg&3V2NLv^SKc(W?lEX7;y0;pSb2Xyvo4>HlO`XJXbpcv0 zv!<(47{bSMaLu?Flbe5&rWz~$X}&YPRoRNwr>{Uk{&fDv_?BqBkq^J?Q40GFC$YS8 zEt>rJ09^r~!q1b4xI9$&!D;(Kgj7W%+A_lkzLlII zPtweBx9e#z$Hzq6oFj5---5peHi3`U2!3bWLqM@6e{<#>*k>o<$1m&Y6Qw7PJuQ-S z;1hqCGCUqCMx=qgg*!dA>!E1$5GA^O;AON9ng%N`&cLefuP|ZcU=n=BfnM4p$t~|_ z(8WsgQFh-#D%P3>S6?opF$3(m#yrNd@0;>UKR-Nf)gcN^)}zZ4Bfx5eA)UDRE)1RZ z5OkC@VXDxf+xXNTZB=?9*V2@Kl0OJ1>&dFzj*- zRPSDii><;*y30pcF1TY##`VBXYXw~DEA&DyD!_v<8Gc_sl@5NnhuEE8P2&_~F)vWy zAqZt(|60@%B=x=U^w2J8ep@Wxm3C zsaaIfX*|(6V@Pi+9s{YiNkWJF6D)BsfZK!WAmP+WC=U6G-J12#U224TrG`T9Avus9 z{}MJ^8}iy~D{1)9F(}!)1-@0Zfx?j?JTc@sDc`de!zOpJ8PAG9@5mQO4H-&rc>q;U zj)7&v`oYlgcg4LuI$(8JkFMDuiyun&&_h0t#Y;xk3bW)qn0)^n)UzM3%=-e+`-&`m zMIuIRbR|8IAijU+G09WaAT6&`vBNHlJoz)1obVq)J%s&RlU*tcE58h8=^N3#U>0?g zkA&lyDe$i<3xb|WijKWervLrA3ooaa6H&rgc4N(JJR;2Dvts(h;b~uqUtJu$?>-Lu zSuCsS%M@-d%kktz7q}6L*fhz7&TC$aPMu!hY_JTjjvfgO5&Bf)$TE^sNt(1M0f4{>nw{9PA4L|6aqk-S5F=jV_(sJ`?=S8;IYhQ*6Q5d{(udvDxZh zFvCv*4lD_0XO{l~{bPG!L1;g0^!0>Ihwc#Voku|R)P3}C7j`s@-C=);370;12L9+q z!?k`9%z69+&*oOa=m2}ZFeF9<&TjDfohDT0B`|xn*Wy_o56B>FL;O!0*59}ed!#Sn zjouTW(D@Lz2TO8Q_flpP@58Jbjz7uKTz2s?gb zDz3A+$o^gxm?d-dc(dF!CbdS1mkx*mhKsOBbu!7iZN)<~EzxYJDmUEmf+@QXghgU) zH2QX(TxPN`U}FzBGuN?vm$==34Ne;HQumrNiWkVwk+pHB38Y$1^kQasKnK zWUcc;CcQ)jIzNrY8v8{!&~FBMh}`kU!B3+3gXe+yumJc^cui(FoI}YQ*TfTF2k^<+ z@ff#6m;bn!ge5h%a6zCs|E={`{M=w5&)%d5mRDtkzQ9VpF6%D9tW++ubP+1w*XC}o z&){B@0t|fNNeXxV6)#WW?4hDM#JKGfI2%VWN+t+RdL_8)4Le?4B+U;^n9aAl-a^yf zRATw4O|!aQBu$Kd2f9Nt{*dzcX(A{?8P`#=rO0m9|Ma@ zP@pp+s_^{sM%MnM9lO7NWImsVb4e+NqsE)?!n7lJ{>pjMlGY?z@OL~$SQ~?+r#!dF z-T+6=aV*gJNuuYBK(l3eOu2GDv93!X;$5fl)fR?p@*VicilIE_uN6O0{uBEJK7#ZD z70gX)$MCWi=$gBW*hLk={`;ntbL@=Z%!xp3pXdN1Yd|SqEJ&a`)iw`o@qN`w3^n;z-u>dw|ykx`PU1L4-4T+tl zv*?W7a||iAK&Lz{?({MgUvBP0D^E$7ZgU?q2bh6vP7$uud=5Lb@`>rC9q{;qB*v~V z#!QQG{OHab?7xJoxH>-y{V#uIh0d}dW99^z7NwB-$_(sN0@!dNFHlf;lN5+^QE}dI zxbyu4YOMXlddkW$T5%&wi;ISDiUX+g=NTwH^$jFA&EgfOhGAUJJ^X614mL&?;K#T~ zM#t`FnF3eXzfK=!WOT8@is|@b_HqdGljUT>K&UpA>OV;5C`9cKrnp5s&VN4TZ)25Lp=;)}J5F(o&Z#UGbrK{oS5E`!CW<77bn z>_YjUsJjsTK^Md7pP#DJ;N9(k+i;MEyk)Q)fq3 z9xOtylmzgbwg&ZQ$*@&(J@EbS5kzn8S(I_J&Hh;Ox z3N!V%X0#tnAFIqK?=ApIoyX{U$PuH1%*E&189JqQfmE3Syvf)CeMjA?v(FU1ts?^( zO??H<%zPYnc^3{bl7#Xh`|;szA3U`snM}3xW^0DFlW2+IFs-`<7dbfaDL)y0in_r( zd<56==@ImKy)8Dan}eTJ%1FzjDi))!fza{`A}+na(2=jn$FVYeN9i^4;>s4BI6;L< zpOz;lx4tA7pLe3{y$86uF&$&mcfroFUXCtywzOUOGv+ECX2WlUBforA=w3u(SLZa+ zr#FSSKYc?cu9f4bG7>;!a|$Evw!$sDdDtj%obAt^4FimB!cZ*SzMASnVXM|O}I?iu7{`%P48tH;47A34fR6uJi77=E0u!x;}!#P8dMJA$eK zh{DzRP%)+6|7N2x4x_`qDDpq=CPSuk8h@u<$BqZ;@yMoTmYs50@HiZSzMLQIlfow9 zbg-NJs-FRMQL=b%h#VataL>kLA)KZ|(BbrcHa%<?F&E}JodfqlIWXbwBeA>NH?hZqo#J)>6xcr*d2TcF6@>3!#M=b6 z|7_uVFf*rx4Bk8d8;2%|N7!WGio|H#I=l+|j@FjHky%gLrU~rG$HSr4c7sT@X)}Iq zs1~wCQNrtb6J%z6#+ETU^r)u`-#A!`R;hHMwd*O7cW;;lm#@aM1u&v?;89$mSLGUbK%)FKlN z2g(rdr;k~CQCnrCz9Y6zRpf82R^!8SvRtmY5;JVBWBHw5sNxU-*)6?nRIDP+=~06- z8J_{>F@@Ti#?BswHd$seGH3SMuDIyeP7alxx_(v;s%CcVywlOBPvYF(eGKEnu(ry8TvfJi`R9UNfq ziiXa6ux4ik%ELYEDbt~wHA_+E*%f$m_!ruW6Hzjz6awy$cz-FA>k3BQjL*DIQmAWCR5Kxb>ZJQLQZYRm| z)#^ewClhxL(m}s>op@xqI_BnCV!CBMlW5{!JIBHkRO(&UB%p7>3XEy1rPjg!+7@x_}c0NdwaWs z{7X`x+y8h$s`E}bFfHPobI@ft`0^p^yz~$@N*3TrV{J&ywTJniP7>L(=i$rz9x}=0)1_k>Pe_`q&h z)i9Wzk8UFCm(GL9;!E&r+ZFs>CHN<%JR&Ya_-JsQ6t?UUW_6L<*_jdZ=%|$E@N36w zQRLV@Hu9GWd_JPie}W&4d?&Ct_sY=`#pa^U{&v`gDWLU5L~k{ih#QU#61+<(SXv@U z*FV37B0z0#hv5n;L{7i78X<8`Rmcxz?@o@OvjOHM^W#Kui%fq5gmIY5vnu1 z$g8*W@Jy`?9M8zd@5vo7KP~$?#%y9;C@Vg&%`lVWyu2YwHb%z-`A+CBcA7PyL0QCWHU< z7Z|ne6m+$o#fFtb=oW~@jenG>@5)l95^P07s4jQkGY3*`81k)2vSh@wX`&##Zy4S#cU-_L%E3DY7o^bb z>3+#-Bio3VqXdrA(8m|Yl3}@DCO$oS8OH1D^5{A5$fy;{`1xrZesehkpGSQc+pm~U zqF*Gz)N%tN-SwWW8b24jj8mD%wbf|;G91=={Kg(90wy0F#m8>U1X%?iXl~2~tu77x z6Wz(4*KEcahrDsrnX{suJ)W2-x&vdQW6A!t>EcFDd&kj&Z{xqJL!v+SMfj{J68y%v zqv^-3_%dieIVFllxj(msPJ%0BMel$hNjv)9s#W}GoHX4a@P@6TCZWxzc)UCKBs%;m z5^Uw#u;AG{SX5&M|3v+8e@b=buug%kCT@eo($}c3UJa#P05?Yr#~mI<O`g@+;!SonC`!)tn#H2?Rxx=@SY9KVQMB(n|BV+ zg}IQ9DK%*PRS(?#b@+_N_2A*=j-`2WG(_5*MA`~o`Gz6*!bcqfZ}#Gk9(_=*zk=6| zL&-InKV*JPDx=MlVPDxf82ro`%=C=u3t=yF;Dj&5j_2U(CrR~`RdC*x2wWnty}gE& zvZn>B;I$NiHKzm)&gR=7W%U(3CmR5-b%$D^2dLaqEaHPp(bIA!*)N0(ErNx!`(sm@ zpnRQ(S|TC+UKMj_*n;NYy>N?9uQ(|y1jD~y1k>$P#KV+}$vO*Xc()=GFKL_w>ofuf zlV!l-?@*e*m|@l$3lL2tcZ(=5$6V}~U>pip zP7i>%f@aXK&lMHq)Ifcb2zC{lL-eR(R$g`hoA278-0bhH^Gy{wouCNL!e?IZTRnT@ zp~Au>lt|b5xhz=y3bbMt6c=8C-B$*~;~W*Lt#_16ysbx7hN#hnxhqJmpEta@9!3-w zzQG-#J|r^u8HQF&L8s6>GQLe6?QX81CNtjRdS7?iK3v4sEY*SHZN8v>Lqx3RXQOMM z5}XaQhVRy8xH!8Lb_Z|44beAPXJDI1e5@7CHdM3X?H`H!d@D#d7BaBmNpSY$9pajJ z06gbyh3`Kinb(CuG(_MN_bgY2XyfR}pe&7CxO zuqq4>=#{W@+t@w7i^Mi$vFO025LRF@2N$ec1D6*!;Ftkt zN!n)_?pLYLrSkz7S_OwBjhZh|~1?@X3%8XzE>n4Lf9L zcEDD)T<$GQGqph19l{w%`?xUgz6uwXR0=N3YSPhl3CDTYh$bGCg3KQicz>e=bryDX zhEl;e<}yO2aBYGd)yLI zY>@4I=0wI+9zdJ3&fK=X5K}9J*LZpY*5^x5wZaUXasCB)sO-(}YDx2k^kiK7D_?Z= z%}^TnX(4ON$V0!q0>^gMNS;tKkC--UVs2z9ROv1fpOBq{?O%?erO9Df zjG;Jqw+d`O{~l*eT8m;;1wLYdKdO96MQfVI^ps-A(;Q23{PsF=^R$y}_T6L*4t|M~ z!-^^$(|52Vda7_bI}+^HZDT8n0#TuIITy}dE8K4%d|zwE^7YubGM?-|@&Fg#ZKm#~6DXP7H9i*+G+iVqg%g)B(aT4U6u{{5IRuYES ztVG!XPuZ*LZz!uF#zBTpG0pK1mKiGIh^9jsWrjo-JLeyjZGV)tL45Nxo z1$ld-i20*0IOj(S{q$m~sqtVOj?MF-znEMs?ot&jsdqy*lsj}{nI1`vwzA8lAKI%(WOc{{A-BzEFs{Nr!UCx@5I^n zzF}t@?<;ke6LgLo$KcJXf@8lY2)-6d2nzOS;e*%ag6E5T@TF1~&vczCpcey)^0T|B zb=d>A-r;kg+(-25kHGxWW#~T500WfP5}w3@FKmZ#aA+pG`JMELpoVA zEGF>QJ4xp4Zo}j&?-_B{6svn*VpqMsz<1p&!38sC!S%~pf(YSLcqnF`U}xeESQOcS zN3V?`;wwU+G2#(QY$_(UeU^gd8Zr22H3<59Z_z}fQS@vDoPoHY)-mL7=o3;u`M|ddoIffWUtJ{rs7dl^)%vr(rq~7y^>&G za0lkSuE5VHU*pI5aWFRDfqEYthqGu9ESUNZHx;VkNPZ`^$a2Nat|R!asT?JfECp*v zjtO)l&(KgaO+n=?9dh47oJK0$!syLvT=;B`{Bu=D8O3j;UGXmJ>3zeLFL{_{^9Qfm zAHq*YWoUA=7q3;l#~VVzf)s04)R46n1n}#ZSz^-!Ib1jy8Mh4+9;H&zgfBFU@A3(M z%ET_|{esluIheZrGHOZXVry71^TJ}TAkU8H%I{u}H{LA~Y;NhHQ_Cj_J`1(+tdDjS z?MuS=YZ1g}yQrXO#R+D?7E%5_b`K|C?!$LMQF!cwgh211W)=5TPOxy`H%(2LFEC0- zz^Gq~$fU?-D)e75NZI<~^C$L#;4k9^hyH!UUg>a-^HgRsm9}u}Lkt9~@2d#zQzNXH zya?Ysdq{km?&3xMPO6BCg1Ndem{zJy4u*^sbR2QPGfufU^I<)f+;AZa6VGz6a~;us zBSo?{*Pug&I(6SIDZu5|xM%G{cxdw|-7aB>EtR(Dem0Hsu-r($?@Ylp76P;idCRn1 zX~KEk>2S@)kq+=@_OzV|_@~rB@Y>H6lctMe>zX<^HR&j}Z$1o~x%Pr0g;ZQLIUR-h zu8j54BC_;tWM!=CZq%MIOsd;w(TZ8qv5wb;ynWI~oupsTXKze!Lr*-&XNB@E+*O2@ z3Zt)15Uv&u1XsVa)cQ#vvu)%7lztZ#5T8W&z^uT?@($Xm9E59nHeoiupASnhMs4>< zkoSH{%r+;`A!`j3%+EoY`4#x`ql{@y*A3$QQHa-}CXmJ$P1gN{Et+gk#hsRlrbbr> z@l3lMNOyH}9X&JP*Hm5N=#)z5taTw?Lf`Q;IS&Sx3dtmXj$Ll2$lj`RhyCY@vCp9% z40$j0Caa5Jy=N50e-0uc-C`iA$9p9^@1gsv6}YXihM3)*Ok8U8VDtRjP`oY@%T*V# zBAfk1^%>CdW;%*}=z^Xj1nQ@)fzSOmu)t+Iz6tM!m`^pdCQ_UY zJTML>*94J+2O}AYx&RX6dk)IJ9f!P-mF(M~D%f@R3=}O$fyG*Jcu%yP}d^W+7XBQkcfeVgV#6_`~9Nr&Ab0(U>pJS!@Q5!^Cc8j@VVxT>*$V{r%+^~ z%;x3GvC9)e!F7W?EAvJTpT8)8jRoIHzN9dFd~FY>s=b?iw{JZ5d3HdNqcce7T|v~0 zgM|fz~%HfoFv_q)a;&bY?2RbTXG6ITAvy z^NZ=?fV)K8`Y(~rm;@cije*$f!20P@tn6?zFPuf@~?vON(tcNCE3wu z6WCRkn_+B03>0}Qvg020keTtTVMgq4@a_;Ib(!^$P*n?+*3C38E(}Jei1E1-cev27 znHBvW27fN@XJu0236rhEl}*@73|<&eJJrn)^7$#O3eX4ZXNMpqWFi~(&6t%MW62)v zp3UwL*iUtYUX#|1V@Oik6*%%@8ccPPXV-@{GEr>@GRbSG>_a1}6Hf1MFvdOpA5v-VVp?Z-ZQV4z%fgt2(hH1Qy4wgxl6)5S_<&W~U~B z?c95CbooUvSvf$8s*b_IsVgDIy&hh;O0$EfzCp6bC|thn472{61pCiHQ2)3U-qrjA z(M6|V-WfBp@v=P#?fOU(k6#D-`BH4v^KNL$&L`Ku%dvAl>CyWGDy*b=FX%d1lX>s| zg6@gMxcHAMpF3U-+akvjvBT};{Lm6;7b_p9&$QW^UL}L{^*DUA#nkjH>SueEi$p;sId3Io*5?fW<536MV zfcu_r#8E+(?s74JM^>%ev*>Obw!jNwLU!WTB{48`EDIEzTVPoCI}BC?!P%utSX=i; zaM7U+y4Z27)%t#-S-66fw>}41e*bp0e*&A*VGMuY4DnpG$FS}FPtw)-2YQ#D!?PW# ztYEt~Raj}t{?!-av*}&%?}QqwD=Gqy`14FZNsN6UG6!0xmP7uMtK@TIDz5gv4r7fq zxQqM0!?8#yR$TWpFz5clzu*l$0xemY13c$fI-AeVp8@wYYsi0H2vUxT zL|yb8G|sw5exKY!2i~Z$V{H4#9p2qn*OCURord5i*$t1=KS970ANJ0tM80n(&wAP1 zBOZH~Q4J#}7@nkQIx#*2&PtsJv!Cj0#YRR7qN z2(b~4nP9$jBD;R76Yoj520ojAfWi5@j6Ge+4s26}s<|rcoijdgiT~T?-Cp2VYzsXO z@4$Ze8mD(~5<6+P1iaNd1!*x>>>e+5+#?~$o@44s(ZglXt9kM&Fr(x_`L-_VD0a{Jo(c7!7A?xOQF1t|+d@hV*&9CNxgT4x@oYx309T&h_ z!U$SMcEQ?4BlvJKAJ+P1fg#^1Nm+7-e`iI*uV)TWBFj+y5xy6!#>SlNVKnXIVLNrB?+ZjwZc-PRDK^0^RXO%`s1oa@d%mhLGm^R6)kB~o z7tXzwV1E#AxW?{=D<^J{Wizj!4%Yw%*S+xZl8bQiyCQ)0XNU{AMIW862QBwo#C+39 zG|t%pubu?Z8LvOmr(+kgKXs*H;ae6?pKgRS)x(I@OPO)X(fnHb79(fNz`D6>;p&V6 za>})W&!AheNAEN;3+jzo;X2+2{m7YI)3&8GufmS@-GH=*PQ2l$rii9^ac;N&y~9*Hb~ zyu+1LV_rIGn&1eB+3&=6WBDAjql9N03kyE4T?0vvwgdZ2lcZQ3h1)al!^h#>*uLA1 zeIp_dl7VXMv7JKXL5383Rv3dN)^|u+yateZ5tg0Jdz6>{0?&~D@JNvcC>gD0M&`bT zYMWY=Ji3gXf4dK7T-pNi+w8HdQWq8oYr(`#?;u96iw^zcch<$~ID4?ID&pR0lKeZA zsyq4N{ZMi65VglM19fn3@gz8w+X@Lq(_x^b7EJES;!x%Y_$-z}GsDMVpHNVB+joTc zy&AAa&P*I$x?C)$N@ z_r0}1EpQ$2lg2jVyz|2N{IV3fCY&NOQVnRX=`Rw_U8gIa7lO=5H_rFJ{m>oPgm0G$ z}2E~bm_+@*9A&q{j{Men;skal-X=HI_i z(j!?!51Wm}ne{;!QLhUdkKV?CE#6eM{x@E}A4HEy)!~p|AE|sChyTqQWUl^Ki3?Z* zMz(Mps(&qEW;f3ejHj1$c$cHZL(I8cg#{y5$g2kVvR|?2C%c0~KNjAmF3eR5EgiQx}sBeb^uJm-n-(Ss5 z|Lm)-lvO%{ArICvW;rKN(XteE`ivqp8y8iTJ{FIpj=da9gP? z{^8%e`u>X`8`Dt!@O2oK;aOZJ(_tm=&Ql=4rR!gm|PK zeCFg`aSoMR_zqXkVM&>nq@Ydu3>S4h4L4+7q_M=k%DYz^LM+uVRkf4s&8S7s>yK!Q zx`9AjF_B5G)esDR^&l^2N8?Ek6YR;Az*EYd7%|BL+sP}Oy`Jyx9th>iqg4g6QnmDK zH7hvTY6R;tVllW=l>ORMfV1^4VEU;$XfJyQ&4wj$m3KLLJoX}8<0VY`pA4h@Dj#?= zDlZ6eO@fm}lLa<9X?Wq|EWv+&|DtYs5024OMW^ux(O6#|U6-Zv`~Lu(@q@#O?K9Ey znkUXWqRr>uuF*R8a^~%uJ*d6g4@t9#z}oK!u5KE^@&9eZ-syZ+Ei8z8kXehi@A~P0 z;3x+19p7lLH<+wDmt-33Fb(lK2orqAp%dRnJ*U4~;O=Hjj+xCA3>LdFH_lBJJXayuf~&4lTxAi2c8VRCF?j|mEKy3V-EiS>LU8{GzIovbGO(cg~8p9n#<&jnoSb(Qqa zSc{6W8C1Snz|3@S$2Ccm%zt$pHo;1hYuge((pUc~Fg5R~^)k$e@>89gM4A zjm?v;z~ir)=t)(PWcuTniLT(jH4;Y}p2DvGc!y1UK4ZBhk#RDOhbvp&V(;JvaJ*8D zId^kt*(yLs-dlIxekad%u7QiAPsuz>4Q9jd4D=O>V@yB3!ogP&ApPtaw*1*Zwv0K3 z<9~aQka_3f{Avkyd)jl;f(y?L0T_LD6_AEFYd5v=d*TTt7%_y(C598uW zIESCM_&j+USN$>r9LG$=d?PjXbKyniz_`yK5UoY|na9hj%Uru;k(7}V07>cM9oZx*Auik@wI7i@X9wH!mtH4dLh=> z-2j=+7+hp*#>VB_l5I<6Sd9ls;5u9bpFGmA=2RMNoyzBv*B8R`(i>E`Ll|1#cGGvc zJmlfSa^kPu1zp>p5YXJRuq{oZkcCG1a8ktr;$Q#FC-r zWDt5TjsG;7VeZgzp0oFw*_~LyXEqzCu%ajaiGBp6zR z{(n#Jh`KHvut#SSqm(BP!ZUlS&dw``)Lu>6e&Q1RHL{{&b*0Syj~+Po-4(KRuB)V#yED}A-#PAy_)hRTHjO(Q&_Wk~Dug_%S?FWQ z=YA?~)A)Q5?%2Gs0tfr;R5I=fZnZlBCC?smN8=KqLs*zDyC4qtcy^zO(qAs{)iSJ* z-HSPY*Px51HM|#61G~ji>|4=r;7*2<4-?110n-ddNZA!_hJQdny#vmR)FF56Z21}d zS#&#LftEAAL(kYg%G8Ol$42TngGr{Cp6iGg*F2_Sj>;JMy$kB(OUX2zZR}H8M9y81 zFs=Hul}vqbid1&&!^L?Jyp8PWJPHQFvM`*z z0j%r_Fq=Q0T3_D6m(QX}#efZQ$jRc~@w=*aqXn>c|4AY*$vrotOE#c6}!f{WBR}cx>h;TR5D^GnFgmIM=;*hWsU`$2|2|0 zec(C&%mlcu;|?~d<>XEDeta4?2eLIKXjUqpH;5Yy*vj=*#c)UmzOqO+7W^kH=vnl<}+)K0}n~$8$X{Q^$1=U}4=y(rB|A3`@eWam-3`X!UN|a4HAvS`L$* zqCA)-n?XONBrY0^ym#2#wy%zvH*BhWWjG?{2H?w#@Y=7hdYbGq9=d(f~;=CQc z3lwGTwkOb*=qFHL{thpDp5Uhbu0T=#elsH_l(aaW=j4@E;FMe9*b#CP*DXwe$#Utm z*5VEt72I%<3^8S!mm~lcE z^X&dm=e_*?*wbN7yC=_lX~=^I$$fnGaW2f=^M;AdvIoogH?ZlKFgTuWM@9d8+yTk0 zc&kVkyn+q!{)OYjZlDa!hLZ8yh4BKHn~`*rnlrlEdc#Mef{`!fNr&MEl<HvQMphbu8(m_il!MXg?7%=h^?>f$-5~HHf zeencTJL$toOB-%vYZl~5+~v9aLa@`o5Rdlv(f77@Ih%vJ@HQodyKi}hNgQ%y`~&on z^-;!7D|up6=z@`xfMg#Yr2lLa$=bF}6QQV&V$V zp!3;k_^i7U^+NT~@%16}Khs5{8Z|LDqz0lMr{UW7_28@~gN;+?!`FWq^x7pwv|S@h z>~c=xtGQKhZorN%NxMT^0-a#z>tY;9x(w@8wMd%51Bf^kQ+aWG0nCw^i-ob1;73;u z>V_qdwQ3@QwRP)g?V_i+tV9-M`=`=d!K)xCRs}-FMdG5GSy=d7gvv(YN z>BI%e5E>TFtWuYTVSQhw{=XpDaqR?WTzwf{YHufJ?0D{2$8yXG%pi@Cudrv>1hOK7 zc>aJ9xK{k4+bq*z$5IK{H~0cBYU-iK8ecFKt-!N>^C3;^D+$pTW0${GVZ^_VVI^*c zpvbCWV!B@&M)t_TspZ*Z1JeWRefn^3L=-6BPs52lM`-&65lHiCBLh~FguB%aRAe=N zc>jrfN%>6AN1Y@;ydIcZk7)(%p$k}h@*ym_)`%l&KY4EJ1XxpPKn~uFg4?D;^v0u8 zMEQb?>C-PRr0_-&S9?btU#6dgwPpg0ynhgC51qxf)dieW^e4O;a8%|14J*k2zh@eF_x)v>t2_pS19ULx{w_E)eh;30?+M=a zcTqh5I`vl$Ma6|$WPy7dqw=lIR9g8ux%1;Y-IhVQ?u<|(QuvQ*9-IKVBKvWNK`zyZ zI*VHiREfccsc7034yBS-u(&jgC?&5WcGe*@?|1|5F;=6WieA!*s>R4?213JUInZSL)4z-t9=8j1i>pLLi!zk~K)%p`rCzBnjQL37P%_&bB= zs?9%&^Bq&sF*J+0ZQ@LyI!Qy3fjF_2zD{QHjEm*+6QL?&bWYW78IW+9h0r1nZoaL= zSIn43{z;^r?&fHcnvZMTMDTHx5bvR{<8q~I(AhABO#P~ahaW1F6APShjH@18UQtbT z>@JfbRaZJqA`=6CSYfjFD}4EO8%{2brAmKZ(f6@$!Fafujybph;-#&zyVD!{Ctsz? zBbI1qHxc{ieWIiJ7peEl5-=zz;hxPFfrGt!Fud>`^6VRd%lCR}__!B8J^x2ux@XfP zx5FV>PaAb;IaFKR!#Bg?(0ua-mn0%X%?}?Xnpa8?#wXH$ufzG-W}E3xJ9Fxzo`%!M zcvHP(MS=Xdg~ZrGRj~1R82wkvGfL7EsHOF8^bH&#y(=Ez83*3o-5-k0SwW;+hQmkA z6ESO68rH_$XA;gwqU<+wn5_7s(#muNjNI`dTO#|({%e15-Kn0cPfbxYQ&)mHeETG9 zTweiJQoFFZM3S9t--q75rttoE4d!>50OXGoJezeK$lGhU-aCl)Xok>0?ai>sA`W^b zAHb&C6f#CsoJ{`7p(@@6N&gxeK*U+krxEm8=Xdf+xP+d`jE9JxUh+&n92QzOa-)uS zNx|lRZr#QpFu)PQ2;fDUdX2A(m5m#H@~}f%NO9aOjU!n}~qTJaFv?rz0z%4%>xCXALwT0r{i91zWmg^IAf5izlN_{m|Z#oNchIh%4@J4uFFcaeS)4@h&n5^+sV~sZN=5Db6 z;GW+El-{(6p4}0FKa9VS9bbCLzVZC~V|*o~TY12caW0u9uETPzd?r`Uh_&d_X6Khr z#u1tZ3nQv%@xIAK0V^Q)#zCU(+C-x4PBVEtch_gKF5W(s1p%U0m^O(SIJN#VQTLyO z-*1{hjaxB1H{A@M1FhJ)7-3E+;w`L~&L$%t&A`=Qi0IEDkh}H?(H30`J`N$U{rhIP z#%F%cjjDtDH={X^a>Ai#*F=&dRl@Bq-$CkigwV>shcjjef9}}fu zN!(M$>(3cHHPwi&Z4eiHe;5kq_`LgI{afCvQ46hFDUdYzAd{NJ^IW86qu6y9QlQ;U zU)*n`UD1!KdM%>B%-)8aF>3_Pm1^)I*cCLMra|9-lJro>R-AYu1n;DL=R4wY#P3l9 ztv~h`PKrm7ttw@pedZ`E!dfU>xfY%k>%hVpUra?tIq>oIf`5Iy_q8DsCO^6Ymoziz zxV%9wKHQqPyqj9(A>jrOmW;#4KH~U&yASmJF~_&7MA(OIQ&F?D80KtKryWzrL2F$u zNo%{uNvlawwP07%f`W;7`IbKQrOUdpC7?&Lzl zBLncZcto1k`4bz7ej0VIkefEkip#DG0>w3XXm{Z)w0cD0?h<8oz1)YY#Jg!Xw8dwVJ++_Uh{qmaf{NgILM|D5O$H5i#nDEsRd71;1(Pl- z&8no;)4{Y_7?Wd92hCr>jy@aH0E6G)vsw!J^ty<)a0Hl|nFAf$O1!dGm{!mBfgq_! z+WKQVRI5CJ5jO|!e3lq%oVW&GoGOR-{)zC<0Zr! z#C894(zmDr)B-KRsV@n}l@^nl?=9rZ`K9>Z&zE4cNSAI?iGvpgCZOXMPsCrFkyT=E zpsY5CTg<;FEEn@VDCr}Nz1=T7Yo`c;>IQm)?T40Wb|H-S z4|>uQb@GrV;*Eacq5SMHl4d-73BN4$;JIriO#PV)BXK-?%`ylorMsAlPqT64gCbKG zkcQGu0`lye5R@GW;WGjq@Ic}z^X%*#C>Dw5yTt9L<;#WHJ+phc2XSNAS4N)9$&77a zdN>FyIwr%~8R{_qzXaHO@*gQ}aiT}pEhV4VuRx2jFX-#SVsczbKns*(pyU2BP@hr{ z*1|jCN(2XeCl*kvOdD9WQyLvC5{ZWo#|$rjP8NIIf*e@}4mp{@V9h@gd{2#hXm=x> z4yGhFpo<<{(QIlNP)7SD;<%9Eqae3H2U8oAfy@}oBrF`LayFTXieIBaWBW-|)KjPX z?O&6wRXI2!=pg-ur$BCRH7QBB3^rOWu>Mm99sKcyF$!`5^}nHbnrng;56v)&Jmb38 zI#vamF2MSd<2YxG0u0`Y!eud=pm?Vesb0}XAJ5jtw^?z-Sy>0em_M+Zxy}R*>p*wF z2I4Z~Jhm=gfwGz==n(oIqjyio%wi{8eEBcEv1yQsVFMiYH_*CwxV;XIkeXp zy6-v?lZl?oe>Wo_PzXHNUIRNWQ^YY!FB?7g8}+0!#5d_oT==kuKE z?>tRr?9r!x-4wua(PgHeSL$gbpTq2cu^@8g4o>$|hD);|aVy{2*9`DOoFgDOI~h}s zZwLF(L!`}h3n+dMB~@l8U{Rv z?;{#~2d>Re!8GytCHxt&fHX}qr-I~2l4bmXzUdnxE0T@*PH!B9d#Is>rw)YPDMlTM zi)3Q+EtKxlrA4_;IKJ8tvph4=j=vwu)y~8fbOKzw8A}G9i;?6h5mftI6E$sbtorH} z0Qx88Nksfj=w0Z7TS|HNx7~XTc=8bR^~15{pD^AQ)546ydoVcbC_Zl&#z^b&)OlGS zZKw<*o6ioCrvbjSb(&?>mk(WJYv*^m^m-1Js5=F3OKb4^48D`Ra}E~BWWtodU{3IE zJUPM7n8c^8rT32IlP@m!$V;0kbh?}t{OMUhjaeD~{~4mJlNLNPUV(o^&p>UlDSp~M zO3D<>vD8SJ#Mx=0m$3>lPj@1vtry`#;U`jWTmfC>UyOISyd=G+Z;~+I>!gCuZ+D5v zfcG_Z{MTv-_3PBQf|O2JH#>zRdeIOdo<*i+jmL_Bg>=7hHjUX}h*SJdFn_v&saw-G z65^r=9jylR;pa#YGqXkS=YPq!<2hul*ctkI=4LQHafN&4qXf~q=g4@mTw1g?wo=i_ zn+64k(YCXlv{yxj-`U^7+ZRNUr!a73+5Y5GjvD*s^l=!}5MzyIZX$`(KXK8%?}+DP z5j>M&00D2t)77`SIp^z(aZG_K?B2DFBeB0gR>ui+94le^TeCT1?{|<_XFTzP?PTL|3 zpY8dCO*B7W4wuc*fe%Kx^wj3DWa*BXn7?f{R@&S`W0OeeGarlTnztcFQ5M>V<)9)$ z9;6m8gyKt+AmYz!@F`nIKE6r-cE1w#Jy{8v+W`%mE#c{%1QMz8mP%&ZLs#P%I*94? zCRYcG7f9ib!&6x254(utI77B}>L+q;?nBt~su=!=jUmr+hsejq^s4NN)2Qut2sQ`> zF?C6SJpV2MI%^KW=6M~AIFHF%kUR@km|ldsegha+Zp_4gq7?Tg69ZXqIzvmEb$Tv> z>VLjK+cs@1S#Sr6)~=x&jVfWQRx6$U!<*OV%*D=|A#m}VD*W8602LQ2;dx*Iscfnx zCj8xId44RWoIOuOUS!b_6JciIXbfnZ`9Sajb@=d29nNR(AfYwk?1|%%3y<;FDa7<2lnDPLGr1aU_RW9TFRTC|8XK$b6N)Mb??x7 zCCfqdWfx}kY=IEFR5Y{7h51vQAu4Ya)_Jw@{JbK#{HzencYI{_@1I2X5D(}!5#S~j zG4{N30G`)SX5$@?Q@dS%VE4DFIDDs!q}Cjv$;)Qp?Ood$s|-6Z(?5r~C-`^Q!doaV z8xB(|WI_J^A~1Y^78XcHgYp_R+9nm_;v^QGnh=5rsu*7j}#)(WdS-jW4Wyr zpUA%jnS9soFj(FT$NT$FfIpSN;OY60@s&@PUaf|hpNV+w$~Gu5u%jPpmEgT!UscQN zdU$AyxFog}0=@2ItV9IN(956|UsIu!zn>(1@+SQ^(_wIcr&Ni4Y5EcCSCc{cU+=h509Y#~d$p!BkGH&rap6zx7D*8|1f%T`!*qBxHw$OLV z_NCKwY6d%P1l)8-ZAdH@!7US&o0jXMKbQK!X2*OWcGUr!Ma_!a92uEVEJ?cThJnllY$DsV09SzFDew8 zRCVz7(-u>`$y;$jjV!Y{_&2Rsx&U^GIpR$kQnlnkE}ry};5h|xXg8|Ecgg1ANSy@h z{JZdDud${|o9&6u>6M59cfKoxrV^n3!)3Fg{F#PM)6t3npb?>(zDS zZRTD+>rhIK7ickYH)hb&*S}W&*|G?fLOk&C-u=w>H7TfdH=itdSBTqQd4bI}2h7{3 z1$FkHxGp0ve*bsR)W2R8ewmM>(Qhs63A_^SYl9iA$#7Y2*PfBGW+O#43C!9zi@aa!{~N z54kQOpYf*zK%bn343AlqY$!e%WV8_!Y+7NZ4I9Fr#W=pjPB8iRI@D`zs_Hl};?Q4As-oe|%oLV5f4L~JPe8hwi782W?g{TAlwgm&`TnxpS5#i@s2E4&x3u3G5l z4H2EH^z7egy5N{Ft_hRjq&8TfhtelJre?QxBg!52DY#Xozu0C%gSq zxf;a~@YAWKF<<2INkbFew{H)=EDD7Cks6rLL%`sO7#(kM1P$DqNmrmJ?Z|#Z6N5x( zmWC46P6(%qx5z>jn@bP-mJyu^LR^n$J=c7r7UIpOP?0OQ`L|66|8_z$Q>mN|J4kZv zano^g<7z7U#+lYOso{^f8SwfR%ROB4l;#@zV3wwB#Gk55$WrMkm1ztFmsFR-#lz}U(;q3(>Lsvj~sB=nRm;XVe# zvWyhkdSoN)CPqwltPSbq*>l_L=8`d&#b7|FhCFi>hSRF;G=|&gC4f;eR5Ie(WLVlj|4*{I8S9Spj8sY{Q`lC)#5-OxKlWP{Tr12s4kT z_Ckkf-9uy3>~l`&H7$>B`TU3)?5d(0&dS2) znKga}%3m~uLsk{|D>$7Lml;6Hhw*43BMZ6*=Ax>cA-*eZry3e#uxoM^-L|ux{i0zn|mqoAeyveyXxAE{SZ#bJ?N52~dpu;>9)LetKYRy?@wX?*5IcH?^St z?OL2px|p>pS5YYH8{P8A1l^|bXX$E5l+oD@dy|H!>qK1;b+E;nJ+}B@pOj!}Pd8)Y zq99Nc(g*Q@U|eA;2ALaG@X{tJu0_@ovlISOXCW;VO3$cjn;k~~nz&+Ka2ekJb`lMm zZs3-suC&kS8+|!GjFIw)#npOzo?&e-`mR%j^AD;p=Xg9R7gW+EQ+?>gt`o#A!w|dO z73fR$0i6}EhsSo;F(U>SX|&d$CuKL*{ITLMdKbd zpmcmu74tw^Aeq+0d|sH3r_$AMR_#Yh=Lut*+DkfoRvnk7x}t|$BIYOx2}*@3N$b*A zICp3<6s@?84eB}6Yvmnux+#Jxz6$i=^L{ePsSNLgt3g%Pe8KP8dN{PQ9b5SKqi*SX ztQ8gk?KKR_ELu*#CWYeXFc-XirW!Sjo^Z+5hta&of^t76Vfi4S9KW9#j%%a8Ql{bY z@4Q=OLK>c?l0>IjPOxUZB$ThOK(|jd+`=St+&0@3yB8kBLh<*sa1p`DPsiZ&{idi9 z)k6=5e4!6he-NYCD7vEOSJn7%1H5~4EMANNJSO+b^kA~EK(y>Ei4B}0n0~s5EV^-* zzWXDCW+sVnJ1i2dvV*u2qE7guKM$v!|I5{~0GY!Jr476rWa_Y3v&P@^BjBtU!p0o>-Z1X_bm(dG;MT=B{=u<;GTdq$^l zK;tlEEcsWyi6s zP>j3|9!DNoXOr-!*U1c-V7z>wnK^r~09)DRjGMF`e&QKbkJCBwK0O>Kq#mbx+Ew{` zPZLfhmQ==Oh(394gk@gkr1E_>v-!q8uFFBA@{IUau0XvIw;nu3g0?Kdx5*qa;UTSh zTP>)yl`|*X*F$HlTuy(VaE8~G)nwkqIG8plgOS&)@WK3lba~kotP{IV?;WthJbR?V zdtLEjP%4=_w3MFuu@VyI ztv}w-xk(cCPb9S?3FI}KMg$>BVBXkDs-3mq>fB7?7oZFl;nLjF{v@~=t4I%AG$tWt z-^kpZvDD{eJ853L0}S~cT(9_YklY%|ExP%etT9>!+ccY)(!;gnT5Abs7^=;rkJ|$x zW95N!umTbL2uQN_0$;F)r{$p#>9~ouv7z*Skt~(4jUXd#y`-CG?wD3t5&f%C@NC%) z;+;22q}7qw|1*K$&2dnp6Ttg~EHz_p4ajLLeZi4CY=*$NiT(VcCjOy0P&!Gj-f@ z$QthqPV?@QCUxGYSn!jnJ2Dp*zD%N)U5-$YA_^{6#jrhgHGlW|MP@DL{b#o{!GBvB ztQ4OHPO_~enmx|klXu7F(tRNAXO5z~;{l@;Oh29D-*PsqKu6*ztaD2@b&OmA+caL$ z*210e;#MM&aWH@-s`8{yJB#){F{NLQui#P~CWCVOILN=*O3GI5gq^$Y(MNjsNpNQ? zIW~JH43!3f+8=3XnEimf&^MupIzhA{YzmAOKSY&Q>%zO@2}El-&s_eIMWzR6K$J;7 zc+SXWLb}s%?DHB@4ynqPOpy0rW6u85k%a_QUo3&iM;{#L2oFI&eNg!5Nk05S| zHVIYR%Zv|K#`nd#Jm;ME*XmZ#v$r0Qp5L2@UbZG0=4un+azi{~<3^vZ>>_y@0{F&v zTC!G#K-0`e#P)I!gi~;{2l3=lZm}w|`Y?{nxH1TQ-d6gFir!6fYVt)iF?rCNAZ8<=yd2iE+ z)pArzM->~dD!>|QM<0I{W_R*TlC@ zKZXboy`uv{iF4wItMJHk2XM+;#HBCa37dAN!%RKG_~|YIQk4MXXGy`8Iw{sB=O^i( zT@1y6*T^h)8z$aVn3kCFyI)kIfBenqi^1Tkmq#**w)QJ3WEKGa>RR-B{Q?M-Y9hT| z)^O~gBJHjef}5-&nmh`HTVLEc-Fvd^o)B?*D!2e@_f4YFgA+lP&%)^KzD2$^+B1K+ zQlfh_f;sGQ0&Wa%r~Uo>d_wjkeSVe@se$|4+ig6v@>vY&)+!~7=B%Kzk19jC?mD8f z?LE8;ISVx|ufU;zKswJL@@vt@9(y^^x{->XQxaiW{}c=xyv@%%@@V=79q`RwP5xwg zlB6%oVa~o(lDD;z^oTqlmKoF^uc?_SC1IxBYk%LhV zaN}SZxbrNZQ2xv`i!21^c0=4=dlBxvSV`D$e&>xAYj(e6x>dx2E$Qlw!!&^`U0&6X5cf3?fn+0&HCwbIU&-LalC7%gShQ zzI%Y&s~sU%&DIjpi^3H2l0efp8XhWKgq&Iq7XB@vr-uz8xqS?-(=&u!Og8=0Sw+^B zUMA8$!6ZxeBk?yoOp+o4vFO!uvU67^5j0MN>YGa-x5FFco7PjjbPm|NxpSh_63OVu zXGVOAC3&hnT-Ds$0u%47=NU@Lkg!<@NB0(!y{g)fbI@(hu1PWwaJrr=ocoxzZn{SP zN6~r5Q~ADe+z44IBP(0V$UM(=r(}ng6q2GslA^s!rK}>OP#TgnBnjuaE~QcwD!xTS zL#3pxNzwd0zyG~nIIriNbKlqX{=7e`y*8Agme1Ps#b7UY5th40GgZ?WPS=@X>D=R(u;KwM4s65dp*zWGF=FfHDfI5|d9-i~z!~M0eCwikoc_KI z*}i;;f9OCL57QeoLDT6l6C#_PSrsA~(vp)!mj{dC}`n+DAloxn3XQFzF3EA9I*o({Q9 zq?w*0>DQzI^!9KjpKL1+w$(i-{p=2m7JHK@^eLpxT_Sj)1?g z;5qq8pm6>KxNNe3YdB35K0O`hS|6vI+0#iYOM`k}&7zHS#z48>Hk5x`fu(PM;!D3I zOcGd~H;|2IJNA>lw;auRzl|K<8`8G7sa*UmT}liKhdF_xD64f0RT#KX_Mj}P3p|4= zZ<8teSt=jtb`sI%Nx!-L{al)!F=2f7WzCgq9sH z^>JZiPfekuQh&w`aAaZMfO@sbs3oRem!UlUk8uw_=e*D>jR zsc=@vx;^~Qh99-^3_tdr1pKj#;%3=I!KTG|SjiM{i2OE8Ntw>+HmI;(sTQ#OxtOmz zY!13xbm+v&WKMO|aEhDr3)HSHf$oMYEG+sq1eZy(mG@#$>aQ0ypUh=qt0%B>fC?M3 zC=X0e<LAQVN`Rf6%dFN;qLnWixbwd+adNnlcOC1+=89IZ)(mObldr+1jT6|Ix!=+C z%SkFMzJn8wPUX8iPr_%d7M3vZAzX<~V=mYHpyypWTnPwZGmp8j07Y+>BKVR2-R`zm zcm=Jy za)>kYy3Z0UwAgI@1%hL%2WC`N^N%JCf+=EwUAue=4z0hA)@r+8Uw1y7f4vx);!9{x zJC7eKCvw}DZ^iTpLz!j%dvp*PvC!Qq*lF+bCy%O`7o+J8AG8rYdC#* zWj5ETh{?M5LbjbYvkBgLKbfE&VAT5`aY`c9!;L|0>d!o3(E2?tix&+wk;n8o$j+} zVA%<{9w5uU4!sDHxyEcl=|*nCw^;Ifc?}XHoTyXBkM%sTrmL}z?9?7l`h7c*zb$_s zyPq7wcQfO-w8cLm=yNnC{ZfG$MZ@X8XEU*7TLcNlZg^q4k^ZJHg7P6&+_FuDXurG& zy%WaL@@s1-F}n_<7TVFfCD~B;L`vxBy2n}H%OG-%L90a<$T$Cz=sz7JS`iUeVgBF< zy^T5w=|X-J3%0Q#>*Ps7xf*^5ZmHqqMRJdHXkcOvDx0;!v&uBS=;%N?P-94YtrRI~ zsT)e?S@24lA)xv(lcueE4L?0ck%G{5^1d+=7S?PVe?@HsnS)9;fp@hRpoACyf^Rlyim5&$%ugdaEEw8!xBwzDYh%kY_~> zJ?^w`N)DNH-W0MI>u`5uB;|~h=kg<4agJLG3gx{tEO#p|&>Tz7&)=Z&{xEveGljnI z+e|x57vmmZ6MDby0%z8@ggVBTaToPB)A10Xg zSFELy*J8}gdx3sOpWwf?RC4qe-rEm@=?Wd-s=h|kyuuo>!uF@6u`&gBF1t*}bmx%i zyGnXw`UfSBdeitV$FcLPSk(2?lJJWu^_u9CC7973%@ddtk-#T+$&mb}U8wTcfUcj3 zrj2Pmv-J@!04Nw!__SXN$uCl4*5q2KDTWXoQ9nUw+>O+)c- z6JuKYuZ#PB^x^j_-|@LS;z!4Ph}e1_ul>>DC%&0M3bB_lwQ@Vg+!=+ESNCCZ{{aem z*Mj{*u6>!Rl!IBuJ3M541`Y0&gU=Ov8g!@-GU*`tkJG0YC8=m;u@V)pPbQt_Q>b<) zlp-s~;PVSR(LeVL_q?eUhL6^wzW*dyVfIICJhM^g#FnIgsXMtB68G^$NfVSeu7))W zHjw?o6r8j_MW`m5NP0OHxY%FJ=XMATD0dq^t~o=7V-w)<^I_DZSB;&oa&b`fIKhJ+ z#_1-!;Qe;@!~O2x*uPkcvNm~=)}map4UT|~;t$xlP=#q7ej&QKP?jBdI~51Tn1g$? zJ+?_*#^6Uh@BH^T-)1$9B;rT2Nl$L$;`zk_a5kNf=^saCH-f3aWCvDHKS1a2msJdy zqD_$#j97o28_U+7&#s&)<2Tz*0m;wXsB+5;(Nl{Q49xOl0g)@n$I%-yjXt1Po3ikH z2C+<2J+?sLuvR$;{_|r*52n`OvC-7)#9kB6UZg} zKOw|vk1K;N(2LXC*`0tnRQ7#8>ylqmaZ6$}OFDQP&V3w&liuvZ$O;p*ZA&4ubp~wK z7i(H||12APa4|`?>|`Ux9%EMSXG>M8>)5xTPJ}O?VMBNw3dL3Yk9rYCTWQhD zpnlxld<&QOxzfp*JzU7K<@D{Y9D6Bb`BQa9Q}xbt|hTG$LxrkdlAMg(`T3C3Ngyt5VC)~#af~Jr09DZ*K8k1 z-rdtMaYqxzm4{HP@m@|kR*%%B2SQ|z;D%KYGSt>bXwG#ndY4xOQ8tETJ3NG0KhvZA zg}PX;-+_IK*7WS^6Vy0kMQYa9aq{01TJfijkF~gp4c=BTc+6l-K@xF_RhyY z&x7e-@H#Xe+D@M(ui#m?-{`a|g0=+5V`W?>o_R8sioPBLy;);O%k?|XSt}wJ zG%!rq$9$Ei_aAdan!b9JzjhW(*A&wWpSyhK8(Z?})4@(lG?hBdvPP2+Ln!nz-mAGX`zZ4C(Zb`ZNjc{<{0dF>_=~v6VNa938c!_a%n|P zaBfKmS)>o3C7xZhY|b?Cmcfd2le2;If2Z*qMplZ8lagr34F&PrJ{!8i+Hu?CNIE&& z5TDTwI&$J4zr9_PR0Cv56nqJbcSpe0qG342c_|F->&LbFpSkMZ6_jDU9p-a?(D&_r ztm-i0miEU$zs`ERyUCEX509d~cDmx<&#q$G8)KUCtP&2)a;14CD)d$LD>f(H!_mj8 zIYq$_p}k`-1O>WL?aqCmJ$?(d&r`sKd0V;Ho|n;d%Y(|vuYHM(Kk&!uyvg`(6P|hH z0NRE+6mWZ-Xw$yOnAR)<|E6Z+jH|~SqEd?S-=?>?T6G)R>q*hf^YNVY@8NV|lrimC z_#NLx4WP#+=A=F=2jXirDB#Q|`$r11Y1zL!eA<`|6uZa`O$R>)t;wm_R%Q;1$G+m( z9aAcLqy{A__o9Wjftx65F9!(uYqB}?*KGAQT4P4S5JkrXXy$JGaR z@qWHHQS|B>+GT3sl1pZEuKqLlJ_w_n7qi9K(t!(SN8*daztHU61FrsLIPLkh7dH%e z#^0%x<|K@-U_n?d{C6#ldha!e_bok2ZEjkk2fPfeY?#W;>-fn_bsvSIL}56t`x8uU zU1;~TFtE~Aq;u}uv3=(ie0IT#Uw+$@-nHyvzYZAFf4MneHYORPBmQ!0x2VvJLB`BP z^OERkdme)4_e z1zP0N#+_f4gzf7U`KxCODJLRMsHO`hvs;;hm-iTyCDm{jrZ$P6?rO%_3i@EU){u9W z{Q$Z{N3fY?Ib6`JMD|}s0UvjNA=7aB5AQzM#++R91uyt4Htdo}99#Yw4$oJI+z0)T z|E&TxpD<;0d$n+k(sy7k)Ay>Q&omL$3NeRZ4&BHf8LU8f5ZhWye2P%(yW3e=X z`>;vu%HtVOW_T4IeLf3Ta)IL2<{s?uyaIT8(1;buofq$2{vB^R51}B3clcT@5S|_$ z$pY36V~!64*d@ga@UTOH<++Yv<#~2ce}+Vp&Q1|qYKdrm!di%)F8aSqn|TIa;mlYg zOd70!75Apn1;-}t^Wtcn5RnFYy}uzKy$Ft+kl`;hJr%w3kQATMiUY+L6=0P z(;tB1IyDwhvPGHET>boKKz5->3rdvZakl?&(bE9@#pvN1^H9i@YOyB zwn@5>!J&cZ=_lkQ2kFqF{qvcP`9I8Z3u4N>wfws$Zm3!H1_GQ{lZpOW{#?^fywiOc zQ?%pJGz($<<-a_rRzc{zm!Q=&kj31TqtdArEc;snavhV{<4kSlKIbfMI`b38O|s!c ztNh{4z4MS3KbDLX)Y!uGulRaR253Kc;Lw)ujvqtv>Ei$eHb!AGH8f3P@7O$`!5$c( z^@{JDIF8#k)0v-fB#~PZZb|x0zBoz9^RBF@g1tpT2I-$UQ!SOp>QmqN^ixCVP^ziG z`RGu@l7aYN^aq@?>0dQ2SMtUB_(B==2YqG<^#@ zpPER&1L9fOr7)WF;VSQu;6O&7j^L5VkGR9`Gw;;pL3fLG@bS}f=|78N{#mdQ84guv z?@sWj$M?X8MOXP;?jP?p$ej*1J%T91Ep%aT9atZhq`f;=;m3wxT3c}hmk;mfxtp2% z=wJ&_kdT33Zz(!ikj%}0BAhGC-h*dR1zCKZ$y^(k(ncXWWclhU%$qXrU{QB z=Cm7Kk1J!(c7&kz+aXNiY9O7CoXQ{Ew1KP_3O`$|26;j**iI!KyQ4!{(7kxtF+c*` zI79jnJPz-yKZFf0;;=HsUEF(M7)-f08Q1Q=2>TAUqM_w8Zs7LSrcb*jNdq3V9tgb z&mog&PnOmtcx?l>g0a~?@=6IML#fC3C{~_sNMsyH!wpwo+{K+Mc*=k62AorE zL0+@GU}vuwH=j_$i|09-{NxWe^R^+$@3a!xC2WJ3_>tK1h(WOQ2{69uL3xG~`H1^A zwAr&{y=NLyqQ~O@nM(MLOIs&#mj5MCttstZ1SI{hnmb=C!)w zt0tktV2L;GJG>Xp*b)Ec(nW6DM?38GSc+@Qd?-_MJTzp~^B;dZGft%)FLgQdCR66q zpEXBNQZ}-Uu9LvM*pwFV}rvO z!|SmapTpGtH3t8Po?@4(0=4GtVMU@uP?J~S#pdOpd#Qi|%!8qRks6%~T!cEM+L%0H zq;TJ9#7)E2V`-8C6%H2WF-(r4Ya}Vp>OQ}5`$;Zvi5I`OcON9*x`wYW&w^@4Hx#wU zid7Rw(yM{RyyGlCvf3lbOfKGXXfYo_hwggu--0q|#)KW1_*IL&-m{wX>y(1J4=p$} zB#z!**+%}&o3OFXnx2n4&Re~ez@LAAV3OG`EM*-0vaRBV7xjX|%or~8$Z<53T}cO9 z&XDg=L@$Y43YNWy)1s%+`Y~CA?~~C-dYl&fU3t{V#aGf8db0h>kJYE z2J0?jtUWneOhl9ChJ1);0j`Zb%9V0Qaqo(+_&(4Ne@3sO`}@qvh3zMer>DrH#|-Ku zmeY;qfhCX8Ni}->rUthUg~(N zEx5$L;>brkXkX+E3Y3~l2lR7MYgrG5-usGa+3Do>Y8g$svyB#>x56_vH}QD7J4sha z30b9!^nLSglxQ#|!)5U>*JCIZXRg5el4%rjeKScubD_U8&(gQ7>8Sp;g@)V>M2Q=I z6lJi0Zd#_|r+X<>KXo2udnDlZRlBKta5#2`YSA?PUpQ&?FDxydK#xK~=#7}i7$LuK z>ywW7VPiOnyMn3sO9^@Wj20XLX=J!ngY1_Ge`{|V4RmP4w%5tjWKLMzph~aCXpvF8 zA_>(iG^=kMS>(+lrZ$qCLb7P#T3vi>>487Oo}s149ALvcx#WGFC+R{zGK)#e>E z;j0b5AxoY3shae2_9)mLtSkQ9sS4JcMqqU3Hcsb_C!O7qgw17(>Ga}GocbXX@A6V~ zhY1XKz-C(U=sPM8kEH)*FD2Vk(`mQ=ZgK017_t`U@x9Xx=tzAE4F!MF4&6$=<<|7B z<~&YS*oH2_b`aqsL3YknFg-Vk-h9?1txp@tH(rl?693|vV{62j*F0$8)L;Fziw`rF4|>T=6Kp#+z9Gy#Q%QGw!y#dc6&)Vt z!dZw^$T(^Y3w@bLUrha&o1rq@U2z5FUap{yu!HC^XAixy7zVe~Wa-(@3QkTzhb~6$ zhkR+FvvZ~b+pZ}5f8I&VKE;=gR38$2J;{__K9Yj;=F>Q?0qUF=k@iGic1+-aN7%%R zOXCvIG)SFf({eF-JZ&p{&@=fNss1%=&&hlZJx@Xw=a-XGdQaki<1*yd4xwR#yA5*)EMA+VY#f@kxf>&z;VL zXe8~5u{Cxwxa8jW4#X;mas|hkT zPN3d%bJ@-`OS(5`5IB7^q;nR7;nUS&6uEdjmwz~l#9sfnwKh#uv~n7|n7@Mp^De-T zg>xava3!hw7xMLE9ci-3IP#R01?$^-^y;u7yiPJCgUSHr7CVY;-lVeU9lJ4kh!oW+ zOG4rD)%2lcKL2ZtGWOQk(^CcEEcsy=9q)Jv7TXVU6&?5aS4GO?*ltTP^Rq}^y$@9{ zji>3#+AMXV2Gw?&u<;o~$u&+IP7IJGg~^LC_8^b{uB79{Cj;oIycL|I} zWMJkNJGNe6l)i5_V%!WPa7j+ZVM#CebG5w!KN-f|zM;crHyq;=tsa^oX7TULQ34fq8tuYuE1pMp0uWoY>C zCG>8C@ctXN3y=M7gR0UjKKvELo(>e351PN*J?I z;9?d(=f;%;ICu)aWR=6hJ;QZ2Xiw9j?b!m~T39Mhz0iz@<|V@t)hKxKZXI+KZR3a3 zeB*}e#8r;94M#(7C1znV1M6DU_~*XU;B;IYp6N@3fsZX&Q2jsg@Q16|t{)$9i^_Iz z*<;Avu~>nlO7^qVW+!a=`Vb->xw0Om@gnY46w@x3V_R&xKvmd|FV3r*;oK|fTCu&1D35xAMtB$e`I$R*Fg z7P~cIym>l1`z;5$Q=UQcg^5tTJAynWAH?aKb!k!5Op56}05R^mWchHo+8$4;*juEi(`6WIh%#B?<`w%jPb9hbgYpz>A1G;E=}9K0y_ZDO4_qtGgk z>x|w(Z@nCPjc{V*xto7@*_=JR`3)tLYk0qz#$x+%J$O?=o}Fut$C1CLgI&WO^g3e3 z#QH07`>m<4e5o|3w(8J6%_m${OEH?R|HIS7biU^GHD1@%8O~^^z?sHS+?n(VlKwK( zAGw`VF1gAb`056yH;>`QF0JOqe7V8-3t52~w;#gfziCk6mIhM81~GY;eK^EJOX#|d zpsd&pP*QD46LNOI%3uxg9s8jq+aBo9QF4w?4m9B0yXtYYX&Qgid_Hw8*a4;kZNTl! zDM0XdVw z`1ry)2%27wg>_H)Kg+h^&AWTiaZeGHf6~Wam)*h4PXn^*T>1XfL%`(nMNzu*Vg7NU z4qcET-n?%+$&78Q>-5Mii?N4#Ib|F zLBbXpTrz(<>DiCrHjSB0h2hVj%=#2ai4$0a{a^0M1s&FL_!vasTCVkzHdMDOvW!q= zI=RFTGQtQGnk4A%A`z#uTN@Li2a|JCGnnoD4}+1K((IMG6ZspzhP2zVG}ot`kJ^74?{CzH>-mdF zNkiycKAnl3erverRnxHWVKjexLl+i~{s!v8`C3Wk9_-(J4FCH+-M%w=2bJ$10=*zZ z#heCv(y@o5r~}~FZ$!7hWuWKWJW`I5W(B7Q&?$=r%rS63|H)(ld_Ag3eUl%;1jV(a zJuL&u){dqLJ=!Sa@D@|=&1S>&hw%AE2blT#3%GTlJZl!tWaGEkgITB=jd9Ea{WbNl zKEso3vee`@3%st5%u>4Evx~V4v(%K9Y?v-3Ne2)2^W#Lq_uNovw!~0@4lLUXMOFd_ zBhd;>`yln!Y=>wXykAd--uyf^Ty8kE(q~v{RPH6?mB&O0{Qxz~$7m@L;-@#vPw-P;J`|rYG=Z}+?8Q_mhHt?pGNTQYEEP`AR0{EdXPUN&*ILm!}YJ^AWn7-=ek!%=sU@RxZY>b zyI&2*pW6(gv-v0&U;y8%N>I9dFq3bz!F`oV?BwP>oX53#kS$!mZF#($?S2zPvr8OV zj7gat&Xh z;7Yyt>`Q-`02g3u;3g)or2wRu4g;nx#2gennn|?0nj}y*l^EvD) zY{Kg^CGq$ZeW-}?fxwA=f*;$Nb!67kjHY~0eBnub8+KrcgaM3nO@up|6Je<6y6AYo zeLiB41g5S{0q@#UIFvC50y@3$)1fPPTUvx|ao4fzUIQ#z^$VX1XOWhls$|rx#0q!4 zz!E=>ax3Jh!echMl*Qvut3Kg;VgxD9I{`}Kv1x2GUKH+;ABTS9$DYzhPpidvKhlOo zItA!oZ%;FqXK;{K2gg+{xa2$5aLRurmS&y8)rAfC{Z$M9G~qpNNqK-p(oOvEllSq~ zz9aa=YP47+cL5!S$b>Y-= zT_IJNb9s84#swtiXR0Uc>$wPcdDi4<2=! z(y4_(XrSCFb_&;^NS6}Wcefskw05FQ`*;4_p7WSldrovZ$(3%df5#gNtWJBqAAiB9 zTF6r+a!>x2V3)THDIIFSVWX|-M~w?bZ}h-NHc!zwB3rDGwu5`9a+_b^B7vU5{a#zs zjRriKEMy+1Qo(T@6umT~0$XXEY8^-YPqdj~@J{lRp2F1Lcj8a)6a0C{T^!{hmMokG zy>nkz@*xx1>?5`O(6>Bv3jK8cshOlPN`fU_K1jE|Af|XJQ%+(p-z<2^W*r>NBFubo zDI|hyjjPZxZGb;MRAJ4W7bxp;50YXh;a&Z;Fi3wr3|izY8vfG*M!U^LkMp-h#f=}a zNA(_e$+{G4KHDNFeME^xGjMT1pwLsNj5%ZHqI{e?*7bVAyhcl=5c>mFW(rxaIf;0C z#4XIZ;=&9r8^fA8QtbGD!&%iI1*pEN!+dTuf@4txIG+!|xq_#2ys9xRuIUzgZ99Uq z8kJZ$$2fgE6XsZXo11lhBB${wz0&l{GtQ6!=b-5U*=faGi}Chych#Y9N56E6V1dqXX9b-fK_6rZJFinZr|XY%X`cn zugN@r=D?>!;ts0}V}mcLvx9nyd__#C@EU1QYiWx^pVvh6{F8}4no^+jc|STm_yd_Y zhmpzeJP7VQ3IU6^axa`Z;Pi>Jq675{aOlN0!Ch$v##%M}_RH1qG9m{KG;Rm?sTaXw zt^{O1{s9r|^Z1O@7sW=0w4fw#0gT6maJ;1eii>Mtoy~eY{`Vo|N>uQxe7|!KmKNdU zA!Zod9EZi9cVnLV9T=XSgJXM4v1)AuZ&Dh<|1_=R)^)!FV|4|{&eDZT9_suox!IL( z=1YU+*-rlKpL#G`hOp2j1OC&1Ur&fa+%uC$oMwnrMVQ{N}Eyi^Nzmp=0j5tp#V?FU*-(jo2IDt?&7I2hw= zP8-5^!{?)JIB2LRtW>qe`UqFn7N1EE1l~RC(=d9o>=#}PaEH=C%TRH~1^&y1Fqj%)s7$Z53%e{P2+#|aiFM>Ah3gh5kt0`%&{3E*ms}RqGoCnF=Ph5SBA1hna z$C<_76q%g<3TERgg*ie!_d9tr{OB&iRfA6QH~-0_qHs@YFWiH_RyT2HZhgkQ6G!FOe1mM(OVoET=pmXztTL3)}jrKb_s?_bJK z(UTQ^HW7_K&=p%Ykm_Ohc!Z4_%?oz;3R9A z)Bqg^y5RTneheQHk0GtXF4g3lxbcsezujui7S$XR$BX?zTK68m{Ba-L>}ldx=)Q(X zPVlOF%kdU7e(~bpzquEaT17MWwDT?xjPRs>HdG9?!>0@9GJ{K!RJC;^yO|k}t#u^x!|Klg3=>1DYQVz9fn;HwYf1+@Y{cc{SMA-crUV`ScH_*M` zla+bRM$@`;Q25CS2P992AAb65;f%rT#Mo&pP{)Nqv@+K$G8H`d-ux855iD(7C0z3! z0L%ASh@E~`@jKj|aE`+n8c5JV~a<7 zUUJ7oDlp4*G#bud&IijU;)1V|u&C_~WXipOzdpiepOPeGHi+Su`&M))S_Tz=i~0A1 zMO@y@MOa>3FLIJ8M&HIcc+TP~th|*DQBB|AivE2#|1t+lzFvgQ&#!Shb(>hyw^(*E zdm3A$xd!@V=Yq;~J3L_31ts5Ja;nS2Sk$UrX#epc)G6d)Yw%ruv-pw25lv3yX>W)< z@mX;7@+NFnE9UkJ?X{Qu&f}XDTkh6rX}p``2rIdI*b;CW=H?VaKR&#Z+$1!fEWwf^DP51hxAzmAPP{69wL^m4 z4Uu6pB$V0K$q2V}-GB`_%#GL>1OF{5=OqWGJIZQ$i0$mvrlSmfQJusVBXkJVKnjzPRHEf7I{{K z%*$dpLc-Z6p^qzBKL@rf3xR0uLOAy50Q~Z4fUP;xaP(a*40|WAbSu=^#_A#{AXAn$ zOO9QsT!&j8mVt@Fb2xupy<(;F1ZH$W0af*0fxVpyTamg1j>c4id;1u)@tgu5%P)&Q z+8Hyre1Tgp`AJkZb`pkcEyDO~cll^p!D(GL3k+YY!XqU$=F<5L9KXDWa#?qHbIJ(5 z*6qN?$wnyObBTY{_uIi^q!D197aX`80u$UWbGgovEaZs^3#pP6e4GcNEtx=0-;mb% zz2FQ?x1(LD7d$O^D=G{a3Ox^v(NeF5ck~v#3HRE-Qs)`WJvta<{Ik(Bt_pw0X5-k4 zM(l>yZ_$F|Eo}w6B)s<2KcDrO$cpVZ%jHf!uw*v+*`JpQOR> zx4BsDyd=|nF&Hc}j^e89N3dFY8d(QE;QXrmP$xEqs{ki#c~=hg!=jaS7L~ ztbupK!ug+Nd%2e62guvL<^J8%q2Brn5WADmU)OUD84`|pRg z(iDDX!bx7a^EZDhvIoWegP38Z9%e0(VJSf2bVPeSpcv*332B!*shW7_JYX={rS_|1*M{KeUv#eoa> zV9j!P@z9sVpTrm=Rg1?z>_nv*uGqf&Emsylk0O!-9L$~{S`!CM%TEXnZPLv>UcJWstY5eo`SoTnc@=nW=?!q=yUt~aqzfw?L zcQVw>Z|2=?^w`X)CiL-(8*dWLQID{znZ^yoFT3)^*Wc|#ki5i=sEVb$cN;lFxkR$v z)*v1!`2ThD9l=XEiq0j9;HhyA>R4xkVr(E~SsOstsCbG`yCZh4RPtUR8I%Y~g&U6x$sc)dtG>z4#U9o}R&LU`uw4pZ%Z;f%ag*o_U< zhMgg+Q2A57z$M5~|G7+l*{5V0Ije!wob?K~4&Q^}OKxEQd@-*!_YiGAvk(@CWf)s}ywfm*KtjI`H9l4;+)cn)ItLq2d&C%GOrF zdGTgwv)~tunx8;Zwygk#C@;D^uAG+}x)Xl64nk>R7O-LHUh1AK@O0vsvJ?jeg;$Rb_DNy#&ermm_+!PXT3G z)%ho$U$E)&alW|43bU(nVAu9`{P|fpt44a!!lt$0^4$gJrthtce3pQU$zL(#!ysNc zzaDdxoWX-G;eMaXoJ({(Z=@8Do_npBce@g)tlR=KyWP3&)gN$&nF3odd@OIPGzwg8 zblAlR3yfda0Ij1hp;S{iewnC7WmDy7x5Hw!cOqyOMTlLoCBuz=6=QA6hpAyjF%Wh&yG`_X!-H65{R0fV5Xh94>rj2zD7fK~!Og!so3E7~ zg)!ENl}q0ZCY?t;{MM32%voA1_#}VuFYV0Ok+p;2mYWLOTz8zeT)vQ9vtEq`*7xDD z+E0E^=rit~za|xn5};J3lP|YD%9lR43ESjW_+~*rX;Hg?LZH;WN_Iz zgx){rpzTUOig`(GtH_PD)MM+5dJRfJ-&ty|rK8A1J$YwN^qe8lnW06Pv z8sNlEq{efPQ`6Yeqn&ZprKhW5GhkMp|7gXjOlgX(-U^&TT zuRM&M4eiC+@taun>xEeOx(mLoSH&qd9K3qE6D9xcWfAG}WclbZOz(0P{Eh+C=iY*Y z?H53x;w`Mre+a98$cZB(wfOwdBk1{k26{{$j4z5b(N*^)KWpeH_FRA^6`a!9zolVf zd8O$r_PKDkv6{)kLQN@NcOJVO(TigQcf{Rs%dm6xHcnkF4PSoq<%g(!<=1_@%^h@0 zpy)|UKb7*BUakxtJlKLtGl^&T}{>=P>g#vlt4%5 z4P1NK8dcWK!>8^S!A5=(UTNOJq+)N1^acL4`1NJjnmU#{RJa(Nj+ley!96IJm0;Z~ z_v3@PN4SY69eJys3zc27F;{}wUpXl!6YS<<{7S5fl!0e%Mpj9oLZ8~be`1Lc+W7Kl6?J2~EMuxC% zUJ0Haa2S65JOe1T8h4yhgf%voF!Rd;u1tCzcmLjX$Y~wHmJQP6Dm4Cp?3P0i9ybeb zc}-&Kp^Xl86App&7Cn|&G=qB)_LDoi>RYEcW#o2Iiw&6Buvlq|chE@UDG)IfDYeo!6n-7%1ZDW}zbN&JTr&BfW9WDzaCM|^}!j5{S;43`zX)xoauE!~=daUC7 zX?*sd276VEuvU16OkNr>je03|=WrKyG~)|s+)9D-owCf`?kA^tR0r-vDB&B4Xs~w* z2cs|zbSnMD|Egyw_cNUOuFKG(oDGBACPU2D1#IJINB*`jYf&?m zfdcK{aBYn@q#bf#9s;L4;ino~wq`SDxzUYnY*PctgRV?%^e9~Kb_j+#3cE}>1y=H5 zA6Mo&m6_C?;>ySV;6l60_}P=?*hdvL|Hsgohf~!>VcaZ{ zIho3kkVrUtouX1HMTRB~l;&9jr9wo8%u`6ANQQ_Ecdu)x&_F7LLK?p)Ls6ti(|7(q z&wcK5_qltoz1I8w-i~~@b+8{k|F@mZ|7AtHdE6R^qo1t%0w zkeE>ma@k3Qt(-gw-8qiC^Wbbyzt_oA?MTFt^%L37Ib}5e<_tFH?0Qlh`Wt*=WT15` z!?q;614Dg5R^g)+-50kKv#Q?FUCE7byo=*?P=8jcJqPsvDnns!GVk0;cOruw~sRAgO1H7Ka+P2C=e}68N z*7j1#J9$LKWrQwqS7D936tJM@E5!aZ#SQIBAiFjkG{cj~ul=6%Q>X*Aj!(e{8CN0j z-7R{lstYpCnc>~nZSXV6fp^R1GekYV2-_VK!OmPAG%`Pv>e<44u`e8da|S_LA&_mr{^1rvaZ|Z^WWeNu0Azo*$U(&z|7Ut@#_uKx}gZ9MxP!wpz~QdQoGr z`e6`Hb?0RE{qj$^Ku3g~Q2iDq9fBZLtQgj8y#x`KGuW9H8K4_}n)ke73=)=^@?Dq6 zvV|PnAseyd$Qtac&&?S+o%4mmzfZ84Wh-UNVT3tFckLC$RN> zV<37%0xogvr!UQj+QAFi9tCbjoJQDyz4v)%4;_QKm74e?=K~esvZ!Vsasds2D|Dac zdzg|d$bMQ|0%fxX;76J&d(_mHJ8#rjg?}YXgw7|}ZN3Wc6HzuT^$UualtRaUCfK0b z3is6y)4wWWtYyhB=0A54-0^QCh~CMBH4o>~p1a3bsRM^;);C+$^MnI5&$DGoi!`gK zvx%x*6=dCqpW{Wrzd2~N>fjIc zX!vbEMkD4d=A9W_Ll3;Fhg#!Lpiz|%l2fLzf;|V|k-|Y(Nwi?~vV~|oz6u`=jNtw> zF;<@b<)vKHV5vqoHFQ+4e9OLQJ;8l_lZOW_z9%j4o%g zeBR?ilYcN^)=0NqnZ?5I7HH5a1no>ER$(v!#4<$KEyfSwAdzQPrZxktvLf!)%1nlf zIOjb&$lJ^H@UAXPgxwD~zHU-1EUz}ApH931WUI)lHV zA#HtK4Hkc0q2JAyihf)Ofs?~{i@SGY&tNHRIb{q=Qd#h-HwHGgzX9LXeEgAd9G=!C z@T5|`$WhM$*jFRK{{FL(*e>0{3TGxWE4gx_^kP1oG)#g+a=VGduCws`-y?eM%nVqJ zf+RXIh?t3K!L1v`AbTN~c*fax5Tu)@7C`YjNZWFou`m=_QUMVGs`PdM``6t)uaTn=wa%j7R&oSLj=H1y#z?`v+Pob zPU6VTflJ5oY2HRloTb3ShKbW~8q+{0ag13@Ckofh?oyncN8%!qKzP+8c8Q}eEPE%$ zUb5Q;`5y!Dc!~sjY)L!@9rz2==Lf^3lxLtESqY$tK7u4y3c+DB4_H$cb@WwM~~C`2_~BKiC0!%*2%Xb!IA*?$seRMH&a zs*VR~>*F%L@*Lr?_*sTcUd)$n+KZmfdr{3f$L!{AQ}!3f>?qzG4gG~-5Ik!pcshsU zEB*jU&*R>UqE{FnHJ{z{O^#ptoa-z3RKn*zG1lt6FMN<2BJ{^qZ1Vg`BiC(U{#6*^ zaMA`CFxO?a_k}_7!cu1cx!I+v+vFivt_+9TgxIH7%~8fv1DJ|3ntXf+2SX^?@t+rD z^=}4|3w=*5Wa8kNRjl{%>$Fw17@{mgK}LTiy3{FyNQWk>aQ*rPt6syz z+51Ufq&WNR$Q8W3IEx6VU#6)Vb8uV995%n_45mJmV|`@zf?d-n<7V3iCi^pa0SB8+ zR&9|7g?<5)*j~nq{@IO}ejI=eL!sF9fROx_MzDKx4^RAC1jn`S((l~om4^#Ll(ZxI zpIHk!`Y*}sCwWjkr3Jn(>tnj2rhviyo2cuu19-`)SX=WQUp%-$?H&=nzW7AQo^AyX z1eY=U#3o>^@Ot<+wiF-N)IpVC8X1@*fj0sd@qcjI!2f~-`9miO{HY~uvQ#42j=du8 zORvDaaslKS-i56_;$Zo;55}{vNg7NIjS_gF9uE7ik-g%_}GP=xusISUI_ zOhH9MmCm|UOH@Ui&}qUNh!{$uIV9ApoM&HDV=Ig{C~yJh(^E*Y?n-2du}h6vln&4u)~eF5zs!qoQj1I`Crh?7(z zz;LEL|L$W7MiIB^^~OgKI&Cj~C3FY;VH^LtW;t9=_u;PuA^7wq6F1h}re1|II7K%O zR%Gk&#qkSdmv^C*=m*feq7Lh%wb*p*#XE`{*dK9o`Nf?IaJXbT{r&tSNx8ik+ZXt= zL6=4_ezFRiH*ABm_uYiUu{-c?pc&iPuflH_SjfJ27su1L`Or5m2SbI+phln5J>3yt zU%r^Ymu1D-9_~2R#Osaep4(&Vuv!==LTYUWK^xD^0UKxPB(?$7e zM*!MR2=Zlbq=MPpWOQvCAX?v=aExC-g2LM|t8F^OHJ9*a9t`Jt-DY_F&197D|BQug zkI`n%DfGXSPivO8`ip}+3*VOjfg@?U)s^YyMbsMg$q-keG7+DmREYF{Lo_k$c!8W;-vQR#{G)#OG&r-{p}{|%Y84jXs_ibI`zw`J?AQ!;YPZP6Yku%;Fqf)Q zCvFz95Cq2;vHAkb;JIEklvgjq1g&)P&`6(7jB21??iT~!PZ@eY`;f?=nb7pnkEB%! zvbM(2@IgU<4Kif02wveRkP1P7iP; z3S77*D|0hL#`LEYpyh!6^a`%-+c+IWbq{W=6A1?6Dc-v<-z zC(*9iGsxGAs@y#AN@?d)4R%!HHpitgVV_@41DA-&Y(|z9WKLgS>hJLtWN&zYvf>c@ zcmgc{`aJTuvK>}TmxkiO+l)t)7*TxlkL;D$N7^{7CtQ?c>fRD%ZBq5& ze4HWcNhh+|7Vd2C-YyuG!G2B|*S{mwY%zh0K0qKic?8&6{@KgOYguIP~FR|O$T}BH4K5bwNPN;#5 zqXNsn;RtHhMr>ZdB2e6C!iv|fV-8>9*2`lu+O=E2Mw=i;Dmoli9ML3hO$(tQu8c_4 zH}a7IKF+mq@*_x2R_^X_7>{QL#B|DMSjJIdhbum(G}!w z`c8gktif5<>1flxrj$2d1)bj8GF=-qLEhO64W*wz{Dumus%pV@76a?rqr={E9*3(> zB*Cuu501ZFgu-X;!;N@h*dwFC=02Oo=E{a*%+GEp7T=7@-%A*cXLoz z7T9H;gr4T65Z&oT_bf3a@`4YcAx05S$D7bD&J#aJNsVTYmBUg&uDm>W13sIY;@`*K zt5xjkq)cj&IGOlS5DALd6YW?0EvS1_nTFVk~rW5gX3w9M@1-8f5(cklD|c zVEMh?(!0-WXn&^y)!lU;>Z{6Ox&1uIq&6_T{v|a&R!fg8wIrovBKoBj5u2UO7$z~3 zz^+gTaNyDEwVdDHr5?%ec>Xr-R3Rti^3`L*F=ji z@LmPRH$}jG`zfelSi#htcm|ILf8pW*CHB`d2JST6gD$sR@@RV=j7Q4gawSpX)9DX0 zZe1n!ml%Lj##itv{z!rk|AYC*?!soZpXAJ`b1<)}8WP_X6mNI^4SQccrse<1vX}h_ z$*naT*yXP8$=Do45Ewg4jdge6``l?XVOBB$Msn~j=otxnyM$(H z+~#IWT`}{HAIO+l>wan zVhT%NSAzDRJ22ZzleN-u1#?M3)}i_%+&y}Ue9-&|zh>vd(8kB4;*AoUx?~$oJRS$B zPLZ^ho6GR#++y5wP1v@phj;?Y6h3CVFh0U(;bOxM*lfHIQg{7kYWn2ag9Q%Qa?_Yy zEV&hIW8~SmqSuh2H`wjgU*^6;NWx> zHt@K8`|AT6v6Cc!`1%TTr12G=?5gHuyvSb;qRXTG;) zB^@V{guM*wy6hUy?#663ug-{W)=LD3Yf`L!=6Yh!^+$KVegbP8-{N*tQ}*a~MgAH4 zQK)vaAm8;a!N`~vtHj;!IbROYN@$%PL1`tuy*oyn#nXCujf(!n^+^&nPCr{k;MI8xUb&KzCuM@tT5!9GPT z_+?l{a`hWvofxMheLj)hJs^XNmDE{t3r>4?svMr*JOL(iBw0hLS}5lFR-Su)@XG3= z!Ao-?E|1iJ4HqeI%EcCvFXxB`DN4`~|Ara~D6rGUVj)`3lsz{0G;MiP1KLh0*d%@# z*8B*7r^^3Ggvv5#30{tiYbxlgRdc}PmlQ7kq{JSQs=@LQ7dFR7oGzXB1vaz=k#|k= z;d;L;9&{gv)kS(RwayxH2Exf^UsafIR$O}ZO(EFb&jOpiIFfM66f91ErvDXf1C2&8 ze4L^|I)#FvuKF&18h-!x9k3cqZkm|lfFu41QEXj1G5g)7R{^SZW zzDXAkZB&DyPAN*G?l6aa258@hrQ9rL0eJ1a2e4@$wrdZ-V3G>oWy(#^ga$grNP*f+ zUV{@?6p>ZGrTOIJ0sNd!isJ~RB{ccZnir74Gr=n_|Z%>x?BWr z4hX}CJ=$1czm3?Cm~1kab)B(y^CL@b-)ru6?))!Y;{U^;=Jl zM|PildpOF()kly4TLox*`VPC;PzaN>ME7_Hm|T+p#!_)0;AP5FT;&2s+r?30LpAvP zk-{Q@tML2GH|*ND01n-6z{wZ8p*1{)uAERzaxeFzxwH{>a2}<=ON$}nVK-^q8w$dA zKT@s5I?(bx86#anz;by%Z}PiLIOcy2{o{o=U;lsjt%J`T!@H=ODZ-u&48UFcM@abT zEm+$!3Ehkqpt|&FIC{9BcFr1u9g;ct&*K8*F1(0cNuQZ1b#Zuz({5Jmn~7-};jrhkk3mGG^Db zaNBkTh#S63uTI?!-m7n7&9!Z&&2l@qyY@3;@-c#IpPhmnVFUE7oJ&}POHgQZ4o)6Q z;_Cg^2$Hhcz@J2vpWP!yEo*`P ziKPXv`(QhpM7x(zNZAsA?ejR+>2bi8?aj1DRRFG9)ls3{&2*<NC3qyz?=$#IEhRB_jWE-C0BvG|K`m8} z-#d8$Z`~EnFVZMU7G<}h!TKd2eM}T9lt!u7cr@4hp99Jg{6~Q@p4ryQ_6XH#b0h_ zrlhH}qwzw}A^QyMW0qrW%xaLmoR0$2H^UBPZQ7}Po0*+58NcmXO{e+jbGnTLQenQ9 ze9TURRU#));&&;C4hitfs{FwH(o0%f9|2LVFUf-A)zI5lMZ?a=!p0+h7<@>Oocx)D zLP@)DNOC{kbWlWB*HXq$s*o5cRl?*i(=jdF41Zgxg7nUvC{ob_Mo0Bw_J8MK?K5BA zr;(K)5c--dJ8Fo{*@>jN?>yG`1k$Co)`SV^AU~hSkrP#(gunI|SO_FOwZ(QRLg@{mhJ{Tw*7z$56Wh_^y$wTz?m1-)J{*T#7i|Dfc7t|>z9+kXYZ_!RZL zo0-2elX;)`rHqovdK#R68dqBL$se0p*v-`d@0aU?^k@=J9CD|%d0kxA?);KD9&YsI zvWZZUF^r*t1RQ%sN-YJ#+xU;T@W>j6Em93UIXV(mv z>A#CQ3jUx<2ZXRzF%^%>MRQy_A*g=0oV?Uk#Oldk;bD~m->9vWWYq}pADEoRge}ie zx$+rJG7rO&95d9c+(m!Xej!n68qBWPY+g5!!Yx~J@jW}4w{_-iUhr5aUHVrKVi*3v z8N-gaxS$3*Ot0d~4u8F*1786$koBR!mqD{8Ya#j*>tst@Cp?8mtH z@JzBd;%}*g@f6->2&wF%@zNHto@deE{rrKOnvl z)f^eV^MS2+xZnW}?e4%}$ugWdFokTD&Y|b4*1_JC$@JUX8jSFxcs>0is>#*T8ulJO zyB$p3Jy+n*$+z&6L>F(-^fZ*a!&3H9Cf2k(pl7qC`GxB`>CdNGXfx1;>)o$V_Zuw# z(Svjxd*w#N>=Mzdw-kcdX{dk66o36rqR;By(E@h`ymZ=tB#lI1O+o}t`4x$;3-8l8 zv)$2gG=P?`DWL{7Zg_H|645@EOV*0GQTFyEvg&Lux>U;GLlFUf#7!@%*rmXCS$&rr znpun21!m#K1+&nH)7wqX6~R`8RQhP@Ir8*uH?9A^5?2VD;hwFt`5u`zSl@L3*BXuR ziWZ1Mo7Vx}k=5?#FsX>TmxLg%tb-RZZ4YXd6)^Ab57JTX6<~1A9$lInc}ueWxSY0g z%$eep($TLbFm_dv|J~99bIauT7TM*ra{4*Q((Pqz-p&SF;j$9_=le0qWF08XSWkV= z?PRpAmZPj+B<|RsO|4aovD@l1@%%a)cQ~cu*6YI9H2fcyt^Y@!?P^7@w>h-Tx&t>> z+(ZMHt#qQtI4wPXj=VdY%*(hQjrKj9NB4Uqx~ffq<*Ytdh$b`Lvu-iRO#;#4?kIOQ zN}|(cFFZ?osg}MWPJ7fu$9iTXFZKvAt%|}&A2J#5_pxB}T@vFQp20?(0Q0L9PW>W$lZnW>zEjd1oBYVu%l}&~}O`nO%RR$CW<#CT+4taU|KU(PR z1jo|)$cKX!ByZhSps}and2=LPcmEuiomxWm?DxR2914b4L!sv18TiQQkNzyIrVRlI zx_8ETNt&9FmHda)b_S4>BiWqJ*aNObi$Y#+ExB>H2wop3Co{(b;qr48ux-yIu7VLz z!|4?sSG@s4k^!BW3B0I#X}m+#BAC~2Oq2_Rs87mC;vMjS^L7Q0kM)Z&Rx=G0`I|s+ zpaj;$?}2+Ul`z3T9t^ZxA#eUyve+!0@V+~k1|Pfv`c^q)ior(?wlxKoxp=|TIqEpk zn9E>Dil)22ZGcBVgu%yCoW(n;aQ1Z&WO(|M+>epiZk&4YT!Zt zx)L3sQTp!cKO!OMOP@3@VVlhE!Sz*K-sF`_@Fisq3~x6ilcsSQMA8Oyy-EqV%O2sC zkIyCL=Upk?z=PewC3K+{VXw%Xr8kR4Aw)~Z7z4K*I%T~rRc6GU0#&Fq_VvoPQJT?%V|n zel6af`vTVe_ns*$`~q=K&E&?pbg(FyhM~tspf~dp);>80wKoL#ncE$qYRrdjZPZ|E zgbAd*ox)CE7>d$oFM_!9eKeM;0<~#RXmwmXD69CHSrtDABQ}KG(p6?3D;-RS7^VJWqvfdI-c-`W)$>(#K zNkMpEy(62??UNM`w?Jm@TKtsO&*@23@j{Y1YsHu370G(S0zW=Irz_1mXpW-i8qTw4 zAjS`yB?N_B-9CfkJANMzhD?bha`)5&dU$Rukg(|1T0grsttmOa*97 z=)eW5A99+Sr}+4M1Sz@Uf*TyNVC$h}Waooduyo`R6vGNv}dX3YQ z%GTidKh+@cO^JUzT!39}a1s+*=CN`nFEQTT8$MT2M6Idqx-m}Kq>$J~iONz{hBD3W^=!lXO!fIuPaQ8MTG+)IJP$XpyYhz0|V zC47$y|G}{{4{>y}1na1#j*-#lpks!bE7w z=)v&~yponcf2yCT4>b23Dhi$fc5NfBJERY9#$)K0JGJ0?_%lv!Jq*0lJ$NiMk>qvG zK#TC#B>Gx9#+Pyaf}mDB88;Qw=XKMH(s9O8sN8IMha8sVj-#XGWqd<4`1exp@Fu3; z#*xIma8po-|6;o(h)evyUTs~_b#21v7p*jl>oaHj9>>6I)?`t61CjeLneH1-;Phgf zF!)gbX;iMpVg6D`(a6S|>}w#Md6;V(NHjmEqQ3$kH$hm%tP+}wfu`H{CzLN zamm}ss?1J|>K`QhYd`S!JX;(H@4+uo7xC2$C4Pd2HuX3ak5ja}nemg#c&xmN#1W(2MTtv zxMcegvb!)GHMg1L)RIK>5G*gAv1lRV^Zq+2zB`?$9E=3f?T@hH(h^A0=HYOoE{d+n zM!SL`nyd8^)%B`rN}3{n&225rNHgZo+2sZEIz2Eeo(F%naJfs?qRhm~O&I9g&YM23 zn!b~b;Z5mTh7)Zb)4F?OnDx(%c3Qkbcc~z%aQp&&>rz6K^h)rU=u`55ugaIauoTD@U6jPyd^OYZ8l4GhYs~ zjAp>k^HKP_T7)-i#v@V@_LhENJgBVE5Yh*{e3 z&c4O0UCo&2I>_RYV1mIr&C&df58gU_lMd!blV#%fc~1jQz){Cc`gDdUVY9?BOa2SZ zSh$0mH4t37vW+f<_q3z+GU}``MH|s<+NV1k-#Y8TxXEtbnOJkiMff>Aa%LV4oP3Ag zoVp#=d%MV};eEVXx)Y@9o6V|g)FF7)Ei!jdkGCx*48?2fP<*hD9+!{DySI$MJ|zO$ zx1>|K%~Oyr*pJC^-S{%+B$pNQgVqh-h2E|_{FFDBF7%-&eqstJkIaCz^^0NRcPXC1 zvKdGxbW!UVS*THMC8n*7WNET4`J>~B&i-E1aAP1n^!EvQd@%%ic3vTM>Rn`Gtpxv& zP#^Q>S^}=tOM=$XyI^y1h-Cf=1fRBaJn;Pzx=fA7yc4VVwhvyDk^nXSsoVBY)&7fa zb2`NvFP{V#-NRt{Wi`kT5@#h^hD)Dm9AwUn{vk6B578lI%KLX+gUtMSj>>$TfY0@& z!K*>vF(iOwf zlDs4$ZdD2!l@uZ9bQTrTYUYg}G{M`N^`y-E0`&aKh3ck6@~c%2(_Mx6){#wUy0V6f zrwuSgOJ&*imN$$>6@^uQWU-7N2A8$m$&4$(VBXJZK=YpS{5Q9fl}|$H{C}JeP^TWg zw=bX{Vwxef_dLmWb;U`MHH@jq1!U*%W>){0N&?LGGt&+%fW--~iTU_-5Lxh>)TW5B zw@>^a2Mzk*^5bUmZ-XE`xX+1qeBwR4qZ>n7UY#H|XL+RPeKG8JaY2T+kB0Ie(kBl> zDHzM(zI}<1-CBVnTo&V3sSM`H>khEgk_8D)-(6>Kj;U!0RA8+OR?5VH%wI0^{$V1h z21etRv@$B9aUVPD!eK$vb=+~Q3)I8rlO;PQ^9CJP!(pphvo!%ycr(!ghKvI7P`ns< zHNgSXztlnFCQmfHF^%1+xs>Mo7JW%SZDV6NQP;{Oz$MG7Y_=JK$kfxcb^+YU@; z3)g1j%hXto>rjsu`)4sW!6JC5F$dNq>!HckEHHXujfTHm;r?M&wD5feB^uS#@z)kO zG-E#P(_2g59IT;YY%)Yxmoh;cE8(QUOPb%G4`F?Be3OvntjE(Zg#Q1)_mUXu-ma&Q z|8{Zt42xj@-f>#}a~hj5+Y`D)XS0vp&X}NK0&(7c27fIr#Tn*RxbHwJJpPi3zZf<4 z&!Ro_QFRggSI~^(^C|cJwfGtz4nSde10Co}Aq&dqgIJs*BrCe&U40=oMjloZU^2Sn~E>WZla%OjM9@m(W~?E6E@B4VKCwIqM+y*deN@4-VV;E%gKlEschi&qll-5q1c{d zMIDu=+ARuP-urdtzI1TOz#F4dyJZW|q)QA#_VQ79%N2NHSccUn=EHxI*U9pOf~bG+ z7CGqbNm_@(k)3##qz}(Qm3u+N{p2&=;QLnizRrTK_SgwUpIu7#TEE3fcP!wQkTtG9 z;YDOr&O&S9E!?!^4RNWeq(QHqlPj0MkiWg>xcY4ZC~A;f)F0MUthidX4UoRG%V-U*Goe^SD1Shz7d$)t>)jcc(_D&XVV_9p#a4Vh zVH3X8)FAxuDqi3>G0eL<1%$87MCoKLjQOnz=MQF*fj$c&9sU|ja{O?c_6#^#DTif6 z%fS9XCNbz)Lv9qL!Oy%K^wKIMYf?{>`QrH~)+9immxfaZ$0fY4`*=K>>Ps?27-m~x zIbqHnfm+iA#I`jKr$#S>Z`xA)-=?8ZZ{mX9W&7yrTw#pdI{|Nw|7YggugB%|Si|dw zhryCp!HZknK+gAgp+`7{fb11q&uJ2rs9Xohr-g(IKZVhxR>(3lz|JYx$d=7}FzwdBtf`JqsbG<2VrY&(LkT3+$u#R9@Il~pxAHM8m46XCCH^swEfi{_~NJ!vtFbVwcpt=GCqMkWp+ZJ zV+ZvU6@p9qhsoG}GrE^jh{$dweQw?Gu zH%qs|_fMkGJtvT{RjGt4qYNFsrwF?DwaJ*|F6Kv!8~Aq%z!WVVuzTePlP$_I#r`D7 zpP7qQ>BS_~W{|8=zXr8hKj@BM2%Dc~Qk|_5@V?{{RqD?o3s(%#PYE5&vKwBc(r`Ki zyu3*aot}bZD90WV_5tDg{n#{?%xt|>S(@;fyTkXZ@~nDVpmCNIUgPh_|NdISJJ&3t zH=&V~aam@Po7Uq^`EYu0y&le1cZP1qBzoLj0hX_{q&^v(A1LP=C8YxFsN{d5N` z>ZM+r!bp3l5mNICuo(Hp^CjZ@XI z>xu|Cy>TLY|Jw+qzeG5F=?SXl{)~ET4~CUnqi}cfNA7(3%H)6A3wK&v$jRrwm=@Q~ z$jbaCJhOE);ldo)Aw57uw3d*Oj1`Q~T5Ir@`pMisS5M>`2N=_)VB9-v5()}wqrUk< zJpc0@^P9`%aC5POonw7m9TY$=E!zSw+fryw-Z5x>t4I{LT_IA?!|2qAqK1PuvwyWB zUtwnqz4tQ|8@ykb8SOcUk+*Xgl}I_hti}VnYtt3lG+hs+X3vM@v$jOy$R}#rl2>}d zHv`R84ADBXm}CB~0Jmq(FydwmjV%?B_Q;o}Pd$riC$7P#gtz!@HXovHPC(Da0=#yE z?L>D^DlzL(L+2T1nB|+UT|&0Ofgvl6nRGZ!r8JY=Id622M5N~Ytvd6}?& zAQ%c-ikS7KiU_Ctu_WaQ-tX>Wyc-@wIp|89*_3@CcRySV_Y=-y{ieOina_I=W_i6i3B?P#cf)+|GnAVh)PmlyBlYg$x`vgVC1Lm zM*DvbsIL`^(idjnjMY=|-V{STl5`e#oa&(gZdN#@^*wVWRT)zEpF^umF}Pm-1eLu7 zaJb-K>F&MpW*%o2Qucx(v@h_*FtK^q^;+o?y}kl`>&z$Htuu73^3u!D!k0}qhi7oOyAm%rz+2s zW=O8Uo9BTE7H8c(-HU!g*+Z`xXueh0@fPYrI=ZedJy5HryGCBsJqTK2nWC zg=O(5k-~W~1&XnIkqOx>iaX3pD4v%${RRi8c_R%bQdf$1Rb$5l?=(Gl0<*4OYJdQDFxIj~~UN6QhOv<0+_-z8{ZHTS}s4_R~{+dekCfGKPN@ z;Xk>zm&*Ey^PBtoiQpqjXMYwbU7#mIHrP5)p7Kgu9rB&*?+!tWVohqZqMW`?KTBO@ zInMef74TjcjE9tFkxfdjjN}JZyydeJUZ`%tMNbk?h`$q)wtC~I>O>k(nwiUsys4f_ zHJ#DeZkiP^jm&S}2*-R9h~4H%@Y$h^{yZAMG#k61Tl@`tHYGSd z;(*;dCV`@CAYJn+h^O;R2kA#o)E{vrqKDk@O!Gogc0YjrtvG{bmfjc{_>rzOyMV(z zg7{a+7~lLmgT`JL(IC_V!AKRg<>cu;fmP5j`ytsL@QO?nmZD-xsd$2WM>jty!kLyu zG+WIY%Q!EH{a$yR!J)|wX6oQqX*DeKPa?SnOR>;&3f+{V0Q1&`;V#$pFzh!AYfuRJ zG853-Z~|r=_ds>NBhL8{kMZ^_>cy9%jN}WNqnU#p_l6jp`hs{bKL)}M2O(KNiTU~Z z1YNT6c0IGhdL^I~zgwFi2b@Q{x(JM)bepD3nS&!8 zntYSE7OZRVd%5dG*zh@eaR-?uX} z2rl1zjJl_Wl)l~{%_|Cy;(71ChmD(TFf%(7Z-+?W%jgKYk>A3wy_M9a^EcgE*-uUz z$57L%k7P7Lj#SQ&qdJmV_;*N@{^u5m`O$ajeHkIMP|a{uJpPOB%-6xZZ<1tJ?luyi z6#@pwKhsB}wRjT$IiW`pyQPbE4aK1nU#*r%lL`>A4NHs{)b~Rzkg3GJfG1( zxwUlu;~F%TIEfC$Q}N04c_d}BDP5Wti&97RaGWoJn;k|Nivbt#5G*Fcim6n4_S@29 zTH)BO+DsofKchOS3(@tI2Ao?w5!t!g^sImpHQberX15aQMFmdFv*$iF^O6H6S0(Vi ze-=7wE6Iw@8Zgu@gVX7D%F|rHJzqsNd~cW9lvdMcN6ff2ScBy81Nv1rkv@t~qDSIV z=;M`~Ms21O?ON5u^eSH_VfPl&2L;vix~@No`!z)Ej4Fv=hZromcMo5Aa10&Se6)J^ zuQW-am1fUfi2*j#F_JeQ(!>ME+~pUDyOJ;O)iinL$*~lKj)Bs9?qcLv*I!;sRRFAB z6-&nfv$?6Y4w+G5}X3lXgBVh|BtyY7dAIj+!%W<+o^c39R zaS1BVujSoR-VN7n?_pN00gYR@0vi{sr&C5;=(mZ1U@I0nugE-H|QFLpnCx1T%(4&WL!S0Y_oE}9VcdVa*=`DIV_Sy*l zeDnjW=esfJ<5l?U8%)JGFZ5y224*QY+nc|xp2+%l^B#VQWenfAkqy@-GxPpk0873; z@MWyYgy*Udd_$fnh!GO>Z6^t8O2G4Kwe&~zPn>Jz0IBb_@$&?2f_*8Z%~XQ9F|>o; zlG_R&&!5AssnS$Sa1#osy`Xie-e^I8(9dnN@ROVwx#9bb{Q6Kya_sXMfxXx0{3jy# z{fQ71@b=-&Ct33J^=RpQ6)BNt4M0DFzjyLj>3&OoEF@csB?E@ zK_^GJHzyJ9F$tuoc>+$>m1S=42*Y751`o?F!0sguXydyE(=W*LqJz$n7)w!b`a6}V z+*aUy-{6FK-!Ic${yxmuq8!pO$qa0?_`EA#8T4~UG~M`Q5$}gwf!Q~CEhuYfqMVV5 z+F1#p!EALD5B@~MKD=e5TW!rs1qXP=X|b?i>`67YDY0ktI;vY%tBw@4-4rG?D{>X$} zw}ZtCQ;2}rSu*EAEIPhj0iB1Vu_?wfc@6xyy&e$;MtK)j;q%4R$(JA@yj-<)aXhq#l3K@t2oTt`~p91jw9mxR#2~n zLgY@80&K3oNs3H)bY5QqQ(WIe-S(UEGJojew9Py)&Nzyntpj0j*+z_uO6NsSUWwxM z#;`tup>jKGptUUx+pp=si^L?%w_k~c&sT%x%4y{Fd?mQ0+yrSIU+A@q*0ABR3`**U z(S}k#6zi!WBLf^VFUlT_v!ke1UlT8ModAw3_(k0s-rz_q=OO6Kp_#&iggk9xmM!Ia z15TV5;S`174W#7CO4(RivWD68e8^R#);xBepS7ZHWJzY6rBa3^DV z%pc#{M8l9)3;my?^YH8Gf8Tf|Z55@EhNkv-pZi5xR4PPCg$AKQh-8cQ9@>eDtU^P* z&;24&QbvO^5}|38Ph_v?cfP-Wz~hnkIj?iQ?)$o)*C(qxWSjL@SbCB33s0AZues;x zWTz$IDCo!kbp9Q-%~v67J=N&p2U6sgcr?POF5!{yY)-cpT-6kXi2KQ0?#_-z-)zUh zNJlt$IUaWHEg`RGHK23GLi$-L0C+`ev|7U(BvM0RkIOf<`PN&!GK97qt@LXt*GKzXed$!}DF zn9vnae0vMNnPtsXxCax*27A`e$AZ-MtJ9S&$H3^vT;>;-(cbaOg?ztf!qd1uh2)7$ z=L^g(gSqP!FyX&zaBEzjEL~H|=kHlGO}G9rgClf1n62FwoK zg^{{4W`_Dt)bF23+SA>5mF7C&u)>h!7M;S+(W&I6tbFy$`3Kk`?-T60*Ms!Wj|gg- zo{iF}j?}PCnApwof$N&fF>E>)g6{0ZMOMebW$+j#-oI;>F-M+1zPt?^&kO*$c^d5d zUVyG^CwWw$O`kvJGL+^5)MBy|82MR3_U5ZN<)S%UoE6UVqVCk;_A_>Y=o9)4gYdji z8yZULl2aR&L4nj3n0C>F{>|P>)4Xq@+&zx7d~FBF~Cfa@)IZmCBr?E>kX$!hfI@^W6$^4+wpyN_SB zY9r0tXif9BiP3A7NvIb0!!-A-3M@+3q@SzC(P9&yPHYdvy&U^&|5y#~nz@)puT7^j zRtV5pk7iRJlPrj93<8}ld6@mr5aM6_qY~^m-rHw%dDTmOy5Qpo-Cbo*C891-w;j5) zBYYb@XPd!!jXz+KL^k+=gyA*0$D1Za=qv)8wB>nqx4K)cK#3l!2YJXOc zoSnfH#JC9R`o(*)ssgX%)lZqunYx2P8xga>~N=w=H( zsb18FCrzEHLfI}%l}n{B&!jR1^Q9<1T!32bGA8Agj#Q&|C25>*O=mSZQ4N7|+JB^p zI*H$-)yr1Uf14UOuKp$5uES-JFY~Bvelo2-_YN}-SK!1`mH1jgj|LQ3K~t{|J*LI5 zVFlT!(^-!4XDozBteBW|h%VnL!Lq+J%H&=l@-3{$?*CX$x6)E|mkBcX+ zq}lR+c+1<4&;`jF?1np5RA7?=$?%Lq#kbetRPSTZ9>0ydn&Kg-{5GcDTt;^f?+5G0 zbEu2!G1%VZ1b&{W?2eyS=Oo&2y;W)(2qo^b% zOWj@#pzN?1J@jo5BY(kU82;QMP^0H(ZilT zpktm*_uegJHq^)AGm)1VxGoBtxxHp^Y&f%M-*WOV+=bt&kU;KFtU@E#EE3TF1Wm_9 zN#L!GG~QAOwH`#$Gd3^b$@&doentzTQ-g`%GhyDnLNkc&*26{vCXmtk8q9sX5NuZe2d?tm+%|F+y4hW)!damd-A=MbC2n-IYCF03FcQDjOQF&k zInk)lue+;K%Ay<1>k35HaVpKxq9aPdgk#>Vfz-TIOKO4cYat-eAjNG@+bPC@k1DsrEE=x*FJ~$p^fBtqZ}@fNh33rrx9aY4+#6a z4lDg+$jb-`n(|$k*Q;`cOlnZ0u4<3@Q=~31ISSP@e`g+?EFHr$5yoWYdMWCDaU#(Y z?Zu&_ZJ@D5m*z)=laH%3X<8l-AMKMo#h(MP)W8X4zsHl(m^^j~#zWqa2if$e4r`zF zFs^hFR{1H?8G-lspNf_7>_7qk_i9gmir+_c)AT2g6Ok3$&uPOqHN3ya&tR`!5Y&!_ z($uVGSR(|iLRAd=BhZkr{et-6&_a5(Pm3HcETMm&aeD-h4pg!%#C*+zTy+j1SIHk} z%aQ`)!1*Mgi2Dw&e9FkiEFp@2mog@`(cC*%f%5x>=^7HkCSUr@pJ-x9G79CWC0hcK zW9hKUXBdaMUF5L%B`m+!k8^beNZ#TDP%p_n%ggp-Wt$4w>!wNXj`~2+*j3hJK0`iV z?8ME_qVZ(10G;=`9bC4EQRkXEGR^Te%Geo!vR)#r|E13~SW8eTGar&W_!?6VnsWKT zOE8%v!v+~c#%^&mYV~y>Pfda*=l);^lRiVh9w(Z_n{Vc#6GIKGc{uh@k|gGyf=jJ> z;Ix{%yU*-IMtKrBKUql7{|b%*s81X+bS`|GWeaDp$kMye1G%O=LnpA7xsuuAt|8lt8oI1@oddl2=ti zPmDHt92b!7ij{6WaL!T_N@*zZ0*}WHw$XzY96RI<)os7rw0AMsRvo14hH1ST>zcjz1KkkCb%C#Vm1trT0rS zFskc-SZ6&j$h{W29CqEom1I-3oRsbUCEMWUFtB;fJmG+ruRkKz@STvKK}C> z_P)?187YI+Ydhu>rm&MKJMs@L;x-VIf4|w4)&D`R`!SMUYe>WA_CtLkmkSYILNz^F z;KI>GZ0`kUvP1S7hWaZ8R!~9cl+EoY|?%T2NlPci9PpRCsT>%h;`BN0!W!r7wjuh)7&D+&z5@OSb;U_}Gfkb2XOupi7ZX zT*tEE5oLJ#u^PO;a~S-8∓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

      vT^o?)xzAb|Lo&bA3boR%(swsx?c=Ud^5FHIefL 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 literal 0 HcmV?d00001 From 911816c282896d11a3e38ca0e5e0bc69ffe69525 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 2 Jan 2020 16:43:32 +0900 Subject: [PATCH 0674/1829] Add archive test resources --- .../Archives/241526 Soleily - Renatus.osz | Bin 0 -> 6095156 bytes .../241526 Soleily - Renatus_virtual.osz | Bin 0 -> 445694 bytes osu.Game.Tests/Resources/TestResources.cs | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 osu.Game.Tests/Resources/Archives/241526 Soleily - Renatus.osz create mode 100644 osu.Game.Tests/Resources/Archives/241526 Soleily - Renatus_virtual.osz diff --git a/osu.Game.Tests/Resources/Archives/241526 Soleily - Renatus.osz b/osu.Game.Tests/Resources/Archives/241526 Soleily - Renatus.osz new file mode 100644 index 0000000000000000000000000000000000000000..987dbea6db79b60c5dd56f23b31ef4aa8832b5a5 GIT binary patch literal 6095156 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�TP_zxuL=2Rit^eSioQ~s%yQV} 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 z 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 } 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

      E7OCSOx*=NXc@wmk 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%0D&6>xGHv0;R22mLbP`jJ z@DEe>S1GYQW1|p$y0ekG@Nb^0!D4U4=;dwX=e{LJGJ!?mM&&j-|H^xJ6LjZW$zOu* z+=X;`wxUK`ZNnIdgg%ErZ~id#x<(y8_62K?cu$sgEvO${y(WL1v8pW$dupF8VCbn7p6C&O+eu(i!FlcHr4-h`B!)sKp+l)EI#PE>CPP`%dENs|RI?@r z&I%$p>*&yOac2Jo8aS#NXj|K=(z1=u?tnjr4t`2UTTuDVS}up4bi66C-$0dhA(A6< zL~PZ`#65rvqNlepr+*ycFKOVY&qsFci!z*%a&+isNDQJ z`@g1OY@9roZEZZwZyCwk2wP51a#)5(GH7TR(&2F$o%a*i7!APQl2$)qbxQ!H9^llJ zN4`6uP5N-+VwB=k(u5E_199mTA&^4tG14zx4L#Jqc2pE_I=vuoS@|n~HZl}XCxK=>?Ug>UAHe~7O3t23>jg==H0jVKVX z3n_`0(i2yu21+TqN^*elVffeFd3|d4F6gKTGAAflI^t|vz)%S3n}+q6CM>oUi?G_J&%qHpIU3X(JYqSmuE^V$KoJKV zh%=vS&rVjjEFAM+<5_XJ!BSg(pNaDMHs}=)|GXYetZ83b^8vFPydN{6lp~VJwl`#lk^Y_Ze&Yn3j)qYhn>8$wkp!N$&l1e$>QhE zjV8d=OaN9RxK6tRWPh%7{+=sPxy;h;aBf&i^DOR!VKeIAWN(S6ET1fN(s>S+Jw^*s zc|?err0UFfA}Zyp`Km$mE!me}k1!IaWB3l!=NATMCqpMVTM&W(XsuaGOqF+HRv@EA4`p!v%|nDSYJB$EkW;($2N6S>onhWLw6MX;_=PWr_=;w`&hO)|kj9f^Xqh@UHVtubO$lvQpt0FxQ=d9 zsEn*G$Fumbp#uO|om!MnVc2d!#4V~$Bd@)HM{OmU&{yku9Qp1&AB;nln|pBs!6VS9 zm~%Vwks+9yrK17cnh`>gAvDTalAW^Sk!Y$S%$`JCxkg!}+>W@ij9|OVwS|z3(&8)K zPb!8yq-GVGi|)wF2soujp1_GNYoyMnD(y5HrfJt{B3?O8sCU+!=485n46sRsPrUU# z_pC~gVR^r1ua_w(ALdJDm?OTM^)ic0nMeTunx8JJqV_b5>vlyOhyxAHOD$RLGP8{( zXcQ*IVzPU=)wX`r)4K|T!!r5AV;w&lWM+f?o>!2RtDp>#l`!R$Rc6aLUV({5$?^>% zRiQ8N`Zf6j#;GGO*UGQfsT&a~314{Uj4fT&MZA00ybC`7!YKi^X^N?{=Sy``5{x4Z z2G5qq->qg{C^|8D-2Lm?Jz6SSDSkYr+8F#aO+@>123c=qK{Arz3lBxTo7)|9@)lUh z`&qM+p9&){Bi5HTp?8cf*h(e>t+vugOAeim!?e`WRVt>1=Z{rNe>J0DI2`3lncpE; zqfFnIT-$BIj8&!Fdep9azYXY=t z0s9V~%Yh;S#4O5BJeuZ1FP3bv@k3w=c%;y$>4_nn-t%mU5+yTl8C=vI2i7=Ya+nNS zyu63%W!mCw&$-q=nDL8nWmzBBimJZ9z7%>GYhd*e5D7Ctn9ftpx|q+b<6iRnK)L_d9){51?F3Qozr+&SE@WdSjQ zdX|U$2qh@1S(KvXJ%>c+zf!!3+`Oh`?IFwyRfOw%ua=(u@M#G5;0mz29VSrK{_444 z!q_L8<(!maSz?N7Vuv@dAuZdr_d13Dp;l~vU{maHcX02X58Ix#D;|JtD{9oG=6@fi z+QDbY`;|BvHFVMUU!FTf?^uI(X;n?4%Tz-=Z^^|#Ypk!D**NW0x`KtHs0-os}JY@O2 zn=XC#wa-@F!r`W`XqsxZcLnUoAtEvwT|JC#Oa4{w5C`BzBVtBv=of&svShoP=@F+u z%~`eQWO_XkZ!oKIg%j;$%8_-o(cHNgbNTX@guZ;`?cJza9Xmo3{T&$fDzk2CIMb>Y zq~;J@F0qOJ2yrLag`oWiv$)Fa)Z1h7qtb8Nw@eWEg0h?q6K%T5cDq)m?D zMbXCF5w_RZ(t14U_<&xehV)H8yanua$G3pO1FR7#U#NU26@#5~vM{3}~j==!Cm zG1p3xuwfsEu6yn;ZwWKiDi`0RR9zqH=x)-YE&U zcW$pMccfubaUl9*IpfgH?Zmya1udQovXcA1=%eJ=ek&IuY1SpDGhUDLMNoG3HR|1f zK#A3&I;X`Tbjti_u{=sDllpvztSlqsDJa}uqfcXz2gqyIc>vM*%2WXAx?C|QvUqb| zgoxYx7!u7%fc&nxDKctUnVFXp^VvfTp?f=k6{SRsLV^291vyt&+7>-OS7>31R3~)X zT83X6w6{@QU%yMl4c%tPR(%p#L03$yN-Wx8FgsSLVo4y_>~`gDUg^BvvHxP~oxKX+ zcHYh3ocAYs#!*rFjE;~xfB!dU-BCrf*NuI{Q@4h$3Jz)be2$W@Jl_aRe@LkG22XlQ zN|7b7ua`nyJ~OE4ne5{K_~QS6mn1lz&gMa}YIeyN=McHcVj%pjGv$wPLU&R3w&D)} z02Un!7B)T$E;d3*r>>|jvIBYK8&4VY2rsdHnOj^f!IuVhqa z%eP~o5E=)R#}bwkjaELIdT7;Fa1n?COzs(56%V>CNB?WneSwYu9E^ z2Ft{%O-Y)enXKJ6ZUSD|B4;b(=h>TVV^iCh!sC!<@QU+eynph-|Lmp%4L^i6nuGYQ z-OaBg@8911OQz0|9Hl>Ax4WHFj7vV3=z|J!cE{gW-QOd+VSm*3UNx9!t}y+izIJ=3 z5b`07dIRE z>2XJY&Q7VEbL_IXOHsZszx!w1<#XCGDuL)|4^Vkr`F7Zb!ojYK%`CnHbnjOps<-@TviIYr5(ExHthF|}80HL<1z>nN?z$5@b0001h zI|*1#VjazC{GY~UuAG&~mw3UBql!$%mR&p8XUepwDyqs31w)1`o~viQYt(e zAD$^;V@vSCeQKVcMG8YXlA-A*6P|fN0LdBCTOXKZdDZ z7diR&j^BS2NN&Hdz$F<_7+%BTeaCz=z#Jo;6a0XB?;~wB&vRdPuHZ_hY9!Uy%>sUk zJ{lJXzN)fz>uV6wwHJCZNmYPgE6mnQ)^B0XvaTC5%{3_4e89PFyCBa3her*~4uQ7E z%Uspi8!elGhF(rHGOv;ybrX@|68%>3pL3VRWe_=9`y^IR9;YU!S90Q#KV?iV3l!)* zD5PFrr8`RuXIj)nutSk#58J(n~WK-G+J*RsvDel^c9VGaD&uW$r z&$;k7@PGNxv2Y4pEKX0wUS|;37s+9Q$xn;iqS32U+U*`K-&sF}Z(49f0su9;eZbGY zG;^={2`1pt?pbYZYBxp)*#`-&QV;|e6~+ww8MdBmpyNka7h$HgGFpcS=pI{`u$@;6 zRn^V_3!BH$BBDuyraOC`K53~JRR)6oPEvpjz?#vic;3@&`u{AL=7PPblcQ=iw1lp! zO|%f9lQRxBNn5r8J@ljK|PU;JO6j>#z+K}3+CY8ql{nN&229^P|?yU`5z zp{pXslvvD(;nmZhj)2dm`BQ~&NVo5$<#6WI;C4ip+HBecC$-653NcZQK7k?*{KD?7TRLSzzBAFhVBY06Y(paDBXpM5K;QqYA zfKQ*gUZ#J!_3(8}3<~;@uvs^&gq?~LtI^L`W~6wMkS9mTAc}R7v<_OVK!}B}wxoO(CbWp_VIsm0ns7eNAygwB8|dzaX&LE8|gp z?^SJNHE*b^&A#J`R07?8Je_g0)6sYj#|^JGTtL7u)90lpnf=3e!sI_&a#`8Z7`!wV zUyij-IrvW`w$-4ccR(^qg)>||z;_L!x39p;AgTKuQ!zB150|EF&x{i~K)g2F!8O)j zR6}G$chkT3jaXF0?~OJa^TsRme^Tm}xPpqAvAJND9;cyN7*f5fGmlpTT?cRnUVDM@ zDlMfBqm?Ie@5Q!DXt%i&Sz?T(3OEnJv^SPp;=fxyoJFv0-(g=H zYcjWY=n)PDqyqpn7ImFEzh$F}3w|(=mnDT2mJPb~nak#ec$DKcmqKJHZolV>g%+pY z>dP(*8hjX9v{CnAQZqaHHZi}f|QK0S_=2%PH5&Cah48Lz-^ z?>Ya)k|(1@T}acp)oy3Z3feB3T_)n4v6Y{pHMo<`FuFf{G1~|?dM#n| zWF+1#3AwSnZ{I(ox1_vB?Aohaj`vyO*9gD#6?6}IedsuTGPq|k!MDT{+@?C5|m0{n=i1qRAQA6js5 z!g0{fX0!4vfDHF(J~SEt{2UPRE-oDVC0~mq?KeQbhGe_5j+Y$JiHH;1IF}{Z#*wa! zZTkq80AWe=(Mx03Y;do3XQ#w6M)V~$+8kAj9Ixc? z_G$`uK1y8TY;m}y%&=8sUlZG+`V5+`Khbuj;PsJ}7UZBfV>R{qI4dFHN4)taL>}YI zRFqh&akW}~M)j|~>tBzV5@4k!WsDpRWBo#W5W@GG4TX->R!b$w$`Zdq4}72Yo?5Sl1yVH!ki0W`{g zmUQ!SYndBBPnw{1ptRuvR`|Gv7uy(_tUyv%43lMj30c3KSXjZ}v|Uw?dj zJjHYn5t2le+p?sq^HKA3{!KsRjC)RMmfK0yx>ENpr8jON3MOxHX!4J+lTVSq-cag& z*^KOrpK^7bb^guT=51_q3Ws>!5A%;FMr&4DzXo_KVvai)k9F@-%s=Y?sPdOyo=SPJ zn0S~wZ~SUD_cdAb1BSkDC-7HV{9EcrhOx%9qQ5Wyy!|UjkdTFkg&!^D()aw;sTZb@@K;&{GL3TJsADg zC99X>yEW2}deHXp?5q=%an;YlM1vd3&oNRM1n-QWTecAoQ%Oq88gw=@m`yKPqIr8P)z_{sAJns@+-k(nJX95sy_>(4#sc{uRSuN$Qa!Q<0}P@j^s zP-kaQEdcRiZ`6SHSBoto9Z3bV>~TEP-lLq};+Jn>EbmU9YN9qsu{Eoo^6`YnK3z(X z6dQ+mFtnbU4+2B z&}IZIZF}!8bsxTA*8|9uL4Zp2VM62bz)}`2Rn4bg898-afG;`lwj61>krg`P;vdK1 zDh4ZdHf>4#__Zb|@Hg6(Y@EcLO1+Bx)xpH&m-t9_vb-;g^C*<#!MZf06WVuqlfgSB zg@hEo>mV#Kv;W#YU_u~HNwN64u=Xn0rsb6oR_Tu8S!JrvPOwhI$1QBRYl;UpfFmQt$^BqFGxo2`nzli82 zL+D#;5oVP)9p`BT8cpi26Y7*A{lOX55YTjHMy|9}bx}$vcaV-gn>yTRO{q3IclgJp z>)q^_+K-gnklg-(tRYczgsy}RZzedY$S-j?Wir<3rMxKduQa9qLllgY?6hr9Ao?kt zcpG6;3j|^+5PZTc*rr|l98n-{04c>f8T~HYGuZ5x2Ku{C(lG2?K+O2 zH)ij7P9Fs1i-eY1KpSaWlg8*+R;-RVvWM>lV| zAfi$ea@5EpXwN8?aOL@r^cjmMQfk=;V;mZk$~-D3%s`JF&{A@?OC9&6tDsPgNFRFQ zkhgs>zm;L|1G5+w8NH@Vr|l;h<}o(jkkH9dE*lki%$h1)wpjl9q1ypQdux}tJzE@}Z~H4!i&n`#c6mC1=wd+&f@-?2>Vv0$sSv}lXfI;#?q`cMW@ z|A8qK{R&jixVluYB~@VOD-(D!mYhCht*A54j%oc6kjWLmdjQs;YT-CwJXix-t1MPFJ*^JOPnPW z6ejo224BGC#n}V+6Ai4411m}^H_&T(I?IhtT%>KY=gXK1RTs9hA?va;s?BA*)qgaT|my9YuR9m zfsi~$eqq)~1>wuPC^jKdhP+q^mYLXiHQm3g>C0u^&9WX+gF_ODrJu$T{G+Z(6Vgxa z5jvKuA$4qw?I4~hV}8=RBM%&1kP*qWcst(WTy4|ZOU+pPcKg`jno)W98~z3}$GM7? z`bzO^@-Hp&2tyB(x+G z88da}4qpNkfWj%Gpsrp;HE#-tyn}=PT#2|o^~w5r)$GE;TuSp8JS>JuG*^>L&a|mo z9$*)n#soS+{eD`JMA?-+?d+AA9<_=@Bsxk@?PgIutFbb4D}k)dEe?4;`uS$^NY(9H zjV$9enY8|VnTxEr6FaC_{#FgILQ0|_LAo)*mW6axhtQ?Dxk_CHK0KRBf!{;VK#oTK zEee$Fw`h%Kp^^L*~_c>ZdIBR%k@ z_G!5mVX}S)68mtE^83uQXVeNV&vANY`7{1goTdWi{--$I<-X-cpzQR=FO>ofm-P0!$vWsa!E~)~&GDA7C-|S13;Ry&IY+)M zPl$Z#0s97pmh>oEyl+XD;?|EXw2&d}$N$dwt^LU#pOm_?5E-0Vn=eO{j{2T)tj@$1 zP7z;1L|I^zC}mYkKbf7k6b}wCpX|W%pNtEZE63K8?BXu_QhYdDUEy0kS*m@u8IMON zM`N!f(f%uJHMg0gxsj~Zq8=quCU`IS<+Psg$@tm1*LpdqFA95Vx3`UGJo+7LZV&o> zE^4@{7jBw8q{JHXLQfx=Iv>b@|9yXv+#6)}Y&>>@q2-;H(kg?O$;?&c?pCJXj?~Ok zoq%N7+`RXBsrH|w_+2*0M!iIJ5|i&t--hDGf(PPl76>}GDXDe7I9s+UK4z3;P~}LX zSpeaHGG25BJ3Z+wm3oy95AgAT>>BkY8;_9;C8DY|Z$v)cMH1pSwATIatoiHo z)A-z?%GVzWQ7yG&|E$06vV+IBLAf59iq2aOcLKi){#Xt#=iS2Sc;_~TY3zcgS*!;7 zoW~7NZT*w%KKdwqVUmv^h{mNy@boeC&!5v#3&9$p;avsO+y(4T87QAn%?wJLd-C2j zF4Iigh3+z$d^um$OO_hMH$uXmP}40+(veAPpuub9rXBhiw>uxDbh}S&UP-&tdE@i= z*fOQ{I%f<5VeYvF7EnY;@_|=AQ%$lOck*aY{T$)@n8q*oelb%dv(vH<#^y6#o`+4& zN)-wRa=rZqq#U&=1asiCSSM~6L9xG=^MYl|0wCz9E| zxlPDu1HA~q*CIi+=ih_)-xm81h^n+wvqg8x%@J?xZPxvqel*iO+77Y3m6FP8u8$1| zDBG9D$q7g@Gep}(Bye@(pi zSuuLN_;oxubbRi(_42Mr%24%D*q|1|+s{TVMHW-cOyrK6<0yo6yzEBCNi@ z!KZV>szoW>ng9E_D_+4V%R6bXch`2Wel%$Cu(s}rQs9)kKHE)}ua}Mw!!X`Fj5-vV z6NB-R!)!HVvy|UX28*IsbeTQtMDxc?e|dXKrrk9JSu|tp=pJ*~YX+CDTvhAaPh-O~ zJiIOLrq)Y(ekfix4=PILdw%+#g`5BQ(5GD1XKif&nGJ5R>IMLCAj=IN9Zo3L+9b)` zf<=Z+H+zdi4@mdUM&oT8R~9xF^*Y!!kx4o<=;=CcDnAo^ksE19tWCRC(!**Q_|@>V z(b=@va(~akY-2g!ySZ~;@-oFly}a?27_v8BY#DaST-Eb0QKsvjzOW*LO0A-Qsl>U= z(5Kcg>t2B|EfgbOFL8-2^M0#yu#U5U6oV5mi_!Zc`IeB^eWaCW@V)--OfDF42B;-_ z0x4f|1!S_PAh}}O_C}Z+Jr(F;!A;6hs_|9w;cWR@#s)M;F$=6EPYvaMCAf$Ez)u|; z4C1>*%MTx0nm%W@%T4_d5L0v#Llj=MD6##%Igrk}W*2#cM z@=q7K*=KbQ&Ze#Ee#r3qasE@+{<~QHN(%z}iOW7nai+Itu@>}pBHiA-wz{pu`2Upkq2WZm`6Oa4L^5F4~fq00uiIClm0y}uQbKhJW~@-OdX z2QMf~jdX4ENiuAm|AQI(MDXR+x(;x@t)GSP=&X*3EY|?Y0RTebQm9AAk|zXksI(l) zW6gh{5t7g0;&`e@K2Bl+&CApA|9-4J^&)S?RQ~z#-3@|bXK3kr^?-#nzkQlt{V*)W zX)ysk@YTxbWyQ(7RLz0V7r&v}%%Q_EidZeS}K&te^SoJW%sMx2SBQOU)@PAz(6?1bDWNRSW?X6%R~TF zK&!uAIH1A}1k_}e3B9m($c zml&i+aHY%LdIy8WF=R1vw0U;AZc0b-eJ1Q$ zbB+UFB22Don6}(3`la!<0|aWkN7)O9d`lNtir_LgVT6-ZOPeMmVC!is3a zL-klr$1U3>tYvr^bO;eMGmGO!wjdhc`rFgr@L<@eo|Th*>Eu=^o|(AR#;w`%=F3El6a<#=TV(HHsbpCp}?8 zX+nlkS0Ox1g3hl=aIlmKl$2eN5Q}sO`KJPUVWj=%CtZ4OgT%3zrNN>b=BR99@MA2n zP)%h@k;jRlohxYs6{OS7(UIoNyR+fZTLnsSr~lFTt!KJ`Z^DkqE<3v4Rao#hba1}$ z+n@hmLX&dQVcYgp>~$LSAxxh0jX`75EAT!Gp^V7oessPx0E-oX57-oel8?SSLWw_n z?iA>w68mP)^_8oD&RX_gNg8c4ZgclG2b zCKf2jsK@FMD;?=kAp=1dZ z`4LK8OsS4o7@l3;3!*w76(kR-zkc<+o1JhBM_D*DH8UJ*5*rHuuoB8iU}N+K7lS=4 zcI&=wS8YkFdilN>MPCfuaYzt!*GsBV8hJNNaald%*cvf}(a-Qdsps0$@`QHiiVl+I`@6L#->U?i(Z}wG5@y6%KS#CO9TLPsQ{_;zX^^tY)pxQ zXu$gBq-5=^KoRco`e18Xa`)awc#>~7xj9yW%~8&Aik|C4uQ1ezi}-ZZ0V?Wt_gZCR zT!lvENtCN-5tM77(hCH!U{Z_UOM|7K?HU+UHsl+c?y@ITe|7mgl+<8ubPeaG3bYGv zIDbbJcm8ZwzV_b;*B7&<OPp>MAvV{H*CW~ zjjf+3S<}d8+Urfzgbx|tigO~9iVeNaMHZA6(H$~{VIg2d(l!+)G1JJ4R`uK%ieie6 zSEp1?MPM>0eP~qcrQ@e}3y<^IdDzH{1gn&Ss#q=pnrPo(Q6m3r17<|h@~JcRFHPXOUMFqs^h zG*C@$j#Al5{*o2X7U)_stDaC~zq?fRUO1qV{}#!N;oYpWI8mJ0*~dYqu$EcRh>=Lj ze`C*3z$0JIv4L)ZImpH%I4_`NoK0t94I=a3y_(=07s-2{hsDGt(3rNK6Yg_P{FN9% zRmyzTnR{k(*Y5WEj;EoYpfVYxiq*^eb#Cf!r)G=>T8%LvM-FoatGvXhh!30K7$SSN-?@GK_^wB*-g$;Q zS})n>RNcO`=f0tT3m9Y40ko$aBB2l`1^~#q!a>yQ3@Ae}-{iv&^#}x}(9hS`sET+E zF85v*HjgOWc-*zplY+cFpDvL@LQha5CCr zFK5{@y6NW3JZU`wiYWRblnjI)?IJ(;ebcjb&B9GF$^0Z%S0mfXYcNl1TP~cDmb<~1 za7jBNd(_CfU1J2Ju&^eH0$>WipByt@7;B50cOTc};QR{t&B0umxRwk_?^GXI4x8K5 zNw0bZIRRhIhR(7eN(VG^Euu+D_Im))*Fk<77q=Za@Q#ThMMBj z`ClLj0BGm9{gfoMmkpM3kzp;-6KQp4Wg#6>7QDP0f%7x?#VZIZEdW1sqMvy&`I0PF zzlUzN;y4PJxQyBAXz|*Us*(;D=ji8gGG(^hd$Dm`SnT5%Sv#xgS;p2a6 z^>kG$B#voJdMDgQB0jWLt@L4|f&jJ_v;MG^yxVQm*sXP%FwIVSKwViU+7=bJ%nL20Ws$?C> zjJ^#9(v8qqZ@bcXW~=L#MWfV*i@L_t-|p6il`7T|{H|mN_idA`dhpbuFzZ~wZ%!eO z&JDmwJClT`1RwW%G5}5O7dZN`Nvo#m19zV`4tw}HvFeaUFY9%qQ{=^jv|Ub5lDR5b z{1kNJ$_4Wcr%J_0(4yR?u6qg{D8Nv~Vu^$|^><1!BfFKg*#*$&Gz0ZS6xv?@ii z*gmg{kfi;U9wWpQRmj2lJ?}2%8mOGPZwr z_5nY0wur*%iHp72ju}pN8YF|pq*jFS5Huy{tctBN({zXek${}|_Z^|yZ3uN4e0BrI zxJpO&KOgeT>$4MYUJwqsEU?%3+G!2_*l;GoSE0Ys%6YV;R-?-~-2d$qL&j!g1(w%T z{;$;sD^n1MuvZ5Da~g2`L06*Ky_!mFNVDzI?+zY>QDz9hJCPo=UZI8%Ft0jFE+hi$ zlo1iuxTr1Q{elT@(}x{3lN>$iFc74-%CBFuDp+$?&}@H#0xn!DL_u0kHF2t++~$Y_ z=a)a5Q~w&9#q0t1_HC-f$xV&o`UKI3Ehljv6Z~tKxma5y2$ngz)$#eLU!dnIqo>W# z?VdGgkR;7UTtLD8N>YOEeJu^O99b0LwU~r*W)=gZuRwFsw}$fb9n3g#;r-fztf`C) zvz-ST`)@;t@kxnLjf1lGg+>GXN(wT#dW{HA`GxFD_9SL@6m&-T+wMD+C?en*`ZD@e z{-nKdY$iJm0}uc}zsQYkb$)$_8{8Lih9pk0QxD4#4449cy4-54$6R_{Lmw{Nl4tJ2 z^5Sn&qK?s)0BAUqi44eqNE4T$&gkrD(uo<;GMO@0GHwx6<5Zl%UzlNjo0yVy6Cm&< zQS~3p=lkS0CZCu^8=V@DD#Hlv?uE)%5j#R(RED#H1#tDX*DnlWa~kW~yS$Fd)W1YW z0RW`^-CC3Dpq#US6aDu;5?`H||7-hv+q%^%#=ns^sPPcFM0b<6Z3moGv2K;Dr#FE+ zQ8^>ZIC(u}qG~6i$88cs?d*XZ#f1jqO@~BOuL_MJ*vvxeB1S~Qv&edml>q8@M+v!u zZL~`pxU6=0T|A_v9)AiOsoI3|w0N>VwA`5oMx972g)J1ir;SejUk<&>Y2)-%=|?WN zl)3FU^=!m*y!s?;ET>%(>h?hLC9`b7TO z6)voH3s-xgDOZMD-tQUsyFcv-$(yF3ut>pl*u zaWkkcl+!3_BWATezRDr|nuG{R0Nc5sgsl^+5Hr&n9%@L}ERrv998wcF>J zmq%l%@m!Q-0cu6`{1`EL;$cdPkie*V@j5sA@NwpC+V)%`27xn>Tn>{#4p7g950z(- z!YdukwCg0&+^fD5wU+(#+>4>CVKFd3_;z5vXt`l!zY`kD6;@Ee*h~I;USK3|g$F$R z8=O7uX2kxEc#6b4IvX7)deUG3TOPylu*taAHJ)HYq{`$;!1TAkXa$p7A}UQiOQd?U zaHfoZTV~gwUqq*vq?L+ z$)i4X%AfB=Qg45{i znIF>V5ufGJ727$jKaH+d(~irrH%GcpP9K4CGL;Ea)O}3U_+(U@V2NVb zZ9nSu^fOcEO$p%;Ld2(((-%u7Y;gjnk{X2;K5`2fYGd+5;+iC_9w5o-fw=hz9bZ68 ziF)+FucV-TVq~y73WV zaT76nQl6;PNr?hOD2V`;{Jl$3ZUG90Rx_IE2KDzZIkkuIpk71Pv`+Y4P!yA4z|xiF z9zGHjG{1*3OI-1HfBfL0C~kZ29a#Q9Di>?B?fhN?keDi!$`a433#)XG2QCkZwY%Sq zz)|ab6!qk7OvK94MVAr~Mn$}xRMU8=mbo{J%U}bl zA`;)8co%cmsxwJKewvd1Z}4`ayEWFoV!wy1;3`@7#57|hDuF^8eU{*6(~xy6MF z$FAdR^<9wE?6tsMazYKx0dqGCG^YJufl7Y58YsCOl3fg z&sK4?x{7Rz@)GF^{H%Ug1w>?`6FK8jbtZpH%_ZOIw9QvOQ+Cm@W)iK95Cdw1#1iiO z70c}_bYy97S^n!sCMa1ic&asG@Aa4(^s4B5re=wP6fOmsb! zYOOo;ifD_N{BAjE#J=>MKPLxKi?3Q$gotjFOE@AmzF|l zyqrt*qaVIijFfn5DwX7rFy|Vb)s(EkMyqF*80%nW228VLo_SSjNdR;JU7gY?zf+=8 zobE2Cl^hE%HKde=WCTpNDVJVZa%qo})uBX32N%z--Pv%r>v0;w5C_0=yC*9X7!~lq zIL<&VqlH+7aVy>Fm2lE~`IHB@2)S^CBd&5A>_X zuTRk5KUj5n(wgLi#5lbouUc?t%DR({&4twtlYnn!A*xIl0tl(BC1Y@Nzwr^qd8ISG z-)ummM&?jkoX6>=d8PR656I1sfJZ0x+?HY5-_1rDike|&*l0^pCXKF8AO6Cfk}0Ig z0UROpofw5oz0?Q@Uu8{ct`U8t6naC#5(=|u{J|(czSoF$MG@YsyP4|P~ zNVe>l@x_lvAFD3Nzi|Q^ep~aS$zkfC|2`G@qE!C2txQ2cL@~*~Dgwj8v&sGsM=C4p z$wVDQeL-p1Jljt{W?{;IFoVAt7Hw0j7fo!-E=>-x&rb5kfotLh@;W0lMJwF6*cn$U zkHTieipk=)b#shXjyatpf~c1dQ4;PL&`nAfa?4P!a^WgoW#tZW4ZQXxL*0e1RW9LT zt`jg&!C*!L-hbNV0-QFj zDgpM&84_B<_2hF`n}10ew4%x46(5)?=D%wN$g&eqU)2zH+|)7uVhJ%vmG^_lMk;d9 zqF^d8>ac|wdR5AbTGp?tSs>bb!AX1NeEH3*EQdc~pdZsG;*mPhdk~TaNzJg+@71Bw z>N7OI*yUL%RkXmvG;c``F8}Ry+W2OZ-wtYj6a*;c%K?5DFp4B=#fZ8UwKX=AZ5$go zh-C2bR-6k434K4W_2Q`QDcZ}H&1FtMwMR7Sa{uor=66hv7s*Gh4z*YK*3ToZHql6%+=Y#j1B zr9H>xb#l6G6>!}{Bf$w*O1D@e5eVZo3a<=i&IT3v2kZOkOgNXRQN}z&ixlzG@)+r+ zd8L?XvYU*`iwpcTQ6x~_U%4tj7TJ8FgNJ~;k6WK z^;S`2YLEIsBJQ&QCzI4*eOj`=%X7Xh_tyhF?&=pv9xUc&wl*nvu7YvTpx);#1bzo0 zb9Z4$$eXNXi%=D zqC7Sr@v0PYNf?Q z&B2muBrV=_SEmAE&-wai3W-2NY%TCw?%9HIq;j|NqH41}#fTWgI*J$)#;(bD{F;L9 zWusYrM{R=LD~q>?e<|`5X=ig#8||l7MgRaWk^(lmEL1(NL&(r!Yb$5bN(g4>p2i=3 zcDgSJlo2AMOAfHfXjKcw1Ns<<8_?zoU!zGvnJ4?$z?~DFQw=X56KdNgcG@p^zj@1k z!IhhmeyKk6XVy(of#)MGgKycI9!g3yG@twarOd&pUCiI%%hFrMmRv+$nFU#3j;*fG zx1Qm{ILgquY6>(tfPN&AiWjAvMqF$+keSG-l_q`QWjqMwbU;Wj#+UG%=EiP@8l@gF3|JtRPu@5P+GO@ad1lJtaRr^)*)%{X&l%>#RG{l@~h z$e{@CQpUm|R6>NL2w14m>=e4Ma8|KEsSqYFTvKO`WhRGe= zy84UYv!wE1?TbAuRyvi&gU>uyyZ%^Am$*n^+cCve_{CTzENqQkewU4n z1+$UFrPHR=X2|@nVs*R*@7a=aoA0`~~JW~=3PM%+5 zGXuSR+%lJnUHmA+_nm0^&EDR}H}92x&3iww8h|D#Gh=Jaapn{PhXe(6>m0?B;N$k3 zvtP0H_U!-F&r%nbC#K+KQFt`}xw|vn^%JQgc{V_u@JyyY| z!YCHO*)a|lkxFq>zFHOY_&LqESrbpI%S_N`htI7!0kN@pFa5VmT+V${&omZ~Wz~7L z8@jm$#P}N_t;E~|n?-e+y|-+NocLFLz%ht48k06$!)4ZCn!P{U^Zfj1!u&RtfT#6I zDJTYw5qn8=uH={%lbNDZx=Xrjl}`%awqo=Mg?2(bI~DmqVmX8(^in1gkj4G{s-^)z ztmz*jo*Rj$%+JR~*@9+=sly_==-ka~vbWwi#k)UhI}mDx_bZjf=*{JDT(Pkx2hGk# z+Iyu%p*g6q@m)7K#9uh%Ls9L)d!K>Q&BsSE`1F)3+tU8jr{7-oKC|E>_hVmA$#;>x z_3z5!mfM7gXX>_v`my&(Cc-ptQMBof^{X}#GtXfjH+nydHMR#@aG<^Gwl#G^y_mnU z&NXt~EB?^K0RR9l2a#U;yS}9d!&DYeEE;?IrsU{ItXDMt44fq{QKwZ}=46s)^_=s% zjf!79yHT5hva`;kk1h;tnY(=|QOS#!KfO=g6}U(^YC2J0*z>y9kIn>E*O$j-m^Ndv zv$9o>*G20eCC*wlR{Ymbb*^vOV;)9bDhrVegtUR~E{Rup(t~I}d!+nTD{@!WX%zqf zKrD_t1@YlFxhQ$}oa` z@y~hL30c-4mL~HQJ+9FGlT;KaeQ#WWg+}V%`ouEbnT&{Bog@MGYLnBSxyL{M(qnAb zgVi+Q0}9;FJo!TYGuw+?rE?TLhF8Y^4ryf}-u~F;0673dWF$jN8NZtEn)vmbcL#LV z7xoz8R?3s4C&5}wAf8!`&zRN+!csW%RhH=)ARwoVWZQ|}ciUGhyudti_{f_$ zBvt8+lbtL%LF*Q7x*fBq?_Xr81M?HZALNS#z`cR&QbgGI$A2*~FJ^^A<(7S1&lu-Y z?7x3}e5U$$Jkb;n`IQVC@GF__ItBcnj0Av@V85j;{RxnT|I+aS2+%{TbeR@lR#0ho zcaDYq1TfG*(0>&XRM;WIFguWL(kTSJwsE7;<3m~Ph$J!^t(ePNA8Has^LeFBefGk; zCnk*sc4Z?V_?lsY4kHU`XFSSdpv=;d?b4*S9ot}YW_)R7Zb%!=vcZB!oqUV1xbS>f zaMwQqap{9D>vCY4Z2Cu+wB|+7TDlKL%>&=t(;V8GuXNv$Sqb?I*FB3FvO^gn$ri7~ z{m|Y*>it@|#5g1Zrt4PV1VqU?S?o?F;4yagm8|k2IBNjRwt7}D&XD%#N;_LOcMzBt zniXM}bX!$gugHR5#KHpK9P?jT$!OMv#aHDdzf%3k6$ckIx~S}RyrYdi*UPf%Q7UE9jyVtV*e+>0gsX+)k{&c-yY@B zhKxR5QedF}d}W%-Efgy4KI?LipXF1nmZbmm=Ds1t#h^dShM06YDb%Od_O7tOMaY13 zS)nfLn2zySfE=FJfP9-={+To97p4i`LM&0zZ=tq?Ed;DiJ&a5jIS~f;?IPOQs@1}4 zHfOJJz z3sPOakX^Mt&8;-Cp#R5|XP?kPV3|t6PJhw}mVPrn8L~MjNd)~lvC2XAQ1=ePCOb>- zOr{A_Odzr=cAt&CAuf_${55_4swe(a(B#jw%IOk+M>Nn3QVLfpzlG#S2PpRowxmug z{x5bi4?bs(Bt@wWZ9SC*Z{4#0&PePr9ZCHRT5i5kVocLx$-3?EAG>e$Hgf+UY$5sv+)96v() zh7Xpd<+vh7YA&S>J41}sMr+94E_5k9=h(ZrpyZxwkLQsT9fn($HS7@HF#kVmAWKn; zoDcS_&K$bgb*|XF7PyO^c}zj!M<&1 z?;wRPmGZ90_*!LeDYGXPx|myhE4pAMmx%#zVC^lV@M&}*7;owIDfDY2>irIO39u0p z+62)!6;|RH`4dAwj`14K=N=wqCp?JZW3rO?8X>{{XlGO4 zcB?{XE*eU0>2foz1>&Z^*;J&<^=$tWWM;HelGC17L{fdrc-yeZxyezVEg{I{>cCCK z=`VR!{}|kAmd~r6vU7q!XO_dHRwfl?4MJ$f`DN?_v2`d_P|+~mczu;OZ70bS22ac+ zKGqMcaBypf6Y#?cVLVgcfUwnF?A@{gCu9jW2leh)G0&L8(Y@OQ*)J& zJuvPj-#DMsNqw-qCay6?^?%B#TOFXw)(n7*=}pcCAV9Ym7SYuaiEb|F@kpP62H*g- zWx-RBzrpI~TQ!q?$a`V$ry9%`eKk=5kp7otB@xMOw7HXo=JwWoX=Kaezw&}dOFNhx z_h{<03~1_PJ2Y~7S{vbTcRIm_+`{_TY~!r?zm8sI!JKM)9qMXnWjll`-hWtCXt$~- z9@7i)nlymUL>Os)9=tz)EyL07ljmJ47`sV-RomY7)?kpWsP`_C2(ST+M1%siPMo3U`Q^vaS0iJj&*lW1kSK-y)!jiOJvB2;)8e9Z4vo3}szuVTR*wJ0vB(zcXoQE(AM!ZkNC{UpSoJ9u;gC+ePV9)hz;r8hbH zS$Klj4LKvmwQUygILMS%?)|0br90&LSN+?L>k-9oWcW$y391;3;!85GB}MgbA^NM9 zsxrBrZK=&-V(%jP;Bo<+;J6ekz#f1}z@qC=vwa~eB2Jdbz>2gzD&Ysq&%iiGTR9UI zx=V$VdQnI^GA8`@G%;jD-kzpCP zSn(kSNdkBJE1v>oK_sCC&xO?W>PqG;0jL!KlT+YGrp8xQ7rku4O{eBaMaZ8^EK=ogU(it#5;1lo8EM*iXC!$u%iD9M z0(?YA$Ts)s$|^B-ai@yhT9ZdInN1j`!})Wyz{(^kbCzUNn+YqmN%?C+eQY} z;s;1-X+G%2RLt#ajO(k1TioSJ%YfF1zk#|oNvAWbPQAC+>-}1;m|Grs=D~mVe+>k1 zDNjH4_1-kQ&L2P;0$ASn;x`rbOav9u>6~-XyXt##WZzP(_@`**TbvX5A-ht2${lluG48)o@SKgy>$^6~TA9 z(B}~7*16Svt3#aBl|W_t?%7+tp9o^d3;;8Uoq{{ z>qAb{2*sE1E9rVnQUxR?)*7_Fq*oWA6BXN(P(UL{hR{&xCE0kNhvWOvI@s+ti52UV zYB9$`sKfn(elZS%8jS*oSPuOxiM06m@Tr?TIIp$QGiRB47RcA3$p;K5@~1Ts4|8p- z6+B_nR(EmJQ^sYsr+DmJxM;l$u~LNo+aY_)H`=y8*b+o((q+e%QL+?e3a|43_K7F} z*^qIA6GC_9FgUTc7VS09k0lL7+GuT(CtqhXbw3hhBZ_;ePkGONwdZ2(nW*5)|3c>e zbL8snP4=;rtuik*dF&=i^r-UfQ>pkSIR)HBVhg&7N!9Qck~ipyL!`_un~Yb)*hO;u z%WlF8|Mh+VAkVVk;sKgzP8?(Mb1Fv~sbN21-hw7CVKSA*#{I6GYP;DizqCbCcpP7< z*pV|P*RcYJIWuE5GbV>VT@YCZ3yyxNrybU1Sn918A4(&uou;rg;mt8#N-~ASTxQ~J z8GZ@h8uXJGp;s{}e?zKJtr{6q(>N)7XRg`J^J_a<%AXZM`h+8?gd9j zO(VXJt7Esg_eyP!p~I=|jcInvw(NO>Vs1>9?Ge*W1Zb_)KRq&Tg+M3|*P<4QM3ka` z8lLntsJem8{-r{MG6A+Bk?(QKaAd6Lbob<9XhlOhM3kHHyo=t*{14*+HOL2ie+6=XXI?5B0VaDWu)LgNn2SN~Fptsct`%z# ztzB|V1d+^mxGwz2dKxst89(>2`u_MOoU%~UlFY|qAo>I3hj>_Ze%DX!QPH;0UjmhIkp*|V--gGg%=Ef%{ zLxkd&EBnP7I~m41keFhQ@6KDi@LH?lGYv^r};wcIj)Avv1aO8={R| zykW__(9jg2Ec{#M;O_&!&R@dI923fPYRj|XT!^dGb}eyc??aGArzS;#@Qb>{+-Bb9{dP&R05jzp<3bNcfQNdO>@qE{A;n+qz>xe2gS3g+qhS8F zuIIc0rvGS-Mwvo)k6U^QRzmFZytPMb!-RO1bt)1C7DbM7TphGO^#0>1eM7|CeXy16 z|2dKv#Ewv3+4MsYlQ)*#U9dG(H%B2g_f>piq}HKdyyRyf#sRlK<63-pkT#_@7)Sw%sW*te*p&Sm;j6&fDt!p4*9=Byt#)^rSTneo}9U;m|YFh{dv z82}&){5){P4}h3=d&d?)hgkV9f8@ZPULWED`57c$c!!X@e6b7=y46EQU&vWGxo%n$`Rr7+KlCUu0I+y78YA zquoQ!@1e7c43&i*={w6i&ILplm%Dv!m<^~8Q+gM(s)0>+{l%i=jtpxyr{?|Uy%EY& z-3heevOhEO*EhFk%(Y+_uBGhFAkTgB0@X5AMXMk)ML~gy zHtL~FH6ljrMU}_*b@3U%ni;74%yfs72eO4#@mHFNJ{28 z#?|=#G=7_ujZIXgvY`+?+xEuhoL=n98qoUDFe%|#-a6#v&pvTe1#DWik<2BfJMAns zJ@@!*{?LQYA~_J(XpwK)pUWyj+zmAsIbe)V59?=*C=;GyY1FmjG+R|4_dfO821fz_ zNhCmS(EZJ)Gkf=yvuXjws@+)0b60Drk{$~3M{m2MJeJ3LGUvceD$388(8ITRQ$8xG z-7g6A91?dW7i~g}dVY!?qoVBd%@L!(l!s|y8t1&$1fq2~!hQbyh%iRSk{qyK^mc*fRn^G@QM!bjg zC*=(`6{>2dXn#Z4i+N$j?NM>n@W`a1>O7cpJ4d$43bla4f=C$ASjR-va{hf+xpRqp zomL_4rwTgSB^xnQ!hs!Uc83gEwi5%yyjmgqSmrx^f)|rMrunydwz^%5dKmWTK4>|= z2|wOm7Z=Vb%Kh12V%@Exn51xAQSB6OM5uhdhfHTmd}S~-7%|M>yy`~o0?v%Byrg0B91dk!`>(2C2QH&0_kYXcm z%0+_CJHg1)+4)X?i#jKPCy3&(;{D;4{n<8uBF5RYe}wUWRL;lQ#G6(5N4i^~tn@@U z1oqxGhJQ5rZM$20Hmenmf-)mIUhGS3vsRBt|7d7=wES}IJ%5`{=vKeqj<(!RtR}iG zc&d1JE7MuZfaODPHhW$iAW5n+MVEsHBcSlHwoPRVxbpijL5u*gs9D3YXK0b1#F`!3 zo0=1DpRbTTC$1F0YUYISln}I475Ipe@lGlh#5SmSRPBgso)&Xv%ZnUwY{>OX00;UU zC@5hh0$#-e7I+2rHd-HP#>{J~+r0eED3>abB$QdAJ)pldHrVKOMnRK;(YGj;R2SkY#de9smFVUh$X86ne!hUL?SDb^URzgG!Mub?=~nRM)3OMWFAi zaKV-g)if0qB$r?~4t)5sTz`3QE;Gjq5&@SafQ2;OZhysjx`OR;Vk+!ky%t}VbS|+P z(A9@G<(!eQodl=>!2f?kh5tEnDX!36R%JohbUm#AE`pS}+rCoZB_4GfudrPuoqmon zz^@GBLGPUDtHLrK+2|-I4&W>IiG!V-l6dBcGDS$<=P}J7kjUL)wN_8rft}5jB zL57*(D(OuSf427pCQJ!P=P3@{hZ4ws7Cc{^za1A&x>9Z#3f#$JzyT!JVnzIU%Ohpi zdQKIjawV>+dP{fhM1BZrqokY#&oj&Ahk5?UT@tS zNLIbq1uacZ`~tn?yf<>un3GgP(+}=h+ly)waG{g8KNcz>&2^Y>!@2x9#(9}UK4f2f zsXqR>X->1Rw7aR+#icHvnezER~q-Ku8xr%8gda>`?>t1>4==4tK8ws&3 zv8wo&8&E;HIh99(zOei!CmeE@xpaCz`lBSX?A#S1l(9WFqdXd`4PrjMbI$f}g$Z8F z@IqRzWi)!o&pu68Jrr__KJIjmse;S@nee$Vr9scptz-$FsI9&M?EC0JZ$$l`Da@Mq zoS?*oSN;Z2wgCd-dfE_cO`uOJkF56M)jl-KT(`eoWQbZa9JLUl$-A7))K)9zSm=tO zSIz{ddz(_P%V#P!gfXN>`Lws0wPy56ycZfq9x|UPRT7JbxJA^ z`Ua(r^SG67zi1NV{)c^tbJ%=Jw3JJ0IOpb{IwB?hY#C2QHe}q!_4AgAK~hnfpVZX9 zQH0@N#D2&rU18MW&wDQx7Y!e}i`XiXBaw_T34V}KjJLs0`M!&- zjIXT^!Y+xF!bM|3xpISncLi6Bj=tO2r7A1gOOUGG5`$@Ufa*Z*qA5)>sp$Lg6GuMj zSS$+*ITu55O-}~vB#+!9tG>E|?bU}uibusjx6ADs&AT3jui39g_IXJ_iNQgKY@+^D zBG^?kiUBrE@sFG-U#(Oi&fU9e;Y$&mGY>X<2UX+WRgX9fd$PK&#LWH-d5!UJ@P6Q= z=IezV?5#ic5Q3ZTI%qYAEZcOy0$Kns*#QGoAP$4}xsL|UG%uqH_9mns=uLtHZxlo? zqcum#{FYqU1TOsg%Xd!r6>bGa3Y%&`fIs}#?sZpx(RP(>X0vDw#G(~}pJGO;g%p(0 zzT6nwCyq`f?sJ>RtR(t8WO@AfN&Z43B91Lh*2!<}AWZq|h8IctTq^}o&7zo!TsbRSA&)Wv_V zR_rb=$c}f4MixpdoJJcp<|63W2~yBPt56&(;xSN3VX1t|V7E|C9~)P$ zMXk<3-6HI1Y&L2g?c>-HT`JkvcIvASVtE9(c>Jr3Wkz;ovNfumj{Nr}9_%Nd5pwF% z4OLM`d7Y@V7uv+BUPsm*wHc9L7wjxkv{ooU4Z^FBhFSao+$1djdc+CX{6~=wclP{v z3BJ;gqT>5!p6Co` z^LPH{G>qMKf+E}_SR4Nl*$c<;UC zPc4@=aXPA}%^D7zGOq{Pu{-oLA6P&pae_R;pSsD$11BRmBS=RuXefp9=|)%Ojd0ql zt7w1d?+4~TL$)tlU1*A~bPdRA9Qm*DQq z##6AorZPY+Hu67}B<=P)9z0fnTyXvN7!aT6HIhc}w4h7O`@Me#rm>vq4z1{Pf3e-+NN}4(|Iacd?|tuwm!q#QSc{c6~sGhC264 zKM6#gaij%|b(G#lXqWz7*S-%PsEb+2xKi4^9l3Llbs7Pae916wFu{GP&W0#Nki3q) zx1MGJlUZ;4jK7DJ+vzdb~Y z)I4S5alj{V;DPPgcYTQF-$jjVURg+30RjkEbY_PE&}))qmDa)2zCzmd<12qzVKzlt z3(9QOURi2XseN}kDYM@A`rtqo$j!tqh)ibFfwUt^+#b*hm-)c ztuvRS!!uX#b6r3n>*NYtZH9BRTy1syGBnml%x@>$?eE!HKZxmcUtsD%8Aqs1S0^xT zZj!gcLCl`6nWO5l(vrmqpk59D$l=Zoy(t@#NUb8x@%Wo*R>AuckF-WFHZPZpb9Had z@x$pb?;PKiA@X!vGY`h1wpD*gdaYlGJNbq^!< zW%W(4e?a7a2u&ONE$36An-uq#X#%Y2B+A9!H8Aoa6=B}c2g)))!8itq9H1`u(-#4n zvbL*fUj^6q@Qda!IF{E;h?rCLD>g|kP zx3G$JrS(F+TEM70~!K+N3qEtd&Zw${$2h4WTh);OM%@d0F|bcb~yhC}%5bDR!um#zzNu z!-cs1Xy)N`N&Nr?YWtOd)3PeAovZC%#c3@Keg4HcaukX&_ zLtfo?@AW7)EQ|Te1aux0CJlFIW-`dy+)jlML`j(rDjfxjxp8;FuR6LzIy4dkn<09h zuXw*FegL6y4|0$IaLvrf&M>vZV4KDWrS`=J=%xqi>Hcx=W11w!3k6`d-kLANJvxDX zvF*j@T5jB3?=Vpy^qB+4zWN=pg5vUTWNcDd0OVk`_o5UpyEwq^XY>`$noL7_CTe8Cxf1Fft=;o7MA9yhb;ZJ3 z0PV?0q8sLpuDIcVY-MKphc~3;>YYiOdS>52QA3HS0`@E6{uw+DhNj z8f216T{t07T8neYst_qn=W014hJc(h z0R?}65KSjn^I?ZqCOBcImCj~@m1G-0Px6U85UcP$#=eR+N=-?3fxjipXT(%4l{Kne zxnPP5Wd2~Iy%5;s3yQbz4tZEDSxj7ouL~V_e?R%0AazjVe_hDT&4D?a$&Y6$&Q`5! zL?K@*hkj`jiAZO&3mI>LL#$kU&>VfSN z!jtFjS>gC5xT!ouIV8*BxPGHGrn+%#t|FJp#=Dt=KD+0FDLQHEIxo8sQZOUQ_(2Dw z0)VC=k7k^Ww@A#rfgxa5w4vJig5&q_A2HS}PUB&hmX-1`QW#6k4WZlKygyXWl+yd9 z6Lod4(`)CKF6Dj8GzQS5akhAKlz!Ytc`aq>)&9O}ACt;wx5~PYz!E_gIn=N7=&b8& zqg>b!<`HmfO}GNjJVEgvOJWn4u86f`@CUQuitlEQ`Lf2m4$&>me?R5i9Jid4gl;li z&)sC0ONf`lJmaZIheZEBw%)R>4Y29j4el-O&=5j!cWr>+8mt6sae@|iiWhfxch{oD z-Q9~6w-%>V_J{Yr-+erLKmXx6)?91W%$(d;JcFPo;6Ma+5;n?Y3MOY!mqz8JP!q=s z%;z`BnV`CX@>fSYb&7Y8qsvdzunp|;og(I%IP5tpIda7Js4+F0EPr|Jz$X0RJlF#S zk&J#hiK=B~tD~768;U@Jt=ND?SJLPo)<)QtOAy_a+&&q{BSt^REa=hLm0V|Xs(q@t zpcM?*{=*n8nW9uzpX}YYphRu}007PBHMxhpkofilS`O9S($0ZUksj?sy!WiU$5w(` zuG#ZLE?=~^(=xnmBGsu=CM{|hrK}FMoj8=-*{DDbH#%r7$}-^%oNug%oNED$5nQ$# z7nZEk%9ZQ@o1iitE+&?NE=ra1bMX$zNP|VYuo%#Tzm4tRtgs~fkU{qW0%#Ul2ug8S zw;RkBP`Q|JbpZA}yQ;A-xeJvUuY;lH%J&Y8` zae?7bqzMHhd5sA(yv0r$19fGbBG6f6QZ00SoVpVHF?1}t7*7@FR!Z}alYEL>qby{9 zr0#y^pKraO40Zn4fD-3^IbhX%^&ynm`#A9W>bJm1nh~ozJg;!D5M56;Xwk3 zi41|I1U~Xbx`+!FR|B$KeIt%(jToVmi;k!zM$+M15(dtAjohxbUTKqWoZk`c_o3@= zU+#tum;$m`(RpO~Y0D z((NZd@v`R;GZj0RXOaxOZ@z3vhOjW`?B0uij`*WIC`cfK#tiaLP163I>Ci+RwDGut(s)Pl$5ho^t+C;Re~`NA+hi zT%m_5GD-SL`jMWELf&!#8h$0KFOS>9!nRuX!bMwu4ZeL7kM){5pr9Gt^aT^d!dppB$D*9?^!R#SYdcEnQ@D{H;s;3?Rf zl=N`T?fL3+S?)izSc6QV&*Gvyn_+6RlkH;D8LsO~lS-J`tI33Yr8DMm4s$B5;{Afi z?z$S2UHX6h`HR$1W z#$Wyb{i>&!m8!g(YEQcHv!WIaHA|~V2dGqOaa`SQLZ*2UWSD4Nz6<=1%6+unM6wF} zNT{)M0FTEI>Bc)0gZn4=1sqxiK~D_hnmEMRD3kGopbz6=IW;R-8q%O7Xr8tS$>{A> zbY|o-c{ZLFGjn$I=mj~4gTG8!mIB##Tg2fp@BaB<&Jv|TlG;-j{}or`DmRB(xlIu5 ziTXs$`!wI6>1-2C1hA>Ul$1fjaWOQwqegKSlhh-lA_=8_O5#9TP=(j^5nI8pjQ5Pu zBBuS{v;q4ykPLwV#73!%#TLX@LxfHg#1y?k_mmMmaF2lO4kH8^Ep4^Kn^bcX9ge(U zr!pw2Y{BDGWbZ^wVZ?k%jPu>$yk5zyZIm{ViNs{!%{8ID)B+tid?U_Lt7!HV=mT~{ z!X_q^hB4JeQh#s!Jv<1&WBupy^7f%bMLR{Ps;Nwpv!

      UVO+#vzw51Zt|@%=Fy@> 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%0A1jZRggSKFTHrqbY@HbBo( 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

      hr^bxCS7xgBbKCvIC406 zFLC8>tE=i*C2R3GSS6q3(xWb?hFKO~dmhfy>;3!`^%-JggB?s_Vg%)vI`yd$Ew*;S!=$ArRBz_F5~aU(=7&yOKK~-G0Im6adArcU**iVqRDcS>^IufKnXGDrJ&PraKRJ!97(spRy>J z$2Y5n86)4N!UCiaCBGDmh=(AiL@>5%Wq$`{5SuG^#T#Y!ItL98m>h46!P&D-?L;pc zDAKI{xD*AxT}p`c%2`BHmnJMnpyvPn^vy=A^W1v7cH{e$Tfy|=cI;Z+&QDq%boNCU zy+TKs6>kKezGFSBX-8suPW!%qIXb56jY=<3yo_e2Atdveu@|-IXU6M zObIl-BbNF*{f)&8#B8|8HLStYSE%u2U5mo|p0sbwC=0I6KlO-6{^jaiF(G;TA0api zcH0Zzxo+d@UaQ5T-h#1{-J{FKfX>bJNB4|ecy-KpFu-C$mbiWfjLq^(JOK_t^Zt{X z1I{~2-}m9GDimhR<3L;;L@s14*;XhelRGtHx$R0`P<+V9d<{q4!}>cP-*W<$~O8nYZe0$C6?PK3s{5Kv84Ps*PJ1_PC z{~qxOhqz8f7@n9y%c?kKEX^CW3^S*H#K&Uzx6idJ8y`=;*#9h5-@wADwr0?8%FQH> zk>Jz9#l9U)tPRIjz>*`mzB2fN!A&?WP&#>1SsQD30o>4bQ9qTPVM#Vxom7Wi3cJNJ zI9my!oSwul;TpH_eHsDL1k-m$7c@tgoylKDdveTu&@mb9CFz;lK;}@o@5H*!d^A7U ziwglZ0Rc$t%nXv;CN1&!%qMi>uvkJKmdHS+w5Gg$wEI}w)oSq{pjdi_5pgi;h)d9z z^3iY0Inkn0pFajqK(*L7gYIfdu8eos*d;O1q(SB?)RXWQa(mrEG)l^o;Ug*EtRWNk zwuf&$!-|qDgrvk%3P0mS`q?}GR_9m6u#Z$NFpXLMNZM3epdqADZMl^c#{-b!l!x-T zj;C;&?%T_x+?ko1lTU0AKAFkmFQd6Vw{3hy!XMpMsbG)fBiA2x@BThD$;A29T>JTu z(50vvm@kb8AGc}_V-X7@5H6vz5IQE%>@$SDjkFs&M2p_k#}Le`mKBI}5#p>p$h+gW zA)IE<^jlsnCtjZ@yWw%DS#)6Sj`z}5M$vd)U5(v7 z>C>7T!BzgBVO7KzKd(;eavJzZ4Rie_+{xZ>K4(^a8KZr)v=W=ebX<= z;+?tT8`%G>n{~}aDh=2Pp_7M&oxg#^K6WKeH|8)Z_SL96IPE^MS6z30n5-{ElKC;O=3ql87d`L3&0oS#*hAVL%SBV+o0=rHu{QkHss6zt`h2<^SDG%pED1t<4$`OO zV=T3bv)<)N`X1a|^dPv=3ii_2Tf+^8K0o`V<|4yv3If;67L4AADmfNlr%CQ30|1YP z1~bANz)2H@oqW|+(nLMO$sU1Wl>NHObXlZfaV?V;6F%BQ3ay5eh=IvQS)d&&79Qj8 zwsIM3{tS4?w^#C)3-9D_8tD9y@gZq5IXO;K$!%>i<}29(RAg`ae(3*=oxXi|aOp z{WmVx#FKhXuH9+V*rXxvwQ&?<7XV2dRD{mJtgYy9@nNVq7R;wt|9P{HFblaK=Q_fs zYG;1kf;0}T`O7G&SGO^t=sog?M5F(l1TAx{xQJPBJ@ZPXi{pw6_jn-;?B|YBm+1(VBne=NaPC$v9+Eii42a~y2 zsPVgjqO;$q>gUQv1Kd<@c7JT=vLoZN?C@{R5rQ#+)$=8hvt>^=W0(T(2)U>6@L)8g z5LzQCn5F|CaF#P(^D{KW%u7A!Ioay5adq@Kpw5w%Eng{C3BT-(S9M#LD6zb!CjGsO{Bz|fc_VQs0Ern?a{jiJ&6W64CPALk=#`=M z=M7ejtr+?o^xW&1?kZf&>42zZZ?ZJq@ms;^R&>1H?=8_;*|KwUK&@XHyC&GYo&^yDfR0-v;+v>p%YmYU}hlmV>DNh6FC;u0T)q9`pS zS-4&OL`?yKi2)Gm_rfx8M|%ykI4(2MX0NE_}Qn>Ug~L4!&Q?a~tP0U-xeUJ9Mk8==x7n5+G^iLOmvjBS3vI(LA>12y95{ z(+92y2d;^9DZXUY`TN!ap#hNJ?lZiJM>W@yN!vZ>jdsKv z`-GWSHLv4I%40rXjf}*gGGTSLxDO^klM1B|u_FY+PEP~jjORc`EkO&Gx2a=Tm)Z<= z%d}+5N{*DaYFNW@Zu;ql%DeL4ioaE+8`|-?23xiM+ZZo8Got;WFKIatG06e1B`iVN z3glpC*+U!Dz<@=#e1@C&$Vtr&6_j}X9^<2j`o3BeLh(uAAHx0q*Jxn=YuWLQxlTMw`~{o0k~d3dzqAm8RN?>0b*(H~nv~>qK94~70mx$j z005v1hs%>jRni51*uwlRB}{Ls5h>4|sp&D~_7}bk1o5z?)I=)*OqGvQ&j>Wt^=)q^ z7c}-NY#C~sSQGGVQQ@58*b-~DaZ%49;6q`_UVEpOSdK0u+li6zb!RF~j8>P-qMVVg z?ef{LX^2*PM?r->u4u8VWX69o&4IbvrL^7EaKb#zW8v4u)-&9p{P&MMB<-f+@L$Ri zsr)}jUWCOc=CuTFQeh%9kdN7T;>=Nm`i(sEr2fny*0O|>#beAp)#ZpDGI-slX!?Fz z=G2xSt*x!Sb4&P)INuz9LWByVP9(x)-&P>6Li$Tr8f*Z%y8<@n7OtAaShq_bSZH)H z6;K)4)ldxN|L#3eB%@k4^aI&3MbE2{_u9HO;B;|N+J|&1gzO6dfCMh!MzQ}C5j-Gy zu@IH+04%h9>nQ)TA2V5^tKX?@1azmirQMOCK|E1*g@f-Uvf?Zg!R7MsK8XdRyxgE! zo$~&7kW>N@x}fK^A{GBd&qz^<{jzB2PfQ4t>YHJc?ZK_Z8s&~(trgul0Gq>RE9mc% z-3Y>onpAq^ycO~@B8$?3ODnV!av|qoV1zhmQGRS<$$u}Ve=mKtbUAZXBc7z9>3TBg zaDQ}3{#C9j;ehp>w$F@n*-Wz|&sCIs`q?&FT$)bIn$pEeTU~3<;Z0nv&+}jdK8;Q| zhr(WZanMw$ZXg?=vSn)`mK1Fj|Y| z|2R)o{5{PM(5`fSn*MKGPCC$fvlks&5?^;|`2i&aER^G@Bt}0e!+U)m&cuZQ0LE~p zWV12{Aek)aa-efrRS1XQO5;%t2|d^To+QaHWd>(dJRH9xsGk8=kHz><_U zpz72}-W}O$;AQ(W8>NYGc!FTJuPWzj=TxP?GI`|zk=}7XpH-07;1l2@?e?mr+zRCP#CZ zv9Qy0Fye!#v5DY>f%cV6va#>W^2bE`c`ZlZGlXKwx|?nDm^z|C+IUl+qbEhb?oyt3 zO2bbIoeGYYzN95{Ti@|JBr&7?>NW-2Y514>JpT(A5s?;V$Sci2H6Ty74Yr@tV7&O7 z&7qphZd$vm#Sy;NI%jo;e+I0yQ$^v zF&GOSqUSXOwell85J<1K`kySue>$?ARlgOK+F3R~6Q+bx_m ztyGJ~5N1^$mQP-gF+=VJnR5J;g1v54;Xaa5Z?M_E4 zy_2uRl-X!sRiG7)4i?`&H2cS~GjSd3sWL;#J&Aee-YSGM$wdk7oqBtix)jLB%Wd_H z5uvue-^q_!um@fa11VE^c$(R;8LgkBTP7cdTFS$Ew@073u6rOld5(SgcFTm9>^nS% zdL{6nE1OI0whglW>yU16a9;U=pqK0o3zk!~8hhT6HH4zBo#);+p_*Mq{pIq1`T8Kh zzt@R-j6$JXs`^Z)=!k)3TT+4tZ7_I-RJas2sjKti>%=?$jJ zBoM^}4I6dqFPa+-5)uFeK$<~9C#I#!z?JCr7_bhtxnRA7{(4Ht+(~VYA$EtNF_)|` zP#iTJ?CSN>n-!ykv9DHkNI>n_u@)+c*(#7x^?8?6*oRkSOJK&9IW_Eeo@mj~uO~e7 z>bjECM3gj%8gHmffpdLHBMGeRAK_NgEmEu`B!hpk>^6u&IA%uSXEqiRbdtaG*%ByC8pp(CN;VgEbKd2?Sw zX5XQFelUAA@LGVq#>7!u+3V;N6ZT7FX2xcDC3=G#xz(bZthl}x@yW8$J*S5|Ol%`# zxsi#Xg4H8F_>UG5%M~L;!=y6U`2?1VmTF|_OiUydJVwglKIdU@hpmt+sy*$H8>@-_ z`2Vgx*laDFbE~CZZTX8%1c6x!?UlG@CS`b?ABJepkVGZY#Tmr|Fx(-A;zM?kOl8J` z*C`d=XouRxDAXHpbQzme#VJs{6U?4qb@86X_wR#~`bZ39eaa z#=ft%1$Ro9%=m<@|M~nFjU6a}AzICbHXrChQo#nEsFZfpw$P7bjrG}3E?ZhUn#xW1 z&a+VAux!BX(cfcOWpm-(P?uiyOeXCymz~?-6r9;<*CEt&yuzoJ_Vhf?d6lW%G5UT$ z_V3q$NKG1>5BV@8vk(A)mA6R8EPACcW}-%x>$Ad*0y8JQS?|s)7Bpnf`BGVoIL$>csP=p)m(k^U?a7Bf9e9_y#;!F)oEZca!QvV=rT z6cbUE2kIu+qx|)~Uvw}e!A1}NHquF>I&sT(8!`JSjg7>|Ac6Dy0^VYJvvuu5W@0I_ z8UQ#5<6ux!Q$(T*&BswQW9)E(pmF2E#K*km!`cV$;cVOWCX&Tn`0CPG%}9H!yV;mH z`nW9zHCl`27O2dN+u>xUVEAXLx4D#hi)Jt}omhzg+e&SF>_Uv3(%`Tdr!E}mO2IFX2-AO?CrN*Tr;{K&^9=pRMup7nIt7V^K`2T-=nMlU+_ zE`$BjS#gv$m$A)Z`(BpO0{!`pAW zYa&Oq&tZ4Ri#j*#oaDAt6JOiRfB#P37_gmHXB!sXe}!b1#`}tIojvi(N9yNlMjnB& z&hLM=YbVKW)NG!u!2$T_02G8wm2FJ31@}c{ucdDJUMu8D)6Y?nvE1fCN4oc8KX28` z6(?TmcPse!Z#VKxdt;xy@`H_M*nVr6xL^5jbysqK_EKy5!XD1?x{XJ)>xo$~!vg1S z7w^%N^2pdkQo}<9_{u5~yjCHC*#9NkLlR=gSmjDy4{lcTO=SLM8gh# z00rKjfM=KjNIlN(LPnRmQZfy;%(!RtaaR0AG;&PR9wiehbqzQqYAG@lE?L_`+Df@G zfC-8ueThARIp_SXq_BWb9@LwS=#@(KH$fw$hD)KTvF{8sK)DTxe+GUl_WFmbbZ;uP z=X_0lpQ+R-Yu~M*~`(Xq2p=OufAfC z1`XOYkFm0qN$%!G<{?NofDz%ddL^$Siw>Gew(nZFq#F3p9-B`qWIGf=&WE@fAdj?$ zSn8&enabyS(d0Twx@bqnn4%a)fD{HZl^!8fyzvU;xR;h)pf#}52k@3;NUL_nY zrm%wi=0gyCTS4s?LAiuUqf$9_pSF5^CCQmIiT_Z7$Oi*mi8k2vK(Vk_>Jr+T{M+iR z8k@br<7)^3g9^9$o3-^$eLl!Qii}qbCVD;Ph!ZTih%I-Yn%sZ{?Fgsct6E~jb^y($ z1((GkGo0T$N3|KlK&Pc5u_X$ubjI>DvQ4NG=P@^jj)W%q9I4M}_>ZbHi?6)kDggkX z5Q!s3qLh`4H|jIAwlMb$Ggr;9tzFi%jeY9q=8O%RXi=YnD-&#OQQ3DDC2-!Q{_dWM z9tGih(K1D}SFLH?t0+h0e2-T1P*hd5*nV{#IPrh9+s zqcWo2HyeH{5Lq}gABX3#1t=FYl%NquFCe(60WHR}__7Xmt4f z<$aOtvmdKdQ*}Qx*7u5{+-^!bD{>5ioh>!1VypHZ%?WuM%BjMsCOTFvP>~0|S36PO zq-c^>0PnNG8dur zJyV)O7?2Q68~|V(<-KJ|`CDrq@Cf>@o>IgwH0V{A*e8HX=9`^DXRzs??H@A6@VYtd zbfcy6-JSwNKL6205iP2P`Eu5=bx_WAIc5h&q3!sce*~Y0TWvDFUw!ruM*xG*j$m9{ zPK%A(rQeX2R55YPTc+dCuN8~Nq`HWdML8*#^<#;(=CT_fjYPz~clP*am0MP{^i=O( zilCX40~OwW9VY1Ycex8<_GXXHppR&2LPwwUldGQaFhX!%`#q%=5P;Q9x;HbV8ivsf zATbnn4+>O$F0NR?nMA(?g()AU3rpo;b-6qGI{4S3SobS znh0zs$br#cd$r0~P8jicE!;! zdoX!v0T$szCt`-l4^e8ly0JOb+DKQ}W$BOs z)6l37jDLour)#($jQ@&pvvXknOivm`U=n*D6=T&` z4gVZZxu(TQ6W;6d=yE>*5)uGUUPd7WXg8*sW+NSBpH0WT*EQ&kZ_nUZNa?gP3N+poyfZF#Gwzhs=`pH`M5j zrSCA1m}?Ss>0{^2c=&I-FX#mp8U14k3@7EOh~)0bm$SGw{>Y>PX(4sbC3aO@E&if4 zeTu_^3q!Xj5z;$9bk@UFyfR67P?9KoxJNQ*M=b1W*{Wf-A(7uwhZugmRhPCFTjDo6 zqpC-U;4bJ-$Avs@OeT&o8Ivo=U5IDQ(^@dX;Bu(w9@WKIg7>$S1OUpSMfNP7Z{*TH zWUXuA^EHEae#ACT?s-3wYT5}y7TntL30ViLuwD|g#810+(~Um!=$CU?7&I>ZnU*Ge z1!0gVFy4AM-HGjf;{Vp}a%kvlmFWAk^YXMRd^3$=kvO!^1qr+w#Kcg3n%4@gHKYA( z)#QgBIKj-he#um}@F}WBj9gX~R-QufK|R9l$dDvvkrE9JPr4|s5iKo8n$;6otl}@~ zGLa|~HlMmyaYHNUTd9~|ak7RkDE%OPHCadVHM+S@3~T55lE-3gnLVunuX z)uoF+r&)EO5tpAg)=T(nM5J1D+&=PtKDujuYq-ANqE6(s_S4&Gk&!q*$fR>hed+xN za=r^gmL|ypW$FlfDEmmo9857-$1EyuIz4zwSJ~{pB{ZescDv^%Dtf6{y_)7{CK~eb z&g|R-lG4r2$59M^fKr4+Rc@q;4W8c2)eoJrX#AW~rFU*Glo+fuH~6X|f$_Zgj`cz= zM*XC%l1`Dp@~-Q>uje@?16(|F!}vl0EhkXIeS?g4LQH2Z=8tbv|IXxAw0&INdz{IC zjLCxNS8KE8u7++9Jx;^d(gdgW`Q-F>!}LlGpK|uTtEVg9dRIN(lND4u9mw#!GjWz8 z+*|>mg;2_iBO7-)2+-OI_AOpZXa3}fz7U__&fMtjHlpzLa-6cDm=iN6+*`yLb-z^~ z{&^j84Zfjc-4~1i@`(OORk1Izr;)|m>qM+ED3#V2r8bo@&^*AG=tQkeRg=ns&8nz^ znUZ=ZYg)>r*vS!YKiSdhX=lsszFXGGNDXb-L+gIMy~)xiYL)A{n1M$DlmLKg_hpoP zy&d7XpwrRg)py4hjJ{qx{mM73Vg|TdwFYF=%@5GN&hVg)63u*L_SxNd67L^3Gj*6M z-#%8PO)C?$RgeDmM;j(V6aC@uD1KWW!_JM0B?tK!HMpk}C$JNZ$D8D=s23BT^xRgc z?(1T)@O0Vk!^8i8H++y@@c+>DmR)f`-L_`og}Y18!rk4a@WS2Qf@^RI9;9%0ch}&q zg=-);a_O^Qnshl1Fl3gcK9U`3tjgN03& zvyj*55+q`JQFfV?pvgunmweAtuqofGMz@-DB8A|_Cda&JLh$QKqQTC@nOBCK6@sPi zNBc|z*3kdgy*>Tx$1X>>*$(qQ>N_!)l<$$8A(qQ%fQzbX$+Gwodb9Ojr8nrBzwqVnDiy~%?gCn?CQ^qo8F*-*vW%2Uum6y~0Pz3bni1guh}qWr0jCNx zscg;xmT_iyhb<0sq+}zSt=AVZG{1qkymSQM3hb~{g^=QKqM)yJY^wZwkxZBS*wgIw zEnDXNE8-I^1=)7b%#=E3U;C?SG-8+(`7|6_N6?LozH)5qe!OKj&j~)yO~65u zI`YIJiCQO;C+FUp-(8ud8H&L3p@Xt$*fh+sZD?Z=VxMG5 z5nz|>DJIfh>71l*cGkWp)g*Ls_T&(Tv2fzB_4$&PbmG*3{YXn~Go{nv_ z>s8tFmkM>px7oB`ZM{*J&1+5XPvS2sq>_do`2A)cUhmt+e(5^G1Jk~ArYWgF^3A* zEns_|Hm0&wrTG-WZ?w<~J8h7;mioT`(oK}xZK}tC>D2J8o9xfqEUU}J*pWS-tfpJ~ z95iB)2Oj<0?i8u1Ny?@4?9$M{VeEDEj_Me=YUD<*i%(rtf>uhABy?Cr#sc_5G&RRLxzae}Ku8L4rGp45R zb@tbrr?1UiMv$e7;v;Y^Fe?8 z$BJaJ9hh*KZjc(V^_N%@dF^c1V4|b1e1@t=D zMVhoU%-3rpb1y&9u0(g<68^Qf{59!D*pj?zp;V?>z>)Ze#ZXkk=Oa_oPo}L@gBDxgYAWxEB<1gF{%B+ogy)Zt$E&)|dR^+7J*1 z4C^OR5cCxX5ElHHAyUwQOUn52L>tZdWpDB>`ZHbB59uQLswzVJl*#K!2{x~CwY_uv ziifIS!}gR8GbNyp?0jhC#Bv|^gVY_ZQ8o77|Go}Dt3EvI$J&NCFlA1+5%VOnDZhEw ze)_o5-(@iy=u+%AJGJ7jLG#@K>M!aGe+0N*!HQ-c zxRsKP2Q`^7kc;or;@Mr<(sj46Iy2lt=1Fi&6^dPUsLptK#!u<46JFhqZWb~UUe2Es znl&7JZa&@2<2%zU%mrDu@xd&p`znRd6}1V`JH9@J{WlzXg6%drHqU*=+^no+>=^E0 zmWN{bsxqYY#^I417XYsem6z9+wL72Kdc3aFOn|KECj7zc>2G-!vpY7c|4Ag1{IzD? zOFfl7twX{lDE~LgGk3fq#TJvmyTKigQn!LXECF63Tsg=kj9r)=_t%dJUWl>#w@+T# z=x3bkZ3V^tG}fYLiKR;y0%xL!TIBYCMW{syi;B4|?L(?l;LB0W$rura^51wxGK=DU z2RNxTX>~NzLsQjEe$_Y+Mr6T^DZB|xH(q)h4coYd%lb@y@rHS8=xJbE@OO()SzmU} zzRf8Ok^Mrmx$4M}7c?J~%Z}NrCzc}MkG_O4zE&Mo0j`-@QlV`QraBI(Uuya%ge9@ps_LKQ^KN{qOMe%vl(K3IL|B;$G!LhmlR#XRJqb z{@#^z8O)ipVK7^G&DH)mRu-j%Z}dsxc2+-Nu*y3Upb0^DcMq2#T@-ty?}BrGui*eH zWHI?p&Wek3^Z2=`7F^<)@MU5V;buXojA*ag>i;29w+>mlNP}Xpq{i@hUwpv;f5gr5Na-;P8s$zdOIs&<#4`c@?lqJmtMd7d>- zkI?dQIE-R*!BNmh$gtS889Kz!%&EI1YdT}DR0n4o^zGo&+kGvfIYQbcpY-$YHJK6$ zl}`|fsyOiufY+{4ady|** z=jkCF__XuZgXZ(0dJhyM37Zwm0@lf(HNcRUk2jRp4BA~?D|bO!OzZ`J@!cM-OH-%; z0A=r6HswPcbmVcwq$2*sD`^O=7mk8``z436ikxTo6>hgl_HsVcWTX ztDieg*l4Wve@(4JY`1-CG`Nxb-8!Sf$YW-TwMbkSh6n@z3IZ`ZjJgXr@W(|}Hg|k- z`P>V1u;Y`s=KNSJ{X^q6ECUgMm%*V`srg@WH|c+V(^Ku_*nKfG3BIT)LCG02NZ;VOEd9>z?+jhh zD~Lz%E$M{Vl?fI3`ZN$2WmWry;ZVct6j!5A!ss{(c^Xg-6^$F%-i!easx&`GU8?C= zSwx$97 z;ys&zwQ$Q44P=q%${N%eC2MZargw^?DvQ2NY`jZ6?Q z$!%9Xz*OcsE6tnfGt65Agob|(x!j+APJi2;H*%7nx^bMZ(%5lMKr}E|YgMH`Dw3p@ zkx$FnpiDMzSX}o4AXd|+Q>Qb2N~TmoGCrMD!c+WIA5xQ{J|pLX=5ntDj*c}lwwgCD zOQYwSn$>USZ5wqGzr6$&oHdq@0q;6lTLA^1^5hED#`dn*t>rGl&#c`25!D0A`Nv_F#sAPR+116XXSA8^Nr-k?TOWJV+i|+4; z&u0>5=pP^GCjfxY2LN~=k{XmGq71UQHXe-;cKULKtS9iPqN?QTjXw7Y6q8O`1$pFm zYmfYDm9_wJh9x2LBvdZJMJa593S`w7nN6t9b>lGt_mBqIAecOwio@$tC*VBtHWazO zn_Et$D&~uMu5Y}j8AyUSwYDH7&rmUm4(O$7c|0U(y$@4NRaCxo<8o z_*Fd=Dk~_-79oDh@Z5^)-=)?eW%#1}*ODog-B0c4!>d()81;84007XJ<-p^LS*bk5 zfNY-l4KH3fMeoZ8tS-)p1JXs|=S)F}(5 z*s&X72WLxVl6fMsMCLKh$!A@~DM&X?G`aI(g5UHA3q+kUNd&4xX1j3%T4rYx)nT7> zkGJiXa@mZ_sJvEao_UGC4SuIN_@Dl||MleP6U=wPSG)(QnB;!kpk%zQA}_@j#t48NLfiTU}hRy!_@Rpyn@!~&OxQ-DH@i@-mVTN?T`*}tb&sZYrvh0f4Q%HYKAH`A7 z4ppthe1qO0L5srpP5)|VgzV8MzvRD;@WOc`C}Y#F-~0loVVjZCsW=vX*ugdc8~_rm z8k;@b50`>ee020>G_xFVYEOw(V`sP-o}Sv&{MMB9>yUmop3N`;Ou}pe^TI5kxz9u8m!e0EC z^MX-~Lk(bFb9j(cuOiYtD2Te8XH7qi(#$2W}&}#q2yLM!wyPmiXV& z?>Ep~{G+@J86d(`Nep5%%Heua;TzeSjtaNYa(#bf1YRFu6c(#>Qt^8-2keLBkEwZ0t=c zQ8Bhg6k1ca#ZHi6av7*oic8dHVJ4!^}RA)1v$8w=CvFsYA z@#S2=vydiDU7-{rSa$b&oDmzF_qVM}{ie5EVIJOZ8fmiJB1p=jYx`0oN;X9UD>4c| zb}+uflPR|NpG?6%4rY#VeBEE_g95oh>X7gvpGx}a8Ld|K>Sr>4cubk($~ZU?Xri=# z6A|{L>|cuG4&2Wo)-*P56P`n`xV(b?s2tOV4>-aS?bG$~z;@aS3}JL` zTE#gWvd(~t6TH?rn`=3=a^kLwWdSvDd+wj{iOhW}_u1=Q40$Jq6_e9y-vW`S8mm<3 z3tY2ab{t;_-pGGYjKNWfC~(?$=|5g?-&LFgq!7d4JR^%$6BV&>lGWx{=MMUmD3ZtS zso@P;UL%bi2;Jrgq-OL9cTz4~GpJRebs?DYj%61xX}PU?B;f&`S^6HC94k!r-+lXG>IYW)mf zsp2=PGt6QAN@oZzWHvdT#s<~sggO&sB=woj=Mb~Wd6ND6ybv2cI$BzOYYleei}()N zC&ULl?F!!_Mv}*LC;IQdGAXg*O>KC}yX2kLcCQw`R)!d%WHo!(ymq3}MX&Jp-G>bU zaR2~#@9?B&+qUuQC&}ys7(%~MS;_ZWFiAeEF8)%b+~D)2PM6?^`dtRl^^=WG;eh-D zw#uZT{4Iv<^UokfK7|gR6BMqdotvgA*W7+ZC6yB|hOu9(DxF&FXSc#1XIJY{Yq(*K z=$vF?I#&wLo6gac)*l5r(0hbQ+KnJvF6SGb3DHr@DL2X`9u*les!-7XDX#y8ZM8R< z2C3eqVv-k#gG6u-le`$qM@Q7SZ`>bqgs2G+5s}7eso_azLnsXvlqvDbx9!<}(aCk2 z0rT2OS}h7SMrx7GI_qO4xUZxuXgJF7tY-$~eC+=DDNs(^9f;$IfD0kGN;s#IJd0fI z8mgb004F^ya&~<;PEN-oG65rPK*Hb(f(4%6+@jzs`}yAfn%mqgWvO09r-$|U+-RGh z=O>pudWPt3{$E#LBEht6qSXY?pT7Nc>*Qa`v}x+++HpG!5!k;B1nv^*t6RcDL0K6r+v za8x9)PexGrq%$U-m6H@%<5=N;q-f2M1Ad@NOw#MKnHEo?zQILa_x#w!Ds#W6VJ*Si zD7rIH*v>a3BLxQ_ovWi^i@2eOTP|r=z~dcC+G=Js_z;YcV;zssRfxr>BnwDliW5=Y=2`+EVF38mvd3jsy?qwLqHVVHt(@lGdmBZdclRsTT=j@J zL^Up(1|I*W?1WKLup!n0_ac2g2*)3IxwP(hqD4hr?z^wY0^_QsAJM!jlr)+W)}Xh{ zO%|pyy*M+R(>AYSp1n`5Lh3;s>%^a;u+fVPIH8ZJkUL+nJw$fh=0e>7E%5^j`POZ;Z;K6w!wh3U9D4!ZSjdj(wj+ zJ8D<#f9~jwr_#o+Qz@^0n;o@IxtL3rsu%yJT@90KXuW8GrWfB$bCpO9Nx|h$)`Mhy zkZpL<#u&<qp49P|ffzKAv!%iGEm>M4myy7fNt?lq_8Luh1k{mmmm^$S`o5k? ztMhQj+)^-}iqidXyoA~TNd3|)oYXD;Ua4doH>30S-@-m_X58dDoHo|D+H{&f$7_gq z=JDRD$Wh#e#-K~DZHV6&{Fk=kAg~i(>z}Xf?iHf=OmXt) zE>S~S=$$m|qHOX6AHftT&2|*M_8lM9eQOOJ`aD@@@+DLw-B#jvpf1CWffW_3Yp-Dd zfKHemfkRhL>4IhWp($a2cD0(z$K`sBod=K0_jUycOL#qaa3{6`@i1u|&e++BDXDT? z7S9X~mQ)=FQpAudxLb|%&UOr?d% zHK-BFPr{@WwPCjq>W=-O;R(_<<_d`p-@L6w{HG1J;(;ogf$wCW{xB&cObHIa3$==O zMJAd2`+Og#C03Z9hJ3)3u7KCWL2K0Mw{ZMJ$n4N0mw|p$u>rk}6I+rYXn^7P{%vpx zg>cGuweA!_l%@EER8jTQp{j6}lmrRVe?VzaVbD#o%{ zD>~_~*^!@fK+NU#RTiL2Bp=2Cf=0xrqy9z8iVE@NJ7*7j;(E8yfD0Lj437{HCj=Pr zJH8}|7$LfsLgV5;jcEdf(^YUJF(Ox=*+y-URC46~lMB5l7Hr(EL+k55jZa&mH72o@ zdi;ATi-s0}+7_6KE4o3p9d#_mV)MPiB=3uk|7kg=kFfg|5X&E!!q)e{>~cLHQCd*p zW!u>=km)@DTuM52ayv>DEaet~7ArrJ_Sl7mJi_J8yic5#>uFR%kAC!GUdhTxF(ZHT z&75?0#Gv?$05aw`QAAoQReEkOSJOWEx&w6nwsR+Y_)O9*^F6k82yAY~dGxgW1}Z6pFJK~*60eH9@Mto}BpI&s(dGi{FKq%^T#$anJflO7S93lh+171_;DkQv+j_Nyef}BGyNO zOVRbr*8csRmL3&!+|+L!O|Hg`koc;SWH}1v1yS5LN>I(W7x9tF@^<%fpDM zs!YtB(#qa8TNVDnmr4&WS%bsGC~TEV52U^o1_7(jX;j$-_35vZPG83ws8eSjs!qpn zw7nK%;lKU#ScDLNz-qPsmmIa3*4P^w;< zuQzYX&TU|1ucS{8S!w6Tum?5TKhIB;v8%2+29)U9rtZ?lbyo>62z^HnT+Vfhg_Y0w zuNZ1oo3&JPyUgX$N&OEzbQil_%Tu|7)cPH5%a~7Eu6ZtV-0UMl?XKsKId=d!DQb)k zJ_KqhQq3vmwntq%I*O33j%y?IQ(G584xa^b5@{yy2kEGiw#!Dl8StMW?zP)d@KKX_ zis9cu7VhkVglw+6Z7-sjts^4pky3DNl`c}r@;0w{^I`3x?f70IrBbYBe#)bGQ-0q% z>&4)Aksu28(0^6{CCRt(eZ8I^n?Km4lnvfB^n*$6q!FuZ(Nap#H-MODZkoq=snaMs zi99T2FXjtj4uu~~+e2@3t3H-}1~Hd#P7LnlYv=#H!e7{Ra+JRowCPA+>WH)%To&ts zA2rEAz>O3B(we%VU71c1Rp|2P`Zb^jcnJ$pUWhv>jHJCT<+-cMqO%iL5xw0V{g#Ei zF0{qWhyIysy^nC(eyx-K#I|x4_7WCdVdtNoVgOCa+DBFsG|~|5GfLWQ655Wqmpy5M z#Z&%q^?M$Q~rS^Pvh^HgEKQwqbLvU|;K^cc}2!wZ++a=GqFb)hCq~ zQLZ@rBke~r&0Q&O)mo6^i0r~4sGTv;{vpI%-CVL^^W^Op2V`PnzOFuO#W3_%2V5vA zI849o$!10KW}hcNm=6GGyPb_};sZAj-&THBSgTB$*{WmjJFF}h(;?-IiM%Y@vZKFJ zaid3S%#U{(zZ0Q9{yk+r5O6)HNPr&o=LO)EQgegUAD&JWrxhHOL=(h$4RT%|la;7) zN7L-1hM8Xe@{`C8Miy}!xuL0o>!^1V7W8~Mu|^k*knvb*kOPiiy6#4r+8_C0eS;4F zBOjvJZio8{ES0F57cUO_qSaF1$i|HiFU;$T@tC^>kYYC*qJT>ki6#beRFK#2Oec|8 zd9o;+L@OMO&~1EMHgLY@Q_&mWUoHB&q6ClYeR+haFZ1$nmDPE#kps^ONfNRpI#wz!)UF1uXs3$75SStF=+8Y+1>ixgea0X$X=Ke(#iRAgCDIvMqK9vLd^@%9pGk)d} zsa{i#9nH7SC&OG(L&5g8w;Q{D)>$qj=L)87kuh=-o97D&N-2}OfY!%yLF7@Wch>4$ z87Ikx5JQSj7!UwJ_Gu^L=B7Mn-*IB9vx01?<}v;)<9u~-I2gFFG3ec8+b6s<`B`bn zRN*T;_vOk`aIe%ZO%$opho?6_IFV^s;g6YWZl0p%I$3OCOO?!eB)xuMbppKzo}u-a z2*GKpLh-p#bPSR7B?}G8i1;MiyUF_b>?f~jQ1fta@m4qHPl>|!!C-f9hf9295jQ@G|-(##XR>qJk9{0@p zHz)BJH(dF$V7cu15d~hi>c<>z0NM~doV;xF2PB%#9g;Ep6*@boMIx-2(umNB%e+Hs znDr_Nzb#Go-MA*1nXlcJ;}*B$1NBicF2eJ#93IIQ1PszC8vKt@@Hlsdh{|%Mq(PWl z&6$x~JGcRIY(KNHo$iA1MI=TCvbTbouEvsG@@!^yZu@eY-a;l+h7&3!UBI_4cHUi* z7YU>iLl={w#Q-M2Fk+1sT&%LdQony{lyU=AmAY7rzo~gebRr99()@u%^%36v%x^+5 zE|U_6XASHfx4VL`j}>|Ni6Ng|-?L-?1WO}mN<}GN*TCZ}0-zEIBP2ltZ>fuEBEP@A zNZ(QoPmi&r+hEFL`$f^Y?qAK)M>3kUV}n%Kvy2J|mR)hAbCA@XwiweA=OW4sS7LTF zI=v|2kjnAm9p^MHx?OYz$$@khah-Y~w0kW?O85~$w-&_MKf7EmWjG$iF;Cjog&uo& z7b*@R+G(CMQgW~)K}3S=RX&)F;c%ra7QeTRiOX$0r+KkkrK3GBu@yeWze1A_iB7~# zjdI)0dPg&yF3~EkE!V<&(^Ef+%Rp7DvUsrmV?bualFM>Q_Hc@GbUY_01Hiy_9sFdft$;G_!S=7sA~!iLRGA|TZ zZ`<42%nb#lA%ZLQBFk~J) z{#ybl0|4a}vqOlzA1Hs)%$X0a)q7i7`7ni@l_>V2x*75J>{D!EY^Y zEY~(QLx1T&!_N$;5xlxMn6>X4!t5gBH5ViRX=Sr&2I>ijw4TVPx>?NT`Dr(r*4rj9 zDwj`DFN+-P%bJ)T1gPul9GktY^eg?+qm=0is`83ZQeLI|FJ*6onh_Ba5u5FH`cU~(vN4Q}EMqdY3=^DO#O6md zd0n4k$RM@)1A&ielkq1%xTik+jFSvdx>BKA?Ge?#y>YxvzE0XXZ9JIu{m5K}vqwj< z$xe`Nfs?P)QQ(AsjZk0v*vWjPYLa%v$u7w+~7osqTnhYJAkTU2pq)C@(eEEXsALFaxy>1xBc?F;b0N@zb zy;VBQ1`B@4%w$w#Y^yZcd2?Y%>Jg$RjZ*_#S31bilk~~L{eonwWLx6A4dtqmvc9i8 zQf|3ArV&LY<0K5SS@@ta)Sqq#je=_)YaM=0)k;zSN~zgG;>+-qt|AGS)yG@M(n)*uhL!fxAriO}oM^<8IfVT>U6~`NLD% zxbhCESU@bYpJ;qdee(U=-wNXbY5m&uR6a9eT+q&RTXx&eq50009q?;X5#6|y7*OH%e1i}$HGq4yMih||IIyeHl<{x*&MmmI zVm>~`{)K+NIJ8}Ykv0!dr)qUXQ z+C>A$+g=NrQrK0|=8z!ZgC&xaWI{@CR=E@clzX!kz+_^4*9CsC;?=62Zj04Ghc0AC z&6S{U%4t_$nBiD((W9M`)*a(BfIGN@;N&(}#bg zJ&nPN8;*;Vn8ZEd03ZMW0CGr|E@UkYZB5me&i}FKl8BhE8mz}QO3M{_WP3LrBs^ni zp-TyrAF3(8!c{bJGiP-#umno*4@gJtAryqg$_6z|f==a%rI%5J$4iio+5 zMa^bPv?bx+=XN7)fQYK>K@p!y3U>d7k^Z&sfuWSdtizD)DqsMRV?&p1oSrZ$ugUMo zmDYv2Z24tq#e(;ax}d?kaL>Av&X*DH^d8|nwUlwwsE$`zk+7fh*0x2hV6qyeD&_@Q zuC}h7V?FWdN&#x{R5R6a&=@=b0D#lMZQ*FrD{F=Ep{O6_v90R12y+miMX`5?9Qe9n z_$AgA6wTB*aWo%~s4)#7kGr+gz0UYe6UiyZ+mO*wXpIAydYIBSH|(?RZVf+g5Q9$% zqD$jPT+)lkyj(w6%2Qzkl(itAXS*58aPw{3>P~H{*C^&cV2j`vP4FvO@y}`s(@x}k zX6)~dP!g?AWzW!K)gDDO4U0l$UfQBzB-2AW6JOpRIw3|LxLEel_i(@ z1NJ&!ah6)TqMycAOz72K7u|GK_t$hq*GNI@zl3h;X(;rblnmSS8>>ka-wsPKb3{2j zDjS0y0qDx=N&tDA3pLMBG2dXMQA^sjuI+WZyqMqQvVm9Ygv8lmY;N3{t`2(-dZw+!Lahq_NAydNL$@rke(v%X{$v z3mYh*dP6M(8u39e#!rKg>0X*ytDj`oW9wK<0@}*7Gn%h_S*?>7dXUp25?*(M624#s z!*XS{?wAq+f>R?%yu?g<=1suNPs>s7R(T^s^^A3}DI}^0XLx2fmF_9~hj?ndFleG6 zu3E=ErL%De0LW4>Qx#M;ng$*CLc8iu5F712UH#0M$8gn?FtlhiAKr;f%UIL`i?W%< zZ@$zUB(6x@{ml|hray}3@MiSG;HDLJ>Q|_1(f3TZtCBnK7D7(KXWPVb>^2txb?RGh ztqzd-2sPi{zhpS)SKqq*+LaONh7ncb>8e;5E@ z0w?cs2CB8~%Fx~_@{I|Jk_v=e7%jYt&4G>Wqd~%ta{9X?%?(6BGfdGG9t92{Ew>oa!1Q1 zLq82!mZ4rHJL6RlTcLVF`)xpmrL?27$F@OY^)$-1Bizzy_Pnsdm@@rqY=?a05!!$} zOG8@4EK;;>6`$qz@@5#$z9`-iJ_{5mtX+do%!TL0Wg2@ZLoWdf=pZSjVqUjPFzT_a zX>VIbQg>2eMDwbS@*Q9HhPI3)1+*qY3{G-W-`kf1Btsql?b6FK1lSY$A6)N0wxyV6 zEgDQ3vkj;S$7(dCSga z>3hWt(~2%*(sU{*HVUFt>nrqz{h&owX-TisFB075#PnM`!a*6EU)8QzY3=kJYNs@L z{U~e=+e8x|s8-5fA0qa$P1cM(OZ+k`->1~C5gXfvd^dZf5v>j|h>YNnkR|{9dqxD% zmsSwqA?{5apUxj~ek|=RNjL10rq0gpG77W`O@9`qx?0DU>-!b>XLZmqckho9o|gPE zN0fd>Tp4q+zDF+P=^6KOdmNX|-X%Fo1N5 zNtnhr^SqUHP&xjHOk`B7aJ0FN?FKeYbaM`0dD$UCXTQ5jTn^QvLzok5kp}B_l_jIvbuRxs-jh7L?^dO1vWK>(XB;lyubeew6!Q9U)W3-aIO13v2 znxS&yWBWX~*k8ZfGQBhF1BaPYDzD>^Yr?L`Ale=_8XF}6b~PY6UJ zos39wmcB|At9-^eg0v$nx+gJRDK(_}Uk*)MGsigI`!8&HapE9#Ez01JjLnlH63y3} zk2wJV#ABt1c=}$X40>N8;+KYelMZt%IAu`YByO#ta=lap*w!;O_HS;~>aXU!_4L4e zXE%;Jb*0Q@I@b@~)20zGtwx#V(t4_?ebL2w3f3}a?nkwMm^yYTYl@wU*i)(mF3&=~(6{PW2WIqC)-3YMz;#4d*NwWR(P~Cr5IYjEyJ$&gU;+UE0Nf<32bPnp zPsn^EUOkF1F`csVQH_ijON&x@A*Q~LWvZHNvi_u1*N0esiYGuq`O4ERELhpq?oh9e zZxtUw%<7A3N>Ox_bQD^$MIe+Zo$&}$LsQsh39oF;mU}#P)L5xRG_77ChgF5rft^RM z+or<*q-I{XSmmd`<@pEimI`g10b=eT@9GG=+7MN;@<^BVFF%#mhXYR~IL3^;~?97xmj-I{&>dAZjCY zq-=&hp^bW%m<=r=LUFe5LW&wl#K@qgub9@|+eyPN;-(f3UIri0w(89`>qrv-!SvOv z>@Z|x+#z9T2{V?G51)j9AtKk{mal)Y4kAIjX*9}k3febP+O#y@-5que>0u?+J^xj8 ziQ^6XPxGV*C0yzLg020`OQRCn^_es=#VG^TVv%)Szkpuv!>tj1r?k5h)#T(CYnk-)%G2?S}c&7IUWR|M|Waw)ZP}0(! zyC7wUHzhw@UB9~=-(RkvhhcTDrgAy3|I_WZP4xHTuTB4`Zt~ppXK>nj3~7eQeDt$w zO)2Xv*%LoU>%|L#?Nx~)x0ETRlLkq0MaAhFEgkyx)?5ZZ7=!hCd+G|p{CB6F^DE!c zp_dB^GDRxSwLCtDn?*D}Q(^uuX~aKD(cu6%dL%S>lQ3&fiyXYEjyO&}-^Y%FLGQ-d zd$U9lIw<(~tC)TQp#3!%nsg>{#Z&TTg?Cx?BA%=C9=fo@9C z6uy;nZOVAoajx>dJXg7;Jur@H!N==hq6X?*!!F0D2d1mvK~}c*^QJ;&S|7|c8@{;pui6uwjp=nFV?5~^HomzufOHduAA#=FXc zn1xd5Wo7u+m9~UqzfNK`EpkTVjp`%_y~t7`5gt9un%sI4wSvGgAU&b#zicl*61~)a71mn=SqL`xFFv}E;vfy_i9pEDXzb#h6M1#Lv1e7 zhJ-e=P96f=%(au_j3e8&PU12AlM5kD_WF&r~9Itr>Jep zBf6wP)KBqeC@2@XxR&HvgfGdL@_Q+BbKR}3JUrNF#i9*NWg>QI8Y?f7lJr{hiwAmd)@i;e#X_g0L`TUGLUqkg+UJmjQL7X}&&V+%=*NBA> zc!u~-y?Nvwb1Gx{wn|Roe=g&isiA?vyytOWKdU^y{)KTg3#aKLT4U;@ywQY`WV`tD@~wb}#?HwU+hrtKtO}thJ^0reqPH(!I<*96xmwM_pVw>5Y}n zxY9Z*(2lxZRT27-H=ZfcdxjXtdJLouRO{G^c>=H4#B!csszfHUS+>zp09!z$zboyh z$^}hCtt<;hxxWHF?oN+~yoB;NMtm&XM=|o)b>KounJ$#{@WF(~aN9D*fpfbLYi(pN z!t#VFsF*IPu)ECPlgfpqNwPy>l0Y0^GWXvx42pcB5~*t3s6V(bj&H9W)Q)vr2*MFr zHMA6*m=z(TyIs=si#&g5nUDuwZyW6_DF&PB|NS!wqXEXUQ0LnGGQTdCioo479LV@w zTqtr71t3@@lX{KRMwl9HuEFnY$V`cyO{R$J)C#MqmsAcs$@|QcdV&_{W!a`Xzcn`E zWN@)s=w^_WA*W!8a_{6gDJZT@cRAvtpVCRAli<7UMigE_U3%GB7%}D3&MMd{m=;hW zHdk)EP2K*h{CDA859Q>Zum3~MayXy>n4dnLu5Opm&8=kBpms@EaBs3G^dG|#vXp}> z{AP2$likL@w^l@?FvKZ0qnaxji)?ms9&ykNUPhfOV+(2ogwM5llraSdg7Mp_X2!t( zYN>?Nv^uTip~NE?JI(qr7%2gV)6G5{oAibOqogVn+Qsija}disw_)E!62>5nQ(bL( z6MNu;ujQl8sX216hUU;g?&s-fg~%&2RU?-}fDR``qWdQw+yI&As+ja_XX5~W`iVu2 zj-uUZ&@DKdpz0vbwE3($uh>T10Slc#OHkd6MPA&A*Hm4X$N-o> z-REs8<6m31IzwO4g&T|kqC%u-!uJPyfl{N}_wp@H8VS$wPwR4(tG(7qLEinV&SJ)W zY%Cgb)@QFp4xNww`^{+_<+kqY=HitdKpY@~s%vpmDb?7|p)PEe!SC;(awF*|U}GUe zo1BCU7ZmP4J=B4ppT<^SBu$mL#KivUp@62dqBS}xT(Cu)=&587aTy2F2H)AIVJf5I zO!rKReL`)l0%Y0#*`uFfG&eywBRDLKfB)r#4)pzYaQC0UFwK@4qX&#sn7KqsJ34Na zBG;4xe{fmp8{E9kbdwng3IW=2P;CVjnyEy1S}LxJs^cb;^~=RM_-zFAMJ$dwC#j;o zeq;T$%G2tsm_57b>+FuduMaMo5hrtVa)YM@yh3})7G88HUbMf~a@8m|EXbf*LvBBz zc}o=Dhj28zcr8boRUR_@f24-t{? zK$Y64Iawx^m7MxWZQ+uQD!tS^l>S~}Hz<&&F7>xdtzN;OzgDT_$W<#Qnd+IQ28~RN z7<(Ivp6lVjWy^pDMp5UU?Dax|{XCUX`Lq=bls%OUkqfeKu1c4FTYQU@Z$Y#>6`^Y1 zc6|NhJQh04a(=haG~IUG*!#(CkD@5qSRFrx!T_28F3!|&i5w27qfF#g9%OV(uZx>l zXcnz|4)yG0@0wbs-S{*|58`R1I*~hZnxmt6pQ~x}{?A@dx}E@=;^#bPoyM`M zE`JMt#WvRZF&mzuIC9xo+{p?J`|%}F+Kf~#@}Yzyvtn^iIZKpdvg|~(jCTQ7)M&%< zDC5$7O3D?>vkvGU{YECxyRvw?g10Js03vgj)L?}b+qXzBJ=<8B_A3@X6mQXNqg{R4 zkuvkf0Xm)~%}YlQdBv(kG1C{FH80yIdbz-l_wLaeHOEM0hq>MGJfXZoJ_w)<&-JnU z`HQC@OP&DB;wcNG{=`^MVhr`ysD59kDh($y&s8yPO8O{Lj=I97I)-d+J!c$VFI`H@ zh*(RQ%$J1fkhqw!ZXY&{ljH$!N!CIJ%0007l z!H^+-9D3H}3I&F2ZLGK)_ZU2>VAfVFI11T#0_HT2lQMIc#HiKFQ)k`Y+h5ek3C@3= z(C0V1@GS|hg4RpFXNwU3qAvr1T`LngoH{fO_8M67-o@}B+ZyhRviP*w3Z5LW(Q0mA z)wyo%>*^fFzd~gQt2+Y8qriun7yv=eq4< z7#Y@kA7V$bV;af;6Y}F2$9O0f{JXbmGonVFzpW45r{8``%lQ1({3q`dl*@2!Wi95t zm$^rhSNF5=M+q~J6=So*d^8YFwpqSZZ|XXD{Aj!rwh`axM|VVMiZ@r7WHfF|Ti3by z31v>Y2gaXPSYu29Vu9q>I{Qq6=Fe$R6#sn>1^`$T5CsLOgN?^G8D(afs{Io#^%T6T zS>W=DKC6;iKpbMZC13;ioHCVPrC_V(#78w)F1LL^^|hdtpDu}#&-0Qe?XIMoNAjdg zq*~!)DvAWoU;1BO^&QiAi!2{ic4jnKi`QCnefuRvTRYAyEe_Hv-!@7{XR$Msw>(2= z?|t)={Whj%+c_>5@|0=3 zM{9Y#AF)n(MGh|xkS~JEP*V8-NJh+!CEECO@BGRv_>KHYLm&RyVS^V+C+nrv8xRd-|TBSq;HPMh>7Cn zsM1U_@RF2sb7mAYCRVz;Pv-XMf{+(O3X z*2Gd~XTIf~fooh}n&&J=e2*OgFn*dCX>lzcG-DLOmfV^b8V$1a9^Xmm$04W^P4zV@ zR@k*v=wnLgXYE*M3Ai{rSNV6LCl*C|^7-(A`26Ce--L;gs}0`qzd8xWJ)@0+`%W~?C8qA|a|QPKtJNr63AMR?=5F2z`&RwdRr7(ryRYSf zH{G4(&!>&ux@G3SEX=F_rSRs_vShN8EfU3SBLs=0N-+khgj5wz|uKOXL6gHskI#w&ala3n$4(%JYH662s{r1AC zM`nfLWeLP(Cf&Y3-XGc*wY-_@-CoPIHsWZqSg$j-SSNQNxY|~+d^8@Wjk&5m%t&R| z5_7Us?7L&S`X9(i+wMTwdA`Tj<;C)VTr_6$T&{piQ$lSn4^QM($YAsqDaLO;M986B zKwtE~i&n>8?WKBjYExaDUuWbCb&~ecxI=8AZ~~R@=_0qYzd9`QN3$wu;zZVhq28s` z*uQM~PbKz_fH`hp4mAc09<-Kt=#4chkuN%?KzDc9Uqr42U>iSZN^+w26ncM zc&G@1l5c9Cxy3*|Ip1WfmpnBBAHl+}Sz?SHYjv~LB zR5YXIz}jxNau3yWKGKHv^qze=R7$4Q=#QYWOfzp`;nXOkXj|R_@o5d65~;;7YHdTT z9@WLQI#0u+>@l*Ou5{vD$_hphHBNrS5SGt1Rvu{d*VE49)0Hr#Wb5CddLYebA*S{* zXr1GV9zFm7s3vkaj4FOr{jXN#8UT{;de@Eu8SWckNc^E#jUFyb3>uPJ1(PUBtIX%Iq}(;B>nPt%s~;Eb?|0+=6K+-N-!QU5J6YdqAmJIYNej< z3aQ_@#Erd(>eP67{sRDYhSxC!G|6epO?<>v`LvX5=lAfO~#3aFgvv^XEi{;xtc4&(c{HxM(kBiJ%p8piq9SqFDF| z4UH40CL8-+k)K_}42gkO3PpAOCqvX`Ptz8S-09$@9c1RWXW6St|DBJc`!kA5>bkk! ziPcK@qINW{o{F^Lw8N3f43cXJm& z=EP}5hUnLrILbpK z{4F`x!YO{#q0?G5!iAmD(gC9MFQQ}CSR#imM9O*afvlC-*Iz)Hx!Qx&=ZY-m`>$ea z5G@^ZviV781snf*xep79aJUYc6g6Ee3Piq5CNf_G!Qy2s6gl`Rt+LVsK`(9A4YZ`r ziP~Z?ck}#>c+!@KV0Wc(=u73zop^dA9qX*YH9oQ=$-}*hZ^Vxu|CW5s3!DB^<-m43 zP2KW)epG} z_q13&X zstbV#sD~hPG?h@SnvHCa=0}rxylZg3@%uaVscN}YY_PH8`u1cdUfietVoalK@`2qsiCsY&a6K91@W#F&I{N0F__ZDFWO z-_UNhXGly54Y}+^zsrqlJ(k#axVqHU&w2qMvPRO)77 z3-)k$PpnSEW2a6Ux0SkC+)Iwa8xU4Mqu)7LIcu?h)#gX?!U2FQV~VHRNaoVzZ)&X+ zl;*=sv0^hlHO(&{JQ8=ZSMlB@$IQ)g+zhJ8EtvB6aaO>}e`mV1Rnr_)pQ4AZz2&{* zA-E1RUr79hO%V4&I%q!2M=JJ3@Bbm|BRkt{pR;q{CC0zhh)*^U>X$g3HZ2U9G&^TM zm5YfYxP^K-+;;=IFio%D(E2v+Ixl8wO$n^}l?bg`oyGlFd!t1F?oFkU<&5Zd( zFrtaW34vt|yw1_ZF*9-bfz6?-=EvzSr6bYl`ToP$9}8KLcaCfe%XSw3v~Ycmsm<18 z@pIjtRNHK^c(&GV25nzofI7g&A zygdo!6En-nbmu)Nwh`opeg5;fi__tR!4;IpOB39iWSjHG+M2NFVr zP%+91c{oIv?5r000S|hp9skPcu`c<0fs8c}si{@#4kJ zJH5UD?pd``;=^UdTJ;2Hn#Bf1)zYozfQAApGU=5>d!iq0FlG0u%?J>OQ`fpixsIW` zgDru-G~}D5GOcVdB?@PvJn0sgU%OJyDlH)H^?pTg*lDfejmw5O?{D9^i@&mitv=Z( z$G19SLMrdelFHYYQ@^DbV(ef*ebwpv^qd0q&1&b2I$>vABE}5{S5fcvOK;#q*NNRA z#RRPsO2e;Ogf@p`{?cp64;eYsJ(X@QQ6r75h(K#yM(s+b7zhW;3Y_MwcJ9c>-_L9Ch+4mAQ9b#vn>C)8!4ul^DKwa& z^*8>|v|t2^VXK)<)BnQYf93y%7ujtsB!RipohfZ4Ks|&JWgc?v%rZj!9A_h?XXqip z005>{Ib9j?z)&`%>na{g_1ikS1EHs~QPMmNGCS%T_1%WA8hk#cqWD`xC$GANS6wHa zA@S$Nv)mu%$@{K;FEZz0U%kX-(h`(tj!Kv zMU>S!6h~ClQg?TS76gJ(_@fv0gpIV)J3zxr+Up!ID6exOLQ>c|@=|E7s9r{R@@~Ep zQtYZwk&yT9{-t~U<$#40vObPxlCEz{`^K}&KrVLmXAod*&#T$zr2Q>h9|$VP9~3L0 zy)kA2YoVpp$EjrS21+lYI$*_CbhI1If4}6gFmC9&r`Hp0pFvDg zYd$MGQ1&$fmqUH`Arfnj4r&JE`=1GO%V}wYH4+HoqK;KKOl^I(SEdNXAbh`G$K-02E0UL-Wts)B0w!|et#wco zhn3}qN0uuG=ca@IcNnX^oe}h$AC?l2<;Md`)bK5Vox*2BdHG$=9&(B!p;Dm$OdaZa zeyOFWE{NNv;*)EZjxWUFn~->}4T)2zw-nY18$b5=a#`g%Oie9YD%jkI)+YBZQ1ilH zJoUD_h6&R0u_K@78>~B*DwEFYM&Cwo_FrJM^bopIC?Jv+Ib^+xcEf9)REuqw4vzI*mD_Hu964g(k@VpDEGLJ0&(m;jo3dOu3D_F zD@7`nJNdIz{i@UYWf6$qE+^2F5wwLPnF-@rpKM*1VzrxYQN`gaqH+$vd3k0G-PMVO z%v@d%R!DTQeKgJ`&QoUn1V}2^hRW!NXiNy|;G9&3zXG1{9$+y zUve&Rl;$@&hScKxaE4X|OsoLJrIa=?le^T<=3t@g`iEQkD0@w9f;fgyWf{T{Ee*u? z5EUWV>8-eyl9D0>Gxh|rQI^VT@_((>bYxL|rG~q-I4S^_TVa2WZ1lCvCx_^?gRj=7 zWa&VCU5kur%#d+43jitTz0)T&2~+?%m0J^wb1Vsd;sc zcxC|ymTJsTEnM_<>M6&*ijfeu}q^i#a_v06-4_NONl40V@-u2@y4r!*akHFr)iZy;d`- zMVGcTPKS*@B-+30Z@0n+6iRo2zgpQ`3FSA;u>>+)-IpQ!7DY}j z9Ubh)9Xzth@+40nm!t)vqloM=L&%~jm!OeOM7?&!_bHj<%D{K?WaIhH0`B?Xg;ktY zOM-LyAj@j&Ds)yBEC7^Ml<3_OO{G!^Ijz5JJfVz6UF(ei>`$cbVpJYVT~ROn*}w&v zwdI>mcIL?nTVj10nw z);`DA#I;bCv$dnQ-}{h*!hog`Fzz6e=VP70n?2;L6?P|XK8T^NIwyzi1CGld47LE! zW@!W97Aie*-v>F#oyv3yJB3az_Y5}O2$36HHAK(QQu(sCzCKO;DhP5|+R^`4l`o5tMU|#NUO~cu(*?RBQNXo$9Vn|x&W@r_Xl}6YeHE1L za2Zl;YvEU<$6t1wHWqng{7uq;$26>BOrwazQ$d8sA#}+wNJ=42B+X4gTd9PMc8v*v zvshgSQsu{-3NLJ)X2^K9^0jnc=(TkS(6MQR4kL)P;zVb33rvj}jOV3|WO1aVS1V1s z2mv+XC^~gAMwp=Vf*~atnGCc6nJ$>X3;^dk=sZgw1KHN|SSbq(r>JvCg^PMkPz?|73Lk1vz-3-ImA||M#R>N?VD@0K(=xXT@fg zDNVk5>?aCtd;kEQGll>~W*ID7qhP*-;dz^7xRKDy?L8&?4#bRwzle&C?0BQ~UIi(K z)eO!)>@OnN8^#fGm^-(6I#ts>Qk7FC)=+Mf>3N`n^`rT>4X7j1raLn_L9hn9rRkCg zZu6sFP$*lU?Z@*sXXlsn(ZT3nf_p7K$HFv2!khS}ZB|)vmi4m&cNARY($DVs5uMTO z*!TeCE>gIJYJ;_$a7k3CbO=qo=XN;*Ijc)OM*~m2;@Nv=9Ea0f6&<}af6xc`7YFR@ z>$D;JLlujg_B#r>C4}M99rw;lwom2NqMn^TA=8scs7Cs1%E;#pidLhr{c{G6Sigsz zjd!lCOntiNcMVFS8n+m(vpyLI{B<(hb(o(5<@fTsZlQng8CzA{5WgV+5X(QH9k8KG z52N6cJ@ZmyM#XwkKrkeni_P_AhqsHrIg36H$zN_2$l4H`*=A&G6&LPD*^-eM+UJzU zn;Eo{fqw*+FRKvvTU$?+FO5sc9@H~#w6p=YiA;v4L=255b=V^fq16i@;~xX1Pvv!o zs&eA?k0NZVT~n0ly&3nHZzQ=Lngx`FT!}r65)DD2Yyf68Jn6aRgYU8{L(N)RVx;d; zy7U~f&04@Heu2@=Pa>=(tixIDc&XWZfED6JfuEX zBYt^;(YgjL0%V0yHAhvQ&~9@4i~fW*ZkN!JU2V2B@pvtgoGE8{KuP$&^E?!Q zlT*@sE^X=AJ^(}jq7+D*H0bin`cTbRphEnxPnUjA)AJ2^NAEIi*fbx1PUz2;gnvGG z7^(d`g4VobpZ}G5xguS&hmQX02GU^iQj|EabgCWpWme_&OGgEIyqI&0^7S#nA?be zrLh5iLLAUY22suGu1=?5zJb;&sCv1y{@9j@=?=C7vZU)~L-v=A^{?uE);;s< zwe?igN^BjP>{LfOI!6una48LTG!$l|DMOxC;Z^YwyTwp|G%XU90FzYT9gou0xq+Tc z%i(ITHjU@j!(359*o+gf>i~>F-L;gz>Om1rhHjjrq=-tPdQ7JvIntW-7kq9+%9<)Q z_5ow}v1A^opR1p`!l&fNplGhd@2_FI_zpj^R`B}9;?{e7_jvVio9LKyo1q{a3obal zlPerr&|ul;eB2p!j;er<2uPO(REgNg0-8CJCDCJ(Q5HEd<-ZNB^QD3$3zC=`ENO6| zF|4<-k!EF^WW}mWdR=!KOzCi3W>Fl*Phz;K{#JMdy66H^k4y&fObs^O5&w#s_T`j$ zRi$P;WlmhX`6HO6S)r{)eK*XQOf7 zfOEf7Y!?3o5H|wndCDAgs#|cVn^q)2R$GoSwRA4KeDG&Z_d}BrggWudF^ZK6={e5+ z#6d1|tSq~EO9%IvG&#_IB+lv$Q`qI_*E@#pD+fMe|GSpuM}=}@BC;ijXd&cZihND{ zpLQf*3``e#o*LU)*;CFsCZa6+AsAiQB6Qu8Ao8&J-j!E%>O@+`D-mE|t}hhM6F0** z$FIiZ!M9Ac!Vs=Ngfm2gLG=e+iZzc#gpQKl>QKX_@UVmk^=<}Ju01bJfl9ypHW&YBw`}!^jSd}yoX^Mqg1BRKtZNDIh~Vr!^(XjswW!5sp6N@D^jbL zpJtOY$NUxOGOq*(RssZLvg0Z8l}B8r&+kbD{H*C{I!$Jf<`7JQ(0d%w=gCtwfwzSx|IkmqU+ENrLQnReCF;6z_~hwDI1Iw zj$#0oTG0=7wZOaI{MGlwFaq=Fwg)`+-e}7>`a{ZHY_5iU6^n)1sJ00+LrnT3_g15K z2t@3#97aHUoRYdp?I3tFPouU*PIk_KRK9Qq7y_QEM-(;4%p~G#2~PpCP;N_wHXW}_ zwnYhqJXDKfne$$t(JN}>=9o`;)g$-O6EhfK9qaE^t)I{rgs66>eW2$h@JKg@nf<|N&BXWbsc zJ?W$BLnkO|jRGZacB~(!Z?*G~oZt}Qz<*(FeP2j*6x2nCm6l~m>N}hDOy)8kZVXO( z4Ni%;&kcFg=GI*Ni_;1n_?N-jhAzG|^~_bJ${)>GipUK;dv3&@FP9~=Xe*=nc6=8V zQVIh$-Wt`1(q`tAr0@ZND&t6BS1m=|J{M50Ql~j3zZa^9VaL?m;;}V(C|UM1`y`-5 zxmI~&q5R9Xk<)?pQfTfCy#UzExOTI^|E_Mgoknc6zKe}A4_eEe>UuYusBv;n&h0VM z@Wh`psUpN$jaxOQsn%^zq`zq0zgDlReAx53GY^@51jr@>ybRR0s4QE#w$4Ou)iKziwg=QaATGb#^+>>z|0oaOw^6dIzRmk#-NSDTePXw z;<^5!oH@bD=r5m#mIPN?pT19}A+XMuYU?cgJ{DPM{Nzjg;a#pBa_ScpQH)$mS{OaS zBA90M;`{5b^=%xy&$Kn~W94B>m3(ft1`{=Fv-i~$qjvkBTsID~^fCLp{waOGV63*R zCKO5$sR|tX#y+DtHKMqvi_xME^^i z0ZJrTD063mFNMmt)@MKDbRmS}16Yx|yeOlY?X~SrM0C}2xAXZZ7*A5z3>pw6k1>4P zwfdE+9i2PYjbdJNW2+Y9AU=(uydJtgIxT&frz|`sB;?O4VZE2;cwx`mBswiF1B2N5 zH?ISlO3vN{n95rov1IMS=U10cpR7@GY)Ww6uTS!DD7Nc2yyl8U{u@XhSBo}?E1~9U_IW$1~iMAa0?hdvnDOf};i5Gq+eZE6447rp}_LewX z45Hc2vE6(p^&o*H6A27Or$)k;%@KUL6=l1WE1|0EN@{qM+`FOqfk~SRz&4Bd?Jpxl z!~y8>*!56e(6ZKhKtxYlg%H?@ST&evnL2PE{Szsg(`($ z+hxIL^88z(f6jjqEMuPuMPtU^nwgNwiIm;%BOv%$z@X&vuHfcyljKuld`l+xof>34 z3_m_Pv~cnb{#Q=a9M4Abdh3$jkPBnY39>IOIes7fU#D~bft;Y#_JTdHMhyGq6c1_} zK}MOAEqpOlp3hnDA?F(kDn7mvihA)=PKsp=z0($QVlMsNvIdm8n%FKh+96!%lbeJE zxfIok z=5HD7^gaZezI}mT`=uG3*t=_uPtPr`lVoCa@Xghff6=hUrSre~ciu3ylrYe%4lRdgUyKt=N7i!daoX4Db4B&1!{lOS z%b2T{IBE)hw?{LzxvyuGfdxzR!7)1ReGYB$br;(f0=7`DcB_WBPi&ei$Js@$4Nj&K zv&ZdJiQw_=&-fpNW*q^&y9OeUU&fSnk`~bcfU+EZ2`UEWO>4g$lvUl*G1nwHIB`pc zXrJUz$e47!RSRaV4|>5Mo1=+OIf1y#^?F5m9`Z~PGEzDMbN6h0{yYZ4`vP{=jymzt z2R@)dx~q&uT!dXQhsFB$9_w3X#k%dipujZ4^vAS?A$1)q>80-UdVz_-Ta0tnBlFdy zlZQs!myd$C)G1%_gRx}1jig3mwa3LlEOC9v0wuJOGIUOCtPAgj9UjezR`fvm89zBm zHJ-3|r-gYM1lXK`-n;i>hs}!lL`pM)cgyQG!_<@DCodCPFdxohM6(f`o_SeiDKP;l zJ#-@!u4LGiaMI;#pi9Shs8~h ztJhZ&Pm^TuK1c1mlSl}fU%FM!SfjV9FkRKl&}dFfp&Dsr{e5OunM=p#SLQfZy_(b1 zY8;yWq{f6xB~h|WB5Smk2~!DQs(unQ)Lj6sb*WJC$E6yij7htp!Bhs-n>&{*G7u*@ zVTmaV{C;7p&0I6ELM*eMp$PhEpsl1QRm)zYbmeQk%sA>6%4cpIg7jQGlU(vnIAyMt zxnaF)hL;mVBd-@=rnm75R^rqL3bWFkewD z6KU+eQDmp^2(rzSK$6pf%cgt$y{cg}gjuF4gbvM!Hpg_jgdn+9 zimo!(Dkw1dH1yl(u_!s%+xZTfu8^JY1s9E}aC%Xe>9qag{X;279<4KOPCg2K-eJ}P zM<$a=(3F%hB|$`BW~I*r-W=EUR3^NUT%dfHtK_X%I?xX)BRCSoRR5RPUSzr<^At5edeu=fFFjWnn zyB@K5ylQi zZ7}_%Z15#u3J1U5vTL_2j-~Xh>dzMOVQ&(2ZtrobLu91(9O=oW-RMZQfYX+~W_!)A z|3&3wsj_|3#yGwpjjfMt$*>WqO%3H zTmJLV?rd*?)vZQ%%OVMimoGbFMteUhdP?@(0Kovl35^)gwrfy#Djy?4JS=+RXmRLj z@^@@LVPpiHTnwrGO5D*&GVjLdAMlmXG3mWP)ESj&o~!$_cZw>;xb@`Z!+y*fOA*9Z zceP@;bF<~ykmet}En1FMB;cSKN7}BuNS9(5SHs_Trl8l&wBUXLv}4GHmbqz&|+Pj z7=Hwy7GIL@{>JE8L=8d=nTz!SLVSkWks;R2?E(J!!( zdI52AS>!Im-L}u!Bq7y>IdH^vG97KVH)q$)WxJ#Wmyd4Mxi?aG7`r6ydnWMIpD?lL zh6-;kX*jH{H+4IZU4CZ4r;&cqW|OK={4L{)X8CH+t!_p%x2U739zc}Hc;j>n#F}UE zDmfBOBA`>%2f?w>pkRfb`V3;0svj5{a)`#G3Z9Q`JJXZIMDUyAO_Oytx&QX*U zB}Z$j8sYGnfZ7T_@|;3~Bo734f>k!dfffWtDS%ukQA*C#1GC-)c1U_KZ=n59-CWhu z5L;ggv#W;y=$f(_uZ;xONo!0QbVKTDl*yS{NqU*0wOrV$o8&vH{?27@BR+#j#-&^5 z)t1F!!wD3nFTy4}Rmx<{oJ?`AQKvt9kMZ3(F@q87yf1jC^)L92$s=2e{&UB_?gIAks#bUY;2zTu_k28X4G(1w;o zV`|Xlq&)xBM|>0#Abi@4T|Ag7ap5ODKX9a}9<0^`;lI@mw;gJ2Rd#-;8`3tNWy$cP znECiF|4}XUj-7j=o!``V8p>~3-JEKxtsF%+;x6P^YcZD++AggWf}fDF z*mZkf<^CJwB<;4K=iEP2Rk!rTCmIMQ%N$O~$q^w!>__+XRdfn~RB4n|=&zY5`-f4c z%sk`-1%_)4p-ejA$xcG89h5J@a|rTl;adK3gaPRTT4jSP(f7Mni&FutHVuWWS|WVZ z6(1EB&lducShKuGy)N}*Q0`!{yg8|VK1GV2mp3~dI&4^j6!hjt#!`Oevy_@|3#htVWYi?q^y{BpUw{j)Gkg=1CZ^H5#3UAkFS zhPIJCTW^HzU)>4V1#_9~_VAo8G?(yaR=>f%>wXfF{2aBQsU6QEGfn|dKs}>c{3j4X;LpU{NkC%B9{|ZLs^gCBZ zZh3=tENvV>ExF!$4HHO69waVA*fAy)47nE;l_#rj_r0&l|9Q4S0^kEsmXc3MOPkx@ zURsb*gOPXa^j9Q;5!0Qvd@Jh^2(3T6>OBNwn)7lxk|iVH@GU6$PBc2veRJE6nuJ%P zvvXkZxN#qzj}`sGu`||2{!A(O+5Ca@x%Xq1&gSFhAA!_T5$`KLzNZ}vN%^~B&46zi3?ZxA$~ApCzmV0CIM?V>)G2lvL|^+LQMAQ1_Cdk2mP{edhx8 zEZh#ToH6OuW$-u7~`;Cy37r_TPOqqdXH_~M** zO8V+9`KP4z7^TT$IWg5PLNONL{bgoa)m(6HN|u6GXSEPzE<~keb>riY)F@95o8}3k zh<1iYe#0!WbPkib$u#9g_rz(#j|UEO0(m(#jQ){~cwz~=nn%kLZz5&qQ_lZJGZGXW zm}9EOQGx*g=>SN_7PzCne@Z&r(66DvCTeq0-(8;ji@DFh zW}zX&-Z?h7kERI7A8YIF6YN4T9fQ+T_&3cs7I&Q_e)dP_4K``fe8W zL8PeaMEtaSxWOF*D|it*+=@)q7SuwR(xt2&HBj0SS9;+&_Cai4zSE(xCuzDI#htTXY&HRGoEAp}5- z<+fBD3=yS>n`ZpBd{i1~n%H&{eO@lBX?dpjSbo!U^l}?ZEJ0I$5U9KHyJW;H{292-HbX2mJc<#JBGuy}4P<0^BEqT*`r z+C}sudheYgVk!L7e53I`V_#V|n4TBQSs@n&SZDVUrAE=vT6p_s#tk3@Aa@xLeJ4eV z<*kn8i-i%gUxeAeUl4yj-(tsEmE<0+?WZbM?TMZ+W9z8yMVo;z#Mh0f9Y*2JonoeG zQ-$A^gNkAr(`M{}8^6(b;@ec9Az9!hm!l=In%3l8r#L1QjW#=YI*FHT`D?vMsv3;z z>>z=n+)rZa;hC)U`duiPBAR2A0(gJ}%dnQbI;k9O_@6XZACRW<8~!IVh1} zw#ZeLdwNQ*#YOxf*B4t300g5bv`Vr6svBuB*pl~9^0WP2Uc)|$?8rr>xKgumaJ(_# zV!%^tIe31xhUSS(yOy-mI2o-Zdyf7i{@DDXKtpoT z`^WfC+W>fU42LsH{!YBFZGmeRC#)6^_HXYYLxQ9#Gr*qC?N35#he-aYB|dCtdu+`( z@hc)e0Dz1_r4tIV|GlZZFGt6xF+Q5FCJ#&dK5PBUBoSRNlvxV0AYh*>IAE)^Dt+$+ zW%MAzLv`>HhPw)6RWkUuchta!e3Z)s0@hM5Fy&J$QWE7?Ou$U00&Dz5GG`bwiUpvo z^+UC5xBT>f^nIU0%N>~LO>W#mH$AarDIE2nZV!ox$JA=(qfa zol3uQ1UB%r?IT|X9<(azYEtWHZ9ux1H+$Ju%wnS2SXn=OLHG*c=o&e@Bd||Smaliz zTshgAeX*&!L#nth;3~hg;&g(^a1cg|A=aa|+QfDPs-Jf;_I>D3rGmF!_cRI>qvkvc11 z6W~b2s07kXCW{F2@H_np<)@O0x}TDdX8h55B%H}P+t-W{$H+1^pcsYBr=8M2ZDfOB z{$35-W!qazdmbV}q~Bon3xV*Me|wV8E90CVXNxNIEywM#T&%a}{iX^bQ5HVYp^(IU zy6lWeqFKd(E`Oa&HPq+2RAQ&!U;mgNv)J;dC|I-h?K(O;rwR*ymOnv32c&8ljeqUd z*nogB-y)2ArTHv0;}hW$;T2qun!NQz71=dxigsI+oMEO;Q#%Hxu@fh@iQeP|edHnn zn!YQ6t*)FLuN}Lsb4~koSoJ*Hc|_LgXmLT7t=d@?g&Z#$#kKlyj@ zIjwYw1u|SOiXp7@VAa?tYvp5}d#cp`Zxh^XZ@7f5;+B3*SuYWzMo5z6pvuD}quTs~ z{|WdVpb8*P1sl+F$ye1W=WdIDKT~E@RWnXg43fV%lk9X@4t;|Eu0~!yu{$YT%)8D1 z;F4>}_C2gplbdL~ZFT$7!}oV=Il0Rp2|E?u-*5KWbH79Lj zu9)qz4~HL$DslRa3e&?c&_4E#LE9Q?Dm5RZd|r4ebchflzJ0`nU%H4+Hx!Vx9?v49 zn32Z0D6D9pr#V*dN*U!SKPm$K_ngtQXvn^faCRK%9Z&v#nm9-p;y`}w_$%e6jr~FF zw&;XTp@lP2?u+J3tQ+hg*FeN?Zl_;9uaLCv_dzC8Ky2;Y7e0!pN#Vc8BIkAOt8<~R zhxdP8{=MdTWsor&|JdG2=U^H1rt~Bw3 z{i|Z2eg`Gdf4>Y9Wa$3sJf!llSI{XKwRd||_t%gWg}$Sq~#F9yzG6+AjSr}2Hz z`m0J2>j$jb<$E@Y%rb8oXxY+?iHOR!<@1t2%_P5Z`lBWg@A1=`N$2v9Q~&CcjFaN+ zDSeIWF>Oa9M(jtbpC^^qCdybb#{1tK8l^&oMK-t6dd&d5A<>9=_JgL-Ce@M0nK&jE zD-Q&66p2BKUlOQeWF#Hav*nYmqnc-TF+VXUK94dPyryX!zp~~}4nV0&u&3a?z^rDK zt!vMth=YoQNPV;u-y69Qe*N!V6 zh2P7}O&hp(UzAeL0;Rokm} zrPDd&K7a{xu3g+N%v->q-oV}7(?&cZ#ZYtG2}y&~?y)z}6`J>qg8w;fnje#4bapM)v&Jqm+EP%v^60Wet$8+Jp;Fs3Cu zuCSO?^@OzjHAd~#ueScukUI2eOn_kN{C#*FrVAwwofCLqk#_#jdeb_}m8ps)V<0}O zYR<5Fvh^|4>RWc9lgMrVygPQH>*R>_H7!(8fO85!=ey^NHXEf(P?;EawT?z<52q0^ z-gvTgN%Ey5!^&X7#3}06^mmO~6NTa<$O|)wDP}4-w~=uK&GfWgO~@N!aps5Ly2scc z74?XfwIH7A)|29_DNG@Ljk;-bJNj_iB$xLKO%8e(?hhOsra8@5cn3VP$&s}lCu5}j zAgz3tRnBKV^uc3pSr8&T_=pM(Ij}qU$*uQb2!lHtmI!5-u_-S`mR&j7Qgd4AZ^NR>yIqWp7gKbulMUdt&~emYVQgYMF-KVOyb zNn2pgf4m>@-Lp-c7xns}v@BgcXs7chTmm>i)Bj^A2jg!czCq&aMt&oK+?7j7Go1TE zR4e_jiYS5WkVggsci$65IOoyUdNt{Llk<)Bf|X!&mM-m*0JTglfk`)?v5zB`+E5Q1 zMLH^-+ldcM9OB7817)twy`oY??JDH6?ifc@ZrV~B`hCqZ&h-AQ)o%A*RWWa1wcTBs=kk|kf$V14)31kD_Lfj%1mb7*T10Z=MDjAmPC}11qE$Kk(s=jCB5>| zSzS;8r1|4%eFci-@cmQ#!gp@|Kf2zstqrhQ+YMTv(Bck7g1ft0f+x5acZxd{FD}7@ zLvVL*i@UqFxVsiA`@??L@vgPsweR0B$31h+TyqX%!5?gP_#XY!^7+OmpIz>LRNDB| zOAK6$)cZ-N-d{croHOb>M5Gw9&haoS+8u00waxFccr(2l+#{<8Tibt4Y5<5^c6Nw~~Q&J5GjUt4TQ9MKA-f<{5wxhUqrnf`LaJ z57CVP&l%Gdcf~SV3yiTIM&S}iT9O^CM?ayS&9wnr*9}B;VP`sY>56)uvDrJ0`(@k` zj`J8ge!U0wnT7?ifZWnqjL#LZNwhlF6w#RHTeue0$LL1oyzb*R1+^zXpH0vAQy8tg zjgUhC1_)=7)H4lWTnZ5|qMdQG06;I3yQN>6AcikBzwbNX z;dP4H+^d;S6mEe{fee+HaPX`-gf?WS@nbBtb!ojob+^fi8gvR{#%7)##xSqdtHesh z>wPLL!NeQ=^BGc$aarAruw#Bp0WhP@66No@&(AXo&1Ybx&%Dso_+CSGCYa@?_Sg6s z)30~hZeYOwK5hLE9-`lF)BaHHBg`qsR)R4Rij?Z6)G#nE*5bT*pZyHLM+MLT&{**o zW4`)*m^EQ5>1=DD;uYqbJ|kbC0;jMtK{+b4OEwU-a55A{K)Bc;kY$dMJ;POg5yj5SQQCnsY6=;=k((pn zF7~JyOZm0Qr$NDOJ@+IdgW~g#-^Ge4+G=H(V{uMs7$Hjx=E(?_e$*Qw*(9nNVhB=~FV^YGp3f0No8m(@2$k zv9Or;aC?0w2hOD$@W^gRl)d@IWXHTLggKAARFK@euD0{phwp69a=ZCAv62F@qlL19 zgAlMbJT(blW``q2Wcn(7GQ6(a;b!J>Wc#uMl{5kXP_IToa1+UO3V#)?7V9+Ro!Zj( zT(7qp|Bl@ttbz~wI5642n7SqzZ=Z3T&~hWidD6#Mk{cCjnvraQ4QIr|l^5xlQCb(~ zPi3?-{`Z?1L9J;y|@t`mpV?$4;`Kz#WT0!+gsTgfX~E4=7-N2av7S4 zD6rMZ=VDXaTOnEAOqRmffUXYdke{Xr;%rk+_10cqs_Rbia{O)^*|jnYyM>3I?6Ta1g}gZq$`RYw#4z+eK zfuHhzKG3`GMuFq!4|{PX2MGM)6sr!3mV+lXvfYk?xB&yc&k23!4E8602ltTOqC6XDtkO|TN5~0#s{faHS5Aw!&)g= zP`pdon@FNC_;(aO%rW7&6!w9O`20}qDdkJaOj_@{@=h`-7bx%sAnFE%i1(g^fz(CM z@@VDMgJ5X$paWAfP#c<;)A-!#9t)5~2H*maL<60Wt$0v>BBSHev-JTLgnaJ-dpbxki%em&u^T{yb;toA5@ex8IS0xctE-=xf8cg&^DqLEV(7RA>BYkR@%hH>J?b9l&NFeF@Id(dTBhz z$^h$6y&eXgV#Oy__H7s7x+*O}^0o3JCiWLDS~dZ}gs*UXf41ZY>ceic6)6?2n*!d` z%(Yt^!}Ys{oJA1KIUXH>;lPBZP;sjv8rQ}&<^8{|vi>KrCfRMC#B*OK#=pjLkHYct zay;a-h5GecoR0_Lz5rCTkHsLQ9~LyKuB~prTyD6>rhw;Z>rZgGsKP$GMdjqNdIHG> zPSZ3z5aQ}u1O=OYSY!)TE9DJrEdwY&Vq6U#nx)6DIq{Xs2i^KullyN>>{$Ok{Nt(l z?3|Jmo{*DJ&ekQiiXhPpM@*n3O1C}#+*_0p18y>$ryu~J*m1A2cSTg*A01%7?w@{! z-x1MEj{*RMLqqm)ly!ss}7T$z}?yZJI7=taJ8>AQ3oL)Q65jL3|lV$2oeok@)#7!1v~IH=_DwVhp*d0-d#Xsk{MMq`#{P@RuW zh1uJ2n|rV(_n9khoYMEaXo?7|p6B_otzs zjQj}ae~x4%o@H!Z)vY8f9)oz0&ItLcmk?xC=@8@$rN&Y;k;J6aTKNehBV_8Fb{iwk zt~N0UO@TDX`wvIGuuI+2pz_+FLX*}K2ZI)oFSQI79rVq-c!^zq*=p`Ql&yNEVITEd zjLkG&k#VEW9x03xA>-|B>cUEj2a8WKf{(KD~y3&lUkSnA&K$BC)(1qYAgWo$_u; zv9}N{eh`ar-Tywh@@#KplkXJrf1kGbY_~BNrBs;iOyMBGn27gK^r?(=s$aA5!fp`m zhsq#=55OGwX(8QxQ_t_NTSLJ9`v)QKVU3&RJSb*)i*2|Ko!;j5H;3fc)0&TW@e4T{ z!lzT#^){rs)7ss(EBDk1I^Knv&3%bL&e&u(&&1%SE;V%R^Bz$+6InqgqSb%N0k(}3 z;OSSU>1mNBT+!B8&*5G_dcb;H7T2k3kyuq+n+n-dn>57Eie>r6i4szT3Lt1=&r!Zj zeLNXUT~SJM%6{ob?k7(};5r z(dFZ#Ta~B(Yz^5(nk% z_Dn`AzO%81HmW3_?Z-lhJ$IbRdM1VXjvT8T(k3soUypO;Gt?s;ueJI|*DUj`_RH2D zb<)N!B9h8;U5(hUj7|vPJuY)jNEiSB;BBSy5go1P@B5FZR0I+UvkMb%gX1cGGauO@ znII_a$@57qhCi!$@+W(N)@|-7hCO5kHwJVU)|3_ag)@B0|!+#qWzY)YePzR|j`BVm+>6dSDZW*9^2GB?Y0Pmoh zXiTzNPC@=P^$+8CukMB|em-w;+5&f)V!>_B(F4THd1JloFg<-Z-*g1Thv_Q>YSacB zimS_~T_WS0#Je(Y;k4>&n*P+MfU!$W84{)1vScbZODe-Ipt4A?Si4uPP)as7#|F|uPHKFL<}Fo{0SK$&l8oR0OVqXtSR z2vQ)DU!NT;0bdY25)G!x#anIYwc;4?#ZR5ZBNpDt=NRX8IP>t{p_I)BshCfLQn=y%^TbQD&XaEFSlo8e)nV?5AX_&$HMvp5lWWtX$(TH#aM{>- zcn}AWSO9PVNNSj_L32Fe2lf@(+Qih*@|j$^gQdza6%Rb=uS~6?>C-0+<+00**&6E6 zn!X%-y9qjNP*Lk}N&*o-9d#w0SYGUwSq$bBq$8~yFr^npX`ADqG(n)Or)4?D+1b@g zz~`_FKJ)#v5eRP`|F8z8jbkHFEWteEh!_*o$&oemNPyC>#(K$piO}+YQxN}e$XVHc zH0(U#zs))iP!b!hTd6boUwVqJXeo=9B*8(=jB^{Y+y!F>^uD4Y0)+a+pr{oapNTYj_$ug07MSLHbZivK(_eo0h1Ib{c`?|+vxqZDM(XMQ` z@K)(N6G{wRF75&3iDc5ZB^(%>pkEu4xDa?u{j0U(6~03k@I9eTPpp8P~!7`KG9 zn@sB$?vFKwDmrc`u0(k_frVG76IJUg*Bd8|a9F#iME7m67yl+ia z%O~}+SsJk9CucZCasz|_(7p#+(f1|#X(vZuZ+Q@@5vp>^s=0XNMv;61!JF{l%N9Yz z?d)H;^om4fSsYc;%M!D>3B&R2k5uQ2&ZaVQ+%i5@DyS%ve7)k?W7Q2a=$r$^C{Y$4 zQ_eF?0Cga>`_7HZbp9$6m|^r`h@;U}R-L2t`W#F;O|3;ZmSekNH@G^;9nQ(jJ%$Pf zvtXmqX*=RpG%Q7qDvLk=UZ*Hh!m*OHbXb3PnlU5A>d7$ouL`CiO5wdr97r zi>3PEEtcVX?Boy2%pq1&{M(A-#?<YWy` zL;F?}OarnVcjVL#x{o(zPZ|sMfCdLtU2ij;`7K?{DzN9@eMyPwJB=dP#lsMPcL-EF{ssQ(;%+7P3cahQ+(uYtKP-)EP_QWJk(9X@Ng3MyS zLmtMjmesM8sd_<}q8uBW+oVZ%sp`g5(5vt7LI8$z2yqZ;ki7XfYkceUjaQ0UMQS9} z;Y=;E<3cKim))PTu!}0ax?9b{YJ$Izm4I3H31Jh9&^iGVvLQ1fX4WF{=#ocEoOFHs zBAYmBYWgqU!&n^=oWpMu@heYQ&?pa*_QUT+-@E(ZzpwVK;88MeXiY3?3+-ygHI3q1 zHdrpMcA!rC_g)SSav&Kcdx!0xAPT$N*XBS?M#cc79TVZ$iP3%#^fjU#PHt3Dd7e#- ziJ6s%a}%+EUG`Sq|MctX(O$|sMgH-s6#*vjZLgYlou1;Wo_pc5H~OoN-$GyX4zj(XfUCO#{LY*Aa92Qo zIt^6qUQ%QMkMSmcT5oW(`6RN--YDoI8;vb+3}pHmX?b_H4<#&)tH|$hNB<@l`84cpm&U&KDwK1sdv9=vWNk}{fQu)bTZn3Z9heD<9oT1n(85z^NvDmcsL2n! z&0rwLhjXY2WJHv(S|g(pIq0-*xD-4n^WdLeZY!_BkBB2*I}}Ms>nlq1fMFFT#FFY# zjkDw9Q#sa_T}!l*?Y8EXoAglU6^F1Tw~k*Mi2d~O@^6HU%IzGwQ#2x{%F~sG_ohOUq|;nIRP4epBtp(DMVsK9JSMo z#z;NAx!m6y+e{xKVYA-9HqHrcH>qt}rTViJvtBaTuYHk`Csa>fC~h*(`zv22UeO=Q zU(;>TAYyXx7a~~hr+<*VoijIrplRcznBOn3?WOt` zn!Bxge!2|ZI2|wR;BmatcsC}ZG@o^>NYYVmfhh)AE1F5(93l*qw=yQY!tuB-Y2$84 zo5Vr$m_A^_+~X5S+qj=^saBK>53EdpZ8#!|f4&%>WqfA#TRe_Z%ieaVEdA@`V*Wq* z5CpSK6bb)cn@~{zs2MgUkQjN_^jZo-3G_w$(rgE%Qqq1SerLNorosj9sF}<}ctnDc zq#s9JP$ZsWUHD+m2`|X?p6u5bb)#L?uS{zwkm~TY_fceA6uJu7q|bAhYutxAwQ{Rl zJ+unEXc!)pKE+v$_^5CAO`f@H@oX!{XmQ%@LZHq9zw!CU=Slt+d57$bDC-C3c%glV zr{_Zj2WcKOTf~w2yAp_qvEO!_d)u*>Im}f6FaQA5a&$77OA&p3G?-pMt1Gdr1l8LX zsG0d!;Cy z(Rjbrv0f(B{rk~SFm#mkhq_|LtPwkdviugNL3}K?J5T%=kz#AldzT~l5m3x*XN}A~ zaqPhBU^;(ww4gof&%=}R&2ICUH1aYSdD%!?u2Z%Pc+hvSwJpC#Xw=XjwvygYVsuEe z6p4EgQoj`puJ%y3J80$q{#JAQgQy_A3D<>oV%O(ZWd<_x=gdUoo3#6mz1uy+TyMqE zP!y%%p096qPC6k>mHgaoD8(5apT+jE|K^Ndy<$~Lr*(umMuQab&bRm28b{Oh4CbK_ zG1rg4swXGcUvR(j`-l$&03yn0N*{!~ZIuqx`v?D+&i?$|END>EB@=Peaspfa6r+Lp zn!Z8xvp!OAr~l64i|xo+)DRnbqmu=&ic8O$pb&DK@i*9I_?k8O<@Yy+%d#fC!sXMp zW5w=$I=|vYIkvCBl;I$6?UgLaM#k8{CZ%xq#)dAJgjnj&Xo5Q1^|FOYM3Uti<3Mw zv`Dy5Oh&j&+=L9$Y{is76IR7;YhCnH^_vlV)jhP?uB%eL>wDU*MA*-)nC$&R8Ru{R zV!#iopGAeFh}>AnxePRFs_zn;AN8>QdawVxZQ^9*FBs_)7BJKDo)$AL@-j+Z3q1N( zsa`~0J!R546LjS1x3Q$PH2aQ8%F(*_8a;F%*yqy;06Fp_K3GB0re)|x#3w6<$yT>k zTrLP7S0IZK&-4DQdqgMB@Nq#l)<9r;n&^I8Zzsmo+m;RIDIEi;%WL+EtFf1Utb;r9 zP_=L7#7*@*Zw|NtQm~xsRe^->G4?a>E;~~`bA$dwJb*GMrSDoNNB!@=-*Y~4YBH$P zxauIfuA@m>b403+jdmG%g5y)4W-osLmSpy1r65FwagiiKbGv{c^wfpqycfKPuY(niB&NoA@+@T3gML$Pu|` zbd-KaxKh*N{Z>G>x=`_vE+!Hf%lb=rNZ14qvwiv)%CQ$W zTwAX(*HMRo1i;UuDC}cQFu(WBjq=aN_-vKy@ztYl@{2B4>0L(V*=di4FLsBM_dNr9 z?RDYQU!a&o`>F~*U`Z=k^(>Vv7H^O0IjpQW1^gaqF%LfBYanaos^LF*FgT;MkQ(G5 zB?9CkP~ZB<`oj#Y?yFRnfyQnL*2$Xwy>M9h?&mY4DwqFmCR59K*XNSTd@5J-KW=nD zBoYT;?cZw?DoO}yy`|C4xgdGE+FLb=C{z4|0yibZs;nL#$MJm*?LI=CRU=bS4k`VN zZ-t8Tgoy5|HofnnM{u2|q=w=lsRpsty_`a*Ya?8Ff ziPs9Qa6bn#)>e1&W_ryf?UsxR+i(?7<4>xGo$@`1|TEj145M3I+OZaZsd|sYWzynfc!`5 z9d=IJjj7h{UkaH6W13UxZWdHcL55j!+Rhh-&8_e5B$KI|97I-+Jx89lJ{wNEW z9g|?;uDvP+{wTAb*u1nI=5#CR9FcdgcosUV-p(VxJdiES?vB9aUQ}n#`w-;QqKWum z@{nNL3p8YjrB(a4{01-fN2Y$6G6SHIZ9AU{{clK2q7>POtK z+8{zjDfl#s9pqIWE5`#s;>MsQz7$aevzv1-)78`36Is5^^%8vz%rRVibCs@>6j%dI zp_5#G@EA)ZqW+ji&hH@P7bCCjj~nHmb3ANVwx$Vt)3f4i98Mx~7x8a82-Lfz(z1iS zW_iC0JEh4>!=P8GQm3aiSgnw@l8KfUCkeT#$SmZYej@cJ&Urd0N37rl=y004u6e1i*7 z68dhxXOD4uc(JD~InZQPuJWnH?OW`7Cl4zw6s2`XSdIwmzzE4jW(b3{p@^u7 zPL{0eCiQZ$8Wz2)Md50gykgRX{o}NeN#k%3#35761xH}Cn#dv70hBhT3%!gUf=QZe zFnQt}Q3+deFtKK+JzI{Tz2{;#uuWxzj5c$;OHsOiH)=oQ8r35S9!LL0_-Ub7HaYp3wgreJSHhbOg82&=C({nDv%k*lf(`4P$Eyc z75<*`z0A!;v2%&stzu!jHsmAW;7+MQ18C15NhuPasEiou-BZC%ss{p|bMfCvh(a#^e{71c6g( zJ_)&ZNiL_>@g0Xsg4BBaPbSdYGuMqaNk1$$80@@;4OPsyuJUr5c?pzZCibkU{{sDGXvbZ>U5%Ib+)}w`Jt5 z9U3PaaYRv{91t5c20$j}!mBVIu6OU|@c|)ppa zqW0c5w?nsI&dym^u+Yjx_+cI&D_S;NUEuok(MGiKk<`Cp?3agfSIEz2m>Ah*nM8$SZ=u+bYJ2-N{&#i7G?0KMRw$kbgLnXt@xXCzhgtRbtzoCVS|*Gy2tnd zPDVUNjJu5z@_@7u1DbMET=t*XdA$NTME0jDGyF|HC?jul%iJ?HJp#xTl*UcvSkishxg}f3h0B(FSQol znPEIS1NcTwixK za8^M4CkH!N0JFydS zeU9PFlCM8JNYG?4Fo;zLXpq9~I*N{$Qt|dVmvr?;Ju%|;MASM+u-`en#e(k{q|F_Z z?;5jjO}~-L2~)|~t?o8amlZin$sTh6{e&{v&6|dfIpI^vdKI0jw7XA~ec@c29`8S( z>b7M4@YkkW{rY>NtN6`}%XP^9hBcD>;iT255FMzCIul$<1}`C|o_+zJa{Z>lFGLq& z+_6@p!Ej)?6N?+IRp-u7hq61H1#)R)X+W?gomEmq!1HAO*8*OkSN=rX7#91!AsL=< zh|viX=*PtXfK0GMr8Q)!MA8S73A%_k^X^t9H-T5G!67yh~#~vwWF*b`pyyniJ@ye!~^tZNXem{$;O?> zOe6-o@;YA0C@$;vc9F2byVfAj?@Wt;_$mm+J(6~6Z3o>HG7jGgjO2}a6rJ}_Ni{F_l3doFl_dtimFzUpkm1)O9F8)zY8J?U+JAf2vFnY}*4R`%z^j2Mq4^G<4 z-0HKj?z^$VH&uRdQ5FguqO?ch!3qy2HJ1A(!5t6RmB8MtJe0N zNQTi36S@%Alz|D#ldGK>)3WTIW1kw&~jW{!EO?!M)v}t65+}8Dz#<-RnCvTRgRvym-knJKc0mwxJ7ODDW!Y!dicW(|E5jAR9gr}8tp-nnPH=wTT(0ZJ#& z09DabtXZ4fpqL#<_>f?;9~y88rm}(!bXxR3rc*#LmbOo5wYgZ9~pHDp<>) zz*&`tt>1*-X)6Qh+Xui013HwKKcH)jl!oa?tS-5iS5lWcYX%thPOa7RUu8U(`H$e_oj$hw9wcPCon7^bp@YpIDgzUt>rxZSg0<&9fsEJoqj^ab zL-AT0FeOGee{g7#ma`KlE!5Ig;{}JPbX)C=D;niTsw~-6jhn7DMFjQ)27V$wL1P0T zV|j*E+n@U!;Hj{CyFCp{5Pg#y+l-(5;{@d#m54s^;_j{YVXJK?vf+bTHU?C)$C3** z3yqw$8i!h)*`!Ln^|;`e`T@!s1G*`^0}23X?b?yk#2K7H{r~LzpWL-LA0IbRjfa z=`g#V17&=5SE#|u;)jPCHli-ima7?W)fy)KY;AnzF}eygWCb$28EX#n%6+D{9Tub$ zt;q%)wGgMYubpYCC;AwS%{ExkUtny+ALBH4>nR)JYYvZ$$0KXqk z$*4hf4E-a}c`lsx{`=1pOKNP!lCt6_hgwY-;#c>2qae5@BTB(=QaVj}NnIz>TaQmz&L<(2aTe=GaiWmO|CJZkWSqK^ zRb?cMfDvL}n0jjxGXo5A{4;l3eFec64UIrDd{^a0c~#R{wL z#AnO8Mb>XUJAZEE7ph$0#ZnbG(cDu^#{wmvw}u^bBGlRXHOaP20t1OAMAi!%JUC@m zA(^o4b&ziNiZg2Pm)M0*&0oBeeCJQ7G@5AtH{JFG7>6^+Zs|yqtyUxRPxM8X6WdKy zNoAWr=@01OqS`u3XaIFw{HFGp!|z+ai#JDhDKYHx(v$=YAt37JmSJUO2lf?k_Q_w!OCr9-XlcH-9A0cze7w7)+JdUb(mHxAkA;GbdjY_dA7)gTu-MTTp6+ zJxzhxUBd#@-k{9qSP_P7pNRMotsVFGF+f@xG$sbPE?1Ds{!7csG~IkX^!jI>+7q8w z#X);)tI#Eb?FaQ})c7k_+l*uS^8ZgQ*JZN-KH<|$jd%2sU^ImU<++a_#`-yUF7@xT zjsXlv06>2->K@0GX{L4joVAe{nUrvJx*>HWx)Dm_A(C{qyWWnNXESn_rQ9&Z>06$+ zN1cUx(-?A}xx>p5jPKQ&_@tO4%4kAl2`yrBL-|L=((vp%B@R-V%G9!QLQXKn;Rfw} zV_7x-45^xKFKH&Xr*59Mx3|s|?fJ)!8M)YRZE+>6m}L4ddB-t)qwPHBF+`|D`$51E z_(*V>(RI(utm-@&QArh0-C97lrUU0NocZA)vw0 zPHeYoVb}um$ixjKuO$>ywI3A&lBM1NxAEb@QJYzHw|eALEgn0?&la0pd80ZRH5}hI z1vyEU4tw9*Waj#ZsZD*HHusIyvdqT&fYl(LcR^M5{R;OnD z!MMYJcfJEg4)dZv@T^FtX4*!5*mw^VXZsTZ#8{?ai(X#swGY4Nuh-<9Q=P^^^$O0= zi3K@x@{abvP^_WKR> zQdkIm39$)E0(0C)Br$`J3!2$%A2!(VrCek1$7r0hAE=jQK26=5zd+Gj7Z5%^IU)aYjGS$>OC+SrUDclsQ_qV%M zm{;Y=(NnhnZ=fM6YNp*L8mdY4yH%Bz8PR;pP04 zjpmz@1lwuPDHz#!vGCGVS8B5|=d7OcN6+QC174DiAl5b`O9w8ar-p;q%LKsX5=)bW zbvwzraYz}_eNSq-q1jX@G7^x;5}!`@_l)KMcrMa|oPq*9rbgvk%$qjSeAM_vHF>5y z4=_2iTn*RPVty$-E!>F2-R8}50a?7c;zFKo7ETQ%j#I>4>|zsKbHi7@y{RJH#ixHl zakUg_|3bHdK&8r=BZi?FvtlD~U~`~Lxkl|(!)6gjM)?}MI21XRN%Tcyf*+|Qhw}}G zZ-5KNe}mwJT5k|w^EaeA{M0; zRX{+Mu|=zpfV;UMt9JaN>#-pu+c5&-FIcbVwb>bb?O97Kuf&!oDL9R!fJZ~^Ku0R- z80)}+Or?QqVJ|^g1L{ohW3ARvD7#Rq!%{e@o8>y|#&xujAb!z7Vw{gba4S}oVK%GL zMoYN26i-j%6o_YZc(x1C#HE);059)j@!ffMAczcBZ%D6r|kBtXnz!-OXFeBr>qtM;SJ<6fuY(sJQ%ExF3>N!s+6A^vso$` z^P-n5U_Gf&a2{uHR#Zbu(P}QZGixfIM`~(bZDNSeciOSA?9}DtUs}TZ4vTrvJgz2^5B|M-r^Gm#`?q@k!cx}h}WF_IjkL&B#ezQS#T=f zbh1=t#%cE76Q@ew8Gl2++xeO7gH7(p?7`9Fb*1fvdqAlNd#9&%S4Ft;>)*^N=5ni; zJO(O9PK<|c@-_kro+e{DMRjl^?{~xUnkj}mN^x?IcwZ5e?dSxeY+)f;h@?^v+Rtq#!hu;_Lt_RDE#IB$`-1QV&;W>Jl4b>?O3zsB-)cl@>$CCDeV=qx z@1@c>z*Bmoa`4Po11V&_vWA2il+%(sTm{mtcK_AxwQRR{eQa8Ag*!}knYKZXbQIP~-N_@B ze$DAZxh;%fO1I9oA|j^V-aEylqY-oGR$tf($4sl6L-*OoP-n*&>;^=5AbF7Yi}9P@A-mbBqMb zZ2uEAc`G&GPO%uQs?M) z4- zWgn;|$DhAiN<`&C4nplzfph(8e6cFNpCOQ3+m zB; zgWJvNgI#u-*-S1B`75V@FjyLoob+ckw&k65g3+nmMvErCq6t3Mo4P-!4~w6qTvU&a zo)q`2ku)au}^~0G7ObtoyGzSV#+2I zkvaOSDJ>e?>>Wp-F`8=$>m>-E-A@Pyu-asOI7=C326{#a1m#MKhR$N&CQo1g@0NiI zh0VUncrE7Uo%NVu?O%lQRZH2Zr(5oIrA~mI9aHs4=2ReBO$l}jxO2b^M&lkhr5e-s z6%oT8e8Bi-fw|U(KC|r~m@r?=Mxf0b@b&X1nIr)&4w6RPYNj0kKPOF_KElBri&a!1 zJRP)6I$?vz*|4{;2tUC8Zatg@3h)w=EW&FPof`j?8#t)=ct(I7TgNNCDDwMmr9YnM z?$mqu*_5wL)(3O*=OkqC{yhP?0PsPSu}bm!j+8S*-CupZ>hF0g>SfP#5!J~YzY1-Q zqg)DeUBd1C$dqY5#3}x-E`oJs)~U;OyR{GO@BiPN!8G`=w12NnsL0q6DR%4G=b(=% z=Q;ioG0s{n*>+x00A%eJ4%7Swzy}%)jB>j4G1WMRE8Q-7xs-&-c87c}1KE;@RLy7C z#kBb^9-!{ zUq41N-(OyDBv2`6u36A(Ix=LcIdri^r5K|ppp~|$YpQuCdql-ntI{$!;w==V*PQy& zTvsn?MLNA50#L=GK`spba@{iY5#jNBNH@P1^Re*oxPo-?qz$=aHRxfg&895vd68PM z%8`9rpPOR(Y}NYOQ0CZF>7{}gRB@oOtYAFTQ%3MF=e?M&4u=SHfzSPny2p$lzBG$@ zy-SSr@2@`24PSokEuVi1*L_G4Y8lLd*iXN&_sBLH(L=2BI&KlALB|Js6*(*c&bR=4 zEmzNvnwfG#Tjzh>GZ*3WBt|f^5=z48|iv>%LJLo(zN*ASogtj@?Ev}m(9Db9K-MbNvs)` zCd(2u$f=VPUq%W6_y(b$^&bIPV%+s-)X7MIceAn?U}YkTrawywvc9W87gl{-n(6{3 z=qy64fR3}Plqg1FhF+F|UKC#OsBI%5o0^&FO={fJmG zpIF=qs+QS?L_M%7hML`2>;NbLZcJdscFU+GauGXbpd61Y<2CqXeBM`oqMsBaS~^Rd z@(loqh?2O-V-$OvopVZYG})BaN>su$hG5hq8pFQH;GGtPF4_1fVGja%sQlGCHTcDN z+d-&yu%SypbET6ksU?mRLwLR}_bxd?r7hUWt|qxVDWDCv#%>{w*dc;Fk7Z0ASewDQ zQZ^M$oRPIy2-u1Eh(SkyhB}jAP}(A%P^9)39dTo2sl4q&%UjFRk@wfnt4tXCll7LP z+2{KE43l7#p7N#bheUbivYMf<|sGbo|&(fcp2Q^7gXiT>e(medykzxP%b5PO6$L5biCFw;r^8 z2cV)wCWnBaMy8-fykkFTB)5o&QWA;l@1>}z6!2$nIP&oZENU?adSMAkH_}K+WPy`M z^bl1^_aVRGsaA;btH{;QC1k2$@{hMvbTLS0Q_bC=ZQFgy3n?|8Dm&2B>T1`f8Fji0 z#x0I_f+$jSV+FDuKFdsMjFYL9#6M~mn2#OR8)^MJ575P0%KVR=^{4Sf7dRY{?%4;ey+rh(!a$A7B?- zUS*Jo)v~O0nzyxLeyv|W5r2vBN|>^ulaZf;cO7D&+V()l8_sAgz-853&sQ1=w}3{t zc%Mk_CM$IHp@*O*L({Q!v0k`$eZ*GJoRf^Ghn)FSm!a}lBy==@uqN~aYt3n%K#HZG zQCea1r>4(R)^8B0{?DdcLx?ng$aMhq?OLke&teY;c|5cHNx3;JRWixuuF=2;?SlhS zMeh>^Mi)rATD^!@6Cy15y$hx0Vw({$XL;jm>Q=jihETr<`#?HY;>G!Hjde<^7zBVv zNP`PN8_#DlpG?;(`8Wdl#+g!vnIDnSqZ6UVodBi#Wv-Y8d&k=LsENWAOf&Rk7Z{;! zg9tMofn>yTmSD*tW6-4UD9HRU)Jfy~xxhmZL+cV%Cn=Ej&cPZ~SS-Kn#!#m}l;JjH zl^YgaWQi@W+80U2cv3ef8M}bmsR44d;zy&t&z=v*lj>rBxlX0?%lPyWPZ}74=^mr} z9Rr@ghB=LSq-+5(iXqGdN16P@wejycSW(RlUUt4Hl{oezkU&xXf9QJW?l=JUTXbUE zY%;NJCllLF!-;J+YA~^F+eRDPW*cW>r)k>e{&C*lJ!if5-0!g0Uh8?b_{rPner{Zz zs7B4!am9PLfG(oGGSDXgruU{Zd zg-89Hh6lPkafa>856D8|SKAi?tDEeUfOAv)p3S9}I^(5A4Z*Xxw{xZP^-pa3dsGbH z#x@U~$kRzmd9SqD$e4ph#hF@KZ*n%Nv-&AL^C|J zm3;HYKG-?5;SHg63T(>`tfg}F!fWc0sWl{=e36-6`2J%~Zvq;gIqQpdFNv?K=*iG>Wk-=6OM$)i6n5g)ryInruMD>2k*uXuvDYPF&>o=D;Ww{NClLjQjQUhpyC-KA5-)>QO9hy{JF7Il`peEHn8UdxT$Q?5Cz zyJRVV9Sp}xwD?K6orHxkl@v{}*!?`22iv?db`#SEm}q?LTtu3ZC9o{5GNRLz$UbX7 zojQl-+!BzE>bIcrNe_E#-l4!o&TWQ>xAeIvspm}^&oD^3ebK1Z>B`1Xq9||b*GlG;&_hL%asb8V}=>J zfAibMdPF-fHUqV77)x;x7`Brnew8A&xIgkZr9@5XqaeBI0wt4_VH`E5Vk^vZNZqId7r9EOn8KA(kL zrf0IDlo62u3GELcOr^JnbDD}48N7{+He99S(Ms{-`_SfF1II=2{pFmM?q>y^jbjew z9_V+8P2P~~uua`axN}?S0NLZ+=#Y8gfZPuh*ZQ_9J{t9qtG_W;7A)phd5dNv6#0@U#{GhgeunP3rSx z?9aRj+ZnQ6I*{3KB%2DaowFxoN5r?E*2TX3QT!lNAe}Z7aS#$+=wo5x8z3e01MUDe|t$A)4lEW}AG<`32wx zqykX1?+nJd(lEyU$ZV!EHGimZkM6BI?2zHjAfFU)h~=G(9T-BI9Z_vI7)b3@3nDvU zbLhMzr|5|fU;UwL-gkFt1&Bew&y+bjDwDm6ONuapx6R;Tiizk53vto>t;_r>S@kzFW~Dq=ez>ol9F=Y-C~pX~jmQq+vJ@Ta=W zpqZo17caH?f-R&2?JMU=9P>#2ZqY~>nlEmUa&VG6T~!3(NaqKQ8ETc^F3eG!y|G5jHpOFxsW`Z+wvLWW$kyPMj&Hr-Ik-^ z$+z+y`H{51@_qC%6wL?8BQD?*u_6tbMvO1Nb*T3EwWtV{kJXZh)cJ^36<9ehy~1fI z>a#e`cAxltj;I{U1-56ee4#a}Mg0_+Q2{73k;~K;Aq&-`c~98)GZwkA-+g@R0p76a z6kUQIge+msz)@-h8&DsN`m3b^4?WIh{*gpw5BECDp}TmONfi`Ftg+*OOo7tTX67BN z%TR;s!($%5;t^pcuT~zVd7Hx&{u2L#4ypVBIgXsveyprKj??W=tgpyWfDB14`w2xI zQ{3_y9d~(~KU2Tmy+}$^+v*eI#m0(?QmK0f@xoHR{da=De_`)&rRgK+AcaIHrW*er zn)^>9NzmsVD3nh+ZH^2gI@yS8QRFILJ~1rJeSQ8^>JOlb1ONaqO7#dvMBU6$KDHBT zx=ogy`@T!A8-+eW{A8Q_E%Le!!ozY|QPQ^8%2M|Qt7Zn43iGAF9T!t;6&hS7yELsK zH;5)r3^i?>cbc)0n>}s})rc_i#&Mmw6v|46cYeaR;Jult8|Wc02O!XQ1{t4Y2M?6w zo{;i{5FK(7e0wpUOA$cAm&9rgrM3pZWA6#U#qaBIReY|}bX37e;s3xgtIOeY)?JzD z4g91e@Q1)F>|FPNR6ee#5~i~7;3VH%>Q{(Wiaoxnt&+7rb=ac9l|qgf3ZkTw@IkvS zW5FcmHLuN*&ydw}PQYw&fW*2SZ&h$9jj=z7+e9$rB9^G@`Yk1*rjaWIgl(UNkBf?m zAFpXplL7vwZy1~>3BM?b4cB9bezIAv(bC3)h)*r5G_6`4^LNL+RVBH_QYh9^T{h)# z;|4Jm-IvdClaC6YJlx1UIZP%ZH`iBQiZ`RrCMC>lM%QqB4d5>DolwE!Nk%bXaS6 z^EB2O2lL5BoFz|B`SP)8Z7vt`r(A!8$#9q~Vbn*?F(pyGW^O9VrJIV;#pXxVryVD@ zLQ}RDYr!F3YasjAyWcvkYT&Qr@w|4enPlYRN5q_A3R+i_Q&hS})JP3ED*pV3LsWjY zmajEKdrq_J%ql8RKQYL-B zSEzgszU~x1VFJKu006M*zSx-4RaG`EkUAZR2ZQf7wz0{HwC5w=<~9N9yuQzbkJhPD ze9(FKQ#hgFGqSoY`#cm>Dq`+7@39fla5kHSuQX^<23XsOLZ1L#7 z7$7@P6{Bc zpKS?Ga=FA6o;Ad#scq#M@=d)`Ubl%rxqVK!Y#J$l5obh@ILIu+0^+MUzh)tJL0)`m zB<11)3R;elQ4PEjy4}6v!nmdeRj_e6OD}(?z|iC6^mfq@%nj7+KGSWB%q;k{7bwne zOwk|9{|z}1#BP6yiO(&yey3I}%0)9c z%U8a9YFetzCI5xw4VgF=UrFr@bx2auG>T1|Rv{EzwfOTlt$HNxZ@(XhmKy=lGM)kZ8gnyoQ#%F&V3pM+8W!A)M|_Q;S@~5l?19jl(U_AM!}0L zUI|i}IAsq^9sDN>W!iVdMrfQMISpPDxV$MR;j|I2YMO<%FBb7h1eF%4Ucj%XXRjDD z)6CzM004kghGdZt0yY1$6pT&>ceWbEP%l~Z&0xpl2G(*@A6jvrB4dk`O`>FmfS(BPLCIZGV`LOY5OfY zw=HCR!7*qo$Wrc8v|)mHCMmz{;qR0^6F3L7KsC4}s;crdo4aoV(8nH!Wn>Tl8P{Z1 ziQ8%NZJZoQ0WZl&WppI7eG&(=mxlnG!{}5jgUGB(Rm}idj3*8#jO^h0itXy9nxPMx zhE-E_*(~$6$G_Q2u%lgV%*ZKQ_HUToqiZ!{!W(AT4CD@DZ1AZWQO&jLUnC);i)Kig z52zAw`MVckNHoEbuZxDg^`-z@M)c}RsjE7zk&GfMlyGM0l^> zR<cp@+eU%qMP?vlo92n{9h-;f3AlD+ubE7?_qiaS%X+qE-p@)YgO~iuu{8A`%`W= z3>S8?6uW)oPhJhAKf%r1S%<$0R$RvoDr3Rbbk66Ck#+&q`V>FUdtuh)1THf*$x7gF z-q{>I(tX`Wrg>O&`A*oZhMX-GV+z#tehBqc6U1a8&ANK%WG$Qz2zfIj;O2y$G;k!e z1`7y|HMqR*M{dbVOJ21lMC{{j7-3h$g#=MERGQ;g2&zn||8-#Qq>mM}0|*)bk~Ovc z5U}G1+=9Me$b^w!zhfSJYOd^olIq^!PC(1Lq7v!a-=mVQO-z+mRc&vz{ssgHuUWfT zwQm>G>GkP+qX@2D_Gz-GG`jcCy!sc{<|w>5 z|Lr1-iuju4;Pa!=>bRY*)+y%{X-BfoUzT8VncOmxpVx7!nm@A0dUrrCv84ls z<0|`?4)QFYA8J4GuFpez{$ITd03U9*s|n?~OTK!)=3?B^vM+M2r$bXR;=c8I${hgM z0$`EVz}OzSvR4g!rZd zKKGm0HIYg9%N)r;>6;^3g^7>!7xs;539)7(TyEt5*I)a5U{0Dqbjcdaj zHcsHFz1+FZ*3It75W6fn1V!o|Nksqs}R3p{~V$FGoE%QOOuFHZuWY zs!C79DkW|fR5KfZFvo=WZI9{vDIGVE-uVgp}>x$LFCkI8_Z$xCWBazB;3b9xt z?B}eZwR^Q3<5f<=|HoVIi|sD-irXWlfox8UJ`<;+%u~L3X4s&;k@G265C8`Y07wFe z8R&*8jEr+^0-0)&W?qz^VUSXKY6Piy&u^bF(mOBd`n3hg*8 z?8`OIvbDcp5HYrNa6{~;d1F6{NCWhuF7OjK@+|2brFih7+x7e*)>MDLi6K5r3%!4` zKk4ktU`y1#|8UdFL@qVAuQY?@J8p ziG(f+u7zTuZlsl|r-EBnynG;kCC=0Q>P_t8b<6*{Q|RVvii)qi=uWGiJafgT!{yyB zk^27$vcml@A9^T!9oSeIo%3gBoSA09i@IZO!O#JR`K z*5(+}f2B_*xz5ielzyRDW{`On|u1!UYw<-?ZoX41pijR^&-6fMpdgIHjb@EX}6rt z?zCY+B%7>$BCBA9M_?<>I1J?u!E@A_hNN2PK!p0Z{2)7KUTJiNeJz0^kgc&Fi4mRl31>KbdhhG@R3rk6q@7>3mw>? z2m~-R`+48`kWM@Bp(XIaFHPGR&5t~wz4!#Q=J})EaKRcUsq!M~@$C%cr!u7Xs#)TX z0zVtSQmi%qhvlrScePP?9+Ft|AQto?xHe@DSE38Us;$>HQ6#^RaRKnLvdc0J#`j&g zRkXO|cf);;yA1b+51|~O-a8&Cwm8F}vPIJ8OCT91d0xT$Rc2t1yB;Or5PB-Xp_@9W z?KIvC-;i+imv&xs=zD)oU6~<6j4C~F^}f?QXs?8^vttFL)|YWYQPEw!gP$EI^*ujf z(D&G&vWBj~hFoFNPJI2Xz-M`KQjLuYV22w{$E@J{{ADfnduz_s;p2NjhcRlFw9)d6 zyuGfh6sfbGEx}xi&iVvr%4h?(%DR(H;BVgpF*6o0OssTIIU zZ6I>a-V^$yK3R|aG`Tz)RbG9Jwr<>K?P@pM`KK!`>n?xe>~Nm3V8}i_CJYoGPs>?g zr4&3PhXV*79S=#ymIT0-z-YMy1P^~X?VvJ!+?;ER)3w>ZC#g7E%Mpm;QPf5I!J}{6 zD!fqhCE>UYQaGw?E7AOJg?IbTHLhd%`e^LNK_=|!JkqUH^ZKHm^|brjDsmfo`}s-H zleGM@E)R9zgMS3 zu^9>z13=}E);#OaGQ511z%-)5vnR_`UtX=KHqhCbPy!+DvS1L+ioMm6JJc!gh?jbf z`S}KN-1PM%8nb!aqX+utid7nZjGIi%%Al)4P)E_ki?@S<&5GkYS!mt69IxHFdHhwNERTYIzLrkzQj0=@G{{1jF`_FNlu5xep9&;M^L=NZ;J z2l3nwsr8OITu`7ELXu}y`OLI9_l?_A&N%>10RRiwgxBkyZPn@N&WA;GG~w39;II-g zsO@eI3AqR#-NLffh(4)CyL@`DCTbiYdOl^H;S7UCdzn4vPL;JnCGoqa{oURq7zSxY z<%}xS!VX&rIKCE9ZGH*2FHV7v2MHk)2V(Uzn0ZY{zz`@9#1@W6OCCi3afmysK%aG+ zdUHpmenwHdeh)T1Y#R3p1>~dg?o*=0dTFhZ=tl`kwIi!e$&OazYr!W68H$(HbYzbV zsPo+#hjWeMrHA}Ir$%R;xWi9QXB66Kcd#zwV`jO$O8++m6?P!Lb6K^*RTkS8ns=<8 z32du!lP)3LZHaJ~4~7P&rcsUJB%Cq})qk=$&eE9DIZnKRA~4Q>C|P3Z+8up!cq5ZF zYjNI`_)r93Q)>VK0QM58-!8?g@l47SmfkUNPhY>z0cWw@9j!F;-!n@62O+_EWNIw!)I&_`oE2j(w=;V}Wy~sG8yVnvK~;dO$mbOz;)R!( z{?qNMX=5{rIpKEo=~<5=`>t21N6LAGo*+?R=H!}4>hgcDKEPMn881P3i_@>(YsF$e z;S!X2R~4@uYPY+3J>{8Lz=SIzEDD6{7-U>^dgcTx$>La@F=ZkeX@+l!T1_| zq>yQn0r97Z3Bq^lYov(Q9Hng4p#1QUxukL1Arm?>wLAeXo` z|9N&Y2y9hOB?zksB7l#t=U5s($&!oH^-yEz0I6t0(WHwbS-*ZJjc^TjPlez^>JH!( z2U1kF($^A$WCAiPG!p|8hs)z7 zL{EE{@2$F6R9aKUtzVqzVhmL)KE)F50H|e_wI{g-zU_DdLk;f+N{Ku_cJQ5#p*ASXghp<|nsptqBHerA#*z z0|nLem{vwii7DqKN9oY(Qip1CQj)Fyobfii>w3X&p8OBXd6@1%p}fNhvpczB^x0aP zd3INvD@w9F4H(h61^}3FDylR(CBHCk?~26dkhRNm-l32>($4xeaVz&E3J`^hYI3VB z>uGj4&zr8X!2?b(`!E8N^>StE#(lfbC2uUg5|zK4VsBODx^QQo*$a2_ba)wucQ1ip zy}B0b?d0jSunkG#%@3tR-fGZs3bzG3*52vJFxL76UKs zdHH_l7*}cz`TXhKDBA zP73$B26t0KjxYs`*!jHeqfVz_?tGfbcTztta;kN66dcmw1`oiFVUG`GoIDmCagSWy z@UNl6Z-~mfUWKeYoJ?Gk@ZM8|ts^ZK_~`V%_nI}T!j3@es&3UBJGU;^`nF7V6|L0P zJA5439$N*l`ucR7w~92Rn+DbcRqx}rmVs>bg8wllZoJiI1T31m90w#&gh@V z3iZmy9!*}~oiImVqX|Rxe@R~dft;81b`O*{JY%*mKrE&jH=)eCDu-uSkB{y6DaQ{1 z5Q>Z{g=TOq!mPcd4O4OCgNyZua2Y^?co{`yFhBz;?)P^ojBB1Ew#Q#l(9=%yjplOk z7w18CZj-j2s?On^of%~9bK+5&yr0_rBX^ZYEJYMMVj7-5P=M9ZsaEY8(tJ7 zlYgm&VH*k0#IuLs#jNp60eXHOQQYBQH?#}&S`m0j>*r?Us{C3UxY~g z7T5=Cgx(iTUVA(btFE7Nxhr;L*sD@EHHMK!|739}NTrJ(P~v`*L4sgjm{|)_us;%% z>IUxHI;;PQ3vYI{OlS889-j5>ZYx^ePJKoK4+tXpO1#~WM1*`QPY=2G*s>$=d!lrQEI2Brg6sQ6cMWybX`>l-p z?NVJl6l%7&TF)DL*&Vj$&){citT&6jmyY(vl#PE6UAHEkO*?-L zFGO)lsD|D=Oo_I8RZk0*gO`sX=N9TRCC&JeH)HJB@mIOF!oUj@GxR@@^D*Cno`O6Qt{n44CquO6@*L~A(54l+8!Dn`-2l{5 z0000+khP-wL>IRrOGI30B34+=fV3^*a+Uaj9_}lU?A}hNyIZd@m+Sde3Ovlu961p5r z7G7a140goj>LH{SnXD~;Az7Vi!+K|w3A<}FTI~D8RYMCo z+A=moAOT4yPFk*?+=7$-1nZ3Wb2kdSV!(spND7Y{eF1Ix=e6)@NDyP%O;Yr&jM3W9 zvKEPD(`hzl<@!bk+7f-@AZmpcmsxL0l?+<#St1!Kn~vzAt;2WIC7}P5u0AzKTntzd zHM(+4KNGJ|q!GE}V_eYP@8*X6V-bJ~0KfwfHbV`sD37|Zv-7J0EnX2)APT~GSH6(kD2DjiL%5gPix`KFZfH6JmSMWN4Zu35O-I@q;FYTJ}xMtO!S zu^(v@T!kIk#!8{PVMnO9SYXUEw9x7hkE`~aD#eV|L-H%M(PgpcvUiVd!eBX^s@sxw zbqye&_#+~&QPn}^o*Fa&QN&!sit-4LqEPm1r9*Rd6hC`Dj@^%0ncJ)!K1Y0})JJVH zR#vq%L>mQj8C*r?X}Jnu@{xeM7g=k`bXU$8(bfFjc(KOos{ z^$e&_hGLu2#2O1(Y^AZf9*#{`y5tY#nWs;DC`)spyJeGJ&I_)6`@v8}QSLBeF~f%+ z%;(#NrMIG&^2i=>d7{_Friz9$o39wd)h^J2JtsJ=!l{>hOiO1>4?V6Emp(%a`SC5S z&8I@fp7Qjjx-IA2GD>p-gRBj&M#d6?pNG?*RKr4q3<&4_3?PU18pY)kw$aI###c|| zy*M=cqfRC=;VoJQT@jOwPM=rRZJfRxH>GXz78oA=L9q9yW>sL&a>=Lwh`ulKBp5<# zF@+Q|FLtoL?3HivwcSXnnR32fFp5BlQA|jny(TsVUlQqr%7%twFlZOcYWx|)U)G?d z^^c$j79~G*w#Jt~Yf7hJlaCBBntCa@_W95-{Bk2UAllI4KfEf+jsBp)OQ(b15P7&! zopfu*hJ*-h9qBP6oJr}$>jB_wrzNs0{+06kXq3r&7Gih|*JS>c_x1Ju-d{2GX`!VK zWupSb8{;6EnR2QTUljt72p+!~#gT-Q7}qr7_-L<#kHV}&KHZK0W`DZ%m{0XUJeYwB zY*f%hy7RPQYz`2F=gqCyJfl=V7;0RD$*!e}1_RmO*>;N#an;CP_<}BDHrjGil=&(NX5`B=ryz3518NEY2IYGDe{|I~;@Fn)8g;r;IMz39J7L za_~N8MtLZ_mT3uO5Yfp&oR&CmhVq$dY2L=&(HuVjEsADeSRIz!j|piX@~Y^HERS$! zgJ|eQN4|ZU0kLk^EHQYlP3Zh`@jJehbN7YaP9%k(f<7)p^?cl@`VG^X3Z3&|l5FSt z)s#CxZL`U~hilC@$&Ljfe|-x_J{j3}g6P8usM;bSnd9q(nTsrx<}$G(6!LrjW5d-+ zRgmWo<0$T06S9^c=%m9WzZ`%H)U;ue-6gAnomS#;np-eruJl{WV!YwtAmi5%qA8xx z?a%G#_bGiAM92P(E$M%-2$*(pUtAhqSqQLziGPY*CGah1-Me{u9`#!3*zw(Qi!}es zy^S**REp&h^qBl0D=x`a9A&yk85)U$L+!Y-P)9R!nUM4aIa&_>@XDfJQbCyf{Q#nd zNYgij!q8=BDG8E>0d#U*#cEgNZRNYzGa4#utE3Ld{fWV#R0$oIRypFdkFxX}z$CHA zaz~sN94((4vDZ`Oeu+`l6#Y6~z->=z*+8r2*_>DBD~4kXRV2$!zjo2uOsN&kxu%#D zrl1#QK9g7@UzXzWXfSTJYyrlx%w3zurFF4RDtuqQ(JcJ*VGxF@UJIT5c(-E!z))3- z#fBT2bWByqOxVRyt06n52DZZ=4~?3BnUVBseSdU@QS%-;`|BObr9o4T}U zwrDg$|q7sM`>)UiU`#^`2zeOke_pmySl0*$emxmhi(ZH#>fjf ztXxkvH_)Y)_`UdXme){ey02?#u9hP+#nQ+5ZrN+hf86^sJ#nHM*s!$>tg<{ybK$TtWwTw2p@7F<~Ik*ILf2TMu4j>9HX%Q#pak6^e8; z`L_jomyd?twCsD!@BW!_ymDAJucFz74$`P>m~MaQx~Fe2_i1IW{0v>uEYPn156MM< zf7r+J3#T-YC5T0t;VPDSs?aVE8??JVz0maoq==|_mn}py9=rB}rAobcZSnB9C<~2E z&e0 zZvxA{g6)la{7FXaxo{i95eveOC4T8MPV7X4xhWH-IId^STxfQye6*y-DmY1+GP(GdC2D?tbe`9EzdwDsYVGsLV z8NpH?dKjY+@kB$PHXzVc z6-@DV0pLS{C1tuS2imv0AmF$9pxA1%x(;bId~Og?Ro--%t}oXy!9*Y8QUS#W<Ojer+~*$JyhFA za7BHHIf>8?l6_x2gEPP*dRM5Am8FbYO!_mU+48U|nP#P{ zp2UnI>~~q*cUIRqw5$SX;%|^y(A=degWs7Qcxll2BUx1!1U7SPxIgf#!H!^b(a2sh(2z= z`xP$7;PWKsEmhV%%N1Ry*V3q%*f`fNdyA#dAXP6l{m;BZ`zH7gQ#_J7plWab#|LcU&Q zOxmO+gOtj5QNCcDNN~6w`yf?NnKXx(JJmY<5ITMB0kTyViJ=<8EXu0u5(VN9a(hj0 z8xKk>{AP=&j95$Lwzpp^P<`Ln4Lhf+w8`<_duzwW7k8+?$1YGS7wWaU;*q&P-+Y*D zixp)+iyp?iCE8#}7U$@c71saTc15W{1*`oQn{#+(e&7E3+)uvzKRYAviS{O2PzB_q zYZf2#iA~&sEJs!@jA4n^>zpX+ZUA;XfT2VN4qGSPS&OI;1!cazxDitmX4Be4IAh!b zS(<$LYDlAv#qtzp=%!gk?d|MswLLrYDpVn#8EM`r9r!l`{~N=nBkx<5zu!8P z*b<*#rsO3u{}r`k!}3*M%vg6g%-EI_{s24rSbBQ@dv0=P{yZQewdrD6xZv=?>QVSH z(!Z{2&$7JJzwYb!jbi#w?TzHp^A0+Ti-1DZ38AY0Pv~(*+m7`Ugq2^WaEXPw-eDA0 z3{+~8s(&62EN!t**ApGQY`BQw^of|X?4Q!a@3D26bZm8gA|p25R7BS~8@=vTZgaJR z!3M!z zk`*4mii~-fq_yL;bbVFW+Ix9#Im$lMGAluO%1g{A8MD}LR))6nD(^b%^QvZ#T*~QaZ5nc3h zWDCO**&>SetU-TLZk9&QN$;83AJI7z6kGl015;!7OIQ2b&`31gILo?9hEJp4HWS?VD4E|N+wnZ5(Y@+a>afyHZaPt00H3$Kz| zBVA?yN9<8}$u(U?84d+mltTu#^e~)4C^?xk_6NROv)3Vz8Ny$P^W>onTZ0Vs# zjF%x;Qzo9788~0}Ejv8on4`|RrK?f007+!;e!ZrvLffF(tMi$k0yemMjlUV56#%F( zCMM=p&n=FTD{-S8snhw|o!KB{Mq4{t<8puS3qzeEwf3`1Fz!&&7mK@a-_VYBL%TeX zbt3k}GdFnQ%)7Z4c0k#m4rH&8AgiM_>Zn6aAk)J53$cC{$dibr zH{N{rbN;g7SU4(=I_7Klr(|zZk7a%F_9bWcekAFc-^E@;-wh-FN7eTS8*5(jaVMf* zCWz5DYK4`#oHfr)3$-~gf0YFgMRhvYJd;hK8=7DY1@LvD5DJ`DI0dso(j zH0`q-EW-4&%ruiJU0OklKP)glA)D>LGFwt6^$*VLxU_P;h2qEl(~<2Uc(=uccDwuq zcDlU2NUa-Wj6(^Crfqx$AbQkY+wDn3!dXHJ3$tncz7v9l&phoNJlP*_8{f5tC+QBI zLec9h38G;DQlU7=9bh}8((XI8nx{4}a+hvznAN(8(3zXX=*)>kk)C899y6;!5{tJb zJx}tVkE<`H%bFwLu8qFOY40y~!|*uJbuF*LVfPb8-%n?MUudwPQ6>e*4Q~{6oi-Bd z4)|racJpI{E>^O8oxx|^{;%nxh-Yvz*VIZ%FZG+;<;~r6>PY}j*5Q%y)b9WQ0o*T% zD9(1J2~z4p`qu4~b@giycJ{rai3Q0H%y((OW0mf)jPo=H=w1`vU2n_W$Lnp1&}_e^ zAwv>a1-OmH;9E7g^&SHbT%o!nHUNSCeA%qN0)MhCROJq^fJ1qN#p#Trdi7f(k;P7W zi*fy19Ay|uf188VV+o6BDtpKr zSxAEJPZImgiytjh5wr-K$*3iyibz{5+av2m|hixn2M`XW+g z55G$#f%cnxXwD5e2hxVt4aJXdxLR3XMv-OHktJJwD{5{7U*f74J}R%Vwnb%kK>j_% z+!A(br8_)c?~k@y&`2T9-?Nbb{pSBud_W|U{Ev4j#?ExAgWL$_#fP%e#_x zT}grae?k|=dobN6u-*74IM^BWc}$EDF#tinl@9-n@1jA9#6*rML@d0a+mchM#yV^W@IY=>)^EB@-6@Y zh86&z6a73T#Z6_i-tFO}`premV%L}+V=Irggto4PjIo}Eq1Xa zPhjAN!f?3(^!Z6Q)drryZ(c)UKPf<0xzo|`AVTOaDYk|YFiLo_8A^ih*}$uJ3gbOG zD*ZdTR4!orF7S&X^1eP+Ojomx82=Cw3rJB`RD&AH!#tJdEWEH~IH|zGLd4XxPGL zc?3q9)3{0osQ?WNajPE*&!mGh+gB4hqgw-ISDylsd?yYMm7OiFmG1EbctyEc3!_j+ zol~6rvQ#xg{-9w~d%U>nxA>gT!l{-W#q%_l6_OwCt?&RC_yq8teUzGIqSJdX-D!-L zRF)??=hU<$_f7R{jz6GA7J#gPpi=AzQ+bz?!pMw-z}?5<6bDQic)*2??y?{bqEG5L zxrZ=dp&?bzE+K&a)tJ#Pnq}-dw^Y4z*7L!kE19punf<-nV<>ZidNzP*NaWW{Xbc0v zRG-xn8no#+Didi}mRndB^^L3?3s2a`bf1)9tZMHhR z<19)QF0un!(&i*cHTSI>5|L^#g)^?pComRISg2x#?3b7MZWCZyX>n>H881bZ$Z{OL z7Xh^^lR;6 zmz7Jg104{zHjT-u>ffoTVyR{E%I3d&>H5$i45sW!ty)6RC2!^RmkV_KBh4h&4sF{l z9lgh@pbPA)0XP@qXQ#G^i&kIc=ovvR%~D}T(D!3gZMNj|ji*xwChD)YksjeMUWHWU ztVOzFynDU(;a^yvMijy7h1&EhDjCz-Y8mBUIOg(bzx3Xs`kNlQM)my=K2#v#Ewj0H z3A|9{i$;_X)~vX4%3%LJMSorVfAcPd+U;q^a^JO0ZiELR>q#n(wbNU!Nk*p|SB8;nL%3!E@&Eubv+aF!!&s6! z4`{+gQB&z}=4_ofu;6FdJ`bh%KM&!3F?qw!s~OyN5t1P~0gF2?PsLytuo2ao6B(!KJvCQrz8& zwzyZY7O1>G-o5kg{NDWzXLir*9&z5xMOb`3H4du{LzR-;{cbF z3LEhWji|?`6*ziiRC&fvH z=khtRU6GRUI_EZf83O$*6YK_2q;VU;{|1)+IlYf{%;mZZcGO^)ou1>#7p@$ey2N?= z@b|FeMEPr@VX^VY|Mao`U&v8(+L&6#YJ5i~2Pg7RZIKzh^8{6q4$HM(e;F;10H9&A zprZ-+1fzpk%m#IjO^Wt?@vO#DDC%dq%FLpxqMVE=JNx9e-b8uavt>n;S^YY>w&ATF z(;lAbA1|-D-gf~PWh{wuAY-_K>_PG&Bk9u7G*nJJ$sgz^dhx8MGkLK?H4+Q^{3R%{ z&74Kt{?ROkv=83IZv(z-h?>ND=E(E$9)ePSCKC=vXW$0_G$|*Q zG8UsFJ34$=F7dSReS8Ie{44?@iu$JYXKEW8WfG3R(SNRkUevYa?wLtAEe7mNE89f6 ztrrf&P?S`x=Rw#AEIStXlmz$T8@{qZXfsyj$2k_Yn0HYv5r#K(+pyzn4fO!C~F~S^-F~Gs%Z4_ zrmD3^hNh4tkG6nUr-0WzmA4sj4^?!mhAe2!mgg2s?`Vkmx}IDB~x_zn2gCA(Kj>-xI8 z?l%50xlDcd1UNJgp%%M}@vdl}EJ2cw(@zVG!b2jvf)WsU?b;18j8@ns+069wx5cD4 z4W=4Ncq1_?PBb{5f=v&ps_Eof8MHu5aj(Gud`vVsAVF5F5>p}ceCQegdkma3QGET9 zdG!GPVtBH_L^5hCl3YVAyLSSAK}V+{rQAn-rArQ{=|m(n-eFuHNFbsvc;< zU{Z#$Eq;SP#S{1fSfNtgxGt2-tP|_U=lAoqm+fEEmD1P7SuQFc8xy&Ul?Q&as=V4* zV~*`tcXo0AD7^d}$EgP;h{OZ{+$cXv6j&>sFfp*3w^YkCjZ5HN$82ca&Q4b)j<%kC zwTYT*+a{e;$!)D4*f19wDX$tAUYobgLuW9upJJNNm5H(~LtaFY$ElvjO#)}7(YO`Y zKL;?m$QOdhhk=nN^t}Im6L2NJ4(@h#Y%%H1w=p>zKKicP+I$RX=`9v185paTB*Rk$ zH2qve3nxUE^QN|-r%>#sD(!=cYG6>txDt$>4-1fFN8g+ zvO75h_*W_c4OJa-tjy1;mGlAB`7LupQ9Imx}40p|a%T{3sr zIgeHL$h_LNmjS0DcvIY~X{8kGI(R!q3oHPnJDB`B99!~36yL%1dN4AEB1@1;TZ2-~ z!z2MG#Sf|+^0=rX#$|7ByI2w~;x*YC?;yk?3GdNR#duiuV;M7U1GIqg6% zfT&+y%71)En*5yT!np{k>h4#4>BaGhK9oqHS*m8T9oVmU<@y~86*M(oj>q5-ryppa zJOIe~3;ip}VF988(A0vF%V8+ycT4j+y2L~)Do!)oT%NTKB++WDFp+$vBC*Of{N_YL zC;8wY^hj{?3)w=$^bDJ%D$ypcqF^0`6YAs&R1G7WOXEgV+-CwYwa>!2;)glj(!v9! zrHY*tM^9qjHXZ$rpDkiktHlfAhw`?g(<>d-HPvYB4zR2)AydIYk(IMa;4Qrk0!=uK z3ys?W5Q$5ybh^(Y9~xa5S)MKu@I~0xqgYwFah{pbUmccw*uImbIk%tWP6P%lW6esb z4{GE>7lqz1ey>!s@u5&a;6o>5-<0I``OGCkL?KHYdFldZsisOF>_Aqwyk(c@8g zt?HTrE*@E^V_mxs5`OXB-U7wkpL1Pm_)6y^=B|Xy%wIpsqphqHo&(TK06+lRv>6u0 zutj>$8XnBliW}XQ-yLQi7Cd2PJ^JHQv8|b|9o99y5O#IZ;xxMult7_~VVzfU(#1G0 zLs6H^Ca;AM5N>$PAUDfprICbQw*sY8Dr?yaN|3U+WPR2ZI`_c-&Osy6U=uauPww7V zKBD=mYMxbT5rSMp{oWl_lb~FN%siPe@}|8BmNI3GcbR57#)JO9?*qu+-t0V9$RjOz zJ6`~-Nrsl<3kEHr3-Y_QjF1SRlQIB+5ulzg@jS9BMhO?$#_)ZIA%VK|S?&?yI1Ia0 z`QK+W58k@woN_m$mS`c7{-H&&6zi3D?1^c6YiBtC0SKeW?ZXbUo?$4w10`f`^_{v*UaJa6Z~TwFA56lHPYC@cWC3({=<`+ z+pNDWCPQ$Qk-!>|PrgB>L%x}d(y{v8d|c{S^*)nr=MsE4Ah2Aqr{)rWR4A}j#s1?c zCHE3KBbtMRD+f;g%wxPrg#~{tp3L!)v`IhAJ^g&c0-%WohM=$rusUW(StL1x^k>M; zBnueq_)*7BjUp9i8@B1n|MZb4L4d8+1%Bx-iJ z`P>!s;G#{bzNbVBfyvo;dCd|uLdw}tXC{33sgu1tcLpfjNwqnB9vc0%i2Qb;3yB&l z3NF^hG}k|_;Xf2-MC2D(F(}&anjAUfSa#>@zj2GmG;Yex*}t?(s#mbMMW9-3b~u#Q2T^i0?+_}>e-CQ zU}|5C3||kk&XE|bFnTEp!*?XPSJ6AOlH~(NRiA5Zdv6rPfFG68TWe{E@yVQ2=MJMg z4M(-j)VwODYk#YPKCHt>&tKz`S9k>8q&&4@=LBniCPrtC6ZvykR9r>DM1m&tY! ze)V=pG~|h{x?uHj%A33TNQ}WOe+qW$<^TJe6Q#@3C>j8bL$aR$=Kq?{@~XMmjQ1pR z^94nk;PqkAC`XuZ3+-lIjw{y%YE&!-+?w0vT1u3u(+6F9w&n%hJMv{80eeMQ*Y7?c zrWQ^R^tRO%9lWKgRV363NP#-XV^oBir7F?I+l8Z&RY72@SczP(5$Lw@_S2o04>FM^ zg6k9oL(A;>!B3oO;)s#=*U|63wxi&`BKYO)c6H8$ywY5rb7jDJ2+BfF)m9dK(+=0! zyFz{}Z!`cNH$v1@6Ou>6-PucH{nY@E8_@ue`;-52`tUXG2by-eQ0nRAW85SBnXQrM zP$Ku};y**Zo;9mPD$DO73A$Pxz@OyyoQ%@%%^831W0y(@=ST1g=)Nw#UO^QnBn?EF zHksrKEv#^b1XmdH>*HwHiRIeIz9RAF-i-&-#kCbHPe}>_t&tBZZ60bcZn`gVB1z7hzy74}U9qC&()JYf^M~LV z2LwgRn^93#mqKjkXa?AnktZCw$yopl02$IJA^`wevam&oy4>n;Q;%BHO5lgjSoyLj zwaL16r>jh@r4H`bZl`6b!gr`CgU`|f@kq(Ls(u@{f6itr46PG#T7lH-#1z_5sdrxg z<0xcY0D-otolCjL^plKNd5tufo7Bh_j=Nj~d`au1LvHZYWXr;gUnPWX>9y=wJU>Nxv3Vc)cG*HvO)6ob5wJ1i92FccB1Rx<1d5 zKxdbZ)2)v_6R(m4& zyd6Xhk4>30+BOs`Y`%FZT~7;XzHyB{iq|4od(-!e^ULUi++_sM`?kv%rKb5`jOt97{6KG60605JeS=Xd{zMm1f| zhVGhDdzTcIDm#l-9{GXeup1d(wAV5|rzw2?uhrBv4BLY97heQwl82U5Xf5~sp^F8N z>85f-e9f|Tl@}8=3ZSsvX`=~RJ{jo!m?LO6&p$lnLRwcNX_@_r^ zxkC%QaxPeT)sHw5#ykF4c_w;99mCpt@j&K0&&lM9M4gD;EbXt)~X@rRanv20p>t>a|$OKF@g z&bBj^xPr1|&pyAlOprtn<+^iL;SBS(UBmAR90Al;(HP%ZXR~x;`GvE5YLSoH?qfFU z(qh0)CS>L56281#Q31u&t}qVR4c(Xd#cZcOnTk2FbLYiz{<}3YgTvL!>Mw3c%aGuck6gYwbHTnq_m3N&F=<#n$uqUXYJ4RT}6}3FW1k) zb+>Ov6|8rEH}%RV@|fzih%{(#fLaN`Ksf-i*hkrTx+KAQ?>b2wb-da&LZ$g*=v9S> z_K&;(!*HdS9Licibf8MSy{1&JboyCVHibnadrPb2-gz##-i0^mP4qaFs$R#4eh{ER|7tK< zsB5HO=!~tJ`-A$${su)mKBnWu1BBNLm4a}t{VPH)X*6`DBGWkO{yK-lYyML=_>=XF~`1Dtahr${fBw`ggDd)j zU$9m)H$!#~A+h?c_jQ#ucQMY?0X=81(CQ1t#$WYM8HKk8-wj3vEB@+)N3*4>26mb> z+1bQS48v_7HCWfbsuij<&uxy8`Ms#@(01E&Bpu>7N0RjwJni4PR5=PLBOJL-_ z(D+4{D{?09@{Uwvh7oh;FN^AiC5T_0jI*brL{&wG^=vhhTm zX!vQ}g1~hbKKo1aNYL%qA}$aBKpxYf;o=#6*ApmWTP{(l2(f#OP4x;aUnRtq#DRfZ zU?R(`Mza)pkLyD-GYMj-r?F7)PlyR(2Jrhfqb_s;?? zJ@ZTd4il=V`pmCHJ}2_gdy1;14MqDn@5T=PX72r*j&GC2iivqoQ-KBKYHT&XFQ}v= z_gnbul}7`g+D6tCiCviks^6%*OcH9#bv9lGbXyI@g@I zUtXntns$y8Jai1*EvpK@nc_*po+S7+-s?&1l|>HxJhLo!@c%g%+*ddmY<{Qc!9E&Cgwd7{ ziyS*F2iPo0z+Ye-Syw!87}0m%ME2@U(f4j?{5-Q@>ejTb=tUNV>UVs!$p-uq$ECqv zPK$IKTiVSeBZR%3qKJQu zT-$bt*dPSRYwC(yaA+6Qyq^BUU%$CV3c-s&l7-O*YfYEDY#$6+(R%&R$a*R%7_Gn{ zQidNGV2fGap)EIqC>PWGezSOOHJ5QTeDgB2Jns;wu@d`GWZMH_&;98to&=`K5KQN1 zr52A?A^=O*!2kHlQ!HT?+N|_%GZ+A)rSvC~!=22J*laEPJ8E;;3Jeui>+Yh$0f4@7 z?P9)FzAqel7i@O3A~^Xizo%k&%{n&7L>+D2O)l7G<(3j&O7VVqOp;QQKKxC63)R{5 zs~J8eg`+yQMD{OQIz=@PyLlgY8tqqHj}q|PTA0$r_5&revIaf7!duiUg3c?}9?AMD zc?3ig`;YiDD2rJYP@oa6k!4<2;dwR4;Ho9tn*bUB08qP3$#K^U&R@F`Xe*piiLQqe z*eM`9A^79bn3pg`CAMrjPFIF}RUBY~3EKUBIZE$69LE)1<^_zjdUzJ(-!G@er@A>t z+{vI~(W*BerF8zG_rbV?V(e;dw)}97F&7+6mrkII$g3Crma*mtSf$%(%ha$)t6S}8 z{v+;3000j%d_nmImYxp0$EpbAzeBR`3wU%<0!wuqJZ^+E>z5)ylRo+6kafxRcAj`c^R_&^FIgjr>(f0j-(JFI7qZ2AZ|V(7%TK>eB--$d#u_V?nHLAA z?M>+hG^o<|>!gblAtwv$EjO4Wlb7m4&$zBK%NZl>n!S0k?b>UYS;?U&n1p6$rZ_m-q1&E){O7ZK7*x#Y&+Kzs9JiDO`Pq}fc8i=DhB{i>!RTRG4hq( zrB;WaY>Lm-X3cCcpMledAcw$)SR<`VRLZh(*YvnBM+In{|E8R)W5xS5FrqKyj9;Ho znay`~YunEv!L>;$9}73fPLe}=TV<_JLX=9ksBLLoY+9CnVatAi+`b6Ljirz=wPHr@ z`0boAaJ%( zuUA;{WUI3Paewg=l0LBSuaqeLfl6Ka4YIqrgr_w1SOdZZMnZOeva0_oHCo~}GlzT{ z=Kq2sRZ3L{tMKl1%OAy~hQ{-wHSiFDA_+zMcp6-*Q-Z;?5%ow_+w&w*t`j>OkG7lY z4UY6$FH)?gKiOqw`j&G4t3@6cPclYS(>2pLlK5|=p-FrlTay>q#E%T*(09^i?l%4jt)HGDph1;Jru6HziE_e z``3l>zDJjsbr}We)>+{VYw8pheS+m7gR3@?Y;5=4={(kiR4g}n@)39nqoyq7^Od5J zMu}>#jlVJJ{LP^9w$HS@zf9u(wTzYA&B)I6r1O)#T9V8A4hrB0km-0UDS2xW@a{!= zDXVMI2U{K7ROZ|jqG$SAuUXiAGoA^aXb+gQ{V8F!FTbxbv3My9HB1QZP)c-u)5+kJ zewu5?HxsZ=taB^pt6y~|=9hoJn<&Y&$ILq14Ac;gCAY+iW7Q})?|i#7Ui?PLrZNqV z2yJyw&~-i_>|mLgmNUY3SK0Iy0@XGS+;hJHf^-0ABBDUckF|nSLhQ4VPoeZm#$Wq; zKE{Khzb?da>iy=@ELTJVdo6BnnR(3pU(E$F4bm0M*q019&pO&U8E5jx_=OEa4qUdF z_i3%dzOLl{^o$=#bBTPq_4wOqj#f zi`d@2N&c|-8+N>c0-zSY08lSEO|w6YF@A41>Wz4Ju(0$Kj9jJH1}8SfSFsmmw=x_% z%d4;-*L#>?YE@}g}gFdo^xd&=sHWe{-}Iv1x{htv%7q8AOJnlARU** zbvNskAmPjT32udV({?TcFRBG=wd>A`xj}0E%@0{|KXIxOcJI?Vo8E5mwO=!oN{?`9 zTN^qP3iC)#bMah6Y8{%)LeOw(zAAS-@MBCdmqi$E$|wI z;J}z9Dt|p%k+3uTJqk1*I(t}}AziW{`Q@0oGv@ag`1K6eoJC-`N$S^h+)cF6=t-JY zdsBsavuQbR+!+z{(8wEAz94q1zAofzei8~Zp(K;uYSq0?au&TUc)yjMm*U1-v*nsf z(JVfV36^b7MYdM^@$%N@%khdLPOuHdrUVD(StI8=%k>mB1!uVQLwxVK|D#xg(2%15_DLxS)< z{HCMP1or#a^sDKt1PR+Lv!U{XaxWbDLNX!ME(t5`0qjIQ$08=~o;!p<9Vd%$#>wYz z!z=jtI$EFn3#npKB}1jl$Y=lnT<)Cjj73|M*m?WoAwoZt!s25vS}EdC@x!gj#zSaD zz{=%Jxs~s}a$5z)D%}ST+U@86;^M&8jFX$wbLGl6HUt5FtdeV>yw`a~j1iyu= zG{fY@5Z=|nZVP6m&bhh-Ju6j(o!qt}c}>n6T_P-kX%+Emmy)MEs1S08w?D3LbLIY* z3{7;*aW_+)D=097(AnQI)=eiP-v!P;Hf$m2N)*f53!no40BCYmw6$~S_o_BKur{^G z`sE6%Uf`WTUR+XKcCt|$+9_p-y5x9SZq7@W`hlw)jn{e*t~aGaH-MHa0nolUNdZ8t8}hrEg0ea%;UjO{5BPReP}@qP*4DXuYvOvBsIp zV|urqL{7TPsV)T0`&7@vt?26VBgXCD?7x5K|4@4239M>RQIz!_rXi?r$C#~o2F}UQu&v8&cI)guHsnpBV6ArUx*ar0&ruBuea{uX=)w3egyEI|Ps<))j6QzVhM&Wklc@O%>!A5-{m zufDI%jxHheCY@(H&N6`lF<0meZ{?VNCFBN)&T|B0won-HBAQG$;Rgc^?#kv;<|UMg zbJSk1Rfvj*A?#{f{!sH7F-V`SC;nAlqLh>DOMhCQ8j)5OpC$BnrlVzw!cy(EOUw-# zvKgI5e}O&U`XFDA6NI=@l}*DS?CCH?vgG{6y$=ST?;lKpe=e^kzT$smPU}6gte31d z&4d)2R%NPx<%d^3gwH6Hc8i%q{X~yZ8Vytifcw)dLLa+Ejh?iL=Wd|SFb--ktD1? zO%3Hh9ME|Hq?jBy?sg=4fkoz~og)#=M>jA=*wj?dzp762$EHMm5h)Pb5inpKSGTEO9 zu1GXkU7&v33_-dg8(KCnT{*@&QqU&OIY%jv8&e&uNTgnpJ{+a5=U(& zFjX4M{OA*yTKT1Zuv?yM4aOa;%%<9B^3Gm_?pnE!Q%a2wbdU)2nfX~ZVXe4H1ks5S zS1rg&MTrRX&pLn=uCHHZ0EN!Nuah<7Nb}o4QDT-x7xrUW5a54?Q)AlMZTDUYdgbzL zt4U8zBUp>QRr3jkb@`g|<4|~Laui6v2tBz&hFX(U>X+2cI-lML@)mKOYratGYqQ6n zIe~w)eK0ckrf{Rg;bQrjrfxNfA?<{1(F`X+w;*Er&S$E_%!)61{FZC9=zLa&DoLWT z;=B}}=_HE*ZEc5QrdCaEtM!?bO)e2vDZ&PvO4Q-&=jK0QBv_CFVcOdj?TUP`mhF8% zJvWl+gBA_|fT+>bM52p0>=jb-p4|fK^~QbPZ4=Ho8})82mO1qWHBRT}dh!xWPABPJ z-_{7vfhv_~7>>7g##sp7pG$uHSU|tz@Di8)M4(rgYuU}V`PJjK_zx4_-x{KXJIkRWUsb+Gtr~!vfDK12PKG1DmycY%e^C6DIQr~^ zj){g@28;b7vH>|RCAu?E7L_=ymS^J(p$hyE$>L-nBhHoK&sk%P!D{atp9B#Ve?Pxn z?saVkkFo@5dsQdEjI8bq?|3Q&33!5}a)QK{H$j1zaq(QjzvAp=zPs^pL6m5FuSIh* z+->y#4Lsxs|I6?zGi0JUJTeWm!?7MCu$95OO0X6d*aYt;b17UbqXPhpVpz#R1c{b+ z%ccmNde^={dV<3Dq?L}{?eX;Nq;XUc!{vcI>q@rhDaOip%$U0JqF+kp4f7f0WpoYS zH>TBbMP?=5Qnsmrh)~v9Vxibwec~GQ&H_OZeg<-;B^85iUBf4nG!~Uq{ayo6Fu~Mq zIcxV{CV%T1x<4#^Bb0|$n)#j5R_KI=+hj)M$o@hD%KcZ*NE;>qfT?V=cb*^uOi2zN z-~fjqj0)Ys{8PhX?XI65Xe9ukLO!--4lV_Dt3e~hxPoe4nD?`wjZ_a%6 zMRZRNXF-kAty022<-9IQM+TA^{ zceK$IT`^KQ$f#4?Z{k+OTYP>pm;SA`$Z<{Q=`ZbD|C2>Ju@;0wr3CHMt<4Ha-fKg2 zuq6w+Hr7W&k?^*0dBI=YrYTfF(M^R$Xy0WE^c-ez1Lh+i{o*5Y<%`_2-N^FOkRTLk z($E4yhO#mx?L$U*uWoKF1I&)zyRKfVoF!3YG_)BRo30+agdHJd zIrRC%t zA56}w$`l;?<^1y*h9&}IZe7)(4>@e`pjNC1Z|1!c)<;v@-|iwa>4`~IQ)jAc6QPB-gFbz7smB8Js@G>l^ds!{byCr z(H~!eF@9_Gg=dl+twzsZ{+jJ)CDqdVeh>u!z#DyxNWHyRh~e5-QgmaF`KE6z#K95u z1ZvJS7$iHg>&VJD*q}oM@awBc(7L=%MzJ!7 zMviYjeeh(vIt*Dw!dJuUdHPYV^`~%n$5UYiK7_?hHWFaqp;vc^Al<*VwW42QQ-5O4XF}Dt8a?Ar4m+^Z z6?}7vz?*6`lbF}Ysj-{?<{zqpYdCFCIXfN-p^2;sHeW4~H&#deQp+dNU*G6$xG{wG zvL!mjn!uWr)L$s2)j#NG(bA=5s_RVo?FSyy8jN4NYFRyB1=bB#eH$+aVA2ES-wN`7 zHq`944DI~AWZzMTn`nq@m7jl!^<^D;S5eJ_B`of`GF+@zMP;Ot$J+JY<-X$Uolqtw z7HOl()zZC%lkUz}y~5F@Zo(9G%&EUzZs4~Z$(WK<8V-UUrM9#2T=g>?Uj?F#^AGLG z>eawyNfov(jzPDHtx>l9OE9-eb^5BCHytB^?aD6(FWQcg&DpGk765rbtz3-91HZUm z$x(rR?Oa1fUK=MzL`H^U1V|8FB`UkkJy(25^<)1D&d(=3l@G5ws>;?|VMD~=4DKrX zGJPuFrNDyhedhuKw`*UDf$+6PvC0SLHgq!m{&{rJT%UQ)_D@1Uio zJyk8?x178^U?uEomvY#;QzuFjR|A*o#h_2|-?6sA=>N72~wPA77E?W>|ibV-Eg{w8%ruYJk zmh;DK4gnBosZN=(U_GghQ%{F$TZCZbzqwqN-LB&mR1n!j;3NZfLkLuQ)}WS#)r4Ko zM)P|B30ZiUrmlNhaj+;H9bvogYJH%@%&E@cU#~O+hH5jYSgk5QV6Jv-)g62)jV5!J z)j)5obq?B!n6{Wja2k8?6;?#_jQFiYH{lmBYF?1~EEiiEOW_Y9s&pId_6i!OorcBN z3 zN%y(8%uGm^5>Vi(kwOBteEcuaX?>?F zXL)@Pix>pLtkIWr!feqTnj!M|Exq@WzaGZd?h;Ijo4(2sS4{W0B}c{v`yTFQkag8o zcDv5#b$kjz*E_rPj`Wp$J10+*Nu98QMEfSzsTIx2+`#)~!1NV< z8z!kcz&-M-uDd4=P=Sp|<=mivYv6=Z)dC%$j9K8-M2dernxqVvpvWp!n*xi|YgYkK zsgezTwZ(;wrwA2z^)^re``+j>mBIQ~uX6QX{iISLcC+-!AprwdASGRDX5cC`mVY#% zU;pd+c!2Oq!#0_W-d`#v`A$6XzeXNmWf{yp?HgES?UP`v3VE*`%O5hH#sw;tF2!Gu z51h?k9P0t+8|~eD3jf6d{>NffDzY=Ryi)W?X`&C30h^O$=el#rutdJuV$#>GiNa*REoDEd<%5k)%Z|!qH=Rccuqp9dmgfmkAAC_Lctin!c&& zATbRV{+=$bX-Ry7H2!KAY&*M@-T~TL2uz{27byPd6A+Jl( z(^PCf!1;E69M^rss*W|5)xlS{$z}<3xSH*|$TT~-%KN>0xe`xN=1%zAkC#Z_FzTRO zZ!N9*0j}G!3IU<86|;w@fqr}Y7d>Ta`wRAZ3Yk?1dtC|QF}@{)Cz(NkK9 z;#2QpWvov-@G=ipVu)%CowYAn%L!}8fN1|i-AZGD(kQ_+aIMXu>VO%?nz2-ZX23ok z3z@j(@lsh&@E%J#?1H;gZ8ACbwe_QN2)v|mJB2t*PJP0j$IvFKk7EX0CrUnNY7!Xm zNo+kn_iV`GKXaFmPFnxH1y z-?Bn8ZFFWksnV$*2tINo-wWA6QkOzP?JD$IBUv?3N1VkrC+POVC3wW2`Ysj?(hfiA z)-)Q&3prnz7fPU%^z&&B>5v@dqdSH-=!b8-7-N_0^b)W<+mwiA{^BVLTTH+C@P}6>Ert8u ze?)o7_vt6ow|&=k_TIzb@LIXw_Lv8P zQkx$Ir;v^<4SxUtTs8Eg;)*5vi#}gsFr?3nZ>_Mg)}9aTnN@)9vhZpR{)OB|re+~A zi=5BEQ127>w*&R$H;Q)Owx#kD~^}42u&Urzk#nXp)`a8 zTV~m7-Q*S155gy0Pe2GF$sWPf_VJf_hvJ`1iU71s1 znUu3U|Kk*#WNI`+DCCs}Z?Kn1AV#cJI>PzqhK)L09qtOa0E_^D@$RDGWe;LA_=8d) zV?u$e^5KN7JxQI-e+XIc$tHW4N$?Te-fVZ$fK*W?1HyK)AgU6X-IGJ9c6+(dQzxmtrqrR!; z*JynKIVRXn^sdOE?AiC1fCRCU?>GDYe^x9&6NKKGdr}TX^I3fQA0B(|pq}@M_wwI) ze?;ikrM=32EshhUl*jDE@deR58~0v@Y#0{!HKQw`Z=A)KJ9hbtSJpD#oxAO0LJSc1 z-D$M**PD#hnwwoN|Hq6x?YOoK+Cr^wj)^AhenqrJeXlESdR$fa=8QfJ{6uZC2a31D z%YuTxUBAhBDSJ?ey;F-F4gkRTh=G!`kwWIsdA*^T_+`B{V-;o>L(+i8?|VEw^%{`!sJT>w-$2^Cn>((P-Q6vQ`-Xy%|uw+wF1Dd>a!@r!`^6I$?#o?^?S`o zXIlTJno3t3wj|O*A)*yv8*!1S=7GJ7MuZ9lF_LLL=0&#P=B}{Ub?S^o6wTn-5YeLv(Bw_Y^Lzi{(s4_e@YPCZT=O>C@X;+2y0^kxvXRdEeK0ChRyRX7``Mm)AB>+$kvrkWi;i4-3UR%q1nU-xP;ru=DVrR}TGC6C(XEZQ@wqCL1 zyrY1Me6EkFC?S4K z^;TdJ%rOeJMqOlfesb+S&`|bARjE*eT$=U?wU{${I*B^Tk#=iJ1+glbj@cU$P7B+? z`6?@iJUbL-C+f~MB43rbRt9>Hh{qHHOo!rbb7JaKI6xUWvX&E-%US*BuSF-3S?=y- z08192Jb+V0AN#xl7y9vxCeK_!STp^7uUD##%9KR)DeiCqX?b;~(v>mSiU238Wj?bR z8OsxxaQ&j=Z|RjhtTwdz3(5K5M=6N(sH-SVz2u630B`|-Z~&{g zTow7^O_)&(VOW{d`u?i}`yQAJ87Mj+6U@Rf#T=zL(yw|C;W3!nClZvjjnY-xjkgY1 zKoA=hNu)-;7>!5!RcX-gosiW&8nfC*8~?;hKE+6iW<=wOrZO&6}on{>z7%wKwK= zOD>DPzrgwyXt)3%08sN9i^c=A@LN(q?=lA5U8`dll9ESF2|Flshw0zC@c_K1yqIyb zEq$Qb!-rPN87=JzLp9BVIwc0gFDkl_(&8q&=kH`mbl6m<8aThPTw5Og&eOrJm-{J% zdpp%YA`9;@pUVNC^!rNItp9`@Ew9xU{(I{lwlD@^d~!$6%PvAlI$d2RKm(n>?~I01 zp@#!HEAx{^ltW-PQpud?&75;jJ4BlldXiCbRpE^!Jj7J+-4RzN%y^S%7nk4gml6+=2-}2ie)}ES(G7 zB*VAsWx$#UjZ%+O)WY=ZHr}(l0trk9006*kyD5U7&6H1T+ISc+V?tnF&YEI7N{dTt zr|Y+v2(89>rNv=ap4=n72(!V(anvVM8l^pp5PGN8vy!()2G56^q`X*?!tad9u#>dO zqvP{3G*d*T7%eBy&~y84H7+?9MUeUL*>B2QSy} zHhoAFra>NmXsybUAk_!;U7|Gi>hPg@0f&y8=;g^KjPC^T6Wt^XjD5M8W=(`>~sJgRf%tcvKl#LK5i=Eu8iH_8&3hr zI&crQHO`jGN%OzBfW16HM2Z>L3rK*4t>}D`#^h)?SnXkr__juxOch4jexvKnxK!=7 zy2*#*Xf{oTW0h}rJp8wvvF?#IlWfL)1Mojb-GA*>sP(SS6~9;3l}Un3yc?NLrQ2yf zbtF`vxnqQ#7R!_dD5q)FWW&#t$8TKquwNPQ?H+gjNvDgkHe>YAQQzXmHjY9s^5?mU z1bOt&-+k|6g%g?Ynp8$L1Zv@xW_`FtpUIAr1g{pSK$B%giVGqbiB>?@{@%xC3VB_R zpsf)5=(!(SPByYQ#JbNuvHb$ys@~TScjvOiHoP%3uf2&UA~5Ze`#}dVf@@<>cai3~ z33bedHyS)mu8!W{=U$oW{uDADCS&|_diMR8T!wx<8DiYmJYGS*M!0Jr{QC_FTZ(=s zmxmjb_4rEMetU^RI}hIh2Sxc|31<$ABsGJ@L?I`cz(s=_ueL-TE@BkJxODmPgP&pU z#Py_R0BVB2n=7YTR{i89jkV10oM~wvR_g<_A9YX~Tz+0_CmV2e*6h3+EjyAxOOuN`|3Q~e>&+)|JnXwqg70Yo9 zo(9oOCbmVEKxTZh1xz++ zbE%-f(`8k0YSBkCuTD0_p);B`-sdY=bz3Gn9W989*{!rpyZAf6!5q?N_;N34hR$c| zIB5PGlj3}(w}?0YctxSXAZBxb#W(wmikH+eneW99T(Z70ye&2+kE^Y#)}`eF8D$a6 zIVKHl&hj)%JH~0{>7_Q17*0%=YcCqEQ8+s!4%nBJxG{kUf$Nr|^1*+6sXQCsQEMt= z=2QPyqA*av_bjv27>auQG3w29EV~yg{&0=Z>mw79?Ayrozf_%y&(PH4h3;ufaJf zH@}PG9NySvh0&F@togbtiF-WWp z&Hgmw=e>Eg^kR6|%t6klU#7EjPh*;~3fN*BmX5|OZ|OXXQqhgxiC-9bDk%*G?k`e$ z0i{s80ws5KWV}vzwX-+L%Rc1e3}Z=kE}tqDv6ORo3{qB zt2!~VVUhF9G6?BIq6*zgrP%oS2wCk8BJi$)2-mnEHS3o-j|uBq*MJ7{w?-^8|Ef)B zFNBkPJ$)PsaKE@dxAuO^(mA2sId2lQY3I|gTC#_@qKtt71zykuG99-*E0(g*9W&19 zx#|4O_kTc|k<#YHuPN<65ilB{%oL-tKJ#LuvXHsWf38)7`?)g_4b^Ic?wOPud+jv# zU6mJ9r+`}E)rij-t$L5)Y_7ABwV{u&qe8;IyJ&%Dm;rjd$xJEZzg~=-kKNxSBBYO! zRS2a0B{vh$X3C+WdzKRaBWwfCvfZ*jmxp9FP&+^-4~TNg9FEJE2LyPz^6yIh03QiM z!5C;eG0e+q{kjTf0reKWBA<>n4y0!}YKXiV%1u8paEYpuil$~#yEF(A*#{+QMTYMS zlVq`Oc`>nA5t;D!PG~m|8e0w3D3TIMgq3H9{oF9q1r3@yjgI6lBE{-RSXUdDHl{I9 z=WfAFb!$yc!*AH7y`<2~mt+NHaS-DIO!$(|#QMm1yPHe-DVaF{0R{j-6uOHif#QIp z$4~gRfZAl$SRxhw23yi%k;BY%-;<ClTD`Kxrf1h<1pyx|4BHC-jpl@`0&Ov*W2I+dOtmB8Jyt4-nhn{<&8gx!=~kK-)73Bvi{LwTZ(~+ z#wT~EZ24NW#>n(o*m~j>bR%C-$V;cNOXOnten7IbaZVlp0G?EmgWOm)n43++7j?Pg ztQ$5Bss^r4_9^dfkAQIcIKDxv8nYa|eAX8~xtLU{3IhjqV~`8cNUeu(fNB`3fDO@) zBk@2&a|ad#V?_;$=p63M7y_U#kI2Yd610oe+x6!w#P0l92fw!0e~eZ369H6c-&4}KHq3KVES==`9x$Lr6MD|_s8khdJ6GQ!Cte3@S!3uYX`{sgRyo4f9UDrto?kJ)&Y zW^Wr)Ot>>XTAtos3LYGUJ*d#PBUJEO)NMX)Fw1UlcMdD2daV37qj1&LreU*kq)8$8 z*lR5c$&N7@2?+h~cnGKWTlS~CH_58M3V4~-w3_og6)WhmRQX-(?s7x{0C_L~1q}wp z&v4(lr;BO{a34=alxpA;Pg0Z6zIPD-Coo)n+$#M#vBicX<3SmGdq((BP z#<$MP>Ky~Rqt%qvhOOraAvu^c7fT8>4HrK~z4Q zMe=X&MqE-Da>V@q%(lyNzVyNM`+zE#(kQahM8&A|@}VXrCA#~2E1*+5bq)PdN`OP!Ktk*USgr}0slwcFig}Z?o91SGgNEOL7u>F2+lc^PIYZbF+=wvu z9f-kWP1&sM!SpKr!8y&`MV_41t18(P2YNk=)$dS zz=V$B&{X>9H?{gQtXfj#NP)RS_Zwi)Z8qZK%*Ufpl+g-_dD%d$9FHM?DL*yQlc;L^ z9jqS23py%K?z~{j7p(~qCvwt!c8Zy1J9bmDf2ddpaBqmf1BDDS4jDY-WZ4rM%h$d7h(T8g zNeYhXWJ;v4t&V9pOEByk@0-#j1!{dNg*pBhhi{^$IfrA2ZRymiE~bM?DlH3k4q8Uw z-Z+mv7@16>Yhgo`s;mcPG(MfI^lqXD0ZvM4|N~Woie~iJmtR8cK5Cz*EL*0 z38t7q6VMZ^w!GOyZ!9h*eL1E3qCM?rc(q|x^gwz23;FUy^J?Ac`2NN_ea8%#p!Srt ze3mB71qYvbo{Lr#D1WIt?yV?+HwBrH)40Bvm>yM;WYy7h_gnClVy32cUmeky|K&eM zvch6?c~sQ&3*uLu1=midT&F%z(Yt}HNC!d1&)PGD7N3UOS3v!~5)={F$T!MN(B)Bu zY%gwQ*4}1!wvSHcc#^0Xi~~L^2AnbmJPKkZWlr9uDlv(dV^j(0OxlkjaiGPQJe{jL zo4adwv<@jH7R*10;^^|=y%jm$gCz-z;{3c{<~G^CPL|YNrsvPpu)4qgZ@%k))fC!o zX`Tv7r#Da+NHR|lVV1comd}T4@;k#LbLUXe0V$ZU?@&b!ZCn*fw|L4=-jj8oGq2r@ zu(xJ;Ud~^(xUT1nCow+@^pN`??6Z9QW_zOyHw&Em%bzXgwD?n^J|8XEq~*kktJt~S z9c341jez|nwUn45r|<(uO7Ss}uj@?tOdfr^wtfMRa}S~M1~vxD&E+@X_=sgg1%doM zvl1vp?^>kRokA6D(71YqG(ZnU0Ys>EJp;FOZ@zldch0+ zwUFdeObjy5OsS4FoHpBHq$(r))|>Ol(n@9{s$y#E%kn{dDiU%EJ`eDc#$k(@p8NKm zqGi(RGWd+SEYuGJkgnaSrb-&grFNNwUq8^1-{SLOZ4cx19?aZ_&9it)tm!VA&BAlr z##=&0Q{`@(iWGZ9b>#aJt|%aG9%Q+9&TGeOvoG|EOA$+u%t=i<<;+N?qo&<3)x!!0 zq9remP0Zc<@SFu@Abs20ProLMA-c+$)gl=0D;VF}N7gCnIAxqE8&uIykkwMqR2&MZ z!a%RRtF>+`zw1fnio<_N>qE};3;E32xca;!tSbKG*yi7z0EY5ekvKPNP$sMhJJeyp zWKFm9HxmRgd{v3&t2n->E@eayan;1jxRUtk{3Q`oEV5I6g>z`(-XwXK4~FDgMWq@- zylE4?j#&puaZGx+G5Wq}v33M`HU_SP2^(UVV||LcSD$w_-HWi&>;HSPdfIMjo(kL~ zoyR*!GA9s87I`Y>kWRpxFWu6qrBPY|;e={tn|v#2NX`-677=cI?yr+dbiOr>dR^cD z$R6=i`W{w^aFO2;XOz(@h57sOKkNHc?QufQO~yWR&S0czK_WgevK$azdE>6|H)&(( z&=*DN?3e_I#ikIL1TQ$_B$vL$HdZ2G&Nb9}GaZDy@~C`2Lf3un7CWjuUTBW)l%2K3 zW{7Atp=po%iVgsvpo!o#C-Q3DeO@Zp`y4DBSs&{4RY7@8`NAEFzKPd7f868&S@Qmf z_AVIXkWGBUw1GO~)@2K9P!r(1j2vrkhz@kNIDOL+*Z;#okdH;6Op!e0tfG(vqe>u* z1`-xI3gvy~uFCw1zF`ChZ~N)OcNUF)&<#$iDg??AuiQ;*-teg}{a73^E>QSdFAWR_ zK)UNPoGxvtZ!Z_=;y&U2X1PnOX3UV|I4Std$n5>A9_OYcj8|n_?a82Zh;Mf>d}+j9 z2>}G^z3RrPz0M%9;FrlVEG1C>t~1gh$)Ts|-38GR<@wSfJ5-rDTpI8uU4R|J4HDUR zf6m5CMWC*nvUceh31&0PH9h>?Al0fAPk!;op00iB9}u9@=$2KMUw?%=Xw4jfG~~4s zV~i$J79bh-f@cb0NwVmW7zG81y*ZP=k6&=TAUxw!eeC)Z48@YHfm&BJFV|Ud87Z`s z%*MmavB@1h>3jIh`*Ni{zJ?0De#K#-!|kb;@;{g)`PQ4wrvh$?I6c$6%uaKD%@0Pns8xA{zvJphubhtSKC5sn-9HY1!IhEDg7cP@kiVRdrdncrO$fw zyaVMpWloA&wMOfe|CIVW()76P_7jIRrWTV%6{*^Z#^%`%d!6RT$P)s3CTh9i#Q4G= zLZu0iJJx*Z_2}MQmR@=;96jrDrR79Bn$ya$g;wqwotwCY0Jh)gjr!i-UEh?pEnu-a zIZl?EADNX+n=~jQ@u=C)jMTN0eEbBd1Sojp5-d_Dmn!7bgrCCk#8e>Lgva(-ck3U# zZk@}=%hkZ{)sZEXicFbtG;OGwcgt@4`zi}%U${&r6><+^?VGS(Dbtr0$m1W%F{Tw^ zrv=`wc~{OFpP8c7A?3`#CGM-9~wKsw;Lm*lOYv$b$`^k9cSN*OB#4 z0ayJ+h7eD;U78rdEN>ALmx`)u)5SV!10lG)lQpu?e(XWyuF?Palco`gIUR74=y1m} zSP@IQc4>|a)$5cZ4$o=c=hC#5i9ApMfPx7C0CXr{BV;CN{2K+owNGcZPLZI~afyG} zV|=>KcP6K34R)41q+VyH=*f#nTmTz0jiJywklLg%YvYV9Ybw6?R|~SF-}t4qw4Qrn zeMAIjjSFUd8cYzICu*ZswTR~|59F`#?C8utodPQC=9D{MNxzskUQ2Ak^)fg z+d!v`KwDBO&11finwGMTD0xBt%P(xXSZ1zeNd+oFTDnLYi@?{;zB$2%zM%|gM#K>n zB(~BTx5FhB?>s`mvCM?_VePDoG2ar!c!Ed>V>R+c8tvs0kHm95?l4>(tF+A(V(_$P zWhoYE6PZ;z>1xR0X;o`Erg_mp!p;hI)fvN8(pI;u^8!FQS3;~2laBLSFIjr52O_~& zgeS|*IFnb8ifsyFDoT?otJ^zi@I#JgVeM~OMfm_!00tT=rWegn!lU>@bZ3d0o_SU6 zCDDqpG4iONjDxAtnU^=<>V63N)KU4;P&+gyoxu4+v5CLM^9C)}N>pN!5vfsW`Icj* zv%Xt=R$y;P?_~8u=J*9d9g;~X@-3i=@2#a-*Ty!xxmT*;=(B^DfJfL&PYG@@E#f1#!Ijbc6^w$r7t zhl5d0JTC8nZ)~}RD}lM(BEadiADb_Ojci{c!;p0X5$pLdwTiZ@Quo7Mfk$6kwZ!0+ zv#4IVTNoH`fR!Y9r8%Kmi+P!Q?!Qzn(r#n^oZl^tGya_<>jy$-gu7z-=!Bwx^TA!t z6M!B-go36Cq=<}}d8<2Z`-;ED(qY7xY;LHd)qa@leWmZKPXE^ z=MsT!_`0N>@AE?nR|o)LMgl-twn%G$WMIJO8ie{QotD`KmGv;F;zr3C4Scvaa)(#n zJ3y8t`^RNOE-T~sA+9X#v0*eceTBl<^$))4$Zos<%)-&C?b$gX#loS~g{wO$PV}0{ zUV8bM7G_pWkIU~)U)AZ=Y-X>D+{mpW-$rZm*A^H6uElE%(v-ro7jh=hTSHoIoEg1g z65MW)|J;gE_NTl*5%p*OlFSLj3`Ne0<;xQ)Ee&^fr6K?#0H8BoC!Ke% zsXUqQ6zSUdx`_1WuqNv1RKimsG{s1(T~1FOoZ3qK={k;qz~(fgM)L=;A`utKlAukl z1N$NaxqPHOh4ew)&5Gjkx}kg;I~R$mQlDmfet*>~3?*y3^7{?TgUh{&(hZ6l$;oP^ z+}iT#qWV0lu;{1vR-U}sS07Wsa%ZkHj^g~h=O|X80BkIKMkvUz}-+Z~2dzCQvdy95lk^skviIWT z1$BETzdvi7UU8iqGLMo)sFid-(=*Ux006qG)syDEfgS9OSMxUHKl( z9A&Jeob_#mBTEEJ0VgyyT~@iK5NNatm!6o77m38d5E#uYQl5ipszA#ZuP3!6xZ{DP zrUH?m=cC0xai!Rknof&UDp=Mr$a|lXCP!)7&e!L&5iIZHv)RuHnK8=S{#+*m{T?Hk z`t~5y`5usDv1M zE%x=dN_oV6CUHlomBoDDx%mF6OB9#sg^HXHOP9hcSGkNp_bxY{_^l*s{)g>Gv9>5C zbmuqNwHq^u|EF@=Zs#dFL?n}EXWL8|Zq({*cURJhvS|ZrPXo_H2LgFY zO8T_-tE}CG<@4c!`FNQ_b*NscZTl~g>g{u;oXU#q?Rb|h z@CIEUL;K^CFFprmch;Vs2IOL{P7)DgKkkOz_M|R1vauZ3ag~I(z z4Zxew7+}>qxmb{lW#N-z7j&>XKp2CQgk_Tx=CZbp&x6nCAIk5~8&0c(;)th+$}uZ$ za5Ueqmum$}AjF?nO-H0;jCZ=nY3_Fl;+77v+8l~e(~xj0tDeL_#6*E<9M+6jW7jWY zU-#A@CawEGEpampnCa=@ey(LT!9?U68i-DO%^SxC$nLG^mCRx7sn18wgfDjgp>+S{ z%O%(tX`aJ8lAJc*Niu)X$_Tb+X_|)V@N? zHR5ks=yY#yF$FSvTIxQNEXdns5Hf6)jKZH9~3V zcP+I?Y!ZY}#{R2K>~v4h(Q}V|8VaS)AYm(MVC#Ie;5z@ebyWCPQO&r=5g0j*ka;a}lc1dusO3Fbn{a2zhl13+NGx8f)QnMG!LkJ+N}zdnorODp3S|xD24T)i@uM6j!e{r0q@XX|EF*xdGKo z;0n>#wgu1xNb&TZx>I`6^E23|?$m~;;Y0tN@<}LTzI!P*?qBWJ%>ku1(fD~zA?4wOQo)=a!pzwzr?Y8aU}v^@l-T%mCxqT@0a zPjz))q4aZMIp&v-5oKaZFIAI-yQ$V^qQ~4Xav39#y@HGB@-X}i>7SBR9!ciIkf?b9 zh#p>C*h~94H!J5#VaL{GYv;OS4h_~v*5}VUe8Ae$k|^oitDAYapZ^BeKFT@Jr8M^` z8wCIcpa4)0!lKP;-l?x`ZoL0mq>?52=$&WX5K)uqq5;q4dWY&inj?FFaA6+@F=T9J zh|OhhuU4_qyF>jxGH?V!a<9!r?OKoiPBa-0T9L=L-lA&AZ$dSPbPmkDCQv2p2g_ye z3)|f~6gd-aWGBngJb3vq425Dj@_y|m(0Iqp@OIKkxsa_EIiIex6h4^iQ8tm}TrUaY zSA+OWeVRs_n7aO8>gHO1%L%X3S*r^Le zNy~NpyjBBB+`kmZG%Wi^hUx!}&^B&CjF^(JV1heQ$0qcD3*En8NFV?Mm}Ivhda5v& zjm@yugmz+Q&WYTD=!dAwad;p8qG1e zh;M$w6Posa=IdC4gc%8wJb`CId=g7Ww{(`Q4Zuolg<;#e#v^+Nh8dNn==Q~T%mY3W z9%RnFy>-*F*CYb38kG$K9i{Ul+Dh=FfxZGeFN!QtaFE`nHpYjNa$lwOv1FOg&a9cB zF5`|(@go+bw?qL~Uii;&TdmxSf%*FUeXjHNo!}FT6ZUj)u)R?k8{bl!=soG2v;W(_ z`4jE;!`^ps zoAC-9Z$EPvEWQU_?UG|b;o{^)Z`$UsAYvYXk4;v`FvybNO#9>&jrvxTMhWPM zT679$B+akfnbJcphzAdzX?IvY$m*Tg{E!sela1-&Av?$wy`JFGefh^HW~lCIMaC}* zkJ%chex|K)`9icck&v)r)ppAr)nVn^_|n^&)=?xmRSv0FRp+A)7}hF*JNW0|uC__nFh9 zBAhmJDbk>2LP03G(m9N&`uI!66f#z3Rm2l$!`OeMLEc^zwOd$wJ=p?Zd%m)`cSEq)WYn zOFR4S%7@PrYK(2n-dE1(GE`mL9f<8dWmFndBlz7dk-fT#vB5VHC#`~&zGP8vDlOmH zGJ$Cc!tZpnZ>2F!G}2_?Y-=kj`k99vT`Ut+g^97wZG5GSI89gCf#>8`_||f3_?wQJ z&xXIht%Tel2M(5#^Fls~G~K>i3C0eg7`ZJ%Y2KFVbqKb|{QHKd?t4zlkHvR653YE3 z1?PSOu`gew?mkUkEQ$}JW^5lef*b_iD_=OP8}`jqjqrZT@wWT-tBx@wxxM4tKSSvA zzu_kOPyhgI71J`Mnf@J;eLbCC%W%u-J5h;2teP#d6iaO-azdFpq+DiCMkJttf%My2 zHg5}3!Me@{Z`e`Q?z{_0PjSe(6y2u@_YXF(#Nl1{k-re6&6Cpg>^?o;DVU}nhYjfE zf94TZptLna_-sm2dzj5!Zc*L#+RVdOdsNvTz1LQLC#eM1yuy?5G*i?JT4^dR%0Ar+|&;DTd;+*2=y^eebyB` zI3btKIqpCg_j+h8q{N)X<|SR)MC9gr{Gjk!o3NJHyzy~J7*13c|0|C9E%)cc5}V+h zRfjm?U%o468=Bu2{)S4Po4VBMz0!*w^q?IpzV3HVlP#z{Fhw@0uXh6gE>=wk$EZe4|8Joz9nNiSx-ppDK?r@?MMK+&*%?yU4V6+@5@K)LR zpv)@6X+Omd48!%poI0#bFnl1EJ2w<@WKdM(Z6JLV1#K;K(D9UoRx^>aId)SCDU--- zAuMh1eG?THS4Zvmc?;8L5AQlkF_4jj%pMq-hm3X^$=@$mocxBO=Lvuq5LqAqJDl5) zO@2L$s`T};bf9-4ms*g$)7)-|`Z%xCxEoBvJ~Z;6^_uV%s?htNxo9K>SDKN&63BOE z(Tg8SbC)>{=9UU)s}`IFcecR3?dR6%$4zzCiWBaMr$h{X?EP);6q*}?j@s)G7b!zN z2>T=?cNCD^dtrw%HJatMR0ndR+O`16%2YryivPy0v@k@0UK)Th*>y)>%3LJUQ?{9P zf57pzT2(l_k~!8$MTPxLCtS@B$9_Vc$E{@VYG2ppvW%WBwl#{1N}A4gSu=4@ z612P29UhNpd%gc>Z6qf#GFF_iu=rgsj(%Zu^ZxgLo^qNNTk}Uyt(5w+T*;UZM9WzY zQ;?Oo_ekf8XeK`lNGJf4sXq;D29-#45T$spHZxwcMQsWD*W8hl^k;|1#>6ju$Z}pg z4z^iMC*z}GCKmFlowF+lu2{PJJDPNIP?bBt;FrKvgx;}Wk?94#{C;mEBcr7?-@K!# z7}#0Fs;Vm>;T_X@p{PXJ97|4RvYbt}HA0|?{bRp}z*$W;_med>@9?K63Y1%VX>j=d zTpjBChyJ^69eJceRbyTW<33^S@7EIn_p+lV$IdCF@W~D_`#OCd|4(GgOFwdh5W`4|%b0HV6P%VpHJq~T5O-*qcp z%mMWh8Rz*yhhoVMb@xZXi+xy!U~JK7)v-fWPS1IXR?Q4W-7h|khfc=OVS4VtC3zs6 z8pPYmeorM%9)Im-aaK?v9>(G0w!*j;Z}RQUnqlKG#?V?o)`Mk;mHsVkjw#z;zJqVy zTzT1|u$N@IJS{g_Yo$DFILcoBV`{SVi?ze}I2t>sfxn`45=o zj@M)pifdm391YL&W{@m|KW_GpGnWocNM3GwP^y<23RrG9x+; zO}*yr!EHOmR}Q*it`Sw$48}HU0Q- zrt09&E>HnGym?S6Dl);Cab7U9wDXny`ky10Yq#Zy&Hpt6m%2dGK86Ul%)yD56jg=) z>USnnA^<;+UrqHX)zWQ;8!WbS5DB)1&HLFRq|uA_ zfsqJp2*A%izsn+NYHc6y!*z}R2_A$Q%vzX4{Zux~7LH+X9^wPvD4}9U&;#y-EoifR-YSyH8c`!U}m-kU;;ljQxu(6|#U!FO+ zZ}DJ#9Rl6Q$EO|=(3Po_oEhm?#OZ8X{Pv;2%aJr3wW-A^DZv^|nyGRLWcs)@WchUSR*9YnX;dk0v+LVZ^%;kuZYCslpQ4!7X zM0w_Y{k)m>9wSc%3iYej==WMCT{hi&kv2mTQ_rg}zoKczwAtf;oflgV3Ke{kDBU*L;az*#2JgvqXQ~kYr`2 zs_~TCai^1P(BEd=VDJ>k15gt8Wsm9}88!HM!#>AKd5zuGQA1xFb%lZxI4*-0kBF@4 z6!o@V8v#FX&6?bcq(Gv^*ujTb#YaCz9|Jnz*SJr z1uSecJXQj1#E08iI9ljqaQUTMo19pyZYjr$TcAQ8PG^Hk`%_*1{r)Gsb?KxlNQEOW zMjnZRF6_VUGwqRs&iY3wQ3{`xG?2_ZP+MtE#BTPOMh0Sl0$?ryQ)Z&D%2QKU+>cSc zH*I^zX-k|>Z*{Va0)4^E+?3_Qzk1hlV}?yH_jZKq-1(tTsgemw_pbcwtIJQ0`e2t$ zz1B7tQ?GGev4a9DE@2wovzB?8$#kV~P1M6A2%V}wjGp8>&YO6Nr;(>DtK1Uc@~4fc z_9RPohy(35GKL;UsuH?5`)eVXbUmz)0sy2}A;tRlW%|5U+o&mI>B~(vmVI9_oudHl znLxj<%k!461Re};boj|$Uo}~MURljqN!2^HZ2hC={AM4@IIqz|z_jVtB`0ygul4J0 zcU7;PcJEd{>Nf%@JV)u9b=6js>g4bQYb! z1TxLv5`7oP%;tQ9i&bUd3IIZkf4`7G6aX;7+DP=A?`OKxFI)3d0MUGz%W*UDfUbaZ zTND@o0(c}NT^69Gv@rhh1}MV)#sX_ejM2hCM8Mzy^;E5K9ZS><&e-k`*VrJBSZ|K4rhigS79*-i1r2{?w(w6qKW#YHBg{(7d6 z(qLqGKL3u)1X_c*({S#F7DowxHb1Ihz<@3nOyKhQi1iWJrc*RbGIniD?Gxr}%12>| z8{Y_Mnt0!<7i#Mfp38EGN-9>n8(V5BbM)C`O)wfuXwj6N)3xJr&l-NCt;3IdgE+RY zkGdwnbYFs>l-V z|NZ`b;XCN@_ILYVJNVoR1?u-DxQ5@3US9nn*>?1ZS~u`yv=H&tqg%htY2r9q=qr9j9cjef_ipv-@BT*>A2KTkqneWlI}wn-Lw$y^qij+wEq8k+f8>d* zz)4bW!aF}|42TjZ1Jg_?y=zl1k7ZcaRFBb!o(rBM6ZaX}wb zvhJ}N$&oSSx_q5z6;&i#PTjZ*MT0^bu;jwA?Q{3%mC>ausd48o*H(OmOMkNyGT=Bh z2CC>xYw#3(R4K;^%(G*b%k8bwDwqFCBmsZ0+Y&ueTZ`umG&CD4)Y2`ou`S;S7i-~a zy(<*~N|zJD5_z9?^E3vLLa%=GOuz%glXUfdx*=}@MYZsszb!DGP1}F*=(%(yM*z_Lo59*+G-rAtH-1+s{oZ~F0MBcQlSmUL z_NOu}HLk<=_|kWFSfVj~$kX#pKf$Q`2XrUO9%dJhAqbzi`7rS7k!wK%`{hA4hLbaYPWg7Fd{!XVrAxUz!DC0HmxZG6bP}0x6MS+j5ol%G)&SuP`dn zNO~4E?~dxDIgkw6yNmwO5qHC$u}Xw%3olfLVL=^Nf0xK0i|vRa(=yQVRl#&0EzjRU z%N)f||60_tDfWK}&AvsWpV}s~(Bhtc(&gaK`jnNUm55<*=h-Mh;8C6|*zsWNcy~M` zWq*(vFTeiWaxD>=J@uFn#{CsQ2*7fgcf!0=35e=95wGh{1{Tyl$XOXg9cV1r=X+|~ zWPC^^VX9^>TDO}@;sqPs%yaMe^^Tv33&xX%Y&85Cj@NOLW&YM?Ck3yPr}1uU(4};b z3|(&Pm07gw-VL5Ils{ebu}e%zMV+gaNk)a#*tRxu9@HfZ@=Q}{Xr3N!iE$g$J}6P^ znf-iq5BPsktUy20Ezwg!BtkVXK$7(X;dqum6f!;`)pB`qmn({ik)p(1JBvAVjY9b& zHdZ61$^;rS%lHsDTN#6kEN$A0;dI-TAa_fS0!dHe3BgSKh@cu{Gb!v_bNn9Q)(D*9 zgqP~g+|h57E1#z(REr~BKs3z{0|W_=Avg@ULL&ssIxTa88oFhrK6gP8+$}E zT2|Bisjn|SeutX}_43Ltv*>96LlKEX#eH)>AWO;3D)1OtZjU5rXAt+2=h|M0E{p_g zZ$tWFoThuf!!bx`?ND<=Gr6omve|lYT7YJ3;ESt zE2!9a;E(7X@SH$?dtgq1YT<3FPRU2=?ifp*QL&F{#$6ryZ*nn%vX$74=o{=pVvQd1 z{le99P7Lj+4>mr1!Tn{lI`M^<)#!`YDXI`ITCL5`rA$>AvpJM2@63R}tc3x8d%Zw{ zWiFHf3ImoN1!XV;3k)0l`Fq+CR)N%cvSKt#)URmEacn|l(vc;OsT4@A5Lu8QUJ6Vk0Nb`O+(0D2Sv0CR3#XhD}Jeu1tqx875+nP<~3@5Y2+ zAfiHFfpj_v1ign2U@lQwe9ycj?}oX@A$nLeooj6rj`ox`z!vEBk}aB#A6IPb<#Z5s zqAvlt4{PREpDPb)^ryWoWB-sqQgR_5_%q;T-dkLm+^Mp>%7JwW|J3P z&}9!S9WvHI8@-*GsRnWNSZ%WapkSZ?P|L7Wnn63s;{>g(OcH-lBy^eHS*V2DwR~VL z!LyhyDkj3H9M`up!;QqwJBb6mFAiadWL8>1^v9fPRTUl=vr6gL!MT=2ZRm;8DMV&Y zE=k>J@r+XZ{dB0aOnI2ID&V8>Wpp-fhHsZ`vt@4FVSzzD&s2?*{tGwbSQj}#OF@@( z2W>-bekaucB>(_GN=pu*RP`D}pJ85WK$v_zPu<>um!b<1(8x^Is)iubL}L_*Tb=2_ zPX@09Ml;$t#u?HHn{5eM<@W zws%Bp_>sS1fxe%sTxRn|Im_eKwlM`y91d58H7_w{~uuPKAekmt&G#vbk)S5A@ zjOhYRNOVLH0`=Bosif^!Z2Nq2xqrC7B@4JJ;HOFMIeg|Q+=#8$q$ulv)KA$&TPT(G z2~P|4Sy!P|J$jC8n6;{5YUZ0WrZ^%dY#~q1iRyw_x6m8FfB13+R@<8AkefuDz-~!q zC#~iZ?@CH>R1MyXtp_T93}F%y0M`CoBbmIBy+K&3Gia~+LBrs^0WV7-ckm1muXuu7 z9F?**r~Gb$40AzkruugSW5esW2RN>{CzbmBWk*-YYp(a!0zQ zzT(EGG1A3DZ-bJL3dUjUR>?5|g1~9%#Q-bGCK_Ty2_N@UCJ%$=?Dq10M^?qD6$A#z zl!DP$1?r(HC9Cao7wGnQD|HWIWj4w&vLg$)H@%&;ogNtDl(vfZO>yO|!hF@%pRHEe z${$(6=_aMB3)x7tOG)E}v|=osZt&ugX(5YBAo&OR9Ihoet^^FvL23($P)@~(wdg-Ql1m4i94 z^O$Hl2GKMv8_sa~U{5NnEZ;iG;(lW!YHY+*3Y!IbxzBRxLo#nnn*byfso_$aU1I{% z9yJm~g%Y=-n^$v<8F#Bbb0)F=km7al$(3Byrw0H~yw$c)QU}qr)^<<3?u=_N>*I3! z8&)g)-=~&bI=J{~!!6IP?^PmT94fZE>l+7l-DIo|g*rd(YG%!a94tdtSOqf{R12=mv%$B zYyb!#9Kg1h3Uq<7^1f0lX}4oP0;Q6v`teh!Q<^R=VKtddY-!hg+Q2ET9FM4#iOyMi zG%dXgy#y_1k+ia~H(Kx-RN$YFVxQv!ks9L!cQU-L1MI}omv)&>e8-?>SB zTKdfvT(}+3_gACs1=+@;6-Dne;q#KZfWaWYz9xw!j|kMH)|4<&kDKtnprQ9A3IKpL z000#4V68A6gV!YATd+TL`&HU_M3>#U%DGCS`c;1d-v-#8P5Z3Ul!)>eabstl*42-2 z)`niv)v68G-4!V(~2WLOsV5KTBU za{xm?yuVHJIDwr-WicLT`sS`W3$(UC9aq zP=hx0dQ|1LSAjgoUs|z6d%QYA3?Apm$T$-Uq&3uMB93B|Ce4OMmn0;&z|z{C@Im^~B6vo>Pgun23k~q6&x55TmT4bwP5@;hp`ln7dAls{C>TmS2D2*C(iRrxgX`ie zj}BxSgsWDUH3Bk=6Uh5}3R=?E;0Aoj_0oI%;FwwazCc~m@Cfsi0RQ^CXlaxCFQxOG z#lqEAvll;C;Uw5u+SI;zwH}+JZ})LQu^~*NvkqpQASn~QO8NNn@h11B zE6(@z6Y2Ow|8vVZFvo6l{*>PgQGezj$(%%#QRJ>zJ{>39a>;e$#rvNY)MaFol zAamRV#wTN&XGmZ%M2N(`ja=hA70XnqoRDBFFLkE3!J8m=fA&sTb*QYPQI+L$SprDXvvggk)Quy@5g{a}do#C_o7SK>hxLku3|+zGQ}$^d@Gk zzYM-oB74F<;||Lqu3pdt9~&|YCn#_@!@|l`-{M?_3Fzp2S8m;?CQ$%-Vj&P^);O4$ z%6c{IiB!s>GFu}4+9x?)T9((l0d5^RrPt1e88o)-Ls^`elKWqr1=SRup}A0;1P`*m z&kY}ij9B>NN3V!Gc7ih>japJx<^sX!p<0B1p1g@gcfNz@LpJ@y_HNZvunFWU96lC$ zB@o*<4KlT*-h%sUYddL#4jwQ?mtf3NGXEnNt|I_qQlwhnur`l_^^{#4fZ!(yY<=Xb zm0iV@nn+BtTuO~l516X$$zX-4_;{oBU-ZPN23q^d_%!peTvZUBSU%`s1`-yv@44ry z`p#gWx=o7L=sx#_JDQ#dD-8o}OPBYUfs|E5Ei&GY1h|M}AkZWogT`Nq9-vkF^Jn_W zx)%nO5;mom@?XsIt+3)-H{4>&q7ZC_=*P)gFPVST-uwX0RW@U6# zR5SSBzFdigk?5(wP54w#fy9W5RzsO{RgP%5KJUfJXoU>0902e@+zBiQ60yxRWR&*w zKS`Xt09js4T(#Tu5t_!9VurJsaWF|gbE8O0y2|WYdwh_|TB|`;6knIPump!UXkp>? zIbm8e>IG3>Oqu`CcZkhACY6mSCGWL)jimA`7+C;ksFs5xIMcHjrWbCdKDeLZVN@2F z{=_Ye4P=6)dZIP8{Sjn!#~zg%5fK&M+ToK15nupNFBQmJRq$OyTNi2moqu1WZ_->o z8B1eXN_k9_l!zaM{X)}OP1205UFi~R6W+}Kr^Y6E+w_5Y_s^5A%L3;24_HF!SZ}}L zu4EXWZQ(0|IN(X}WQBsiDiVJf^C!d%ICaZL-33p zIsxnvGSUE4KN-!4ZT-M1Q}Oq@3YKLDPQH}%?Y!W8YwgMH!zCMA-|(%ij?OgF+z4cqv@w@f=Atj`{ zYlxw{L26)tA!g{7?(Puj2I+2w?iLV~?(S5iQ%OZd&kxT&=Y02m_WN(RulIGWd%f1Z zwt|qZ)CuKDx^99o1YDx1r_Dr57fQ`lBngH?vq1*9j$>=mb=PFAwZAjq6MU^brbmXK zn!22wcHVL5M>}%=EVcF)cvH}(Ti#%ipCiMMXQeuJtTQR({#5V>sJp>VMDjdoE382XVi~!I}f+iKrKGIEBlJ!iS;-e#c)vjb=+EbU$W>Y{l+fgP$WTnDZ`g zzpK==%CJw0f3_`nYBeJT@Qe##btiexu zyXs`y_uij&MyCvm-6fsccZFyl#EWgC&VO~cW(x!32=7$rq3he_XEZWJ3$^$Oqu`muDWA&4GQ5QIQ#Tmn-XtX(@RJI*6C2krK*cGgdbJl3Lvr7X~x+Hc^ zJgJFH{x!yUDLQ%iR(J$-+Y~dyUvIVuKiH>SFr{=zVA<&WxxZRw&wjJ2@o(!wYvb}{ zL8wNo6ae}FHm_K#AR?PP!q8GhFXgv=cF_zP)XDPR2<4iXBH}p9C{sL<0GWL^?;%H? z5)MMbyCQhX)GKSBPyL|#Fqyob>bY-K9WG~FwnDhc*)h`LLQ9INu`S$8;M^#}o$66g zc_s|G03*SAWxa4K9ra~DABbV5=jUDG4is%4T1NT>J`2*CDCQn6NYMS?BS-qyerNKM z|9j@;cD?{x8)CP}TbYV>NJ6NI@jibOh|)$!ofZg{xcn*=4=ZC*>L&1;9^BHs_k=|a zIhQs@;__u25zlH9QKA`HgtKL&wf*f4R4K-Svox_qOI(p^=^wSWI2)nL>D2HjHy}dD zXoIBxJiVXOxuS`T7i>n6@2MMj#RLd5|u=~SjEtJByqh0v2^=_u~stE()%4v z{0EnGZpl2A`}~yMeA|MD&v+2dgPcTO5^QGQRl1u-;x=`fIB#;Ll$C}-Oc_V;2@g1D zxF`8kVFH~9JqIm}SI_N&U(}KKmJj=hIx>A_(KAI;PjBMsWWjMF**~Nz zX62uc#^1ef(^Q!%H-^^c?KIVT_%Rklr^7Uk>1K7xlhWw(Ce9p)Iylj!*JylHAq>tj zhy;k^mu1zASE{$1AlKxs*scqZ=36-w zfbiAJOrQD8#uGBLR*jB>21Vz<+-is4o72gKWtf({k2E*c1E1>`~tiM zztJAVaW12_^42uz_HRLXX1NH!h9-hd415E(--1k*y%LAUn*P&ct+L&7Jl0f5Nao5H zU~40Oljh1Tz@DHX93A6SAvrJv94e7d!gATw9YmgiThBdn65uRo_xn4gTI)c#^wcV={0jrLtbYHrJBR z*C#g4`_|hrk6DGF?JW-EfrRXh}hZ`!MD<;+1u77zvSRfC{z+ZyQ#gIs_DXYT0^W zB?_+0ny`oYK?R!1R&Zan!Q!Qnqph)q+m1ii(NKlIcIJ|44$Qb?kxPF}6OQ0+bReB6 zAfk5v13kdmancX<4T#uIl14UgE-@GFo!>o3r*E~*$z}1xK^`W%UL`Sj*xJR>4&`Un;y=(!|f6z7_~QJ$U&;XjMJL zDo80W=6ES-h!d+*w7i^DC&FVE;^0W;OxE$=2~7Y!&td!QSow9@jER8^TNhm8-J8SG zojUyvx0;-)C;%%QB&Z7N6~uHz(Pi5<0E5ufx30FbQpgFkvauKRR%slpHV3XLGqWYk z1J0&e+Q>0yR88JYyQ%f_QvQUhtH35WBw3AEOm9;(K+T#K+&jx680)?lLS5sP=`@mQ zHWf^>A?8^W;^wx8o7Ck*nCv~V4666VjsLRQDqRq|rXk#DKbLKV%c_==rJ`vJ+@VJi z0KiB_7M@Ov)ega5Tzjh*8=y&_?d@bXi*7m|VfJCHt=~7{%%cA?EWPDK#1tDTv{Olw zv|b-0Ql@w06FGXAj;jKfS9uN-PkE2BIpFUSgBgCHVHjXr#2&+Cf!>jT1{^VHpN zx>4tnrkm%{9kK1pBM$sE*G2vsd(NG`Ic*(9yL*W1oc}g`5^-433jmKc%1&JgtZ_*- zuozPh{za_v%ik_W?}mq8oN$wZ-qmo}zgF7mlcO)NyK&l}t#2kioe^tgBqdX(#qZXj z-)y2jhQ3FdBGQlMwRiBi1I{wvM;y=yFP>jtX`rGIE|WE~&KaBtsc%#D{Y{PY@0LxP z{}*>Q{;xk3%b@*}HFjb6FL_+~<;l@7{6P@0yrC{Z{3Hfc$7PhT8-lH!%ArD!0wIV$ z?DE*OwC0;cXC5M@^fcx<;+P_7l>4k0bV%0~7U^20JjO#IoRJF2(!8Wlb<|uPHBo*e zHfUh0yqPs+amByFl37#4(@cuPu9I|>ck<$Qw3sS8S(6e?>*mgtJ7`H4NxZti7iZPh z!a7~u@_;mV+qQgs=YFN6@Soi_E$9G%{=voc>GIoNCSDRgo8?`d=N}=`9zM|Od#{Q8o_+GHR=gf4l*Zt##1@?7^+qW{-qS8*mTKuDs zLi1f#F;w*?_ULj|91R}UBT;Xrpt$p()+*h6I7jenxZ~{K!{}4X7v>jwM~=OIOUz!n z5=I!@)$Y>fwmM8XT?40xn&^!qlBNm(jvS_J4#97{vba%}B`?;VX z2V@EOGDC{YV=5|@iA-(vQ_d-MIN8(=bp4h1+|>CzuM__O=FUWDx~X5-{vmz|UiVGl$JV}FHo2*ksNefhEerrOWmjGks-ZP4WC=m*>w|CQzu(KJ&V$K zRBF^DRM~I8b@4}Qr13$-V%8;k^$#Ce?ecpF zeM}Q-`WuVEu4)ZEqQr*pFvl*aW-m@G`oHsbSstVZ~>}W7}bAnlzPjgu-8U1yG*SSXx8otf~sFxql*SIOnBkS~V?D(}q~9JvAPs z(3AX-Jl93UFgv3cb6e?IC-T-yFsssP{CN+GN8scu8MOG$)9|`f4!t(=o_6Hvz=?jO z6VH`ZbWx*-e(#ma7wxPjMIW5<{6Ei_jc!fcDX1E&NJ| z3Sv{XIzGO~xG0VJP--St`Qo7KC?^GP4gi0ZoJu_-Gv<3K2{Us3h;e%^Gz(YoF{>hy ze?RK=L~Th9gN!>&inUfo&J{A89W@PL=57c7ny%K;LRz8W)a}$;5G>L)qg@kt#%nX4 zy&pVM4%p&o!@qQSlD7sxi;lAbVOWOdGywIA0TNaO3LDwy@coN5sWrhoHGw_EVwU5qvzfCx%>##*~ z>xs$R8C9z(*^{qDC1^0mX)35X4`GnwR?Apy!IC8(`|Ti)76D3vEr0ejJWpd*3oag? zlGlC0VDcIe00V_F(J%hr?>2Na06pfliHyu^AiH7Opc)D2Q04g>-iM*;wDD@ue?qB= zEmrZ|G0BMj0X;MQMQk}_AD~r3L2#_Xi*6rXCVvt`AU}16u@SIPmPnN?)AX4x{bLsG zAn9FhU8mZn(Rjm&OkyXEkJ+eRp-7ftGRP|r^W8VepI%y#)rM=DK9$|L*Tt^ugX2h- zt}HRwPgY3{E$SiD9mRPnpO0`N>R^h#Io=94N>Xy2qEbcxM`H(p=CUuIGV1J<)-&q2 z4?R7;uLz*F$Cg8Nyo^&TPl)mJgOcM7Y^KGPRkjhU*_32Z`kl+$G z1KW0&iHOSv$ulPHr0CAk%v5xe>-w;C zl>IR%S+BHr`Zf<+%gpqUKlhrs+$}6>3e7{!DO8bhsi?&0h zx;K+Y*PGpx)GZuJdY>vHsQ>Gii*eX95MTrnVZZB+DFOIyg?Dw!XoSA78^fnvSDp0mz;s?1il6z_RH%w zRz0s6eK=iM*4bd5=kwVnaui)MBHCE$h`AX}|LC9oAXV7>D2xpN0D5&~thyYQk@nq1 zPCS>XZpAx?!1(Y%o(R)D(r)aT-twwIBYMiibP3Uj+vv>?nnl6v@^kqMAD$P}`4M)7 zetCAc{GK{Jsh!&wYC%ihlFpJf2PkuG$0>30FL=zkxbUQqS~9TDL*DB@i1qZPs`y{( zHl&4(7s+)www1@R;7S@xTlA^e0-52`sd6Zi%850@p!(C%h-DnPz>0**7FLGh8)-3F zDVa~dGRQ@0Clzy|`|3^{*(-+kG6ZRjx`{12CsYBAH_4J4s{y_&+%85Q7ZW=y!V~DT zPJ2eI$GNFXIkAiq6SkP=>pYEM7Sa#n)cVXmolRDb@fEr2X){JPy7Ri*=ueytX5~qX z1_cG~vYRe|5-I?q9VKFYvGHv44SIgQzxGo-nx@=o%yO#(-c;dcL|BD@!uk9fDSsvNO2>wU{ZUfWY?x8g0{EnQH+CR)qcmX zAd5SirR-5vRUKglfg!AECROk^O4-I4VG_dXtbsZtG4|a@v~7jg&L6cXjABF-KV&J{ zJk3Pag}n<-xVH?h5*2xLPXz!B6|gw^_a(QFOL;C4I~83=@vAbt={?>BdW5G>ufssc z5pitP^K$gs>3d@s0XXIHS3s(AOlpRtCtbP{dfX=mT6P{?BTS{P+MZxlb}3bVO&?;l zRy$d^TQKNYbZ1Gh+!*ATYnJWW$o<3@#g)+m^17f>GQTgem=?d9G>~A-meqr$&A_jN zFLq4M6J9hHg)*Ycq06yKu`)@5HoSC9Z$lUUx?FB1ZT$%qzXBPz`QXyU+~}_;C#iNA z%W02*mo#mh<#woa>uS^~;~h3hMQ}THy@LgN8XB6g7G8mAuP?6|vO3lpL2aqc;wr8n zHS|tbqtniya3A%_o*l0fbyY}y2EEkZhCR+q7N@zF&s+;4^s{NEU0h5ZzA>%36=&5r zfvM`LC@8ob%#m(xMv>gE{IJ^PYCL0tuy+@HbomO@qPZe$y3QgP&gdUc)X3jriJAy< zMh09aU?Qwu%|Ma`k0+qVZ!-0Jy;U;rvq=kfvV$?YtCs87r(6`o+NSW2#$p#H2g6Qi zKK2m?O6G=xnj0sKYYwI{kQxUstKV|MwL1mk*VC0e3d$G4w>PBv`nH_Rf95jKq+yD# zbNZqS;5vU$+_th23~}i{bj{wI*-n^b8%krTeL+Ez8y=ururUtKa~n&KnmeFyVp05+ zV?M8jP`XGG;h+ZvH8u;V6^Iia9u{xkiAwg__|&iFFDa~IY4JDJb)}Exez(;UIroYb ztgD^kF!rL0I@kJ3SW?whipm5>0i6WM&6b6^LTlIs3L9hDKC3DX9PW>xBH>t&qqruG zwq8{&7VNK;+zBEy9eXp?Ye6m?Q)kS?Rjx_VLmEHFuu=!_G@Kd>2q)_PY%2UQNLGci z`z~kNjBVd^kiWBuA<1bl!Uxk8u2&irXsukR9lbql>(=gUHEJ+}uCZG%}N||`}L-xztH5~6*`v3^XZN=;b`k+F*5a_ zbJi_mtWhw2O7} zwbG&;k!I<9}HKo+-2&?P?r zmr3;G22Bo0w!3!5Q1)QeUAk>7IZjceC>_5c#nq->U6D<2*-99xS0=N@8VeKus`T;! z`)gr`cD+}cR^uzm3^i!9B%{ycV-eQWw&rI|>mWRRosqzHm@Td6*CEz#U1Wve znOCL-PFXkz((%lvOEu;nAyWBhA$A`25pHSLhe@WoL?rHV@vg+`dbxb4`CVu7zl2Cq z5Qzq_T7UJb9r6YS*NTvSwD+OPG|kWVtDRZ5_%ta}5qiY!qa&G}D1VgXP~lYhA?S_M zVGWTKd~$3!Qo>BhIQxgL;c}3Zl(Uf5X0R{yHtk`)@F|>izz4u0CY1vs&QNuUZ6C5m zIC;bkb@BvRl}*g)X+HSLNa$ZjJZ0Rdb86}NJ(Yn`*>ZYyE#MCMHGDbF781hppT!=2 z2?g3@S_|j9R2e(j*^bR5vBu_`8+8jNr`wkM^DH$)eA7Ij(;kY zY`#*%82VYIe!%YJvxkS=%X$>b*XlOs_ouuSGW3-X$)ME$5 zFWpGW*(F#$O`%|X_@MJxH3l)E3^y%sQOY+bQEkT=lVS^mgfwnJIjY~n4c>Mt{~8ZE zUVdg|1ON;L)9~^Vyd}%N1)*$-fFlNMmc&FFDf!()?L!nIJr>Wq$#|(P1?7qGLoM=+$-Y#*rn^X3V$Ydf zYgf_1?!ggv^ZDuKc0Vt3$fP0J^ZUjv^E0z8x!&v7s2y7@HYCKM{d1Ll$$r;dfx1Ch zG)Gv+YekkWQmeHGqCMk$Q1ZSus-)0HCWV~)=%~`M3n&~-T>-Monq5mwIr%qxocLx! z_$2qL+{q(29$&K}A!(NWz|9u@@UtsKR7He)g0rAeGT#I@srx)bSPq@^3{f*hK$|hb zI{ZE8=ddZaE6W0);jl?Vd6!U6izG-2+Y?FS5{6tVN=3!p*&|l4s^-^0@5L5)7fExB zz^MeHcRN2$c5MLyXG<1R?-qUns> z6sU8Cym|=xUbfFD*?0DVGJ8>rMXYNWVsY##tzSQX^Isf#RF>7Y&P&zriQL=vGHjZN zq6)i98Ab(I>t)g-^(IgOAmO}-^4$%lIyL%woysP4+5riIN>m*8%xeF=+I526`YIoo z(_OZ8dRa|tA12Af#K82|Bo;GEB@DvT!pw@y50a8i^%sO!snlBJ6IvzvZ+wu$GtER^Hz;*{M z=0SgT{P|nIL_x{43gP0BO+G)@2L7c&IwvFqMw^$ty$i)N`Zs+%4b7L>)ZWwYZ?8PKGwZF=VF(n3eA2Eq=Kg^)PIK#WFLQL1W-^U+tJuwCkCa4 zWCJ!M^(AFcdhXy@lgjXg!m`q{1^CA3H`09Ht}& z1Ydrmc$gBFSgu_oBQ-ql`K{!%!tsvUICI)X`!n(f8GYgUepprm3}ul{)!ALBbL;B% z<1A;f_GjwsP9$E6xw55YT@jI|fONYK%XgzPn`!=3svNy!t;f16p8aFuZk_xI-2#t{ zgHGBh=kHR%d+|2MC<&PFjWw@Z)*{ws{%1{Lh^fisrNC`2_iulh7&oHP9A9P7^pH@q zo6Shx6ABtCAxbz_$5_j!XviDoas$7_ZfX9>Y&gl~iQH>K2wL7uSY(SFU{|7=fVIQV zyzv6=VQ5G=4U

      DQ-V|@qR8M*qiBaptK^lJx>$7!m#mlT_ae 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

      U-^z&yYy>v-tl9n%+qy7v78_6Q-cb^3 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

      F$ua@y4k}=5fYRA(+&Uy^G(X9z>M{s4MrwBy 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�?jT-BK!HV@9f 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 z zZ=X@DFao*iTOPnF0Wh|W;NqNqD}pTFBtqG>T1+D4iFv;&2VP#9zwWhXF&5uHzR`gK zL_igB#g{xvC7sRrDi(n~wPBG-r#$@mQ^w-vY%VEHD(_P}rz%Lk!vS@r0<~rA)&|*z zF`LPgN}D!&qCw6gOF&bXNhH<{#Ct8iR#v(A!)sc?BS-+xVK?bs*AeEqMFW4rQQA@WTc zXF~p<>e_HTnx2iS)X+Bp1CN^(4IjImK3TxqaW3Y6`Ylrw#B5Y70;biDiD*x@(2T*hEw-#|!fOM{4 zH>>DaP)3^jC1i0>lK;Bxj^zoW3`8KQ&aZqb@udr8UDj}Hx@FWwwVN23M+*1DI-ei8 zcZ9vCn*G@UQQ5E5U5-wntZ!)jxWz=!XR=b?6hm8}ZM>$0nNu~oIC-V7sfy#I(tTy1 zpVNWp@W#BeZ?Q|+x;Kw5H##|g_$%IpxSG>cYb7(Kg!C6~F{uq_D(_NB3m7X(Z0Mj} zjLL>v6FYXU4b0Lu#WX!4SwfentjxEN@w67Iva3X4+jgpZOF5ObP=F|o8S@o6!ust0 z%kkxJegdR<;fnWT{`F;Q0~h>+SmtwS+soRO!Nn(8N+vJG`o@AzZN%jkT$I^`yt?LQ zkPUz`%T+AQz}3sizVE45vv}4Wb+30PU^xY-v0s~oRYBd&V@-XdU4s<5tjhSWL}}Og zyS$#Gv15^ziB{D>hKJDfl9g)x`(%RWf~5dm1yM*=*|$G%|82bp73;q8N@py&1h=wA znFaTiq{#(ncYXlDR4&Tz{oQI)!^}ie0V5YLJ!Xqw=Raq+CytH-k-KxJzyKy{n401= z{(}E?{rS*d*p19=HCr6IUFCFglUQ7w-?Wpz|5Zlxx&15 z3Dssoumn91o0~RBG%;jA{#-`dl%mR4n|Uusk{8JyO_KUhIK)D9MIfhb`-FG9+scW# zK`B1Owe#hjgpH4;h_l*zwpNblq7XA?EK{H4Yck{i9;`NIdIbDGk}qBAr6#6z`?6d# z_~s||TCQyGbH5=&fiQqsb}Erd(CuYV9@**H8V6$J_5aZEmVIpp+_LB&2rh--Qi_D& z?i45zBoHX>?(R;Z(Bdw^9RdU`PSF;3cP$jRwnzo2+!yyb=kC4Fx!+-avu3R|GsYJ} z&z`CVjol|SgAuCQGY|FO{@o1d__YI%ThY$X;HFKNlZfpJW>rO)62bI}J zjCMlS8_6kXh5;GP_;&5^_2-@VmuXiYgy`lun7>A7Ya{4rgF0^G7jEuX;Fs33kb%tbr*Y*&>+;Z*xQdJxxE zbP{$k$Z~!C&(8Lz1HJJA`8?F7QE;aSg5NW;!0h$=T6{upZ{$zU8&*m*^=nR_h3h?* zNPr1YEw4cb4i3j`f&GCrY}4*O@`@ku{Vb4?M|^Kx6r4V(HK%?q#vBt-P<(0 z-7lQ9{*s-b<1FAzi5aw{^BfzW#&2ONLoli+ili=Td4g%|Xf`lmZZs6{Zp{M^8vrog zoSDrjQ#UjT?M36T+Q8N@AvTc`4M+iH)~6v#mGF#XFcN}H9oU0? zX-4=?m%kHt@5I#X9v$XaW3U%m(1ep4Z^F{K>MxCBF7tYL+k^kU{?y#HlMW!{099-` zO1hyk#RpeMxODyRA~;o?@xJ{e2$Ng}w~A^r8*8Dw(5S+)&C+(3Pd-zTrb8w&gORkY z=D1RXFzV=w%m&j}5$#djL8B&;z;*hg5F;MCO*i#}1M4x!Vezk# zYQv@pwd*Ope7f^aU~gz%_ClK@Q?G}bB%2`zOZEGIJ(7ToEzS1h#K4I>&*NpFd^%kf zp0TK@LB%!?h9PJW8FoB?M_?pDlc}s=>Q%1hU?~;#Hf?fsN<=HfRQt}~uQz7f-&@3u z{e`2`U?04^4Jpz&X-=l#GYby0r+-kK&&g2viTHQ})$$e#&RuoJCbMWWtMoWJ7%QGU z$R95#-IyF7oBc#{m+?Mh#qJNYgRDo;tArQsMHISq;U?HN>F_zPUF`Ms*k@r8rx674 zE(;j4InG`3-?c{G=we|it#X;s7h-;{(EM1(E5Z}Zx#mDs@ZOK%eNN%9Qi(%cK(w(C z8z#D8vEB6a>v^g zQXqe07wt%#`tDoVX;pomo4PX(;?fcyG|39bhiw_#KgeERs`Akx_KzLZ3a^kfGuo3; ziMw~Bg?C?wT*N0RkO|x)xm!faXG{_g-lYZZ|5p8ltwD(7)}aW+JQ&ih;7KLhT10&~ zl)#gZsE*G+_ff@GDAjQ>C!Du8>*pm1z{KaGtbOGr!S-CtZu)Eu|HrZp&XP4KX@)RT z9{b(ihHhFZ3oKiXk^;=ZFYtN)K}R*2YwM*Wbm-cckBx0wg3?;qo!YIzW|5a84bEbb zrWQfJHID`t_4wd7 zUQHYda~s^&zYjwHpD&32KrYr{tLsdJDfhC+Q3e{NLs{Udf?8115%Tc6h2G=Ir2$;D z0}>hql*<*aD1_wUXP-*k8ztb!z*Ob)b==+zmhF_dB7P4Z zq9{b}3Qel@2D(?UAvIjd{KoI;G$ETc5 zHfXNA5aP^1Cy8;33)OO@sQnht;FiI>pXK9XLVxFmBL@ILw92}uKL3X8XjFzGBO*+k zS?tZK#gdPbF~;l9&Ck_Db>|a$|N?JFQ+j&MGf{oc#>F&y{cljeZ`FC6S4`Hrb>>3+)dq&-5W~b*dlW*b#%QaNF zlaz=NpA*{Qdv?N?G=qH3+iM?`&SpwHtR|K?bk9$71uL}LtYZUvS=aPxP_Z^GoSP3l z4PP_Pw~XQwi&>^WDf|a=aZcOXXF^_SSM(t=aR{(?USM?|Gp2kCZ`@tJ6B8DYfzP>s z>tt=vSio~ZDAt@&&e6+3D9|LtDveOD#Kv^j3Zs3rh0{t9HBCRU*wcB{MfazvSns{v zSX`VVZa)&+xny}_n=*B88;(DSP94=G+!c*>vI z)ku%-uIS(5jVY7Vr(eJx)~uLT@Du{B!oD?^xU~0s4%PsqOn^L>f>1UzS(Ue8xaHBi z_#IER5IbYc<=bjPFe9%{mSK~=`YWD~BJ10yY*PyFjPs}=&i){<>MvR{?6_N5GV_kK zvISL6MFm{tXB(U_O0d-mV|1=eycE239*#4<|M^CWWpk9R?p5j(%^P23iG5QDTRVNo zVD6juNgHU5qsbN?Dc{#J-_x&+(`QHtEUlD)rYgi-i{l?#+cof?l?VhLCVJaafP7@e<@6$7T))?b5 zPy@Zn17qI^ni#AIm`5*GP^!Lif!c}^Xc`~n_uhaXb^l$xhHP0ym4k$Oliqy9VwSp* z3p@(la5L3F_hPB2G+2Sf@I{3zbX+=$j0ah`Zr^@Kdu1=zBy_RZ2by8dX9{9HY(;%7 zR99`Ont%?T8U@>SHkntQ!}(JbsH`TNRj6juqO@p3?AzDL#L-I6*r&UE(@qXH9=9IV zsm3WkmU7*?rltPS=Hm-RVmm9pkp5l~E#q(bW2XBnQ+f0L7o#*bu@`oP*G+3Rds5hx zUhhi(M?VAzZEv=4rV7NlnRY`aPIc|`JWiU~29;Xfx9{@yF$@8Kz+FDWxk^mm!C4F$ z^l(Z>Uf@23z<1MJ27#uxljU>aZ287D?6XRX!*r{(Ea}>lLhjCDqs=^A`+|2##C7LCr`*a^0v4%v6i`YSIL#jrvrpB9maLsqe%z3 zOSGe%pACV^*6R-`pX%9(C?aJXHo zTi0hn^&)vflDNzmWoTkTh2+n~tseHy>b@^h{D>JX4+9z|-uk^3$1T`hK++o+A(O)N z^4WrMS9G3Ik2{6h=!Y$b;i;v%BZIUrwayY118=d_{+Z^F2EE8myesXCciQG`QTzY2 z91h6W(NywM$S0xx!dC`rrgN0%;wDHo$S=@vcbCsh2>^g5wY-`%*(m*cqBVEK2C0{T zBiawamz>BrW5bBVoip-F;gwCU4#w_FV_Qgsb7szly$JTi#7gjEG+UN9RDHeDHbz9> zI-L)n%s)+exKO~Zd!cNinH!>{z_Zo(HSg!Zop%_Y zDXp}WVTnL4=5?#Ec>5)5853!uN4Clh>AGdp0A+h5OMxd*QU!vTk{x3XRe*|veRYuW zw=+du7dUdSEIu$S} zVVe0Z!tvY*{2qx3k}2j|f($>u*c`R}nCY@PdGRV!O9MVNY)WFen$tq`Fy66h-^!JZ z!6Bdo`_yKTXEUmIV^oMwG03mZR~>BQ6T5>I&I@{(lEXkJ_tyI8C%3ISb%9i6zVezb z;f`Kmg6ZLaHtlVU5EXgxfrz1rjs~UNS=PJ1Wrg>ZyX(HGnN&|WPFZbj62!2vqi42* zapF~YNS=u;shJQa33vNuhN`G~x6xLf%1L9v@mJr`9#hzctwZw%K zr;p-ptkC9YUpyBloyIb8wLrCzqm>MSQ-;WYX1zhY(x5%zfA0 zFeu9eFauz?PSpD@uFs4M1>Xk$_?VF9R0mMjCBs?yq$;JZwW^gCS4=8r`OJ7=zKI+K znVQzh5DFC^^H*MKAr<4Rw3Ik!Pw=WQNsk0&+GhR0gZEK<>B2VQekb8|p255=N#c4( zy~?k469KaW_#2Khv(XYhbJx+AGb@?;b*LX&sHE)zw$GlKMpV*eU6B}3AOOQFnGMWB zC1=;XL6B#(S(#pAhi6PDR8#hqnSd}NTGhk>y$6fHu`;1cm{NT^(U+p=RyJPs(JF>I zBTr2Ra%xh$amDG%cy$FQN|hydUrdhnnU{SYT6T+s9R;PwG3J^75Ku7oPA0F(C6GCyN8`cd0HEfj;)oRV%r=r&1t-^S#jNRt zou`-HPw9oMNo2)p2y8aXy9tSsCZIHybH*&x21_N=LXERp>`NW!Li}@JqvX=*@2az8 zXEdM2mTux16Ie&ZP2%~wpFI907UI^^_TnTB`4qZo{6oNgYS{-zwO$}W+@xD1^R2eo zz_3#QzYcjpJ43II2YIw9wN{-PkZaGN_1_|eE>_zU@xnLh4fI89&~P$s-{309+$5s) zi`iYdB)|XwxMNIrXfCmOPa$I;Y7$Fl7n(-t)A;ula#meG79#HbFy}T0JCr;#)+gAi z(T%UCTeso{u}#|@8Va$|PJ<5<1~MWMnR9APMr&h`p2$Xp`lTM6Wtx@)wYT>0Vi#D1 zB)rGM%+A8$zUDCAUe6hi0d{^8>=3wG_WPe@&*0N$BNyfQ_WMi!d^wN;008ou1wi>n z0sjo!6RZmEltf+xwq}16M4i7Q7WzGXNsXk{9OKtai$B<2DW|~b!6O^_NAl}vj~6zj zGi*V=)A<>j4$nd*ciRd?1)V(42}Dh8vS*Zo67b*iCN>b=b+6ob%NRZ2x{7BkIaTy( z?|3@Dj20DZab9yP6$fOV#(DFYiY`*=P4#~_HX>vN16CQCc}>W00YMuvW_KH-W<7#0 z8igPNcz3Joy)+Ta+o+{~Q^;Xmd$zNQK8F767e>L@)MJ+9_1uG~&Ykcy!p2kd%mZhw{ zAn;k)0T?-$VJOy8ya)^&z1$N%cCM#6djn3DM`a==L{JW&vA7PL8BS%a5uG zqqU2qvGpxkuOMb=pN!CM3Wg{q1@MzEPHrO{Bl2~x2=V;cm{l?)4s!j*Kk4t8DOD}y z_-sV{|1PYfPTQ{d!d~e!^tCcjSuojK-)htXfsC*R`UlNDz>Eg~0MNa@4`M6H(loCu z^DSxkQ8974SNc02lO^ri~%sD!qI zPL1#|xx(iJ3#>hXg9f|`v*zI?Xr$1YaQX5hCLL3f!lc}rkA;!32bV7bAImjSi;^qv zLnW#-1N2pdDYa`=ITHofP_%Rv=xW}6rQ2n*FwKxQ96(17)RoBt1gf;^5Js1CBw%KX zf(5ra#i@R%5TMFN4;M(q(&2PvkW|5-l!Q?h?G2vJZNX)gA9bLJY2#^M@UL`%l^Bev zZiS8b5k?1^AVGD7Z}N{5eMGX+JGWrbdS>$?OrOidc^*=Z^LMc#3FY>A0 z;4{ias?sPhW)#m9bBvr@wD%8e&*M>Q0Wg4~(m0JZ&M!ES5sX(Z{oIG-l7BvzPGEV( zXg@pSP2^>x@!O8BDFS8X z3~-`hVOtkkXT$92ja`NVt)`ah>vz1V!W}d}>y))tzLSmrDRZ9e=tE6mkFX0)qa+J| z49$28WgDDeWMLJ;(&V`8Z}$|)7WP}rWho2qrt0DmyE&;)Bo`55W&M#9mRw3Q0;&3x z;U)`AQpjj%GDqsd0cI{KT-P8T_Cjit;UhF@h{ zF{9PqFFuw3;lp zNzj(}=hNr-!@f0_Ne!_iE?dP-s!a)eO7X@uD3@a7X>@rjBZyf-F!ZW_enx(Pm6xUuj)SJCqwS?+A(Gb)%C0uBC*+!Ar^x;zWq!0a4m z#!0U3cVKYf>wmGGYLr<@fC(d&2T}XzGOw%Q6Rs$i%x)_O-^XK0=V#h?+tnPix_E0! z7Cp&3ipel!8OfNz)$5Lq!01r{790021^F*_`bSp`0 zb~M!c{r02u*tYq7JW-=r2KSeRGiZ&PPvjgc z7vlzJf)EB$^;~X+F71rTx>{W_RMXj2?Xb0Ye5Us6mzJg1CFVtjslmkgcFUKP+0&Qn zQx9J?S9J*25#>N+{m@@%S@pKo2W7MW&TyRgTBQK~P};x877z#kp`5n07rfcuWcVRzDG?z(i)Oc#% z+My`(>pIlldS?bD>z_wCyetdN&~fX|5r-}}kM83^yjA^K6D=WyGN@<*s;W^M*M6Uu zG|N?yL9&ZH6QXLIGAj1r&FaHc(={`f!^=zO23nu)34ct_NuLii*BKUSRf(L4WPL#Y z==~On2LJ$(9g|O!U`Myw0HZrXAdgWlV1>`NHvdCb#JOJF#)vh0Y0r|DF<}@zr`d+t zZ!uEYuW?jl=%kGAL}j+Zg$8b}4b+<3MQU7p3R?!6JG>>9tql>#hS^Q1^uJXoR*Ap4UI(|>yC)v=Q6rFPA~r*ri35UqBphJ5La*CujeLj#dGEMweq}DQ+e|Ir~4ud zM^G+8Z&Pydnp&IwK64Ylpbqjq2{jjH-H6*;4P}y>DW~GeLJv)NOwEE}r&g0Qxk}`qH z)@WsA^v7ngm}HADRu4ZmZ!+W^f<>MR-8>Y3tv4e@VUnow!9|$dRb*J5BLbAlCjcGA zXE@S!gZE?xMY~e)sqU6R&15QyjlwB`KFgmCsVxED zxiMT`e4g)`+8JxS|MKq~2lwZrnSnagrDA!*67|s`)nzpw@xN+YtsS-{<3%yk5s$S3 z6UStE(cU1(kI$KhIgacy>mzT+$tx6U=`!8wZ}DdfFDMXBaf=C2e|PyZ7zW}KFERc_qHf99 zgZWFZWVmN{8x{E?)2aLPCL(Qn9GPyS>NPGjThBg&%TG9c*zv8LL+DthA=mUzn@0&@ zk@A>3ApzRZl8jl17%gMaAa3I#uT;iUzp}69cS4rwG3U}a$@5RFuL}UIm?8+V(%29; zNIpe_@}Y%6ovzIpEQj z+-4{@$!*HB?iFr&q@v3iA$cOg~ zmo$^xT4JDnjQj6=NT`$A^!+=8^N2n4jCPA!D}q+CISDO6ECU+aC5Wx`MUGReN)bsM zD5fXLHT`7bfqLmx%usmfUmBET@q9)uj!q^t?Mk`N6l}0ypP#Gv7O(_7=90Kf#>DLp z7`NjK;ez-MyoYcqb(RecERTTyA?N-xSW}#~7h;sYQ|du~2iFaG)ndxdmA9EE&WAoF^*2~f82oOdOYL+ql1+!t;RD+1 z5MhLC=?|V_S^95-RzBC3Z^)|m&fv<}`^~L3M3XbnPM*)4ji_#$1eyip;Y6X2`)j(R zM%vI0m)r_Sf`HNh-oQz|eubZzCfuPPB}Ax>?eD_mwO`?zSBe(TgX=nhBIM+ON~dZm z!utY@bRB&*Q}CB8K2%br^!82N3vX_hD?>Uyb}dh0$2@Q%Qo&V9CSNZ^0J#HGpKhfy zTcdWbx)O1nz$!4GH}Tp)W?JA;WKgt4G$a*#M@ZrP6oj~nyO#3eq)HDe<;FuUHdWe{ zb_8U%{#5Y!myGq1sIz~F<8f z*WDCC+i9jw-=sJ>%R~sAg2((E-`2o$Yx!@GAQ+QK5DQPQ8PDxQGw?TWw)krsEh#>UO1m~bHwGdBJOK0DPSwz5sd+Y)u#EJ*v$xXoZTqb1FcbS9 zrIjzW75vX=2&wD?f@$w2W!(=Je$0lzOm+u?WO4uSnV*|b8njoJ9r*R8HLpUYkhLY` zQnaPVBTe-C&6Xn$9g!+g%;tbcTGL6?kPT!fVOA03C{Cn8V5f*|FXIM9 znQI#&yMlKX*^1aEy|s$*n!XA>;RM`u=G)ux3HTpt(2zqbIaN?pvz8b?Mam}PP1-_b zT6Y|xopkhB+(2VK3Z7RI7MASAqlnf=<1@VDbdMl{o)*#LyQmHwYFg~ubi54< z+C?hKYYU|a4o?koWyA`ZR(KPgWT{XTTgO96X({(>$Olld1o$aZw?B~th(+G)fVqg* z4AXDo*(7n7s!~KNqE|5hO3o^V^t821^Ex~to*`S`x3crmouY#JndUKNQiR7spEGv- z>+Okh3g_viYe`b<$qoo%WjM{8{B>OwEKSY6mQ^kE z>?WF;QMp@Yxmz(U^LDhtcIm84{CJt_9<9*=oLoT8y+iM~p3j`-M>?O2D+%U8zps=Ia0b3|4CQ%YI1QkxXupb&NC4Q1yTXEV9NHMxY` z`W1gw!ex5+dxi8tqsI509R3uYB_HgMaAUR6TXaV`zbocPr)PAQgprAKSJ>Kgws7

      WFJ*$ag-O(UZ$9%rE7?v+cY?8)L%!;A@V#U1QNDD7 zJ0qYA<0k*7!vo(mvkk=^^?L_;PHiCy>*c4*Wsl}trjtG` zjXw$CT6?qaN2)z7NRxES7SNtbeFlNZXAbPgVVAySa{u>G;eS{zz-C)JUeG5kY0Fmz ziqO6)a63WGzp)l{H@ju$1Xuu4Rla@IRcu209;X($O~eeDp4wA6ZKm z-&2WByuFjV*ZYzdq)k048`1(eWIpvwk-VHX%>=bu?k|`*Hp<6ajq)m?z6FlSZ)Ltc zKgJ|ACiPmO8HO7xFZk7H-wc*9aOb+z9O}qVcjPfSyAwthVGABt;;Sz@*|mJ)WmpnA ziPACyRM}QI-WC&``i?Ap(d7ZX7h_6)6E%AbQ_XAv;VChoi)bs~R27!m5-=L!XJ|7w zN_{K+E+d0j0hWUlVc0lkJOO*0@_OmcjbVE z0iC$JCqh6}*_2BYVcxr>H^dWRt7{v;Bvwlz{SeDlTFEYL48GGja1Q3ED*i*!qqed! zX+k;PAT*rCxoIob0WOd6RpNi;+HAlGcW)+YnPO6&-ehaPvWucydXk)KH0%_oklPnk zOxVNZXJV_X^TJ353@cU{7C4iA9gw_!nIcnq;?@iR0Le2}iGMn&>ZV6AmD_bZwG>eF zawZ#VbLLqd?=rg5y|Q(UGwlo<;-dG#pF=7!g7uICo_V@RtRR=eWpX-1E^LSjUNv6O z#?tAA^>M^hz1b(p%`jG$Y0UTg=JOz3n}Z-AGp7j`JHCBl@05k&=?b-fq=GDIZJHag zjzWJu3mzBCNFQEm+!+K>Q`x(qI2kjC|2F{tqvha^I}1=@pN#s82HqGVa80Ur3}j)_ z;2j?%lU+VSo)V0Qy~Il}kBur&BI1}~Cfl5cv~qATL`|@`)oJWS#KsA{Nm^ePk9JPe zOp;$8yNQ;mOc40^NUrYLbW~5A$k{<;yI1mQ{-jb+Q}@7r**9)kK2AijM)=H-D5g$! zqh=9wD3ivwCYE)uO>PrChWECSG0s}hxmv`VNT#i0`)sS4j7sk`iLtjx>1c z13!mv2!XMehH36!28tpyIJwPJA5IpjCB%g~4l|AKvhN1z01^|FVj9($jA`4kyC6{#SIE+V< zGBh_HR`T>qfk_-IZ{w+VuC1yztxo>yLwJmFTsNr|A<5Ar1WacM?kJXE>BpctQu{6kAwp7$-Z4`y9-uwozNCC`9ISwl`>;#*m9PavQB6%8c@-11`b1#HH zMn2sB5Vhn1c33aqZFcLzWMOKI1gnN`n?y0MP&BTJ`SwZc$JtUV*&yr%4+X5DWWr+9 z@(lf%kEBUir&U#BWZFF61{n0#-x2x`)TP3Wem+C}G;_d78&~5W@8qN;_QDgz6 z7);$%fPDf^3Zl0klC|vt{5JL`-MssD;4)P*EKDPU_Me#!Z^hN*mm*Ty6^7xl4q{58ZtH;~Uubyhu zC#JKQ$qNnmYpo?VET!RGDn}98MxR2m&c-{$$T$7mKX}rhv6ulo47vAqJTi=x!tv<+ z_C|~?5x;NEwy;2TyYqEaDh6E)X{{M?xQ)axtn8Zgo=Omzq9gdN4iDVTlMWT2<w|5yl`Oz6gp>5jr7eJ0w|>dzCr#+vq zeRJ%|5N=SG@j*?)0{>Gmy^(Qivoja?k)JPN(y6Kbr4?8I{H8{z$?=ER9_s-GQR;$y zOBRJL!gGOGe_ntM`W+>(@BlncN|gxI;d_!z%*esvvEnocXEAfk%#QD>J=rpqLfS$@ zte<|A#gcSM)2!T?C~|FIfqvwC9q`hct>t}10cV5;SLkGuBIoErZx^=#Pqm^MH1Pb;(qXL$OQ zM9#AC$;BlE{;NYX+hJQfMp-M>tsq2TJY0LA!tJDKY*0@43VoON9zzgdQH9S3@d^lo zS(j={^woNq`InE@d!b;cqlKbW57py#Z5MI2$~buFwp_c&NByuqa#|ZRd$UTULi~{w zc6k2#1Mfi=ZOdB$d{QRST~sCq1a%ro4f$C$F!Gj)fGLgPsh)ehFqsN|;ZO}H<_;p( z%PrG1F6}m5akUny>Vv>ll221eG4eJMh1B>p`=hWh0Bs-(s~r8em*>^JYb1jnVXra=yq;T|{7fXfASy@oUD2{;Hq6opv-oT~VLG7%!JWw+y zMTj>pz&0#wyrS(ELMLLvUN=kDVzti^w>q-u<#ZUJtG2G?|8bn26FP0OR+A)=vxo4y zp;St+JK<4R+Ojf|1%}3B!Z}<(q`U@vVaN|9v3W2)^|nf^?VJkO^E}i-A=hUDsmHQz zRdzv0+}2fvu!s2}k2-glFj?nW*;4^{i6@tp`6}RtSa+Oqkh6OFuVHQfrwf3-+k%?A6!$IOtkVCL8SQOwGYKOLo zO`rR~hWnzqR}qYpq9{gy3o*u zlu@zNrIb;@m{qDQNwOCAea1_dJ=SDZUCVv0{0t1rySeT1JHV<#4SyW5vx>N2w6h3$ z|2YS?*IzSDUp`B;@eNka^-;l^n$cN*$-tB@n50sMCjw6t;9wU0y)HS3#f?iu3;<&N zuj_C_u@d~G=#3XVnug(95UAN|#ODxBTBC@3R@~1^zAG7__Mm!k(PA%o0s=5WCQjQ6 z@giv%JfXqT^L100I}1p@pT(K}LnMQRRgTKey@vE!j#x zP;3f#h_1G5J6BtY#9FCmfz7xxBke6Iu|I6NShNu4J6*kdOCadwoMY6ovVY#)NptV) zl>3)*7PEUW8heGLOhDfyQP^fT_EcU=g-Fo%N zB-GQFXj&xdTl9Ev!pX-Ss*=CGR)>*!8y2p+n< zBWNSOHokl*v9D?`S3M1RwC~hh!ThfKyEz=(UWCs=ff{V9eXUIR`EWq@Bs`=Xh?fKG zON*tmcDSiQI<=@Nr{34Wi#5Iabhx4A!Xtw*CdXSd9%QpI5MlG~5oqx1#B!`m`Gjn{ z^#^>u@?;`4{>=7?wHDlcR+iH(th(qO_OmIyqUNUFVL}g--=cAKg=0=Crw5x%hL3WW zjO<9c_A#BDks2{7uFDcA+^pv#_X|GKx4j>_=BIr6`b?=vYaajrjF)`bl+DhRe*8;q zgZ-*lXPhc_I@CH>Br8Z8gI%q8`8lD46*bP=YCi}8VA%eopg#kM^9;bG$!U}{E z_oc?1?(>$8pC(;p8Ju&nG6gky$PHJxPqk4h2%l;yCsa398temU#f`VsN`#v`N6+aChGGM!-%0_Q?#Fu8Usf>V}dpgS{W_0R&_E)#Y zafzUJmtvALf&)4Raf^j4nCG0Y?l~i!N1erZPeC+ocBs4Pif^5;!d682X>md~o2&fY zr%93PM;#44002OELe0`ye(3`@tneSStkb)N)$q9Fy@qu&9s!R4Ux(d3dgxdpX-m}4 zGO68>=PM>jSAx-vqszfuW?w1P2R=)EPP z*)B?_+mpw+zYt-wc*ceE(8;3~^f3oNJv%&pTF;|AZ&kOvBw{p2v!=0G#3C|-y8!9m zSn_1~`_&8;E%PX=3I|c;%cYE(#4~DKA+jt-Vt2n?y44+_nidjU`i@~u3;+WFF)1SZ zTi%3_eOn|V@7GJ^^1Y**3Zc}QHe6f` zpiW;o#POf#QZbdfi{OpRhTW=y1;^&b%h}qhhEQG4v@~#I`IUkW3&dWV47VKX;qk82bwfC#$gugK)b1|Jdc?Eq9#bMRZb<=?i6` zZDcb=zRI-XgZiTGdp~I30}-QmRq0AQ0enHhCPXwwg*Pso(!6hLuK+2Us(tO=@vKS` ziiE3~J8So~j-Q==I}8|4vB^5VQ@<_F58*YQPDa&lJ=5cq=oFh^X(j7qERfIG!3lNT z?v&1Z-ZmTufH385LcE`=b-LdHk@JC}j1F|cM^R}}i;KHSj?Cb_^n?ewdc9sZzZ@h6()Tl2Xn_@>Aj+2+-3ZkysDwrt*T0$ctad(VE(jD^B z>~Y^sEf;J&!dOUC1FN3*^~0ba9+izjLg9x>`;TPFz`paZ*~<`j+J8TStiV8o92Y|# z1k?8HhD;2k^waaRPP^Mv{zpW;p*#PF5TO;e;NN!>w*;=aK|#ya@O{=p4l+7|b)uN; zP_*`5!Bg=l(5nsx7-o@%a>P_vT-yXxSY=(eG3W zvg{a5w}*1oRF>auBBEADJQm5SgkF3xm&`@|#&!bQNwH=1U91kYoGuNz9r&CdWqrST zad<>ZrlEF$wrYWqTId@zlF5^yr$hCTSwNN~!+Uq9=2A@w*Q}H#?7<1dyDG zA}~hR)dL%1Zl-uKAp!pB--2(WBX}a@e|wlP{@-qDOi-!Q_F0SyQ@ZP8gTO?$&PIuQ zHEMZMN9YQ5m(M`~0Rc?i>&L|Ln&~EZpJX^M2^Cl8qCT@ZsfPVr74zv$S*whNsGg>5 zC+Hl~I)Bc5@xnsV)_HyYCJO!Mm4x=1!FZlP#=HuCH40gw$-~{9+P8Y(lUHW~?Zgp- zqndg;1icZ4q4VJx5 zFmOifz!+*$F%8-S`58^hPKLND!3UTlQ&xm7QAGj70rhn=t_?9=@(cQaMLWOzlgi6I zp5Uq_gz5uQ4UZ{rpWA~Inv>gi4BLe_Nvz5~q1=tQd7=!_XJp$(Zu}S2-d1T5r2u9lH_uOp zE$88P;X_XcV|48Cl!~sm2t?~YdTxwR7|dbF-?I`neXe@aL}gC_tyj|Rlj{|#G>UTj zmc-ivb|U2(rOu!tl3DPx$|L3?hAmwso!{DnCg#W zHMV!_Qq{Z0}QNm;|Uz#2-6&MSZ7vwiPwPL<8F5e4LyVtbq9CX&BRxP%sS z$G_R0m4CLAiljggN0i}TyJV0e3pBuEb{DJ#OYNrKodJD0h4UK8kx|_9r=}GNZ*^G+ zlA`N-`D@y7F^g-E^A(m0vE6Ac)4|^r+A^`y;q$pNFx^Nw7#Rom$rP6kAphslMdRuC z=L6ri$J$JROr5P))B4X`wYSOOXmCmca?iOSP)Ug1qg64awacq<(XOmToZ_V1>=?oEl$Ef-pFrSnL5TuB z(6tAtcJlRfef)hNQ|$h{JG?COTTu(@Q=KHAN#+oc(ZX<1ak@KHeqSB2jwiq&hp7ga zm$1a2_>|1{`R2M-)&vjZ$4B(!Uv<%2T>Bqch!2u%A0~C1!fa-52(<-UASHK;2YNcj z@Dm@?Ch>jjE^x+PJTlq2HpwKq$MXpYM7)U`Ca2#|PXE|V3t z=rKM;6qcd3Lw)B?$_DFYg$z}$W@u&Zr0GcuRVclTT8^`w2{naOKZ}6cu_Im58F^OW zyfR0nUx4n)R~I#2{Qj9b#Ft8_j}MxPoMr01W&M}>j$1ae)mGh1^KTv51_R$)VOxMg zUHbh`*}G6eVWa=!1Mwfo4ceKnvM~YKZizW#D1eN)Ak-`qAP^Gb=gzPK0AgSnb5I_V zpz$@rj+cg_f?NPjwY_D7jh7@%h=?a5U{*!`)?`*jiqs4^CyPj>8-5T|BQKMM$Y@?M zQ9idP;q=Q_-q={RSUvE6`D3#?lcIA0IcMhAo3bh+SkO8 zv*3WDG6EA8>Mir)naM*zhvZH*au6YkOYyA?Rx(+e0~6~`l&=eMxstR8(L|iUA>3_V zTsrUJVx`}?0dKL-Q3i)+@hWGT#N&y=@XiVCdFTf|XK~^cW`D|ua37a~cDuwcJ^UMk zQ}+P@9}0wZ*(g7`|Lzg%b<38}?~STxej!#Pif;9r)c4Y2!3M*17VMZJGwjowl0k6+ zf$&~XT12^+!iKcOJeO&lS=pH-Et{9)3SJNxQwUM2kT2QL49 zetxOrVPK&0EY|B7ecEzf)}{(Fe+jh#e57VHoQ$D zfPD(R7SV@y_+y-MOxP?| z^?toRSh<42aVg@?D%0-sN~_XGtbOopCU6ZG;rOjs_A0Lm4_jOtObjQw%>@+Rv$C%U z%%I%*y>uR_Qq2CMp1@`^!b60mRX~WW_rYc91282 z8oiP6Z09`~tZHQC(H4?<)@cG-^4&x4Qh6@-DvFkioj(h4;7BsZC1kvnxU_2Z@e)k( zbxYhei(=N1(CRGai1$2@eSv|EoPZR)RGnAG4&Ok<5PBtb z7?2k8$sJ~&@rrdqQEN$WkzSHaJ%16&+~wItjM3)*QELz#gh`~pZJ(OYQJQ+8b!}hm zvYWIB)O?9mIVy1|zBX`s2t%xCwc)fXJx;G}w$Rj=zMP3i&m9*Fs?=xVP?aC#&2c!fs44g`i1#01r-Eeo>p#tf0cD6 zL~E8K&0jQl6ZNyre2BD|Z%AK4o4pT(LQ? z(U{1X0IvB>cgnN7QO~zanOe=~9xzFm8Lpw!U?&Dvyd{~=b zR98!+!1ugmk-+IUud>cv)$Ckq-IKDZKInttG*e7ge+yenbyptcNbakB!XQHI4 z*~Cj??+)B}(_d%PSUM6Wk@eoYQ5A9Ym(*r6*oSM!XMzSzM_kB|u9xwWV4?MUVP98& zYB3W|$cpu{YK{KFT;e}(s8H<|*Yz$Ff$x>B7Qc{qIgfO~itnBOo%h`(-m6 z7xVGNY2Rqo$|9xtEd}JwR^=uqlNfdwn$Cy{4EkgEa!&Cl2=;rY|LqOyuyGl?`QB#X zWmD0$vvVO-VfST##`f&^>gbY31;r$zH7*`oOoPy@Z;+coC%oo@siHF@2YI5{`Yb&Y z_3CHxYLJ9u#mSsPI^=GW4Yw~HQnNAVlDpg~JK5u1=bMnuBg9U@Xb=s0|Ha1fY??!R z3t_xndL9_`uJHeCv9{Z-pI&I#A>E%srDMurCFwp|5T*fRs7FplPB#WH41nY?C3wTl z1BKY=f0CnIKlC^Oa#!`Cf+<8Po~^FS%o1)2z9du*B7DjQygcF^8Kt>KXIL=|&3 z_OyljP(NauEx3Z@*`|d7iPD&$G6`hhnhZkz3rCdB17~hXI1H8!0?8r^x4W36X1l#gg##%mp4tr7ckm@wGSG}kO&KDoWvtU zb?yX%`>3D7_pdAXDF>2{yJn^(G5g=SB^JH0)flSI690M0Ofg(vcfT{GQnfW*;tG{d zfFI`gBIG+wa}mBlbTTOl4@p(zBFTI2c7W5L`5V*GWQLn}TzCOtZOilWi!FT)m%Q%q8_v z#B&ZqIl8z1mcFjfX#bSCkaVhz0Jjw19gTvWpHl86X3^%KLNH>$9rMy>u5Ln*Py;2N z&{muO&CtxVx0t<9^G0517DyxLNC;9qk1L2Z6q*_kG3-nWjaI*`du*`iFTQJlwlz`YlgjdsDj(*)SXp121VDjh~F^8LjV)#e8gwS{gEjkJ^&juR+UJa9G(Uqnh{x)#G zkR=@WsWtWv|G0Yd#nv$G>%?NPnTRd+UP@N&@`t^wYrNySxLqTTtO4x8-!%R2|sV#;by`giG62mWs3@_~)}P<_Fb>b>b9=UfbL)}Zf6ND4k(|Jnq$ zy>SJrPdLur5rO!`1UU)4QcFzI56PCnQPDT%!m%&8JK3o@PxW3=MUk_@@}-EMuCd81 zf{YxuF?mIBn6ztqAgi~8#|A!sBJ!Y{g_BBc2brF;0WyRZni-U4zv=_LY{dLhqN&!0 zO1~HK7R-V3Ib+NOBhZ15pM**TexDAIE43sw+~8(DgRayLQebX+_(u@@DKIk>DH9fobFkF_R;Cv3E;oE zOU@1(uv2Bd)C)XkY0gFx@-$cH7T$5yHjk5g<{m(Rh)7?@Mk3{y?V!+B*_|cPuKu!5@&azZ7&q>$No&h8om}8;{L5%$2sObkME=y5r9FMqYB~rp!FysLRsV2Fu#BgH8|f6?Wc@ zuszz>gIs#_jDD)uIWScSIj3aKVR0JqMWieHw0MIR^1`TCUa`K!go`qPgiJciFwRyf zp{T%!C8yk@Kp)xeUfkoU)>BAEP@ss%%MV+8{pI9%qbNo0|6;MCW6ZrYhh1oTC)AzC zN+Zl+j^W}R!_PS>es+C003}4Good^&SB9x>XD5xKd6m%oDKWXo=Ec>;2kO* zyi6G`W#P^`b&Y5*e|EJqLaA}6*7$FR{={D* zi;dmv=Fue~AHRN8Kq;>`(q0Z}S++AFOzf-~RUfTBkds>ujxb}dOQ33Z8nfp|QDu0H z;Qo46fm&2RO7&0tOBSLSv+q;nwD(T3HF}vSx3z%%^FqJ9-p$o0#ZJJJ9C4*W@Mm0? zu0F6Kan#B9H;uE0aA&VYNMtody{9z$`uik~Ovb;~LLLy2^t|86M9x3wS={mXcIrtx z@#O@Qk42&vo(CJ|o$RG0+47$rD%b)yRw2VCnh#vlWzUIsa{kjtO(iWkk00?oSJ!rND{xJLWaCrtifw#rU=|KF z!@Q?fcn$nv8^`)VuFB!1%@_pT;kQWif7|;11Hn(0;j%eqEVSFL6RRRoSg85hDXZZZuXef@$&U-bwnL$u!v}~=)#n_ zpzKl4X(aLoXDbhP104J%*plrjR8lguHx#7=hXF)!Oyt~XsVi|5iKBaC z>ljDbSrvGe)z;pgLDtLf8z)@XBk|dZXM6;LH07^r?>wk;J$NHQC9e_A&pQ$FPR$z` zj}7Bmg?CtN+&V!ND_RRF^OX;O#(H#VC1xrr)b+z!^Z3d6q(UL8!yfNmbfO?Pqle)9Ngl0@`D3{t!YRk zhpS(F4T{^>5ej)_f{_?FJzbSHtLyT+h!|3nui{7lfp5bfMlUj)7GTip zWH#@}{W;yNCX0m_N6w{`D=*Q2!Ihme&FszbZc<8jHnA5@(?bZimYk3Af~qT|Kn>b) zd;l9DwB0wTI|IGIcw$-eX%04Rhk{N|GW)~Nz%&)cKQF0#i6cAFF#rG{tBwkzBvbx< zUr-2goEr*-dXl=g!H^4zyju64-7$1mi8kvuiOPpt?>t0N!7=Q6Q@kjjOiB?k_qod0 z*=MyE>>7AmFYv}#(iR1^r-jNW)$fY?>%?hGJM(zdFU2_b(L{c>m5zO&2t9hM$jphapCN&8hep#9M#$VKb_ zqH@?6)y^BRQzhSw3yWB3_GH*@tdDB>*Kut@PnSUs2!KPx0^lr47`o&qdYo6_-TSlP z7_d}^$Qq8sc$S%=iAx<)yAi#E`@LSzdRcy`IZWwZCze6PoTx{X;jG?(K;e%jJj3Iz z5AiI=j5YDvy_jR@gw*VRthNd$h_W8`AC-?F?Pf+XSjh>BIN{?XUqusB{006?#MYiiY1ksQ}WGTE>(C$cPxlE&~2x|6kcS8{F)aZO@)?1hkb>cvxmH2YiP;Q~JuHqrsP)+@T(oE{u}qErBLpkdWx{%A3180Y(np?C*Z z&_9{qG-*7xA)gHi4DfwNfY}Yy{H$;&=oe~$}UqlHFP>w z>Oep8Di!1p4l)cW!c#Nr|7OmaGaYOH6qHg=>Ah^)6fJ)0t(p89Tkp=4%lGn0Z|+!( zZSztzSN7^mXLEgt%|}d)^NaQN900LY#|OCsm|t}Q4Cx3 z=@;h>5cWd-f+D|4(6WYHtHyXXX@lbe3c!Q9)mPB%BmNbFvh_ojA- z9}@_<5Pq4-SJzM_!co~SZToYyKf^B-F1f&Dq^K=#kYO)fhENpRTU|&x7gzhXW(B4$ zm`VzWKf zWz$bN&$HV*Ed53SYYnfN#w8}kJ`;F=qaOGw zdC(;+gwlPgMu`c!Nd{ zGYKm8wLh=<;W?Iuk3Mxz>#fUIeZ<{=pY5t0y<1o$?Elt87x@y!Yb5udf|rZk2K-bw zA`#yr7lJhcD+%>iEnkXPY--rJ&7DOjLdO@BLz|R)aX6k6O&Ppd!P@W>UuiocGa> zD(DC3YSvws4NNQpqH0N+8GnW5esuI*Hr949Q>fRbJ(a88WQ)xNx%sxv8U!H=WmT|Xjo z>>I;Cy6t#78^dXk$LykmqkyDT@e}uZ?pmVQV8Ij!wEfYc1{7uP9&<)K#&$zDKt)#+ zyId~J@`XGx{&H{9Duxf=h0|f7e}1g=9D2Z zRj^p`MOVJWz`S=;MMN`O#O!HyL| zzg9_)q$RfZ5_&?kuZ~vf7Id`P{aS2BYFH{$nZhCfu65Goli&eA_6?D6opcC}#;FNr z-lXMRA+KnhCQY*7g+&>v8+mM#=9ro5p57Y$Fd%WQ3c7MZTdLCo#rd+~K=(6wJM1Gf zMXNbPy!?y8m|ipwwFpv}yQ;w46?C8ny3#@f#ugNiL)QhJE2)m9xqQEZ(w4mTAbR}?4 z{YZpF!w8cHx`hSn%jX67%Nkne2GPmF%4}Sg(LR8_yo?x7#P@Yz)~gg>>80K_YN{-L z|2F9Is~jn5`=lb?^8KVd6X*qNrQ#O}qTWKIqUU)nl&h<`q;W9lA}O4?KDvsqP{c^% zfOlVYGdo-j{@tQ52R|%$XdfDmFB=5sYGXko))mc&<=q)N{Y(YOp#cE5=|idSt1(g@ zk&?Zk8x|aaww=#e5c09ZscvSXp_U876`~T*1X83+oc49UOp*e;xzB|up6uM-@nVc` zL}0)s?pdL6h{Df?XQU#d#X2+ume4j4-Y8CbLE;&8^#KZ<0ukq>T;2kjuBCB>D?Gm? zC;8i}|`(!C4jGK|v(cIN71Di_PJb$*wtE=DjYqkkUB z%@=kRcaO8D=4i(+O0LKeT)Wy&BKZ)$|dB#=T18V#IUelc*k56;{_Y zYR^(ms;vl~oPXyun4Ev{$A*X~3;^&fWA(MAwuTj9tcC|#japGGyo$e?6%nLrIgW5o z)ag&|_M5RkdC@*boy^8bOLKdaMU0FsV6pKd9UGlP9Meu%Tc^*nx5e$o8)!DZBS}i$ zLSWghxZW2U>gZ zTSbJIV6NO#mLly{lIzA&PP?~;i2C*kp+rR4nk06Yj_T!s?T4y

      eQ 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

      vRf4|I{Y}D9+Qu@?`+6O3g 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

      kUNk0qSn8%(C`YnIBu~ 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®+IX(e+%a}>8;Z5r7Ui|okY&<5iPP12$i&o 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 &LNm4cf->+?+Rf6UY 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

      N5@@V*dsztNuL z6+N>u)YlVO$b5B(J#|F=+4Z%70RQ^x@RxG;ohkcQHpVpn^6Sj$a$9?%Al{ITfZKEM zu*Z*ym4nBbDwRs`^l&kWTD|7Ajw;-j=(1*6r%D$p z)-bi>y&mElr8*`)H;W{rE-hSs0yNSa23bj?Pk7`^r4iLjZ-#pO=K0Oue2Q IQKa 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�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ⅈ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%0A(m8Elet{a{9zS`-@lV* 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

      A^(LTw9gr_<>^KPuw>H1v}rUo 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 z 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�Kna4U>$rh$xeLB!q2+$WbbH1f1U1R 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�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

      ldhY^Loe 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

      ?d4Kf|H@j}?M$1% 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

      *a_k03QGV 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
      `+{%clZ98gT0Lk7CRq6Krecb1$+!}$8Jpu0 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

      aoI&#El%5EwVGJ}~%aQX9f8j6ivNaEr$bntiv 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

      Sk}6DY%$Ww6Skry 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%0An=#v+8S65zK5L}&J2 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%0AgCs^4sh=*X)X{I>>U|zfQEb7;OQP z`zm`m(>Zm!lHS|kKKS#^GRfgr+($x|-LJ#3O)6@H2n<{hxd-lY}*Y1D&IvwJk^8d*plX^EAQ;1~YHCcilA9dUdSO?MkE!E4{}G_C$(6?BszhSxVRS`erG>m=D4JzH`ke*XqQoZgBhRTjlISH#wG61*}8Hm|JI_cwgBZGSMO4iuW%MMCUi;=FKw_T?bmj=T^E84Y=!fFy zO1-t~-X!+}|6Ou9+FF^{lIY1X-V{a=CCZ+mX6B8!vLXyMv*B5p0D#^$7Fdl%jSiY# zYr=t2V~K76e^T=mH_rTGx7W!hY(_M4p%uMU$4A)=2QKQwD zI6HPyeaSC#+v=Xa>gAzjmv%!ywVXm@xB|?@FILKO%bXu*Wg?2@Agy4Dlld z|DKTQZ{X|G6w?1bx|*U3AD?$DiBeu@1b(Lf^!Am-Pi)FW*p_MTmA5-5qgonHNO$9P zU#N(TZd%V)ZfI-~d+ObD92r|Omr3W@G@gW|7gbmtnLdn_55bsgzbRNOz+bQ5$`X7DiogYc^- zQ&Az0{9^(D-rW&xfrH&A?3D#V~33X1IfBm~Js;QxB7JWPad=lMlaD|GDE7*pAQC6n0Mj?!R5dcu@4OS&PE+Wv0o;@oa3Q8417394S z4uTQw1?K*ceJz02?gMXoR*^&$EVD4x@F}b}=CN^fnnqrBvU?%oU^y1(Qm9C^Ib})y z?V%;3Jnw|UjzgZZQB7kWMr>!<=QD<^bEyAR24W3jZLkrDIhMJWn#f~D!k@sD1ORY2tpfKM!E>NXJ4ap)0f8LrVW2;mbCHVt-)X8XJs*lW z)H?Lo<&t1JghCz$6IBhT`Q8*2Tc>;5r_j*T(h^c`pMz0N!7_c%B%}9cnNK5M&J)53 z086WxYPAHcIlEF)g^xz%qiDg&B#tCai_6C2))g74_FxRNQ&uj4q9*mZ31gF$YH;^k z+rc|?&LnE0%=29@-J1SsNM}L2A~Km>L z2(icoQAwL3PW?*QLCnUDG{HZ}TTtfJr%sk%l#kFUv~R8WI<`(`xFv&h23r<{^tn}D z`b_k%$$m*b=K@pRCewNX&oHA&-?qa1T_r9M+XpYK%dnL+N@*&m||=-u+&p6>FV zM^yGYW|%m*s}?#_)R)8Anm0z2;MrQcC#)W}-C0P5B3q7||KiY(d-OL5P{f?#uJ|a7 zBFa>tBMof?uw^9~u3}Ttr2znw9RunvPz%?S1rF7Ni^rcSY551i6n-QhVq_7YXt2li zxMSMP@5zJ{%n0YYW-Q|-!grr(u4Wu@%>D2|O>cYWTgh&e;~Dv&Di0BBw^+@4TDvol|@jjD*PyC@I=Xq%NL6WksR@RC*5N zJ`p2j7fDb>$iD-6?gQ(Q?7v-|RTNOH93)Kw!2h&ZqqQ}%Q5Xzkqj`@^sg}?WybWyx zoQA||s$;{8CIJA1OwsYU=n-Mn5?pjSqfP-@-xUEig!PuS{RBp4tWyJkxWxz{m&qjq zCP|xHykOYp!PHs3X&L~WJ>z}~>egfr$r-ibX(pJd!+V_%s?0+V%>MD%zf3!Omvry& zJHebM(4F@PGI9@;`L_a?aNJ^8$cuz^V;zIjo}(1ah&pU9qXy-+;37VZgK{Q%+bax! zH;AJ(ibKY~B8DfnC*+p~M!059z^7EelhZMet_SV9>$r;|mbAf|ifgsR$zgybZ2dJ< z#|gY>NN;_3*9`fdJ<*d@o485Z%-0PosvhL(t8;`rA77wK8!6&NP?-lVlFfTgjXO0; zZf|2xglU>T@BjE28O>a{!-=QpWojPsT?YO12>AOCYWj{DK-&E`uy&`cxBdY`S*FdY zmP?K@IlW&llOGh?Af_Dt$wyv}86i1`Yb`xmpe4j!sm|ThcO=i>AI+4U^Tm!&MqzrD z3@>K;7F(-AI2ZGkUaTwFilmzP@yGmiS&p8E;lnNhKDCa2V26+G8I&(1&`2e3_4jp< z`EudZ6tcrnhH2C#D&=thI(Gc+0GO+-A3@V5EIVloHo*j*Ap{x&tgUFnp zGIgkaRb|e=?!WA9$FD9W+mXPYMH#9;PZ5P($hBbqp}(3(2nAI>YLY)OnbqN+O+DpD zawANI|0IQP>|%za#}ENo?3vkqj*j(IU{q>UoMPd0EFmq^x_ZJ#61f0?mRl;QJ2Z*y zEzRV~V4mE;G;tb>&^~51k1Qe-rXFkJW}8y|Fu@%42upixx#SHCesEL7A$RD`BZ5n2 zJRI^m9A79g;XJGvASL;3CcKK8CDM^+z7a+A3gUF6zrX(|NFpM#`n$jN_Lk@rDpmfZ z@M%keL7-8&`ZY@XY#nCo|85zhe%eBhoY#2cftQW1+GA8akfYuPkzOwje>f*gBW?8| zcJvpt@J1vN`^1$1OrB?=LG z@?=(P9z8JYzoO$;Ed&u+a`)v!@;cp6xm-MYe&#HPMV%*T?ZTnpm!_2u4mW>hj+aRJ zCMrf~T^$=%FGivQY{8TtDWIfOkq&f@7}0WguVI$mb4$8|UGEo#$PRR)swh~_bj?iA zSF`_hHCn8Ia?q$)PJ8O?(42h|N~h3cZ+nLe4`Uv6 zjY4s)ekcLi__e!pIR^&Mv7H$e13ltG)=Dk!1$^OAC#qNF(SE%sZDhL-=6{AFukg6# z35i!O-xotG{r4;<-mjyTjVL~lR8uV`5EiDa;BRMMiaDj(R9Ep#)d&FOewd)3-5STH z8p}HSQ9YMXfy#X1a7crn`wT$4tA|c65kKkSAd8E&he!__%asl@FuRje1WE&cx%UQ# z!YO9^AAbd zM2D6J>`9<=O!^{=9~Mq!#sxi8Q-LLBBjq$AqEItR;lt3yNGs(-%j5@yW5AQQI&Q2P zfdVf^P*iL&+05Uty&_Y>P?ZHwjV>}N&vPaAUfL_XouF9Y_Ml*;#27!1O-M(UEh6@A zo&!-y!@IkCr;k}DlehXtAW(bz-^8WB@a>m|dN*gVW{~XmpeSNuF79MBE1BZyi$hoV zi@XfAOxjR<)08SL#bSggG3i)hxCBxuvbM7-TvFaPo+-0Gzqp^96`6xn78(=D0^1UJ z4_3zF75+wZ<*|ok7yeTHsB@?cHW6;L_VSgCf4b!L(i$I@6r`)(Nn6_`H&mYkOA%&` zTB9n8Q7qlP^a6v00ix+`{VFIasy;V%%Gt%_Cn{;7XXm+ec!Tf*`+|-`TjodEBY)wT z^8A*tKJHa;JJ$K_n(oVjj}}`ARWQu=o&my`U#1b)h=OIdYVXz6fSvOF(` zaTYVFT0N%tNEb|sv+em*&&t2)V+Gp;dV&uVUNg+i|8g;ysSstJ_0!kVRgFAWdfUfa zSvEX1|DSX@WETanPUbZSdZLX^mOwO8ChKsy2gMt#R zAS6v!RTwGf_Ze;Su}N@wry=F)f9GuZl^1HV#1u1IrS?VD&Fi~+ zyW$eVi{{j6v%< z&?)7uYDI5Pm@r2S>z|!`!kt(|k*S3k#cQDsRE9~=G?UOt`HW%orzR>8vm@LB)&ELWzl zlX=a-nns`PEMT^ztmkZFp5YZG!B86;hQA1a$l30b|5nJvahmzK+VUPu2Kr`n)H6 zCHl=P7tDsB@YXGo$YwAto-bqq0C>Av4#0?x)0nd?KMMWHb6hJE_-!7ly`gJsfRb9IK2qPQ)(C5($Fr zZk7?5cv#eYl_Ma!ij zPgC(ys;Sp{*_tKo#G+B~nyOBRv+R!mO2z6GhOE*#t6x!~nHVS??H})c4+HX}>A9Q_ zU=0F0Ccai<>(b;$A;t^B{rmd2*Sg;$B^R*9#74%6b~&G-ME^O}Q2t5m8fmZrRVnOaw+C01&3{kH1LAw1(VjsPHs0##9 z?#Jt=YKj)DOo{1QaSDnrN@}PE-~kWnfD6iXR_*Zcko#5=No5f&DRN6whO&P9NoJax ze)x2T+nQ9OK%8Xxk8FuOL# zI11H(HPe~dnTh%d#lc!SXqd_~GRQ2YgBlzfaZutT-BDmWBQ4EdzAsVbMPJyR_Atkh z2U;_;Xp~PU`lV(SVVcs zb1IYibK;M)b&zYN6r5$CuM!i*i4g3C;3k)k-q&e!@Ar}(lp{`0Pt;`l{Sim<(pv{qFJ?JJlCNB0&WO_}mBQ5= z`I>9&D~g5$Y)r)(VghX7RD?WwE6YMsn1V*OPmdNZyP2kd_QJ9EwwuQ?BT&pN1qXC+ z+ccv*OtxTHcqBT(!>Lu~26!h+m)njl46?%PvnNsQ90JSpEWuFyV~|wd?l^Nsb$Q%j zYU6Rl>ik#ut9i5Xl)}37BrH{G+Xub-`v0QKWomC`-myNUUQLVfkFG06I@_3M5)Lsl zG0Hzx(~;Vu```{^rL==j!A=_uG%hx0^k#_P^Wz007W) z=1I=3G5t7X`vbg%=#L^TX-N~TScXc>$cM+VWa1$tR8|MF!CdjsXmpa&>86OQz&AV| zgZqtHQy)%Nn6z!m>re<>_!Oi&&dOz{81);a%G z0zljTglWRbwvEZI$+m54vTgfRC)>80$+kJ!c1`tuxcBqkz3<+CVz0eEd#~>@Jbp9m ztCW;suX*d9WYtIV81{c-kL7b_T$>(+z*F1{eq?qF>!LNW3Td`aA2&^d-%jU`W8W*V zUye`b#AHo&$6%vg`>Q9_LC(rW%shtrh98eORb8_8ZS}ipSwm|<6orG9o|eJj^W!hK z=1;~*yQEo@v&htNaR&~uIV5*2QXm-@MP8~Am76xYWhg0Glw@BuqavxY9mJy2 zfHr$c!R&NWB^MFD|C_Y_NB{3ZzTW!Wkt9i~9fGI;)x2^|kd0*nR=;Ys-Bf56E+hZ| z0I=TZHP(`57bWRJ2$h8|sZL=Gd*eptXQ7FY9c0__X<$>6D3lxJ)s*qitUxZ?Soe!@ zDXHHQtgSfd=GIGArVct)4k~OviK)y6Gv2&@)9%da_BC9_SKFy`F)B5ICvr7C5V&Gv zz7Ho9t9C->f;he;78Nygp-GWj09|Q5y_O35KC8kY_fHYs!_Nvw0RXby`ol`~ycCot zpG@S=xLrKC{FqaAyLyiJl)|&ce@v+z3OLfpUrVOU+F3Y>qp4$ZSOg;{i+#PH=2Gtj zb0;Y>yh@$SFyh5?GMb#a&BzJ4Q(AF#zmWwyIF1?4&zOuQt9CJN%Wp9rdV!tJGv&KJ zhI4o1z>_(M3h$(#N+I z+rDP+T%w6Y~*S|$6gN#m-CCPNa)5Zm@gf8g&07V5)j-VTn% z$6V_hA|*ymCYX@A{_SChyY(({h(9;29lZGj%2=yGqVpK=7^LR0tFbbK+;onKfwDdb z5zVI@&^)nwWmH?eSix4QvdUjxc0tZCd;u?;r!(vH-2vgVM>G2-SuCrUFV|fN_m#n{ z5ZG5*p;O1du8;rk?-I~VKu;IN+&`Qi7?Oabiev$mVKgRcHsXjmjA0!0kiV8D(Cd z*C54LTJPR#Z*S+Pe0yzGaQ9-z-DzG7GXOw!1vVh}7nltY4hJ+FGcs zjW@rS5shyn^)muMq=O(yh|6|8Nvc}SlIL4^mkE~SASzcaAPOU;gjBmwht!xkBSY=c z&DIvbYzy^F8roV&Z;1<$lAa2ZJs8(6D3CV8E<~p9L80rMr>P?YmPSlEi_!j~E?f-S zc&Q=J?2M?BLkz+i#fcAO(G!j~U8E^2vRUL$s?tZmepg{T-&{nq+}J0T!yV=JF0O)4OZDKBPcC{=io8$w^- zk70Dk=YX-G3Nj59&eD1J$jH0%CZWZ3YcC3U1Ky-exndPQ^V@$n(mN6R6*PyYu#Au3 zzOTA>#_s68By`wD=Nb8|j|0}~^NiqW(Q}LbZ>3|6MBIS? zp{u}yWTSQPDHkBA;$2iAtWxDL#>TP%6P}T#M(zo(0suhlh0Pa2b8X;NmD!A_P`e(t zRFp}%CHc;d3d6I35rN^xLdl`)e2btl`dX2MkDK}#dFRGYjw!L-75XW;8Y{154KEd! zb-0eNYPqze0n6KZ-PG$NN#A4QkaE~kPOiSgHoR+{7k?2$e~HgM6#u&3F{82d>D@K; zZ^k3#XRF78MHib=M+p8;YX&i+If4B^0N~0FO{rPSDFjF^c|$$(qz*773(EjU3fokm zr1D_>trzV7Cy)aRdGQlT9`LG{uWcnr6*(p@9Bc}*D7jb9*OyGr3;f$a0m)Sz^c6t1 z`PNgNgH@yDzF-h$SueQaes_yBJnIZo|KL++A%-dnE>hkvOQ};;>g79?wdkqRXC`1D{s!#EEB*8mQ8kjJ=|O{lT0dN#)ABp+K?9)@weO~ z{M)e1FVHkYE*i>0cCEo)FD=7;QNYrL4gHhZvP%zMuTw|PMB6388&H;pI0OcH!CIu}=8WiFEpfLX-2w?D&vIIuYjyU-(cn zK?cy3tao28oEq{Wk;oA!3;#y9r=oCY8x$WQxi}U)HmMAquo;1%bEURL9n(pc@frsL zL5&j?WK!EF008V`d*7G$`l}wZe()F_MLu=Iv}KPRvz}W~R-3uh=F1-BcsaVCT6N*>>D$-RCK(D`ze^ z3IagSXYf8K*Yus&2KS<^WjXSm+Jd>&7g@~>41%fb!fy?6!d0;@GeC*cjo=NH@J#8_^;l-U2%c}tAvaIx!gbUMJrHML=V|;EN+9td^&-!F6SiG3 z*^-)r_P^5Ys|Q*{Yq#tVjk2OmxwqdgzZlt8D+mw;2-MLY%~8Dr1@Z^OeRHj_U?|a( zBU!ksYn3hwng9ThXHk)2I_zkEtnfYx4c1J$c}EXax`EFn*18K5aynTfKSDRl7R@K#v#=z!s#}a z^-GXH%k8GZv2g&9=Ktm;EAaK=-Q;9@<(kAiP%#YDXp&F75FrQMC?=bm^KC0NWTPO) z(I_(aT;^XoI-DMO;TvmPo2+8iit2+ulia2#vZ8!0e4*}6I|ge)O& z(cKaT0?<5Kzr$vzCH{jA#H$p*t)W+x1as?Yz%*^bv=NJ}R-3XQ<62)Pd4}k4 zhTv$E?ch|FR?hqyfj<zMPrBnkSbyV*xJ?8SFUbTeV*cs>+SS#Ip2;ryS1VB z*?R1^lWz@K9=Cf@E*zeg;!vEH#u`lPv)r+evjN6Ww|?9hm^*NOV3ngLyolVi7P#0OId%uso4e2@ zm$JjXg2o@R=)_itcRRM+20C9OTzTHhS>c*_W&2Z!MTvx8M@TU!{cOm};`|!MW(2E` zLT@tLadgHbaZF;iLcaap`dKw1p@1qeTzdfqye^yaadk}4$`?ea`NNQ`}{j({P zpFH~}*G%0@jDgkn`Fh1y_4HYJyW@XUNBsPh(TMnE&q6Ape#1upTptL4lb@YM9CPMQ z%Qn_3K*zK>Lgj*qzQmK*#FWz3V=A=pWXFKek-)r!0I(zeoy$>&=3vB5&LKu$PS-|) zx9_D)N%ZH}bNs!;texKBvS@r-_n4TVvly_n)aW%dTjXMQ97Eq&ALwX>Yunj?scjOW zsagTbQ9n5vV~t67A$_Drfx##`+*4q<`=g%wlQ+6Z3E07tJ_L^NZDfZO!&JV36(i-&L{#>&{_{H!=FR5 z$w9ejVe}1|ew1&$%zKh8&rT}1MM47oe=9N~ORhfhQ5vg3Fw9+8sQpR<-OF=A9SAHy zj1mEL`LTv=8#Z6qt0Dg5s_AURMY6WDDHk9)F zWEGp%{rKG+u!|B&2o>R%i7DK1m*l?#@ zU$57cx=!KLQZYs2*O1%Se+;_+hleOOU&}%kbxb{{M>jw5MU#)RuoFP+=Wk$;k0_`I z05E&H8lD<}1JR0reMh0(WO#trnm@TfY5AhoQa9 zanzBt<+bmwRt7J?DV;L>0I<+0Y?j$0UMtGPL0pH~3S^`3X z>c>H=NeYGi{r5>o5`*QM^F6NWg{+Av`zQ0vT0t_+60@N^GQ(bf^u*TaRQc6d*=7*+ z4upy;PAUQ{;i+@`713<^6RaEvNE|?xL8Pb1l?$s$(EvOHqlcudhC*cw?hl>sH>{;~ z1yPB4j&AfwSHx~AVo)}v$89@-obi0|eA)cYu%gJ^?K zz^7WLi^08>qOlSh!5yl+B{-{a%+Vs#s=XEmZyh-L$u|YsT2qK&dKB%^Yq*(GEjC2a zIq^yrT~?iVe!geK;paN9Nyg~sFAc$U%p7I{B+8W>g&`JNCG-4|sf>n<@HA450lv!p z)By|i8~grReOWb7Pt8)F&;vEpFOkl%&4F@!K2ZKZ2scs&KrgPcxKTNQFv>BX1FGC@ zAXW69bG93NX@EDtT z2D7qBw^4C0s@sPP6GB-`Os8d!Bo2V%co)Z{>41nQcd9}(+gfWQ_pN;G$3oT~ooH3& z*Nd`M$X9zpT+!!s!-v0*K@4wHI*_nZ^J}{mrD5 zkjLLCQH6zY-vvsgk%VL=r9-$q%3{!@tqRx|$oy^gXo#^4>o3a>^jixo_+O1gNJYlQ z?nO?9Ft-ae_P14&xMD1Q5VRK!-!DTE6?%Pzuu*&kHHOXR9WU6uzKx4p1GcZ)?X02V z2^UB6u$)@HN)k~|KZ6-I-6bAG^`2KNrk6f`yEFAaes%ng2LS*udfZAP1!!D3y9N!^ zjPs@_taun>f$ebc>`=@magVHTPH^9?M$r0u9g0_l@im$vAhCs7aB7)%(}ou1h{>7i zq|b=j5Eo(PxM-*sy>-dpF(A71jS5I;A+D=nQN{hV*KkIJqlrFpP;&+$Vx@IToyCwu z)v~%EWbfIujf9i0HYD;1d>RKkPyi5@3(Ew0P0V{PeNIm`YyeJ3Xoe$epr#&(T5d?2 zkIxXQ=Oq*{%0R1|f{A+c$$Ak-0;*Z{!J@}AV1FVQ>bLy_9oAef`opyf}3Syre* zVv_~tHB+{K@;x4}Xbgb0U+vEdP8E@6S*HA0Eg$M_dB~EfmbcFx??{cw8BFUxOkt&Y zNuEX}{8%J^Cp#e;{Rcx6nnGQFQ#pZkFR7|4PJk+0r6lZES@EKbVtq~aLtzCZ004kj zc?t`&A;Cr?#ir>GF4#OBmKhHF2JS1hB>J^moVBd`6L%6ew??qiBUY+CRy*3p)Y~u=bMIVP{*|)9vHkYA& zlV5e)c|LDNRE-=+qS;}hSHj_>usG-E0#h|=6wW1iT~Kv_q2Oc)X-hN9h(ym#rkMRT8X>?f@JqY%9TOZi{mlOq(_AxCazsmyHwYEE2upK$NIfgu$uZaQh|kVlL?u8=_VID}#S5PohP&=IEUpKScupZ3G7Y2R zwBsupt;4I@;R2boymcw`s1@b(lEU`RLM;XT1D4^`K~+$wQT0T1+&QRxOh33x7ofTG_xE4nYy_NO?$Oht0-Y7 z+WAJom!?BV*G=||H|Nu#mUj=j{wP)zZdUhsnM9>WGheh&n7VDBz6nXU^P6GO*n5Tb zK5NF_GL({Ret45I5BD6NPH5hbrZ1pu`x;OjJLx z(s#z>FKC6m;F89YVNMCjcI_uAW-Rl$*Zt5j-kz2wXpT?CC)xAiHmzIX6&Uy@))vez zo8uK9>QDk_!&3C-Pq>hJ(CpiNFD($<0~;ngrqi)Et}Ob^eJ0ZK6pt#-X7LiEVc{^S z6F-(lR#?tcL@Z`?X1|-p-btD)7*A%P-`5%n77j0jA*bMdxL-ruBKPYI$;PlKKnyb8 zBE9BPSNkxAw)|x>>uouflTk(bCv=*$y!d2#GpIZ5;<1~)>C)kmgYf4v#f2Yst1H%< zds|`6Q3|sE4zbS$+g&6yB$|t-4KO=;ej=;cTlT@7wyZe$SfFg(|4?Dkg?^95HZnA2icHP ztSejpFXmfx49FDBDNWb3X=4~O87DD&TgMb15u{ZI8iA3L723jiF`b17&nOyFWkZ`Hj{!1)yX5-aS=gWB?i zuEm>X5{;ycjpi;(E zX^0{*wOE^C9Tyc3GM-g|FLriHsF9baT*FQdvsASN?RLFZ*Y*UR*Lcg)dal%ohj$BP zwvxH|muYbq8t{?H1ij)ub13NdpdLuQl~orQWZ`Q96e~&$;6w9|VTffovC)JC@_Yd+ zcsES8=Uc6mlq=#->J+BN1|HQ z91OGCj6-Y(9LJQ>hteCQO=HTk&m-_g?}{;P>_< z{s$UT^pfqrcwqrIY&Pz(>-ir-2a232lhtlM9Ad+d8Kghmv2{DlY%qYr0ZJqHB^r0H z7CsCd|E8I5@&f@(4pkAuZ4Nh4iO&f=TixUmTk|tF3@y)L7up%$eWqZ?CZ@Q6iY* zOQ!s(h$YLI5o(_yU;1_X)9U7322IVnpxF&hOD^6*AC)br4+OuBU9>020x4Ulyfci-mE$!BzQAmw>` zHLJAiD}8l2i`*+ON%#?BE)9KuZhy1Y!W$Utd|#ASbN&!pi#bC7K|#rrX$^6}g*d=2 zp^)-8wAz4H?5R}{HhRnk5$Y|W0FjY~h0Vaj9NUZ+OeMXas@B-u3Fb_ZtJLr;F9D;o z$L)*KVKs#fP~4V%|Jc=yF$Km>xz)@-XnLI(ZdrEhvVIBv`$db+!KM~1^P=GISHyNu zCDuyqxc4_C5yYHgqmB&S0G>+1973DJQ!f=Wo*v=+k7}F$dwqaBaJERmhFn=^AE|%Y$=en85QtqI zlbvHSDQ!*zv>?t>X*fG+1avE<~D}bQm`?8LG zdAlq54fy^e%FD|D!m?yT-hs9QFF$F5GG0c{8SBptt>Qv)Qp?%FEpNj8uDf$IA@_Yk z3fxK!x{0Gd0`5X8}`2k2*|}Ck$oKxa|>yK8D(k9 zt(W4xVvY9lEr^;r^pGXbc#K$)w|60?acZiIByn23Vwexb)qMNSrPMZkVjN}RthNz_ z2Op%hS}O^|`K9vzQduVRXq1UyB7k^L5zLe%OdJKT`S@7oFTLY`EwQMhqGUSPE>fhpD6Jr^{NF-n_2Phaxdz!3ofy_Vn z%TwfHjZBTQ0$6*2vY=@pf+1vE2u%i$hyRdNh(Htode+O=dm}Vd;6a|{hVq5JNSv%K zx$%j&s(zN49VMQO6)S^$1h}KLLqIHz+)M0-$S;qoV5ZNY-4o8g)2jQ;y6w8j1x*w*&b z$LqKe0O08!KqkT{j;85dpr-(a1A>yA1~nbeB*+O=wK05p%)qmYaaNRj##p{3`mFSr zCzPh8L!xSysp2Z)BjzFra(YI;n+hR{huY)*p)5$WNDi&b1^xKwD1EoUB9NH+`Adm6 z>WaWA#$;~j2Tt2l;S?q`of>C&A2RFglBCAog44HYr|BI+cEZLo_IS3zvNG20 zjDiRIeIJeHi2sw?i9kSbL38e(SlX}Q#-0H5mK?V)I7|E;Jx9`Eq^s2jI*_j(3l1fl z)Fqa&N(mAJL^L$>v}neJmk9%%$Z%u1hJH!ptDZJz73Ixb0h(Su8(VWGtceQR)eO#3 z!tCn%uka34Qk-g7mP3R(3@3kjt%&7v!~TAkCl`<0tM?wUp^2C23nl43pt9NW1l?R0 zQ=XXxtHSlY!UMSD=n(eV1EKk$C(D0waDs8-;1r$$=7`J5; z2Bj@C@_I?D0Ptrge7tRVQJnW>2cds?#kvpJhnb zFTB?LnL#j2jQY#q8?D2^FyZCX>V_1A_o?)w#rZjtZ$c;~(VX0ci&hg~oA*WgUljgR zwHbwZ&*RhFxjaN}Ho}n=_+sLik6U7K6e)YP*f9mENxDM`DBRbPb9K99{D|D=R6=AY_!0?Iu1ap^cl0IC>rrVWXFuJ{FNOXv5uRP8qA|Sbq-M0Rqw# z*UR5T@_W{`k>h{ngii{Cv0#HKVEgw-tQZOC%azE=I5V*T0O>BaKm3BpI2eY+2~u=Y_Weo*OZIF!ZyZ@XH8Ws`x9#&|o?xo^Ror1bdbsVe+i^dO() z)}pY2Tqy+D1ah?YZx{w{ANjNXh>wZ|^^>jbLpbbmJlAo#Vy!IP0ZBj&pAT>Ps)!PB z;N6Myn*@KuFg{At!Imc5Q-YgAjUKEqt@tC0Zycfm!4~@k2)bOAg}HOL_UN<9X3ii; zsCJm5g|vchRb_bYM;1Impg01YeT5t`51bl90o1a2Lk;~-hKX-{aJ6yh>Tj)hw{My< zW37vFp!y03?bMKVvgvOa!I_RB>t%rV6D!`_Sf$~K^tjm4*qF!u3J7yWnI>{vd;ZQ( zlvx%uj2OQHbnR8$4uP-!tf-CU)tmp7^;HiIKst!C(80YBXiTl9M>iVSQ*OzzvCQv+ zl&ZIj3nzyF0L(TM`x&eDe$(u9Q!|b&DW8yqYV*U)eozLV1^HTARDOd*;4D%)pC=g_3};Rh6!x>SGsLb_2n)!cVwRR2$WebZxx9KLS9gE)7v( zxOK=8O*o`uIn{5OJ)eX{mI{H(^poSsdHy@((>b!zVD-Km}N#H%y3_AS$rf{TH0$SD>2iB=hWDkGbQbc9!` zs9<_wsu6taCOhucxz_M;(y6;&JjI+AyO~k zW*8LC$uwWZ@;8Iv5Apb6?%a&0{V{M|0t z%&+R>YLEm;%iPW$_Cn=;RdyU-W0qfiS<1S^Vq-fO%PU=OHP7DaM;GJh@9?S%TTSe& zOD-bweAS&E)x8Ftezw&X>HN1<4(1@$avgkvHJcJmk8XTYj0(!Kx*&Ozkz=lw4?(a3 z0GK{RuwaUnbqsa}L{?1;S9m4lj8YGZ{SqKq^$`|_byEMKNpg6Th@`+3mnKz~;@pv1 zpL9e)cvw7b5uT-4myw=8l$JtFP7xc@64GF|xynZs##h|?w`0jJgcRfJR`V%Du$ zDp%t#lpw|4hq`YGn*31aj!d3IFJEAkeRGSX1aouH^ff}T;o>j4LK*=e^fL+pkmb2S zSk>%l_eLZ6hFP^1FctC&5jY0 zrQp){#?GJt7_dl@L`>82b{R9(pE3wZUb~;f?NR5V<0!OUp;yey3Mc&daf1a@V+L7< z{L8b1#wxu{g(Di^a#fe`9T;jr-2=+t(xM6nYG(P1;^1<1r)r04i-13mz4jVeu6D=`LEFjoR#Q!K}`)N~d?jd~jn|Ev}_$V^h(XY;X^UAJbU>yQPO!nT8hq-OvX(MHr?gBrZSrNR5w+!qEkAc_L=snzYf-hgw$`Zw z>gW5UnRv_l>Z;QH>E51|ef@qKgmlS0Qj=^EzqPTxes|W^luP#h)vaFp`8;(f3>o3u zEUWylf2N1v{|5yhR9mcNA*(kg$k9U?hs~me6pekhgmza11fSy|V3ro({Jdi{gFprtW zJ(DL{IFY?1gJLikWhb%#YD?sorkh>tlr8ur7!>R*tBkCks||ZeU-1(uh2<3_-h!L@ zdoq4Mut-_32bBg(V8_WE98S|4Opc>{X~7m&gdr`zrn{v^qVcvBE4UQ_mgKHd-!>_D zz>{-K#xq1hVt2XD*7`b8|8YwN(=G%MR(1U3f`&c8*?WbH^c=E~qMMkf(3j>dfizEo z%npcw${ttSa8XUBk^ZwdT(`6^dyrHuSph?lT*)`wvU@)L3)@clx!vTFg{OG{8V;TT#5g+D;rgvuzC~JiD5w7d|JuR$y^k zWKh_gN(<^YzJxNNf)PBdO*%Q~--YyZcq^ueq0uG=%CALbzhfM2I6h?Z!aTs7DPl5+iA2qBP_|hO3+PT~EBnhO zy+#=ezz4{M3RD}a(T;O7O~ z=-1?6HU1Dvpxl2>xj;+pETAA-Vyw))G37jJRDsn6^HV<)iydNUIxGNE{Uep!``AsN zDu{zAr-s720vr7uxhiem-9#%BsTl5_9_g50vG^Mz;2XrR&QRkYfuyk-hge{)6X4@K zQIYEMa>8}!EL{ofL7LUc?3|7Lpfcw{N>Rx0k{b;L(z|p1jn1~&pS!~TOV|8cmX5W` zR5BdYn98DKM9EO9lSgi)vg^CBF|KX0Y@zFMAT|I1T>Fm869QDWOc%z~S9b_l*7I}b zWlDBID9=z5B{ZT3)l!AXn4i(T^1^!w>M=K%FbV9E-JMM%E-qN^kt_-X zKM{D?R72_7oHvZym!B=Ln3%fLSlT+qW;gv0TZcn#i?sCg`xS4_#FOAPuakS{ni=p( zVzGjyFgl6|C-{ic0CZ?U|2-%2)EV=3MIyLSposnWZG3_lLp`Hz!Dp~A&7mv^D|31F z?^u*hCA@gh@ly6UJe0|!?u6QRsJ$PBon15orUu4)+|!E|41#KXrTdkAOZGca5q*sa ztFH9z>>_BeGSv)GQ3a~9w(PaBKrM9deuKauYCUNsAtoRCIJ(YmEl-X|Gfn(d2;%sL z!MF&#h+q9??C1#9A_Gf^#0U)Cr*O0AxS3QNNQD)ODqWDx31&o2ix3~;xLhI#5>|_5VGR3|X$>!x$u| zRomTWGYflWdX)v^O%jqpQ>so%ntW=-vEw9)aP zV0AOKOq`&yi{B9OR)QH+=Y27v-vSG>WW>V8vqp(2K>8h1IzU|tWwX1#TtA8ZGrfIo za-1C_FP0&WWw+>ACd=N8FuZ#FdMdb0TG6{=W=Q*YATW9;xhwz`CM)ZZZ|*Q5hWHsv zQCM-}weds>DWI~CkzR~qS&cna-uChnHL{6&QJGo4bhKGayx-ZHG#ePPHyBvw5|(zd zr7y#u#unp8UPXVbFC~1=G_%EL^4yVmqehN1EHmnZc6z~zT+D&M#y*Ik_1l~@am`UB z_=F=i$*KPkUU#+3m1(n&-jTai6fH;KIxD?nzIcx4I_{`2QdYXxFop7{^O_Vo^-7v1 zDwXCeWb<5u8kfAGu55in`NF1k6o_i?(IlxNAFg?UZbH%UWh9CP%a;E3 z$kzg9`dlTFL|iJg`}CfHLE0}1P~yEQAfY06dYzl-05%pFIoK_OI_Rxj^sGmsxkqozsh4Sc6Q9m z!EAMxlg|aO004Tn_M|Z{49%&6{q6MpU_b=q1-axo>2MMUIwX^M4XH(c3gd{ysu;`A zAA^^~IB&d=z&qv~<=Y%m(OqU2VaO>c;a`L*n`!gTi51Nbcm{51?w6Bh^{0nC*VE3n zeEJ<|&rTGEu8UG&Fwm!m)7UNcV|0>y&iyet?D)QM=jkV!<&pF2D2}mOT^Xv2b8?9G zhPOT(06-$wgC#qP3KzwjlLb#jsapp5d)<3_!2R?{f5g%}aA*;L}=;y=lQ2oX)Me+lnRyF zDi$7|MvAG4&7Ovsc3o7CR5G5D#{N|%5sHr04G1r+0gPH+EnVvWpt_|ddn8Cb4-;f{ zN?IO|vLTqG)h={-e@U9eG}5t|lc*L%$AYiSkwE5G+**jGR(8!APR0yM2fO}zRef^u zmu}ONCzGaFqZ7ns(~9IoZ7VXdfX^W+RxZ_Q)+}-K7E?KR{PB{nH~cH5Yr@o^Pun=VCUU{KNTKnU*a85pKHov zQj;duqQmUT+2B@X)Bcuaq$_%W(3d~@_zhl^6Has;-Ph3GRdIFCwKj3m!{zo2<|USV zb^qm^Es}=RQArx2`L?rnUa{I#eHz{6F!2!+%n56+dwm_TW_5gcTz8>Y`?=1bxG0s2 z+t%-+yuXa*|r!zNlUDE?l-?6Sw1eOf!@?^3;F9-ktrrYpbRZLrzW4|vM zxMSss)_+nMUhjtS!9na@Na`jQ8CpkREw3T%xmg%prBI5I4Xo5{;TPrA^r@@En(-Nr6vHYRZ94 z+n;*%kyh>r8Zn*6R^+y0WwW~Uo(;xBgG7{af!~?W^NQt7{R4X_Y2y;n4zcL-gXd*4 zHT!+~-Em}N@Thq>DFWR_=`L>-c z$Y{d~zx8$Zx|VlMGL)}ge`k|{!djLEMfpLS{qIb|myP4*ux$&KT4OnTayk`lT1VrL z1d5xYj0(-|1}DQl@$?;=5sW3!Fa~)fPQ>y0Ju%E@ z9ivpnQ0`~HIR1K&002BGM%g01wJrAAr%LAovAa9|q$enyRezo$sBmf|=l;gYq%4aY zdlFg7qL$Y1ZfK;0N!o@03?`>=#g^Zoj#cQa=~5R>!1TQ(nvb&!MQ6+%8{WCl_G+g? z9Rresw+b7=;j;ZrPG#>HH)SSoh3<@T7Y*D1q-sGJ)wO7Jn5DyD0J^fwG#HtRB zw%Riua+tpS70J%aKi;E*RDUW&MVE&ZZfKgGy|xEmP3{{8B>g1;0GMtgApq4@vRqDD z_XYu4AO^fQDVgt0-b_cD#CyNsdPFQL!3d2}Q}>w$$M2a!M^-WDA|E-eIRf3ettRGC z8sCtfnyjW)MsN(gf9EbIgZgr9D=^IKHr$Ek5m!2hOB6>~OY=6pP=Cy(y+xgWdFP*T zPk1P}{Ie?7oQ!KP!g_$cR_*xg^cvo7t=|qlrewFpRrQiaF}$k~O`Y0J>m*8(>(mj) z=T2fk@9o3o^CL|t@8ayjRXRo^^!eManu4FV=rkQSfRG$dJkvh2z#6Vm$T;VcKx3tD z3;SK`9c058_BnfsyP3c15aH~Bl(V`IKHRW9;nyZqkV*kVQS@leH<3y)J^R;&l34e~ zj%vDdyYj$5&zWU^^u#wXBi$BLHV?fcTRSWv!Ik{`OKzaYTu8#VQw^)qP#01&!OAb(#lDRrtjd6rHJHd7bH z9?`^D8tEaupsV~)BIxCY9S_nNyu0vVjm+c@DK!Vv1>aWK3W;IjF;*K++fKwVnLQCg z#x}uWJkF(zGdwsPL{ZrUrTqJoDJqeipwMzQ-JyNRdtT#45@Y|d1qXgq)_5<_v0T1b zXMaekp&)cGQ$Exawt=}4rE1809P>;ytdk9b6%KNZv=OfxSY3+4FOsb%ZACTF)9PA!W``_T3y7}x4-VdmTK%u%}6K~ad}8>1xJt~WC>X5fA_2ZX&;aehV-@ZfgJT2 z^zTr{$HS200wPe9L3dIClZW#oxx}U6}h2>8Q z6EP93DdjCU+^h+1%OfY}e$;wr$%@o@|>l z*)`eq{BX{>uIKYT=bw08_geQ_>#dJIBA%@nkSe-%mPxtLE~?gDAjq~_?-6}%N~yea zXt#IzW-06+sq=t}lZ5@J-G;i2Sz%Q1{G-g`pD0@Wgq+}$^Vevr(I;Og7oE|QPNng@+S@Z``fteWZqu9{vu52A79e6ka%gDL8f3M5u#RAh`e}HfT7e3?Gn*$ zgrjKhR#`0rvtzC8Pj?RoT@8))o1DlXImid%@f<#b<8S&ZOd6RMvQvkB=hCql$UAM- z7D+E>%Tz*w$(qK8azvCrYwWNZ60i<*pv*aO7%fF19et^4qsN%)NkX*Slv_YUlFmG0 zB*C({GRb$Wl~|6oX6&q+5~GqsBy2ni+Ft6XN0LbTp|Fh!QaZdlNX8vCRlka|X1*>& zn!TEfO73Xe2MG*G%z3T*G4y}BhR7T>-0gv(yABht*43WZjZQ33&6Thzjv_w|Q6RHx z8?5k!D92)fMNESt3{AQ|Y zD#85Z(2PB15W82)j4P^j3c5=*Q7z)jrVQ2D9j;X4eKR)?vs4o5$(7zmrY4iA%-c5@ zKB&5NpZjrMf+eZVpbU3+leLpdgQQJMAAU`HRqxA;{ zu4FL3698IZAjz}_lGKUBa=u6L-bZuj#NMPyYuktKJn|OnTcReXBoKuSo?%vO5)5sS9lgo@3pKEBf$u*$^OK6QVv&)XEYSd(tIlj@PgJ6*A2>?72#5 z5a#2cQC9YMBqvM8>!Te%mD@90B(UIzdcq{cxH+8+fWHIY$L}d>uhpd49Vi(ONq1;2TIx-d7ukH zV_#XNulGxAI)`VNuhq+ItIpQo{9(x|fp7QqzcRdb+L-^@hk!lMveHw%kZ4Gl)OeH6Lz1@1&oZ}Kt)Fg#=FaZVGN8`vu z^+d?wpxDk}#nD#A?lT^f+;u+^gQm!4H3_;nD0H^tCWS}wJo1$K-bd%JaaDNX?g*3V zDCgO>0KEGmZ}m6If_Zs@l7TxtP)p>F%2JD+xylZfR@ap~(Ou2hVJ~6$&4bZXKVJm^ zfagOA2j5p)!#$vP{Hd~5K27F(*6>}MYZ;k#c;r{e5CR)d6Zpm0!B(Q|(&AEOf+%n%bP`#aE;#IXGT`}odR;r{R~40TmCgNJ zBK07-CF_~?i>;;K{Y&hL-lG;MXS6Z24>ED7gv0;=)pF-d_)kki!>PKnmkn_>WnE!r zo~?|Ikfmds25$0swE=a8dxlU=xbOyZRit!%M_c%nT>{BC^L!f2QFJ@?V_y#3@H|aO z6_G>CMFXaB7ecu3C2B-YRbyOVtXWC})>XWNF~2@{0m~RRKjof5NmUSJ7fI%ImX&>M zUjc_Tb?;#6s8)^rvq!j)_s&Li2_%dAj%qU5%{1@F+tG*9S7x}$lp6Wp8Pl(tNnJWS z5I~eHq#!^hZFDN}LW$&8N>hBh*K@%CvAbjr)+ItFX^4!@<^b9N|O zglAa;0LVQ=Bx$rzN=z>=ZV!U!zlwn$EYwcyPktMpYVxSu`m|2T?j~|3s0#eVXZJQk zwok(iVUL z>Vh2RewbidtK8aOHG_c!eHOu2=EgZ&GcYoxC?%ljc;zKVE?>8Q06^}U)hT17D|(qT zkrfTygUG^*0tb<=rCv8o_QGyTVH|%nE0kcQK7G=7G4Ln4Ps1+<5|4Vfl&;I3GE&8A ziExQJdMmvSMO0dcNX5fg%6H1$FZpg<7`P=!cbj)Lz z6Imw@Q6gl!`K1VJW5BTw_RF#>xbXkfmbl@=p3eybEhq0oB!#xJrdw^=voE@ur_Wxy zo;10b4F;Q)H~eWJy+GovtiFjE4mG5y_9g>Df>)_bP)nYzYo)>u1_z-)VcV z2B|kUap}N{2T%TuB>3LXoya9mgn!4Kdk{U$gEC50_ldNMakJuV8cp?CK0}K}){q(D zjSg)bl_=gY9Z*a12Bb6un&l>Ab-Sx~1$)ey%TT1YuKZwuP%uWb%090p(5=My*0AO{i z@Bp;aH6r;F4g=OY5kMl8CIA!ClN9>W9y#VxlS0f2A5~5v{6zT%o6?n`=D`OiCI__` zLv-)7jyK$XHJ!XEW$J;!-*)CnI}-Hb@mGeSfGfL=j8?*}aN4yO;?V~X(x%W2sYHqpmG{8!-1#8|>SW>{oyS!G03NSO)r&{d{au)ThL@}2 zAf>dShc>jNC*$LsZI5Dhfc7`(cWO}r{=|!gwk*ZkdFWT`JDmgCicuLn?|5mxhL2%_ z4*SclcU%UW*&lCa*bg1)-UyYV-xHUh3m%ar>LnzJbz*LUQ8G;1TlrM27uTvXss%J+ zT&k17mpGq6VI902F2|f9X2BIpXGun(Rb&gZmNn zt9PIY`6abGTrGmhS-q23u%u#f^>Ei!R0J^Ao5W4^r~tod9D^|@I?@lwxTLy5oVnENZ{sQuZ;MW87x9BNh- z3z*(Ck8@Bpq` zV3a)!SL-$iFY>5!L{4rERjI|y=y1#3n>E&-l34~eN&0F^+zZi1-Z+)AP+cnb&Xx*Y ztlKT%zJ0k;x=zBaX4fw~tHl#O>ZNN9FFn|5_1Bq|=o+b(-F?K;DV1(Z3k(sLEzYVz znFOzp2sXayl&>jtmOW&l0sxSPtcY9%A`%eJ`mhIc=c zl<{ka!@6#09Au8v|1!w5U$}VRFtp;2&BUrk_&1}YLy7tCYJLmHXh)|-pUpdMuw-7Z zSL-+B9KBw5 zySQ(mAROo(R&goA)8YB(MhQ4l#dIvqBWZ5^Ah456AvApFdU4H$lHZ4VZufHOF=vGj zdzOApNF=XcL3kVSGR?ZjnA>vXFSb#nLat0lphB&=(n9)a;^AYW^<%b`^WnX%xgqTa z`cLHbMWD=q{i1TS#~{%W%#tD~{bNFLaNF8bidW|)zk_f}Apc{o`9A9x2AxUi==M7b z+0fh^9rIGU1Q&@Rg2z5B*<8(b?MMt4Q8W!k#J{wTT7HCs#Xm*WrHqqVU=y*ZB3Pri zC9;I<8PyCie)nqp%rMFTd6jZ#p%I1?hVb>MU;3AR%a5xHDu}`~C&yVPXp7#oK)w*H zkF4EUgT2$w}tl$6r zmNPe4??Ps32%6Nx0v~2!=@gsTk@W`YGBL!ar&*%|0FdoPkj6c;w%s+HSWXIZ1n#vLpfL50KLNJwtKQ81ECIm@<*Giev?C&fV0Z|!gW%J>yn-$@ZxD$tuK z^;sA^%wW+bhSbvt+Gdsk0GLnyQ6hS`Y1r9Z<glXfE9@>#7`ZDZ@%iDsgEA zc2ef%1*PUJnz_7-Rm3RVp-1~hR8=o`wq)LVp0?SyPe*yb!Ge0b3}e5_qq8+?XoMtf ztI1hW*3sJ?S1?VGbVd?l!dcH~-K&9Q#Z`};1(kN;9Q;`KG32Q2ttLLonn$a%$K^SQDw<5mvKc~&L8rC(Y0rg4+0AuqMec6#< zZ1n-w0;|B@W&=n0-sOd9;&riyXy%48Cl06dY{gMBEe5NN7A8+tMG6URl=k_Ukd6!M zJSPM5Sl&PKLQzlB^!+kT)4vMHfM!?MmyEG#HEUpWGQr*Z%Rp^?R$aG|c1ugA#C3v* z!x4TXvGPWxaMnr&;0hNdRO!!A`jDYL(M*DxlY3ZS$9}T^gx!A)8V>pCZSb9Pn#9Tb zh=Y&(F?aoJj!Raf*cq(sv5p-!v%jQrFH=6?7uNwsoWNjyhz!RSN$FtBo~{@8ZS-aPjKq zuAi7%>(?eXQugJ0*ER)@g?*pL<;J$Iiwo#ie(}%W z1leG}MsIlmWM=;c5yB2@mGbB-9Aay*z}=-_(1$eMK07m9zfGN*4aC2Vxv3iU2F=P; zpAbZzihT?DU&p73Ps7$!+)p|yj%~XmpHJS$=crgYiNfbnY>6K8={^YOwL6!Bb|W!A zbI<`8wA-Zj4K6>dhrlvEHy-o2^RXBhZ&J?=$K~T!-*O4^m6gprPqX@;g~19CieFdQ^X>(Pw)ga(#o{8T_r zT^lZhD>K=!&R@1&$&73!}#j7 z10b-k=}-nZ>lm3T_xp4IaZG4J_xpyGS%g*0g{Sk;Jq;GEklKR?g0Ll}{q(n)l$=eL z^V?$2md?+wHgk#_qd=fjVjoqho^n0Yk-NASvnRidV_HR{1eZMWs`afELEy*`4K0kN zA+7xx5d#UH;XG#KK7sg+-`keB8!w0V=|H-Ew;NLvTl%NVjG3c6vuS0GVH785Sl zzTl8m`!!DFJ>S`|B}_(y^iwCq`(ARx#px~PrhTA8q+?_qVj_+#2}P<9rlz2fX$55W zw?IOe#LGUWaef#Tw1CX$KdY3WP170^{6K`8;|7#S0>Tm(uO;lVE2hTiW)#D!{Cbha zmn-c?*)yT}Ol%LlvIR~+Z9Eg>K(Wa&_^zs zA+}?SiBbecNNp3iz8N&Si=?1aV++c)W7gmXNt+C{E;}VLmbpI5?lCzaHhZ*T7)f?1 zb??La-M{d=hqr=d(3mD4>(tZ>e^0Zy-p?u6<_pC==+_9{5f2#x*ZyE`Yi!MWA8Hio z!or=^$p3k|FZ=pNzh}^f_8*~O|wCpctM^xzl=IYk=d@y=RX|$LcZI0^bd}V zW=m3J$*tR&c8}~vzU_0GNO5eUAKRL!OtwEX-JFklRmJ@mREAea3@ZEV{5KupmeeM@ z+C5d@yh4*#e~}iKD~94HN|5>L=^Spls(5xr32Cm`0YsRccYegP|DB0!G9ZU(Xp(3} zJSeUFtP{=)_=ipf*`(nPi$Ec3b1YkMGr+ATV~mU#17+8A(Pv{d#wy%mA8P8th(Wr1 zKMgs6v?_}wl*Ur>gZIKItt##E`+0k4m!ztO=$RslZQ`lWZShsdNLr!+YsYg4jDC{pJ#26O_5HM!BU{F7!`{CnR{q$p zD^NkgV%?TeNt8{buY8~ey_@{wzf z%lY3PebyyiqW7m*r#DXHr4YBim7SPon-yGLW7PmAA@Q%pq1h*(en>w=s&L`J-4e%{ zbH)|dK}QBe_z`M3XOP?l5zHtGC~T$!pWu%>VzNf`)#smX$nfROpzFH}r|6$bDsdu1 zSUQQc#`rH!S&S?|QLDHmC)9J^na69_vJ+4`F;3pVd{)M$}_p{cCKU}cmsx>6J8XtVEsVcfx z`TOWh$SHn#5kE?L8y|jZS6SfJNii|^v)f^m3HdJl}2{<@~1lEgw0NC ziGfFjzt(ONXoL$3P69e?%0uhAiO>L$Fh(%da-8*+9srMJthj~AB26Bg9l{jufl{8G z2s1(rCY>fYMAz!^lvTUPqZ@E_5k}=H-_vg#+;3jVIT}OpQjJZ14@#!o4+VB~F4a42 ztb6OBMl$_~P<&pYqEW^8QAq@j%uTh7>U!TSeq^NRalxfTY09UJ(sPNiQ*f85hIxDg z5#ns3-hTHx4`c|3Z6Ulp_xsb;fP@uYxgg%-W~Du{W#eT+Gcd57p3DZfk8T$oH8tXl zLbg2U@jK3~l~Vhj!_DPVj}!!Ud+Q+|HxS({DGf0 z0S3b=wc%Oq*F5TlT30m2Z!gg@Sn_|sPlr^<-A>1pU?GtjlnyhHOQ~_%nE_amv;MH0 zakBy-xbH6|Rm5?V9+WDf5+$}FAFbvXMw%&9`VyrLIo#$e4Lh6B4yZc?T-`GkmkHvw z{ZASb)~oUsk_Jl-P34R$DI6NA>#oYa!2R;r97Y$qO5%Uw6C+AdKJj{B2pvgFrAe*9 zV;F)r0IL%8tvITUQ8udheSR#(g@?ebJKb!q2ak`V<(QV6Rum}uvc(IP|7SxJ^&rY> zod`|rUu?7>%*MEl0UBbmyQNWYBoN9uvpcN0ae0gw?1T-lxD?mH9Hf`UZ&*M- zxOEd$mFmyF564R6pVb$M03fe*toXb0LMFU*BDLeQYmV7d1KpNTk~_S3>)D$Tm&P*f zsrY>OC?Sj5F4mOzwV5rw^bQh(7NO2{&`h<74U<@@Ti3LP*AilY-t$M#?6NL;d%w_6 zp>@9M9^iDZ?CXDi@?sBZ_wuN=+dlB{3<4YBcvSkdcrez_mz6$+`Q)&mXvp1a_!HB2 zWGa6Ni)27GqN_yf+@Tw!o{52zYZ8Jd7%5XIlp0BygJu}Wx^%M?yk@<_YAQRlHZASm!?S75s>Y;-Z!a1%i zTJU#gorQycc`fr4TbX1rfVg#V{ewf4X__Ny;}`^Y7YdQ_2m?v)B~B$U=$V-i-USJ$ zH-QRNqSI6|0hTviHLvRKmXYEJKclq|Dfbgv_mQCww<)xcHt|YIb?jG6D@X(bl%%wV zaL_;+v8>kr{<4L*h^%QNEfMA-LfIA;P&=1)nT1GTY%1h#Muve1Q@kXAJ=8uOs1!DX?HLN;zAtmb~1G%oUocaF7vd zWksnR81T%>Owozts=f; zdQ?@csFc40pWhv;GtzUAPb)R++AktnO*zH&eBYMY<*k{mP2-I2? z92&-GDwT$-oO)LQ0GLhQ3SfGe5usI7iv_O-T<}XOAP2caI|5Vg&F3s?8HL2CmJ7rC z>R|eRXV{gFNyx)bVl+}lF3Q_asI+0rqfHE@AcH95PejCn|8`YBbDlF(JO#>34W=Dtbz zrS5s2&|#o*qTN_WKB*X8(^PasRK%L-8j^7&B75R=U)mrDR;?HUb|dFIRccDB>TQuz z;|L9(B90X;qRwX|hesVM9nMzY275z-8$Vmzi>JVua}BROVr;L!<*%ae*}9iwm`^CH z1Bht5Umf4BFNGWK)pT1H8CCmvBQ0`@DISRv#j2LjJK`@{gMO4&bujCuq@z6Kut2lc zN{y5*{BEaM6spGzV19triFDKF;W{?DxD344#C$Z-4M8hgs0l1trsG`XsGL0TrOq_v z>UAmcrX=9db}YIw0=kf1>Mr*Z*?(GAM>}D^SFi$++4$JzZ@$d5 z!EB^0{UcVFm1mJqfoNtNN2^h7&o^-a3q4zU}V7NZN<7 z=7t9$G05IJPBdUadmYPp=%CVlmUW$NY2qqol zj06|9=TPA4vCyg=9SSEa1zbEhFye!Afe#tPfj?>%B1g(DP_-N^UQjbF;W;nr-o=nR zn=!3u1Fiu8=sVkMLi!^fa(nj1S^HmXWKsp6i;&LpLR)2HD|US`7Jd1Z3uzRv6;QO4 zDFV2t%h_)Vey;;x!d9wvv`Xn0+hUJf=$ct)88=4O(AZ4QE3CrgBQC@eFBiW+?r~@` zaan2hEM4-A-*)0A1zZU7jxaYKt8!&Yt$3^ZB6TXNbN{sJR_!yLxa#0PHaWihklTOX zCEFzkh?HuoMak5GQfY|eNRtQCWU7Z3LWgLNFX~H$tdE96pWlO@kay8j6sagAMf-zx zKbk^=bVkBQ+ga0udqT3hZogRMu+TWFMZYC$VsPz3ns_Eup`kNykus!e+?_ZI9w;nk zuSN~q-w}jD((y4a?Sw%!RT8f4?+1~!#tX;9|6sJQ?aF)PDeA(bQ}57IxhSldW(Xz< z762Fs5NU*@PpHjL`UQPQU^kk8{WmF|f-(V-XrZZLl5s2FRuX+P*K7)%Ely^ess>|J zozFCwhKRr@Dk&RE2!q>}INYtS-{N*p8~jVIlC!lq&9?UB&{pHdrIh|6r4F~_JdR}^ zXnP-bWm5Z0WKxTM<|k&P(Z!VNQ8)L?9Pr$!vdeAf$X!*?1XTm z)R}B!!-y~d0KJbZZO%}ONv8A(z14-GO7>HuWAhV-X`w}Jhdw7Y9+TST+nS4_fu_1`ewv8Yhf;xwD}EC*P~uI8)q z_B&F&hby$Iulytv|Bo;UNDEAX4SqTmpQVJkmY8{mZS8S9u4zUc2D2&=01l6>4RjDy zo@0J{pb>BkBIF;2m;j3C(vM-=fzYFJcZH1)&s1g(*v8y$yt3$7;%{B%ctQ z=t2%%ZX(`{AW<853MSWo05x6kr4Lq-v@^G7>FKar^A9o8_SToYaBo9rk|U@8loMFXE@6h}0gI$KCty zPjBfM(+qX@c5;8F6te%6)6Zky6S$m8nk}1&BBu(^b8s!uK*41e(#p}M^IcGq?49wZ zK*lo2C4w(!+!ssSO;kAE5jbhQ9yH&6IRwrPIY`i=GO2ps1=AAKszq59_xh8-e&~d4 zC%eHO`>gakW7|J{O`L@*jqaRZ{P8l>Q2f0R`$bLt8J}C@A7*`n*34&+TeaQPd-ZJF zJ?W|dN4!qHD1qFE!eftxWWk^a0K3h67fr%F z9Fwvs@A{^8fL+E&ia7_KaMk33jR6WtkOGPpbJ3n!*X6#&$GV`Z)(y;Zk&4P3t6=7!Xq$mA~=JK37+uG1`Gqptp9ugpdHI?a6uBj3RBZ znA-jM<+|d_r&t42vj7*D{jJ(3FEn7EzS!NvAIEAKR5wF__rq27g4gm<`>zxe8@{x; z+AZguvkACJW+Ro+Tw2#xj2dpSAykrQG64}Ne<*>btyqQ6s|!rS2L4DEe&t6DsqpDZ zGs%PqO!O?I^0Npw>}9q}e6&u!L-Np#uEru!dC$H+qH|A;E!&Io$M_U}9lS$nd%P6U zwth&)dX$|DzV?zLu{wQYfojRlJ8DE;(C|%0ZChb0Qp(F}h%WtQns^?+YodIn-qI~X;h8~b_t7&o@_)r5ax+l= zyYbwp^rwegYAQ#wgge zTTTy!Oee6S&kl$Xxvj6xDsvjExTPGA!lp&}ey+%>nf*My8emNL!#*Tc?C+AZ2LYp# zF)t8<<5yCd7W@@lQ;)bi!><~r{XNyJy3*psp8}4}We-K(RD1Lj$a#tBM33706>DHK@GM&0nQepcJ%IL~C?G zgu_TWkSV#a@G{D6dH*J|mT;_7;mUUVY6$|mK)T8H?*_|0I#gAcP{H!bRukjqzy#Ab z1XZVhh-`cm&AI&pV$+5_8&Ke!y01??CN{zL{Qb*5poW)+r_KN@`SHKwH8=R{%Xc1O znxERe;tvRp{?Z44|B1_?9$165vyqt^VyDjb&0!WWCH0K$y4wcG3eOeO(~JQC;@ox- z4(?=W(h0l{bt9ReRlBJkM5Cotc0`p1^~vF%WJ=WZ_NQ(cpm9TFD`uou%x@G}jsaWG zK+2P4uNE8cp<*z<-YMm=-+;;1g#GCxceoZ|=GL$(`Yby~f-tMc5BcauB9v$V0MUPC>6K*eAmG5!jGoYJ;l5Wz z?AA;oa0FA9Lo3-b2=iT(ELp*g6;USCZ78@vj(!=kF!nbxMb@{a+lx$V)zzD?%L#r# zW>M;2 zA6?V-nplHDcB`N)JCqZp#1jj3$`b*!q##FZX6e;KyS%l~PdkNKgo33wL+~-)G5NZy z(HPUNi>jiTf1H_e#fLzJZ{6&QMz^kV?m{W6EG)Zc2Q=$y6vHUy$8X>BY3kz=`uGT8Cr#`a6dNsE zH)K1sMI=>!Hym8JLf~j%5)@#z6pt+IG&Q~q?6fEnVdhW$_Pi<{v#D+!n%6X|V`F!2 z;ko1b60i%ZVzlm`86#fRe*MNZ30q?QMNl3dWW8A-M2a)Y{<$CFN5>z9TWlC!nkrnHIAHpOY`7R$65I$V!9N<6Nc`LJ;>IZtc z_qqG6qD!k>_-`n(H@wEzd!7_82NHepkVq3N{+%y72rm1AiWc;zd2QB`Vs`< z_^M-8YrVz;H*$m)foW?30GOHso^ql6f}*l+u*Dc;Z8f}0yWMJdB8veohi+uUr+wEM z$cR}3%mct`8xU%6;UEYIW{7{8BzfHO7fm*RA;r#i-+sr+$r$Zyf}xkr9-=mFad#g? zu?iw^X4x?EAF*8H;A!sJ&d4D^L7#8$LHla@L54t$(Xmg6@i?6S!)zrSLnMFyMJp3rEF}+lr_3ZjMxG(A6A5mPk08Jpe5AdedQ{@r6>2s z5E{)XG0D)f7w#5IHEFrA5B+sMuYKB+x6myZT*rC>Hb z7>vV+6m`Nutk+b82`bN9l@e%+J2Dy0Xt|qsu__2Jy^xMG84+ys*c3b~CuL*3C_?Wky*!T(?X#0SZ4BYpuC{#)ufr=aa4N(r8o9> z(=utqKm7Zo2Nf{N`B48{&)d)4<=#m$cnbnEWCLkj5&&Z(|H9#xN~S^}XrclN^6oI? zA0{Ods;5`nD6^L=$RgZ~s;ow{{s7KHyhYJZYiDA4k&*|NH^1oJU^;>`!4TfdivGw7 ziBJyV*cySQd8R@k2Bty5u>@!^>T*?ArY$0;ciOe@aU%v4D@&mjT`O^8ADfOoxsx-^ zu@UkN;?B`3T9(KR1pt7+HjOc!9e3*=H^BsH@`s>6EU#5X^n(i6+1+O!!TlGd-np)&@)Rx!#s+bhS8##6!*R*c(l znlfb5nE5N(A;x^jiM3f%91r}y8CvKfF4RSzE!9c zzH*`+2zg%|WZHQ9$?#27<+1umv`|m!4mOEinzu7fy8rEwLML{bm&32kc&PT^$WC^V z+`$Q%@GZULQpqA0s%w@K#?RQ|Xb{gdU|Qb-v}8k!s~px$l|mvfr64F=zmFfE<;9zx zg5HQ>NrT(uor0u!!57~JpQ^X-KN~i7d_g3bDZAOTBk9LtU17~gxw})jQ%rNr!{z;^ zpjY&g-54cIvcsJ)wteZ?d9ltKLZ6ZFlujUOu>AXf{XP_EZDhlKOG-F@69)%ZsJc7a zSvF!vaWP#g+!xIQ0LVT0T)!*HV5?R(+zteA+E(zF_MJV9L;90x)gCv+#aO8~(Nw}! zH~hEhAaZB>Fo8e<11gdj@N0UjbTYoz<|?%&U2K4aE}CpzBoc(;ufLq!{Bnt07zQ{uJN-?F0YEW{ZyeutN+n`-;;<*@NqQqi2XaPoVJBf;2cV`p^-9szr2 zwPFSU0Hof<3Gg832i-hS>XDoJ7=mu1L7dpGZU~96oDiulYmS14Lf*ufbLO8Fb$UpJ zTy0^n(+7m{4o9g1H*aoEd`Oy1I}k z=Nx&bQvkKCORHnMs+r`a2=)3bZ*W$Y?sa@8v9nh0`wXVMQP`xgGaFW$gnlT>*MJUw z_@`uIz_tv+D?D{}x&0r_=>}*3>Oq0UM&_whP=XDEIGC~%)Sqo-*{~MHU3-aqACC?I zAoX+?(aM<^`%~m@Pe97%G!(7H-+W^!iHN~vokQgYc{7^=&Y8k?E1dHz7;&~KDhSHV zSmcjJ|<5`&&_Qw3$YWp)Ur@waWz`E!tyFG_iTR*z27?N~a#? zP6;KumK3(H)wUfCvZz<8jxVXqI5SrbX!yz~Y(mW$IQ}f))V*Gj9o+%|NWF{Qg_>DD zzq$@?Gf;kOg9j=MtOg&~X;&YH-jt+YvKgsf$4foPG9d2!*Ew~K@!=8!i^Np<7A2!f z$jK0ElCa%_+n(i6C8Kc7$0uB3Xw`zb4s6vFttt~&x|KB_JTesNe1qJ*5Px&x!jdzE z%2X-SPtSR)Mv)$<6>`I)9B}_mDZmXXf9RfX_rg}M&Tp)N2m#(c?@nZ>(uhf_#tBTh2simtO zKz(!?M-!##iT3VWtJZqKtA^=w3zf3uV(*^iUJ2J~9U?M3)cvt(dpG;M5w%^&jTb9b zx+b`#u53Lij|rDL2&P7$g9@EyRcLw(-YSUqG zd9MH+s3lUv&=xAz$f_VQlCtcYr>;c5q|HM?gDHRT{*L3U@2ZMQ4aLt{MgATi433Go zCr)F(fuH|XD24K0)rbFvoH1B8^XS`L{G^Y#5Y&olYp#_Yt7j0yw~ML!VgvvHdmFb( z25;5ua5xoIU`A{_$wJ+W@YhouQ=-gN*qm3H!uw}LVzDFvK0{td%|yAOQbu`l!r$sw zKbems+0YWDR?o0LY>J~@-Y1v{wc|85f^(H?_KF-K$;m~k6i#{HiW&{kA^78mJRyuv zi|>~G82P$Qw(c7n<-NVULp@(XFGLgCWZAZpROkQz^tOUC798#HyRJ&n8;plMQlTqN z)e*$24Ln2x5}+vHFAcDaeQE-0iD?LWFjl3&L@@Pcm$7~5fv{qL3?AeMS=(cfWS`4?_V`J{OYDZSodYO@W~Os=Ib z#v=g&Q;-MHi-F8c#Vesr1PU>emK~U)K@}=dPRQiCLMGb3Vs5y!@*`*?_Fiq_Roj;Q z3ol^a&n%QFb;iPErus`SgrzYku9G5ri@Am&<_?mih`GxBy(xBQ#YeI z8ufk}tdosQ(v*3@KnV`6!7S9WuoIk};I69)xGx&lmX@^_RK%55W)xe{T1?BW5w`^) z8=t!;Fr6?N0nL^zm8%)u|1ftKMue+nJo_N8#=y4P&WHu)3kVnyhHn_h6+66CE}|I} z!mno;gsnZ@p8=y0gH^x*VNqmQnOyjOp>u&LCH{q4xXO_5?+o0kNF8p%O2r}Ncry)3 z2}7<0M%9{ig5K;!#kaX0YC!sq#J{}MVXW#^5hnIWJM)PT;Ak@4N7pB2cr9-=95__ z70XFw^d`kRI9QY*6^KYm0Z)!QMr{2k_*X@-Higr7es|N+hBAYhU!$~mxg$)g#0OOg z8;>;nfu=+0=lPZ%$Z&*r>Ad2)@0wFSM%IDr%w{L;x>PF8(bMXto0M;NSvAPqdX~DZZFc^@U;>MJ51%wB?hOXvD3MI@lDj#%%Q)9c`|T zFUHj=wE{t&j~$14g)S!(lbhB&Gp67npi`z<(nh(mfD_JKiEuYGHQP?cjnv{Bixc|| zs}8nM9`_LXePfxZS&68ae5}%CY~#TGAJJGSiqp^LYZ88fuUB&M^0S4}h_Z~Fn79)c zUHzNolifrMkqu&mN2Qqt??21lG5`RJE4*>P`Y77%hVWd`C+~>JBjJI)cI}q29PP3x z7yEB2E4-kwYH&c1r(Z*#Bp!yUaO(Pr}u{*~AEkIF3_3{m3={Rx=qaiC^E z`F?juZ43t(-#_BF#R~^c#zESZV8{(oXMZbr%305=N$T3 zm1z4ci>m9o*fx2$n zom9*n+qP}nww+Y$q+;8)ZKGnF72CFx`{6w8o)_motk&C_YmU*^D;5>c2GTS+nWThO zwIA2>qXQk*>D}O9MTm<{$@DDJUZ?Rt%fZk!rp^|_A=HMLdGRTfZO1cTOPvS_OhgnObrijo7HF>v>6V1BVO zYYg?~=jvM-%nPD~yW{EIfMpW6tAEbFQlFLMAkNK=dsh$e%$pLaY=t3G^e*P|T+M$I zqpIrzCQ#fL%lVF1XhKIt5{h)Nrk>fF0Dww22KhauO30>l_Nl3{JJVye19ZBWNTi_i zza!OJn2jbj;_5%CxVm7u`Yt)_U*cgN?Rzm4Pcae1nw6<`i_HC+8r41E$16@JMA&i& z^y&>I%%W5kBx(>M3$%807NQRf9r2_+{6DX8-(#MnE+4*lT+5q2o1F8=Wl?QbiOYYr zjtTRcH30w?4@X?6+A(A$fUkT@8|T=rMeIOSn~dD!fbIm)Ia2>GX}<4nv#T}pKm(SQ zmn`=08QgI`l>ruy{Uf|`(}ODhDwYb+KEW#^WtYkZX4`MNhL*TC-&O&YlNg4^+N0hX zAFC)H8^-Q3>pxeCeBTef`})`JEu;pso^*UIlfy>Vv-VrB67$Jg4s^70pxl^^d)JO_s?Zfw9)dI8Abm7*j_=bk$EBcuKk<}k`7BPBN#&t zx;B4pbfbZQsw{&JrGvq`i}T?^OiHP#F<;!U*aC^Tj>>g0&1}r}ILYPBdBVQ0K;O4M|bkg^Ge3n@`zdN3AsHra`OK+$z_q><<0Z`Cm2qqH?nS2bNE1 zxTiEP9Z!dPpvv_LW9az*G`6B{Rp)cP>Kh5=cdPw;G=f1Q9PU~E%YtJkOog&OFguP` zZpbsX%|kGJXI{XrngVnq=3+DgtkqpLoxv*g|i zH4>1LlmFY@EAQb~g>HC$PlcmwU)>__np7}br=R`pa9Ypq^i+!$B>cd1XHSt%+d(Mr zdomW8dm{J)3TaW=o_5r))v-2L8%Ue>aNoiR4lc~#*K{5e=J&G-?7Vupy1%XX`PoU6 z0sugENExH4K{vH;8NmsDA)#uzgXsMNH$OqS*^Oo@G@&$|*ixaS9&h(TZmd)^KR2y` z`9;IMysjo?2_Xfi6n`&&xKQg~Dk?rTn2=DnIul%9RzIJ6 zf%c=7+j!C1ddxG@Tc<@~ozvJ-8n#p5Q4ZTHHUaMX{mAeU1-7jPF%|laVtx@MkN`nl z*jG1Tv}uOebOqWM+qH<;nFbg(>7wGK1|*Z&!A%VdcCZZjY@>Iy{$Uc=*n53(MqMk9 zDHeZIc0O|OWwjX%uGr>*H5!h4e8G=T%Y&#e%1mKG&=^^LWYnE7eQU48G1%IQ#-PIX z7JVbk``gND7|lAAJA#;&NGW=qV1!$Wkxv_etsv{Ug6A)u_ z8F%W=&~?>s;I0?hOe)aF#-B=R)Voxs(+Dt??N78+nf2$13sn>NZ{ZpXv5EdPk{bY|gP6R1xeB6|r zJgxuNku)`L?nr)r_}os;`kz=lt$+>pduriq;b`3a8>CuX3DF*<#It#O*&f5>I4zm{ zusiiqU42pR;hH%@cB3KFrOc=nbh!^`(h9F*^hVzH01tMFfZ%?r+ppHTNoC1VraL>l z61Db0b<~Vnll<89K60rtSSlgb8w+bbA(pq$jGx2AlUD6Q|+^y;uj z4{@@;dHnd2yRvtAdj2Lx1T=_CT15oBqai>@ zcSueg>~F3ai~s-%ERLp!`+pynH3A6`QMoY zo!Nk=mRyG8y1Sr)q-h;1J$|NCl#a72cqo}h-Cd3DG+ehYYV9(=*|gu+14X8$zr#^_ z*O8bq#2}sJ#m?#h(W%}s(%k=Su{MH%ARJbk|HDC~6OK9KUNqZpMSjcDw`F{n)}X6` z4~C7`=@tYfA*Z3&76bYd9GNSZyC&62d`Sr*Qa({k_9!r(!xJ+hs&49rCzRQVV>VQ> zZ-&xio)uRNf$bfn;8R(d*31=d(b}xQinXj#s_H$T{oHMAE$Le8VT$1fOz4JKhC_)* z)BJXGk)WHwk8FVb)Tf@jfVDstlRZ+pi<8q+blB4&E2D~z9oY(8MfWNifodcK0LDjt z$;2y#RH6zZ6YEne|AQLDLn|g-Oozd8DJ8y2N(kNv#SN7tbHd;Oa~2bJBM4u*1CU5c zmt4fhX1z2QQnsVT+)1IPDb$*XICdHd(H$IktTgh+>g`GCeJtRd+B(l2LPE?eONk4? zvCKWFf31zq83l#VwZ<+j4pwZ2!_ZXB4}@(`E2y;a5q1n2V|&bL#z&utAe1ch*JH?% zfce|aFMGC`(VaS&Vfsr0BXpAARu#mF4?9~30uBb3X*idFPtzPwx-I-P-RXPEzv*m* zf3e0rx>A0R?egYw)h(ERhNef;`SB4^=KHNhWRqi|<8VDErZ#bp)EW&2Fi7ywp5%OB z4oB8K@(z`iNA7;9J)nii8o6%4DJ@7zZwNUi2j2iM6?b2o%;tz}2pP)J4Pi(ZYzT9V z1Zm`4ck#i1MJ=3nV4w&zD+UrNZ>VN0BkvvO@!pIq(`2EW?%%1TsW+YS%~NOg2cJbP zGOgeUM@|YNv>ji_Ap1d>zD~{iEO>34jfw#%gPvvmeYe)7ajAIHljv-!4yN5ErxmFY z_nb_>Db^l_Xe^Esc+QK0$lGv#t-Go^5gY_B;%TEho8!^-06<45yr8r* z0=n)4rfM8KCD3qAm=HNZs;;qMys;Ttg;&2;`xh=qGN)sv#asqc6A2zz2JU%yARF*L zq0gBkQi;baGl+yV0>{uJUm2I3x@4G>+z-Xw=R}2eK)0CpjsY#c7JrpJPh(Rwi8C)v(7)k-T< zE6VW^;w+I^J{+}##q8R*yHthVk?RB#piO@t{U(f5C3@=|Z^C-y6(&9hh?aU6htq-R zyC}p`EbdF3AGfVD%KQ-UNG}pg#bsY+Gr?`aLOz!5Eid^Mi)1Kk4r298u5;RfzN$?qnM>D1NfWubz>pc6=nqS2#^0qC50zAW$Zm zv;aYbgXOl^7Cm7$YkL;`f9-M*LypE98E34*iPc>ue4(jIS5dZ?Oh_=Ab#!u}*aZO4 zy?cc!vOmhDg8#mLNW)6jxHIA&vHu?7Q<@%AHOrYOwlXsv7B$t;Xch!f!hRBYCCP#sGuf)r4%=k9WX662b}+iqV{|X%4&E(z z;!<>raU8i1!5OS9Zzlk#+ztUX0;X@t<#hYsmz_^ym-)j-KT?_;%Qo`0%)vSrH{5{T zVC3$EU;EOx5mabhiHK!OiieDNMEq`x%!g1q&FLJ)X9pxHfBs@cRAK+FGeow@M?T+2mm0vw-U!Z zr8uq^#di8csdDy!^iUqw@q>-i8iD3-<`N_P`X}vTJa>=SBXho7Ef&ZET0&Q>yxjrr zN*q~#BlbIQp#4KC^W?0*6>+S$ABfGJ?0id@g)C+T zDaxb$2~7ZlQDrk!W01_R&QKhViqD2BLfN*y17Ru91fw#|xp*gXur66`)49^5@9e-V$IFQ?8 z-)q-B1NQ|_@APbebqrNs5hb@QNv76_-XyIhK@%ZmEL+bf@7J~uZrHechBbKx6OtLR zxn}ozk%bfAxKaZD(aHXMXkM53=DLfLjs{GVip?9r|mXmnURHbr_} z=N~6%!2pnA;!`Q)-=Y%%m`d}c5Q)km*(wRtk=2DN+wM2rYpc_(1m!$Bowf2#twb-^ zXkE%X+)7qL^$yJ%-LLlLZFwvk-3HfZH`VuUZN*0xxa-}5ovdp&Y*g&FGt$vL_kjOx zmwOyHUduuhOH8clA~6bYMC!4(wB?}IzWXel;fmgq)Cs64q z>chLf$%skMU^#NHn#Es9#O@o9G`@L}Zj^dJY?Qatx+umlzFJ+m33uNq2WZ zJ}DD%B|a{)oQvq?d!97XL|X`8p}n+Eu=L(*0RU7}h1EIoD~N19*%v{0gDDGq`OF$> zoFwPLoNz)+iLbOAf6xn$>O{m_T$jynfwzRPOi78&CV+8A2bqGtWZpbp_3jv=QA~R7 z2*vsPqGHQY(aF~+vk|$z##N@N>xBkXK4OftA_h@3Rs6OZa{;zrEfwLKsYPfR%pAaa3#L%6m7FU2gE`5C-UwIC5UN=k$ z{@&xS#@vlr_pQwze0Le*C>kA>?>5>+o9?NLG)L%{IsQM%_LJ{x-tDKeZnjH>6ie;) zfgd}XLH@bmJI-52rL$;Lje$*OsIcf9F<*kr#uXbpM$`d0pxI07>xVk0YzVYqo{40A zeL7jUtZ;$;xbRf~!X|5KglgUMG;vYm-S@ceXqW8!gwUmo9sQ6DT?g8+DX))o=z3e%}J zP>haKmHF&V;TYXvgljJ0gX53@eE93?zKkB+z_E3m0&BxCp_NgUP#tqVr-EjW z9}QGd@VbjV6bD7}_n=(r6yxg!9NBdA?Q+<<(e4Mv`AMp&ePm!1y~-UG^kc>{8KS>G zl|mC&6ap+yoz1Tp{g|fABz6lM8FkYMg8e0Tb?e5hr5Pcj&||i(Fs47T!ZDT-UP2wt z4|lU{t2Y1u#I>P}9DELy4w(X$s8x-`R=btRK(u^)0geVAs@8&IlPR8S+M5%)unSa? zKX@Z6jOgnjJxrN|r~d1ju|(NS%fZxv9O+*EmLX6Bij*s!HLQ88FrLWIM)JBW_nXC} z&hJf}(2#0$nSVv&wU?1RvwO!l%=n-tsJzUTe*p1veQq^rOiw_RY;-c?%3 z9yUqJyEKP zy_as;(J0l_=n1u1S982;>`qN7%>Yg2A;gj{$CRN?qQ~_Aw0nvbPOb_@)7f}9%VNl; z4ldxDx%iQ2WP^x``_CKC7C0^Wk`HD#+@>EV3f~q)`VnaVGIREW1oL-DiVvAPOy5!m z6d0^7vV6v)V2&-OrY1sR%}Bmlrk70Ukqp$A za-j%o0Dx+@!zCN5;hJXjWla#bW1E;|6T~KVYV}W>>7p1E+MW6#7L6j#8~{Mz^~XRkb0Uo~Em}l!#aq_s>Si(=$8S z7^EDFeY;7u-LNA#u5|FMn(5Tg@EVQ*cl&Bm=Sf`($@vd+v~gMI{mB8xtBTXsGr}AI zpgUoxnJ7jk2a-U_Nd`^0G`tjwG@#0q>7xplY&DEP!34TclNcTC-|qyqw7M0g@o!F4 zLwb@bDq_eWj-`8041S57dg6^OI74bryD+cEYv#+_Yf$7DORR8N391zM!8tjexm{dU z#NlPrbuBrAeP?=Q<1%hgqWbR-3*ITQHC4@I84zSZqpeb*Dpatr2HTyf(gG3nJz6E( z3yNb3DczSF(G!d5JmxLawA4-DkC#s%|G5E>v&57^C5aDW}-ys%P!c2 zkz3o)ff-rZD>iZNUF(E^N2e(oB5J$->&E!$hrXG$Ij#7^0<~}-^9XyQqk-6$~?VQ;8UR>s#ig~ysqV~(0Mlxf1tzF_IML1eg z!N)8^#+dP=oDsWif%>CfP*#=MR}mKxy2_IXaLcT_rK{as-djJ? zNDAwhP+HJ-JB3Um0@g-FC96W2n9O4pbqSaVi7IJcm1 zjnyz25h*qnk6@2Q{=#G|Eoyhv_`*3HQV+vcd2@eBT>2*6evGyp)zl4v#KM>$VX69G z^N2WeWJ``sOtx}(l^r^3TkDLHxtY=_pVTs@(-)fyeS`NY0090^+8eZy&?B5uUZvrT zQFw(>EjfI5Aaz(*bg>m1dyzmDZoHj3NY>bT)4w>$l)j6^X{}rRSIXb15ie`ze`kYx zv<`Gg=#-j@)J2*`AiiV-Y5Mu`f$<{qoGpb&NoCmWkF`Qdsray}i?I?v2+GQug|R3~ z6m>8C*J(6P!~$d%lVhjn7`QJuxaN;WmCs=ucm)`Q?7_f6b;_g?QI*|372~1!$}*c;#GE5k>l>$OEbj#h7k7Oc}N4zQV<%(*<>Jqjax| zvxqx`=Tb)&^~$-TjeGx831%F%5_?PfoqdMt59Rr;qxA*vZ~e#HL7@B9M#Jf>eaGF= zIB`|SO$nJ`$3abc!$UNE_7)!O3Mw`h3nZQY(54&x`y?=TUrZgztUczJhYA>{pD1*| zDMF$$ui~MQtT3W$)9bvNhw(y+zK;hoNkqRG(s^kdeVTFg1B-~~;;fENs<}rN zy^P1OgwOdP<+Z^Oi3nXw$;pT@gM)#HVPz%9WUb%*p%ojFyN}iEJCf{1Y}j~pl(W9e zfD|i~%ULE?rS5+h1zQ@e;lR=R$4+GZ;`_Cr?CWf5%Y+#zS7$RFN<0n#sPwQdnIUGS zFxl&LYd57X>Y}?NrSita;zow4<;%5-)qeBWtKxr>ZoQnd76~iIl@v%oVe`t9pN!=Nz zuO!iLMZmp)AO+R{J(T0bA6(P1un~rk24dWyKKbE{0GB$CvCx_-W7(;`iQm|Ze~AP3 zP#mupPBooUM|FqP@9l3RpJYFqkzvBQu-Hh;E>L&)Wd)PqL6qmC{7CGXuidg{65cl% zD{wJdbwtF=@85ZrZXT<=^poheEs8;u%Bd0;n=q~Vq}CH(diQq&0~TG=VJHM9LZQR8 z_2oP(+v^XA3)4M`Wpl0$AKAMK?*6$dazlYxrirOynRlS`w6J$tu%cp zCd>J8;HyT2>1@8-pt*mw=n>Me;LCrg(rz(u^eaZ_jdauKemx*CdicsdJ}Hri2I)XX zRXu38H4(`_IslHWNt9r&3$uQ&OvD>Fmg?4Kb=_CWBc;u97 zPod(`6NL~U0m|`sY)|U~HB<8sfhttrBE(9RUi*LsFbu{LJjFO&!9e;>^|)KsusW?s z+moX$9>4T&gg%tPg$1^*8n zdbR$)j7v7*bZG2Fv!EemEJtHo-q`^zN}HHa1Swg3Pb7R6a00*tz?vdH{6#>+>hISY%wk1K?*rD3 z?NHb6>;0+2kHs#Tg9i4N%)!0Co8*M~06>N)8@PhFDOmrs~t!KBzMVuL)q2jZ6KApE|8DbHnM8PhUb{Ugz%^XTi9LeZ=Ipn(T&dz3?uoeG7tvh1xxE z@t^juvAmDpUag{@5$s$Z^U-$Zt~YMc)VvBq&Yi9gUEJcB1!u=!mp>?(??3n!^se78 zE@n0zBvM0H&BQUWvXwOA=-@34dO5e5-d~0mcGqMT4S_K>DQsd zXcJTVid*7X{Ys$(T4cl(O8@}$rDnP$lToTsloN`g!E`VkSXuYR(HBL1ZqF+9u|9Q6bR zd#dn(m}!ZK>j|^bmH(=@rZO^VrpJ-fLq3hB@)K+~2IMuqsS8kO0P|BTjZ?wRd8e0YVWZw^K=C z84DEhJrGw3ChbdJ#XfTveEQSqe7iJNm;AiuA{dmT){)Au{4xZXlsEiqzEyJk1B(go zSW6&@VY6YEV@ z`>n|R&bqd|tpkGOH1NT3l5Ubq^B4_;bJ9~OofGnu$_>>Lcwof}l{?aDq7he4d!-yi zK2%Arq?J2=n4na45VDRozqCC%4b`FZ-6m>H@t6oR*?M3_MwM+eW^Z8wmcPCQW&?OGPYH#7)12DA{R~8Ur;^pRdwz-*aD2~K!jhp13J8OtnGDN`fe0Cb%#Y1WJywJPUG??2l;N-_ZvvgEJ+OQPYvyUkSW12dSk0jX%}?+u zsfbn|Ii(9A#lZ9?m0}$I8?nW05QxNCc~v4?PvwuiYc^(O>4@Bs! z6&|n(1p~b!4h-)-pr3Fn@)7j4T4E~Af3Bny#I%mqQoK*=qX++$x~PAmwJR)Bc*!m0 zOya(`ZZ3Yx%-WvV;_Y;9QQ4+$Dk>GlZr1fX8d`~av9$A#VpLZ`pLTNngv3)M^lvki zaqQf~RVXNgXH$vppTE`7{I`V5#boH5ide*nzrFDxv-i>K|3f)PBTXDQy7~w!?IyF3 z1!TS;LtEaP0e!kE__V@w06=BaT)xT8s4@jw&UM4g=E@}wD_kNWkqW5S5gq{GGLBGG z(;Wl8#GxN?Xnp^2DhK!m}Ee3uN_Aw*GH!bPdY&gQP z04<-YSjyZCNqvKPFZfk_CU9~9s3b3}zfQtWqR;n6!kboAw6Pf=@j8#ZZD0HZya?E9 zBRNysr+m5ua`V)OtB)qJzDRj(t3tq0r zwGbX6v*^U}<*EGhVw3O>JLn_1(1HZdHO}BUM9(fQN_}kCLj!%4iIEgjpTnaa=zv{? zXl?;Hg8_P{HQK#)ao=pI{b{llr+1j>#3w8yn7S=rTDr5D_aVApm=|3QLUxb!yXm_J zHqDC0Ofl!Yni9m4H|dhDiU&`UUv`rvW(p&4#C^&E03+uBC`fd}(DHO2mm+@ouda{(ox%d{^4&x7zDb7<5= z0iSyor2dW+|KlYX;c(1&9qW_;IpxAzgfFxasUyhNmUmW~iOvr0 zF%Ag;kj~aiVVsA2AnqH~rHXbS+hT$iRrE){uV%=_EBB1=b0NeSbp}anU8=@n+Fj~* zmmvzxYxeTM`$exKHtBJ7*Ri=Yv~pAhoWJsk&J+In2++#LnvEE*IYzoJP21; zw2heLFbaxPa6}9BAMUn6GS+?Pwn&5oH*^Drh677%O{+oVjpqS`rykCMM8QbKc}^Pu zK+(**dVBSI`x=`d2hA7xew+{K*y-EqD`UG{li4LZnE zh}$F$jyfk9T`d#e;gonBST<`h6qK-Qado&zGrlp0y>0i)Y!|s_$hw{FNe=MxDM?vA z-f}E;f{o=uujqn@Ug(^E2$S~AX)t@pfvFd85=66dXEiLIi4=9=2EVvsE+M zoCr1apc!?>hH+YU)j>qhTtk)H&5>@+%)ha*f=?^{FZ{#tk<0M>hL>X{EbpAt&`A{# z6qbb5yR>5|bd>`BfE{zx>P;(N#$KnB++J;5;yJQ*Y4#?vSO(4*G=VC5z*Gtn71mp%uqr6vZ*CbI%dI^L;f zj=wcn5Ho(QDaHA(3|MjOs)<7;)v3P;%xZXa!z|bjyzy&-NaS!AL2lHN^UoXNR2>w2 zGvdejF*`rKD&t%zMq1-iVTF1^zhqHZV^SYkC>?>KD2y|r(gqnvaNF1pSHvuhNuRF4 zXd}Z3a70r!AoJa!1md0lrQij37-G1Ab;(wkP?g1EIJlzJkY{bn=r$o(eK{S9Jq`e> z_ApMw#Xc2e5DqP+%OD6&!eek8Oki_q&*-O~7;@X{Wnx$qFng3nkFZ8mXfP6_;K_!h zH{2b0q}An8X~njoK}A%U+9-#fPqvozG{bI8b9AHWEDiN_nP)~F9Iv=1Sgw>(_Jow$ za`z-B*$`c~ZeffvzszoTv)* z26sz3|MZl^Y|jkg(VQ^X^TYIW`l`bIU2>}l@6v{o^@;2%`99@{r?S*AZ8SDHdoS0( zWVcT!jlH7>IU%|;JZ!WyM7&x4Hf2Cj>*LC_4}f|S%cOas@<)5)!%InmECPru29u#A z{x)x*VH75n)O$tb<$Ya8Y7cs0kH_#Awt_&?0OBU@UoOed=xakggKtbvB_7JElea4k zT~CHYxmG$s&|e=NBWgjQcRO~HJk=Cc78TNlaDLOhcBx{oDRjGEF6t(U&L@l|R3L~u zi{Q|v$sAJHgTQMjn=O^kx@Nd^>BKCiq&Xjk?d^aR#h#W%6|*9Q>}%g7+eS{nMwO8U zGQwQ!6-L|)C+JuuK95=Amnw7XXc8y^r#N!y zXW+kiQr~00=;;r>k~Nmn=C(D3N!b=3yDeKU>848i&!^|7zc#j9nN2VceR%yY3OqhD z2J-&}a-e8mvOgbR_K|{*(IhGdbUBa48v|_<=KnF2_+5Ugs z4juJ*wT8ib@-C!*c`5e)#o*RlhA(z(a844F$(HP)v|1)4)nV!p1rr(dv*DFq0<#cK zX_Xcen6%}HwI-8|p|*sqr7neFwoWGq-hSWbtTbiV&OzMoU>#k?noK6ad1@Qfu{pNb8fL2tIbmNmodaJ0$jwg zz$s&8BI-n_RM#gnOr(EDiCJpeS&JXhM5-~~HK0EvH=HP2edT8u%;E}GcIzQ!IH>@KYwoaWb!Kc5-C=4R^EyEl3!elj!srXIQOS26y*mOMyh4{z1Ovf-Y$FNx@W{~DH40Gbc-q^(%Vx{m z5W_%b)rspXNMg>}jjsRJ2cTk(iDBJ0nJeh$J+&6R18y;8`(Nhho|#+c7RnQy)=a z7Q#-+kh4>eB51`ko(IqzJ~QzRf;t;YLIkA6k1 zYy~6s86;BS-u<%7;ILMjg%Q0#3`U!8-P+k(3 ztR{$JbA;HzI-So_NbA`bRu*<=TILvL=V)_dZ^BQvlHH3m!c<{t-xYPg*WQf;}DCRQ!Y7nLJKzQ{W(5pJ~jQ$}r*# zTcU|5o3-qa@V@Sf*`~dK3z5QG<|uoTE&`6ms0JY(J4;9JcCgp==gpz$;F{^DGP+i2 zMLAnT$uDp84ObH>*jI0dq8K@MYY?VB$*U}zi4|I?D%N9GX_r4|aPl{y6M*Jf^G=RK ziL<}A1p)UT05s0<1?)7_}wU6;DY_K7J@axa$foW%hhT z9Xf)Q-tpAO;N2>%lLfPLNq3bn`8J^dEuk5@k|HX-(6~W_g$ub{Q-;}8Ywu&-1)wJ& zppIyju9wg@C>pf<^#(d%@ap9LTv8nT>Du!do%0k&`$R zr@+UGKRch&XI3@vxQ3%TxCT0Gf{-|nLtKP401`>kg@QW>@kXi=SW5VRV zw)oYIjanA$1$eaWrqgnjE$JAe(D6o~MxS!xbvg4@cP~6*m;D|ieEiq#qrI^q>(RR8 zU3Ih% zqo$z6xfcS@^b@V$gQ^E!=eblgPD7~rlA2kqpVE9+s~tr$`4?tib{Ccc8w6H{XJHej zZR|D&zZz^_2*L;Bsveg*W^onhrI2H&gMagqu$;Q!C=GuLr|nPvQZoDtvxCf&YE`5M#NP z1;+&PEWjFcc^1VcqVru)`M|^d5`!g< zeKvzUuE;b;!qwbax1tRPfL@)#8d)w-W4cB`slRYKOb$#Al!aF~7e+Jq{|VJW5+^^f z3les1O zd-FUL_Vs1np(pnPQ88Czrviy-XT7Kx9=Po5IxWOvume+`cPDZV7iz9GoBXq{>YngY z!eGO^>IRYTh}A@z>U!o-5`ruy{`PONak^|Wk1Vk@?mT?1CX`EETsSm18{?XhUFmy) zwERwaq=LmH3T&gsppd6PR625-^)OJ<5vvBibEW7Zx%rvPQ0x3GFA2zZ#j*)I#6l0HI@@E z!h52ewnOdm4w*kvO>?lg{8R-F=S{o|_KP@d-@KcnZx`@CBsg$~nHK9faALwS(cUOV zL9NKkVYU|at1yyvw$q^q830g~ZS`}WD|t9AghLdW=&Acy6g>JZEu9^!{vkp2(r@lc z&hnx=E8U6(MO5;7r|jH|WYg5MJ7e_K)R`|z(9Ak|x}2Je{9)W|;f-r;F!rB|?d0Ns zh^HSXpWohOqUn-1-}u9zSdq0_zkB2TkY{T^L=Y!`$)|1iM&MIJkV zOWg?Jwf3*OlDiqSb+|HELAfQVp+;+!0scbszyv=CIvC8w=IPyp(sj1DTYe+~T7dbe zC|it4V8e4yZws~*00`8Zt-W)er#V#`aetcb znpC06)-dF&IZ=&tDrG-Gt2Yf3m1n8=eVP<8m4nVl$$s=JP(hg4oY-uS>Fb)TS z0@}4r9#K2OWZLnom{mR}CkdyoS5>l&v_uY==e*s*0hECi#S2 z&kbngq`uEv^9Uo#TbE?>!maf3Xdjl(P8z-@d}6#}D{&GYGz%#EDwbS9?uUH_^u)Iu z9J|JZ$5cE~&}`~Hy|8Us2n#Tqgu681Al_3tYxU&bOGk>a;hAZ_l@iaY$@>=M|JmC<^~8NP7BB@c@cd8zVR zmbFC#dZY>CrCe~~KPUh|LO{YW=&Zb`Bz|J+s~uecya*sBXl$-NW#ZXA0* zA}b)@Ap5|4Db>;nWK~f0Gg32&^;GJDdU=qnK-nW%ig$>u`OCsg`3Zxtj{C<`qR^@& zEyT*00)_odyM--Q{9hGZp-9J%%!2q$BhD}FoRu7s?=L0m6OG5hvaAOp+hxuUoNxd% z`F7Dw=8Ze(U>ChTwHU!J+wLn?f)D6(ztZIOw3>CGjcBHcV1U_B0I1>Q=0p=JeR)E8 zQsd*64CuZ(HkeK;HRU8rbi(<$bWEv+RO*SLam5FZ-h_d>Ie&?y`q%2JNxU?)A@;lz zYZvGKHTu74-M`~z%Fc|l$L=EsFJHIG3oin0OKr!gPj_@7F;8Eh008b5F=vX{?kGcK z35<|0`qvE1IJ08vvG8Uy4AZs%=pGq-{%67+HUjb&Pl`sZ7(v8#E6QCtzrpX00)eBD)y_A=YWRbrAs zGmRuYXeEcKI73ifNy*%(-e_)!O*unzk?bb|%VZ&wBeMNhHJ-_eo1l_umMk@; z=$-sLQ6?r$u2eyra)Fp2?mhJ^WzJ`(#D^&yTp{lNe~#RtqtSZDrC4EHRTPQQslHM} zj*UbE`hZlEtz1~f85973k`=?;CyEj#!K$u1z@>W5fpPv4Jnw9#i5>hzT41ha5uFmK z7w}p3yVaVlL1^IAuhpJiRnlf`ThXzi|I`d*ezG*A>|d4&zLJJLC)i zP;Jkz%|)A?CUuh2u??`Oa_B_Hy|4&I(Lvw;jv zg$$(Nh=KBJ%q`PAv0&ELj>0w4_s=g8=qMx-`uZ(LkbkIu73LmGrR(9^?{|e6nrZn2gDGldY3&yOV9(IyKpvY}mBcZu~$9%M0>z~JV65m>v%h`6-zgTzpe_BW3)G{9z9h2g*=X~?QR>{>pGo2`v?W#T;rCwG` zS9?u1-IO+SIDQR!>yG^D4|n=J)5PHUih3OM>VR*z5&l(SSaYk1)@okJAy&wbWJ*~c zst~uk=nX+DH#Nu&PaOhkn(R_8fxN73;UCGLWc%$lim~D5L5Ss|Q4;R!02Pl3K|(Lx z-3c9bc`$S;#%-2B%FQ!nhbU8vvRbW>TYHEdTH*} zjHdgPa`4R6kCb6;4*V<-+y9@>13Unr)cwCilHq!*&CUzMqI5+fD&T2`T4S!Y6}T5s zso@$WviKt1x|v3JzzFw%&&In}ViRct(>=vJ^l5_|-%3w7M)T;i-eKRzQL3vr2lZ5g0T_r((^!?8&hdY zS&Gn+|CHBff;UJSTk_%XF!K;~{7Y!+Aw4SH#R${u_Z|tN)zC}$BLLgt-wc~r&W~p< z0s>x(}O3J{mr)YR|D#iw95oE;2+5n5K2Lm#gy+taxji50eQ zwZOGzZVNtOs<7rh(d`~g)0cUSYRk24a|8b}Co0~pPb8Jh*LY$LIpFHb&ru*!F*m}^ zCHGf(A)(|mt@^dZenO-a_*XycD&cE+%DekdsLaU9XE~D8vV-ZgBF2#Ru;i@1yyzp0 zL};=!dsFA&%RM{drGVsS% z2ctyb!2(P)w68=g)&G`&-PeWR}JYfA@`lz zn#t|0L-G!PIkYASPZI>BKLbXSv3qM+nRA0`E8MSN0{$gQ?|p68Ad0ljvB_J%89n89pDPaXEnMIPz1>y;0GegN z+)1Di2|x-iBF$h9VjxSHIV1`7LT4~V(qjQvedf=wE2T`-Y55!)!YxX2?zZfy3?q#x zP`Rz({+5-R??Tm3w>DgKIGZTF6b-o}H6RzOl~F(`t*>yaM^cn@Ps6fNx1;EQMqA^s zIJ72Vx_->T!;4c0^@6_R2#WpMG^rlwk`SBY#%6jQLv)n{fLC|x>5nxfRvcrDJF`HTBy^?~!bV zodSgXG{!4VDA&Iv(JHRGo^e78+dFpZB~RJJdPD-V*p>f9x!@~%y6X?}?k<=s5t=-<6>*Oi4i zCgXYPjLL`+gpXDmue2h73}AIy33s|ZO6F&FP79m|Jqo5qXSaiqs+-qF_Kf)W<6)CK zviviCXyRcD=zfQfQJLZ>j=;|GAf1pQgW+qYY|hrWc147jJq#2C5_~(Pl8v4OpSt_U z#HsPT#aM~$DEycGU*uu1^#&2LP(um|;v+D;4I`w~(w^-ZWW;W#ltG0KfJWXa=s4+1 zk=KwXbJ_Ra4#@u|Q=|CFK{KT*Mt(Mea0Qwndaq2OgBgbL+wepjEnQuuuyjAC3s?#IBU109#Y@?!{wCh(Nsf{bkXQbGIc za>DrQTkhrmZs3ObGd0098=U5=?7eHveE z!<*2G%;73&X&gOG#E1gR(}q;|yUATYG$T*2L3VU-C5!D+CfA<=h1`=35ayg&SaqhP z4GC|ll%0;UB6Am?QQESiLr$gb;hd3m2C?9!%LLGbmWHNc`CwRxN8&67ZuYq}nblEH zDj7C}e7tw5b&jw90z>3`iJ9VaHAPX+Ro`VviWDjUu=6h|x}K7G!SfesfYv|3K89K9 zZ$p|gBhMOGmLWUs3n7hz;olWMnVf+;z^K72CIbfK3)xz7;`jy~CF#mJQt#_9j&hW) zaZ*fBZL;52N@{&=-vD3HMz!{GZB&${<0!$`+!2J$J!jja*&*YmskubgTzIb~v_{9D z0z{IvKbN#Lhr6+44` zfOnOqCBX+Sho?4Umu&I287RsgP5Aakz3`M-2@96s4L)qD#LYTIw7_BHh8ORwPlKuID{z1}*TlF~_;HeYFDYBn3k-J0gjmh=h#C+r0$4PlgRE&E zWJ|duhkk|a(!*0pKa)@=vBuNOU%+tg4pZTNb1^_9pi19v^rVp5&4+DW9XJ=^M}YQv3E1fecE08-tn1RErd#>MsIXzF=g z$}C&eL^dPeVWm)7UhqBJMgc+Gh3XXf75uGJazRZE7E%;txFlbef`__r+}#+itB!fZ z^V^F669!e~A+_V=9^^U)8sZ5mb&JI#Za#Km6Jyw9l|7{{?q28Tx04w|0!7)i7M{hc zJw~rY4*~_5i%c4_zcr^$ned*=A0$N(QUbYQG!F6nwvAnXjL&vTs@-3XubHsA{w>Jl zTS70FtWJh1AO*Wqm;Iy`WN0|MmAv5W*(?Pz0P zm*m^y%eGq1LzND ziC%~*72_-xyJ8i`IBFga_%4?E7`htx{L|=|+{{49UZFMZYeqf)1~kDuQ&w-}fo*R6 zfk8tWGF$TUcH%Vzy+)HaxZ)`qzo*8m1lT`T9LdWy_c)d3x~}(lNTw`W7zMS8;&DNm ztq9-59L@ow0}$9}nzU(((y0jM*h-dE)Ihn@#S@l)3@rJ09&d{7%&rvA)9Hs48mLJl zwu%OPXg(m>!}O+WWUifr@d#x%z@oR+pe|AjPql6|h3;LtLbT(P~q;LM;ZyMs~$VKO=Z0Oh8L9&CnrOh8qz=}siA zdN)5Af%nJH&eT9oof-bfM<Xvm|m-lX!el60Z*}+g@-w%%n;LN%AdJ)I?nV&c=R-O zIe)%~^tBYf-Lgb^fE2YwHx`d|Ypej{2bvK}@D_0pq%(E3=ug^0K!}D6MN8roEcdSKWrvmlWq*h9T-skO9K zegEziX$tecZ0>z6pT4XSD(UT!L(>{L2~$@jPe;W~ZOqE^L4a6!len=&t^(%h-9WDr zBDNb^6w&|9HSVqkjrMW1ffBeN)s+m*Oj3dr=7HJJg6`@6JKgW&_?k*jqUXxJTiJ6h zaIZKRppe;a0-YpmnS<2N6xX_f8d%TeeiE>iQ*0l7#-iGO$Rma8T%pm_Q&cH+cC;S@ zC42UZTaGqj#NtZuL=U7Juo5yz2`;3HlCS+FfDt8X>4}#1LTE9NOco{^2MQq9sb@ZehFhWb^~}BxPfK8Q66VNtil^i3;L`U{|5YfQsd+ zLz{}S#!)3juz@}LWZupSJ5+rJQCX>^TO=6lW`+fJlE{Cxj%@R9lCc%CD@^7x9zhGM zjPb6C6@&9lh%zr;KGnkjKx*s)FbYUaP#Ee)$Q4b~SEl(6I3we)J$3atJjckVA&}vf zjuYb9v>(kTUDqWeP)1-fY011e!@-yVza81N zD?o7m9tQw$A2>r)S(S5q?{(_9HQ=W<42rFVF9fqHViY?mCAs>lFsmV-Inc`Z*yS-D zotyEeXRYn7;}1EUD#;rt;wxI?bE#LfoIQ_pTJ!I2^T(tHu0ldCv;FrZ(4zViJA%&x zz8<>+)*d*#|hi7*2Ku!lIs96YdaOUYWdC=8R>&Fx*Za*KuUj{z5h9;cbx7IQUtJ!jS}7cDYyrMeAsYhLx`tapOes=j&C z%)w>+jG27i5PE9O4Qt9;anjQ5QIUYbdbXNzOG4uBC?(BsGN_z?^hZ_CC!-N>(=Y^> z&|6q!4;OhNuyMqc`7H(jl_HS{%YID5m^6k8$Ic27^{VVj7ILIammp6$P}w*pCAL^% zsD%|Rf$O)%*g+O?bIQ$`qo^;dz~RruUX4~Rro@G@B~8NcL`3nqQind$yPd)SG(Yw-h zvEvmnK(zLI5XORM6CH5y*p&DBkIV3p?RJ!#ii50(+y+fH@dcq+Z1iwlOc>J1B70*M zI8t^_milgUyKulm>r{+%&Gf+Yh7KBTai^+z4 zd(V5|2{NHq5?ESf11Z=r(#pz6@bi<}@5|6DiJtQ7pDSp=x7h#Hpe3y6MTi0p8#h)%YVc&O^Fqs71(dzs{(gJ_iFZ*b0~Jxr#AG&5ykE!MwRYRo2} zP)}(;FoDe$mhuU5HA%N_Ko5quF-^(o_sRM`exi zPmb@f1-l-~GF+(ybAH6dp(vo-ZAS$`r%L`Onrw7!qq{V`68Hn;>+t08&2d)!0UG&L zqg?gEiO&*0@%rxwlu$a7FcJIIf%0kk8haKII5N;m;M4vM>oTBz@VHQAZ>Qt12r{m} zLu}b1rhp=>)Uz%F{P^m7L0FI?*s ziFm?BOv<;av7rYO4dL&Ff;JaCDi?M2^)5?f%iaqvmS$H4*f22F6@AP88)ITCO0OH4r71O*2@4q7rnZx7r^t>c zuLQnU$}E{62LROf%DZe^M?#~Ow(J&bhDubUYxpxE>W5NMuf%ouy8TSe_`v)Sj$AC2 zXekjfECTU38d-~1hA}T5L-%_QzD|1v=83g_Mjw?>;W5`UB=b;|my_k>MXSyIgj`5= zmu|t~aHeSAaX^rwlebIgM^UYk#9nw}+4&1u8h#k=J*cdcy^N?rr2SYn!lCNu02rlT z{em!CN+W781O|f^$PGl)47O^|X>G~j6`P^yguyLi$vz@)T#bN0)ZOe zIZ)w_QsSsNrhr2ccWG(}wPt?iZ&D@7sSfvgew`%Gu13U)SQ(eP)TTCQjWAeS#%F`h{prtdCdr-lpNA3CV{1!N z7c0~#NHHi!{iM_w8c% z$Eyd+(NigfD2QUlewa&*JzdLj8*2ZuZsd5xWvkY$Upv9;TF~Vj8>ti$M~xiwKrBNd zs8OG$4>MFUWR_oO-8H0vOY_sWr2N=lI3D=VVU4of%s!DxiK`Xh6rvea6Dqd0XU7F` z*4oEMP-X)laq=N)&qTMG9Z)Sx^+nag%3d90Nh5P`^AxK?m5gFEN>}J%h@f1_Q|owY zkJ=lg_(;)AH*cAqc?|g4XMq`0eW@6a4!s5=ExI(LZs2yd)s;%|sxL>N<<;@NXq95hwks#!5^8z+xLx z?b*5VD2`LbHy!#KBZV)#KpAz`)Kg9-rwFA{+h)lBlqkcFHBwiYtDqxK@w@|mMXZ1U zT{X388oJCCpB6M}Y3$IXfgvqLeTT;izK-157*@vD4b#O3(Lds(HbkSIm+1!|YTNCy z)#tUTq;jUbS4EY4&(;}IK}=9bQSC^V(z@;3tCZOXq@4{z>v$;y1QI~Q;4~bIfQQ+ar$*~2HE(MT1fZtxpD^_Jet_oxU~eEgIZ1Hi z@oB64gcvw*czX_mDcb0-zZYvH{Tg7X`udo{^ZuJ43m4NL{X?7Tuv}MM^qJA7ewhyk zhr3^vNHJaHOKfV7?D{D4>?#}{xs~UdB9npJBBY?|-TrDwb){i@{rjBf!ihMcCY20E zlr&trZ(B4BPS9bhDLgiW47(&DAHA4_5aC_U_D&g74MT0j_u)z#qK2JhM6X*mO{Nb; zN#eDy_gd_{0JbgLz$F=aeu>yv3Im5++s(yVgc-er)i+(6ddH{`OuN?z@{`-tQ{3__ zG^W${R$7z)%PU9JDfji>1PvKByl%Zgge;7nfc%aHJaWXWF10;tB?f8KgOwsEvuR`e z=INk?;8@%I$FVl*dGImv>)uZLm3x+SB+Z{g3Tey}_?k5o9ayAu7M4q-T!%U(ggELN z?Ad_kr+B>5qTR~H>BNK>3LKY; z=D<{`1iqY@+Z(Jraze6aRwi1m^Jd~Fz8ys`ZZYSk{AfZI$D31?q6;_xz+juuGwvUA z`tjqiwt{igq^|yWw2Q=a0L-AAU5RzvA3S47t8;bwq@KKAB7G;@_JCq<{kPN=x#G&tai6Jx!ZRB zJ|Ptwn#2fK_NuZl9hr&HZ{ABwz#COZ&$yj}q z-134!wc&os`mmBAW0k>Vnv9RmlsY4cIoNni!@-Iw+=+nkAV{9}XyOoc;T4%8xvTGz zL7JJ-&uJsYVxa#GB|vixypaC!Ee_q7P**+Dos>kIyLN}6GC=%^+9buu(XKe|>K|o- zz$I=;xikufL|-M18_%Ys=zr{Tn$~&**Fr@JC`eeqs1{8AQcHUwG>}N+HA-aqJph2c z-7Q3W#5#Ier&A&|j12XmhvfdY&GIvy6#_-45Qmvnf&wA^oN8)X+rd|z{~2z7*fZ5q z%cWAom0|c#pl_$yLXQmlhivdc|7+d>#aCh;YN4YK@7#zWKx|d68%N(WrUv6l% z(lVor>WHpbvb^s=m!k9DcQk$~nb@~7g6(39H7QjU0OZLKwZkIm*s|`9aqW`p@v;8-#tSb{@M-wmxUYZ zxBnGm9Zt61$VFl`$+pWm0!GcNv6q@#9cX}bIIrR}$k3(Iibs`CMoZTY8pS2lDk+Z2 zH0FhvsDt+=eG%mh65eCSAGtH8@v&gptKS2{x0=)7u;VONBhMY=x&LSF-Zew}X{OgRMbnvGFBz24V7pKZbW_jg~`)?!+E*QYD6U`rKooG7xjj)|=pI5m@Q#d#E+R!~(VlY+$ zawUDhq6GW5`O}c}GDV(j20oq6nDo`}6amo<(y~QUX;rNE=_h5>L)W}lFAljKG zfbHY=b3Z~v%m}!o16$p1`J)_vCOWl=GOgbnEc(6gt$iTikwF+{i4u$>I?4UX(d0f~ z>11$QpX6}Hudf<}e*^>_@#NZzONd*S;u3IWqVhKCb^HaY(-~QbqEZZ>CB*#of*RFa zIldiRq9G^)AXED&@jDm+=ycGM@VJYl#M~Fg2p~S}){G5S4%G&{``}DdRMVt+fTa{# zm+TkvFDA`b!xif)vY18U`TgeVm=UiZ%2RSGpu4QZ$d{Il*q>-0wtF+ZK1R<^S*Zr3 zA$EFkrJ>SY`6u#7g%u|IEwitWnIu21owFZ(hk>gv>MFKYt@J8VpK(Z|LBNHg#U0GW z=>O<)fmXUiXqqL73OPr>%NPu)LQ8ugr9s_BrkTv*R{*5`MmW{r%_Ub^0M#ZulbE9e zBKGBqWs<-L@GS-cxnSlx{4;4uK+}9q1*WOuDC3}6=C$bi`6qH+Z3ay(u?>X{YEsKv zvQI3YCZ%{D64-h0Lx-b%mk1!GG2$QRD<;Ma$M|9;T6W+~NYkc;HP6(P8F>tlFIky7 zQ=!K3^tqfAgbfkg`Ii*U_^DA#_vWfLa~&BqH0b_YT~^N6A<-4$zCW8)|1VZE-p*?% z85|cDLe4TifD(IWUvXl^$*VNwLiU(2EeC@+=GUG6V)R+E__+)*DvolF@n{RWIhhr; zzXSZrF^`n~bNf9@yGqvZK5xU9i<^NUNN$rjQKCvpg&CLS4bWrvDXJ`D`=-J}Li<@h z8s6EnfM`=Vug{q8gdg4%zQ-92<$IlHsWY^BqrOqMS;|hI^0doIWgZN{u^R$;6bzv( z0lo*E6X%A~;QdWz!_kauyW}(Mva0Gtfh<25H9+#&Z}7+(86o7+z?4kL*D7ahVYW(> z7Fw#JlD$NFpFv$Og;THj=ij}$zwG&RKDc zkHGT`^x|A=EAVTK6ld*BDw!An0NDj83w5o>fn^h^e!$g)FY+bp$-tE%MG!}*o1;<-;78gH%5&>sQrlTs7>99py)6K1m zWP&Oz)@@o0Z)dD3n#TVzs0RC$foyy!Sb-emm+=8NoNi`tDhEm?5BRQAWi3yHd7e@- z$hfD9Esaa}0GWyj04TgcK}bNKq{rI##6i@+Uk>bQOW59$T*~&Z9CHB}UKR|M>A>hPC|2{Emzo4}v*!(?0 z7d5)R8$OB91ze}y{h=|M-|Q+O4`u!$892$xcG*O6jaa%d^DsyJHKvG!j$EU5@2aEI z{{9iNP1%b@)C-04B#bhRvwv%Xo7|Bah7}o!OIdYl3HFGi z#?-|k=n81vGrrH!n{|PT6@Lv*g>5s{BHX$k<-{8Z1j3h=}I+O5O3sQAzqR z9gljcT2O>NBmqJk?Qo8LgkC)dlIQ6f>>Q zu0tnQ*T9mH6TdANnu-qqJ-Xb(Kbksz1Ak!1n0qG%}V!AMLcT-HWlq*WXU>rmR)p)W^sc=Bq zQQ0H|an*oX-q=7xoX4}gM0lPKRP@?RkFlU{^nT{|7GpEl6hDxpb((~(uc$U`)* zM;Tr~fq9O$va*0032XZ97q-aNJ=92o9sp{ZW0`Xi6B{B9kzf>>!ozEq{28V2!g4dR zJsu`m^VaSaBq@Qe*3wykD};g79b+yjSx>X`^_q%xz_5K!IoIW!rqHJ&5;6z?KzRMC z2~m{EXsFLnfjc@G| zfzrl9p^+C=LW8FzT+K&+^e3wB4+7QM0{p%6pW`0HIHSoN0tG!Xt|>PSDtCm5vLCL0 zpmX28oDMg5-x8_&p4l6YX3s<%(nDfKjuteZc7rnXo7P*{98<*$N*{;eggiW1fv zvT1IAP@z5yJhz(~7%Xpjlc?Xq7FF37q+*cdLmNpl*sd$B`PA!N@HTO9HHXGk#3_y* zOBWYc9>Ft&2M5G8AvE3C&TxURF(_HCFU-RMMB7(g2GHubk8P&9T`l#wIqRe36_H`v|9KzWf%*ieq$#me zxe|gyiyI z+Oa|m6Lmp%#(-=tFw5gfZI3(>{9QM*JgU$SW;R*?m3+(s+yW^_m-D~Q_& zGN;tgp7XQA)_5|ULG8;3?!1MNgongyc@tkvfx_e;`1}^BN+-4O9T?EE)P4?q@-}Oi4QMoS%LQhRpRv#{m7^Qq3gP);ySrx>zE+p4EuM!cDt@;b3J4$9 z;R-E?NXF%{Ppg?%^tBleV>yev6k7K3lgJfaBsJ{6QV&4-HPh_F>Kht^u@ItJ1gNFWB%U{f?PBT6Aw29_19?L*_<_}XgPPLnbzm|k~Z1Ts6? z5@^~~3wK(1Zc9gCvHc2_X7Qi+^TmlxD7C}f-RRCQY=7hU(UjZI14Lh4Gtiljxu6vq zvuRNc`g3iLgs%84I54M39h*Yv*L&(fV3@YH1YQKY>Sh8b#+RS z***Y(`cB$+QOpGXB<3H`Way-W-zec7W=C)MY*Ch?l4D8(kQJdb3Zjbd=LgSB5joXt z7st;%!>pH?b;P_sl*jyiuBUP8qZ1g~d^j^cqnpr8LPvnuv~R9z zaeY=Bo}tITxHk*wf40!j-YvXbord&LagQ#;O2wM=pn9Xfmw^Gi2L_XukNgzK1v}aa%NoEOc(bXR$krAXP za$9oIwApNROglGQ3|YKOmtz?Y<-Zl&JAX#w z#cWO}cs0*OehZRl$xNoTJ=z*y9LMsPMmEgM&eqP|y?-6zY481GAKK9O!G`5Yc1&yk za004`SV}3NpbI`~b{cYyEMe_=a1=Wa9Kqda47Lu`#vC*t3$OJ2PMZ-8DN5k;V!28z zFZ1iyy|s%N)RIcRlr)w`=AJ#Jtwm0P55bXX_Fu9#gO8tc{*F6+Y{ce-x*cwMIq$i9 zH(wD1d?#zf0*%H2g1j#xhIXyu3UlheRiip1yq@bP{5kU&x|Nkdzf$6>`Moqw1sqMO zr%>QoElqA57uaAQJlV2q2vDF8Jp}vVujy`<%9pQgh90Jb`g~OHb{7saf@>Jla#jn_ z`PO;0tdOIj7Je7{S|Hn5%}MD`=_AU276%kg6~1tv^pZC_)<4ADHL zqW}Pq*U6~L)pBGE&cozV&EM4i^`&aM%(7TFS)0>Eg3K|-{>CGHM}_qF#FMEENwO3% zV5dwRfg+Z!sVx-GfQs4QpWq+IbaIp_kuxB{oQFc#O1Ou=<1+GiX1P%1TY%>osH?oW zPmlFrT>eV6&m9 zRj}YO&m&olYOpF7(^e=hHJhWq8{$cBP$y`26T@?k9O(RAvvs3 z8T0BS0avc9oC#N*nn|OU2f#(6dp_ z-Qj(~?MPLXjNzClIs6sIYZiSc<9TV74;ne>?oB6`ZbK z@#&c+&PL1Jb>8-5boQNHQaY2~>BfEXah<5lA^HPqx_5@2TJh+?_13Veyb2yM-PF*y zaAugr*6C{hWCwO-Segk(G0rXrPvZCW_eV$Dl7?fGOd^N0EaR|2y5@LEu$AK;uj@It z=)aO&6EpzzxD&WZgiOko9kay=jA&Ag4zRT<^PJ?MV?l`^oB#ljI#R&#nQckk-XvQuvJM7c*M-A~!kZUPMU00{gj%b;~Pz7mJuyA1puUIK0 z#T=)N!Kqf<55A6ONiWIn{lgHXY^i6jfp-G)H$`46zLcT8sw797gn7N>GQo1k1M66EVJ{v3_u; zLyfwadPr>^X^^f4{zB7K`#^}g^dZ)}sPPr04?GYsh)eLxS;E2&gv-{?T@q=BA`H~a z%<1I6$%&QCr?d8&#Yf&jZID+Jiy57|9R0;)A3vvQx|sF;d8DQ!!Q5KM6(!y#*r@Aw zKCM%(tGuUeog&8weasoUJPwoWPYMSo^iZ2@Il#TIh~EZ{Jna9^ zI`l%TO@eD_@>HZ)PT-Lvx=XRGRhBo1zZx7LfrbtMAomcHGhttNVp$k9p-L3dRJ~l= zted}n>U#1(`w%86$GlDUWJP5G>8ygK=QQ>3LpkN%Ir1uF)+Mt}GqBa4HAx@%pL87F z$;LMOItit(4D=c1h5vMR;|ZU;X$(wZ8|{wwv3@{a)M@DB#wRLBKTti+XoJ^duv%wN zR}8#J4D&VrATH`Ww=KT9%?wt#ci2*lJSS_vMF31Cf%Q3cwtdrAgP zmC7$Ii?m`gewpYfrL3^!JFT=kd^ow$LcBAKy9EI?1Ph-Tm3~ByGmI+?pY8M(JB?`C>&1nSR&eWH1%#k6h%@#O6J@nPgqAI-w%>bB!MOV@9mEw7ys z62`Q8wrns6Za;S1GN88qz%*mMjxpZI3MQ4Yjion1>Xg}tOeF{6t7_*!W>B6$dMxko zmO#EZ)Y+dhBm^kS#!njWB9{YSXBm|)yJvq|DZUeK71Ite1&q%ulFWsn1tgQ>y2DA z@w+T!1uP)dxLSItwLJ|kNV(pACV~(sOKDG!o3lZPg>=bWKT<8ILl}14lTZ=7LED72 zxLa$1p>Bdb!!kW%D|twK-qRP=-0Gg%gshpK!zacpMjB5!R(udlcr0vb5+^Pe&B?SU z$0h4F;14=x2(4pIZ4cBcxeh(PHAY9kCgF9_dU%<2)!4L`N?O2T`==SSEk&|t&b3L~ zKD>eWlUXSUec2fRz`3lzBZN1RlFXNzTn>iu#2aE!Z+Sv)&gcn+?A?BrtXqKBd&GeZ z*)jo#RCGC;)e(f25ingis%^B%#Z5?thNqk2L2$t6HR$S&$X)9g!CU?!0P!mG#6Lv4 z@-UW!({nXN|KdpgAa%SVg8!S@*B*+UMv#p0L-$zamwL2Cz+}&gZE@?j9YpJ1Q5j=n zCv11+GoE>lSNawuQ!#$RMwBFs8ahu^{3+vN>)MY$g$a|Z?+2=|SRhp~Bp*}d>&_M9 zj9(1{HFl6n9OSSQS=3mx$kWN%6>;_=3i@*5atM)Gi}8H9erB4`6ueB|){`6ri`|uW zRHJ*o?wBH}bS*IH4K`{vIynO)@P)812{nc{JpcMv9|rh@D4*K z_19*`QE0@8tpm{~DXs!@pOm=XefU~^Vb~YNXktr)%*f(5*RE(C( zvNn>=*vzw`jhf$Di3HNAXVXABAf>P1C3rmxS`cIoyjz8J1w5AJF-I~dag(ftAU6jD zFT5j_tTKG4p*ICQ#APdWSCc9d?5KSb2q`~USWp$>N&Y!bmrmn0$Sa{@z$F-eTg z?eV)N1)1$KYbtT3 zK{0zOoNEFQ&+LWQ$eWoFD=OFYUUj?vts=$><1I0~(xyYTsxrDi4HZkvoH8g@vz)0y zZ3_JIGuGZIoGP@}c6W;&xhv;6fhn_6)7R^ppVZn-+}5^bsqfdeVeWL6DZHu}lTEWe zl!b9-r*_ea9kF&%A%c`KR)4U(Ix!duTL0`aiA|a+4k!0v06|fjRKp6@4Fjs9%p)%K z^MHyM#vCPP=vNtc-@G2KP*C6F(nlUan)z%?<)Sh%N6cA1Qu(7gz019=L6kphmViXT zS$4gt;=P^b!e0w&Hqd-*wc_Lcy~w=IaTshaWB%6m2vi4!E)xf6I#w*mTf)4#`kbG# zC!RjnGL5}!#nTn1&KABDla$I&r+AFI`@gzUTnKLb{1}1(I9|H&adQN@QNJvbSM7{Q zTx?D*iSOw*x4o0gDUQEE`eKme{isi$yyN1*i|ce0`FX@)@6Iw=79F^k(1)Sqy7Qqq z7?t%bjpXE3r)=l((C)x<-8L21VGGU3r`m?fkt=5ZTwLG*cY$z_3u8+AeGaMl9b+f& z#0)*$`$n;4GgN0t&>5=Tnt*k0_Icp{EWrVpZW5u1Kg7imaRRA^)kv(Y?S)V#6==cn z|A8D3-p$LBe4S>iR7YNCh5rIVvcWTDFiK8ppcp1QfucB&n6gWr0MWd7lTRAL!I=R+ z@30gf<%|x0@?5QYE2TC(&;>e)F}G&|hQv&+!k_6!yK;B0v4mXaB)iytDWK05rUEgHz0y#|qjo zaa`eFVmy<%y;_hLq7LG$5jRrV-&tWzyXHqK8{hH?{~Q*-`u6E-ejWu19& z9M812rXIVhsSddON$6n{eBrbwhHq|Ws;W3RG8)8|D=1xNukXBWf&7Dcea`CV;zks2mkR2h>Y>IdZ0E2;+&B` ziY<7ayOqgcHqcNt1oG_%wpI)@2)+8Wg;KOobdat43d*ri3 zAA|@!;MeX%`XC~~5Q12wOQ3+gg)XYMQzc& zAEUe`|FyO?PHQ6Jf`36d$E_-<9&^JQP&td?Duxmp^|Df+N&J6oy=7M%0JE*x5Zv9hk>C!& z-Q68R1C6`8OE>QB?(PIga3{DE+#wJw1e*_Y&fIs-J^!KBURArQ_M>gLcWlc%3t>zV zfbMlXU^;5YjJXw!lB0b>@de4&k>;W`R53jmIZK=)_kR|g*f=RZdFQ&CeixOh&AG^; zEv!m-Prb9;P!2NiTKo#J?(-(ZJG3|jYX|i^y-jxxl79yPW+vMtwI+8mlX|9)$&t4B zUrJh;l3ToVFov2s`+6mlk@^_yh7pP$C79+g6@d_J)AO=nJWp3n1$^4#@2$QT5}HhU z$D~08>;+Ap*6h5PB~~<>0wYm3xz6iZW-=<9=AY&K@qa9TuznnyKX?@=`W<^Z|Nd^b zuB{$1q*_4eitQPNraV(`fJ=A;o0-(5z=&w;C2QU|Z%suIGxiIqw`N(3dN6P~e#v#o zu|>6{TM|4~U0GY{nOasCx@&baRfwTvt=S;t7x*u#HC{9}oS3I@I=^dazpSIT=@x&w z)V|h6?WIarkBQmf(41@oO;7L}_H3ulE`K+#F16s5!;Bu51=k)3M)rY#u*44%gWStT z#tsA$p#RqVIM|Q$Cadaa;WZEK@=T{?u#2zB!7;LNWHNnRhM9etLDk{IDT;|8Ymu&v ze(>qJT*bjQ@H_wh4dv*?x2}8cGxBcH5*rISF-u4)mWd-%hMfx7d{vi7*DU_%@o#O) zXXzU47>e(nwcfEE?iU0TY43Qbv`ky@0SvQdZ7G|wh$^uSktGdcnAjmg z5!&dBgNvb?&ND+&1?D=mG!prX)}qq{a;t*pV?4IPE&2O_2VyZw$VlJqJ|N=jm`ro! z$X6~Nv9>}P0=3b);a8T|-6jB_VZXy;Fj6(0o&aTt?Z%+sc$v3|;g7bsVhG-dqtXbg z3vPZ{-_->H2{}#Aanp)nlQYm=>{4bKtXy1J&kGF`H?Eb^Dx-xP1&1%-BQX)?>}ae! zsa;cY8oNs6O;FH^7-(fZN7vHe>*#Ts5Xxke^9!V(Kdlmveoq%S?yfx*q*{~5fK z6!N7NgOtHqjm37*v5XE@#8h>+Gey=K_u;^f>l2Mkq3WM?5N-A-tBG$CWMDlk%cc|z zMNPD#FJ&&}sHVLA&bK0mM;n_|twoZ1WsxPkQx^4xC+$1F7b{X`-4SLsHH?cm z2+xY3Xs;r<*<5P&uuwQoXRm_QHT7_WLl=*XlFT4Fs}1!;Gy@7~H4$hN!g#5uLIoRi z8pMBboO+S#bAGo%Y+jR6j8nuxm0=bbKM-M|=G$K-kYjA`*V) z1(MXep)vcat1L_rV%{IoIHu{ZYw1ASt!UlAG83Kc3ji2xcLUbSXUGpaRsS(XvIsbSEW-<3VlmIw zsV>%v{!W+evBC4>x!@)`(#GviVThA8Va;NK`LlUc+B%?#!{8cw)Wb{g)y6B(s9Wjd z#Uk;(RtBCd*Pg?;F~H8(qEJw|HDDFD@En|aX*_AF4@I=&FZ)cz`nPOo>fWt%-_kuF z1-Vc=v$^ah_l%Yt03iD&7ap<_zuFX%c=69Vyzdhq9ayhex(#RPTb+VE*H10H<*2%U z=elo0P#ri$yyaY;zkCNt=@%QMH4m**7eH)BORZ50w@YejKJgfOiXbX~5Ow0^YqY&n zqy*sRM6W}4T9yexyXrU7rhF69x7v-rELx` z5@}8KTZ16V8eW3>{AiN&@AT4viHjqeY;bXm#klrgY=GpD=|+O&4PT3!+2RkE)Ioz# zoD%qKq;RBwbq#It>GZO-)EL}}=-*{Cxi7vevJ!>Ce;#tb>d|`leK`^h&78CA1T`QS(C_IbJ^xeu@wLa{YQ4G`sUqA4Mz5ZoY{o!XF2* zUYRQKkRr>chJdnEr=`%Spof!4DK-KkRH0|hf|6>Sv_9BZ&d=ZfPst%kSK4gOUvk|f z+HXd4(mQD^hdWu9Eyt*GIOg5wtOH;H02FpND@lC#<`zfhc_Cv70Yg}27&Al=&fXw( zvClgK=|9t%Oa<*Wnd6g;ob99LrwJcw{|M8{&x_ZS8n8GKN8hY=c1q2DV(CXKz@laQ zQ;tkA6;f{wSgkZoWW`8hKs|J`V=Re!ehG%Im5q~?z%FYhpLN42RjD@%pemF#AZ*6C<}9O?;#UcSo{4@9V+E0NGK4JaNQ7t*g|UHC zZY0~Q9&g=W)YD&q5)G;Dk;P>30g;}r4yq;$Wi#?c@z{g~vWq5UWi`2LsoRy|R_cUS z-aUWyVz#oaJq1#ya{vblc(S=UXf@aJ>XpWc+Ci?8g${_Ngj%_kdzYFbXIkdi>l z8S(b_VPFKp=#E2Ch-BE4mh4kBY~3la@6CEl`-OTd&n<$S9}CcZ#hfO zr*m17nTOAudwJ`btcn#_12f*iZ6&zAQAz7ZupzIN>qS(u9Yv}?}NwGFO%vc>Sk{N+iD>3+i(8uopv#JjmsQa z+rI_pjgS7}a^KiBOqF%7VobLd>dVlGM22jxx_jJTP?4S;+dS7UM>&|tcIs(mM&#cn;vJvY_e80RR^9C8l#$`pI5%X*}wk$#x4{9 z0AA_Gj+hE=pkT1aM4+E_iB7ltH)$LbO1oiuT5WZPa5tbrq%xlk9+D*Ecur3dz%mX? zhX6^+VmsHjAAHu@7Xfdt)%qh>i;hRXU|u9&jQva0CuTOk-m;njh8wOy!U*k{fE%#q zB4;Yv=q?2?8MBz-4BOhY!jz!UXlG~Hmc{lG>hYq%Ge6zP=T{JDe{w>{PGVc);!$Ei zU5P@Ioitt29Es`^=%6@V{8i`36Xjyxz#A6V&X0_!`WY_>#ZC7L6~$w^q67f?2c9~nt$#oN)g^#s>>_(&zc zz4FnndlR!R%aNf42fft>J;Akisd32d=KKGkoR?W{a<+AjjG%f-c6*`{?OnC!zzw5+&DN}XWxiyrB{D2cZ)YoCq)=MS_wtTPQlWjU$I{{kd0XuHfeKOQNNv$ZYC&# zk?$Q>g>-Wa%N4mW=wbl3v$lTqd+v^1_gv)12s#$j`7@qgP-MCdi;t1iMvo!vHytJ; zT^9dy|J)514-CZe<<&MNpcPuR0V=2%I(sGD&>3cDlNaAMcfMI~6|6UG!k_qpuqvTgQ=#zf_%=m$G1frki*lhU5a!Ih&^2T3tn5dfyUn_5RVXUn!} zGoH7rg+y|mbLI=b9Nf>Qe4V=Puqznkn^PUfa}|xfK?{F)O=Y!H)DSdRR5$keENaxe zhnIwp&q49QJUNsDV@ReS^6c#>uUrK#B5MW{lr>|ik z3-eAmzw6=BEvvSdX>=|51;)MeZM;}-gWmxF7&>JomnN&J@rlfU4smEgnQy3G(AP}- zC>rb>1k0}Ye3}X1x1g#B?S=qoVhKf@n9^I z)a^6S2vUJvo@nJjN2I99aTy;) zk_>>&`&PquJf4rJ@Y)z_k}8UYk7m#yM}asQrX>b5Xi1n^`%6l&1aoj``YwkDlLkRw z8&@2fYF5&Mn_y|y?2!Ss<$n4u3a6<2F@bCseA(O+{+`M&JKB02da<6!cDkb2bBNzu6t}X9J0064HTeVS7XUl{BRvv^rsgqbqDCpN34$JLek%7*H zwM#2*SDtyM zD?;_6w{|Pj@$;rvC3XVNT&syDv8@`IrIge^;q8PA6WXQfVyj7DG6?LOm<4wnM9FSK*k78zz=n-%$Z4`4R9?@|B zStyzf=EcU_Muvx&q{`V)%IM4tqr^~j&IlSC4X)8sS>!h|C~pcsLh8A{(O zl3uu?>sQQDFRx+h$DrgOEUzLy}ZE9)Yyrs0rNXQ}Vr)cHVeJNo=v zeacUNo?Y&24Vtuea4ILnTPKGIU^QW5mBd|lLrL>lu%r>NM>5Ia%w-46F4E8{e^Z;ro(#9x()luPpty55ajMI3Fl6zlfecrZC>GJ23vv&tek zur6{Pq$3osL#v{It+y`auRkva&e@`dZa=?}liRG=Zp3^Io?Z!HLn?3G+5ugQwJP-t zpHD0*|7SRL6C42T(BkU`DW=py^0X2zC_G2gvDnH%1ZPmW`BEh!#})t}-|nrUw}u}j zt9BlkKSf~HZK)NXzdf;Sju)Sy*eaXT+=+F7olyGv9O!fP{p`qG(?W4QfRrcbv8BW+RlSsW;ozF+3#jxHRk$aHN zVyE5-Y;MYCjvvcsJxca8;=;=?;HkYj-2nh-Wfm_9DYOj%hb!|BS1QY0 z3y5Hz9oSxU)4r7m0{Gp~zw)W#GgH7*8yq^IBog8wAdm5=48~6ua(@Ny7^Md82Y$Z3 z%CqwN(~@Kzght3i8kz?g;y8LE6G6;Qhofa)oq#hOc14w8xV+j*JC^^b+DBF< zPn2tl2aHl#C+f3sb=TGdU~K0wO7CIc`e!oa&xbfRUYZ|PSu2+_)JHE2z#84^bSTku z$D02h+OF`}FimS|4a2MwM=HvguI$pXn`X~x(ir$%up^*bMGxDmp=m6zSe<?m&`+Kyd+G!U;7W@ zbPF5+W4OR-o%ob*Awj8@26SwynV)KDT~4B?)o_U(o$U(%;P%CRnVPJgK@MaVoZw`4 zHVCWMhM*G7QH-$1HBOjqgrXzVe05VsspB)xm@2&b?TZm}p8d0drmgTmlr)8tyMEFEmHgA-S7ez_#$|ZGsTpvbVD80 zyBtMbQ|t^9xL_u+Wd?)1DGVGW7|616NtLbP-C2Cjqn^$yQ4~Lw4bp+1$B37+=d#2G zR!eQwe*K+!$6Q0CQhkW(X~hb!otfo(eMWNjzPZlyW)m^4{Uu5|f72zg)7FqqlM%<~ z1+AKOvUZ|&FL1KYWSw<`{aeHv$G!J$Oi@y#M`3!#fLQh|%}z2@+@m%mh0$na`p;*~ z&q7c)D9t8`&MiWc;Ib_owHS6iGEVV;XZoYn3@s}Ua*)Rb*E-m97Wc~AO@iLr+XI+= zeNP1mJ@a@0qNaXu<%m_v65)TetyZlQz*@byKA8VD{8pFvvel}<5t|Yr(<)mGN#B2~ z{EeW9gaH6lw!mZhl4>mt0MS}H44J*C=4hfVxk4)NMsNZ=3kRXy2*b(j7oo<2Dm>Fi zIq}h%Z*nSROx&EP+BO4KdJK|SfulB>6BI3X5P_{GgUSkPbHdw)BOSfo_k#|j4fEcvq2jJu#2PHW$+hniL$mpP&2uA3??Ioi&ht-SvZ zG{hJVGh5HTl*Ng&f1v?IWoT9xT3PR5qo}f6szd<|005&tNI3N1h%pm=&&$F=_*XN~ znj2Efh!ZX3ZXS^x-4%g0ESXC~8>-^K(LHL{bd3#Peo#w?*z}4>DLBmB0t{nK*hKny zLtpi;E!j!%(XX~=oI|o2B7=#zG@!q@G#MM33Q<`dEaGeMOZoS>3r3*yD~4*hcJLo@ zIe)ubTF&Ml?KgK~D@%A4Ekqm;2V{yFAbnC!OEj*c@;(cN4LnH1;2h7V$q@F zc{R+q@|d*S_O7B6Tbt-sMHK#1GhZel&_#=L3>J>`&YS8c5%s!6nnI{D)>uvD6O(Rj z%vJ6_1t`LWq*d?7+v<~C#Mm6iet47#&(Shva95Bkg11olG|Pzb{sUG@)OZ0CSpXLR zS?HPZ6UMSmAAMMv?reHS8{GG5TU{Ov)eUWsi|}P}nD8`RTBLHr;ZIo!AU6o9@rtX7 zhm)%HRSMP%sS8?RH6`p|@oVB{5J?v9LWGvS(Ju`CH(TB)f`qPD#=mliFt zZmzlzYl>oi_!8$+U2{9{&Doa|Ah#m&qs?d~C3DV^9?!#Gkr|v&oecyJq~ma;d)gLD zk)Vd6H6MeLLjbtB3COmM6=^Xe+WpBXKL?U|7nKb1dS}NUK;>fwY7$z?8`b5r(iYYx zkb$H`JH&`~CX`tv%X=sZD`3!>67Lq;{q}20%j#<|vT?^(;d^NAFZ)8r?8`Ui%W&ftV#6TeZ$gXP`>&w zxqKlq@|OIdp+06@%04Bv5{cf-KhImMrC>eDB5SgKJgonuWOw9T^54q`r?2a|XtKa0 z`&d}esp-6HzPWYTUqzjI`}pXRWB}kW|He9|F|Q%}uScP8^t(>PhoH1s40{ z?9^kZSihvM8Zdkp4P2gfm8`&k#O|t5p2xWk{QYk9G0Ii(@2}~=-LC(jicoUE7b)o} zUGVVoEqlrQ+prE`rj`Q%EB8a5S3rtHxmZtruO#oNYC+=NBnR(o<@uGJy zl5Y%=w5Wc-8p%dtL0*yZ=Ms_g+Wpj)g_9|%(|k`AE6Hc<5eFGjSPIa~9@ z*PA=tubP$_HWv0!QK=il`Mv~-SJjMBX(L(GZkg91;T=@*h;~WiF1H?t@AJv{jp&NO zq_qC?^EIrW`G|JzA2~cQ(cmYtYENl=$*x{N9Afy5d?abWb^N>y*^CjYX$K@~P4n|pp!mEay(heB*MsERN7y-HqK@gSh^5(8hY8GO zEM28`q|!sFy}MrQJF>H^Td#xY)!zBS;O3bModN?!)q_9vJB5L)E_ThO;!VIfIA^+( zR#sM!uIhw4%Z5fx2XOg3r-X^#(e1bYd5Zq=(gFvFJIt|O%Vif{$e#XJY71V%DK0c~ z5WYj<?=TnTyuNh@@;iVZlv^2wdAlw)$LPi>e6s#y^3J=?&iruimYMSG+IsblN^b->~M@McM!EwdHfD z+nDDybCR{5Mr)~}!HR%rvQ)dD zjx6`%##)eIY#V5KFPwT6wD0#>vOJgaXN`V69$ju!nu?9nXXT@b z>S~i~EBvS(%XGzhS;sfQ{HuZRYIa;%8Z<p>L& zD>W}oeGnITNz6gA(8>Eu){eW6xsJ1*+y5frS+0QyT8$y$`$Q6`%82SVX^r;~1r;Py z45WdkO;uzGY%o~J>iKjh%!qp=xLrqUTp+Lrilm%ST;~1GNj`6+N6{N;mdR3XYtji834~v zd5`n72u}wx;!bij3??cz;29@U(ldtto^Mvho+0_I+%E_*R%WYF$Xi@-YR^+uDZLA@ zmxzfxsg+NG$j4?E6`MqngSyqW*xR(_cSPkM&GdK_Zu_QMiWj7wnV(_N4;tqmpF%{N z!#;+NgU2-}lLxeVg2-H9Jo3q&Du5IHCGslb|F!Qr1X<`WvWpZY$J(`mk2-Jy3(Xxw zv?K+YnPw^rYyf}|0FoE@CTn~hR%kqs%H|S5fdOMNw$^~%g)ezb7AD=2Vx#qL;{X8M7LbSq zlm>xP^X#o_;Yu1^UZTgfWla>3kT3e6*nUY2Wexo7CJ=5>V zFFa&{Z{O&%qicg2EoOtp;6v6uEaYXY%lG&Vf~$`P%%zl{0gKn7^ug(5pM$D=-KLye z7EjgL5s#DeHFk%SN*^U0W|$(8x6iUzNs{o#>sUMtpy7E%(!fY~0uwS5+3)J0A7p?M zln!}mTRUt_Gy)c4?Qn!n%SYDO5s9TYvPnEx45&crN%v#m0HrNsA}$m*(=EWQm^tFk z9(;@$F^tp(p55d7_Egc&7vE5~%qRRyqx;LVMCTv6!hMT`XALbu--x(ZP@{Arb?v!m z-PIO9Z~6H|E&89?|Ls>F;V{g4O$hO;WOCfUA#n6C&U&zeb=mTyVxyz-BMCJY003iO zW&X8^Kz~pg(e}5+*VGX+mR*l*-^H{qjf?K(X31mG*lgXaW&|5DLb)EH`>C8npPT)_ zmd-Ug<@F4M+WBsMzq^gwb_eUHjXsu`h^u2W2tQB4CpgPe29JiTO^XB-W4-)CP9`Vh zIe>hwR+}yj#4~sdJ0qVWEtkG9(1*HQ^1qxnOl)87kK;^#2N0Y%!oy&w&p?3D^~JDZ zRK)2W^j~=)RV?L@25&~EUio>L3iA$p2^)?mgx`jtWvmk%M|WH&691|#BXlzhh~}|x zk+6W3KEGmF5+twvGlKsJ&RGAus115d=kZ;?N|zY*;?zjwir3-yzXWO8cMpZS{mMIe zz14vCKZ3AdTD&O=WP)?p0%kPRRGhUt3@~{u%Jp=v-o*Z zR^tmT9CDj4MQIpDDH=`Y+(KRVJvPgk)dn}LkVPl_swdO-tmlgQ09Qb$zX#lUF0SsL zV(XO1VqfeAHRVoqI=^8si1XVm`q=Uj_Hg~}l%11Y6#6}jB>MdeH`5}J6G;ra z3bgL7G^HvplYUiz2)cv&&~@=zQ}y`gE=S754V7+{p8R5YraWQ2h&4R1I-b}CIh0&4 zk-H@33FY%itOU0nz0E!$$QNnKu266wl1uMzSy(;M?@arJKOKK|oE}rTyq~L!ZA0M& zt~c==R3aCf3&A)4%7;?|{GW-{&}=jN;7beilGFke9;7)RZs)+^u4u*PFq1)&4FI6# zV-X!-0hgoiB)$dFs{QB~^vaDp=h@C+>3`#f*(dO!xHbwJ)=<8lqfxGps&U)M4t@6n zGmZZ080C$Q8C&{RkhM+V$xXp}VH3=;H!r=k=UUDh7M)NbqaBz2=nYHFL>*-Z!NZ#z zaNGIP>z=DjmXnm*FRg7dQMVfG@y#y*PB!^XL$>SeJ0RkBx$$KPp4TUIQ)d%71Z;wa z`$QCGDU82Zv^jaWgC*T5<5A(C+?wub8o3NUcMdDIlO_%>(Lxj+`7M|2O&i=VeE6UA zg|#%!cO;JmBWjD-aqH8|@mAe&QhL9tto0KEEsu0zG>5u6M8) zO8(2`fra<@A_zu0Wu$Mw96r7YwXxH z+*Z;TRhA9-pT1l=cq99a4=2-slp7S)rU4DMa}YrtA!(QxIO+nryAoz)mO`fSA3#(T-C8Uozs8TUw&acpp|ZQC-(kYxOkq)98>aS z&(_F@JibeAdyXJy6R$Uu&{138PJG>d} z66HqI6LHH6yqw5pa1v*K&w9W9?B~3^dSl$8CNivn?W=Ye-c#AAZO0JhP&-b2;N`KY zln{)|kW??XbEOCvfl{Rlshu(%>)SrwjcWOd!IZx}j{oCiVPpG@X(WYrh8FJ4wd9AE zf|eu3ifVd9TxHoeR`lxNF@>#WIO92j!FQ!VuCv|O`T9#cW>HiHR}z2cB(N=?TeR^q z(VJ3AjYZS7c?bZY`+`q9*j8hh{sn%p$#%5d-32$&ikO0lG(u+I1uq^%S*@&NpqGQM z4ypV!p`gwVWDIz?H9@Bo6ys*)o2zT{ZYeKs>kI1H)Nwibxz7zsq<~MzPW?wk*^Ec6 z`ZMRxyAEEHzRC|GPUZsbJ#fOTs?WJgXdHo518Ke>N|H$CrNsJcT?A*Brjc6K{~b=9 zZ(*2=$?cYW*((JKZ`0ULv~y_kL@{i3h|etc1pu_aNoyz?JC`?UBf5Q?>15mtGTcQ)QQ~OpKc5*8FfWluKtJDQqXJblC8@Z0n12w*@ zZ`-oZ%HoomUm#KEjn-|5tx4m7t16O0aT!gNh7zcjoMv?D$TA8U8GMlBibLQqrilrwm^x z)TYCkQZg~y=ekv54-)9nsNTxiU6MX+k^dpa5AOmhJ?~8 zE%Q98;Tip)TDugL%}r2vxPuKxz}1(?$*D%vFjAG^wW&*Q+x-$hkhhcMx9Brot~3lw z8Ce&VR#~ttDQxH6Y`vW+P$V(vLBevn=qItte_uXP^zQu0=E6UkPSRF%sexnmhp8Iw zf^FNMS}tOSl1+GY`J`g?cN7YWrf5DvwlP-2T6|%OMLOK~_Ee&mK&nToe)IEUYGY|p z`sxP1c0sP*^s4k!xzXk+uls&Tw9b?AgVl69sse%ZlFV4sIRDN9J3G9xgo@06`Eu#H z>$xm4T#%Se8gO_8j*h#fLs?IZJUt6~1#kiYAm2&>L~gi?+5Y_0R9S??N9k3-}uxs7X>Gb@kQDZ2Vf4Sojdqdr{}ga!h}QGAA58 zCJox)(yMix(*j|6WelV|QOuF2(A_Yc_2L(A0miPG^@y~36ncsTlKFX#C^;GtUc70` zXs$U)VaP0;sYlu@J|8v|xJ~ClwqWU`Y&uF(hSEe#{YZ~cZ4ul->H*3tC;Q+<Z6$SOG7#ou<{IHPO|CTSS9R6##1ZL^96^jj1@V@U4r ziW+NA9<C;6;~CtiQ`@;}RD4c(_c9+gziP_!GVH_s8k~Ha=h+`Wvq0G7^-eGxi+V(v0HR zmRdTL^@K@PT+EauVgmpud77UB@XM&Ed*$|4gx4)<(OQ8R*nWjxKw*-5b97H_Vmk!h zCJ+UWjt z7l7=Iqby)9S%D*g7cz>41ZyS8b`b=PWi>&UgyMuykRqw<|DJ-#R`;sOf`NyznEmr6 zInOjX1wfn!<5;^KVm+5LeiCt9l+R5j<$SfS8(M1Sze1JZKK%y)qtde+n0dD{>l1>hB%Qm*^q8tmd@8`xQq9*a9bo z7A(zqLQVHm9X)x`qH=;w=lf`}{Wk{M^a~7W6N4`zNV?kx?y4l&9pDd~=D3Gr01xgP z+~+*Q*SF}W;1sheo*~*Nc}2N+K)qUR?m@SgwFvZKv#GlJ?%s_bCE|#u`gts|1TQA8 zVrKPr5Js7rXRraxRXq}Es%L~I5U-RVU{Voh{gU9<$s4g&-HlcfP6bpznn>^J+O3js zQH|ZtR`Jx4f@|fdg0Y+#nXz;fpiMP+S1Z?FLJ1#^uj2W_67|(fdPBhO3ujt&8Cz8o z6~8OU942y+r`D_}1*u?xc+RrM$FTISQc1pl5H}BKK4k^cr;8hKQte~cjK1bjWO#i1 zctA=PkSDy%B?A4f5@I!OU^@}<*ZX)``;S8sjKf4d15z~BmK4SF15o%dwvNA*1FcVt zR3!^~2F5x7puG*u!igHw{;^SDHai`o-P96EAIoXotUkI&Si%BruK-Q2fK*e^VOCF# zL+d0h6Z7)PIRtR^vIi6_XT>_#mNg^jLK*vpL)1{2A6D(^viDC?nNE`aUB($Bp#*i z`>1}X>J+r3rk5*Wk(vyW!RGcl4fE#DKtuzCig`%CKMNHL#rh#22*Yf(gU1k0gOg^O z{(@Us0Ae8+|EtO&4G&svWS_}2rC%CpiO^SQ@`gHGax9_OujRRoe8qTu#!EzFd7+NCQV z{ED7Zaf))3%$W+d{C+tIFd?xhK8ozg5?Xz4mQqcl@Dov(1NQ&`<<8WhG_3Wu^W)JC z`pF6M{^Mpdtd%y$3XIcm`d?;vM6}D>qRB>N0aCDJB-CKycIEn>X=5nRGfn?AEAsGG zJKAzmoL@d{e`T~T0&P3ilz7!fi!x`7Z|h~%zW)kS1c#ZSbUYk`R^?umkZrVhPUoNRjAZ zDL$+GO~BqMTm-vEkL#s*S=5|dli+#PY%jUKx(zML?19sXL#_WFC7HfPovTiTDuO)` zGsotbv z6(8AKe2cD8K8&;mYG{iMPIJ{-C)%5Po23(<98Jzr8wcT;LCJ>8nJ5wv0HBnok|sIo&w%R3 zC+Ng0DWYFL8EKm~B@4$vTSYi|F76jh!6nHj5#l98n;yT~LcrjuA1CbD<|}c4Oc-u? zs?d#3x{090Z?--k%`yMvG15G(nEFNdTkE@k9XX!mlgA_FphVMX>2sGKWGPDQi4xIbBGoX)ET>$({YGYJjKS_bW* z_?x3^q8S-KJua0m&BLnFd3gh7Nw5h{n}caM{jlZg#wzVHzD}BrGbLjRca1n7My4Y9 zlH9nt{BTXtGyBbfR=G65&vr>XX;Dgb4R*+K*?>w=;g}iTJO0kzu%1CNU<%O8Fi|Ao|c4V<< zOD5S>&JC!ub|uTgS3pSlN=sQ&is}Q0f?j2@ve=5inp&yS*u8AZY4w`r&UW4}=eMFq z=6Rh4wI8CCaXgv5e>riZOX!_0<$T@wvy=M)UXQOJJkA$1dG=Ce$-s+x{r^#?0cjsE zEpRXiwDl$%#AmW8NwJ$>K;b!>`T17LoCGQQO;?Q3IiRgBLi05blX#U#ZrgL-gwtqq z-=zE<{WP`6on(glI6R&dD`agnoIP^s>V&N~c1*$MZ)#p(gH`Xk$K|e zW7rq}UFM~8xT;QaH%F44KF+YKg3%kwzs5#i$#h1cYPA>LP9?H=b;;Y29u3Qh#SE@Tx&1_PtW*1VLz*ynb{_ zL7IzsZU~)^i*F>UoJ%v&#aKG|d&jafYKc+fOY2=Fwmbw2y{tsZ+hV^*mRX1;?`^Js zEA?Q>TjRrOg(FVb?AK;zpvCpDZ-_9!sgj`1#FND&?2Cg2qip~s(Yf@DZhYTJwbslP zu2=S;z(1UPaAs#@t2%a$YMG2}E1mi89HR1uka_qPwi+ZV4I7UVnbQ+VGVx^XUaRNNKSM z6l`fvuQLH4FnuoxOUq#r+-R!8_X|)zRAFs46(5+~BPlmXHJ)MrY0mBDZofG+G|sE- zEKKQIUk!p|M}IQelId?)dp}ghWKH)rCt*!ADs(B9mMyb1C>Vl8ts%>&>=Bn*X-83z zb^iXnMy|jXPMtF+vrjtJ*uUx-LC0HrCyA5aFO4@ zRsXPij~+dHEZLQMI!L$HIQPO!CHBDugfqdaRQgavq8L|DMW@80hC9#Y#>i6dC!lzt z*ifhTV)X=WL5!eES6?N-*cUZ4VnI`* z&iXS<6s%q%p!n;*9zS~tRldM zPaVcnOXgA?i0h&l^nbkO57#p&-^t)K$MWO!mJ1rJmO!W+vFMtD?{j&p7 zAWKC-PjgwJ15e*W0IlV3{9bQrQAa#;^}XGPq+^L2%I{H1cbc~g=+UntwD;~ z5srXJRKEDhGg5fk*b~kM!K|Uu(c3x(`^p?A7t#bcWHk|m(zues=P5lDmjBd!nQoKg z2>&0p-m$$BsM*$Dv9V&?wryj@wrzK8+qUgar(@f;*@^oItx_@E~MF#3B@ME>TPwG6~YduA-~XCw^>S>D8kuL2|s;nIRn1> z?`@M*S+cEU(hu;m)-L)8$wV*UsDj0=yyC+qwbIKA`bJ?O@^-5h@u$`3tcK#Sbx4;q zt-h0$6x&agyB|)30&PwO#wk3QMa=n9mCykNQWWdAN&k^@VfyR2h)hYbHo8MLCyQv| z#m4qOUqVEhuHq{*tO0b_%UeaOqIMT~gwkKF5<8ml zZ!7=+tw=OXG}bbt43C&#BAh|6v*JVmZt3Ga7Jeg+E^vrVc z&9oDVDcIn(p>_9W00li26PTb}o~W$Iotsad*{h#f2`jI$?YZ7<5PweOAphl5(-kWi zb5%wA)}kFkxaPZ+U+d{Eh6}Rb{4sq_2FV4LNX^l+-Pp&WuC@avS3+Y(seqZZUvI4` zPx-C#GJ~F2&syr#uO422VXojuQPz`)$QLuG*sB9n>NLs_&$s*igO3Q3R>d_?5_0}3 zvV045;g3@zI-LZiRdgXptat_6Eb^H`&I#n`8=s(`kK!69UY!rNU)}4Sb?`klO$0eA zo}j^IJ1mW!7v*RsX7a=rsbLyAU9(c1#(kBVA$yCBD#K}8gw#}&B*T}U5b07*!v!LJs_%M2sp5Cx7F$z>4CZO6r3 zlOr7Z^6|1DD81$p`u&CeC?rXTF*sRwIa@a88a= z8Fq*1ryLtl=B{P^j=qTUrxo0$AF7#I#(^P@KDN__rA>;GU<+C`WsrSQp^AQsh)3qa z#x7$GmDE(hdspKQyHS!jw^1yDIo@pKYmlU=%9BV4s^amO!U$D;l;A|gO`_+x;0yp- z*c7HXXaAzvrl6H8isV|UL`kIWxj8N(gqUCYEOp^lsi?)v%j=Qp11HRHuNn9unneVF z%nXnih?X&_d?&S;&%F3?mIrjyemwp=iVqBwTatQOexrVRE0ALi%eEDEzbD&h@|3IKq-dI`xT zQ5-_S@R4LgpIu*(rzuf_KAVF7R@Si-Ruh;`0^QY3eH34_+qKeCrG4ZP+J6<8Sm09= z{6)76Js9EUbf8qa2+{ArljtUq1wBNE<0d8iW&p|mj9}_SHYlQ$teNoTNWkw%uzEu) ztJN2hz1gv@)V<`kYao_i(io!1U_^2C_{e@4Uq$sQ1@Xb7!d{HOmvVgTb-0^ zbWn`IqlE|p0KnYdBx*RphS{@{73VY^s_eIRpn6yK4#a%$K$$A{u2gl**dqzFt!dw3 zhipdD%uZKp#=V@TFa@PQJ3^v&@47WF9O`o()3t=%+)@(@Klf0u{s@nnwppTytCENP z!bB`RIC>wMq#-34KB15>K0J_$#U;zNAdno+z7xZYB z=sfaVvz_ravQW$iwcq6`Y|I3JEm!mHg<*oVFUp8)$)5dGxVttLKF*wwLKAcQk_tHR%+@ z0Gt<^idlNZ|CP`LH*c}nQbXie%#7=mHlgZJZBDhdDqD|XYq(L2!0iSQ007`l-u4u8 z`izJ1I~nq)xo!Lq{VhHA#Rh>_EgI#h+x2ENwo}r~F`>h=)1=3aT+G_CBvQ-$7BQ@@ zmIRJ{0RsG*`npFuatwE6&FbTF>ax#4In0Mbt#HYCQD!IAeX=?c--#ujS-s-lthAqj z2BKt1X3@n}KWQl@-+fVXcYFTSKRh=T6uz3BvXd>qw$jgWMF9YSyhoA#W*o~hr>!X< z@QdsZXqx_MvH@RKJwl<-}+Y*s+RXknyn@{zR+*dLsW=(1S!^LK1AjaEq8 zW?w}3iGhJkvRE28vd?R&qt%pv>&8GTM%C)KIMcJQ=SgX%woaZs#DHR4sOvx!#`U4^gf1X>}tZ!(0JfnZMOE>zciwp^5O%@p^Qj* zC76PKP}47kX<$9Xf9&$dsEIcylK>ESz@TKAfrP zSx*BQSGVw%m++aox6GQD!zTTv5pctL+Yb}ertmUKK1_2fyIn3aWmN$O&9;>!kAuL; zTj+ZPyd$>ns3&K{dJ1}`UC6eyttolifY1)?a-U}NR8NS?lGF`NSxtRCyvYgAQAv)g zz=>Kt&bQZ%GsKp@k70wWxmEkxRJ13^_e7pj*|04$A;!LgLe$7inTOr$U{ zR^cV`i}4gvX@Nl<;oBfk-S8KPoi$q_cpgQ7=JXso1yooEycdYo~$(22lGV8*d{ zZ~!>M(JFImfW5!_5%jf1RCk*AYg!1-RTcp9obrc8V~E7*5-*8U`nDTnAMm@t$$SJM#F%~#+Oz!g%fAMT$$tl5w?(w44c`Har@ZW`Su21!AN1SjD63Fc&9GSMde_j^1nsGAN9|uoQS> z3Kn>|a#z|v(HF2?x(2>Xg8B<>E_F6$VrXdWsaY*s;HQmux+RyIl5|Bwo1NQkuY7_sM8wA0HyID=!Zl@=xBonk3i#_9rBkfJot z!{FES3V|MqL$6qtCOvddLrq_`0@gDZu_8W1c-WUZeXEiEXf)u-{|s)oKmF!B4W_H? zPLYyn%fklr(W)COSnV@dmga%4dGWO}6K@x|6K8(;!*BYrI=hw6|@hEHHM5~+g_nzMt?G7|ud+m`?$CwUT^Tb7!Noz+WHGx~MY$3LeN`&O~; z_k`-HAA%~(CZNE-XgMXWmy?3?pz;+@%6p6{X5=zaMJ2986m&PxDCuAx8dxGake#yPJjmwi5Rb78X?Cn9Zn8y11rL!HoDwvP>dagnR% ziCMGnlxaXiiQgx$*-}8;iqdiT=Vd`lsW=>s$H}&GjUCkVm&m9rCmePSG38N$6~y7C zLhJ5~Cpm4@k|63`Ky??6nt5CL6nq!h5h7pw%ChD2RE^nKhlDIWv*tlgC~q6}b;?vy zQr$mHk~jVo3)m8g#ifG;b1iiZLn1-Du@wadr?6K2R;RPJHSxUx(dND_Q%e%GYsgoA zk=)JjI?0E8iyxI(H`GM7o!)^NjUvT}V3d^&3Z`uCWMkTo$a~GPFV`rcR&pat#|qSE zabnq$?eOAn9MASU@FEm1Jr9Ry6kjinxQG|e_?Mm!k82@3H zf~+@k;V|zLgO{NJ>)T}^1~SDs&I)47HFPheYN@p^k_uHEyQ zoxiuzWN&i}m`3FvvR0i|U;qHUpJFmiG!hjF7lF$Lu;`Q@z^HO2^&zUCkF7njquXo4 zI;NEgxcM!m`jZ?y(}RVxtteg{ z4Tm!8q}0d0or-qh2sro9>@*1|2d9_0Ve`zcv-aDZDx>CTuI64hh8{MpDY)YAzqF~u z3d($c1E_^@y5@!UQR z*PTl6?I8APrme30bTgAL@7`aolu}3KcUo~EQj)&x3uxaRf!x=`U|LNJLJMdoHQ^tI z7#t?TfF4dY#ic=)+WJLnKU9pu;EDsI7u}=yr!JgeD#jsostN6JQ{=BQRnwE#he)HL8ENu^+v!_Ny|Q{LN+m1l zLcHLQNBl8^f36aB*iRpBiq_ko&j#x1^&+e9DOVUjmHxYygVf&ue1Eh+g2x>vXl>x5 zNX%zVT`t)~4Wcy%TH3RCh$%K+Pru;Vgh=}mpL^o>veHD0%b79TPG=Y>LoPV7upOk( z;c2KEs<03ktHlM@g5)nwfaY^l_~Iw7DrAZXj`Mh4i__z{boQ&vB-sYdl4A`YC+~{RRb$$&8|w{#8_dxUR;NOo$?$FMwF`3 zD@_jHHUBuUh5&59k!jdsAbIKc0o)e6<<#j71^?Qvu^-h&Z8HYNK^z)EtYFSDL;y;M z-8*3U=b*IDlA4tcD;c5mw_+So8z|Mo(>&4O+}=`s2HEwbLD9PG(t5M!=# z1QEDini0iUnpb*Q@|`fW2?GC82xOO6z(N#+v3Z3ZNpLJI<512@)N^P7Yf;Gd)H*8s zt>N5!M%uZ_&*4Uu1733asNdCMOeV}|COrViETuXPn5v!VEQClA!eWvZ12XgljA@$8 zZqHquRhpIZhVb&gKiWtB2w2z2q{fu=juvduHoa}{ysTyDdXI}gB=<$k*vEf#23f^8 zcf^?b-N`G?_jLw@vH$AbR!0^5DY(>%I(_}(tLC%uCVdC;MwC9~X~q!wPnDz7+RVNn zB8yhgQ!@$80U6lYT9vI%$}`^}MP|PN0O(zM%abSRi`^*#TGQYKCVd`w&VJR_%c9Z) zW03p@KbaHAG=^L&|L~uF=xMUzL}43hNY2#N9Ggw6#&+3QL_~-S;>}rGSmbS4!z3V1 zASJn_XbPx9qwRH)pXA=@Img3OZ5NN&8l`z*;lbP`Q^^w~6vBneg-PMjc=pt>{W>#Z z5COn26Y`}^_dIkQLCR%@>H1{uRZTilzf(vZtiyeYR#l`41}K*>x?Mn_>_#%3ASZJ; zS6|JR1-SFyomyUH@LBg&pZLk_GHvbzikvbXNBoXEPD59rp&-#`*VSp!0nGeajbRCk zMxs2e&Ctt;A`TpHqm_B&Rbn4zSRc=;Rxx)TfqK`d=1_q}HX7Eb*4+O+_zchdDvL(> zioJkNamXQ$Kj`iwuAcf&j3Lw8E^?lVuUH)qN>Z)c!}a+I6M$E4f8UL)b+kj~#v(qwA()*8bT(?|M_D zH64=|+>EUan7^9xcTr)gvhx3(_jQ zOEIwyW*D1FN?KD(#=t=Gm(?^k6hyYfg#T&1cEgYDD{uU-bOSCr4b&AouR6~T!bJ)~ z=K&6J5`-+9xR&G19@*F$+K)xvkCMk2ze$I@0{e8v_=<}RB@`HbtjH*e5B8KxuMg`L z#rQfFI3PMtn4HqUvQ+JwLiUo^Q42;Vb@f3s#5o!T=2#F@e zt|gv^ZX!tK$;0@Lr{_w_c(w_G;@s8XlFFpgfJt;NlI<-UQ-(u5N&f6QWY*#oqu+G* znFG_NZqNq_-C0z^sB;ezB~SVfK$DMnkLTl=p0YxtlwDST1KF!XxJZRyVO zWvS#=C&=2GGA6=~%W(OUJdzsqvgJE+<9J^tB{?iKbSwFc;a03PhsLg+jy2!5uGYdU zy)aM0<>3j+f}CqIimMti%@n06USlG2qxF+Zqvq3K)|-^Tt+8y=I(E_uh#h{6rj?r# zRcGZehb%Y1AkC4fz^XhXVh@D{&4<^O5uPgUMO%#fEqw{Q9qL?Fb>E(%=W~W}v=fmz z*R8qTUsIwjn_b|za&8&y_nCHVBrPt~Z23%oo4FBo_SLj#90!qva~($`ies;!CRZIk zo4=8{Xlpz+!*m~YmTWLNR&FjoDwA!rxVNmB%Zj#f6itG5@@ilmRm?zEAOo3d#H(T% zbqU9c0%Ek7b(N20cg#4AZzQRUGmn6YlhO#W%~iP%Lk8^GdPGe|3LAFJqQ4c0p{Pu4 zaN2Y*^o(G~}X^;K6{ z>A?eusiD3l33w2Gtd@1_qf}^9NzfKgrm>YNY3(gNJIIpjnADfsSChDx;kJUPRx!o_ z0Am0`?wG+}i5w&J#0Q|phA9i70__&b!sX=MFb#v{C_J4^CCchStxJO>@;^JYgTunk z?)uigm7Ey|%MCB1I*Y%$Y`PBw&*UDF^H*L}Ennh~ImR2Ks0^fJ5NaaEWnwIb($M5z z$y-((b^v2*mdS9~-$_xY%4w!@gcM-WnT=KANy=$gGx;$#Bug5vPt9OYQ}k%H ztm=u4m+M<1cTkLl$pIaA+S4{W4}yel`bY#Zk=&Mul$jGn($BXxaY8Cjyo#AkJ=R4( zn)?{ytCmzUxL`-*Hk1F2o=fO3($%9Lh|&$4hm?OF!o68cyHEJ);mTVx`~^dNwpccsDGJbMn`=`VNnzv+m0`x+0L}9P+IRtLW*S%!)pu?&4D+A zgAn=kp|dmnNL0ixbD@#=gGWUE->(m)mfE=}5{s#_azkcfIjRHsruGaygH(C7NEz6u z0C4@!u=;R4G@oD1wmjwN^v*6B`{_r5V!J?|d`7zO>=SOvObCLaab276R z$73`@4BTJhn>xxIyj@ac$9!6|BHUDbrezj>j{fS?t@G-2is9@^p18Y#r^E^S{sw<3 zOpJPj;ty;*QTY2WAJPSLR6|g#hzSM8vw2383=UI3^Jh}L)}Ox*J>Q>l+#&#QzhDr2 zbpC-^`9lSoZBua5&cXdb9e=_YK3Zso9Fs)2*z|y~7!Ji==C|O0i`T&@B`S(^z`bW_ zK&D#hicb4&)2xKs9XBHHq(#f;dg^Z9R>z+{njaM|-Fi$~wTeGHT{e;|Pj!tLMI*$M zWjZ0PAnj~%71+E~oXpee9ExiZQJCc@_k#hy3{Wu4^# z)gEY2PFfajyL2}tA&$8*zL%DH-v1hYB{3ZK@GD4!F&N$S-)_B4%tzGsREH(JYaA?; zKzl#p?KE*Ieo5nZInV$~M zI%8?~g{-+!&FrTbj2S9hS}2zY$aJ@ziK_Q)1lvC-Gl01VN2!;D4DFd zEuF3de(&%%E<{8*xLoECi6J8LTz21RyL;$Si`Sh1Tqki+Jvcey+zlyl)oL9s%JZZs zV?YE;^>m$QWI2-=#UBq6@uG;&Q4fbts4f2PP^qx`@9djnp;$a8(+xf&;0GUS3W2$#f49r|MMfkP zdL61Wy9=Ca=qN0y+j2QMnny~I9kc7-&}LKwsj_pM@;pUYiy777UKV+{uvQ={42Wu* zc(v$+6%sW<-`k{|!|^^FGTpqZep-Z#nkMyAlK)1&3Io8a7-CHrJ}ReU4emGFEBo{L zXA@|b;jFCY$x8_Mqd!r8Wm6`~*j?w>EY00wvgl+vo0@6bo)%qCtDSF_@Aq8bN}S;D z|L&ogr?s97qs)>9zqw>_-UgI4v$ZPog2!cZhfs`X+b0I<2ip*+hXpd!XaVGZ}ESBDCZ8;6*fs+2Do zE}ibuHy~UV{G5{ldd*23!DQP>U3IIJZQ_Sk{a(uhmlp#UY1C-oKPcwEZ~ae)iNBu{T72={12m_z zZXt80y1Boif`L0v5;7)0q26M1qc;*!3n}UJotYvqxA_`K59BW#8*B*FCJpcLNV3wA zjmZ9;7gCZ4IowvN(i1tnGg#RbIb&UpB`NSo#r={bg!tQLM{46cDbB5=Ck_AwHw$U# zjzK~o#6$vsr+-K9gRAn_kK_yd68YjH}BXW3{e9 z7cI26DqEi9ZobtYYgCc%b5JM2F)h@IKF!s2)x4P6>r`S{*Rih=IUox;QRj#&`RvH> zIm?i=S!nOig=CY&1hOm;$>LPe;?k?uE24Fs zV0)_x+hzukzyGr=PPD?=*H%b6-ix|U0MjgtbroNe@>vderJk;?t8 z$@CV(;WEo1Vinf`kR)LgW(sKXqbZx|`mr=w;XS6;IJyTA&|zcb=`j)8J5yF{r|`w^ z?b-{eVT#u6oq#L0gKlp%40p#^{s`6YE9uC3E)%SFeQ4LDsVrb&10{!Xx;095z)#JN ztg~%q=+=z096-xi1ljEBDs_m!;Qc7UZ~Z;_?^2)@y0+=!;R3@xH* z<(S^`=*2SQ^|oxS++d`4%U6^>P}a6nAXO{F%{5G-PVU+mbNcYoqVryp@D>4}87ZBo);*2EmeBfjZaeuOyCcg-6j({SRc{54t}Y zc5VqlN9Ykp-E)e%5q+s0-}xaJM)rZk#9kkU`d>x=)mOueP4u!aILQ(b7 z_Vz3uV)89av=L<10073$eHQ{+akFNvDn0r?fn?!Wi>Vq$mWC+Y3(;LO`cZaYscH#Y zHfZObo1zYFqD42_K@h%d)(#bcSabs=-86t*izNhRFILX@X>RVv7W+8wc#Wa?zdBQE z?!TJAGE%pcu-zNYZ}00Z8OnbRZbHM4pk@2-h9$O5_vsFeJ+nRXUSAEDcrMB&FaR1T zkdqv;<-NNZp@j3DQDJ{}AbSIGXcqVDm!8JBou6OM0AN6$ztkI+DX&EWpN`q4mtQ=? zqx3GVP@`$J+D7T9Ph9^^> zcHCe=ZG%SS)W^aV40v9)6E1UCPU-vt%6RS(PPV z{;@u*i<#Zb14f``UKAFLK-G)7SthVuchC$I1c1aA4#@{f^}5Jh1AoYK^3zsU#?6Wo zYy%<06LQJ}&+uzeEI5Phtx)3WbNhDN@&(&o_u4_jVjvG|tGSEi=f1*)zKMs1P-%=- zMO@Tah}=2o7;2`uqK9z!jK7su@CUdQ7!}X%zZJRMP)j>HY(fbm(t&Uvmy-DEPSvMs=y4BsyA^dBw=E)=$5X zzM%pD2!;8lB8HS(@w7!mK#WL|-U8c5=fuiZdPK{lUmC>_y!CQ-{X%(AlU7OC*sp~R zv>_)ggjF3+jY5@a{Q>$*ON~UV?A|%Arj8VcS#dzSOosx~?=`b9Rq+L(DOvP?dhxR( zzs$A^bgRu1IT{s{Hl7baxD*^0^go=$)$%gd$3Eh`lO15KY?k06I;d(S77`Wo0RSye zZjmg3w8q#g;QX-(dP!Y>zOBjEA6GiHkvA$+_6B0f5$i7umzC%V(c(4~L$V9a=)KkJ zoBG>2BVxmX&$WgWpE`~)Rcala3i1&qO~Gr|Z+4`a)?_S+dyW~ic!rd4THU-gU_MM7 ztA&`$d}>A*FdglWJT~>#UCrl~E#GK74R~JXf~qRptCqEW6vUeWFBQBa$84yBGF|Xa zH1Fx+k4T@0W;DLON3nrhFUp)?ibOjzCY#QNIX9)$3=;Onpv#aXCYfYgblznqWv1)6 zg40E=b_cp)#{!c<3foSV-PN}_&MFeIX$-5cT{8snn{UQG%h_@r?7xfNo!s!dX&Nk+ z-oPqSSdzG$yE2~8=5*wu3ki4Kv7v^{pnHK@xo}}}+fYNi#kNXKB6(?CUiOu$6SEv^ zb*P~~R5b(ytfVGklM2d%>V|DI|H4L0#}aWmIqX>0&Yc?z%&fc))u-&Pn*Hr|b)(Rs zufQWxxHhb+sZzbB1>TKa}$h;0a@faT4m#eD6rndy^!$& zP%*Y=SY}SO$i6P5@^!o8*rvUwrYT5CYD|RWA8@>|u14b`TgE*L>ypWp0=vBa5ciQF zS}2a*l#tL+mqT{-3@vX@i+KZ zIfk26aV^z6xEOdmq9(&Jf| zkuC|TH8fb$mE=N|1~7ixI7g(B9~HwM;Ogk8OP%B>39L@b0SoFSX{|kX^>Q)QsM2hl zy5i<#yXB0n2O*M-4M{ZX52ZFq+r`+h&Fnh4t~+z9N_}(W({t)}?b3k1`njOW_70I4 zBv2YC!cxg&JF9P@ljFjRI}zBgTFj*Q1gDjY0PuwcRepY$`XKAow0!x2P4RsC0= zOz!oZUJzs3poV9Ba<^eIGoE`eK;tAj?%Qyjt-?6{gauidE5`KfGPnU>nO4cb;k0?$ zJU$j0sw#0XI-7Earf{tt+}n*CnXiE7eaN^^ZK+Lz+rQNtsD_!s*BwLGPtV}0oLQm# zk7t`~EJ>!+j`=Hg^eJJE zmD$h-NQ9jtN9X?$`hYxKWVwZV!9|v8@24ghk)?XzU~SdpJt@(Aqws{^n#p8|@5_b#=W6JYZ*pmf zR8qdUCirb;Li`M4yH)X5W=!V{$gil^jyGd4D}85`^EC2Y1ppv)R}&edcxp_-#aUG3 zChU7LVJ2!9h;Zs6g&rwIh#r~hH3q9Z`4D7WlLoAodr(l5U;n7VqpRx%7u)tUB^JI* zdoa+qv6rAZ6qPoeY=O!?P7zbgN?IRT7`}hLW__wFb)1=;?pkdt{d$Ss>COTnl2P*h zyoSZ_>%8t)bR26;jDBB>Lq07@9gI$2xSBVvY_xaXIh5l-YKJ^dC1mJqRtwM)`eo zyP|!H{yVz_7>+U9TDXvKO|iFA6O4)ig?rdqHLb@eHQy*ak{5#`0swGcZuegj{OWn< zehBDYW*W{G1SsU(#pBrs&Qpv*=nSxmP)ilVbCReweN*IFd0ff}eew2CCSpqY$EI%z z7n;iv6>m2sF6|#n4f%sudC7A{U2R!FLWTx{jkW2_^%me%Q~5HwfUGT9?G?vhy^9Q= zZJECHyZ1}P;j(ADwi4G%j&J92Kt?+=)J!`70RBZ7r4tcZqAE{M>t3dIKW|(+oxq+X68*Z&HeM7|95vLxB}vjm}yM@WpjYH9dt>rYNpN zpc&GPC1h$S#l`spsXk7aJEL^#-!j|En!vC`{tN9#*ICd)^w>W)#!F5(p*`RaaBn zn<`^Wl7gWa+@K^QZgnVrvG7HoIJOnk2%>Owzqni)TtR;n}fh={XN z1R}Qj2qas4E9IFuC1^yWx3r)&F0lQ%hM zO7efKz7U7?%r>)6iP6##{nP|3_d&(6_Eu$UVv_6*3Xdq+004Z?*fJ)Pp4!~|1U&`f z@q*Z_(Nf$gzHcWrabgpN!z|rvVsXM9^JTxpkz^7AuXrs`a6bj#u8n>&mCCkX!w+-T99QG(l~WT z?egws(I3gAFv2K9z{6Zor3 zOHKj<ayX+WC$7NHty?-#M)JOv12dz-5Cy_lmdQx}Q^2KqLbt|P8A78lv z0;?SiE+mlPnFV3;st?pTD)W=JKLn{G4n`&O)$mXfs2=H9Tjt=j^Mk4^!)!KkBwGL8 zJMNKxm_pILdS-{ed-D_DshlO;dM#ksa-3OH?wZvV@Uo$8qEW_hYNN>%QrN^!3T1S% z(>t5U8Y$j67xmTICVYF5$jFru!O<7Bw$Iv36_|ua(-50-p}+h5^bEYqV%KE(pN(}n z-(oZSg7bHxLav%1^eMQapslU^e`p6-9zqhw(Phpw*$Z&B5KYw@UgoFdhN3Pbm zTIro*KovQ%5r#{T^WUsYsC*{22q4Jt;t}Il!DuqckWI)xf9+bS%u-1moU~fx)DAZ7 zZOfQj@>QbWY6focoP%{5ket(<4L4oB%dKOKxX-7s82#@N5t!U>Vw;XwA1+5we(q z%JGSbX!u!5kel1F?NvQ-{q(lc4HG%*?^!ec{T?@$+~9@tZE`E0@B4SI(4j!ZohcWY zv6F*|>R;uA-W8H*&SbrxU5ln^9k&J4+ijNGFQNI*T%#xJ{ge|5$uyLvATUNgGtT1QxSe6FV zcYCiMbgraTQNmQI)wM99n{xc=Ht5Eipz|Dc!?`2a6WKRhs5vK_^BiXU-;*(8tv9nT zID^ur_0$AU9aT5HY^|D>;H8>x5TA0R0RXk_V&1tlH`p$Q&YCGMid!tS8RwPwlHmfP z6bVzh2vyUFRQ<(eA&7rEU}$d)4Ad@3eCpcfuLuaJs9SgWc-A=Vn1y8V#mlZ}&~FNt zNv={QmSr*|FDoFW9>Kl_KjvT8o`=}%SKP7nd(%Uu(>nt<6F8?Qs(%h@r=zuWFUaYr zWKOv-_D1a9-CDl`yNxm6`{UC{La>v*d1XiNmmETtJ?Vj~vOE6Ua`p0j3-=}7-CN_C z#+LEO2y(yh*XJvoB?n)frVF)9HIb^Yr>(c@4>9w`e@?frLnCqQ(6wtKo6@nbm%uDk zre&=1vjtLAdL57Ydr-3JKC~Ur3U^0jtC(;4>x&LbmsZ!667lArJXG@`ui)6S3&u2V z_N5UzHF}2&bE(axS$w7s+h`V7A4>dNs?bSV1y=17|GpLTHbsemp&bYn(8tScEB1e$ z6K%^6hDiL9G%S?i!E1f|np;HqnLS!T(}N0()8bO7O-buybe^!Yk;0jeYkc+eBX2vd z#>n+rIe4db>$Ie>!AZ^qLUjZpwkZD!)|Ivdze$wXkvbIvJb^7Ple%~5U_f1jJ5Y({zmy|Qu{r+fy1c#I;u-eSN z;9N{a=+zR8=mDh{TAo#H%jvUTBSnzS)AF%oVN|wx1LdF=dbMgQ<4pw3h+NA_>eUL& zS@r*E))(;o5p+LP(e>gYCks2~#|YBqbLJ6pu!{H&4PmKiYID*E@+0)E;r zW6a(Iw}vc?6k$&fQf`s0T@kHl=M?^zPH^kXaMaK4bD@&=l1N>+Oy?7=%$EZ7uZ1sQ zjg6ai$4sG|?V9zKH7Wp2>4yR695UOPKnfxk*L@knlS4*QfpQX~L-v5+x=}H}67!&6 zEt33-$Y44khDAlYza#1PkPmef`NtY)_+MA9Zv8oL)Q>hai}wY!wNZlzgx*;DH4^5K z1-<;zfYg6?w}PeVM!cT$ccxJ%?-y{=^r zb7M5~T!>P#UCqIb>64=DdTn6#9pfDyngqS$Vnm(^j}eupqxVXilxIcLc*nQ$BlVu4 z@TZc2&71BuWOV<_glHX$dGYccM5!`pq0lhHD&?1T(;Qc_)!gk)|J~E}<44NEZvedC z1D2k$G)57Z4A1C|3l6E03}RzS2!iC}@-zpH*u$kcmPjIcaadj)r;hT( z!2F(wUJuK4R>kLDYN`n}ZZ34#xyf&Szdiwx-(B80>XT&#Uu+LJirNk&|FxGJcD3Bd zJ|`B7osLB}iE0C;XPcjub;W4>*OLPP^ggSoofN^1S+ks}%@c6N-iq=Cez*0K#K}14 zEk}$PTq46wl6s~f5ZN>5k6gDY14Fy0^b|8eCgMl?QH-sw|P*!oeBz}usR>_R&5 zzQ zfc+jDErAt_j_J`Vo0e1hz`#i;hM(^zIjmOsPGWI{x~=Gh^Fzbn5;N=21vtYbPQGkv z%o^779l4|MQ%y`^V@PBmxkF7ps^*(Ia%i;1`=L+IDPtaHz5G((rJ1V#LIEl@$ z4?NU0mDz>yA!C#;?2La5*$Yy;N)c+>;Z1klcnT<6bN{bmS{w*h`F7fvt6_w4j#D48 zF{?xZNraaF<0mqBkoQN#PPE)c5Kftw0c6V+P&`k-MMV?1U;rE$!`r@8v+$iJV-l?L zsuCe#7+1ubd{G{5C7K77)W%|Bub5-2^OsBVGy%ZRE*TLNqd4%I4rzO^RD@teZ77}WPCT+V5Fj=w=>mTGyq*q4EB*VA z#wn^0puWAISfyzXGonxU{kt&1m0R=w+61Hjl#KlTXn}-4KJKwx&%RqTtAfs>Q zo>v9;(5>EWszn9$VO?JLJNd{0^A<%#;&(plMaS_Y!gwjm&WC6jR}IeJn~?g|sQJ^Zu`5ZgR~&%`Raj*v;(2!;>acGo4R+%Zx!MO=91{&@la5W81a zFCLAFFwcx;-!582XN>+-v0S-?(hkVw&=9{oF99VOz^FLHq` z$|5>t47Zx@N(mt?`D2R?XDLHsG_BLLItvRtvr+SM-=Vwuw3RB9Jc_C)env@Ex(sw8 z@k|#Q$clfw{Y#5~$p;7tWK3}-X0dgad=aPBV>KAU%lsZB<{TK+Ckn3``##(pL*LR5 zkh*lm*6+G;*n|2>#Iq@qvu=SmCS6+FxWVr%%vJdELiC@B)zn-k`&23=;o1+~Y$ZmS{bqU;&j$d&&)4^Y9YA0_Ss^KB4u4^};~lkQS~06mT8-%{EXwr$(CJ9fHb+b6bdr(@gf z*yz~F`(d70bMM@F|3j_4s%k4WqO+{mLY^CY97FpfinLh^hcDn?gKQx384+L9$WR`} zn^TU!Ef({HXCq722l=%(UN>dx`+#I56SS_4(zpBfee@#$9ByYLS(64mBr`7Q{1^(D z-HQz)!#ikctIZU7Sd%P!7H_kHmP#-E2n7nLwn+gmnWxW=RlEadR)|^~d@AgKV9C~B zIVxTzO)XQ~P(%yl{d{U9CNSloU!NX1pgAg?+D-XORn@kx7{L?s%-0pUJzpFh;fiOt zTA8VN*wiw-3#7}rWignIdHvgpd(QT=juij|W|wL(ph?lupaF3+&_~RTVLi&hkVa4C zqZWJ)EDjZwKXob=ME};PcHAYU!aD8XZ`?9fVTGl%7-#IbKa-~Im(6OCG+|}<9yD`b zp=^$}9OPe?Pp#drZZEq}&J2{9kpE2HZd+H9=J#CR-pSg=OLQg}NpHDUpmR<60xglq zn7V^fp^{_lzngKJ!`!y1$Nn4E{io&J-*|KWj9oRs9^X?SOi+y>+Ci#*I!e9a>huYZ z1PmMi5LP_Cmq284CG(9+J-_w$dZADufTh_fd@Y`fIO?8ZJ56&~($%Nd*>Ruc0jbIw87qT^${geiy`K*nvf!~@`wCJRlp}V; zJh8s;_xr2d-y;_@+YH)UlzRcq%8j-@x4O%8fV3kW-sDS?&F9HC002_-UfleVsoVAi zm-W*SJc4$?pwmhXi2@p6@WY%NiBpVP1(P$Q4Q&&L0D|22b7Ia%oul%R}ua2P041I`2Z-aK= zP|yQ8YAy<;s@Nf*1b@{{UBTY8Vac@;ZzfTgOd<$!lRy=PWiRT&-P4#>GbCABs&EH= zNQjK5`fQ>W%ei_cUZ<{l;}o@nU&*7S48 zRQ|+2(f?>gK!#F3iI7|4HM!k0r-Zm>5BqCJKIH3?g}1lfGE*K9p_OT2WggjpD(VGd zt*{QE4tcy{7g`%O%lFJ!Wu6xvi6)NjA0fUo%TS3+8Q6(hYgUq;mCVD2f1K_Q(N0(9Qj|?2Y|Va{ua+An`u%kzK=kd53nNI(W-uWLWs2{`yq22 z4FC|$nlL7h8&+kxKc|)YMd+>FCm+3e|3@^cd-6 ziceaPOw2cz>@zqPr9Dah5w@;PHg&1q>$Lil1r_QiS+mc)# zJr=yN`9-P&l3z4{A+I12e=hpdJ6jp_DteF%T&ko8hJ1BlVvp5~fu3a|kyQ&mbyo7# zrw8Og`o6h08Zfh>-X$t< zzvN^uN~ft7J!>~?Ey)K_1|soe=6~okW}#o*=(xt0CeuAA9L*?o{Aj$um*CraZ80qL zeFcdfU_Nmh|JO3sMo0kUVY=Za?it5Ga&@$*09pHjM!bVm{YsQT)fG}0-Z%gpz2~e@ zPaP(U zN`MTDO4sv~&!$+h#e%$uhjT8`vckKHe?(R^{T}utU_M&D%`^Uv6R9$bulS>nrwLmi zhn!8T&lX9b=U2)I6$qA3D9#z@2YkhJBWTk?csc zV{J(?K*%U(pf?bkIEYFd15PyKjLRtE_BtUb44-j{{3ag@5*9wF7)U^on#f5k(8$b{ zWGYnUDtnYRd8AV5fU06H!`bO-2`k4U?p?^dYa92>MI}gp8!HhNmVAbHlKT>uWjQXd z+*kcC4nxsiK1f*?&V>p&rgVllW*J@-Csr&_83F)6+TqdMlFh-h_6Z_$WfSE=h9R7# z;Mv6_eK^olE=#UTelX7xLp=-V5Kwe!Q3Jc}|EP`oqhpI7gSma)7*PFoJNr|m*5>}g zCVOh2dX0%eM!h_x=@`Gym;e1W@%y#g%eI4tn$3V9&tY7XqStMtH$tm_Wk6f8F^tU#|Sjr#G!swcfrb$Qw67;>3*{{I&JkXpK6Rxu2o`G zqiyCEX!hrSCk59-0+0`r4Rx{*iISo(=-5mmih(RYE$s!6CbU^D6~aj80RZ)0+VxDA zcc=7_^X2qw2yN<+TVweedyg~Q%nepya$#>uoMcB@tj@wI&BSpm1$2Y3Eowo~b7Ykx z%SiQ1&7R=*PrRe1Kl`T{<1b|!bjejdeR*>aXpndg$}yoZjEU+qlGB5ih8D-C58Mf< zuHY$8Cc15)s+wi#0}g`?r5x0mIe%c9HLs~3&TG%{wc8&6x^FiVI;lz9O0*l^q;hdk z=2W4kZiI6kBgaB!J+QXOKK{W!hgKp~YE?K_25R`WCe{vZt3o|xTHRwJX@7=k?i5PM@HhI*GzF#hpRHx-38{iPrWj!dfAIFxE!Dl zv4L=(s${KxhD{x0JiU<_ z^h-z)3RBDbqtMf_(M`n=xyU^*%l!wUY#jf?ok+q+zLX?3b$Y*B%!-!~b~vi=PM-II zU)YL`BD;nMvptzO=Si@g0LjY7(zQZ#{_M@wF-l*a{rLJZR$K!-@aI&kqmOAPZg557 zu;QVZ(pzn28IlYP=S&-P_fp@cDFDFJr7u$uShjgNjme^?)|!)0jbFMwL)kvRj<;&O zWTNt;Ompa?K71S!rs48;HN0x|m`b_Akt>F&GRidRs_LLmhg0~$!Z2=&&A8KKwU%SQiTHoe@%BOZv#IWuqj=Q5V>vCso*h|<*lS*R0{Fdonv{m zKVv+rIYak2^W?{UZqoM6QiC;}K&zSmkj~Gh#?sqPVsz_la<#-757|X!;gK7yHcZtN zXMJRHlZW7qgLFdcyD-hw?dS7FGG#W!k1868GbDq%WEQUL2a&b*%m+bD^)zGS%*1== zBG`d%Ojm+-P>LNFODm_>Q;-zPeBF;l#Q4ZNO>K*Jm+sH!dvZ5cyTaqK#^@U1fzY^y z78pi3i`pKojU!Dgj~r2AB2Q5!$lCh=52s2qg+^@JJDqBEWJPgi-+7s26a*^AnSI0d zyT`a*Jh@kdvxoh1F}m$u3$TDF&meNMFGbbE6q{x1ZC_f8}PcDco5kMfE!X|0NC` z@i5O^I}7dyYE%^+x(V3`a4*r?ssv|3g_(Xjj1&X_AatTKbMB`jR*==PuR=4AV^FwH z03;(hGzzl3=Fob4SWdV2d-f5L7PMNo9|okCr3{XXgD->^w21UjMvS8|D|s+01lgze zv3O5D1(~oOSP|o{QmQ6QxY?3!GaJ`daG7 z@VDFKcR;TN=L$b8$F8N+J!sp`UWk-`PBIPFXUJAz(q$6iBQNys5!;d3mXJdcl~Q1_3xSj^269G znAo!35TbW+oT{9Z75|1n$09Jk{3?hk(BplyYERR>!;z|QneR(1OfhI4wJ{rWjd$3d zZA4_@X5on}W}XxnQJ%!0iU46$b2$W2)CUQb#`Ux?pgK>te@D`FW-z;3}P zC@wKdjlm}zMTZYsi_Uvkm7!N zo4A+k14);gS^|_&s)<>)C-o~)A}m)5A(=J+RE(YBKym$Xa6{S!kO>?wI&<8St+dv% z(*{BT0{6u6hcO`=WNLvEiqw%zPjW5+Sw)3z>*Oz0>am#i*0ha|;eg4e25OFfl^8xP z7)Yj!3S=>Nnl_rKfw{!%t>KaDp{hrIDK{t?j*Cw$pT0}^aFfy>8M7Oiah}yr&Z|C; zYRi#mU#W-&Qemg3**?s|0AiYseuP)d0&`YVX_*DV{A^PR1m8_F4_IXCA^po_q-i!1BEC3aOV4iKLqymTQQK z8ZKK6($@^_x!4|4?GNIfvh0Ps-nnD&N$G4^;8$jH*~6xl#$O*d$yW(A`J-;JZj-^e-m-J zt2njYke&{90NZJ2d9W^+%#ciEfz}>RlR5BT^qDyE$h(^={&)TYKh z`pS6P$>x=RalGfZH~r;~tFK!u7fsBd&i1wqStZ+Oc5xjm1U%rsYL_5GysbA?nAnUH zr}4D}DC2;!;npX`%kYBi4*K`VFAx9#D!|jt2Ny0Pe1kAh^;kLIWZ&WkuG^G)+95+> zHKU}Di`{;y?}n(J`q3o~t5=_3ATWiz6xk z-0%=`%z#=V8#4|~|ERF0f1cK@ga}^jam*f@Gfjfk<47h!Y}Zi^>?a94C?V$M9V~G= zXAZu&Wsy+=y?!$LoSuTvmikbile@BvtU%m`xSJbKF`1N!ZTfzi$;wmjLLYBqZ3)`3 zdsfQe##&g_csGr?L(qXTn4jH_})(qC#@Kr@a+ zlrVUhrp%i@vsu`r!%g9+P zHL%fPawzVyf!aCp&&upPaUR2cMMI==j8>$1ydrq4pfE9~Tm_zRQv1wsZXPCC2eX7q z!X`a!ZVFFUBo;|4DtM*&JbV?DgbOr@I~WwskcO2iIDJ43YQO*qYA7Tu58khYLs6*R zJ40bOFom(PaUkm{N+AWcCQ9;9Vq&OzG&)r*SIW@_cyJyyc6bwgVU4G##esS8`zP!!ZZsK9TNZ`oXI4bpe>Ws@awUuWurE`y@_%v_FneI|9 zMM{8tpV!taubtAA%^kceu(1yB7>=e>_na771a4RXL-7gs4Y9Q!lXw^56cNl5RHiZk zA}o|2S!*}IgY4HrrN{-0M0JGnAMK&2W@F74hO#M^@#wtG-~7V5C?JRaE${nXR4{)` z592Lks}-gox?+QM}&WTQzt0p%k}ps-!Z^kZ^nW zabV45Qb2{5Qc}>}_@^#n#$M2igtR&|$jwVyo=3B*tO=yzmenV)dR$jrG1rkilx4u`7%WQ6>)@GP1gv(mG@|6>Ao_ZfY`>*FK}< zhvh-G%W6Q{pN^fE)9;w|P4W?>rA;iFr9od3+COu-M)DE1KN-K=irN|3uI$|y?OG?X zVgpgB>Roa)m1xB^3_sb^@8~QZ!;P&|I@S@z4J8OM(xbwQ#|OFl(E~LHGwhw$jae$A zy<69AFnqqg^Qv9VIKKX|gw<2b`@Hq~r_Xp%Wb~9HDlpOVG zCgR{9)&&IkC(L$B`$}HAVa@)%If91cEeNs{f>~C7xT4e;c8TF3m_)kkxH^y1krI`2 z{PTmDfvFJ2U;nKWYdAHu}H{Z6S~Q_>6v1s`Uz4%MB1W zQs#^0YwyK5pyt6i3ViKEwj-QchmS1EF?5$w!D9((w!k)E1cN}!g{>;?TaG~7-9dgo z=1=0g?S`9EFX^9rVPa|V3CNiCK;?qSJbSQ03f&8KQZV(giKKB#_H-JPq|XN&zDbBq zqzy;GF-Qa~vHc#iy2)<|Qj2&3%TS!1GxeoUc1-GgJoW?lBEu_g+gaKTm#wq#GBsG7 zMx=FJjfK|<@vIwj-6H!qF7+Og-r6*mRK`&$OAQIm6$y8FBmn|fyi{enp^6>BDM((@(jaATRD z-F+y3kOmXsN;>&>7E6w*_wpr`_IK;82+=RtZp&2EpTgIarp5Eo6{4o^B2Z-{-S57^ zBU0s?_fPnzV8}qymp_lV(9<>m0GAcuxi0Y9~+2Ue5hS}@Jlv(XsS5j+ zNa|cd^2VX>JziWiN+I_+QS{qtiTbL0Gimlg-xU{w7@RA`+Jf9fw9+w51PuM{YN|V% z+D96?vSkH($Tu-y1jmw{BVq(A>KZx-ilnmIYJph1*%1oXrnCtb^T(>1Ylw_tnMaX9 zw&g7EjjlXW95Lj)q%3{hVF0|ACX03&#rQ$2iT+NS&jqgSdztHYy+_V_Y$V&pSkw^y zN-f9Q0CFeGda4AnQuD8x28`cpUI*|bA!@`)pmFoo%1427I9S|!S-tl^@*@9hjNkoGgx~gG_$_0JZI1^^aknP|47yH!$|Fp?U?#OQ;~T z20wb`;?93wQ1B?hh&ixGqtbyR+_EN?r2MhqDPH1HaFC?PSxg&q$XIQ}aB(USL#7>`N9_Urg`KA3Td~h+il#>-8o_O5=*enQ$4FwyqzNI*C8)RFiVg zrabq4LpY_;!V&`js9>(Xq`x>$!oBv+3WC$oz??zr1`hGMsc{qg=ke^aNo47Ar*-23 zyw|(ZcPJbgtC1sjHh*IB91Aju5zRjyIkIEV#eVu*ETYTuX8B(H%@I9co3s};=WI4{ z>Fkq9QreK$O#TN?l7UyIrpa(+xru4|2RfP+21?j@_P3S&Bv*cmxwT*%r^bg{_` zcflHJ{=y&+#N(J2xquPAP%TUxm{EW;i*(oM=iBMz7E6K_fEteG^l*|yrPP3~Lk^RP zw^Y3QTIM+&+j@0`OY9QOu321(lu8VsuqE(Ug`FUdM6;HhhzgfLB#o6L#P}HCUYuC} z_C#q@0k?R!Do_06VIc6dk6z(kaq^tlnbdn5TYF9|mIhZs_o9acpviu#@Yfoe(2$<2 zy_>eu%VI;glV1@jDs77yu>RGyS=gZC|0{S>(fXw6$Dw@!MQyeEv+hfj z-Y^ABKnO~j>a3Tt;0~!pUAJYnMSA<4csGQ~HG5Q$dbNnWS)r z{iLTrM7L@M$ljg>M^=r+AvV0ABT{cVfe-l~S{#RTw^kFsE))17*(M+prEft`R8q*0MZTOc1slQ5CuBiD}S=_;q60ws#iD6yK!U*XRMCLt1Dl1%Cvr=i>@^He-&;R zO=-83K4mvh8(!Vl{Cqu=Bdkdf*tSscr^|SOw559ePQ&Me8yuIdx$=qlH0HrqZDHkO zDKXed-D5}Y#lU3vVoH_`EW->~6Je$;+{^OFPCxbw% z!}VmHBk#AM>~(MOn>sW$-7Mu+T?1!D#AIUJ^e1wH;EQbU&Gm?CVnoTY0YaD1wK$9R$%|;XchWe-|F9kN>KRR?feLc__CwM%) zo~uBFqbfy_y;X)kxDboO)Dy`o0D!UWzt2%K_TUR|LC;e|Fm@5O3^jXOhtBdQd{0&A?0q%%Gi8OIXpFd@DplX(Fx0#98SQd&ZLzS{R8 zh2NA~viRQPvpE}AIj{kd!_gKm@HOZ?eU(;icKS`Ie5ZhR_nxcry4}q0Q74c@&zeEw z@f;{|y9*AUm1bSkL4yS8(jaW_YzZWlq1gax;4umY@v?YeXYN>5E(`=HyOfCH8tVi@mStL>1uhCKFh~Ij%Qs5*zAoM0wqkK0 zAP!4;&tdF3V&R+Yv`ljhGIGd+(`##tbQP8bVBK65grB=O+N<=BL(#q)EicI^X#EPY z*49ZoIz$;q>Ye&rI*}5EixeAbhsOR{nJSgEuH{y1N;E&%Wm>+aGJ&-Csx2TwS)c00 z`R_I7R`GIdfExrjYXdH_68Vvi3Nnq1SNm)_jjT6Cn+L6YH=Ol6-5)#0-xf1je7AlF z<$5Ejt~C8+F3q2k7mhx*oR}NFbm$$06=<=m7Somo836F(8RbZ4*jG)iOL^&RR%Sp;e}DHs-#7pOqo>}bD3`PO`@Ino3i+_uOc!*? zNt}jIWyU`?poW=cZ7+Z{px$tW6khYfh=N&Rq)JKv=3*iVY~vcFCmiUsEt2_G?{W)c zDVCR%K`ATi#_~Kln-fczJdC)^c$FJ^O@)YRTS>GR5)=T54u{~<)jGj75u8#=4`mVWJUvY++`hI@@3qHU<{x)V_aW;tIC|(Iu!uOA(<8L8x93Z|q0&;9pn6?)@nbd(vI2*p70?#%38a)?GpK>dTal984rKq=Yt;5{x`IXlf{Q zsk?oqIsSds^>CdvO&3IRF{PhSOXe3OMPkiGAqK9!E}}jGaVmt&s%#uG(VVigo za7QvS5X8taOI`3`nyyK8m7YN`Kjp*`oJ0+*+Q+}Nf)`G!%JFg0DEEBRx?e&ahT+P$ z)mS=aj8FN8&zNbbUIbdFsdjDh-)D(4b$ARy0m}j4~8YlGZ!P(Ui1q=(!E#*Bs&TSNS{o>v<~fBIlfUNYmdZIv(R$vbQo;d{1)OLGPo>)_&F^%Y8ag4{&iGn_41SqX}_l&#!ch}$$??5 zGpg5mAPf-o4I^o{1G0ikkM|eL8qsEmAO1LuROMVk8p>X^5&~&Nfix6tv#KV$Hd^?G z%0*T21~$^nNp#<|3OBA1FjT7LHY+2kpDLbNy8>T~o26|GgZf!YS1ZXPMs*@`P9<$Cg%tbjuDE4m+i zKQeue##3r+bEeeJbU3FEXR?0sQDU$%u#M!m5LS$!M|Ed--XBQ&8?P`2=`piUzDmR% zB{S6++x$U}Lb8dL%4)zd5j8Udf{X2iOfpJ@V}H>JsH5W2r5hHt_WeAE2@SvZE?IiV z5jgm|I79xIek!8KY4n%bT1h_2ifeZi|CB?#XNfz z&vSWcdqP9qWKjA*GyTbQ+|^b+=zA#&5clU2uOp8D`yM)tF3;GAxYjrT#`{jZwfXRv z0`~}P4pT%uv8Vhdrl7XJ9m$7Z+K#SK@cy6aazhO|I_L( z@9pAHczD{&hE~gN2XT_(#%wMP(dX~ibNWo z;Elp=^Cae-{gLy(stTFG#f>QVQVL*6{8of7qhyE>k8l^v7H7@GqYN1LY--c3|w`Q+2E*7NQ_)C|`r8>p{F zgrq+gJtI=|X~F1vJYRF{|e>;yA?s&M^a zjyBMjch-35Pz0pJg-!ovz!ftc_o zUT8$y<>XF_vVDgS#>;9|+q=fv(m?1PVyE9h9=!7xrCQ5Oj%C1EShq|JFq`YMJwRz(*7 zwfif9+{z!4JL?V>ht={%{H@YgjMU=Bvr8ej{8?1TF-KE9Y<@`i?S+h^^O=wc zywj<8EGxu)?|t@KR89JR?Y5xY-ygq4H&_4uz}W?W(;9Y&v!q*yMK9alvuw9BLIPIQ zYEeW^eUTB?S>u#Jr?Pg4@;A7o2B9Myj*MQ0S@B7+EGREW__{u7i%DvbY)RvV(=)4` zHsN%-jFw#62_>JKT-Yi#4xnZoXF6#f*7=~@d*AZ*YBB58oDn+Qj$yl%9Yg*vgBP`z zt{%JktQf`Tf!5jvq6T9CKnbCuot%V-s=%YsKy+6MmbAH#(X42hG}L;|h+KB*F`fP% zWbK+bi3Chg>l1(?NlaXVjD|q*#$QH?G$mPlBDc;|^M-a2ABG52IZUHt#qNsP&&B~9 zfW$On>BNq>ik+koFGq>b3&X9TixDf2Qo|)VHR#L_EJx*MfA=12CR6wv#c7k-M4nrP zZE61>cmoFj0AQZ(UahQYnBVV>kkHWL6{dRgXPn>}@^ZEU&}*s<>9!{&I8nxI4)PE2 zHt6Dpy~+dHspcsg5^6kDKJAXm_lU=Gx zQoilPd;l{^P*`?ymUs73oxJ?7=bwT|-icm~jR{-b)mj~9fzOh?vC>T`^1Z2?14=wC zbqPL9;R;;T8O;v&BMx0@CXQKzbs8r3$n9;eb#-yxI?`YO04$*59Ush#s?3%pO)UeL zR;?sbFitV)V27I&4MiJNteEs9Cb8c-vp`S(=A~!MHf*e}z)#IWvX(G&ciBJZL(j1q zLXAN{9kdX93wC}ehE^kscFh}~m_xj*4wNUY+ILJ{nPD7Ismh#o6te4T4lG>|sdMtH zRNP=g`J=(}8dKB8aQj!EMoIm`)^qw=ZQby?WE&iCgXGj}6cAQq{|L>xeBTDw%Zg26exd3e!70;Dc#@5{MR)eE}ly7Mh^~f+ml|P4N zaATCFJ1Qf2J64LZq3AYcfMRfM16SY$0O)ub$0*(Vr-Q{om`WUj&!k&fAt(d3PcxV* z-}^=eE`1yop;>ERBQ#TUE~dyE>i*- z3)%s7BX`&Nl_S<|y86fP1Ep-4(brX+9Va7g@%(+30&8D<=B!h=GBp5z$px~Zn^8jH zPLPO>g1#Q7rchd9qpxD1RO{YlRGf>~MxE8A#)`r1VFqAV+t&v5E_kE!BIUIRw1mRG ze)p=OpwomO8}3bG%s`o7g#l;(C1Yo3)OfA!g&A#Z4h+J!X{JlC#bmIWu;(7Jf^3cL zePC}?kNrR6MIzkMTIe%x{Kcl-DeUunc~O@KV{pQnK3j z)pxMIeh-TFL~?j)Jh&{c5AuY~jEKHf}e%WNlA@3$EC}K>dV|3IJg2prII~LzB%Q zdO(%Sg>mQewf_i8>Vihk+!#`OMfi0($gZ4LJUQ3_(jWq29ju!Ds-egKExojF;~Lal zLEU}_O`iEuY0gxMDt0~0XIjwy_En3>E~32|pXMEDb*(PT4Pvc*VLH$EXCRx~FJGXf z9nH~RXIHW)T3fBiO_7rrc3c*G#olRiHW)ad1%p5Z0N~ZUOWg)Ym8zjMizRw}C{WE! z4}XdBhm#j#aR(BJY<$2hCe1}d?tS_m{==duZ)}>1qmH{XeFC;RnHQxysAto>lk}r3 zvW~_}JkcQFMk*PBDhdu@6!7w#e=s@Y4W+SDAkoJ}Ei$E-wik>Yj4{ZN?BiYea=UHy zzid{3a>{MjW1=TA6&*x39{UQWS3_iRL#ZJ#b>jrzM)TXG07H^yoO}N~Ok+)+FFP8# zThxc^n#U&39BTh|Fj=K!H6T@#8OjSg(9=~%sWp;KDXO$)F2}OH5ZI0JlTY5d+XH=n zziqy&QKCwG%E(YjVLfxTMB>ZxVwf$Zu~1ZdE*eSI*JS2y?eue_qAF>-Yj>y*HVl9* zYN#N-r~R8~nz(;$|Mv#~Ao#fCLD@gwzdH#mrf(!-aAcQDN4=}X)=+iI%D$(Ro2b@D zYNe17N_g@c`lnAoHcsD=ZoB73;PI{cj6Pl~r`tALXZlU6|zeTf`%Rl#Z zx*F3YCE!2g1N33Ep-vW}L1C1=9+^ORD=^gE@{$EdR;YnqAq^W90Fdv&rkI5QQ?%q^ zND+%AmB4hYqp>_DqSd*rQ|e19JCB1cpZM|AKr)~s-ue0qfO<$bs7-J~Zetif`#82|m~|h*-tJ`$;(b z@mxM+)2zB2r6jv_z_IcHf7JzM954|KctH0zUVcsDzCt|02A^G~8tQe|V>x3V#8=?u z&t*7mPnBTX3Ds)OA;WaXTllR0>u@`_@$%lgO!>wons0eTP_(|ETYsXL1 zik$GKMl4v)-I#-MOcPaLO+qL|oGq~-Ksx5`3u+;pe64MXnY#4GOI!T^uY(nGsLFhO z{>30D!Cnt&auhRfl5A~Npbu`qLaz{B$P5ku0052;3FV4`eikvyDnEl1wKvkn%QG-# znnhAv3#w5w3M*5Yf-;KL%a&$fb)OvKF!N_+*I$L*##1dLi_*YV3S^jJk82X`nA$Ic z;NaW~qdwKTqr|Y7{C;=Ruw*IH`j5F>6Ag&M3d!OXWe5A_-i3eUHJLim?!KfDW$DP>l9Q$S=Yub>0&(&PpfTj zr(_bRb-|r3137s8l>>kBu`xmwPN&y|Zd|$gUuQ+l&PGng$f#aQHt98^bT-zrJl!{< ziHvVJO?14$=7ppNEJ|W>zY$F{G(;M0Bo{{v2{~oe_Z%rgfae9oRp2%55`5=)x@@7QQd2WN(hox0%dms|b;$=9072eTA zx}^4y-&uW%USmclFJ4sbC|-D1wuuO`_D)~DkI)p)o1p-y0P>^7G=4q+_NSLEh-_of z#Ge4$`x6F_x*_Q{cofIXh<+G;sQy8m!p2mbI}>iBJ}l>0C$l9C%M@drHR4sAXPa9- zC3Ei5_1D)NVqqtNb^DMt8dX#q(uF&RB-!xfrPkfhh0ynOzsTu0^K#ZN>F$j!_cWLw zHluX;`qo7amS}UnTkyT*1l7A>dLjwTdvuavbpcSo)7}LydANR1L`c05oW6wrFcef4| z2CCH^AQA4vz$ELDi&p#ulIEqEBv{ZrQjSn{Vq4NcIaGiMWTwafe0xPDa!Bg_zQCtn z1POHvU;E4ZfUqt-&r5Oq-Vhl{&6PyRzn(}mn1_oiX9>L@$~>HIKD1I9H{S*i$f3c9 zr=A~wBkI0i>h4T70ssJTUm+IF%F3Gw*9Na*en|K`hty19Bu&I@@@GJbMLGQkO}4yd z>iqsE@05bZDb9--Bkizx**I||c;(WiJ)!Lsh1sZDQC^$gA`!BAD@N|OgwnG2G%I_i zB2z?jx5y6-NzJUY4cV(PY*GO!GL){!yl2}m2KZn#vng-mPs9`Nyzd{k+eSa0zrQ4> z#k*E#$HQ&xmoV||1_E|9sfF`vQl~y8fp<@T`Yq_f#(^NU)+cseSuwHkBHdW>FoT8q zDG`i~buw_%@iItAR2Co90jN8Js(F1eZu97hr?}fEL0eUcZSv>l@_ngrup^_PVe5F) zt8Oiz#7}7&!;}cJ&mFz(pMQdW#IO|s=XpFkZ}#Jx{Y*|Ft+BoTxy26yP3~0bh<)iI z2WciOa>I4(84voo1N3Q$xoAKEJ|UY;v2hy{t2ZF`O--%V* z#AV#@e^NyEDVe^MaWq&7o z@@06{CWqLNOd2o%K-yEojbWD>cue)+Y9UJ*-Ap>-*;>s*wOD9PmX3+xZk#X3|K3^h zGgX?-uw#zPl9uxKFIwkSKD^3St!>$YwM00RZ%wZgo~fE51%f8VaY zTKNjV$FSMW@rkQ@XdJJQS2~3t$2C>K#T`;RVyoy@{mtV;&NVFw8T1>|Rc_0>Wg~|| z*fGF?O0Es4GW{9O;#M_Nz$6SyO9;3F`cw;sqP;^g+i}yfnK;%bJ_<)#QUWCgh{p_> zq%obD@kW7bHYZW>1(sKVX3?|iP8gfHyC{k?@lxdx9m}UPle&eKk%fkBME*cmNfThd zZgxpuwMSRJ8)Tt-YA9%y#$QK8ZWtk2=1#fobo3`l1x(t}_#U`r^oWuT9zNg+)N zQ(9AZc$nc0HxnjE5r->aqzopV$mZ~jtU`5yv$V)`uda^5_g<}xv-K^)vnd=z7bpIG}Dzw{W+@CAeE~ zcXxMpcXxsn?(QyyyOR)H3JC5H+#z_da6g=LNB4WW`#-EP_n33f^(-U)W9imZW<^VL zP@INvlxscts)8T~i*jTh0|6p1y{{EKSTU5CMM}|?+LNkf;nfqfwKGO_#F%@_W|QDf z)kd%T2B1+sGgYUP#3BHGi8ts>zl%9U{us>=en^!24QDOJ9-Cf0yRBt_x7~X7T-LLU z-Z3>YqOYPG?Px3-pXF@AoIeK3%7i!##-mxlYMxPUO8R)kdGSaN@#MYVrSAHGHa|sW zM>*W}mia!OGLIUruk2*cOam_YgYT9~5`9@1^lSr8{R}C_%4Q3fKYbyMk%J~j1c3W2 z#3X_Ru=0~|X}Gy$meTQM0!9Sh#+vXDIM+468r})h)qk9{7IAnph)71`5ZI+7;i=FB zj!FK^LE}=!bE02t6VK z{xb~~HA!nKWQ*Bl3#X$tb8&+clBlhBmrW(h#S&cx&3Ffo%3CuEOp?2)a@VZ~kTq!f zz$vpqGM*)1ag?Bd)M#(WJA(zwyfiNTKyG6_sU)gWGB_O{YDUuN+CECs_J#+q*~qDpGyqQ*;_gW5H&@*SLnSroXr zoY6o;^ngJCG>oSod7SHJ1O{ZSO=sXuP3t@qGDbA{ExVanIjUXsCP;N- z1!~y>1p3uWHe!Z}h3A5mx%Myu7z`c{jg(z6Cr5OU+nbo265k(c!0GBALG_Tbq>ybc z{WWckPLU2$uKup&7K~g$X*7ROe^*-{6qJ#uhK^=zVO=eN>~%f1$DA!Ei4K5b*;)JP zsN|)c^?fcQ>@@<1|3r1o`}u<1Fy(ELfhB(Hby2~3-k`H_JP&o|ZE0Gn`mw}q6p|L! zrqj?qu)~f=DD+P(4PikadIauE6|JJNxN7>P)mSOt4Bwz(1|)KzNoUMAngY*#tH~Rv zC4I)|XY1(Bhikpp!Z6%~3CZemP5V{(MJeIXzEY7URrqY$GN!%WC|vH_AhIa~7xLxs zEoGaqJXW~lAR#*Hw!Jv-kPX8M{fg>@4S8XGe{I3!f;bAECd{IHRsr% znYg|lIfI!;3%gmmKvFoY3@kNTntBa?no|zsNu~Ui_Oy5#v{$R}?UD>+%=Vn>vL)i6 z<-p0ry>?&omrcE}n6DR`=h~m$38sSTU0XI7?!dT?qhm^SjQz90?~)!%Sxny{hku>6 zKSG>sS{@3Ht{wz-`h&&GNjXJlJVojM+p&h4Y-(aic*HXcN}3-A{VdHN?#e8B0H=OhtV zWwHax5>rYj5N`e|FAbYJZ+5luCSAdGBIsKh2%{;I5h~@29gBsM*NhebP#s84S2kkx zXUo*rd>ov`yW>@Q>0JgmlG>Z zU{isKIz1S;aO2x#Lstfr-L!;DUU z8?RjnU|Ch&eDD(|I09X7{0O8?loi_cHLhcSef{1)k6c?hzFFr}BrnRJtg7_({^cLv z&HQ`5>pDN-jU!#)Syy57GZ@ZUdCGg0M(Iaa+g-zMgSc6p#hE!4V#uMzy-)*URB!FM z*S0jS{wC%pdXAW@`xJtBN@qJaIfLxT{08Gt$s^cb&|s;v?};btE5pxU8LFxpI%#dp zN9zjp9XotqYXj~YLbb*?+iVP+;=G|86XC4aVlz$7|ER&3_KrLXW>i(C-)vqcS`04~T?t#>OHIb#sM;y^QT64?J)GI) zZ>sgj{C}2$Q>`}gQKd9er~4$$L2(+&*>+Cs*vQ7sPKh95EC8TltJZ?C$Lm+!eSUdy zvg920$c^}AW5t8@Z_GgSskgH$hkwiM2YLQz-UjAs`o&IhuaSW42Ch;0)~-@5I#wQ}` z4k(#$_*_}TbkqI_)s{?{bz7L+ciDY;3YZJF#8B_Pse6wF~_fVF`Db5^o z70SbDP;+$scml*`jPiD&vZxtk_jLPWxj2-)324z-rWOIF_ld-ionQsqBcj@T# zyDWd$1=mdbaV)&_E1bp zITD*s>AxU2he6f`#Hi8|$^SKSz+7KPCF*r#xkeT=5YapUfZflEYp}}Uy0@;Ka~Qzw zN-sezhT#O_75+*Rl+2W31-WN7+g$b~YzlBPOl)Bjy%sD> zMi^!pw@4fIj~M-4UwVuVdzgoHA|?9uAS>mEbJiuRrzO?W!^yguoyoEnyz47Q+skKJarQK4XZowKzf3-yI`(&yo7Im12EJM4 z{gjKLqhHAjn|pd8@{({gSsUPfAHs*6{UT8bjj{}{J(L$T!}X;q2KbN(-WsbI68y$V z247^Be+um*%CC32?j^H*?8n%I*7NJ`=Y%s9InH}N@7`bg27`LY6q^RzGM1Fr< zCnwbQ#=YL5Ha{~u{hko-B5gFVmgvX*CZFzgRp5a{lfQlM{^!xt=5;T%kKCkJbJn!3 zI2SD;xbrY;Ys9pOL`>LiLfAZ}Fi;X=PvS#W{X}7(Q*8pY4EueCt*8AK!VLHye27GA zgPt=U$}}ZKO<_=#dTFSWZT&`^7^~Avbe=gT0Dux0nZdGnyMbgi>uO2xbyEJXBWt$Z zk$+V--|Vs1-j#NlaydFbXct#00O*$7{VW*KdTMbx5+?~t1 z$$R*_>d(z58$5qN+bee>S^H8}tZ669Ne9+6Mqu*trh62%zfNNkzpGk*q93@xMPFt^ z_N4I#^NfM!#mXh;yFy+VIRN^2@70|)se$Q4BYTu^mq2w^OVR!~OD-NqJ;j|M^3rJi znhRHLm$B1nA789@DXn&+Q0)^bLNX(0uPyEMqRUB;z2z8N2B%M~e(tMCy=!sq+mp>k z;Fxx>jZHD!ADJ=71x~5h7JHL%v+eN0KI#SvYNgop9xw0SKFv95jU((>JiA8UJDmgn zhLMh`D;=)GEiy!|3u1Q9kin0ZsBVZCsF6&}IQ_D9leuDugOr#h)oDCS>74SufC-!( zI9hO&HL9emW~9Lr9bKdu5+V%YWUp(ip4rKd9sa{CV?Ap3j7k2>Lob9x)#XjIv79d%N*lx##`c=aNSe5uSlQ{1@ufdjj-JF;hxpB32s)O_@WJivm7`-PAM z`bs>DSeFtlI8W-L`Clu@o+Q*VpfH#nftqq;Ucxu2>@J$gI%H%dJtE(Hnx~$wNqfkr zL2DJ+m@a24r}Rff)|E1y%bu?2RkosKX0hnkrxT9@QGVf@)E>fx!WBs2(m1ur(_7}g zNLO1<*QeK(^2B;F{+m^>)&;I|H&~PF^tWZ#9O@I#e?G3CZ>_KZgpmT9jYU*xjnsNY zPHRw=hIFw*y)ZVkV*M3bbY3Ym004l}^m>Zoj&{&k;4G}}5)97O{ECux>Z8}|YLHu( z%8(m*jw<0Ke+29MG%DLT=_ehc=MWkTugVZ`5VPtHT(%EAHvpS5Yd+<-Wo}9o;7i}9 z^YicTOU_g$oh;+RYij1Yw816OmwMv|dG|{z6opI7cclf?X;jqTJ*qf7bcsd?f$13N8<*76I>RAa&gdy>uh6_LR>$>nI;{+_a9WzU3ZtaxzYHI{|(5LNZMeO z!cbdH6HY1OjT)~<#n;iEMk7@55Sx@Vv(8PY= zwvp4}OiEmpFbi_4_@|;|NLcJaxM=!awkqD2ukP&d@I6G+IID2B-F0qzfW2>Caff#n ziJk9LgzbVbn$A(iNuf+jWovb;M>&9Gyfaow(vE3aMqyD$u2l+jEmRkgyBkHe!laa9 zR$q}p9l`xt$%1&qF@i~srcuS{Yuy9?t@`C94%~7jS1>kpzln$_NNXvL}W)+qa#e%zdx+vtGgsf^TmXEo;vCB3p<}pJ+ z_iTrgimfT3R_2*3qFeyLX#3P(+qg>dqL-{m{SZ?k;|7bR=e|FtG*UQoGr1$03_XVri@zoO}Rtv73SUVzu-!-YBt*m{xLI&*mPxhkhR`JF{f*EPC^HBA*|>7 zkkT;qg%U>JjX_ieLZFSkSFk`;%ma#nLfh&o=Ttgo54{nTb2R5Kb+*>F4!lXO4n&5x z>c|iw@4$WG#I8a#r-3r*-*#H3L3YX9QyWRg3opAhHDgHzcrJhKlw3v(h}6RX6mYzp zReUN`e>me+CHIL}|^s|&*s&{3L25G8aF(^>o7SdIzH%bp+ zoUMuMwOuj&s*Plw87j?Ez}0!_izDxdPWy@ zT}^TCcz*^4PZNZN$5{%_?0;v)JYc8A2N|S9P&V1CR{S@h<7!eFKLVlS_CKCD zE1MAXzMc#r9r#?9ZTgL4f1&Y1y^CIs@&C~cdupY7uJ#4I!zkzLdI}|BC`R`4hhlMR^URNM#pThGm ztNAy5KdysmO|pyZM8|To=JNIb(PT~1qoAi!>ap1==@PtKdLRiX2K*A@dWI z=I&BP@TPI)2qa&XBv>~gZ1w$-Y!olOUnQlS+M?i8!M%hQdkiE~$|F-4?VwE^sRl8h zZn?vFTCln;ZlBC{*F zPw9wWE^I~tvhY7W>wnvac5D4U6dsOjMMEm{m>RVXUsolrRS9MG%f!fXOiTa(TDOv! zM~oX`(p5=%L#vS}i_Y`<7ag^e|Avil@X;d9nV$%_BV@9IPs1E~y(1hn_NeL|@O#*N zZF~(q>9je89_ensD5pbO0fEG`_v@bTF3hC);`}{#kQjT!5%SHm$W`{f`Fg^fpyjxF zTyjVAColG_cK>6u1l`0%ovH6tS_4=qqjT#p0K4Ie*?9ri} zzWAK0sf0}BSbALLWD{%iAg~upYfb9A+26ehq7a{2|MIS*80N6a7T@s3E;mc0#{Ju#!!S0&e_E0+pD0yF?xd6QHHVSGoySb0%D zOH(`%?hs_jUAFpr_HGXf7gtw<+n4!_?&P)197BNL#JxLtM~k|$U8hpNF;Dt#%s4IJ zdj8Moj~5}K+y<>hc9C=S;fjTqL!@hs2xqz+a{o7MjBTX!S@EiQqX1lg^vdO`rh$K) z)ynGmSGmvUCq@0*zX^XG9*)Z)P&<=Ezb5hB4%bvk$tth;#t8h!QiI(z2MdZkXEIoM}W0&$|M%*jD;^2mN90+}1fDLcI;$4P(%!)Xi zhwx_xl+8r)ET>gG`;>4HbOYM&PPZCEJX`wNO1`vnn>%WbGs@XhZyj@h@ty(9n;N&*UJ;XC++g@g zawqUc_I970TH!_TjFOKV8vnz&LthxZmb%Rj;mZ`OYig#Dw3a-@Q9-iRWiHS~9)`{MjTtBf_4LjoDsR&N^QQgQYPPavd$4b{%yT8vhfC#;MerODZ ziQh&Rt9Vi3;-O3vL7J5>&`7@kU=N1ZRHJ~N@ zriSd+B_DE0>;5Jlz4EZW0eNeJvTcR#8e$SFUTzBF2>!Bmead_-J1Hqx9=dav7)@_j z{h?#jCN(~JlIJxjV&+D=u?}5cYY$u9bE-)ual{tD6T{I;;B1$+!zRfxW{CythIsi) zEtH{Jz5Z850uLKuvdMqS!x8Ja=_^c|0mKS(v8`Ad(&xA?c%tcn1pttIvt=oUoJ&FZ z7QIaA39t|~k=AMiq`xm7rkl9=KYIrb7rqk0Tb?-`8hRh}eY2|HO)cDI&j z%iq`GXEU@_MH%iB22%BjL{cxX^14}TB%rE<1t78dnb&ACXewkFZu~UAj4af;Y52L5 zhDl!cQ-Zhxs?`ZdyVD309;l{`M-Z{u0;`$yJ3&nXN9A!PU|;jEnV1Bkuj|&c4O^?v zOJHMw?IwW)@uBR$S8c@H+s0d7+90_N+dr^2`iIxY-aAz7n39&F@6X5LP#^+vRFThX ze__ui0)Qx+5iZ-4F)Eu6g-kt70A8h~Zhf|dlVx@8pJG^oX)gWHhH2ZO0345<@aQV*avqJf%)W8ICY&1R>xdMi;N77F1~#O z0IaWShio{2^HveMGv~C`smtl(H{vEn_O}$|F8j;%q>>{0#U!K_4R!JBIYf3zJn`Fo z8uN0_8KWNr{r?VcCL=6<@PCTVTS(~Z%+)S`G#c9I;F9Da{soqZ5==g;^ZFm+$n?78 ztL5<-#AnE3U(q!uE{znSx3%7FR<`tp04p06Y7b(xqij@gYbCCk+J2v#{a*|#tW}@I zruro*N4n#5v@obZLps#$q-0}Aw)L9iiIN=}0000O4t@uf4a4?k`{?7a$Vf@w?vouL zp7S*(7U*V_$uwJI12>}L6Jium#yH0D1U6B0l71#YrUW{9?l>$TI4kMU=0~p{P4%Xq zzj`R_B);R8eJLP5g?;@AOfOHONI!=AG)yW5L|p6~->Rno zrfk2^UsRNQnQo8W%%j;`PT6`C$W;IUfbpO|Ds5rEwB87Z39VgqIHXTNe!nA)$Ujpq zgIr-64J_CFXomY0Jqv}r9xYkdx@^F`BG}$pJJfM~wC$MW^5%o~ zCRS$~5d-uGz%x$EM_zT4y*x6Id^~c6>_z4LkSiiRZbvb!`ja zJaC_hZEs-y$d;X8lm2Z$>v5lnZ2R*egM+$NuD6>oP+Mnl2_;xF38d!q-?5y7=@#Mf zm%A90zI0)b3pQ4ui)|(Dlw|!C+j&Z0o#8?su7fzP0qj-c$xV z@t<6{0GRsDV=(~SS5Pi=FSjS~ygbwqGR}yX!x2Nl{O3JoYCf7gcfXy++2~Kw*+nFO zp_xo_iQckXd*p#rcPl{&l{9nci!{!=@m5Y!DAsd+zvxW}lHsmWCXY;K@$*5WS9@Mg zxx#>_8ZCyhA&ZVnWSPpbd4`R;D(PPCn@Erc{y)yYfky>Icupm62MXC8xiDcoWz$I7cdJvpQvvv(!YfzT&y`MlUd}jM>cQ8iqkCj^6(4U#v_es9WLm20!Gg+Blo|h z3Sv7gGU*~Nx+jcct}}!D{p`fzq|)20DKbIa_a|tvo}AYO_7Z9f^ImKP`uEdZ?K~zI zLX}rx7LR>evn{rjzXT*1qhn*?baqLTK4bn<<21KE-&$dz(MRHpw+PR;#d4ULJcTCL zfXdcRvbn@W1})Bzhq97k2}Fa!z1pE;)x<-uhWeOSvZ2FrU9yumfj5GyluTTEIEBvc z(ujLOEPV=hY&q35>h=^JK|=(o=8XIII*TfDMQdE=xIFCzN9gEvYkd_hWAG$`DI-|-6V47(Yi1A=iHd^dFAUltv$c6g zI(!+-zpUXV--2b&ag`49| zzq5@vZv%d45*~1Y6n$z}ix4>SuG2l#-<0+8# ziOs5uR~v_mH8B;nZesM$Gaf8g`_aU84}9N;Hl@x~l^bbc89YY2h`7OuzMj&H!a=yk!{AWCB2~%&D!nD6M z3SFIS`)8&&TN)q_dE}S?0J3Kyx4_;k5_9;Ue&Nd$wPhZaO;O{7(IxzDO-5XpD`&S` zoh&)IIjSnV{v3`OWh$MuinRiLY~ZLiVS|k!syO+Zsdd1p;LjCz6P&s_(jO-Pz8WU@x$pBZMtIb!#&~&V5ikyB|I27|)Im zo_{+9`;}xHui7Rpeqpido@Fbo7C#j}{$l`0K)1hAZ72A{uY_~cxlFyrXm$EndIb)f zldS+x8b<81olVpG$g;*zK_Xc#)5qYU7EDqKB}Fy*bUTZ1;NEo40P&lXAy`VL8PW^$n z*U2~ke!E4T?1h)Kjxgy*e9^Ak1Rn*}_nHQXW1GkJ5+q9e?naGzuZ=q2U7oJsQ z>$=`QxyJNTjxVPA!8txKvXe#MK>mN6FIDSDw0kJVZC~5-9grxMyXkTn#2K{v z+&gNYOKT>18QNY*%8X2qs>r$Dt(nPDNS_J4Q|5G;bqibT~#T^vh7)^bW;AjR)IscY0yDBg0x z?HOlm`;iKOyTB{1TRr`sHC?-Zfhsi@qK<+N*_pJ7%24f9r>NqbF{P{;_}+Tks_Nmh zrIZ;pqYri~F|XmkH#>Sgl2NLuDwIno{B-Tpw53xHzdaiQkcJH+OGHYG{FdG%+iV;F zXtNxaK(X+(zHAS1q==Yk-UM5$tkCjUUBI0lYu_BE<(9^Xn8Ss=k8n~+{R<3Swh-bS zeMhm_-S+o~^E&lng-MwqJ)Pfl!Eag5k4 zfB@?yudlM}uLSByC|=TTLzHbq#p3V3ow?d~NhSkjMBZh8uX0@THWJx(f?kqucJ5}t^1 zp#cDBITa7E1I4eTFUkowxh3i|2kWz1Fyo1?de49d*Q8!|7XD1Cq0jQ&zx~$r8o(Rd ztCv2+pB*b7WOe=2B$_D^>*wKh{Q;OaY@`>ftRi^`C_{1LHPOK1m`o}WW@T?XW3CB zPpcoOL&+rZunZ zPjT;>uq{rlUX`#P=oISxpiDbURS|c8tN(&;#~#@#n!Y3GK#LL-~15v4hCbuQ&< zd?z=T(~jhhMhtZjdZJGu>CDTBZ#%RTKza}V)1Jp3sxn6_4m_h4Wiyw9=Rv<^TQ-|M z{SS>($Z2J!!Tfw{g@uKdYBSv=yyRL)g%C%upMBHBig%Z7;fT|3x+-|0O>OOf&%4X` zmo!;vKIKa>o@&$}!KQaP&Ao*tc-nl*Ku13A^kCHRyTPIW5dK$IjA*7N%L$>9M&U2KLYR>9cbg zA!u;=sBBT6l{5o+FQ`j|2<8KGGOL`fuj$CbHAb5NfVyv-RKySU#yTc~?q)HpBvL`D z9%A(2kdSYfDjalF*rgG!S_cv|91%xWUiMPzLjoBk8!+=2L+Ov%wof^Z5HMRW-Kg9< zMVU7iW~GvfUF*D&J+rE<;B9Z3uU0Lclkt~0W?A~q+QLdL1`)b^qbVc}^pUS0Nji#j z%ph=5o6?reMLOe3@QuPCetACrB^2PB=5|g$cvkkPMH0@Jcvzkzzn2e}Ws2wv=fnh^ ztYpe@gCbKt9}8xFE!}D~y|0dpvx}GoD!B(m-Pi&6q_?O_>@1Y?Wn_KxooDUT6MGnGAM($Lc_#eZxXHZgd09xU(23<=~!Ri=#41TnKEzI zT)UtT-8#;zIj3b*6`8^LdBU^IWpEs?A^ohM8?2GkFAIjLBi5^riaeaI(-E&%}KSs&s` zfyt4fZR7Erj*eQeX}PJ;3sFlxK7v0aJw(>7uY7v^QeJ0xNXaBhorFE|)6eiz5O$+3 z90DJCUZMsXeXm^az4ru)3jG?sXZ3H-(DdzW-ykdA86tF0o=YX=S4g5W3`P9Js|d)6-i77{iY8|jCr-=^t=2KO~vjakH zrg!n640rT;L+>0?aGI~{t`sZIP0N?&vq;)?V;Frj(_ZQAy%4P-L^k_O<08+U(Ve=pBkb1XC1}%B0x82mwl4y)h^$b?U?7sz7>7|-XjAS} zB4b+O^w#EiC+rqH#;MpK0Fe`=cdsU6t&hJ$Bmygy`h&4Y8`~<(&o-%vi*>4sLkYLi zh$|l^=rWg<_L!0I4CH&G|F#yL2bwXkpq$jU#XO>Rf?1T{e~(5G^4ta=1rnt_xK@ z#rx1MgPRluGB+W_opDE&Y-%_$SJ)cWvw`0OfE7L2zc zPkA@4;onj$BZ(Vem~nBTac-R*?^Ri#i@3;O^K)6r%Se^Q> zg~q%_harO{D9$IYy`z~49T6U_7T5zu3brYAZbihirPxl|goG@K`n8I*1rH3I_P?<3930JHc-uV8TJN>f9v34E#Y8_2vm0zVmJlz z&rFG5J~i%EeK}L^n|>EikJX(KuR(u91OVg}?oof_9)D3x6>zewwSh$d$5IqSI@*E_ zoVww>^-P8hqH*avC-)^>bcbko<8E)3R|6`?0nqSNygrjWP0r9{zG}6RyblrUu*q44 zZ_8q_Q%jl3h^-zgSl4e6b-)SXV)NWeo@}GyY4Z4TYJp()OE4sf-h&WvL#3e0T2MXb zXQGO`Qu54`Ar}dSGvnMP008e}HIaiuIr1gyuO*?5RAnGV9%9=M11cD9GGn*Hyq^G| zIPz97%WS;2IY%iVd?1HPfd#&i>oL!QUai0HBcyF*;;OznOYmc;-T$7N@Wi82GX zRoAE*E#v+7sl~c7MGbD=8||v7yc00r4r&2@vU&;JqQ4epZg*up)fMM;z%+!et#kHA z2dwfaZbh=%tM*?i2ODa*Nq8yUoWdL!Eli&W)J}Aj%@szLVZVahQ;`EOp)xvi&c;y@ zrv*j!dD_8bq^%^b|xr7};b;P?yh;B$dJBOFr3p&O3LT`%ADd*pbKi{A-4TW9ZXFgRN;MB-M*3d?gER5O3(Pdl>^pObmd(nN${Jnu{1{Y5B!qeHFog5qS?}xxDum>`kF1 zv`;t*58gtr^zs8L3awbusMkU1H!O?X3ryXwWhDQ06unBPcRQaM>&vQ18&{3Mv`hAQ zL|_O;wGiz(wp_?1hcfzYlrgLwR68zluNt88ZX{8}($%A9B<~t2jIQ!#e3+>G$2@Q1 zCa_ensvgKG@EZU?Il|fy(Dt&^7SiGvw1AhaIMPgXQtUvwzWasJdkk}ClV|x7h1Tb8 za8;x-hr1>oP{KvHMB!axo)67#Xg-yGb}?L@Y)W*4%C8+W(JT3+|K1A{0dwn2CUoNc?7My)m+a^o8Nq&mkGLWY4iOb9P zFKhGvH3YKUTK@J6-h&-6qmdZnsWQ-WaltE3UwCO^K(GCGM;;=)Tc)vk!WN|dKvs1| z9>vw)@_Jr@>62A}XQZb|QiXYYjU-G(L%`|i>VcyQV||A4J4Mh|T>HMGzr3&aYm?m! zhjglzE0bkuSH=>-gY#(`b3zbfLsg!R{^Z# z;FyvINhRQ&g{4K3DtJ*%+-@x5QNTjO9-sGI*FQJjV$w%$sUz zCAc?4wJO~FxJf)xja$OEZp%iJ396$s&R|XXKX)GfBP4+>G~1lNR0_{ZKnW0zbx}L= zb+K(;MAl|!Iep022YdqnppZSdyvoq*Xsz%ZxVwamsuq}U<~nuahr{>6Cn#(1b$CqD z7kKP#2I3N(fii3t=oV=NKPO_|w4d=!r}I`X`(3RAabdlQ3g|#Da^kjKpG^JZ1uT39 zJOcEM_7UHV6&RYwgtk=M2)H`LJ*0PYhWMlJ2`llu(P%{b{vj?(6?V31lO#|Wi>7%? z8sC16fdYsD0h~Q)Fh|Qc;J^mn?_Q-II_{HsGM9S$KL=s*FpjJyu0=ZMf3{j#%N?aM z@`kMX+XvUOEujlyn)+k~-sQP@3eL5+{wW%I;@)4XnpyP3P?<?6vyt(ltbYJC-WNnF5~&>vH;7b4;T;?MxcdVSSju2~g(HCOFR*iZbcdo333?Yr|$ zhX<2pT@!PDqs7y>mZH6}?5vg}?<$pXiy9>dO_7L89i;m1}$vSl@HMEDZtV)&E)@l*Q}HaiQV7ak6EyOP7YT ze4c(4be8gCCn82j~+Szw%2^C=U7!D{o<{V9i*aO7~x%AvMwR^ z)rI7V(4BxB8cDS=#{3#`TpP1Lt_AVMpR)v;nUA(FCL~y>3i}FF=Dt0>mhCV*j{8mc z@efDIEsog?oDmLmKgR9yRQ+*#wzr4IaLNwyVrb40NUNP>CF9dBu#=B8z%Gp7&0OHt z2wfOju$0g#0FaMwF2LtTSuj!@xubqeuX=&FczK;T>UC%t;JCr0QDY9a+i`(~78ml~ zVgLZ(8>X1*X+5=f%dOzyY7*@HLwzDMRV{w6sW$Lik6t%mHN!Me`>T;2b^GfSZxA*0 z&sS8b_lj*Kd{X9DNp)mPD3ZShm_G$l0- zXmAWOyET;#&wTC^qK24|brB4LHzD%2XY%?cc_EYnE{U^IgU0K$tk zvth(}Wg_`aYupK21mQ~1z5L|wjLf7bv{_b2jj8~loZ>>o< zRb%vLA3qbQTXm^>Jh>}4$0eg##nyD<@sW?STf@CGE;wPPj#iC72SohIwf<_Ii^hHH z28x*_D>D*pl)enb)k!3K`;QA=uyK|~XCM`gM2MrOFfB*}?C2_+D>SA3_3HE?j{-0# z4gf#_X3>jr@xFfflVa8IcuAaoix{|WhK#Y+PX~V%P5!VldaQ4BaV=h-EM`1ZBkD(< z5ic6ci;*c+kvw_^1?K$zGjHd6v`?_iYHkx6MybxVh!9`z- z^_`gcWeo9MpqwKs{88MEt*1F?!^a8VId;XtpXer%_it4`se$|;;2WMwp>;k9r+cYf zev+^a>k3IJIJ*lzy#JzwtrT{QSlvrFfgLJxs@xfct_FoYBDOWaO%a8NvnXc~Q+{Gf zIlwz7!cbz`FL=hp=8pP))4PaWQ;!823kR*LCO)1<2n#or?UU{AgZ^JwEGczWXL~~z zn-?At(YQ1Hge7S&gQEUMx-YkMTUyH7Z_oe$fKV#I59}}nk_a&S>6|pG{u8VD__~bh zQ6YwY)~81Z*hF2JIv{cDb#~~pmj{{S<~{AG@pY~6rXk)Uv1ewnqd-Dwzb2KJx4J1j zujBdC7Po=zb2(?mQh>JzUr66KY73ep8Bwv>4 z?`%8P+@E$~WnNstx+?oIfDZ`&1^|c|{Ut-VAD8Z!0zYAnp0w;Y1U$HOaIy{twr}F3 zh>37RhsE)vkzkUFH^b|2Z6?Yvi;3E%@&RE>u+KsZ!nzu%BPWos#h1)yx)a=67BDkW zg&#LH2D$tt-z)BvlINt7HEefMAq93Bm<9PX;%jbP9aKL=oO#g(o_@f}T9JvPA#XNl z(D0v%q!4&-QE)RX000|pv88^-&5@)iI3P@4q@f(@Vk68pq{()5dQYnl#f}L; zgf~|f{3Skin|2t5K1DmU;vyUH@ zXRU%j;R$h%HR+%9%x^M;coWV7ic~B<-8SZvpAEp4Pdq!wDPbIx)LaV#-9t)jvg-PH zjYE5m4%sPdIURw?BRD+Phb1#?dMFX0CCadi6W0pAwC9>y>@?ySM?55AN=FXUmTR%D z7QH>kIvY>GqaEy(l(~lUvBz?mmo~GQ#z^9gDPRwKXn@%f-X_nKwjv2d%nqf*j9?#o zfC75z1maT6^dccs)a~VA{W^Kh-BUQot_z7G zQ7cv%&+8G$;^wx=WV-(S{SMZt$6zzfK0G&-BsssG%~bSw?){Y zkWPC0|D)?I+v1FxZQTcG9D=*M6Wj^jxVr{-cMtCFH16(=G!`JZyGzjE37PgR zpUhtW>q5@vZq`MbU+m?N*<%tk?KTY?0RY0x#0gFx7rft_vK-A8C)XgmZRI+<`{LNk z%oISSGcu!j==r{$jP;<>&6*~sS6g(FjoW`mUT~>F>A}Y-jF1S zyrH%AFzTBcc*7BZzV2Fn%q!9vr;kK?uC>%;gQrI>`;woktC&Z*3TCYwdwGA0Ylu*J zYP*pzHR1Vu7r>Z=1^M(}FmwRqYOr_lUYRysnJrK}J_;8W=^@|76Jg(WbN*5S~9UQ#y z>>@r&bmEOS-k1F}j@bo7!e_pM1B?R9Rx998V@2YD6#7|QJB5{8B`AzNM2YzxLa~Mr zwlmuFI8Q{-LMC!Pr|0Uha(QB-5T~uJCazsxq<8Qy_Xi4a0#GB9CUm0FCHXl#} zW(^NtqNT<$=1|=}sk>#nXTw39i47Uizhq$i z^9o~Uc?m-4xL|Pj;xHt8)T8o2DmfQ{8U=)gqz%Lhw5g=Jh7Pa|{xScyLV^@cBzN7^ zKZSq{AuK}^=_ zd7vhWVykKIbAXnLD;{wa6aYK{YGf_>%K$XfM1*l)gX()=-rO$2}HU3~hu#c5T!om~_Wy}kdjxD}f+w8kXHHRe=GgFXz>&s1{4Z*P+ti#pO#fJq> zjQ8=@IQ#qAPu(X$HiiGUd3$>$5BiEuZQf8nJ8G*AE# zj+|NG2lr3eh?~3ZpKUji3|)jmIZ=Frh(`auYjznV5Nn=9;E-qGXU(hpbf%AL&#hFO7wQ(ygsSG0|;|4dNr< zbzPr&{pzSpP||#yh@79Zrh98enB5e|Q$NE#bY`kd)9>nyo+8IzA@CTZ_re_%C!vt> zZol(TMp4;`-<#_Rb9a7^rPZ%h>^D3r001;gD#9jVaM}K(=L=l#NuZ6s0QVcPG=p(f*KAXqLNX zTKxvozsYsips7lT{8b+|2vArU}qm>13zfgLokFF#fJqRqL??gzEl^V?!- zx&Pm}O8}_I%6REQz&tg{xL%xj7N;%MtEO^knwN{S_6rjWJO}{b;Fhk-^vA6}FhG{n z<=rTFIQQwjPoBW1Y})X%$xG=_E!d6UCjwn8#Z1J^$zl%GzDoSXe8F7B+pZddG-~P2 z2GLGd6ze%_GN}U5ly1$gx5Dr{7cVpSwdH6Ax(7%3ru?U1^}Wv1Q1={r#$g&O*KLRM zi;E^PRg?Zb*t{-M^zz5y;;Yf0BBXtn*Ww1a0Ck3z_OP>u{_Y=lcLRNVoLnw9s{s#) zNm=Tf*@f?Umirfc^lkK>fNVI0@rr>UAshVE4PBg$8SdgVWd{7y;4`U7ynZ%<(z}Jg zU9aZzvFsMb*zVn$0%juFT^zZ;9v=DSqo+RTE|Oh`xFZ*+?eklKQI@c`2OH<4?(Z(< z4`<>SQX7Szl~VF0Yv9AU0RWCVt*%V6ibprg`VZ(pjc%X z@o-qVB5#dW>nX7=%8BPM0cIi%lebLQ%da4k-ZF2(gxwC-)0a~|gIPo~A9x&E*|F?+ zb9PFD22G`JHk4!B7k2auE!A6R$IL&y>~F`WJiRS&`Tl9d?-u^bjjWFdvn{dubJWQ}O;~R`lK(SE0?77T?r5ILOXjGE z28vB?;!Gt5RFjY^akMnoeqn5b2LJ#7R{CvOl903m@iLmpkp=phY0BbrkyYfPWWUPt ztf(HVN}(eUY~x?m;QjR#tK8sTy>(O)?PqdHYmyak913tVP;<7ae8)0byYJ9*4SkHW zH?Hb`HOf9j35Z9Wc!ZylX&xiUZe@G(gg+-J?C zWAYr!s9Y3+lfnS992xve7W0o8iq*B7XL9y=LYW}cRAS#L!BRC{qb^JqO&?4nHwmAr zTUo>eSx4JEo5M;>lY6$K-fW2tYlCeSo%JiF%EW$ed1=_NkfP_r@NSfD5vQ%}R09JMP1B@tGa{Ope;o*m6LN*LljTta|P+W+jk>#beNZ>S_Yd{ zGKQ9nm4y*>qhMmV<=D}U(XhhmlNJooQ7!kUslOa2#2p>?2vG3-JBJB3}jo*U^z%OTQ3 zzKvm8n){Y{lq?S$08r471EwE;^b!!(=W%%Q(|}_P<`{Cyf4s8v$r@otQA9f{*O8~! z+qr76phYVhysb{jm;0zrF{%-+`;F1nnhC-g4qJBesSBd^qT%&NnG(h6bx<$r3OoL2 znnR{8;3>R`RYFWh!&SN)zw|c9sa!{XJuW&?YJ7i{6a@P@DZnG>P90yoH4U z0Jb8e_S*8-FNW@EoL*ALp~&w3aB?cFRp-^e z%#iXl+{&3jAC-C2gAMdGJ=jo4K!Uphaa64}n1-;rpKNK|O;05pL$M~gaU!@Kl`ZIN zAB(m?GW<0T1K|T5>I?^8O+EKTqopv0O-{={PcsE0GPic2-;j{a+sHe^N$k$nJ6tlY zyS|UBboX7qEmM$po2IhbLgq$2BQ!A!KCgF6qheFYknlyQplxs<6Ot77p1)&@Q*eaF znQ0j@Xo!>G$mBlWU*(ES-NRghefm5{Ftgfa3=^u4ZQ8c4vN`Lx}{e?2^?mku`@6QXUXWdi? z4WqPtVo~Qc*t@A}fBb2-8us6#z5x1G%bolS{;%2WK@jeX2pqUr?~~TK5&kw;`%y+1 z004Z}smDbjTgjC5r=9DwW7%G85FbaC77<75`qpn0&8qn03y!=<3iNqHBI1NGF~ijv zpeoUjR#$sMZg!~z6I&knHn$UlsZ&IWPXs^C2l%b<|isN&0zUjpJQ;G zm-n3l>uhj|Tz~1*@h7h@oudS8kfiVbzT%=SYHU{JZJi!LH{?~BcbUV#XM_)-0C0%M z*`ZANDM-vnQT}-*h*CN;z~bCD6s4y=RJbs&R{4$^I(bbtkoHs^u{Yg~()MmHY{|Pc z@e8(M)OwJd)jdC9cH}#mL4)kK$ptzP%-$%c1N&gxifwgUkB`!Sipfw~t$^8~vQqPs zg4|8YpfTCgx`vo}1&!m6#P3Ax)u$-b@UppSa7u*+!d&?; znFmOr(niVNb+S{Cz?#2{}}UJVjkoHBYG))%mb79Y!=HJO>WymCpBb>~;T> zb@`_nSJ)rBH*K3^sEoAd4#9}0h6nt^UdP@OOvgs+Q7>H&Wm^UwEeX`xS}T3vrpPq( zO2Czh?Xmhwk5tWos5vgz4e^JP?rB`TORP{PZtqAJQu{^GyN4#ZRk<_%{=L@qP?W;Gx)%>u4_4|n54Tjxj)65&=``eK8sA_qKt;Y0a4-p{qismpx>BDYRx@H zyrGenq{v8&fo<`cG@oxqFDgovc}z&%NZy0_LwJWmR?tCZn*bDmoe7P<;`w4+9~m`oS095jK(*qC>YECZO@8u; zz@j?8@%g!}<~)nU>rt@^RrZcHJSr*v845kV@`&NI3byqbowxEOx0^NgkDcmyiLds{ z2CAUW17nD$EMvm8$ZEQwL3z+Oig;{{B2r>31svAtc7zO9diPIOS`OB3PwPfl;gh=r zXrGi^490D3f7!Q{(uV;k)cwrd**}Fvg8wqikrotRYQERxkQUU$)vC+>uEfUmQ5$bC zsyQ9?#x~|TmStnaiC-c?aDz%B=W#a7MrFQ{Bt!nUmyu&J{F50powH;DloCGU z+M(m1GBvoHMLezvF|a0c!DxA7u<3gRt<$>)xVL`4uu#p(2sc{9Ps~@)#(rcO7ur#^ zT|qm!@UQw)8YM>jnRq9N&%sDR&fkOMR(6XQ6p7>F(7wyEl3*%HPKqWJD7@fb#>puE(X zt&=0g*0caUE+yrJ9Kqzc?bIgU0pBf2JViZN=Y}Z~RcN|;+h;c3I$|ibog_GJs8Ot5 zbChC9=`uA08UO$QP~gSN zIVGYXBfE-Ox>Dd!yHH@K|MDG-o3i@V)6+kul2u?cLu?+5jjc>wd1LRyO*@9?s-W38 z>xflbEhe25FHAqhG-yz{hC*4Sv2U3d^@(>CY~9YSZ~b+;*@)!TX%`y2 z?P;IB22Lkz6nOwxkV`p58 z)-zm0Xtkw#)Z`1J;k~~-&m!G~2LJ#Y1rYf`PE9m#5w-bO`48%;T7SaS&lClgujuHw zMrOfVBfNsSW{6mNL?$~;HCwRPmT~oLwvhpgf)&9Cd6Akd@OteM!@Ad1SFm?m4HmI$ zK!l)OrFnv9FZGv}c(5k9lxt<1Bb3jCk=cJ*p2`COIX=tg!))GnQeA^;vGENN3X)($?`Y&(&Wf*Knhy@#6bjy`#h`@e4H;M561X@kt_@V z;H>lhSP0`Q&oW6T_rBZN#oh8fWq*okN*}m8o+c2tf4TBPSktq%vLF7tILR?`i1Szd ztCXAruFm66SdviBCt6AHzak#C9pMLAxoko?W@WzN?;^4o`Tgy?Mwsy)|dn$0>xT@mv~1NXC)hDP$-jnZMD; zg7zFrD>9``No`f>dq*SmxY#8z@X(UjaG!S#B$X@W)viep7#j$*_|(BPy;tzu;x zjEM?zyrK8^{Cuu@-Py)1m54C zXEH4TDB%D+9H63^yE?rJ-W{+t*Y4=-sj&%eNyJ5P?9El^8VW6myLG3mi`ku)CG7t> zKr`zQtVCfSPDAD$O0J2UuQe>V%yyEXX5Z=hyC9iSp}0*!?Y05qm2jMibd$DUc28*( zba$WHSL+tGf>xZMuz0GZ>B7PXQDn_ISxFg#gM02Ib>3_Gvt6%#dCQJRxJ;WB2Ed~a z2l&>yelRTejzURI;V)NIi$10`(lIa?hKMC*DIEK%j<-kBhh{Ps(B~*phze?pU=CW? zNRvfl2;eB;uq2I2hKltOi6oG)fi|U~Ed17cCpZF~!u@j4_#Z(AGcq!7RITgvhKaB$ z)6ey)sM>7B(f*Zv;!f@Ek6Dr`9g3Iw4DFcuKMX4i)+X0}g8%>p2`5_yXaA3`ycK>=z||J9FmB35X*=egzK2&{Dk`v)%9vWRYt^O)ZTUV8|romDEp8*id& zP=$Ky2}g>Qs~w&MhpT}w;V0967H6hgAKUh?&SQ6nniJQDX)}V{D>|rphr@1LoIg)S zovVIS`S1QTZ^yO?p_`xQd#C-g-$maIYE zPc?^yMY5m~k$)IR8Io4kW!F~AafVk6l7w27L;v)TY4U?LAj8t&$5dBGZeiz;=L@g< zs;$dg?V*nL%iFA*rGEOT=&~9PZKi)}rvx)SQ-;z3oGQ_$u`~qOjk*Z;6{u|NcLtO^ z5!m^@7YbLr3-?adM41vJ9Q7(vs{he)*;Xd$7qUmmDs0o-%#)fgB>`X((rF_;&cbJU zb3mhGw_1EetlU1=epaP7J6jQP*%Q<)OFM&rA(YK2RvVn%hP$tT**Olf_rJV+6PYID zM#7?_vs5mp*DV9(1!Al^t(YyC5Cj)h^-0Z@}2FMai`GG z%h1YkGo;v~5079MmY!c0+7$k(Y7BP^SM0l7qWfA-NyoUi>9{-M+_bPL1c2aiS@9?C z#8^N43PdaqXebQyA+b|mFHDxzYT{t;z2f#VE!J{t{_6R?&g%AE`852ENltJ%QG<`b51|iEiAQs97!Kx$mNo{YsS*EVO!Ij zgpoQ)c6qryqfIkT9*>6CadYIyG73phN3O+`3A8d2FXb2V!JS;GJe}pYoiY#4d+2e2 znMaT+HLFv-_j|&#RE?<&Pyhf<<3$%Wy52qT&0a1XGRvbNsWP=}j%lgsL4w7AkwaU; z6tt^SNh*oJ+Lk?On4(a(-r7O%0DY3x9?6-lblPlUuh{IQws4}4d>hNO5ua<}Bji_9 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�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

      &}uTo9vxDcC;oV^Nj$ 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

      8t;@LAU}0{nFL+JY}P@TGpm1`TU9 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

      XyC;of1L` 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%0Dw|;olX41@!rBspG5p>xip?ar7!=T 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 (u(xav3{)~}Bt>S^Sn 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"s+;@ryEigHmm+bquYqCshnUDbh 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

      Ga)~JT?L&E#+LN+)Uxd`p(f-{hR)o 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%0A*z3HGCSJ4E_0rjEf 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

      7AF zUZSKVcQ-vst31pH>%0Ae4xS7 zh4-hY(VVoP#LkT)n`<+Tj!Nu|jF^*;%5m5A0!+SeRnVanEmLe1rOl5}^_?4HK5 zOqdERm=#zTL;q3i(nf(jS=N}+sT*sI>TLnvLOcm?o0Bs|?UjSwE~PeZwuC4{zIwGK zc2(}vhB!WZo!3f_15Y9tBHNiZH3eq39W|i&%Yh_b@2ziuH^|0a2de9seVjN?09@1- ztAMar=x|~&u^4pR;ZiFV4m8{r4t%*+>I3CLXu>t}`=e_onwv?~$dna*xA|qUqJYF7 zBI-GTpfZz~MD%`D?Kanp-!`TTRq?~5%OEofo#Rh*fCqAq9KsMWI$Sz$9jcvE%Bkm z0v6$#b8MzWmFljUZlWlKq*=UJy&gn`Z?nN!k}#ig zl(hYzTg%nvvli1W%$X)P8ziq_P%gi57C@oI$NM4WtidrE?Hv z5XWp9Vix}bKXMQBEBA59w;iAaouz6j^zUU=$s>6vwCEqnC~!THF1H`n?HSh8#`PNhJ3X1+=&%Dehrlhna#kmf2~ZCB*`VqGAOSQKsi-^| z8m2v6$*4J+vS55t_MeCt)ba9JB|+4TIe8Y=Qw%vvZF>5kG{d|#hvj`lemRMP)APYa z)(BKcd&zEv*TM`Q%f^pk0fCGJnRVS7%J~;YtJ2frlpKVnBX7!u?ek$w)v-`^1>UVy zX|?o}_D>Ox)IK&di}-_0OQff!Hy2P#+)Zm*wi*N}002NpEWyI3R3ej6TP^oy-rm;N zaQal(s!N+WlL1@NJHPJI*gV?EZ5YdZgJ0Et&@swZ7jPq&vMOX&XlXPCrq;T&X`ZWZ zwdN(DeLPyts3Az`Rq^;t>03tC=?8Mw#|D7VifP0#CC@w~ufV=?t30q-In<1<8giFK z9sH5fMcAasc7`P-dbg8#%AW5tcAxi?zkdKAlv#^{(O?)j2nyyt*?B}b6FPJ3m?IS6 z=W>$hRdQvIHEZ^L#oNAW60@Wd^p=z(7h_aq@YhM}6^OEggmUKgY8a3EOzO1V`5!&F zFB2#zGn1JoK_#K?>`Vnx8b{@&W{SAg<=Lsos%%%^Hyf6?s!KiBb3HsPR7^R>+b zO*UX(j1)kp{p%Vn5<267D7?DKT%1=|L!O@5{O8XtEjzE$#;-_(ECMb+g9uF z>FgF%5Ht8Y*T^|r96lAE`vh|d{@4bD>JpN*CW6%@wQ4E$JlMli%Z1HGj-a>DqBN<) z;5jg1Or^PE7x>E50&kNT_tgL9HW19W(~=h3?9V&X%_WEk&E^*soEa@m07|$Z9%E!@o$x5CB#VaUWiwg z5i@acH|{pZrbZb`!;_H1l0e{$8xYMiVvHs&)omFG&FgZHh-wSNM~;C{H8VHd*3e0n zug#vzG3shB7AZX!sNWm0N-Qr1GOth>279nVLCbVrkiI{-Tg|4Gf4BvA( z^ThwQdQy}eFq~Al%vVx|z?Q;mH%AcI!*9=Xp7l85g+=a!kf)`~e~fzHiQRLhIijsO zB)MdpZ;qKe>K8~)5#-8s%R*FHxJEE=N8{oQBOB+39$Xt__R@GDM zh1zXg56|emfBITqi{;N^K#i>uNev~j0(#pw3P|j}I#~=_VhUR*6wVOLv~^89$j`nH z9=fNDDj=ELeMGnQPeji;{w*I-z}aLVD%NC3c>nY>R4*zi?<2%k)GhOye%e;K zs>mI+>XhU9)N8ky((2&mh3FsaPiV>4BEu=e^X#$AWc0aLrt82wsw`yUZHiV)chx`f z|1JmT>UWG+!^1f3)9an;V+v6y{ zx^hla&hn(2OEEIaw3;#MgMRa>6>dp0-V5hsr8yoh3r3n6s)nQIN8;Dn?Gpc&rdy+B{ey#DMG1CBox2vA{6YR;Y+6F17KxE#Q~T_Dp2LYK?Ic zVvN{r&5ytA7Be_8;uJ)X{@#>1>)7Yqe@3)x^UuS`HbKM!Dx~V|qH9jn7Drx;UbUZ znZc{#Ebn|r?xc^hj0kSEmL`8mxJ zte1Kog620q>r3S+NtsJ38u4lN%>Y-aG{q82tAw|Y;ELQB`1RB0x;ciAmYIa{d-3__PY+T%$aRm(A^#5C9GF8QF7iVm)F z>iH6S-wGj35_60Swaw>&R4y#-YVgh3xqwJ(m`Rw}D(XKZCFxPp#HlMSYyveS!~R*t z0zOL4wM<^w&rfcCzc((qh|!VPSY&yunSBgsl8f=lDm7IWA2Mz4pvdlN zF!SyD`aj7U5Y!jgTBP%OKbi05mFq-b9GG_Sf5>Y?7eOntYKX-Ko$N>-lwE z{pLs=cJPgmrV<|#{rVG@cAd@F?#WRR5@p__@s{U>5qLyF$!Kdwn%=N4bSNY zP`-OW&A_?A!6Ba#l?X|ySsFse=3(eQ8Ndnm2X(@tu%#R4f%E4JzIlwlww0xw+!3Y2 z6k*@O)cq3#qz-uu!Wp1N&#;EXG*Fd7W*U=D)n3B)TVl&khIWeKt9Y~n>vM$4D!iVF zA}Jw%FK{UJaxBP#a+f1v2v4yC*SxHHK-K&-na5cV({cR~Ip6Izk~PhsnIhIBB^fvb z52TZH8*<0CIN9Qqn65_B6Q7iAo?rHAH6}UfH5Gdy@tn-)4WBhsdus8uO;!cO8_mi7 zmw3taKMKt$o2@An3FlZvhH4?|TJ-c(mx|IIc%$a4$CuJB04(HXB)*I?Wse%%>`wj* zb$?CBJ$zG4yo=dNYJ2D#l1ro(cilkpco}c2Ig`-h{C=s&ZeTD7w^nnWXTwg-P}rlWpD9RiIN+K*?USb*quu9+m5ZYC*P4^yL-Ce zToq=xVK;_iU3{s^cFS62%??g{F?#2{hSMPSn3__W$+n;`CO~>&rwlAAF)s|x2p_7B ze@vy872E(|0w4fM0C)&i;`pqD6I0c*gjh9h94z$x=38tWZTG13C`voHNHy9Q%hpvO zj8x0|xg0}NUJ7FNI;j#~;|P;^`-|ulTkbVD831~ckW(T?-w}3CBQEsDzn&>7ig46U z>9tpHOLKhi3^1Oy>84#A!7r%J1W;@fB8R z$o_|N-c|-@mz=i=mp$=9w3X;WB~H>p7?6q_b*Il{od7CP6AE}behmWnjFlaNqpO&5 zC%AZZjR(7FZU?Q~^<>OP0qhHD?m*JMrr?`J{9n43>rMpzCB|QTn0vnd6`2j9KlLfD zHzpQOw>Y z;}g6*EX3Mt_XNdwKlP<2yxmb~2O~fy!AU|Jd`Cx}u1{|#2v}inPn6FEF+Rh zkhe?cPZ*2=m_R_vLJTAg#^aTwDm0$&y(H-(t74NVE8KnOK`9%L8M>z-l`}Lykm3YU zpXGUF%(5VQ91yzs-yKd~hj%i$L@PTcMMVY|%`V0yWjcsKimj}mIhi{;U)n~sc`!52 z-oz7lpN8q}A&YuYJ67tV;NZZG6}a0{oE}VJoUnCZ4}lgiz%E!^i(Y z4gf$#sZ>dqEwnV{&8-zH;I%TxI_0!`6k}x8Ho>!z$;RlryYyc68N6pWdV~6#umqlX zJrV^1!2c+W2A(U~Fd4W?%znchTq`y7!(*Z%63IvX`DrK0LZDYmtb4d~T-uSHCR-^> zAk|l>DjvMv7jN4NrdmB$C0z*KfAG`!HH=*9dh+NN779y*tb18L3HaY@xkQ^C+cUP? zB*d+1!SPCTmtJ-&*+?lT{UqYdC^v{JflP!ZD`xANy9cqAlcMJzH!`|6_Qk?MLP&i8+f1u zMt)4`v%`|ba>vw6KaXQmQ{*iX*@$RG?HpKp^r; zDk?@>p1LS^JsOtS+7Ol?+Z3x{KvE5zg33qa99DxF%I0Q<39cTTZVd4u6OUp`gt1-4 zC4&T@VpK``+Wl_lU3u#hGF_rA_u*P{-fK5&qQe?D&Q}~k=ZOO??Buei=Kp(z(=4t0UB4H20 z(L?FbN}-LX6uo@viF}NfZoKM<<(8|Y4I!YlH%QHAp~AWsX&LZZ+!y;15rnEr#h)J0 zEn&AiUTPM!^?gwFhZD9jQ8QtUo$Jgr?c*<-*aFUz^5=Bs(aH64!oGfIaUAMw2u9~a zj}g}yi2Y?VyW<95SfId4L28GR7wfPd`-olqYlo~DjNW&&T+qjGXwL*X-(%4;_>;7rgmxckx?!S(n%Gqe9TYZ{Ez+|L@)fEvcfny>P>Rp9I{> z6tX%%2RYf(ly1kEwbaEu<9B{Tg}{WRTbZ|-ULE4Z!B}lPTEVDYw~bl(hM17zh+0Gk z*Ni{AgLP=J9_)qoV~)^Iiz<&;j-nI!wht4JdoSzwr#nG4ncK!@r7F{tWd4?ojAN%6 zz18y1?MfO_?TXq#dDqUO`&kE0|2QA&`Z;B%c>Isu`iCv7imu;3;@=5>$~BuHPzn4C zsGtPkM=Mo^!swlK{T<`axHb7zjBeK(j(GFBMvA<3NkA#o_gUN>{KBnQVVpY=h|MU! z_#EPy4K0i?!ogsk+8>MN(rmXvZ5CIhe7O$Ou-&cBoW+)4J)JrI!F$Ua>06s06G0c8 z8nF>>bmYY_v(zzsLeVjYvXN*#Y{Q5-{PX@#{~NPfz`qO5S4;3V)JG5^0Ae@@j$^qy zyRm=~3BmJeiOnRIQUMfd#WUmerQZZEM7N%O z>)b5)S+cSn*-U!6yU2K1>~{#=b!vmU(!z2Cm!MXHp1insc!X6PH@+khv{lr^WM}?c zw9_h#`>tQb$BeSv>R4dcUb(uh$L4lBimi%XfW2VI+8HSTBL;$k*ebYjC0p?n+@(nN zO$&suA?yj4^opDoior`JR?CYo7}0*S=DRv3e&VO^w~^B*gizyHq0a(O&|F5M&RCx> z!slKLjtyXr`DmP359a#GF%@LRl`uB%KxuLO^w#t@rLcmjvGqntRdV?iqM-~ ztMg3o9+`iS3+jAL<&-94Qap<5&>=tjtEryGzFYLauKG~Jb{1P*r#$Fsz#elU>VDOQ zK!=LbZFyjWBjPhfFeM-epp^V$5AO=(uwahkZ<=sxitx_nT0)TLh8xa*W`>Qq zUOV5!WUR0VnXngt6mX?(I;SsJ{pnO4-p0E!1W~yZh>r{D?zNQbe}a4AMtnkc(QP8> zWQRw#ccG&UYkdUOb9yJlSP|1x5lT75LKxH;n|V z7~EcY zt%04r8qjzb4ZnF8AbWu%?m&P3FkNoCI`kTQWvzAP>Ed6d+r(c91rPzz(Hc%OjBOXL zF}|Blp-~AvUY{UnXmM3%q)5jhP;JLc|R_ETcN>!rrjZ(9nbR-Lq01w&l}rP>=(U({X37vr{Uj{0n=qzOZk z4;J{}`{KA?Xe=R1Us(QbTA?TU-g9Jtx>_MSM#3&W2a}gSR8`Ln&9AyYfE2e6?a-uQ zq)0gsP{9CoMkawhMn%{VtSgP!b@!B(tL0_Kdbvv8%jO#uXxs`KUFq`0u4uPUc)V<^f`UTeS)8G#-kb8Y+57z8TTFbOitSUw_hy?`3#1 zKU*q|&4gR)whzstO$rd7DM0L_q_ySI>%ac%QK-X2v8w3t|MV=AeTS3uo(q?yd9=Vp*A51uGX>gt)U`tbL@{WiYhswlk0Tulown1$p6FjjnhVul zYNDP6CjTF@-m)tWs7o4cG`PD<T_G*06h++BkOm&V;13GQwILV~-y6Wk$akdWLD z^SpCs*8GQBr}nP1tLnh>(xt8r*UR|)w9GXkoQhMMd25^B%WEb-$u-ipj;<>X(qdX3 zi4&lV~SCBGN#sE6jvkv(`oTs z4gW`@Ph!Z6fA2h#0JDyqf<2d7e{=4C|LQ|OZfTtfwxl^v7Vw-I;1y(hRTc-z8n$t4 zJuy@>;e-MJr~@ckO=ZVY6e(YSRoV^f$aer0^tg~a+l(Z^U9sIW1%0dER^wfG#Ld|J z8gJ3C>UC(SbsVamb(fcE+#h`j055 zRtHbZp4nP}t721E$BE6Db@QrmyTq$y(_!vi{iNdc%)?S-Q_{6HmG*yUBp=flbN;7_3QBEq~;vcGC5 z&b{$J_J;~FqE1_W?7*BW{OGD?P?mH0Cc(5nC`}-ZDzk-KS}g1*d4a9_=wvN1F{C8F zqGzpEymF!nCvEFtSl!4+%o$KCCpvx6!=77rku42ZR;&G&opDD)br?8(ZphYHfn?ov z?zwUMRaq!C0@9@)qesg)Yu;9jxyyfxN#0!vHYpn6u{brgE+%?sqjM0z#{4?cHL_2F zFTdGc!`)&S_+0HDR5R47E#N!TJ>&cz$bGii(z;M6Np*fJkYKLU+6!@0tmluDZ@hYV zgcYNBVl26 zy&G3!zo^I~XX9M+^FrOQ;+D|X|=qW`h*ET9J_Uz{L8W42GNog z71GApDoRwVn=WkhDkONhwn*0UoPK~6mZ$zu+Z0srVE)Ux(y-R=viozCdWKsGL7t4& zkEMQ{>w6NVix?yqN&D}C3@!Jw(-1CgFlhBptXN(h07V*rNN^rX9Jg}x+#=Fnc6S~* zWI$JI;670AY#wFofM<|3Fh0+^P2H=hVL&DjdyxD@O{muFII%A4ap%00PHg3?^#&ZM zSGSTy18dV|GvR78K0_!94r;`@_VlUG zfX?Vodm$__17(@5^xa)*^zWfGhX4R`cqS8kS-qZCvEVimI;?IL~w7t5#j!1YAMyCFG3^ui znZ!+ZTHb2s{+BTKUyvjCYG*Qk$?q9IHCZVU&8f|k?o-(`Il<1`@bigO1RekY0FV^S zkHqPVE?j>f`FgU_8DuqAmmY0RZg2~8i&80-FMbsE2@Vlj?E@#EC7i!ye@^V`Wc%8j z;mE;sHC*pnWNM45jJzuGJ{)+U_!)DAXpA$i2IN#8 zu%TI>RIO%*v2FT=xJSrfz4!c~i8by6iNBUqwohgmN-axXr4IF~{A_8=|g> z|J?0Kr-Kz$kbgvDESQryTv8MKd!cD` z_R$|FOrS9LDBmqn^0N6~kNVw1Z^pqXoRTz+5-@xplnNV&g1XpXgl=kc98V?=8Tw=u zz`>DPKk4DgR~sn@qIMeBOq_OMgsJ5x^$2i4D-hcVhFq)mtq8E3vn-;!$M0p#QTi?o zX;1_h&dpKNI?Twsk_9JvBj+_mWBTPQz@ZI?dcB!F53KY`3?uX9U-AYZL+MtIX`>~= z5cbQsVSA@){;**UsqdUF)7&KovgJd6@buz{vM+xXkJSzI{6dhUm*xrN&Z70NiKYF9 zRm_m>IiqrIZSN5lD%?PIPfJ?XA`>(QGhx?<{aMkbO9C}(pk{NO$yix`@Xbn z!PusBhf-KsM^1?Q8MMh@|L--WTV-c>+42a^0sybYAU6*oJddvJ4}Y603a~Kh3OK!< zGZ7=rmujk)GP?xkUpd-YHz6PvY7NZXdEoxQWRUEGicqPs#=$3IF!&zlNm@hkQ5I!r ziqs}LS#1kQ9Oc<#{yYyR@Gy#BuC%b_SV`;^w9wTat#}7G2O7_Q^{M(IKnuIO3r>?X z{UNWW=ry?aa_d%R4*(b=;7BB!)r&}cKI~3|Yv=qyUKvtC{mYK=!+b_Vwxc$IJ*)nq zal}`TVxzp?gaLB3ciZgp->8aE?Z7hU^Q+h~*fN){6Fx_vK-SCNuauh&+m6}IY_^0a zlguxtxp`hY>9UqaDZXxhs@1aEz|FfkBGuOA>56KQto2G@u&WRYqw>nHf}?}a*##F$ z%M)J!G#K#8N?8|8jB561c3IW|gOzFOQIu+vK91jpb$BY_jD~ z2a!($S)%|_gP~noBto?;096_Qh@9{Oj`#glSMRs|)IgLN-_o$7P%QL`ik0Yg6X%GM z?hrMrwWp!=Mz!Ha^&h8;0&PY9?y210qjx_)|Bu?7<(Qd&Pmh_i#>a5S<8}*A4(zil zoFrI#K0G7=*$T72dRH?^*q$&Nj#Vt(8b{*jHMHn+j5Cel@*!7LXEI9;{&h@?-@12x zX<6Z)Y%t)43k6sMR0i81DV|NkJyBZ?j*If|*zS3w%j8i8@=^Rv1_-NZKmXVi@pFg= zE#u9b3lO%I%3h7&SDDZ3KYUQE`b###f&S-CrM?ky@v7&xL20_mLEA7So*e9EJ5adQ zu2a;y%fr>%^CfO3hCDGkLT{;Z>SY5Ao?yhtK#o=)A4hzcsO@@EZ!uXpwI=w93IO1- zs1b0ddyK1+)OoCx3uV4Xb(0bFb!DE&1IE$pyUNNwGXN_CVR;2EgV0UaO8H{mFjkELJEs zahg0&qN)!vT;NmLj6Yz_*WeS)@B+YO12SqeC`BU@9{AfA8$Iiox6NazICIU~w{`kD zLoHy*ggTS!g%9ZVSlZROFJgjhitQRiK}QMUJ_(%3oci94E-S}ZW=%h7zSs2h&Kq5* z1fHa;P~sZd^7zr5+0xw2&LU&XPGh=fYNm3y`qy=!qpMaY#mG}g?&b7kFWfiIe2nD| zoqC^TBtGCoM?eA4#43->aT8pfW(nNiO+V_nyphMdG}L9;39#1K*2?Ly(9ip`)U5At zL~on3#SuByEpejVNa_{z;70rj`|T-i(w6)}EoA|?_Q@Fwlvr}sSxy798$7#y!28tQ ztDO2Ii2CnTwbkM=jb|-wFfAs7)nI_JF^Y3CB=Lgtli!Qd7|qOYc9Ra}95NHS`7#`6 z6fp0Z&Hz@(mV@(KV3@G3zB2ZEk+#Omwb?h? ztCbbCDaMr7d4PGm`QqcZKwe$5>aD2R~(17gTc0(i}wa8lRy6v`v$YTRPt{~lzhd_@_v^t z*^m4ExeFl&<(f*pqiJVX_KiC*qM#$6LH$0jl>nDx_`cHc$kKn?SV3VnTRfL?zv3}2 zY$ce}w6(HbR3)${BzUheW4`zUqT%(}!;$MUzH8_^V;^hiK?UP$3|!hG)2H);=@A^w zDsI)%z7BF{e}sz|x_tkA?5a&|!}4$DW?4kf%h#xO!k_uYsEcnL2N38`!)rolq&6Lt zh?yR-q)p$oiIUP_UoN=HLVrW{fiHh>QxaHV%A-AC=dLrS0P& zb|)c`vU?MVMFbcln>Tm#vVIW&YO%yj=yo6iy+QWwxyH<=bUPM#wC3tdFpfY9kW6?V zD z$?3D(hR_ynha-Tb9#9+T`yuEE#b97g^Eo^ArwrqVmV4GkI@A-%?|0htdKaHNnaK60 z@@?Ai4f>p^hkMW|(5#4{<;)_u%2II$w-FSbJvRR(S;X$k#`< z!tH4_Y!!9QY}MCXh4-1hYlkHUX;&@&B(h*JWgLVz^T+F@nQI&tgK)*|b-2B?lv&zg zO^SfO?2=(&YZM$#`l2FCI19IKssjD?RlFB0)|l+YKwwv=Z=6l}_DQ{ng7tG#QpAYy zSC!>u@qALW^7^5+zO}E0zO51U_;F#yr(tC?p#NFM+JXoGfPUB-FJh~BrcAS0S;XdP z)t7oHa0tn2wsG1&lmx*eTHt_{Wm0)MrZL73g${U>^FnwpLr-H96H!|kaUX7vw(drh z>GyF{jz_!BzA0o~q)C1L`qc5ai85^%q5(UZqpE*@(&Z5&>Gr&hvg(FIVezB5uUbj% zv|BLdd$x$I9rhvVU2YJq*PqGTv-OhrnYyr!c0XWMcXNR!q!BFTWavfuYA7C$?#o*q z@-(M0`5A{Rb%`bvnDJ$th|qCsLd{p_ZNxM^n|m1vC-%S4yC`@F`UXFR{jb7!Q^9^G(> zBL;&>P@zcH+hOZP%355u+J_&8!H$mJ&P9myC8 zB=pfv2`6#_{feLYGVaGaZms4JzT0!7{MBAdJrQg-^4i7&DC`UD<(-Nw-)Xmgf zM)_wwk#Zls|Ie$NwZO8~x;IMBT^DL}N@li*P7D}=wY>bk3&(TJ&G~1liP!yWr=-qu z^3Olb!d|6KvF|nDd`@fAT6Mp+KLZNkMh6bDE#caz?SbVj2t8I@a#J`EqYVWo8(vIo z9i`2W8JzafckgBnmR?<-!Ulph(6EbGqh#8zodEwutWAgj0AjMuPlsevv=mj?JNMXc zhEo5bU{m<`#hC!@M}}`o z6g;t7Cs<#2*LIhj1HKF#Ge{JJH>_8`7mb}6aS;BvGT5eX4tdIxsY#&zGY`W*y}ci0 zIhnR!u#m@Guxfj_oSXhwEt-p_R}z+=LorY=wJLWkPmhns<%jG-qKJmfyZSa2vjPjn$L8();$jgE!h#wE5J& zt1b+-NFMu1qNj$55&An39@wX4*LN1!l_!a7mR9d{Jp%H?2!-Q>Lj`0! zqHEWC&mH$IV?NlUc{^(CJunKIjOq;S2%zRXTLqovpK7Z(eMziDcv%a5+Wuvb*5be( zWOWy`Nu58iCU_$mEVJ59=7LlycxCIakZhZgKAbnY@tOp5Kxq0MXRj>Teo(mZ=EoO! zv_30NrycKb_$*6?UA`agoIYNz#af};s&mGbSr%Oh4o80l0N@MUhzF!rF}u= zv*cLp`;pEqj0`$QIn1=an)o=Yh}?@W@X^K5_8TmdR(&j`rmPu>gWKu~=cn^f7|S=; z(sg;psWUZUBNk&ix)}};?zaNi$z?L=Y8dYeZ%dak#zVfNgF4sZ#WmfyM7>f2ReAqm zYgT;!bVM`S@n4Hy6SY>M{ zcXmOjRx5*zP)I#}%8phLOJyzW0zznKA?6SCki3!_dTD4mc~^jCRi+#hDM9fD!eTZt zc>I&}#VZ%5{-s}4z?fUpwpzWuW$tKzi0dypY)o8jMWz^tFd!~;jsSB20KhVe2p5c- zE`zn0ejr~k^qC@@R;s3p zzZryc&1Bw|3`WzEyng4t_YG50VQP|&q$3+=L}M>$sx`}#hp4d3c_pafPZz6%eAwCX z10Oz@#_scBc}^Xd=pNe9!BQhr*_PN^iRNeH5~r`I@IhlrsM7G#0Af%C-PiAhiMmey z>*CQa2Q{?KCeD|tjnRl#{nE%JUaC@v2s`)rPm~Q0u75fkAC1jk9Xpj}*1DdnBKO~@ za9%|ief;UPGQw3NvN-Qd@pF>c}xo6 zWMwkDT$(+jG_8hqi(Dz)yK}R(Ywu9%853d!$76 za~9sjhRcDr>%+Km-WCf=gXzn$5_13oG#)`|l5=_EEKAT-d}kF4zDied0~_T@FhmB4 zAkXDnHNNe6`ScPKHJQF>Pajx&0q4lCts20NgQ+H%9MIBl`VyXTV3s+ zNL~Qu0001WekumjbE9I_ET}Nxw!Z>UG_yvZRK0Xrwy-x5)+qs=bX(6=ewiTb*e2}G zfJLkM50`}Oam*$fo*DuO_P8+wiI`4E0~lE^Y`Sr?IW%%f!uYupC&s4he~)A_4#amc&Em zkLj65jvNxGOm(po;0<13wg*l74KT}c!_pfY!*~{Ze>6hG-Z0ucUb_Ip6@oZEELSzjZT!g zOrXmhL>w0`qDsos)0F;`PF`2K%D7Hb`gvd_`IQ+b1+)AV*wjcQo~ClhN6k4^w`r#s z)vofRpn?g%MSD@rpEO|60$&Y=InI8?S-)(4DnKyZ0Yp;`0T~W{>NoW2h0@sQ&}bxu z%R(70AN5&rCC0L&coyUB{6Uj^)){4F9D2*&cClfb3%0$ZQ}snR9m}VbM9PJ`ll{V* zTxuFT$J_Uke;zpvZ~!Qwa9%89U#MC5makSUwQSCK+Sv+4QCBHI0m1%zKzh9RixrAX zK`cZs!ldoH)yQfVd&#xM0tElId3h!O%oxj=)0~ujpBtWduSEG-7Jj8+pbV5SI!}%} zW+oMgZEGoR_@0qpGHcYoOSU+~-TIS5-?VFTP)ni+obYZ(le<(=8W+A*niCcq-21pn zclLkEG5>3nv-Ysv)`AMArA=+dNHErDQ$pQOn&t;2xLxfZ^8Dda!a`9v%{7})$!S|J zPP2&8L3K1G+Z6lpkb7720$Ev~-(eePA$ILp+$ja8!PG|E9}HlZ@B2%W&TRaMD2ui+ zd_9}suvr+q8-_NwK+cSROj%-jGR5+XG7uVrDXJ!2mb}x;dBh$dXw?bwVo$33nAaIPQFJe`qqd$B2><|?pdh@Vs4VAcby2%o&K+5`A!VwPVIU)_ zAKEV+dEV%s>t(IMe@dvLfJ=~$kNt;5f%kz>z_{=yi#@qj!raa|15R1dLHH&4swCnMG7Gx ztugi;>xQvF&O{qZcwZh803csB+!2ywGN9`oncCVI05hu5RlA$ejHh)BLX8 zHfOV%QY%UxRwVQqqj2{q>5@@Di7gIk@QR`6##_!9=n7dof8gRnP;Ili*lz;oT5Fn; z7~#_=jaz~!^6dE(?FSg-1BDkh{{~YEnZ~!I?6s$D49v(~Ulfv^b1AiaE`eNK_A-HH z1}#!>blmfaE9>ClAf++j*a}CrZ${D4Gpp1!$Jg1mwKM%#Vj~0$gt$fy{7F0vjS*_Y zUT4?Mf(KmXWXpVJzS{gl%#x!F!@y@!yjDUjQM>_yvK0mq{EG!L7(0%HzXr`?&Y&+T zQnAOhhWc2r|69f^3p`b=rmuS4to;c~C6T$kQdDoOr1)AH`fTG!0(P)1f>OS^xk5KpoKJ!8+2VS0OrgF!^~e zBI7i(dGo1RpU0AFc6}b=B$E~0%)CBMMQz}r=$KyPA+yHrP!0A;WolR2pG02ps;Dj) zro$*+@ZHS`3!&$jj!?vda(b{Ktanu76T*$1=GR(tYby93nGT{_OC}uGs;Xe-l~(5I z@ElK(Yse|g+-onBJL#+O`0hS0Z+`;-&^&%Q3Q`Zj8z>8?4)`tP60HeD23rKmJGJc7 zTqmq>g0)iZmGwFj$-?4$t)#T`d#*n#!GN1ctiQSiY$uI1 zqpBIVC8o9&8T?Hmr#@8VRMB;QaEZr4T#oPzsgx9ck zvF)=C%%znfCw=d9sw6Q)l+quK?e2^WV#HYFF4Rc0bFn}1Bh9-_-hp7lf^#1!F@G5+WeA!7& zPIO1QZb%0gQ7l_dF~@P+59-UsG2Z(n%cQpNBH^=Vu6BIHO7jeW!f_m}M|jn5f&g(q zj=ws|=&BiX2}fPFS>B+q?TUu6(r@LoTGdu=o|yQxlP^ibMAUYic$<8`Q~=6(oB zZE0Sa%rBVmrvLx|%c>8KQlrRMd!6<zzuYG)`mj zW8K+DLQCZ?Ku1D@84wh26t3%P4oHa9Q(+?M@=%%c$BM7J+<{sX6>$g_LiPT_VbE#O zz}JK-)q7yf@z8xjT`?UxVT9tz53Vwo$XJaL=zJ)uMk&})$h0O+E=<3cw;kQrD}!m} zqKgS~+Qnr7xod8tBA#dBA>i8H#t-ciOr1>^24OZ~y<9tsjs9p(vbI`3(QwS`ZOK z5i{+#<}X#;bLz?CB%qvl)tNquWj=8x{I2#xc}<)wN1NRP6LRQyHogducPa=>-Qc6X zO02YiuB%ab_1Hz;FoxFc?|%=&Mr)>zV5*QU$MG5z0V=$tj~laXHAMCGy^+mUwTn=f zU=d2tusUl7V)T;%OWX#OpOnW(c7Z6+6?Tjn6uxXxVJODoQ!frTSo*j z?b)}qGF^i|t_4(@!}S5+0bDixuf6RHo3RhhpOq!W8R>$24eSHj&O}-h9iUHjIr(Bt z=2I8d`C*x(%d;>RgA`!Ox#3IKjI5HPsx}?-NRNgRvG0hKUppXTs@Su`S~fOdZKWVqcho5 zVCnMn6E-5EU?@^E#!YFoz|w=Dj4kK0DBN$%v;q-D(I{;Dn6l#U3l3@Io4~OD90eoB zS#8fl`Fg)Jx9wn!r8g5PlsV}s5k%u0FqqspLPGRKVP+L^319%WbR#L zrqklaqxH+_7!;YZZ2akznR8hzJez3q$kk*QU$5qo4@HR<$y%|?&~~Q3orw&pWEgTG z{j6N1j5Tq+;=8^m^S5@NA_^mm0IfH*W-1(ql(%%;X>#D*P-12UnFiRL>QZr2u`tNI zk}4}f$NhWO(92N~_xg11y2Akg96+LzKiYE!)z2 zrDNc$OMd#oL!3hys7o)e?4=X8o*il%W|_&8b!A_`T>I{ofNb=sz)%V+Id73bYE~VJL(;&n_@2@Kjwu2#lQYh&4<@a2{o9Iwsx~ijIn|ujQ zn~f0r16i(asO>_AqGlkMD6PV{LS`gFu2yRE|5+aXGs~fZKHF|}o$>c&agf(YM1RIh zP4|fTvNfQ}+d%O|=7AR)F3n0+N?=D>&yI8AmmmT48)mZdEW|ILS0Ad8AI37s3#NLO zFzo@SrcyB7{mbhWtk$I2EK39S_2FeL7${5+jrC8N9nXX@2%{AS#I79&GPWns+{odens{E4`xuP;~Z+|drx zXhIA{lm=F3Gcwm@i{5t-G^n5F|zJ+s~;yLOX6?iWA8crErRt!+%|f05IUI^tgqno3mAo z=^;hV_1)p;W*+;Mqzdr|qm`;21p4F5Kq6&))s^xJia!RV8=C z=ATHkX8uqydkb2~mEwJDAeEo5?G4fTV@ogRd3!cwQ{f<+lDMHzSrS2{jrzvxn5T}W zG^j3F&)dw0t{P|bJ+~~4T!odKrrgfCt~;7DiV-ILpJq(NL|fCdOM#M**82A2=L)ASe&Kl`Dv5EgSrOQL>lH7Q`OoFnWW%MYvwh2Oo!5uv5TX z1}*6Lx7<|0W_9@QOvhyj$f9gM30&(JFOQxk{%vna3`-`yNO-mjW)u*10L?;>unc3fA z5F{uPvsNOKcR3!X&Hk@jOIY~QOC70neA3R^PfH&b?r|Lw@@R`rQy;xSt1WRO-!ur%`mjjC)j}jWc*4TJ zf9!1VnVIP?Cn^d@3A-5ej{I;V9jgrv)h^onvcbYehfe_wN*2{+Ce{qM4^JIvk!C)b z0?I5&+yD+scoN&B*fRcu$I2-tQko!!0o_>7QSw~nbFV2GAqgGVF7x@bMx%sC5bsrZ zz`O_1HH9}MZdmwv{|xpgGd7u7V!sWzt5@gRSGN$+UlQ-hn0uDp6}cLDu0Qcx>f8ij z7CxU0b{@iu>Zc9U`=%_2|8wCe)mrjQi{-Ir^t7s;Pz#PnF69&zpfoosa6T9ygSq*2 z*a@O7;aWbzNV69hzT5Ibnr~`dA$u7&W**Iz*Bqh40BJN!UOdaDYU_B?-WVL#+x#sS zI@9~^{yBkCJ5G+oqyF;E5!>3X=FfUxlgvs89wZtL+lTOcU(eY?Du*^0-y9}G7V&me zNyM^@H<4{G7}(w10@#_!(NhGy9C2GAWpCo1-Pux%Q)KCYoaT+nYDGQO`>ExZ6Ojr2 zow=$xn`IwVtp~M2VU&b8%4_+j(kcK7qvi`*DPdQdII``NFNyrT&AP$<&u!ehL<831 z7TJZ*&=b@)k55gdUtiq1!Ge~SYs){JtXIuoA%+9DCXAhapdLPOBQdtSL)VhjD86%{4t?Hzw454xtIuW zERJe*`$(I-`1HCX+MLK1km)!3u_R)!#;SFD)Ws9RKI-mH3U?EXTTbZr!leZXM;l~$!3p})^Qy3r7p(pnr3XPJ zM&NQ-Xu8v5o@1)&T~RyB59{<`iJShA>%Y^R{=H4y002O|7^CUZjmbTWs&gEu-PNDN zTO^i{9o|>Zk)RA_3f-5>y`a1l-FO`?{eSYsAs;8$6lquTgG*2_C?%~`|{x|)l@15%kndUVmE8@%JKG=XH5`Tc2 z3j}qX>UqHlmEODmtknD4W8gs)Qo%Knwe;^b77h`dlLO6BZP?1Uan>&*i|>*cP(RDg z6(x2FoghMS;%HQrLVIu)_J~)xC&sQyW)m>*u6t_B%ouJW@MH`5K!ZVbvwQ}{zbG*9 zs}mE*fuF^wG~phI9+s^cTpDAgNLWifX>eNkx zZ412TecW`2B)5HD1iA96Y7ZB4{`1O(+wEvwfC5s{->f8{S&;TrXJ-kg0R`@>tq1aX z%=JtHD3YPdi&3|oQ5fZ+v=@Df$~{ukw6PLbJLtfugx}tI=w}JI|2oZ~vl)Q06rE z?Z!Ig?Dde^fJO840vIXNTt!bX0d;B;D>Z*9(ekEHrPa0om&7Q6ck9Xbi5XL}k@WTb zV;vHf1K|mtdV`$7UcQWlwfa)y`la>oDXF9^HfB}t&jthl)RZXj&QF$)GMjhnPk@em9+uW0o& z)M~lh?@=JK@x60<<0Ml3Rh``?HOCJxlX0USI%CO6ZY8ZgGs?YW={<44m+y<*g=`pm zXXK)KmTIW5TxDqEhupH z@v$_=!r%foQJRY8e@VgKcBb=ZGMkeL9P00jW>}hy3i#19)jeB!^Rf24syeIhAsj^Dh z*dsBN#F`|kjpm2Zz_#$>h~^-6^(Vdv+(*e8f?vNV002b1iUjuK=I1Xll-pm}aN0Q8 z*R+J&Vwo{gu>0H51lQqW5lepFZK zr@I7>c6O{tMXwMkGa_LS*aDgVL-ajQ@BSwDR2=&&`p$1#iH*h#W&1FUZHtixoH9<- zA_kf~q80x!o6gZ7=j*~$9F!CQr#+2(Y(O|ik#MgFbY+WmYwwW3!o#9uC0HWmawzr2 zO!UFKtDhq?*(lI3vZQ9KMBn&1<%;lsGng7+DW+#qiq_gJenPH~TA|Z0= zsWnz>R|k-e1;B%d1tWvD*fNPH@mG^g@(s3S;f7aJD!?xm=B?jU+HnnNt+P7)!0&u90@B{c36SR=#wAAGAs<`*;LX9TP(#Fd7R_ z&k-?-8!MX_Be{pP0}%|A9)FU%36|+~DWn*4I+AgK&{`cDY z-*@Py4wt-l8LF^23C2Qg7MSZL566TUcO(Bpo;V-}0B8wE?I9_O*rTQ*ujnxNb;HH% zNT7E*+Ds?Fu0`ts5H|Gm9DTUe)3ub|n8G6oH*`U3pJ4$$5Wf0#O@Q_}z2!m#}o}siqa!BLbsgb_*2Sdt|UdQ6$^_KJ(g+1WUHKUg$3K6Ft764UGXRw zbY}F$!x&Uno9L>if8EWfyo)8l#{xoS)NP7qNMc}J%Rt7|1=J{QTTN`!9VRpkZ|hqX zT!d-%c{pC+85epRGEwJJj*?_3z_n)x6|0|02vgzAiIJ-dwQ>%D$tj_4XM=e~RCD?G|z?e>ir2f zI)8w-aW3{uNPAZmJBWJsx`xZ6Q;=bwvEa2b{*^RH)mXVV_b5`Xa9b5m?6?h z;;HuQRq?0_T2nCs)6SA*Z&kS*DLTPz%?uFVry~9$!gaE zODtVo@Hrjz!MpxM!vtzC3k|Hlz4GvwW}56_(cwtzqzYh-g;%;rII7^L;iq8riwsa_ zB_gZIVn;3ts+}3gg9vHnycz}KET%2SdwsOqY3Fa3g9mA`AdGiQN@*_+p(>|5Ymdmo zPO=-6vhXP^TI*SJei>^}bX=|Gj*5xc)_QtWL!;Jrd94Og- z=L{-1mxA#YBN5vN;YoMDW^znfityD2t#$PRX zER2ZF2<@^!-oZ1u&gh_U-sa%d6*lKtLe?Yo(k$k%T&rTRiy)mGbbz~BH5OGci%+Y% zWH$5TArBjH>$fR|DW30}jv|8%U3@zNp_%FTSksxD+iVu$#Pbnk zL1a`5aAUBAuUdr!Yn_-6Z=0iny>OhLa!DB4LUkjaj*d7vWg=2v#83>UTfx9@NX{O- zR`++4Y-9foH6|MAwXqAq>c)>>c}It41CB;OS@2+r@11RkgAL}|qZAz_iD02L1NYPYEq4v(u zABs`RHp_=?#a0^gN!ZBAI4QpG<);ktc08MVCF_mCDKZ+gV$!NIYVvSMa2WsInh@au zh+TGO4wuTmG7^j%&Bq%c4h5cy<@n)Xz8mi+(sv{XSoN2XirH^mKYk?*zf`BHngx;t zE~So}d!_X#EUVlWf}KQ!Tf~F6ia3e;PW`J6PS&UVAUavCn@V9U*H7)M~ozgohAjm|@ zl(JwM-M`FWqt|GfkrN=6dO#V+10almB@}>3w|ytG-?ylBX2a277DN8Jm@2B$OorAI zO!s){YUmdEXs#1Lj{lkwZ-iJAZS=${xc=p5d zAC}1R2%8Msd?cwD*}dWzkyJ#O)RqT4BMOi?D+Xa4bmjqMVuz^%qWphnB6zYL*EwTq z1f~>qGE#xLE5R}K!k=i+b4ROYgjdRYRaBWa`HI;&0@6uFzHu9mvqF|kN<%cB=CK1E z%e+P<@aJK_WsZ3)9eq|?EiwOm@%;aOow4G*u0##FC3-_c|DP;p zw{vzT2%kLF6Jrtm8Bez;qO6zb9L(ct^2FeeQY;G~+HjcCB)=E2b8h73di3yUdBn=XhAeV-$IW>W@~uRRvBd=T8I%~8qdqfxW- zL@T-Qviz%~iU93&PP{hAa$GzUQUHvN9Mkt?6U+skwd!e4Cfc}hTJ>0}9g)fqI#~1& zk@eDByO)0lmU*TqMIdi|WLIf^H?`k|_vpxoI=XipX~ zFV~;_UDnRA?y)|R23<_W^+&l-B-f{O_a!Duav2j?X2{H28=mIM!k{`_Rq3}yQm`4` z{k}eqKh4I5OhG0#-|Po2JY2o!obidjqA-vf&i%F7H4tsF2AZZ(Or;GqSz90ZG%v&!;Y(NYIJzx{)r7#EY<_#+LJ01|0n zV@Ap<9&|wE!j@Z?D6+YJ4)MvHDvo|WB4Fkp6EmidAupny3zSg zhCl9~R>hH~dSTA;k&~i#e%ZQD3F#`eofyPd)wnJY{Qr-xx9o~DV79bxTtaZy1{!w_ z5Fkhcjk~+MI|PEeySuwPB)BKIySrN;A@7HG&a88unfVX3YVE4M>#A|ihgO1!!kvgp z=F~_?SQTeXc_=qZUYP6vFjJ0}_vG5-me=SDS$epPf!zGM1f4_A)@!{p)w1203IjTO_OLzR~8@Pw* zC7%$YH{${AuUPaDXzI2~wJ;rEB#jtRaDTiK=q~IZe%4qvJDG+H(db$c{t}F@CTR}9 z0mP7Wr*G){rH}+op|5ibO5QHH-ix2i6EVXa_n4TG&>M1L=w3rc3zarDVrstlaHQ;= zc*$5(A!vm(GN$;DDQNCyv)UCAy~w<$D*yWae$1>C=Ctjbw!Yv(q)0>N%zi0F!FI=5 z&%P^7Z95nCQEWyAK5;RrC;b8!EkZoYR#vMBxqeZ`Y|A+-pMG>$%k6(&u_l^rbY6?y zB-@ch2_g0np?f1cL zY2{?$1^Ul(4`^nOApL-d+(~W!U3`@o@|m2zHeUWZ2~&sC#+3lJKOOF z&aKN`3{~*G@e|eqfE54>#pAlavCM&%vJz?N{%U)@bZhxd6n`M^AnGFj1o1SLn4KlPj6Pw>A`gsZS<|v1he!SIYnUS*j$L0ZFPshpB&3a`kDaFnu%h`1q&F$!Dd?ik$iHZ|qa?O~u zWg#%B@U}|J*{v}Lz9K)3caj3v1nA>;y3IUI}R6Y;f#v$yIy zZwvk_m<@L4hHHXh2_@zh%{eNS$;UP&hx`9Bu)@PPTIwa9kQ*h|d`=d!=2T9#bfp#C zfK_jCl_8Fy}^i$QB5WN@&e^QH@s^%w~-{w_9~w=-9H~L>9PoF7UP2i z37CT^mpq8c;{0~Op-z0bxHK5nI$fbSx9sj8sl?BcYm3-lgiJKbGV#~RoN?t${X5s)GRNBX zi493FGlRQnCUzvVT$=y2`>Ra9l6~F6Qc7b9dyLCI4b{?^YM#L-*w|!=M2m(V@}82} zrKPmrSy`l99)8o@Q4qSEs&0?)QNrFVyXmLUwX6ykxpW=&TF;xAj81qfkdc|77^0~; z6Ja@>HoOxP|4QEHYKPGDm@A#60U9P_D$pQ&o#}+gvS$24`~8<@v!f433;%Q_W+w}l zg0||HE>Yo$jB+Y{l62FS+`Biu_CNfB7G`M(Oi}v1WryX`NZUG|-t;AP8{_xlUo;QY zh2CrVIi!a*@7$B+E$Cql0)3fS5+WoFN(`X4;zdC7)O_;~W0 z%%S0vLo-e_KK&+Z!kIp^eBQgNG`7LpaCttbtZeN|@7mCtAr!WMI=-zDXIuOEx$j6S z{FFlPul7LJ$KrKUISoekzmgP=m5iViJ7qQ$v=#v^54A{zB(9X9X?-T@{#UrXQj3(@y=QNAF)*Hkcf5?lAnDxMhndyr?7!>sZwXiK zs7(k_vX!|>L(l;>{@15uIt2q;=V2roo}c*AZJsiMvz-VXjDZD6#3%)_(w!;wiWQ1< zJ|WEC!@d;Thvs*-ITEsjXA}J*D5SxbD&hau@4G_SAT+-HcFus(O2_2Au}+0UVWZ2i z9W!|Mb>;T@MsL-Jjc{l)73mEizQNB*EGJMkJpopbTPS)Jk&r_58ah zBK|>$@ZPI<9RG82J*M(o&%(p6s3VJz4F~`WC>0CC(y#~;=ISjo^7z&*kg01^4Ur5^ zzp`x5Q>Jt{ZW5jHZjfzzGO-0eUb%M&-|3?4zmrUB@+@(NeK6Q@&(_50So&DA7H%TM zw}L?Zdr!Sa1F@+{s*D@|XmoW*;ky-ml|i$7t-m47g7eoOkAk;8aat{W%T`4NN0UE! zo>L`0d?PC5yfbt7Wbi1n4hz5sG7{Wl=9J)0HDsHLrx?gCNFPpU-+7Q0OMgN>Oj}oC zA6aBV@2#BFv8kFqkr|ZFlTNo zUzEGsD*`O$*t)}I#WqzKm^?6jwz|{liisUKasS--NM3^m&AajHI~1oV?d8lavqM4i zyPM;l3;(Ym2|WCFt97DtDa@3MH%}py2W9VI_c9(rSg{r-?x%86005jQsm62~SoZzS?$ zxa(t>CaQoYINZabdm6;JTj+qvcB@gIzHzP;OGS9E*;ieC8G4^u>sb9uFX1>}qu2JH zOqD=(#ZiXaEBjhBn*O6iYPBRJs9$N7tCrEuy$51SLn!W7WU-cX0Q5EOvzLtFGwzPt zrB!~4Zt!=y3pM4-%gDZo=JZKQuHC49?%fbX%LK6JofB__ReE0TsRT@DO~}VJL~^wp z#56lEJ3+B_zsb=`6SaeAhn){`1B-+&CvNW}C3zimt5u{WqSYu?ml zD1Cc-sEX+BJj49*Hep%YftF|+~fuCWU8)V|s zflf-%KYzIZOZR#p68Z`9}_Hj|ifAV6pHL-mh zzwycUrRTUlYPOY4dsdg*c;)m4504#3``gyHE#~$3=w)G<`x%3)_*NT>*0}?pN0{MX z5vB(Et=VKUvCX4AVxKErQDYvFA)7e(f17e-JQyhrdj;a7my$6l`*7T`ApMJRwnt(j zjo|IM5cz436mgVEus;X^3IH(9)do2q@sIiec4kjt*9!kAf=FneE)VCIwshoEp8|? zx3yoRBUSU~J~yGjLp#{vwDFRX1iyH7eXNpg`6@3@Ur$qCS{e&axbpX!NK+MoS*tE1 zUA0d+Bwz)y8J(VsygCx7OvSxRxh?Od;>pp4t!u@-HPq_t&lO{N7=I#G$=VHl zv#Q<`@p9}M?m=2tnrFM7oYbpxd?(p!!e4t{dwbolU^T47VAdfb^Ifd>5Ps|Fp@-m# z8QM5zt=Q+vH?IZN32XF+6ok7TD>d{^UKtZ{!1k+R?EDV+k52c$y4+WbjoEW~u{61J zOCgIc?A~woQo9(i(hXM?kJ+1WA^?CTvpg758pw1gy#2|7%+Bu$wF~d6UJ1W$ZmWtgS%Ud${Y7wb$T69=;so8uV;{5284Xixez&ni{B_JboKct>yH?p8?V)Arp3tuet)YBl>{U4N1LlO2PyN= z!J<*>p)O42i-nTl!J|lR!rH+i++~WbCT5W!RTg(jhVY!HCuV4k&)!Z@ww0U`fCy#G zi-E`nUy8+sRWSHGBthx2nEH8gNz)R=rFY#S=Cy5>8N`>(j1li^z8sXlL5g)tr*9c(nNhLv%55mi7yt?lScgMHW~%MgV%SrUtNX2G%z;{;8~Gq&)DwioP7yt>7+vYAmPoxMf6A4jFO|B?UVDe;6 zyI$jCwfy%rN+uucNaIpMSHmcf`S5t>Z{&;Uzkhz*smOmOq~YGijEu630*|!@uq41BRdi*bZ7ms7vO0lSMo}x&QB+rJt5J2ZX#oW0wO#UisAL4}1-WDh! zgazg?q#IC+MX%fl6eD&aLe#}U4j)$xF3foLOSJ+(f3M-0usb|{!Q1_2A>l(Lor+~n zz;v-}glFzg(=x~q|MFnEhg!VznPW~Z)C+(U0{{T1mIhYhxPgJ;EIx*lIH!)w>rd{b z(L*3JxyWWEhUiQzINVa&32mM@ytv||xX#O<3z_w`M>HfvRCR-dOR}Jue-{!N=%DcT zt$H>59wY^p+`<6JyXp3Heh3S%7^cVx#TPkoV{F7z9uARHWHj_fFfu|-Afkf_3%x#3 z9)Ae?TZHLl@A?bv47?W#@Skc9^?zMXhg<5;UU2Rt*`1dQ(fVUIraPCHEJo>aI?z86 zTi*gfFeppZ$Qd8o+VF{A-^#rbUI(9z3WTGQ=<3aSYyvijom#KMZTcYBAZgMN*`!BY z`67j*R!qxx3}_xfpc%F~VGCOF9CuR}5e?^VigDJe|D2+MAn5{pCJag-$a`oWHhtx- z_sKykJ<=QWkGlM1oyn2c#T*Uf9C@COe6%PAQKr>ZC2)<AFXzVB*!>z#P;QbMk|R-5UauG z63om4y3uNhu7nacr@~RJ9$Xyc`TmFNJsP_%M?L@{0002M%1o?KoKrg?Nyd95+2{C1 zsv8Vr$*NL?C;&01Py0v^qNL59WL1!C1yXcojd7r0iDWp$P$6~1<(N}O&uu_v7*71n zToSD}wzxvaXlRjiP2ijNcWl3qNr4IbIm*bh)ymB#>s>~^lq0eiX9(*sH!Mv=);(*s zm#buzyXmi#;2WN7Pjt=oGQa%%bovi;022V{ba2CTV(~kSVn6@3RMBQnO`TtqLyiug zg}ZUEG$!)3#b!YN z;)|(>*YOpB4uu}I^@EiB>YR`w4X4B-T!yh@gBNija;AIR^DUuGY$&xSSAA~9R^+BX zCp7qBDZ7DxDx51H(?6WZNa=rBtRd$5r$_QGacH_(LSd{b>c#F-CG!JvjSln=MU5~# zxS#@Q6uDRWvc{gYFM04WEG;Tb>C?!rPXZcarBzia(w5*XvsP*>PtQSnw2IxERIo(s z+)v}9@-}7pZy$_Laz=EY_>~dp@No3zqH(cB!Tl>;C5v7Yv_sZhdATtr$jNq7VU^)O z&%WCgWooWnr4`n6e5v)yqa)EXt~u+H_(MBnO4j<7sw8PBKf)@2UPJ^0lt$6(5`TKGi9<^8FSO|>~T)l2@Dc`i&01046&F(%~Cv3#t)>ET<=b3Al47=&%Osw)o=J z5qvB|l1|E2ftXm^%0bdq-?)dgZxF4{|F-+LUVkks?Y;OuowMvSZ8z*XfPt(un9RVA zm@Lm1=N!m-?)u?1S+$3{9B2T557i%y)WqWP`EE(rfBdl<^rJ28m~)f)d!c~Q9P+&+ zmq-MvsfHEOeNna|yynvlSN`jby&f)-xtg>% zL5NDzqG`9~!ajoYCO9um3mBD28^WzpmGr`nd;1(0JiwnmB6q*%)L0FYXut1`!3wQzhNs z0$w{;LPByHpK59$bD7p#I)C5&*qw{}PKOXx(sF4ymckH@qA_Vfr1cY~88NT4cYXYw z7jI-vOlD`fZ2km4mkDXc_VT9PScKTLe^l!_b(BI&BJnfqmZE~Tm|{k?rW{FpLx)kG z=xG*&fr>GwM;8BlpZ2^9#9-iaoy@>d9@Sz~gze_xU47l))l{b(*Ty_bPDVU;MUcsk zx|PK$_XJ(`9J0jcH{xG9g{d<#tP9xMd`ZQ9-E9a5)r|6`R10byTu8w`Dud#)P@rG% zFvnjfdC<51;&SIMb~o!kZ;j$KZM9lrBdsy7*oq0-N%~E+-q{FjjoA(Po5|VswLGss z|9<`Nd$~+&edSZ$hPYa$UYf80?7&iYNg{GsNlu5Bhr&vPL;yR0MWamP3GrJ+eZC0` zyIcEil-`(;P@n~OOL;93ZLn0sc^lE5`AezFO-6wQR<^9LNJ;`_jdt1$DE3>b^h-dz zvN^>;r1V~`tl1Nn997F66$39-*xaxo+dg=flFcSkOOH8Z9in;#(rr6_e%+~w&(EnI zwSF;RCypKo+3@^WJr>I=ZMnQ`g3@Y8YYPv82au7IjL|78eR30iHREzwoB*`IF zG$yVpQ8rac9cYb*2K;GnH5jK4y+0{ijVcv0+<85Vv{J}tX;7-&J`}^$bl>Q>eP$9F z>699uI=z^*?^QlE>{CzHE%t(MUyV*-V{SHEu*)pe?VJn_k|*JJ7~YkN9Up6!=907} zDjKUrblggir7Y{$sul&q9)(1-730-#Z}513h?u=2%e|*wDZ~_`ms8I#&0-vGQCMH$ zu8+30DsZZ}(wJe1GN?6g?kkqPp0xi~*d5oV%0nzu(nudCpxJPZ57k(W=aE?#AJ(~K zem{^I4iU4gEiky6$LEhD+^VHRBleyVrc_I2MVcMX^Sa%rf-5RZ(iP?tYxKlZFEY7} zI^_~KgOP;*$RGkc_2Y>VPb7ZQ-KOu17<6?4j4fn8ify8#Mq4)J))waQ#l0R6HYBMz z*+pei66gzem6)}Lt{mdY#G?@H?lL;HC{f9Ut+GLdcTrvi9q~HkK3!Em?q=pNXI0in z6TY`eE6XE)A?J%CaSnxG9+*vz6%TfO*R*)``0fO)uY;cxE}QXM&8`A@AUrqXGsVbK=2i4vvECfpDTH z1#_Kb2B@~0S#I`ZHJB(u+Vo&H2w7BYuS-8CiMxf{otYZB%wSlZ>BC~0VA97C#+VJK zm1?9R6G^%_&lHek2|fw0C{^%B+~z3B#L#E(trF`+OXXq0V7dJgWQCd>M30n9{}_6@Gpjtr^IITt**AfMp#!(mX!lTxnAH z)F{$(cmqCRA7yZJY#f)mbv^0(RVcj-qt#K@zq-s~O|x;1;-(^3fNS`twjDjsyZ1k_k>)FuzZ|@N)fxDh zWwjIS$x7I86>am?g_Z+ap*Vqlt_;$?P9cWUkY@%CoQ{+Q6p>L2}9Kn2O+2jBdJ!x^m$tC zCZaL3LYcb0RSunPd`k|)tBGuQuMRFGrA|`CRfn%xlM|uavxj>c(aO_994<)}ZEAc& ze2vs*9YYgycHudMjL?MRuAO(AMqmuFGfpk!H}sYyO<8qN46LN^QSQ}uu}cQKmd<_|F;sTjG3d7>3qZP|Y_ zeomMXA4Z$vgE5UBP=tGNb z3B2yfx$IG^CiLSTYfTjV$7J3njGwul&@7dg$NLS@_sq!}-EolF_ z23`91Jnk3c^E1@^vRY4M{c&E#TllCJ{ObcIatJbiZ=V?)iFAUjG+mcTgj7yAZ0h>~ z!YW;Z{`r)KHQ^r?|I2V^feZkeK zlJh5Az-frKkFq3Usf@b>)9i);5CK2{06&(;CUURAElXAzbj8TbzXTId?tk|A@<&jW z+re6~on|L#(JqlH?&9K{vRYlr4Q1|rvUOAAFCyP;+kO)(G7b8y&XT%SqS|i5qSaSz zT@99&KeXzEa}2D5$~Ts&5~(d!=r_`wY(pe1?H=ia<3DO~nSw?3WEn9<@r(ngv>3=d z{ivWT_C5|lYcdjU?`UGd5!z>)9suBd4fQfFxbNa)vb#7C$5a@;xl0vnMd`LU zSUohpz~IUx8QG`)WHb9FNM<9sTwZ;OyAbYi_>yY)r9e3r zrU-W$KSwm4i{@5MLH-EJms-0fQhjSS^<8uA!gX!i=V_OH_2bTMX%FG>qTI*Cjbhwz z0(SUKXe<8s%-x3>%vK2JdYzSbsayLc6n!alLVI2PtO-3O+tdfmydG{!U=yfY2GWz! zn&m@}7-+f%Nm-X|nocUsGsW10h*btBiP>HGYGsv0%&8}ZAn`VGN3LebUa#hmDQbs& zZM9Tu$H2nr>@`KFmd16nGt*9%*M$-`s`ShWow8svSg`=0Ah+sHA;-Au-crw!nWbCW zI*>s#Esd1;RQ)SNaBDj+v9V&Mj*Yr(xio4(s6i2j9FUcK)Wlsmz^UIE`rlrs)1ww&(rE{ygdj4F}=EbluPH4a@*?A>|+`Mw`l~Ja>t5Z|Oo7T`I%A&QcBY6Y?z%^p9mXa5N#9 zFl_q>7_^DIOh0wMjO0Flx?(h+-sThOmdwgyZ&I%Muo2&@wg+C!kybXX`=Unn-ool} z{@cP3VSZTm3(Bg3#@0;C zdH!*fNniKG5>)k$PHuzpzSMNr*ih$R>CGAErmN~lAh5{6lMgv#>q=``tcsfZJgB$T^ zb%=W*O(R8#j&TnB=gp+KH4B~1I*(yAcU0IVs6PN0c&4ZpkzVnv_=WpL`BN^FxzL~D zOjjqShw?dbkmdmU(!H|+BTJG59lv0L3_k}Q2jNF16a%+~^!_xR+$_YJ)zt)v= z$j$K~o-9!^dzdCkX$}7v5D@HA%7-EaV2fzt+*c4bL-e>Ajn{}4mObMb!nfH|733PJ zYlo$3TR9j%E~^ZE2j}&9a>Tx_tN2gAZ zqa+0USB2ymkGI|SRU6KD9ie4TN*-?>Yj2zqsgX_8>{CH3C%b|}+#w+X&U~Gt&z-!@ z>SgDSe_z5kk2Ez%zybedKKPn$TA%QWB*^{wA{5rGJe%!##6CJ9#N|-(1bP8P5di=I zI@FR8@rK~{b#dGpvKvYFaDyLpFD5(RD+f>2P@OW3H(8eX;S<4#dBt1vnl0 zhwoi^DF`7(sV}0RDq~xne;v-y1&y~j@038;(;@90hs@cSJX^FJIRhAd4+F?jcAR!4 zgrS#&#+I9B#5$fESzgA*$P~Z6W7O2+D0GLnO^Wu%8YxxP*hn7K(OwYBJK@y`BpD(w z;pH~bk}21-n}06@3D(&M_k{0Fe`Y=IXRy|8HOS2mIAifY|Dw6cClJ+Q(wbB5)+-T) zz*nx?X`rpGb^LFnrf?zbhHu>?xHaBPTbx3s3H=orXjyqL5BcmdX~%#hpY?hBw!Up7 zdCRyUnB_{?f9$hwuircQ{fHC?1_(wh133VI!gr)VkcZU41$-zcebLTjf_XlfqZm^VV z>f;8Pp-rq8R)WM;V&HojfkN}**BR*B#$=>)f1dbVPCU&DLY()P?&2H8?G<2;;Y z#yg$9@uI>|XaEQ}<)Qp!9ydz;ti61(de6z*Dokti7_rRSLTaQ97ehIXTCf5RY$gg1 zHOFVIOwYM3sbInwRcV${F|7j~P>r@CT{Q4jk)Ssn+KY8ATPrB-mNcb>WQ~9-_eyYw zw83)^Fa7sSIo+jQA0X$oxZecBSRFyfiN^CTj4daB(Xd9D#k7M8%fQc7mm>cUpdoy% zf!^#X&t789d8Xjl3bu5y!)U=q5NC_S$!JypECT?bAdJj`B(qoM8M8|EI)3=%DNZc? z@)5C@8*0IQJ9Oppx9BLZQO0t`o}g7hP&=)9Vv#88QO}d~M%3X$?MvBAd16;JCuY~M zYby5fIGQ3+wwUMk9i&OwF0FGNTBA@FGt0}i!u(Y)|7aX#zUgLhQUsYUL}fNtP$C3%%qB>o3eMq3yJ6;Y}H=y{DYihgU1Ej-08`Nl{_lGUswaV@y8BFwF} zXvm0*FGt8BW9D5SV-MK|^E72zEFBa@r+X(|%0PGA?)%xC>5pqweIy9iSzbBJvB|a6 zt|*npTfn&&6XTgMQmSV#G$2Do_AtEA@3x=pFpzBFvCCH0eM33~^dwh`jTudsP7!hx zNA==KkReB;<)uRafRGy)BpuuSU>T89gV=m4Y-%mj$|WCHA}xJ)th6&R|JBnZp?K5K z0v)`dO(|=ow1IDHO%B4ZCHQlEu|o*=@k0i5l~|&Ns*j@CLvEh&xDqjqj}X(oK)0kx zm&KFmlDPV>#kpX2+g@g5&>XKFCc=_=PI0;-M$>(UESTt(=5s#k^+UJE`_bp>_tlO+ zGs*=pG)0FuoH8sG_E(B2_Qq?&<$^U;qbwBfPVp_TFnjj- z9X0JWHumdjep1C7rSz>iJ8g>0Pu{0aSgPmn;gb6n=t?y?jKuocbpMMbk!yBgp0HFXR9K z6sp>Uts!ZR`|bQnH`XV$C>lR2w^_Yg2Pm*;H(_b@qcc&jd9%S`YrpDvZOHKK2fHJ zZq(Cd$UhI0R#x__cDSg_ICGt2j!0#Z*R4t71luGtMvenD8(%Tp!5_s#0MlDn*)`ckE5S+P9Sr zcidpQ-M@yRmyPXJ^0#BO$=HwS^~E&d6n`FxS@g9y%gWr?N3lJYTWQpANy6T2WOXNT zSV(tivUuXGd0I*N?A=nlhc?+W?o<@q-AX7tHPMuR2hleC_v})b$;Roa#9SovdasaG z8}@Fodl_gIR-y5#;tA{p37ERTWgT(ynZ z>a>A*ZU($iW)DM-@2+YiZgEja_EWY*sj-0sE%QW<*>jtJsU)f0g(h+u`>I0`=B5Tx zlT7FFNJqEshNHW?H(NS9oZc(3{V+u^t2XE`jT%EPtgQ*s5pu#MPL0i`4}I4*#bS&ow6DlrD|ttGD-O(hUSy&_-!6> zHKM6kl(f0@ge%hEnm%t6;4W``i$+zWip8zygyhrXBl|2(f52|W;#^j_JMKPQQ%xhg zydS?dX*3PK<<;7D+ursTUS~EszD^_DH&~=-e@O4s-_U!ZSOPk+0r(&ow+@(a70WW4+rg$Qq=K;1_6+_Sl)=#N0V$(&Nl?J#Rtq3yl zCR7Y6-e2g$isAHmHn_uH%oJEUe+DHLgc+8g1Qy{~77~1{J+nulmaDhp5{BzIA-;LX zswI*7Yso1ijeo*e|Hw+tPbf5t})au!S4X@39_MLr*dH|D*k8C*~(Oj zvNZf=^<2`{0#|)rsfl^usrVpad~GSoz8itc6nC?#M^$C-BKU^+W362!{d5`4$4X<; zYZrG4uYdYC)L`}NvKdO5oh|k$8v?$f6r&<#%6rYa(5k!<9;+(VRo2Yh>JA!>m&q3) zcjvs?Kk*XHsWNe~6kXdEBy+{&tV|9K|LJ$ZH(74XM)KSwF#FcBkGEjMxcZg!3NlJ@ zIaobp-J%AH03wK*qfWCrkLAtcbrF}wA!059%ti^dQ+#@@Xzs#ass^>vxN9y$R=ea` zHW))|wRs|3{oL=ZPJGoVbM@8k=2GkWVZimBvo^_N3TQW2Q`p0I3xC)=7)z1_H>0_$ z=D)m)6+vo$yS>^ca1Va2_|THg&?%37yr85rSqPh?pxkB_b61xLmM?4LJAH0fL_&WH zAZ-uTtsmf->dV7`t71wWYy1#yi1N=2NCNO zD$Bkv(QHDiY|FB_v8U~|$c0)2=t7BPifQ=N zD&%o-O5=XSn$YflW|pH@MwEt0N})|0JDg2DuC#OVPe<#AWU5;gn~%qyA} zf|UzNW0XW4N8Z1LMqMc|v+NnTr5_P<5S{ zs+)h8p31*{q*^7bbN=U`;t%`}JVb(#o^_Z4c0!D8t`Oo9cJ4Qa<63@LaV`g|A(C;B zrWg_l9r%y?@Bw{u+dP-u);B-TdBjV-+pV%s2b8rfQ-Kx zSgPPCKb}_?!ne8-p_r^{AKOvNSQtZ>OM9mU?j-I0RNWmnJZ7XW$a+0Xn9Js3fO0+j_+0i0%_vw1xFK{(QI#uKF?!4@d@p0+eZ{rqbQ* z$tnz}`L4A5-bp@8(|B94dw1?|4Ee#BZBjJ%_%BoVlb|zj+bmpr*4yw7EvnN-ObLX* zVrZ){qLuu^r3rIHe3M<-=KJ`e+5al?ud=0N;6y{_M>zV(?S5ruk4Y7k(>`1lUU1i_ zv`-mh6)h$*Un^LFiMeYd_;Tr1K1kN65}3u=O8fyJ<1mOdV==DO88@%#KQvSAKrbKY zKeWcOdhB)cdaT78*uq+G@Gw2eh^^72Vq4R?tFbs7MsSjEZPVeC(|iD!e`}jq&!@By znAxR7^EzF*3&qg3BycWOl#(1{H^(Wk2&AMq=;$6^4^QN6lUfKIthj1~XfQ2%SLDeE z6A26lW;PI>mek_Jo>(T${ypGgS^Idm_6HlFv(bD~Z|aJ(~J23-S^N2zhLHBU?Nca3cyT z&gy1yB3rb|T#)wcRIruJr4K3+%+=(oeyNFlfX?37L^+ppUj8O4?hn$g)s3nknea4K zX6xJ4u34OrwvzduC1Kgo>~h{at?~QF5{n4 zpson(7T;(WiJ{?^H}~k9?aX#7ug@|*d>qZgeCRZiC({!`h~##6@-i&@#%Z}LQVj%3b)f3jP=El6m2vQx&pTH|BTlO<$kn?J27%`L&XpbNFdqr+7d<^%@HXH58|xo z%7{f&+du^m>M?I<91$J|K!Gv<_}ELCOwU|lx{`+JM!6zI?mhuWH)`VS6iR@$!~Pq;xT}zhBbj35FX*c<5~*nG zYfQ+4nMf>z_3a}jE;x{t#!^QvP&Sql7Wt#hj9R!7>=;P+x>sZB+S>yHu&^`l%J*b+7d3TlVUCT~1wbv)AxQ zjHT+J8rif>9B5n~DvqkzD8D9NQlTA8Ob(@RJ%5>Du^ct=N*iFcoM-#qz_buM6FZ&=9@mRAX8X=C$${Jj=|Pq{hXW<=U8PlK6&c1onKz03P5P;98<0^rR=pE^SL!|H6ktciVpNB1C7D{ zkzrv!f;f5!9oSevH+hffY81F~95!0v>W zmf>b;lj~_!?6~>KEz#3YaxjXMxr=`)@%PP>LeInB1{G)*L$m~`AntzpsZM+k4E{Tk zW(@!Ui#MpE(%zxQSf`bYT?nQrlj}e^@CMNsdj%T_WHj{H~u9a{c{ z0dpfYb|Y3T;E`YB>2-E(#e8EReD@gNww&Hz)Gp!u@b?!7uJ1x&QJma1rO!P1$ZKZ* z7D#+Dak-+c6VFD`bX20eEcj8)t|AhPb0}LTq54kiYrNvftuk|}(lCesKv{MvZL6Dx zTl42{mWDLr)FWt{$^Z=I&paX}+$kX{ViGUS0=v70q^4?TO>6Qk@m0sH#Vmj4wh=%G zyx;1TD#;ymmc?dOO)2?0)W{jh#8=PHb4{RKwC>BS1KNu*2OFrgq)VwQDo%b2<$KNg zn(<|y`uRKizx^>n7IHRAm0&ZQZZ4&kzm}2PzAG1f`v1G={{QR}#Mel7_MB%fYHB@P zaI8fICD&aNyfnbye5I8}@mGtbUeY+vWKLa9I~}Xr&;Q%N4*|2`Tut|0tsFG_ZTj_xrnMjx@8{rd#co?&w65 z*;hoBf3B!O|0geza5bvM;EA0DtyigPK>Xl&EdY!K6bVO7T$ZV(fh8Laf96`*wB~b= zAnATr8vplO&<4?F=||q-Vo9~MK@-I=q1)K3 zJ(GR*Q)4kc3dpz*;=HUAAbst5Wpm1Gj9;P+uS*dMjYp3Uc~=DWO2+4t!a=P4ShORU z@xSQE62w0Y8a>RfyChzhaI_N@ziodv_$6-z0NP@lVLu3;>el*2;Xi^G0`(o;^sw?| ziV;|oC!q0Cru6$<+)WX;jI1wO5Y9rq+ml>=fyXRl5wdxAItRazHPRttXLxK?%&bXP z%7L(P`YmCZG&sSXBm^gN zKCHFQ*zZ~U{D(Pe+;!JAYkre`m7tSJIJ_K}*VgCP%_2(8UY97&Sgvhy&NHJfqy8Xy z>4bS>5ok*^XY5E@Tbp(H-tD+ZKdltoMn}PpQpuJAWIDZhz>2Yo=8NR8x>97+J>Mgm zWMo-e=r1T5frN{iA>)l6+lrq~k}6!B%UmEjNh3(McQ=5nKBgqekEvvFz2AR#D(hgrPm%My}ir=OWU4wfI2DifNsvK<iTOZcSGpJn(0_CwLB#3ke5GB4ug%9y1|SYW)k!`EorhHDmja5JRHgoZvymcR%Mgi^x|&&;QecV_>!87^7L5R9{ym z5t9r}O7~T2;fGl8eHXZ;nnqnl0sunRtsf|LEf-%z$B)4B*+=Ff6U`5VN{PkepYA;4 z)%a)0-W|F(+TVVjwN3c?w;s0QL1j9ev9oKu^5Ol-u|Rn8`csmddNk4Bxnq*UwWy~L z>~sb4HS&z}Z_pw|4Sh3JsE^InD9<>;?=9`Tg0(+W(AT&uD3@}-W`AEJtMfyS5M__i z{@xxyBP`^JkX*vr3Rp3iUarnE*lbI830T3mPG>20jB3&reu53|ZJBQSsJ-nvlv?_+ z&$+4bl~1=gx6*7gSdef#z9UcVYXfvp$;40YnAg`wmbq*E=~PdYL%Z6iJ? zy~iUsD_?ePU)yb>4b9vRk<|YBj2AgIqSl>V+3XQ3cxFw6q`64TObb9GtmKDeh-tV4 zXa2@ze<0D5#21)NPKgT5PT4h7(xiMqCF{9zcxtOGYjxH@e63m!8DH<5pOZwFapJnF zS3haj-wo*FT=Ar2z2ws~+=_>kEbf}4X(RfUHH=_i%rhAhTU#YuGJ=U8ZP;2>*y`2W zf2l$%54^szr`w#ns)P8k%i9d%rDn*+EBmzMu^FFH=vczBrt%B>`)Vr{RERu%W5AC+ zk!T9YUDeH^}at|(f>^+Kfm5OCky15+_JDV%4WwL&J9Lgg6DXyfB?cnM7 znqX;mr@CW8oa$s3cQn;hl;18b$K!;DMn57XBuHgxRDsH9deFJOH=eVwaLIlDf&BPJ zXTV9^dwaZ!Lq3NMHSSx>Y!^?5>%N-uvJ<=Ef4Nn~k^ge6$YH3hc3X~@DnH;Z`3Q-) zchHVvZ#7-J;V&3+863m( z%cw>?As|Z1%nH3kkgXEG-tczO$l1x#Jk; zBYU+H-on|Rr!vzwtCvRS#%5MNOSdtEDhz~v7E*P0&Y9LF*+##w1M1SJoK?$PjY36K zIkzI+Nc<_r88GPOk4xwo7*!<})Qdl9R_mW^WJx%(1%AD92>B$iq`KW^HNQs#&;bel zoNyK?A)7bGpIEt}3X^>6pUezzEZ*ZrMK@QAe5J#4+P4!cUQ9?$Ouf3due!m5v>u%V zN{g`+l0E9phiu)bvv-{Vfo!$y2P#9!z3k?p{kaQjFXy;-R~%5|Tb_Sx@D9;#292yd zZ@mxe`d5fy80(ed$GNarQ82xS73BplTQY)7T$|19#F0)rbF*Sd#wCiu(o*Osq-L$@ zt1T|~_Ef56oDvDSPEzGBye#=)$+T3Pwqb!c%^&x~`TBaJyb#QNIE zc>BOZUM?T)99R~Zn5W>^8=1W|YhFFiFK~Nw zsZGPTHC~wWh}R9;-{f{Fbv7;JtX<{hXV+kR3S3TV2z1%{BTD_bZb2|(V55BDS3eRG zAHOtU;wI!pxSn-zENNqcl}YH*ztV!!9?+KMSWQ4xW!3@v#Ql>mmL7NOfH0<1v@6M) z-c+~3HEtUZIi|^=>q_y9+>2TA)in05iTHe`kaqhX&CegxnK{?{o)-)FHT@QvPF=1n zk)iGtMJsYFKD@EeWUVABUjp8w>>9)A-}0h563Y(6M23lp(nA1%tV<#NMW2u54BP&B z+gP6~ zbJq5v;kN0JfZ~*~El$){37@dl>cHL%TSj%j95G`^09S^G-AA}PRu zslWT2-5_mXt2vBAJT5`PCFxOi>FrzV?TQQiu|Mi@;B!p0)t{k52j5JO0}J~tzr5U$ z$G3QOmXWN2<%l_5NfRiZh`#v5snAZP8VZhZZQ9{uqI@FE;%!ng?c(eyB}@DB4aC|a zjtl?*7OM;jDGW;`3QcozWEYCAqrhBQ;>+pf1+V>VcUh3Wl%P}w#)ueRB9MG%955)> z{6+!I0Azu_G@nAM(8levgU@y)X}dcOtL-@9kY_bXWnbyYHj{@o{_Xu%$Utq|BJ94Q zT$NEn(Am_ne`VJvX;98i=xK1E_FCwgKke9RkhedUjz@`xF;FXtN{VRYTN^%rzFZu| z5>va)W<9n19MHURdmuL9q9PW!V=xg%=1HaF7fr)Z^C6lyk%6qb$aw;~=AVWhyU%zY z?4+$I5zml$yh^WcvEOE6%O+xSZVpcpu@F{w-Bl&p9%YED;0ko0n(#W28lB1e%(bz0 ze3>O7IF9~pm~F&Qt9jOTiA)-Qq)Z^nE6I8`Q++RAYZw?8=r)!EFw?UmV#RQ06)gh^ zlD8%mYPE~mifNZ}YgxGW$6_MPAhU;M+M3ucTe%E_XOzKzlyq&Pyc{ne>q^d;5bG0LcFkVUOs6ZchchZBJ z7?j`d5^yixrf)D<@RKlI_8?Q2Orxa&LwXQ)SpVO+oRjU=!i5lDirP%PL`*kSBHy#B zc{yIZ^=kGu-v|i>00`ZF3X76fd2KbDy!Ue6I8RMAO6jo5Q?PfKuJ+8&-?Ag={}hbe zkOaScgQrq&VNb+-Tk$%7Fcv?HQGC0rt;2-h?Tw1pSe#<}^&JFto0y`e-TAsuEPCiMVVzV%ywcHQ_v;TBQfa@7;5=u?P29YG$b@S9 zr&tZGf1<6sbDe|yzb~6fPbB((3j-l;M-=(!Lt(|xg+F2N2m=5ckD)(=v`7+nX~7BPzR`nFqDilH;5F7eLx2?w)mIL!=p zXXwtoXVF8}x0Sm&>Wh_sJ|&I$_JPYKEdfGVXv$Bvx2x2&BI07)odHB`=8Xc;hI`z$ zn>Z*_ZCBi70=j}$G1yhS{nz6gN_pX(&g!6fw9LO0S@+*iA{~z2R$v-Ypa`0;T+hUP zFnI87k!3VOl)-!Mi4~cfng_ND=%Kgu+sEs^@7$H1zFZ~k-{6ZEaGf*z|HkRuUGEd3 zeA(~dNN2NP%;*PB!~Xx+r74H4o-=-rOm(VS39vb#V1=(z^YnY%pA3!bms0jzOhMTV(_@j=jlx!ea1d5aE>8U3}UKG{T3#QR3XX&RIJrYM1^PhIf z5xJ^n8VYQSOu01};(;k?s$WLr@WpDm@UAwGfxGrej!20th~>8R<^>Wt003+{_m}$) zUQG)2DUf;3W5bRYP8NE#j07!Yt2AFj;#by$^t{ygUf{?l5+Y)!tUiv;k*t({c3IM1 z=(IWni!9hEu|MOQ7MttsYpaQmu?$MIy>D|9{oarOKKZ2)#^_eTe73#b8Id9ag|U=I z^0|bI%W171I~w6MC>&MMQ1lv-lW&kb}UUx#y87X#gMDXP#n0B@NMmT-U9t zbEI{kF-{hwx3C&NiG&}^otY^ZdA%9b5=b=~wQ9mDg+;*gj8r-MOlA~EiJ67u4Bmli z2+J(zF->G1vGtj&xt8s`d6V1iv5e60aPUr0dO z@C^+mJto62NOb2;38a`ZT7_BhTiqxCh`|Q{I@O$D{9hs4b)v15l~ZF!p)~n2I|kGn zXTGegCiXl6oCjkUN!ybIqSn2YNjD~50@joka62ZU z%nKOhaodt}72SWcO96J<+GqUxiHQldyfKncq%vQn@`Vw>b~m-#+(#r706=2X5jTk* zxk^)v?Oqm|(qSeez)7l-!+A$X$EGG~gx2Y^==T=N9d7G7*|L=O-i(MZCkuKt`O{rL zWX{8+)5u6yjjjhAaGS*N2xa-`QPN_(qD4_*TEl{{CC=I~D55xUV!BT=gbly))x^WAji=uo3rLjhkykx&Hd#K`NiU01xi$Y_9sGI-UlPe4I+&FlvKNMpL! zM2?^JN@%xw4F3lmj}9t8hhOPRgM2s=u=+~R&o^M6`A_d_k+uTL1tLrZW(8;S1X^PZ zm4+iU7jWWozHI`}gnN2LwtTU+-IvJ zT5%DC8OoVp4rLMLp_t`QJwoMH@hWj-yvAD$Yl&@B(q(uAts|2i-b|@fZtH1 z7LIk5Ru~Y>rvx<>KP|6BaH>xa>hP0tS#-+#1j<#{8rY(o)~{D})@IK*LeJ}W<(HG6 z=hcIMvMwIa)%yJ9hGZd2VT6|jl8!?PxZK|mN?ABjoCt0*_m%$N_ig?MB(d6BxD>F4 zUvAb)fQz6cg}znIlL)@n>(kp@5o`tk89=wcu#{+*N<&LF>~WjbS*QW8A710<3t9N$ zUS2}R<8%f$1YhqKBh8b!qWv%rZj%Due5 zg~#N^jMkqA+k0yVuxWRz`=(RSL!o6BzxrAaYO-rO3VBc*D|)C~Q6PzhQy5R~SKsi8 zCev+Nk8E{&`?sR(0)1t5{cGiFMu+4- z40`XW6v3`Fxpq17ZrTi(SxIyc64!A#`t22du5)RKZ+n|YKa>7-1~FDD&IXIq9VVDw z@Db%6Hrk5i(CWiemlBV%{G)9q3$loMC>A*2J=nw7`0@c z{k;vp5d3ZDvrH@$9n3?Qj8LrL82p{E$j3%Ogd7Kz6QI=yvxt>rk?;|1|5KjZdwhhHSHb?tqfQxq6YQxd%8Ec9EE7dFvFDybAzI!TJ*`X z&~cFIX#_3p|BPwsVXB^aB;yo$xea{9J+ceUlPDq&-G+o{eJ0@IYD7wMR-wC`NqWrSXLkdM^3jcUI;{Ps?LhCWHBMg(@_xU+b! z(2ImD4M@Mz3vYL?e>ne5lfO{8>)VZ2?W5F0U$<&)wOXmANiwY_->gkAp6yuO$-tE` z_hHUBk_mTXxs?EI8ueO>{!7*;Bu3K(`c{`9jdNp{iOz6r+WN?*!svaHYUQI+%P9j6 zT}Gn7uFV09Mhy+6GKKPbg|3^Whp!GjlP(+$@dAU!{%ACw(j<>DJ$r$>ImD? zQz_exFhFE6hCFQZVT%*nLte}p>c{y%)#d5E>T9qpuv8WjigmPdpF|Gn>djv|2&NYG zVz-u5)w@}#v-9#c|iRPiptXtXg|>g|KD3F(|%D zya>1Qi5c{rxh9>}d@Y;uB#7nCtDxaq$WbHt?R@rfFj@LS|g3VE|A#8PLz{45dvJ z6J>I-S=_!I3@{=ShBt8<9!eM;a!wIQ&x=X7X`kM2^qzcCpWbVCKla|nEps~T2-AM(#n7Omd0`khE}dP20g?jHS$ zYspxW&RRgjK2{Y4ge&k;qTcv-7k+Mab-XtzZf^9PTZ56TOtN3$M_)!huI;Idj>J#` zg(O}z;c?}(b5hF7s*@a;844;Oms5mGBG!cpEhQAWFDPPbLJL)GSdkyRuA13YfJK<* zV~SXRQUsyzOvQPF*y~e>u?4Y4dmY}e%;oBmF6Yr3(X3aJK7rR6)i$e3w&cUdqN+^_ zusIMytE{-mirc=R>sop(M2bTi;Wm@^|gMp^z$vT=`;xi2!sHC=MoZ3Dr>VLLQw3 zag0D-)FghCV@{{ngQ!GN8uwHDaZi6TAyyh{nEV%RLIw!M*R@`HPiS~2y!@QSKCtQ- zc2P^=sbZmIQrGLhv445kPnK!{d6oazx=!58=97w03ll~{2898r7#`PDjuU>ZNk+CD z3$1BW{gs4@&x^Hs>NMk4XO#@RK1kSiMzWswbh!aP{}`7v1)sb1Feab;9Mr(GT^sVo zO#ASb0$DVfa1@~d^WXCM$u6`YX1QiA_PAwKblV3WW6@dNBSx4!+R0u zt8}!|jK3=1`&QX0)Pk+bCs?UC+_&*qN5a(Qjm~r7vg~cD&=<#l`UPdlaz>QX`2=$C zV2~8%I>8v;yuetE+WEp%`z-2S>Gl z|D|%6sDX}VjuAp(X}Dqyyx<~eX1>3C^Jj=CpWEpKc_1J!3jhF`=qXC_mpZn5`r;i; zio`!Q$m&eN&LqD2jNI7?sxDJ3#tkMXgbPGxhvP?oGk%3KV2NQUU8ZqZvACQ}{5ooh zSY2w`JPQHxP*tH9EH_K)cEh-{tof|*ezHT7lXv*nAdjpG?($}|b0yt47K3cSC5$iIAO_vV=| z@Gyv{$C98}@A_g*5>$SWnYUQG_PrnMCWS+!<6OOB; z$4ljGZRDPyd`tMJj`o7?6J{SjAxZtbT{_J{KQ>Z>n zmuAYyR|zl&*$z)Rw|6?RWCS9PqwDa&*=<(XUJFBcK0h*vq)S&LOIg}jxz@AF7Dc?{ zvRLRaFaZEH6ZIR&9y{8BFd+FN^(w&dwOIF9ltV~^T#DL)mzVxFZ~{h+T|w$t_f(RB z8PT|tH5n7c%A^D{?X7(JNYW@Q8iUFljU}2c{8_;rT{+n)CUUQ&QjFy zGdMQ$B*2Z@+hzV$5-uW`imEAJi9PvL7FDn_(JhR{cJwU?0!o%2- z{bySRO0SD*+y_Lx$@XVD8O z+qIkSXVJN0o&8lnR}R33qCqNXW4cl{*XcfuGk$e7t1(j3Yw#1=Gi%#m@)nNnVKhVf zAbpr`bXPOnHy)=vnWG-7a9_s}JM@7+Xuv$P#kj5G_}&?5+b`0nT9PSl`t;F^`W5Z(>v9`l6;Q-(-M|;T_+XEIAu$0< za%nok^bB=0RPTRa($tInv0#AOQ=he zsiuMzyD6au)AlN-rTLsy1J2q47`u|z*LXETAS~wF}OyS5M zkO1dFZS%dWnwKED+^*I4l#WRB03gk@u54VAc}qRw`SKwLvexS`7bKk&Uq721dG@-I zP0!kEta?3*L8gi#EkB!jk$6hQOyc|^D_agN`uE;q4_m&_X00&}ZMtMR(+@9OoU+TS z2o*k==<+q6h^ZUx4V@^#F4@G`vW_>yli zEJ^x}gJz3@hx^o*?8#x(nHZL~Z{^b*vzVK{&ua`(e=i;2Ms8sL%F)z!o0*mUVKhjl zb8AnVa#CYVZ$P3TbAS~?m(!XaZ-bwf;}ZSHqa#{@Ogew&vG(?DLtGDCs`Ts-DnAl{ zEW=GEcc#Bn?dCN~x;HrHBVw8=6%yK&P!p8fI*XQ!IVXAgH;zA;_Q>S zH-VXTX1`hGJ5FWM%evQ;R8)wrKso0k<&=i2+t;75i^9Pi4PIkN(f|NddtqXW%s~8c zX#e66!aF9;m%;C&0|g0~(ORr{qpM@>N4qUIXXs=__=%%t@ne4UhcslFgtuN147=L& z_V#B&4Esc{Jkufazkdc+MjS(Z+?aGbMh^~Tr}ua#bp`ux(&DGDd+ zvn2riA(m3&=Sd+#V}NdBx5W>+w0B~8&=JH&)QQSoGhMXqss>35f58NZRs27_B3^MT*XLm` zYhwTH@TdO0?2=%l5mM%KE*UHxOJ+ei;9R9rL1@iFe~n2(LqA`EhC1yD&n{fqw9soS z#Yz~my33X!>p$4o*&$(aKXtj`a-SU-#IMb|L7#M=d<58 zCy8Uf>8co=EQzn~B1~1e?;Yng#g7aAQ{|$Z9n2lMm9WziU%Vw)@}OoV-c=2h@j7i+ zTlZjP;4ohv&_yLqWZ|+?z)+rfA+UR^kDur{s_0S%+jyd1sk}GR-Na@YN7L@`%s3&R z+iw9?U{8Fvr;d4U@hVZ#SlxI=?#N^woG4e0!uhbVbMZ=;Il3Q_v^eZ>xa+GFOZ=$3 z@_^s8;K*EKulGjj-G0d*0x42yP9cMyjiC4jDHbYDZ}G^IZ>`J8CDH)IfMLi-wYyW0 z?P*tV>&Tz7AZxv2i=bcs%4=pz8=pm2Tzn{?P=xObHWdj9uG(E^zOT-(?$z$)eFD<{ zrHkD-gdB1^kzH|11gEB(fMcn$-X)&MP)2r;7B+xw8cO3!qE=GHVO^LC!?TfS$(+lH zrGW6>X|q&1jI!XcS7E`r0t=%iI@DBgwUEluEJ+clCI*01X!|xk|JnI$u&kzYoe3|B zfXaoRbJ<{yKhk;0GUfnjxP4T2KF@yZK!iAX2S;M-I~`YnP$r=r(8f;IJG*;Ff-ERO zmsBeNnhf1_8D@E~FrXp7Qm4Q>3`1zdhpALBP0GWO8Zq#!N7Ez`?O z5)ivR39#Sve^>vxN&iPB3Fy6@=~clZ4$W!FqOJr35uZs`={lp1}jK48sJl z6-34HKwT;N*^_Mpvh32EzvS>Dj*iMda9lyIo|ckZ-;+@<42Ck?1n|mV)$4DbVS{2n zCAAo|$kODp=?PDK3#6cCQ+de9M;6{%L4KHjg*uC0063`r;-Ys4*bg=PQGHM z49i8NZwh<@Npf~so$iV;+RE#GoplpVXU{bgpX*s4@gNdvug?v7lO$VZ0^49$9p-aN z()rzmZCZ2&)d|7a3^!^1m>kXR{~b4u!)2VyIgb4i465vK-sE*8V`!b&QRG4_c$e zv&Ob5Ee4FL(2=iv(-KRj7jrMR=?_VF{g;n}a%xP(F8caEJ17MP!T)X~CLA7joEYHB>b51kjR%AqoY7Rr~3%OzfN3_CcC6c=SR6QnA zO}J2fRV=z4YI#z1xR~?b!Kd<3T$;X5(ljbn?w{T0f1eymsKwwvhE%@Osnups4Y|{j z7N7|ky#x2U%RzIsg!9EN+R+bGvs!*QK@#G_%4}8`=Br4J^Y63C@KFk_dyf#EKVrN8 z55LNX_FuRhfZFI_>Ub%?pT(XZFAv=%2Zl!gqOJTD+6p>5GLjQ@qcH%3_qKyl3jH&i(s9-sb$B-J~|d2ly+|)sJ%c z!$#FBzUccA5-9_I42PJeoSV4OjdtIx6Le+MOou!HWcs(P|_l8VBdfh3N}FFto{Dd3idc@?qqpR z?R-Z(@UndW_w?5hUC!&lPY3^XQPSfhQ&e1w+Sv8##yLT{Ca1BNW1M_FVzGW_9wqjm ze%zgfqlGfKkM{FfY;xPH&aU}tDn`X+08^R{EyMboNOU-5Q2i&@Wzx`|;oM{zif^)J z)OeQ;%Pg-!>$04LM5QO$KEJ0@<1sZdc)QRQQrhH*viXr?bSOun=5~TWG zs9J$6cua*!>3cJv$exQ(o?bZ{x;%E-R!O%(#h0&bMMd96XR4krq6DIXJ2^e9DP^97 zgqPRNMNrxV{+u~cJnHv+$~~YK;S^v%b!uh52^gqI z)WFfiCe$h9d)|4AHR4}iSWdcBl8q)m+k=0uDS>Dv7iF}xa+zFz-oR12U4zJMh z#xbB@}X|VImth5j2C-U&d@uxF+Gwq_7<8(4OW)v&(Qq${)=`0>PF^OR^ z+^hcCm^$iz-g1`qW(%=Ggh`h#2wwDksAHs;efcIfuK>4CMou6KDrOiG)(X=PWFf5{ zXXZ?YrOz8_c`km|vhS4LnKi285*9FJH#)1ZL;jS`Ur@fv5DvVoZ2Xup%$4kF8>dV~k5dUCTCB;^}WMoU0>3mna z?N1SzD4@{$bkg;ET6`oVVYWlvT?~T=BYg;v;ew=(?8jx;r8Xse{!H+^c#12gX-8v5 zv2^O$ejDUxnR8vNX%anC?|QPHvDVS{dnL8?khQ?+4AiK+%8qxwhjm+@=3aeNp6u5} zG$t#$&NlOjG!Dt{`b%5|*o>Fi@@&nu~l zzr`=!Cff-3q|yNZ>Vels%@yTSXJNZ>>bw&3ZlQ)ZI_1=PD~-HGQ=xP1adr-Z(5s8~ z!8SX^uI>c#<~>Mm~{q<=hF8$t&X(cHrX3btR3{N;vm^$s!tj`0!O%r`-(S5 zCVl24)AK~>)&vJM{pZsid79@ib^r9`7O&&0eAdv7N z+H0PinU~dj7%N>^AV-7lr>ZW#_!^exO>?yu*zBd{*@_Mi~H57zNPdrv}>TLqB+!*E-2DTFv+8G7OPwN%jP1 zb;InAs?R!>6lD|l=BKmL97XZ%OH>{OE)5vK&(XlGekMeYs)XB3I*FJK^eXb)Z2a#b= zEI6#VgUtA$*qoRd*KguDDZHvTL*jc(jcN5$RNokINPqOzqcDLpA>q@>A{S(SX<{Sb z-SXK@juGHzxgKR&vkPmo{SuLfSR_mms?D`x#^V|@F;x(RJu?b9A~_x$ei$ief2}Wq zhQGWscDJcsvFuz!CFeL-Zjoz0My%w?RR#fPthWY=$|X`LU@dPWr-JP1{z$2P*S(i3 zf621o*%q@ny8o`{wnGAUNyv?vqYUktV}+ZnQhxel{hvj_Ab0y6$3#A_WR90EUT`B+ zBHdS!X9fXnZ!Ev3G?Mm-R1TAYn0t6&IIJr#1a49hK=d8eo^zgif(Uc%1gqh5WEje4 zN?ID^b2F)i8Pm-CY2(hL1Iv|9WX~U|%EZb*?rY>aO zDtvY-8lK%^HhgV;!>nR&dz9~$YrfV8&)Ja7KRLJJN5tY2YR>VApr+M}Hr(5Gk=oT; z0sv6H!Wf^ab=-QD{G}JRrzU=ppdX0;mbDmkNXkX2grF4mCGPAe3R)9=uTATj83IZ$ zuy%{@2`cD|ar2osy^)~MZI_~u`ZH^sP~@@O(#t#LIkTOAZvvI0M;@hoDmbtF53ui z32SWwk?52}(Kzv#*NK6}Dfj`^EeJJMyd&!uw0|-f{hT5zR_*asEW{yyn(mcs9JxdM zg~qcE8@ID`LYpBW(WQzW&-B@6wU~8*+kezImSL!7`~-u!@S^&AaF(LIa<~AFl16Og zg_KTlyG@Zgm_7>rGjs+6(?6lE#~T7AGd;&5FB zqlF@rG*9c%(dugfRbfWlYzilzipH|-LNEz?4fD{o)6VqkG(`ed5&|pFvRAG?LNh9{ zUU*kZjhE+Nt=WnMmbS{AR2i^k(p{`cYgugcSw07L9{-?X?~N}Nmj4y6zwJJn`o8LL z{(j7zrpnG6_cFJuSF_Koeedtb{}ny}s1^1*jxie0bWW;mJTNYyRk3eX^9r(X+x2M{ zg$Up=3j(m1=4Qgb6*|VP`P{h_@>OFXaBkqmqDMGKJ$aNXBr42(1ZLIql8$c974jeM zi|tT2i4;&ec}H`i7(#BtoYWb-f_LwOh->`9f8NMzjKLUU0#91b;!2`0aw4Yrl63@+ zXi{qj`N=Q8z!)j^%a3X#O^EztJ@sl8djjYa6axP^5@-H2lgKcmSrehzJk3Q%Edc@e z*ba2kNF$}Q?TpD(TuWoIvAGE>dpR9B+G7;HQ)#311PqYW!|AqH^ylgF`Q@%t4YqVS z5g;tuTQv@q@|C9F&K0rlHY^h317~{VvsXXj{8sU&bwE(`*MVg?cC42h2Ci`xRm%$U zM(~;nS8u=iosCk*A_Z!rp?FmAx71il0YjO391VAQ%(7{GH6#@v0-z(l1O-X@LR3ue zIS=ac3aW1szqDny>hrGY2sZWGuD>@hyjr!O~6#gqO1^9CiuXcPg(nt$urWRhq^uSYHK?w0NDX zPP;CiFS$Z;96(2LAc}YjelK(&WVZMRl<=~8LEh|o4x`sz);)q>x{iS#&OZ?I zndMpMdu>YPjqJ#+9}-W6(!kQF$`>QIsbFH@FxG|n|j?G=8WiLx~PRc1XWST{h1h5U4*E+g`dt^+;(PZsd zvtrnhWi_4EYbr<*#eioxq`Sr?I)v3K{M$Kg?=*GLtDJjO!(dIk23uPse(Ike%HyFb z5js_(xD%V=mO=Kvx=oH>A`-7>v30OmjBWF`7oI$f>s)tU(M^O;&84d=I>dZufIJ&x zEJ-xUXMOLvz#`+{olv?TO<$o!3PV-~@R7X~KCTt4tn>=6UV?nD#W2g#bd!?g`y8A2 zl`%23$l9Q6b})X?@bAuv#7w5qtYfoR%3MiKh#!62^K^=}&52h@M+Z#3IU~t}&kS}J zn9GB{jX!R?^E6cC`J@vURE-4qboA4m%%?4qD?LBet$x~Bw(`ev16fOC><1PkW=4W( z_OK=;hCgkUtl3Db{SQcDx9xZ)NSM?>HOCYqL>OHbSd}Y0qSAJKI?C(_v_a{@05naG z)2{kt{NIo^DGH6(5ADehc3UR&&a8$cjm$gcEvzvD0?dW!Mbgt}FqdRb-vGp>jc(}t z?h&CzEK;dS(ekR}!kj_wzQadmI;MN=(m*(06jMdQn))oCa7Urd0khRZUtZD-RjSfl z(`wMFYhY331|QK1XIP_RD?2ZY!%2~-&7o|5nh$x%M;Q(PNL&{-hTfbD-jA|MM+X=F{B-;%v3jjjse{gPlv%4Ua=(g>e>u<$n}q5 zMZ(Y_y-s{BBAe-H@LSvl+doWnHlM2^(!M5r4VlMKu>Y8)gK4c<;R-ed^* z_P-+50GRm#qfl6qOWhk1`U~(?!qF8Q#XKU-z>De|q z*}&mctUXANB~D7~nOt;=ix`b%U)6dsyVO~otQCULwR@X+hftwrNuh(MpR#4wiG#XK zaQ#$>oYQbURkR0lpYn|8T!rH?@?bf*0>AK5j|i6MYhwmDLG?P<&09l5M!v`hiun#AWE{C?H)3;28YlfqJgLtzvOjApz zQo(JoW$v06PhXH49Gft0b+%9I7N^0n&u-YxOYKApj|8D^bk%VAgc4o|mxd(!^P_~e)XS_{1_ zH^C+RP&o zrd9$RM7WURsm8N_5ae(Ccu(nw0!;p6`VaBw6LorPd#CV|X(*A5HCD z2_%^oiOWRmS~!J8_1i%GjO7a9Wp61Z__dv*S;o&bFs7FEbnIx8Opj+O;V=ybTEbJQ zx6%`Eg^ETGc(_q5gZk0c_OgtmG2-WeR)mmJ_!_MauYzJ*zHchrC#aD$l63ap4ou`` zbF0r>l*cj}2>_@i6cP*Ne1-|n&5o}3#+**#$!y8^c_GiHKN%esnfOTzo%0nEBSs7n z%(-JkB-nROJt#xtRdmtk5zqDd`P)_*(|MJ#Ue92HrQ z?ffbHu41Hyk(HbQCp0YF0UaN_y}l_f zF62aw(b93m9)*FGYt-yB|n;cerR45eLmbWs0QiWAggp|aIlWe_2!x((Zz78(&za9rF_Pp zre5jCZqe?0#z#QplQqC{w)MdzwTB+-&|>q9bmLcrtSYQtGW^rP2LVSv$p2B`^~zz- zIb91oJ*B^1p0f~@Q{hunxg4b?>|u9X=nRNt!y~YHEaf9{awwkI1~lOWChlr!Z5t12 ziLwZE)TjO;R7o}lleMjy;%F;vdG{L~6kC&|eBPOk=4bXbQVnwF_;Ffac<&p{vWkeu zWcBl<7(5%hnYd{O4I}09PKV9#Y+&}Osbbop%}O>Q-5$#E$N0Dv$)(1lW%dQlMXX>F!mDJi4@GhVU$Lb= z>lr5TJfU`&Sd|2lWp~cq&(omSS?I$zHs-_9c`)B!RpTVL#pma#smvlAO@5jMUf}BCu&vo%t&bIlzFO_$VY2DVzSM=``0Gp0SS_3dX%S&_TLSJ>TYE6X+Dii* zjV)oCdEv`0wKXLz2 zfiuja=kEmNBu76!7g1q!4QlKN8fXeLqQ0Y;xY+0*gmC`N_Q-j0rPcF0|C`-2EP4e- zFFY9+<)NPuwb9J8Nn*~F2?T+oqfb~$G4MKBEwLqBe9s&8wAQ*W?+-QKBATk!m3C~3 zZa|fzDF7SPc0=s9YhcEr}y&*fAIpB@P8u4Q&ZWZ&I>o~8%{QkTmM^ZYl-9T`6c{II&mno z(8N1bYJpEpfvl2|NOR|HVIZzU5(Gf-z@Lmv(p;a7`$Kk<(nM`*4&yIT#6BQr3t>Nv zXN?lw|MYc12uEqgw_F&G^B)`sV@s9wwXce)O!Ui{9F|Mev_=!$s#cTe{pBXf=<(9;SA7&${is{;6zJgti^5$bBQ)UB7y-Mt=Q|kG~y%il}=`n(vXmmM4`n&+-(* zw>(}p+ti}#&c;$l8e`S_DOKJ3_Q!J9oP`USv8vynLYpP+TeQx$V^+-IjF(CZTTCf< z?RB_4_uoRPPB5!&v>pX{ig{%xO!2s#R_n8p(l4K@j*&pdlP)Lal z0008md-L*mQ8|0|q~MJPy@{R~JAXm;A>6>Br!-!&<4s;)>X#0ZyN#}LY`jsTBeCF1 zH_?eJESg@$$Zx&m13&Xck$5@+KVFWFOHE7RByfF7@*PC!*%lET!WdCUaRnX1Wchik-zoObb zBJ-0M>y-Fg1EtLmGSJ=qsyd3!$rz`${1GG{AMocFiUhjGt)=*%)`xU^3*@=dm()wy zdU?)V6i1|+mN2CTvctptjzJn{K>@%L_!yh9%;SJCX%J{1R}+@RxSOD3bBhL}69^%N z&IR%Ap!T|v$zEJ&2Z*O|;>c-L#_zbWQhRlHrb~ki#VA)5=xL|*)o*w?fg8pr6?@8E zz6!o`%RRu{BQI6?-m7?T!F^#mxmL-f72KXuwnrWZ1uS*e zr}u8dl5!nayO{{Q5Ia?hx8EK!w*USN&;4_2Jy8>v`Qgo!qpHX!P~sG0Eg4mC;Jd}T z{9w_W^c{lpH=Q^6^8!n{i_faY-(jV9dOELgP;CSbh)`2oqEx;TP(G>Jq+HO%zrPhO zb(6K5Rabx306O@yjw$6;^G+St-_RjT^W$VF%M#tMbkR!Ji;z-g(J+5o|A|q=C{^?V z7vow-4qb_fcB<-RYQou^bx1C9>K%a`1Riq#1SPKr@bpC}01)#>2r=YL;83`wIX`{++8~M>Pnp0}>vfx^IGRAGS1*;z-P-{CmP+blck#jRVu)4`GoAB2 z^DDlnR10@QS#PAp@2T~}!@lgx zak)3+(~&QsuPP_F&-6O#o(6xnK&!X6z1ULtuWp+xE3@89v5%RT4NdZ#&8W5jkJC1h zDP;S#?`>g_0ss)8GDKX=so|0|uJeo)@o${flLj1i*(lp}ZGQVcW*LseomztM8Ww+y zRQgg5lKhuG@oq7=sbue|ZMb@9WJ13oYK%YVbgoByn=yt#X7DQ78glODZSQX#(w z0Ad0FP}HfsnEUmiYCW+2JbzVA#%ox1HA!Y?BQq&=hIodBUgDo#vdV-*`3MYAs800@ z?-`{fVW*+50Z~bPhlGF%`~1`gi{Shy&m7mk`X;{T!HFh8Fz)hc7ZmG(gH2&|70R*# znq$f6e?rB~^I7tC@1kTiFtlilHIZRFGgj{+&91Z8)Jz-Hc8b~M19Y=7Rt3tsYmWkY zTxW2q%;XrGUfbXj53z_c?RT|~w9czQ7+L$YA2$yij0{;>nMhga-hrnP)dw$NwTjXj zbPR7?p68-yGJoxq%Xj+5(Cbm=HbxnzFh$9}gBEX|D!Fs;#RPY=ASSBN(fb;-dL3bm zEaYhXEEKQrfH{+RNGbVs>ddro`2Dv+8u|N=30zmQq#s$aM*#r98&)K94L?rA)QJ3y zX)vJ*iBMir=X_3UU@k7rBL;iNlp(|g0dsSX#;tNH1-m6uDZLpy;x;R8OV;qxJuI7j z%6^pAx%xZHC)K#)(@K z_LW%E6uOqV7~h-5%pInZIXb8({fh6q^w$3<8VR!9b3PZnNlRst=ZK30?^Xn;7cgQ= zb-v&pDe%NnsZxl*=9uEr(JY3L#+`8Grg+iMk~6L3A-~M2vub^qAQnDTiPOZ=u=94B zTz)5ga$tEe@k928M##pAFp+Ht*I9eIKr#gU(kIfrZNvVjVu#1p}#^X`isM}GWG82K`D+luNF_o_((J%|^>nJkNwsl~Tv=RELKjg2e` zy`tX|9Rt*fZ8Bl-p$wHoZ@H{}Y~NU90c|4|JFS#^p(n)#1b{yit4UF`u}PUWUcjio zJa$tu56%4@PCeOx#uvc%8OXYq(tMHusXg^p(Y=f&v|YOI0l?K?m4PuZh$U5G2wRr_x6e zurQ#%P7ZeZvXAV=suD8U-_;>JIR&-Fgx)S8PIGZ8pJ-|adrt~x zah_nc33=5~(Ik<+5&AuEpuZLvbHVV}2b0NaU-vY9^z)@jNwJ-%C~~~iB0;~JaI8|0 z1=4YOgBIW(>L{)LaXVPtL8a#TskgzVG(|mXZwm|XcJ;9l zsGI5t+{9IhrJqUGx}Q*-O09fDvPhv?L*__XB5MAK3xQ>^GCaPz<5j4w4K;Wr7vweB>R$6wlNWSrKW5I6*%u39Qtoi*qw*bO zD%||xS_l8V9cKV5RYzfGkZv@SL_Jsqa9N`zs1n z^@5jS&GNj;#u-URc|_07*8cF-heh2p89aHDs{#F*LLI@y&)(ve4_D$;h8E%y`){l5 z*>yTSbXi|;*@X>SOj=ZaYZVO1Qi}n25)hGzZ*U`q2x>A&yTwj}F;rRd1$)WKKP5V+ zT6)_pvnsW>a@FcnY0s!n~9}*HaS$B0vB+~B#6*NlWUEv(+ zj%o3CZr@BTt-4#km;ap+Cf}^5>f%p&nCk7Ula|nw7~dt}@(ZjyF?8lA3U_8R+_e5$ zn1_lJs~){NMC|JHTokJ;W=S|ovMJ-9RDi~QT!b4xWY>4g%5K-G!(jiiI=gTyUpwcU zoC;R$9{v7WKbMVpYet~3uZv4a2LP0fPP(E7?kRYKsg!7O)XUKu@#}^cSv+PcLNi8* zV>k~LRNmXp_K!BHqsS+M)J@gUQ8&woClZ(>5o3X(q*R2-FSSla74W+0sqs?(Y>(+L zL;ZDL@aq7KeKGeVr`yR@oD7$|cPT9dmbP6`dFikB9||6SQo<;4w;8>SFM{rA^>wsv zxd(Knyqg+>{Qv6%HZ<00XYpJ@D3z~hN|-YXC6D$~uUwtdYrl5-#!e4lM*slUCw!!H z72>ic8T2hYHRU-G`d*@q7p+|?Y~d9)+|SdMSvZBBTVIl2ViRY@HWphhyj&$XYm(44Ha1#S7ZWf}M5qXFlOy`ufg)|9BoA_OIz*_>calByTjB zx4k~pr0v~r2>F0AXW3d!V9q=8Ki5;F9>SN8TWE9vAuE8wr|Qx03ncx&VgohW=dov- z-)UHB-95Vq_shMgGZ>^ARC1!88F-Y7qk<0P?96^7VylK+YYoNQ9ZA(e4p+(GvDqU> z^jgffv7D7UYUZcqG%aiktnCU%h;a2vJ(`J{WhXj>(Dv72f5XS1iCC z6Z}Nf2Tj|yNDj(BVl@4G;F)yM+PGENX)FYF^3H9%{xu<; zof!z`nBrMRs*LI6siV&Y9N13OP z5Bu^6i4%wVIotBy(&r`2isigc%)3ySV z)L!9!RRbr~KJ57PBb-B}RNHl>06GT%OA!Dz9h&4a&mE}c_1ZM#JD#L{?-pyyNYd|g z#`)-8on>SwvaE)PiW|0;(DohGBtlWwi@^u>G$w>WbW}R7nsVn1Ny#(v%p;K?#oxI; zy>ccvofzKeeInln4~F5!l58)sp2CoVMGqGa$DL4xvz5jA(Pe3@$;>zKdR|0hqW8QUorwzKuLX=d z@22PV7;6KVqy>=wQx8RJc2dY4Jm zrC3(28=t`^$TMfd)1@`4XSA^jF=5GXO_quX-746xm0Q!jqsfv~M@L7L$4baUQ1!(! z>S;Wh%+qF22>^b@#R&g&61jSr3>@p~Ik4OB1)TMG}le^nZ8TVB;D%SS%)r zp>jxwW`!n3km7kh>Xlwo9PMAkh6+Zp;-~;X0F~bfv0=A;?4WWwT~hp>vf1g0EKR7v3(mV* zWQ<;y`J?;jQHSm;g$zBksg-^$g@iPs!_b48Ux zPx$G$?*x)eo(@)Pv!@CiHj-8>xIpX4Kq-k9=;+!eR*SEr)QOdH`N5GF4qXIk-6u(( z6_oMKqHjo8ONLkJ6qEHoqCN_B^~O$ES%j&^Z*oLBH!EA=f}ZIv*j%O0wP~r^sj1g2 z`RSb_{?<~d?foF|o{zL1L3{vym)a%C~UAMmy4qyY@ zC%UC&$hCG*o@?chEh0kFD|NMBN}!Lq$l|I5y)#7)P9SGSvXSn8!}2RGKV@(ER%gBY ze7>M?QqrM}2DtvKP7YfU7XSzi%dHedcV+(lZpVETfqQ0ej=WU4L8tW33v-r&XY+j2 z+eoHRBG*pC>?VN&(T33Sn2zu%m@vlpEsHBSZqvOxF$zk|Ezp?sh_-mFlPg>_bCgL< z)ju`$`)>ok{YuiDCcJk~g^&LPV~A|uy<{O`X%pwZB`uNqw(ee$wIgU0+3s}u0wqDWQAcJ$u&_djRj>so<-EL_3D zriuU{SRDOmJglx?ksQ%5reX5eNiP~%pF;-&thon8V2nyZV%{8Mr2*}6t7(K!I=A>F znZ_8La|!O8cb-he!W>p4PVq8?_jfrDPWEfrz9)iq9*ecXXy}p_tGtzXk2D`W(Nd;1 zI9WW=zo}p;)=D?cRes*NLm#&X+K1endr+sZH&-XhLS~3tQmbpxWf0s502ka0r&OM- z)<>@VZXAsQ|PpU8%-8)UFpVCfke4|mn9@q2TG-At1v zIo()SP7JzQlxRoAZG?`Af|8{?U-u#doJO(BzFxpXy>bPTmuxScS`!=*GEbi;HLwj1 z(YZa5F?TDlO_qN#x|c4zzu~SXrN)w$Vm_0!*ecKNC$4iqkOcsMe%VKI+FfRqCgn`C zn$Z$>$Z4jPgt8vTMtS7KT2)zw-P@kT(GwgcLvU}L7|oNGRoiJ*F%8y4e!2mj_nF8# zTgy($sM%Ax>X~u1X8r=Gr5@>&G zv=M0=91)-43(Is!R_RZnQ#P08DI5bQE&IOzPlcww#V+zv#5>KcKTkf+L$^FW@ThWf zilakdXPCYhHwpl-1P%`%>voAeqPmB)PRaqS;`}}=2*VKe#W$b8-+uR|REa#&AYaQt z?qm^!ZkO?1jy45+<mT=~3xVH(`9t$oqKSMc3pWdTaS$3wd~Uhfl|C%VX~4-%wen!KTgr^Y7g;4TFEF zWAP}(;Z1d7oG#2e3-{Hp5nOs~;a9n#^$%kL&`noFHM~&S!d`+#o8Vrbm!N%$+>Q{l z-%~J?{F(j{^lz^T33Xmq%I&p14F7cjGG;vmKFeuc41C?J|T zBv;mp9m+PR2kY&0jzHCkJ@I}UnlMGrQSjf*_sh?(OG-vccZuIHhj0d#d9bYkFSh$bg4svh;{mg z+7{nOQ2{zh)aYK@>ep4x-{W*s6xW~LxE}^(cnPi>i>JM`G1^pV=Mp*OXlD2 zc3fNlH^+9@`BKy-GiAF^o>M?Cw%p^ibur1PQ-Jukg2F%``;dmn29shESPI7d)_XYq zJmHXJVO^=j^>R-tE2IVQq)4#J+1uCE!n5$Vk+hqti0N?RTZkW}LV;)C0nWztEC1Xk zkEMQmj6TBc1cPn~?UCVK!nUWJUQ!s@nrrkAX_!5Ud_GuF_dP{}k1-p~zSZKFP7m3h z;yTLaV7y8cKCM{m3>uAMW##cTv51YT!h>e<2R(6@891GQYw$|Bq zs-d+qeKv+LY}9We7;~8%wNPrZtQ3&@@>5ss$gq!nJm;BPRe>Q`nJk1eBSTgzv?|Ms z>m+AkO%M8}Ow8D$yD|6S%ov9JUb#Gl>TEu{Eo`L%0I-iBw%9VImIt|&gxpzglQCUA ztz%107}ekX;RWFgs{<;WN^tpF1}f74f^=Ldf)9l=b8$gCNB)Q#YlZcWTk4l&ax92; zqu;X1k5rD<={xd^my+N#;a`Yc+b_Ti{O~AW6se1LblB^Cq7fzB%<(=x&C9Y1VLy=! zESs+^0okx@{0VhLQ_SOH0|a#i4I&@I=hF?9QD9%A=!Wk9tz0e#^kvZTmyp?crNC4_k0}y(o$A?!b<7rha_d zISYD+M(amNFsVt`K`r7%W&_U}Eq`!slt1+scFl0IHWUuIv9yC$gV-ueJmz~H{ zFaiM4T)X3c)8nuf9!Yp*WiM%h2}7XKVE1|c7Hw-Q8%8_ty3D>DavvueRT?4}?`|)9y6wH@ zRHI0Xzy(2*W9YvJJhLTzv!k3(>{xaOnGG|(&qcU?);nE2mAq8aydATFU}^WS51k)I z%grCBz33iykEeABgmV~MHJ?=jT-xEn8^$Q&QUc@f9ZF`} z*!rB(iS%|rVnT1$^(V#pQpROJ*1KqOWu~buP=i<5y=~E-s%!VG%|OeNrA0N~qb~-S zmhSC~v13O?4M4`aPf{3{%d(~~t^h?qy1(#tY@Ho~i@gvVDa?le*!}~L%KtR`I2kE;HT=jD{m`7#CmVKS zI|n5Z*`#uL5_QL0YNmWAv(re5dat2ouYrZl%i~s$oxL5`iBf1Z0820NWtQW7L&yc?kV}L9CQB9cXEv&=o2tNHHN?!Y zKG^w2T|WGNx1aa=XO#+Vh8RU_8@7T1ko&o8OMh3tB8c~l{@{ttZe)}j4tJph zTj`t(_(?@%x85x(!82tzTV<&3L8fHxSa)u7(p=cM8IC(>?D2_Ll8m@Uxr_x(Ebmfy zalm_%G&!jbD=^W7XbjXfX#b27i7Fs6%{}j0uiSPHy;L(??)rDE7)AH!C~4lKLS-Az zFy%XmZM%;v?F)wsd2S9>A+^QhS(c#oZF1V{mHV2{DeGxwe`Ix^Dh0(PIlYy9_Cc1S zOzFWRF`IYXhI=Sh%gU4a64MQ1sXbF*mQrA=%2jnil)rlYM|-w|TrRNV>IZp*SUGsP zQaoLyiqb5%Gw%XrzX_Ylq(%=g_|(v_{)^G zT)VsbAEQ)ofk+kDa~#h!=fJCAPJxtTlid%2pBYOqLmOkM(%HiVj?@#lpOiVIxS)w3 zk7xI4LTTAu``oP9tX7}2DottHGemQ}V``cL8)jMN7JiWHm&Vq#$)Z!Cx4%~w#D67F zKABz%EH!oDE;TgkYNz|6NP?@3_HcM1yrPA~*Q!!Di~CtjzM(91`?=shGBgRH zF;08V=b~RyXZq{pIdzcs6~3pflS8~B9<{dxZNMWH6#$Dvme@6iKPCOKw6wf?+@{R2 z3dTH7ChOB5@I{R(an~N2Uya~uS>+f{aATG?%57IWd*2ey`<3^|#IPx*guuJ*T_@ET zdm&<9H>UD56z%?*jLYb3d=)A*u0-%k%#XshP4jM*yK^vqryaDj=33bF*+dIo3cjaO zx67sRR$2@@QR~-x%}!6H>6&$)HD<#;sB{`*)Ryg980a?j{qv8@f?Z7UIvYZUKe-R`uC!02`EE5c?+nX!i5J$C zAL?THR!~>$>u!v7B<|4cV}0z4uYYhO>D{1Y4<6A;r@EG?ow55ge#-wqhhM3HGkBw` zQHVGLLzPp7Ldt?`m!Lsdn;>xmb#bbhjb9&6O~09%9rMlvRkUHvgrB$I>fO~(O_jWW zP9kr-9m-|}Bx)=fS&tfL#kRFGwqh?eQV@l|=O*XEW!Glu%Lw@ZbBG=C_1ToSd+2=M z=mWKijkW~^U=3ELbYfC@iDd0?ey=-t{3w{b1F$57%vIx_YH8*}=B_Eg0RPb3BaQRz%Od73Ra8nRe=YlgnnxAAV88tT~S| z!_N||HZY&mPkqY&tk9Cdixdm^zvH_9d|1z|x7#k6Zql0=r-V7Jz%X=>dI1}@lIV5q z9lbOO0Fc5}DY`XDyS&{;kMKXw9kosezOvuJKc8H7e`MoGTW18egKIo1_GRPGr(H}Z z8(P`dS9oITFuSVM{?0c6>UUZ*L(jy_rb<-nI637^)8R4}GHLoO)gWx&!eys*_(fh7 z*Uoi)k<+I?6ocG->G`HR&6GU`a&a)EiPbz0HW9xDFPwUuZ zyKX{6vwBdnqovm=Y{SgpWZrtzw+ZfBa`DHZvhi4s>!A5_`bCi|9aWC~9 z(*)gT>(`SEJ=#+RVP!~A`y>5lCcS0ZnHT5!h0&A>6_O>NT=tezma0Fv&+)atJv&X^ z%CLs5V4}X`=0}r7W!Uhtn(A3Ub*Xk=N^=P>NAOW(0LlOWfR2Y)$nrR8oSFs9-(<)! z2QTJ%BkkegwNzDCE07`zFD!K9cbhcR|eX9FUy*Q}qoRBMRb!rLN&xD#VE!FXwke(c=?{ji@O4D1Ypyp<&r8b|$ z$99wgXoZ5x^3joFWE!!qW08jLe=@=04i?BukuT`RZM1wMA<_UHqy}9{;_i6CJ(B+# zt4sj^c&s-(sYo^X7LP(?*N=y7G`sZ#H22H~D=MoG@EAu|{y;J}I@ogza}8Ys_2t7- zzc@IuJf|dtQ07SW61}URJ>^Q0@AChJPaD&R*Ygf>SF**IWCxjs3uj;Ul#ukTI@MJp z@i(OEaTy|00_)$1dT1BB6P>pi(MbtR*bsTHxK4}ZKM;54TGw|10RO@WdqkNC!6bp^ z^2)W*6C86*0YPPUEuPFO0SjNLzG@pZZxOwiPVX?HHvW~*1WT;6sz?TJni!9zh|*x( zO0384cm)MzPOp>|Ox;iJMDgrWI_}5^swdr-vc`obZP}&th-W&*V2!P0nQcbdrONgG zc!uu}Rqxi($Y6K}^w>nBsWh7->zz}kV^h4g%Qm(MKY#_BVJ1y!wvV3GX-_6JG^p;Z zUX0PGZ~6;M=6$ORamIJfx9pW5Zjl6e)J`SK4{m%f++(+o!$nfsH&}>F4(UAQPxr1; z41hE~dtOIH7&C$9w9uS^SmS`s@8SK&lzSEd+kyH9!9oI;$wtrYbF|+)_P!UnU;1Jt z6Xd`Car|XUhk1K~up9v{)d}{{pz9@)`Czi8zFII4hnK4_i+yfiFTe zTWvBYU}sx|R1;B;=B)p{8En4mNKo-hgr?(f)!ZhB15;qs4Ew#k8jIot<@#z_G82Z; zdDB0eT!Z)OZ4oPZd;>w0V}CzYx=Y|Y#@d!+7Mdfvj|%LXJ#L{@YqrA{Zmif5|Iei0 zR4a?cL~)S}t&l0` zqQvNGZ#8fXQ#K;v1K|_G3o!`XZM9)_J%^l0Q;-l1bBe84qGv%GE|Kpo>Dod1aGRe{ zU1eIuPF_(7XKq12t$E$FG+KuS&w9Mr3&qte?v!!Go4R0GI~MIsN&ZIcT*PZ*GcFo2 zbNwCp__be-nEqg7#82wS3c`2*xuRkG;0Xw!TY;VF6J?lL9&v*W<%ZyGbEXesl`FNK zaEdIUA`83A2ol$wKl!hGs3CVm7`^>Dg$%%ri51Y`z21J;6YW=qo@3G$5%lKaQ16`= z4EY{B^o}Qq`$n?=oA7@9bl-V zg=%MU0uKP_007%hVTnU5$`6Zzxqec6`9gr$A&uRsx=reh5@W(LFWw5%*s&TxR==U^ zV~e|R9Xif59c_J~z6n+5Tgy!obCn@UmEb9X?18t{qE<;s)pY@{w1TnJ4ImDg+--rx%bVAOCRSD9zc|D#+HPZhut1o&HKGQs1VJV^&~R`d5GY zhis;lmYgbv&Xz)=V{Ey;9yNiZ#CL?7d6)Mu9DiI#d}DrSyZyGO@;@^)v2oE>yNik9 zHyPSQTSAkKKz`nw}l0d@c@88=i`E;NN_xkZd7uU0hJkDF=#VgNL?Ey ztrPlhGyKt}i&nV?{-Qu4E{hl=dM7Je9Br%dJPIcErnSK->1SO?IH24%-oy~g>ckeOSJ}6NF+Ag!b^ah}>I`=26(hRDne2JJ#OM9?6chlX)!NOA zP0oG$F4(V6(y%rg6$w(nMrrIRkj#E~+(bkug59(@I;@bKsiiq9c1bU*;a1KXiI;7O zB6_6G&N(ZQC8i_6DRvAs;bwXn?LM(I&J?Bb!Y0q1tUkbCk^l0!q4Rew6JE6rX{1Qa zr8couS)J0%97tlceO7zA{b6E^PyERaO_wXr-PYLEtj^zm`;TOnV)m3~xY{~WhF+Zp zNN(b)&YVPgrLw>g0esfxS&42P={(N}_O>z?XUuiF>XZsFg%bv0d4f;1T!uI+BtL!b z>TgXcF`h;tR1@M(L+@#>$+g9TO(U}K%fkE43b0|GD8{svy?xdY-2(J!mdfm^9J)6( zfXzlTBskpuX6D31`);>O^+{%KC6k1%^gR7K-)i+efDHiHguVI)rLVMGF})7byVM2G zRffnqHZo%G$u+ADoG*WTUu_6=d1)U+dqxQ+wAoPupXTb&L9`j=kapnibPTlfpY4NNRB z`im2@;4RuBt!-9q~7Vfq4VgC_Z=UIo}K9Yfh(_WX^u} z9SUcZzo)w{u=#;yJ=e&&&1Z-6&yFf1+li?Pfnv8?c{<|dQ#p56@DwBGHZ?xOoDY*$ z-?&Fcd7^=faXnh!>!h-wLrH_JvivJ1Xj8i3__3IVgPh#4aKrXm>={kf*0*THpZ5U_qxI$fj3XnjYyH;m zn%6BZ%P6^ijEI^w_Y3(NLK<9Jzn(aJK)H+dII9Y~t<-Qy`#| z{EiGk`_!Vy`AnI?DHk|XirgcQ1wE&Gq7Pxb+yEf-2mlBRJe7-V-g*0UoXvsa)~fdc z_%E2rX0;WRg;^aj31;9B-zNiE(4#p>1~VPwN1kAAn#jay=;oXQIU-|i1t|{dU9(dE zD>kpauN|#5!`CUCn<+8(X5ewy!WId1+ULdNfGUbq@~}CG@{%JYn%3;jJXvT5OCZf}Ea{r}lPUD#D#_O;JQ( z9J>f^6YN1wyx1EAvZ0bzN}uj99$~!~K;YU6WgDEECWVm*>~VW+4g@Q*!6=tw>XXMF zc9{B#-+l`+J{@i1a91m+Wf^S@?(rSvj5{aeto~lISNEgiLjX56IXMYOTR;eVW3kTyL&Ofe{C}UT~O4A`~R;?upFSm1(##gC;XHzaE%a77U;*YE> zFb1h-J*!H197iNF_ocuw1L`p@Rz>TKDPZSFkKRvVW*f{fGrSW|&kWiAeAQ;0e0}9u z9n=AuU=wxsdYfd@nsBy-mhp@^^-OOV!AVG~6Ae)+fz6PH)b=Zl!UnGzb- z+1QVEQ$S5onaj)3+I4v#at79rRi( zn{NpCo9h3IkOW($(0o@q9gdyJH(f8!9S&Yi_fcDnsL?8;@8(QM~L@}iy@NhllTi=x;R?<}OUO1D^|*y5B|^pT+( z&lLN0QM;BsquOC$5;ASyPO5dwo*& zj!8JHBS^X6>yev-$J~*?EKy}9y8Ju&7Oq;mI?Hvt#JuJEtUK=S4*ShT#H`(^wApq^ zeWna9*M5Xb;|md{ty9X7a_c>%8$m)XDxOMba=+y*-Fy>p|4mkveXvjO0g3Pi#}eKM=loR(~`^L zE#hk8cdF{z3q~odtjg~?sPIf&V3yQWt>wgBE|wILuNx|7xlMk}b|Ee|)uz)lIz~xU zvvao9-X3nuLUMX3oystAHq-EvbJbeu99G`752?Kc@($knZ(4ACXMmI?)v+B!*tchjlHPiLeUN#cOo5*&5l|$jAZK`2R=D~(CI`~CAmAPG zznb--={CFPmm)VQjr}$9oF3rRA|EyA#*|R&b?r#OFF=g|lBEFJd#gB9qfI!nkC~)> zVZIX05_t;YD}gYLkBGzRt38vyM#t^BYKi$-(lNq_QJ{*-^`i2c8e{Sz{u2Q$0m}zEB_3? zKFAS>YbdaHLMQ2Ycp)jsvqe5`#ZV~#0Cp)N&(msfC&+Z`Q`JwhY64p3*^jS-^-&u3 zB>WPa6`hGy6Kgs#)}0zC>`S3su4^Gm*2%74B~WcUXR)|xJAMwubV4q}@yC^K8@1Z_ zDSKZe*`{K80|S0-R0`+~HUH^YHjdVn`F_Z0&+)uAsBs{03`StGrPIk&!1NLUs`H)4 zksBp)`wcXzKsvt&QHXT-x=I^7wjeFGb z2u=JmNC}y@v1_(143XzDh|6-I{`c}TYw68|8KW(FFfX8Lwk}h`V)sSXW!`Nro&c6{ zgaAq*P)@>S6%?m?rj65Q)cWfJKfO(u;(0RumauDz$a@#Q7U7EbA%T&`N%;yV54TdX z(o^}wk{lm2%+2?d$f{Hlv{sz1^^ir_{3*j{3FSgRH(m_kN0zy>PjWQGq;sIYne-BC zvx$~7?Kj3zbko;LQ9js7YM}a+WRaA(EG~Z=dSD+T=#%~{ocoWKb6k|o9ug+vokIM3 zU6_*?`B3DmUO73XCvshRTkw;B3Wx%M*4}4Wc_u_{DaY91rf`TSaGy{}m1f=*@3Z?h zXp|4~*Z-jC%~Bg>6NHycC_6`+qCtW_=3z9hXD>Bdi z%+up$8Pp8I?IOPNOk#BViAPd`V)pTZ$95`Cu zIL~WB4QZ$hYG@GdlMF`c)*j(_B?}4R$^OLIjE*)zd5#cmqpzR&zE3%*=9|I;>Nbrb zSh5{684Pr`S2qtUgy;Vz_m_Njr9{$n$;UTmjOW zrOSJP*jKNu3VzB`E^& zaW23KWJ~9>t{-4sxv#~#`rr;qzVG6qdYK`{8#O73CDPTI5yVg^004wFgMPT* zG*6T?3Ss76u7qJmF6wvuecO}${On9!|v)qLtztim!Pn{X`Km+2Iohq$OYLoMe%vOdD15Ae3edB?7W=p(nW~ultUk%TN%Kkjo4qIH z*V%R>ofeIjk|J*1Gv$X0_)hmlpk5!^?m{KlR=Bg* z%X3O0USfOSrkWTdiLXh)CzAG@jtd^6d3l>uj!g6ISzIBd#Rq{auIO$9!DRdNtk)`^!=HP8KD#);PfL zxJj5b5vKmCN|R0PSzHlYZg-pR^Mxk1V~P&*)uIb+Y`BV)h@BQf_6Xj(Ki#TW^vpe> zhLi-yaF1%e$noQvJEHCN%DMjGimPdo&e((a@@vikO%MoOYY| zJ!#)U8315sSJ10&YSVXjNDbTj`C}i0Jb&mQbz7+4!&0crV>E>+ZV;`G}m^oT2S?RM87X!jiYQquBj=jcNPpVq8_Yjyj??yrJ?Q_hJiyP-}i$ zl2c`zf1d)FidyLUNLAh}MkR80dd5l$yJX(`F{?5%d|57{zxHC86bFc=A^*pq`%k&t znA46XNX$Dum9bYoP6tI_;lm2;B>`{&#)AsDO@@4;`xHzy^!cB5dogfO zSb}Q58u26pE0tDhp%&MT$8gl{u3yA<7xKUPQD1}S5i@arB8%m06Ty=7aR0n;RU z1B1J}+u-gHY>>ejT!X`4!8If}4DJrW-CaTw+zC$51cGbO1PI}LIL|q|@9w_)ANs29 zuBxsc8Zwh|A zVC2=eiZ=e@Y=@~KphtCT)Uy)4hizs`EcV6cZ+dfWO&#jZ%!bn<t3*^@kw%FYk_-KTb}w=z~MqIw+)r(@Z)StBefZH_@1D+Y)G9 zqs5dEnJA^d-2cbBWEbwV4L?w_O46jxwi<6Fs`=n?#y>NuE9|x(%_@P+goFWL!CV<) zd_vo!N=P&vF+s$kG_srf`~@Flo+LUabC%vZeqtf*W(k-j}X08>x ztUna#&{E{Hk6NipI(Ms8>cAfEa>A7aA1PE!*)tsg0A#($NLcl>n(SmIhpkUq?+e~^ z&zk-vyF28j&8TJK2@RJM51oiJ3pyCiZ|IWcMediwwW5q*`V)@6hG)R!@x7OhOsl<= zJ?_1cW0sq#MLn)ykc*+r5JxLVMcmyac*(OUNBH!<_QX}CXEyBa?cXDxdejVOH4_(u zE!V$9iL{+FB1{Xcs0`)G&By?N&Zs}J@;tDlpIyV)Xqu@~nj*hHl@K8|ed7Gs%C+lp z-PrumNI6Ou>7TKFVqGyi@e9^;d+(E;SITRm2^JzqoCbgU&X$NoyN@1~E4faeQpk&@uS#XUNfhZn?0T{J zXS=AVCW{UNjzUp(iJ9|fGy&79$_!Pkg`r(toXLjx+oBx!65B2#WuI>~+bomAig~Og ztUUsuONNb(i06aXVe=vud%JtWZH~Aw5-1}dH@knM(ilHj@bv!a z;PU(D7t6NwQBHXV0J-9Xkxkaru*`ZwBB;gG{+Q(C9yB#}f02Oa*%e2PH9Q`_Nh^VZ zPdWPO{#D%^S&L^yj+7%DF`cDP&v$L~HjGpwW!c(3$^cFg-{UjirHs$tro|fcA-&=$ z8hyEd6=iR;NY9o&za^M4FXWmK)oqR-+4& ztgourO)AK(1t0&8DA1gGDJU#;Kl`j&V<%X}ir~{)<`EZ{>L~50GPYCjo}LXozZyQl zf;{tjQ@J1kyL7ynh%Wl}AV%lWn7>^rI5tPHEem#%GJbyxVmf1MM( z<5RvUKFkxzoa=9=*L98;Xm@X(SDWFnpxAny1xyxT2AFy$8f4;*! z3;-FG!*<$=1wmiXlH01PkM~W57z(N1iM|mGNO1O)<%U?~BXD)!$Md=$KqOqK zU|@}gRE5*B367eHNy0&=q^>s2ZhcB^lUzNx5XdFna_HY>=5|S>fV{3nhz&hse3SIT zoUzWU&-Ph6ED^KvTK$=7%~9Q)r%K$_lV=s%q~Dk_c@7`&W4fD`~gu6)B6S*$^LiR4eG z7oC)%DV$$WlnZ`Jh3jEn@z7qDbyl&@B%YRnBsQu(fwiJ?pgPIL?D{+bIDoMx?C z**0_W%Es?bjnZVhM}*Gi=5?rTdtZ8CzcR1b5ylVv)hqN)I>VrD)yoJYFLSDLbPZGy zvqhFvsv6aSM5gYm;&SM|50!Ng=neq?*Q8)4r>&k?kTH37c0z;v;PUdRNd>_R z^V_^s?rH!7RxZy{*d*!k<=DrgviH#4#l?nZaR}yl=2&L3$HT3Qj56u3Pq0ki7u z#Jki%1Pn*N?NWs9M8_!i^z1vU5UTE%YEAHMSLH)b1s?S3g9;Z!#|u1TZgho3dA@&+ zS3Vmwy{%(-+n6L=nn|U=iTLX~7|h*R)p{wmYXV-@D!7xe|K;PIPYHbas_sYr2!^6K9s!Y-RLFBmd zG6$i=kWXf#tUy;m%u9;*L44bUwVyYhV@+^Y=_#|ZX2|KGHvD##*Y@mY&N0~kjj7M zEfH4zb($fuhMbis?jN;aYN8M*i@FuVoSf=S=a1LVWqPbp8tdb(%i{%E&hYR24+1sm zhSAgHkN-Q){ioyt9k%Ar1ig|qo@!;-N?}SL0xMZ2CQXFho$je(fnNXs@E(N1$f zW}P3_(kHvJf+g<$<`oeS;BFJyi*kMbyO0qI!T^9wVcj3}mUKBqLIxcp@g(72nwEVw zM|anom}t0IA>?YrCFYRO8kV{7LD#(&dCAK>&}tMAH?qvF(U~)J%1r>%uyTm?LlC2D zP-j@%sfRR_Q}qS)A>DE#vyl^ZT}AF)6xE36sjcQ#KQcJ*5OL z+$zgJ2;7Bm^o#675~vR%Y`TO?fy`Rm(~i_mEwIo@bfL2;$b=XTl%pJ4m*b^`Wl3iW zQ>qWnJpHU>Q|qSy-D>mWZ(N%yk&&-R-}>{RQ@U z#X9nG1A5ex&C8hygrq`WmAhPZjqjHhp`s7{9CF$5YF4l?mi5#H2_81*zI16YrQD(_CogUO zZ8UeM^vd4kr|gxQ$fCiO!(SB3U1Pa_hu1kv-40=E1JLz5_E)}W@_F+!1zW@a%Qq!Z zxWm>wg5M?`m%3lzz?hJ>EErP$dr)53-EIiK7~}3lb%vE$Yu-gc zd+VbQw(4$AzPDs+ABpDR05UQl7mAr3H--$Y-oS<)`7H6gq4#q(S$^9nLd80J*0>-{ z=YFxtIuez_JqKEJ6-bbIu=B;AV$$T6G;YlMGW~nniE#j-z`8$+U`fpNAgB+K&fF46 zD;R`;t~gumCQ@+AZ<3D3xR3HBFvQjG%1A=}6~46@Zrv5>*;tT666iuI5m?(rn*)FT z#NqO>Zry}Suz=Gt5<F+t>FG3>un3SJ)+<~fD zyX1AqvAR(=4eNaUH<`3!&S5xg9My?ovOgr`?8R-trmn||PK+ucoSz9m-C^i}Q~2vh zn*26Mo-Xy+EAZD_7qivGRAg1df*RHLd)$oCwLGfpa-FX9hN$XQTD5i_dVW%0zToDe zm*Z*G54HndD;&iYd4~&d;0Wr}+aT&_F3vm9%MiDks`=~E6}l`>rHA&!G~WHx8Q+2NOOd8{|(B4K;}-{a5j~clo{+i8MYjv`7%%T z7Q#Wx_BY_+(my~P00OW$l_9uPCK-|xbcPBMy}A)ZH4AubixIz4^$Dh_Hg#nB&e1B3 zrx^yvD^eipWCScpj%B5lG1S(Yn@po)`XUqyGj`Zr66dp#xTB*~Vx*FjaX(z#C6RRc zoL;l0oXH3I-1(L9<-{cI7r^&m>efp!Buq)`?mM!D>@P2$;=B8<04q+?6o5hw0171H zY_`1i-fRVry4fnOF!vh^)3w-(2OC^lVJ|wZuvuWh;aOp2*GDBS+yMq8ZuHEw2l^Qd zo{&_6JPgqU>A%6`T2cD*qm?e)sw)jj_KTiDnIfhX8Kv2JYn4-`Achka9(uzUUhlu! zox)1HZdJ!_ncR+yS2?wQ?;F3r?|wrq^L@>&LvsL3CC?9_C0t<`b*RACX=!z5eWuzU z``reG42_d;Wr}AeGnQZ|Ehd9deHRqyt_20Cvpa~eea~%PfUQo`L`co4kKE#M+SwS6 zDTHczHH{8WJ#|v`IH$Uc^h}i5kB%qi4IU$BP9PzPR7fg=4AX6zYBsc~!!-1V2iNf( z&ARcvnzgLGw|LP>H@`VQ9eeW@T|=C?qtX}+Rgi#Hb8ZZ|F9Kz3tOLt6z{1R>+2yWH z!8U_|3&PSUcDL}V!MlQe(^?CIKXgqpzR>ZHouLI>#9cLxTQU;Wh`oW0Zg^>=RVTCl zt09MUVV2#P$s3M-P8g;@ruzEeL~bvjPFwRFO21NZsq+NbatPhZ{FN#C6y)38 z&F?7#FusHWNLq$iAMcPem}&cvn64GDFy|T%LjA>`$7n{sK*76Ibz11(3^FBe1LaK% z=fvlUdN^zs93`ikkN6VXg+$!%&itqu&CI$^Y1@~@he}oENXGtht8LDbQArz)`g`zVh?fEEk~m*F4m-swXQIbNtBTCxXnMw z5iztwr9+b|*MjTHd2`nCgixQ}u-_2rm}&?Kh*-r{r3gC7xCVFL_@;}wW%h_Aq`7X? zTMA7d_B0xrr9z}9f*}`Q*Mr6)um5uCeV6?!tI}->#7?OyviRD0JEhdMOF4@;^7I(8 zROWt8+v{Jra7b5{t870-a%Z^%Z$#LdN@Ly=QTu&-d5;#NxTf6uIHMwbahI)BiO3?UqIg8A zL%Z^~ee?diA;r+*ePo8ZWb3`s8a$;DBSwC&>gavQ?)$wR2Jx+^O41Fs2K3XMTS+c= zt1>5O2z*_BZ=E@%RowI~6dX+A;6|-L_6-j!WIE58Bh!w#w9E>jq!cX-MfNE zgx|B`wd&77KiwU!eC6!&nrEb-^)XjS$4yyMVjo@v@26}>3<+O|sRWy`C%?&0%^Ank zwfb*f+q8lJWKe|D7W_b2E+vtAQh=?I=(xmNrFmvhUFgDmI8Oo;3m}C8tm|*ml&CX) z^;#=ZMJ-%yahBFfcbmWZ;AB09Mx&?@ASERh#F+Z8fp8~QQ%7PK^JMG;(p>X;>}?)K zmW}i9ww`y}`OfXf#)LBL*5=!D`?J9a=igqPzJ--VVQ<86vC)OmJKz)TX7R}p7iUXs zNi1;)Jd`w)2I3Egbx%PR7Vi&snLW3O(G^NV6%;}V)h^WWaW`!J#ettfvRF>=vv9hdJza@%_v5i4#WG*t3 zRv&G4o;&WhK1=@de-93HMFIfUq2k<%rB%0*Q(9fd?Ro>{*qslS{U!sup}G3yP8&y$ zR1rT*lvU7*As&m^&k~o)V`Y5b?x!caw8#hT!5*@`s3I6B_$<;$WE$L|@p(2KuXL%m zz9oJZ&Zz1f1#wRG%e*oTim3W+e*2Ikk7WkFeGuNuZ`oV?PV)5vk0A`1Ao8Q)abj?4 z_B-wzX(8FO+<_$DP&oh~RV|Tb;!m@3D#jnFiW)Pfx1oL0)D_D?%{pCQNJGeM z2*zoDwQ+WAp{ZZM+UmXQdt+0}e9Sf=`e$>l($_vl@4ro6V(p?W%U{>mM(yhRq&_&g zI9xq;IbZ4%IHaFc6-NjRHrrdEL}wpy0YDB!inmjI6j+F27qegvOVVf77f;8??rP!J z-(^qJ1cLDhn2PtlqZAONH`yZ}_j2SJkSQIM*NRA+#)A{u*lcOpc@>%R#%$mi=4}v~ znF__}17+%dUBOh8StrORllCdz#)_;&dWE#*!SXxGyvcv+`!pZW+Nkn?lU|b?UFkO_ z_hdGx1GxGgRv7V7b7&a%ilw$a22tF^*2YCEkcoVDPa+mP75mb73~C1Rk;+7|Ve&sV zp1KwIGlsbg@qFD9VGHM)CMe_LH#hT?pW|SxJM0onX-kteewt!ckzSlr4{QsLRvQfc z)YsFIWqjXz=BJNlX|x5tW;i8hyZNmQVwA(g;KL-6-=VcFJ}b94G3V`N7;H!1w*dfo z4`oi0xl>f>ov+q+RZYj;JN9-9FGx{{cE_fyvBo;9>BkuT3vNmtYxXk9{vNJn>3>nC zfADe=DovG4cKT_d)n&Nt(y8)?q3y#2UDAhgU6nAR(an+1@089sVzU^$OXc15X(@`# zDox=;!xm7Klz4JR4$x=Yo*9kUh*=KO51weSpy9dKz2z^G(l4=pE&pfL>p#~vj!s(= z$NaxiaH-Q}*xZTWAAD8HmnRhjFADA{1V8|Qq?JG9iS0LeZ;mq@xxffEN@om5MVSzp zb&mg14u$HFd427em>6)>(R5D6NbOnCnhnPAiG!qZYEI;3J%>zj3<;kOIRrvY867^c z{2bZ&yIHG^KPK`eJvW|WWJ!DJhu4+U8k*T~3)hH%cJrC-wC;k@(O1zpjksJ;=?5Zx zQsad(XNKnj?<@dBbOKgEZ*a4Z`b(@FXC!I;PLNbS6V+psjIf66kWm7^4x8C+k{=|! z%cFhb#A3a|C|BM`LRu9LcGBU1XCAd%H~enlgFPCqAbD$#XGeaEZ8bIhQ0^TpcfDlw zRt#VMGyK=Hgc8AG_Q&LjwY#QamR(A6ijL`hz z1X|qfarBCNRiO`di`MGjcf3rQVrq-VcwDO-nBJ~!jO)LxdVMH_qOvrY)o>Jh_gTSFSvf53wybW&%=OXU_|jPK$bm2_MaG=%*zB33^cMi5)c= zpTsX67}m~{UdxhaEiGL<%fPzE4C4Z$Vx;0L63P-WyjP7CFGM*i^#BHE#8;%}|3J>W z`@QU2vdl6))kGv+BN(0ryRYF+Y0wu3#$tJ)+td`i_24KJF1|;n5NF}DSDuBn9wUvC zb*<=a!$+^E@rrH7X+T;e21Pspb&4MOoN3C@0y+P+zy60LDRSJD!W6#Fa@~lK0VlyI z%Y0RG$p_`z-D&PAe*p{t7O%J*b7w$>aM31w{x6Gu8aQ!$mb6mPS~}Y}8hsu8R&9`V z@}7`9@f7lPIW1oWRgH}k`sdb1cT3dfeqEE&fzSl=!z|fkqQJ@8G27$}F??)&WkvAO zrgDW*_3bB32s7IXt>Du=|IjB}7An!~D%QkV9Is%_C1p`x?opehb?0-UsVNojRmWoy z^%LWo900)5|ApiLYZZKYD(Yph@EUKZnXOqo&0$d+aLQ3;BX?G@sm^3Np@$?A|Ez$A z+X|{0xt2&K5=BEN>4sN+k0*O(RR zYZlcIR}RBmOuK3E))o9bQ#%a90S!%8y~Zo7nZC9+oh@-e5&xLkIjK`V^BbJAHFX|= z(emsIa-TB#&8W#1-{$haI;_5@@>hzF9(hXJ+z2_)(yF=a3Z$S2)r#-tLBvIM3OP`A z1~L%wZ+>78Df9s0&yCr4_`H*Ec^q|aaq~{Ta`8oD&(8qK@LtgVgBuSj3rEawHm$@!nOC_ z?77s)GD4T&+uR$<5D;Z+OG5e9i=J4}*?&ablyo<%0D+AFS(ZPlHs?U)?J+L}r*R&#-gQpmYq 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�Z98VT<>oUk8f}zRnv>IJ*FY6tH*EB(lTD_< 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%0DY&SAR;bUh>6{N!U+C>q*%B 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

      _X^{1!@$~>mI$B%n@a+ZZR~EPocqb7 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

      Gr0Yv#x5JZ8Nvzs%iQCbQ zByY-3U+}E)E6{V|{rr>Y|A;<#!3-hiyiG|;ufApx#!%LBXSs6RVKI)Ysyom#TquCl zupe0_WiONhk9*@+a)n($aH-_2W7Yi6HR6tg*d_PUU$qY{E3$-K8tLfsfyRU8orT~DOcV9N`OB?;NdBCOU zOvdrgxa5?FOVJ0~cDZ#oG2LsldOVQZ^w%I(q#q%(BYoZr_xj7@b3K5YkVaTln#nA^ zTMpJ~H2*saf#tiFk|drR>9eXI`WPsc5XF=;^L)wi#kbd_&|BPu6qhK~Y7cOBObAxP z<5}UrsbFo$;4P%OiERh;uahonQ)dI>K>$$p%^bnBuPOD>8o5Kzna^6Qnk12=Wvd4I z%T57yD2wlV2G0^;Yrs%aLxpJvu8XkZPcjCT+@|nO2$zpvpeq+QSuw5?mNMo>OCnj{ z6}f!4HsnDw#zg@s;+b&c(V@}(DTjpbvV0JwpY$0yC?PUWkebxGKysM2_o>c?jdRdfN0gwZ`2{`B!Vh@77PljIN2;5t&AQ<|g0Vn@| z5+49WD{DjbXz7DAOj0jVMt|Jz+0Jrh>(hel*JSrO0suS!kE)=?!VX?dp&wH!zNAroIjb~JSMcp zTe7YTh9|IuvT9`spc&)hoKXQm_LFq<>JZM^B_@vK9TF`Cnc#^vSparrLTxg0nv6)H1BZtKSZ3xOZ2}gAL@W;Uf#ryv zO@_g$>+9jTcnA>yD7aC4&+7I6b*j#e_{0NiKcC8ediW9jac zhFx-(T)JT?>F(}WIwh9wZk6s1X_W>6l@t+uf4HA>-f!IdKRjp7%$a#+bWBrGfQfuY zrQX(SxYn#%+&CX!t|$9)MZ%y+^(y7M(QkLsMwJrV1Qx{8iKtvXQ9nOZzIky* ziCBZvbx9g0lP0S9cyx*!)%}x2#VqQ~X3ahhJ-ZCjU(1{ulk~@MtVomR8TnkgWZ;I0yA6PS#3Ne2jZ|ny5Dh2Y<}ZpeSh6O0TW{vI4>6;^GB+xJV|T6 zu7UH2S2!c$3rk4NPAC+C0>jHJ%Fk0mpA`N+XmU#)2I9QIi%Lt`Dc`Crx4S0gsdU#j z&o-_yYl9RXZG>^1W3lIfhmlNEDXdeg?3y@BH9Gq!8BAl)sWKQi03P(mSlM6&|zHS@@r^9^M7526p(&xCsD@-raYWs=vd-Jy))hlWx z8$EV3(aiz%@sZ_l{PGn;IF6g7c%k4@h?Css5P2`@ibWm5*|B!buKX~x4ck6&_WKT0 zEC2u-^d-QL9xWngG~*|;PqYJ8f6_4G49vq~jb&b)mPuwuFfxNvgdP0>)q5ReE7wU8 z=d+d<1*c(g?MmvH5%O$Gk6IHZ1!ro!ephqqS5>3=i~~*@W2&i1a_k8bbnAG+T)&`j z5`!6CrA&kum(JQ+b22$@-B8|^u=|;2yIXGNPPwk!1OBgy6$S9`xg8w^5L0Qrdw!yI zP>4t4Ei*j>d8zbPYh4^sYrCesWlKay2LMnc!qWhDlC4b8CWUw4p#?u`95E*yi?QWX z)b=ewViF$-&KcM;N_}=JM@Y+S4kS@EwLN0wN)pi-vpMMOrpNV-H%gi3pJC} zUff9f4D?y0(4cZ4=codDQc$o1&pN$4I>b9pM8(I6ms8F~om03AXy;a5Ou~G&URViY z3OAc)^gN=~#~?sP06>W0DZJSy2)GM-Qa*=Zz{ zat9YdFq*<9L6^iSw+&@eQuZY7r$V(nX*nUMN>wUT%33Mz_WF67>5dW}Lu}W3 zVSzK`BtWntffFg6yhubq0+VxO6X!F*9^9Ap`AgcKFp9upWbkxUbW)bl*T4D z7Il++;C^+OD``p;{wl2Tt7b z3Z7U_Vp>VaHt^|2OT*o;0_&}jIPZo%VY!ie3+K^M1MksWm?eFXuE;U;CiZ~yGyg#{ zja$AbW+8l~Fs;i`!?cR_RJCBrwD61+5!5^(7l?gP(vY(2O86he8e?O>2RRq^%5dH3 z7nnYWhQ9NxL9Qps3-aMTP)hf`ro4c?$M04Ym?cnSqzuHs#YVf5A z@x&eOMe*XJ!_wC_a@5YPvcvTt&t!?d#;&DWj`dj`AI%tMT^Waq*V)db3fPQ={?d)( zqEyiQwa#@~$EH-1Imj|^9Q)7AIwtBTldADEf*MY(T-syLkht#y$tjxvc}jFt0N8<0 zoN3N;h2XViN85xOoV6ZKENU~oMFg9oc42oGH!IF&x?m)Gwqx8cma7P}pPE`bXMXfK z6HDgSo2p!_xGrk!4~JXb~L?KG`h{Lblj-qVdKw6zr%o4X8+BTtMkD=uktjYYUl zUzPXMPG{RrUd5MBcEhi>n2}0bUnlo+AudJY4M2^*{9sv=ArS_*F zxC3H`q^2~D7HW_3ZC8}nMos&Awxw*zbT=<^p+4pq>)P({5G;Zve;Rv51;)WpF9A(H z@xc|W#vu~jW``AVZwyF^O7%l$(*H*d&VRmbnyq*A@I*#ZHBB9@!DdFAiy@MX$nkq7@o~rqm)y0<6{kx>P{@y?B&hpx9@`2Lv zs%vY}Sr>0rV3&jB74Iz4!&__+iM7R67I6jWU9>JE&G5(%E)iWGf1pW~*c3G-J(9IV zS=!)ixP{q7$i_~{-M!wL1cQ?cqtmIEiYyh)?o|;8Vj1Tz1t&>Qv;?=m=G~dVqyw-5 zP*~@d0S0l5IPI|^e=p26XoE`aZH0`rG++IRuPKyLW7d6pu7#tm-O4B{l)rK&{#M!S zSlT^rUxTvcn3QCqP!R4aX?tIuPxbx8y4F@uGdI7qRENKhW@gUr$-ZW=v+(xv<=?dt z-*oA7x3x(BNTEPsv}0R;d}GO6rNG_RcSz<>gD z4=;^`)Un?UM{Sugv8n|`CIa*+(Y+hcU+o3Xfi6HOS|{=NBmJ;o*pb|&HBCqa{~ZTv(lzZ~Tndy-)uH+YyLlav@U zpVE`32P@fryEopqF<|<;a z)j|4RJDI%KXCI645qn+Ma<~2BT8hYtev#rW-p@DQC;h&T)i#;hGAL!6`jk;5?z>1y zv>7;KTwr5+R{j}@j+`9rf1fFgx7#~EQT>>Xx056rX8|=R_f>11p8>VHb3Cwe0+Lh! z01#WhLGtMy4oO_#XWhUNNEa0J0l4Xr2Mm5gAldIAdn8cGB1{Nlo^lq zZQ6~iqTtw~r!T0*D?ArC#q8@)a!Zr%`OSc(V#dyp#`{Cy=S8ns&N1{1CUP+CHP2uA?S7q$Ii%sI?VGrvaZc*#l4Z}A zL#_{l2sb`|cP&&zdDWH(K#f~q+2W}S8EbA$a<1){Pc}FL$RJNvKQbO=b=Cw_3*_5p zgTEDSwI;!>mG@>txlywL0CdvRSCmyE+;6n8^~&lzmVfr<2r`)s_o)JWdPgaAKYiR* zh`t%A+{`}4F&e^_f=#6xt}%$cufta|S}5AmJ5mBd4ISxE4o;byk}7=2AS$jit42_@ zcbMi5ON4ySP%UAfDuucxy_m8m71%m=;jBCfDm(9@xi%H?0N%!_zh5SOwnCJDAR?cNmzlCKaFn|OOxaLuH**)kkH z(8nIE_Vd*(Gm90FCCeX*j}`@=CH1Q;mHAzp5vgLeFvg1ojwBCNlgpwzo!9fGLLbE% z>*h!B4gVpQeYc(b!r9GJ|8h+6m>4jFdW38By@USPhm>fQU+G5IID-`JFm@c+j8^8E zjaoa@9Fy!Bzr!U~v{N>l_B)#cGfT|P<(ldNAM*j&+Fv|kR!DanB8>F~wsyFNeBk$^ zY%nd=4b4|f=S<$r@vh=o?lThElB2_4jJN_C#0|`zJI703iSevW>yIVUy2Cq8N?M72H|g!MFXe*fIaRqB_W^ zMZ$zoaU0emA`~uqxe+u}ry`e;GD#$i$IY8lj-SAAJpi^nXtQLW?Q0iR!{0Bl&;|7= z#?Zf*5p*LFh(zAa5S*;wn9lYK>FUQZBFXW5{i?DkcC@d=a}sB6RAt6S40CA;N@tQ1 zPk!yZCG)f%RFY*A07d|c4#^T*dh~5gYLI+19UHylnj1Vz?8Q5nObnmCf6aF(jO2yv;%g$$!%EH?*`*Yn(;WT+L z&ncUaly8Gu@ZD7WMDDj|LW4pnv<7&huarfaNEe>!X|TVNwp?eM*v^V-SF_a2mi^ad z%tEK#IqN|AXR|=AY|z53Os)l+h`%Vwg@7@ z2Rd;%l(%0bFRk*4uqeFC1U|h5&T0r{uKKBhoxV{NUd_F#7Y|(dxsz;aAJ}{_gf{x? z6Pd!fYQAr~Y4YC3Ew*f0iHh0)Ek~S$XmciE-5gRiYCdi|SBWACGn4GAubN`n7X?x} z)CrtJc3|oj;E6$tVg3*mHrlKxpHN`}V3eQGC+oFr0c<1XDlAtJ zuQbBCXCA+y{6pnsN$a|0!R_97r=v-=+v#+AYXTQ}msQP0UEDKr3jQ&dCnqvW-}Ok4 zWssxQy=QHO7XctdMQ2wN7EVrw6u9~l zL~Scx@=GWlufpc6Yv7t8LRwfe%348*8P6$D*>;xeZV-Y?A(I$I_$N|XrYCgrWBCsp z47`d($UQKR`7+B##A2%27EhTnDu%HFt`nTWscscu6Q2~a<&|)n?o5Xj#H`?$u0}HT z`al6djN|hLfq&IySzmtWYnJ-V!MAx$))N=M%aqpK+#|%^GFc*Cfvp!J`V zD|Og|B#IHH&ePPh0WFB}<9*eT8#9VR*PX-E!)OZV5$Y(4l&^%5>?&FHZP;cf-0y6Q z(4!}rqfZet`nak92QHnWSx8O}1?;TIKK9|25?_8!qY{|`45yBsNM*>zaHd_$G?4;{ z7*piu+6ZkknRv73rQChBO6z0Kh=`fk`C=vxy0y(9})uBJ?^rv)VKc5|GmN zaeaQ}v3*x;lj}Sj>Ws~|&b?;5Hy!AWpA((49|rM$RfX-&v!jm4#L}U>f7gidi{xb= z#NDw^RnR#kPyqH$S|#vW_x{@BSjU^M`luelGp@;+IFyvf|N6)Tfsc9)VWYPf?hKY6 zYMAo2PtN4{2tYwMbK!%wi8XJTvdHECfhAnXoJNkE(()oy9eoQZy>)r_`>FtKLhQR+stC=$R*(F@R(mxi zPqx9w`*L@0ui3HXDA5B^y@zqw3G7IX`X{D|@@j2_k3T!LH=o*TEgkW&r%|KmMgRa& zIKC3uCHmNw7JhQhmbV4e?Zz^$3MO=s?bg%vj`V`%EOM*>I%*WDNB4XHe4J(a`??+H zG7i_uZohnj+?=!q|x?rhu-0{bePWAw7fRQ4+})TR_%%_{GYuPXnCbL zQv84b7cND4@`2N9nDs70foj@$Ege<+WM0X_y^WT$%=6>_#qi2;+FiaB`Iy#3(Mp4Z5<0oNLHBdg@7+dqooX7OeD|$n zcHpX^x5gNi7=S{E0<`^@qApjNf@R!4+F_zP#^zOt^mdJS!_Qa5@~h5qj6U4jk+B3b zqnb}3vE94s{hQ3zT9A-!N#8q*#&!MkE7>n|d|wU(+(e8EVUFb{dWRG&vex!}8fq)j zybS()!Hdj=^B0k?flku0tA7nE7ZK?6Ae>@sYqC%ry8;YaT3=VCy z!KavD+QSa74sY}f&Z&fDf05a1++Br>BIit4RU6qIKVxi6=~@5Qlezh1G*Yp))ThNI z=?eZi`*owD{WY6!0{>tAPsoDGr*G{=6h8-bfX@nFgNs%P3Dq$a{6w;ey0^%(pdUSB zHq4m6niJ|vw2#uojz`@Pi`L3Ul2ckN+pAhYVhJ`HR1&+qT(_>rSvPGDZ6FT=gmU(U zzqvnSPp5Wf`!3X-)VsrJk$dAU{8XJIk3kRR%63q%gpa>_&8#LS84;bU7;u-(PsKgt zj#Kwi!e~M6`5YAr`O=z_4hxUkVr=5VqdM2d|6M*LJM5mv=~QH04m8OE^P#+zo@$L7 zih6C=K9g0`s6adbfQVC*gC&`e}JhN z@+T>*Bjcx|ldeGrx<*F*9Z}KFqx*W1BVOF^pJ8>4Sw>5n8Qv!BQo@SV=oAMrcH=#Ca{VF2s={ zM4LP?vy{onMG&U$5SH?Ozd#3)*0QpXrrNIXvF_^KNp500ign8A2tX`)L{_$5V*5dn zbHQI=aj)h#O%St?m)yjOn zC3gTqU|HeeJEW6i{dEGfO3dJVUTt+e$0#NxKR4?U8)b9m=2aSJmZN-x0^FPgySF_7 zTugVCD`MDhbzap!RntDfhPx5s`qItf|LFVYn=xPs0AMuH{tEe7XOF+hP&b#tQ0~oy z$5d!e+^nPwrZ*;dlbUNyS}ry$f6yREC;qQJG~q2Y=NUvE!!{ ziq5;lURPV3-hS+zvImmgts};l)WJJK+2`Z-&Ax=KqQ5`6`r^;};$Xc6N$J9E&Yy86 zoOW^>vb}!Cvt}JMh-BO2Z}QgtlC`qZRM7g*{;!9#+4Q-}$26XAg|fgf=um-gO_hHX znE$Hwu1Jt<0)SB%Z<9lXN_yQ!SI{{bNrsRicYm(iuM)n>nYd;0bJzb@C+c}n4YbLt zvS*3TP64yLgPoI;U22!?`jA&OBRdAecqDbHd%5m=CedXlYynsB$=Tr= zy?K18{PvmGYl}bETy>vv{Hl}cdz_tW^?wnfVtqfeIQbixdR@Kqk6||aJIWXU00tj3 zcfC&fOX?4FlBuz+r@(CBO0ouoV0SYRmj8n5gHMl59JokE-fk^JSJv4oduY}7HQsLx zq>yisZ>I9*2=k|SF!8|kcvmWyZJwEzJMYG-s=<$CEuPH|uJh`-SIzNa9E2Sw25Az@ z9Jz*c5%2v>KvZO`UX1dJ7WYqbrajMHYE^r|w0kksx)JgiJ#189(VaQI-SwPk^eLMp zjl)OUzlkZ?-7Lq6CtlzR=>^6PH!wF3uwo}ed!~!y7vg}-T!a-R$#4I@u;aMoq^_SO zd1s^vsC|7_d^_-ga8ifxdxJNejnMQA5CH(7a6#s2kCCDw7jedY#aPgl%J?6CmtCgiF8ophnwuhRBr|;i4K4AkL4Hz{ZoNu*V1rX}-~s>u zl_|cMT<=_NrNUCxZ$xja8DoITVJ%2@X45PYWkm`sX}R~+Cti6}i@g~R`J`v0vj4d0gKICkc2ONR{@&;u7XhBb5c zn5@ZEZ~}$2AKEX@eZ}84c5SHi1?ba!v%i{|z%!nq7rV5H-%MEG$y@fkpy;T6g${bP-zw zfJqFAJDYjoTlz>IklQf*&t6p5nyvr}td=mUA1rXQo4}=Xp|c&LCxk zQ$@VQ)xc=Opn=^P+|mUyJx$?Ls(>o48g~)PagkP*G5|UNTl*`sr2bU^h*BjT{};bV z`Nk+0Vp(8tJl^})Sxr*`u9>mmZKICW(%(s;Ye6?bJ;Ri|zldh0g-X~d#F9;#lwsGU zQt)0K<1^L*wVH0yI`X$wPntE)(FgrFKRoCz?hnr#Z&4MD ze5T7$%oRU|E|h>`$|cHg9+T^Ge9e{FsVLdN96xx4H?z$1we8k*<)`y=91coNzw`MM zcbClQyr?Dr{3ieZtA`lNUC6mAbIRO6k{~b)Y9H>YhWs=`-EwVqR~U$?1YpG0KCt2^ zdWu=7bDtwHt}u}3!kQi}rN9SOsWPcqrMkYJn!*3$&hoDZZ4?XYT_}+DL9D z>JfJeo|ME^cZJ8vZ{0tkUZ+ebW?zNy*yQUrW%}34uvV!`PNAk zLG1gQLYb6z-Nw?fc&Iq({vsFsnK}X7vVtlqRXPrOZ--iVD!XQy=;Fp%s{eg=@Erao z^6xiNmUw^a@TDQ~cY9yZQv=@X3>)Ed`PBK+30D%v4S4qogOC zba$6U4ZEPUYIAokB(EAhTzL4YmrZJSY9aoX`}G%$bBXUI9+ni8wWS3-kM4dr+>?9R z+cQz>|Fr$|dhK!_%0v?12I3UPYP>6tDG|}^S5Bp{?8s)7x%Zqi{+Pd^+@?{XBV(}y zJ;$W-;Y+J34NOPk5D7fq{b9z6K8;L30bl_D80+Qo`2ZC46Vood$>^L!n5QIS>>h>q zC@DicZiGBgpdxf>NNakXt1O};KaQcsAwS8nra9vy;~2V+gf#s`Sv1GNf@+6$8ieQx zv(dgU!mbYMqQfZ9mt^>bjSUpDIj$kA)niL135;9AQa*;%=#|Yu@XucpbYN;e@W-asaOk5sN-1gY^F;3 z#HejI!Ul-Kroj^v0&BmsHbzc1(H`>8peBQuh4HvTh03(U|O+FSo3RcuKn5_?_ zM?-;{t!7`*E^Q;O5V(J(w-mvITo_^SFa3S&HM$tXenPgK`uJ6acG-cTVd8& z5t>y`hfsqb47WR#2U&Bs%10M-l0hjF>uIv2?Gnux<0Z`-1xYap_#;@1vkjfvIxR2$ zY}`^^!>mdCqy^F)ZaC+n1~E{OPBQo_D=V1qyii*kcJYu`tH0&MJ=dsN|4XT=YoNi6 z!wexmOBCco?UVt{H_K$RV4FrCM zPW)$mMFpSn%gDVP!BM!WlGyMywr>Z&TPz*mP_C&_mEmlI<&a*p_ejhP6E2&yFaqTv z5OZS53QCXi4I;~DlOwu^sWbAVV~{Mb+5$hAiZ{;=vf=39y}KeRoGCGwb=NW{r{|T- zox7?&xV)d%v+i=6@{n4j>fUkcr%H<}K~#<@fL zvixh1pK$D2ubm!|fq*&bi7y5WdM$F%1S&I&s$lX$BKP2UhdLW2vC0o#tvK+;UrA}A zXG%90-klpc zCK?)YN~3S(tPS!Eck8e0G-8)Oe$~o-@vh=hxjsqLJorWorZUuTWv#q1)ac97le`WY z@dn^A0F9NbZw5dtjK=8qMcHogT7YoO4v= zEnJ|VPYt9SsFKVQ&%7*F)H=>QjzgFvNr2e1IA1C!6FcQ4007+ld2&0EuV&?mDoR&^ z5~9#WgTfqw{mv|=B?1Z8jbiyEX%F|x3UM*+U^j(aT}Ex6Cwj-Vs42rN^>R`|a-LY@ zSy?$3VmduvV!a}TW8W;*q=RSl>CJ-1I__0=^Pe$xiX-FGAfu|yU+-51vT#h%g$=A- zcauXy8!f{w{7Pjdg`Pomm4?})?%~{08?!}Uf1(Cv{D;f2I#@swL`PB^XB%aKg;0zF zU$xeaBu9~J%Daj)?j!VUfVS=$vi7)Ad{*ChW-m~vhGD(5+`I*~`ijoSTQvM+3haWR zeOjZ6Plh(S`rh7xdbsa=yGGTWZ-*gZ8p=jc9cqH_#E~(c*ONvXxv7x7JJ|BpBR+Ao zkVf{>@rBO)Ii@`5sk3Si9R*fJn2J~wHM#V%V?_9=(1Y{S{n4t)%#Gw(w1JmxCfKR+~nHn^f_9dn7qhoL0#oP$n0X` zVT$7>_e^G9ywsykQ37;Yr(lR~|n?8cf_3_M@Yrb`x= z^MlWJ`c(y!D}+={5(8tE^&1>#Yk=$Z$y3e72_9+KHDh7FZ)CgrL9?%4jzOnoDmG>X zi;J$hd%GPyL_otmNk#tBs2XUvX$qphTM*Vi12aTvcL%= z0DRW%v6Tkj9nuba<7}tN2RW9W7X!F9+di}L7AoPbUSF<9vZTKxaMAurR9UEb<#ajg zkL>YNZJB*W*QzZ4)ptTV8-_zTu>tE>u3u21G{eAO#jbfbLi!mI5IbKPnbqUP9kvR? zbz5s%ZL;vZ2_#dHf_U00l(+m-YsBpNVb0+CF{?-MMPa}!t z`HW9me>zybbxFjj%v><8bL0`W4OUvbXR58%l;|F>qO=*0yqr#;fzifN5qF)Ys%0RUith16l4pYS!e zLKSr=TUi*kg7#eZVAZD0he`+;d^r6N-BGiOV(eF;O!)M*zx)w&9aWrKe9sPL%*u>@lGxqk zc4Qpzkj$$ip{vf6gAn4RR_~+tlT|BHd>NEDBCsiD7BbDbh&tjo@%jO*Gf-=I|HRor zo4_~%t0+I$DdFsml9WN3V;d8tSCh}nAX$A<{kf0|dRnb0C<&|)CwjO6l)`-E8g$d6 zt@qOCd5232_>2%o=0YjZSCK-s3uuu2{56wN=!g@jMof?ss)3fax6a;b!_^&=N!y`U zTpUgM8DCGkj~|kCkR;VW!_%^sE)rkU3f_c73z>BFS$0YnxVQW{{MOpOg>d(3DOeDZ zz#BKx%5lVY#@pm-L*4#GmV7{yG7vx^Jt7~fc2^sH7@6bk zl{_6{ZwM-X(&2$Q^z*0hGzXK=yjy2F%Ac8jdY<7EIiS3Q_6;tYLEdwQ+JVP)%Ah0G?cORIbJccrU43Zsmsb`i_A z8L7;~kI#KRd|N{3BL_pBdM#zXjqm#p)hN$@Z+!a^a_+0*=6qGZZpVlu)o-5R5r|V8 zXd~866D?57Ja5z7YSP}Uj_3Is{x<0{H|+ati(CjfIBjvuh&_vhq5W-(mEv+iZbSrG zfB*K`|Mt7k3+(qG=b};BS2Tq(Qxn7`mEko7;);Bo%?Wn}64fKT+6J{`ArDg*`p|xzfMP7 zcad}a?cf&K)bV(uwSs*l*l*75~!h@XqD2C ztf#1^Ri?ABn3}1}sVl84rc4t(tA6tg`V&<)DfJ8S1_PC9Nj?cZj4&P;O)PDaJb+CE#BZaXr<`S<8c=PReGeO-02kl{{ENb~-#%w1!p#(7V9{860y!aHj|fl9&Zd&| zv34?lCxtoY-Y8^nX|QL+(3-!LW1);K6X<7wEmgXGY4lExwJ38M+g0P8AiS@f4QuX8 zO$P^sH_g|C`dV`vZz66e(-|!r2yOSTq^7poI!|j?II}2W)zy=>3v79xt@D4d;CcF! zN2Xrqc>OKzQC}BO8^cd&*9tF-P~9Y7@b( z{^?rYZ%&6vAol0R@7OGa#{fnEKpsQE?+pqNPDM}8-0OfLaD(QJTq4BY&uq8797(DW zQl=G{voU_Up}G7Z^JOs0vjAk>2^}$53EC*G70#S-s~eo3nt_sldQ_x05EtLA)>&O) z+{DS3d7{gH%wJ0#vmlMa-wF;*AU^T)#d;-XQN^JA&0vlRAV58nx8kXnD>1@1e! zt>y<8dQOT`SNasBEgq95EZHOpl2R8BuZ=<1j|XpaT1#l(xS;)cQ%@-EnKI$+Sy6oNWD?^Zt{C=f+cRAlRfI@Qkg9yMTLO1G=Sr_H|Fpg%>pOG7||%f_(#cDfo~ zYn$g)s9@wpHWYK&N#p&ch$2Iy%P9P zZQ<+SNiSRfzUz$uCOd6V6aaw5d+sq}MfuEMQd;2jz+~^@*%+`rVxC9#cT~yC6_PZ) z5dAzUKK>ANBkT)ez0D6{+H(1GP8a(Y1>Bc%fI8odjQx03UJypyqIB4No z?yr(Wo!P~Onj&hpI_i&zS|&bAMOE41JvB^TYyRqlV2E=LWSC} z`idOJF=2a7nU_tYp{!t=2Hfak#kBFuoGLEXUsY2O@CqhB#W0p z-#@oXY0ld8MW3HP4ojz!U@#r^3wSD=IR_r{1=o%MGtq{T|O87kvX?h zC<{!1;#c~r6^M_3gxt;U3M4Rb001oLPbBu;yn%paXG05@YErRu7!r9lEG~*RM{Dy6 zikIQ~A#H0MR@z_*7K)P&HjB1L$8X)X&CS+_-*{8t7iA~XekXXzkW?EHi7A6P<=}8i zZR;6VB;Qv}aa)a(0KD$=-(V zesBEScgctjz+m1xD?3!AB#dWo$$Z>-sOLWNHc${0L9)49TPDQJv2timfHPXUJ5JsD zDPSQ39BUd}A<5Q0G=6*)A{ks2tg4FtBAn;lEm@j`DH|W-rFB)3->9@)<=>Q7I<5LZAnlg2<373MtX;uOR6n7 zM}TxrpIN;+@yqfSWa;n;39ITk=JJPM*j1asz&#QYV5?6Fypgq-P&Cu4c~%H6wtBbv zB~n~qO!Q;B!5H&`b}1+7_Ic^ zm2*gs=A}3;21EEokLjCV;toL?QTo+^SpzNq_S73RO(a0UHN+YN6z0n+e17m|r`eZ6p%oDq(iHc%Vdh5||BiyG6xjJKaxKqm;I9a2K-EBA(d(NlNlHpM zdX3TdZt*rVwX>(xIaQny1hHU=;`yp)PusawQ9n9Ev;8hu)Xh&2O>SXj9N(jj7X5x^ zx~_&j!ptJsNWO^+hyOeooaY@(d{Q^VleFPUf?1c!B|1?`chN-6noR?0rrgFnx-st@ z%o3@!p>59?)xPKv+1lU1n$j`hKvUo{s;r?4W-ZDa@-~)Ve$lv?@6a-5;u!PfpwEy< zB$+^wEPFNLj5}9SXH}t#Cy&7fK`we*`m*{@OMi7I=6};bc(-zZlfq=yQXxC1B z;rAx#h9PLX6^P9j3gxQeP@*}ZgsMQXg}2?7=B?t{3Ma1 zru(n|erJ)_fN+fErceL?RDD`bKn;HWk?o(bH<0#~mDaaR!F)z!nzvomKRHoy!&+5( zi#Y4V?5;pR!*xa+Z{WjEOL|RaG5DyH?IbPrr}Ll^chALFYP>V2eY-NvB9-l;kix@y zUWZ1q<0GqeR3Tc~ZuHZHx+S@I8(gDgBkzGn z8=nE6KoDLo;R|_l*uS ztM$`;(WVubTTH2AU?GoZyAE!_FKlXKvU_T12p(gBg2y#1{Zu}lt@}bVb-gfJ)VEwS z)xvJ;@~S59ZI)5fY*zcp*GxNNdSWNseDxnOEBd5v=C`}(M27e8GC^PPSrJ;V0+LV2 zZjF!sE&2)QqRt=#VP@Kt9b2?{`mMrc4`vpwOus#sf9Cq;j23SuSB)^Iysn(OAN^pI z<#hF|DMz?pG%YQE zwO&Sb@Zf6xGwYFdYSIJO#ZzWAgxv6)KUiq+FG<|F!dEk;D30Zed=g zws^RYfj9!c+^98=HTadx0^TaTUA*J@y!-~oRK45$P5OoN?b*fQlf7CG7y1=8mm)d~ z@>R;J10dlk0000+^Dpu`FW1aJwHlKAt<>NwMI z1>96?9!Dtkc&cIsviuT3w{zYU0tGKqv?e@AV)j#ZhV4CU_pd787o6)IKKlk+s`NlKZvkqj>7yb{MS}Mb4*N%b5 zJ!xjUTqKqp;uPs7+p?%2(Bce!&iew8fQ5%eVc1(>rc?VB8Cxk2f@_={5o3uH`U0gv zy_2ITkSM<_(>6#^3f&^BsDI#@48F!Wd^?K0N>Z0|tnh+Cu;M~5$RaSYN^f72DaEij zHn0ItUpEeJXoxp(ZUc2p7rlve7;|f{NYu+UnP2s3KheMAg|4^ z0001>kfSnHzOiF%y6txd(}Nk-e&GMfmBf*|n2iF(A~3>wRQ&j4%x!8ZZ)lfsci@;) znXprMO)UOwJcmmfMgu~K)O$Osr0)6k1@wSaAl4L2K+ru>UREf2O9_{Ij12Lp5DMxK zbTqbOLDUrgg1DIHYRgy=M`tf&y|thmOY={a8J9Q0p~q%eWoi*i4Dp9L09jr^=sR+c zcST!}VgRi4!DT&U%+x*1$8bMq2)k0mglb?$3r-3vN(BlRXwt8$F*>C)u|%>T)9}Y@+vGML}y|Ulf`< zydrVp81x6)N98D~_RciqTM@ABrTf`6B*K&v_%Lm%lk(9U$kRfSG_tI+@(T={AhMMT zlSU}i?i15T_)k%JQ?CQlmRsKdjKJ6$Y$~)yDQ-8LjdtBH)ay~hMKr{bz!4j)=IDIm zKL7x-YgQhtX#gc-q`1Us(Fc$6qFB;grwb;;aH%7=7u!>GUxBb#`Qs7JFUP^?!XHX3X$V~bA zkie$WW&{hKv;K+djT3d&5t4>ep#XW-<ZIYl87y%o&hivFjBOr6nQ20 zo5A?s8kDId-0E2dYA-L9MXXLH9GRb9rb-PEXPu*k9E)=Ql;11Lhq&93g;-b%NT+bY zC|hBiDi5RSWgeX}*f-pfldf}KAf}fQfXw=kaY+5oa-_oaPTG9%;kg;}Nb*(<4ytM9 z_DSqe*CKh^M%&SFw5=Mz)Yko4j7SKfU(ifS0CE5ze74%7qgU-tc9p%nHEfoCll{n~ zZNYx{?k9B4q1#f%1EwSM)asF5Ca@=k<`+uYRF0Y}vZ{sX>TexAeiORNM)wZ>gxv-Hlt795v=B1;N*6Ujv1cVym~f5BGTAAqeAJ$&561 z6fV(lUat&<_7RkPl(e^&G+WH@DEfVJ$26xQn8+H_y2(p3r#SKOo zTjs;J_I27PdD0TrFng)w`G(lfdE==xw8ap7pU+%2JcD-beIexV-u z-jP4i9ML(2{A>8{+XEnC%4YZCR0W!ZHXS7b4#s}Tcax#Tj-zb5HT+KXfW%G-UydVx z%TQ5EN!Xg_qILH`oxZiM#ed_}{WY1aC;wY4e$0r#_CKP5dHkIIRW~x@Wf@uvI0J|0 zN=^-F3LU9Wq97=fFtr9HpET}Frb8w@sR|EUiof+!HgbLd7pD1D`KGAu@dL`k=2_Tk z5q~ay9uBn~*7pM>b^gY<&NA%^O7xjE){Dxl4E^Bas-OOaTdThzx0_;OXw9(`V{Ep$ z$&-7S-FR*mWdl1+WW9jI7TXl zR$6T1_a_g4EW#PvKjBR zon6B^bK-RSCTqm*0q0SKK>}rI8&iJWa@X;adPqjr zPn0CHkb&@nSK|T#7|5LTQW@7@vq?rdkGsxRHWw<}}RZCGQH0 zO19ISIxe?-n&LUEnb@pdknObulb@&@j?C5^XJ{}SqlT66=N-hA_N5nK-%GMhvH!XM zH`ZjE=z<5Dbv^Ab0;V7(o|!S1@^Ohtd!%X^a}L!=V8*pS z`!W4|ETp%Brcnp!JqxmB`f!i+rbJ_EH2+K~Q7FRlq5 z5!Il(D1wTj)c4^>otVu5n&el=eEa78;M>@!&z{lI=pmM{`R6H57n;7(No@DI>W#GM z#=VEdHtgXvk57Ovy&OWn;jTh~QK1ynR55IddAa!hosY`!rw|@FW*#~E$IBUqe8U-i zNU7Xa_}J8^eqF1&SL+KoBSti38TWO_;$N{)RhyJpgl9YJCT=O+EX#(3wH}<@EF7IW`PK@*#AzdB$l|kpIq(HHzOu>yM}&JgV>@;U;&}1 z9S3Y|dS(eH0Ot;sQbRdE(TD8n?mtIkz^ws=_;%w}!}jdPNB0kPL#3d_27f{a!>G^s zO|li?KRK1rdN7Oh?JL@TUoM^S=V@T(Qq~FyzPOF1FtM9YN=TyjQX!o!juyon3P+ES z+j8egB%{S+F|!-`T`N;tib?2QH@i3JdQ}LEPe^2Y#@j|GW5{c84q~n6I-y+y#GG zfx`9Qi&8%y0;Lvj<17FbT7-CGK| zLIDC1blMJT!jbT~GqYk+Y#%UmT-NZ~H z4-EndBhSW&znDXEA1%!uL9U>gHK7NT^gCjqLn`X9l=t#=PbJNHjw`T4gJmbjb-zLtV%-S=d$_MXag|-ZWv&b znoi*X#ws3FHgHibk&|;!8y|-mk~4Dg!&&-^`qAXfDn`m0FVQ?Jc2EJkJDA_O`}F;) z)ya8Yc$7WRpSkl!XR~UzP@KDh6m1NQj%?3}DUPh|zf-t^VPaDV$BR7xT=1EatB6ZW zb3vTgr43t%qedj5yAg2Trz7MpY9_YFYjsl678a(#mz0Q8z6cEi;7LP2II&8G)P@3| zZ}Jf-QBf!@_i{s9k|IoV9N|g$@eFx4AQR@ejP8!~Okk?an91?8mG)&-R`7)I(1zD1 zFlY)cXI*BCbeXVxVQM)B2k5AC;Yh7-3i;~-opn?h<}Q3SPjl7^iSRaJ^^frz#@RvBS2WmMSn@9%%|NTBcl0KA9wPR}_nY?3m`fJl@m1TWQ5 ziG6ZPf`gSdoT?TC000>akaA=VNlVAhPD>b$dY!K(?c4kuaLUY8nIy(^iF0o3r9uK^ zc>BFlCVwfT^TU$!ef32~yO)`j!=v9HFJ{1y$NX6x9&N)p>z?9X0#Le^~(fA$!UqafZa9iVLUh`kYL?i!DFS1R02Q; zgsNNCY9$UIPMm>eX;ni%Bd^v(k*KF`ukT=^O)EnPc$kxW?4HSMjt|jw!X!`7Bt2vw z=k`uv5HQb+nsN*o`F`5mF-Gh4uIG*9lFS4au(9xa3Y`7muv#;hIy3C#sf+8p2~4v! z*uInzXtO^g9bGZ&MWtIyw|a{2=a~+UC>iPN9BdbD7begJBGjeO&D2F1DHb%QZ|U>U z@`!JfspTEbv3TNQv4;&4ubvG{pD)lQCDXWQ3=8$bpd`>Sb~L`$gkqP=fK-XGDTFgS zUD^;n&Q%wf$60R}_-fhWbz~) zg=S5zm%AUeErR+~I`Ui!*OvgS`TTGqP~$By$sQY^9=_zEzY&-*{@F2zKzO+oA$d5{ z12VijRG#jHHT|gj-!hv2F>;C4I|5hAVHwIKQ^J$$Agy>8*<2D7Rp_nlbKV=M1OQ;& zfXqd#oLO6Q8w#ZDKqnRGN=3u#1{3rM(|3>Ho+~EjkJBU#AgDi))>C4}18==+w`wa+ ze+vwsrOsgWQO)WsN_vr*T}}4?REJ!0Y&YX2I&#t1Gf&@0o35;a*QYXs`pcbo&}6P+ zUgXhq(vbU}D%5&6FOL&^mVMk=ITdYRPgjpwITG5m=YG}aU;#th<(RzmO1}LV`;gV& zUN4L-YIglHOM=QRL6z^&zVOs@lfyNZoK^obso-S9{P-xIR(o&eE2m3j)|@~10M<=N zByI_QiWSb@_3rCQc9Qe!OzT!dmM3Pn4^cI&5%!w6`w&M_bdZJk`fJ6A`xN#!c1OTJ}LKW+VzbR@ZUeY6o6$i(V9hrcNAmi~CMPUP_6{QNyU_d`n#|F;?pp)2AEp1p?}-?1{U!)KO; z2%8}u**Q%I(pb|G^l>I~1ZSD~VK;OG5+gb8({8xNUM=I1frrLo>{w!eimDiG?AZx?+?{If`?KjaVO9oU&mFE*7?mK7 z%s}t7#`E44NHJQ>-?p{k)v9<=@`dlW_hAj$TTp@wBW@k=^dRDR>eKu+4U}0o#X3W) zww3!GqCqU{X42sS(LukI>0+@th8D&vB-^u?;reD{eGR?^B|q4qQMl&T@rVzDSZG4m zF6!;5npdET(gvpgyG=>YYFFSw@-g+guTBI!1u@HYb>v{0Qft3Ci7w@rDuqvVj-mW0 z9jWObWc`?{jQP#v+56E*{=;%*II)ok8@bsQmo8y=iUpE=GUQ_jj| ztm2ST7c@9hUyI)Q{?N-GN>M0J7z&DTE>431!lqf_mlP1)rne-^<74w>kM=@asEm}uh(|Zw5~WC5Q_SW*8Q(GaY=@lDw#dFP%nTF z&RLX{6ci603K#$8$vR?D0TZU+WrtG)7u|I5TsR&U4am{`Ak6bW3zfles&Qgp4*@g(DWD zZc~7_YjpZy5mmnEt#*re?GnuH*`++=g=?a+v^F&NXpIpIkxzG65ciV63x7gjrL)iN z*jFfhuv%*phuA6~ovQ}&WszZ8v*n?|C2V{kf=(WjF<9H>HEgTDCh+W#8qJ|Qs&A(` z&!jM#9^DYtnKLdyf{9}(Mr*IIGFfdr!aTfsB(3Too$|Re81P3+0T}Q|hYZl;pZ_KS z|Lw$@Xtkq$A^9UqnaSGhTm__D>>*o85XaBOvKd9m4+9bdz%XhY<4<~uEQu#YZrXEw zxgt*D=U<~ATZ#ne%m^=`$Z*5jd?|f7y#G!w+@=A7+?L;euj17zJ{I0pr2&?Pn5*># z*Y*(FhDaViVJhF&-qbkKq<@c#f7x;7CD%0U9c#@5iC}!%ipM`Kc2(e6Yzd&9EudOn ziSs?RjrFH+!7!Db*-k(>xbGR^`llua!1l@#wp$~ zlpMIFu+I9PnV1+Rf|v0n>0 zF#|S&)aw@H!crX=BX9$XzdzaYM+R3p+TdUYMpNC@8?5r~;J~=8{;G;cpat(tL85cu zAKC~#VGr;x6s1Vpf+Z=p5Mcm-jN=JYbbD+6>O#ZvM!gLeR3e_s_c{&(?5YGR`jD>V zq|I7RIF%#H9Mx)6=$b(n0?+&z^z5=Yu&lES zp)e1p!1quz*w3Rd(;g+j`aZaoM6I+^2Km`K4kzTH_*D^7^b*$07xSYM8=Jp6?{H%8 z5(tfHQk!bjOr;W&87~>wluax&B@yKCS~feW3~m-py80(E20Zm-CT7iK!p!!4H#@5pbZ0MUZqS;4K4gSy@{Ws? z-u~w6>8ZEhTXBZp(^Xq!@BCPq7y_8R#Jz|&NU%(E5sA)&->Y)Ml+l;+JyL#n+`;0y zb_jL3IN3(^aVYv2_90G0LdRCIB2Mp@ZZ%K;Yk6TrE$(Kp%7TTT`&|GgS~ zZ5sA|DzlRblhXsvgXhM%WIND~+4*X`hL(KkyK|Sb{p%k@+@L2`IV)uRxQ9N?OUMZ8 zIK+i1P3Ub7=lR!qqDKVNnutu3wUZXH$*{7%ufDXCP!-|i>Gay%twx1%-fZ(SSm?z) z6adIX(&a8Fv9&7{pN*_Eskb}W@wPww7-x((5`=s^AV-#fMC)7T?il;q(ZStN$+$F9 zroCR1%XIrOpx&(~IohHnyJPGikM{)m$BZ!Hkt<5*eG@rYj5%^ z%^VDLUj2P*4pz)fUh@3P_t84&Bk-NK=6dD?mki&jNS<7tW8?2eD@EYtZf#$Q`~WZ%SYotGfl4XsM&s_NOz}pI*!(O01i|^f zkF6O>5grJnCVN^`>T8`>fEX?^crtTj;s%a3M{@pZI}2zXM>f->b?S*Ak7?$4TTh)feDe0t<5(JdQUf z6}3rNNd$1l7M5bEiq5iH4=D3%t!QnOq5^H~tYn`&X9j5*4LE6DpA((*Cn?b4Y1r#P zkfkIP0DvtI%|Q1s%N@hLR@F#aiDzs2HK0(p(?pU~$z;2Yk4qktq#ib}a=OME3wOFO zLTI5rY~fE!5=A!-HI^gnLL_$O-k(xb=!WLbut~Juq9{E&cXNl&dY+$imsWz65vreM zPI4`|hM}CA!4rsiM4*$Yl`(T?Q$P^V%?N3QQq3s7jfhQjA(lLC44&!u)$(J~` zwg65*vA^VS(3A*Ya-VjuXmD5mX%B>^)s}Gy_fU)QymMYzecsf+LAG2sZUIU8bQl=S zjF91dg|?05_MXYF7vEAK5l7jGaHlJk*EQTkXuD}CDU?!^-YEQ6lO)z^XYraFlH&N@ zOB96xQP1~~ZCRP(;%w#~$s+=U0^k9(qn!PnHM(Yk{p4nhxT~ri?4`*PKIl$tkpKho ztEBesahIbo49?cPmL?>WBupenPrny4$=nbngMrE-7Jh<8_w-%_J@2b-i-!D?7=sd5 zW3kQUB&oFyowB_S0(Otm8UMZgORn2wh_Ho1GI%%6JLHQj*%@UDle#25OQYqdpMSn4 zj2QeB|5Wl7W(){JQyYYY2v_G0Gnr4S4YBapYB`yJ6?=3I5D?$E|5DE_357)~IC(!G zAugMs$RK5=qGLFA_;SUJm*yqDWUQ0B{?+cRau>+LXhUHb5mv~oD!1LY39J1W1OpB? zgF{=Uz^t|eXYSY9;NZ?!CFI7hFrpF>duMF2#>5&X;bC!M}PGw5CNe8 zK%pgnT;-D6pmMIg;3ShVUb23!*6=t6vyVS}OolnOT&mRXD;Fe%zB#0u-rwp2wp(o+ zw-zMi)6ztiNn$ILUk{~l_<4_}79(<=(kSV&_2`CCB7@RdpDx_Ry4mAX_0oNd-`%9w zcQT+sbP(6_b$qe@tbwz(L9vVp?pKeVJk4h)D{7p*wM_7^qBsCd4Tgju7pkKYuZzK>ht^f8o8&W| zk5`hbbk*zjFrOL}6Su#Bd}p4WHen!EnHkb&$S2v61dgf9%KM0vzsbvH$k*X9#;Nu9 zS(8OzKR`cSZbejzUs*U$eKfd$6T<%koEjiiX}z;}&E=kTtr%x^ssiaL^{8%Gk)UpM zK7Y=wg+;;!z#t#iETU);t7pC&jGsDhJty1NJQ5m>j=n||a2!5~W^|fh*8iEFc?3n) z>lL=GX`ycW`fbl%&RDOUJJ2}kFpx3R!XheXN-m>Nf<#f3#w_Bu(}`cvw~6&Iy32sV5ns6~jqERmPe)T%HoJyfM4l{MT+ zz*ax-h3l#`F}AJ3kTG{3kFn|MYdA^b(aqJsVyHFVZN37fe&xiTR>~p;3=b9-7=U~6 zAi)YWh}X(7nc_m{Yq%^%aU|wW@6E-xuVbFo=Nv&F%_Q*cvG^h`wFN;$#lnG}e9B3c znx<2jVwIN@PZJ{Uqfv;3$4j)G*#yeX$akUtnURj8J$YpS4!WRE64RCDd3;^>wVc>9 z6|eXkVBA!w^_4KUOOehnfi7vX3WMAdbEx7#J5?q8v78im_^kz29`daFmtQZFIj(9W zaBjq?Ec3R1Qzq7CM7Pr@t!F<-5N8>to zVwLt4mCN$=Qfw|C@G%Ib>}%-%l_W{G-C4ZjxKC25Zxo(rg0N(|j|nfqN^{)?jt~#Q zD8a)5Ff3AH38??hFUHNrGO?B9H$3Sw8|=rzJGKs)$ng9Y6>R=$doyI;RM;4n%3iAd@GgB^evh|8RVk%zWYBpGD*P5xrbd0kmy)8O8a+@R7 z>m$>k`IxqS|2cd;ee!E5kSn4Wp+GM>lP?kLhFg3|-*S$bg_r%da2Nmwpa7@=`f^bx z`LxF6odz+tIs1P+Qg3#b?QtlwZr;IEb3w2-(9r1W?L0AYj}?Iw;=7$I6OZ%k@oa9i zNVY;l57)U?pgq4{tsYDpb;}e^b|(;LIgU>bzKIa+(s{kYR@sxwLGVnM88Jd=%6frs zNry7@uZlq;_D}5RESh)r!!q(ub#w#gKPAE_IK+_db!Tj`O&Gq`eKM@ZULDJipoqn2 zs7FE7by;jU1EEPHncG#H`n6;?)lxazY5BUnrr;f*(AQWaol}I;)9_AWsFWzPxyYMI z+b2bYMpYqs8^^ov%T$P`GE3or7wwnJ(MaP}xfWzrgMT7e)oTeo|7HyNj7lip#{1LH zX<l#5?k4V%A=2G98fxxMalv_S>=0r6_ zV2o{V($&{@v#<$p`1ouV8+Kqzhc?9K8~#q@e`;WnX0fpq1d<>MPr6>a>$mGa=-QJo zCx~e%W`Fzk-{W!x)`p9xD(3N5+i@aMDv*m(HyN5$1<96M&*!{UI59L_0K>9yPh)S)83~ff{cXn z?I+iEF8eqzXDZ54{qv5Vjq|~I%;Lsfkqo|xF)Zo=7$6P+RFcr>>*Y~Gr`qr?-Fvnu zJ?@CV0T;b`DO!k{?ZOk?zF+Ds)yn9#7FEl8JUc{(5Gn<8sS36{ z=e&mZCXJ~Urb^!*sJ5(Ky90kRPK}@zjBN{1vE7JPvoZ*8$Wt+9mEA0IW$oF0&25V8 zyk(V}LTaKmZH*x)fGZ6Je8B=D)Y${Sc+dh3eT%~UfchLCqWJq3UrfD0?8a)xJ-7Z2@O@}niN9D2DFkXIZ9F5}HMbk3BO%5!B)DaSnsA*OWvY9A*>CMx+) z&o)N3I|3KnEon}uaUxMspodDwvx*G~+BR0wS0Vv+005wp))M>4{wJ=H;c8)r=zxv# z_@sZ`SoX=j(E8d);*fZ(AQNkohMl(?x2U*%5({(`VSOgErl!{nyd7l@eVcvp%p%>H zmS6awz?67~iUXI7I{p-iHQ0;=+hrBl&F1Qn&kA&Mw^2JO_vKtkW&ImuA;deiU$QbF z{P{JFe!6b(H@H7&Y0woPK#2?R0kuqMvF4;H)Ed&2`~Q6{-K-s#lD$_ir^Fk&_}sSP zJJ+H>P1=Z?exupVhYH^!=xzi%(fFv+imX+UW)J?6#z9yIH|m87IY%;$Vj+Y6{(?J2 zUsGGC_ZD4Q`Tay@Yi4I{+u#38!NZn}DUL_3qsoV*m4u|4BF+D`YLbsbHaN{!) ze&qH&LYzaTyg=$jA6DuF#Dv)vn??+NW{J=Zgp|HA%RXH?icK;iME(tyCBiuM68_Zw2D|s`zkI;S5e5dO# zhwLZGBLzv7FOZi>Z_yj($*?{d$%%VMX%LtgBhwUhEODNZ{uV8HdWmBTVOamWe9|!> z#K4cQv(cHZ|C40EE7Lx|{rgqaOilc|ScyRthoabLX5fFhKEVHbhr$Cw;cKn77q59Z zGZXrJMCf`Uk>y_1EwjTCP-oj$!Z!dA0KhQEWtpV&w&G5x6=Y3$IfLiI`J`U4ZT_qm z*&P#D;HE~|7|55*3FjOd8qnj=cv7`b?y=Dm_R9X&W*(4eLlS zyHW}>Pyzc`W$oR*BvL0&E_S>8hniA03VBgES}Mn0)h z7M!Vtu4G|_wS<;BpWvg#7>(!i@}VtpshJ+E`7PIIU<=b%J2Fwn8*;7b3jAL7pg zybhA15?)|O1t0?=Vi1O5CDKuAre05d=C=uHVt(U(&u1HXWsmu>7_|zaz0T%*(s_*4 z`t!Q$=1Ikw@Ytun5aPz9Rb6#I2Fgm*L7BOwlKyX zM$qN>MMwqrwZPv~V`MU!3q_v99IcV^ewYY|bM*PdlCXk!hR?-?OfW0oDS}s+oAXlx zKNc1cK!DVJscY6pid6ouB`g(!N!c@$pj2>3)u$ri+eU2)g(?XtamLsZ_)(nXvM;>; z_Fy?891&|C+=8in6O(#QB9w$9@u~L8H@RU)bUvL1hPmX&ICp^&+e=-f%+=3T^8^ zj(yfbQX~jprgk#Ems)YG_0tIqPYEsh8be$L{bqVQzdt8(21zZV=-E}3cz6id&e{uc z_h_j=9_QL=GQU59Z#@Vmrs<^B+KuInM^Lur`cEQtEy-vp5CH%n05wIOq71)TmTlxl zo@q2_#C`H3owR=1m^EA|)3(zI-RR=dI}`c33qc@1dj!R4j5AH^T30g_PW88JsRdCv z%3nA>$^rbX50HwT@aqKRzQMY9NtnZ&Ora>L2h1^5+t5QvkH_#RU(A{T8VSnriTBkH z(Cnk%x4lVd1*h(VZAO~W5ha)~gUrH0sbpQN8So~kcIgtXeAO+!wo6$UdT|FF_mxWC zTx4dB&N_D=fkxFBW94^KEcK$@XFO%ovC3^sy|REa$`fmAlIxLM)(pbJ!#bh` zg~Zn;H#vXah0R*QQ~XH>V2Mq4ZNtn&oN8K|xr&ii(s#_yV^#V}T|M5>JF`^re=?}c zRUWz%QT|`;=Ks0nT&mp8aPgW)EW?S!M}#g5RGaL4mMerJ!tD$m&)tAS0AL{_kCjQu zS`D1>11uYEt+<7r3 zb&*|bAl0KJP(xiI2oz1V@U|*s-j>=)ck+7h;y?)Ehf0I+H8fKV9LaJmwXjQPD=1^I zIn;i9iZfW^Fz837TCA&M0Zo*|F~~YcT2$U{dNgTv@)A|R0|4;fTYOOA&ThE)(z<6I z+NC^Yu;sQ8uL^8%^`uNf?VzbATk6xJ>B_xhT4@(Og7#F3ExCV)6dJyJ=*FUC%#;`6 zkykTin4gky9;zYmmD5ac7h1*VeEm9#rWm>IVjKiKBVCEZnRIC z_lBZEG-k?oPo0q|Z_em4 z&;8>5;eJbG|4eH_BH+N%`qgYt={hdNK<@CLQtTQSGG^ivw&JGBKuLqrzs#%P>-8z- zyRyFJl5$eIe@_nyp%+0XGu{`P~;V?RK1PB?H1n_5! zrhPXQEttRoc!Io|savO!bm&SPA3ecA9x5mXicvg~`Jh@Z_{o zbJjKEtL*x=Y_rejc=heH)+k(`W)!=YzSQvk;I;SR$xTKQ(h_>A-kWY1M#s6^&Fj7t zjVdYa$)zR4S#Nw0Ur>F&(T!Ahd6iqXPA`NN`fHySM`l<~qN@fU2hz+- zZR03wCEQ-&*+hV?8aq%FotN%7x|GEhps9+32g9;}DrPfjQjK|rTW^Hv9|}xFQVI7` z3OgA#6b;PGLhvjiBWK=vZ$$#vPjPt!5Lg1mziJphQTO<$M4;5&xt~c2aqM%yP_yc> zfO=C=WC;7ylbbUNzKTz%A*RYG%fr(gfK!!5f^gl)4bZV!IK$NS%cIXlJ-?(K#c~(q zm0_iydy?=z)DMuU{mmEe_!1+7E!}wy%V}u9*`0J50^`F8BeA!FKq_wMlYM^EqlsIvSNA$)S-9ex+}P8vME^XuNAS@cF}V8_7}XMQa-jF z9g9xxTOK(_n&V(@bnlI5>;)T=bO1)+DrDx?wJ+N{xTyjz`u?Q+&vN%4uMa!U`t@j1 z-%=CmHAJF()jKkMqH{?PmARdiqbq!|;6r3UEzM8ws1Z{YIBlw$Au5KLFoS^|{uM;V zy0u@zl!^3X?8C2buz*STCV}R>XYC}F&5j(j#;P8VJ+BHW6JndpU#{IR?Y^ALFj+|V zvL2LlB1;9;xtA&sM^W&Ae_N($NdF*-Rz|&6s8H%lALEcgDynQTeJ#i5CKoT;%3#15 zp*B&pURvA5Wf}V^r8Nk;`-u3}k+RnUps6;6;fyH2N}A;%XC*U2VI*@zv&H+Abi(e) zDoMC$#@2BLckt>uX5Hq%k}4-(0aE70Im8f{X-K9KyG+{caIN6u{GmmgvTPwS`cY!ighy3bQY&_3-qm zmH*F${cDrcz2~;~bux26-l82h!gYbWmrY5(m_By!2bc;<%5~Avxd=06)tqdd8X1)5H=+kdx&<*eqZanHy0$KebK!P61sS*^QAjAp;zZ2c`fh zG?!Xh4VdHt$e0KNRMd-G_v#2uvBqCBbsM~AOlBrTol(kSIC9PecW2^|!6Wn= zALQvdei}CQavQEyY*Kdzr2X9*0th#jU!jw_!>XPgRQAn~N84)~{@s(q*{UY%idp8q z_A)8Hd^LSEP7b4a7lvM+O-gIza{j)(5|gF4?1sq62Cl{9E@Y#jx$4x6fLn z@kd!d{Q&?tSPF$a1$OS{4#AC^G3}x)rVI^!G-C!pZ{9;WwjfGl%YCqd_Y2kqN4CWu zy3~F@%w$M=iyDI}Jk2nEU0E2Y%Cn_Hh-@@n=7lO*-vNn_=+n#+M9ZW6^gu<1r(9c!y4s{xGxr*yMG`BYk{S-`sXDHywy`DtuH##wyn5@D6YC6exkIgX`ny7{mDSQ+Gp{2+CM%4R>iK7rMj7fj;>EQ;Ai^S1y) zhrcGDu82lEV(EAKI)7@T`7gi!bOL-rlZw zxYMP;SPtj8hO~PB=e(K)D+%o~h0lAZujvKJqPGsBTCbheQVQZEBIY3{akB1szP*F= z_$&=+E@{AF%`drYPL`bv^5B-H-2vM%q;kRdgU({nkhXsrgI0b{Y|i#Rs#`mqnZ=wr z0Du?}#4=Hkbn!umetgrBs=rp_;QN-1_RDDpaUBBBi%6nIVoxEjHH@%q?lUjiBb>%L zX}Kgj(S~j!d_sDhEVQFRXSKYtz<7GTos&_yaFJU+mjNm$+sV>7eA33M9%GcWpyMsb z#~$^0b)d*+3E>$Wqu77gxO40F1P3b@6Ur#?x8cc;k3IZ^7#nzg5AY~3iU^aVq^0hH z18#$bVgc;G=sGd4{Es1`0uxl45sjISq?!^6mM}7TVm*{A5hZ!3IH3`UQ~um_{y8~0 zol@T!DD$zbNgB?!(plyp>4SFKy7t5~Z8+~xl^{A@Cuy&4SsQLdnla^`Qw^|X^!D%N z3qoT89(T}$QF;gJjtz={+~VCIGqxhUO0y7y!K2@fRGyTsQ)_e)|DkfemV2K$C;(~9 zioK^a0EkwxUv)= zZe1LVrIks0BUEEk`%873hGK4qHHbV2f@;eop`l zscjEf-#o_v0K)+C#|N$%as>6dAt>hWsojr{rR*JKN`)xhF)6dOATG#FUqAnQWuJQG|6fH@!x zC{=c1m_qG_MAnM~$E#mB6xxL)VoRQ?b;F5tp`kYcci>z>d4>}w*73gdYgq}Q)*Y_) zng=|HLY|4vf9D`K;)dUbi65WVk!?>Q-x=PgMavYt8%qF+^HqV+xO2lSc{iy5qGjBi zmAm%#Wk@p2>%L_;f9>koAV= zM7;~Yk7$#RG1Oe>DSUIZdrl;U&wP@m$z<5GypQ`wxmW-Ku~UJED4-|`sP~}8%w(>C)QS{W5xDWw_(%E5 zcWWY~yJY?$W9d4U*Zxp)nw>?IA0Bc`bR7{)F&VG3>OXPBu;d{#ahdXxT68Y+YEFDZ zKNveen;@dJ4#qGi_Qq=`%EH4OvZ5dUlnRV>g&pKb`ZhTk12g@0-)(;2Iz{A&mW!4$ zrzP;gA86|<3UqB!pMMy`GIRs1_ltA}MZ-Fo zY($p`7BE&s?UtzjA7AJERtfm^>s{?^yV=>c&B?ag+2&;1o^0Dqwr$sBV``etFYkE| zuJ1Yj!@Ab>dDe5^Yn9_rb1W8u{J#NziTpPd>~FQhd(K&q$Us;tFg~tIn&T|purR6I zXuthh(g_a$%4G}-N5AsaW_TkqY9^1gVVIv5qh#Xs9d@UW5k1?c=4fF>zFs4rpgQJ> zj2w_4aSf_ORJIgD3R8VEl+R%&HyOsXe~WjEG3A-aNujreRBE?@bufhy;UmRon&oHd zE~NLA-LYIU!(a2-}7Yjmbe)HrBC+zKHi(+X-f0)dr-3(3(<| zJO<4zs`pw26gcIS>F!Nk8h+xwn}!b`#H**cCC6Kdwp3OYHR2he zI(a-|7c6H7Ps1N-VRd1&f=nh@6I52@Z1d6@ET!Xq*g*jR0E)^m7HxTlUo)*Xj46d3 zp>nw^#aw(2ZclKZ&jx4`ac^?Q*v}6>WlM;SZMtQDu^BdMo??WnwT+dShY%N_C%-sP zbJSW}J35X8Sq6N2*&fN@h2!?-zb0mokp7r(_4*k^WIK$4E&MXfRm@K!38y5Z*1{v+ zZb}J&z8N%ChU!z32kNfpR z|J|XwU8Ywq2z6uGa%E2TV&ab(Vz3BP&%^QB$7*@RlnKChkuql#>|c$$)+(m%6P4_* z%G=h@*tDf~UN0?epbUQ0q5)){sBYMhi#DfG# zz~`XhFCaA0ds1JR#ft8I)2Bya$#)(wwg`*ZBpH8w;ZVLm)v-0G6qZXX7pdF9%nT=u z%8$XvoE5uKl;T2+(yIg1ZL&nDTb~_$LksIAird}cM`K7vmw1JPDxsus1Z%P|-3!($ zFg&V;Wo0-SZW+9b=f9a$lIwWG(7m3+bXb~Qn5;(7VhtYw{4m?!1C7xD005w>LBv%U zB^`~3lRkIiH@IuU;V8yi0cvTmShwn4@K1|pUyBxtP)J3D`7b|Rmha9fK0fOmfGIQC z**H7gI2QeIwsBU%QO_%J?`~y^bu;hff?jd1rAN;>tKd91+C?^`Y$UVW5mlT8-_a&q zg3C};`sRYyoSVO#1*j!zsZB_vyc_S(9G8!dqZ|@6_h$frD6}MxE1llcko5E&!P+@d z#+2(MxE<;p(XlU!JtL4UWNlVv`Y(5ZO`P4a-tOiFoYLwTMaO%yzf3m+*@mQVvaAG-gR~5eom491(EjL-BFEtn2OpiXokrq*@bda|}mmw0@mOs=COD z{W~pxm$j^AMY;U$ALVdiyhqV~)es5!8gZF+W`UkFqtkX5H%Cu~O8OjkYsgPx&}dEz zs?xZ!EQO1Hd~eWyD1%%yRB?%5B<`7 zJ|OpH4yZDDoH5Iv;}5YcP9Uk1&3E`T1PEyJ;Y5LwBfo4Y$%kG8Nq}F`z5E>H*Tjo9?-!Euxt;a4R)V_G3(bXAmZZ zbNsD_7LI?NNMZtm3HtL!pIJ^yESGA@RNuMgpw&Efy=G`%GfJf!Rduv#nXFGw-bVYq zYmF%ye~1M_LO@_mWrTMOQBJPqwYkq|aXCazVb>Cu^S6z(5pouBG)MkfU!60`RF3fF zmk#*sl|kd0D(wl2>cp~36r>_6nXgybDl>Q>zV81DL&rd6ckm0SJmLY-MYu7ICkWyj zaYS17dJ6M%d8g`SqPpf`}%eY4q(JF5h_nh>$Fu+>)(|nR@s4?YoT!m5K^$5oRd?=;nV!ptHdu=!N~M2()Z&es&sX~zOu?Vo_M_M z5ko4fAN#N10lg2yhpH9>*(l@H>gKMP=a@$~{k>1>yMKGlGr$|ktKQm8=x2e!GkD9_{M=v(w{Eo z1T=iO^a+`6fyQuX09nfE-$I1H&waoe8s^|3nH*~;=L0Z;^J&%aQO!^3RZwf>vUDQP zqK&9s^h_}ZlPK8=B?CNy$=ZBAv&Ew$lDMUF+e&+=v4Ppic~U*`GNzg8_IHOn?O6ESM|;%tn&c~QFSe-unr z#%O>A5E^wTmAsoL(V{qg&#}@Y|WW8IDCdOmQB;NWU7%J z9riZcYuSE!=(w=)duv+H@+Ks=-<2d4hQ3L9%IptOy zW9@J`|NVTh+CM+%>`1UD3=yRA!!U^RlrEVW3VjusJjNl706bIg7|lTQb3vNk(McOuuH$UGKpN5{PqQxQ(y{2C zEpVy1PGV3!mq-v$wzhV2aH;tk&Lg}(d{_)gjG~0)Lzy%S1;_uEG_%lm3Q^H>*pg8| z!Oq-%DeK!K(v1l~01W^PRA-sUMyDzm^F@&=zkY1zxNE}E%)&38;I!>zHrbcNa$uD0 zv1k#IdhpGBznnjE2hxg<38y(yaNF7OO{7CNw?UHJ?|T;!e)mjfx^}4KAdm zS<-<C5kzqr2y3TpBI^^j;M6f{O#2D4IA&Oq1b^Hdx-Wgnl=Ou(Iq&@|{uV zd=_wo1_Izgu&^w-k(Hud5Cbcl49r$NZhl0PNU7u;m*GVz3`s(fSz;3$NsY2Sv;r=) zrjCW9;cl&M6BtS5pvl=}^#N|4%@{TcB}6$#pS^>v1Lkkj17&nCr(jL@JoNmyXxnq& z&v`d)ncTOrOPtY;6+�{{#gC9Srp+E;(FM zuL<)6!{agWi#;WJIUr>?9Nb2-D_|r55UOKVW);`zvYXc=XQ!G+Z?u(L;7GhqNb(lY z3X&L&ziI~BAkkX~xng?ej#_;wPmW&>h79?1KKfd;H%Di@txCvLnItNzAk0oCwk+DY z2|Ulb_&NbHvt+4N3qud(j&sZE#%_Y5p%N(^kVsO5*-DQ^?MKnmWIS zogjQ(qIgUm8^J2>IxJB!Hr|@*=JAHl{L}53-df7I?3b>$`;PnRmCad<^|`BkSB>Nx zl@qwN7-y&0+_w{yv;`v%@`>gW$SO4N5j_;E>jZ~T_ zUUqtgYD~#c<9lT&<%;|eKwAkq^|*=2t>5X9DkX{ZHY7b8$ixS(?stKH5rn?ceciIkH>VvfLXFMs(dn`Br3Br`h5JC-;0M8!hN_ zRETJzj?fqp$`)_j^yXO;P4SRRsEp8?uvPM*M+3xfJw3J+p3VUI{~|QQ!3Wj}k_ah` zgflD?ix{#wp5-NLlMD?GR?kHn$k+U~(&W~=p@w`0QFCZJLCG%SoO;oxJ=aoyBS^$7 z^hV7nZd?{Tbs)K%=upfuvnJ4h=Fufu6(AYF6yBw56@z*4@7bwHn@#@lZD~(J-bUNj z=md)qZLc>1Hb39^YSCCcR-yorKbW*)XJJIA%@W!y=J{4VU{o813hW4i>}rhUBwaB{6pjzWkC_L&|D;`FacLwADNY z$X^@)P}x?`G)=%Hch$KUFxh! z5Oyi!-0LoSh1skE9hopskg5;;PoCRZp-`|K zha<;xkpN&_mm*l#yowYrMX@81P=#?>JS~seJBn?V&W`b0rPzBixvd0jjPKej21B#~ zk>v121>Z&d{oj*c0XF?^qqUCoxx`@H301qE%A^D*5G*^-_YMGVQzY~n zV++car}MXAhVs>mnk*rV=Fo6(7_Z1-+Z$U6hQ4Z=Qkzn_*VbL>WR;U$F^rB3UCMv( zG2>Ed#0qL5iKa;JBRyAEMtP#_C%4+py?YSj_;S1ZZoj#GF8UhDAcZ1CQDZ`OZO(X5 zBh74qxE6H2(XBgw(B@AVe9CmVZfVB0ENPS`{L|oEI=l~Wc(z+9R)T-8LGJd-#jH4chiT*|4f z5oJ4emfU(M#sR z2Oci9IJJ;vSyGG2Aco{D-$nF)w^#u{Yhy!`bLs3jBqU_Y-(#xi{_fHRyMu;o_P<}q z3L!*rDB>nlT^_1tF&P@N>sEG;r__mn8TN@kv1w5DxGL69ernk1U1aV>cu98!Ti@3# zsmH)AB|sAQ9bV$|!Z>)6UxF8OJmLP*`*Ukm2NUib;DC}U$k!$bFDe_7@vfvVhM?*k zidG+>X2{VepvgPZDt)64@_v-P86x1sdmE=hTi@RO7TUY&c0vec^ry6VQNPVhHQ>|H zBMk%Kpdc!ew~UD3;%qcaAS$>QSko(LAFsp?lP(a^z|Owj=YRTcN$EJu`$kxPHO9>LF;%-SQ3Ng={01BOdSl)Q`i&AF0;shR zjVWdAxNfv<3mW*Oe_))uo}QLF8y_W*Sar6kit1M7Q{KX�_nVyPbboM6E__4yen1 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

      Yul1T4FX~vbZyfH__kB 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

      NL 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 PTLJn&dI;O%0Rc<+*#yYqCzltMXZ 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%0DLFTxhS95OSdD9J+*RGmoT0*Ts-%>^@s>m@qYA- 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ℑ_kuyc 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%0AGNwo~<8x`%*-I;GNb-X?%|WGuatjPX2js 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

      LB2MfY9eNmOY~YEC)?0QNR;wS7R?>EHIw4u+Oi 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�^uICLU#gwc3D@qjG^ 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%0AM-bas-$0P*|5I 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�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

      nNo{&u9?$UDUSnec1QrSayi|1!t}NlV9TaoM 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⪻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

      &T|+%1H#w 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

      !(eFw9#qZ%x!SW)q`b zTUp_5I4&xjnPU>a8ga?(f=d6qD~e)#PuheT{O>1EbpOb2bC$D5OzEs~Bn06*x1W_Q zP<|mkZ@3UOj$$~irOx1q*h6{=-t4 zg_cXy5o7cEo?|9x?==zM@~YD1vx;BjocO1U{w<>!xvSG_(@5#|QmG3($S|5Cu@V33 zznG*-hWE(XY^^p*r|Sd_46$_$s@JDuyg~z4poZARo)+$(ek{1^MuD=>KfiEfFL%kU z8d_sG7FH-)lVyIbbj4)P@wH)RNajb8f$J{1z~nXTw3KK*o3RO2XleS=Q#!3Le`Ws@DQLLJ?74pZyG zFY3G{JlOgbrM48#FSzdZ`IBP$1fX*YPI}5M_mn#Zr@nRKw?(`Df*hi4ae3{8$k(Kk zvaLNk_Mc2acfG1=E9zN7I%%6xIShG`Y19zM|NTJCo|Tw}!JlR5%AOCukW=snW|((2 zB>9>A)Ah0c*GmH&c@m$*dbGS38sE~(AINow2z%{(*qQqfQz1@HfCO>~o{u5`a?rSc zAXeFH$^!2m#%;yMUDidN;nm>aPzdx|Ql1X}3n}dZ26h3jGj4+hQ{Z)1u#@?Y(lVp= zZ0ccHc2}&jG^E)JnW9WcrFooY(U$FW@4TG?tkAuvfQB(0J1(bq%N#q^8QHMsoMJ6~ zV{wcAYXSv4w7zJgUPwkmkn(cKYrIf^R&vWwQ}An^oQ{S>o4aJk->sOMvY*3iO8$L= z&NR1a;ostxWM-Y;Oh0%Rl}#Y?$zm1f@QL5FnJ(V1xU<0*#%xvXb!U*}fD2cfYBn)l zxJaC48B_fcTu+nY`V0E7HCpdZ^x{D_{Bya)N5U zgJ+j`s1#}1hgl8sDcfoDLW;pb+cy;;QmT5C6)x^|^;;TA)2!%7NNs%>LT8HpH61*ES^W@!LmcScfawo?<5Ca9udSkF1{3R|HSwU7cYaOcN6{H>u=Ok7vW$_Ili{rYQe=q zqN(7nfm~yK$m+;3w4U`_Nv%-j$vte@Z%j*9*BKm1VZGm%G; z3X4}XHnC~XiTxt_C33jU{7lyPLdouPvtCYVXN1NGkQ2Gp+9$fimgD+p*vK$TUK=IN zzD6NlccIYpQ^~UuoKk&?R}68liUmh}A3zdmRZiRslb7^N8xoFCR67}CHRu#u9w!KV z_kv$9ZAhU@;mtimfi>c5v6=o0(R>g5RXB^N1ti{+!ispqY7eo8?s0|>> znMs=>^{{km85WM>3M5ny%TEm`GktmJD^`CLFd!1Zi$7oN?YnOI`RCFJB_-)wG|xq& z^3*FgWbEyZbfin9odfza^;JA00@R~UqJcJDg(57Y@=tNwfIrY$`YqBYZpPxgv3#VU zTq#QaPEjJ}#doIgjEP_18S$49XyxPX&?p5M6|JlZ#Go0LJYeS)KW3TA>CJr7 z#z|HzDH`?D`GhJNb%pC!UzYX2%I(k4m)YENEi@8)Z_2|bYei>GeV!sku4W8vd1L-& z(3~#%@KMX}(+{eYW`DTnE%l2Z^Njs3Ngt`UphPcKq<5-uV1YgSw>6VC;2}R+x<)mG zk6aoIT%be3ubSs{*uLZHA`hod*w+&x>`com1|9c+_{*Uo(;p!Y`5Lg7wV6LxNW^QK zm?7)X^=$%X6K_z?3p35giBl0qt#0n$QS8pW;XfZq*D|BiAvrU0J0na5jPg1p%D z@waz#ij+XT>;&L|jo|d+e(!`X`*W*`_Ek9yLojJls5?^@A)S-VGYOa4bycp=zjvJX zyvZz_d1G0iRCq3;kI>n8(^>ZZ6r@S|=h^%=Jv&xt)o=T!uli>uv6#4+_^u%3-F)J0 z&VfLn)iDT9g{ASo%KoB&n+Z~n<28_+NhOa3_=mRiYtF+hf3eUB+NW!ULXc!RCaXPF zpeYZbJ*S7sPe4$W&6JOSs1^R(${kavK*xr5CsBabC3BgBp}J;E``jX`nI$McGemPX z^pX&Y;@085UmmYFhi5};2C39XUy$xyR|?@4tMe9g<3-f-EB0dVg z767WNPM8_vyG@X*C1AxWClCj3!89Q^7 zdr8QCpaKm&FEQYAC}`RRP?<&h-oh%~N3Sx>Q&Yv87?6|X9{r?}+Ql&V=N;AU<&yU9(*IW(^&loNh`^kCyq>^``;%F3!l8`ZG=XJ5ua(D(^wj`tGQ=Rz1GV0DG=1yDTI!D%Dd_JG9+(h@(rPZ2ujZMjY1 z38rOo4F$(x%#5;SOvw6gqs2i7wQh9`0t0NCwvSA(COn{P?fb9+rw*OZ{hR}r>Fp|t{IlbSy6v`;qhfbI|05x}l6&vkKmZ-mG$aC5%KNmC!K zpKg21LxBpmzp~6+RM8|QHDs>7<(i@Y`l8c>u-+4F3fcfCYIV?YKMh+NsXts|7BKyM zQrc(}t6>3pTUnj417Kq2H%HOEVN{5L`uNc)!lN_Ww!taX78XIs7>DYVfHY*dOLJj{ zF;M9Dmh@R|`sn})<9KAJ=V%RVR9KY)Q;uFD4DhG>A-<^#!T06AnWB%>}j&sDCePkxGukShI0q_y%4ziD8rR+L07 zhip3umI|&wiyQ!LrcHNL1N!Q*9{-F={^#f{1ETD4I*6v(hW+3 zbayj=BHbz7T~Z?5-F?s8Uy6(~Z=AFDTF+iHgD$9ie4RJ5{Ut)8wO_Tf%w+1?Js);L zy^qY2vBNby^Oj;N>0=(L-JDtbH5br*d)cezK(OF1k|@Q2(3d#CtKs9^M75N`plNhc zWJqdE_3IDZG|I-)!BO`61ezGRQsO6xQJEUq80d;geecoOX-NU<_RZE~>CCBqb8fW_ zCZM%E-2KnY-1Si@(lpO>L7}~}y;sL(Eq^4_YwbxHc9gHqTm=+nhogx=9i^PVsd?l0 z1UuELONql@=WVzUrl6r-ul`}3@56Zyg~nK$G>fnUGU~J+ZSRg(9(0(Z@m*G!FVFzZ zwGdc;2G?1#PKO((b+SO;{ne8~AiWAf$5|(95=qAlo*{Xt5x;~)f^1Lli}p=qr*)4o zTmsOJP=ysg6}TxGUJROtj9STw3ZQ?Q3ck{?eE8~{zlm%X z8^1qR`_t&}@ZhXD2S;Sms&?1r4DMya7bU%jgISw~^BE;*eS;;x@*`w06MgR)c~bn8 zd9rr~zqnxC36Rnne)e|~sSlC6H^5TsxTX^g9ZkXZ&c*;;|AS`C>o+fp3?sfO)fk1- zl@i^Cl&g|sZ{wri#<`d+xEjj(Sk%>i@~lyr>R;-AcbNQd=Tr8n=Paza*&)+t^Z-`A z%rkuw;TQtw3`hL-dt9j-*SdvC%BFbKZV5*NWXuB`5m2qLgf?0nInO%h*$GcAzl>0B56!G2 zO+Rt=TsGL=`E)&*q+}+bXhjN2V}44#jIHEFre!PB!CE*;njk_J$}v7DAs}r~8i~^F|%&^s$_Abz7Fs!XmZ8)o!$g z&nZreqkXx?(>e17Srgn#mjSQK3R}P&SG1ey+AdHrluz_9RW@ z??5%%bUXNZ0R1s?E^m}ASeurnPU<-=jco7tE_3|d zS@0kVs}MN&Z^N_}QGsw>53>fzlR>{L^R=YT3k>6sgODu>!0YQ_P$tuJ*QL z`6ho|2m1{EtcR4VZ4gv3$g5ljxd@M$JJwbZ-4H69_b(f;#&Q>ZNwZGEZq(P5X}^d; zG+1t9s^C%F&U0pNEbn$X-uYw!K-DdPKqDF>9*R5mtv=KnS3FqRS}Yr=J1dQq4!nHP z=B*|lF|^y#N0{_dPHiXE8~KfTpQ?*b2PTq)7=5VR8_>6GnN~b99|YPR6R78p3`bD| zy`2->*|ll)&ywaBon5AfV48aWb?92fSR0VS;QeymS!DaPuZ&gxxp^G0gbg5ZbTm^a zm-##3W5Cb=Kk41sQ29nvpYiLMk6a1*?1ai>`P+4nK_RE`WPG8gXd}C&o`aUV^FK%W zP0P-ld`e552lr7Mr3Y^3=aw)YjaE!IwR=6fV_3)bF9EXGe*L5ma~vt>n62CEl5?L< z2A0rPOvC5zFTz?nYGx{)Jg>rRASAp&`WmaI&@<^A)zi8PI8%(P(0K|j6>2&Z-sr7q zS_$#jUHqqO@U$vVTb@3EoXp2X*Pz<^t2JqG4t?8IM$q|+4zc2+L$9P$$QL6zZ+p@+ zmK3(SohB*<<%7vUzW)1j?t(CQA{T_)$u-CpnvH6tI;+pjlaAlaOmGRsd{vp$tO zpdae$g`>t)KL?h!=sBZ$_d2y7^&VVbtyNzIHtGK+IL74(?`MfW1J~bx-=7hkHEI)e z+Q$=YXd&&lTiJhlf7bM$J54ItxBLlwapsFJe%ctcWaPUDgTeM#eyR0&)pxEKXWQf# zh8%M%)f>ek={a%spS{p}SCZYc!A*@|g%5wqPRGT+bUr2zkG~)62`i%oMcuZ`1?Mjo zO|e*iqHHa=+j(wvZ?$rFMl&^!LKn>O&d#_wAKWPzi!@0X_hyhgmIGs|zS!ajqTRGD z9A9NZ%FUz|>5kPz0`88=Ew>qb(_Z-8Q=5PCTvR+I5eh_E9Lv1fcA^g{HT})Wt*vVz z#&U7;953uWkwzTjZ-%*Yf3Z*IkP1X7+ufIxIxPXG3R%lkr_bc9?WqGM#StE{rZ~t` zZD#9SKXrXCBq1p*#$)ERT8~tj)*WA^6o<`l-R4ty3uEsbn#XIOE>h=P@kaJBwUrf&(z~7Cfu`UZkME6h$0Ols2zyV*j$UT2?+8k#VPAUoaSl z&+K4v)g9X4y-?=3-P#yGJO824Z%MYV{a_SThK}PzJ0}fF7alObt-RBw0YR~pa5gtO zkR~my+A0Jo2*}JP>EX1&BE_hPucpnIHpfz&unzD~3LSRz&du&|3#`|luC!UXmJVQa zO`c;u_l2{mf!Qqc@u2Bmi?X*aRtF{O0q!U;j~^1|ewjAi%&MtADp>gGP-re&l!;X6 zF?w@k07WpB{=KuTXvfYv&lv5(nO$Cy{~1(O?^46{*O2d{iCQtK{lF{wj-ZFu03S=f zV>(_0J3KGHku8*LvxPhLwcxs}saD+Poj`cnoxZj2U!m>H)j(JW!%hIm6{y0E-6S%& zuWV_Z$!FAUl!W_UN0Z@g;#Q4N?Gpbu6v)OU+E$StUs6+#76pDdQOlo15!w>X4jmzA zqyjEFU#kiu_L)IXiMuoYmMgF$r`cy2p!Jb*2DCthzv!sIaf^V*?P3&qGuTBxE&OvC z4}?M$lq~5QpjWKaH<_#tuYVOjKYvr+pI4Z=9>-4Xj>ZNCchmPeuEB%K+$; zzXgu9yRQ0FGp+c`JIzY$dPEvuR>g^HcdWAG?0CJMBRpQI_IOCr3nh2GVRB#lzC_)4 zsBGZTy(+MkDZW{Uviu#(Ac7;M<*rPazRj-|3XXr*Tz+8O_#&vpI&Efu*3jymfA;OU z5iGb(n|{wV|3v81a2jM)kOj`ew2-oStISBY*+7uH7`SBw*@L+_*T44ACN5`KC!?Zk zM`=1N+bPZc9UMRMucT<8uZm;A`z18l1oze36#joW-51jF^&JVdl)i94QYSR$tSbGW z&x(QKJ-m71bZ6v&@EwHpdt@`ZT104E2G~xhXhp~gcRBhN7k|t`<%+Vq_=vi>`-~ji z=a9EQiXJ{1K_d#!#WN}>jXJ*?`*wp$3ayN?A=+}_>X6N>B${rA^7Y`y5!%TN&Imd8 z{7f3rxI8_DA6mjvY~`5ox2Q!XdBt^Tg+Ph5O`aa)x1^W{3U=eNH(l>B(uyx>T<3Ar zbn6gQcQ$tWniv6Why(B~7!wQg*8re3|0N=9Wgl z%fOc9KWxk;am#EyMg}WM9F&>Trf&W7lk&Wh3&U6k$9TQA=5FxvUN@!0Js<~V$|hfO zl9+Jwb6jKLit}t;EjV$}aj1V=?73qxvuS0qFQZ zP}pRz^VR56H5JGv2cEjjg&EfpwafFLfpX5)?rF@tS>1SL!ov@BulfQvNw@ zB9Bj8G-rELf6g9cS*IV~7wyCuK=^c4gr&|!9)f=4`=|*wQ=6gOhd+{x1URRKmmT{_ zg6jpPpsh;eR0|~1-{5%@`VjKAP1utzo6NrWihdvIZSi@l>_ac)P&gBgPUU>YTKeqB zrj{kh#G||?Zyg#@$fe|i322`z7u?fZ4K_hW(&l4)ad3@oFfUOTSlj8Nx$u zJ-vN`2H5_VV9+(4q;$!lyf@7Gap`v8L5D*#aSUVfm*}uZn^6hkVRwX)4+fZbv)JAK zLifxPdCQ{r7W&#nNevNMqBIUYMK5-h@E-t zSs78{tOoeEMHZdOnzmXhV8f+g>Nb5i9{U$L!pte{qh5=xP)(aiZ17H$S;Y8o+CjVd z$ha}ruu;NL*FHWc=uF$7xB{YQxo9}Y{L;_7?Q__q(SFG;zs^_awg#V;6R2yG?eul_ zGN<#saCO>J5eek!HSO~iulmzt^@{tkCjK#rPCuA){2TpA4sB!l0EyI1v%0p7P0(Dg()}l3v9rf&W&*T;WR1Ge(G&%dB+bg+lF8=Ip zS|PIh`xtfsf+foxZb;g?b(OXLLY_;z(pugMT{V4vpEP|RPVa9>8|SSBKW@#W*=23mwJu?V(;WTqz>V^+5r1oVe?Zr>59K`xp7XK)Rpiym{mZ94^2v&<>bjn z4pnn}Kf7mJE&Joa?{b1pK+1l+=*+g2ly(9rw>(ocDTVgWS#t12)4TUQuCQE9=EM4U znS$AtQBS`kuA|q#{XknbKcX+c`;!*x>b{em|5xa6{oUUgfuLa#rSazMw#*U?zBXlKlEMzdz zxo;08Z8QNkT&{mK7?t964ykoq27ok0=xl8vkJ@8N+lWkPJPQ9;iZjS2p)YU-%8Z_j zRS2i{AOnpECYl}~WK>4=lg}OXVT7^T>*7bdugBq>LnHWz4~OWhE#%sAs85QSYr0_E zU}XKfF<2K^yPSKv&DH+?OJG;V65^5vc*mW=PHoiivuJiZSNY)O9#OtTC5B1_lFskf zItYxp$NcrV_LZ>2ye13(7#%fL@W0?vLCr` zPTlJhPIYwUty8-GY{i$&QEs?9<@6?L%=gwwG|k1F{)(w@f&j}V05WlULhxg09J0UQ z5fQ&rZM@C>Lk?f{U~9b3-hcY~uK|&u%;dBM5>1RrTK49k&7K#WwP5x4LA4(|uW9R3 z6?!WgPFr7yM~&Jg`hxsWw4Ws8a=8k~^*JuxIf~katsV8cdQg=vW3q?(oZz2Tg_0r~ z$~DGfC&dp(X+)fca1sWt@)CVWI~%W56YsChOdC1~pZ-Mr&E_hxHkMyf#)6C=4^{4~ zmJJ-r;-@7xtr+U~_)>L;UP6Zd4vrAb1@?cZo%UVGP&d8Sv2M!c{kG6_5Xw1}5ol8q2@$U*cj3#i;*6&sxl2GLAgH?GMQcOh!HkxArD zr7SuWFm!Aw`xZOay6Gt#6s|7xnlT*Y%WxcCVp;sUi(13RQ+=8V{MdDe!{?!DOg!WKtPm0{FZTN_cUA(Y_iX*D9G`%O4Y@Y}>sd<$iiD&a`ds z{VKSQLz8cbz1EbN_m@kdr4xE{-Iu(li@aL$6NL=K?uCC;kbm76TGldZtvh^3_YYII zdpaS1<5YKql3uYEq+XbF%A}!~IrdmFO5d3LF6f*ouPdVZ8@26fm-?WL9^uDVv|U2V zWr;{wcr*Z^XNq7svU)KxA{yUS1nc5QOt(%lZw_jQMfDhcn7Cn}j(`VEwR@@3PY} z9ys2*F~jmlUxKyWo9w25oO-rqw?p*B)nU%K3U%b2kawD!Z87{!wy4eMWPQ zhMiui$iF<(Hd7do7)udE;QvC>eAJ8K${+r_zNqAqRqS+3pI%V)+ox_A5BKu^2qx5t zlgAM0ao)>g1N6Zaw^{^;0RNadl&o9iy_ChNo12CY9W%*A$mNuO&hgcDGDF66L#cE{ zW|Wo1n~#|Pb_`2*|B#5}91LFbc}2pcoZoMhf~l7RpSNXr>&7hZdv8jxPuBTGEEL!H z9e8R#e-^!nhJImVSJ1JKdmaVuCMfF zZHS#FWJ;a9h5wcS*sMJ?SCm@cu7B_=*GmV1HuuXQS&(Iaew7dT zkL#o0(?X#>P1g6q%s$Q9{u)E2F5PSNstidWx!E!Z=!S)@JOm>J8k za@&eSK2LDq)CqmdCEvj?)d-3Fsd<{A_4;J&>I(yZfQ}A%@c!c(?Fx6JGVfOK=jVVivrQbzyET z*xvA%G~))}v3`Rf`cA8v+O@|FdZkutIVK+5zM65WH1?o@i&1bVT(uVKn-i0I)~@nv zF}g6lgJRzaE87`-RK+w6ftNYO$`j)k9{BTqKFXv`s_Q$h!ZH4+SmM4J$VV6v#I(5r zG^Y!=Ff@eS*$pHg_ZjNV-;QriT7xI{;8kk11Je%>!v+OoB+-a5|0RV|tw{d~i_V=? z4|ds*WUo*cZ~r7(do#nndqcHyi?N#>k}6f4`{4E3brL_$Y4i2W(N798ooK9YmP%cKFS7 zgiXbo#Cy_C=8Ar`7qiBG!tuMPSZG-ZE)8p@ z(x)YARykY^%%5myKH`XFJ%U%!;fRzqK1TUMC{=1kvGIUjTonUvdLF`2mBR&!WAO`* zb2KOTK;bcmu$P7KZ8jtE%NB+x*Q63mp8VZeO%EADm4;mop_CNrvs{MRqn{Hx$6_gl zEUACS)4Bq)N*)$-hDx@VlX14kxH}ziVo1bg8n#!`K;WaD{0N^@EW z$JHV&vDtY)PR)ywb^M{`CVI1t>@s^kMHPmM(n&hNmr3`t8uP}NbrIVDmv zS*p%kLH!`FuXeY_@OVNz*4#L$ z`Gi+L`#2`1zk&X}NAyU#iXXwCzWiQ25m)#m=bO)*av@z-$e(LeXqg&^g^BoRD0S8p zIslqQq(980img_R&FJzmE6(P-__O^mg{bjjEO*WMX9W<0S#UIbN&1?l zobF>NVSidq_Wel!g5yu&o+JsFtM2tqbi3a`koaiKYsLQ6rs91xd12gwW!TL`%uWC5LNPJ#Hnxtwit zExFjsgER{HREA%}0cE0_v9M^@VjfqwX2(DN$>{i&Bl@Mqgs3ev9Q)H;FKwfHjVMTC zXF@iwI{gYDke2te zc00si+J)Gzy`}_>NP?EDIPXfz>U^n+^`0u=haT6u8iUD<-9VYstr3@H_lVrCuV5vk z82r|C^yQu}HqeCXt9t@!5`tWB>v6zOeDi~7S=NsCAQMl@zj8=YYiqZszPY^k=TdHf%C=1(#b@MzC#iOZFbD~PXY1LWkt6O1k zP3ZRwEJ+fGcBgXyn7_LmE}~h$@UWZ>T??R(-zyS#gJRFv2G7N-8Y9t!j0~qK=34^& z9$=4WFE(rW*QbF#T+pC{kh}e{lu+3{7dBR zC9U{L(bk7!L;G_-slXPJ)=PL?;y%`Yma>o|eUnZa_V5#rV^a3Z(G?;urJ(BlEt5?- z-KVuixLXqCK#l?nP7gegD)I0KH7Pf zFL?Sh>s8u1?PrZ?N>6n(pt>>8nPoux?x{ja&la(|_rx4RNB#$z$U46LSEoJ}f=ll> zo;%n#cIu~oKGa0QnqO`ggLZlR3)W0gH`h2O_zzS#DM+2>;jMHu5t=+!VAe2oF9;i;>i0=-y0R^ONb@z-FELSk8;dlH?b^RE0Aq7&@Yv1q9BtQGf2*?X^ex-Q8v z$sHlwkbj>i%vtu~@bkT9EOZcR*&nK4Fl(;Dnq2=YGW{r_=7RIlIw#k|8^wCKgTi&p z`VaF1y6l}f!t$T5|F!5hax90f;wXuTZzo<#{zQyQLjH3 ziFH-!g;i)%AB^G)wOydDO{br=db-l#q5Sv?bU!JRGF4p#jXYf8##W#f3Xqgt|GlEV z&y@HTg*dE;tim}NS&@!}@iZ2c=C0iRM^}t^64R{hF5psq@Dz(E_FB|`wtMZaltC6r%j;?udL&soHz;Bo>7gK~U> zGD`}tI(K`(7 z7K3rgnYHuDLy2?D%)8b!DDPtTV(H<(Q$ zqo)S`=c^0-8oydxpkyu^_CDm*B0Do>aD3do`8advnD^xGTiUi5#VUUfbWbNR@;Gn^ z^hSTb#dV8P4|E6VBZ*R5WpKdI5l=gqF)0aH%zajGxK=B=c6on2>RaW$mkRO@9BHagmMO$<3i6BUyq0T}&H$n0#N;%>UNv9`^LrlSKjnls8SP z`%+KceWO3=oKH$j9#O)0{C*M*IsK_J-zEu`R8$Yt`S%MyEtY?QGv;U@VL0SVBy)sm zG+U!r;-fw~c^;!dmQnRE7h17x9V`oHCgMrYb2l4dzJT~&YU~U3Pl$Rkn(z4jiDfGI zwBZ3IEe;OkT6JlIVZ9p+?pdDD}V)yrkaI+2U20^gR}R zo?ir&pFOgy0fswb z8TOJ0TaG4~{kh`9zI#ZOUUPPu=YjR3GB-N^=fd_QFTK^(o|S&8Quft>T@KY5`hwC& zqV9?ENrl8-l{=o0knuQ|%%*H5GTYr8{60cTV`fdZf@L3E(rp&V1344@=e$qqgEmNV z&$+u|ILLym8-Yz6DD{!KYfo^=B;gP$w&;)>;u8BLu|Y4~Ez6rJhheRDA>W{gvNyC> zLy&V_&ICrz(!2JUR`;;*4w{;LLr!0$*~BtcXRlFOFQp~%ix8_HW!Gx-t36+5o@$Td z#By@rt&U<9WY1ppJsi`lOw$wBrSOP{&-|4$$-Uu4dRD9PvLs;|;;s7764k6ptdm}5 zp)za180p5L(GbDKy-g)X%Wumb`wlpy7=(VY!Of z_jI4qpF?hZzedgNA1fWo@UZ8Q@WEe|@o03zy5!wJ?8Q>5O`OzSQPyU)PhXj0fk$CT zkuN7#2$zKgjaJ zU^>6X34R!x4*!)r+b8C-;AqpUf^VDWfznT%L;_CO;?@29e!yMM_zi(o2r3f z$*quCZrZnj1%6Oj?1)5*b}zYLHjZ1va~)?@_1J=oGO{J;=Zv_?G>*>?+LJB5Te(4! zmsC={IeaNnbj@0oB7VjUc1hw|gW}T2$_oGFu5#@?4Yt4t`aSCe& z7~UMn%XiLXgW+P+(4RiD8e$y~Tb!4V1Lu=`dsL#5j)yFaf>s0#Peg`~tkrV*BfwMd zif)q-lU(TjdMC3rBm{n~^Gj%SCOm}!naM=)+N%O7#ef+UVYBm|{ zi*n~qUi9l)t^Hlv8JC-r-H`~d$g*^=KfJXAnX2dvkw9jGr3xyrK0LXT?COb-h zAn^6qR-1R@|8D__OaEwslo)2hrf-)`5q~1Ca%UxyXGd>GLg50;o`tgeSux27~~C zs!UIZ5;8gviIU0#BRS&1k@<1Huoi)2Xr6$ zP<|gQi6$|}%4ZR$^r0i}7lFoXdj6`SZu)X|RJNTC&~j&7WegKKs(y3X!0_zi8!JEI z>kmmUsB12VkNs>>%dN_n@zwsZRBvA3OxMT8ZGOe%EXUihc}c`IcR|f*iMZF)O46C! z@sCOr1|X0R4Ovo}U(qxdO;8@((1C!;gN&Q*l6?#e)a0SEI8YVXrg;nzlG;2S|6t?| z&tcv%k*JO!-YF9#%8zyv=B?5y3^&#hFfyu(K<@0-)*gsd?uUpUmVWz++ zj@u5n%s}-WO(+?~(X(^mRf(kGM^ut_Uh%}oH_bfK+&Lcj_gSm40_$i)4(*{k=T7X; zs5V&T1rirnK(|tK-@|4i)lIy3gafhrWwIj#c!AqmPh{k8c&?s2VH}K-EBXCjFpQ)D z*i@-tl~nTsAA|QZy~Eaq(%tv#$xl(LUoxceHa2lWr^tN|vjxWL)GoG>VTdf&x1W3V zwYL*9_$a^~&$#ah=<5*XQY6cV6o)x7Oa6YG1Em;AZbiAVc3gaJ6aNFh)2r_G70J$A zq#oLRRi9%@x&GE5<&z8q!6&o=1*bJqbFta>wh7@@xNjElpV9Een}jjbS?*LGNZ$M! zr=tJ&&g;>YFq=A>s;>lPDD)xjZ2dLLecSI@l1-8Cq4I;61R^r|n_FZ$qTyY|4jF56 z>-0T_4Zn8+UXeNS)2CTUkC!^cVlAct0?T>n%?4I*G3B4AuB^6Fmt#p$eLlIJMb1qz z^7~c3{5na?^gB`UOF`_A(9BR^%Vz!@2R8fS+Q5}d-X)r7SmBv?O>hLg>CboD7t!#- zrzoYuo>Qt=bG;_>(XTfN{~d;;jtNEwD%B8SK!U2fe!zThuCvq%p&{+pRr}MI_(Kyf z5_g`;IXN~x7pbgq>c0vy?cbAd+)u3tz&N#bxRNTiFs^a#lcBiA#8UW217DH2>Vpnl zI9Y!4hoX*}UtTt_FSE+KM_v%Qg)78CC*myE5(j#I{|-|&;Rl7)!W;1DH~PQXeDY_YchZ`V7w&r47GRqucY4@3nMpM72rx{=|b

      dKT`mV8cmOcPC&({S+fzSBPgvcW(V$*D;S1@Hm>oI(2ndHy&W#AVgl8BuqT+Lvk{Fi$ zGO@Kd@uMuIhA&w5#u5;gm)C29yxeYh?BK$N!z-48T9N}vWj{aVA{o1X4gb@|0}=H@ z%L_?WxYs)!P05CH%uKzNK%*mH9F!kojk~-k@Gh~U?T8!p%DK*S#=w;W`zA^DH^Q^6 zBS7{Dm<(fp#c14@RNGr&>TVWmx~g#JdBamF{L!r4siFL$VaHb|v;ECNRLz%)CKOLo zRv$ogo-T2MwC#U?Y5%WpB|EqMmP)9&UA%Jb74#%eP8{;~JW(qoY%l=eZ#sa165?oc zj~7;AMgCxD%{Y5v6RUY)T4%gM_+c|T)o%o)9k;;{W>RB$P*+k>1e3`=n!mhFq;p#V z+rZm50O-qF-D`68R^hE0KMCiV==Jg=s|mjO%Vy7O9J!V+cS!JXu1*?)y!1kt+e=lf-&I_QpX4xLx2EC0_c=Cg)!2by9x zC4q@(?xvoI&3HY8{tmIL-z~qkmc|ZGa8hJET`^sx%?%4&yH`}vXsCTM?WXl;5p zxQI=Xy`n4GLS{b^x*fYwH=gjb@4)Qjw*9^tSP|;pJ;8yp0!(2 zYjVOcbjd39;>|8lfSY3L%-K6uvzccz+nXWe_HPP9)4C`bFcj;cM5bR52@Z~PCcqL* z9!dYuJIYb}^wwCi<;+ERd-Sp{fw0nsWUHL36fs>w_1qw0-;$$oT{*dE)KX=hLf}Y$ zgeBOY%UYgY@#aynN|zpYZ#eCWHYgI^?7bSs@L$+!_II&q4Dx&I4jkRvZyco~<2~CX z3D2w%vHjmqTIjMrd4Gn~dcQTDVH9{?6!Y{zabEqr?U%vBY=A$EcivH|k3AT?p~a!y z5>m8pj$>J|M$YwOws?-g=>8;o<1D}T+>g}vbcKIZAzj^HkI}4IwnJY*zrR#oT+5yQ zEn$ALW87;F#i0MTgUZ^UCw_6g4m^kPK-_FC!b@mTptc$TM(>Pmr%R{ww#_`d@12Dn zYFJ*E4|PU1&-~goJ|DY_$s1df`Dq>xRQWe?BL}2I*h}-37H5pje-Vr$H$)RNDon5o z2+vG-lE^o9jWHF)Lst~SqYAncpIjar6ZS%5*z4pOV?;$IF2Y=zt!~s!l9ZlOR&Z(+ zje)^Qo;l9Fs2`o#bTD4uQ5+dsRCpoFux?e8npMPo3h7ggOZwe4t8ZnQC?}=$`sc^u z>82Zzz7u&%kFHlpPG~A@3*#FOH(Y%@!Cr%YA&)IF=QZBp{SUkNEeQ;HgSG8#Sxwo3 z^g@tr`jn#?1!a>+xzQ;~2JQ+alf76RxRgT9`@dv16%Y;@?ljychT5DYg@>{>1+Th{ zx<2pJB+T*L*_Ko+Vj1huUo-R?8cm-+<#R`$k(%uK+cDYNnUtPstN&c==}|?TVOfzg zJahZuT(2I7-@mV|zjtd3BRrx3^_oK!9FYv)bDw5EjD10{{N2wEf)1*m@#K8R;D#)N z!Q*9sDQx!mT#$8T0a^N706ZqHo1?~NZ`B-avfEt7LhaiC8kzjP9DM23{kpPD%sxj^ z2?k=KzN!8^=sh&4QE7&&$os>b_%}=2sW(XzC8shh{ZI^QV&{f)fFNa#$q|2&^>6QZ zm!N59;q-@3lvgBa+GpK`F^9F-zDQI)`u#MI6GIVl19sHGuA4|)R|4a`)SF0Ku)#Pfvq5#}^#wM;fFa6UuX=$B$CDa~B%L(-GINCH)K*zWT~JrSclx7E z<%Ms-IC@IOg+j5YT*Z@RlwqZgHKnVBePx5M65V17wKvrA9Z5GtUsevkv%KVORG@0? zckQj3avdGbUv%B+EV6xH+YPp55G0hklcE8SQ>=N^Et_CA%R10mOi{EPp+eWoOrF3v z>?>qlc=Jz(C=5bEhPMpuB|Pkl5ntQEdsmHi;fRAmWjci@X#P_+rvIOX>jDJ3B@#jj3p{@MRtfB7AFJaFL zcrXT6VYBIr+HYtvuJV2N_PU7 zqMNyC6HEsi4%bD;7_K6AA{)hppZ36$3@((9#v;Ysy0|}|9;^#otBeXPlyGev)U}55MaKk zvlIr+rnb^5Zqs`@_aDy81fJdqn!Q;%4t$YPM=cz-qYj_-_6GK&14}?ef!d^JWXVkO zVBvV?!R^!8z;i8P6~s*!d{sun`l24Z&G{0CubcJ{0|n2=CN6Y-1YLh;j9GrX89Q>> zsv=UR0@}%mpZKOBqvn%UuP$v2La#W6IQjLOBN zO1jY2)Q>w6I%z9X@VreSlDZT@GvAuJI3EvS-|o%tWF8COFnnH(t!v2jM{k?!Ms|R) zx9AKQ07Q+LY%B4Z{suf_slJWU0}36P69$&8Apx*Gj$9AbwD~+)y!Khc5u z>%#VlFtCnr>N$#TTAxu;SJT1BGL7DDST+tO&99WjybZ3#?OT{@U}z<{-CK~rw1&Zu zcm=lR%Z5C+XR+hI){1wC+TdR8s;(vhZwNhZV4x^Io64Qg!DiGxvUKs}-Q)tM0Y z-I3M99@ZvuGuMUW=k^0;*r8o!P+rgiG9x}wkL>(&Kh}OZ5U}TN zkocM~WIq%OYw z^oRwjnYwEfOR8%uejn#dY&H};uImS7;&WK5;mUnnECxuplQL&9}0Z%g~ zTKg|1V8w&D5dr@rSD~{VgU&fpwdyqrvQNnV!10JeY2d|v`3y*~)YYL~wiu#sbssZl zUy}iex9i?Qb`HCe2E5>mh*BBXJ;GIaJ5)BB;CZST+bK8((yep_W%}7u(3o)T3oq-m zHQ;WDUP3n*bUbf+gX&={dDq)e$=6VLFlPhq^yJcoNG6}2+D@5dSXacgxjQC^V}U6Y z2vy{&|MV^)x4RPk6Cw z#nyZ{Bz(E!LJR+_Gage?XI;(!?#n-lb`;q=;u+B)G2q@2_FeuX!($OC|9y=^=lz1%+FQq^PM8}DRyq!f~ zwRHz2G7I+bY~Fl^&^IXXmh*7t zPovY(fviVhDTV}rq{`nf;CIgsRc7bVQ zAxYEMba`@ULh5!rCoj_x8OIgO z13qw*6gN4NQ0xP2b_BUqETAYh)iuVzT32gZ$KsF%o5)dV^vYHuE+D3TX2SB9mp(p@ zqGx^=lpZ#!A}S1fB+N7Oa~MP5>A(2%;aoXU*#4me`le*`JZ@Nq6m;kvBl72|yrxgj zcY|UP`@7OFi!N`#uU^~6bj6i^$Z{r{OHl){HOwhCnKg>`$bSi*1N?rtfcHb05V+pm zH?!n5V9ipix7-Pvt>S~-u}(k9gj60 zgl2*s7b8F)QCTN-VImh_X-5KdrPV86QnH2E!~Z~_wsijYopx@c?(3WMVfH?nnaH-V zcgd7s=77L*(j~ZsMDPN)<-jzdF%<@RuE3~#pyPh%kT9}(|NWFU$TDMMa6|AdF#o`7 z1E2#6T;F&lWNsxBn(i5^%5}}D*GP>>1*m0wS_01gvsmLkK34QBRl^UoCQVncI~Pdk z{91zmO#*-pkhK5f7E2$=KYQ-6pY3JAPF2Za%SRwMo*c#<6Z8)O+?$J zg3)~+>Eo-MzkGRsb^xr8*?NH&VRn~l?}i3w+xr~#KT}WqHhmx8-;Lg=G*n0cNEm-3 z6nfb53gDpJ$5R|YRU7SpNrQX{fxCCWc?0f5YTNt$Fu_w$;d5|rD94`Bj_$XgKa@4% z6-A*_%J~I=C~Uf8P%RFK(1`s_{SI!_hbAA4A8zm*Lymm=GACbmGFhNog;jYYmo4(W z`b@M%w6~Z5cX9?;%5a*FSe)DQ;%*zvpU1c<0fPa~|2MdUBxOHTL5KwK#}JrN@ZCeP z7qO@UA@Q&FzSug}>aKzcJB8n0@F6*7`)>H)ls_8|U{;WkL#=RMrS$i~2Ewfz!M6S6 z>xwA!kio4<{ISaC+*ywP&$;vKIy@1SzAhD#=!}bm1Fi~6OrSgs*l7YmLoLvO;u%1oF@<8@#29-6ak zk!kMVq;L=o+!e0Q8(Tn=om90tDWwF7lJ#9gxmfbTmkB|_au zV*Ef0vxW%&?-LLDnsPMt05u*e>kHL{H!&!u65h&D3NommY=v;Jc7kHW-(NvhGW}{d z)75I|vF+NW7D9oNK zinROg?g+Jdi4ZR*Zk=Y#JH%)Kv%8I&bhOYgy5= zW!#_-SwG~l5EzCv)rS(? zK-*UKln zX?+?EYNY1}6!-)~!3NlL83_GLO}y=nCV5bc4d97IiIJb3iv_k_$f= zVo>|7!F{QHmH!9F3^LP6%?c0lpQC#6cg~5*4ANP?G|*6D`?M<%5Rn80oHP9=P=O+$ zPnUPLXKEFF{H=SQ_CrLp#Oe>8C`ZJ!njn<_QFfINRqS1t4gnDnq(f4;ND4?JAc~;0 zbeDukNjHKZ-Hn8Fcc&mF9V)4$ARyiF?0Nr#_kOqs&zUpxiydpNz2^+vkMMJklk8}V zrZ`P6`@|OuaGSJ+F3p!83rL47enuE8jmAyFkMVc3=DYLmGf!lAV8~lMYomWjB(!_C zS}#H|=Oko;$XO9Ox5l6sFZGg|zT&fscq`G*39FHsOP`6e%GDo^DMlxArLw!|1X>Z+ zeg;bf(l@VXn{A(8(l{N(LGM?ACTH_LB_wgf?l>%H8p|$UIya*{B_j2evG_jmJ#=_q zYh?e5T=0tLvzrrnfQ`K7RV|vrjKVrp1a1>1^SoAe@T5C`gF@^17+(b@6zol6$_425L#%467W_WKCt` z0}bfXgHuw_80~T05>e>su9R^_2JPjMkWlq5qkOX{ITd5l2reTM-loL*hn_m&h$UeI zSCa%#C^xx7L}O3m$5dtjqheXGv=~lpFSk98tp8=;uwZ9>+rD*H@^A_x9~u~s(kZ|K zdOb-a1mimzUs5ec*k)x}6GKHoW2Tw_wteKB8R;tANZo=4YKff`pYLnKw{jGu-?o{L zP|cxB%`r^8n8SvSJ~_Q@Uz0se6VoqJ?yDF9s7gq$JhYK7LQ=T6)y5*fxcP0Nc4QXC+)Tq@^Z@a7j#4Ze3Rq>zwU8R%DT7 zrQHsK8(zMAH_tK{xpSv)kG_@w$(%UoS&>@$fi(&<5aR>rZ0^C043~t%UpZ${fFQWI zvEV~nrW79?8B_u4kF-#AzIB}M7NuDE`LIH`%!FmiiPn)OoDcu>0vm=A1f?FjAwBd2 z-A$rbkMMeiltyf5aXpK^m3xcbc{okHsJ9dbU2v>qe3*}4-{2`73e+FIyu~yu0~zFL zQ<)EgO6JLDY4s-}$!DBMB``|JhzAhu$iacHy(!I?T3-YL1n<->O%hXY(3;W#Ro3~r zM)zv(7IfSqeUN{2eX?G?QUbGB2xl63@I2_Z8LpoYHG&nCAJAG4VGoSaLzI9l#%+A9 zkne1YR3u$LYeGsyQYuE!mCUbbc*Zn~q+ugLiR=~n&Ja6&b!zy@RTsUt2yTrEwPL2` z2k0jgTrMYqjxGAwT)Nj|*6Xe5aO1_<^<0x`^v6yncP`O&GQaBJa$Y%^-cuW}pY{?X zPhRz;wmWC)DfDvbA7|$%l|0_uy!pslT7mXab)mw)Yj;$g^d3W*@3;A6w%W&q4d3de z-H02&`Z6mtB9cOuhS7%Il;X@kKZll(XUF9cE}flsV>jbEP(%dl*+cJ+u6q=Rf9w;d z3vO8_2Ezyzt8KY~^0dSIlHx;>+)PBkAKD>bBLVziKndb5K2S~^tvUh{b=>@hYN}DI ztH8}E*AMl4q((Cm%Z~p#;Z_q9p>TC-+&t!Gc>D7gLNtooOjwd) zv5`a{XoF35SRY1FsJ63(F%Xj55Y6De!26CGKh8B2S?l)#{peX2zDywh4cQTffB0tl zuhOc;URIN&s(gu}&yFaNKP5XQqa2|R_q_gKpDVg{DY&C$UgF&HaY1YPY)<%i{(Rou zeBs#BbJogsW2!~cO1N%pD(W^H=kz$cvs}T^-Sa=+L`|y?yU`uj&Vyd>MbnN4wu-QY zx`tUk;jw61)z6=hShqV=xBRF&k|3t}9Ql6q6Y`c{gLyHwxnR{TGQ*X3@9(s8vTh1V zoKuVExeq=Ox;|x?NH}3rE^AH)XauSUqh1EqCKmJKxKZQ0;(d^ENJE%qchGCMT^i)VtJD|t)Uo6iuV0c<$C!*ip2Mp?R~6z=v&mTv4^z$4eC{wl zF(FDNo8Xb1sn)?AJNa2zrZARNS3~xZySh>Vd-@Gd&OF=G$N79p(l2*t8B$#yY&m0$ z9Q+o`dKx$OyYl=?JE$AQ;U`ZQ`g3y)pDm5nV49FJ9m`#UO{eG*7Lt=8S=oEWc9 zp=oPKU^XqytVx3(vc8vkv!yb+c0pTuvZllFU$W13D&#A%DcSgg! zr&ZF-I21VNr5bkL@P-Gxo1z&A9-2Co)io8Eo$97xW_a{gT;wX|d&Nv^`jR2StfATNgZ?zxfIRINP5hW6S7~T&OB*6*NA05ai~cNM zVC1Xe&%eakg_6meRc>Y1J+0$O&=IZscvAdhx!#RE3P1m;-iUjS!Y9VBldpm&&Yts3 zaX$_8xch867iFVro-tc6qsK!~eq#q~l--#oYNO!(?i9rCXq#Af26xh55K$oHSNG59p{ghzpS7Bno~u4o~a(wx@+upbazN|^RMqNr|6 zXH@y;?KHWE@^bFS&n(p5;yZ0J_kwjf^>|9Amk!HpJoi=*32XVH^p8?Gzv;0SoAxvN zW!&E_p2-%8v3v(BQOMx+_9OctHbgVL%pWAFkVbHLVUKn=$(OXK)tb2b|Wx>EWh>X z>!kK;m<#ou&8LkGqAc-_JlMy|#>jQPEfXyz8MoufsN35w`?On+pZ=xixQ}nkNWsj6 z3^Y(UiLs?VqWZ6A!ZP&*vE2(V`GX%1l*e4+bqE`u!uN=3nti|ba4a8OW!xg7qCfm> zlr>(=G*r*2Dz>ShmhwqOO-KFH??3S|zbnzyoUVkWF~lY#ckVrExn@Dk(Zx1{xh4K( zu!&Dp;bO#xz=y=y-B0kDd65fIobB}_%)*5|MRIi@>J zjD{-$Uv!k7OD{4^`#*@5{6XEx-Xzagob=CqDDsWzgN9#&EOY%cY;DVh)xW#$eq|F= zVUkTZz*Q0cpheSN=qG+pYu7NY`GWK{G3&FYVjQ8&ziGqjN;6x|hZqVvW8u;*K96 z)gf7_#qG`AlFG8Y$zXT{oJg$Djd&%dVJVkyQqrT?Ib6+A?JbxP3fk-Ei#^<1?{;d+&yjk%fAcDmG*DLM+f%HSR(SobeU=AJ5pQOwo^2#qvLoNfU8w^<`b8t4%zZ z9%av!Mto^}_{nH(m5`;k4N+XeW&vEJEFGQ%nyMw~&M`cmGxW57m09`R>SI1+6}G6s z%%f>irLr^I98=B+`>d-NMp-PCt~BvmJMmm>oNY2W!S@Q6T|fLW;iHb7qd(HZ1PA@l zqAsb)86j8ubv(XBL;8839< zWmexBZA^Usq~qGG1oG80opDA^)_|${R>s<0MJ;0+`p$uY0->v3=qD{ZYk%+lWl(hH?SK;%Mi8 zLDd1mGTVhWmD7A)YU_(gJYNeM=YGZ?#~fl|v!<@)E%4#zicsTLws$1Jjft85%!b#N zY&AofLf^E`)P@&=UsT0!b6>|<=;a)oWGaolQapCX___4AM-nO=bJ}tICx0DUTQyY0!M6;etlML0JG8mjFG~KE5fF1`XPC9U_+09ed_JClr2U_sY-vJZ(uIp;$e57CJNf$O zGwJWTzX8}yoL_^l^52&2uzdDKrfPKVXm%s<-e#p7Hsy=?w|8Iw#IJfpdUiBrPDITUb1VJe zP_BZaU`Wh239OhcU1R$pc|$T`dpYWgB$MB%7m0TgNb;LYWS`k-`W9w#Mx0Fhi%22~ z0SR9alHfPLM&SG=5N``DDx?2w5~+@2OVif*6&_z>6Y1%_IPWSW0<5wUr^}q&-w?at z5SUol$^=OmN$kqX2mHY}P0w?t^luvuVUCR?$hv$hyDby*!J=C)PK)NVT;k76wg>D6 zS``A_1~&rueU(>e!qI2yWsn!o+UIKeY=Hm*3txAmjfAumLej9-s_=1Sx2@v$jfQyo zpP?l-E)EXPqEOdUDgE?*3(dm4T6)v3L|EQ75{bcFI(DTP}T$A6dmq_E%_PKer;tL@jCBn#l3w5>6^ed5bJnw+D{pUC! znfKZpLgJ?!B`lbo=gMlf7xAmW3DZK9f2shzT|}mz|Y_P`%U*j zZ%l`;Oy42UggW8-6>Mnd4-s|(c)Qb2de3~AjY?-gl3##mfuBDr2?Y07nztXI?){vEA>jpIYdmGKwS$=ZXr)Gb^?h{ZzZQWak>M>=# z+MkHs7saAs_rr7bzMK(Yj49^z=H8u0U4SAqQY88Sj!5?Ha|y2*v)*^31@U`LUr3AAq<|=jsGtxe{TU&lL|)4}{VF{h=XD)U3m(nqvBt$BO%P zhsE%@Bio)xADR2pkExTzUov&lXCM@{Pd)`(ZprnJusHmfk5{-&=_Lr|b zOuPLp3$gTD49J3?3W|M>+$TR-RQlzui@1agNx8ldm&bCJe9CZ_SltU9K))2=<=Su& z3J@pv(IL~11iy!X;YAv=`{_v7& z_s1aBg&eM=2tM*QZO311yKY4J$BidzEQ$*U?!Ce%EQ&kVgo>{sP{5+7#QAQ3MR84W z<3L7}8Vu^9iyG{(p}j<(sOdG}h7#`Y~Nj)JJ1# zf5px;G?mG^5uv?XZ*+z8sSW(ti8ku}Je$SaQcVK>iV52Y^?`Hhs2s=BsG?TPU;T;l%dsJ?w zOw3MCjE*<$@}I_K{n9~$=CR&=#%u>3(wFZ`d$y;SM%>+*AkTI}ay1G&#D>Fuqpk=o zyGBQ?J?oj}dzk#>{@D_wM%UsRkKM7=b7H2%zSTDqT7>+I$FjWU$YV z=SUVG5=yGy^;7?gcpQ%AJ_?qp^I}nY8#+t+N1%QaxF`7$+P={@>ErqO-=4W)hz-5$ zv2bDp)*B=;XCK;nUlveKam5u%1M&UD*aoZt&Nd&8(E=B?Lm4WO1_IA1>tzl%+`}KQ zT`pGjsM<0DG+mP{*1lwo7Cf1r9w=Y$6oM@?+R2ut>ONgh4V3{GKH83|U;%Dv*&fWwi|-f70KKbPViUSEfI+p(GX z{w+v1W~0F;zt<^cE2j5E(&w*U zU3DpukrGHgYoQx1OvmML_JPNrn3{YS2K0yWA@3XSUbwFx5UCDiN5cLVJK=smXC<1! zkgJwqD~HQW3D|Ug$k=Lc7SG9S)`PjDE6b0S z?g3P|v)Zd9mM^27gSO(YHMo)W{hfNyb~fe3c^|=7!!N_{7FXAq@?E2h4rAVmkTg=H z#Z;`{m+Pe1BpmT{LRgdG+SfSRTBLM7q-D2hRIjML>aPsUU$Mm-&pyrY1ayH4u-6dP`{_4y z!>r%j>&LF)_55$EuM;#4jiaSkihVN?t_u`)JTAhmqW^CEv?8&Xjd}lYiq_ywG6n4# zi*brXaEO>60N;@Z)0t+B=-+0Xvp^f-j%`AZpcM*$aULgzA>M;*dJNC>r#w3WzCiYeB3yaw>79pS#XI*F*xILMSGv_ML&1L? z#P#-TM2-tupP zZmC(+MUVo_l&tyPZ9e%M;eHD~+5#QGg-1pbzG}(JNpM6M!N-aN z*@^7NG#1@KDzlBax#QJEjd2a~JngDBenYW=t-g0kzNhT*(SlxNh9u*X=5GOy>=V`h z^Z7YQ#g&NGp{jOMXYG7&#_dkEk!>DiA4oe0mKx-zk%Ke+XQDtf8q#tfj*+%ZlPcU_ zpf7$97t7cGA@Esnhlx5l2R|^>{VcJWm5~s_s)~@|M6sFf3%7NJo(<(pfCuB|dA{)B zt<_%Ng(|rfn-z&?OPX=)OJp(lTyYC}g4sM;@jRaIk_+pLeQI!psL!nLI&3m)G+2wC zoGW5NNaRXA=cFSykO!$`#5}Je&;6C)!H?IUNNDF3$!G{{&`d+r|C$1Y3|Y!V%I)~shq|~fL|`FtSGm!Z{R}~c1~(9j5~u!G4HE+c z18^X2+gfNg2vo3s9|6IE@*tOlKmTHono_Nk>d~lqUIDCgTwPqYYl8xW`Nk$AXWq_PW;-oLMS?@pRIvMexV1lhU8o9iTF}A=*-A6aiUlYN zuyn9@x$6r#mEiWT$U=mYQmPDOYjmm#@Forpic(>Nr@}Bd2T$@>2nNl+1qKwn>9O)6 zkzO>0Pa*+{&+oNhL*5Nq;xExaL5BS-8y`dy-q}73 zTlSzoRpXyBZQGT`SW{fn!NH|KVors$xAv-=427~pSyZyU7Y{3v?$hCjxQi+ z#5&?ARf^I8a70ox%VPG6DpJ6se9ygnu*F=^0F%j!U6YLsKgrxxqAOfc>U9dFZ!;&^ zSW-8L^Av@Y#!&RU8$3!Q-yQYGtTck1wo)}x@#n)4v~;_X!dlSAO`S(9X9%>&fU9V`Sg16DrT zEFa=Ru%u{iFe^^^&rmBasPsJ(U+xWe>1+e<~=(Pp4E6&3yQoxlR8r|lKI`3$u z)w~0MErmPbcd`zBEpxlNIaf!z1eF5~eYPIZ`7_1dU^2^MA;5a8jN>t2GXUy_Q;h-S zp0cBio$D#~%eopqA}@KMB!MI7u5Jiq&BB$g2S|COBTj`WC!wxBXV4cYMgZ@RdUg=7 z4=+!k1QUN`l4;^D60h%tIur552o3`PVxWGv8yF&=v$Zs+8rHiQ`!@Hdt611@`;FKBGY zCII-!1Q`w?Hej_vFIkl==>UQXWIMZuL~{XXI~6S|S3E`o3G)}p=sv>cKhLn@&Ke|23B1H_^ksB^BzjY`+)zSvb6tL60e`Ie>d~!|=9Q%3e zsDZj3GwFt2`(A2`Mp`{Cu~!WtVnGNx2W70e{>@#0eWT+iu10zOcROsuZFie;rfYj3BeT1-LSF9ZbK1r6g=7fhZ|TU!*EO} z2jLflQ2=HKp7`T>fiNH0HURwycD?#%gAlQn__Yc)LFDXnWnT@|@5-#@c^w~fF<3sh1#kM~K;Dt|Ul5Dq%TH}Fs#Fgj^Qx}~U60qqk^D8sp09*nJ zVZhB4c|LW*<_Ip&_&^~5*%e^Jzn^Cmr&a7O`)gGXI3XM3M&W$E)s*610k(mxA&jR7 zW22(Kl?G@CH_Wm&ZPHMAl>%WJ=~;~bwOybA-{hKW!DO0Qs%U*p>}Fdgy)AuX55jJX zy07Nu?Q)%38c~^N-)o)Dx|P@XrR)`-O4uoG-F9aAYRP@bPPZyP+O?55RFED7T3qf9|Soe6#><17WrP zJm_**s_Ru|NN9(RH5`5KRKH9~0B`2cw_yUU`%AbG2*qi-Mcyf~RITV3s4UojYA`Y3F>5Nm536y?Nhd$jNq7dNpaO9^NK( z_4<(Ewa1yiy!ACEu$f$30-*N+Q)`GadI!{e8B$U{KxG^896iFHJ}u{rF5R&ofULuE zeSyL#VrCQ^&$%zH@8o8LAv(o9$T@o4Oj&uXuX8!TKsQtPzlppAO8m7?K!xkKx$uZe zEZ-6X047A-h##0THgq`%r7g-)3QYIHMV5ba)AakL8x>;yL%}kj(Eo=Y(F5$@;NbZ` z&>A3g|C;-@AGL|!1=I$H0!r0ygp`&N^u%Ld9WSqM6k=g&ESLF z2dI^UJ9=F*I&(8;c;iDh=Tq~VI8OK*f^Y zu#hr+`v>-C(QAUz^d?joS-TaDU*tnVI+zq7-A@InAE7D&l<@AmI1eXZzlBCXyV|AMz)5A3pqzI=dPESUI5hLJ8gOjk%^MG(sSA(m| z-|CTIiG~kEYRDmfr;Xom^gs%lrE0;@mZf=o{Q|WXKrDQ!k>7;q(h{TCis|EoAUNLY z-wFhJkO(XAp}Z+lZx$PwRihim6FV{c-wo@7x}gxVSrzVNf{>PyodEa2xR}k?EbO1R z+bm@wX`yumPf{iZ2OyFXz(7RU^|~D%!aN!(`YB%45a8nH;Cp}(4T0Kxo_eH_MjHTv zWp7hC3U(PT0wmyLzE>v$;^X3wcohM_jLvzrc$~Qf=+iE+bQB6mjVhJnFYLWP@$`H- zekpvp^{rUj52|e=kPM)}got&37OO$XgIocU1;vsnNEV1>g=9cb`4EjGMu?$;?fXs_ zCpaI362uxHFCqT^u8k(h()CVb(9(!f`QQ$3-GAK{HP>F-b1WSjEMBDme82<$OQQ{k zOPYCAZ@&%avr~1EQ zf4Q#@g{h!R1+;G=hjgb)%%jBX8#PI9Koa+XLLt`+4@|IKr20}Wb9FP-PQRUG{Lx~Z zE|%9YIhT+)D%42cimu;#s;e-c_Tf!N7EzcXNF|<;K zE)21J>F7_=g&_WLyZiwA(lun3X^$Wk4%6-1%LoKm3Z^bQ=-4MufU?GQ5i*ZGfD-U%5QeV?hPA3<{dSu z3iy}e18u^Xju}Z{@-RB&O{6Xag*@_vn^(4cW1m2f0TcjY0b!sAC1N=agkL447EqRi zx+K_-Dw{vu;!^V*Xtd=B+_<32=OmE=N624MilidPr(nkPzkdsqHxQJds?@G}$g%V% z9+3bc8mO*e`=$}&fxke78j1;#yN&}LB`F3v=49Y6#gOG7V{wD@0`b}e9Kv9`{tJGt z1XzMO@Z=em}@68c-y5-?%mf?#ioWZC(7kD$lhs z3A(2q9uRPWJM+SPK?bOT`9c~sfRGQAGUHi^14Jcs_*dlJJ7{pZWz6>yNI8vX6`3dG z74H-$;z0||8&FI6V!f0J#Zf$1+QTMh{ALcref7M|&a)5H21ICt;#?(C zC`7KYbQY}!YX-gvy-U7`Ojs9(9*x=q;to*V)hPw8J``gRD07G3eGAP4p%c0_ik+6} zK?_8V1l4EI;08v(^E5~J4)p@4{-CQ0~#XP)Qq*=E(e z$C<980I_cbyv1Gj#_z`?+A2_q4aE*0_d5LqWV7v`<6%UO+r+?SgW6VjgQS{0%R!nYY^RUY>#&j+`nq z{_~(pEMi5-(LZ{mepG#*=j8_-c*bQNzi34X>`W-;I^$IH5lC?$p(d&SbpmBpQ)

      z{l;{450}8}vSsfU>Y!`=kh*>EwYWO=ja!C7VX34{euLFl(%k`D^}^&S=9;B z(Mcpk#TU%P)e6JkbT;l2rCqkGEk|y#B9G`6uTd1Aqhs7bK|#Sm$$9upEaTQ%W_BtH z3Pv6Z3Ld;Gt*`RN(BAZcv*Ej(dUMtB*E5{S%e2vvFK{>*Z_yphyYEmF-BJw=clytG zXGm}(RQD_YyEN7ix(^^^{%JX;pp(d_Pg~Ad_Hdau7d@Zb6t&85Iy&=gENk5^nmum3 z&Cu1^E{|g(Wgxd+ivD$78V3XIeLEd}!!4X$UVOBmTlB)U)HD2%xV{&PMZN-sN(Sdq zJ^vDLuy_bieyR9Sd zF1e869gVubriyr|v0>;U&j+;Cti^1?dl>mFy_WemF^aD6Qi~Vl9*nd+zsIJX^P_0v zBj5L;n!B-7&DrEivNB7z0_tTyU`rJ5**ftsMg@+^S6sePH(j$4mfRg9r0>bD)pB6n zymZjDNi)`s;C?cA*Fx{?jz3$8c5a)>zOEFtKoC>V2r-*4}Ue~m~$a?#z{LoR*f2@Xdy6{x9gm9XB%P&D%hmvyC7bq_c8n;AE;JkBw3vTSe`mqH6M<}%4{Jhd zL(RxaEJ7;;^J$q-`9ykWN!hCLMp~PFXmzofpJR~9{(bWUw|JNI{H?wSO4#{p3YzZ+ zDw{vIzRw$y1^UKT|DapgBivL9GA$AfeA43`^FmX|$lfNYC@qK6VPSbyn#6TXK&X-* ze-^E#fu_R$&icQqA?+Z+Z*{dE0ST9qvKR41+;mmS;tP3qS-a}3WNxVtH2wXQNk?qr zC*NLc+jXhlZs{)-#;1^YKix^0`*huKrGItY z=ribm9u@huDr(><@q@$YVQ2Boo!AWaVZ}&2yBf0l>lD;JWjEr#2;W_Mzw2;?N6T_x z){L!?Ybo@XrG38UY^mk@bX#mui+z8Bs@f~_8=1UVZkxE|6g6g3#>rYJ1LfofsQ=kd zbyE->XNqWC#ar-E`k-jE)u0qF@D41jsM}KNthj{tR4L4eA8eBeGo0D{#3N1=_<>&D zsDEzW;4xI}Y}2HA>~JpLO*~19m+@+5RTo8K>cxET!ZOUnmyU6QKT=d`i_$c&2YQ>8;VX5AkEsZf@A+@L ze>2WCbQGvF&S{D#54mL&MUlU&>g@BP@|nZlp7x>bjm-mZ>O4w#=3(x|=G4{ukwdze zx?S*8EwDg7KaUUygV|g-6X-?LnST5G5A9u ztwysGR-9g3*X#WEvdOaWNfdTDiu!kVpB1jx^Fh={H0O0?Uj))@n{J$RUyE&el=o6^ z-}qzAs;z%wtM!wTn|<4=?`~OLXy~={srTclS3aLlZj}EOpBqx-6X*EKsh>|$Dnt5x zXur}9eJ7+-P}sc{F z@fJJj>H!_`o8m2Z0S~sTHuLRk%47kb!L-e@7}J!aHz(KG*WTD^cOsvCKubDSkzCaf z>XrY9mUQ{x^3T$f`PYBU=*H>LOyKb~CieV(gC#_nlxZUKHaDD#e$qKzJn9}1V|u?< z-p8&WYpqWB@FoY3N5lNAjKRFW)z|cuHv6QJnI>Nvi*=_-!9i9WRR{48{|?!F^tne< zhHKXK-Vg>7`zbg5C#n)RWiGllDUeC0%hG_iLvSLcZ=|%)#CE70Ul5OF*=-WH{wu&? z^0P1T0@|I@%fQOT`Bw@D0uj$qNLxRi{@VF8W2YL3E5EBV+v;mgE>yntzbZJr75csE#bpQ2&*C>;k(vB?CLSw0_U{L;R|o%^ zQGTno$sRb*R6hCX4$U0L@Wg&WozDN6z)I6jdcm)h+)?69k~NV|j>$Le7}<{h z_Kkane{X9WOxZ-e8Smz|roL}@&M`T{yJf}^<4L<|UEQH2(adc)UXc9egGGEN&O)zi zwNS%saXrIHpio}D3_U7-40d7AnZj@L`j%OpJ|BlT99Hz~3x~n8Gk$M?8VZf*pJw;eR(ty~}Kr zT9|Y@TrjNk zFSX5Nhqk7#2xjG)-j)39?-clPu8&@vEt8;`%qx}V9hSC!aKGlFyy@rZ_}Ux2q-Xna zFWE7#$9N4;i}&nnX0i3-dF&TZ|0|1*oSw?KURaU_FFj7^5m=?YmYPwybE^BZJae+1 zyX??x?i;PQ6U%g>-Sn|Yis$^pneh8R{u%4)IXW%9D&Kf_wIZi})yH#Ew-l%Oo}a`0 z=PcVF-M$|g6bs9`C8NTaNaP#6!rY~O}3PWT^FaEA|6Fu7~9~G552h8$j5XX zt-SE-f>}K7{jx$*6m@-q_R3OBjbkCy`10X3Cy~?MJY}->N*y$fav7f*k-T_H z&XJPOhPWh3Ts3IpYLD6PsPm;gu3g0-?srd~_Odjxv%NV_q&E1FZuo6!A@yy6Ncwur z8LjX1jWkC$mV9=ZGvqzR6G&B*eS(cG(dOK^F60+mzs*rf=CYBPY{;D3&Qeu+r74Vg zGb^c*-K&{y_?9jD&Y7$?RpENaq2GMz<}{JJ-{i8CToW^Q0^R{?$=oM&z0DOX`jtbObTLH73pRw^e)5)Ry{U$N zgDM4d_hDrV zk8x>TU}{WvqR3P`^?kK_zviX^$uxR#ba%fzOSima$$#f~a(3biF%g%EJQ(Gx!rta^ zH%>??$K}sz{&|(=8eD^tSoHsNINN{bYSmJ2EJ5g{Cp~gd^UKpdHP9OKe`} zaO2CahUd^yh+9zU#@JET4EYBSpF=}~%HJt;mPYIud{!c^E_WImS(G5G4(( zL>T?f# zPmhk5lgfnRiSOX^KK-;>M@K94^X zwuwgz(b>Bc5XSlYmm}o<+J9q*?-H3*yzIocCbr0FEP_3AJ(YCsm9+~R*&iA|UF~`L zdnZ()x)$zKH0QNFTr;B!G*K&!dzvIY*H!(r?zRz$otD)I(O_RXZOVPQA7Yxa0Yj(e}*ItJ?^Yc=;F!1V7W~*EM9F^0nf+1P1l5YXq&5L+cy~;{B2))wjhQ*@Ah22@VAh4~#X<*Vc*_ zP}P@ZeQL_i)@Rat7CoBc4`^SykGa2|tMt`X(9+H5CsdueXjkoV^e+jTG1`2fp1Wpy z|M#lsz}ZV(fwr%!9+#HNetks`O3y#3=cZUGVU=r%q5OAPhhnAjqPMA;6Xm%8B|uv9 zsexv1u|vod4zAY~i~r6dY<0zN-ud|uwYX*&WmB5Dy)hoI{Gb)RczxrGeB1Ww@y%?_ z;?p6E_}2s3p{2||57m=*uaxJmeg+4B`DL`*@S5Y~v)KUCr%o@A-&kWS2_ksVULBbxf&^0-_m~Y-XTeed^1Pl<1G1An9*m@?@nX^B^FO!i{z>nMz8dR zZA|?`OcNSB^dzT>>-~s5wX)#SQkjrhW*$Li+@%y!x5%( z8Cqw(s7z~|LGi;fjsu&kP~~lQQgr7{84Q1NqtSl(AfhJeQallCfH5 zpR1u7`EPlq#!+LtSsX*WLnVoD|KHiiHcRTLcyt=PvCqQ(Yv%LEX)BrL*O63_|5ez& zmFmB9sJ@ddmeksGCCTf2nYZ||&HF|%ds*}BH=83ig7e3ogymcrUGr}0*=;I$MQ4lc z^%8fds_=g$*78!AwVtR+h+*&_#0%D3&-z%->o1K)Dh}l{-AymL-@hi{uAXj{$Bz}p zk58-l>=)iwX=1#E^ES8Th8Fv6c#;%x?thK;2P}2R>Dvz|gQ@2SUB#XJR7Ac})${+$ zV#sx`A22Fz_8gags$Y39IvX0F>O6f%I74A)QzSQ6&E7m*&)NH-DVJJH{t`x3PN5E| z`cO=OC!xk4PiL1CohOzr-ENv@iE>(ntC}$UQcrwb(l)<*zx9Yyr|eA(4XfH7%9QOE zN>O>|pBB7xdAlHtb9%3<4wj|&g=5qgIc`z^%4*rOIs?ZZT_2U6e(J-STn&cDQZ%|t z3!KlIW(3{+lp$;}cHs8y^W7GPF`@M6)Ml+Rf$2KTu?2CwEiFx6mr7~wbQ*aU=A+Hu z!A151Tzm0f^0c&7oNs8BHuur{&#vfI;Y`Y`EsT<+Yg8v!k^bziP2$}5ezTu50_>%I#vv7L-*`(XL(r1#57Nfma6U8OAw`cB)kgw)7x%Qlz zc*GBR1rg(?-W9+#*|0`Qs^NdpF&Tbh@cKsYU<681JpU^O8bRu3>-LAw%rqNh9km28 zLyC`2w`wTtj?2A%*M57vdNv=rE%eu#Y{K~0>Xc7NC;7&ku@fktY#J4RzkAz$rr_Jx z5%syI*@`cRnIRx6pIc_{);3Xj>-+3FyLoK6m!sVJY|JvbWZj z@(%y^f}hgFxM9V4ObtDCtF?xqTKz;vVI1qamzMSDD!1+hS$#$wq?xQrDS6nNPX0B{ zS;qfNJU*76gS>tqrt7Tb0{^G+mFLf*&k3c%zSyG#Si)4aSx%AO3eB>!l#`=H8cHhq zDH0rHs*E?hO1%7XZVoVg{aKt_OET#&%@&p*Hlbs_@Ide(`Nhg)i1zNI?NQs#Cq7P9 zR0ibuFXK!eG_U(Ac$5lkOOohVV^!t~@xtQ5m@e;r_o*bk+{1s#o`_IOO?|bHcuIio^s^!-qQ#qU>6}`YJN0~auk2vn=UMH0^lxfmVFLc|R zi{tT`j3X>R2(h#$(6-+zxD*g;a7_1jsLlPauoZrxWc`Dr(~6PD)v|_hykrxdz7V6e z^)0HhM{H*-3#RFjDk8a2B~(w@kCI5PB_4S9w+Yn>w7toxoP6bGjQ>pf-QV{wNxnPO zc|A;jVQC%bojjjM+mveddMKFdp1jz^^?%KV?`1F=ZQqMK7|=VUo@mKFj$0Py{_*cp za^DJ{Q0nT{49Prwm4=f(ryvs_KVJMVLy-ijg+Z*)`ERGf>%K1;;1`ZR+e~{k{1N)| z>@j8t`S-jE;TwinJWJFPtI62CsrV>Ko0pPirFY$owds17!IRiu(^a(-m>9`x34G9% z%zgJ?Z}COhG^04RNnx|(s@hDoqp*Ht@D0o)+1Yyn6hFzkwHmGE4*p5!B{hsIyQOX# z2W;mt3}Z5WeUDvVdj7lo;RbcwpO-urO#h9{af$NYFnN;WHyEeDqN07-V+9W4l$Y+Xz`%2?gqY?c1QHw?1EyqJq4X< zbr+wik*_?k_ITb>JT!3v;WHV}_?7q3KMRQR+z7phi5uTPomG=J-O%2(_H8Z}*DA`T zU0Lfla}}}ZNX{J1VKm;Jy7IxzUe2W!a5zeExRzpmUaNzK$>ahlcIb!lRn^~%dHFw0h8CXSe6DZj{?W~yS?PM( z2dxGQzhxMG23V`LyT3>~Xr-M!7m9J6YoBhE0<25l0hVJ=&3pFhme!3+g{`N%L%$ua zpL_ehttuNayQTC15YzJl=#Tp*A?fY^grJEy<1hP+3On=M%0GWi8Jz2ko@dS6UY=ge8CQ+!_FA>qEiSMV z)Es0)2u})ImGWw4Kpt&$JeHQLDEbhM!b<5}WWR!02^q6}g&BMMn48y?~n^$#E$GRWSdXJ6s0tr0R zaO$wfPF1h|&)_=kUF2LxABwx5jvCFThF7XXTf9#at~@45Bz&^gT9-z>1jOb8X1W(h z`4-10X^v0Gah6N)FJuDZGAUW>7{i@<%DGc}z}*Q|;Q)i*v9r+W@GUmE7WkBwZ69Dz zZee1k?^4N-`&f{vu2a%}eS@XFm|GH%Fa#!&KFhR;?-U_g7}PzJ6VzXQ>}{ST4C;#l z6U5!x>GRiA_Ap0mklsa#(jZtrnX;&h)gbCIwV)Op`|{E9=`qpQOX!l{YAK= zd)kU^eJ!X#SI7Q7bW)=Sb{D^*zK;A6X-ynN?8Y<@Du}jvH+Aoj`!sXZ?yKnm*VP^q z&TE61NiE#+n((jT_#u}?cTNPdT$N3>C+sCZCOyF>;158upz*6F3kO#x#`SOp!Zc%3 zOqxy<@(yr9Rt}v7T?rBD*C^$ZaRC;No|w;+ z7mkb(4)7nDGjMR@Yp4)xmcS4FLOf3YjT~;yrx}y)sy);|%jflX0y0gi5=3Q+iI@U8 zUwwo8nf&AeU9>V)D;r%r#MhahUh0?~Q(clZ$+N^s!-_7G_K<3q!SMDgoUIcZ#2WqJLJ0!S@q@MCFXlT)2zXYHi*a+TZ+{ek}q$RCz3{64^(E1X5k&q{s} zZb|4Q!lFNX56=Yl3Ad_4H|Cl(P{Q>CiDKM++?BxK5k`;&q|ayflR`BkU5tMGF`$SMm}@!@}6dN`oFZS2-#|_ z?@~nKn!f}udg)=;;;x!agnc)gw|c9V$?(x6BJFjLGjV>Z~cN#r6q$NPXm<)*AGWhov2bmw8frI`z33p; z>>qDw-!|CUFjd$6P1(?sf2{9yZRYq--N$*s+&-!GTH4e&ce=H=2W)NXEbc$oSHOEV zmyU{*KTt_|GvYIIWLz?E(wu8*X`klQYWR{~4dj4rP=LSHNunDnNfoftWec_d4X-miS4{@41a=>Cx|_7-VfgN2eaQ%_>Y^ zA;12Ulj_e5WP0$S- z@~1@7Jg;pTiTqzT2Bqsj=JC*}6u-p&WVgiVNQAGGjfSJ1(FS{8s{yMj2cGp0XSV%2 z$8XL$HZ7iV+j3Vuhr3SuJkY-9Vg`NV64ra32#*g@k5xtgvVMCADTd*J_kUxVYa3|r zmByx1X{YV$tbe!^Ilr;gwQ`}ar(<+0GqUNM#4m9(TO zO6h&md~-Ot=K^;p>BmZAJh2!$ClwoeO5zOJzE;5%9I^Ol_o3BmPSF;96E0g4*Yhd5FzYsw!WMz&fF>Q(kK$G-?o)>dz&+ zwMT#`9cTO#XcIhEcuN%lZbCO;-{{tB?Vu8%S-{{}+t?Jlj(rFcs5VEe*MCVGFnWQ` zGdM1nXu>2%i6j6^IYQtVHxrr-l_;d{pYSXlEcCQKQGg~{jr+()IYZJ2q>31=WkJEB zwTb&wNATZQeQ~!ry@;J$7;z)?oi;qmsE=)qtY5uMg zZl8<|WULU<%)iqvdv;XUUbK64Va03mOmg3ao#jtn>L(vEN~0o@>^%7U0Ik7zdl- zp8NiR^l(W;7(2J3c&=U;l-nF;o$~=@iOKZjZ}6SN+eI~UUxJOfy_c1pZ>Sr=&?*`{ zO{qm6wRNJY2VJC`@7THSH%y^cP~O?>HC$nM>u{kY#iP|NvN5GUIa>X^5mx<>P9y#b5vAoxe2!C7 z=b#!;@3k`Zk@RPl24piz9T+WZ;CIfhDkhe;k~P%4Od2URl!KH=wJm4@6og}mVtl?< z65b4LqWA*b5o$ucS3A~zno5Vcu#f5UMQ;qRD>tb{a(|P&85ZMwc(x|)KoDtqIhenx z30S#ZvlHn!_Ec|K5TWNQMQERqJtBVrrE1=D`y{s--l`iloU>RNJz}ao0z<~tq)D?X zVj#v{-9X8Zlk#3S1C+MuD8F{#Ww+bY`H!0m#qT?)s@d+3@|@cJU}*^rU){8%e|`Lj zmd%s^DHz%Xy0saLBY#N1W7RPb<60AGXZbb|S)YLUJRE^tVEam^+5z_6g5`vbjHuUsP~aO42EhQ;}sFZxDes12AicHWz*^*gABtt-WKgY7xv>H z%$93Z^Q2$3I-HJT2CV+X9AJP1Z`v@vRwo`=X1I*Dwm3iXZ;Ec z%^aR+Ct2>$$Jv>f6}xrV=K4BXwR@Y=q8zwrNBunbW&AVkm(&VIugJ_Q~eC$Q-fUP zHq3$99$_EbY9(MrEK7i4@qLI7IwwUtalenemo9cLFT_sbMNxvERVnii`MXEnP9+WY zv40x293%veY)gp9U+emjIIN}V~>^5=|O$7ril!9Lx%+2VQ+QPege}f!dQGza~yMbEJoXHmWSQW-llHJ`9s@!txFfJgk!uHuOKNCfz+7AH{SbE zqtOQqVtk)c@9CZevLT_%ht(%no*6iR+I9};I}S%Q?HD}#UE{MF+4gQmD@NI5jy!Gt z)k<;y3q;4l52Jd-?+!7#WzJP5(bj)491V;pmHJxbqgEGaojzx*n*xpPGlT4%{|vG8 zdEL~w9!V7kX9uids+T{l<(u32ueeuj~psFBFL&^EVD`ze#x zbR!y@e%>^}HrUfQKoGq*UMFTPYMoE6+YvXe!Up`Pp+wzd$;L5FB_{hzfp_V z-Z#vfyj~jwy6;88O#`Jut&Pyf`X6;OY<(Q90%QS~68lW|h4#bJZND#XrXN<; zIcaE*M5}7sb!LjVpro?emvM6W4xT*25(&eaGDzyA7K43YIeay%s%2 zj`6xiQ$=>O2{1Q-n}+r3ULr6%2X7j=z7{)lTGBr`4WV=B(5>_7iVe^?R6Owwp&j`O zs*qjdUy~<`F_2-{4lxmeWVfhOUy059xntiEjM4Yv_5h_#;LYI*U zl?by({10%J_gG{j&RxAHJ+ORaF?k|mhB4~0YQFMNQX{wLZ5Q3(*NG5tD54ee4t`}m zc@;74J@;i~+w_4Y)#4t)Cq$bb8+#7-P*n>Q%E*$FqUhE7r zgXgIcE*25)@h!=rE3ZtsQj+smShe*=a7w3kVKe3odklSTB7wx>1nYV%Laer3T!m*4fpfhs}OLASGR#ulAcyYzn1 z#ZcVHMh5ES?fN?~+9qf5aBowKvfy#|E}Iab6yX$ z)qG;GLenGKboy~SC)*kKLDza)9T$e4nso@_g?SV;*{R6lg?k_Ul*L1>M!joT$iTCviHVS8ZoPJ>|GnzsYGUKGN(H{2GOYNYncX`9tTCx~bj(dBk*- zTIjHwlI#$tm0(N6)SI4^AJQ%ooxuO1Xwe)24r#|g4&%-P%UHDbJbf4aFGpAXOlLL` zWe-&)(wcbZkW1n;*bBrR^(0a?X+?Jv?IHdbU7~1Qaf9zB+z0zdStcx8sTk?&E1gOk z8xijnY=eOE=Cwk>T{drcxc|?t58T-4xwWTa4;T$*0azf`37y5@g5#{uTKNiARV{20 z+s^-`2<2VEB9ShTA+@%N{fn;$Qm0Lp_KUPsA5`VQ>e^d1u6Q4UCyNHxOV7_dn8S`D z#?==Qv+mG$s~<6)LO3LGe(P+@!1CDJe);^bb0M+unr!3|@-bj!z&x06M*iG7L#vxvEC?G@cO3tkSKC`?)fyZ(m7FVdm!#VFMy z9mFSRW2blZ-yM(Y zcI8m|4=mLUeG@z#g9~0w2CNFc(QMz&u2=hnO*pU1!U zyTLPL;goueC+@H;cQ&c(%b>;&g5=i;1!XrX*O*V*u6|4QZ9aV{bSkW4bPy5-<)4UHQLQ)* z_C`9b_elMgkta#1(}wfF{iA-I&`;Q>EhVqVSpg_m-TXh;(8Zq&qLpoie8g^TON0)U zr_p7nW`VQDnRRLWj>Tf55kE}fCILRsfW5Yt-9Mnz$Rvdg>}Q=&lBR2)#j^i|Q-rsv zBg{tEB*?g5XFKB-WrL}^!H8A3*{?n-AFaUJ$ONkkZno4Nj6};oyEa?0Bbx3&i_@

      D-ZzuLU2QfPd0i44ORP|sB8iJ9+Tc_#89ZNXi;f+m(fQG0 zlw39uGhLlfztRZ1Zmz|yWD67=+KNAQ9PrF;Ka`r~gf}dLv2&{vzO9VJ6W5mD7oS+% zP+^Nf$?-TQ(gy2l;&Bbx;`HmW=&8F3{ZB_@TckIVX9VWQhoah?F#PEkhwOG3S_K@# z%yAJoHt`q^8bsoLp9GvZCK9hVAHj9@ktl2l$HPNWI793(de_F{eAt6Kb{xY$Z?|L2 zsWkLvu6V`b6h`H)M`n2j#V4-E{RhtAs;3(;NID0Hhukpg*KyQ1?1N{whU4Vp`*FgG z9XRV&I6fa-k1b+x=;6E?XLKCJvrpHe*~X(NCfthl=CQccd=Fk(6@ec2LvTPT7@fXH zt=f*Mf!TOZ$`w!VKaJxrZos3PPh-;1Mr`%S!I$ZqF(~gO z+Df@%U}6@Y)OJJtDVa#SJ+R(19s6{BFvsQuhQ9H`!}n5f-RJ;pj!(j=?}PB7SR#rq z4Z)PySlm4?3?)pXQDJKsZaNi(59~rQV{9}|jt;>}uPE&K5P}s=;g~%fiaW%EF=S;p zx=Z_ENpK`KS8u>O%|~!}j{~}z#i2zy;F9HWDEHnFk8C=Ewu8DjJs}*o#A)OGmV+47 zr-RmVyYcN-J#1Cqfv4T4{!bu$fK%Cq0RS$W>`i1xMug&g?}Jjwszi2HXsW+ZM9H3+ z2_ed;L`X8e_c;worKF@JDNWH<+T*|O8$LSz2a03*P@xq8x3(F>s*xzbVlxn591EJ7 z3*db8UYHd#7gF+KVRW7%JPX;Dmn++e@PY%t-P%ghUZjEia2xr+n+&Z7hna;&nuG8 zA&X%ocNRG^xfnuSc*)BfR-nWCi&6ElgjvyFnTZSYfvfg`N$}K!)i-Z5|Gk%ks;eiM z!kr@Us@9j;)A)xp78G!*b;ii(^`cJy%a=*hUPm@Q=`Q zj)re!sH6`|L$lUVHMwovu9ot)3gPFqEmYP(8n5THQrSDR zadTcB75=V`x3dc9-v%iZ1+Xo>$d*CfC8CSqtoJX|b;XIthH%R$!5q#$}L{l7{@a+C)ROqNXt{M4A zM@M{6#r7Xv74MDdV}clb&K12{B=GTOC+vN$fR`@VVL7XYv3x5~U_uk)Wme)oId#<8 z^Kcif(ZZDV_J_M|XY$|WPzisBN!EWH0x8q??Hp|rX(^84pu zl$Zu?aLvNmH}z04CJB%1GQq(Qk*Kl45_zr$Rb198+p2zN$p$CJ<24WZW>{BL}0dt->(LTudoh zg;rJBXy&{IH+N;?TSrga{9iggZu7@V=`_r+3dNCyX_&u#6LMCiVV>khRG3V`iiq`i z!#^39==fpigJfK0=ZT%_sd%}^6-}K|k>7I-D(_83y|wO09>rt%Y=68L8G{Zxx8U9@ z5$N_S5+A8;LmR8TXt8nwZjegAh;e`X6q$^3Hu_>QCj&q0`Jjq+4j#Ah!Hf2JSiaH= z4IbyVhH*W(TZC;0`rUP-**bN^Hc%t7oXPgptLK`nf)RSPa zA=C-C-OsHl{V zu0$AH>@#rgiXXISZ3gaK{E*HLNk{ULrSp1H@xX8u74%BMg{65^`FS$lP)(xke5trK zZadA}n}SCTJ?OhF2{^XghFa9@LW_7)x`%AU;C2Jrc-IScHtSI8;)oBDC1@Ex!PMRd zY}oz(S0H)D+$99Xg!`%(1=yz2%bUX1L&< zIKyff&;dg{ILtfRd2$Ocs<;`ms!5;d zsLmdC$nGXB3NL0A|5Z^j&nos!aw2suh+=~e1=AG|{5oHxZl&`A<}kw7bEx5wc*Z87 zg*FsgG9It)(LWGx*&6$S{_a*`gA#vGwT>;Usn2^_=n~2<+SE@=UudwaUer>@OXZzA z7RS@7?#}j-0w+30M3M9LmkE`Bl+1CtuSsPSGC7yV6{zt363#wl3A$5eb%LOdLIAo z{FSNRaTawuR>m)3IWmEq$6GG2@ePff<6fUwy?;MA`HJ7!lAnZ$-~5lA=tyFm;>GA0 zy;IE8MP=GhJ;L-#C{nivBE;*d0CmpSB0MTT*tbLGMBw){E0kbCENnlrBae*8&We|8 zhPe{4aU5e`&H2vMl})gc!{?c@@PBN;=VMI4SxK7Q-o#9r>eGKmZZIYqE9p;%hs@gf zQFP0mN6ZGze0n=Z8r-BaXI z(Fhy78g?3ap#FceYF`bRGXeiO>R&|d}IgeUC!F*i8t zCQ1LPc!2iQVtPK)1NhH`(%LdtNat*)J<1NChrTo*1z^C)lFHdG0yPbO`gkS>-uqRs z+gfd5eb+!|_F-q(a;AsVyT}D-R1Ty5%MlV}UNd?}t>8aB6%xD15Z--sAc0p@z@6Po z{)?0Yhjo=?rIrF*oqvs7=4!y1mMOA{YXVJivtUWT6~q-P0r|NU=s9&z`eF-UK9OV5eh}F$1JkTO+`DNE4(|hiZ^|AX4F-T`p&z8|^@jwxE%4mIAGqP$p?-lM zWWMf8Fdgj)9$&+OXKF1Jvb*3Lj~j%DMnY?j3!FW-111GrVA|k6NPWHr3?;(B zA=Cwy--`k{VF!3WxDTX?2yB>>02Ti8!Co;DeEM|2Q6mwwt#rUHE&)=$&ja761PC%Q zgMDI&px$c(rQ4FA_4O)HnUM;*{C?n7oenXc8-Z@gfbLCUuy$E0JU+4=HgAgqnzR!N z=WPe?m(eg|H~XF1oaB;prGc>a9?(lV0P93{Lx@p6c#dp`YflP6*Lpo{ zoh*jC=mttZO5k|-a%kCH0=gQOV3<@4Suc%X$gUW=D|KPffkSYfR~NRPDS#i}bs_dz z4)`kQLCBj7h_2BClPyVLTxS4Xrcq$7X#&6cw}R14Gg#;w3R}l4piVXjG<`U5D$oZ` z7cGLaZWkz)GXn85cHnw&4$SuhNax7F{m*6~tS$kbrbf{4PYML$=fOQUd64EcfFHJs zV7T4{o*h+$d7l=-zEOEFN#wwDb4l>N%0S90J{a3#1@V90kQK9+z^#Nqa)&MhMWG&2 zzTY0Cj&~5zKxdHKa-1A7Uj-4yIYcvhCGaS2CWrPq!p=|&lE`BRZ=Ok!`RA>HSMndD z)M5s)tNBUH3oY0lr%I+9Wnk@uEiq{2ho29ENyCCE5|9~A#3CP(F~d+&>fS>_UacUa zy61`HEF)6=^9o56)FKumcZsj6HsOnZOit_S6HnpiWZqUiB9b^p>H@S#rp_SoN;M#M zXD<=MS9au@aSM@{vyaqWsUt;^6-3?T1YtV3L|&|#$T9cHQOU!E$KnNXznx1eyxx!> zpEJnDt#8Q6ndziI;uYEHl|{NEM#;LQY@*rMNAeug$;jUeBxGz0c^bu%@E!{?-Pc7L z#)XN>o4e%Nxm!$Y-)pkJp34Lw57;~(Wb$w@$SMm%{tK1IG3=aEzUZxEjG z<0OseG&!^69C5r*NuDI1BbE9m$msc#MCaXka{GD_nFpifm+d~H&pSd6l4%WP_SD{0=SPWzji z$ck`B`f%w{;v3*W?{(x7-vf^Hhi*K1y2FMp3kW2=1x_^YHV|>~5c+dWiOdR(rZp?4 z82?}KH1Ea*Mq_?F9b0vj@pIlmPd8RFlSjR%-m^1|gU1Rg$+^rp_b;be?=CQ|0uI!A z^)V)KwLLv;;lS*qget3FwLCecMfG!y+2$wwwDWlbd)(#;3mLCiPn}1sXaOIc+`>m^ zU00?P{(5xZ7Asmi$Bmv&+Dg-I@28^Mvguj=68a_hC^g&HLRZr>H0N6{o$GgndVar8 zOSFe554lJEbzai*yw~Vw%}?~zS(fTu_(x+dx6*MFiPF7u<&?Vt3jqbQzs5X5z7CGprfX*`)Lg%Qq*xJytRUyVs) zOQjInUFShnb$j@3D6u{*NF3^=nM9{ami8el#z>A)zsKIqvbogCM74|6N%p+B_ z!(ujC3?HR=g(_H_Swa5`osH%DkI)|*X5-#_@+7-TPJ2w;)!>3kH}Se7@t%3#0PZ1e}EQCe4xV$7pSBOFNV);rHlJ#q57Ft z8Y(4>ipRU6C2udH(0CbMLNPlsI zu;yJKU1#NiIf^f-lio5Ee$0b0-DbGvh78(y=wkRsEp+Bl#ra0Ycik@Qr91i1 z;;s>%(wL+!&2w={#|_GJQ3H8apP|oE)UcOZMm-gkQS^8o)zz0o4f8x&j$pVojwof>3|M;@6iV;I#5le zwFJWBx$hs}0m!9h4^&L9Y=cP8z{zYhYgeFQ(M9_7* z>iFqb3C$i;!Ov_n%?naSzxea?K${Y7i@!=c-_1tnt2gPXt~q$j>?Vy<)WnUheRSzw z9jrDRrZTT|@Hg*!`sA}VUJILv;;*!@^Q#Ch6w$=5Zxm21Rs|PV=%La)3B2l0FzL`A z`c=*my8@q6r4(0mcDP5^Ut5cYYwptGn`80YV2>?QGw}JiCH~Ww!*2m|F+*w| z{yQ&&Umh;RPcL{dTm~>{)daP%W{}5gn69~Pf_rp_=%AnmW)D23Szjgb_mgpY^DQ3= zbKcV-*Y7k%ewtP#y`k$5&%ixd&uFuxATH;QQSAZ|+$#N)?n@NIQR5f1B~TLk_P?Pw zd}J~I%ugD!R1tsw6TtH=%J@xM3S)$n@Pw)=CU#2T;8#PGNa4Z#wSdg*DcZMVInL9a zq>kL0lNSP^YcmB9mZ^XaL9S-ADxA$ofAOkDl4oZfr+jlQ?2 zpr7y0#4f`U8e1)n-J)sqU4}AxEq0-A`_*u&Q3D|>N34O1^~V^f;7aK_BP zohdp7Xe~9va(kp1j?a=|YWg_n&=tpsqZJCRZD5T4S);1cD6?X_HF`>j5WRK|{sS$N z@o+vWm&_xt2i5Twt3W)=$OXq;-&4aQziMxHpSQygE)TYb=hD67f0|NN!T^8#dDv1?FLbPSCES?Eq z=&vWTD4w&9Ds7O*>_y>JwO#=~&WWeVVKOLWo=mL|h~oT~Wcp1`5bxT@(7%p?Smy3Q zH}4g}-Suiz{fjtm96Qf0+8~2A3nbb7Z{(0_>TtxC%cG*KB;$TS7GLg>Wo*7k;Y)!` z&Zi-99P68FaiLoPd;bo!)m-{U^+K~b@@t>bON#TEZ&L%5|7am|Km0BgSa6?tnD~lb z>lPvDAu}*NL6;aU6UHlGL4xZ=PjEA;^LP0pEMya7CfMz zdR55XBWLJ^ni=F`NHUe!`iyzDdm%lmKhAvZ|H_)qm_ai3RI|TwM2MQ873*#!O4i$- z=~T6uNfNd!ZnuoP&#c;dowIwofthW-i*XD;!~{lOU~0m$m_2@DOxEiI%#Kr+8BY6Q zM!s5bk{!U>;ZUmi#%^Fpt&_oGWm#}k&lV$n<rX?DJs{1e_tAwRkIDS;RO*%YkgWZiMfEFh6X~K{ z8XA9<^tv3Rg1xuIIj}S5WR$5YipA_A#p#y{WN#$53 zJ)SW}pshD>J@{bbCfx|Ljw}0tC$y)^C6Ff zFz39@V87Zej;X2%m>U>b>O7wZVH?^l6t8N)^^bj=b`fP*>mJL9GxBiv+eO9-<-tns z8PlMs2vc8PGX^geAVTpCGq_j*YzAi%Pi;kr-YZYWbQIwEvU%j2pBxOl(av&nA zOxl8!AXJT?oI0Qi%-vpQ&96Cd?bH#*r$!Z|t{!7}%;rFi#a-q+s|GKvMM#{71|+=H zB8%(QKy)KRq!Z_Wowz%3u~3CN^Jr37q6BZn4-%O7F%U4kf87(3 zUR1)$tE*vTLnXY5c81iz3TU@q1w|jq!C7YwSZ^+c6n;05*-!)qb39?ONIoQ+u7_cb zEI2}Uf^%yUER&0eT!Uy>B$NU*BU|8|N;-U*9Rj9_=}=x60xNq{V4m1kc+8Cl3(+X} zc{CDsA5Vm_*P*aiBLhOdyTfJkY#3d(6#h;ffYu5__|ugJ??z>zT0a3?#AZTwMGUl* zj}zyP05d?$zddl&XP7*Cx(~i+-6OoQ3Gm_7ee!Qs66_v$Ksv7^KyCY7B3cp)M=X1Y zOxsQvbf@G+)JAx8_#C-j>;vA1&XPGME5LXzlIb85*nj8_;s2xvH+?@4cV%8UzLgJ5 zqQ}S$b5W>k>LRBaC86v>GikXe4cq24kwQ;ta7yhYeEY<~SM(}bnj-+oa(Bod`6+VY z(H*i^yO(VIbd~%KDkWZ#O~m%qQlfb-n_LnvV(bokl1)8g?4ddZGW4>aoukpnB=Wsu z1F8>mq#bKn0SkS0a!pWYqI5eO5FgLnGZ&;r2mUZ~8%^oe8EVAc(T!f{oI`}2x6nhn zLS(omk!mgJXL_$4qHU^&8Mn|A^zAo8M)vYK+85N=Srytv#s9uwg>UxJ$G6weNu6Qp zvL}yLy?8}Mrkm;Tz;7z<-%UlE#c-``H}#F0gQ*YC&{->tup^+H@-vorZ(cU_kywHg zKa=RAdn-^@a4Xe&<%DW7OKF?PD!iYgN++k*;N-cP^wM*0Ja0M4Dm#Uu_M?w%TV6N@ zE|I2w*Y{)7MpN3+l!9^l9qD*N2ELkhqmph}$Ud{9M+!6Xdb<{lv`WXhes5S-H3iSd z)UiPd$yk+}#V**Mf-BMwvtnZDcyC818zz*2+QEaY@~Tv9O@G2398AEt`2(zE`CiNm zxxoGl+k^Lix3cqEcVny6ZB}q~IL3_fQ!|V0c*8`C-hZn=MnL`RTH8%Co1 zn`ZWdexS5LdW81#Q|h6?ioF3jdqe}8KXSbU9s$ytKkeAnr-re%1~ z{4!k`nx%AKpM|_}miR%2d$2lu|>75u`yp(;9&O5|GtuIfgvB3h|Wjjfav>V{- zjnh;&cOHH>`AcO=4RB%&FKUjP;_4^7*i}z3c*$>iscaca#J`~L?>S+}n|@ju=Z1%6 zd+CKCZ!GV*Lsb?0P(9)qO^fxzi@d+--0yyP_Kg?{75gJytAgLx`=PD14w_W>;`zsV zm>=Vd?tc1M=I?_8r}Qy5!W-=a=VHTaPu!$28%sB>#T*+^bXc}_XRtZY2NcAiwkg9nn?i)$2c+})WqIw65YVy8RTX!7CP6^@)nuXnVwK#Y+y zzegW!n8%0;UZm&WFJN4XPEie!CCuE`BD!EYn3?|~iJs^xV6t_B=pvUPX2iyvUS1ylqHk-TKxU*sMric}aIHPv9XE7kfH#9*i&~NROSj_%ic2^9cKR zUpEu$M_HlyPnpDjC2Z;U8AR%@3L7UVPHc11EN|(nlV$}2W=pss`SCN8ImlT+#&N{nq|OVW%9Kx*JbY^9Px9?+ns3oWz_RNFgZyi!-bdNi556ntSVe z5gtxY=R}(+Ipj0m`7c0-9RS&tX5Vg zF``Y(#pMR1JF1(h6xSgCT;4I!=Vp-58A7DAjb&t?E0MU7a^^<68F_TRjS1koljsc} zm}3W{NL{QDxp6y_{P%hWdGWlQDD*yL8eg6zOLw#~{&15>{w!c7C7uzRu&vB7v(Myf zml-2F?-#jy=ozOs<1_KP(P8O*>meyOfzI+IO0=#NbuNE)l>AuM+}UrCL-tk(v4a_L zB-hM>y%@fOcs$W%O(PNrze-tWf&F3f;H(tKs`3nZHb~H%>-(?X~Fq^o5-Jm(gjhI1>W+%Q{d0U0eBJ^!2v-b;ND7Q zlEVbyqlzL)l@oxPKYPjDFaZe2Zy*P@ivZ#P$(|tz&5={&kc~V@)bqlLB4sc+CkTAO zv!Ov(0AyY%K~u#HaM`Q~`X%ql^`Ekk*ZhD4PfNn{#n$&~{6{A*<9MF|)<$&&U)G1z_nEGdIoAnV;uHs%S! z;-!~JVHh7Yblf1-ZoCkzeTx{6@PnV;HKKTa7MvuVzK1aGY(dp9etM^{Nu+ zdxjA6GG$Osb0YQklwhMNki2FE=vQ1sPOHm7q`@Ncrb`C858IIkg)-oz8%V7BrNMSb zEIAS{1v}dgkcU4cVOsMTnekj2R{UT|%`aI{c{o5^Z4}^%@Hi1{kO$%IzscuSG9bed zfz95M;9)BZ9~&eL6gFmXs73Kk2)zFI>_ zyeI?@?=j%LTo6h=E(6y;d{Fn^9zN}u3HdMV;mfzrq|??O9xfRnSH3R?iIwNcc*kOR z=~_#YZxIj{C?>sS00GPLNb{K`aMUf6%u=!g-o#XL(7T7ev$B%*stMP=C;u={Xq(vQ~sM z9g+Z5Yb!dR9!`QS`U-5cVhY%J0Q*cS4RkUWu}ej=AXeO*MZGL38LEo)uxrAc20m4$BZ@N3y4s#=f= zN>}^o>xo3*7aXKJ>-WK@Kd-67-3UnNn1Rlro1o7`44;YzfS0K<{(S2RSu1r>kJlac zuQEr00S~y^XpNJH0^q^LW$4ts4f1VQ;L6chFbcBA@Eh?EX5)aXiuS|!JA3ppi-vR3 zE3l1*LBakdD19&xh#Ns>%nRnuU5Gv#J>ckTV^rgMf^D!q&J|k+g-bNCQ6dQ5T~I*o zkx*E#C5jLo24?nrc&m9A?7GN@x-#)_Ek+Wb-%A38K3#l|$?)1{1s42CfIHnA(8D$g z)F$`i{x8A66OoSfTUJ53MHaplVW8)9Dt_3Y2Z!6Eu&qZGTGISbCQcbbU#~zLOI3JS z&cVbzYH&l=6nl=UK()Rx%1g*Wc##R#-w}mCVRJlkTnID^EpV(;5bT0DxG+W#P7PY% zmqLEXUTu!6IWu66o+*Cc`;L_4EyNM8J4EfAHSW+kOPo`kaY5i=@~>_k2K`AQ5f8WAKmwW(@p|JCHsO3W zR-EIqF5C=E*>jtfew~Vs&;4QJ|0d&NIWwxhH5tu?66npwWUP#9pq7rQC=z{}{!Pok z=i8sttA;t~CHIob?>dOTwvSS`$isLzFX-8)MVhoteVxp51{`*U@W2Xn+WX_|MLkNE3TtvB?2y`~PfWGPp zs3^!{zi=8Bb)3QD7qjs7mO3mA&c&A6D%5B4aUkpn&a^JT6iz9&^B3Z{=3yKZE<)k> z!+88%F_u;zM%R$T$RAsRT~LmD{fn{M;TSdy72)ZwT70;$2rp@z#4__D47_y;!+sUv zGM*;P=qSeNQ!V)XU=e~>3);sX#Br6=xF;$P%P-Yne{VJxc9h``fh=6RrV#rF($IZD z9-h6Bj54h`sBs_x_kYbszkofsMaQi>1X9$zwiynz(&$;Nf#iR5`m4!Y%)5Gnn9w7%9t&KeYALuVi9 z@F_x<_UGiJaWVEpO_5C!CFr~TJ88udlt2ELOg9x{{dQj9zgdVomkYy2@jSGYk^~ht z1IO3OgHcQpX8I|C=BzmU5~2*jpQBO#KNVQ2vKw)=ItX^|#GOhyAYrr(ja>C%LT@Xs zOfrLAdE4+mo5dg^8je-&jxgt51pbv>13%yFK%Yu?s14hUVgi0(HWh$vvca&%%^iKO zY=mnk98qM(7D%_W#f68%;H{$-&iuO-+LjaSU$GTvHK2IMc9>PV81Ee04I4UFpgeB^ zq*|=OefLr!`Jgv04ao-cqw6sBO(AT)?}5i3ltXp)3M^Y)4Xvw8@x8|hc=uQZFYGu0 zTb>AG!$dWl{`Y|z7gRv8%^iC2cQI7VyGTFz6u|FBq`NQYLh2Vv+b-q7l95(wYF!Ag zgPZ7m(Zi5?=nOqZDqu@sJKc4x8p;#eD0Cl(>y34E;lJZhX<10AeJwl<-br2VRKd9b zBl_e(B`oZJz@D5eg*t(F)~T=vc8D3Vn{*Gs@%f{j#gm8NocHX`z5OM?8P(uOY_0@3 z;X+PX@+pw**vq*$(gsJ5t8h-vy9nA>S8~$KyWxApUCy1dE|B&zVk9=+ZAUAp8hmEV#9N{6qcy2p)&eKp(usn26Yz+fCD%LaU@HC*Q4Fny zEpjtJL%bY3L`7lr<00rcDg|e?^C5VLG`zLVg%!HeP<<{JKEIX(KHq%E-z*M0_7p<@ z3Nd*8wHOSyNkDW;Df|RkIM-JSgLO(USbrFH98rPSKkf@r=J zydNzEp+#cwQ??W&v_wE}xEMCy5rkux3gJ>aFSu_ifXdn*#E#@ajO-+N&&dWuW|W-R znE_X(?~%?=sn8=fK!{NagbwzT)6$7BY;}_yaoY<|a{Gw++$b2yzDN8m_rS@)XC&rw zJT!WLChn`!Ae_qsUVgc-OhFiKeJX~v-$WoXpd1Dtih`h28FVX1!|2aLV0%Xi%-CFL zj#39%hfD~0uK_ppQy|h*4UVhF!ZPZ-s!j-^k(VP{^LcasPg8A7YS>D?>aAp-dqbqhJwJU zcLPBp26q;@z-tQ`;6^z?x}5^pRWFA*JCp&XtRb{r1Dcu^!J`yInAu|t<}#KL-E9DY z^|la~W(567&Y<&f5!_h37G~YCg$H7upk=xWOcuGp%4RpH$C87#RBQ0f%c1 z;LTlkSmmq+Y29wny-pr}e_ah8?b5LAnIo*zkOrgnrLaRm7V>nh;oyKgyc{NQ;6HgN zSG5LilN1jl#KU*w(5^t>zIaBK7i^#>$q-fpO#*+(3+%Nmm4^wK~wygUw`pIu1?4R%81 z%2nh^=myY=*hqMm2f&~9RI<~@7o6k|k<*@@z>Pji7!Nl%ZBtGDs=2~$tt!$v>JFcq z%gB;aU)U6tM@XtaXn4kud@UcS|7%Brj<12ej4%;#a)cc=wamgKJ9w2ipQ$#qgMj8X z&g$b1kWrDy8QbgvvS({J!}C1gM(bP7#|CeB5-iWmKI{uu^o$t$;dQW0!h;!D;0xz_ zOBg8)4~YNunt3_C3dE*0$OkzGcnQI|LW_k(i-nx@?AGCr^ZQBX+k%6Y= zexz-&6>!ox@#D7=iP zgSQ>v#>Rt`@-2b=_lu~=12g!Hxm4!0CgksqrMg54>Qfyk->;c4RH;C>mA)me2_M)! zkB3O{{s}huRS%hbAxR52c90osE$Qqwv7dRmrMLvjWiQAA%FD&;a+~2vh z?1Uci7s{l%11}jvi)3niHkP^IwU_crm2&iEZl`7@(Vd;kz352+U-p@K(^u?K4;^dx|!gJm_$DZ>4TL;v8Likv@83 zYFV^tfR>-=>AdCtn69tg$ZlTygpNm4u^06p(VV|c>_zV|aZEu$2!_W|y8RE6ID;b~93-Lq%%dAMV z#;saB#O3cY3=32zJ)#b%d(x8ZX5g}jlFy%!F(b6fzWy3{e(cfb1 z5-cNE^2%`Z^C7kWR=CqWWd@!;!R;@ETpH&thmld-pPVPF(oB?1nJ2 zuZk#TjNn<<7NY9-6r-3+OAwmZ3v(BB&47WUv$$9K zrbw5w7=23InFAq<|-;->yGg^|xX z+-;|gq5t|^?v8RpIAS)JI~p|)N>jDDnc{PyQ$UNmE?f(0cs04Xdo&=bUV}?-sK93x zO|F=d90-nUa?6ZF;F+p6w{O8Oa&fy3H{j72xu>bi9b9&UICSfBBYas>WTnehH*O@5 zr^CH#Uri>Pw76kqrDWMD4X(%8Tq1lxoqOePGI3d`&fS%|pEP_@=Pu7mBKIC>aG%E< zAmY0uu+>k z)2fK1$m?+DpHCyfZQ9%`E;~q_rxy3@v9-h^M1!m5ZBB}8)wp6_0>n91h5KIU2vats z$nEeKW)^Od<&ImOvK;>>$=&x_w==Clg4l`9jSlE z-fxxQCgskf+w~>51AKne$4!jez_*{0JYnvtiB!5umY*9$lBmGH8Qk=;J=9w47k;@C zNvEf#arw(Anz?fdzw7Oz;>)JcHY0(`T={}6I%zcS`Zp}%7SOo-A9zObI351?6a79> z+H&_dekkvwMJNBDQQ;8vPx*uY`Hs=|kALF4*RN?n{#Ru5KGBfKPiQ>nGZi&@gTY@v zP^(?f(OG1I@<=?yt(@ny;_hvfk9tm1Z(m2oVuGsibz{1~2dZ9j5$pHAr&Q!Tn!{Uq zE)>zG^DSL@gGIO4ceHqM2hI$AOD~SJ;9;KE^iFjHK0NS})=$=A-_hsvW@jaqai35n zPAMw>9-#*{i?FC*gdUD9KqrY8v}=717PWq%A(82rEY64SyA$zqpD4Pt#A1EBH2S6Q z!u#E_XxRH7;%OO7J{*P`R2rYo*oMt^QW(**9gB@6@!YO3twf=?a`zxtxv zUKO+*bH$8FbqwftKnraxyqCQMU({-0D2Ib*>~&DH$r$C6bn)G|CXVjWL%CWhBqh3N zbM-g13(>`duOsx%NgcdY*F`@+QO5`G>*xYd#;BnJni(vI&zpBqDMwi>f8s$qW8~23 zzAaTWkVB_1J(}VqjaphWsB5wqCM6fJi3f!cc~^HDc?+UQoHk<-B!ccewaoi^N!&6$ z$sBHx!}e8*WbS=ATz1f$R~_n*^pAyeIu!DOAHhq|jFxPfG}Z zy}dTBof3on-;A)LK@JQv7NWV33iN&F;D#D?NaW{Wp|LI~oi<0qTgEVuWr|%42jZK} zvBqsN{EN3lId&;Dj&gAR(dE##*%Ezu9HAp?5q9{w!Q8bAF*-01{Dc^4tT}v@D+^*?uaAq{=OfC8dszFk66&!y%u>Zq9HQD7dJ*m zLB{BM?06alQMa~W$iF@C&21-YjmE*3s9hNCpA27BqwqsPChWSm8{2PE$5)s+XEo|TMpx-a^X88hOB)7cw6zKX-P3?^!%Z9 zD=NS_{|gN}S_?cqlXPx=1Ef6~qncS~!0hxO)qUFnz9l`>LbDm(ukNHKtLs7EtB$_+ zJ^{a)3aQ<64Onf6rI~xGL9TBNz5MkUgi3L!SJ^T6Yc!XB{c{W+Je*0FZ>@$2hg{ZF zqXwRduIzkiUJL8*H*id=YN2I7pK0HI9I_hYnLn#eK%8MKGv0L)zFr$*LIUdG=7n*_ zW9>;u(D}^_*d2!eXK|7yUJak(49Pn8N>FukB2!Lfuz%c#(C`wN|Gq8>pEMCV_YA1iHIoF@W_WSFl}zWn1r&{FZLW{&9zJX*b*- zxk;WXbwl3A%f!gM8?5UoNjuODJ2jBJR_Xz#{Hr9R;yUyOJ|PY>Z$b3^e`HV60I1|k zLHO(Yur@#)%v?s`;K~o6iet^E>BEHEd&rkDg2pWqP`%Iu4lBKaIoYOgt^NgQ>zKnp z^Goo%0E{6)u4Nt)BtE7z3O76_y;H4^cti zVY#CTthw<6iW1D>?(|OxN#uZY{Vxz&0w6K#7yMpf0~dLIz(T#H@WbyLSp2pJt%9%M zx^fNV3`~RXZC}u~n}#cTp}<@B1^O(uK)dub^llA<#N4kCX|Wx2%)f&Je>fOD_yMP# zqJYojC-g|{1^euu@N0S>OdR>Y&=0L-xI}kaL0}Bmq1E)6^T;=*9z%vhuW&0uWRt~5{+y)-!EZAu?2!20OASrSP z{9nbx*7_mvu#Ev%G6)jt(a?9Q5B@qwL;d{j|J#@IcdYX@4&YyevWGfkO-w3BBG2P{ ze?Cbyi5LpmqUb5gQlV0oP?9JVDr(SVi55->&*xUjUTM=JZOoKn8c8)RsPn^I*PL^m z|KMC#ub-+)OL2OzD>6fpkvjKj{t|5%t(_ zLX$rD)54lrRL5Wq4e~dkpAG$Jv%3kMyTgOV{4tY;%h}Oc$BpTVk-0Rn*N|?{(5H4& zv}ut*nFd!X)6pnN>fIzk-SmgaImIEeA>t{i>U=?RueFl8fF7c^u9BE*KP9t;CrA1cEk5ES*xbPdd^-UrylDvS79lMaF4{m39|rztQU#@IaiBbdudW1FTDG{ni{nbsHl ztEP!~c>m9QytxLZKR;4C`HViQ^;n53zL?-$o%3SpVrz8HdnHZ<7d)&Z!7MCA=##3z z9Q8J#iLnuDTf75hG?%en&jfTx+si^D_h82QGM08H88<&{V_lgkxT@wcTfTNb8u-6p zF8yiP|7C#LTO7hEo-bKgcNU5^b+M`TM{r7SGfNK7#p;@R7X2j;Yt>uX?`M9&t+kKX z^4En(KK;o$uM}Z)q5@VFm!O-gKHmAQ3=f^MK>s7<$QdujGKXq(n&gV=J`4>P`{4ZC z%h*x58bumS7@D>kr#iHv`q7p6WZ)|5&h)_YyqoB~#T6A}I`Q7`%kX~IJ)H8hGfIEE zhqCU=@a%`X7$ED0;_N$^HsFpmi8rvS-V?7+y^3z{J@K@9D@G4{;rZZZ%y;p@*JDk1 z;`%DwsM&(2M*Y#urWNOy2O`I{VS-L5?)=({0rSH!;!`Weg@vP@T`MMNh2gr{E$DSG z7=uO{F-cv7+Qto-d)*5=V(QTuT+t@14wG`0V^3!l%2YYyP)0c>Pjkfn)n&Lp)eZ+Y z6ydtFOK^fw0g9vTQM5A`P5T|NRxKNYq@D2j{Db(OUygaU=_m?wM;+yKth?=v?-esJ zyT==;)=(BAfzHG6^)~kDPFkgs0VF_4eV2)0L?Ks_f zHdX9C>5uPi|%UTi9`)d z>y}4*t$*ONK@M|#)$lkBvv>2Au%f4*HCjwSKhx)|StN@`pFUz9_hc}+xQh)bNTY1Z z9p%kFl+-Pnn-m3hN#1W={PkBaaWu=(8c0zh{RX2AF&ipRBM&i#j4u0!Q|m>b}=^raunNG@bV0} zd6cnJ?J3}GeTLb3heMxC7IRUufv(9BZ1Ul$(D=lLRv8kA*2@VYocm{V0hn{B=ALtHhEO@=|2T!=IFdyoHwg^GIa$W5`L+CT+?c zP~ag$bc`E8y5&7+)Lw+$pNHY(s}?W;D@Ldhz=NqYRl&ka;zVU54?ul2Q6S$`y4`6l)%N9 zr*OFR7_3$60@aek5GcL|va?g+%lgX@Toem}rS+ijCIK#Ossk;#bg1$=1G+ugFsZQs zbb@j~>A^`z;!i=0-6?1)t%vH5IncPO9VVFvgH}r$lzcFPc>hNDHYf>ulWX8r>L7p7 zFb`yn-th_fTj4;&I9PYm6ofx1LuBMz-Y!}dFshDck!oOKQ^7ydRfTskm-) z2kpGai9Nh!c0QjQ>%w;@ZsUgqM*JUBDetjTm*4kUns;e3;Dx>!Ru-th zUr>7?th6t)y7*^?Ft(>$xa87!s}0RXH50BZwAvXjTibVOfmO14Q%%>dx5BKX?h9Xv zCJFClbPEC<4hcL`9EG4WQ+V7|B$QYaEj;WOC^QW55suebF3gNm70#WhA?&-{BesVD1q@Iy5xcv)yF0Fl-H9lm zpjefxCj`!<*=gdk?Njdx*0GKy!Zt~hKyEy~^000Dl02AK>0ECYq00ck) ztX{Eu1?M*a@Cm#c3~`zq-u4%^m5$4HvF*Nf1K@$<1@t1M6ZRPjgEzn~f~}xLh&MPI zIuptQP6m*j-cGrFrrig61zdr6hFs{Za)_)aEa#j*90JfOV7GmWeV0jVFavHm4j@Yr z7a)@%V*wu=D9j8@3+@5l2buxNf$v5bVRG0GN2+6ualo+NpwhHLK7!wnlE|A#4$?~8 zI($BKDRi90VajoAupL6BAWF$c$eq|V`1RKBmPY&mJdMe7{bv|92uy*7Xh<$N%NS-D ztBjDplnW)r$~E$N+CY^E=Y{>tN_2Z-f8j{ifK`h$(^O97P5D0gYUvV@Y3P8MD0((} zO>|CflH5>nl|pfeux^Agd{PoOa#HePq)M74E|Wi!gosD$)H1; zD=I%Rdtjg9wiu(Gt@$h@3{USE-$H2FR1a=_RkurgWN>iguQ0drYDH}6g<@joj^^N= zsLsL0iS?b`U2QXErIMV%SA$#rN-DRMA&UR2SW~*Z>}Qerx92xU#k8M2WxO9xe|mqR z6+J8rs51Qg-kw}HtGS|nZ{5GT=k>VSKebEBwzsHizjXC>P+N|+xHWvQIa+1@J-*CY z46a31o+w{mI_~Glm%VL-hH1m>p|IM#%7&8l-+6zDf5ui=N|x7GR*lMoMYoM``4r`0 z$^Ewd-P`Kt)G(EOeLK`OBXfJM_2`6mM{kSQistnNH!bar>b}-BS-45$Cw!>yl-Bfa z=-$-a+ni}#Zb6w73{mZdCZKJTalf0;)y2sI{V{^HVYE!*LKiW|2+MOeA=8}+h+IoQcrE0B^#U?gK3n=pe_wnX_8K%yJj-nGnieqPv)ApE`%H2>|46_? z|NUd0`%d+X_84@P6ZPn?t}wbj@IlZs>OB_(;~gb)JZbEm2CkWYCxUyB% zbfxBI>sjsHk>OS*IW(>iW<@2zb5o>1@idsFM0ri@?QqS=Mw+?D?t z%EFp=R{ktn|KU&p=Z)aQm7JfSL%%L7b}JlPl>F9FexcyyUt87g>g#3ae^Nep<%U1= z$=~;K%P&pt-!EZrc7J^MaCh#i$JyC;o^HrL^HT9sn1`>i{Am7}^y%}fMGv}i7Cx~S zFaGj2pZ9)Y&gy%!3(;?1<(Ge==O$!V7GbhJ{5t!VmOK0+=i}4t;2-D@ck)MG41b7x zb}N7Wn>$|v-zSzIErkDCRS2k@P?R}HYR8EdcXT&&{k~dt?)UfB{)TfMgMZJJl@_4> zEcogsoFM$I_-Uf5@+4UG3vq!=E-UVf>I-aised%&*8jw5Fc(91+DoBL&UHG68rPKn zH$kHBNsDvik6-FPd++$tDVTUh3@6=h5_#&;IgHfODGOH|oA-Kk6Pq z^lH2R>?sTTR}^d^9&{f2zk6Gq$Glf~>}=i{dw9`d=drPSnht39I*)1BKRUd1iDKjI z)uY>&OykU_$G%KjJE?H;@^t9}%UsB&s4>k6LG=Wm2kv|MZN>}ZS|hIL#S zR1T*$pKe$HrX4^T|1> zkKSkbJ?nY*>*eWp_g}8~yyxAj;>M2|PcJ;Izma&w_3f&M)gMm10KDTqW4(YqNq)BY zzDM5mmyJ2ntc<7B$0xJ8Uf^<%KlOcn^!lCb*>BB7K4lZX-~0CR%lZ5ZxxH_KpKiUY z|D2oUR|5D9db!|f=9_`LS>OJ?J^oSi>BYALKY(3x>oWwUO=o{>$eEs{dN8d*_%oxk zu&Jnn)u`!mc5LixZOs>dYn~zPA6_JOD&^we!`r*#8_st^8n#Hb4AnsIgSBB%ft-L) zPhZ0mO}3(5eh~-&=THNQMVwERH0XZYLU0^tJx9iW;OcOF&bolx$*@r}ARmcsghOt& zC`8oW@n_<9_`-vGNzpDb^fj*jZu31su2)>{bIdHVAIvLe+}8iHd^DpMlXt48uc|MKVgDbF@GRH5Wr4tnY3b7-t6P!&!v9z z)%kY?M*2rY-wwub$#fL+J877Yb$dr&Ll!`#Fdjoijr0BE>5H?&GE`e-m4Frtg}EAK z;QnIrITu+i@bSP|&Qg0g1Bc%kzQ)f#Az|zmPX_xknTWu-G}Br&wTes4Q5A98)BO(n zGPOccH2hXlE69-_63tQU7PZyo)SfRHTcnqL>}fWrq&@@q{tE3$Wr7K(z4cd6g|9?a z%u#Z5KNW7O-(3ru%KB7I+e;pPCgt?KsBh*q`}allo^Co(d92}Fby=~;S5xtfPg|?8 z)u4(+B@g~a7w`CWqUc=VoijF@N!Q@n>M(`E0?@eIJK~KYBNaT1RKr^6Iyhovb+D+24I%@H$TxM|*FbRAU+rgh$F7(aTaZ|ul_LTk^pjtwH`0I&06x4p&p?|p9KdbC#$cCXNvhW-Z|7F)7sgx4ROo!^JWLaAh3+T#r3iPq&ZeY||Kz=Tsoii|K_3huy#rPy?8UC}A#72$9@-Zrv_gx5wlG zmdvlimz8uRdIfVLDG|`7)bVDq76fL5ALlLipXKK_MnEJ{*28Z)RsO@iqu~p~AMkZo#wWWG2c6u8x_AHtGz^Y+XTatJ%Ksct;t1aSmyd^#?WJa*Tt&X)V>_%Yl#HFcfMw(NOdkH@GS3HU_Eb^SET0&pQGW^-P(9BUpHLS}pH@JIq^pciCxmB00d)!(@SbXMiB4C*@Cy0w0^^qNr9`rM2& z_R3D^72W%WN~<81hLYAILC5(v=jhZSv}%^TcO+w^t6oiBT--ONwQH`D&Ut$Z(d(Oum%rMm3PXl`gB?)kzmdCy=U+F!(dyqdl4+k+o_ zzfLKr&K5uVnme4etn})SC%^l?E&rVG{zCDR9BA9L>X^o-HL#K!KYsjit=^DF`p|M; za{X0LSbdyfSXtSaQ*r&D|If_wvA_Jk4HY>4c$UO8aDVH%_WcNL-e25QIPNR_b5icR z_bcwN`{;NwvoodgLT76Y@Y~Y-XE}Rb;fnLJIn5pAf1Ad3HnflS9~rqg;MFWCM}E^j zmzK`WdEI@yktDPa9PU$erYLp{K@h(zSCltKCzg(sKq_AU>J_aYdZt*eeA_#>*S+^{ zPpV>pjG~>SEfH3VmI|i!-d9)4=S<}eCB03ArIx0%$y}~eyTi!y`^?Kt z;w8+&yk*%9$>uYJ!_X%_Tz^UY`lMS4l&J#uf`GgDbFfpqx!z*Wr%|(5W*?7u_whN) zdsbI0IKEjwxobw`gq!hAlQvIjnRRXcnkj^Zfnm)P){MobY}~YG>z?(W){jZvI|DRv zf7+|qzp+t4yTdt?|4cYAtuD}(MY9cXj^r0(TtD2@6*e+7C#b*+Q=<0>abmB>Sk)U44;%lL3cXM%1W4$B?_h#IW=r3^{lE#8x)WYXFD;#S3ORPOopvubriTuL1oRYV&&tgD256$@&dt0AaF7{Qc zWV?I%n=kz7D0?!H-i;?*KrDm4GhZ0G&`TVlsSl{f8%}F>$}cLtBv-8f%RBU8@?AB| z_@DHs^pY#c71!jy~#8*iy@2KEsE<4;ql2B21lFKI6hn(}h>CPd6i4^pD_a%fdmjOzj zIT$z%DMGdc*nKX=91mI^Ha4&f_7^r;896vYJ%D``Uy;-p{cl_Y>yJAU_{OeK4=SD; zbc*}*|7ZrEH$fSAcUZFk)bY9wSnXJyAj$-7kDS zu+41Hdth^rezsWaY-#D}TVY%WQ*fnYc^|ob?C_WF3VEddx!gluu4o<}Z$DwdIIn{c zBR3?pmX7Ml18X~$8|>!)%-#0W<_J)P;-~UXr?de)kk-0b1{+>Bym|yYP|#c4vaEJo zmH*GVJ$+3L`dFuUNGx6X+w$qu-}FkA_^#sMNQ7J`K}fES<_rI8t7_r(-{=5q17wRW z?~HSGp^B4&{)Wq)q^b{pqyN4rDyv%35!${}KVO|A7bzYLP3$3x>U-RTo}%c^6CJO+ z#cd~4do`}sX6q@Vms&P-aCoo*+dQrFPfee^a^NaxEvyd8fIpKEM?<={wY(Ls@1#0^ z*>lLR+^+*DmRk?&g(kS9#)(E$IKwXZRn%}ftW_h#ymuTnR~b4- zd`6TV2Yb8a@!F%T@$Qp2v%G>W2}WRDNZpr)na$~z6Z#vZZ{$hLV%9w@4;lbX1y_?p zT+&GE8Q(x#pfvM7J5<-}*nwz8xA|P)y$T@tD>#LW4P3G7DwmnQZD1h^X>Qd3P?3Or z{F^@Iy#3*D^D%QdV2v&>Su*yL$*a2a!nv{IEO;|)!er7DQpBwZwBF7j1;OY~b$ zWKaqCB1{@A^L?EDC;d`Pc7mQQIZ0g!)adnN{eb3&z+s;|5_0=mPsU3&8nZ zzAJd4J8$Z^CHelKxHDek0#2nrT6}y~+57`zZYSna3z)T|f4g@mq{DvHYPK~*6xkLZ z6SIYf_Ps$~>uzvEcsbp-dfeq_@>C(C;TA3{pi|*0PitFVcNN1%ogNEGJ{Hw9K}Sho zW^38%c9TZ;1ug-EqdvfQLjFM*qdh}=2QGD=apE{@uMa^XJ)mMAPglOr>YLt|3R~P)kO43mQ8nH9r}+-Gy&GQ75TlH=tX?I-2X^ zYcKy@U$sgU&`XhBR(17RnqRW}zcIVD2d6MTV zPm^yqJ+vR`_}1j;&F}jl+9vD&vEe&A`}c$CWvBDejc=Rx)a+>;EV*5@s?wwIUTbvK z!=8lJ+{(t%q}+pVGixtY_v>rSA;xZ7a`&h9IbX9sZpc6M*{ya{ZFPsUKCdq6Pk7Dk z^4WbC>*k0pZ7CAf06jp$zo3Vv%KCVCt6}%Q-kvSpUwg@F7ZH7Ev~_L&K$8eK)j1o! z7MlzZSld8+=+~kBvcElJh9042vms0w;|X|$veh}s^uWNl!5ucT&RG>&5_5 zW`}7aSITQewSUz=zYtE6o(8#1NpO54O%^>KafSLjC;NU1K!sTn)&;o+hPxFq8c+%p zgFwMIV)R6k{WEBQ!D0JM=t$cYb$-GywbfJOdf4k&RB_~z@Od#C{ia3n!b9U9hYZBr z@lpj#y@vR=LZd@GlU|N{82&u?nAavEF07Ydu_fF+po% zrSvGDw@?n^M$oo^B@6o&`pmS=ZktJ&pFVTz{KK4T{!8|1dT`XraHg9dcR4B?wurOJ zr6F`nM7jUYNGrc2{DLnta8G!4(6ZQ&n2Xp%O5Je%@Im+n2s%_erYJfsZm;JY|7W0W zs5+3u@`~+A5P4s6`{J3w*0?HZSnv_h9Qh2n9vW;(L0y9Blu>#QK%&K;RZH_AFexee zwOW=OJd9Jfk4_nd3>X2MRC15+F4GwjN;`ZxkgnZjBX%C?c-iAsIjgteAGuoeyRiI7 z@!OH2Azzmy`j<#tNQp}UgWErU;BKv>7CW3j;@5MeC#!z&N1;(KxQe+5*dr|Jz1^7d zr@MpJkX?_d{9Ni={Od2cc3F?2?eXxn?w{5t##k5)^GtZE$ z*(5Oav^6`b?l*6$sP4btenjFv@OooOW#_-~zh~$JBxrmB z4r_`vg?IEcE~(j8<=^nBvZ>>G1HMV$db|E_&HLs{fBf6)YO)6_ThcWTM}vfKdM(|6 zuIH$9w2^zzBf#MbjFy3=FwJiDCapwSFIg$tCVHSK)naUDhtPV?_($s2{;qCky`w1< zu?#mZP!n26nnoS3nkQ>gx=9C-D?lKcjF?8Oqg=Osuoe&a4BQv;B(H6KfNs9dCq8mb zY%k~@*e1>!imIp2EA@!5>eHRos`mm2A_MrYCmY`tRN{p19M7M zC_4cZgNvw#sHvDas6WO!%`?L;bujcNLaRS#1lg}Dc5%M5Ueho0{$RIbXK?DN{=5)R z3+;#7CMX=1qYD@Xf+AJ1qyerz^x&J$EzOT>7gS#?Iy6w(B7=LPCL%)MCFXZ}7+@Umoc@++X4AR$5A~>; z3#!|Lnbv>G#*Rac*IL{Dtb?vJG!vYpMCBXp&(4viq0u)ZKaea)6JrIr6EzbzDCq3| z)`|Vos45qF_PrMFX`eE%RYy=~SoZ37kDMGjDDdl{tD#|^ghofxpdJ;4~^<(<7fII;T+I%X~pPD1w+4@GK(T-(daJ) zw|X;5W4@PRnL5|L|0?<;-{p?eoF1BqGGb<9k4yE@8x)#^ZegZ8<JYwoZajyj5Q`ZX!=3zUQG`GN|t4?@ki34%&$6!ckGZ#E(Rw;k(5o${WfJ zXyLOKMa+$l^^T$ABM3zbptMArB0Y;J1T7&n;)UFEUim&P5f>>roO^_Cc=x#ZQRT_i zQ&(X(&{-Cmc^#gNTuyj|uSJ~4%mr(u4LOKXL-NZa=Gi5($k6}l64$bW-RZm=Q5 z!0O=d(y{C-ORR9`b;~t0gMI%NHuba#{=FG2YW+5}{ohf;rI857CeRxD za##+=3pI^dLw13`MNvm%WV^b}?JGw1_Z34Z*45Ay#6DH9cE-@+&cHrq^G*3d(PsH9 zb)tx@I4+>~_W#KH$p51%R#>s7KwJgUirI?aH86WX)mqhzhxI^RuwP-i5mfiGUlm_x z{H?3_BwryWDt1dwgE>}!4Qcf3TGN>=P!6S!u9oD3H=DPh-aErOz3bDf1>aSJ@jd6v zXLNVv!~NSj>MH97y1S*qNh7_3=lblzm4f@jA^o1Brh%y=4+KPAiSW21&h%YeE&I?L z-o4!LPrgEvHF~qCP@L^d>u3;`wX@WR#l^OV z`gi)gk==HZVJdwCvlN&M{;Jq6bvysE3>Ym{m}%6*LLn zhF?exrf#K%aRe@7LIuIw zK{wb$<`;S%oveST`O5rFubXykc3t98B}?&EjiCr0*015^7%`VDsi>&7_7yo&!q{pex#fW_~Rw2Y5W_2;dO)T;h79aGc~(*Rm? zGI|v*gu0*o#}^fRY_f9F9slkSgYmLH#eQ@pI#r?vsecM1R-Eu9=WdM|f*w1Fm{sMYASdwF|QYNr&e{&&fmd z%NzE0%~B?7N@*#~SOgmG4IDHROkTsZZjbqchC`NyKfp*&36zjk%W4x4B<;cDJtdbkrN%N zkc>bS7vM{GthHYd?d?1#J3Bnl(P4iD=7T`ESPU9>2=@b)fVcs91Zshl0DfcSq}vc1 zP5`lh-f#+CGkM#6_7E)i8=z|Y21|lryQ58?hL{OT!(GSjWRy^`L2EEukec_ zUt=FKtWa}QLxWdr7j&<{y8wmgL+CQ_ZU}Q^st}|lsNaw-5H}FQ2`MIT+jhxHNi~pS zN#*3b?q{80&apuazX3}D7)lURBK217ZhO)B*p#D<#I-}~iRlmY}aiXkJ?jpWE95Olw@Do%B=`g;r%T#%`Y{+E$41^~H2VJBL(CyZq&~Ru3*kqy~ z{JXJSw^5TmItx1negK++SlPIvi7)urzJy4Gl#w8Kqb&q{czF5Xk)Fkkvz1xWlc>$u z31ld7pQTI_A@38pTXRhBZ2s0Nupi(QbqDbbemmA`53r~-CCY<_dFIo`O3kaTjejle z-YxI3d>q+LOglSLE!ftSReR11(*1xQMBoid<4t3S%8uO&h57V(jpZhKUBXO2Ekf?F zr{M&co9K9In)W~SB_X=MNx4V%2#KXHDBYkuJ2aKIliuhT5a8`hhrQH3(1D4^Ni^t2R9Y{hS3h*3?=Rse zK|^k5>;Y%Nz5}$tvFg+E9{qk*BPb6%6~qQTK%NI#V9)F!Z~&M<%42TD?{x9O93a!F z2N`PEOz5}%ld?1@M`!j%uSbdtch%kYYRq0UgPRyFApy8 z9bsg+3|k(60Kg&m4onMapY^8s7MN+8;NRjsld+WJuH3Km1~l2&u$#nN`aqzAxSlMG zkC{M<-!RdglkeG&-%5I+PLk#b)^}_`*JGMksod*;dbkw)4W7VR=8_nE%deI2kJ@WJ z0s_+)xO97@`e2B8l>6r0j(xxv&|3F0?swuz)?=V2#E*Uvt8@=^+f2`Q#p3WxZjR;A#6b%ooCzpb61z@1>zhjw0wA153M-iX%_QnlO0|v}v>bt!X@fZc(Do zBZQc7)T5LXS~f!EY}f8qmm;R2pK>O9tn%lEPoea??a=z@55S@jKPepyKh`Q@sDA{n zo_(J;2N4Vp1z*+uGnT8DOTWn=whN|K0vkWqddw!*$7!P|Rb(<=Pfk_q)ssy7)N`p1 z2}r^*Lajq&S2(h4+ZEE0n7;K*b4*5c9P=Wz6@Jzcue>&z4dfxV5udxPX1-!Oabiq; z&yLo89iM6<%qZnOF-%m}{k5}MpR8SL33g;zUfMH=*AWYCDSB{+d&>m*WzkQ4hOxK* zV-I&UzpqB!tTbx6M&1GH6^$~2@J#pHMiiz4oE-c$>=0wS>uJLuy|&(~uJZ@V@WBYc_UYq|NlN$8kuNz_!!<_T2!VAp6mW zefD`*xIS>5<%9#q0v=las7BD+y-1Y@UrKk zXy;(1yUxwZA$X2Brvdj_JsjihBpb_NSHu{EO59+HY`^S+WEVKta!r&awA8JtnE~1c zNDDa`Mx!~gFLj3oU0{e0VozJONJutflr*rX8MElHEiBD^Ho zEA7DAfKg#>oN**0b7@!qh(*0@tl$itfss)XTncH0 zZL#UO)})vX#yE}mRdA@KQv36tu~FFUTMGfD8TD{?%q0yU-GXf7d--2e9%qY7v^rP8Zy>75q zamiQ&=`rLO))({+&L-U^5cy88h3G0wLGRhlV`6Z>gme%+K)Fc2iCRuMO*FDPz*ra% zaL;gy;)#VIm?*4%z;FeivQwz13A?-_`~zIw__Yp}quPow*CY2K46sOhnw_8@hZ~`1 zcqff{>#gy^xu}sK6tLZ8o`W6MHN3LxL(PkCW(i68r*Mh)YEM#7@O`0LP(o z@SAZeDu%uv0!GVier6k30(4?qiRJi4d@N=SVhj$63t=qf{B!@sPeaO(k1a)(ILI30 zL|LqSofO{pnp}#>V+mYX{C%7_9@wYf%7uA@MZkE*U&>3@bF57F0(ZPV#DWmq9lQd# z>?lHR0i6bl>|FC);5gYKZJwfAnrk?z-mAGMZm* z{nV}Mm&PgLS<+11U0t>zT$`sktTBP!gH23@Ydhv4RU(a7y4ta(U!+P{uWqtxNOeiq z=Dcgq8Eu!$lTk)rVK;&P!JeWr4DX$F1W(FCx)1${d6Ie!^r9`7IE=k+`fhFm{{;79 zjw3&c{3U>%;QluCJtfR=Reez&Bn(sYW&X%ZP#pg(|2?#pk3fT9 z1*!;Tvod02mh+^u0i=Y`z!NR|vH#G1uuI5xJJ!)am``cOf56YQ>UEDzhc#OqPXP~r z1&~5hnbfNDl88X7AWQMPF>*paKG3+q>>+O%@$gLo|YZ!YM;V|V4xDAsE-3ZufaSB&y+=LzSpAwm4x+TD+nnXch0ISSK%`y53 z3g0EdwHJ61f&j$>&%yS=$Eb+vb&|Qgm9PryJNhAynYeDE#jtBQ-LOHbWC}S;=|xOe zdF5b^{Fe9v<^lc@H^QsNFDB$HDTvam-XV_w)mzrOP#Bf4L99~SW_pgjh@wPn3o8u& z9y14)j5d!N`of);wTE1a*v(iOMl*sCxSO5EZSG?KNF)kFhk#6{ybV6?oW>w4giExU zJ&no0Zv72L5j&pl$`;^t$SD*e`Kz_X;-ljzl9p*<}@HZV37 zHIsIN+E2-)hI;z>|6#pzU#|bBtx&B|B|$&H&rp`r|F9prl+#p{Qp9oGVcK*q$B!OW z1uG+Xs29sym;!v9d#BqCy9cO9wOaAV{6QT=R}rzU0(XFYJHkhP+RzCCLt?#sf^=N7 zkKM7z++km6af3y}=YzU|AV-tE&-PdQ6=AY=0_vey1=Rk;5Mw0jRZ4Tox^lmJa4oMvL1Z`m+Uf58?5Ubx!W(%r>OT^a-9ba-P%ga zInfTxGy6ld7!{*RHObU}G+@XQ^EBiUwX{Uof`YQe6?Ecq~cgn62P^vLueX;c7hd#oTpzDfkM-!n$5lcj&mMT&Up zTk=iTah?{9r}RThAg2lC*Z}fMm&F(&@sBgY)~SwG{|A@~awYjP5a=xII;Y8UNGnpM zTYg&^gnRTvijro;-@+!MLQvt(9@88L%yJ)-j`|F1fPOPB0T!^MIEauJf$gB_z$W_x z$0Bl`+cG!|z6H|_aN+w0y7*2_;4!Xyg6U%HMy`#L?fRX+jCsI+6C?!`qt}YRyW@S@ z;!Y&(aQ#mF0$d8(2kM2cgC0X{0C>ap;PxWcGk4PKX=N^vp6Om|DFX62;B*U+Wo3rY zZ*W?Hfwu9sQ-(6wD~d9(D8b@qiRiEwS>KqtN8L#@=s(X|*PR3o>7wS1?wiG8_^5wn zZxfQ`n=I!vSFjO)ID1i6D;N{glUV=&k^mJ6mT{9P!(eU8#2fanL(fl^u$H2ZkV((C5l6`mAq4L+XHwshRuQ^zKQVMPO!dNP@M? zG)ITfNsMv*8H3mnWFHvog#6-N_bDaMrpoOx&bd0cjXqK&XG*6^${l|!8FnlvR`*l0 z2=vMf$FHNTvA%;u$d!`G=0Ebg_IA^6gV-=#Mj6zMN{8vzM&M~IioBF%C11zS2bI}V zok93Knm^K=5Tg3ewA%r*-4zQ#?v*gDlZ4qAr0 zub^1)%Cnt^qap4?mEtp+8l9X?D)_QY*as{g2{~6J4zoQv~u5m|&Gz56aon--LsRDSVPg zKhyxZ+3z;6UbbX(Cgvb=B`6r-G;X$3Vo$+OP+U-EyU{$^A~w^!Z}8*C6eXn@pw?F5 z>RvVP20zKWB)n7?3kZV_10?}_UEk9N2#Z0ZP$41_$%78tUb{)@sc{)&RUS=ViG=+G z93~qx%Ph9dKu(5?c+F&9!Vkjc>5s_1+rypFI2}Hd(Sao+w!#ZcKTSAxB3%)b9_D~c zQ7g3&9i6B^W<)>&*K+_K*#bky?`C>^3urO&2kRZH4wDNvK}^s`4nDly?(gvT31uCR z9E>=jA8RdYwb#`HYiz%HhdEqo3+@s00Te>6#?_Hc#O+j0lWFo!xp zmJAW7e}lOcTFxwGW-L&6iw)s5=ALx%oeBmUAIqvDb0@`c)IppDR*bSg28f7ut}|Jv&X>JxZCwp&YA zglJAmVMet$QRb9~4_tv85m3Lqf#>)oJ|)zZ)bYSi`tpHoqNl=*3RnAm$5Gn{V3l&I z@}cI0p#b?3UPyk5KMhDj7>w7Xf2l`N=Q-g)O@KpK4B)f#3~I6CyVhyUkl(W~L1%1R znDwMzcrYqMvRD?YaJ8H#{G~9sWY0`!59o9EVEY@DQ#lFhW*;;9RD4|5X#K<<6RCYaCuLcsFQjn+u$3tAn+Zd7#&{5kNj*2FB0+0_^JeI?Np5>4?T9 z;K!gPmR79=dIfw4YeTh>ACrDyA(RW&f0j7tD#&_!ETB`;CPW)x+T#|d?Xtt{q#{#6 z4x|dG#)nWKED9UzdWlj&Zor1XA^38`Z^sMa(eBIkNG;c^hl};odmnLEackkdXoc>w z!5g{7?Cv@a4@Fa`U6Lbeq%>0oL+^&%XOR(JtSZV0k2YSh*E47DkU96eGz&}YoD9U_jP{TL9!3HUEK$r|qC+ z0NCKzuevF2mt>5n00KuCZ62kbeadw~V2SSs-aZ~s>7((Iv`946A(DgLMXNND&6y+h z5(Sv+%);G(Iw0YIeoP+u40H}=gW->X46}fy(}5%~%9VUd9%ubG`d#=7fd&a_BzhPS z06uNJto`bAHFP5P;xE$Qa1_v4V6d=Tv`zC-HJ5ajxQ(H5TSh%ZOlPFC-jH`QFM+#( zZd#DVTl7}QR-cw7!f)d?+w9IGYFF)S;7LF;_y-_a>MO}=Z~xb=nX7ur`p*r8EJAAJ zc;zzaV(40T13#3O&3s$g=8#9U?wkpCQBBCVAy&|0-wkd25!7YIo}s>O$Bqb;xc{_A}?R6e{MIMsX< zEk@qbJ#vah)(m->leJ&TFkBt#-o`@EzDu=bfSq`fO`NzBTUF2SOtrS$-(ap@7#8PahtI%gH1L~5ZS*{%OZ+C^V zt+9R+Xfot7BhGy+Dg!@BK3Q|Pd-~uZd7+G9F4GhnZ)iVaPY|3gO7E5A$@Kr67>i1| zPm!&o>U9p4eFxG6oJ3?|9+9WA1ju%zmu~v#8}(P|NgLO>3rxi91$~5H03s}&xH*WM zwzuH)QN5%Om~W*4d>oVHKxvAVYFkQ~!dk@2_Sgn_h`tK^Yzl`>v{Y(()!xohE7xtE z>!4c>?;H9B=Be(y4ytI8zXmOK9AVTD48ZdM)bNYpT>E0<3d(NsFgO}fWSVE+X{a;v zb*B_b(8-WXZjF39?Ibe|(Fr>Q>qjgwd^HzZJ!}%fMCwH>0<#~LWrspvfnNj81N3Mw zD1cH(yMY{!Z5lW>u%LNstqZu+(#OvX+~romNyEq>8UzpVnLd+q7@xsBCXq=>3}8dQ z_h0{Cq|@}+UTud?LFnz}|MF1#FNl0@oNtO3zw1AVj0ax@{YExxs;a-iK2X&(b0f}eyvhHKQZ%CHg9;Cb*dkd1hS_=Vt0Jm41L3BZ!c0Lx9oI}{7O zgm98_8FIniKdT?O9`Be8C~ z`?#fZ*MQanA89D+W#~JIl@6ezxC7mRv3uGhJuZ6;nj99cWtDx{>pMReiy@w~5lm{- z9ykOv7JChS0V5(cW9FMzS_Ty*vTkq(;34HUN$Lo&+!7BDx@dQ4t~!*C72quAS)71m zC0%9g0Br;O0jveSb=$}t@S5W%gTN6d`>u6A6fG8nqST1{)(p@lZM76CNPHDD@IMyVbTnvnzTP zVH*`hr8ADR>ku_qS3{~^sPEKNXj>FX@;+f2G6bRsZH@_!$cleM?jdtbpNu_<1LE`g z2}%rdEBps|yYq`CN0P2tB*{?!)qcZ}2|4^r+|{UWh!*2S>s`by%x~5^`Xz3qTPWT} zHHfE)ZgV!@3cGu&!dC;ap>sGW4=v zBl)K5reOAVPBSP0K3z0#u+iad(eXMxrJNVMQ_R_Jbu`ld2!sdlI1&W_z+-EjWaBoq zo!Yi-UUB8sww=1KcCY5uww*HOdUrhYzW;aCid+qB)H>_!?14B4c|s0{TWWV@L2ahC zFhgaUm5GbZN)Ac?g&7ww9FE^yvRz(M{?0!M-&Q8HNElFaP~%Vbvr)su-9Bfa*lVM{ z5`5Iks7hEI+Dp%pue)l;?=07~@>X;ZS}UFT9-CPqb12z?L!2*M?#Sp+BeADg(mu-e z7Z8V(@f<0mbXx3cG3<(UlS(7K4T5{nK;D#O!dy zSDIdxh6iuE+UzpXw_611pB`;lED(Xpe*Ai(J(zJMR>yM<5 zKYm>Kyjkh2#u7YLNgn5`7xd=05fqC0{EikgKlDjh5>U3;0P>_%f7{8HK_b}t%|Rn1qa_&!~Z{KezU zq2O6RrS6Jkq5>vnf5@#?&>-tNeUxUM>!KxF6Ke{)itbAbWPvtFf2hMc75ChYT1q+c z^-;%7D)WLXYh6b!!Hco2xDzUZNZ__QM=ldyr|s5{V>9du>Y~fL zs`AH^+Lsw;4n-^??Wq#;$+_6M(mhlCV;&Zrp$P>{PNMI*=Vgf>$tks$))VYKoO(D_ zzOHb(=#mwn7Tuppm^rw1gn<&$Hu zcoH0DwnSa{P&C&Z8&W;@DZ|<#s%#1x>Lykw!m>*6Idti$715)hH&7?wIW*j8qP8!{ z%uG@;0yixHw}MoeN|b}F!(`DiHj%gt<{4>`+rG+31--XjjWxh+7iI!S+|t_J?+qlou#ZRdAqFF=8U z@|(a7atg49{vxys@6$#o)x-5H&6p=q6>P_o%DX;c&Cm z(p)VMA#F^1RuHani|KFNQHG%_qmTI_4#cK$F26fCGEl838!d-NV(XNeW$o%jSfaDVJ=6Vi%B`XaU=dIj~wJh}|ZCVt1Lw)HQUu zGRZeI|4z;lS&+u^7ujd1)3_*J_f@1uko)4ojz{!d?yzWuJF;!q|Dr#|%-3c|>JlA+ z(j~W5tZtTpHWf+vQSd_ib!2L2a&UH$JucO8qso8^r<^-u>Zp5-Z=SL~CcjtC9p9s( z3uGsDdt#529drlAQiSH8AibnL1*yEj)jg)I<1U{Fs^GAkzcV_B1H2LmvLmdpy+6MR z&nqm-Y?ra%dnVKcmht24<49R?tT95$#1}(Aq+z5%!G`?xN}teT;tuwjt-#F@qRD)s zqxO>611!Q4m?UHi|HW-2@8|1VqVk--%jz>Ci=zg|pjf;+$56)!YqP+|h&{hsZb{c)HYH}cJ6fKvCIPSYVtNF* zOqwij%q`5lQfMojq9%tB;BaKDlU^gm&?BlP@M%!HVXP;yRv+@D-4N(va18`Na>i z9%but^>ABq1L)N|89$&mXhNdLeK)>UY+pxXI~?P;*Pzy6Uf+B_RyZ{Om7z)<>67#} zRfp!u&wvrAhB4q=>F-EZU=nzX*yFquqfzCV*>oqer#mK=7PEnO`J)OLdI~&~zs-Cm z_cJn>K{VDRwGbX}{tL%K3(aIRzsMF=3KENBEIpC2u`L|eY%g5t_Hb-3cocw&i}OuD zFudY7WkBKcg16`)WQ4Pl>nIV&A#9qZCO6-H4;)Q4#A_2z_$T}@;Wu}}*&?c;t!Cn% z;2gD-*v2y>=`ZIP$G0e-yaljEE_?p+Y|h?o)-^Qb0r>=6gdU4|FO*H_8WVB%E?wGw zIl3d#z>VeLKcj5K$7;cAPvoE$_ z=6^pq&xY`4M^zrsjY)sTYRuI@_EHS%5 zP0g2Pa&EQUbKbRoJY)}O30}!w4;cubf)<$r^u2mBVHovy(uU-_%vs_h=+j=tRE__W zFg}UHM^W#zY1$4khU7nHoGU-T0N1H%)sXYf&W}X^tkAQ_g=}ccEU`vi#t$ zQsShdo91G0gzkgKfzgH|BU`GD%PGQ{A-=?>q}mAdiv)&#Cdpo+^VD& zY!hyrjQ-AM z3(-&s=6tA~oGHHY?6<(Ut|fixGcG-!UpcI;akG8>w$#toTh7f!k0!%TT(veUZ=~KSB4WOFBx@ryI@t`XE7!UNkPW&(F2x|b_E#hr2m0q_UjqrNso1L`{6 zk}t2;mxlnjbcTG1R*TAVorvq0uoYd+`oeYPYtTMuppCV^LUX~{vMb`IpJM&NFWLmP zZ#X8UdhGrR;ffhVF<07r44pR-=$pTtj|2|@o7wu*v_Sd7w?=iPX58AC$NXUSGFaVo zgR77!=vbnjVn$Ybhx?bX_bht!Fn26e4(Jea78j{rpA6SjGmW>#CVm(@$Mu)JI`Rv> zK&MchtWfkyKHpiLT#QZ*FZDkL+GrKHR<@P;OQ4_Jv$#FwrX{BkS5jz1Ie`Q6u);H0 z`w9o-Z7^#?2c_m}U!aOv-j+%qGiQh|p&9@lm+lsxC|{usu698hTu+ZtLlzyf?VhUeVmdFjMUsQb>lrXw$>_{d^}}#(c+@fUmCv| znWJPu=nMS3tD(~X_bR_V={Zh+*W8KPTi;){qmC*uxyczAO>b8ICubTDrR!i8l5hM% zi@BPXw6bT)&9@5d(t;bA&!uLe(!wRSh5dh47Jdlj{2Guk-M_DJd`x0gH^<)S19}Gq zEnZbT%DcuhGJMdZ!56{#iF9%^+Xv@lJQG3P)uR5U#^5W(yWT$PZta)rec5(kxVO0f*3c!Tit>d2{43F@&kY z_Tg+;UHBhr2tgwq3=AA5&viD8s^e5+|E4<-bI3dR6UD6^lZnV4SMTUrQ9WX!w6VHD z)@GxqS;Ui^hZ%2`Q22O>MrG85&*d&aui=SO6VVMKKt1(c+U@xr%0pKE_zvIfs{@iLf6tECf}wyQsQbQ%s^@(-FzJjMSsP> zGiV#k3nJfDpe-DYkuS9qYF}(Omg?&6`UpQW-V_eaEtmhYu%00U7nmNxRA?@E6T6Gf zqC2s;{MIujaK7+5@(urNS!L+~oHl+I)yzL9Zxy>z`^ibnMz*^!(Jm0Z@T*#TEeAo- zn)(xk@Ky8NRD#-m;}}wvg0aLzHTJ!$IQ}(To!w@8Bus_!%yW4+GZ^`RI3xLe>8_QZ z)rpVEh&vj&AG!3c{I^FrV&;OV4$(@bJ(XKf%jlEYf#31o{aNey50-Kd~V086AP^%28w{W>HQ=a(s6S?8Y6lk;Crz z!p2*+5%Vk@R03TWXym)63>GUO*=U4{rvla__9VNFJqXJ%q4$>80;ALdZUna>eqT}} zDwVpKzrEm!_Fnr$%%*$Glk|=zYjj5h?2=j2$crrV?Jm@Fy~TBMobW{TWt``7W#^EtTUa%;|3-@ch-&mihczD_TJ2&kFAA+K!0dX!Kd7HL?QIS(IToO zyOqBR?FP3O?JIciFYwNGJahF*h%fbAZ-mqje(-F7qqWVzEiD~rBavi(^pPdTy2e%@ zsT$rQ$U0XV90jC<%+-lyKT|!)7D@ zBVXyFJO-OW_QacTr$tm*Uo^qfTWhLJx0SU22A{&2#VG|0WyRK&t5Rx3iK!(Bq9#tL z)x%H7U1&Wk#AVAa{l53J_#2AG9>ZtR>wzkP&z`pVjb+vI3F>TIp*J#{9OLYM+e3Fd zF5kA_c7gjD6(55zO)QWxQvZ$I2i(9QaCh;gg1W}X02m|2G_kgKUBqqhGHW!;vzuwB zbXuCKcw`Iyls#)?phdx!f%i}oe3iXMbQ@O%+jG7Un`+bzmB0_7gQ8m`^dRnV9<{4F zUFs5i?)%_Jjhp&7J8K`~-tRt&mN(`|389YIYVs-!z#X7=ia{JFUILxTWb>Wb4=o1n zA$@cV{G|Rwj#IZ(256T@=b8#7`Gq!uLL|`y{sElA*2O?_HjV@;2F~W}&l3FwzIJ*y zW0z$u-7SiCNP0;SDV&u12AT*gOSqrVn$4nhW3}N!oH{!Xj%4N4B#kQGqy7yf5!q&a7XbgU?a$s`6VcAFSU|Kit(1`$mL@2TtVQ&R26=XAcuz&}WjKBwip` za$w+4=!G&^K2ID#&Vp@>C+ZN%4qZgj=|jwCt`u{C>dG9ESrsUpQ(%BQ0FIZKa%4Yr zcGN@1PxcAj$!w(jZOO47rdlztq<_V6+F^L6jH>y*CHXn38MgCL^mEH@%LK=rsKK$< zlRGdlYigasYr%HPO+8P}kvb@Q!Tv^;wmve@^h0aifyAY*hS8VR3d$(6wK)piMcfZ_ z!EgReMRkpg$X=wmdJXCVR@Y9Nl~qATAWcz?gGMiNu-Smk#_l;@*gr>icl~fIv=H2U z>kVs^YZITwZGi6@!^u{tX}N8QvN&z$SWNh#v{L#8c{!JD9kbQFJ$bqfwAC0d9Y;Qy=RBXM_|W4b~EK=<&&-($v>oV%A3d` zPgj0D(K$9dhH;#4 zet{2YztNM*U&eQBmh@7)rq(y7z;BHY$~0<$vW97o^$f02vI86CV%Lt?1!WhPYZgD* z{o1n6HZSav$7QGfJdRz_Y>9JAS)30Omm2+m!9|sG8!458gmr@Tf0iS*O-k?3#r%1H z(&YjX#^cFj;B#~}R*jD)`Vj}opXLciy8R|rn)*`wB0o<9!!8>y074ZGl>kkDo&CGq`2PnFu#JETYaM~7i^yUq}e z?Oo+1+K@nePJ!OTo2ed>js*+EYsLb7Ae)LzwTjd}Y#))~*&7<*`(M#xvOX}~@y+^y zPGb@Im|PrO6#5P<1ZZLcp2{}nM=@D!eK}FQq@7kvI2yYaTHaZ^GH@$`{ z%RqTXJiz(ihmMAp`_2#m+=#aEz3}$bf7l%Jwz2?UK%l=Sv?TmK{1EMcdMyhrxxzr} zLHlg`6nkA)MQ|IoKk_HA7iuppgxeaQmDTcVEES85&WS$j9_v0t=8;o84FZ$IDoPdC zDCZxxB+UTZRb80H-$A_ib59%3Kj>rA!#7~2$ae8RS&XRUCb|*(O91GSQ~`Vvn4w${ zH=AFy-CSF49b2AHhcm%Rd^R=A6><%P5UjP{LRl_!BNuYjm=VT0pjzau)HJ*(9E1;= zYsj6DC!FoQB3eW%ooYdmqeMLe(oqJZuG0YmhOd}Av0eCoRB8G!^&B0~RAz3_wQYWQ z3s&CH<$>5#h;_q1 zlv&1js-q>{YFOt+@lmgZ9j>Nw1@*JC)IZfhbC)d@tV!ZjsbaWCxEvS)oX{epJBC2G z-C@t<-&+0xnjpEDi#tfJr1R9?;qll2bCPv4I|de@hx!qyJld2_u^zXdOB$WLm%K}U z%Sirn(f6b15?`I&%du7o-OSpNh1fS}xz>d$i&kL^*zamY>nSzUK3Zd<-7%A*ewwr8 z@&1RNhRQa%9C8QmhBI6=@d(~1G=Tihv9>noc4l4pm46`GN4jXOZkY%_r3qhl;6#uv z25sAjNu>sr=t?dZ+(m1AmkmN4>0s^W(caW!&wl?W^?+OH zroTuBG^cvhID}rpiiJ&lJ1T(Z80X}{@LS`X^)ZXsyU_KFn(C;mw7el%uFO`*3_Zd8xEGTbkz8(gx~KE!IHeXqH; zL|=M1zYC3`?!#Z;4r&?mh#|w3(Iwy`y;^8+_(D-1eTa0K?`Pe>6@+S7%kGB@@r(1@_63=Yns$h2vW! zRZ1KUR>eLB_e%$G8B8Tjv!!-TkCW<~bH)AQJJ8U7+SfaN+vYe?W3Ik5?D3z2o9ie& z7~4kdWFnS^(Jh_hT}8w%bOoSj7mVfdf6{6H!tjLRbaSaH+xtXck9DMcq?cH32lob( zik@YGsuD^7OmJ0rY~+TKsgx%UVvn>WvsilqU4hpzM~tD+b!;>^y~N}ACgtjsD@XQ0 z9!Hvb4}o2fdd5HuH!m9#_zC0)OAa4pZ)CUF2=0&mTN0)JiFrgfqL?lzR0Qi{!w`>o z&$5MS205Wgq4eUe&SDy_lu~Jk@GB-ZyGv1{@AtlZf(y;bW$IKM9XBs|nSN6qReU!q zNjoDQVO7g4-2#>>IF)xVbR^WoraJ$r6s*#(BZ-!?m;(=H2-7Q0);c%W= z#%Mf|)Moxvwkq4pL*1x$Fexv;r+J!DJjST;i&xt>Xz7)^> zO<%~VN1dR=y^G`EUf zj+en2iR(i@@Qp+b65?~cZT(|>y$h}IR{fK?LD?1R8%!c=v875`%RG*|8DAZ*P1ZFU z%R#+ia3-2*sDU3GTw-@j2Ffvw@9{Oe`6Nk zaZe?=wKy1Shvbn{h%)d7)1fpA2c&k&GhhSw)^dW#EU`ScXQGw@BWo#0+8Nl0O#{BE zHH}RhxV$*7UQ~YKTlXivmE&h|wsb9H=AR5>NBE&*t&nTkZOzwbn>G~|6NH9L zK3~cjW8|6hwK&Cv9yV2E4OkeeEPW2%iHs*=F)uk3ZG~Tg4CV&C0=funH?&A2>@hIk zTxY(NH%VvEv*1)~I=4>vE=;kmcWjL+6@^fl=sGL`4e;ab1I)3=D6_g=ijO5rsJvVl z=o>7}(TwJrXPJOr1lEKuh*rg`uEzcaFIu|sCt`v4NALycP1eSrD~(=}Ms9EPB-+b# z)H+Bn;RaB12I7l|UBq+(!KyeK*i2W4C_nLwn5oT_Rz_Ne-g}>ToS|O6Pr_|}Uiq9# zjgtnKd5Vmp0QpoXK}ACc)noDlb-OwVnhYMMpAemCicN<5QsvQQXl)*&9F|Y)IiZ#1 z3qF#)S(IH^kaOlo0loq&6JNJv9@CUF13CEz!p#cWGP}68);`f)z%%ATQ46oaM#4j_ z3rG|l3UOkN`dPFpO#xJWhx4!nf6lzXuh8w8i^xC1Tc$ggW`88k(SFK?R3>S6!lk&Z z*yqp^zz26k3gq4T@W4A?f5b4h2?gvLYmBuUxsd{)*?TM z;S!==7#H=5qxeqNk#dF#0-v@`` zjlkPlfYqS zEY!)cY2C&0#ee5b7GJ8lQM=-Hl=)M3uSF9HXdOoD^QFCD z1#nT|b|^it($mDT*EX)q&GIU=8ts&oo81Hog7qDSWeBuO-Jvg$k0Mjam*iUdE42w4 z4CX7X^j7*DU@24r z=FXek%$Utlb8Kx~*T81xLRptqlL-tHV~NePud+`^Gqh&FD`hwqOL)*($aT4PxQZAb zsDO9De%b$L&vii73_jkT3>V`wv~!X3@H3+!4#H)y*T5p|88!jh4Cm?-^tRHr@G`NU z|2<_=vl5IFZ(QH)qksn5MDwz-m#fb$r*LY5-bo%P%?Q5?O$weAzk4I_L8F|oo9kd@ zh1r7Q%3$U=_o-)Od*pw`Ww4w2So{gPMl6&Ms|Dtcp|c0Ujj@tCK)bhrZi7kDsPIcl7~x!#b&?^ z{co%+)CF6Mt8_WGFy^+ib;9$wOYjc3S@F=~=W43HAAf)?#8l`mc^Vo`EP=}qJiURH znEBK;G*fQ~whVvQUWJ;7&&*oNGpCb3==$NDk4}MLWU|>KoFV_pZl2W-g@M&EKar1BlE0Y`1MGwqLeHI)g~1wvwZ$ zQgkC7&}rYRq7KFh1+fM!EI(6dg#h?sqq7lj8lm4f1#}YH+HMmy`MpYc^IxE}o=-o= z-vC{}RPW=$d+KU!K|58N5QY4#`m za4msmHgg-;2G|*9tKJ1!Zk~rnGaKmJ_*keDd=6Z|cjYl^645|vB^5*t1pfhwls&*@ z_l?6u+eId zzR%vJ-inn1-Sm914|kDjf^P? zF)4DTxERcZZ{QQS`P5vZJS754$ta`?cnlZJ6Ua&S9rhm^z%9^Gq^>r``~uw6udw;} z9qbPl&_$yG)&l<sKM-4vM)QvK3nJzSCWpm)Fajt0MZ)1YN)D{kidS_6llA$C@kxo zKA2nOm`lE~y;0AET8Uh4b)cRe?uNvNIqSCF2xbksEN#K#>zs(PihbP3kX9!Lu(@KwT9w-YgJ*rv#jHm zaYn1=f9t;rp9LGzZ)sLr1bF1{(n+(mvQJ~>v-({Vq&&=P%PPx6@)Y4V1+|pEREkr# zNGJ6nQU*F4$^sq%%Obgf8e!JoO}rHz2f$`GWD!~byU_ObO^yub#Q4+5PV@wHORi53 zB8u7LY%gpNx&@dGEazs>g)wbo^O#-y^WYKhZ?R%voaLzXFI!3XT%sOvPA{i?2<{bo zX}8o zsK~JbL)RuwAe)dBG#$Xqol+mDEjX5mCI4t2mHXNVy=wH`m{JK7k}Eq(Ii?dOslAas z(*1Cm5CL8U&zb9uT1r##ycunDf-V7R@LKqQkiz#9Xzsf)R~-rN)81KjSO(GCaoL2V zY(^KJ@NV}EWtdqdkm2v8T@+KX55`+058h%N01M2LT8`c{?3IcGz0Do~34g+}BF94( z>0rRHT(;D44^QmknCDt;4+(A29B_&;(SVqTmSyx$ZWTTm*@f8gj*;2oSP}I9BL0IP zQ?;=@=o+XGnhc$k`-f8H&EdVwKB^fDS(eeQ_!ew7Th;gkPlaxy-^fM8%HSjK$Y5j7 zC!!4#2UWpZh*`l#;8^1l+66lTN29~A>u_6q7k-FYX8j+PKouGPYL(Fka4BLB+)imC zStKT0ODiQ7%Q@0*siD*mN`XFeuzfo(Sz|1@v|xS3eL)_OwR9J>19%P0)nU1YS|enD zO^j(^7x)423M9E&)G6{R+A*-!YY#3B>>>M6bF9Cu?U4FZEjeEwtlv_L5ffQssbeuM zlBK%NYA+*w{8xY*1`M<@cPKsNuwFuU!(s3p!jOk?fHp{gtj@lr>v02_ZD=L3vhfO< zWBg_80UBxTG)oW_2LuBsjxMu(=8llDq>L32eYktphxl?TT|X*1;eUbAL>7yigFs&E zE$=kS={MyVRRabZOPM3sEao}cmE9xMr0?1u0~e8@;`qROHCOD#)#REAec7Q#OL-u$ zU2SCzaEEw{bw1#SM(a(~FR%bt#HPRvR3vmWc&(^5U^4^EFiV{EjR4w)3(2U4{TFEz z+@XC6Kj+&sN%2srF%GqaP3xk>i*&(4%-r6f={1A@qu=m^9W}J!X}>P5M!A zBeSb2d7^fx?CD^mM|@oQI!LL*Ql54>XaUYpLk!@3`T(Y@I`< zvp{g6crMt$^B(=I7ZM!e#!A8gqYrdKNz!J4W0XaVjZ$n^V>Zwfe+pXxr|>uU8+;RM z06&A4H@EA8an|tZ?X-0HcIY}d#0X+%h_6O@0M=499=?o@LmE&`l<(RE4iaWTpqpZzj#~m9WtvaFHXIc0`kS$#%?2#ITJJwukIA3`IbrN9s4J=|BnB)1jcN{!|3Y<>2EBQ;he zT61uKDz4$5RWL)lq_&Q9kJzvS;H+rU^~+8;CtKz^$C5oc9&ZWpW@D{g(Q99;;D3P> zBS}sN0AMHDfGLN4#K+;g&80@B`ck&2^T{DZTW6a6r&Y7Oz?u;t5l5UMClJldkak+X zr_@(!Xm`yLppSdT63{rLv$#yEZ5~rvY84|})sSSxAhd=3f_0pmi+h1gB+nMSEWqU< zfwhiXw#MZ!xk|#*k=5b7{wYwhoWq|H`V*D;JCPe|hCk#<2gk_qmOA_;)DC?M z9V@mV=iwoIPit>D0qRZE0M2oni2rdoJJqq(*^^GT{{mXVtIZ$Mu24)cBg_OP{2=s5 zxGx}7G&31#i)cVCuxeO=OBlS_r@DE2W&(2 zXTB4=xU#y#bm(2g!WPb-54u7N2N!T6Z!e z8#J3kOQjlN2iVN4N;IQva6>2!Y-8?+>_!Yh5RNbxee_{2>L1;s8Gg#eR zCsmbt80)k$*btxraRUtrt(@wo9Qe<%@f+vZHQ86wDv+{d=~!@>8Cse zTZe5jju<|84Z4&%K{o)-!5z&BMq~51G@r^tPjl0#SvqaZ#|nwE_!z|N>s`Fm2+66g zjjlh|Lg#5@9NY_&pg3k4;x@O)jll$yld;SNEz6u-Hgf4v1x>dEqh#6QV=o%Q&tl9)94ylff z!Fy00sR&4!UDX3(e`F1kjwB)dxifrO%LCgnv9iA?^s{IpdJ*^X8TP$V?x+DAz|v|D zsX%TL$sj=Vo^=m(nw~{d##^MHI!v2Dd}W%@y@j68N1#8#nmC*-zcFSgZOlC2k9h;> zf(vXsSP}f;Ume&YeGhLyeyCS47S2Z{@E-9LnMOaOh9UFeO7Ll<6}}I3!#wZ-*^VD1 zFe(WjfW5|c&|AS0L~Xb}@Q!|qW+IF6Wyp2Bl0DOs$?c-|Xyf#0T9i2)cx!Z4`A7@1 zY)EAWBM$q3sAkT^v3)H=tsTIM`i01eVA$vnHphL~E9r$cH&W3gX$zf=9fC~YyJlk_ zleO5F)Nm?HJ~EHNcf%_}TcD1>WOjkIDYu@lgw{4IKob;$dqHi4<{=}!SN($8QXa}x zXRlj#x+WnX@FDU6v5(SA93o!{%rZWTX_ls3Va$JV7cmzj!Ug6w`+aL0s0_AGo2us0 z!x>C(s|*rDUI5RBc3VsE@147&;+SE=CL_V*A_v5}l3%?8H^K^#9!9`u7dfF<1-b)e zuoB7vB`5U6*A1Ks{)aANn}bJ@{dg_{*{bp1qpv#x%whVlcw4F_y^q9W7UUz)9ho5B zlJ=10v1HcDP1C#S%aJTVgr4XN#nkX~br{?U+5pewy+nWKc&8uckYSOLk#dM14d8#M zbE2S0`Vn_Tyvk5l@DT4)}lr4%cjGUk}G zk;+H|XTZ7MaW`=-*bzSqddvq<5^M)o8;y-e@_Mmrc)QX?XXyXfUP(WbSXafE9`cLG zl3-48dL%deMr)u=F%}sQ%%=Jt;x&>Ej{{G^tkD&c!3x1`>K8o>mE!j>R&p}39(idV zq$Z(zs50bQWGBj!bC{pVBJy_VR^XsoS!#q|L9Svokska}OPphgqcK^Pm|^-%9((|` z23XVseKq2k9att(Of{3gXdt{BMwmlfnmNhX5>`D`;K52&+cp8_aQ;1ZAG7fvE!UW1 zTxI>X8mm$2Ouz{(Lf4@y*y<#M?Syr$mC+E~h&Dve5bxmvU^Q?>A~F>f{9}v{^!7&-#5loRU`AWwEZyta`8*`BX8qXsC3wzX?+9cvW zoz3KPC!D2SNnCG!kz7ZL$S?ixQ5g7R?_y^x9(y57b3>qpNJT{qEK?SR-XeRAV*D^t z4Y~r{2(=Hlkb9~l$hPPaHb|v|Ca4DAdv}8g<`Swq+X%dbW}kvpL*K#}?90P6bP9^_A$*L}_Mtk=Y5r zu?k2xbRq_Eo%!hKqs}dC5!X2UUnn=C2618;VVV}Gc4$eE)OUvZp~uZlh8;{)&#Fmy z4Qw-Bg#1BffRC&z9o?J-Q9JqTbP)4Gk7Q6j7vaS2;C;AQsB2x#KVbW5kp4EbD4e6) zGzMp(f3Px!PHw~8>;|@}*&GzK4C4Sc4jzqHghv94RLmSAcV?QgW62!4n^am`hIYf7 zSQqpApr^<#y|qSB-_bva9sQrYIT$7%!x^^Ewj}Zc`H)oUllTLykDe|!(r2oth_>ie zA%;o93gPMCICwK+;On$~nrLiNr@)0~DP>h;PI#!lxo*`DlBemKIE)`b>mXyJ=qSO} zIOaTrLRGO?6R<32?_m3|X<{RJgYrdL0^c`t!AejR-W`wQcCvBcSX2ow5o>Eb)!Jsr zsH+8)$5?f2va7ah7R_=Raf|AM-pA)?CzYi}NZmpN@jLi4Y#%h({1>-T z3#kS|Pjn!*3U7yB5$^Hv_(lj8&-xnb3$-@@fFx_ZWD_|F?q=)o!{`NEIyN1jfnNqo zp`U4p!+)37ht zW_%dZg1m>fVJ`5k@OGTTOg7FNVIbWJ5iGBSa=%1t?=K z5f_A(01vdT?0kWwgH}~puRayahgO@H_43d`a~ReIzd@E}ui>M~0iXr?Y7Wzm;pgE5 zG9I4?F94r{e)tuhNw&mZAcg7_`7B-qE3h|=Iz>fj&1|T@l4{GpmC;I5qz=@GOd(3M z@91-QEo?6G3Mz)*;i}RE8UoY>Xgm(A2esDy@OY>LG687~c7>{%ZK2j?X|Ouj21qh5 zDjhK$Xkw{sZOx6h4kX@DES8F^=w*Z=$H!>^bH%t)}8`CMP1$773$nOG44 zG9;V9*P@%_GI$M4gnB><6vShQxnxKDt-2??T>c&UMR|y>)NrPvc0zXp9gKtMQevqF z>zPvDKpS9~=0VeumT*^C&`N4);9+n&{gnaXr9gFfoB2){%ipIEg21QZI{A)H)033O z5Mlgl|I50D72yQ!#`~dt;cbS+cp$G5&nmG}ENp`s@^(v%gLhRGz6wcTd9!Zl zfH%QhV63D5VWZ_&%DO`15K8)qiwkuCZDcA zA3**Ac%Y%W8;L{ep$0f$~6Yiq@4nOtm3);4|d?;>GZVP(yvZ>4Z)q6m|o; zMs7hbV&iZDJ_YRtj_O(FYE3}9L2K}q1jOXfFNC99D)JOrCZ$N*)!lNI`O6pzDL@tT zxY0sCu5QG}BEy+zCKio>?#us*z4ZA;UqN6GInM}b)M31-4jQwhR#F{(wN%yoNBe42 zFi2!BbQ3-eeE^SZO+ZK=EpC$PD7bu|{!UG&{p2+GkKP5gLlvM}a5|s>M-00$8F_1L zx2Sv;)q$%EBV!{XJfIsD%ktXVWc^0?= zctY2sS8;-%BB}5&8B)@Mx25;;ok$&Ghk1riV8@dX{S00Wf5&`C9uxpy0Hc6(?mBnK z@>OU{$jDG)1y;`(Xk0A5Rd_wJI=qaz$Gvczj{ciH$2~VVrL{g*nhEcQv#|1{lMu;O z;5(qV@lL*ky#}t52I|F2lR>(cr4Juxt;u}EU&9^r8rl+Zy!=*ca>oy@I%d zB)~F|4fKRG@Eg<&9)zAi-eWb0Jk(8QL;27KunO25y#f!!YD25ZEBI|bA|PxPfhA(8 zJZLPqS~5bp;t>BI><#>Ze`15st>_4)v)B>1p(odJrAY9CN&%*7!5hDYD%hjGqMw!W6Z{f!R3h@|V|BOtf@9D2pKU@#&0{V>;k-ibH z+Eu%Ut_SOrndmHJG5S$|r#&|ItEGV*8mE>NH*3SRICLf900x0xaHg@+3Uis~0JQ?oxt#a41?@f@^S>BH`f>G`N%EF2&s) z8r&gxaCe7u%IH6?>+xo+=gNXT)D*f0 z$G8Q>@M`O@ncrwmS@izEI=g{m={=6)>=w0jBj*wh4fJ%b_*(t?_VWcM>iHp_pv~rT zesA28y+RVwZE!guJrOXgEa8lCnZ`KFale7BoJ&s^Q;dyfAETDlSIpMgsGRLFY+Pu3 zHJZ~dzFg*{@uXKtT3n^hw()|d@7ygf3Rvh=0_BAk?$xmhhGppg3y~O}$OWKi? zM}b1Vn@}BwVl`+dcW|1ge$d(AJ3*z){KiG&m8ypAc&zu5ca9vR6N7?+PV)oPk>89R z?)*V5jbZYjD5g^bL!FoQH#^u)_B&~-QX)iqJ2==AR5P@Da8nltg`uU2dvB+85}m~@ zYl6FmeMQVkd+Y73YQSx)9Z!Vkx{F;!-!~h&qQeKIzaCUMcp7xZdAdj7j`rJOHV4Y# zUl3!AvNi;!2BcFla5^|Bv~l|1Gb|2EpKhK)Bk|X$(LLsP~uermtPv zJ6EE$FJ0~s8FI?w6_c@l+J}^3&Z0nJF+dcCFXEit*PfJo@vCFs@!hvtyXpiraV3S` z4vuwSaPKl_m|Kn3R%Pd+Zs=R?ixPvx1na3;%errlwT%fokR&zD{9Dh#!7yL+H9oV8%IL3l5r08d#flBi5<1pgV{}TXkUSu{(vJ-0Wph*T z)}WW>T~%Kc!tr{Az9*OQQas>*_+MH}nVy1Njwc(pQQ>xyH=HlqbNRjub57tVdwHOw z-t7wr+xgR(FTU$W!biD87d)!hQbt^@JBtruE;S6Q?eT>S2s+2B34Q6kS5$LVC|yEW z52KXqy^m^fs1LV;CgL`S;TlG0~`PN^^kP&eb_he&WgICc_UOXf7PpKC_SY zz!+z3GyBWEMrHF$V3^axH{Cl855P3HHbRWUvZYvD0zK7%CkgK}8tyRF4jyL01qq*_L+GbYazZ^H;5`XJ5uqExN z_p>&ksF_Pey0=T^s$vbHm$C}fghR3?%~pqKk0|ZL3)|U<`}i9WhpMx9h>~>{{lmTt zE5tc!20L7hthw&wpjY~b(^gkYE2c_P3>8#IbP+m8`&Ej0#vJOoZ^l_|)t6~0OY=M`t125&DxYzY=0E{| zcYh{3Igp6;APl0NCw8;cVa|X4GwO=bOOBL1^h3Radcbfxs7GK-MxPQPri1s52@%*UQ}RzzqmS83xLYwsfegtXqN6R8vI zl*4J7FPk^u>*tSUANA*aax3(~wZ=Sk#uM!MV)eIL%O+}u)4*QouaSBrFveFkP|iPu zZ?MbL#@*8BMw_6MW~aXWpZzER<~ms_^mK5zQkLIY;0(oK&JCOF+fG4UNnJJ)eZ7JQxo%{>o@tj+%$kxiC?(t;?7Pj!X^&Oe{Ks5oT$N8{UG+?Uaxz2C zK)ipwZtpv%`twT}t~z*+_$um;dVsZFRdQW3zFNOqO}G<>8N-Z9a<6P z9n#FqWhMn01qS<{dyC3QXl7Z~ELx=!{r`I3*sFXatctECZoj8E2~iOy`@hO=Y95uA zF@d4}C3a!k%`4~$2dNGIdA?CznYu*9DY90p7J*&83BS%H-=wzUb7;-5{VKPoq20_bqWh$E#5TGv{U+B^0?#*n zDv$Nd7{bqZ7hHs=dYgD8zTm&kYbV;@%6nQ*c7o_{Owi+Xt3V$+z38U<%ePcRo}~G% z2}b^~`e6%Q*W6$EZU-owELC{-!d(8|7jn z4F=%^wDcfRPuzDJ(kWb`maC}}h!m$s0%rR^vysW`db**2D7HxD3!WrOfkB+^V^l2W=?Cr zFh2T-4cF0@dxJ_7P*3e44&k*x-Y@newoMM3peaL?Z&+90&zHyMQVPCbAYFcNF%+_A> zfn`|LV3sCY3+ZKyamP2(&gBpB{i5y|@7d$oXVkH5Z=$z?@7J$b-M~rG1l8^8_DOsI z?L+GXM~9>jYKd*2h5vxR4ZNbY>ZB6T(9Vvv@uXSJ6Yr9q-({lg>A&lb43zdO$^cu8 zwMJ#xL=Eu`P21sJpL$WB5!H;hs6w}MEl42IvQU7W}HydaG^NDE^OiX>24f6 zAmm@Q!hGqhcD@JPzMOQE93#>-k4Di1*dcnM9~g_!HrY~oX#-`l+vs}GLsXDWsH;wO zvWpXXl#)gnHX+Ix=WBskvA0^!7o75eWlqk3-x#Q_^9-tHw@$lD8S#^;3>Dk&)Irv>j(GX$mF*l^e`d;V{c5Tls>%BSF z?4-8^7C3*|c`-kYlxummRnqEWlrYjT6V%fE{8My0Kbpsl+eV6c0S`k?Du8)$6TIT; zl+{?sMP(9sVF50}+i<}B&h!}Zs&`;Y;4S>p3A6~C=*IS3@ybqb4l)gEp!<1XiS7!W zpkeSo?#sq7c^31-X}-;gva(E88~M4O;1mvw_U+(W=rP7qCtb$QY&UQ+(@*G1PsK5N zQy?Gq6VuF2#zZ;@Cuym8;d$$dbboXm7iGj@r&b__QXnH1z&Vf)MyW+=3A^QJ$bkRJ zEi&LLY5ne+W|WhqaF-ctbPv86yxE#U&Y z&6Jnurjb!TcSpLisK4Y0?<`+wf3!a{hl@V4G)8j?*-v*Ch3q6>Rm)Z>=`ek|AQd!S zj1jTEOujE7MkJ^YDv8%p3O0j$kQI(O6~z+0Th~-Jesj$+U&~jrrg6+`2J%39q#{M0CgNuta#Qvqly7 zHBX9l&NT%7*5TfoDG~adUB|ejTB#y5OMKQHp+3c#r;TgIWZ4pi=*rH=Kp`&7D~%WC zd?&BdMC7rvn!{CV>dSYrBpsHL$EqSk?k7ejBgQDDcZltzY4x*!*u z(Pkn|->*^}0C4bG=c3_#j%^N6*cB&FQ$kWqx#}#lDq#9TdlEn*T8Rx`^bd(rRz2f#NS&}8!C6DP!V@tsu*x^cdFsDs zR|#Aack~Chh~#Mpc?@4K^q9 zJZ?*WK}otu&&5ROVJG-X>E(7iW3DmF$f@qCXs96bq7v7I-~pKEQm(t61D+y^*bvp6 zQ#cFiiW<&&UEH56`|=dyyK5X~#3Wze)XVlb|2FxVcNvY$4RQxZ65wr1x#k&93}0Gk z+Dbdt_ru-Y>g&Ghx(*lNwUb^iKsVlmw&JRIqegBmy;->#9#at=5aVzFjlKW)&%30Ix1I-L3$#5(Ql~^)wYA3t-6YEo3GSw@(Q<= zq<%B68B?*aD55I{=3`@+PZ{yJ&Zd{xM;&w;IdxG{e(Qx9ZN|&`#YNkcBd{Bt7K6lBzaMg8emZ85Zs$C5vUqEW{Q;NQEShme z9&Pnh{j70DcX^nLs8X`5`C858G{_Bq>*DxY6m!2cHwT3W9TH1moIibF3$B6cMkc8! z6SNNO_B#IG{fh!qol#CV{X#D1yFuC9Nx=_;j&MERZvXIg#z@$&LX1B0A)m*r&|NE@}_;mw?B1q;=NV=i2OfW?gq><;~c|+3#;k8DO>?CA-OeTmutz zkwA6dUC~3|r9wE3H^Bn)tV}g4n4>)j?jKg9HHG@}emO%er+YY7huAaiL;mnUcwh-N z#(#rextF{B?gVjO=Mg#V!m5L8izE5DJw`uphTA1zx@aWZ8GBs!tdc?RERPW_&p}sF zoflzid4`5_R+&nEIZq6BvIXMP);a&PZ;^wuaWVeE!Lo!o)%;H$;3r(2G8tQqPe!Pj zSLNg7v>k5a0*H5N>GJ_Qa97r&SFUbmJ8nqbbZcSjcmdQ0W~rt!D;LG9VuCZ9Qt>R; z3VCcQ`os2-2xZ6aPzhDw-OIsDD|or-b{ROHT7 z9$P|NJ=h*@gd5VRZe?|z2AV+wr-v)eS`u73c!jc**LTv}Dd6?p!Z(;qjAghXw3g}k zmuR7vIvwrF@)B+3Ls(2-*9&A#l`Yr`-W-%I=(3EZJbG0iHn7*1?4RHdqJ@y)USd>o z%`~S$1?;I$InB8)t%6}tM4T6YtJ<<6RT9hWH@=S)3xBzDy6UQ>GDb{t64fexr2H~o zXBOY!H~2zB;4;+LgLGxPiT&N*9}9zH<}mwNZ_MjFl^ThsPHDK|WY#(`$Y00z7j)C> zRXceU>x*pSfIl1OgeUx+?m%&@t1`+o_hf6n`cqBR+w@b>Ra-=&EL{O3!fG z`D17SoHT2j&5iPEgDB@jJC*#33hT0F7x~^iZajo|F-tFYYRM~n7UsZ_z>+{)(MVk6 z7_O^gX)M;#J0MvXlDlvO{?hNU99}Rpy4sp~ttIpp3d10w;Rn1GC7e9a&XLA`6)HdQ zVy9`~2X+;8)g$>?tQG_GC)>dkbj#avJs+n<7zqi`LX4+$R8Unmnyb$00LI~3cqk_F zRlI5yvn~hA;Ld84+U@J>oua4t?ifW>ck8U%qehui^iy5UX&Zc?WuuU{_lFPvxmc2Y7>5{F zR82lkT7Pl2LuZi>3yQAdPiGSkA!!sfva8;zx4OnQeS-mXnzq6m+$M(T%qoVj&|PdJ zO6k{B3bRqFh@t-=gcoCwb~}}w;!Z{WMIEeU^PaI)b>vex4p)gm&H>+2=Z8N+4(4=5 zO``>lr4hQ3GX%QocDx2N$P@S;f5B~hEv6`xhJ4RA>{|Yc_JBZhJ}-;QJNzexh)L=$ zo;H*Ur}CH{_lb}4jOy%a;@YN?xRj2yJK8z?(NI9uUF=f@ z)eVlICy*+7L3vSGHs=}Yv7E;%ur|DO-rJ4*Z$(vS6FE>U z&ulZ+h;sV)K<5lxXFs1-@6;SwN!`i738=3__Oh4EN`~6 z;^Z$bAxGh3-iGVpPjLVu;a}NCwWoi$i9Od25ubGtnM&KJ3YffsPRN>yXfWo05n>7~ z6mhZ{XR-FFjq)iT#bBHOYvCeD@DkuOtPYdpd{x>QW|oBWq8=#ifnxfEv)o<}Kb+SD zxLi$9hh={`1rQdAApKd?(OFajdBr%Y9$_@TqMTez<&$5H*YbiHF#5o1F(T02*8nSm z%e-j394k4nHo~}DPmAO3Ll7%?0jOFxlr+k3@a2Y0wjOqy=keg^O2VpUT z)Fo+4lONJv9)}sQk$3`^L@1sX-}EAV4aSPiR2~a*171q=XfGfH%L!Q0>Y-++)iNDy zcieE*!YB5PhPF6uI(i@i?%NyS~ctn6xyd?L>1Enw+TnU08d;y3#bJ4g?+ zPl_m~x42{9kTJZ%YGFN5%Z!uqwmi)X@P9lQa+}X28qefdQBRk!m->6_Yqm?e=raGo z;rg+yU`3#X{06-#1=>2@;ePzYAE^*mgF#}EGZ;@pyh@cBRb?*6{Q*Q} z=Qn$Se-iEyIo$tRIfCB?eU)!ytghhH=U!}bG42XG^ljcm4cWmXJfC*TIC)FF*0(WM ztgz~;N@@!?aLPKP^f7x2*Tv4FvQy39+na~l!BkIAS7mp3mtjR%9j!X9i}aLw3ddeZ zo#3FztG7FK0;P>(va!3Fdy(p=-eFf*<}?j_40QGzQ~ z2dTAcuyKb{pbQ^`lDwSCI?r`;JJfN@DKuF2r7?DF0PQCBHF;ltvesAwS+E1m;jtW{ zmT_KrUY~Uo+|eiGXj#FCG6&0eRZ&EVCBEn0lDd$?=4Io&@)&Wr7>JIFp%jHLp)!6D z;i4?vgo4T~^Qa%Z4d_3YmFtb(4ykK0CjX9DIAW$(;MJ(6LoD5hR5~+NBQ*drg6K-tVwr%H)ZQHhO+qUz? zJGO1x+HtaDocvYi=G>gi>8V~-)4gV`>h7oe5o|3~XM(tl@$_4fVl;jdkuOIv&-5Ck zvqWb?jrEisP(JLgljpwRLl`~vj_?B=x=Zq9^l*`?3`C8 zV4u_cZ?p2MI`h1OcQXxSjGNGb%^SDPizwoeO56NOg;y`rflDS!TCb0b=aXh zet}UltgyyIa5d49oO8iUh$$nuE5i}!>T2(C1O*6i;o~A@MkDW4MPU9 zi`%Cx>j!denKq`Vk~bE?A{SSJ`XT&v$ol>C$r|Y#{#ddV-JaC96*WC|4@ZKxW*q(% zW)B?&gBzKx+~8+LvR9xnF5m;)Lcb{xT%X&Z*bsAx zV;FQgrkOliJ``BDwTbB(N$00CB(o0wa{}~;j;0jHW69T?2ThX`R&B7L(&E@gK#G7+ z_V5zbGnw-Ela4uoisH(|PMu<@DZ}^UoG<8I7ti-kh*pUlDm0>;7Gjng!}KD>oTm}B zSJv}H5E=yrujnfOmf(yYHi;M;Yof%@KX{T=s%#e`x%xx(_FS`jRh>pa>BVicrxPjI%ry9sCM_OQ^Kbfm4m6aJsrfRgN@$yQF{t zM&z?)H{<;Z%egAgc(*& zbT6gR82PZPU7wt87vwAv*Fqie^yw+I=T$t=r!j$!f@!IRJE9>ZCSy*;@g*xP315cL zGXs3bwi}Y`=hZC{%Uu0@SSc>tN1gr+XPQrEm{6&TAMCZDPacu^_G6pTx+T73KdNGv zR6j)8dE-wbArzFvAyJ>kbbAB0j$k~5eh&C_pwb5dWvyfOUN~~?r)T1jnT-|r#vSs z!|z-KBrYxtrp2Zl5z))VHHEf^BzUj`LZXV>W@DBL1=otEG$Heac(@QehMhg>AMWux z&Ei>Jy2877Y8=&o{V&Oswyg&J?oyoq^lC?5=%4@DY-W7vTw?~=oDar1)AHsHM|5yN zw)4Ck-hV=@3Q^#JGIB#2RM=!9r}Wd-#pJywqlOJIC5Tqy!bb!&BBT}#y+-FB0`e7h z-e6B4FVSyrg(6jsSQ+=B7Z$3dHiL9Zm(tDwo1!B&g26;oam$+3xH$3OY99S(GfpVaQ<6O<5- zEsiQL3+pDjRYT>uNUz7_WAPWPV5}Fq;YQEgD)=HdMdTi^yDJjR}AAs;e zv5hP0Vo(p5W`_;GB`;2-wK7{5z-0rekNeqb5jl%UuEMFAP{g6dL+ggwLPwb~z8y;h+B}-7p2<+$40DZM6X{3PD;m+B!2dJ!RUk_5E9ossqiaI@9Vk3 zEDoU5N+a0NWhOpUg9{c3yyO0+8RVZ_;ML6W)QkvxK@|-B5Gl)s_7=0d6~=AnXq7MG zc?rQV$YYKKxQo6Mwj{0`2egBqEm?k|q5>d1D-39hqN^;Ln%nCnjL7&>ax@=+y31sE zXL8}5!T2Dy$fw@<;LoN!*p$j9z8%#}(f0BxxL`LAD8@x18W^oAgAAUS@&j|udDAgX z+{7~L5|r&f<4_xUPlJRtAwZt6AWg6kiX^M;`7~r!NIMdimZa+x?5b$|1A~hhR|W~L z4*b_aPnA$)6Jg&tZU*M&A&bxXW`$8@j$9T%P>1O)o(jMk9edAslfV?}< z3rq&II*{Wna&C+@Xvirp$np-km{7?OOHtXvG}>r8^ivMYhIy#V(rW#tt`oEc5Dr_cnbzpz?tzvYQ9vHMlOxWtA7bK zAvyN7sX)=iCWvx5Y=VRwpX6=RAUF!xAA{f=at z$lFF#=HW6#<#0j+3_ZqWRhWY!=J_tcE}ZJ9Aa{nDxrkStEpX@(T;w>sux^XUaH6yh z6uyKL+_F)WFiF?BEW4Gp%;Xt}gfv{@A@hx)z;Jbr(bK3P_kRjAcdZjfxb9;a7acoe z1>WNmI^g$?@w!9uhscxG?k}U=Sw9&_ENR>$0AB=%QO-@2++4skj#@ajo@&s&K?-89 zUvM~sAkXtgS&|FuK(iNP&jidHTHyggZWNuNu!cw&!E?Ilb&EQ$A`6+Nqf&B|cd?e$ z2K!D2$wSnI(UmUNxw)`007!{-0l)d(cr7Cc_7M?FVQT9b?sgjd2=ZbcKeYc+4~tpS zIF#(*C?U1?Ju4yo+?uFrIfa`dLy<|~c9>#s7rE>uA1f)%i;Pt>yOBmEh(d3T@H&Yh zPf-SRp(vG@+kseJIi*8fR5R-op?VHPThQu*LIc0SIsi2Ag8(fZ_px0?c#@U^l`2#- z3dCa+r*_!MMf7#)dP63SGS7`n#z*f55eH_3nn*2QSjtD3Y6-i0x>>MPKkmFsk}($+ zgky@-pol{UP2J<)vB7dPiR8!r@6;3*EX8dI;kEmNOzQyAeW1P}%Z?Zg6}qyL^!6BB z7k1f@3?}vADSTbox6)JDTEj^D{be}1p^L-b&ynV3J$4cNG(=)G!L^jU+T47a35!nx zlA?tlZo`>Z|Wak2HhBWBROqMLC~2;KpHe>u@tu9J!dCdAVi#0Jr6H4gTsRotIR zoLr(w?wS3%6rJ+q|I%yLoC!06=(-7emX9JyAxs@KN|H_|?h*#2mFmFS_9IjLcvcNk5P zx~}-E6ZgI{<@YF)qFKkVm$PD(5G}|b7kvIllb>*PF|5VO0^w;z%#?@ZcyKn3RIO)I z+Yvq}lVL6S87eL?gIBKbE<*(OVlDGW9Red0?4O`6NBZkzAgN)e_elCcb|Vh2+6pOS zRkZa3B*ih!B0mjthb&O(Zl1N<136r=l#g&QDK-}jr{R73IlT}rMm3s6tU`J_(dc2= ztjB)X^lLHXhn@KsXhpSLh~<$LJmVV*`dDN&4La_J%GNQlrB7V?(;niAHdj-q?G!8h zC7x2b{kw`OkPC7&@(Gr#-=${l>b0vKjydPGI8&Sth#d*M3sl+Be~39hLj%`I#vaMN zly3$t?ojgoG8g}mNAem0bcQF~Vft2}u8a00nY5GL4n#O&?+JNSGDh?KyLvaysVl=6 zf40uErO0_y+Z2}$g+Z0R6jvo&Y$v)+^M5`9)s$As)DeHs+ze#AC+;5FVhY<0A(Rn; zVh=)2=1Pq|v}lwID6Dyn?>$14g`_{WxTJe=Qc;pE__GAQYhsjX7Ewhmy;YeaW z3}1}rj|}@pW0xeQtFB)$nj80gBq@3z9z!jO+I;N)-Bp0spzyV z2Wg1xHbkEZTCk{;Ym&+|JN_dD-6{}UaKI#3jI*6;KChSyiyZ9Kx(=|rXZVsjYh-f| zQYywK2rOGikv?!@#*q-Ey1}TYLijuRj7M?yV1&Jo=!zI1gjp#Qa~DHLkIq4O(ph z&X|YhBksHmX^;!8`9sHz462B5YDmTw#COQw8w!CZA*BdmEgEdEP*F(8J}PmTY!C5o z#DgcAvkK9^JWVrK-Gri>=3P0Ua%`iDDXciiObnxzj}e&ODuKhz?iYT-|Q1EiVKhBkvvy8#F3yU7||87cc0F3Na-oxL7DcP79z^{ zooHp0FE{SD^U-nw){*H7NkpM7sA<4>wts8{I!~;{b#n>5eKcvfiIZ{P08Nbh4yvyl z&0fLEQAM_2;5AamW z4dH<{5#Q9VH|FagiK?!mA3HAwVF=J($ytocG0CwlDNq*B&h&36rWnB#xrZ8u@JQ@# zNS$ij$B`UyuwxnHMMa@Ic5I)k8!71tl*frbd#L#W%AnM(I}T!k+*ZXW8ys{5_X;-a z0_PJ_8*YScJ)UqMUVZT72?|z`K{qh&faWH!_%oEEIYIl#n+u5D5VtPkF%uKfg-I~E z-V+%?l%6Lly&a|a4p&ljpM=o=WYjtDinL%Jf`y9KzHo~RcTXgMiey%pH!?^>F~xs~ z^fK@>qGCyKUJi{kD(8Z^wb+C!nrB}_lQw?{PAN;&692YP>{T!`?r#w&asD7&Vo=T^ z{2g<**nbc@bB2f$UMt^MePs{?$>aGc?e(Fzea!7 zBUcQ`Jcr#HB{9p>HRU->IUyI6x*`3l$jwXtYXI*d5iIDR;EUch#Ig@9DaIo}7Sh;< z&=1_JVpuKf(hT$$7Nbe9DTG)abymz&H=%1mDXSDfGv}00bmy7Xw-%#ygib{#kPf0) z#*a`GpB6b`2B8#zrh_y%$C*`5Il&C9tcsc9NI-Ik%u?9kfb28^a~&39Uz8a&Wki@jn7TXhM$s)r`#Fq9 zH@&zL#C$C5kV6)w#1VUV3A0-|uM+oBGs zBC+krStS8~2vsh5{sDgb7;hD0!tl?5_Cj#ezQDI6cn8J5gA7gm@6ivc$k{`>abkxB zdG5H3MUKyyIYn6N6DMmCR!cVd;=Tr`(+H9$*vZK~F3EoxS|{$`k%1SMyt(Bmm6a?M zCgQbXagB&;Wfs1n7z-TTfSwEbwBog2DBUARHO1NZX=;l0zMx}rtI03y4b=)cJ+Xj` zG;E%Yiwb6uM^|2jIz9i;oJL56D)rrjiDE!BvP^Yb>cR>weweE^Y_5UE{6ssozrK>b ztT1H85yqoj>obMJSX?(`&k#{8DK4iFa~5@@l9Zsd2yMcmGPiqB>x~T@U~@3qb_i^7 z1hi9nv7ET62qqWOWlZx8ywU+$X3R+^NuWLS*p6~C^wci3T+GRo=%NI^EA;pGiihbC zA=4fhEi)zMA9!7gn_Xb}4_|p=oQVidM(8-wPGb@{>3RahXrgJ4P3)=98V{4%V$6>S zu0YG~vCu|_8h|qf#IF*j_VcI$S%>XB$!BBg-XX*X(X)j+sQAB%-;WQpThN+~9U4Y7 zs6bPgKw<{0oInwx>2-sKJVD(;lZz>Ikwci_>JOzgV>b#xpV4J`3(5D2&9}1`m#pp% zL_9-b3;ADLqQFO}s$*##>B)|SGDnW6!}{jQtwT8v@-n053JJlD)MAkx8sOJG!L^Nz zG^OzyAk#*XoR7$*NBB&Qfj1%loOAI7N|ONplBswi#~<*m$Ab$m(6+}h5EX zPsTW6CX`{_2+vtj=Sv`7jU~+|co&Ib5+fjrqF*Kq`||--?!dp%Qizp8`yr9TKo79= zgW%bKOt|u&4Iyj+vHyAUeZ|unf!YUy(MT#V166rq&mJL;2Za?em&AJdZOMOa%+mDG&21eisix+H-?EV^l1-; zQO5541>ds7kKi&PFp5BChaX+=xsUyK2iF>fhXu`jN5M8|euozyIXN%qJEpN;rnwn> zaz`r=4n>o2(MW+eM9&n>hBsn0k6l0HB^xA36YNEeC1FTR6=pE3A`49T9j8IWSsNB% zjGP}Fp9#rwfSeRT(!kl%zla5DW0=SlPD&i)Kj!0!=RKs`2wgl}fEF~R9TN$x$!Jbm2<_iTqK(r(#00}xgRgFKofYc9i zt~5k)kLYWJG#yN40`(E40zdNij^mB80u$diV8E;>_^j% zM66q+`~>Zp2chh@@D49h#UvaeW5(T!4t|2^J(OJ+R>~9_yAy~H2~x$4ShVbpU?&1U z8}OZm1FxdU#7jtGLnbgmsGRX}LZv(+#)I5p!rENIr;0ce!;?o}dL?~6LwL$YIDm^D zTx|!~_LDJ(=cwT4%hTQyOpo&1F>24_*hI5DDQ%Yuw5PNlh-Sy`RRLSW3}SsF!rt@7 z7PT>jdpkJh?`+=_a-2xvg1DyP4bD;H3l}moaE=gNk6b*- z7F9rG)2`bq@n&a!OR-DT>rnqj)bJ3~IvCW-7B%s1qXjfk(ieHAN3W$+z;?>kGV`Pj zVZI@AF6fVs7Cd9@jnK0L39_U7KVd`8LGVV28?YINw5=7S*a9z=iML~#i5UF?6H>$T z?tye8NJ;Vu4s@c6P+dU@7u0eAGYy1kBcg0D^ay40Pl)EfshpT>W00Nxs^g)P+yudf z1aT!S2BBbf%V5Go0AFh`3LYTr70kb+qCH|#Sqo<9zbCBfMT*K$jP4;9$KZDpgUPrP zYE1X?f%PEqeW2{FF^1 z1O90Y?hBmZB^5fExO)N!Bjj8VIVYIul0nyk(-Kr1Ffk0A!SU`8W& z*%6Jzlra>Q0A27sG3s~JtvfPriLXj61z$QT^ac{O(X4iS`9qxb zD3g5wgdmX6^@Qp}M~qZ}MAH-`qk7EnX@X6qv9O3-%JH!Umiau;fY8$raF5oVR&o$c_ISKdn(5)RItB49C z?BofWQCV~~VMCJ&96(~{2L_gTw0=#!1ni(xN z&@a+}us6gFGAZfCjEZ7f9-A3YyWsV3BvBh@p(u*NKUl2_>?4$D8LJ=$eFNaX0R9fT z4uV=Bit@ToACEs9md1m7tfIFsEQ3O%4SD~l(L_DG*z)dPyqCqvt2cm;jN}yBtO&+ z2a%i zB46o+TcWJDJBvcNQmw3`R4~(A$<8wIz{MYmv)q1ys*z0Y=3Gdl@Yt4r=D|-iU|?7-yMfQ^*)8?E7!08w*z39SNW84oV@MPS25Jtpe*>hero80D@8?)DFv z6}FnzI=E@`0oNQO20&^q?DlC?ohA33BcQDd<$-Hr9;IP7lc}{_2dpRq3Wf#*1Ox>% z4XPqe_>wkePYML|k^uxn@heqvur;%?^&+AtQZ}bdq5_y%nNt(#DB2pix|%ub zF*vxmmHBPio2@zR^8$Z^CQ%|PTCdryRBt*Yp;1B{OAR@*WHN^aUJA5g|H%f)aUKOO z7!^!J%pCLW|4d=d+{=t`+pyW2FfXV z>Tsga+xzn!fml(mFt@Z5;OG1P{XKL&vo`l~+xv0(bbs)4zf(}o>zm@>;Q#OSn{DU* zdPbw->}+YNE#c=egHSMlXD8srs&i;7=jZwE`{`n5>Eh}B@7Y*|px=k*&y)ZEcD8c% zzIQ$%euWP94!ypwPrg6*I~RWmZ+_4H`Q<9n##vBsQ_$!8dNfoqR&gQk;PCx@aqzW< z_~V~_Gj8wT|9JOxF*G!`^yBIK>EC(8iG_^Z#@WW%_qB5I_Wkws`1QYqm*=-*_T|d* z&u2vf;w`}*V&B(R#aV>HoJvpY^WOE`dwriL&yJv=fSf@-fxm~(<6K3B0%8JTMH}Hw zL4kro8>fNb_v_OQ+s^Li>Gw-Pxq;ueSntR0!wURghb}H$Ujlw!e%=Cp?$7!@-voai z&VF8}e%|N$e0*L;2nl*WmJ&REeu?EjBAi!mZv$RWGE}5Dpg$aX1^9m+rlQhNwytNc zXB>WyxpPaf`}KP8rm*+x=b-O{a`fX}0g zi|?TbY}1FWoW8Gvh>EcfkAT;IUyoM5f_g!|ZbAO9%Q3_`L_uFqE`GTuii+pIdwks= zH)}6*6;V?@U-wV*dxV8v zb8c_6j_A^h5aLj7W)X9eZ*di}lld%GIT>39Vykck z$Q2xklR_jdUOFxkEUx<^*Hp7@EyC^-HyL~kB*`F2i zhx{-HA%}5@K{OCoh=SP;7{LA`s1|i>-ARdPm|y^C_eh8c6>jA;9Ppbm?+0}ud3h#) zhqAsi01EFI0A#a1NTFPOMRXFnc7);K61sy-SvNy>cd;^9N*R7w=+hrexFpx4q-hLB z9Hu-8aC3d38%WlK_rSpEO!+CdLx6{!Gvdv}7e1E#B@}bfeLvIEJM!u9;g3kNjR3+$ z;Hq?{ORFD0%OR}y@p0^QCfrq~1OS+?`SWOa05+OuA|+sB@o;@nLf6u%9h*XyMKhYS z*phnkr~a4{I{D>HtF|hW9N(V)k07h_0zS1KV_~hah*cCpRZt8A^4RImSW0ntU#`Jw+;oHJ`q=$Kr;Wc zQK(%|EnC9*G)M;11nIL8oP~R9Xk#h{@A+BLG;1Bb5uenq!PukhF)S9vWGCzp844s5 zLsJ*0Is8ThGUcX$1j&{_Y}L&kZqCAYj}wLNwtTjP2!`jpc~{Tx$MYI9fsi1;_xQD_)xY8ZI80$U|Ni~yFuM>dZMmU{y}?C#Gj|R%j4-V=0CaF2lPs5dEjB?R4*^E@6pl(l0hj{r?7^iZZF~Bq@nLKJzUm> zA!FgQaVKEn_xH1_!d7HDE?rp1cgj1GrbvQ|#KKcsl?^U~ zL*ByK0iF8o0rZ#RL%#nzKY+#;Ro@`Ym$AV*3Cz)+(}oI3cyJ)V!39DqqIlfuu@a?a zAe_+AZBuD~hu#B6u74zjrN{vVyQ}*Lqw$2go`Dn&3m+=U%7PjOLd3boHi%W>*Z7Km zU34QL(cl1Zp{FgI_}HtBwoPNNkwNn-fv`3t`I7&_)(s|zFWHfl0oM8_Wx zB8wK)S^NCkOsz9HxuDnt)z!AGlti@PSyIGS+;JJ=q9@T z6xZ@LA`L?pt(gWy(YOQt1kClt+nW&?GHOdhwH zM6TB;Db*!ZTA@_$&c6|Z(?phJ_mIkcb4#6z?ynWfre4)Z?TF`o*oD>%VzZ_9pvI!Y zRU|1Ys3wWj*p#wXWiCB@i(!(FUwZ^WbOe@8;?Q9S7XfEUg-5Rjfd;{LLTw%vVD1%h zvqedfUD7VQkzgy~XD{kE8xv;fh7qkcEtJI))M8^pn@e7`lpO{iX_oHqH7&7iUq#0Y zQVnu$#bS7-yns2zl5?dwtVsi(g*&F^*bJ7yZ|?TTGpaM;X7>|Drkt%`#tcQKntu%E zFK-gEReOxbE=q-je*mJNvq?nLdQ?y+E)#G9oWDoIC;^k6{%I{!bp;Yv-_-R%_KOuO zIQv)L3~VxK<1W8(shR#usrNCgd(83ik3@_QxC;aow$AR?8GwE=GTi*}{@8x9q*X@> zA>#g09V;TY+f>^geL+k!`3yUuLCj4*2gY*!sCYGN;+#PSTKLO;y4_j}DZUHxw4nAt zF9f2(9_lj7^O8}a@O>z{*xe_=rYP0u?+O^O)Fog6j+MwVs?FYh2@niO49Xq`0kYH$CPKmG{&c1|W#X+c za;3k?A;w$Shh%YbmyMo`Z7AeMNhL29>^6j*| ziTdMm+&Ksnd>88!*h`@ci5Eh2tKgQJlylgAQEDMLylgMItJJMRDg6{O6MWiB@_J5D zI6Na#UP{_y?d8Hj821TwaziI1)spD3L!Kljr#3W|2c-PQ!bZadY(L1o(8x7}jb z=ayc$G>%H>zvZfa#Q;VcKBalz75_UxEtH5HweN?>ASyU!H$D~_zLTUnn9*$KZhrgf zz<=eGv2L}N-mvVgn$Uycaae=Z{XIn5065dT>Er`4Mc5L?#7m*Pa>K++M!oe;fRHs&b!v_$bdKadF%%7(6U9zN4o9$sLUC_> zxm*|D-g{uF?V0gQ34TUx9LVH_A1eV60=kWx{`o~qWjdg*?PQ8195EL8>35P!H4lLy zi)>${sco_;ae*sizZ9utW;c3s`jmJwCJTs(=J)1g#4~vrxMbFgURj=bqsmAOr)3O| z#9>s*F7X!E*t=N07Ej^p8h}hddEvOvG(8rXIez4VgtDM_5KSr>ohOns?6~NdsrmdR zgDwl5Rmiaoh2Ai0NO9>O4}Ijnnk2YAj5qy-4-}LQ89~knvI=5rGo7ky zKKX)l56V{RiK>1ue^pQo*xO`+!CF`*rdmmj*Ewhv^FH9B8iH9oM3Xzjlwpp8lC?#J zR$SW81XeG(b+1&B{}w)4rodHGU&P>B+6^nB0OuU=Dcz)&F`Cu1c=*(!d)K%)o${oE zdyrXR|8mQixMwzf$m|xQA4uhcx?Mz>uKK)zO6(Pv^iy& zL$EXN86}z3R(YoVoWj=sr|OkuHl}2#ixy)yB8yc*pUjx~9QXa8USgwNd-HmO1y4n7 z$zj0jo{3Ba$CiQgH7W}QF+=>9JI7FI%<{Ws12fjD{M zyP;ijt(W=;?5qXf)ZXR=YLk1+gs<__Lo=2~bm7O%v@|+&^E%ZbdJxf3Bl%2L5t&j3 zBwHR`U`=Cp^sp>wa?$lw)+pwFXp}|G6Os*8Cy$KzwH-pIMqxHZG;RKCIVJ-qe z(>q79B!(pKsV@`RLJRTt^5`N(>SCl|l%4Ep`F%Rz6|4oJ7@4>9rnP1}uD#L8_g*wj zqAIv%og>&xXoC2HFqxBEI}h<>HZ$Xg1qPgFPB>ns_@ zect%&rTj@^trr9z7pMiqP_e-~4E>~L41-2>Kka-m&}kty zeRTQaG(I0JRuz7TmIR0ZR{%LS>25iq5>Oc&2ZeXF{^(*d3AnhFXT1_KvgXkRri$3EUa=2KYU9ZxxUQecW=m8supc_J}Mh)X+;<}&h}TR|ES!0G9qg- zr*PQ}62FV6`lkuD+Ny0odXvy7K*z%hLTx-8?VzUPfCfO5oc>;vVLm1s)0hkQgU*g}L^ZdQrCA=DOxk6So~B)Mw&PugQ(Owk6v1JT@gCqU3{XK6PP5TJUHqqtrHb({ZlXe7=rWPqF8OSw zy?ZepRh>J8_L!frmi9PMx0%f^?3$ZMM#&tL;U26m5&gFXG}H`Jy0hq_)5~nvJT6W2 zuR5o_mVy?$1E8%GB6BgjDVvq=FGsKZ@;;uA>wJ0g;Vyrn#KWKZ&Z9iL{KM^@X7-mG zl+_oPaxI_qVHs9?%$(RDu%gsT^9_lyi@03uhfLC}m>xk(2~R5{iFh`<5aM z?VrmqXW8R7kRLRN2RJXsd>XyRh2#|LL`;Mw8?Jf_L)k>qzu~5Afw{yHkKxG5)TNV3 zu7-QWLyP!D?+=I8+BTY}?2S&sHu@3fZ8XRR!q#f{jyNR$!ZW1gP(YwXF18F|wL5~B z$4i5K_9dA!B>!X1UBoahT=*+FgB;14x{JJ$M2D*7Kf%m=D)Tf76N|u5X|nHovcg;3 zhS#4tKrS`KP+P+*Kl}#bQBxMo;Du^eZ0j~{HSA#s<# z^!gl@A~&I*IrfzDr6&PY6zCy%zJ-aB6?qi)fF8O&jix}}+E+2@NwPiOJ-Nkq9r{%j zCsnL<`d_hshG~8U%KBc4mq5EH`hC;al4*Vp6#|QckrVy|pFB*N+Jr)~S1y{bq`hz2 zG;N+Dgu+U0@b3r>+An4EEY8uhxzZ=pkgh~TmIOEh(nsHE-_*32PsvkeT2EWGo^-q0 z#+84?@X)79rz7kvj4ZGFFlwE~CArbJgBo@7FiDs|xv2@E?CnIrDr+)JaN}W0>M-Ifj z(PUwUP^RqElmD4amPRZr(tqZWh7C_dGfBP^`(^h|c9H5#);kz+prxr`_PBb89*Mxo z&eeFXGcQafTDGMpO$H7VwOqKzDAo=dA$F}f6a%sdn*T3cVvvXm2~uDF0Ic!o#FPXH zIuc;@_fs7SJ#tu@mXIJqgX=)fE)EO|7x15#0n}`+up+U0^llmw7cPLt`n0LG1r1fa zsb%$={TIv%m~7HlkPA!}y=vFiL6El+`_pP|ldb$DyEtc4e)W1}oCJm)gbJ9W!EY{& zZvGqi^!~p3SmRx8|5$&$>brWJxqd(SEM*h)8Ge8)YFe)8^I=^|)MQITpQ9Q}*Q;YD z2A8z5djE=H6q)OaA9b~yDT6Z5q+I2^H(<~;2^ef9IK-+s=l^YpCv*`uhEiyvIw|?f zm;Uwan?okV`dN3Vw`Y2Hnf!)+KBT_}=g!ypMy#N|GFA%Ck7{#~%*^N3Q=HnQ$0Z-P zh;*pP+!D;^j>AfeL^79LX%UlK5~2KWR4CHrPm(h1e7=s_A22Q`CwY0r#V8QQod8-! zF*yC>*dhbXKO0b?0B-!(9cU}{HSRXmQkTbPXZ=#P4;JrmtG=P32!{oi!5cLHt>r}J zCr)uZMBEi5(dz&WbH#(GNSXJe5#J~r1G3|e)+)7WU9s3&yI^j?w#H*85dO}vUeK&& z{9$dc(X6GE6>keX>vt(k1V=#(hyfug`6hMNmOo{Q<2r;ZT1_xuEFdB$`5qLpw43v! zn@|uU^loY&AOHF9iG`cnzxHS>?P)8g&V~)eGmHrO96`&Hu??%MGfas3wA^xIJN&)d zS}McK0T?mwrv^1_p2P^d8mbW0`gy9$6LWwK<}LoD2C@Se9gHqf>uYVwgAy7QB30Vq zt!-i^k`u9QqQy}{D1(U{$pw<&BGDqtBtd9d$76<2gHi(*S>fIiL z=X;u4Tdu1+ko{p4(F$B$qixRbvA$^N%D~i->COa7vzgRDk^6VOZt9o6!Nbm`GY7+~ z)-%-`vDl6nio$S82q2mq$!NL;%)tgB$-6OSy}6oev$yQ36zN`$Fo+aM)oMJvd4j+_ zgIoX7ILNXmh>2@rinK5m9oP8dc-5gnZ`wtns&|)Tx>Ehu_#s36UUWx7&|RNbgQ{qE zm5$+6t|*#j`KE<$Nl<^jMG^@M6{$)yVeXk`*JU$WJOnRUv@U?-56WL6Y0+rNNdQm# z%`7ezy1)7sDaE31n&v@nU{vAr{(m2od6Fis_ykQw<3iSoy#EmV=VLr}J?xReZv`0b z+*sNUkKQPKe)vmX3jTQ4WV$5~uS2B9KmMZPd!pBT&uG*n56~M!2GT zC5YZJ0#b+izP@V4rbY0Wmsv^C88Pi$^kVj#7fD|%rG`?YWDi<37&_`k4_PSm#`UP7 zh6I4gw7Ww)P@|^Vuk-)TO|QfMc~M; z=+G55WZ)$j{>k-VtAACMqhj}3I`Q>cR_)ok?R;5;SiD5_6uKmNM=jkuP1-H9^vXqv zW2=%9K|mzeqI3luV<8M13ZY1QiRF>oK|QvL{OQP-vU>g(_1B-0Niem^EM94!n!pv0 zpXw&xV=xPBRgZuRI0}^7XSejr8$v-yyKC>t!M^^Uw_p_G?48)lKWRbgGtx`o#lNe=(qB6kHAh{6Fk}2%ic|kIvPx6sz%zGw7w5 zh>#VlzogR#G(e?h* zpf0*YN>d}PX;4xTkqA}s7^k!IK@ zK2UXb{Bs5?irR+VhEm!FFDqb5Qzj1bSLZCFk$en6dAVbI)k#?eNwpBI{XgVtJ8mj) zF#>*>?tmaqdE^uUtrRKpxF~d9r={Hq!vK~^2vd`Ho<&tW=PuqY(Wz;>><)?X+}Dl- z;)s{pNVnEq^kX|0E5sGdEmQ)w%gGUZ>z1q3=g!f3Ia1mJuq>HG6FAnyje*?i+mw#7sWk^V2kjL4L(*K``{3?`8n7JxO;OWx$^zjYk=C#uKfoglh~ z$>6ydL#fq(Rd-^?Dt?_js=u4i^s5@s#RpB01-ApdS*sWmXO0xDL}En(x__SV zQf3%?q0Tx0T9?b4YPF*-(yFZw!)6OY&$Iq&1RRzXSER|ooXLW8Ie?bw`C&dq-!M=b zoNQ2&>2Vy|I1F@9)3M!RB2y%=nUhY1i&&n^9dqIl*&9gJzZpwo9fxuS>qdEAQVuBa z$?V5b!ekaC%EH?GRhn+KGd=lr*kHVj^8txe6(F;l`BDub4)@%Ye+Y7obico}TmsK= z6H<5r-X;RpnP41>9`8t};?(*Qu~U-k<_q{k0N68S!Nnb8LfV#ixrqm{C15mnbW`gHXi}^e8q^lo@oh;ec$JOKfgmU zi~EB-MsC8qSl6YZ@l8XOk=(cvbP2|3KRn_dmtM z1Ra3p+KRQ{Ep_&_D-!HzbXesc*#7DVdle5n zaFvjDiGE?6@YHuyh2)!G|8=`8#GSn!Hz-5soH%9W)5CYQ!P%%;5$1e(tyvbHQ&xHS z=5d>Uto7@W#&@-tmbfhZsP*kp#&@0LPq_J2hMW{9j24hwpnqDc3?Ya*n}uvr-Emhq zgh~$L>*l10X10rt4;eKQ3Oc3_Drg@j*-{vbX-$h_eXrIwTZduONKd6IB)=z%q z@eoVg;Bn~fq7Ck*%<7rdLzXQMNb4e5ztph!mi7>XgKn*N(MaWp{kVxnTDli?t#{NI zPBi@Z)vL6XF=|J=%*B7E`CS~14v8NU6$=&J;FgRa1MsQXIFMn>IBxIE=#ce0gg>|A zlbtq0Vb8oCTPa51xsa%m9a#I7LF9qas9R^qrS}+MNTdDe^IsKVX%eeVw*Pt43#iw% z5EmSe&sux?!WDE?OCf07&4T2+)d@l8XBrfZXRLc8BnhWjysT9{9LV+680E=q7^-`f zp6Sy&|3{1mfhKwsrm-==OqMjNhFFTv!ss1l;9s~&o{roYpca0QKBvOl$80=F54410 zsBZ$xx>%btf?iLmKS_)wWo-M{$+YkaRRC*x%FO*pVrm0AJ-&|3cao;%d6!oSLERHP z_ymJmpqCTz_pz|!v)4by>5zX=( zU&;sR6lrj0mZ;^!Ri)XdS#BHy;mH+|D!u=7#W$?qSI$xT)Z%bV_slA=gPcSKa&$L9 zEnlXxWh{DjW_7PSO4f5Fq-f*XGwZ@oy8Fs(BF%i7l@N8g^>}qV;8QHQ1qz?x95@*a z6C19V*y7+fQ&TYEpk|92IlQ@P_QX-0qp+{+h%4I_$9P$&g*jfX7I77Ecw{4G7cRS{ zkaZ@o{^{qi^?^u;!JpE){_f3unn}CQlatGQ9;pNYS|XD{%L;1smJ5keb;S$Tg*%Jc z7Hq)~Ry)L7_b7SVcE!+2!VTuORrqsNhJ@oV#C*nBR=&w(RLXqj^kx(vBI5)`5&eyy zr626Qlg9;uT63I7OKlQvvV}!LARy;?D!#dPA=$n*=3a5K@nN|_B%5rmFVP)%B095( zoXPg@^p7@Qh{jH2DU1QXoK2GAXf|UNRY3fff_rXH;<1E*0rycBZQ&?ixm5hPTVY8T zFg9?CnLZf`{GTWZDm~1Z?WGZ)m~j__7%TEaS+DrM8T4!mLAH|X(v3$EqaLVDR~rfo z-6xnXsLdw(EIug$=Q}D-`ckjq+!9<^1uH`(*cN^tlkFY46>3l9mOU(!OTr@K5n7>- zIA(-Hl`EKee-qi%e-(S0kL*k;PYJ=bADIu{$^46ktNK|I?(l=tHqERFrHxb|d*mmh zjarqQJW0cA-5LgNzDXliM-5mM@!P$ZTI{Rxko?vzr{cT})h2TqvZx9ZW%^wTP*$fIDELiN9DD)RnH`A4NBIY z5OJDMy8Dl&rXg`5)~*WOa*NMHQvbLd4u zw!{XKHHHKGgQKlpOMVdlU&KzL@K8QF9S{(3HxSS-aOeMn*ikmJvj4wu9jW-T38zzm zz;;m~S`I_H&0~)4yy#`2KwEUpRGb|!Vldhe(?~7suxYw#>f>rRVEn=i9-%!c%O`g4 zgPWh@?>B?hzLRf->-+~i?{0n0;)H}zPFnp z%sqd~xFZXN1PA~3n}@&`4}+e7_oK(9Uy#Y$R>c%(R`t@?PJ%&iz{~y2l;E1++xz|2 z?XG~|*VFyOoq@q_z{l(J_s!pgguTxL3x(VKf?dDIUp4=O7Z1SzuSZv}{g18!e!tJx zr*BTipT~;ZUf-Xm*9gQ6$nL%mhdGCQ0pG{(i;JB#LWA9(3r@y_+dW-^yYHLt8;yW} zr*B779|n7SU&n7lV`CnBe12a$N1SuF{vKY1A6<+E1cKkkZwYgR`nv`MPv18VyMldh z?{5bA42Y&L9)16ZuXBu!<$J<)Y}>Z26Wg|J`{cy7Z6_zj#I|kQPEM?w-~WEPU+&DT zS!<4~<8|oZq2s-y_QyKkQwv95*J*J*?~bppX#!7SJ$}z0dmTFhU4C9KJ>T!&A3c8W zE8j0Ge&2C^pDo`n2H#&A27Dhc&oh263(tt(pLd*bGj91i{Jzf%dAibfMB2U&j|(Gt zUx)qDAs3^*_a7TO{C*Fg8*zSbk3U!?-^ZlqxF1X0z1*D{|Jd5s_j_uitTyla=&bPB z!|!>d>^aV1rv@(V$IKHq-G9FCU#4#S{@Xk8$HzTBz7PMtPIh`eUp}@rPRgD!uY2B) z9ytA8h7Lx`U{~DU4i-A%2z`D0o{I>5USFmNeV@OM-aQ-$2zI)Dzl5D|Dlj4{_<4Ih z-wk}?gY+ACzyBOQZ->vv`}La8ukqs!^ZVb{%@+vLk1Hhv-tK=4_@h(u^7{U`KmHj3 zsuaqFWC8u-jJdew>igTq5rLoh?F}QWqW?}i%bOiQ{Cc~4y~-X%6nHtm8wlf8BJjOk zVZ6yZCj5T;-*ud8y*U2xou4az9Qgim{S&slE8JtoMA-)EMUI(8P*g}nR3O0HJIo#Z zh*F2JYagKCfBk}g;#(9P_9Gri<63%mcjIzW({;E;Sd7PLqM!ipRz&%WBr?evjq+;e z=u6}5{8nUt9=ZetrU3ng7}-ZC%kQeTxE?cg*6w0{ZAi)e(++G!a2rLM63t`-<*jTp z+-cnCui5w>4fm0wNRAU&;YKtmQ$i^onN}&@WU>l^`#iVAOLmcD0d-h{f&_s%e@><2 z)axi8X(?X)nx;De;{%@EpS?+NoJ{S;?t(_9PWfAva$!zBr zb3S*xJ}i}3(LHJjj3;bJV*6CZr)0&fhgoyvXI|M-7lLiNgIozV)9Io>{u6A3GvT$| zdA=D(S&eb?*Js`VAw8=4HK0GawTbj*4Lg?pa0$y2`T4{(s)1-1$=xfWdeuws#u zD`BpUf1h}9%)0s6ph80$QsDmN3b9osPX-fa`WR*TA;5IDDTHs1+pjh#3R`lvrclb^ zRUKj$T9RLU6J9Hz6lkNf^fo@Qv@;cE8Q417us zk&qf8FGqXCA9@poJlKoWp$1@b;}TFG1xx(Ak{t7QKk>z=V_6BrStr({@61cE_)I8I z+X?!xveve0h)vSpQXB4zcU`wKW<5ErX<&y)Pk09_85(TDsML;m`(#@j=*6 znoA&7WHDu?%J)xu>v{jh0FewQ8ZGFLi}F_;MFKc*H9q*_SrQfmv|l5ybv1;GU+F$1 zF~A==K!AA{Twu@a-R$b}FE|#G?~@c3E-o>M{91#1${Ko=lb$3xRHt`9csQQ;sBnIs z<2|_Y&yz!yX!k(04zz=O);<;tJsgw^2LD)ckcL_;wzyvqk4Vy;$O%l51Z^j8L|cnB5H;@HHnug3)nD_+WkR)u(~qzbz_L_b*O%lp!<~j?*T^-`-KhNWz&?CXn9&#%8M?1%md9y0LZ%M&#tmS&YN2 zNIt_)iT%A;hIFe6#OG@mIfNpWd;sIsc4SYf_h>$OI4i>d{xy0l!-NrP6F5mwnG@0> z>>uGz6oI*Hk#c&&Biohm7q*^RP0(ZE@8mAz6jPQITKipjo?J9(2*jBK22{{tf5DVB zh5>&ff?y>p-Du_nm6YU01Qv+kmwNibc9B9!TZ$Ng6GdYnC&Az$r+GA5>IvJB2vC#| zBZji1dCtWBMs?+ofK4K`iM@w)cUKI4`_YhzTPlR1!i2;)m-4G1B`-hf*Z#;nCuQsa z^nm#OH>IZ5y8V+#4riM@8dKJ_Qm9}ISF~A_-b=w#j_o+GWRPIy$+B=@Y!IV+Ta`p& zB;vipCpIvW`x?!7z0p$8V}%#$>6-3-IeHpRc{Pg0vqTC|rEr4e(uzAKB(r02n|)*4 z#}i!}Ysfs!hnKSw8QUW&^kg3T)(bft&*rpa6dk&A64;cC8P zB8&TqCcD&5-yrxpCCuQYhnO%K(y0pgzk+XORUKsJxr2?dGrd} z@!1H5g=7|%xEdwBx$)x@m8Qq}h<5ps{=706S`yV9(MSajg_6Gr<5bo~=mf5`Vult( zwG=DYb(tKQIvTafm&)h~Gjlu4{va-jb(**_#xy=m{(*89WmMQy$#MJ1oz~`Pqm&KYr zAn`QPX<^BDglM6WB}z9akm121ei1DqEG*X2TVWQaf|QuczuJScYZ+s?bVQ@QgDik* zgg_8k;UGm(5ClkyF_v>fUAXi`i(%|WkOk{k=HU=63!mi$Py@*8O~~m;3sB1JxXsGY zF|;<#jU4OM zRm+9Lxl$&uR4+Kle-lWWgO%eCOO&y#iq1<)T9}sCaGECShEB;5&e~Q+deTyR6eTs@ zjnK&I(gNNpe-{QZP9;nPpuL-~@p`S-QqYvUxCNns%^?^@0obDKHnnV2=-`LSqd0kE zAsMxd%Pdyp|16!5B}%YS2uwHoEe?-*F|Yn*Smu-ryhy^

      G;DTy*LR;c5lYn=-d? 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�U~BITAc-}l*xzW)lMb+%R}C`-Lx@2}cA-YR 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≫SB$)tGQL5@)uDyF+ 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 U*nb?234Un6006_!I^cKz2l{pqkN^Mx literal 0 HcmV?d00001 diff --git a/osu.Game.Tests/Resources/Archives/241526 Soleily - Renatus_virtual.osz b/osu.Game.Tests/Resources/Archives/241526 Soleily - Renatus_virtual.osz new file mode 100644 index 0000000000000000000000000000000000000000..8a92423d355234aa3fedd8ea5114267ce643996d GIT binary patch literal 445694 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%0Dm2ChZaLM`iuUC2$r{Ve{C8Qis_%&< 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

    1. I!%-BLXs?HGnQ2 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 z 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

      fi)W+%lVm?iqS)@`f9cSf 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 z≦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 T`PbLcKkkJe&m@Qc_45A$?pR2? literal 0 HcmV?d00001 diff --git a/osu.Game.Tests/Resources/TestResources.cs b/osu.Game.Tests/Resources/TestResources.cs index a57405628a..c6eb3ae7a4 100644 --- a/osu.Game.Tests/Resources/TestResources.cs +++ b/osu.Game.Tests/Resources/TestResources.cs @@ -13,7 +13,7 @@ namespace osu.Game.Tests.Resources public static Stream OpenResource(string name) => GetStore().GetStream($"Resources/{name}"); - public static Stream GetTestBeatmapStream(bool virtualTrack = false) => new DllResourceStore("osu.Game.Resources.dll").GetStream($"Beatmaps/241526 Soleily - Renatus{(virtualTrack ? "_virtual" : "")}.osz"); + public static Stream GetTestBeatmapStream(bool virtualTrack = false) => OpenResource($"Archives/241526 Soleily - Renatus{(virtualTrack ? "_virtual" : "")}.osz"); public static string GetTestBeatmapForImport(bool virtualTrack = false) { From a5c23e7cf793c91d91bd2b67b536f107e10a8ec2 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 2 Jan 2020 11:09:47 +0300 Subject: [PATCH 0675/1829] Remove underline from breadcrumb display --- osu.Game/Overlays/OverlayHeaderBreadcrumbControl.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game/Overlays/OverlayHeaderBreadcrumbControl.cs b/osu.Game/Overlays/OverlayHeaderBreadcrumbControl.cs index 34941c5647..047ca5eba2 100644 --- a/osu.Game/Overlays/OverlayHeaderBreadcrumbControl.cs +++ b/osu.Game/Overlays/OverlayHeaderBreadcrumbControl.cs @@ -25,6 +25,7 @@ namespace osu.Game.Overlays { Text.Font = Text.Font.With(size: 14); Chevron.Y = 3; + Bar.Height = 0; } } } From ee332e0d424b0a8a76efc28b413208e14f8b1f6e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 2 Jan 2020 11:46:18 +0900 Subject: [PATCH 0676/1829] Split out BlueprintContainer functionality further --- .../Edit/ManiaBlueprintContainer.cs | 28 +++++++++++++++ .../Edit/ManiaHitObjectComposer.cs | 21 ++--------- .../Edit/OsuBlueprintContainer.cs | 35 +++++++++++++++++++ .../Edit/OsuHitObjectComposer.cs | 24 +------------ .../Editor/TestSceneBlueprintContainer.cs | 4 +-- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 15 ++------ .../Compose/Components/BlueprintContainer.cs | 23 +++++++++--- .../Components/ComposeBlueprintContainer.cs | 12 +++++++ 8 files changed, 101 insertions(+), 61 deletions(-) create mode 100644 osu.Game.Rulesets.Mania/Edit/ManiaBlueprintContainer.cs create mode 100644 osu.Game.Rulesets.Osu/Edit/OsuBlueprintContainer.cs create mode 100644 osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs diff --git a/osu.Game.Rulesets.Mania/Edit/ManiaBlueprintContainer.cs b/osu.Game.Rulesets.Mania/Edit/ManiaBlueprintContainer.cs new file mode 100644 index 0000000000..9cb4e54234 --- /dev/null +++ b/osu.Game.Rulesets.Mania/Edit/ManiaBlueprintContainer.cs @@ -0,0 +1,28 @@ +// 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.Rulesets.Edit; +using osu.Game.Rulesets.Mania.Edit.Blueprints; +using osu.Game.Rulesets.Mania.Objects.Drawables; +using osu.Game.Rulesets.Objects.Drawables; +using osu.Game.Screens.Edit.Compose.Components; + +namespace osu.Game.Rulesets.Mania.Edit +{ + public class ManiaBlueprintContainer : ComposeBlueprintContainer + { + public override SelectionBlueprint CreateBlueprintFor(DrawableHitObject hitObject) + { + switch (hitObject) + { + case DrawableNote note: + return new NoteSelectionBlueprint(note); + + case DrawableHoldNote holdNote: + return new HoldNoteSelectionBlueprint(holdNote); + } + + return base.CreateBlueprintFor(hitObject); + } + } +} diff --git a/osu.Game.Rulesets.Mania/Edit/ManiaHitObjectComposer.cs b/osu.Game.Rulesets.Mania/Edit/ManiaHitObjectComposer.cs index 1632b6a583..824c92184a 100644 --- a/osu.Game.Rulesets.Mania/Edit/ManiaHitObjectComposer.cs +++ b/osu.Game.Rulesets.Mania/Edit/ManiaHitObjectComposer.cs @@ -5,11 +5,8 @@ using osu.Game.Beatmaps; using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Edit.Tools; using osu.Game.Rulesets.Mania.Objects; -using osu.Game.Rulesets.Mania.Objects.Drawables; -using osu.Game.Rulesets.Objects.Drawables; using System.Collections.Generic; using osu.Framework.Allocation; -using osu.Game.Rulesets.Mania.Edit.Blueprints; using osu.Game.Rulesets.Mania.UI; using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.UI; @@ -52,26 +49,12 @@ namespace osu.Game.Rulesets.Mania.Edit return drawableRuleset; } + protected override ComposeBlueprintContainer CreateBlueprintContainer() => new ManiaBlueprintContainer(); + protected override IReadOnlyList CompositionTools => new HitObjectCompositionTool[] { new NoteCompositionTool(), new HoldNoteCompositionTool() }; - - public override SelectionHandler CreateSelectionHandler() => new ManiaSelectionHandler(); - - public override SelectionBlueprint CreateBlueprintFor(DrawableHitObject hitObject) - { - switch (hitObject) - { - case DrawableNote note: - return new NoteSelectionBlueprint(note); - - case DrawableHoldNote holdNote: - return new HoldNoteSelectionBlueprint(holdNote); - } - - return base.CreateBlueprintFor(hitObject); - } } } diff --git a/osu.Game.Rulesets.Osu/Edit/OsuBlueprintContainer.cs b/osu.Game.Rulesets.Osu/Edit/OsuBlueprintContainer.cs new file mode 100644 index 0000000000..a6a7d9bcc0 --- /dev/null +++ b/osu.Game.Rulesets.Osu/Edit/OsuBlueprintContainer.cs @@ -0,0 +1,35 @@ +// 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.Rulesets.Edit; +using osu.Game.Rulesets.Objects.Drawables; +using osu.Game.Rulesets.Osu.Edit.Blueprints.HitCircles; +using osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders; +using osu.Game.Rulesets.Osu.Edit.Blueprints.Spinners; +using osu.Game.Rulesets.Osu.Objects.Drawables; +using osu.Game.Screens.Edit.Compose.Components; + +namespace osu.Game.Rulesets.Osu.Edit +{ + public class OsuBlueprintContainer : ComposeBlueprintContainer + { + public override SelectionHandler CreateSelectionHandler() => new OsuSelectionHandler(); + + public override SelectionBlueprint CreateBlueprintFor(DrawableHitObject hitObject) + { + switch (hitObject) + { + case DrawableHitCircle circle: + return new HitCircleSelectionBlueprint(circle); + + case DrawableSlider slider: + return new SliderSelectionBlueprint(slider); + + case DrawableSpinner spinner: + return new SpinnerSelectionBlueprint(spinner); + } + + return base.CreateBlueprintFor(hitObject); + } + } +} diff --git a/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs b/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs index 49624ea733..28f7768aac 100644 --- a/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs +++ b/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs @@ -9,12 +9,7 @@ using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Edit.Tools; using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Objects; -using osu.Game.Rulesets.Objects.Drawables; -using osu.Game.Rulesets.Osu.Edit.Blueprints.HitCircles; -using osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders; -using osu.Game.Rulesets.Osu.Edit.Blueprints.Spinners; using osu.Game.Rulesets.Osu.Objects; -using osu.Game.Rulesets.Osu.Objects.Drawables; using osu.Game.Rulesets.UI; using osu.Game.Screens.Edit.Compose.Components; @@ -37,24 +32,7 @@ namespace osu.Game.Rulesets.Osu.Edit new SpinnerCompositionTool() }; - public override SelectionHandler CreateSelectionHandler() => new OsuSelectionHandler(); - - public override SelectionBlueprint CreateBlueprintFor(DrawableHitObject hitObject) - { - switch (hitObject) - { - case DrawableHitCircle circle: - return new HitCircleSelectionBlueprint(circle); - - case DrawableSlider slider: - return new SliderSelectionBlueprint(slider); - - case DrawableSpinner spinner: - return new SpinnerSelectionBlueprint(spinner); - } - - return base.CreateBlueprintFor(hitObject); - } + protected override ComposeBlueprintContainer CreateBlueprintContainer() => new OsuBlueprintContainer(); protected override DistanceSnapGrid CreateDistanceSnapGrid(IEnumerable selectedHitObjects) { diff --git a/osu.Game.Tests/Editor/TestSceneBlueprintContainer.cs b/osu.Game.Tests/Editor/TestSceneBlueprintContainer.cs index 5ccce5b3c6..67b0b61545 100644 --- a/osu.Game.Tests/Editor/TestSceneBlueprintContainer.cs +++ b/osu.Game.Tests/Editor/TestSceneBlueprintContainer.cs @@ -9,12 +9,10 @@ namespace osu.Game.Tests.Editor { public class TestSceneBlueprintContainer : EditorClockTestScene { - private BlueprintContainer blueprintContainer; - [SetUp] public void Setup() => Schedule(() => { - Child = blueprintContainer = new BlueprintContainer(); + Child = new ComposeBlueprintContainer(); }); } } diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index bfaa7e8872..536c7767b7 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -95,7 +95,7 @@ namespace osu.Game.Rulesets.Edit new EditorPlayfieldBorder { RelativeSizeAxes = Axes.Both } }); - var layerAboveRuleset = drawableRulesetWrapper.CreatePlayfieldAdjustmentContainer().WithChild(blueprintContainer = new BlueprintContainer()); + var layerAboveRuleset = drawableRulesetWrapper.CreatePlayfieldAdjustmentContainer().WithChild(blueprintContainer = CreateBlueprintContainer()); layerContainers.Add(layerBelowRuleset); layerContainers.Add(layerAboveRuleset); @@ -147,6 +147,8 @@ namespace osu.Game.Rulesets.Edit blueprintContainer.SelectionChanged += selectionChanged; } + protected abstract ComposeBlueprintContainer CreateBlueprintContainer(); + protected override void LoadComplete() { base.LoadComplete(); @@ -323,17 +325,6 @@ namespace osu.Game.Rulesets.Edit ///

    2. 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%0D;^O(DMB~uyG86?ePXE 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

      H`;ON?n1uGtn14g|4{J+BBqnH~2QHjp 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�TP;91oQyV5pd|%gKEfJ3tkHe;Nqc z8g6EYumy3Q3wE4%)YtzNNndqYmQr?69%QuDhM=d|{t~yTT&H88B#URwn=Iazp|?S` zOJU*iEuCVaEb)9Msr~&`ZL-;BK{+wUGiI*w+!W;D6Dv6ksSW2NsS328@R{NYf}Ted zH!pav%DqZRb?X@Zs`++kzE+8WAgA}X?z+ugl|^BQ6JL4e86XBiM@wT>SnXj-_P2Ul zm^YOPpB|Z4912UK4fv8RaMy}fh@GcF+lm(XTJ#MDczlApM1HfyAV8lYM+2C4)*eP9 z5#q^e1YN82le7JoHi72)%m0yuORZ5ofj93eui*&fTKPjbMc8yN)fcLQRU2kL<-lr#F}5qu)S^^eLYpa;k{`hwWQzu z6g^dv3354Ql&27lqB~n#(}*PgTf=|8k<(+Unwm_dL3{%9GS+2{q&Vm9J@^*jF7fmC z$x^#a16RlH<3gd`ryB2R#Z5C#<{L{q_TmJ2Rxg^_)}YX6yb;=?85%uBiRF5AUr+Yw z?bF^;werLdr}t-NxKwh|>7e3CHiK&{SBM;8o+%;F&dwYC2NRq2PY4SMz22uCu;Al; zhRy)GpxfnFhd~naEG_;tfm_2KjKGP~PtYkfmMW7TR*ny%@PX8i!S&-5GxZ4b&dUI`B|onjK3qhhh>;a~%a z6(3j733ZeTbBIL^<3+TjQ-o~2r75f0*>CJB|?ZSql>Wly(sbiI0Ds*lS%EpZD z1~PwQKVXl!Ck7&jg6*am#E7vsbDVM#F5c$ql2(Wo{ZW;`8pcFL0c0(!Cykh}we!yK74@)y{TXjk*7sg9^IfsLskf6VCC!aUkzMWvp*A94FVQbIxIRP~bN-lUXkap5 zbs4i|8a4Nu%;vv-M8*x@5KnoKKDU|#Y7@#9hP-DAv0rjnB>S=%fx|s8E1S{LOUD4R z*lZ2#pONX!J!tA_bHifRT5YK}&eC68bE4l_)91s`ZmH#kt`;BJu=hPFchIERSqR!~ zMwi92u{Fo&|6Oh(mDWIIQcn;ansB5!nA7~&|Gif2>(|0+!Fq)nN> zw@kGXmzMT!iXj>2^a!Tgl}M%q&516SKOD_wg|c3>%}5K1YW{B4n8bI3R0+*M?Kfiw zPofEBi^r*l$<57|1;>-+2@hilzNw)Mj7w+n;-S-sP4}>zlz~Yv!jBBKEhcRdoAt0c zuZ35?&;MIu#RVlGc8Fq>uG8b=GNfZviS|m|Z5u}hp~Cfc_u0OrM9qbyOld?C#yosn zWfER_dd(KtrL0EI7m97fkCq;O^;@h@twEmShaMLXdPKbWo}up*xOYt1-;ExcjEsbH zI+Lv?&mK=@z|MsH6Pk#-Sc^Wa&ZZqyZr>BdVXCJ?G3rW#lnd%VXTkR11kNpYF|58K|$-SxG#!h%_5}WefoM~GkgOKVKi(VI8d65i`HK&VP zsiI$!GhIxhyFs~8tF$fq)z9*JoZ%}Pub_6B@#Ldc;Wms3)Mkm|#EcwlTwdfn68iiK zud+hkv#@c%-oNAe=ZBlyGS%0DNY15?EuQgmO1iV%i>uhr z-_Pxc%_q4y;w5CoQY%hpf~^M`2vcJ5Uh=A~QjfuG6NI?(?9m=rUBYuIYD|^|c=??i za>Q=Et<&s(wJ0z%T|XGrJ(#}K)Q+X-mUm8%f4KN0aV4{Bn%v>Fp@MhJJ)zJmzzCH( zV#;kDpz7jo^F#*#0sQOwlo6w7)Ra-}4Z{-3Eha3+sR%l;;WpAo-MGx(RzK+MMg9(e zxN&sHem~3`6y+t#W*<zeC+i~;{Mvb*1(DM{QU(i^kmdEtd-=CL+TDns!MGkXcywSJX@~TNlOf3~1HRk3a3o6>%3->UBlrVz!%}5`sq~(l3ui#zT;=4} zD;|nCU4#mBuHnCaSw1r1Jhni@{uXr90Om#;gb}>mSd1fHa)2DMsUD(_f)705~Ljshko-i7;!`C(>Q;Odd!HciQP1Pe_L<+#ae zJ(=e)jw$iR^*_-eox-NTG=0FmT zO7aBHe9uu_yKq0X_HjMUHGiv)qg5%i5S-@Ef$j_?J%;E*F4~^>zmdTnzXM0i_z3Trix;g{3weeQVfXcL~h}vFv$p69*0}v)5u7ghjGG8Oo9Mb$db+k?lMui$?}%tsi0!M^C{c%rg>Y3TK>!DT!Fvj{mKMMic3~XjKDxLB*^F+ zUUbRcY;a{WmIyqaek5kzePj<^IDtKalVzq%kmzi}ri8=bXPn0}xqL9OFzIx}MvUwT z^S$C^WEQ`699-tQ-uD-V*Bk~Sy6~46dm()+7VCx&*y6lo#$8dXiIm`5t(XZd7nM~( zqtB4B^-h}?8FvB+zV`i|*x9(a(&C_v5odMEd!|{;HF?(MAS~`G2Ht32AE&bq)2^K* z>54O74lPy6I2AoO{67i4Y6F=>%Q^Pgw2aj2mC=(vr7(#(Wmz&o#uA{BcR;i+sB*w+ zJ*xR+sQz~ckR|zm1uIC^!6JDiebi7kr(V7l`-DkLN$?x4IQ{>}*ITy50WiyggKKcN zAcISAcOQHP28ZD8PJje=cLsNNCqQr++@0WVA!vx~hkei8J!kLU|Ikl8)m7EiXMDxP zi`MnbjFo>@EIN)F#g@YOS}!0PhNSb}W;M_ARyxC4pl=yXuUjd}<2!7rdi-mjYk`NR z9XBU6I&L#_*6mJ07%MzMae1|wG2uhAUiCJ;1}1jZ_1SX7qN%E2ORWI$mVa;m)h_qh z)^s6KsVUiMt4DkS4hhNiWTM>-mH2Q&_LJU#n`SRF7XlXk#I3V%FjgF~ddQiFEhyDi zUY~cZ*|AolzqD}ix3k?z)_SZ_#q?GKTF_IzX5`%8*SFjX_OHF`W9>?tA+l)fNDe^K z*$ym$*ZoA%@*_hcWa_n}TZ|b@9zomClCYPBpi6C;m*;@0NvGoTSUb)!hy_MD3&>Q+ zx*uoS!zSv>m^R^dLqRMl!0@f{~QU|mBf8niPQDO@cI87UxkbvbR-<4%q5NU40#{byV^$sRyyg&|8vm5w4S@1;8z z!zGuk&ZS5|FQ)0EZ|7jAkna?J`dpwUg*s%)qAVyd*CO{mKw#rGRiW-OyDca{M7Xe$KK7m>&R9#?6Uv|Hz+osks2F95K@xg-fj!PqzH}+;uQ~G2u|8 zS^xs#Us9w@*HYRYTqa(%Xf8$38j~msr1$UcN^F4gUbLy6NWHXxUOf1=Hmk{If*;uN ztLXu4D7&V^8z!8@U2R7p)AC2U_6$%l^vv0pZ&Izz^^ZXJm>A~VYUtFG3sj+hhMs$% zSTY%alfuYWk%L)6yXn@Sr?&^(}y?!oZtG<^X+1MgzGO+N7E_2GS8b9V;_yfEq?OnC+6rj{bN{R# zV=~dgljAe&$}k6Q@+G9!Qcz>-PEq122X~KV4)oHIxbww3$DDlNKlv5Xem?DY1toE|;aWou$ zSXp;fUq zA)J+`A^V}Y8wnWzz(ij+WKRioG^^1XWfW!~vv>@}lxki#J+EI2a3R(Nq=`L*L6cexrT zlpF@uZvO%P2csjm#zXwieOJGg@#K}NTk6$YjYOmiA$gM9G-C*&6falRLy6lo|NMtS z&e1PrORGL4cI^!P_i~kdjG;kJ;@mlJV(|s-6cihu9en(jb?SyW+rJnbLJgcV^_ogN zx|ueen`To~m-a2zYDzvAuA68$v1=)%K16z~EXK!cXl2MaPTMnnm(WQNUe5e5tI&?8 zvF7r_JXBtp4f|4m*}5nEK_HqbB3rX$Q^mR@ohNo(;UP;Vi%pz%6j2!%g)I<#(R!l) zqukbF_^ZyrLP4IMr*xN%y1BD_LGyE{`u8PiV@254vGhQ6&*@lUG}|uluu?cb zgZZ*|Y6BsUvW!hhFf_joiolvYShu{nY$}z$V5Tb#@bd~k3>(MqwE&{O9=9Vk6X9?; z2PHP*wl2EcFxUOgqZ)=@aGc7-`;(C1EG85RN|$E@LQOFG*<#o(^J^dHuUzw68hHOS z7Aoq&|7P)h^5T|gqc3@@b?tSoZ%=)I@3mz2@ZOeKmP&13 zjssi(_NO|!f9A63)O1=*Fs?r<+O1_!&rYKI>szf9tasj-Wh#9pwJ0mTIHEAaez((zpNK8OY6Un@7154>7Lz&BmJLp*1K6m=s(YTafnIRj+J648>BO!%e|FNwT|W?u{r4 zdrpZ;C35ga4q|we_kVFYe>)S-JQ8S4zAqV(DswbfOr!DfVHqs z?l(vCHG#Z2>bxLer*76)X$MhuObWkG)S-ov)H?$tjb!su zeXkc{5iZ9hx;{tGiAp1uW)i8+EtA%Rf&}j%wd?*lB4hxm+@M&5(Nw3;#C*YK@c|gTsa?+o1yu!ISKqCW@8;h#lRfT;dj_{hHpYjQa!cAq7z?EqsHOV&`-(@< zr0(DEhPIXIO;$SZ<(COqSzQ=H{r={S!j4>4MwA$>r=hRg8rc(>JS)okvD@lBk`;UY zqK+jkZhua$6i<3GH~9m0yeP>4HUI!h+I)%~$ia*wNy_8;WSPp!dDgeojZ9 z;n&;sYNUDIGFFlCV$To7O|L`x+8yhOPvSW{r>L0b%0&V#G-4l zGCa5HTeEcWZ5t|NYgRp6P1oy!Tug^wwf}`g(ip_V$Ki3f^(OAL{MIY4_0e+_^vN~o z{JD%4y?Z9%I_Xxp2LPB$hXPQBy%^M{z*}dR-$q1=1e%m02s+y-M?I(w*aEmW+K#sO z78FrMl$bwH)K1Yp;gmXK4?91t+AJJM9#wRPA9&Tcmj)cuoa&E7*Xwz~iNFhIj`n|z<$_3s^vSOmEjBEw}3Rm@JBG)qd zbN|=p2V$~+Z!O3O0OTwy<0(|-gH$zkn0XA1Hb$u@b2HtLDnD1-2&_v1fOueO9RF=! zO{;8z)<0B-S_&_9(b)^RF>JSv0ok-_XsW!?LQP70J=tQ~qP1s|5iTT5R^`G&9@2)K zs#=84mn2-$3N1fXo0&6-4HLXj5z352#iNZyE9Oyc=>C^9x|`t9wq2+{w2@Oa%{?SA zvcUK=mPP4AR~ssDDgqH<_pOH`dlsDd$u1N&B=S8WRRsfr5tGRkfdtRwDi`?RO7)=D z_ZhAdF9QtO56x6JJPt6E7zI}G6ekdswMD!<9PiEE_`G8PG>7f`VM9;4i$KP~%#p76 zm~fe;!JAB^W4)%k8)P!x7*D`D??8yPz2@+CDA>UmZ~=8s*Yqhdk9X!FDC5nu20x3) za6UV^JYT$WDKRc>%uL56X|3tc1oKL>Ajs{V^YAHL5kFF})_=<|2pEc33=`m2&TN|? zt|W%2!(1=9x#|-BNC&Q^X$nhPXQ*@4ovhNcV={-aFt}P1Eqx+an{sZTo2?w<31zap zz?TZLQRghl(3&EVR&#c-upcJp@PP_D2?gqh7&IxisM~?bBH0-iEYNfsh@6UaI1JaHJ|Y`_p30Mb8>kV$$`pgj zfIuFI>)K6oj)TuQu5+e$SJmL);a@Wypr-F3?qM9&AZiTz?v$(g}1O80)3kmO`8tiFAOFtGy(Gm-<&gH~!NWbArsR zf+s4kO-5e-g>pf*JLe~=cZp74Ys4o4Aw2osl{pD;)fN}v6NNuQdJ8ME7NANjktEYH zR)F@rU+*Gy)6Sws`&p~MN z{#$KhqW%8Me&Y_hwpSx4uclkwNu@3@|J?c#Q`N>9+tQv@wC&=n5Pz!u)YGNPFvh(D z^z)34k)>{rE_ndb!cUN7zufo?@D{z_J538qx-1pIhSe-$2$hMbw%k~!M@m1%pr9VpMjInzN z!9v_$s2l@7q)U2d19FtjiU0^K^hvnCIu5m}noeaj{B#d=vM zLR7^%vUnU(+iYp%C>Ga%AQtwOem!iJ3dv$V<*S2D{i`{!F7UOp}@^TL9 z)u?v#Y1mCD7A#h3J{^rQ#}Rq$^GJYGws!ro_?>q#ObVSD>C16-?%95PYo4=Ox%6&- zbuS`{006Kt!a%r|5#ngCdiL$&0|P+{wE_GT3fp(T&@|cYxc>@LTTeEw-fT9LKisw) zP-WIlQyQxJ({N<6EN;*5IDesb$|YeP9Ev|XxL^m1bxd#^On%1s+~%H3x=f1+0?N%= zia%)Tr0=KPr3}7H(yq}kFfN@q&iLo^dT3RK=R;B@O4T`I7@a}l=3QlDe7Wx$CEb}vY`W` zsMp_+blNu!hfK|39@^0#%LR9|LAH-et^7NVc820aC zA)V!v)nmF1r-}XKo*PzZWL;zNME5;o-@jQSxd(owCsE+hw$M4;5`S>Q{ODNr_9Gs; zWnYNS>0c@-fT2xJ@zquqK?Z{;Mm`ujtgAQoig!3D<`$7s!AcQM%bjzP&6Tsn zY~hZy41Az)Nx<#0pLsP9)IEngH!GaiUha@B-(aqP^rgd9 z^5(RzY~>GY9RfN4PZ|Iynn%Gri)#@4QuzoCXqvp;7&|l}Y#DM88`mn3(G~os*;cW9 zt^1Q&Q`59gPvU{GPd~yfBKl3MC8h}Qd*fGt!)O|XqnHJht_90ax8jw(Tmqzg#;lfi z$&|aeAZ;)mYIbjK_!)&N0s)LwrkzHGO`kb=B^dps^gc7gbuymHJKLZjg&W=BmC1_5 z&xr*&7=S|^4p>@j(OYNe6_W^rjXNm%x!OY(7Vv4v&VTl4idMpw63v$ zELusp58T?Q{*+*6Yx;M3f7>%hZzFk$!+-Aa;jr=aA{ACzh$mWDk(m;(4~#5@DuXqfftJxmj!{kJ4~q+t1GVsdkal(qkGD(!TyTxgvf6|{^h9m8u1=E>i3Dide5_{tgH99 zO9229ZX@ct!7{tZirN`4wplPWc+hS;-wG}ZC9L&p&?tke;e?l56tkaOe-yA5nUbx| z16uf^7N#;rRl%_hC&;dwYRDuem#wL{Qv%0IrNl&Yt@xek;-u3V`PF9nA23uZwGxVz zYT$cm2c_~>b_E5(TNSB~LXzxGgyu72phugMSoIWs1H&G^6FKdIv{2)hCsnGS(nqq+>?9%`1vcD!K+wntpT- zr0SZ-F1yY-oIcNfa+SZ~cj(KJo>cFJC!O*ygb)vf^vt@Gty>~Uym7V%3HZXpG<`d4 zi;~{uU{Xx94!6~4#Z^+LBCm`RX4ERhu>H`)`JXf$dK^lwWOZ_V_ZaBKB6(U3JIBnwrM zU%m?6J~&7sB6(s&de2ggQwTNaWXq)8k!b#!*+$l(T@qXSSefbRuF5y5t`8nz$pPKBqaAw3 z?oJB(BQ9=tBYV>VoWcqUvJx3@4AQ&k; z7;iv^5O`4sd^hR?ML9F%jl7foB|@!%(N1e+q2=jrZK30{pV~5_E`kW^;P!Em!9LP~ zCUD&}(xLGYvfa!k0Rvb}S8})w8p|1)H+bjg8|#j{)3flwseM2<8#a{8Mmg*sp${PjD(=EOwVV zkc3B6lPj?rrVRavU(|!ViK)gEeb(*EO9RVrr0DL(K@~9^(@7HWTGg`F(c?>C#ezr8 z;_H39jh~>mMvf$%H)sEcM)w5|C$jDgxKwaxE@iBd~4&IRZWa zUx!i&P4zg@=hU@;vllX3)&i$D&>ucLs#vX86gbhHpv#{$)R7OHtRh+^6VBz>hb;+;r)mz29TZP_i#NRr7zv4f40nldH-uSUNHqfvDZ{$S(}B5a-dRhn-VR z(oR$Zm6=NH|FI5eYzh|TT~y=r`?Bw(fXca&9`<@vzJE(ULM%!-H!%zK!~<*+F*WAs z7f81{GSSEtP*_iHqo?dv3`T{Lg`&D(fK<3tu{g)_9Kb_aD9pT7BGGzv;uL8K)`WzS zB1n2aN=Y;x?k`r*+nZJoS!Gw{1d5%-|FQg(O*ID#LlTN$h>ezbR3B6z6J(*OCGWH= zz7Q=johY_3i^JpRE{jh&S>rezZ+lH?cqfL)3xsgnKg5LamVf|&qEvdk6fURx9*=Sl z&UT%Fp1AMrL%6~cniRih-9L?c5fmQJ757^9nM+j)XF&`6D=bAve|V-bN1$I?E>B*Z z*G0Dbz#QDJfO)9}poS?*&M*W1u(@)COhy)R2qa+~I2i~N&c19UZ^$jQVz8Gt@6QlI zE_REqrZ{)$Bb?}I$oRJP^45p=_e>t47$D0L4B(DMM3W;`Q3(%!>KXRx^(sBvNmI&@ z0!rsp@;cDcgyOEc+CZNv8BK~q`?+l-q-q`}JoIX-}Sy^q)F9l8QyFn|~^kHTfOZ{Zbl4dJ;k@$nZd0p+L_ z9M3d_0G+R!P5aN_$q`fB#kcffiDy1|J+=XQyxXi*0t8B8q+S9;hDi?8-Xx_e&=c@! z|F^K6PvXw0p$5*tmqEfU(UN>jCmQ`f+iKwA#})PhUA9{0NPi7VRt2j<=Z?e<5rLy# z%bwBM=C^*{sfzYJ04)F+fXWmst61?;zV*J4VS>1-;aj)O2=Fo|o|92e8{FDZsKk43 z-$6$Wq9Rxr>H%vs(|>euzNn%NC}Rlf71)%2$36IjO1Au1{24qpz$Y?;R<1NbE{`iZ z*5Oax)P|l?eMM!2iWd0I$Hpd#$7wl*&Ej&*vrmO zLq8_@M~frmAs>nuwnxh#`>8AGI%lVgyF%3_e3gckTLC8DTocd}SPB&XIu0`HOe5SC1ezaa^qqb6Prp_831n~clauHTL=8?hBZUEK&5JF zUJ#4P&g68$15uW&B0iHRng)O@B2+u3`Xx$&PY?kCYdTaDopXDgC<`|Z-vzbl;WnhA zcBx=&!7CRt#vq~i8!N-KU$t-N)Vye=SqYV zun8@W#E_HtJEvtX4R8x*ALzsV?i$P`e0%TAbBa#-r4AwEA?p8CFl1&%Vbi*$)&)8t0Jq}lN~WC zG62(!6ghMY*;zW}LuUg?1a(f2Z+;7>5pB~b)Qf$uea`u7ufM9P$kTN_-LNbyp^W8X z_LBOiosq|Ka20i)Gpx+0%JDDSQv-Y&_FQS9tBbQH0<)3VPM97!1%2eCmh|D^=pU$Q zIzh!sV!V@%7!8ZXjmnO?bXtL?iV6I?nfZ`YonPOVdm<`JfM$PgUM3AdoDKo<(lid) z=J;b;tZS4p@`rCJEch7^#4Kwbgtl$P@5aWJ?RJj z9SJt}#+$%ra`mG+Ud6OrDWUwoJ}8*TABTZ6X$=x8Jt zTVtX`3uNA(M{J~d115Pd!?qPcAYT zrvdZy1^CV#mKGGQhkXb}BKRwKR^RzN?8(_7(nd%l4G*BJq`fIYXP2L(jP*#~RG;8( zu>;rE^4a=iTn4}HQf0r}ug=(6yyODU#?(OkubEylTGG@87mvS{W$_pOSr|?e zpN*j|0Ox9J{lvEa>31R0htQGy$MEX1+O|IdNvEh$CP*+PYSWdvE0xnCf*QGiBe}r< zKo@UH-Pl)EcWe%z`QZE@k6e2wlI_f+Y3jtP!|yQVM#yy0FhPWC7SY%*WK@{<(Ce4X z#3Q-s**onT&wXOVD3 znHf%I6th5XaQp+3Z%`2L%&K57s`1e#Ra@BLl_DzCt?SpuAw`uvJ2GIKHWL6~VIKK& zWSut@rQc*7)m49+F;1Co^Cy*eRF^>(=D-`IsJx|TFQJY$tpG74RbUx_xx~952V^FC zB3&;jbNtB{tS!oZYxq;WxhvbJCKY)N_KK2rrU}t3r@c8PQY}+HqdHQ>Hjfz~kx#;; zObjfr%xp8cVf*1vUfX3c%j$o^O{f)4&}W=mrzC9;0002sy{>nJ=vG50GSrGL%4Ezr z&0?D--bsbVYKngfjuK1risPp$&sp?2TTnKTAc-ciDNm>Te33%x7Ih2V00H^w6{VFcdw zX2nI&t^q(_R<_ikma*mCr*obCaq?;yZWKAIN&wOcj<% z>-0yML!$;`7kOVdBsBs>6VhF{@C>w;P>WWN;uecCB(q~>v>ZFLs{|PW8qSsZU-%8O z`<*e?tP}8$RqXcmRlJl4s}(tE$-iwxW;(Oggi^*fS#o8Vmj}~q$fwGArN59MmL`xw z(_`jLdX-q)vkfMk<4A_4y0+NsqC?bWtN*Z*sw3L7ZHX}AR?%30Tddyz_7Xw8t62$E z?3*_V-mWf7jq5(Sywar8m&Cn7uQxMW2Gek@nfKr2$;C((CarIXSM<2J*pmT$#JPnG~w#Q_8WfGzm|u%D5uS3B^FL%@UJhq^Oo zirn-dA-^qo8P5+jyjWW*2(2Od5c=hU zDFcE^Oc+P_8)*wz6`eE~0KiO?l!{cabDSv}Mrzv@D7oCQbdTSj8^KrdfC9-Kt++VT zZNSiTi@G|0LBqhKm?|Bd#@TeiPU5D^*d02d&?`k{(hoMSHWz9dB&@_L*3kQWBP+O= z0NN<2=Us~pk1xCYHfd^uOfuyaRbV%Og#NQ*_4;GwdGQ?tAGJ?vVw#$%AQGC4bSYDQL}bQ zI!|=kRA(9m5<;w;nN-1crOyRSF(6Q+9)hj_>PJE8F0Sg-n2uh7kt*~|7v)&C*LK3C zl9+le6~3K^mk+h-%085?ju|#e8A|q)39V_pmtPkfGc*hgIxakBE?x;ewtf|ih}YVy z*Cxpq>)uZFkehz=xG@pQL({@ljFCJ5z(F2%L< zg&Fx`K>5xaEB%cwtl#pk)AQbwe4~%YjG+fAx7Y1%B|Iz&}n-%Ux0JOh6O(gH}1EUu_m64zED)?(VEM10yoh*(`0+*e75Sy~A&hf)zc zOY$`EQiqD_Tz0#s^Rrv>i!Dd&T3~`Mb6;!J1^=AjgPL&cwjkfnUCK3QR(xqS8FdA~ zf4Zr|EO+eB`R-HW#p)$uT)^Nj-eqMoaMd=Kho6jR0L2hSdH?_(EhU#=t4+~pJZoTg z43l?>F4K4Vjj&juarrYNG$wE4^s_rCFma~4qt2Wj5`8@zN0`rF(;9@uw8dYpXFtjF zPWMBG4Jq@|dAcmQc;xL5B2uaqiYUTsDshij%bG1leA{?B8@7mK`p>l61ncf;xtrT9 z*+enXdg|-$$JSNL1W#L4JT`ik!E8pXh%x|jvc%^8jL4xG9NVpo$B!kFr}=UF>xH`^ z7Y7ryHJ2zp%OmmKMy7LZ(@l>%K+y;wyf$unyrr!zLPmNw`<2%phsu@ev zIq(#4j1c7@g;@B(?PU-}#Qby0KrCh5@4~c)m1A?cGK|?iEG*ftarue-_~7O~_FO*{ z+=|{>)4g?bUKK1#2DS#Xtd(hb{*e(q^4=)e?kU;vuV4z)rjQ99a--^14={ge1p%XJ zEA_bHVIFja1U_g#1{rbwp(0v?D<#T;upFfduXMkyI;FqX?wBrx?Uk4lKR`~q&& zj?oSka2Wjw&#zXl0UI{Aom?9jL)+;%6>x@4oovlV_nmayB=$wF;fs)p0)>`@gG))j zDJkH|p~zp&uluYQ*WT{zLFwjL3qvkyV9YB+DgSppQ8i}+|GN?#V2R!Kd8E2q!c{;H z50eWaU7RZuIhU*&4;L_vu?rDzK$-vmU=v0xjTxLO__J$6DpU%!T^-xmu;GZj9-d$_ zptChR#O2S;B5@#SB|M4e4u46ur41!>ALC)UlZ*q_2tdxL4HWFTKz5C0`=~`0Rrwc` zem3nc9q0d!Y^)x3sG>Y?E^stW;%f}OCb%0fD|_#5Z1$BFDao47|(B=rp_gqMD@BC-B0^W(!~I?d)7 zK2Z+%VpB@;^Y;?lL)c2!+XkEyxu(z&{6$YB@edN#!(Q1~?N4(*13gg8`|m-}V7y>y z1PiTDb^4mbzNqWwt`|uWUcNR$H5y$0i0eZ%A4^uY2#{|_BHt%W59`LJ5PZ6>u{MDZ&S$GzE=#<5{x6#(rR};g$HB43u~2B zj3H0Qq&2bp#m!Bx&7eh+0X(D2(ol=hO8Ou`#Q|fp)O|sJOI9Y>JNFJIQGg_;RB`=f zQ`ArgapZ0(Fht(~oejhPJ92_uI2vw$sT{03rBH*v;>KJ<rW>zerY-~}hfoDoBKhvUSajUP97I4w5_B;6SuTcxdoX7e(tY~Df*gq> zi<$lDESH4=ox}Y~B<~Z&J(tV`TgE2UQD4(!l@ZOc92Q0V@>&}Xl+qEEA&#KSi$GB~4)V-m~Q4k?@nL(tbJwV*>huK_EUu7VPxkdZMW_sb)i8e zgDOCOa5bKX^9Bi7;n6r@Ck5+(8K31SIC&)ZJ<{kb5f9NNCK&*LIJ!S+B_UZO)&)ry zh?4+G)}*!cedzRG)ykUDQ#%AM-5b5!96!zXhYUwh@BD}f zbWBLKSivoyT}Vdd_l7&_89Ei)Z7 z{w~tp)-O-zO2;wsGG(!xn$^SOvBVmvIaZz{GN(GT+#{*-&mxHXc;ddbUOC1l*)QKB z%5w0J!&H8JXCtqfUS*lD`b6i|@6?w1>APP=F4@pdEN)1ZmHbrI9G``=Jplrl(|8f2Y9xlI5g)A%+5#k}kkX6($5?t*&lP*C}V6l=<0 z?^PcO4Rz&2t5|=&PAb(xoLi;0*X1l{e->G&pf2~IuGX2`aUO3wB~&(Lx&1x!$BVWE z0sx@V5~AqRrloS%;~{Y1o6DA2+EE1T2xLFC5tt+5djCrCXo5aDqqLbU#z#IX`!M`^ zN>Df`AY|FIKK2jL7=|E_R@iyj$Y!4y1ILF>tT3_U$dNkv^a2|>LHC{tTLxx5ZWHS>iPJ>7FpH%6 z_S87d?}BYTEK7e}HBTlng^y?EGgQ2vc{4HpHqpsiA=I5zSgn)nEPl_kUhlTXrbs`h zXB04FwZAck*zDfNH=h!9$?D0_tnz!eF@l>+m~|YT{M&pyU zB!lRd-N-Pf(Bp(#>tJY1De~;7;kFjO{Mpdf`U+H@k}gupT_$zbsy20vF*5hQSS=mK zo#5Tl!w6n7=~@L4UD5gurq5sg(iNGI0d_%J#W*%mewZzZW%qb7Ro)-VHR6=%aii?d z;i$B?%ckjg<>jIw0bq&E8@zwJMHOd%tc9BJ0Dvm)snqtGlw0H4W82oqLk1SBuf(j} z-tKe0^^4}?rtWp|1Y5CKRUEnLk{F<)m@HWZ^8U!C1#HWM zc3pKEHhQ+NG9#w+aRnBU>NuLffGY1FN)kL&xx8gL9@^zUl+>!0o}8KD!6iicy@OT5 zV!RDikGHWWuumaJS{U>?$fEi?-poJ;#1tuW%Yz+DyVZK$MTb$-X$xJWs*H4J{&$YY ztX*5Em_!}p$^6q+%_M)InA8q}YVTyuTgi0XAC@ru8=dOfoMQwZ?93AM%aKj@B7RKc zcVqu}i>`pH$?7gMJ(1aP4DlJdY}y00cer{MgPKXym`gq^b+Kd6S1u9fEj8ZSnhHmI z@qDcNe*qmL@IML7c-!ssGl7Hj_)A|NCKrOiC}-xfB{-zbh2;sz9gRSb0O)~nYrnfS zC>8gmQJ#B7MXGmM%Ou7C>_;z;`fQXZQAg>@^5<(DVPPNr!h)HbpEnu7qP7MG2Y*;Z zv)L_%rF(&=qw<7%vQo6;97*U*ve)LvRQ$e^sH!w$48hsyt5k9b8?w*}7QoEr3%c_> zE@R?SWizYL`jqt#!165AYH+hepZZh>Y|KqdS_^=kM0xK&_Du?H@QA2_gV-WE%sh{i#CiN)yQ9y!2$DTj3n>F5;&?qM*)Z zide!2Fr#&igQKcb&rvn#sth+a4Jyo#f}GOvKMhn2056T+@uGIIA3H$7PyhOsxVzjJUE@^*HRQjz0 zUM;}jXSz>xFF(_RHQD6tS62D#J_8HwZc60cv1t$>XM*2HcB0<1Jz8a~Sop7Qym;-+ zir10Jw`MXKu6zw!G{0z2rQY)pFrs(08qBcx(zSS9p#k$>QKAe`pPk===;GP@5~vzu zWV&cJ%xmT2Qd$2GmovBA2A}Z{C1AhBN-%wfgd{nf?sFr`wm7$kF}@&SowS1dn)>i&58iEcd;-rtq zLL5==nRZO}W*=RM6+crvpZY`T%PKUdQ8r0cugesy!rNqhvh}YcMP`a7pDIpDvellr z;*Iy}*72x)p2+w^M|lIp1Q|YU`&UK(YYa+o5`PLX^n7tOqok6jS=>m$%%56V@n6o- zJe6kI*yc}=&T_{u^#g4cr(NdAO3xv}Guq~vh>>15QHb!vc1G~~^Y5StRs3_F> zXl*AuW;ZRgH{flt(TLIj6o4<9rKf18#x;J#pp{_k_IF8M*u`;1ZE+?o5NIyhb8JzqCG||z}oo@+lF5qAzg6vU`<_cSO-#(uI;_( zbRkp&;ZB`2xvGbCO)W|v>F5|PO$GQ&7Y*YZ!4GN!;MFRQ%Izx0w5y*VJIyunEAC#K zwxYd4L$nZ;0eCw2`DF&tvnu{Hg|D?qbwWHr9X}Ow8KsZ#WtEnz?>f{f)C;CPa^B~f zxk`uU67oMb1+)@i?uueKM$)GjbLwKj3}ByY>aW&bDyO#}(^M!D2Yx$e2~t|c@}y1z z9eS!q#s64EvxYw(>2@59)l)4Sq5po&s#T7;GBvEW`oZ$Nt9zm((dksK|NkHyCIYuMw-#ii;P5cJZSXn&Uh*}T4-eC4LY^d7=CZjVN1hw92biCV(H7*+$hgp1e_Y^d zu01A0%~V`z&!()}*9M<0sRiQft-V>6fA`f>6F*c1eKhA*Ro|k`a#=SL#zW zoVMqyBlUsyP6_#~1t$_uPPDwi9`-!K00(D&mPzrV*!P6SaPEH!Ya7D472HY!bRR1j z!tp+-rA-o~Oj#vRKF+jHkbS~+jGbAL*YK+KRbx^8_82nXdIkGNYf}(Bgo~C8h}iG)O=A4%V|}eY|Zfr$jh+|>siDW&T257pJZwE08PYq4EabO!75bi z&e&k51;^#Q{4CKC%-2<0+MopUaJHt6m7^Pt2ljLF;iQ~ZL#B^#upXV>sYmEzVzXj4mhLXXINbcUDs>0{jty;hyySEb?68kpwBa zgh9F4leGUqxi2=`=P~jgaU7R09wvE$$x`R2X1Y*Oe&_XvoGx^)97a40+A2=u?S#>? zdrM~fHTh-xo7dZ#S6@}i0QgbXM5$z*AXMah?6D_9Rc_QuSR;nF=ag){E$=Xn8+nnnm~*n7>6 z!i7Kg>=m_|8PLYE;Iy)TkwtWZrIRGC$>>V4CdDkW(&0z;yX+S!N^BotDFlcU&F_7) zA9*f>GF-aeTe>61NNem<=CeGuJE8Q8GWIaq_nn1R!=8(CpY;)$L4~%wW7cCbB-w`!#r-Pprb?;%H?;~!}QuD`hIDBS_8_UeKbIzHh z;Z3b7O_a{oE7B|xgtZ!Y#bVXG*hd_({Rq`k&5u+tlvX%)S-#DQgk^^(3ild5)xGCa z;0||m$2K*&461L4{WO+%&Zy#8VtZ1LIXNg=(fHC>9jFkx$CWHGZf7#ygd_4n4=l~ zHcRYZZOl9-+p8zh{D5A>k*{gG5!xk5Bwr|%aNV>zqntTsF59BrnV3b`Klq9{Hm|J| zi-x;4qo3#uD;##q7r0x+WZDxd>Eo+{dv5+NefQ4k!xR6f&-(gM|HSeiHy?S3LOLBl zTlMd)1sNFt%(dP+KT(s-RC}|RU}_+kNwPa_ri;~Y;k0@v18^`K`Z~?8u<6&W2aZil z!+D|FTrF>T$T5RgpidbY#N|Ube;84J-L8D1U7@&{x)@j4KH06s4ijP00~xWuTV5z< z*$`!m&DAPZ?bZgFt#2siv{k z-~uxH*^nJrixK+>Wr*<|t`{+tRMM@uNHwsAdEiv8 z!&Q37*+lI=J~YMfLq!HkeK7{7I%2x*&N)mpN36en7?0fU`?GlNXK<;Uh{G+~@$i4q z_10f)fZeukfZ()+AjOLXm!QQpK!PX1t;O9PDnM~3c!1*W?oiw*PLa~$4n^BSTka3% z+xy;g_POuhFvlF@U2{Eim8Krv^YvKDEAJ!H| zAb2V(Vmj|7q@SgUv#cgXC`ewV%ClA#(l7&tc z7AjX4uQ`$&Y^GR6M!dFw5`;&Mww2t|ImRv{>oPCIo0-T@Gcy;XjV=}aV^FzSc`e!5 zfz54$@;E$x0%RkNj#5Te)%pWxHCFK6*%UY*79lRZ#sHGtY8%AauI{Yiv%eGRTj zDSF%9a2wL+Y(k;!$6NnFQ1nEz_<$;$0v=qUv}GczP6wS`4LLC1QB(79)#~u@;Ou;S zIfN8Fm3~X47c&mjRM;7v=c7s#ftOLOQuEJYkNg~pC@2nvP%QhN?Ec{zTi&&3c)yKh^cvVPP^tK z4_^}{US*$nb~?xJ3ks`@Q-MAti82jlk)y*t;b%8G7&;RBrAe0-ekVC3-;?4k8r;)L zg8gh6AtYpmSny#RQ|2+(?fcWIo@qs=dl898t1-J@SxwHXI@ucIbUymSsP=g}y-tVG z)~9!mQ-J?j+xo`d)FE035IYr{E6DziJi5q9wcckyU)ZJj2Gb6BF3;3R0BFZj`Mx2e zj?H)ZgkY%ytLzY}X6rthKu<3HLr72s)td&*t~CbIV< zE)+y)POG#`51XhORpAnh&aNj9yOw!AMt~#vX&mh~sO;|N?cWZcPr*N~z3jK&pkL)* z)D987W}SV}74Xyj*ZP-O7Ck?V+pD`O(am6*D1aK21r<6sB!^S9*CQ#uk$F|7eH7Ej z%Q})={`v5{rWARM=_SdYk(Z(#LDyAM`l->feaima!0YV9M<0d@LAMmc44ba z&=@#%Cd)~!QOk*ub<)!BY<97pBt$fg`#wHv`<09_NjSsAoHciXxdb=#^cf@&Vj+i( z4B7H?(~0zSd`mAi)mhc=_wJ}W^`QxPv_$e&jiD6c#8kmK1T5mBK!SMX`VwZ_6NSR= z0r}t=a*(mAvJQY0s0P4Ri|EX?Njrz!@kjxs^h~Fe_i}d*Bl%(2YG@K8P_R9@FbTnzhwcMk1H;9>CxVJ;i3KYDS+Pb}9(H1~v8 z>m#^w9WPd0U&b}vMketI6?j&boj6Qz<##Byq}U6E7pC_L(xvk$r;y<%U?y_ zji(Bc_&>yhso+i3QdD>e;#bHRI*zU`9@_nQD$Iucpjm!b^?)YKhs;#u4N=^fcMk!R zE3mcbhxMFW-J>oO09ziw0p+To_m*|?>=Mo%h6!W;?Pzb3A^28AN87?t zMMAPCyflJW8CODCVjjr0ldMXWWL8}?Zh0(yzXW<8$2(tg2C?`HO_U?8Nowpwiq`Ccj+Jn+ zXkT-pnb0L3XszK#Y~z>arCRrv+D)@G5R4Jo;GiS zlqXz8%T5dUu_Iy?qPVg=29i6~X0GNx9n_Vt8u{A>sHWm(d_;V!_jvt4BtBFPzeeRyhoKBiZme?DHNj^SX7Wt=IMK8F zDSEm4lV$`T2?@{!izhHZ!> zmiP+g(x}hi_e|IEG)m!7pt}XEWKbgGn*=e{?hWF&^4B#oAc#tXahZ{enUU@KCWZ3> zB?Oy?Ns$!L2rU$k?B{W<2*qEK&Y7n&R@FtvB-B53I7OoLS(kFdSuG}yLET`CXP=;c0!qR+x(}Z$p6g^m}5(%|*|$5MI635)}@VELb7T{*+VR z47Kau@ZpR2;a>^szbCxbpW(gR?)s7Psni`lNlIyQZZ8d#zlU;MIN0uj%rd4#ZkEsW zD94+W;ssn-2f#!#t@J_s)_f|K8(p<-eniKi;tieGGzC!nQK@vsmlQ zj(0gu8`6BoD1T-~kq6IniG;_DzKox46+EPMG$#RD}8<$n~us!A%3=u zp$nOG;A{UUP+O^M0QuEgh> zA;imc-mF&I^r0N1O7&gkCvYU%QDWK1EO|KHzU+Jtk}|s{dNbgzrjU>Ej`2{U-tl0u zuTF4Cl`u{tElZZw?0*8U?n|T6?8Cw=g+kzf$3HP z;&VH&eO~2wnH{jFA2q)mzg{<*)S#Cqv;iT5zl55;EuLYo^txBoAIGsZ!0U|$n0bNi z8Pad#{)K~f80HK%^s82wMi5o@Db{IRyB&7FCxIO%mBtfUp))BkF*w*daB8FIOR56{ zml~Qml~R+Deo-JRsvz_&x`o%FbCivGVr<59v`gwm3H3zx#XK3xe(wEl7B+96N3+$H zi<^D~%>vYOc8Ho=sj)Wye>XZN(#MB-AXYH2(tfq$NYp*!37x6**eR6-r;IBN@liHC?mybd9;<&E4P8e{t%Uk8 zh*cMHXM9lG$)!#0{&+@Mm81VgxmzT6)(Nfg%+gA6%u(yF>D7;$Z$VndL=~RFBBTId z`LZ{;oyJW0TGzYZr6!6MKf-!#<74#t|Ezsnkh!}_Pfc+a>8)}yHntku>B|_CD0L4f zC(XGdWzn=B{1|Kyd3?2#z4Ok*Ias%g<+tGt7x)WkN|`JlR&Ya~sng-h?f#B`gRRh1 zp-6*);?~pJxSECNsWMlIk#)e#Y4>axFsW)e9C;8FWn9KK_M6%5{I4-U2qcfo6s?V~ zNKGpiAU-wh;Bq_4!JC#yQ!!EFG26K09dr775lGg2#yf8n$2*kBV)63s&QkrEtzfjh z0;8pc<=Q6^>mh_^f^K?9Kx9X9Ngj-NIDlozWoDgVAdtjRp?Y6@*UhJi$3y)KRDsu$ z4q{Sx5{Tvg_|klGGj!l{fNXeJ`?j*t79MDcEbD0hk5+yY7T{A7z+*R{9-Ket(y&u9 z8_TQ@+~I6L)s!tSQ=#>(=1{e=D!H1p<=R{P5u}FGMQ>;_=G)Sct%4WJXKmO$}b}xb(IVZ0ibdx_G@zpyPFl&2Mxy)Nnz&s->ew$-YQ@ACYQ>+vwe|2 z^qJ*@ggx*fuYXJRDeMi9g`7Bn{o8rkf9lZvY}Xu4Ay@Gv>l!lbu4EF~UeMyf3F12b z9BT{~mQFB$f{>|`x{P#LUD1pkyVJ{OGzp!UTmL9&ptU7B>Ye>eHcm*7b+Y%hw5VQl z8Y)w#XQ<~#xFd82Zz}SpSGRewxYC*Bu)2aDCI#Kg|8k^sEC?i|ch*6(9)CnXXCMq@ zJq@0g{MXpUnt@ygI%lBTb%&11% zvAP$3bDvn5XG9@`fB(#!e`AoI2s?+;yUGht9qJQtOkS{cmEFuoS;sF}#3)k+rp zYjx@u<;aD3JRR+Lf}%ayVmIJru?037l7$ zJ-1;~xcxW*(A;6Sq`#SYf110hV?o6H1iwt=ZOY~tl{P)b<(bxpP!idK!rNCV#l(ut zXNl!x_|2!>zwwFhZz6hZWioe(HLsjDjzKe8ETTV!{*48?|6gxm{(l}80f0m&{PCd? zhywsln6Eb+316jabVbOpze7GLaXn=lR78sKT}EcQuTnf2pnOWaB3yC3Z)}{Ng@8v4 za_2KMhq5F1wTe8<^bm+F>*=z2-aF^|QcZY^PW~IjbI>taRAn?tkdyL&w{y!gljJ$z zGeEV@sVIM-Lr$_vRqd3WDN7&_O~Hm%(}Wa-n_eedC+dqN7djI~j}G04TIq+piJJf2 zIg=q_Kl2>dv9$rzQVx!Qw_1LC{}=#O1K?ERH53yoQgYXf2$Sz0)JmCsM9d^*x)3!` zpyy!-en+qNCeI?F^gNzedf5|Rb-d!QmB)HV=wtF^y<)-E-SFVGm-eM?EKQWJ86+HW zzsN`xPYBTPaF-T9zoTbF(zq93TL!Z6VRgb=3|g>hQ`<_Ee!fW|b)VRb58BXS;Co4& z5sJg4b#IVo(3L9evTxEH35f<`7y5BAIUZm|BpL>F!>gJweM=y+^W}YpJK~3JhhS;X~hn@oym1{mKb4z3HilooO##!K%x*! zP5B$l3nvY({x)@S`rXj#L1;3&I&5>2hV*X~}Z4?W-Y!YI?$aX5q#56tLi@*`=V!N_=*cd8e(pYh z-sq^}&bC({5+yMdb6VtS684Pe7v~dp$pl)T7%?)U@i$_&;kuxHJO=BWX>WpbKU~%iRB*`VEgo&i~X~8HcjR|vJg&y#ipDg6{GvTF(++wcI|_@ zWF4*V6Ue7t;BIkC=X0xn(6kzDl7X8M0mC8nF9_)Qlfeq_=yZya3?dB@(yBohhKw>U zl|~^;6Jyy=Np)Wd6&SE`56O9|5>pMK`Er;Z=E#gA7BxnxTs3@s$3 zp)C&``Q4;m0G(yy=2dIoctNJE*ui`I7L9^;w1}}!B{iXPnRAk>v)`AAQ6fbAMdP_K zJeF@h=9j7a)$OUyPsIF)(`h3y>I$t*xg+{3y4h`_6NYga3P+LujdWi6z}?XBZ7WEC zdX(a4ZZYHDeDpH?`CQ3&NuLG8XBOTmE*x&nX-FqtVLQM0-Tw))K0Y)80l~mx>(vEq zm}Q3Z35!ECBiT`rQ#I4v079guB7)5y0!W1c`scR4Pc`A{e5`_81#XUA3C9VpTCy0g zLUH(PVuW4PZg*8|e+|xLuo$2ll`Ch|k^e4?=txfYGqmXV!VLQ_Uj0eGB@;zX#qD0{ z@~0CkW>2SfRgDKc=)zUB?`*$}FXBMOs$JTx5`T4N5K^c@zvYqP=D zNMU%%3`=uVqD-28f15!UL)7u{v&dWF*<7fVWv*zwo<@ghICPUJZ6sN2Q_*b1Y^AQf z(9cPZ>~lTe<06159|$LnLDbR!S3R>5)%IQW%D%caj7+9smir*0Y|M+*FIhe`4A&%? z(5WHldCB;_hq~9JEIyTJP$w96TrA0KB;!!`SCg`GuE?Rr0yv^?q;nqns2nQI=r!Ur zQDIVT{ix_(wDuaGV$sX7)D^1V{;Nr-ucivoyXQC`Gw+hIoZ5P@Kk)w(wt46F6AR>s zRHi6#XUdoGusx`GVWyYXd+oST-C^Y*zg9C*mecb`eZ1p-W}^jsvj6xzEA^l%<_M<^ zDL+ReDY0JXa6b`O(UfgCf0U+@@tV zMW@!{%x5RoXUKA7($tCk2LWl=WS$#RoX#PjZ3e{T>b0r}8m+ta`mY&@r;YLWsnU=5 zYA0tIP7FD2wvz@pB-E(U#U`xg7XT3Qogy)b4B4r&`qgs&$rle1FXpS5^{nWZH$IcC zXsbfHjDug-o5yZ{({G4nADq6?bucmRKWb)IF3*(-*^E4MF1_}a3zX0y)JPdv@5lh_ zo48y>TQj~`E`&x}MQV)86N&m6QkR$(@@;0%e*FVLOI=6=rhXrdtJQD%ZGO1+L$C)u(A%cs(l$-H)1vr*Ul!PKWPDU z$OX@d9)48~T6!lb(EbdnXZ%ymsQIWzX*RT$QxR`;(VFt(b1(#w&Ki{JL`@LFYYm9D z#Do!ydW?P_2R&Ux#4-J@s(F{F*ZobU9bFM+(BsqHBq&{a$6UR9dp7FX7Kq*8nmSsb z>)GJLV(vQ`5NE^m>aJS)^t4;ev1;FDsqdko^ZfS0A+K9ddir%jN!DXzi^?f#~vCSR+gUc8VZ`q|B;-x{o34-h1sfNXX?3giEUMWsol0H0%|nd0H5DN?vJ-j59Az-RD^I8jlxfU_5F z>eo^%?r$9MvF}TpM292Oe+zt+tk}3y>@!+by|=*tTZDNOL<|&XbHLRgBj{vv?;<(x zAM1y#sniJ}-s|GZiN9UD;MJI)K@+h|NT}b<<8MAa%jI69)l&Gph+Bl^0OihWr5oM# zG{L}EwzF8`VZ`zR>A+~s?x{Z>P3qvT!YIwFu93l-K`OhZ+ zk^k-yry`^YX~w2ypad)a01U_Bjkm*fv%-w&l`}?czSqwOVZqrbQfUV2*}ERz{%HX9 z$-$ABM`LdH^&~6f6yg>h-)<}77OS3-J#eazt4+*qquPLLma5`ZRK7;GMya8Ng@wgG z1_n1a(^S}DAGLti%}%6lEF})#AlX6{ zTmX)#ZZ`&T)BaLp6l|5j6<*Tax$N^o9kc>8fE28GNl}G-|0~r8c3G`Z+5`hq<}O=JOwT|I&%8r?PFUt>6ghAJ!obz2V&8Lt#Gs2KEX zZ~9>TH?9J`x7R-(V zfuP%WGCj7HHaR)t;|{-8+irQBriIViR`0E;672Sl?<{A|s-At_uW1U*w5j-qUM0Js zSxs3fVF4g$rg~WBSM1stVirIW8n$$qg(U&Hn{TwVX;z7-SwbiCHDXV`EvSov^=m8OZ+Hf&)QRq4P>6(HKTS5?nb zRlX8vs-@gVXUPtg#O?joKPXrw#AE(Png(Iu7*#s>bfPiKH%z1(Ab?)nYa(>pD}>t0L2L zG*-vPKs7m|UbtxT4xctNh&S+u1w7BJDzv5EGfjf;PAJBg3$`t;^48b3(wyHC9d~b- zD(q$47KE8kM>2FpY*Vv$QJ%|44EOO~=G+l2wLM>ch+Qy(>wat=Rt5k7KoZ^N5IVTn zNxDuPBR&tO!k6r(r!p+V5+5lV)Dep}UbynUVt||OJ@St+9E&cT(GiY@E=}l*tLJAU z?gcU~Q*36_`{PPBw?&$r#gnam*`u1PFYTt*+zh;X?Px}qtc`3iZKd>HhKp(NpO6_h z3(+5MQ4glo7ztc(G3vojJ)4JVrxU;UQBKpPky`hPVEeylo4{A!mIavrDRDf1N2>v3 zw;w#DZ-TLv>s@(1CSd^xDE3v9Et3tamqSYAqs{>?ZcZg`ZMSmk%f2W?3kg9|llTCE zU{EpQ=UkCnexJBXKo0@Ly_}99rBvK73Dt6BRH#FTBBajsX@#?(SeK8p5fO`Qf!5oW zq9ldv;AG9XhPo_3`*X#>A+LFLSZ=^Z5A&t#!DHQ{DBKN zuZNV;85*s(fdn zF+#XzPLJ98kugzrrxUk|adaIKOQ3sPEl9EF{fPs>uMCxEmV}VnI*6LLW~Va=o{N2B zXKYWI?=4RhROJAtq*o8=X6Z|N7_|T^#4aN;lpD(xMIzp9i9ySEFHgJ?_43)oY}0I0 zX)eXfT_eH_bCik|#Ra$=&oobxclPJT84^?YYJVLX(l2s$_Doagr%Qz(=F#F({X;25U}8~aL>U>+mwzgdHi6;( zToq+Z`uOrb^5}u1_-vd+--V9-!G5*^FRi1oSfe=V?u2tQ2Yt+(XX{e+p<0T@>qT28 z=4gA~A-j=+Sb`W5st4*3OIN3cPlEAWfw5IcbF#EIEvsTp~?DkQj*;vl2e(0>8rwaOfR$X%xRh>hm)PZr;D>;&VqBU zjX_JJzeqFn8yhFnhJI#zcEfZN)YjtQf^c&|?pHc0kwMb16(BD>%~|aU2adZby00q)KD z&5jZkqis=;2QDE6I!g3S%ND|xsL*B72@|B&xE7`teJs#giNhrWf)_()t>>B|=uOq$ zGc%MICC6w%k4yLGhD!sU9IW0i8x+sc4#9ZTq3R)}vV+K0IRVpRFyWwjX>RvW`Nhk? z-+{-G^UAuEWRkicPAUyAW1gap0FJ>R0G=(yFW`aN(gmCUvof!xl!4UWH_J<&CIXzC z_Xc!dUzMW$n{@-*(r;%WyOj$y_ctpbUBQDa`BpR$8b5iTB|1r|Yzw;)PY9e-m{S-t zhF%L4^x)wO8lV4Zu<1(tI4PG>-HB`@Swbp32~AV2gYn^{aAc8~cTVD4>nO|#J%Jnw z!?prMXI5DLTXg@CT$bGi;!t=Xr8+xCCL#d|&h}EF5r}!&?E2=8MjXJy1p;s*_0B0$R!2$TZ z9m3Sc4<}|hq%~G#P@Z^g8D1()B{5Q{(MY1Ur%D^`Z*2xDDn{7hMaIdQ&E9s4Y^z4P zzZd#|@ORTQW>3ly9oyzzU`UzlZR5S#tFP?(e4Y9$SZ4wOz!g-fBP1N@m%dU8VGP<% zCclzPZy93pdojZI)=y5ta{s4KZN-vn-C>1ib>j$EX5Z)UUBt4#3inmsl=xAaOL(Ux z3)V{135!BfoG8$o!{8^b4$-b&r=>S{pHa3c1J!-!RqMGxs8hNPV>!BE* zWQoBPiCA<d2Pnoe1+u0JS;&$Ktk9e)+rq0C=@rTtwGmZqaJ?QthVo(LI&g$*7 z90|2i(;YjQ*m*zZ_9WAjl}O6KuFz6@(lkA&p2=O<=&h`>gy;8;i^Gum-#f&o;oyjp zMcQaSCQse-g>QbNM6a17#IxxlI`-a~4Qb29lmLh_F=|8?u3S5se*P+dhRij@UUL4Q zl1s2(A3qXtk9Q900kbnAmhwEH#e)O#O*Mx@7!Lq7Kpua5HA3{+4o$DfbG{z5gW;ae zt=1pDhP6@WT5^uiRa7>lS(R}vEH|bH@9z;SpIbRouym@zQW;h$Bb7UvDc-jIQ^Tz$;+S@ zsdBu7QBH(UWR>IpTM_3Va{GAg;ieJs$qcN#RG&;S4jg3u0c z&C}3)5yij-@#(|}z+p|sQ9CsQkcu(WyAb0WPXO%0ZB z(P0F&H{Xe0tC-$7H_VEPf62u!!J=|AocgQjDBp|L!#l+G+-iw2-u!ybaJ0xaHO|U6ng=t z*-m8*ENUjgF5W|!018Z0Ap!0L_QV!p=4q~irX@2eG~`QiG^sqiI%k0|iI<7{Q?fD+ z1N%Ppn^o5NnB!7&a_-3kt*P2MXjWSZt#Ij(a=u2pJD(^>wJ?O$D2#(`ju5uDdV?|4 z?{M&5AWw#Py7BwWRc=0P{hLRod=X=EK-_8n&MMZNN%ym#g3k}-{NdwxkBC;ZE@1=s zzfJ-Wq28|POuG582PSjb`q;&YNOpo^6&AjzkNVZ$F^jY2EEc0y ztv?P~hK?oIxC>hM|3&yj5Ea5jlbTbP)n8)I`LqgWkY)JqtHBFR7VK&Fc z>uE|)AlD%9PJKR7Gt53MN8ed16rvJ*qtUAO<)6+e=+H*kc!{U9=ydIe=We^MJe?|( zi|nq@gU~4ZL@0PJvKt-v-rV1LA^+?9U} z{u~Nv<}1(0$^n_okM}qFvB({(Ju9B3Adc3$64AT`W<1%~#xOk%H@2F}%g14shVh;UyYpvQ&_8k+cd;BJbX<6-w zkS3n&4`ioJxG7^U%&l3u&*dW|;&NlgN;I+%Ajt308W93RBo@EX?gBI6$59v4j-R~I zBZAfGd@NYx)^{Zq0eQxI9NY~PO_6XL6=~;5(*s{3cG=B&aEywEW<~~BUyCCl8fx7< zR#qtvsjO(~_03b0w6c?YRTRudQwYG~1`|>P#-4KPEH0%OrKA`a9(;IC`4)?6`Cr5D zMFO@oIP4bx#uriK_3ESpobB(Px)Lb2HVZI5}>IBf1NoT@cZ33FrB{oj`-Qc78x-{m2wJR(Q)qCDQvQ<)l z{zCqDccX>_u)_GvxYHT}A0HZlcmQCz`P%rA$d9xqbdG}TA3;lb9vsDU19pOEUxqO4 zl3OULHw2K9w3?kRXmPdk4>+2#Qd3W4yJsLXy0x`w5dI8Iv)e)|0#7N96OiEugscKd z1_*SGlXA?UTt=;P1tt0QoQ2g<{i5H0Q+qG6DGq2@zwQT;`ZGt_O8WKSz15UD`W7U+ zO@eAUnM-C!iugeK{_OT5Q-hvQ<_-TQwGLB$gemFc5mvD>HURjEs=e}ZT%E-<*Scyf z_N-cRg=L}ft+9)Xr|@Uq3u5_!-qLhMwkVceZH!Zy7_O59)05UWas2DN)~Q1hfkJXF z1!e(k|IlF(mUq$V&Z?GS1nk?9QluZgCj*p7`UGoUALW@>YO^=KV?2}jK%n%#ZHuHm zZiFdJpe-7oz270vCTBI{-mf7c1Xt1z#zg>Vh5`VQTf82D2OtrGG_N56$3|QG+qWQ) ztsr)XXQ=_3d{u_w_5Nn@j3ecO5fxiij@o2$H4S5wV=ER zV)2p{3U+DM1izRm#Y`$&Lm(mOCt^*oFC1%<4pFR9;gHUHS#^6IqBvrr=h;@oKS8bU zaLeXeJ<7AZNSG86WaR$N3mi5qq<@(?Z>Kb;+Y&6xv-KKZ+T6HLYMUO&{VS&{6+(py z;v5mg611gHy+yc^^t0hGD*p%YqVTl)dK962l|=FoBN#z~6fN>7s~;bD(d^1Jl% zXxdNj8xJAngT<|{4cUZJLhW@iinvb5Ei7f32&sPCiy@RSkr0GN@uLUxa8hYz`C0(< zldc-8)U3}e7jPbPmBqpZRq%SEDhSE6P&{~4HC|b)%<)wPb}`$6_X= ze5hpz4{U6<-kY#Lq`JX`v4itn-AUMFJ8|b#4*y8GEO>W*LbE0TbFVJv;aE^FJz3ir zC;2JG+@x;)T?(}V(jRq)3v=rUings;hKAc3z{WJ+yn(TCpr_|?Y>#;KHY}&6NM8|y zaNOV4^>M@#=_XCD5Is`sT;MkBf_V=mvst`kHcVceAD_BH+Po2vQzg%U{QoSL{I5bo zwt9P$xg*gZ$x~g9(≫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 z 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 z Thyrvc9#0LdVHP?Hu-^V|%ndF(x8SB1 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�H3- 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 literal 0 HcmV?d00001 diff --git a/osu.Game.Rulesets.Taiko/Resources/Samples/Gameplay/soft-hitclap.wav b/osu.Game.Rulesets.Taiko/Resources/Samples/Gameplay/soft-hitclap.wav new file mode 100755 index 0000000000000000000000000000000000000000..b4cfa2626511db11bca7ea67149f93702a8961f0 GIT binary patch literal 573290 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

  • +*9>W5IUw5urKo-zh`hF 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�#h+5R6IBA` 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

    public abstract bool CursorInPlacementArea { get; } - /// - /// Creates a for a specific . - /// - /// The to create the overlay for. - public virtual SelectionBlueprint CreateBlueprintFor(DrawableHitObject hitObject) => null; - - /// - /// Creates a which outlines s and handles movement of selections. - /// - public virtual SelectionHandler CreateSelectionHandler() => new SelectionHandler(); - /// /// Creates the applicable for a selection. /// diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index cafaddc39e..39ec42ba96 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -22,7 +22,11 @@ using osuTK.Input; namespace osu.Game.Screens.Edit.Compose.Components { - public class BlueprintContainer : CompositeDrawable, IKeyBindingHandler + /// + /// A container which provides a "blueprint" display of hitobjects. + /// Includes selection and manipulation support via a . + /// + public abstract class BlueprintContainer : CompositeDrawable, IKeyBindingHandler { public event Action> SelectionChanged; @@ -42,15 +46,26 @@ namespace osu.Game.Screens.Edit.Compose.Components [Resolved] private EditorBeatmap beatmap { get; set; } - public BlueprintContainer() + protected BlueprintContainer() { RelativeSizeAxes = Axes.Both; } + /// + /// Creates a which outlines s and handles movement of selections. + /// + public virtual SelectionHandler CreateSelectionHandler() => new SelectionHandler(); + + /// + /// Creates a for a specific . + /// + /// The to create the overlay for. + public virtual SelectionBlueprint CreateBlueprintFor(DrawableHitObject hitObject) => null; + [BackgroundDependencyLoader] private void load() { - selectionHandler = composer.CreateSelectionHandler(); + selectionHandler = CreateSelectionHandler(); selectionHandler.DeselectAll = deselectAll; InternalChildren = new[] @@ -259,7 +274,7 @@ namespace osu.Game.Screens.Edit.Compose.Components { refreshTool(); - var blueprint = composer.CreateBlueprintFor(hitObject); + var blueprint = CreateBlueprintFor(hitObject); if (blueprint == null) return; diff --git a/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs new file mode 100644 index 0000000000..9267006e4c --- /dev/null +++ b/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs @@ -0,0 +1,12 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +namespace osu.Game.Screens.Edit.Compose.Components +{ + /// + /// A blueprint container generally displayed as an overlay to a ruleset's playfield. + /// + public class ComposeBlueprintContainer : BlueprintContainer + { + } +} From d8d12cbbddfe864f96467e22a8b672f8ef4d22c6 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 2 Jan 2020 19:09:37 +0900 Subject: [PATCH 0677/1829] wip: Move more functionality into ComposeBlueprintContainer --- .../Timelines/Summary/Parts/TimelinePart.cs | 4 ++-- .../Edit/Compose/Components/BlueprintContainer.cs | 5 +---- .../Components/Timeline/TimelineHitObjectDisplay.cs | 12 ++++++++---- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/TimelinePart.cs b/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/TimelinePart.cs index 7706e33179..119635ccd5 100644 --- a/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/TimelinePart.cs +++ b/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/TimelinePart.cs @@ -14,7 +14,7 @@ namespace osu.Game.Screens.Edit.Components.Timelines.Summary.Parts /// /// Represents a part of the summary timeline.. /// - public abstract class TimelinePart : Container + public class TimelinePart : Container { protected readonly IBindable Beatmap = new Bindable(); @@ -22,7 +22,7 @@ namespace osu.Game.Screens.Edit.Components.Timelines.Summary.Parts protected override Container Content => timeline; - protected TimelinePart() + public TimelinePart() { AddInternal(timeline = new Container { RelativeSizeAxes = Axes.Both }); diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index 39ec42ba96..a8fb87c1b0 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -40,9 +40,6 @@ namespace osu.Game.Screens.Edit.Compose.Components [Resolved] private IAdjustableClock adjustableClock { get; set; } - [Resolved] - private HitObjectComposer composer { get; set; } - [Resolved] private EditorBeatmap beatmap { get; set; } @@ -77,7 +74,7 @@ namespace osu.Game.Screens.Edit.Compose.Components dragBox.CreateProxy() }; - foreach (var obj in composer.HitObjects) + foreach (var obj in beatmap.HitObjects) addBlueprintFor(obj); } diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index b20f2fa11d..12909f257d 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -14,15 +14,19 @@ using osuTK.Graphics; namespace osu.Game.Screens.Edit.Compose.Components.Timeline { - internal class TimelineHitObjectDisplay : TimelinePart + internal class TimelineHitObjectDisplay : BlueprintContainer { private EditorBeatmap beatmap { get; } + private readonly TimelinePart content; + public TimelineHitObjectDisplay(EditorBeatmap beatmap) { RelativeSizeAxes = Axes.Both; this.beatmap = beatmap; + + AddInternal(content = new TimelinePart()); } [BackgroundDependencyLoader] @@ -42,15 +46,15 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline private void remove(HitObject h) { - foreach (var d in Children.OfType().Where(c => c.HitObject == h)) + foreach (var d in content.OfType().Where(c => c.HitObject == h)) d.Expire(); } private void add(HitObject h) { - var yOffset = Children.Count(d => d.X == h.StartTime); + var yOffset = content.Count(d => d.X == h.StartTime); - Add(new TimelineHitObjectRepresentation(h) { Y = -yOffset * TimelineHitObjectRepresentation.THICKNESS }); + content.Add(new TimelineHitObjectRepresentation(h) { Y = -yOffset * TimelineHitObjectRepresentation.THICKNESS }); } private class TimelineHitObjectRepresentation : CompositeDrawable From 904b068a15c5bb55629d70c8bb5ca035a1d65649 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 2 Jan 2020 13:18:18 +0300 Subject: [PATCH 0678/1829] Simplify colour setting for additional elements in OverlayRulesetTabItem --- osu.Game/Overlays/OverlayRulesetTabItem.cs | 23 +++++++++++-------- .../Components/ProfileRulesetTabItem.cs | 13 +---------- 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/osu.Game/Overlays/OverlayRulesetTabItem.cs b/osu.Game/Overlays/OverlayRulesetTabItem.cs index 9d6d28a81f..e1cc1de8de 100644 --- a/osu.Game/Overlays/OverlayRulesetTabItem.cs +++ b/osu.Game/Overlays/OverlayRulesetTabItem.cs @@ -11,6 +11,7 @@ using osu.Game.Graphics.UserInterface; using osu.Game.Rulesets; using osuTK.Graphics; using osuTK; +using System; namespace osu.Game.Overlays { @@ -33,10 +34,12 @@ namespace osu.Game.Overlays accentColour = value; - UpdateState(); + updateState(); } } + protected Action OnStateUpdated; + protected override Container Content => content; public OverlayRulesetTabItem(RulesetInfo value) @@ -67,32 +70,32 @@ namespace osu.Game.Overlays protected override void LoadComplete() { base.LoadComplete(); - Enabled.BindValueChanged(_ => UpdateState(), true); + Enabled.BindValueChanged(_ => updateState(), true); } protected override bool OnHover(HoverEvent e) { base.OnHover(e); - UpdateState(); + updateState(); return true; } protected override void OnHoverLost(HoverLostEvent e) { base.OnHoverLost(e); - UpdateState(); + updateState(); } - protected override void OnActivated() => UpdateState(); + protected override void OnActivated() => updateState(); - protected override void OnDeactivated() => UpdateState(); + protected override void OnDeactivated() => updateState(); - protected virtual void UpdateState() + private void updateState() { + var updatedColour = IsHovered || Active.Value ? Color4.White : Enabled.Value ? AccentColour : Color4.DimGray; Text.Font = Text.Font.With(weight: Active.Value ? FontWeight.Bold : FontWeight.Medium); - Text.FadeColour(GetColour(), 120, Easing.OutQuint); + Text.FadeColour(updatedColour, 120, Easing.OutQuint); + OnStateUpdated?.Invoke(updatedColour); } - - protected Color4 GetColour() => IsHovered || Active.Value ? Color4.White : Enabled.Value ? AccentColour : Color4.DimGray; } } diff --git a/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetTabItem.cs b/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetTabItem.cs index adf324b259..d416e98b31 100644 --- a/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetTabItem.cs +++ b/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetTabItem.cs @@ -5,7 +5,6 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; using osu.Game.Rulesets; using osuTK; -using osuTK.Graphics; namespace osu.Game.Overlays.Profile.Header.Components { @@ -13,12 +12,6 @@ namespace osu.Game.Overlays.Profile.Header.Components { private readonly SpriteIcon icon; - public new Color4 AccentColour - { - get => base.AccentColour; - set => base.AccentColour = icon.Colour = value; - } - private bool isDefault; public bool IsDefault @@ -47,12 +40,8 @@ namespace osu.Game.Overlays.Profile.Header.Components Icon = FontAwesome.Solid.Star, Size = new Vector2(12), }); - } - protected override void UpdateState() - { - base.UpdateState(); - icon.FadeColour(GetColour(), 120, Easing.OutQuint); + OnStateUpdated += colour => icon.FadeColour(colour, 120, Easing.OutQuint); } } } From 132b420aaa565fefa69b73b132f97968ed61309a Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 2 Jan 2020 19:19:00 +0900 Subject: [PATCH 0679/1829] Fix changelog overlay hard crashing on no internet connection --- osu.Game/Overlays/ChangelogOverlay.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/ChangelogOverlay.cs b/osu.Game/Overlays/ChangelogOverlay.cs index fbc9dfcbd9..e7986e701c 100644 --- a/osu.Game/Overlays/ChangelogOverlay.cs +++ b/osu.Game/Overlays/ChangelogOverlay.cs @@ -158,7 +158,8 @@ namespace osu.Game.Overlays private Task initialFetchTask; - private void performAfterFetch(Action action) => fetchListing()?.ContinueWith(_ => Schedule(action)); + private void performAfterFetch(Action action) => fetchListing()?.ContinueWith(_ => + Schedule(action), TaskContinuationOptions.OnlyOnRanToCompletion); private Task fetchListing() { From 7b71e568177f1d827316dd3930ac64fd2921f5c0 Mon Sep 17 00:00:00 2001 From: Craftplacer Date: Thu, 2 Jan 2020 17:07:28 +0100 Subject: [PATCH 0680/1829] Initial commit --- .../API/Requests/MarkChannelAsReadRequest.cs | 21 +++++++++++++++++++ osu.Game/Online/Chat/Channel.cs | 8 +++++++ osu.Game/Online/Chat/ChannelManager.cs | 8 +++++++ 3 files changed, 37 insertions(+) create mode 100644 osu.Game/Online/API/Requests/MarkChannelAsReadRequest.cs diff --git a/osu.Game/Online/API/Requests/MarkChannelAsReadRequest.cs b/osu.Game/Online/API/Requests/MarkChannelAsReadRequest.cs new file mode 100644 index 0000000000..3f28037816 --- /dev/null +++ b/osu.Game/Online/API/Requests/MarkChannelAsReadRequest.cs @@ -0,0 +1,21 @@ +// 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.Online.Chat; + +namespace osu.Game.Online.API.Requests +{ + public class MarkChannelAsReadRequest : APIRequest + { + private readonly Channel channel; + private readonly Message message; + + public MarkChannelAsReadRequest(Channel channel, Message message) + { + this.channel = channel; + this.message = message; + } + + protected override string Target => @"/chat/channels/{channel}/mark-as-read/{message}"; + } +} diff --git a/osu.Game/Online/Chat/Channel.cs b/osu.Game/Online/Chat/Channel.cs index 451174a73c..6f67a95f53 100644 --- a/osu.Game/Online/Chat/Channel.cs +++ b/osu.Game/Online/Chat/Channel.cs @@ -36,6 +36,11 @@ namespace osu.Game.Online.Chat /// public readonly SortedList Messages = new SortedList(Comparer.Default); + /// + /// Contains all the messages that weren't read by the user. + /// + public IEnumerable UnreadMessages => Messages.Where(m => LastReadId < m.Id); + /// /// Contains all the messages that are still pending for submission to the server. /// @@ -75,6 +80,9 @@ namespace osu.Game.Online.Chat [JsonProperty(@"last_message_id")] public long? LastMessageId; + [JsonProperty(@"last_read_id")] + public long? LastReadId; + /// /// Signalles if the current user joined this channel or not. Defaults to false. /// diff --git a/osu.Game/Online/Chat/ChannelManager.cs b/osu.Game/Online/Chat/ChannelManager.cs index 1d8c5609d9..e92a4853ff 100644 --- a/osu.Game/Online/Chat/ChannelManager.cs +++ b/osu.Game/Online/Chat/ChannelManager.cs @@ -445,6 +445,14 @@ namespace osu.Game.Online.Chat return tcs.Task; } + public void MarkChannelAsRead(Message message) + { + var channel = JoinedChannels.First(c => c.Id == message.ChannelId); + var req = new MarkChannelAsReadRequest(channel, message); + req.Success += () => channel.LastReadId = message.Id; + api.Queue(req); + } + [BackgroundDependencyLoader] private void load(IAPIProvider api) { From 51556a809d578f159387664cf23ce26a856643b1 Mon Sep 17 00:00:00 2001 From: Craftplacer Date: Thu, 2 Jan 2020 17:20:33 +0100 Subject: [PATCH 0681/1829] Fix variables not being used inside target string --- osu.Game/Online/API/Requests/MarkChannelAsReadRequest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Online/API/Requests/MarkChannelAsReadRequest.cs b/osu.Game/Online/API/Requests/MarkChannelAsReadRequest.cs index 3f28037816..76c925588b 100644 --- a/osu.Game/Online/API/Requests/MarkChannelAsReadRequest.cs +++ b/osu.Game/Online/API/Requests/MarkChannelAsReadRequest.cs @@ -16,6 +16,6 @@ namespace osu.Game.Online.API.Requests this.message = message; } - protected override string Target => @"/chat/channels/{channel}/mark-as-read/{message}"; + protected override string Target => $"/chat/channels/{channel}/mark-as-read/{message}"; } } From b54491cc82d50fe3c1c8f892527c5d911c7af795 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 3 Jan 2020 14:16:33 +0900 Subject: [PATCH 0682/1829] Make sure an exception is thrown --- osu.Game/Overlays/ChangelogOverlay.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/ChangelogOverlay.cs b/osu.Game/Overlays/ChangelogOverlay.cs index e7986e701c..15b0079277 100644 --- a/osu.Game/Overlays/ChangelogOverlay.cs +++ b/osu.Game/Overlays/ChangelogOverlay.cs @@ -186,10 +186,10 @@ namespace osu.Game.Overlays tcs.SetResult(true); }); - req.Failure += _ => + req.Failure += e => { initialFetchTask = null; - tcs.SetResult(false); + tcs.SetException(e); }; await API.PerformAsync(req); From e8567414c6d253f94fb36e2b06fb2f8b80ab9c75 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 3 Jan 2020 15:01:42 +0900 Subject: [PATCH 0683/1829] Refactor into some kind of sanity --- .../Online/TestSceneUserProfileHeader.cs | 2 +- .../BreadcrumbControlOverlayHeader.cs | 29 ++++++++++- .../Overlays/Changelog/ChangelogHeader.cs | 14 +++--- osu.Game/Overlays/News/NewsHeader.cs | 14 +++--- osu.Game/Overlays/OverlayHeader.cs | 4 +- .../OverlayHeaderBreadcrumbControl.cs | 32 ------------- osu.Game/Overlays/OverlayHeaderTabControl.cs | 48 ------------------- osu.Game/Overlays/TabControlOverlayHeader.cs | 43 ++++++++++++++++- 8 files changed, 86 insertions(+), 100 deletions(-) delete mode 100644 osu.Game/Overlays/OverlayHeaderBreadcrumbControl.cs delete mode 100644 osu.Game/Overlays/OverlayHeaderTabControl.cs diff --git a/osu.Game.Tests/Visual/Online/TestSceneUserProfileHeader.cs b/osu.Game.Tests/Visual/Online/TestSceneUserProfileHeader.cs index 63b8acb234..63b46c991f 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneUserProfileHeader.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneUserProfileHeader.cs @@ -24,7 +24,7 @@ namespace osu.Game.Tests.Visual.Online typeof(ProfileHeader), typeof(RankGraph), typeof(LineGraph), - typeof(OverlayHeaderTabControl), + typeof(TabControlOverlayHeader.OverlayHeaderTabControl), typeof(CentreHeaderContainer), typeof(BottomHeaderContainer), typeof(DetailHeaderContainer), diff --git a/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs b/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs index 6f9445bd47..8a82b1f0c0 100644 --- a/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs +++ b/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs @@ -1,14 +1,39 @@ // 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.UserInterface; +using osu.Game.Graphics.UserInterface; namespace osu.Game.Overlays { public abstract class BreadcrumbControlOverlayHeader : OverlayHeader { - protected OverlayHeaderBreadcrumbControl TabControl; + protected OverlayHeaderBreadcrumbControl BreadcrumbControl; - protected override TabControl CreateControl() => TabControl = new OverlayHeaderBreadcrumbControl(); + protected override TabControl CreateTabControl() => BreadcrumbControl = new OverlayHeaderBreadcrumbControl(); + + public class OverlayHeaderBreadcrumbControl : BreadcrumbControl + { + public OverlayHeaderBreadcrumbControl() + { + RelativeSizeAxes = Axes.X; + } + + protected override TabItem CreateTabItem(string value) => new ControlTabItem(value); + + private class ControlTabItem : BreadcrumbTabItem + { + protected override float ChevronSize => 8; + + public ControlTabItem(string value) + : base(value) + { + Text.Font = Text.Font.With(size: 14); + Chevron.Y = 3; + Bar.Height = 0; + } + } + } } } diff --git a/osu.Game/Overlays/Changelog/ChangelogHeader.cs b/osu.Game/Overlays/Changelog/ChangelogHeader.cs index ddf07e4b50..7e47a3e29f 100644 --- a/osu.Game/Overlays/Changelog/ChangelogHeader.cs +++ b/osu.Game/Overlays/Changelog/ChangelogHeader.cs @@ -27,8 +27,8 @@ namespace osu.Game.Overlays.Changelog public ChangelogHeader() { - TabControl.AddItem(listing_string); - TabControl.Current.ValueChanged += e => + BreadcrumbControl.AddItem(listing_string); + BreadcrumbControl.Current.ValueChanged += e => { if (e.NewValue == listing_string) ListingSelected?.Invoke(); @@ -46,7 +46,7 @@ namespace osu.Game.Overlays.Changelog [BackgroundDependencyLoader] private void load(OsuColour colours) { - TabControl.AccentColour = colours.Violet; + BreadcrumbControl.AccentColour = colours.Violet; TitleBackgroundColour = colours.GreyVioletDarker; ControlBackgroundColour = colours.GreyVioletDark; } @@ -56,12 +56,12 @@ namespace osu.Game.Overlays.Changelog private void showBuild(ValueChangedEvent e) { if (e.OldValue != null) - TabControl.RemoveItem(e.OldValue.ToString()); + BreadcrumbControl.RemoveItem(e.OldValue.ToString()); if (e.NewValue != null) { - TabControl.AddItem(e.NewValue.ToString()); - TabControl.Current.Value = e.NewValue.ToString(); + BreadcrumbControl.AddItem(e.NewValue.ToString()); + BreadcrumbControl.Current.Value = e.NewValue.ToString(); Streams.Current.Value = Streams.Items.FirstOrDefault(s => s.Name == e.NewValue.UpdateStream.Name); @@ -69,7 +69,7 @@ namespace osu.Game.Overlays.Changelog } else { - TabControl.Current.Value = listing_string; + BreadcrumbControl.Current.Value = listing_string; Streams.Current.Value = null; title.Version = null; } diff --git a/osu.Game/Overlays/News/NewsHeader.cs b/osu.Game/Overlays/News/NewsHeader.cs index 2cbe2fa04e..fc88c86df2 100644 --- a/osu.Game/Overlays/News/NewsHeader.cs +++ b/osu.Game/Overlays/News/NewsHeader.cs @@ -24,9 +24,9 @@ namespace osu.Game.Overlays.News public NewsHeader() { - TabControl.AddItem(front_page_string); + BreadcrumbControl.AddItem(front_page_string); - TabControl.Current.ValueChanged += e => + BreadcrumbControl.Current.ValueChanged += e => { if (e.NewValue == front_page_string) ShowFrontPage?.Invoke(); @@ -38,7 +38,7 @@ namespace osu.Game.Overlays.News [BackgroundDependencyLoader] private void load(OsuColour colours) { - TabControl.AccentColour = colours.Violet; + BreadcrumbControl.AccentColour = colours.Violet; TitleBackgroundColour = colours.GreyVioletDarker; ControlBackgroundColour = colours.GreyVioletDark; } @@ -46,18 +46,18 @@ namespace osu.Game.Overlays.News private void showPost(ValueChangedEvent e) { if (e.OldValue != null) - TabControl.RemoveItem(e.OldValue); + BreadcrumbControl.RemoveItem(e.OldValue); if (e.NewValue != null) { - TabControl.AddItem(e.NewValue); - TabControl.Current.Value = e.NewValue; + BreadcrumbControl.AddItem(e.NewValue); + BreadcrumbControl.Current.Value = e.NewValue; title.IsReadingPost = true; } else { - TabControl.Current.Value = front_page_string; + BreadcrumbControl.Current.Value = front_page_string; title.IsReadingPost = false; } } diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index 7575801aac..53da2da634 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -84,7 +84,7 @@ namespace osu.Game.Overlays RelativeSizeAxes = Axes.Both, Colour = Color4.Gray, }, - CreateControl().With(control => control.Margin = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN }) + CreateTabControl().With(control => control.Margin = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN }) } }, CreateContent() @@ -99,6 +99,6 @@ namespace osu.Game.Overlays protected abstract ScreenTitle CreateTitle(); - protected abstract TabControl CreateControl(); + protected abstract TabControl CreateTabControl(); } } diff --git a/osu.Game/Overlays/OverlayHeaderBreadcrumbControl.cs b/osu.Game/Overlays/OverlayHeaderBreadcrumbControl.cs deleted file mode 100644 index 047ca5eba2..0000000000 --- a/osu.Game/Overlays/OverlayHeaderBreadcrumbControl.cs +++ /dev/null @@ -1,32 +0,0 @@ -// 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.UserInterface; -using osu.Framework.Graphics; -using osu.Framework.Graphics.UserInterface; - -namespace osu.Game.Overlays -{ - public class OverlayHeaderBreadcrumbControl : BreadcrumbControl - { - public OverlayHeaderBreadcrumbControl() - { - RelativeSizeAxes = Axes.X; - } - - protected override TabItem CreateTabItem(string value) => new ControlTabItem(value); - - private class ControlTabItem : BreadcrumbTabItem - { - protected override float ChevronSize => 8; - - public ControlTabItem(string value) - : base(value) - { - Text.Font = Text.Font.With(size: 14); - Chevron.Y = 3; - Bar.Height = 0; - } - } - } -} diff --git a/osu.Game/Overlays/OverlayHeaderTabControl.cs b/osu.Game/Overlays/OverlayHeaderTabControl.cs deleted file mode 100644 index 7e11e066c7..0000000000 --- a/osu.Game/Overlays/OverlayHeaderTabControl.cs +++ /dev/null @@ -1,48 +0,0 @@ -// 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.UserInterface; -using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; -using osuTK; -using osu.Game.Graphics; - -namespace osu.Game.Overlays -{ - public class OverlayHeaderTabControl : OverlayTabControl - { - public OverlayHeaderTabControl() - { - BarHeight = 1; - RelativeSizeAxes = Axes.None; - AutoSizeAxes = Axes.X; - Anchor = Anchor.BottomLeft; - Origin = Anchor.BottomLeft; - Height = 35; - } - - protected override TabItem CreateTabItem(string value) => new OverlayHeaderTabItem(value) - { - AccentColour = AccentColour, - }; - - protected override TabFillFlowContainer CreateTabFlow() => new TabFillFlowContainer - { - RelativeSizeAxes = Axes.Y, - AutoSizeAxes = Axes.X, - Direction = FillDirection.Horizontal, - Spacing = new Vector2(5, 0), - }; - - private class OverlayHeaderTabItem : OverlayTabItem - { - public OverlayHeaderTabItem(string value) - : base(value) - { - Text.Text = value; - Text.Font = OsuFont.GetFont(size: 14); - Bar.ExpandedSize = 5; - } - } - } -} diff --git a/osu.Game/Overlays/TabControlOverlayHeader.cs b/osu.Game/Overlays/TabControlOverlayHeader.cs index f8683b3e7d..f3521b66c8 100644 --- a/osu.Game/Overlays/TabControlOverlayHeader.cs +++ b/osu.Game/Overlays/TabControlOverlayHeader.cs @@ -1,7 +1,11 @@ // 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.UserInterface; +using osu.Game.Graphics; +using osuTK; namespace osu.Game.Overlays { @@ -9,6 +13,43 @@ namespace osu.Game.Overlays { protected OverlayHeaderTabControl TabControl; - protected override TabControl CreateControl() => TabControl = new OverlayHeaderTabControl(); + protected override TabControl CreateTabControl() => TabControl = new OverlayHeaderTabControl(); + + public class OverlayHeaderTabControl : OverlayTabControl + { + public OverlayHeaderTabControl() + { + BarHeight = 1; + RelativeSizeAxes = Axes.None; + AutoSizeAxes = Axes.X; + Anchor = Anchor.BottomLeft; + Origin = Anchor.BottomLeft; + Height = 35; + } + + protected override TabItem CreateTabItem(string value) => new OverlayHeaderTabItem(value) + { + AccentColour = AccentColour, + }; + + protected override TabFillFlowContainer CreateTabFlow() => new TabFillFlowContainer + { + RelativeSizeAxes = Axes.Y, + AutoSizeAxes = Axes.X, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(5, 0), + }; + + private class OverlayHeaderTabItem : OverlayTabItem + { + public OverlayHeaderTabItem(string value) + : base(value) + { + Text.Text = value; + Text.Font = OsuFont.GetFont(size: 14); + Bar.ExpandedSize = 5; + } + } + } } } From fe581bf27ef852055e16894d45bcaed55b0f2ffb Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 3 Jan 2020 15:35:18 +0900 Subject: [PATCH 0684/1829] Remove unnecessarily exposed value --- osu.Game/Graphics/UserInterface/OsuTabControl.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/OsuTabControl.cs b/osu.Game/Graphics/UserInterface/OsuTabControl.cs index a6ee666e1d..ed8904db7e 100644 --- a/osu.Game/Graphics/UserInterface/OsuTabControl.cs +++ b/osu.Game/Graphics/UserInterface/OsuTabControl.cs @@ -30,8 +30,6 @@ namespace osu.Game.Graphics.UserInterface protected virtual float StripWidth => TabContainer.Children.Sum(c => c.IsPresent ? c.DrawWidth + TabContainer.Spacing.X : 0) - TabContainer.Spacing.X; - protected virtual float StripHeight => 1; - /// /// Whether entries should be automatically populated if is an type. /// @@ -47,7 +45,7 @@ namespace osu.Game.Graphics.UserInterface { Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, - Height = StripHeight, + Height = 1, Colour = Color4.White.Opacity(0), }); From 97b4c655541a87b592afd348ebc58625debb15d6 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 3 Jan 2020 16:24:29 +0900 Subject: [PATCH 0685/1829] Fix taiko replay frames being mis-ordered --- .../Replays/TaikoAutoGenerator.cs | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/osu.Game.Rulesets.Taiko/Replays/TaikoAutoGenerator.cs b/osu.Game.Rulesets.Taiko/Replays/TaikoAutoGenerator.cs index 4b234b56d4..7654cad6b4 100644 --- a/osu.Game.Rulesets.Taiko/Replays/TaikoAutoGenerator.cs +++ b/osu.Game.Rulesets.Taiko/Replays/TaikoAutoGenerator.cs @@ -121,9 +121,7 @@ namespace osu.Game.Rulesets.Taiko.Replays var nextHitObject = GetNextObject(i); // Get the next object that requires pressing the same button bool canDelayKeyUp = nextHitObject == null || nextHitObject.StartTime > endTime + KEY_UP_DELAY; - double calculatedDelay = canDelayKeyUp ? KEY_UP_DELAY : (nextHitObject.StartTime - endTime) * 0.9; - Frames.Add(new TaikoReplayFrame(endTime + calculatedDelay)); if (i < Beatmap.HitObjects.Count - 1) @@ -138,24 +136,5 @@ namespace osu.Game.Rulesets.Taiko.Replays return Replay; } - - protected override HitObject GetNextObject(int currentIndex) - { - Type desiredType = Beatmap.HitObjects[currentIndex].GetType(); - - for (int i = currentIndex + 1; i < Beatmap.HitObjects.Count; i++) - { - var currentObj = Beatmap.HitObjects[i]; - - if (currentObj.GetType() == desiredType || - // Un-press all keys before a DrumRoll or Swell - currentObj is DrumRoll || currentObj is Swell) - { - return Beatmap.HitObjects[i]; - } - } - - return null; - } } } From 9c49da8942d52b5e78e296f2a9be61d15d352329 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 3 Jan 2020 16:24:39 +0900 Subject: [PATCH 0686/1829] Remove unnecessary extra "wait" frame --- osu.Game.Rulesets.Taiko/Replays/TaikoAutoGenerator.cs | 7 ------- 1 file changed, 7 deletions(-) diff --git a/osu.Game.Rulesets.Taiko/Replays/TaikoAutoGenerator.cs b/osu.Game.Rulesets.Taiko/Replays/TaikoAutoGenerator.cs index 7654cad6b4..48eb33976e 100644 --- a/osu.Game.Rulesets.Taiko/Replays/TaikoAutoGenerator.cs +++ b/osu.Game.Rulesets.Taiko/Replays/TaikoAutoGenerator.cs @@ -124,13 +124,6 @@ namespace osu.Game.Rulesets.Taiko.Replays double calculatedDelay = canDelayKeyUp ? KEY_UP_DELAY : (nextHitObject.StartTime - endTime) * 0.9; Frames.Add(new TaikoReplayFrame(endTime + calculatedDelay)); - if (i < Beatmap.HitObjects.Count - 1) - { - double waitTime = Beatmap.HitObjects[i + 1].StartTime - 1000; - if (waitTime > endTime) - Frames.Add(new TaikoReplayFrame(waitTime)); - } - hitButton = !hitButton; } From e9b57de76f245adc7a0dfc4d11384c07e9c65a6d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 3 Jan 2020 17:23:17 +0900 Subject: [PATCH 0687/1829] 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 0b41d5cda4..e1e6f2e478 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 565608b40f..b497133e62 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 60355b8592..edd35b0774 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From 77fb632d443d2665ac1be4d2b7827d990f34cefe Mon Sep 17 00:00:00 2001 From: Dan Balasescu Date: Fri, 3 Jan 2020 17:57:01 +0900 Subject: [PATCH 0688/1829] Remove now unnecessary using --- osu.Game.Tests/Resources/TestResources.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game.Tests/Resources/TestResources.cs b/osu.Game.Tests/Resources/TestResources.cs index 7588e27b3e..8b892fbb2f 100644 --- a/osu.Game.Tests/Resources/TestResources.cs +++ b/osu.Game.Tests/Resources/TestResources.cs @@ -4,7 +4,6 @@ using System.IO; using NUnit.Framework; using osu.Framework.IO.Stores; -using osu.Game.Resources; namespace osu.Game.Tests.Resources { From 3a903339d6e41aa5c37bed8928ce16be03e609b0 Mon Sep 17 00:00:00 2001 From: Albie Spriddell Date: Fri, 3 Jan 2020 11:39:15 +0000 Subject: [PATCH 0689/1829] add playingverb and database migrations --- osu.Game.Rulesets.Catch/CatchRuleset.cs | 2 + osu.Game.Rulesets.Mania/ManiaRuleset.cs | 2 + osu.Game.Rulesets.Osu/OsuRuleset.cs | 2 + osu.Game.Rulesets.Taiko/TaikoRuleset.cs | 2 + .../20200103111200_AddPlayingVerb.Designer.cs | 508 ++++++++++++++++++ .../20200103111200_AddPlayingVerb.cs | 22 + .../Migrations/OsuDbContextModelSnapshot.cs | 2 + osu.Game/Rulesets/Ruleset.cs | 9 +- osu.Game/Rulesets/RulesetInfo.cs | 2 + osu.Game/Rulesets/RulesetStore.cs | 1 + osu.Game/Users/UserActivity.cs | 2 +- 11 files changed, 552 insertions(+), 2 deletions(-) create mode 100644 osu.Game/Migrations/20200103111200_AddPlayingVerb.Designer.cs create mode 100644 osu.Game/Migrations/20200103111200_AddPlayingVerb.cs diff --git a/osu.Game.Rulesets.Catch/CatchRuleset.cs b/osu.Game.Rulesets.Catch/CatchRuleset.cs index dc8df28e6a..e5c3647f99 100644 --- a/osu.Game.Rulesets.Catch/CatchRuleset.cs +++ b/osu.Game.Rulesets.Catch/CatchRuleset.cs @@ -135,6 +135,8 @@ namespace osu.Game.Rulesets.Catch public override string ShortName => SHORT_NAME; + public override string PlayingVerb => "Catching fruit"; + public override Drawable CreateIcon() => new SpriteIcon { Icon = OsuIcon.RulesetCatch }; public override DifficultyCalculator CreateDifficultyCalculator(WorkingBeatmap beatmap) => new CatchDifficultyCalculator(this, beatmap); diff --git a/osu.Game.Rulesets.Mania/ManiaRuleset.cs b/osu.Game.Rulesets.Mania/ManiaRuleset.cs index c50f4314a3..02c2158383 100644 --- a/osu.Game.Rulesets.Mania/ManiaRuleset.cs +++ b/osu.Game.Rulesets.Mania/ManiaRuleset.cs @@ -179,6 +179,8 @@ namespace osu.Game.Rulesets.Mania public override string ShortName => SHORT_NAME; + public override string PlayingVerb => "Smashing keys"; + public override Drawable CreateIcon() => new SpriteIcon { Icon = OsuIcon.RulesetMania }; public override DifficultyCalculator CreateDifficultyCalculator(WorkingBeatmap beatmap) => new ManiaDifficultyCalculator(this, beatmap); diff --git a/osu.Game.Rulesets.Osu/OsuRuleset.cs b/osu.Game.Rulesets.Osu/OsuRuleset.cs index 36346eb78a..148869f5e8 100644 --- a/osu.Game.Rulesets.Osu/OsuRuleset.cs +++ b/osu.Game.Rulesets.Osu/OsuRuleset.cs @@ -175,6 +175,8 @@ namespace osu.Game.Rulesets.Osu public override string ShortName => SHORT_NAME; + public override string PlayingVerb => "Clicking circles"; + public override RulesetSettingsSubsection CreateSettings() => new OsuSettingsSubsection(this); public override ISkin CreateLegacySkinProvider(ISkinSource source) => new OsuLegacySkinTransformer(source); diff --git a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs index 536cbdc562..fc79e59864 100644 --- a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs +++ b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs @@ -139,6 +139,8 @@ namespace osu.Game.Rulesets.Taiko public override string ShortName => SHORT_NAME; + public override string PlayingVerb => "Bashing drums"; + public override Drawable CreateIcon() => new SpriteIcon { Icon = OsuIcon.RulesetTaiko }; public override DifficultyCalculator CreateDifficultyCalculator(WorkingBeatmap beatmap) => new TaikoDifficultyCalculator(this, beatmap); diff --git a/osu.Game/Migrations/20200103111200_AddPlayingVerb.Designer.cs b/osu.Game/Migrations/20200103111200_AddPlayingVerb.Designer.cs new file mode 100644 index 0000000000..eb1b004dea --- /dev/null +++ b/osu.Game/Migrations/20200103111200_AddPlayingVerb.Designer.cs @@ -0,0 +1,508 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using osu.Game.Database; + +namespace osu.Game.Migrations +{ + [DbContext(typeof(OsuDbContext))] + [Migration("20200103111200_AddPlayingVerb")] + partial class AddPlayingVerb + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.2.6-servicing-10079"); + + modelBuilder.Entity("osu.Game.Beatmaps.BeatmapDifficulty", b => + { + b.Property("ID") + .ValueGeneratedOnAdd(); + + b.Property("ApproachRate"); + + b.Property("CircleSize"); + + b.Property("DrainRate"); + + b.Property("OverallDifficulty"); + + b.Property("SliderMultiplier"); + + b.Property("SliderTickRate"); + + b.HasKey("ID"); + + b.ToTable("BeatmapDifficulty"); + }); + + modelBuilder.Entity("osu.Game.Beatmaps.BeatmapInfo", b => + { + b.Property("ID") + .ValueGeneratedOnAdd(); + + b.Property("AudioLeadIn"); + + b.Property("BPM"); + + b.Property("BaseDifficultyID"); + + b.Property("BeatDivisor"); + + b.Property("BeatmapSetInfoID"); + + b.Property("Countdown"); + + b.Property("DistanceSpacing"); + + b.Property("GridSize"); + + b.Property("Hash"); + + b.Property("Hidden"); + + b.Property("Length"); + + b.Property("LetterboxInBreaks"); + + b.Property("MD5Hash"); + + b.Property("MetadataID"); + + b.Property("OnlineBeatmapID"); + + b.Property("Path"); + + b.Property("RulesetID"); + + b.Property("SpecialStyle"); + + b.Property("StackLeniency"); + + b.Property("StarDifficulty"); + + b.Property("Status"); + + b.Property("StoredBookmarks"); + + b.Property("TimelineZoom"); + + b.Property("Version"); + + b.Property("WidescreenStoryboard"); + + b.HasKey("ID"); + + b.HasIndex("BaseDifficultyID"); + + b.HasIndex("BeatmapSetInfoID"); + + b.HasIndex("Hash"); + + b.HasIndex("MD5Hash"); + + b.HasIndex("MetadataID"); + + b.HasIndex("OnlineBeatmapID") + .IsUnique(); + + b.HasIndex("RulesetID"); + + b.ToTable("BeatmapInfo"); + }); + + modelBuilder.Entity("osu.Game.Beatmaps.BeatmapMetadata", b => + { + b.Property("ID") + .ValueGeneratedOnAdd(); + + b.Property("Artist"); + + b.Property("ArtistUnicode"); + + b.Property("AudioFile"); + + b.Property("AuthorString") + .HasColumnName("Author"); + + b.Property("BackgroundFile"); + + b.Property("PreviewTime"); + + b.Property("Source"); + + b.Property("Tags"); + + b.Property("Title"); + + b.Property("TitleUnicode"); + + b.Property("VideoFile"); + + b.HasKey("ID"); + + b.ToTable("BeatmapMetadata"); + }); + + modelBuilder.Entity("osu.Game.Beatmaps.BeatmapSetFileInfo", b => + { + b.Property("ID") + .ValueGeneratedOnAdd(); + + b.Property("BeatmapSetInfoID"); + + b.Property("FileInfoID"); + + b.Property("Filename") + .IsRequired(); + + b.HasKey("ID"); + + b.HasIndex("BeatmapSetInfoID"); + + b.HasIndex("FileInfoID"); + + b.ToTable("BeatmapSetFileInfo"); + }); + + modelBuilder.Entity("osu.Game.Beatmaps.BeatmapSetInfo", b => + { + b.Property("ID") + .ValueGeneratedOnAdd(); + + b.Property("DateAdded"); + + b.Property("DeletePending"); + + b.Property("Hash"); + + b.Property("MetadataID"); + + b.Property("OnlineBeatmapSetID"); + + b.Property("Protected"); + + b.Property("Status"); + + b.HasKey("ID"); + + b.HasIndex("DeletePending"); + + b.HasIndex("Hash") + .IsUnique(); + + b.HasIndex("MetadataID"); + + b.HasIndex("OnlineBeatmapSetID") + .IsUnique(); + + b.ToTable("BeatmapSetInfo"); + }); + + modelBuilder.Entity("osu.Game.Configuration.DatabasedSetting", b => + { + b.Property("ID") + .ValueGeneratedOnAdd(); + + b.Property("Key") + .HasColumnName("Key"); + + b.Property("RulesetID"); + + b.Property("SkinInfoID"); + + b.Property("StringValue") + .HasColumnName("Value"); + + b.Property("Variant"); + + b.HasKey("ID"); + + b.HasIndex("SkinInfoID"); + + b.HasIndex("RulesetID", "Variant"); + + b.ToTable("Settings"); + }); + + modelBuilder.Entity("osu.Game.IO.FileInfo", b => + { + b.Property("ID") + .ValueGeneratedOnAdd(); + + b.Property("Hash"); + + b.Property("ReferenceCount"); + + b.HasKey("ID"); + + b.HasIndex("Hash") + .IsUnique(); + + b.HasIndex("ReferenceCount"); + + b.ToTable("FileInfo"); + }); + + modelBuilder.Entity("osu.Game.Input.Bindings.DatabasedKeyBinding", b => + { + b.Property("ID") + .ValueGeneratedOnAdd(); + + b.Property("IntAction") + .HasColumnName("Action"); + + b.Property("KeysString") + .HasColumnName("Keys"); + + b.Property("RulesetID"); + + b.Property("Variant"); + + b.HasKey("ID"); + + b.HasIndex("IntAction"); + + b.HasIndex("RulesetID", "Variant"); + + b.ToTable("KeyBinding"); + }); + + modelBuilder.Entity("osu.Game.Rulesets.RulesetInfo", b => + { + b.Property("ID") + .ValueGeneratedOnAdd(); + + b.Property("Available"); + + b.Property("InstantiationInfo"); + + b.Property("Name"); + + b.Property("ShortName"); + + b.Property("PlayingVerb"); + + b.HasKey("ID"); + + b.HasIndex("Available"); + + b.HasIndex("ShortName") + .IsUnique(); + + b.ToTable("RulesetInfo"); + }); + + modelBuilder.Entity("osu.Game.Scoring.ScoreFileInfo", b => + { + b.Property("ID") + .ValueGeneratedOnAdd(); + + b.Property("FileInfoID"); + + b.Property("Filename") + .IsRequired(); + + b.Property("ScoreInfoID"); + + b.HasKey("ID"); + + b.HasIndex("FileInfoID"); + + b.HasIndex("ScoreInfoID"); + + b.ToTable("ScoreFileInfo"); + }); + + modelBuilder.Entity("osu.Game.Scoring.ScoreInfo", b => + { + b.Property("ID") + .ValueGeneratedOnAdd(); + + b.Property("Accuracy") + .HasColumnType("DECIMAL(1,4)"); + + b.Property("BeatmapInfoID"); + + b.Property("Combo"); + + b.Property("Date"); + + b.Property("DeletePending"); + + b.Property("Hash"); + + b.Property("MaxCombo"); + + b.Property("ModsJson") + .HasColumnName("Mods"); + + b.Property("OnlineScoreID"); + + b.Property("PP"); + + b.Property("Rank"); + + b.Property("RulesetID"); + + b.Property("StatisticsJson") + .HasColumnName("Statistics"); + + b.Property("TotalScore"); + + b.Property("UserID") + .HasColumnName("UserID"); + + b.Property("UserString") + .HasColumnName("User"); + + b.HasKey("ID"); + + b.HasIndex("BeatmapInfoID"); + + b.HasIndex("OnlineScoreID") + .IsUnique(); + + b.HasIndex("RulesetID"); + + b.ToTable("ScoreInfo"); + }); + + modelBuilder.Entity("osu.Game.Skinning.SkinFileInfo", b => + { + b.Property("ID") + .ValueGeneratedOnAdd(); + + b.Property("FileInfoID"); + + b.Property("Filename") + .IsRequired(); + + b.Property("SkinInfoID"); + + b.HasKey("ID"); + + b.HasIndex("FileInfoID"); + + b.HasIndex("SkinInfoID"); + + b.ToTable("SkinFileInfo"); + }); + + modelBuilder.Entity("osu.Game.Skinning.SkinInfo", b => + { + b.Property("ID") + .ValueGeneratedOnAdd(); + + b.Property("Creator"); + + b.Property("DeletePending"); + + b.Property("Hash"); + + b.Property("Name"); + + b.HasKey("ID"); + + b.HasIndex("DeletePending"); + + b.HasIndex("Hash") + .IsUnique(); + + b.ToTable("SkinInfo"); + }); + + modelBuilder.Entity("osu.Game.Beatmaps.BeatmapInfo", b => + { + b.HasOne("osu.Game.Beatmaps.BeatmapDifficulty", "BaseDifficulty") + .WithMany() + .HasForeignKey("BaseDifficultyID") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("osu.Game.Beatmaps.BeatmapSetInfo", "BeatmapSet") + .WithMany("Beatmaps") + .HasForeignKey("BeatmapSetInfoID") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("osu.Game.Beatmaps.BeatmapMetadata", "Metadata") + .WithMany("Beatmaps") + .HasForeignKey("MetadataID"); + + b.HasOne("osu.Game.Rulesets.RulesetInfo", "Ruleset") + .WithMany() + .HasForeignKey("RulesetID") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("osu.Game.Beatmaps.BeatmapSetFileInfo", b => + { + b.HasOne("osu.Game.Beatmaps.BeatmapSetInfo") + .WithMany("Files") + .HasForeignKey("BeatmapSetInfoID") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("osu.Game.IO.FileInfo", "FileInfo") + .WithMany() + .HasForeignKey("FileInfoID") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("osu.Game.Beatmaps.BeatmapSetInfo", b => + { + b.HasOne("osu.Game.Beatmaps.BeatmapMetadata", "Metadata") + .WithMany("BeatmapSets") + .HasForeignKey("MetadataID"); + }); + + modelBuilder.Entity("osu.Game.Configuration.DatabasedSetting", b => + { + b.HasOne("osu.Game.Skinning.SkinInfo") + .WithMany("Settings") + .HasForeignKey("SkinInfoID"); + }); + + modelBuilder.Entity("osu.Game.Scoring.ScoreFileInfo", b => + { + b.HasOne("osu.Game.IO.FileInfo", "FileInfo") + .WithMany() + .HasForeignKey("FileInfoID") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("osu.Game.Scoring.ScoreInfo") + .WithMany("Files") + .HasForeignKey("ScoreInfoID"); + }); + + modelBuilder.Entity("osu.Game.Scoring.ScoreInfo", b => + { + b.HasOne("osu.Game.Beatmaps.BeatmapInfo", "Beatmap") + .WithMany("Scores") + .HasForeignKey("BeatmapInfoID") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("osu.Game.Rulesets.RulesetInfo", "Ruleset") + .WithMany() + .HasForeignKey("RulesetID") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("osu.Game.Skinning.SkinFileInfo", b => + { + b.HasOne("osu.Game.IO.FileInfo", "FileInfo") + .WithMany() + .HasForeignKey("FileInfoID") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("osu.Game.Skinning.SkinInfo") + .WithMany("Files") + .HasForeignKey("SkinInfoID") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/osu.Game/Migrations/20200103111200_AddPlayingVerb.cs b/osu.Game/Migrations/20200103111200_AddPlayingVerb.cs new file mode 100644 index 0000000000..1f1d89f55e --- /dev/null +++ b/osu.Game/Migrations/20200103111200_AddPlayingVerb.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace osu.Game.Migrations +{ + public partial class AddPlayingVerb : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "PlayingVerb", + table: "RulesetInfo", + nullable: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "PlayingVerb", + table: "RulesetInfo"); + } + } +} diff --git a/osu.Game/Migrations/OsuDbContextModelSnapshot.cs b/osu.Game/Migrations/OsuDbContextModelSnapshot.cs index a6d9d1f3cb..5d64d2ac5d 100644 --- a/osu.Game/Migrations/OsuDbContextModelSnapshot.cs +++ b/osu.Game/Migrations/OsuDbContextModelSnapshot.cs @@ -283,6 +283,8 @@ namespace osu.Game.Migrations b.Property("ShortName"); + b.Property("PlayingVerb"); + b.HasKey("ID"); b.HasIndex("Available"); diff --git a/osu.Game/Rulesets/Ruleset.cs b/osu.Game/Rulesets/Ruleset.cs index 693d85c574..c930b42157 100644 --- a/osu.Game/Rulesets/Ruleset.cs +++ b/osu.Game/Rulesets/Ruleset.cs @@ -21,6 +21,7 @@ using osu.Game.Rulesets.Difficulty; using osu.Game.Rulesets.Scoring; using osu.Game.Scoring; using osu.Game.Skinning; +using osu.Game.Users; namespace osu.Game.Rulesets { @@ -57,7 +58,8 @@ namespace osu.Game.Rulesets ShortName = ShortName, ID = (this as ILegacyRuleset)?.LegacyID, InstantiationInfo = GetType().AssemblyQualifiedName, - Available = true + Available = true, + PlayingVerb = PlayingVerb, }; } @@ -121,6 +123,11 @@ namespace osu.Game.Rulesets /// public abstract string ShortName { get; } + /// + /// String used for and + /// + public virtual string PlayingVerb => "Playing solo"; + /// /// A list of available variant ids. /// diff --git a/osu.Game/Rulesets/RulesetInfo.cs b/osu.Game/Rulesets/RulesetInfo.cs index ececc18c96..237469aff2 100644 --- a/osu.Game/Rulesets/RulesetInfo.cs +++ b/osu.Game/Rulesets/RulesetInfo.cs @@ -17,6 +17,8 @@ namespace osu.Game.Rulesets public string InstantiationInfo { get; set; } + public string PlayingVerb { get; set; } + [JsonIgnore] public bool Available { get; set; } diff --git a/osu.Game/Rulesets/RulesetStore.cs b/osu.Game/Rulesets/RulesetStore.cs index a389d4ff75..2b502c8edd 100644 --- a/osu.Game/Rulesets/RulesetStore.cs +++ b/osu.Game/Rulesets/RulesetStore.cs @@ -92,6 +92,7 @@ namespace osu.Game.Rulesets r.Name = instanceInfo.Name; r.ShortName = instanceInfo.ShortName; r.InstantiationInfo = instanceInfo.InstantiationInfo; + r.PlayingVerb = instanceInfo.PlayingVerb; r.Available = true; } diff --git a/osu.Game/Users/UserActivity.cs b/osu.Game/Users/UserActivity.cs index 8030fc55a2..85c1b1f706 100644 --- a/osu.Game/Users/UserActivity.cs +++ b/osu.Game/Users/UserActivity.cs @@ -52,7 +52,7 @@ namespace osu.Game.Users Ruleset = ruleset; } - public override string Status => @"Playing alone"; + public override string Status => Ruleset.PlayingVerb; } public class Spectating : UserActivity From 59408515198260fd1913a86f13b1130bd413fe41 Mon Sep 17 00:00:00 2001 From: Albie Spriddell Date: Fri, 3 Jan 2020 12:17:01 +0000 Subject: [PATCH 0690/1829] remove database dependency --- .../20200103111200_AddPlayingVerb.Designer.cs | 508 ------------------ .../20200103111200_AddPlayingVerb.cs | 22 - .../Migrations/OsuDbContextModelSnapshot.cs | 2 - osu.Game/Rulesets/RulesetInfo.cs | 2 + 4 files changed, 2 insertions(+), 532 deletions(-) delete mode 100644 osu.Game/Migrations/20200103111200_AddPlayingVerb.Designer.cs delete mode 100644 osu.Game/Migrations/20200103111200_AddPlayingVerb.cs diff --git a/osu.Game/Migrations/20200103111200_AddPlayingVerb.Designer.cs b/osu.Game/Migrations/20200103111200_AddPlayingVerb.Designer.cs deleted file mode 100644 index eb1b004dea..0000000000 --- a/osu.Game/Migrations/20200103111200_AddPlayingVerb.Designer.cs +++ /dev/null @@ -1,508 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using osu.Game.Database; - -namespace osu.Game.Migrations -{ - [DbContext(typeof(OsuDbContext))] - [Migration("20200103111200_AddPlayingVerb")] - partial class AddPlayingVerb - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "2.2.6-servicing-10079"); - - modelBuilder.Entity("osu.Game.Beatmaps.BeatmapDifficulty", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("ApproachRate"); - - b.Property("CircleSize"); - - b.Property("DrainRate"); - - b.Property("OverallDifficulty"); - - b.Property("SliderMultiplier"); - - b.Property("SliderTickRate"); - - b.HasKey("ID"); - - b.ToTable("BeatmapDifficulty"); - }); - - modelBuilder.Entity("osu.Game.Beatmaps.BeatmapInfo", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("AudioLeadIn"); - - b.Property("BPM"); - - b.Property("BaseDifficultyID"); - - b.Property("BeatDivisor"); - - b.Property("BeatmapSetInfoID"); - - b.Property("Countdown"); - - b.Property("DistanceSpacing"); - - b.Property("GridSize"); - - b.Property("Hash"); - - b.Property("Hidden"); - - b.Property("Length"); - - b.Property("LetterboxInBreaks"); - - b.Property("MD5Hash"); - - b.Property("MetadataID"); - - b.Property("OnlineBeatmapID"); - - b.Property("Path"); - - b.Property("RulesetID"); - - b.Property("SpecialStyle"); - - b.Property("StackLeniency"); - - b.Property("StarDifficulty"); - - b.Property("Status"); - - b.Property("StoredBookmarks"); - - b.Property("TimelineZoom"); - - b.Property("Version"); - - b.Property("WidescreenStoryboard"); - - b.HasKey("ID"); - - b.HasIndex("BaseDifficultyID"); - - b.HasIndex("BeatmapSetInfoID"); - - b.HasIndex("Hash"); - - b.HasIndex("MD5Hash"); - - b.HasIndex("MetadataID"); - - b.HasIndex("OnlineBeatmapID") - .IsUnique(); - - b.HasIndex("RulesetID"); - - b.ToTable("BeatmapInfo"); - }); - - modelBuilder.Entity("osu.Game.Beatmaps.BeatmapMetadata", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("Artist"); - - b.Property("ArtistUnicode"); - - b.Property("AudioFile"); - - b.Property("AuthorString") - .HasColumnName("Author"); - - b.Property("BackgroundFile"); - - b.Property("PreviewTime"); - - b.Property("Source"); - - b.Property("Tags"); - - b.Property("Title"); - - b.Property("TitleUnicode"); - - b.Property("VideoFile"); - - b.HasKey("ID"); - - b.ToTable("BeatmapMetadata"); - }); - - modelBuilder.Entity("osu.Game.Beatmaps.BeatmapSetFileInfo", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("BeatmapSetInfoID"); - - b.Property("FileInfoID"); - - b.Property("Filename") - .IsRequired(); - - b.HasKey("ID"); - - b.HasIndex("BeatmapSetInfoID"); - - b.HasIndex("FileInfoID"); - - b.ToTable("BeatmapSetFileInfo"); - }); - - modelBuilder.Entity("osu.Game.Beatmaps.BeatmapSetInfo", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("DateAdded"); - - b.Property("DeletePending"); - - b.Property("Hash"); - - b.Property("MetadataID"); - - b.Property("OnlineBeatmapSetID"); - - b.Property("Protected"); - - b.Property("Status"); - - b.HasKey("ID"); - - b.HasIndex("DeletePending"); - - b.HasIndex("Hash") - .IsUnique(); - - b.HasIndex("MetadataID"); - - b.HasIndex("OnlineBeatmapSetID") - .IsUnique(); - - b.ToTable("BeatmapSetInfo"); - }); - - modelBuilder.Entity("osu.Game.Configuration.DatabasedSetting", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("Key") - .HasColumnName("Key"); - - b.Property("RulesetID"); - - b.Property("SkinInfoID"); - - b.Property("StringValue") - .HasColumnName("Value"); - - b.Property("Variant"); - - b.HasKey("ID"); - - b.HasIndex("SkinInfoID"); - - b.HasIndex("RulesetID", "Variant"); - - b.ToTable("Settings"); - }); - - modelBuilder.Entity("osu.Game.IO.FileInfo", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("Hash"); - - b.Property("ReferenceCount"); - - b.HasKey("ID"); - - b.HasIndex("Hash") - .IsUnique(); - - b.HasIndex("ReferenceCount"); - - b.ToTable("FileInfo"); - }); - - modelBuilder.Entity("osu.Game.Input.Bindings.DatabasedKeyBinding", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("IntAction") - .HasColumnName("Action"); - - b.Property("KeysString") - .HasColumnName("Keys"); - - b.Property("RulesetID"); - - b.Property("Variant"); - - b.HasKey("ID"); - - b.HasIndex("IntAction"); - - b.HasIndex("RulesetID", "Variant"); - - b.ToTable("KeyBinding"); - }); - - modelBuilder.Entity("osu.Game.Rulesets.RulesetInfo", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("Available"); - - b.Property("InstantiationInfo"); - - b.Property("Name"); - - b.Property("ShortName"); - - b.Property("PlayingVerb"); - - b.HasKey("ID"); - - b.HasIndex("Available"); - - b.HasIndex("ShortName") - .IsUnique(); - - b.ToTable("RulesetInfo"); - }); - - modelBuilder.Entity("osu.Game.Scoring.ScoreFileInfo", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("FileInfoID"); - - b.Property("Filename") - .IsRequired(); - - b.Property("ScoreInfoID"); - - b.HasKey("ID"); - - b.HasIndex("FileInfoID"); - - b.HasIndex("ScoreInfoID"); - - b.ToTable("ScoreFileInfo"); - }); - - modelBuilder.Entity("osu.Game.Scoring.ScoreInfo", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("Accuracy") - .HasColumnType("DECIMAL(1,4)"); - - b.Property("BeatmapInfoID"); - - b.Property("Combo"); - - b.Property("Date"); - - b.Property("DeletePending"); - - b.Property("Hash"); - - b.Property("MaxCombo"); - - b.Property("ModsJson") - .HasColumnName("Mods"); - - b.Property("OnlineScoreID"); - - b.Property("PP"); - - b.Property("Rank"); - - b.Property("RulesetID"); - - b.Property("StatisticsJson") - .HasColumnName("Statistics"); - - b.Property("TotalScore"); - - b.Property("UserID") - .HasColumnName("UserID"); - - b.Property("UserString") - .HasColumnName("User"); - - b.HasKey("ID"); - - b.HasIndex("BeatmapInfoID"); - - b.HasIndex("OnlineScoreID") - .IsUnique(); - - b.HasIndex("RulesetID"); - - b.ToTable("ScoreInfo"); - }); - - modelBuilder.Entity("osu.Game.Skinning.SkinFileInfo", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("FileInfoID"); - - b.Property("Filename") - .IsRequired(); - - b.Property("SkinInfoID"); - - b.HasKey("ID"); - - b.HasIndex("FileInfoID"); - - b.HasIndex("SkinInfoID"); - - b.ToTable("SkinFileInfo"); - }); - - modelBuilder.Entity("osu.Game.Skinning.SkinInfo", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("Creator"); - - b.Property("DeletePending"); - - b.Property("Hash"); - - b.Property("Name"); - - b.HasKey("ID"); - - b.HasIndex("DeletePending"); - - b.HasIndex("Hash") - .IsUnique(); - - b.ToTable("SkinInfo"); - }); - - modelBuilder.Entity("osu.Game.Beatmaps.BeatmapInfo", b => - { - b.HasOne("osu.Game.Beatmaps.BeatmapDifficulty", "BaseDifficulty") - .WithMany() - .HasForeignKey("BaseDifficultyID") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("osu.Game.Beatmaps.BeatmapSetInfo", "BeatmapSet") - .WithMany("Beatmaps") - .HasForeignKey("BeatmapSetInfoID") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("osu.Game.Beatmaps.BeatmapMetadata", "Metadata") - .WithMany("Beatmaps") - .HasForeignKey("MetadataID"); - - b.HasOne("osu.Game.Rulesets.RulesetInfo", "Ruleset") - .WithMany() - .HasForeignKey("RulesetID") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("osu.Game.Beatmaps.BeatmapSetFileInfo", b => - { - b.HasOne("osu.Game.Beatmaps.BeatmapSetInfo") - .WithMany("Files") - .HasForeignKey("BeatmapSetInfoID") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("osu.Game.IO.FileInfo", "FileInfo") - .WithMany() - .HasForeignKey("FileInfoID") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("osu.Game.Beatmaps.BeatmapSetInfo", b => - { - b.HasOne("osu.Game.Beatmaps.BeatmapMetadata", "Metadata") - .WithMany("BeatmapSets") - .HasForeignKey("MetadataID"); - }); - - modelBuilder.Entity("osu.Game.Configuration.DatabasedSetting", b => - { - b.HasOne("osu.Game.Skinning.SkinInfo") - .WithMany("Settings") - .HasForeignKey("SkinInfoID"); - }); - - modelBuilder.Entity("osu.Game.Scoring.ScoreFileInfo", b => - { - b.HasOne("osu.Game.IO.FileInfo", "FileInfo") - .WithMany() - .HasForeignKey("FileInfoID") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("osu.Game.Scoring.ScoreInfo") - .WithMany("Files") - .HasForeignKey("ScoreInfoID"); - }); - - modelBuilder.Entity("osu.Game.Scoring.ScoreInfo", b => - { - b.HasOne("osu.Game.Beatmaps.BeatmapInfo", "Beatmap") - .WithMany("Scores") - .HasForeignKey("BeatmapInfoID") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("osu.Game.Rulesets.RulesetInfo", "Ruleset") - .WithMany() - .HasForeignKey("RulesetID") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("osu.Game.Skinning.SkinFileInfo", b => - { - b.HasOne("osu.Game.IO.FileInfo", "FileInfo") - .WithMany() - .HasForeignKey("FileInfoID") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("osu.Game.Skinning.SkinInfo") - .WithMany("Files") - .HasForeignKey("SkinInfoID") - .OnDelete(DeleteBehavior.Cascade); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/osu.Game/Migrations/20200103111200_AddPlayingVerb.cs b/osu.Game/Migrations/20200103111200_AddPlayingVerb.cs deleted file mode 100644 index 1f1d89f55e..0000000000 --- a/osu.Game/Migrations/20200103111200_AddPlayingVerb.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -namespace osu.Game.Migrations -{ - public partial class AddPlayingVerb : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "PlayingVerb", - table: "RulesetInfo", - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "PlayingVerb", - table: "RulesetInfo"); - } - } -} diff --git a/osu.Game/Migrations/OsuDbContextModelSnapshot.cs b/osu.Game/Migrations/OsuDbContextModelSnapshot.cs index 5d64d2ac5d..a6d9d1f3cb 100644 --- a/osu.Game/Migrations/OsuDbContextModelSnapshot.cs +++ b/osu.Game/Migrations/OsuDbContextModelSnapshot.cs @@ -283,8 +283,6 @@ namespace osu.Game.Migrations b.Property("ShortName"); - b.Property("PlayingVerb"); - b.HasKey("ID"); b.HasIndex("Available"); diff --git a/osu.Game/Rulesets/RulesetInfo.cs b/osu.Game/Rulesets/RulesetInfo.cs index 237469aff2..11f35204a6 100644 --- a/osu.Game/Rulesets/RulesetInfo.cs +++ b/osu.Game/Rulesets/RulesetInfo.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System; +using System.ComponentModel.DataAnnotations.Schema; using System.Diagnostics.CodeAnalysis; using Newtonsoft.Json; @@ -17,6 +18,7 @@ namespace osu.Game.Rulesets public string InstantiationInfo { get; set; } + [NotMapped] public string PlayingVerb { get; set; } [JsonIgnore] From b500ee44fbba7956f7b5bc5f4e233ca923f9b1b8 Mon Sep 17 00:00:00 2001 From: Albie Date: Fri, 3 Jan 2020 13:00:57 +0000 Subject: [PATCH 0691/1829] Update osu.Game/Rulesets/Ruleset.cs Co-Authored-By: Salman Ahmed --- osu.Game/Rulesets/Ruleset.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Ruleset.cs b/osu.Game/Rulesets/Ruleset.cs index c930b42157..8563abf1e4 100644 --- a/osu.Game/Rulesets/Ruleset.cs +++ b/osu.Game/Rulesets/Ruleset.cs @@ -124,7 +124,7 @@ namespace osu.Game.Rulesets public abstract string ShortName { get; } /// - /// String used for and + /// The playing verb to be shown in the . /// public virtual string PlayingVerb => "Playing solo"; From 71a3db7cd6d4d0e9d0ae1b49dd4def7884aace7f Mon Sep 17 00:00:00 2001 From: Albie Spriddell Date: Fri, 3 Jan 2020 13:08:01 +0000 Subject: [PATCH 0692/1829] remove from rulesetinfo --- osu.Game/Rulesets/Ruleset.cs | 1 - osu.Game/Rulesets/RulesetInfo.cs | 4 ---- osu.Game/Rulesets/RulesetStore.cs | 1 - osu.Game/Users/UserActivity.cs | 2 +- 4 files changed, 1 insertion(+), 7 deletions(-) diff --git a/osu.Game/Rulesets/Ruleset.cs b/osu.Game/Rulesets/Ruleset.cs index c930b42157..4d36bbe98f 100644 --- a/osu.Game/Rulesets/Ruleset.cs +++ b/osu.Game/Rulesets/Ruleset.cs @@ -59,7 +59,6 @@ namespace osu.Game.Rulesets ID = (this as ILegacyRuleset)?.LegacyID, InstantiationInfo = GetType().AssemblyQualifiedName, Available = true, - PlayingVerb = PlayingVerb, }; } diff --git a/osu.Game/Rulesets/RulesetInfo.cs b/osu.Game/Rulesets/RulesetInfo.cs index 11f35204a6..ececc18c96 100644 --- a/osu.Game/Rulesets/RulesetInfo.cs +++ b/osu.Game/Rulesets/RulesetInfo.cs @@ -2,7 +2,6 @@ // See the LICENCE file in the repository root for full licence text. using System; -using System.ComponentModel.DataAnnotations.Schema; using System.Diagnostics.CodeAnalysis; using Newtonsoft.Json; @@ -18,9 +17,6 @@ namespace osu.Game.Rulesets public string InstantiationInfo { get; set; } - [NotMapped] - public string PlayingVerb { get; set; } - [JsonIgnore] public bool Available { get; set; } diff --git a/osu.Game/Rulesets/RulesetStore.cs b/osu.Game/Rulesets/RulesetStore.cs index 2b502c8edd..a389d4ff75 100644 --- a/osu.Game/Rulesets/RulesetStore.cs +++ b/osu.Game/Rulesets/RulesetStore.cs @@ -92,7 +92,6 @@ namespace osu.Game.Rulesets r.Name = instanceInfo.Name; r.ShortName = instanceInfo.ShortName; r.InstantiationInfo = instanceInfo.InstantiationInfo; - r.PlayingVerb = instanceInfo.PlayingVerb; r.Available = true; } diff --git a/osu.Game/Users/UserActivity.cs b/osu.Game/Users/UserActivity.cs index 85c1b1f706..5c8617e88c 100644 --- a/osu.Game/Users/UserActivity.cs +++ b/osu.Game/Users/UserActivity.cs @@ -52,7 +52,7 @@ namespace osu.Game.Users Ruleset = ruleset; } - public override string Status => Ruleset.PlayingVerb; + public override string Status => Beatmap.Ruleset.CreateInstance().PlayingVerb; } public class Spectating : UserActivity From 960bbae87f84e588f3300ea9e872ee4cd99a2b23 Mon Sep 17 00:00:00 2001 From: Albie Date: Fri, 3 Jan 2020 15:07:47 +0000 Subject: [PATCH 0693/1829] Update osu.Game/Users/UserActivity.cs Co-Authored-By: Salman Ahmed --- osu.Game/Users/UserActivity.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Users/UserActivity.cs b/osu.Game/Users/UserActivity.cs index 5c8617e88c..a775310256 100644 --- a/osu.Game/Users/UserActivity.cs +++ b/osu.Game/Users/UserActivity.cs @@ -52,7 +52,7 @@ namespace osu.Game.Users Ruleset = ruleset; } - public override string Status => Beatmap.Ruleset.CreateInstance().PlayingVerb; + public override string Status => Ruleset.CreateInstance().PlayingVerb; } public class Spectating : UserActivity From d4888c39de6ce88c4f73aa414a5ffa9db6616c36 Mon Sep 17 00:00:00 2001 From: Albie Spriddell Date: Fri, 3 Jan 2020 15:22:33 +0000 Subject: [PATCH 0694/1829] cleanup --- osu.Game/Users/UserActivity.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/osu.Game/Users/UserActivity.cs b/osu.Game/Users/UserActivity.cs index 5c8617e88c..3c9f201805 100644 --- a/osu.Game/Users/UserActivity.cs +++ b/osu.Game/Users/UserActivity.cs @@ -3,6 +3,7 @@ using osu.Game.Beatmaps; using osu.Game.Graphics; +using osu.Game.Rulesets; using osuTK.Graphics; namespace osu.Game.Users @@ -44,15 +45,15 @@ namespace osu.Game.Users { public BeatmapInfo Beatmap { get; } - public Rulesets.RulesetInfo Ruleset { get; } + public RulesetInfo Ruleset { get; } - public SoloGame(BeatmapInfo info, Rulesets.RulesetInfo ruleset) + public SoloGame(BeatmapInfo info, RulesetInfo ruleset) { Beatmap = info; Ruleset = ruleset; } - public override string Status => Beatmap.Ruleset.CreateInstance().PlayingVerb; + public override string Status => Ruleset.CreateInstance().PlayingVerb; } public class Spectating : UserActivity From 79a6655e1f6d64cb4246fc197560e607cccbbe87 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 3 Jan 2020 21:02:56 +0300 Subject: [PATCH 0695/1829] Use bindables for colour updates --- osu.Game/Overlays/OverlayRulesetTabItem.cs | 31 +++++++++---------- .../Components/ProfileRulesetTabItem.cs | 12 +++++-- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/osu.Game/Overlays/OverlayRulesetTabItem.cs b/osu.Game/Overlays/OverlayRulesetTabItem.cs index e1cc1de8de..bf24895306 100644 --- a/osu.Game/Overlays/OverlayRulesetTabItem.cs +++ b/osu.Game/Overlays/OverlayRulesetTabItem.cs @@ -11,7 +11,7 @@ using osu.Game.Graphics.UserInterface; using osu.Game.Rulesets; using osuTK.Graphics; using osuTK; -using System; +using osu.Framework.Bindables; namespace osu.Game.Overlays { @@ -22,24 +22,15 @@ namespace osu.Game.Overlays public override bool PropagatePositionalInputSubTree => Enabled.Value && !Active.Value && base.PropagatePositionalInputSubTree; - private Color4 accentColour; + private readonly Bindable accentColour = new Bindable(); + private readonly Bindable currentColour = new Bindable(); public Color4 AccentColour { - get => accentColour; - set - { - if (accentColour == value) - return; - - accentColour = value; - - updateState(); - } + get => accentColour.Value; + set => accentColour.Value = value; } - protected Action OnStateUpdated; - protected override Container Content => content; public OverlayRulesetTabItem(RulesetInfo value) @@ -70,6 +61,9 @@ namespace osu.Game.Overlays protected override void LoadComplete() { base.LoadComplete(); + + currentColour.BindValueChanged(OnCurrentColourChanged); + accentColour.BindValueChanged(_ => updateState()); Enabled.BindValueChanged(_ => updateState(), true); } @@ -92,10 +86,13 @@ namespace osu.Game.Overlays private void updateState() { - var updatedColour = IsHovered || Active.Value ? Color4.White : Enabled.Value ? AccentColour : Color4.DimGray; Text.Font = Text.Font.With(weight: Active.Value ? FontWeight.Bold : FontWeight.Medium); - Text.FadeColour(updatedColour, 120, Easing.OutQuint); - OnStateUpdated?.Invoke(updatedColour); + + currentColour.Value = IsHovered || Active.Value + ? Color4.White + : Enabled.Value ? AccentColour : Color4.DimGray; } + + protected virtual void OnCurrentColourChanged(ValueChangedEvent colour) => Text.FadeColour(colour.NewValue, 120, Easing.OutQuint); } } diff --git a/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetTabItem.cs b/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetTabItem.cs index d416e98b31..038509d371 100644 --- a/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetTabItem.cs +++ b/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetTabItem.cs @@ -1,17 +1,17 @@ // 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.Sprites; using osu.Game.Rulesets; using osuTK; +using osuTK.Graphics; namespace osu.Game.Overlays.Profile.Header.Components { public class ProfileRulesetTabItem : OverlayRulesetTabItem { - private readonly SpriteIcon icon; - private bool isDefault; public bool IsDefault @@ -28,6 +28,8 @@ namespace osu.Game.Overlays.Profile.Header.Components } } + private readonly SpriteIcon icon; + public ProfileRulesetTabItem(RulesetInfo value) : base(value) { @@ -40,8 +42,12 @@ namespace osu.Game.Overlays.Profile.Header.Components Icon = FontAwesome.Solid.Star, Size = new Vector2(12), }); + } - OnStateUpdated += colour => icon.FadeColour(colour, 120, Easing.OutQuint); + protected override void OnCurrentColourChanged(ValueChangedEvent colour) + { + base.OnCurrentColourChanged(colour); + icon.FadeColour(colour.NewValue, 120, Easing.OutQuint); } } } From bd5140c3fa72b79d8f03b6e1eda6ccbd919e12f8 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 3 Jan 2020 21:20:31 +0300 Subject: [PATCH 0696/1829] Add missing line breaks --- osu.Game/Overlays/OverlayRulesetTabItem.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/OverlayRulesetTabItem.cs b/osu.Game/Overlays/OverlayRulesetTabItem.cs index bf24895306..91cf2d6b96 100644 --- a/osu.Game/Overlays/OverlayRulesetTabItem.cs +++ b/osu.Game/Overlays/OverlayRulesetTabItem.cs @@ -90,7 +90,9 @@ namespace osu.Game.Overlays currentColour.Value = IsHovered || Active.Value ? Color4.White - : Enabled.Value ? AccentColour : Color4.DimGray; + : Enabled.Value + ? AccentColour + : Color4.DimGray; } protected virtual void OnCurrentColourChanged(ValueChangedEvent colour) => Text.FadeColour(colour.NewValue, 120, Easing.OutQuint); From e23c71be803ddc3f30d1070d3c1fe2bdd04ee6c9 Mon Sep 17 00:00:00 2001 From: Willy Tu Date: Fri, 3 Jan 2020 11:34:26 -0800 Subject: [PATCH 0697/1829] Update Resolved and Cached attribute issues --- .../SongSelect/TestSceneBeatmapLeaderboard.cs | 13 +++--------- .../TestSceneUserTopScoreContainer.cs | 14 +++---------- .../TestSceneDeleteLocalScore.cs | 21 +++++-------------- .../Online/Leaderboards/LeaderboardScore.cs | 6 +++--- .../Select/BeatmapClearScoresDialog.cs | 9 ++------ .../Screens/Select/LocalScoreDeleteDialog.cs | 9 ++------ 6 files changed, 18 insertions(+), 54 deletions(-) diff --git a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapLeaderboard.cs b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapLeaderboard.cs index 386fadc0d3..6ae0a80123 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapLeaderboard.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapLeaderboard.cs @@ -30,6 +30,7 @@ namespace osu.Game.Tests.Visual.SongSelect private readonly FailableLeaderboard leaderboard; + [Cached] private readonly DialogOverlay dialogOverlay; public TestSceneBeatmapLeaderboard() @@ -39,13 +40,13 @@ namespace osu.Game.Tests.Visual.SongSelect Depth = -1 }); - leaderboard = new FailableLeaderboard + Add(leaderboard = new FailableLeaderboard { Origin = Anchor.Centre, Anchor = Anchor.Centre, Size = new Vector2(550f, 450f), Scope = BeatmapLeaderboardScope.Global, - }; + }); AddStep(@"New Scores", newScores); AddStep(@"Show personal best", showPersonalBest); @@ -290,13 +291,5 @@ namespace osu.Game.Tests.Visual.SongSelect PlaceholderState = state; } } - - [BackgroundDependencyLoader] - private void load() - { - Dependencies.Cache(dialogOverlay); - - Add(leaderboard); - } } } diff --git a/osu.Game.Tests/Visual/SongSelect/TestSceneUserTopScoreContainer.cs b/osu.Game.Tests/Visual/SongSelect/TestSceneUserTopScoreContainer.cs index c69626321d..0598324110 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestSceneUserTopScoreContainer.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestSceneUserTopScoreContainer.cs @@ -17,8 +17,8 @@ namespace osu.Game.Tests.Visual.SongSelect { public class TestSceneUserTopScoreContainer : OsuTestScene { + [Cached] private readonly DialogOverlay dialogOverlay; - private readonly Container container; public TestSceneUserTopScoreContainer() { @@ -29,7 +29,7 @@ namespace osu.Game.Tests.Visual.SongSelect Depth = -1 }); - container = new Container + Add(new Container { Origin = Anchor.BottomCentre, Anchor = Anchor.Centre, @@ -48,7 +48,7 @@ namespace osu.Game.Tests.Visual.SongSelect Anchor = Anchor.BottomCentre, } } - }; + }); var scores = new[] { @@ -124,13 +124,5 @@ namespace osu.Game.Tests.Visual.SongSelect AddStep(@"Add score(rank 22333)", () => topScoreContainer.Score.Value = scores[2]); AddStep(@"Add null score", () => topScoreContainer.Score.Value = null); } - - [BackgroundDependencyLoader] - private void load() - { - Dependencies.Cache(dialogOverlay); - - Add(container); - } } } diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs index 2369b22ec2..de10eaccca 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs @@ -34,6 +34,7 @@ namespace osu.Game.Tests.Visual.UserInterface private readonly FailableLeaderboard leaderboard; + [Cached] private readonly DialogOverlay dialogOverlay; public TestSceneDeleteLocalScore() @@ -43,7 +44,7 @@ namespace osu.Game.Tests.Visual.UserInterface Depth = -1 }); - leaderboard = new FailableLeaderboard + Add(leaderboard = new FailableLeaderboard { Origin = Anchor.Centre, Anchor = Anchor.Centre, @@ -64,7 +65,7 @@ namespace osu.Game.Tests.Visual.UserInterface }, Version = "Insane" }, - }; + }); AddStep("Insert Local Scores", reset); } @@ -75,13 +76,6 @@ namespace osu.Game.Tests.Visual.UserInterface leaderboard.RefreshScores(); } - [BackgroundDependencyLoader] - private void load() - { - Dependencies.Cache(dialogOverlay); - Add(leaderboard); - } - private class FailableLeaderboard : BeatmapLeaderboard { private List scoreList; @@ -145,7 +139,8 @@ namespace osu.Game.Tests.Visual.UserInterface private class TestLeaderboardScore : LeaderboardScore { - private DialogOverlay dialogOverlay; + [Resolved] + private DialogOverlay dialogOverlay { get; set; } private readonly FailableLeaderboard leaderboard; @@ -159,12 +154,6 @@ namespace osu.Game.Tests.Visual.UserInterface { dialogOverlay?.Push(new TestLocalScoreDeleteDialog(score, leaderboard)); } - - [BackgroundDependencyLoader] - private void load(DialogOverlay dialogOverlay) - { - this.dialogOverlay = dialogOverlay; - } } private class TestLocalScoreDeleteDialog : PopupDialog diff --git a/osu.Game/Online/Leaderboards/LeaderboardScore.cs b/osu.Game/Online/Leaderboards/LeaderboardScore.cs index b49a8bf483..7e24dc990b 100644 --- a/osu.Game/Online/Leaderboards/LeaderboardScore.cs +++ b/osu.Game/Online/Leaderboards/LeaderboardScore.cs @@ -55,7 +55,8 @@ namespace osu.Game.Online.Leaderboards private List statisticsLabels; - private DialogOverlay dialogOverlay; + [Resolved] + private DialogOverlay dialogOverlay { get; set; } public LeaderboardScore(ScoreInfo score, int rank, bool allowHighlight = true) { @@ -68,10 +69,9 @@ namespace osu.Game.Online.Leaderboards } [BackgroundDependencyLoader] - private void load(IAPIProvider api, OsuColour colour, DialogOverlay overlay) + private void load(IAPIProvider api, OsuColour colour) { var user = score.User; - dialogOverlay = overlay; statisticsLabels = GetStatistics(score).Select(s => new ScoreComponentLabel(s)).ToList(); diff --git a/osu.Game/Screens/Select/BeatmapClearScoresDialog.cs b/osu.Game/Screens/Select/BeatmapClearScoresDialog.cs index c9b6ca7bb3..b32416b361 100644 --- a/osu.Game/Screens/Select/BeatmapClearScoresDialog.cs +++ b/osu.Game/Screens/Select/BeatmapClearScoresDialog.cs @@ -14,7 +14,8 @@ namespace osu.Game.Screens.Select { public class BeatmapClearScoresDialog : PopupDialog { - private ScoreManager scoreManager; + [Resolved] + private ScoreManager scoreManager { get; set; } public BeatmapClearScoresDialog(BeatmapInfo beatmap, Action onCompletion) { @@ -38,11 +39,5 @@ namespace osu.Game.Screens.Select }, }; } - - [BackgroundDependencyLoader] - private void load(ScoreManager scoreManager) - { - this.scoreManager = scoreManager; - } } } diff --git a/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs index 514c5adf95..c1d680fd45 100644 --- a/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs +++ b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs @@ -11,7 +11,8 @@ namespace osu.Game.Screens.Select { public class LocalScoreDeleteDialog : PopupDialog { - private ScoreManager scoreManager; + [Resolved] + private ScoreManager scoreManager { get; set; } public LocalScoreDeleteDialog(ScoreInfo score) { @@ -35,11 +36,5 @@ namespace osu.Game.Screens.Select }, }; } - - [BackgroundDependencyLoader] - private void load(ScoreManager scoreManager) - { - this.scoreManager = scoreManager; - } } } From 264523bc8babe7c9a5cdfd338b7c86ced3accd5f Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 3 Jan 2020 23:22:19 +0300 Subject: [PATCH 0698/1829] Split ControllableOverlayHeader from base class --- .../BreadcrumbControlOverlayHeader.cs | 2 +- .../Overlays/ControllableOverlayHeader.cs | 41 +++++++++++ osu.Game/Overlays/OverlayHeader.cs | 71 ++++++++----------- osu.Game/Overlays/TabControlOverlayHeader.cs | 2 +- 4 files changed, 72 insertions(+), 44 deletions(-) create mode 100644 osu.Game/Overlays/ControllableOverlayHeader.cs diff --git a/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs b/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs index 8a82b1f0c0..d7fa346c15 100644 --- a/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs +++ b/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs @@ -7,7 +7,7 @@ using osu.Game.Graphics.UserInterface; namespace osu.Game.Overlays { - public abstract class BreadcrumbControlOverlayHeader : OverlayHeader + public abstract class BreadcrumbControlOverlayHeader : ControllableOverlayHeader { protected OverlayHeaderBreadcrumbControl BreadcrumbControl; diff --git a/osu.Game/Overlays/ControllableOverlayHeader.cs b/osu.Game/Overlays/ControllableOverlayHeader.cs new file mode 100644 index 0000000000..30509995dd --- /dev/null +++ b/osu.Game/Overlays/ControllableOverlayHeader.cs @@ -0,0 +1,41 @@ +// 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.Framework.Graphics.UserInterface; +using osuTK.Graphics; + +namespace osu.Game.Overlays +{ + public abstract class ControllableOverlayHeader : OverlayHeader + { + protected Color4 ControlBackgroundColour + { + set => controlBackground.Colour = value; + } + + private readonly Box controlBackground; + + protected ControllableOverlayHeader() + { + HeaderInfo.Add(new Container + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Children = new Drawable[] + { + controlBackground = new Box + { + RelativeSizeAxes = Axes.Both, + Colour = Color4.Gray, + }, + CreateTabControl().With(control => control.Margin = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN }) + } + }); + } + + protected abstract TabControl CreateTabControl(); + } +} diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index 53da2da634..8c36e8cc9b 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -5,7 +5,6 @@ using JetBrains.Annotations; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; -using osu.Framework.Graphics.UserInterface; using osu.Game.Graphics.UserInterface; using osuTK.Graphics; @@ -14,19 +13,14 @@ namespace osu.Game.Overlays public abstract class OverlayHeader : Container { private readonly Box titleBackground; - private readonly Box controlBackground; private readonly Container background; + protected readonly FillFlowContainer HeaderInfo; protected Color4 TitleBackgroundColour { set => titleBackground.Colour = value; } - protected Color4 ControlBackgroundColour - { - set => controlBackground.Colour = value; - } - protected float BackgroundHeight { set => background.Height = value; @@ -44,47 +38,42 @@ namespace osu.Game.Overlays Direction = FillDirection.Vertical, Children = new[] { - background = new Container - { - RelativeSizeAxes = Axes.X, - Height = 80, - Masking = true, - Child = CreateBackground() - }, - new Container - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Children = new Drawable[] - { - titleBackground = new Box - { - RelativeSizeAxes = Axes.Both, - Colour = Color4.Gray, - }, - CreateTitle().With(title => - { - title.Margin = new MarginPadding - { - Vertical = 10, - Left = UserProfileOverlay.CONTENT_X_MARGIN - }; - }) - } - }, - new Container + HeaderInfo = new FillFlowContainer { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, + Direction = FillDirection.Vertical, Depth = -float.MaxValue, Children = new Drawable[] { - controlBackground = new Box + background = new Container { - RelativeSizeAxes = Axes.Both, - Colour = Color4.Gray, + RelativeSizeAxes = Axes.X, + Height = 80, + Masking = true, + Child = CreateBackground() + }, + new Container + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Children = new Drawable[] + { + titleBackground = new Box + { + RelativeSizeAxes = Axes.Both, + Colour = Color4.Gray, + }, + CreateTitle().With(title => + { + title.Margin = new MarginPadding + { + Vertical = 10, + Left = UserProfileOverlay.CONTENT_X_MARGIN + }; + }) + } }, - CreateTabControl().With(control => control.Margin = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN }) } }, CreateContent() @@ -98,7 +87,5 @@ namespace osu.Game.Overlays protected virtual Drawable CreateContent() => new Container(); protected abstract ScreenTitle CreateTitle(); - - protected abstract TabControl CreateTabControl(); } } diff --git a/osu.Game/Overlays/TabControlOverlayHeader.cs b/osu.Game/Overlays/TabControlOverlayHeader.cs index f3521b66c8..1e6be9422d 100644 --- a/osu.Game/Overlays/TabControlOverlayHeader.cs +++ b/osu.Game/Overlays/TabControlOverlayHeader.cs @@ -9,7 +9,7 @@ using osuTK; namespace osu.Game.Overlays { - public abstract class TabControlOverlayHeader : OverlayHeader + public abstract class TabControlOverlayHeader : ControllableOverlayHeader { protected OverlayHeaderTabControl TabControl; From 53c8592cb9932d96fd1b4ab2894159c8df34052b Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 3 Jan 2020 23:54:56 +0300 Subject: [PATCH 0699/1829] Add test scene --- .../UserInterface/TestSceneOverlayHeaders.cs | 168 ++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeaders.cs diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeaders.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeaders.cs new file mode 100644 index 0000000000..60cf0f6885 --- /dev/null +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeaders.cs @@ -0,0 +1,168 @@ +// 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.Containers; +using osu.Game.Overlays; +using System; +using System.Collections.Generic; +using osu.Framework.Graphics; +using osu.Game.Graphics.Sprites; +using osu.Framework.Graphics.Sprites; +using osu.Framework.Allocation; +using osu.Framework.Graphics.Textures; +using osu.Game.Graphics.UserInterface; +using osu.Game.Graphics; +using osu.Framework.Graphics.Shapes; +using osuTK.Graphics; + +namespace osu.Game.Tests.Visual.UserInterface +{ + public class TestSceneOverlayHeaders : OsuTestScene + { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(OverlayHeader), + typeof(ControllableOverlayHeader), + typeof(TabControlOverlayHeader), + typeof(BreadcrumbControlOverlayHeader), + typeof(TestNoControlHeader), + typeof(TestTabControlHeader), + typeof(TestBreadcrumbControlHeader), + }; + + private readonly FillFlowContainer flow; + + public TestSceneOverlayHeaders() + { + AddRange(new Drawable[] + { + new Box + { + RelativeSizeAxes = Axes.Both, + Colour = Color4.Black, + }, + new BasicScrollContainer + { + RelativeSizeAxes = Axes.Both, + Child = flow = new FillFlowContainer + { + AutoSizeAxes = Axes.Y, + RelativeSizeAxes = Axes.X, + Direction = FillDirection.Vertical + } + } + }); + + addHeader("OverlayHeader", new TestNoControlHeader()); + addHeader("TabControlOverlayHeader", new TestTabControlHeader()); + addHeader("BreadcrumbControlOverlayHeader", new TestBreadcrumbControlHeader()); + } + + private void addHeader(string name, OverlayHeader header) + { + flow.Add(new FillFlowContainer + { + AutoSizeAxes = Axes.Y, + RelativeSizeAxes = Axes.X, + Direction = FillDirection.Vertical, + Children = new Drawable[] + { + new OsuSpriteText + { + Margin = new MarginPadding(20), + Text = name, + }, + header + } + }); + } + + private class TestNoControlHeader : OverlayHeader + { + protected override Drawable CreateBackground() => new TestBackground(); + + protected override ScreenTitle CreateTitle() => new TestTitle(); + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + TitleBackgroundColour = colours.GreyVioletDarker; + } + } + + private class TestTabControlHeader : TabControlOverlayHeader + { + protected override Drawable CreateBackground() => new TestBackground(); + + protected override ScreenTitle CreateTitle() => new TestTitle(); + + public TestTabControlHeader() + { + TabControl.AddItem("tab1"); + TabControl.AddItem("tab2"); + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + TitleBackgroundColour = colours.GreyVioletDarker; + ControlBackgroundColour = colours.GreyVioletDark; + TabControl.AccentColour = colours.Violet; + } + } + + private class TestBreadcrumbControlHeader : BreadcrumbControlOverlayHeader + { + protected override Drawable CreateBackground() => new TestBackground(); + + protected override ScreenTitle CreateTitle() => new TestTitle(); + + public TestBreadcrumbControlHeader() + { + BreadcrumbControl.AddItem("tab1"); + BreadcrumbControl.AddItem("tab2"); + BreadcrumbControl.Current.Value = "tab2"; + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + TitleBackgroundColour = colours.GreyVioletDarker; + ControlBackgroundColour = colours.GreyVioletDark; + BreadcrumbControl.AccentColour = colours.Violet; + } + } + + private class TestBackground : Sprite + { + public TestBackground() + { + RelativeSizeAxes = Axes.Both; + FillMode = FillMode.Fill; + } + + [BackgroundDependencyLoader] + private void load(TextureStore textures) + { + Texture = textures.Get(@"Headers/changelog"); + } + } + + private class TestTitle : ScreenTitle + { + public TestTitle() + { + Title = "title"; + Section = "section"; + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + AccentColour = colours.Violet; + } + + protected override Drawable CreateIcon() => new ScreenTitleTextureIcon(@"Icons/changelog"); + } + } +} From 9b95ce1045e0d1eba172e41cf96367e656bedffd Mon Sep 17 00:00:00 2001 From: Craftplacer Date: Sat, 4 Jan 2020 00:45:02 +0100 Subject: [PATCH 0700/1829] Change wrong values used to form target URL Dumb mistake by me, C# used ToString() on these objects. --- osu.Game/Online/API/Requests/MarkChannelAsReadRequest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Online/API/Requests/MarkChannelAsReadRequest.cs b/osu.Game/Online/API/Requests/MarkChannelAsReadRequest.cs index 76c925588b..689fd7e485 100644 --- a/osu.Game/Online/API/Requests/MarkChannelAsReadRequest.cs +++ b/osu.Game/Online/API/Requests/MarkChannelAsReadRequest.cs @@ -16,6 +16,6 @@ namespace osu.Game.Online.API.Requests this.message = message; } - protected override string Target => $"/chat/channels/{channel}/mark-as-read/{message}"; + protected override string Target => $"chat/channels/{channel.Id}/mark-as-read/{message.Id}"; } } From 8dbddfab559830ffe19f3c675af4ca0367a296d3 Mon Sep 17 00:00:00 2001 From: Craftplacer Date: Sat, 4 Jan 2020 00:45:51 +0100 Subject: [PATCH 0701/1829] Add HTTP method --- osu.Game/Online/API/Requests/MarkChannelAsReadRequest.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/osu.Game/Online/API/Requests/MarkChannelAsReadRequest.cs b/osu.Game/Online/API/Requests/MarkChannelAsReadRequest.cs index 689fd7e485..95a5d0acbd 100644 --- a/osu.Game/Online/API/Requests/MarkChannelAsReadRequest.cs +++ b/osu.Game/Online/API/Requests/MarkChannelAsReadRequest.cs @@ -1,6 +1,8 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. +using System.Net.Http; +using osu.Framework.IO.Network; using osu.Game.Online.Chat; namespace osu.Game.Online.API.Requests @@ -17,5 +19,12 @@ namespace osu.Game.Online.API.Requests } protected override string Target => $"chat/channels/{channel.Id}/mark-as-read/{message.Id}"; + + protected override WebRequest CreateWebRequest() + { + var req = base.CreateWebRequest(); + req.Method = HttpMethod.Put; + return req; + } } } From 4f36bc0fd399a69194d10535ea9c61c8c51f395d Mon Sep 17 00:00:00 2001 From: Craftplacer Date: Sat, 4 Jan 2020 00:49:35 +0100 Subject: [PATCH 0702/1829] Add error log message for debugging --- osu.Game/Online/Chat/ChannelManager.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game/Online/Chat/ChannelManager.cs b/osu.Game/Online/Chat/ChannelManager.cs index e92a4853ff..6eb1674f37 100644 --- a/osu.Game/Online/Chat/ChannelManager.cs +++ b/osu.Game/Online/Chat/ChannelManager.cs @@ -450,6 +450,7 @@ namespace osu.Game.Online.Chat var channel = JoinedChannels.First(c => c.Id == message.ChannelId); var req = new MarkChannelAsReadRequest(channel, message); req.Success += () => channel.LastReadId = message.Id; + req.Failure += (e) => Logger.Error(e, "Failed to mark channel as read"); api.Queue(req); } From 7cc388b5abc56b5d49d9fabe9596db1701b22641 Mon Sep 17 00:00:00 2001 From: Craftplacer Date: Sat, 4 Jan 2020 00:50:12 +0100 Subject: [PATCH 0703/1829] Mark channel up to last message as read when switching channels --- osu.Game/Overlays/ChatOverlay.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/osu.Game/Overlays/ChatOverlay.cs b/osu.Game/Overlays/ChatOverlay.cs index e80c51d82a..b64d3a1893 100644 --- a/osu.Game/Overlays/ChatOverlay.cs +++ b/osu.Game/Overlays/ChatOverlay.cs @@ -279,6 +279,10 @@ namespace osu.Game.Overlays currentChannelContainer.Clear(false); currentChannelContainer.Add(loaded); } + + // mark channel as read when channel switched + if (e.NewValue.Messages.Any()) + channelManager.MarkChannelAsRead(e.NewValue.Messages.Last()); } private float startDragChatHeight; From cd91cc860d52f029fc77b32034eb966cf4a08bba Mon Sep 17 00:00:00 2001 From: Craftplacer Date: Sat, 4 Jan 2020 01:06:38 +0100 Subject: [PATCH 0704/1829] Resolve "Redundant lambda signature parentheses" --- osu.Game/Online/Chat/ChannelManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Online/Chat/ChannelManager.cs b/osu.Game/Online/Chat/ChannelManager.cs index 6eb1674f37..19c3be0d7b 100644 --- a/osu.Game/Online/Chat/ChannelManager.cs +++ b/osu.Game/Online/Chat/ChannelManager.cs @@ -450,7 +450,7 @@ namespace osu.Game.Online.Chat var channel = JoinedChannels.First(c => c.Id == message.ChannelId); var req = new MarkChannelAsReadRequest(channel, message); req.Success += () => channel.LastReadId = message.Id; - req.Failure += (e) => Logger.Error(e, "Failed to mark channel as read"); + req.Failure += e => Logger.Error(e, "Failed to mark channel as read"); api.Queue(req); } From a756d5d95d79e4c5997473c28c1877e88d9e18cb Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 4 Jan 2020 14:52:07 +0900 Subject: [PATCH 0705/1829] Fix new account registration attempting to login with email --- osu.Game/Overlays/AccountCreation/ScreenEntry.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/AccountCreation/ScreenEntry.cs b/osu.Game/Overlays/AccountCreation/ScreenEntry.cs index 6de14c51ee..e530ff5489 100644 --- a/osu.Game/Overlays/AccountCreation/ScreenEntry.cs +++ b/osu.Game/Overlays/AccountCreation/ScreenEntry.cs @@ -196,7 +196,7 @@ namespace osu.Game.Overlays.AccountCreation return; } - api.Login(emailTextBox.Text, passwordTextBox.Text); + api.Login(usernameTextBox.Text, passwordTextBox.Text); }); }); } From 9da7eec0d91f4779c98ec094c321eba952440884 Mon Sep 17 00:00:00 2001 From: Sebastian Krajewski Date: Sat, 4 Jan 2020 08:21:48 +0100 Subject: [PATCH 0706/1829] Add pulse to slider reverse arrows --- .../Objects/Drawables/DrawableRepeatPoint.cs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs index b81d94a673..db8ad98f8a 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs @@ -65,12 +65,18 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables protected override void UpdateInitialTransforms() { - animDuration = Math.Min(150, repeatPoint.SpanDuration / 2); + animDuration = Math.Min(300, repeatPoint.SpanDuration); - this.Animate( - d => d.FadeIn(animDuration), - d => d.ScaleTo(0.5f).ScaleTo(1f, animDuration * 4, Easing.OutElasticHalf) - ); + this.FadeIn(animDuration); + + double fadeInStart = repeatPoint.StartTime - 2 * repeatPoint.SpanDuration; + + // We want first repeat arrow to start pulsing during snake in + if (repeatPoint.RepeatIndex == 0) + fadeInStart -= repeatPoint.TimePreempt; + + for (double pulseStartTime = fadeInStart; pulseStartTime < repeatPoint.StartTime; pulseStartTime += 300) + this.Delay(pulseStartTime - LifetimeStart).ScaleTo(1.3f).ScaleTo(1f, Math.Min(300, repeatPoint.StartTime - pulseStartTime)); } protected override void UpdateStateTransforms(ArmedState state) @@ -88,7 +94,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables break; case ArmedState.Hit: - this.FadeOut(animDuration, Easing.OutQuint) + this.FadeOut(animDuration, Easing.Out) .ScaleTo(Scale * 1.5f, animDuration, Easing.Out); break; } From fc0b622a69dc20e0104536d58b15f5a5f67cf45d Mon Sep 17 00:00:00 2001 From: Sebastian Krajewski Date: Sat, 4 Jan 2020 10:35:10 +0100 Subject: [PATCH 0707/1829] Change reverse arrow pulse easing to OutQuad --- .../Objects/Drawables/DrawableRepeatPoint.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs index db8ad98f8a..e1cacfaaff 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; @@ -76,7 +76,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables fadeInStart -= repeatPoint.TimePreempt; for (double pulseStartTime = fadeInStart; pulseStartTime < repeatPoint.StartTime; pulseStartTime += 300) - this.Delay(pulseStartTime - LifetimeStart).ScaleTo(1.3f).ScaleTo(1f, Math.Min(300, repeatPoint.StartTime - pulseStartTime)); + this.Delay(pulseStartTime - LifetimeStart).ScaleTo(1.3f).ScaleTo(1f, Math.Min(300, repeatPoint.StartTime - pulseStartTime), Easing.Out); } protected override void UpdateStateTransforms(ArmedState state) From a897f497a2c20d074d0e108ede5e09934736be89 Mon Sep 17 00:00:00 2001 From: mcendu Date: Sat, 4 Jan 2020 18:35:37 +0800 Subject: [PATCH 0708/1829] remove LaneGlowPiece and GlowPiece --- .../Objects/Drawables/Pieces/GlowPiece.cs | 68 --------------- .../Objects/Drawables/Pieces/LaneGlowPiece.cs | 85 ------------------- 2 files changed, 153 deletions(-) delete mode 100644 osu.Game.Rulesets.Mania/Objects/Drawables/Pieces/GlowPiece.cs delete mode 100644 osu.Game.Rulesets.Mania/Objects/Drawables/Pieces/LaneGlowPiece.cs diff --git a/osu.Game.Rulesets.Mania/Objects/Drawables/Pieces/GlowPiece.cs b/osu.Game.Rulesets.Mania/Objects/Drawables/Pieces/GlowPiece.cs deleted file mode 100644 index 1d25a0c966..0000000000 --- a/osu.Game.Rulesets.Mania/Objects/Drawables/Pieces/GlowPiece.cs +++ /dev/null @@ -1,68 +0,0 @@ -// 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.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 osuTK.Graphics; - -namespace osu.Game.Rulesets.Mania.Objects.Drawables.Pieces -{ - public class GlowPiece : CompositeDrawable, IHasAccentColour - { - private const float glow_alpha = 0.7f; - private const float glow_radius = 5; - - public GlowPiece() - { - RelativeSizeAxes = Axes.Both; - Masking = true; - - InternalChild = new Box - { - RelativeSizeAxes = Axes.Both, - Alpha = 0, - AlwaysPresent = true - }; - } - - protected override void LoadComplete() - { - base.LoadComplete(); - updateGlow(); - } - - private Color4 accentColour; - - public Color4 AccentColour - { - get => accentColour; - set - { - if (accentColour == value) - return; - - accentColour = value; - - updateGlow(); - } - } - - private void updateGlow() - { - if (!IsLoaded) - return; - - EdgeEffect = new EdgeEffectParameters - { - Type = EdgeEffectType.Glow, - Colour = AccentColour.Opacity(glow_alpha), - Radius = glow_radius, - Hollow = true - }; - } - } -} diff --git a/osu.Game.Rulesets.Mania/Objects/Drawables/Pieces/LaneGlowPiece.cs b/osu.Game.Rulesets.Mania/Objects/Drawables/Pieces/LaneGlowPiece.cs deleted file mode 100644 index 48c7ea7b7f..0000000000 --- a/osu.Game.Rulesets.Mania/Objects/Drawables/Pieces/LaneGlowPiece.cs +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. -// See the LICENCE file in the repository root for full licence text. - -using osuTK.Graphics; -using osu.Framework.Extensions.Color4Extensions; -using osu.Framework.Graphics; -using osu.Framework.Graphics.Colour; -using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Shapes; -using osu.Game.Graphics; - -namespace osu.Game.Rulesets.Mania.Objects.Drawables.Pieces -{ - public class LaneGlowPiece : CompositeDrawable, IHasAccentColour - { - private const float total_height = 100; - private const float glow_height = 50; - private const float glow_alpha = 0.4f; - private const float edge_alpha = 0.3f; - - public LaneGlowPiece() - { - BypassAutoSizeAxes = Axes.Both; - RelativeSizeAxes = Axes.X; - Height = total_height; - - InternalChildren = new[] - { - new Container - { - Name = "Left edge", - RelativeSizeAxes = Axes.Y, - Width = 1, - Children = createGradient(edge_alpha) - }, - new Container - { - Name = "Right edge", - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - RelativeSizeAxes = Axes.Y, - Width = 1, - Children = createGradient(edge_alpha) - }, - new Container - { - Name = "Glow", - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - RelativeSizeAxes = Axes.X, - Height = glow_height, - Children = createGradient(glow_alpha) - } - }; - } - - private Drawable[] createGradient(float alpha) => new Drawable[] - { - new Box - { - Name = "Top", - RelativeSizeAxes = Axes.Both, - Height = 0.5f, - Blending = BlendingParameters.Additive, - Colour = ColourInfo.GradientVertical(Color4.Transparent, Color4.White.Opacity(alpha)) - }, - new Box - { - Name = "Bottom", - Anchor = Anchor.BottomLeft, - Origin = Anchor.BottomLeft, - RelativeSizeAxes = Axes.Both, - Height = 0.5f, - Blending = BlendingParameters.Additive, - Colour = ColourInfo.GradientVertical(Color4.White.Opacity(alpha), Color4.Transparent) - } - }; - - public Color4 AccentColour - { - get => Colour; - set => Colour = value; - } - } -} From 46271ccbc89e2a55059cda1070d1599321427bca Mon Sep 17 00:00:00 2001 From: Sebastian Krajewski Date: Sat, 4 Jan 2020 13:01:42 +0100 Subject: [PATCH 0709/1829] Add slider reverse arrow pulse settings --- .../Configuration/OsuRulesetConfigManager.cs | 5 +- .../Objects/Drawables/DrawableRepeatPoint.cs | 43 +++++++------- .../Drawables/Pieces/ReverseArrowPiece.cs | 58 +++++++++++++++++++ .../UI/OsuSettingsSubsection.cs | 5 ++ .../UI/ReverseArrowPulseMode.cs | 18 ++++++ 5 files changed, 108 insertions(+), 21 deletions(-) create mode 100644 osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs create mode 100644 osu.Game.Rulesets.Osu/UI/ReverseArrowPulseMode.cs diff --git a/osu.Game.Rulesets.Osu/Configuration/OsuRulesetConfigManager.cs b/osu.Game.Rulesets.Osu/Configuration/OsuRulesetConfigManager.cs index f76635a932..77b0c728b0 100644 --- a/osu.Game.Rulesets.Osu/Configuration/OsuRulesetConfigManager.cs +++ b/osu.Game.Rulesets.Osu/Configuration/OsuRulesetConfigManager.cs @@ -3,6 +3,7 @@ using osu.Game.Configuration; using osu.Game.Rulesets.Configuration; +using osu.Game.Rulesets.Osu.UI; namespace osu.Game.Rulesets.Osu.Configuration { @@ -19,6 +20,7 @@ namespace osu.Game.Rulesets.Osu.Configuration Set(OsuRulesetSetting.SnakingInSliders, true); Set(OsuRulesetSetting.SnakingOutSliders, true); Set(OsuRulesetSetting.ShowCursorTrail, true); + Set(OsuRulesetSetting.ReverseArrowPulse, ReverseArrowPulseMode.Synced); } } @@ -26,6 +28,7 @@ namespace osu.Game.Rulesets.Osu.Configuration { SnakingInSliders, SnakingOutSliders, - ShowCursorTrail + ShowCursorTrail, + ReverseArrowPulse, } } diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs index e1cacfaaff..1f3c5d54bc 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; @@ -6,13 +6,13 @@ using System.Collections.Generic; using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; -using osu.Framework.Graphics.Sprites; using osu.Framework.MathUtils; using osu.Game.Rulesets.Objects.Drawables; +using osu.Game.Rulesets.Osu.Configuration; using osu.Game.Rulesets.Osu.Objects.Drawables.Pieces; +using osu.Game.Rulesets.Osu.UI; using osu.Game.Rulesets.Scoring; using osuTK; -using osu.Game.Skinning; namespace osu.Game.Rulesets.Osu.Objects.Drawables { @@ -21,9 +21,14 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables private readonly RepeatPoint repeatPoint; private readonly DrawableSlider drawableSlider; + public readonly Bindable PulseMode = new Bindable(ReverseArrowPulseMode.Synced); + private double animDuration; - private readonly SkinnableDrawable scaleContainer; + private readonly Drawable scaleContainer; + + [Resolved(CanBeNull = true)] + private OsuRulesetConfigManager config { get; set; } public DrawableRepeatPoint(RepeatPoint repeatPoint, DrawableSlider drawableSlider) : base(repeatPoint) @@ -36,16 +41,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables Blending = BlendingParameters.Additive; Origin = Anchor.Centre; - InternalChild = scaleContainer = new SkinnableDrawable(new OsuSkinComponent(OsuSkinComponents.ReverseArrow), _ => new SpriteIcon - { - RelativeSizeAxes = Axes.Both, - Icon = FontAwesome.Solid.ChevronRight, - Size = new Vector2(0.35f) - }, confineMode: ConfineMode.NoScaling) - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - }; + InternalChild = scaleContainer = new ReverseArrowPiece(); } private readonly IBindable scaleBindable = new Bindable(); @@ -55,6 +51,8 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables { scaleBindable.BindValueChanged(scale => scaleContainer.Scale = new Vector2(scale.NewValue), true); scaleBindable.BindTo(HitObject.ScaleBindable); + + config?.BindWith(OsuRulesetSetting.ReverseArrowPulse, PulseMode); } protected override void CheckForResult(bool userTriggered, double timeOffset) @@ -69,14 +67,19 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables this.FadeIn(animDuration); - double fadeInStart = repeatPoint.StartTime - 2 * repeatPoint.SpanDuration; + if (PulseMode.Value == ReverseArrowPulseMode.Stable) + { + double fadeInStart = repeatPoint.StartTime - 2 * repeatPoint.SpanDuration; - // We want first repeat arrow to start pulsing during snake in - if (repeatPoint.RepeatIndex == 0) - fadeInStart -= repeatPoint.TimePreempt; + // We want first repeat arrow to start pulsing during snake in + if (repeatPoint.RepeatIndex == 0) + fadeInStart -= repeatPoint.TimePreempt; - for (double pulseStartTime = fadeInStart; pulseStartTime < repeatPoint.StartTime; pulseStartTime += 300) - this.Delay(pulseStartTime - LifetimeStart).ScaleTo(1.3f).ScaleTo(1f, Math.Min(300, repeatPoint.StartTime - pulseStartTime), Easing.Out); + for (double pulseStartTime = fadeInStart; pulseStartTime < repeatPoint.StartTime; pulseStartTime += 300) + this.Delay(pulseStartTime - LifetimeStart).ScaleTo(1.3f).ScaleTo(1f, Math.Min(300, repeatPoint.StartTime - pulseStartTime), Easing.Out); + } + else if (PulseMode.Value == ReverseArrowPulseMode.Off) + this.ScaleTo(0.5f).ScaleTo(1f, animDuration * 2, Easing.OutElasticHalf); } protected override void UpdateStateTransforms(ArmedState state) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs new file mode 100644 index 0000000000..1ec175274e --- /dev/null +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs @@ -0,0 +1,58 @@ +// 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.Audio.Track; +using osu.Framework.Bindables; +using osu.Framework.Graphics; +using osuTK; +using osu.Framework.Graphics.Sprites; +using osu.Game.Beatmaps.ControlPoints; +using osu.Game.Graphics.Containers; +using osu.Game.Rulesets.Osu.Configuration; +using osu.Game.Rulesets.Osu.UI; +using osu.Game.Skinning; + +namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces +{ + public class ReverseArrowPiece : BeatSyncedContainer + { + public readonly Bindable PulseMode = new Bindable(ReverseArrowPulseMode.Synced); + + [Resolved(CanBeNull = true)] + private OsuRulesetConfigManager config { get; set; } + + public ReverseArrowPiece() + { + Anchor = Anchor.Centre; + Origin = Anchor.Centre; + + Blending = BlendingParameters.Additive; + + Size = new Vector2(OsuHitObject.OBJECT_RADIUS * 2); + + InternalChild = new SkinnableDrawable(new OsuSkinComponent(OsuSkinComponents.ReverseArrow), _ => new SpriteIcon + { + RelativeSizeAxes = Axes.Both, + Icon = FontAwesome.Solid.ChevronRight, + Size = new Vector2(0.35f) + }, confineMode: ConfineMode.NoScaling) + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + }; + } + + protected override void OnNewBeat(int beatIndex, TimingControlPoint timingPoint, EffectControlPoint effectPoint, TrackAmplitudes amplitudes) + { + if (PulseMode.Value == ReverseArrowPulseMode.Synced) + InternalChild.ScaleTo(1.3f).ScaleTo(1f, timingPoint.BeatLength, Easing.Out); + } + + [BackgroundDependencyLoader] + private void load() + { + config?.BindWith(OsuRulesetSetting.ReverseArrowPulse, PulseMode); + } + } +} diff --git a/osu.Game.Rulesets.Osu/UI/OsuSettingsSubsection.cs b/osu.Game.Rulesets.Osu/UI/OsuSettingsSubsection.cs index 88adf72551..afde693316 100644 --- a/osu.Game.Rulesets.Osu/UI/OsuSettingsSubsection.cs +++ b/osu.Game.Rulesets.Osu/UI/OsuSettingsSubsection.cs @@ -39,6 +39,11 @@ namespace osu.Game.Rulesets.Osu.UI LabelText = "Cursor trail", Bindable = config.GetBindable(OsuRulesetSetting.ShowCursorTrail) }, + new SettingsEnumDropdown + { + LabelText = "Slider reverse arrow pulse", + Bindable = config.GetBindable(OsuRulesetSetting.ReverseArrowPulse) + }, }; } } diff --git a/osu.Game.Rulesets.Osu/UI/ReverseArrowPulseMode.cs b/osu.Game.Rulesets.Osu/UI/ReverseArrowPulseMode.cs new file mode 100644 index 0000000000..d3261e71db --- /dev/null +++ b/osu.Game.Rulesets.Osu/UI/ReverseArrowPulseMode.cs @@ -0,0 +1,18 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System.ComponentModel; + +namespace osu.Game.Rulesets.Osu.UI +{ + public enum ReverseArrowPulseMode + { + Off, + + [Description("Match osu!stable")] + Stable, + + [Description("Sync to beatmap")] + Synced + } +} From 319465899824dfde4a6ef3150c86651c3afc98f9 Mon Sep 17 00:00:00 2001 From: Sebastian Krajewski Date: Sat, 4 Jan 2020 13:12:37 +0100 Subject: [PATCH 0710/1829] Fix repeat point pulsing when it is in fade out state --- .../Objects/Drawables/DrawableRepeatPoint.cs | 2 +- .../Objects/Drawables/Pieces/ReverseArrowPiece.cs | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs index 1f3c5d54bc..6bf2f95f41 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs @@ -41,7 +41,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables Blending = BlendingParameters.Additive; Origin = Anchor.Centre; - InternalChild = scaleContainer = new ReverseArrowPiece(); + InternalChild = scaleContainer = new ReverseArrowPiece(repeatPoint); } private readonly IBindable scaleBindable = new Bindable(); diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs index 1ec175274e..114cf9d27e 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.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 osu.Framework.Allocation; using osu.Framework.Audio.Track; using osu.Framework.Bindables; @@ -22,8 +23,12 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces [Resolved(CanBeNull = true)] private OsuRulesetConfigManager config { get; set; } - public ReverseArrowPiece() + private readonly RepeatPoint repeatPoint; + + public ReverseArrowPiece(RepeatPoint repeatPoint) { + this.repeatPoint = repeatPoint; + Anchor = Anchor.Centre; Origin = Anchor.Centre; @@ -45,8 +50,8 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces protected override void OnNewBeat(int beatIndex, TimingControlPoint timingPoint, EffectControlPoint effectPoint, TrackAmplitudes amplitudes) { - if (PulseMode.Value == ReverseArrowPulseMode.Synced) - InternalChild.ScaleTo(1.3f).ScaleTo(1f, timingPoint.BeatLength, Easing.Out); + if (PulseMode.Value == ReverseArrowPulseMode.Synced && Clock.CurrentTime < repeatPoint.StartTime) + InternalChild.ScaleTo(1.3f).ScaleTo(1f, Math.Min(timingPoint.BeatLength, repeatPoint.StartTime - Clock.CurrentTime), Easing.Out); } [BackgroundDependencyLoader] From 9fb29cc7a7ffc7a7db1a42e59d871f3799c9b2e9 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 4 Jan 2020 18:45:34 +0300 Subject: [PATCH 0711/1829] Move medal loading to LoadComplete --- osu.Game/Overlays/MedalOverlay.cs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/osu.Game/Overlays/MedalOverlay.cs b/osu.Game/Overlays/MedalOverlay.cs index 5da573e81a..f7070bbaec 100644 --- a/osu.Game/Overlays/MedalOverlay.cs +++ b/osu.Game/Overlays/MedalOverlay.cs @@ -154,19 +154,22 @@ namespace osu.Game.Overlays Colour = colours.Blue.Opacity(0.5f), Radius = 50, }; + } + + protected override void LoadComplete() + { + base.LoadComplete(); LoadComponentAsync(drawableMedal = new DrawableMedal(medal) { Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, RelativeSizeAxes = Axes.Both, - }, disc.Add); - } - - protected override void LoadComplete() - { - base.LoadComplete(); - Show(); + }, loaded => + { + disc.Add(loaded); + Show(); + }); } protected override void Update() From 3bd3ebad49466e55ade2c3a682a71d27c9e77dda Mon Sep 17 00:00:00 2001 From: Lucas A Date: Sat, 4 Jan 2020 18:26:31 +0100 Subject: [PATCH 0712/1829] Move placeholders to a dedicated namespace --- osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapLeaderboard.cs | 1 + osu.Game/Online/Leaderboards/Leaderboard.cs | 1 + osu.Game/Online/Leaderboards/RetrievalFailurePlaceholder.cs | 1 + .../Online/{Leaderboards => Placeholders}/MessagePlaceholder.cs | 2 +- osu.Game/Online/{Leaderboards => Placeholders}/Placeholder.cs | 2 +- 5 files changed, 5 insertions(+), 2 deletions(-) rename osu.Game/Online/{Leaderboards => Placeholders}/MessagePlaceholder.cs (95%) rename osu.Game/Online/{Leaderboards => Placeholders}/Placeholder.cs (95%) diff --git a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapLeaderboard.cs b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapLeaderboard.cs index 57e297bcd5..2b52deb605 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapLeaderboard.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapLeaderboard.cs @@ -7,6 +7,7 @@ using osu.Framework.Graphics; using osu.Game.Beatmaps; using osu.Game.Online.API.Requests.Responses; using osu.Game.Online.Leaderboards; +using osu.Game.Online.Placeholders; using osu.Game.Rulesets.Osu.Mods; using osu.Game.Scoring; using osu.Game.Screens.Select.Leaderboards; diff --git a/osu.Game/Online/Leaderboards/Leaderboard.cs b/osu.Game/Online/Leaderboards/Leaderboard.cs index 9c48ebd09b..60c79f6d8f 100644 --- a/osu.Game/Online/Leaderboards/Leaderboard.cs +++ b/osu.Game/Online/Leaderboards/Leaderboard.cs @@ -14,6 +14,7 @@ using osu.Framework.Threading; using osu.Game.Graphics.Containers; using osu.Game.Graphics.UserInterface; using osu.Game.Online.API; +using osu.Game.Online.Placeholders; using osuTK; using osuTK.Graphics; diff --git a/osu.Game/Online/Leaderboards/RetrievalFailurePlaceholder.cs b/osu.Game/Online/Leaderboards/RetrievalFailurePlaceholder.cs index 801f3f8ff0..15d7dabe65 100644 --- a/osu.Game/Online/Leaderboards/RetrievalFailurePlaceholder.cs +++ b/osu.Game/Online/Leaderboards/RetrievalFailurePlaceholder.cs @@ -6,6 +6,7 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; using osu.Framework.Input.Events; using osu.Game.Graphics.Containers; +using osu.Game.Online.Placeholders; using osuTK; namespace osu.Game.Online.Leaderboards diff --git a/osu.Game/Online/Leaderboards/MessagePlaceholder.cs b/osu.Game/Online/Placeholders/MessagePlaceholder.cs similarity index 95% rename from osu.Game/Online/Leaderboards/MessagePlaceholder.cs rename to osu.Game/Online/Placeholders/MessagePlaceholder.cs index ef425dacd8..7342765ca4 100644 --- a/osu.Game/Online/Leaderboards/MessagePlaceholder.cs +++ b/osu.Game/Online/Placeholders/MessagePlaceholder.cs @@ -4,7 +4,7 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; -namespace osu.Game.Online.Leaderboards +namespace osu.Game.Online.Placeholders { public class MessagePlaceholder : Placeholder { diff --git a/osu.Game/Online/Leaderboards/Placeholder.cs b/osu.Game/Online/Placeholders/Placeholder.cs similarity index 95% rename from osu.Game/Online/Leaderboards/Placeholder.cs rename to osu.Game/Online/Placeholders/Placeholder.cs index d38110a9d0..f58282bbd9 100644 --- a/osu.Game/Online/Leaderboards/Placeholder.cs +++ b/osu.Game/Online/Placeholders/Placeholder.cs @@ -5,7 +5,7 @@ using System; using osu.Framework.Graphics; using osu.Game.Graphics.Containers; -namespace osu.Game.Online.Leaderboards +namespace osu.Game.Online.Placeholders { public abstract class Placeholder : OsuTextFlowContainer, IEquatable { From 474b8fc8fd441a6cf3f77cf35b8630bcb0b420bb Mon Sep 17 00:00:00 2001 From: Lucas A Date: Sat, 4 Jan 2020 19:25:49 +0100 Subject: [PATCH 0713/1829] Add LoginPlaceholder --- .../Online/Placeholders/LoginPlaceholder.cs | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 osu.Game/Online/Placeholders/LoginPlaceholder.cs diff --git a/osu.Game/Online/Placeholders/LoginPlaceholder.cs b/osu.Game/Online/Placeholders/LoginPlaceholder.cs new file mode 100644 index 0000000000..f7450b8209 --- /dev/null +++ b/osu.Game/Online/Placeholders/LoginPlaceholder.cs @@ -0,0 +1,44 @@ +using osu.Framework.Allocation; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Sprites; +using osu.Framework.Input.Events; +using osu.Game.Overlays; + +namespace osu.Game.Online.Placeholders +{ + public sealed class LoginPlaceholder : Placeholder + { + [Resolved] + private LoginOverlay login { get; set; } + + public LoginPlaceholder(string action) + { + AddIcon(FontAwesome.Solid.UserLock, cp => + { + cp.Font = cp.Font.With(size: TEXT_SIZE); + cp.Padding = new MarginPadding { Right = 10 }; + }); + + AddText(@"Please sign in to " + action); + } + + protected override bool OnMouseDown(MouseDownEvent e) + { + this.ScaleTo(0.8f, 4000, Easing.OutQuint); + return base.OnMouseDown(e); + } + + protected override bool OnMouseUp(MouseUpEvent e) + { + this.ScaleTo(1, 1000, Easing.OutElastic); + return base.OnMouseUp(e); + } + + protected override bool OnClick(ClickEvent e) + { + login?.Show(); + return base.OnClick(e); + } + + } +} From 5fd5665467e4b7503d4dd52e7fed4e821689f2a8 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Sat, 4 Jan 2020 19:59:25 +0100 Subject: [PATCH 0714/1829] Use implementation on song select leaderboards. --- osu.Game/Online/Leaderboards/Leaderboard.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Online/Leaderboards/Leaderboard.cs b/osu.Game/Online/Leaderboards/Leaderboard.cs index 60c79f6d8f..06a36af618 100644 --- a/osu.Game/Online/Leaderboards/Leaderboard.cs +++ b/osu.Game/Online/Leaderboards/Leaderboard.cs @@ -151,7 +151,7 @@ namespace osu.Game.Online.Leaderboards break; case PlaceholderState.NotLoggedIn: - replacePlaceholder(new MessagePlaceholder(@"Please sign in to view online leaderboards!")); + replacePlaceholder(new LoginPlaceholder(@"view online leaderboards!")); break; case PlaceholderState.NotSupporter: From 3d747835dc7ef94c825ad8154c99ffacdc10b234 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Sat, 4 Jan 2020 21:09:40 +0100 Subject: [PATCH 0715/1829] Fix CI issues --- osu.Game/Online/Placeholders/LoginPlaceholder.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/osu.Game/Online/Placeholders/LoginPlaceholder.cs b/osu.Game/Online/Placeholders/LoginPlaceholder.cs index f7450b8209..dc753c6ab7 100644 --- a/osu.Game/Online/Placeholders/LoginPlaceholder.cs +++ b/osu.Game/Online/Placeholders/LoginPlaceholder.cs @@ -1,4 +1,7 @@ -using osu.Framework.Allocation; +// 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.Graphics; using osu.Framework.Graphics.Sprites; using osu.Framework.Input.Events; @@ -39,6 +42,5 @@ namespace osu.Game.Online.Placeholders login?.Show(); return base.OnClick(e); } - } } From 21e6351c5354467ad641f5fee2971438b50b2ad6 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Sun, 5 Jan 2020 14:33:44 +0100 Subject: [PATCH 0716/1829] Allow DI for LoginOverlay to resolve to null in non-graphical environments (fix tests) --- osu.Game/Online/Placeholders/LoginPlaceholder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Online/Placeholders/LoginPlaceholder.cs b/osu.Game/Online/Placeholders/LoginPlaceholder.cs index dc753c6ab7..f6e4131930 100644 --- a/osu.Game/Online/Placeholders/LoginPlaceholder.cs +++ b/osu.Game/Online/Placeholders/LoginPlaceholder.cs @@ -11,7 +11,7 @@ namespace osu.Game.Online.Placeholders { public sealed class LoginPlaceholder : Placeholder { - [Resolved] + [Resolved(CanBeNull = true)] private LoginOverlay login { get; set; } public LoginPlaceholder(string action) From f70f25098b2b64999708d1771dce0189e4a4f029 Mon Sep 17 00:00:00 2001 From: Sebastian Krajewski Date: Mon, 6 Jan 2020 00:32:13 +0100 Subject: [PATCH 0717/1829] Change visible triangles colour when dark or light colour is changed --- osu.Game/Graphics/Backgrounds/Triangles.cs | 46 ++++++++++++++++++++-- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/osu.Game/Graphics/Backgrounds/Triangles.cs b/osu.Game/Graphics/Backgrounds/Triangles.cs index 6d88808150..cbb50f7ddb 100644 --- a/osu.Game/Graphics/Backgrounds/Triangles.cs +++ b/osu.Game/Graphics/Backgrounds/Triangles.cs @@ -29,8 +29,29 @@ namespace osu.Game.Graphics.Backgrounds /// private const float edge_smoothness = 1; - public Color4 ColourLight = Color4.White; - public Color4 ColourDark = Color4.Black; + private Color4 colourLight = Color4.White; + + public Color4 ColourLight + { + get => colourLight; + set + { + colourLight = value; + updateColours(); + } + } + + private Color4 colourDark = Color4.Black; + + public Color4 ColourDark + { + get => colourDark; + set + { + colourDark = value; + updateColours(); + } + } /// /// Whether we want to expire triangles as they exit our draw area completely. @@ -151,7 +172,8 @@ namespace osu.Game.Graphics.Backgrounds TriangleParticle particle = CreateTriangle(); particle.Position = new Vector2(RNG.NextSingle(), randomY ? RNG.NextSingle() : 1); - particle.Colour = CreateTriangleShade(); + particle.ColourShade = RNG.NextSingle(); + particle.Colour = CreateTriangleShade(particle.ColourShade); return particle; } @@ -177,7 +199,17 @@ namespace osu.Game.Graphics.Backgrounds /// Creates a shade of colour for the triangles. /// /// The colour. - protected virtual Color4 CreateTriangleShade() => Interpolation.ValueAt(RNG.NextSingle(), ColourDark, ColourLight, 0, 1); + protected virtual Color4 CreateTriangleShade(float shade) => Interpolation.ValueAt(shade, colourDark, colourLight, 0, 1); + + private void updateColours() + { + for (int i = 0; i < parts.Count; i++) + { + TriangleParticle newParticle = parts[i]; + newParticle.Colour = CreateTriangleShade(newParticle.ColourShade); + parts[i] = newParticle; + } + } protected override DrawNode CreateDrawNode() => new TrianglesDrawNode(this); @@ -264,6 +296,12 @@ namespace osu.Game.Graphics.Backgrounds /// public Vector2 Position; + /// + /// The colour shade of the triangle. + /// This is needed for colour recalculation of visible triangles when or is changed. + /// + public float ColourShade; + /// /// The colour of the triangle. /// From d1f3cb3dbdc928317d21242374d1a6d0ec2f1152 Mon Sep 17 00:00:00 2001 From: Sebastian Krajewski Date: Mon, 6 Jan 2020 01:53:29 +0100 Subject: [PATCH 0718/1829] Premature checks to avoid unnecessary updates --- osu.Game/Graphics/Backgrounds/Triangles.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/osu.Game/Graphics/Backgrounds/Triangles.cs b/osu.Game/Graphics/Backgrounds/Triangles.cs index cbb50f7ddb..af492bacc9 100644 --- a/osu.Game/Graphics/Backgrounds/Triangles.cs +++ b/osu.Game/Graphics/Backgrounds/Triangles.cs @@ -36,6 +36,8 @@ namespace osu.Game.Graphics.Backgrounds get => colourLight; set { + if (colourLight == value) return; + colourLight = value; updateColours(); } @@ -48,6 +50,8 @@ namespace osu.Game.Graphics.Backgrounds get => colourDark; set { + if (colourDark == value) return; + colourDark = value; updateColours(); } From d188d33f182a55d907fd6bcb79d8ad6f532b235a Mon Sep 17 00:00:00 2001 From: Joehu Date: Sun, 5 Jan 2020 18:59:06 -0800 Subject: [PATCH 0719/1829] Fix osu!direct global action not being bound to a key --- osu.Game/Input/Bindings/GlobalActionContainer.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game/Input/Bindings/GlobalActionContainer.cs b/osu.Game/Input/Bindings/GlobalActionContainer.cs index bf758e21d9..e37567c72c 100644 --- a/osu.Game/Input/Bindings/GlobalActionContainer.cs +++ b/osu.Game/Input/Bindings/GlobalActionContainer.cs @@ -32,6 +32,7 @@ namespace osu.Game.Input.Bindings new KeyBinding(new[] { InputKey.Control, InputKey.Alt, InputKey.R }, GlobalAction.ResetInputSettings), new KeyBinding(new[] { InputKey.Control, InputKey.T }, GlobalAction.ToggleToolbar), new KeyBinding(new[] { InputKey.Control, InputKey.O }, GlobalAction.ToggleSettings), + new KeyBinding(new[] { InputKey.Control, InputKey.D }, GlobalAction.ToggleDirect), new KeyBinding(InputKey.Escape, GlobalAction.Back), new KeyBinding(InputKey.ExtraMouseButton1, GlobalAction.Back), From 49c252ec784eb21d7d8ba000153eba603a864ac5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Mon, 6 Jan 2020 07:33:59 +0100 Subject: [PATCH 0720/1829] Mark storyboard sample retrieval test headless --- osu.Game.Tests/Gameplay/TestSceneStoryboardSamples.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game.Tests/Gameplay/TestSceneStoryboardSamples.cs b/osu.Game.Tests/Gameplay/TestSceneStoryboardSamples.cs index 5deb136c85..84506739ab 100644 --- a/osu.Game.Tests/Gameplay/TestSceneStoryboardSamples.cs +++ b/osu.Game.Tests/Gameplay/TestSceneStoryboardSamples.cs @@ -8,6 +8,7 @@ using NUnit.Framework; using osu.Framework.Audio; using osu.Framework.Audio.Sample; using osu.Framework.IO.Stores; +using osu.Framework.Testing; using osu.Game.Audio; using osu.Game.Skinning; using osu.Game.Tests.Resources; @@ -15,6 +16,7 @@ using osu.Game.Tests.Visual; namespace osu.Game.Tests.Gameplay { + [HeadlessTest] public class TestSceneStoryboardSamples : OsuTestScene { [Test] From f91637e7b63e3157ed46df3d6ba4b8a91fbc56b9 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2020 07:41:37 +0000 Subject: [PATCH 0721/1829] Bump NUnit3TestAdapter from 3.15.1 to 3.16.0 Bumps [NUnit3TestAdapter](https://github.com/nunit/nunit3-vs-adapter) from 3.15.1 to 3.16.0. - [Release notes](https://github.com/nunit/nunit3-vs-adapter/releases) - [Commits](https://github.com/nunit/nunit3-vs-adapter/compare/V3.15.1...V3.16) Signed-off-by: dependabot-preview[bot] --- .../osu.Game.Rulesets.Catch.Tests.csproj | 2 +- .../osu.Game.Rulesets.Mania.Tests.csproj | 2 +- osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj | 2 +- .../osu.Game.Rulesets.Taiko.Tests.csproj | 2 +- osu.Game.Tests/osu.Game.Tests.csproj | 2 +- osu.Game.Tournament.Tests/osu.Game.Tournament.Tests.csproj | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/osu.Game.Rulesets.Catch.Tests/osu.Game.Rulesets.Catch.Tests.csproj b/osu.Game.Rulesets.Catch.Tests/osu.Game.Rulesets.Catch.Tests.csproj index 9559d13328..0b2862e5bb 100644 --- a/osu.Game.Rulesets.Catch.Tests/osu.Game.Rulesets.Catch.Tests.csproj +++ b/osu.Game.Rulesets.Catch.Tests/osu.Game.Rulesets.Catch.Tests.csproj @@ -4,7 +4,7 @@ - + diff --git a/osu.Game.Rulesets.Mania.Tests/osu.Game.Rulesets.Mania.Tests.csproj b/osu.Game.Rulesets.Mania.Tests/osu.Game.Rulesets.Mania.Tests.csproj index dea6e6c0fb..9d362e5819 100644 --- a/osu.Game.Rulesets.Mania.Tests/osu.Game.Rulesets.Mania.Tests.csproj +++ b/osu.Game.Rulesets.Mania.Tests/osu.Game.Rulesets.Mania.Tests.csproj @@ -4,7 +4,7 @@ - + diff --git a/osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj b/osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj index 9d4e016eae..1d8c4708c1 100644 --- a/osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj +++ b/osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj @@ -4,7 +4,7 @@ - + diff --git a/osu.Game.Rulesets.Taiko.Tests/osu.Game.Rulesets.Taiko.Tests.csproj b/osu.Game.Rulesets.Taiko.Tests/osu.Game.Rulesets.Taiko.Tests.csproj index d728d65bfd..da89b37fbf 100644 --- a/osu.Game.Rulesets.Taiko.Tests/osu.Game.Rulesets.Taiko.Tests.csproj +++ b/osu.Game.Rulesets.Taiko.Tests/osu.Game.Rulesets.Taiko.Tests.csproj @@ -4,7 +4,7 @@ - + diff --git a/osu.Game.Tests/osu.Game.Tests.csproj b/osu.Game.Tests/osu.Game.Tests.csproj index 6c799e5e90..3f8a548fd5 100644 --- a/osu.Game.Tests/osu.Game.Tests.csproj +++ b/osu.Game.Tests/osu.Game.Tests.csproj @@ -5,7 +5,7 @@ - + diff --git a/osu.Game.Tournament.Tests/osu.Game.Tournament.Tests.csproj b/osu.Game.Tournament.Tests/osu.Game.Tournament.Tests.csproj index 7ecfd6ef70..75b88be1ab 100644 --- a/osu.Game.Tournament.Tests/osu.Game.Tournament.Tests.csproj +++ b/osu.Game.Tournament.Tests/osu.Game.Tournament.Tests.csproj @@ -7,7 +7,7 @@ - + WinExe From ee15967c4a7faeae023fc2a0fe553f2bc64e641f Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 6 Jan 2020 17:15:59 +0900 Subject: [PATCH 0722/1829] Rewrite test scene to be automated --- .../TestSceneDeleteLocalScore.cs | 255 +++++++++--------- 1 file changed, 120 insertions(+), 135 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs index de10eaccca..e896b0fab6 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs @@ -3,20 +3,26 @@ using System; using System.Collections.Generic; -using System.Diagnostics; using System.Linq; +using NUnit.Framework; using osu.Framework.Graphics; using osu.Framework.Allocation; -using osu.Framework.Graphics.Sprites; +using osu.Framework.Graphics.Cursor; +using osu.Framework.MathUtils; +using osu.Framework.Platform; +using osu.Framework.Testing; using osu.Game.Beatmaps; -using osu.Game.Online.API; +using osu.Game.Graphics.Cursor; +using osu.Game.Graphics.UserInterface; using osu.Game.Online.Leaderboards; using osu.Game.Overlays; -using osu.Game.Overlays.Dialog; +using osu.Game.Rulesets; using osu.Game.Scoring; using osu.Game.Screens.Select.Leaderboards; +using osu.Game.Tests.Resources; using osu.Game.Users; using osuTK; +using osuTK.Input; namespace osu.Game.Tests.Visual.UserInterface { @@ -32,154 +38,133 @@ namespace osu.Game.Tests.Visual.UserInterface typeof(LeaderboardScore), }; - private readonly FailableLeaderboard leaderboard; + private readonly ContextMenuContainer contextMenuContainer; + private readonly BeatmapLeaderboard leaderboard; + + private RulesetStore rulesetStore; + private BeatmapManager beatmapManager; + private ScoreManager scoreManager; + + private readonly List scores = new List(); + private BeatmapInfo beatmap; [Cached] private readonly DialogOverlay dialogOverlay; public TestSceneDeleteLocalScore() { - Add(dialogOverlay = new DialogOverlay + Children = new Drawable[] { - Depth = -1 - }); - - Add(leaderboard = new FailableLeaderboard - { - Origin = Anchor.Centre, - Anchor = Anchor.Centre, - Size = new Vector2(550f, 450f), - Scope = BeatmapLeaderboardScope.Local, - Beatmap = new BeatmapInfo + contextMenuContainer = new OsuContextMenuContainer { - ID = 1, - Metadata = new BeatmapMetadata + RelativeSizeAxes = Axes.Both, + Child = leaderboard = new BeatmapLeaderboard { - ID = 1, - Title = "TestSong", - Artist = "TestArtist", - Author = new User + Origin = Anchor.Centre, + Anchor = Anchor.Centre, + Size = new Vector2(550f, 450f), + Scope = BeatmapLeaderboardScope.Local, + Beatmap = new BeatmapInfo { - Username = "TestAuthor" + ID = 1, + Metadata = new BeatmapMetadata + { + ID = 1, + Title = "TestSong", + Artist = "TestArtist", + Author = new User + { + Username = "TestAuthor" + }, + }, + Version = "Insane" }, - }, - Version = "Insane" + } }, + dialogOverlay = new DialogOverlay() + }; + } + + protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent) + { + var dependencies = new DependencyContainer(base.CreateChildDependencies(parent)); + + dependencies.Cache(rulesetStore = new RulesetStore(ContextFactory)); + dependencies.Cache(beatmapManager = new BeatmapManager(LocalStorage, ContextFactory, rulesetStore, null, Audio, dependencies.Get(), Beatmap.Default)); + dependencies.Cache(scoreManager = new ScoreManager(rulesetStore, () => beatmapManager, LocalStorage, null, ContextFactory)); + + beatmap = beatmapManager.Import(TestResources.GetTestBeatmapForImport()).Result.Beatmaps[0]; + + for (int i = 0; i < 50; i++) + { + var score = new ScoreInfo + { + OnlineScoreID = i, + Beatmap = beatmap, + BeatmapInfoID = beatmap.ID, + Accuracy = RNG.NextDouble(), + TotalScore = RNG.Next(1, 1000000), + MaxCombo = RNG.Next(1, 1000), + Rank = ScoreRank.XH, + User = new User { Username = "TestUser" }, + }; + + scores.Add(scoreManager.Import(score).Result); + } + + scores.Sort(Comparer.Create((s1, s2) => s2.TotalScore.CompareTo(s1.TotalScore))); + + return dependencies; + } + + [SetUp] + public void Setup() => Schedule(() => + { + // Due to soft deletions, we can re-use deleted scores between test runs + scoreManager.Undelete(scoreManager.QueryScores(s => s.DeletePending).ToList()); + + leaderboard.Beatmap = beatmap; + leaderboard.RefreshScores(); + }); + + [Test] + public void TestDeleteViaRightClick() + { + // Ensure the leaderboard items have finished showing up + AddStep("finish transforms", () => leaderboard.FinishTransforms(true)); + + AddStep("open menu for top score", () => + { + InputManager.MoveMouseTo(leaderboard.ChildrenOfType().First()); + InputManager.Click(MouseButton.Right); }); - AddStep("Insert Local Scores", reset); + // Ensure the context menu has finished showing + AddStep("finish transforms", () => contextMenuContainer.FinishTransforms(true)); + + AddStep("click delete option", () => + { + InputManager.MoveMouseTo(contextMenuContainer.ChildrenOfType().First(i => i.Item.Text.Value.ToLowerInvariant() == "delete")); + InputManager.Click(MouseButton.Left); + }); + + // Ensure the dialog has finished showing + AddStep("finish transforms", () => dialogOverlay.FinishTransforms(true)); + + AddStep("click delete button", () => + { + InputManager.MoveMouseTo(dialogOverlay.ChildrenOfType().First()); + InputManager.Click(MouseButton.Left); + }); + + AddUntilStep("score removed from leaderboard", () => leaderboard.Scores.All(s => s.OnlineScoreID != scores[0].OnlineScoreID)); } - private void reset() + [Test] + public void TestDeleteViaDatabase() { - leaderboard.InitialLoad = true; - leaderboard.RefreshScores(); - } - - private class FailableLeaderboard : BeatmapLeaderboard - { - private List scoreList; - - private Random rnd; - - public bool InitialLoad; - - public void DeleteScore(ScoreInfo score) - { - scoreList.Remove(score); - RefreshScores(); - } - - public FailableLeaderboard() - { - InitialLoad = true; - } - - public void SetRetrievalState(PlaceholderState state) - { - PlaceholderState = state; - } - - protected override APIRequest FetchScores(Action> scoresCallback) - { - if (InitialLoad) - { - rnd = new Random(); - - scoreList = Enumerable.Range(1, 50).Select(createScore).ToList(); - Scores = scoreList.OrderByDescending(s => s.TotalScore).ToArray(); - - InitialLoad = false; - } - else - { - Scores = scoreList.OrderByDescending(s => s.TotalScore).ToArray(); - } - - return null; - } - - private ScoreInfo createScore(int id) => new ScoreInfo - { - ID = id, - Accuracy = rnd.NextDouble(), - PP = rnd.Next(1, 1000000), - TotalScore = rnd.Next(1, 1000000), - MaxCombo = rnd.Next(1, 1000), - Rank = ScoreRank.XH, - User = new User { Username = "TestUser" }, - }; - - protected override LeaderboardScore CreateDrawableScore(ScoreInfo model, int index) - { - model.Beatmap = Beatmap; - return new TestLeaderboardScore(model, index, this, IsOnlineScope); - } - } - - private class TestLeaderboardScore : LeaderboardScore - { - [Resolved] - private DialogOverlay dialogOverlay { get; set; } - - private readonly FailableLeaderboard leaderboard; - - public TestLeaderboardScore(ScoreInfo score, int rank, FailableLeaderboard leaderboard, bool allowHighlight = true) - : base(score, rank, allowHighlight) - { - this.leaderboard = leaderboard; - } - - protected override void DeleteLocalScore(ScoreInfo score) - { - dialogOverlay?.Push(new TestLocalScoreDeleteDialog(score, leaderboard)); - } - } - - private class TestLocalScoreDeleteDialog : PopupDialog - { - public TestLocalScoreDeleteDialog(ScoreInfo score, FailableLeaderboard leaderboard) - { - Debug.Assert(score != null); - - string accuracy = string.Format(score.Accuracy % 1 == 0 ? @"{0:P0}" : @"{0:P2}", score.Accuracy); - - BodyText = $@"{score.User}'s {accuracy} {score.Rank} Rank on {score.Beatmap}"; - Icon = FontAwesome.Solid.Eraser; - HeaderText = @"Deleting this local score. Are you sure?"; - Buttons = new PopupDialogButton[] - { - new PopupDialogOkButton - { - Text = @"Yes. Please.", - Action = () => leaderboard.DeleteScore(score) - }, - new PopupDialogCancelButton - { - Text = @"No, I'm still attached.", - }, - }; - } + AddStep("delete top score", () => scoreManager.Delete(scores[0])); + AddUntilStep("score removed from leaderboard", () => leaderboard.Scores.All(s => s.OnlineScoreID != scores[0].OnlineScoreID)); } } } From 4a7f5f98dff7ac42191e664fd98e8f9f67467a6a Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 6 Jan 2020 17:20:09 +0900 Subject: [PATCH 0723/1829] Cleanup methods/events --- .../Online/Leaderboards/LeaderboardScore.cs | 7 +------ .../Select/Leaderboards/BeatmapLeaderboard.cs | 19 +++++++------------ 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/osu.Game/Online/Leaderboards/LeaderboardScore.cs b/osu.Game/Online/Leaderboards/LeaderboardScore.cs index 7e24dc990b..9c7324d913 100644 --- a/osu.Game/Online/Leaderboards/LeaderboardScore.cs +++ b/osu.Game/Online/Leaderboards/LeaderboardScore.cs @@ -367,11 +367,6 @@ namespace osu.Game.Online.Leaderboards } } - protected virtual void DeleteLocalScore(ScoreInfo score) - { - dialogOverlay?.Push(new LocalScoreDeleteDialog(score)); - } - public MenuItem[] ContextMenuItems { get @@ -379,7 +374,7 @@ namespace osu.Game.Online.Leaderboards List items = new List(); if (score.ID != 0) - items.Add(new OsuMenuItem("Delete", MenuItemType.Destructive, () => DeleteLocalScore(score))); + items.Add(new OsuMenuItem("Delete", MenuItemType.Destructive, () => dialogOverlay?.Push(new LocalScoreDeleteDialog(score)))); return items.ToArray(); } diff --git a/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs b/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs index 8442e91712..9cf328e900 100644 --- a/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs +++ b/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs @@ -104,7 +104,7 @@ namespace osu.Game.Screens.Select.Leaderboards ScoreSelected = s => ScoreSelected?.Invoke(s) }); - scoreManager.ItemRemoved += deleteLocalScore; + scoreManager.ItemRemoved += onScoreRemoved; } protected override void Reset() @@ -113,15 +113,7 @@ namespace osu.Game.Screens.Select.Leaderboards TopScore = null; } - protected override void Dispose(bool isDisposing) - { - base.Dispose(isDisposing); - - if (scoreManager != null) - { - scoreManager.ItemRemoved -= deleteLocalScore; - } - } + private void onScoreRemoved(ScoreInfo score) => Schedule(RefreshScores); protected override bool IsOnlineScope => Scope != BeatmapLeaderboardScope.Local; @@ -204,9 +196,12 @@ namespace osu.Game.Screens.Select.Leaderboards }; } - private void deleteLocalScore(ScoreInfo score) + protected override void Dispose(bool isDisposing) { - Schedule(RefreshScores); + base.Dispose(isDisposing); + + if (scoreManager != null) + scoreManager.ItemRemoved -= onScoreRemoved; } } } From 61c269b17b78e5e1b08c58b22a096e9043b4f1d8 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 6 Jan 2020 17:32:24 +0900 Subject: [PATCH 0724/1829] Leaderboard should not change the model --- .../Select/Leaderboards/BeatmapLeaderboard.cs | 11 +++-------- .../Screens/Select/LocalScoreDeleteDialog.cs | 18 ++++++++++++++++-- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs b/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs index 9cf328e900..e36493c82f 100644 --- a/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs +++ b/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs @@ -186,15 +186,10 @@ namespace osu.Game.Screens.Select.Leaderboards return req; } - protected override LeaderboardScore CreateDrawableScore(ScoreInfo model, int index) + protected override LeaderboardScore CreateDrawableScore(ScoreInfo model, int index) => new LeaderboardScore(model, index, IsOnlineScope) { - model.Beatmap = beatmap; - - return new LeaderboardScore(model, index, IsOnlineScope) - { - Action = () => ScoreSelected?.Invoke(model) - }; - } + Action = () => ScoreSelected?.Invoke(model) + }; protected override void Dispose(bool isDisposing) { diff --git a/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs index c1d680fd45..d607706fc3 100644 --- a/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs +++ b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs @@ -6,21 +6,35 @@ using osu.Game.Overlays.Dialog; using osu.Game.Scoring; using System.Diagnostics; using osu.Framework.Graphics.Sprites; +using osu.Game.Beatmaps; namespace osu.Game.Screens.Select { public class LocalScoreDeleteDialog : PopupDialog { + private readonly ScoreInfo score; + [Resolved] private ScoreManager scoreManager { get; set; } + [Resolved] + private BeatmapManager beatmapManager { get; set; } + public LocalScoreDeleteDialog(ScoreInfo score) { + this.score = score; Debug.Assert(score != null); + } + + [BackgroundDependencyLoader] + private void load() + { + BeatmapInfo beatmap = beatmapManager.QueryBeatmap(b => b.ID == score.BeatmapInfoID); + Debug.Assert(beatmap != null); string accuracy = string.Format(score.Accuracy % 1 == 0 ? @"{0:P0}" : @"{0:P2}", score.Accuracy); - BodyText = $@"{score.User}'s {accuracy} {score.Rank} Rank on {score.Beatmap}"; + BodyText = $@"{score.User}'s {accuracy} {score.Rank} Rank on {beatmap}"; Icon = FontAwesome.Solid.Eraser; HeaderText = @"Deleting this local score. Are you sure?"; Buttons = new PopupDialogButton[] @@ -28,7 +42,7 @@ namespace osu.Game.Screens.Select new PopupDialogOkButton { Text = @"Yes. Please.", - Action = () => scoreManager.Delete(score) + Action = () => scoreManager?.Delete(score) }, new PopupDialogCancelButton { From 28510674acee6420d4eb28add332b4981939c41f Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 6 Jan 2020 17:46:38 +0900 Subject: [PATCH 0725/1829] Shorten body text --- osu.Game/Screens/Select/LocalScoreDeleteDialog.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs index d607706fc3..97df40fa6d 100644 --- a/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs +++ b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs @@ -32,21 +32,21 @@ namespace osu.Game.Screens.Select BeatmapInfo beatmap = beatmapManager.QueryBeatmap(b => b.ID == score.BeatmapInfoID); Debug.Assert(beatmap != null); - string accuracy = string.Format(score.Accuracy % 1 == 0 ? @"{0:P0}" : @"{0:P2}", score.Accuracy); + string accuracy = string.Format(score.Accuracy == 1 ? "{0:P0}" : "{0:P2}", score.Accuracy); + BodyText = $"{score.User} ({accuracy}, {score.Rank})"; - BodyText = $@"{score.User}'s {accuracy} {score.Rank} Rank on {beatmap}"; - Icon = FontAwesome.Solid.Eraser; - HeaderText = @"Deleting this local score. Are you sure?"; + Icon = FontAwesome.Regular.TrashAlt; + HeaderText = "Confirm deletion of local score"; Buttons = new PopupDialogButton[] { new PopupDialogOkButton { - Text = @"Yes. Please.", + Text = "Yes. Please.", Action = () => scoreManager?.Delete(score) }, new PopupDialogCancelButton { - Text = @"No, I'm still attached.", + Text = "No, I'm still attached.", }, }; } From e433e8b78f3d28494d88b9d9ab47ad2b53ca254c Mon Sep 17 00:00:00 2001 From: Ganendra Afrasya Date: Mon, 6 Jan 2020 17:12:10 +0700 Subject: [PATCH 0726/1829] Remove unused variable --- osu.Game/Beatmaps/Drawables/DifficultyIcon.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs index 7bd40af512..a3128e36c4 100644 --- a/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs +++ b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs @@ -48,11 +48,9 @@ namespace osu.Game.Beatmaps.Drawables InternalChild = iconContainer = new Container { Size = new Vector2(20f) }; } - public string TooltipText { get; set; } - public ITooltip GetCustomTooltip() => new DifficultyIconTooltip(); - public object TooltipContent { get; set; } + public object TooltipContent { get; } [BackgroundDependencyLoader] private void load(OsuColour colours) From de4c62788c88bb9ced4e976c9a32ccafba3f4266 Mon Sep 17 00:00:00 2001 From: Sebastian Krajewski Date: Mon, 6 Jan 2020 12:51:38 +0100 Subject: [PATCH 0727/1829] Move colour generation to TriangleParticle --- osu.Game/Graphics/Backgrounds/Triangles.cs | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/osu.Game/Graphics/Backgrounds/Triangles.cs b/osu.Game/Graphics/Backgrounds/Triangles.cs index af492bacc9..0eb5e90d3e 100644 --- a/osu.Game/Graphics/Backgrounds/Triangles.cs +++ b/osu.Game/Graphics/Backgrounds/Triangles.cs @@ -176,8 +176,7 @@ namespace osu.Game.Graphics.Backgrounds TriangleParticle particle = CreateTriangle(); particle.Position = new Vector2(RNG.NextSingle(), randomY ? RNG.NextSingle() : 1); - particle.ColourShade = RNG.NextSingle(); - particle.Colour = CreateTriangleShade(particle.ColourShade); + particle.UpdateColour(colourDark, colourLight); return particle; } @@ -199,18 +198,12 @@ namespace osu.Game.Graphics.Backgrounds return new TriangleParticle { Scale = scale }; } - /// - /// Creates a shade of colour for the triangles. - /// - /// The colour. - protected virtual Color4 CreateTriangleShade(float shade) => Interpolation.ValueAt(shade, colourDark, colourLight, 0, 1); - private void updateColours() { for (int i = 0; i < parts.Count; i++) { TriangleParticle newParticle = parts[i]; - newParticle.Colour = CreateTriangleShade(newParticle.ColourShade); + newParticle.UpdateColour(colourDark, colourLight); parts[i] = newParticle; } } @@ -293,7 +286,7 @@ namespace osu.Game.Graphics.Backgrounds } } - protected struct TriangleParticle : IComparable + protected class TriangleParticle : IComparable { /// /// The position of the top vertex of the triangle. @@ -304,7 +297,7 @@ namespace osu.Game.Graphics.Backgrounds /// The colour shade of the triangle. /// This is needed for colour recalculation of visible triangles when or is changed. /// - public float ColourShade; + private readonly float colourShade = RNG.NextSingle(); /// /// The colour of the triangle. @@ -316,6 +309,11 @@ namespace osu.Game.Graphics.Backgrounds /// public float Scale; + public void UpdateColour(Color4 colourDark, Color4 colourLight) + { + Colour = Interpolation.ValueAt(colourShade, colourDark, colourLight, 0, 1); + } + /// /// Compares two s. This is a reverse comparer because when the /// triangles are added to the particles list, they should be drawn from largest to smallest From 031bed15da7f1624d7e1b37e0e1119b1c90d877e Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 6 Jan 2020 20:56:32 +0300 Subject: [PATCH 0728/1829] Fix comments async loading wasn't really async --- osu.Game/Overlays/Comments/DrawableComment.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/Comments/DrawableComment.cs b/osu.Game/Overlays/Comments/DrawableComment.cs index 7ae6efda6a..bdae9da226 100644 --- a/osu.Game/Overlays/Comments/DrawableComment.cs +++ b/osu.Game/Overlays/Comments/DrawableComment.cs @@ -16,6 +16,7 @@ using osu.Framework.Graphics.Shapes; using System.Linq; using osu.Game.Graphics.Sprites; using osu.Game.Online.Chat; +using osu.Framework.Allocation; namespace osu.Game.Overlays.Comments { @@ -28,10 +29,16 @@ namespace osu.Game.Overlays.Comments private readonly BindableBool childrenExpanded = new BindableBool(true); - private readonly FillFlowContainer childCommentsVisibilityContainer; + private FillFlowContainer childCommentsVisibilityContainer; private readonly Comment comment; public DrawableComment(Comment comment) + { + this.comment = comment; + } + + [BackgroundDependencyLoader] + private void load() { LinkFlowContainer username; FillFlowContainer childCommentsContainer; @@ -41,8 +48,6 @@ namespace osu.Game.Overlays.Comments GridContainer content; VotePill votePill; - this.comment = comment; - RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; InternalChild = new FillFlowContainer From 7716a96b2848d32d1e49c932d8a25d19a877aa02 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 6 Jan 2020 23:07:58 +0300 Subject: [PATCH 0729/1829] Allow scrolling through DimmedLoadingLayer --- .../Graphics/UserInterface/DimmedLoadingLayer.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/osu.Game/Graphics/UserInterface/DimmedLoadingLayer.cs b/osu.Game/Graphics/UserInterface/DimmedLoadingLayer.cs index f2f6dd429b..aca3768540 100644 --- a/osu.Game/Graphics/UserInterface/DimmedLoadingLayer.cs +++ b/osu.Game/Graphics/UserInterface/DimmedLoadingLayer.cs @@ -7,6 +7,7 @@ using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Extensions.Color4Extensions; using osuTK; +using osu.Framework.Input.Events; namespace osu.Game.Graphics.UserInterface { @@ -41,5 +42,16 @@ namespace osu.Game.Graphics.UserInterface this.FadeOut(transition_duration, Easing.OutQuint); loading.Hide(); } + + protected override bool Handle(UIEvent e) + { + switch (e) + { + case ScrollEvent _: + return false; + } + + return base.Handle(e); + } } } From e0f66928e6e76dfeef068327a4296d1482baff97 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 7 Jan 2020 01:07:50 +0300 Subject: [PATCH 0730/1829] Allow CommentsContainer refetch comments using a method --- .../Online/TestSceneCommentsContainer.cs | 28 +++++++---------- .../Overlays/Comments/CommentsContainer.cs | 30 ++++++++++++------- 2 files changed, 31 insertions(+), 27 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs index 86bd0ddd11..8134c10750 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs @@ -30,29 +30,23 @@ namespace osu.Game.Tests.Visual.Online public TestSceneCommentsContainer() { - BasicScrollContainer scrollFlow; + BasicScrollContainer scroll; + CommentsContainer comments; - Add(scrollFlow = new BasicScrollContainer + Add(scroll = new BasicScrollContainer { RelativeSizeAxes = Axes.Both, + Child = comments = new CommentsContainer() }); - AddStep("Big Black comments", () => + AddStep("Big Black comments", () => comments.ShowComments(CommentableType.Beatmapset, 41823)); + AddStep("Airman comments", () => comments.ShowComments(CommentableType.Beatmapset, 24313)); + AddStep("Lazer build comments", () => comments.ShowComments(CommentableType.Build, 4772)); + AddStep("News comments", () => comments.ShowComments(CommentableType.NewsPost, 715)); + AddStep("Idle state", () => { - scrollFlow.Clear(); - scrollFlow.Add(new CommentsContainer(CommentableType.Beatmapset, 41823)); - }); - - AddStep("Airman comments", () => - { - scrollFlow.Clear(); - scrollFlow.Add(new CommentsContainer(CommentableType.Beatmapset, 24313)); - }); - - AddStep("lazer build comments", () => - { - scrollFlow.Clear(); - scrollFlow.Add(new CommentsContainer(CommentableType.Build, 4772)); + scroll.Clear(); + scroll.Add(comments = new CommentsContainer()); }); } } diff --git a/osu.Game/Overlays/Comments/CommentsContainer.cs b/osu.Game/Overlays/Comments/CommentsContainer.cs index 560123eb55..584f658673 100644 --- a/osu.Game/Overlays/Comments/CommentsContainer.cs +++ b/osu.Game/Overlays/Comments/CommentsContainer.cs @@ -18,8 +18,8 @@ namespace osu.Game.Overlays.Comments { public class CommentsContainer : CompositeDrawable { - private readonly CommentableType type; - private readonly long id; + private CommentableType type; + private long id; public readonly Bindable Sort = new Bindable(); public readonly BindableBool ShowDeleted = new BindableBool(); @@ -39,11 +39,8 @@ namespace osu.Game.Overlays.Comments private readonly DeletedChildrenPlaceholder deletedChildrenPlaceholder; private readonly CommentsShowMoreButton moreButton; - public CommentsContainer(CommentableType type, long id) + public CommentsContainer() { - this.type = type; - this.id = id; - RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; AddRangeInternal(new Drawable[] @@ -101,7 +98,8 @@ namespace osu.Game.Overlays.Comments Anchor = Anchor.Centre, Origin = Anchor.Centre, Margin = new MarginPadding(5), - Action = getComments + Action = getComments, + IsLoading = true, } } } @@ -121,12 +119,24 @@ namespace osu.Game.Overlays.Comments protected override void LoadComplete() { - Sort.BindValueChanged(onSortChanged, true); + Sort.BindValueChanged(_ => resetComments()); base.LoadComplete(); } - private void onSortChanged(ValueChangedEvent sort) + /// The type of resource to get comments for. + /// The id of the resource to get comments for. + public void ShowComments(CommentableType type, long id) { + this.type = type; + this.id = id; + Sort.TriggerChange(); + } + + private void resetComments() + { + if (id == default) + return; + clearComments(); getComments(); } @@ -152,7 +162,7 @@ namespace osu.Game.Overlays.Comments { loadCancellation = new CancellationTokenSource(); - FillFlowContainer page = new FillFlowContainer + var page = new FillFlowContainer { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, From 0b9cc8ed1b4e2f15ceb11228a51a7f27afce5e67 Mon Sep 17 00:00:00 2001 From: Sebastian Krajewski Date: Mon, 6 Jan 2020 12:51:38 +0100 Subject: [PATCH 0731/1829] Revert "Move colour generation to TriangleParticle" This reverts commit de4c62788c88bb9ced4e976c9a32ccafba3f4266. --- osu.Game/Graphics/Backgrounds/Triangles.cs | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/osu.Game/Graphics/Backgrounds/Triangles.cs b/osu.Game/Graphics/Backgrounds/Triangles.cs index 0eb5e90d3e..af492bacc9 100644 --- a/osu.Game/Graphics/Backgrounds/Triangles.cs +++ b/osu.Game/Graphics/Backgrounds/Triangles.cs @@ -176,7 +176,8 @@ namespace osu.Game.Graphics.Backgrounds TriangleParticle particle = CreateTriangle(); particle.Position = new Vector2(RNG.NextSingle(), randomY ? RNG.NextSingle() : 1); - particle.UpdateColour(colourDark, colourLight); + particle.ColourShade = RNG.NextSingle(); + particle.Colour = CreateTriangleShade(particle.ColourShade); return particle; } @@ -198,12 +199,18 @@ namespace osu.Game.Graphics.Backgrounds return new TriangleParticle { Scale = scale }; } + /// + /// Creates a shade of colour for the triangles. + /// + /// The colour. + protected virtual Color4 CreateTriangleShade(float shade) => Interpolation.ValueAt(shade, colourDark, colourLight, 0, 1); + private void updateColours() { for (int i = 0; i < parts.Count; i++) { TriangleParticle newParticle = parts[i]; - newParticle.UpdateColour(colourDark, colourLight); + newParticle.Colour = CreateTriangleShade(newParticle.ColourShade); parts[i] = newParticle; } } @@ -286,7 +293,7 @@ namespace osu.Game.Graphics.Backgrounds } } - protected class TriangleParticle : IComparable + protected struct TriangleParticle : IComparable { /// /// The position of the top vertex of the triangle. @@ -297,7 +304,7 @@ namespace osu.Game.Graphics.Backgrounds /// The colour shade of the triangle. /// This is needed for colour recalculation of visible triangles when or is changed. /// - private readonly float colourShade = RNG.NextSingle(); + public float ColourShade; /// /// The colour of the triangle. @@ -309,11 +316,6 @@ namespace osu.Game.Graphics.Backgrounds /// public float Scale; - public void UpdateColour(Color4 colourDark, Color4 colourLight) - { - Colour = Interpolation.ValueAt(colourShade, colourDark, colourLight, 0, 1); - } - /// /// Compares two s. This is a reverse comparer because when the /// triangles are added to the particles list, they should be drawn from largest to smallest From 3ca4d1a28c7cb1fdbefa15f46a469712fe74e0a1 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 7 Jan 2020 11:47:00 +0900 Subject: [PATCH 0732/1829] Split out tests --- .../Online/TestSceneBeatmapManager.cs | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/osu.Game.Tests/Online/TestSceneBeatmapManager.cs b/osu.Game.Tests/Online/TestSceneBeatmapManager.cs index 7887002e1f..0ae0186770 100644 --- a/osu.Game.Tests/Online/TestSceneBeatmapManager.cs +++ b/osu.Game.Tests/Online/TestSceneBeatmapManager.cs @@ -26,16 +26,23 @@ namespace osu.Game.Tests.Online beatmaps.PostNotification = n => recentNotification = n as ProgressNotification; } - [TestCase(true)] - [TestCase(false)] - public void TestCancelDownloadRequest(bool closeFromRequest) + [Test] + public void TestCancelDownloadFromRequest() { AddStep("download beatmap", () => beatmaps.Download(test_model)); - if (closeFromRequest) - AddStep("cancel download from request", () => beatmaps.GetExistingDownload(test_model).Cancel()); - else - AddStep("cancel download from notification", () => recentNotification.Close()); + AddStep("cancel download from request", () => beatmaps.GetExistingDownload(test_model).Cancel()); + + AddUntilStep("is removed from download list", () => beatmaps.GetExistingDownload(test_model) == null); + AddAssert("is notification cancelled", () => recentNotification.State == ProgressNotificationState.Cancelled); + } + + [Test] + public void TestCancelDownloadFromNotification() + { + AddStep("download beatmap", () => beatmaps.Download(test_model)); + + AddStep("cancel download from notification", () => recentNotification.Close()); AddUntilStep("is removed from download list", () => beatmaps.GetExistingDownload(test_model) == null); AddAssert("is notification cancelled", () => recentNotification.State == ProgressNotificationState.Cancelled); From 21468eb07011c8774f9de838a5a19d602fe01fc6 Mon Sep 17 00:00:00 2001 From: Sebastian Krajewski Date: Tue, 7 Jan 2020 04:55:05 +0100 Subject: [PATCH 0733/1829] Remove settings related to reverse arrow --- .../Configuration/OsuRulesetConfigManager.cs | 5 +--- .../Objects/Drawables/DrawableRepeatPoint.cs | 28 +++---------------- .../Drawables/Pieces/ReverseArrowPiece.cs | 17 +---------- .../UI/OsuSettingsSubsection.cs | 5 ---- .../UI/ReverseArrowPulseMode.cs | 18 ------------ 5 files changed, 6 insertions(+), 67 deletions(-) delete mode 100644 osu.Game.Rulesets.Osu/UI/ReverseArrowPulseMode.cs diff --git a/osu.Game.Rulesets.Osu/Configuration/OsuRulesetConfigManager.cs b/osu.Game.Rulesets.Osu/Configuration/OsuRulesetConfigManager.cs index 77b0c728b0..f76635a932 100644 --- a/osu.Game.Rulesets.Osu/Configuration/OsuRulesetConfigManager.cs +++ b/osu.Game.Rulesets.Osu/Configuration/OsuRulesetConfigManager.cs @@ -3,7 +3,6 @@ using osu.Game.Configuration; using osu.Game.Rulesets.Configuration; -using osu.Game.Rulesets.Osu.UI; namespace osu.Game.Rulesets.Osu.Configuration { @@ -20,7 +19,6 @@ namespace osu.Game.Rulesets.Osu.Configuration Set(OsuRulesetSetting.SnakingInSliders, true); Set(OsuRulesetSetting.SnakingOutSliders, true); Set(OsuRulesetSetting.ShowCursorTrail, true); - Set(OsuRulesetSetting.ReverseArrowPulse, ReverseArrowPulseMode.Synced); } } @@ -28,7 +26,6 @@ namespace osu.Game.Rulesets.Osu.Configuration { SnakingInSliders, SnakingOutSliders, - ShowCursorTrail, - ReverseArrowPulse, + ShowCursorTrail } } diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs index 6bf2f95f41..4873160af0 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs @@ -8,9 +8,7 @@ using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.MathUtils; using osu.Game.Rulesets.Objects.Drawables; -using osu.Game.Rulesets.Osu.Configuration; using osu.Game.Rulesets.Osu.Objects.Drawables.Pieces; -using osu.Game.Rulesets.Osu.UI; using osu.Game.Rulesets.Scoring; using osuTK; @@ -21,15 +19,10 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables private readonly RepeatPoint repeatPoint; private readonly DrawableSlider drawableSlider; - public readonly Bindable PulseMode = new Bindable(ReverseArrowPulseMode.Synced); - private double animDuration; private readonly Drawable scaleContainer; - [Resolved(CanBeNull = true)] - private OsuRulesetConfigManager config { get; set; } - public DrawableRepeatPoint(RepeatPoint repeatPoint, DrawableSlider drawableSlider) : base(repeatPoint) { @@ -51,8 +44,6 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables { scaleBindable.BindValueChanged(scale => scaleContainer.Scale = new Vector2(scale.NewValue), true); scaleBindable.BindTo(HitObject.ScaleBindable); - - config?.BindWith(OsuRulesetSetting.ReverseArrowPulse, PulseMode); } protected override void CheckForResult(bool userTriggered, double timeOffset) @@ -65,21 +56,10 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables { animDuration = Math.Min(300, repeatPoint.SpanDuration); - this.FadeIn(animDuration); - - if (PulseMode.Value == ReverseArrowPulseMode.Stable) - { - double fadeInStart = repeatPoint.StartTime - 2 * repeatPoint.SpanDuration; - - // We want first repeat arrow to start pulsing during snake in - if (repeatPoint.RepeatIndex == 0) - fadeInStart -= repeatPoint.TimePreempt; - - for (double pulseStartTime = fadeInStart; pulseStartTime < repeatPoint.StartTime; pulseStartTime += 300) - this.Delay(pulseStartTime - LifetimeStart).ScaleTo(1.3f).ScaleTo(1f, Math.Min(300, repeatPoint.StartTime - pulseStartTime), Easing.Out); - } - else if (PulseMode.Value == ReverseArrowPulseMode.Off) - this.ScaleTo(0.5f).ScaleTo(1f, animDuration * 2, Easing.OutElasticHalf); + this.Animate( + d => d.FadeIn(animDuration), + d => d.ScaleTo(0.5f).ScaleTo(1f, animDuration * 2, Easing.OutElasticHalf) + ); } protected override void UpdateStateTransforms(ArmedState state) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs index 114cf9d27e..2b9a3aa197 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs @@ -2,27 +2,18 @@ // See the LICENCE file in the repository root for full licence text. using System; -using osu.Framework.Allocation; using osu.Framework.Audio.Track; -using osu.Framework.Bindables; using osu.Framework.Graphics; using osuTK; using osu.Framework.Graphics.Sprites; using osu.Game.Beatmaps.ControlPoints; using osu.Game.Graphics.Containers; -using osu.Game.Rulesets.Osu.Configuration; -using osu.Game.Rulesets.Osu.UI; using osu.Game.Skinning; namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces { public class ReverseArrowPiece : BeatSyncedContainer { - public readonly Bindable PulseMode = new Bindable(ReverseArrowPulseMode.Synced); - - [Resolved(CanBeNull = true)] - private OsuRulesetConfigManager config { get; set; } - private readonly RepeatPoint repeatPoint; public ReverseArrowPiece(RepeatPoint repeatPoint) @@ -50,14 +41,8 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces protected override void OnNewBeat(int beatIndex, TimingControlPoint timingPoint, EffectControlPoint effectPoint, TrackAmplitudes amplitudes) { - if (PulseMode.Value == ReverseArrowPulseMode.Synced && Clock.CurrentTime < repeatPoint.StartTime) + if (Clock.CurrentTime < repeatPoint.StartTime) InternalChild.ScaleTo(1.3f).ScaleTo(1f, Math.Min(timingPoint.BeatLength, repeatPoint.StartTime - Clock.CurrentTime), Easing.Out); } - - [BackgroundDependencyLoader] - private void load() - { - config?.BindWith(OsuRulesetSetting.ReverseArrowPulse, PulseMode); - } } } diff --git a/osu.Game.Rulesets.Osu/UI/OsuSettingsSubsection.cs b/osu.Game.Rulesets.Osu/UI/OsuSettingsSubsection.cs index afde693316..88adf72551 100644 --- a/osu.Game.Rulesets.Osu/UI/OsuSettingsSubsection.cs +++ b/osu.Game.Rulesets.Osu/UI/OsuSettingsSubsection.cs @@ -39,11 +39,6 @@ namespace osu.Game.Rulesets.Osu.UI LabelText = "Cursor trail", Bindable = config.GetBindable(OsuRulesetSetting.ShowCursorTrail) }, - new SettingsEnumDropdown - { - LabelText = "Slider reverse arrow pulse", - Bindable = config.GetBindable(OsuRulesetSetting.ReverseArrowPulse) - }, }; } } diff --git a/osu.Game.Rulesets.Osu/UI/ReverseArrowPulseMode.cs b/osu.Game.Rulesets.Osu/UI/ReverseArrowPulseMode.cs deleted file mode 100644 index d3261e71db..0000000000 --- a/osu.Game.Rulesets.Osu/UI/ReverseArrowPulseMode.cs +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. -// See the LICENCE file in the repository root for full licence text. - -using System.ComponentModel; - -namespace osu.Game.Rulesets.Osu.UI -{ - public enum ReverseArrowPulseMode - { - Off, - - [Description("Match osu!stable")] - Stable, - - [Description("Sync to beatmap")] - Synced - } -} From 4a68c791375248441fcb307a0a903aa502c23c2e Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 7 Jan 2020 13:06:30 +0900 Subject: [PATCH 0734/1829] Make tests safer against async loads / transforms --- .../UserInterface/TestSceneDeleteLocalScore.cs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs index e896b0fab6..289c01fbf3 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs @@ -123,16 +123,26 @@ namespace osu.Game.Tests.Visual.UserInterface // Due to soft deletions, we can re-use deleted scores between test runs scoreManager.Undelete(scoreManager.QueryScores(s => s.DeletePending).ToList()); + leaderboard.Scores = null; + leaderboard.FinishTransforms(true); // After setting scores, we may be waiting for transforms to expire drawables + leaderboard.Beatmap = beatmap; - leaderboard.RefreshScores(); + leaderboard.RefreshScores(); // Required in the case that the beatmap hasn't changed }); + [SetUpSteps] + public void SetupSteps() + { + // Ensure the leaderboard has finished async-loading drawables + AddUntilStep("wait for drawables", () => leaderboard.ChildrenOfType().Any()); + + // Ensure the leaderboard items have finished showing up + AddStep("finish transforms", () => leaderboard.FinishTransforms(true)); + } + [Test] public void TestDeleteViaRightClick() { - // Ensure the leaderboard items have finished showing up - AddStep("finish transforms", () => leaderboard.FinishTransforms(true)); - AddStep("open menu for top score", () => { InputManager.MoveMouseTo(leaderboard.ChildrenOfType().First()); From fd925526e2b320f4b055506312113b9f9a62d569 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 7 Jan 2020 13:39:30 +0900 Subject: [PATCH 0735/1829] Fix medal overlay display --- osu.Game/Overlays/MedalOverlay.cs | 174 ++++++++++++++++-------------- 1 file changed, 91 insertions(+), 83 deletions(-) diff --git a/osu.Game/Overlays/MedalOverlay.cs b/osu.Game/Overlays/MedalOverlay.cs index f7070bbaec..15aec1f17c 100644 --- a/osu.Game/Overlays/MedalOverlay.cs +++ b/osu.Game/Overlays/MedalOverlay.cs @@ -41,105 +41,114 @@ namespace osu.Game.Overlays private SampleChannel getSample; + private readonly Container content; + public MedalOverlay(Medal medal) { this.medal = medal; RelativeSizeAxes = Axes.Both; - Children = new Drawable[] + Child = content = new Container { - background = new Box + Alpha = 0, + RelativeSizeAxes = Axes.Both, + Children = new Drawable[] { - RelativeSizeAxes = Axes.Both, - Colour = Color4.Black.Opacity(60), - }, - outerSpin = new Sprite - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Size = new Vector2(DISC_SIZE + 500), - Alpha = 0f, - }, - backgroundStrip = new Container - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - RelativeSizeAxes = Axes.X, - Height = border_width, - Alpha = 0f, - Children = new[] + background = new Box { - new Container + RelativeSizeAxes = Axes.Both, + Colour = Color4.Black.Opacity(60), + }, + outerSpin = new Sprite + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Size = new Vector2(DISC_SIZE + 500), + Alpha = 0f, + }, + backgroundStrip = new Container + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + RelativeSizeAxes = Axes.X, + Height = border_width, + Alpha = 0f, + Children = new[] { - RelativeSizeAxes = Axes.Both, - Anchor = Anchor.Centre, - Origin = Anchor.CentreRight, - Width = 0.5f, - Padding = new MarginPadding { Right = DISC_SIZE / 2 }, - Children = new[] + new Container { - leftStrip = new BackgroundStrip(0f, 1f) + RelativeSizeAxes = Axes.Both, + Anchor = Anchor.Centre, + Origin = Anchor.CentreRight, + Width = 0.5f, + Padding = new MarginPadding { Right = DISC_SIZE / 2 }, + Children = new[] { - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, + leftStrip = new BackgroundStrip(0f, 1f) + { + Anchor = Anchor.TopRight, + Origin = Anchor.TopRight, + }, + }, + }, + new Container + { + RelativeSizeAxes = Axes.Both, + Anchor = Anchor.Centre, + Origin = Anchor.CentreLeft, + Width = 0.5f, + Padding = new MarginPadding { Left = DISC_SIZE / 2 }, + Children = new[] + { + rightStrip = new BackgroundStrip(1f, 0f), }, }, }, - new Container + }, + particleContainer = new Container + { + RelativeSizeAxes = Axes.Both, + Alpha = 0f, + }, + disc = new CircularContainer + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Alpha = 0f, + Masking = true, + AlwaysPresent = true, + BorderColour = Color4.White, + BorderThickness = border_width, + Size = new Vector2(DISC_SIZE), + Scale = new Vector2(0.8f), + Children = new Drawable[] { - RelativeSizeAxes = Axes.Both, - Anchor = Anchor.Centre, - Origin = Anchor.CentreLeft, - Width = 0.5f, - Padding = new MarginPadding { Left = DISC_SIZE / 2 }, - Children = new[] + new Box { - rightStrip = new BackgroundStrip(1f, 0f), + RelativeSizeAxes = Axes.Both, + Colour = OsuColour.FromHex(@"05262f"), + }, + new Triangles + { + RelativeSizeAxes = Axes.Both, + TriangleScale = 2, + ColourDark = OsuColour.FromHex(@"04222b"), + ColourLight = OsuColour.FromHex(@"052933"), + }, + innerSpin = new Sprite + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + RelativeSizeAxes = Axes.Both, + Size = new Vector2(1.05f), + Alpha = 0.25f, }, }, }, - }, - particleContainer = new Container - { - RelativeSizeAxes = Axes.Both, - Alpha = 0f, - }, - disc = new CircularContainer - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Alpha = 0f, - Masking = true, - AlwaysPresent = true, - BorderColour = Color4.White, - BorderThickness = border_width, - Size = new Vector2(DISC_SIZE), - Scale = new Vector2(0.8f), - Children = new Drawable[] - { - new Box - { - RelativeSizeAxes = Axes.Both, - Colour = OsuColour.FromHex(@"05262f"), - }, - new Triangles - { - RelativeSizeAxes = Axes.Both, - TriangleScale = 2, - ColourDark = OsuColour.FromHex(@"04222b"), - ColourLight = OsuColour.FromHex(@"052933"), - }, - innerSpin = new Sprite - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - RelativeSizeAxes = Axes.Both, - Size = new Vector2(1.05f), - Alpha = 0.25f, - }, - }, - }, + } }; + + Show(); } [BackgroundDependencyLoader] @@ -168,7 +177,7 @@ namespace osu.Game.Overlays }, loaded => { disc.Add(loaded); - Show(); + startAnimation(); }); } @@ -193,11 +202,10 @@ namespace osu.Game.Overlays private const double initial_duration = 400; private const double step_duration = 900; - protected override void PopIn() + private void startAnimation() { - base.PopIn(); + content.Show(); - this.FadeIn(200); background.FlashColour(Color4.White.Opacity(0.25f), 400); getSample.Play(); From 97b5d71ee4dd86619f116f9e86bd33b7c7de72db Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 7 Jan 2020 15:09:30 +0900 Subject: [PATCH 0736/1829] Adjust catch HP increase values --- .../Judgements/CatchBananaJudgement.cs | 2 +- .../Judgements/CatchDropletJudgement.cs | 12 ------------ osu.Game.Rulesets.Catch/Judgements/CatchJudgement.cs | 12 ------------ .../Judgements/CatchTinyDropletJudgement.cs | 2 +- 4 files changed, 2 insertions(+), 26 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Judgements/CatchBananaJudgement.cs b/osu.Game.Rulesets.Catch/Judgements/CatchBananaJudgement.cs index 374dd50c11..fc030877f1 100644 --- a/osu.Game.Rulesets.Catch/Judgements/CatchBananaJudgement.cs +++ b/osu.Game.Rulesets.Catch/Judgements/CatchBananaJudgement.cs @@ -30,7 +30,7 @@ namespace osu.Game.Rulesets.Catch.Judgements return 0; case HitResult.Perfect: - return 0.008; + return 0.01; } } diff --git a/osu.Game.Rulesets.Catch/Judgements/CatchDropletJudgement.cs b/osu.Game.Rulesets.Catch/Judgements/CatchDropletJudgement.cs index f1399bb5c0..e87ecba749 100644 --- a/osu.Game.Rulesets.Catch/Judgements/CatchDropletJudgement.cs +++ b/osu.Game.Rulesets.Catch/Judgements/CatchDropletJudgement.cs @@ -18,17 +18,5 @@ namespace osu.Game.Rulesets.Catch.Judgements return 30; } } - - protected override double HealthIncreaseFor(HitResult result) - { - switch (result) - { - default: - return base.HealthIncreaseFor(result); - - case HitResult.Perfect: - return 0.007; - } - } } } diff --git a/osu.Game.Rulesets.Catch/Judgements/CatchJudgement.cs b/osu.Game.Rulesets.Catch/Judgements/CatchJudgement.cs index 8fd9ac92ba..2149ed9712 100644 --- a/osu.Game.Rulesets.Catch/Judgements/CatchJudgement.cs +++ b/osu.Game.Rulesets.Catch/Judgements/CatchJudgement.cs @@ -23,18 +23,6 @@ namespace osu.Game.Rulesets.Catch.Judgements } } - protected override double HealthIncreaseFor(HitResult result) - { - switch (result) - { - default: - return -0.02; - - case HitResult.Perfect: - return 0.01; - } - } - /// /// Whether fruit on the platter should explode or drop. /// Note that this is only checked if the owning object is also diff --git a/osu.Game.Rulesets.Catch/Judgements/CatchTinyDropletJudgement.cs b/osu.Game.Rulesets.Catch/Judgements/CatchTinyDropletJudgement.cs index 3829b5e94f..d607b49ea4 100644 --- a/osu.Game.Rulesets.Catch/Judgements/CatchTinyDropletJudgement.cs +++ b/osu.Game.Rulesets.Catch/Judgements/CatchTinyDropletJudgement.cs @@ -29,7 +29,7 @@ namespace osu.Game.Rulesets.Catch.Judgements return 0; case HitResult.Perfect: - return 0.004; + return 0.02; } } } From dfa6575f75d375d7f4cb09c9206308263fe19d13 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 7 Jan 2020 15:24:33 +0900 Subject: [PATCH 0737/1829] Adjust mania HP increase values --- .../Judgements/HoldNoteTickJudgement.cs | 6 ++--- .../Judgements/ManiaJudgement.cs | 27 ------------------- 2 files changed, 3 insertions(+), 30 deletions(-) diff --git a/osu.Game.Rulesets.Mania/Judgements/HoldNoteTickJudgement.cs b/osu.Game.Rulesets.Mania/Judgements/HoldNoteTickJudgement.cs index b9c6e3a7f7..00b839f8ec 100644 --- a/osu.Game.Rulesets.Mania/Judgements/HoldNoteTickJudgement.cs +++ b/osu.Game.Rulesets.Mania/Judgements/HoldNoteTickJudgement.cs @@ -15,11 +15,11 @@ namespace osu.Game.Rulesets.Mania.Judgements { switch (result) { - case HitResult.Miss: + default: return 0; - default: - return 0.040; + case HitResult.Perfect: + return 0.01; } } } diff --git a/osu.Game.Rulesets.Mania/Judgements/ManiaJudgement.cs b/osu.Game.Rulesets.Mania/Judgements/ManiaJudgement.cs index 0e4c811945..c2f8fb8678 100644 --- a/osu.Game.Rulesets.Mania/Judgements/ManiaJudgement.cs +++ b/osu.Game.Rulesets.Mania/Judgements/ManiaJudgement.cs @@ -29,32 +29,5 @@ namespace osu.Game.Rulesets.Mania.Judgements return 300; } } - - protected override double HealthIncreaseFor(HitResult result) - { - switch (result) - { - case HitResult.Miss: - return -0.125; - - case HitResult.Meh: - return 0.005; - - case HitResult.Ok: - return 0.010; - - case HitResult.Good: - return 0.035; - - case HitResult.Great: - return 0.055; - - case HitResult.Perfect: - return 0.065; - - default: - return 0; - } - } } } From e33de0c2e423e2ae7a44c19797c40096f7ec6c7f Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 7 Jan 2020 15:14:09 +0800 Subject: [PATCH 0738/1829] Fix ScrollContainer crashes --- osu.Game/Graphics/Containers/OsuScrollContainer.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/osu.Game/Graphics/Containers/OsuScrollContainer.cs b/osu.Game/Graphics/Containers/OsuScrollContainer.cs index ab72276ad0..cfd459da5e 100644 --- a/osu.Game/Graphics/Containers/OsuScrollContainer.cs +++ b/osu.Game/Graphics/Containers/OsuScrollContainer.cs @@ -123,8 +123,6 @@ namespace osu.Game.Graphics.Containers Masking = true; Child = box = new Box { RelativeSizeAxes = Axes.Both }; - - ResizeTo(1); } [BackgroundDependencyLoader] From 6adf5ba3813482e40cf3e0c391d136e7e9c596e9 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 7 Jan 2020 12:29:21 +0300 Subject: [PATCH 0739/1829] Use nullable long type for id value --- osu.Game/Overlays/Comments/CommentsContainer.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/osu.Game/Overlays/Comments/CommentsContainer.cs b/osu.Game/Overlays/Comments/CommentsContainer.cs index 584f658673..97bd0a75e9 100644 --- a/osu.Game/Overlays/Comments/CommentsContainer.cs +++ b/osu.Game/Overlays/Comments/CommentsContainer.cs @@ -19,7 +19,7 @@ namespace osu.Game.Overlays.Comments public class CommentsContainer : CompositeDrawable { private CommentableType type; - private long id; + private long? id; public readonly Bindable Sort = new Bindable(); public readonly BindableBool ShowDeleted = new BindableBool(); @@ -134,18 +134,18 @@ namespace osu.Game.Overlays.Comments private void resetComments() { - if (id == default) - return; - clearComments(); getComments(); } private void getComments() { + if (!id.HasValue) + return; + request?.Cancel(); loadCancellation?.Cancel(); - request = new GetCommentsRequest(type, id, Sort.Value, currentPage++); + request = new GetCommentsRequest(type, id.Value, Sort.Value, currentPage++); request.Success += onSuccess; api.Queue(request); } From 7dc03a1335f860ea0e190901bdc27827352e7286 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 7 Jan 2020 12:30:06 +0300 Subject: [PATCH 0740/1829] resetComments -> refetchComments --- osu.Game/Overlays/Comments/CommentsContainer.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Comments/CommentsContainer.cs b/osu.Game/Overlays/Comments/CommentsContainer.cs index 97bd0a75e9..99f79cd940 100644 --- a/osu.Game/Overlays/Comments/CommentsContainer.cs +++ b/osu.Game/Overlays/Comments/CommentsContainer.cs @@ -119,7 +119,7 @@ namespace osu.Game.Overlays.Comments protected override void LoadComplete() { - Sort.BindValueChanged(_ => resetComments()); + Sort.BindValueChanged(_ => refetchComments()); base.LoadComplete(); } @@ -132,7 +132,7 @@ namespace osu.Game.Overlays.Comments Sort.TriggerChange(); } - private void resetComments() + private void refetchComments() { clearComments(); getComments(); From 7f92cefe1023fbfd2ff98045a70186d70e10e760 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Tue, 7 Jan 2020 19:06:47 +0100 Subject: [PATCH 0741/1829] Apply review suggestions --- osu.Game/Online/Leaderboards/Leaderboard.cs | 2 +- osu.Game/Online/Placeholders/LoginPlaceholder.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Online/Leaderboards/Leaderboard.cs b/osu.Game/Online/Leaderboards/Leaderboard.cs index 06a36af618..095e552ddd 100644 --- a/osu.Game/Online/Leaderboards/Leaderboard.cs +++ b/osu.Game/Online/Leaderboards/Leaderboard.cs @@ -151,7 +151,7 @@ namespace osu.Game.Online.Leaderboards break; case PlaceholderState.NotLoggedIn: - replacePlaceholder(new LoginPlaceholder(@"view online leaderboards!")); + replacePlaceholder(new LoginPlaceholder(@"Please sign in to view online leaderboards!")); break; case PlaceholderState.NotSupporter: diff --git a/osu.Game/Online/Placeholders/LoginPlaceholder.cs b/osu.Game/Online/Placeholders/LoginPlaceholder.cs index f6e4131930..a613d7344a 100644 --- a/osu.Game/Online/Placeholders/LoginPlaceholder.cs +++ b/osu.Game/Online/Placeholders/LoginPlaceholder.cs @@ -22,7 +22,7 @@ namespace osu.Game.Online.Placeholders cp.Padding = new MarginPadding { Right = 10 }; }); - AddText(@"Please sign in to " + action); + AddText(action); } protected override bool OnMouseDown(MouseDownEvent e) From eb828154eeb6a38c45b52d7a48c582122df3fef3 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 8 Jan 2020 00:41:52 +0300 Subject: [PATCH 0742/1829] Allow any type to be used to create TabControl --- .../Online/TestSceneUserProfileHeader.cs | 2 +- .../UserInterface/TestSceneOverlayHeaders.cs | 44 ++++++++++++++++--- .../BreadcrumbControlOverlayHeader.cs | 2 +- .../Overlays/ControllableOverlayHeader.cs | 5 ++- osu.Game/Overlays/Profile/ProfileHeader.cs | 2 +- osu.Game/Overlays/TabControlOverlayHeader.cs | 19 +++++--- 6 files changed, 56 insertions(+), 18 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneUserProfileHeader.cs b/osu.Game.Tests/Visual/Online/TestSceneUserProfileHeader.cs index 63b46c991f..b4408343c4 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneUserProfileHeader.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneUserProfileHeader.cs @@ -24,7 +24,7 @@ namespace osu.Game.Tests.Visual.Online typeof(ProfileHeader), typeof(RankGraph), typeof(LineGraph), - typeof(TabControlOverlayHeader.OverlayHeaderTabControl), + typeof(TabControlOverlayHeader<>.OverlayHeaderTabControl), typeof(CentreHeaderContainer), typeof(BottomHeaderContainer), typeof(DetailHeaderContainer), diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeaders.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeaders.cs index 60cf0f6885..3ed5e53260 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeaders.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeaders.cs @@ -22,11 +22,12 @@ namespace osu.Game.Tests.Visual.UserInterface public override IReadOnlyList RequiredTypes => new[] { typeof(OverlayHeader), - typeof(ControllableOverlayHeader), - typeof(TabControlOverlayHeader), + typeof(ControllableOverlayHeader<>), + typeof(TabControlOverlayHeader<>), typeof(BreadcrumbControlOverlayHeader), typeof(TestNoControlHeader), - typeof(TestTabControlHeader), + typeof(TestStringTabControlHeader), + typeof(TestEnumTabControlHeader), typeof(TestBreadcrumbControlHeader), }; @@ -54,7 +55,8 @@ namespace osu.Game.Tests.Visual.UserInterface }); addHeader("OverlayHeader", new TestNoControlHeader()); - addHeader("TabControlOverlayHeader", new TestTabControlHeader()); + addHeader("TabControlOverlayHeader (string)", new TestStringTabControlHeader()); + addHeader("TabControlOverlayHeader (enum)", new TestEnumTabControlHeader()); addHeader("BreadcrumbControlOverlayHeader", new TestBreadcrumbControlHeader()); } @@ -69,10 +71,16 @@ namespace osu.Game.Tests.Visual.UserInterface { new OsuSpriteText { + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, Margin = new MarginPadding(20), Text = name, }, - header + header.With(header => + { + header.Anchor = Anchor.TopCentre; + header.Origin = Anchor.TopCentre; + }) } }); } @@ -90,13 +98,13 @@ namespace osu.Game.Tests.Visual.UserInterface } } - private class TestTabControlHeader : TabControlOverlayHeader + private class TestStringTabControlHeader : TabControlOverlayHeader { protected override Drawable CreateBackground() => new TestBackground(); protected override ScreenTitle CreateTitle() => new TestTitle(); - public TestTabControlHeader() + public TestStringTabControlHeader() { TabControl.AddItem("tab1"); TabControl.AddItem("tab2"); @@ -111,6 +119,28 @@ namespace osu.Game.Tests.Visual.UserInterface } } + private class TestEnumTabControlHeader : TabControlOverlayHeader + { + protected override Drawable CreateBackground() => new TestBackground(); + + protected override ScreenTitle CreateTitle() => new TestTitle(); + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + TitleBackgroundColour = colours.GreyVioletDarker; + ControlBackgroundColour = colours.GreyVioletDark; + TabControl.AccentColour = colours.Violet; + } + } + + private enum TestEnum + { + Some, + Cool, + Tabs + } + private class TestBreadcrumbControlHeader : BreadcrumbControlOverlayHeader { protected override Drawable CreateBackground() => new TestBackground(); diff --git a/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs b/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs index d7fa346c15..a82ff44505 100644 --- a/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs +++ b/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs @@ -7,7 +7,7 @@ using osu.Game.Graphics.UserInterface; namespace osu.Game.Overlays { - public abstract class BreadcrumbControlOverlayHeader : ControllableOverlayHeader + public abstract class BreadcrumbControlOverlayHeader : ControllableOverlayHeader { protected OverlayHeaderBreadcrumbControl BreadcrumbControl; diff --git a/osu.Game/Overlays/ControllableOverlayHeader.cs b/osu.Game/Overlays/ControllableOverlayHeader.cs index 30509995dd..9b2bf526ca 100644 --- a/osu.Game/Overlays/ControllableOverlayHeader.cs +++ b/osu.Game/Overlays/ControllableOverlayHeader.cs @@ -9,7 +9,8 @@ using osuTK.Graphics; namespace osu.Game.Overlays { - public abstract class ControllableOverlayHeader : OverlayHeader + /// The type of item to be represented by tabs in . + public abstract class ControllableOverlayHeader : OverlayHeader { protected Color4 ControlBackgroundColour { @@ -36,6 +37,6 @@ namespace osu.Game.Overlays }); } - protected abstract TabControl CreateTabControl(); + protected abstract TabControl CreateTabControl(); } } diff --git a/osu.Game/Overlays/Profile/ProfileHeader.cs b/osu.Game/Overlays/Profile/ProfileHeader.cs index 59e64dfc26..768344dfee 100644 --- a/osu.Game/Overlays/Profile/ProfileHeader.cs +++ b/osu.Game/Overlays/Profile/ProfileHeader.cs @@ -15,7 +15,7 @@ using osu.Game.Users; namespace osu.Game.Overlays.Profile { - public class ProfileHeader : TabControlOverlayHeader + public class ProfileHeader : TabControlOverlayHeader { private UserCoverBackground coverContainer; diff --git a/osu.Game/Overlays/TabControlOverlayHeader.cs b/osu.Game/Overlays/TabControlOverlayHeader.cs index 1e6be9422d..d108af4348 100644 --- a/osu.Game/Overlays/TabControlOverlayHeader.cs +++ b/osu.Game/Overlays/TabControlOverlayHeader.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 osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.UserInterface; @@ -9,13 +10,13 @@ using osuTK; namespace osu.Game.Overlays { - public abstract class TabControlOverlayHeader : ControllableOverlayHeader + public abstract class TabControlOverlayHeader : ControllableOverlayHeader { protected OverlayHeaderTabControl TabControl; - protected override TabControl CreateTabControl() => TabControl = new OverlayHeaderTabControl(); + protected override TabControl CreateTabControl() => TabControl = new OverlayHeaderTabControl(); - public class OverlayHeaderTabControl : OverlayTabControl + public class OverlayHeaderTabControl : OverlayTabControl { public OverlayHeaderTabControl() { @@ -25,9 +26,15 @@ namespace osu.Game.Overlays Anchor = Anchor.BottomLeft; Origin = Anchor.BottomLeft; Height = 35; + + if (typeof(T).IsEnum) + { + foreach (var val in (T[])Enum.GetValues(typeof(T))) + AddItem(val); + } } - protected override TabItem CreateTabItem(string value) => new OverlayHeaderTabItem(value) + protected override TabItem CreateTabItem(T value) => new OverlayHeaderTabItem(value) { AccentColour = AccentColour, }; @@ -42,10 +49,10 @@ namespace osu.Game.Overlays private class OverlayHeaderTabItem : OverlayTabItem { - public OverlayHeaderTabItem(string value) + public OverlayHeaderTabItem(T value) : base(value) { - Text.Text = value; + Text.Text = value.ToString().ToLowerInvariant(); Text.Font = OsuFont.GetFont(size: 14); Bar.ExpandedSize = 5; } From 351aaf41d93765cb7e85a7299e18deffc10df473 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 8 Jan 2020 00:54:02 +0300 Subject: [PATCH 0743/1829] Fix parameter naming --- .../Visual/UserInterface/TestSceneOverlayHeaders.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeaders.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeaders.cs index 3ed5e53260..bede4e38b8 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeaders.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeaders.cs @@ -76,10 +76,10 @@ namespace osu.Game.Tests.Visual.UserInterface Margin = new MarginPadding(20), Text = name, }, - header.With(header => + header.With(h => { - header.Anchor = Anchor.TopCentre; - header.Origin = Anchor.TopCentre; + h.Anchor = Anchor.TopCentre; + h.Origin = Anchor.TopCentre; }) } }); From 2688a855a0ab397e411aa225438ea5cbd9fcac1a Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 8 Jan 2020 14:14:46 +0900 Subject: [PATCH 0744/1829] Downgrade NUnit to fix discovery issues --- .../osu.Game.Rulesets.Catch.Tests.csproj | 2 +- .../osu.Game.Rulesets.Mania.Tests.csproj | 2 +- .../osu.Game.Rulesets.Taiko.Tests.csproj | 2 +- osu.Game.Tests/osu.Game.Tests.csproj | 2 +- osu.Game.Tournament.Tests/osu.Game.Tournament.Tests.csproj | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/osu.Game.Rulesets.Catch.Tests/osu.Game.Rulesets.Catch.Tests.csproj b/osu.Game.Rulesets.Catch.Tests/osu.Game.Rulesets.Catch.Tests.csproj index 0b2862e5bb..9559d13328 100644 --- a/osu.Game.Rulesets.Catch.Tests/osu.Game.Rulesets.Catch.Tests.csproj +++ b/osu.Game.Rulesets.Catch.Tests/osu.Game.Rulesets.Catch.Tests.csproj @@ -4,7 +4,7 @@ - + diff --git a/osu.Game.Rulesets.Mania.Tests/osu.Game.Rulesets.Mania.Tests.csproj b/osu.Game.Rulesets.Mania.Tests/osu.Game.Rulesets.Mania.Tests.csproj index 9d362e5819..dea6e6c0fb 100644 --- a/osu.Game.Rulesets.Mania.Tests/osu.Game.Rulesets.Mania.Tests.csproj +++ b/osu.Game.Rulesets.Mania.Tests/osu.Game.Rulesets.Mania.Tests.csproj @@ -4,7 +4,7 @@ - + diff --git a/osu.Game.Rulesets.Taiko.Tests/osu.Game.Rulesets.Taiko.Tests.csproj b/osu.Game.Rulesets.Taiko.Tests/osu.Game.Rulesets.Taiko.Tests.csproj index da89b37fbf..d728d65bfd 100644 --- a/osu.Game.Rulesets.Taiko.Tests/osu.Game.Rulesets.Taiko.Tests.csproj +++ b/osu.Game.Rulesets.Taiko.Tests/osu.Game.Rulesets.Taiko.Tests.csproj @@ -4,7 +4,7 @@ - + diff --git a/osu.Game.Tests/osu.Game.Tests.csproj b/osu.Game.Tests/osu.Game.Tests.csproj index 3f8a548fd5..6c799e5e90 100644 --- a/osu.Game.Tests/osu.Game.Tests.csproj +++ b/osu.Game.Tests/osu.Game.Tests.csproj @@ -5,7 +5,7 @@ - + diff --git a/osu.Game.Tournament.Tests/osu.Game.Tournament.Tests.csproj b/osu.Game.Tournament.Tests/osu.Game.Tournament.Tests.csproj index 75b88be1ab..7ecfd6ef70 100644 --- a/osu.Game.Tournament.Tests/osu.Game.Tournament.Tests.csproj +++ b/osu.Game.Tournament.Tests/osu.Game.Tournament.Tests.csproj @@ -7,7 +7,7 @@ - + WinExe From 6dd45e52ef45028104978e785ad79a05995f7654 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 8 Jan 2020 17:22:51 +0900 Subject: [PATCH 0745/1829] Move text definition inside class --- osu.Game/Online/Leaderboards/Leaderboard.cs | 2 +- osu.Game/Online/Placeholders/LoginPlaceholder.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game/Online/Leaderboards/Leaderboard.cs b/osu.Game/Online/Leaderboards/Leaderboard.cs index 095e552ddd..55233bef6e 100644 --- a/osu.Game/Online/Leaderboards/Leaderboard.cs +++ b/osu.Game/Online/Leaderboards/Leaderboard.cs @@ -151,7 +151,7 @@ namespace osu.Game.Online.Leaderboards break; case PlaceholderState.NotLoggedIn: - replacePlaceholder(new LoginPlaceholder(@"Please sign in to view online leaderboards!")); + replacePlaceholder(new LoginPlaceholder()); break; case PlaceholderState.NotSupporter: diff --git a/osu.Game/Online/Placeholders/LoginPlaceholder.cs b/osu.Game/Online/Placeholders/LoginPlaceholder.cs index a613d7344a..ffc6623229 100644 --- a/osu.Game/Online/Placeholders/LoginPlaceholder.cs +++ b/osu.Game/Online/Placeholders/LoginPlaceholder.cs @@ -14,7 +14,7 @@ namespace osu.Game.Online.Placeholders [Resolved(CanBeNull = true)] private LoginOverlay login { get; set; } - public LoginPlaceholder(string action) + public LoginPlaceholder() { AddIcon(FontAwesome.Solid.UserLock, cp => { @@ -22,7 +22,7 @@ namespace osu.Game.Online.Placeholders cp.Padding = new MarginPadding { Right = 10 }; }); - AddText(action); + AddText(@"Please sign in to view online leaderboards!"); } protected override bool OnMouseDown(MouseDownEvent e) From c2fc7d5cbdb721887020dabc326bcf4443855da4 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Mon, 6 Jan 2020 19:48:28 +0800 Subject: [PATCH 0746/1829] Add empty benchmark project. --- osu.Desktop.slnf | 1 + osu.Game.Benchmarks/Program.cs | 13 +++++++++++++ osu.Game.Benchmarks/osu.Game.Benchmarks.csproj | 9 +++++++++ osu.sln | 14 ++++++++++++++ 4 files changed, 37 insertions(+) create mode 100644 osu.Game.Benchmarks/Program.cs create mode 100644 osu.Game.Benchmarks/osu.Game.Benchmarks.csproj diff --git a/osu.Desktop.slnf b/osu.Desktop.slnf index e6b6446f72..d2c14d321a 100644 --- a/osu.Desktop.slnf +++ b/osu.Desktop.slnf @@ -3,6 +3,7 @@ "path": "osu.sln", "projects": [ "osu.Desktop\\osu.Desktop.csproj", + "osu.Game.Benchmarks\\osu.Game.Benchmarks.csproj", "osu.Game.Rulesets.Catch.Tests\\osu.Game.Rulesets.Catch.Tests.csproj", "osu.Game.Rulesets.Catch\\osu.Game.Rulesets.Catch.csproj", "osu.Game.Rulesets.Mania.Tests\\osu.Game.Rulesets.Mania.Tests.csproj", diff --git a/osu.Game.Benchmarks/Program.cs b/osu.Game.Benchmarks/Program.cs new file mode 100644 index 0000000000..ebd30c0a7a --- /dev/null +++ b/osu.Game.Benchmarks/Program.cs @@ -0,0 +1,13 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +namespace osu.Game.Benchmarks +{ + public static class Program + { + public static void Main(string[] args) + { + + } + } +} diff --git a/osu.Game.Benchmarks/osu.Game.Benchmarks.csproj b/osu.Game.Benchmarks/osu.Game.Benchmarks.csproj new file mode 100644 index 0000000000..65bfa2be14 --- /dev/null +++ b/osu.Game.Benchmarks/osu.Game.Benchmarks.csproj @@ -0,0 +1,9 @@ + + + + netcoreapp3.1 + Exe + false + + + diff --git a/osu.sln b/osu.sln index 79823848f0..1d64f6ff10 100644 --- a/osu.sln +++ b/osu.sln @@ -65,6 +65,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution osu.TestProject.props = osu.TestProject.props EndProjectSection EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "osu.Game.Benchmarks", "osu.Game.Benchmarks\osu.Game.Benchmarks.csproj", "{93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -399,6 +401,18 @@ Global {5CC222DC-5716-4499-B897-DCBDDA4A5CF9}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU {5CC222DC-5716-4499-B897-DCBDDA4A5CF9}.Release|iPhoneSimulator.Build.0 = Release|Any CPU {5CC222DC-5716-4499-B897-DCBDDA4A5CF9}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU + {93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Debug|Any CPU.Build.0 = Debug|Any CPU + {93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Debug|iPhone.Build.0 = Debug|Any CPU + {93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Release|Any CPU.ActiveCfg = Release|Any CPU + {93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Release|Any CPU.Build.0 = Release|Any CPU + {93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Release|iPhone.ActiveCfg = Release|Any CPU + {93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Release|iPhone.Build.0 = Release|Any CPU + {93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Release|iPhoneSimulator.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE From 1b9f8d27372f247ee3213ec7422536a691a470af Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Wed, 8 Jan 2020 20:36:00 +0800 Subject: [PATCH 0747/1829] Add benchmark runner. --- osu.Game.Benchmarks/BenchmarkTest.cs | 23 +++++++++++++++++++ osu.Game.Benchmarks/Program.cs | 6 ++++- .../osu.Game.Benchmarks.csproj | 10 ++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 osu.Game.Benchmarks/BenchmarkTest.cs diff --git a/osu.Game.Benchmarks/BenchmarkTest.cs b/osu.Game.Benchmarks/BenchmarkTest.cs new file mode 100644 index 0000000000..34f5edd084 --- /dev/null +++ b/osu.Game.Benchmarks/BenchmarkTest.cs @@ -0,0 +1,23 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using BenchmarkDotNet.Attributes; +using BenchmarkDotNet.Running; +using NUnit.Framework; + +namespace osu.Game.Benchmarks +{ + [TestFixture] + [MemoryDiagnoser] + public abstract class BenchmarkTest + { + [GlobalSetup] + [OneTimeSetUp] + public virtual void SetUp() + { + } + + [Test] + public void RunBenchmark() => BenchmarkRunner.Run(GetType()); + } +} diff --git a/osu.Game.Benchmarks/Program.cs b/osu.Game.Benchmarks/Program.cs index ebd30c0a7a..c55075fea6 100644 --- a/osu.Game.Benchmarks/Program.cs +++ b/osu.Game.Benchmarks/Program.cs @@ -1,13 +1,17 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. +using BenchmarkDotNet.Running; + namespace osu.Game.Benchmarks { public static class Program { public static void Main(string[] args) { - + BenchmarkSwitcher + .FromAssembly(typeof(Program).Assembly) + .Run(args); } } } diff --git a/osu.Game.Benchmarks/osu.Game.Benchmarks.csproj b/osu.Game.Benchmarks/osu.Game.Benchmarks.csproj index 65bfa2be14..3281fcc855 100644 --- a/osu.Game.Benchmarks/osu.Game.Benchmarks.csproj +++ b/osu.Game.Benchmarks/osu.Game.Benchmarks.csproj @@ -6,4 +6,14 @@ false + + + + + + + + + + From bd22d5b0f44522bf8293cfb9e8f9e69232534a6c Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Wed, 8 Jan 2020 21:31:58 +0800 Subject: [PATCH 0748/1829] Add benchmark launch profiles. --- .../.idea/runConfigurations/Benchmarks.xml | 20 +++++++++++++++++ .vscode/launch.json | 19 ++++++++++++++-- .vscode/tasks.json | 22 +++++++++++++++++-- .../Properties/launchSettings.json | 8 +++++++ 4 files changed, 65 insertions(+), 4 deletions(-) create mode 100644 .idea/.idea.osu.Desktop/.idea/runConfigurations/Benchmarks.xml create mode 100644 osu.Game.Benchmarks/Properties/launchSettings.json diff --git a/.idea/.idea.osu.Desktop/.idea/runConfigurations/Benchmarks.xml b/.idea/.idea.osu.Desktop/.idea/runConfigurations/Benchmarks.xml new file mode 100644 index 0000000000..1815c271b4 --- /dev/null +++ b/.idea/.idea.osu.Desktop/.idea/runConfigurations/Benchmarks.xml @@ -0,0 +1,20 @@ + + + + \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json index e7b691909e..6480612b2e 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,6 +1,7 @@ { "version": "0.2.0", - "configurations": [{ + "configurations": [ + { "name": "osu! (Debug)", "type": "coreclr", "request": "launch", @@ -50,7 +51,8 @@ } }, "console": "internalConsole" - }, { + }, + { "name": "osu! (Tests, Release)", "type": "coreclr", "request": "launch", @@ -139,6 +141,19 @@ }, "console": "internalConsole" }, + { + "name": "Benchmark", + "type": "coreclr", + "request": "launch", + "program": "${workspaceRoot}/osu.Game.Benchmarks/bin/Release/netcoreapp3.1/osu.Game.Benchmarks.dll", + "args": [ + "--filter", + "*" + ], + "cwd": "${workspaceRoot}", + "preLaunchTask": "Build benchmarks", + "console": "internalConsole" + }, { "name": "Cake: Debug Script", "type": "coreclr", diff --git a/.vscode/tasks.json b/.vscode/tasks.json index c087800d2a..e638dec767 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -2,7 +2,8 @@ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", - "tasks": [{ + "tasks": [ + { "label": "Build osu! (Debug)", "type": "shell", "command": "dotnet", @@ -78,7 +79,8 @@ ], "group": "build", "problemMatcher": "$msCompile" - }, { + }, + { "label": "Build tournament tests (Release)", "type": "shell", "command": "dotnet", @@ -94,6 +96,22 @@ "group": "build", "problemMatcher": "$msCompile" }, + { + "label": "Build benchmarks", + "type": "shell", + "command": "dotnet", + "args": [ + "build", + "--no-restore", + "osu.Game.Benchmarks", + "/p:Configuration=Release", + "/p:GenerateFullPaths=true", + "/m", + "/verbosity:m" + ], + "group": "build", + "problemMatcher": "$msCompile" + }, { "label": "Restore (netcoreapp3.1)", "type": "shell", diff --git a/osu.Game.Benchmarks/Properties/launchSettings.json b/osu.Game.Benchmarks/Properties/launchSettings.json new file mode 100644 index 0000000000..c1868088f9 --- /dev/null +++ b/osu.Game.Benchmarks/Properties/launchSettings.json @@ -0,0 +1,8 @@ +{ + "profiles": { + "All Benchmarks": { + "commandName": "Project", + "commandLineArgs": "--filter *" + } + } +} \ No newline at end of file From 7f393c61f8679e4a57847a97a07d6988b1b3a2f4 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Wed, 8 Jan 2020 21:55:39 +0800 Subject: [PATCH 0749/1829] Add BDN artifacts to gitignore. --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index e6b5db5904..732b171f69 100644 --- a/.gitignore +++ b/.gitignore @@ -331,3 +331,6 @@ fastlane/report.xml # inspectcode inspectcodereport.xml inspectcode + +# BenchmarkDotNet +/BenchmarkDotNet.Artifacts From 14289523777302fbcb3aa3c524964f9d43a365af Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 8 Jan 2020 18:59:13 +0300 Subject: [PATCH 0750/1829] Implement CountryFilter component for RankingsOverlay --- .../Online/TestSceneRankingsCountryFilter.cs | 45 ++++ osu.Game/Overlays/Rankings/CountryFilter.cs | 231 ++++++++++++++++++ 2 files changed, 276 insertions(+) create mode 100644 osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs create mode 100644 osu.Game/Overlays/Rankings/CountryFilter.cs diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs new file mode 100644 index 0000000000..968be62a7c --- /dev/null +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs @@ -0,0 +1,45 @@ +// 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.Bindables; +using osu.Game.Overlays.Rankings; +using osu.Game.Users; + +namespace osu.Game.Tests.Visual.Online +{ + public class TestSceneRankingsCountryFilter : OsuTestScene + { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(CountryFilter), + }; + + public TestSceneRankingsCountryFilter() + { + var countryBindable = new Bindable(); + CountryFilter filter; + + Add(filter = new CountryFilter + { + Country = { BindTarget = countryBindable } + }); + + var country = new Country + { + FlagName = "BY", + FullName = "Belarus" + }; + var unknownCountry = new Country + { + FlagName = "CK", + FullName = "Cook Islands" + }; + + AddStep("Set country", () => countryBindable.Value = country); + AddStep("Set null country", () => countryBindable.Value = null); + AddStep("Set country with no flag", () => countryBindable.Value = unknownCountry); + } + } +} diff --git a/osu.Game/Overlays/Rankings/CountryFilter.cs b/osu.Game/Overlays/Rankings/CountryFilter.cs new file mode 100644 index 0000000000..4a24a440cc --- /dev/null +++ b/osu.Game/Overlays/Rankings/CountryFilter.cs @@ -0,0 +1,231 @@ +// 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 osu.Framework.Allocation; +using osu.Framework.Bindables; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; +using osu.Framework.Graphics.Sprites; +using osu.Framework.Input.Events; +using osu.Game.Graphics; +using osu.Game.Graphics.Sprites; +using osu.Game.Graphics.UserInterface; +using osu.Game.Users; +using osu.Game.Users.Drawables; +using osuTK; + +namespace osu.Game.Overlays.Rankings +{ + public class CountryFilter : Container + { + private const int duration = 200; + private const int height = 50; + + public readonly Bindable Country = new Bindable(); + + private readonly Box background; + private readonly CountryPill countryPill; + private readonly Container content; + + public CountryFilter() + { + RelativeSizeAxes = Axes.X; + Child = content = new Container + { + RelativeSizeAxes = Axes.X, + Height = height, + Alpha = 0, + Children = new Drawable[] + { + background = new Box + { + RelativeSizeAxes = Axes.Both + }, + new FillFlowContainer + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(10, 0), + Margin = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN }, + Children = new Drawable[] + { + new OsuSpriteText + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + Text = @"filtered by country:", + Font = OsuFont.GetFont(size: 14) + }, + countryPill = new CountryPill + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + Alpha = 0, + Country = { BindTarget = Country } + } + } + } + } + }; + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + background.Colour = colours.GreySeafoam; + } + + protected override void LoadComplete() + { + base.LoadComplete(); + Country.BindValueChanged(onCountryChanged, true); + } + + private void onCountryChanged(ValueChangedEvent country) + { + countryPill.ClearTransforms(); + + if (country.NewValue == null) + { + countryPill.Collapse(); + this.ResizeHeightTo(0, duration, Easing.OutQuint); + content.FadeOut(duration, Easing.OutQuint); + return; + } + + this.ResizeHeightTo(height, duration, Easing.OutQuint); + content.FadeIn(duration, Easing.OutQuint).Finally(_ => countryPill.Expand()); + } + + private class CountryPill : CircularContainer + { + private readonly Box background; + private readonly UpdateableFlag flag; + private readonly OsuSpriteText countryName; + + public readonly Bindable Country = new Bindable(); + + public CountryPill() + { + AutoSizeDuration = duration; + AutoSizeEasing = Easing.OutQuint; + Height = 25; + Masking = true; + Children = new Drawable[] + { + background = new Box + { + RelativeSizeAxes = Axes.Both + }, + new FillFlowContainer + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + RelativeSizeAxes = Axes.Y, + AutoSizeAxes = Axes.X, + Margin = new MarginPadding { Horizontal = 10 }, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(8, 0), + Children = new Drawable[] + { + new FillFlowContainer + { + RelativeSizeAxes = Axes.Y, + AutoSizeAxes = Axes.X, + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(3, 0), + Children = new Drawable[] + { + flag = new UpdateableFlag + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Size = new Vector2(22, 15) + }, + countryName = new OsuSpriteText + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Font = OsuFont.GetFont(size: 14) + } + } + }, + new CloseButton + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + ClickAction = () => Country.Value = null + } + } + } + }; + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + background.Colour = colours.GreySeafoamDarker; + } + + protected override void LoadComplete() + { + base.LoadComplete(); + Country.BindValueChanged(onCountryChanged, true); + } + + public void Expand() + { + AutoSizeAxes = Axes.X; + this.FadeIn(duration, Easing.OutQuint); + } + + public void Collapse() + { + AutoSizeAxes = Axes.None; + this.ResizeWidthTo(0, duration, Easing.OutQuint); + this.FadeOut(duration, Easing.OutQuint); + } + + private void onCountryChanged(ValueChangedEvent country) + { + if (country.NewValue == null) + return; + + flag.Country = country.NewValue; + countryName.Text = country.NewValue.FullName; + } + + private class CloseButton : Container + { + public Action ClickAction; + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + AutoSizeAxes = Axes.Both; + Children = new Drawable[] + { + new SpriteIcon + { + Size = new Vector2(8), + Icon = FontAwesome.Solid.Times, + Colour = colours.GreySeafoamLighter, + }, + new HoverClickSounds(), + }; + } + + protected override bool OnClick(ClickEvent e) + { + ClickAction?.Invoke(); + return base.OnClick(e); + } + } + } + } +} From dc64ba8ed81d21aef0c4368f53c5fcfda795161a Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 8 Jan 2020 19:22:07 +0300 Subject: [PATCH 0751/1829] Remove unused variable --- osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs index 968be62a7c..9a8ddf9cad 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs @@ -19,9 +19,8 @@ namespace osu.Game.Tests.Visual.Online public TestSceneRankingsCountryFilter() { var countryBindable = new Bindable(); - CountryFilter filter; - Add(filter = new CountryFilter + Add(new CountryFilter { Country = { BindTarget = countryBindable } }); From 1dbae21f981852f878154d73af241d7e44e0073a Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 8 Jan 2020 19:40:28 +0300 Subject: [PATCH 0752/1829] Fix crashing test --- osu.Game/Overlays/Rankings/CountryFilter.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game/Overlays/Rankings/CountryFilter.cs b/osu.Game/Overlays/Rankings/CountryFilter.cs index 4a24a440cc..008214a9a4 100644 --- a/osu.Game/Overlays/Rankings/CountryFilter.cs +++ b/osu.Game/Overlays/Rankings/CountryFilter.cs @@ -86,6 +86,7 @@ namespace osu.Game.Overlays.Rankings private void onCountryChanged(ValueChangedEvent country) { + content.ClearTransforms(); countryPill.ClearTransforms(); if (country.NewValue == null) From a3f7d3c4454ba53e61ef521a23d069c4ec74ebb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Wed, 8 Jan 2020 19:55:35 +0100 Subject: [PATCH 0753/1829] Add failing test Add test case demonstrating the lack of update of the metadata display's mods upon setting the Mods property in PlayerLoader. --- .../Visual/Gameplay/TestScenePlayerLoader.cs | 14 +++++++++++++ osu.Game/Screens/Play/PlayerLoader.cs | 20 ++++++++++--------- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs index f68f4b8b83..fd3037341b 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs @@ -146,6 +146,18 @@ namespace osu.Game.Tests.Visual.Gameplay AddAssert("player mods applied", () => playerMod2.Applied); } + [Test] + public void TestModDisplayChanges() + { + var testMod = new TestMod(); + + AddStep("load player", () => ResetPlayer(true)); + + AddUntilStep("wait for loader to become current", () => loader.IsCurrentScreen()); + AddStep("set test mod in loader", () => loader.Mods.Value = new[] { testMod }); + AddAssert("test mod is displayed", () => (TestMod)loader.DisplayedMods.Single() == testMod); + } + [Test] public void TestMutedNotificationMasterVolume() => addVolumeSteps("master volume", () => audioManager.Volume.Value = 0, null, () => audioManager.Volume.IsDefault); @@ -221,6 +233,8 @@ namespace osu.Game.Tests.Visual.Gameplay public new Task DisposalTask => base.DisposalTask; + public IReadOnlyList DisplayedMods => MetadataInfo.Mods; + public TestPlayerLoader(Func createPlayer) : base(createPlayer) { diff --git a/osu.Game/Screens/Play/PlayerLoader.cs b/osu.Game/Screens/Play/PlayerLoader.cs index 64fcc48004..f200c8e0ae 100644 --- a/osu.Game/Screens/Play/PlayerLoader.cs +++ b/osu.Game/Screens/Play/PlayerLoader.cs @@ -44,7 +44,7 @@ namespace osu.Game.Screens.Play private LogoTrackingContainer content; - private BeatmapMetadataDisplay info; + protected BeatmapMetadataDisplay MetadataInfo; private bool hideOverlays; public override bool HideOverlaysOnEnter => hideOverlays; @@ -96,7 +96,7 @@ namespace osu.Game.Screens.Play RelativeSizeAxes = Axes.Both, }).WithChildren(new Drawable[] { - info = new BeatmapMetadataDisplay(Beatmap.Value, Mods.Value, content.LogoFacade) + MetadataInfo = new BeatmapMetadataDisplay(Beatmap.Value, Mods.Value, content.LogoFacade) { Alpha = 0, Anchor = Anchor.Centre, @@ -138,7 +138,7 @@ namespace osu.Game.Screens.Play contentIn(); - info.Delay(750).FadeIn(500); + MetadataInfo.Delay(750).FadeIn(500); this.Delay(1800).Schedule(pushWhenLoaded); if (!muteWarningShownOnce.Value) @@ -158,7 +158,7 @@ namespace osu.Game.Screens.Play contentIn(); - info.Loading = true; + MetadataInfo.Loading = true; //we will only be resumed if the player has requested a re-run (see ValidForResume setting above) loadNewPlayer(); @@ -174,7 +174,7 @@ namespace osu.Game.Screens.Play player.RestartCount = restartCount; player.RestartRequested = restartRequested; - LoadTask = LoadComponentAsync(player, _ => info.Loading = false); + LoadTask = LoadComponentAsync(player, _ => MetadataInfo.Loading = false); } private void contentIn() @@ -350,7 +350,7 @@ namespace osu.Game.Screens.Play } } - private class BeatmapMetadataDisplay : Container + protected class BeatmapMetadataDisplay : Container { private class MetadataLine : Container { @@ -379,11 +379,12 @@ namespace osu.Game.Screens.Play } private readonly WorkingBeatmap beatmap; - private readonly IReadOnlyList mods; private readonly Drawable facade; private LoadingAnimation loading; private Sprite backgroundSprite; + public IReadOnlyList Mods { get; } + public bool Loading { set @@ -404,8 +405,9 @@ namespace osu.Game.Screens.Play public BeatmapMetadataDisplay(WorkingBeatmap beatmap, IReadOnlyList mods, Drawable facade) { this.beatmap = beatmap; - this.mods = mods; this.facade = facade; + + Mods = mods; } [BackgroundDependencyLoader] @@ -492,7 +494,7 @@ namespace osu.Game.Screens.Play Origin = Anchor.TopCentre, AutoSizeAxes = Axes.Both, Margin = new MarginPadding { Top = 20 }, - Current = { Value = mods } + Current = { Value = Mods } } }, } From f0fe3bc804738cb518c5234566cfbf511df1b8a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Wed, 8 Jan 2020 20:10:43 +0100 Subject: [PATCH 0754/1829] Pass bindable to BeatmapMetadataDisplay It was reported that mods selected in song select would show up during loading of replays which were recorded under a different set of mods. This was caused by BeatmapMetadataDisplay accepting a plain read-only value of the Mods bindable in PlayerLoader.load(), therefore making the mod value assignment in ReplayPlayerLoader.OnEntering() have no effect on that component. To resolve this issue, make BeatmapMetadataDisplay accept the higher-level bindable, bind to it locally and pass it down the hierarchy to ModDisplay. --- .../Visual/Gameplay/TestScenePlayerLoader.cs | 2 +- osu.Game/Screens/Play/PlayerLoader.cs | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs index fd3037341b..587281ef11 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs @@ -233,7 +233,7 @@ namespace osu.Game.Tests.Visual.Gameplay public new Task DisposalTask => base.DisposalTask; - public IReadOnlyList DisplayedMods => MetadataInfo.Mods; + public IReadOnlyList DisplayedMods => MetadataInfo.Mods.Value; public TestPlayerLoader(Func createPlayer) : base(createPlayer) diff --git a/osu.Game/Screens/Play/PlayerLoader.cs b/osu.Game/Screens/Play/PlayerLoader.cs index f200c8e0ae..f37faac988 100644 --- a/osu.Game/Screens/Play/PlayerLoader.cs +++ b/osu.Game/Screens/Play/PlayerLoader.cs @@ -96,7 +96,7 @@ namespace osu.Game.Screens.Play RelativeSizeAxes = Axes.Both, }).WithChildren(new Drawable[] { - MetadataInfo = new BeatmapMetadataDisplay(Beatmap.Value, Mods.Value, content.LogoFacade) + MetadataInfo = new BeatmapMetadataDisplay(Beatmap.Value, Mods, content.LogoFacade) { Alpha = 0, Anchor = Anchor.Centre, @@ -379,11 +379,12 @@ namespace osu.Game.Screens.Play } private readonly WorkingBeatmap beatmap; + private readonly Bindable> mods; private readonly Drawable facade; private LoadingAnimation loading; private Sprite backgroundSprite; - public IReadOnlyList Mods { get; } + public IBindable> Mods => mods; public bool Loading { @@ -402,12 +403,13 @@ namespace osu.Game.Screens.Play } } - public BeatmapMetadataDisplay(WorkingBeatmap beatmap, IReadOnlyList mods, Drawable facade) + public BeatmapMetadataDisplay(WorkingBeatmap beatmap, Bindable> mods, Drawable facade) { this.beatmap = beatmap; this.facade = facade; - Mods = mods; + this.mods = new Bindable>(); + this.mods.BindTo(mods); } [BackgroundDependencyLoader] @@ -494,7 +496,7 @@ namespace osu.Game.Screens.Play Origin = Anchor.TopCentre, AutoSizeAxes = Axes.Both, Margin = new MarginPadding { Top = 20 }, - Current = { Value = Mods } + Current = mods } }, } From 34d8740ec430215a5bcf7caff3ace0669de7b265 Mon Sep 17 00:00:00 2001 From: Berkan Diler Date: Wed, 8 Jan 2020 20:21:13 +0100 Subject: [PATCH 0755/1829] Remove remaining usage of osuTK.MathHelper --- .../Objects/Drawables/DrawableRepeatPoint.cs | 3 ++- .../Objects/Drawables/Pieces/SnakingSliderBody.cs | 6 +++++- .../Objects/Drawables/Pieces/SpinnerDisc.cs | 3 ++- osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs | 3 ++- osu.Game/Graphics/Cursor/MenuCursor.cs | 3 ++- osu.Game/Screens/Menu/LogoVisualisation.cs | 5 +++-- 6 files changed, 16 insertions(+), 7 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs index b81d94a673..94fa0272f8 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs @@ -13,6 +13,7 @@ using osu.Game.Rulesets.Osu.Objects.Drawables.Pieces; using osu.Game.Rulesets.Scoring; using osuTK; using osu.Game.Skinning; +using osu.Framework.Utils; namespace osu.Game.Rulesets.Osu.Objects.Drawables { @@ -121,7 +122,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables break; } - float aimRotation = MathHelper.RadiansToDegrees(MathF.Atan2(aimRotationVector.Y - Position.Y, aimRotationVector.X - Position.X)); + float aimRotation = MathUtils.RadiansToDegrees(MathF.Atan2(aimRotationVector.Y - Position.Y, aimRotationVector.X - Position.X)); while (Math.Abs(aimRotation - Rotation) > 180) aimRotation += aimRotation < Rotation ? 360 : -360; diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SnakingSliderBody.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SnakingSliderBody.cs index 8a8668d6af..765b3ef456 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SnakingSliderBody.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SnakingSliderBody.cs @@ -125,7 +125,11 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces private void setRange(double p0, double p1) { if (p0 > p1) - MathHelper.Swap(ref p0, ref p1); + { + double temp = p0; + p0 = p1; + p1 = temp; + } if (SnakedStart == p0 && SnakedEnd == p1) return; diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerDisc.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerDisc.cs index c45e98cc76..e3dd2b1b4f 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerDisc.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerDisc.cs @@ -8,6 +8,7 @@ using osu.Framework.Input.Events; using osu.Game.Graphics; using osuTK; using osuTK.Graphics; +using osu.Framework.Utils; namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces { @@ -93,7 +94,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces { base.Update(); - var thisAngle = -(float)MathHelper.RadiansToDegrees(Math.Atan2(mousePosition.X - DrawSize.X / 2, mousePosition.Y - DrawSize.Y / 2)); + var thisAngle = -MathUtils.RadiansToDegrees(MathF.Atan2(mousePosition.X - DrawSize.X / 2, mousePosition.Y - DrawSize.Y / 2)); bool validAndTracking = tracking && spinner.StartTime <= Time.Current && spinner.EndTime > Time.Current; diff --git a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs index b1b27278fe..c46634e72f 100644 --- a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs @@ -12,6 +12,7 @@ using osu.Framework.Graphics; using osu.Game.IO; using osu.Game.Storyboards; using osu.Game.Beatmaps.Legacy; +using osu.Framework.Utils; namespace osu.Game.Beatmaps.Formats { @@ -190,7 +191,7 @@ namespace osu.Game.Beatmaps.Formats { var startValue = float.Parse(split[4], CultureInfo.InvariantCulture); var endValue = split.Length > 5 ? float.Parse(split[5], CultureInfo.InvariantCulture) : startValue; - timelineGroup?.Rotation.Add(easing, startTime, endTime, MathHelper.RadiansToDegrees(startValue), MathHelper.RadiansToDegrees(endValue)); + timelineGroup?.Rotation.Add(easing, startTime, endTime, MathUtils.RadiansToDegrees(startValue), MathUtils.RadiansToDegrees(endValue)); break; } diff --git a/osu.Game/Graphics/Cursor/MenuCursor.cs b/osu.Game/Graphics/Cursor/MenuCursor.cs index 5a83d8e4ce..170ea63059 100644 --- a/osu.Game/Graphics/Cursor/MenuCursor.cs +++ b/osu.Game/Graphics/Cursor/MenuCursor.cs @@ -14,6 +14,7 @@ using osu.Framework.Bindables; using osu.Framework.Graphics.Textures; using osu.Framework.Input.Events; using osuTK.Input; +using osu.Framework.Utils; namespace osu.Game.Graphics.Cursor { @@ -55,7 +56,7 @@ namespace osu.Game.Graphics.Cursor if (dragRotationState == DragRotationState.Rotating && distance > 0) { Vector2 offset = e.MousePosition - positionMouseDown; - float degrees = (float)MathHelper.RadiansToDegrees(Math.Atan2(-offset.X, offset.Y)) + 24.3f; + float degrees = MathUtils.RadiansToDegrees(MathF.Atan2(-offset.X, offset.Y)) + 24.3f; // Always rotate in the direction of least distance float diff = (degrees - activeCursor.Rotation) % 360; diff --git a/osu.Game/Screens/Menu/LogoVisualisation.cs b/osu.Game/Screens/Menu/LogoVisualisation.cs index 1a625f8d83..8fc07f5989 100644 --- a/osu.Game/Screens/Menu/LogoVisualisation.cs +++ b/osu.Game/Screens/Menu/LogoVisualisation.cs @@ -19,6 +19,7 @@ using System; using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Extensions.Color4Extensions; +using osu.Framework.Utils; namespace osu.Game.Screens.Menu { @@ -205,13 +206,13 @@ namespace osu.Game.Screens.Menu if (audioData[i] < amplitude_dead_zone) continue; - float rotation = MathHelper.DegreesToRadians(i / (float)bars_per_visualiser * 360 + j * 360 / visualiser_rounds); + float rotation = MathUtils.DegreesToRadians(i / (float)bars_per_visualiser * 360 + j * 360 / visualiser_rounds); float rotationCos = MathF.Cos(rotation); float rotationSin = MathF.Sin(rotation); //taking the cos and sin to the 0..1 range var barPosition = new Vector2(rotationCos / 2 + 0.5f, rotationSin / 2 + 0.5f) * size; - var barSize = new Vector2(size * (float)Math.Sqrt(2 * (1 - Math.Cos(MathHelper.DegreesToRadians(360f / bars_per_visualiser)))) / 2f, bar_length * audioData[i]); + var barSize = new Vector2(size * MathF.Sqrt(2 * (1 - MathF.Cos(MathUtils.DegreesToRadians(360f / bars_per_visualiser)))) / 2f, bar_length * audioData[i]); //The distance between the position and the sides of the bar. var bottomOffset = new Vector2(-rotationSin * barSize.X / 2, rotationCos * barSize.X / 2); //The distance between the bottom side of the bar and the top side. From ed2bf5154ddf87ac94702d5fa1284495701d2af4 Mon Sep 17 00:00:00 2001 From: Berkan Diler Date: Wed, 8 Jan 2020 20:46:17 +0100 Subject: [PATCH 0756/1829] Use tuple deconstruction to swap values --- .../Objects/Drawables/Pieces/SnakingSliderBody.cs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SnakingSliderBody.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SnakingSliderBody.cs index 765b3ef456..e24fa865ad 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SnakingSliderBody.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SnakingSliderBody.cs @@ -125,11 +125,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces private void setRange(double p0, double p1) { if (p0 > p1) - { - double temp = p0; - p0 = p1; - p1 = temp; - } + (p0, p1) = (p1, p0); if (SnakedStart == p0 && SnakedEnd == p1) return; From 6cb763a019b3ecc34d47d683390a5b476ee94334 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 9 Jan 2020 00:06:28 +0300 Subject: [PATCH 0757/1829] Improve animations --- osu.Game/Overlays/Rankings/CountryFilter.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/Rankings/CountryFilter.cs b/osu.Game/Overlays/Rankings/CountryFilter.cs index 008214a9a4..5452bc9327 100644 --- a/osu.Game/Overlays/Rankings/CountryFilter.cs +++ b/osu.Game/Overlays/Rankings/CountryFilter.cs @@ -86,9 +86,6 @@ namespace osu.Game.Overlays.Rankings private void onCountryChanged(ValueChangedEvent country) { - content.ClearTransforms(); - countryPill.ClearTransforms(); - if (country.NewValue == null) { countryPill.Collapse(); @@ -98,7 +95,8 @@ namespace osu.Game.Overlays.Rankings } this.ResizeHeightTo(height, duration, Easing.OutQuint); - content.FadeIn(duration, Easing.OutQuint).Finally(_ => countryPill.Expand()); + content.FadeIn(duration, Easing.OutQuint); + countryPill.Expand(); } private class CountryPill : CircularContainer @@ -181,12 +179,14 @@ namespace osu.Game.Overlays.Rankings public void Expand() { + ClearTransforms(); AutoSizeAxes = Axes.X; this.FadeIn(duration, Easing.OutQuint); } public void Collapse() { + ClearTransforms(); AutoSizeAxes = Axes.None; this.ResizeWidthTo(0, duration, Easing.OutQuint); this.FadeOut(duration, Easing.OutQuint); From 29c4ae68d91e8bb06f6197eb7da2ee24dc2725bb Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 9 Jan 2020 00:14:29 +0300 Subject: [PATCH 0758/1829] Add some content to test scene for better visual representation --- .../Online/TestSceneRankingsCountryFilter.cs | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs index 9a8ddf9cad..360bb81715 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs @@ -4,8 +4,13 @@ using System; using System.Collections.Generic; using osu.Framework.Bindables; +using osu.Framework.Graphics.Containers; using osu.Game.Overlays.Rankings; using osu.Game.Users; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Shapes; +using osuTK.Graphics; +using osu.Game.Graphics.Sprites; namespace osu.Game.Tests.Visual.Online { @@ -20,9 +25,35 @@ namespace osu.Game.Tests.Visual.Online { var countryBindable = new Bindable(); - Add(new CountryFilter + AddRange(new Drawable[] { - Country = { BindTarget = countryBindable } + new Box + { + RelativeSizeAxes = Axes.Both, + Colour = Color4.Gray, + }, + new FillFlowContainer + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Direction = FillDirection.Vertical, + Children = new Drawable[] + { + new CountryFilter + { + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, + Country = { BindTarget = countryBindable } + }, + new OsuSpriteText + { + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, + Text = "Some content", + Margin = new MarginPadding { Vertical = 20 } + } + } + } }); var country = new Country From 0d9fb065da462b36074c9b292cc50c001b39236a Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 9 Jan 2020 00:27:22 +0300 Subject: [PATCH 0759/1829] Move CountryPill to it's own class --- .../Online/TestSceneRankingsCountryFilter.cs | 1 + osu.Game/Overlays/Rankings/CountryFilter.cs | 135 ---------------- osu.Game/Overlays/Rankings/CountryPill.cs | 149 ++++++++++++++++++ 3 files changed, 150 insertions(+), 135 deletions(-) create mode 100644 osu.Game/Overlays/Rankings/CountryPill.cs diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs index 360bb81715..3d38710b59 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs @@ -19,6 +19,7 @@ namespace osu.Game.Tests.Visual.Online public override IReadOnlyList RequiredTypes => new[] { typeof(CountryFilter), + typeof(CountryPill) }; public TestSceneRankingsCountryFilter() diff --git a/osu.Game/Overlays/Rankings/CountryFilter.cs b/osu.Game/Overlays/Rankings/CountryFilter.cs index 5452bc9327..7cd56100db 100644 --- a/osu.Game/Overlays/Rankings/CountryFilter.cs +++ b/osu.Game/Overlays/Rankings/CountryFilter.cs @@ -1,19 +1,14 @@ // 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 osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; -using osu.Framework.Graphics.Sprites; -using osu.Framework.Input.Events; using osu.Game.Graphics; using osu.Game.Graphics.Sprites; -using osu.Game.Graphics.UserInterface; using osu.Game.Users; -using osu.Game.Users.Drawables; using osuTK; namespace osu.Game.Overlays.Rankings @@ -98,135 +93,5 @@ namespace osu.Game.Overlays.Rankings content.FadeIn(duration, Easing.OutQuint); countryPill.Expand(); } - - private class CountryPill : CircularContainer - { - private readonly Box background; - private readonly UpdateableFlag flag; - private readonly OsuSpriteText countryName; - - public readonly Bindable Country = new Bindable(); - - public CountryPill() - { - AutoSizeDuration = duration; - AutoSizeEasing = Easing.OutQuint; - Height = 25; - Masking = true; - Children = new Drawable[] - { - background = new Box - { - RelativeSizeAxes = Axes.Both - }, - new FillFlowContainer - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - RelativeSizeAxes = Axes.Y, - AutoSizeAxes = Axes.X, - Margin = new MarginPadding { Horizontal = 10 }, - Direction = FillDirection.Horizontal, - Spacing = new Vector2(8, 0), - Children = new Drawable[] - { - new FillFlowContainer - { - RelativeSizeAxes = Axes.Y, - AutoSizeAxes = Axes.X, - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Direction = FillDirection.Horizontal, - Spacing = new Vector2(3, 0), - Children = new Drawable[] - { - flag = new UpdateableFlag - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Size = new Vector2(22, 15) - }, - countryName = new OsuSpriteText - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Font = OsuFont.GetFont(size: 14) - } - } - }, - new CloseButton - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - ClickAction = () => Country.Value = null - } - } - } - }; - } - - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - background.Colour = colours.GreySeafoamDarker; - } - - protected override void LoadComplete() - { - base.LoadComplete(); - Country.BindValueChanged(onCountryChanged, true); - } - - public void Expand() - { - ClearTransforms(); - AutoSizeAxes = Axes.X; - this.FadeIn(duration, Easing.OutQuint); - } - - public void Collapse() - { - ClearTransforms(); - AutoSizeAxes = Axes.None; - this.ResizeWidthTo(0, duration, Easing.OutQuint); - this.FadeOut(duration, Easing.OutQuint); - } - - private void onCountryChanged(ValueChangedEvent country) - { - if (country.NewValue == null) - return; - - flag.Country = country.NewValue; - countryName.Text = country.NewValue.FullName; - } - - private class CloseButton : Container - { - public Action ClickAction; - - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - AutoSizeAxes = Axes.Both; - Children = new Drawable[] - { - new SpriteIcon - { - Size = new Vector2(8), - Icon = FontAwesome.Solid.Times, - Colour = colours.GreySeafoamLighter, - }, - new HoverClickSounds(), - }; - } - - protected override bool OnClick(ClickEvent e) - { - ClickAction?.Invoke(); - return base.OnClick(e); - } - } - } } } diff --git a/osu.Game/Overlays/Rankings/CountryPill.cs b/osu.Game/Overlays/Rankings/CountryPill.cs new file mode 100644 index 0000000000..65fce3b909 --- /dev/null +++ b/osu.Game/Overlays/Rankings/CountryPill.cs @@ -0,0 +1,149 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System.Collections.Generic; +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.Graphics.Sprites; +using osu.Game.Graphics; +using osu.Game.Graphics.Containers; +using osu.Game.Graphics.Sprites; +using osu.Game.Users; +using osu.Game.Users.Drawables; +using osuTK; +using osuTK.Graphics; + +namespace osu.Game.Overlays.Rankings +{ + public class CountryPill : CircularContainer + { + private const int duration = 200; + + private readonly Box background; + private readonly UpdateableFlag flag; + private readonly OsuSpriteText countryName; + + public readonly Bindable Country = new Bindable(); + + public CountryPill() + { + AutoSizeDuration = duration; + AutoSizeEasing = Easing.OutQuint; + Height = 25; + Masking = true; + Children = new Drawable[] + { + background = new Box + { + RelativeSizeAxes = Axes.Both + }, + new FillFlowContainer + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + RelativeSizeAxes = Axes.Y, + AutoSizeAxes = Axes.X, + Margin = new MarginPadding { Horizontal = 10 }, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(8, 0), + Children = new Drawable[] + { + new FillFlowContainer + { + RelativeSizeAxes = Axes.Y, + AutoSizeAxes = Axes.X, + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(3, 0), + Children = new Drawable[] + { + flag = new UpdateableFlag + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Size = new Vector2(22, 15) + }, + countryName = new OsuSpriteText + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Font = OsuFont.GetFont(size: 14) + } + } + }, + new CloseButton + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Action = () => Country.Value = null + } + } + } + }; + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + background.Colour = colours.GreySeafoamDarker; + } + + protected override void LoadComplete() + { + base.LoadComplete(); + Country.BindValueChanged(onCountryChanged, true); + } + + public void Expand() + { + ClearTransforms(); + AutoSizeAxes = Axes.X; + this.FadeIn(duration, Easing.OutQuint); + } + + public void Collapse() + { + ClearTransforms(); + AutoSizeAxes = Axes.None; + this.ResizeWidthTo(0, duration, Easing.OutQuint); + this.FadeOut(duration, Easing.OutQuint); + } + + private void onCountryChanged(ValueChangedEvent country) + { + if (country.NewValue == null) + return; + + flag.Country = country.NewValue; + countryName.Text = country.NewValue.FullName; + } + + private class CloseButton : OsuHoverContainer + { + private readonly SpriteIcon icon; + + protected override IEnumerable EffectTargets => new[] { icon }; + + public CloseButton() + { + AutoSizeAxes = Axes.Both; + Add(icon = new SpriteIcon + { + Size = new Vector2(8), + Icon = FontAwesome.Solid.Times + }); + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + IdleColour = colours.GreySeafoamLighter; + HoverColour = Color4.White; + } + } + } +} From 91735ff367f42a114b04776a728c010d190288ea Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 9 Jan 2020 13:43:44 +0900 Subject: [PATCH 0760/1829] Update MathUtils namespace usages --- osu.Game.Rulesets.Catch.Tests/CatchBeatmapConversionTest.cs | 2 +- osu.Game.Rulesets.Catch/Objects/Drawable/DrawableFruit.cs | 2 +- osu.Game.Rulesets.Catch/Replays/CatchAutoGenerator.cs | 2 +- .../Replays/CatchFramedReplayInputHandler.cs | 2 +- osu.Game.Rulesets.Catch/UI/CatcherArea.cs | 2 +- osu.Game.Rulesets.Mania.Tests/ManiaBeatmapConversionTest.cs | 2 +- osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs | 2 +- .../Beatmaps/Patterns/Legacy/DistanceObjectPatternGenerator.cs | 2 +- osu.Game.Rulesets.Mania/Mods/ManiaModRandom.cs | 2 +- osu.Game.Rulesets.Mania/UI/HitExplosion.cs | 2 +- osu.Game.Rulesets.Osu.Tests/OsuBeatmapConversionTest.cs | 2 +- osu.Game.Rulesets.Osu.Tests/TestSceneOsuDistanceSnapGrid.cs | 2 +- osu.Game.Rulesets.Osu.Tests/TestSceneShaking.cs | 2 +- .../TestSceneSliderSelectionBlueprint.cs | 2 +- osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs | 2 +- osu.Game.Rulesets.Osu/Mods/OsuModFlashlight.cs | 2 +- osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs | 2 +- .../Objects/Drawables/Pieces/SpinnerSpmCounter.cs | 2 +- osu.Game.Rulesets.Osu/Replays/OsuAutoGenerator.cs | 2 +- osu.Game.Rulesets.Osu/Replays/OsuFramedReplayInputHandler.cs | 2 +- osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs | 2 +- osu.Game.Rulesets.Taiko.Tests/TaikoBeatmapConversionTest.cs | 2 +- osu.Game.Rulesets.Taiko.Tests/TestSceneTaikoPlayfield.cs | 2 +- osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableDrumRoll.cs | 2 +- osu.Game.Tests/Gameplay/TestSceneDrainingHealthProcessor.cs | 2 +- .../Visual/Editor/TestSceneZoomableScrollContainer.cs | 2 +- osu.Game.Tests/Visual/Gameplay/TestSceneBarHitErrorMeter.cs | 2 +- .../Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs | 2 +- osu.Game.Tests/Visual/Gameplay/TestSceneGameplayRewinding.cs | 2 +- osu.Game.Tests/Visual/Gameplay/TestSceneKeyCounter.cs | 2 +- osu.Game.Tests/Visual/Gameplay/TestSceneLeadIn.cs | 2 +- osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs | 2 +- osu.Game.Tests/Visual/Gameplay/TestSceneScoreCounter.cs | 2 +- osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs | 2 +- osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapPanel.cs | 2 +- .../Visual/Online/TestSceneBeatmapSetOverlayDetails.cs | 2 +- .../Visual/Online/TestSceneBeatmapSetOverlaySuccessRate.cs | 2 +- osu.Game.Tests/Visual/Online/TestSceneChannelTabControl.cs | 2 +- osu.Game.Tests/Visual/Online/TestSceneScoresContainer.cs | 2 +- osu.Game.Tests/Visual/Online/TestSceneTotalCommentsCounter.cs | 2 +- osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs | 2 +- osu.Game.Tests/Visual/UserInterface/TestSceneCursors.cs | 2 +- .../Visual/UserInterface/TestSceneLogoTrackingContainer.cs | 2 +- .../Visual/UserInterface/TestSceneNotificationOverlay.cs | 2 +- .../Visual/UserInterface/TestSceneNowPlayingOverlay.cs | 2 +- .../Visual/UserInterface/TestSceneToolbarRulesetSelector.cs | 2 +- .../Components/TestSceneMatchScoreDisplay.cs | 2 +- .../Screens/Drawings/Components/VisualiserContainer.cs | 2 +- osu.Game/Graphics/Backgrounds/Triangles.cs | 2 +- osu.Game/Graphics/Containers/LogoTrackingContainer.cs | 2 +- osu.Game/Graphics/Containers/ParallaxContainer.cs | 2 +- osu.Game/Graphics/UserInterface/OsuTabControl.cs | 2 +- osu.Game/Graphics/UserInterface/StarCounter.cs | 2 +- osu.Game/Overlays/AccountCreation/ScreenEntry.cs | 2 +- osu.Game/Overlays/MedalOverlay.cs | 2 +- osu.Game/Overlays/MusicController.cs | 2 +- osu.Game/Overlays/Volume/VolumeMeter.cs | 2 +- osu.Game/Rulesets/Objects/BarLineGenerator.cs | 2 +- osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs | 2 +- osu.Game/Rulesets/Objects/SliderPath.cs | 2 +- osu.Game/Rulesets/Scoring/HealthProcessor.cs | 2 +- osu.Game/Screens/Backgrounds/BackgroundScreenDefault.cs | 2 +- .../Edit/Compose/Components/Timeline/ZoomableScrollContainer.cs | 2 +- osu.Game/Screens/Edit/EditorClock.cs | 2 +- osu.Game/Screens/Loader.cs | 2 +- osu.Game/Screens/Menu/IntroScreen.cs | 2 +- osu.Game/Screens/Menu/IntroTriangles.cs | 2 +- osu.Game/Screens/Menu/OsuLogo.cs | 2 +- osu.Game/Screens/Play/FailAnimation.cs | 2 +- osu.Game/Screens/Play/HUD/HoldForMenuButton.cs | 2 +- osu.Game/Screens/Play/SkipOverlay.cs | 2 +- osu.Game/Screens/Play/SongProgressBar.cs | 2 +- osu.Game/Screens/Select/BeatmapCarousel.cs | 2 +- osu.Game/Screens/Select/BeatmapInfoWedge.cs | 2 +- osu.Game/Screens/Select/Carousel/DrawableCarouselItem.cs | 2 +- osu.Game/Storyboards/Drawables/DrawableStoryboardAnimation.cs | 2 +- osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs | 2 +- 77 files changed, 77 insertions(+), 77 deletions(-) diff --git a/osu.Game.Rulesets.Catch.Tests/CatchBeatmapConversionTest.cs b/osu.Game.Rulesets.Catch.Tests/CatchBeatmapConversionTest.cs index 493ac7ae39..f4749be370 100644 --- a/osu.Game.Rulesets.Catch.Tests/CatchBeatmapConversionTest.cs +++ b/osu.Game.Rulesets.Catch.Tests/CatchBeatmapConversionTest.cs @@ -5,7 +5,7 @@ using System; using System.Collections.Generic; using Newtonsoft.Json; using NUnit.Framework; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Rulesets.Catch.Mods; using osu.Game.Rulesets.Catch.Objects; using osu.Game.Rulesets.Catch.UI; diff --git a/osu.Game.Rulesets.Catch/Objects/Drawable/DrawableFruit.cs b/osu.Game.Rulesets.Catch/Objects/Drawable/DrawableFruit.cs index 958cd19d50..53a018c9f4 100644 --- a/osu.Game.Rulesets.Catch/Objects/Drawable/DrawableFruit.cs +++ b/osu.Game.Rulesets.Catch/Objects/Drawable/DrawableFruit.cs @@ -8,7 +8,7 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Effects; using osu.Framework.Graphics.Shapes; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Rulesets.Catch.Objects.Drawable.Pieces; using osuTK; using osuTK.Graphics; diff --git a/osu.Game.Rulesets.Catch/Replays/CatchAutoGenerator.cs b/osu.Game.Rulesets.Catch/Replays/CatchAutoGenerator.cs index 6c8515eb90..4649dcae90 100644 --- a/osu.Game.Rulesets.Catch/Replays/CatchAutoGenerator.cs +++ b/osu.Game.Rulesets.Catch/Replays/CatchAutoGenerator.cs @@ -3,7 +3,7 @@ using System; using System.Linq; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Beatmaps; using osu.Game.Replays; using osu.Game.Rulesets.Catch.Beatmaps; diff --git a/osu.Game.Rulesets.Catch/Replays/CatchFramedReplayInputHandler.cs b/osu.Game.Rulesets.Catch/Replays/CatchFramedReplayInputHandler.cs index 22532bc9ec..f122588a2b 100644 --- a/osu.Game.Rulesets.Catch/Replays/CatchFramedReplayInputHandler.cs +++ b/osu.Game.Rulesets.Catch/Replays/CatchFramedReplayInputHandler.cs @@ -5,7 +5,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; using osu.Framework.Input.StateChanges; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Replays; using osu.Game.Rulesets.Replays; diff --git a/osu.Game.Rulesets.Catch/UI/CatcherArea.cs b/osu.Game.Rulesets.Catch/UI/CatcherArea.cs index 2d6ce02e45..0c8c483048 100644 --- a/osu.Game.Rulesets.Catch/UI/CatcherArea.cs +++ b/osu.Game.Rulesets.Catch/UI/CatcherArea.cs @@ -7,7 +7,7 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Input.Bindings; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Beatmaps; using osu.Game.Rulesets.Catch.Judgements; using osu.Game.Rulesets.Catch.Objects; diff --git a/osu.Game.Rulesets.Mania.Tests/ManiaBeatmapConversionTest.cs b/osu.Game.Rulesets.Mania.Tests/ManiaBeatmapConversionTest.cs index 12865385b6..d0ff1fab43 100644 --- a/osu.Game.Rulesets.Mania.Tests/ManiaBeatmapConversionTest.cs +++ b/osu.Game.Rulesets.Mania.Tests/ManiaBeatmapConversionTest.cs @@ -4,7 +4,7 @@ using System; using System.Collections.Generic; using NUnit.Framework; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Beatmaps; using osu.Game.Rulesets.Mania.Beatmaps; using osu.Game.Rulesets.Mania.Objects; diff --git a/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs b/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs index 1a77a4944b..d904474815 100644 --- a/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs +++ b/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs @@ -5,7 +5,7 @@ using osu.Game.Rulesets.Mania.Objects; using System; using System.Linq; using System.Collections.Generic; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Beatmaps; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Objects.Types; diff --git a/osu.Game.Rulesets.Mania/Beatmaps/Patterns/Legacy/DistanceObjectPatternGenerator.cs b/osu.Game.Rulesets.Mania/Beatmaps/Patterns/Legacy/DistanceObjectPatternGenerator.cs index 9565ac8994..315ef96e49 100644 --- a/osu.Game.Rulesets.Mania/Beatmaps/Patterns/Legacy/DistanceObjectPatternGenerator.cs +++ b/osu.Game.Rulesets.Mania/Beatmaps/Patterns/Legacy/DistanceObjectPatternGenerator.cs @@ -4,7 +4,7 @@ using System; using System.Collections.Generic; using System.Linq; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Audio; using osu.Game.Beatmaps; using osu.Game.Rulesets.Mania.MathUtils; diff --git a/osu.Game.Rulesets.Mania/Mods/ManiaModRandom.cs b/osu.Game.Rulesets.Mania/Mods/ManiaModRandom.cs index 9275371a61..b12d3a7a70 100644 --- a/osu.Game.Rulesets.Mania/Mods/ManiaModRandom.cs +++ b/osu.Game.Rulesets.Mania/Mods/ManiaModRandom.cs @@ -4,7 +4,7 @@ using System.Linq; using osu.Framework.Extensions.IEnumerableExtensions; using osu.Framework.Graphics.Sprites; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Beatmaps; using osu.Game.Graphics; using osu.Game.Rulesets.Mania.Beatmaps; diff --git a/osu.Game.Rulesets.Mania/UI/HitExplosion.cs b/osu.Game.Rulesets.Mania/UI/HitExplosion.cs index ccbff226a9..35de47e208 100644 --- a/osu.Game.Rulesets.Mania/UI/HitExplosion.cs +++ b/osu.Game.Rulesets.Mania/UI/HitExplosion.cs @@ -5,7 +5,7 @@ using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Effects; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Rulesets.Mania.Objects.Drawables.Pieces; using osuTK; using osuTK.Graphics; diff --git a/osu.Game.Rulesets.Osu.Tests/OsuBeatmapConversionTest.cs b/osu.Game.Rulesets.Osu.Tests/OsuBeatmapConversionTest.cs index 450f7de6d2..cd3daf18a9 100644 --- a/osu.Game.Rulesets.Osu.Tests/OsuBeatmapConversionTest.cs +++ b/osu.Game.Rulesets.Osu.Tests/OsuBeatmapConversionTest.cs @@ -4,7 +4,7 @@ using System; using System.Collections.Generic; using NUnit.Framework; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Osu.Objects; using osu.Game.Tests.Beatmaps; diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneOsuDistanceSnapGrid.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneOsuDistanceSnapGrid.cs index c9b3d08a22..4af4d5f966 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneOsuDistanceSnapGrid.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneOsuDistanceSnapGrid.cs @@ -9,7 +9,7 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Input.Events; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Beatmaps.ControlPoints; using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Osu.Beatmaps; diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneShaking.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneShaking.cs index 863d0eda09..d692be89b2 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneShaking.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneShaking.cs @@ -2,7 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System.Diagnostics; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Rulesets.Osu.Objects; using osu.Game.Rulesets.Scoring; diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderSelectionBlueprint.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderSelectionBlueprint.cs index 013920684c..5dd2bd18a8 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderSelectionBlueprint.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderSelectionBlueprint.cs @@ -4,7 +4,7 @@ using System; using System.Collections.Generic; using NUnit.Framework; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Beatmaps; using osu.Game.Beatmaps.ControlPoints; using osu.Game.Rulesets.Objects; diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs index bd9d948782..5cf571d961 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerRotation.cs @@ -4,7 +4,7 @@ using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Audio; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Framework.Testing; using osu.Framework.Timing; using osu.Game.Beatmaps; diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModFlashlight.cs b/osu.Game.Rulesets.Osu/Mods/OsuModFlashlight.cs index 778c2f7d43..ac20407ed2 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModFlashlight.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModFlashlight.cs @@ -8,7 +8,7 @@ using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Input; using osu.Framework.Input.Events; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Objects.Drawables; using osu.Game.Rulesets.Osu.Objects; diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs index b81d94a673..2571ef3a70 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs @@ -7,7 +7,7 @@ using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Rulesets.Objects.Drawables; using osu.Game.Rulesets.Osu.Objects.Drawables.Pieces; using osu.Game.Rulesets.Scoring; diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerSpmCounter.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerSpmCounter.cs index 97a7b98c5b..80ab03c45c 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerSpmCounter.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerSpmCounter.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; using System.Linq; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Graphics; using osu.Game.Graphics.Sprites; diff --git a/osu.Game.Rulesets.Osu/Replays/OsuAutoGenerator.cs b/osu.Game.Rulesets.Osu/Replays/OsuAutoGenerator.cs index 2686ba4fd2..4cb2cd6539 100644 --- a/osu.Game.Rulesets.Osu/Replays/OsuAutoGenerator.cs +++ b/osu.Game.Rulesets.Osu/Replays/OsuAutoGenerator.cs @@ -2,7 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using osuTK; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Beatmaps; using osu.Game.Rulesets.Osu.Objects; using System; diff --git a/osu.Game.Rulesets.Osu/Replays/OsuFramedReplayInputHandler.cs b/osu.Game.Rulesets.Osu/Replays/OsuFramedReplayInputHandler.cs index c6ac1dd346..b42e9ac187 100644 --- a/osu.Game.Rulesets.Osu/Replays/OsuFramedReplayInputHandler.cs +++ b/osu.Game.Rulesets.Osu/Replays/OsuFramedReplayInputHandler.cs @@ -5,7 +5,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; using osu.Framework.Input.StateChanges; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Replays; using osu.Game.Rulesets.Replays; using osuTK; diff --git a/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs b/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs index d41135ca69..21df49d80b 100644 --- a/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs +++ b/osu.Game.Rulesets.Osu/Skinning/LegacySliderBody.cs @@ -3,7 +3,7 @@ using System; using osu.Framework.Extensions.Color4Extensions; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Rulesets.Osu.Objects; using osu.Game.Rulesets.Osu.Objects.Drawables.Pieces; using osuTK.Graphics; diff --git a/osu.Game.Rulesets.Taiko.Tests/TaikoBeatmapConversionTest.cs b/osu.Game.Rulesets.Taiko.Tests/TaikoBeatmapConversionTest.cs index 28f5d4d301..f23fd6d3f9 100644 --- a/osu.Game.Rulesets.Taiko.Tests/TaikoBeatmapConversionTest.cs +++ b/osu.Game.Rulesets.Taiko.Tests/TaikoBeatmapConversionTest.cs @@ -4,7 +4,7 @@ using System; using System.Collections.Generic; using NUnit.Framework; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Taiko.Objects; using osu.Game.Tests.Beatmaps; diff --git a/osu.Game.Rulesets.Taiko.Tests/TestSceneTaikoPlayfield.cs b/osu.Game.Rulesets.Taiko.Tests/TestSceneTaikoPlayfield.cs index b2c8c7feda..c01eef5252 100644 --- a/osu.Game.Rulesets.Taiko.Tests/TestSceneTaikoPlayfield.cs +++ b/osu.Game.Rulesets.Taiko.Tests/TestSceneTaikoPlayfield.cs @@ -7,7 +7,7 @@ using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Beatmaps; using osu.Game.Beatmaps.ControlPoints; using osu.Game.Rulesets.Judgements; diff --git a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableDrumRoll.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableDrumRoll.cs index 338fd9e20f..5806c90115 100644 --- a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableDrumRoll.cs +++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableDrumRoll.cs @@ -4,7 +4,7 @@ using System; using System.Linq; using osu.Framework.Allocation; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Graphics; using osu.Game.Rulesets.Objects.Drawables; using osuTK.Graphics; diff --git a/osu.Game.Tests/Gameplay/TestSceneDrainingHealthProcessor.cs b/osu.Game.Tests/Gameplay/TestSceneDrainingHealthProcessor.cs index eec52669ff..244e37f017 100644 --- a/osu.Game.Tests/Gameplay/TestSceneDrainingHealthProcessor.cs +++ b/osu.Game.Tests/Gameplay/TestSceneDrainingHealthProcessor.cs @@ -4,7 +4,7 @@ using NUnit.Framework; using osu.Framework.Bindables; using osu.Framework.Graphics; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Framework.Testing; using osu.Framework.Timing; using osu.Game.Beatmaps; diff --git a/osu.Game.Tests/Visual/Editor/TestSceneZoomableScrollContainer.cs b/osu.Game.Tests/Visual/Editor/TestSceneZoomableScrollContainer.cs index da8702209c..fd248abbc9 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneZoomableScrollContainer.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneZoomableScrollContainer.cs @@ -7,7 +7,7 @@ using osu.Framework.Graphics.Colour; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Primitives; using osu.Framework.Graphics.Shapes; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Framework.Testing; using osu.Game.Graphics; using osu.Game.Graphics.Cursor; diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneBarHitErrorMeter.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneBarHitErrorMeter.cs index e3688c276f..72fc6d8bd2 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneBarHitErrorMeter.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneBarHitErrorMeter.cs @@ -6,7 +6,7 @@ using osu.Game.Rulesets.Objects; using System; using System.Collections.Generic; using osu.Game.Rulesets.Judgements; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Game.Graphics.Sprites; diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs index 36235a4418..46f62b9541 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs @@ -10,7 +10,7 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Input; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Framework.Timing; using osu.Game.Beatmaps; using osu.Game.Beatmaps.ControlPoints; diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneGameplayRewinding.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneGameplayRewinding.cs index 5336c720a1..78c3b22fb9 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneGameplayRewinding.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneGameplayRewinding.cs @@ -7,7 +7,7 @@ using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Audio; using osu.Framework.Audio.Track; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Framework.Timing; using osu.Game.Beatmaps; using osu.Game.Rulesets; diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneKeyCounter.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneKeyCounter.cs index ad747e88e1..e7b3e007fc 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneKeyCounter.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneKeyCounter.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; using System.Linq; using NUnit.Framework; using osu.Framework.Graphics; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Screens.Play; using osuTK.Input; diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneLeadIn.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneLeadIn.cs index 0150c6ea74..563d6be0da 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneLeadIn.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneLeadIn.cs @@ -5,7 +5,7 @@ using System.Diagnostics; using System.Linq; using NUnit.Framework; using osu.Framework.Graphics; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Beatmaps; using osu.Game.Graphics.Sprites; using osu.Game.Rulesets.Osu; diff --git a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs index f68f4b8b83..a1eb416043 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs @@ -12,7 +12,7 @@ using osu.Framework.Audio; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Framework.Screens; using osu.Game.Configuration; using osu.Game.Graphics.Containers; diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneScoreCounter.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneScoreCounter.cs index 080a287b48..ffd6f55b53 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneScoreCounter.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneScoreCounter.cs @@ -4,7 +4,7 @@ using NUnit.Framework; using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Graphics.Sprites; using osu.Game.Graphics.UserInterface; using osu.Game.Screens.Play.HUD; diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs index af21007efe..9a217ae416 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs @@ -5,7 +5,7 @@ using System.Collections.Generic; using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Graphics; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Framework.Timing; using osu.Game.Rulesets.Objects; using osu.Game.Screens.Play; diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapPanel.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapPanel.cs index 68ad0b42b4..1e3e06ce7a 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapPanel.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapPanel.cs @@ -7,7 +7,7 @@ using osu.Game.Beatmaps; using osu.Game.Online.Multiplayer; using osu.Game.Screens.Multi.Match.Components; using osu.Framework.Graphics; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Audio; using osu.Framework.Allocation; diff --git a/osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlayDetails.cs b/osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlayDetails.cs index 96c0c59695..990e0a166b 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlayDetails.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlayDetails.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; using System.Linq; using NUnit.Framework; using osu.Framework.Graphics; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Beatmaps; using osu.Game.Overlays.BeatmapSet; using osu.Game.Screens.Select.Details; diff --git a/osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlaySuccessRate.cs b/osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlaySuccessRate.cs index 80fad44593..2b572c1f6c 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlaySuccessRate.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlaySuccessRate.cs @@ -8,7 +8,7 @@ using NUnit.Framework; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Beatmaps; using osu.Game.Overlays.BeatmapSet; using osu.Game.Screens.Select.Details; diff --git a/osu.Game.Tests/Visual/Online/TestSceneChannelTabControl.cs b/osu.Game.Tests/Visual/Online/TestSceneChannelTabControl.cs index 16e47c5df9..c98b65ded7 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneChannelTabControl.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneChannelTabControl.cs @@ -9,7 +9,7 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Sprites; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Graphics.Sprites; using osu.Game.Online.Chat; using osu.Game.Overlays.Chat.Tabs; diff --git a/osu.Game.Tests/Visual/Online/TestSceneScoresContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneScoresContainer.cs index b19f2dbf31..1b136d9e41 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneScoresContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneScoresContainer.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Online.API.Requests.Responses; using osu.Game.Overlays.BeatmapSet.Scores; using osu.Game.Rulesets.Osu.Mods; diff --git a/osu.Game.Tests/Visual/Online/TestSceneTotalCommentsCounter.cs b/osu.Game.Tests/Visual/Online/TestSceneTotalCommentsCounter.cs index 4702d24125..f14c75084f 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneTotalCommentsCounter.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneTotalCommentsCounter.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; using osu.Framework.Graphics; using osu.Framework.Bindables; using osu.Game.Overlays.Comments; -using osu.Framework.MathUtils; +using osu.Framework.Utils; namespace osu.Game.Tests.Visual.Online { diff --git a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs index 00fa95bedc..eb812f5d5a 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs @@ -11,7 +11,7 @@ using osu.Framework.Allocation; using osu.Framework.Audio; using osu.Framework.Bindables; using osu.Framework.Extensions; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Framework.Platform; using osu.Framework.Screens; using osu.Game.Beatmaps; diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneCursors.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneCursors.cs index e95f4c09c6..d1dde4664a 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneCursors.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneCursors.cs @@ -8,7 +8,7 @@ using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Cursor; using osu.Framework.Graphics.Shapes; using osu.Framework.Input.Events; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Graphics.Cursor; using osu.Game.Graphics.Sprites; using osuTK; diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneLogoTrackingContainer.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneLogoTrackingContainer.cs index 54876dbbda..4e394b5ed8 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneLogoTrackingContainer.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneLogoTrackingContainer.cs @@ -8,7 +8,7 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.UserInterface; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Framework.Testing; using osu.Game.Graphics.Containers; using osu.Game.Screens.Menu; diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneNotificationOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneNotificationOverlay.cs index 35e5f9719c..f8ace73168 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneNotificationOverlay.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneNotificationOverlay.cs @@ -8,7 +8,7 @@ using NUnit.Framework; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Graphics.Sprites; using osu.Game.Overlays; using osu.Game.Overlays.Notifications; diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs index 330ccecd54..2ea9aec50a 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneNowPlayingOverlay.cs @@ -4,7 +4,7 @@ using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Graphics; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Beatmaps; using osu.Game.Overlays; using osu.Game.Rulesets.Osu; diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneToolbarRulesetSelector.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneToolbarRulesetSelector.cs index 0da256855a..e6589fa823 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneToolbarRulesetSelector.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneToolbarRulesetSelector.cs @@ -9,7 +9,7 @@ using osu.Framework.Graphics; using System.Linq; using NUnit.Framework; using osu.Framework.Allocation; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Rulesets; namespace osu.Game.Tests.Visual.UserInterface diff --git a/osu.Game.Tournament.Tests/Components/TestSceneMatchScoreDisplay.cs b/osu.Game.Tournament.Tests/Components/TestSceneMatchScoreDisplay.cs index 72d9eb0e07..77119f7a60 100644 --- a/osu.Game.Tournament.Tests/Components/TestSceneMatchScoreDisplay.cs +++ b/osu.Game.Tournament.Tests/Components/TestSceneMatchScoreDisplay.cs @@ -3,7 +3,7 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Tournament.IPC; using osu.Game.Tournament.Screens.Gameplay.Components; diff --git a/osu.Game.Tournament/Screens/Drawings/Components/VisualiserContainer.cs b/osu.Game.Tournament/Screens/Drawings/Components/VisualiserContainer.cs index 1cd942b987..f21f5c9460 100644 --- a/osu.Game.Tournament/Screens/Drawings/Components/VisualiserContainer.cs +++ b/osu.Game.Tournament/Screens/Drawings/Components/VisualiserContainer.cs @@ -8,7 +8,7 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Textures; -using osu.Framework.MathUtils; +using osu.Framework.Utils; namespace osu.Game.Tournament.Screens.Drawings.Components { diff --git a/osu.Game/Graphics/Backgrounds/Triangles.cs b/osu.Game/Graphics/Backgrounds/Triangles.cs index af492bacc9..b9c7b26e3e 100644 --- a/osu.Game/Graphics/Backgrounds/Triangles.cs +++ b/osu.Game/Graphics/Backgrounds/Triangles.cs @@ -2,7 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using osu.Framework.Graphics; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osuTK; using osuTK.Graphics; using System; diff --git a/osu.Game/Graphics/Containers/LogoTrackingContainer.cs b/osu.Game/Graphics/Containers/LogoTrackingContainer.cs index 23015e8bf5..dadd7d5240 100644 --- a/osu.Game/Graphics/Containers/LogoTrackingContainer.cs +++ b/osu.Game/Graphics/Containers/LogoTrackingContainer.cs @@ -4,7 +4,7 @@ using System; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Screens.Menu; using osuTK; diff --git a/osu.Game/Graphics/Containers/ParallaxContainer.cs b/osu.Game/Graphics/Containers/ParallaxContainer.cs index bf743b90ed..4cd3934cde 100644 --- a/osu.Game/Graphics/Containers/ParallaxContainer.cs +++ b/osu.Game/Graphics/Containers/ParallaxContainer.cs @@ -9,7 +9,7 @@ using osuTK; using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Game.Configuration; -using osu.Framework.MathUtils; +using osu.Framework.Utils; namespace osu.Game.Graphics.Containers { diff --git a/osu.Game/Graphics/UserInterface/OsuTabControl.cs b/osu.Game/Graphics/UserInterface/OsuTabControl.cs index ed8904db7e..6a7998d5fb 100644 --- a/osu.Game/Graphics/UserInterface/OsuTabControl.cs +++ b/osu.Game/Graphics/UserInterface/OsuTabControl.cs @@ -15,7 +15,7 @@ using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.UserInterface; using osu.Framework.Input.Events; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Graphics.Sprites; namespace osu.Game.Graphics.UserInterface diff --git a/osu.Game/Graphics/UserInterface/StarCounter.cs b/osu.Game/Graphics/UserInterface/StarCounter.cs index 3ee572602b..586cd2ce84 100644 --- a/osu.Game/Graphics/UserInterface/StarCounter.cs +++ b/osu.Game/Graphics/UserInterface/StarCounter.cs @@ -4,7 +4,7 @@ using osuTK; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using System; using System.Linq; using osu.Framework.Graphics.Sprites; diff --git a/osu.Game/Overlays/AccountCreation/ScreenEntry.cs b/osu.Game/Overlays/AccountCreation/ScreenEntry.cs index e530ff5489..7067e02cd2 100644 --- a/osu.Game/Overlays/AccountCreation/ScreenEntry.cs +++ b/osu.Game/Overlays/AccountCreation/ScreenEntry.cs @@ -9,7 +9,7 @@ using osu.Framework.Allocation; using osu.Framework.Extensions.IEnumerableExtensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Framework.Platform; using osu.Framework.Screens; using osu.Game.Graphics; diff --git a/osu.Game/Overlays/MedalOverlay.cs b/osu.Game/Overlays/MedalOverlay.cs index 15aec1f17c..aa28b0659d 100644 --- a/osu.Game/Overlays/MedalOverlay.cs +++ b/osu.Game/Overlays/MedalOverlay.cs @@ -21,7 +21,7 @@ using osu.Framework.Graphics.Shapes; using System; using osu.Framework.Graphics.Effects; using osu.Framework.Input.Events; -using osu.Framework.MathUtils; +using osu.Framework.Utils; namespace osu.Game.Overlays { diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs index 270e90dca5..3c0f6468bc 100644 --- a/osu.Game/Overlays/MusicController.cs +++ b/osu.Game/Overlays/MusicController.cs @@ -8,7 +8,7 @@ using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Input.Bindings; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Framework.Threading; using osu.Game.Beatmaps; using osu.Game.Input.Bindings; diff --git a/osu.Game/Overlays/Volume/VolumeMeter.cs b/osu.Game/Overlays/Volume/VolumeMeter.cs index da696e0fdd..7effd290e6 100644 --- a/osu.Game/Overlays/Volume/VolumeMeter.cs +++ b/osu.Game/Overlays/Volume/VolumeMeter.cs @@ -12,7 +12,7 @@ using osu.Framework.Graphics.Effects; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.UserInterface; using osu.Framework.Input.Events; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Graphics; using osu.Game.Graphics.Sprites; using osuTK; diff --git a/osu.Game/Rulesets/Objects/BarLineGenerator.cs b/osu.Game/Rulesets/Objects/BarLineGenerator.cs index 99672240e2..5588e9c0b7 100644 --- a/osu.Game/Rulesets/Objects/BarLineGenerator.cs +++ b/osu.Game/Rulesets/Objects/BarLineGenerator.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Beatmaps; using osu.Game.Beatmaps.ControlPoints; diff --git a/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs index 3eab4555d1..1fc51d2ce8 100644 --- a/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs +++ b/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs @@ -10,7 +10,7 @@ using osu.Game.Beatmaps.Formats; using osu.Game.Audio; using System.Linq; using JetBrains.Annotations; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Beatmaps.Legacy; namespace osu.Game.Rulesets.Objects.Legacy diff --git a/osu.Game/Rulesets/Objects/SliderPath.cs b/osu.Game/Rulesets/Objects/SliderPath.cs index 293138097f..62a5b6f0b5 100644 --- a/osu.Game/Rulesets/Objects/SliderPath.cs +++ b/osu.Game/Rulesets/Objects/SliderPath.cs @@ -7,7 +7,7 @@ using System.Linq; using Newtonsoft.Json; using osu.Framework.Bindables; using osu.Framework.Caching; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Rulesets.Objects.Types; using osuTK; diff --git a/osu.Game/Rulesets/Scoring/HealthProcessor.cs b/osu.Game/Rulesets/Scoring/HealthProcessor.cs index 0c6b3f67b4..45edc0f4a3 100644 --- a/osu.Game/Rulesets/Scoring/HealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/HealthProcessor.cs @@ -3,7 +3,7 @@ using System; using osu.Framework.Bindables; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Rulesets.Judgements; namespace osu.Game.Rulesets.Scoring diff --git a/osu.Game/Screens/Backgrounds/BackgroundScreenDefault.cs b/osu.Game/Screens/Backgrounds/BackgroundScreenDefault.cs index 095985e9d1..980a127cf4 100644 --- a/osu.Game/Screens/Backgrounds/BackgroundScreenDefault.cs +++ b/osu.Game/Screens/Backgrounds/BackgroundScreenDefault.cs @@ -4,7 +4,7 @@ using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Framework.Threading; using osu.Game.Beatmaps; using osu.Game.Configuration; diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/ZoomableScrollContainer.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/ZoomableScrollContainer.cs index 54922fec5e..9aa527667b 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/ZoomableScrollContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/ZoomableScrollContainer.cs @@ -6,7 +6,7 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Transforms; using osu.Framework.Input.Events; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Graphics.Containers; using osuTK; diff --git a/osu.Game/Screens/Edit/EditorClock.cs b/osu.Game/Screens/Edit/EditorClock.cs index 93a5f19121..e5e47507f3 100644 --- a/osu.Game/Screens/Edit/EditorClock.cs +++ b/osu.Game/Screens/Edit/EditorClock.cs @@ -3,7 +3,7 @@ using System; using System.Linq; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Framework.Timing; using osu.Game.Beatmaps; using osu.Game.Beatmaps.ControlPoints; diff --git a/osu.Game/Screens/Loader.cs b/osu.Game/Screens/Loader.cs index 41ee01be20..289413c65a 100644 --- a/osu.Game/Screens/Loader.cs +++ b/osu.Game/Screens/Loader.cs @@ -6,7 +6,7 @@ using System.Linq; using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Shaders; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Screens.Menu; using osuTK; using osu.Framework.Screens; diff --git a/osu.Game/Screens/Menu/IntroScreen.cs b/osu.Game/Screens/Menu/IntroScreen.cs index df83e98494..26455b1dbd 100644 --- a/osu.Game/Screens/Menu/IntroScreen.cs +++ b/osu.Game/Screens/Menu/IntroScreen.cs @@ -7,7 +7,7 @@ using osu.Framework.Audio.Sample; using osu.Framework.Audio.Track; using osu.Framework.Bindables; using osu.Framework.Graphics; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Framework.Screens; using osu.Game.Beatmaps; using osu.Game.Configuration; diff --git a/osu.Game/Screens/Menu/IntroTriangles.cs b/osu.Game/Screens/Menu/IntroTriangles.cs index c86f1393a4..50cfe23481 100644 --- a/osu.Game/Screens/Menu/IntroTriangles.cs +++ b/osu.Game/Screens/Menu/IntroTriangles.cs @@ -13,7 +13,7 @@ using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Textures; using osu.Framework.Graphics.Video; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Framework.Timing; using osu.Game.Graphics; using osu.Game.Graphics.Containers; diff --git a/osu.Game/Screens/Menu/OsuLogo.cs b/osu.Game/Screens/Menu/OsuLogo.cs index 534400e720..33b6ee8025 100644 --- a/osu.Game/Screens/Menu/OsuLogo.cs +++ b/osu.Game/Screens/Menu/OsuLogo.cs @@ -12,7 +12,7 @@ using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Textures; using osu.Framework.Input.Events; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Beatmaps.ControlPoints; using osu.Game.Graphics; using osu.Game.Graphics.Backgrounds; diff --git a/osu.Game/Screens/Play/FailAnimation.cs b/osu.Game/Screens/Play/FailAnimation.cs index a3caffb620..54c644c999 100644 --- a/osu.Game/Screens/Play/FailAnimation.cs +++ b/osu.Game/Screens/Play/FailAnimation.cs @@ -10,7 +10,7 @@ using osu.Framework.Allocation; using osu.Framework.Audio.Sample; using osu.Framework.Audio.Track; using osu.Framework.Graphics; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Beatmaps; using osu.Game.Rulesets.Objects.Drawables; using osuTK; diff --git a/osu.Game/Screens/Play/HUD/HoldForMenuButton.cs b/osu.Game/Screens/Play/HUD/HoldForMenuButton.cs index 640224c057..7946e6d322 100644 --- a/osu.Game/Screens/Play/HUD/HoldForMenuButton.cs +++ b/osu.Game/Screens/Play/HUD/HoldForMenuButton.cs @@ -12,7 +12,7 @@ using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.UserInterface; using osu.Framework.Input.Bindings; using osu.Framework.Input.Events; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Configuration; using osu.Game.Graphics; using osu.Game.Graphics.Containers; diff --git a/osu.Game/Screens/Play/SkipOverlay.cs b/osu.Game/Screens/Play/SkipOverlay.cs index 1a5ed20953..772d326c7f 100644 --- a/osu.Game/Screens/Play/SkipOverlay.cs +++ b/osu.Game/Screens/Play/SkipOverlay.cs @@ -19,7 +19,7 @@ using osu.Framework.Graphics.Sprites; using osu.Game.Graphics.Containers; using osu.Framework.Input.Bindings; using osu.Framework.Input.Events; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Input.Bindings; namespace osu.Game.Screens.Play diff --git a/osu.Game/Screens/Play/SongProgressBar.cs b/osu.Game/Screens/Play/SongProgressBar.cs index cdf495e257..9df36c9c2b 100644 --- a/osu.Game/Screens/Play/SongProgressBar.cs +++ b/osu.Game/Screens/Play/SongProgressBar.cs @@ -8,7 +8,7 @@ using osu.Framework.Graphics.Containers; using osu.Framework.Graphics; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.UserInterface; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Framework.Threading; namespace osu.Game.Screens.Play diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs b/osu.Game/Screens/Select/BeatmapCarousel.cs index 4acc619753..bf2382c4ae 100644 --- a/osu.Game/Screens/Select/BeatmapCarousel.cs +++ b/osu.Game/Screens/Select/BeatmapCarousel.cs @@ -9,7 +9,7 @@ using System.Collections.Generic; using System.Linq; using osu.Game.Configuration; using osuTK.Input; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using System.Diagnostics; using osu.Framework.Allocation; using osu.Framework.Bindables; diff --git a/osu.Game/Screens/Select/BeatmapInfoWedge.cs b/osu.Game/Screens/Select/BeatmapInfoWedge.cs index d54c13c7db..451708c1cf 100644 --- a/osu.Game/Screens/Select/BeatmapInfoWedge.cs +++ b/osu.Game/Screens/Select/BeatmapInfoWedge.cs @@ -13,7 +13,7 @@ using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Colour; using osu.Framework.Graphics.Containers; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Beatmaps; using osu.Game.Beatmaps.Drawables; using osu.Game.Graphics; diff --git a/osu.Game/Screens/Select/Carousel/DrawableCarouselItem.cs b/osu.Game/Screens/Select/Carousel/DrawableCarouselItem.cs index 6118191302..121491d6ca 100644 --- a/osu.Game/Screens/Select/Carousel/DrawableCarouselItem.cs +++ b/osu.Game/Screens/Select/Carousel/DrawableCarouselItem.cs @@ -10,7 +10,7 @@ using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Effects; using osu.Framework.Graphics.Shapes; using osu.Framework.Input.Events; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Graphics; using osuTK; using osuTK.Graphics; diff --git a/osu.Game/Storyboards/Drawables/DrawableStoryboardAnimation.cs b/osu.Game/Storyboards/Drawables/DrawableStoryboardAnimation.cs index a076bb54df..ced3b9c1b6 100644 --- a/osu.Game/Storyboards/Drawables/DrawableStoryboardAnimation.cs +++ b/osu.Game/Storyboards/Drawables/DrawableStoryboardAnimation.cs @@ -8,7 +8,7 @@ using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Animations; using osu.Framework.Graphics.Textures; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Beatmaps; namespace osu.Game.Storyboards.Drawables diff --git a/osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs b/osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs index ac795b3349..c0da0e9c0e 100644 --- a/osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs +++ b/osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs @@ -8,7 +8,7 @@ using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Textures; -using osu.Framework.MathUtils; +using osu.Framework.Utils; using osu.Game.Beatmaps; namespace osu.Game.Storyboards.Drawables From dde843268466c82ee02dcb369e7c4afaaf787f90 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 9 Jan 2020 13:43:57 +0900 Subject: [PATCH 0761/1829] Fix exception through due to multiple binds --- osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs b/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs index 1ab3a5b533..3ced9ee753 100644 --- a/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs +++ b/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs @@ -49,9 +49,12 @@ namespace osu.Game.Screens.Backgrounds Beatmap = beatmap; InternalChild = dimmable = CreateFadeContainer(); + dimmable.EnableUserDim.BindTo(EnableUserDim); dimmable.IsBreakTime.BindTo(IsBreakTime); dimmable.BlurAmount.BindTo(BlurAmount); + + StoryboardReplacesBackground.BindTo(dimmable.StoryboardReplacesBackground); } [BackgroundDependencyLoader] @@ -99,7 +102,6 @@ namespace osu.Game.Screens.Backgrounds b.Depth = newDepth; dimmable.Background = Background = b; - StoryboardReplacesBackground.BindTo(dimmable.StoryboardReplacesBackground); } public override bool Equals(BackgroundScreen other) From b2db2ee259f1661c2a6576a4aa247bff27b642fe Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 9 Jan 2020 15:35:54 +0900 Subject: [PATCH 0762/1829] Update package version --- 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 e1e6f2e478..a78148f36e 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index b497133e62..77d41566ca 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 edd35b0774..b551a1442f 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From 26c80e35fbdeb7af8ecdb144628b863e3b1d25ee Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 9 Jan 2020 17:17:08 +0800 Subject: [PATCH 0763/1829] Fix missing namespace --- osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs index 289c01fbf3..d2ac1bf079 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs @@ -15,6 +15,7 @@ using osu.Game.Beatmaps; using osu.Game.Graphics.Cursor; using osu.Game.Graphics.UserInterface; using osu.Game.Online.Leaderboards; +using osu.Game.Online.Placeholders; using osu.Game.Overlays; using osu.Game.Rulesets; using osu.Game.Scoring; From ffa0cf2d44174c870c5c0dc2173b73e9ba496a89 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 9 Jan 2020 17:28:48 +0800 Subject: [PATCH 0764/1829] Add comment detailing why this is requried --- osu.Game/Graphics/UserInterface/DimmedLoadingLayer.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game/Graphics/UserInterface/DimmedLoadingLayer.cs b/osu.Game/Graphics/UserInterface/DimmedLoadingLayer.cs index aca3768540..bdc3cd4c49 100644 --- a/osu.Game/Graphics/UserInterface/DimmedLoadingLayer.cs +++ b/osu.Game/Graphics/UserInterface/DimmedLoadingLayer.cs @@ -47,6 +47,7 @@ namespace osu.Game.Graphics.UserInterface { switch (e) { + // blocking scroll can cause weird behaviour when this layer is used within a ScrollContainer. case ScrollEvent _: return false; } From 6a2bcbcef81a986f3f9823ae29957206c0b306b3 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 9 Jan 2020 18:47:00 +0900 Subject: [PATCH 0765/1829] Bump version --- 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 a78148f36e..fde58ec489 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 77d41566ca..04d0b580da 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 b551a1442f..50aabd636a 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From 87645f6a41c443f5c78a9fb16a338130be52df3d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 10 Jan 2020 01:13:42 +0800 Subject: [PATCH 0766/1829] Remove excess namespace specification --- osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs index 662fd15183..96b18f2d80 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs @@ -13,7 +13,6 @@ using osu.Game.Rulesets.Osu.Objects.Drawables.Pieces; using osu.Game.Rulesets.Scoring; using osuTK; using osu.Game.Skinning; -using osu.Framework.Utils; namespace osu.Game.Rulesets.Osu.Objects.Drawables { From 14829837c467c07c2eae8445e9e1c7dfce262006 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 10 Jan 2020 01:38:03 +0800 Subject: [PATCH 0767/1829] Update namespace specifications --- .../Visual/UserInterface/TestSceneDeleteLocalScore.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs index d2ac1bf079..1e5e26e4c5 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs @@ -8,9 +8,9 @@ using NUnit.Framework; using osu.Framework.Graphics; using osu.Framework.Allocation; using osu.Framework.Graphics.Cursor; -using osu.Framework.MathUtils; using osu.Framework.Platform; using osu.Framework.Testing; +using osu.Framework.Utils; using osu.Game.Beatmaps; using osu.Game.Graphics.Cursor; using osu.Game.Graphics.UserInterface; From 20f426cda0348a8ad4f45cd7b75b0d3ce8a91951 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Wed, 8 Jan 2020 22:06:18 +0800 Subject: [PATCH 0768/1829] Add beatmap parsing as sample benchmark. --- .../BenchmarkBeatmapParsing.cs | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 osu.Game.Benchmarks/BenchmarkBeatmapParsing.cs diff --git a/osu.Game.Benchmarks/BenchmarkBeatmapParsing.cs b/osu.Game.Benchmarks/BenchmarkBeatmapParsing.cs new file mode 100644 index 0000000000..394fd75488 --- /dev/null +++ b/osu.Game.Benchmarks/BenchmarkBeatmapParsing.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 System.IO; +using BenchmarkDotNet.Attributes; +using osu.Framework.IO.Stores; +using osu.Game.Beatmaps; +using osu.Game.Beatmaps.Formats; +using osu.Game.IO; +using osu.Game.IO.Archives; +using osu.Game.Resources; + +namespace osu.Game.Benchmarks +{ + public class BenchmarkBeatmapParsing : BenchmarkTest + { + private readonly MemoryStream beatmapStream = new MemoryStream(); + + public override void SetUp() + { + using (var resources = new DllResourceStore(OsuResources.ResourceAssembly)) + using (var archive = resources.GetStream("Beatmaps/241526 Soleily - Renatus.osz")) + using (var reader = new ZipArchiveReader(archive)) + reader.GetStream("Soleily - Renatus (Gamu) [Insane].osu").CopyTo(beatmapStream); + } + + [Benchmark] + public Beatmap BenchmarkBundledBeatmap() + { + beatmapStream.Seek(0, SeekOrigin.Begin); + var reader = new LineBufferedReader(beatmapStream); // no disposal + + var decoder = Decoder.GetDecoder(reader); + return decoder.Decode(reader); + } + } +} From c4131e01da7341984450a11d8e5349f02e2c0d58 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Fri, 10 Jan 2020 20:20:44 +0800 Subject: [PATCH 0769/1829] Downgrade NUnit for now. --- osu.Game.Benchmarks/osu.Game.Benchmarks.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Benchmarks/osu.Game.Benchmarks.csproj b/osu.Game.Benchmarks/osu.Game.Benchmarks.csproj index 3281fcc855..f2e1c0ec3b 100644 --- a/osu.Game.Benchmarks/osu.Game.Benchmarks.csproj +++ b/osu.Game.Benchmarks/osu.Game.Benchmarks.csproj @@ -9,7 +9,7 @@ - + From f65f030e79ff6756fe11156311e1bceaf95720f0 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 10 Jan 2020 15:48:54 +0300 Subject: [PATCH 0770/1829] Implement GetSpotlightsRequest --- .../API/Requests/GetSpotlightsRequest.cs | 13 +++++++ .../API/Requests/Responses/APISpotlight.cs | 34 +++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 osu.Game/Online/API/Requests/GetSpotlightsRequest.cs create mode 100644 osu.Game/Online/API/Requests/Responses/APISpotlight.cs diff --git a/osu.Game/Online/API/Requests/GetSpotlightsRequest.cs b/osu.Game/Online/API/Requests/GetSpotlightsRequest.cs new file mode 100644 index 0000000000..7a6a988c09 --- /dev/null +++ b/osu.Game/Online/API/Requests/GetSpotlightsRequest.cs @@ -0,0 +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.Collections.Generic; +using osu.Game.Online.API.Requests.Responses; + +namespace osu.Game.Online.API.Requests +{ + public class GetSpotlightsRequest : APIRequest> + { + protected override string Target => "spotlights"; + } +} diff --git a/osu.Game/Online/API/Requests/Responses/APISpotlight.cs b/osu.Game/Online/API/Requests/Responses/APISpotlight.cs new file mode 100644 index 0000000000..210ef04dac --- /dev/null +++ b/osu.Game/Online/API/Requests/Responses/APISpotlight.cs @@ -0,0 +1,34 @@ +// 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 Newtonsoft.Json; + +namespace osu.Game.Online.API.Requests.Responses +{ + public class APISpotlight + { + [JsonProperty("id")] + public int Id; + + [JsonProperty("name")] + public string Name; + + [JsonProperty("type")] + public string Type; + + [JsonProperty("mode_specific")] + public bool ModeSpecific; + + [JsonProperty(@"start_date")] + public DateTimeOffset StartDate; + + [JsonProperty(@"end_date")] + public DateTimeOffset EndDate; + + [JsonProperty(@"participant_count")] + public int? ParticipiantCount; + + public override string ToString() => Name; + } +} From 08fb68ddfeddb891b2ddc9972544a0bf6f2bff68 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 10 Jan 2020 16:28:52 +0300 Subject: [PATCH 0771/1829] Fix incorrect return type for spotlight request --- osu.Game/Online/API/Requests/GetSpotlightsRequest.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/osu.Game/Online/API/Requests/GetSpotlightsRequest.cs b/osu.Game/Online/API/Requests/GetSpotlightsRequest.cs index 7a6a988c09..d5b03e52e2 100644 --- a/osu.Game/Online/API/Requests/GetSpotlightsRequest.cs +++ b/osu.Game/Online/API/Requests/GetSpotlightsRequest.cs @@ -2,12 +2,19 @@ // See the LICENCE file in the repository root for full licence text. using System.Collections.Generic; +using Newtonsoft.Json; using osu.Game.Online.API.Requests.Responses; namespace osu.Game.Online.API.Requests { - public class GetSpotlightsRequest : APIRequest> + public class GetSpotlightsRequest : APIRequest { protected override string Target => "spotlights"; } + + public class SpotlightsArray + { + [JsonProperty("spotlights")] + public List Spotlights; + } } From d48b161662ec0058d8f1aed526bb5fa1d9d1af50 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 10 Jan 2020 16:33:00 +0300 Subject: [PATCH 0772/1829] Implement basic SpotlightSelector component --- .../TestSceneRankingsSpotlightSelector.cs | 28 ++++++++ .../Overlays/Rankings/SpotlightSelector.cs | 67 +++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs create mode 100644 osu.Game/Overlays/Rankings/SpotlightSelector.cs diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs new file mode 100644 index 0000000000..9320213844 --- /dev/null +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs @@ -0,0 +1,28 @@ +// 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.Game.Overlays.Rankings; + +namespace osu.Game.Tests.Visual.Online +{ + public class TestSceneRankingsSpotlightSelector : OsuTestScene + { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(SpotlightSelector), + }; + + protected override bool UseOnlineAPI => true; + + public TestSceneRankingsSpotlightSelector() + { + SpotlightSelector selector; + + Add(selector = new SpotlightSelector()); + + AddStep("Fetch spotlights", selector.FetchSpotlights); + } + } +} diff --git a/osu.Game/Overlays/Rankings/SpotlightSelector.cs b/osu.Game/Overlays/Rankings/SpotlightSelector.cs new file mode 100644 index 0000000000..95bcc10631 --- /dev/null +++ b/osu.Game/Overlays/Rankings/SpotlightSelector.cs @@ -0,0 +1,67 @@ +// 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.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; +using osu.Game.Graphics; +using osu.Game.Graphics.UserInterface; +using osu.Game.Online.API; +using osu.Game.Online.API.Requests; +using osu.Game.Online.API.Requests.Responses; + +namespace osu.Game.Overlays.Rankings +{ + public class SpotlightSelector : Container + { + private readonly Box background; + private readonly OsuDropdown dropdown; + private readonly DimmedLoadingLayer loading; + + [Resolved] + private IAPIProvider api { get; set; } + + public SpotlightSelector() + { + RelativeSizeAxes = Axes.X; + Height = 200; + Children = new Drawable[] + { + background = new Box + { + RelativeSizeAxes = Axes.Both, + }, + dropdown = new OsuDropdown + { + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, + RelativeSizeAxes = Axes.X, + Width = 0.8f, + Margin = new MarginPadding { Top = 10 } + }, + loading = new DimmedLoadingLayer(), + }; + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + background.Colour = colours.GreySeafoam; + dropdown.AccentColour = colours.GreySeafoamDarker; + } + + public void FetchSpotlights() + { + loading.Show(); + + var request = new GetSpotlightsRequest(); + request.Success += response => + { + dropdown.Items = response.Spotlights; + loading.Hide(); + }; + api.Queue(request); + } + } +} From 474d7e92d92ef7a20dc07ee4a75cb2e62b5bd2e2 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 10 Jan 2020 16:41:17 +0300 Subject: [PATCH 0773/1829] Fix incorrect dropdown menu height --- osu.Game/Overlays/Rankings/SpotlightSelector.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Rankings/SpotlightSelector.cs b/osu.Game/Overlays/Rankings/SpotlightSelector.cs index 95bcc10631..482db10796 100644 --- a/osu.Game/Overlays/Rankings/SpotlightSelector.cs +++ b/osu.Game/Overlays/Rankings/SpotlightSelector.cs @@ -16,7 +16,7 @@ namespace osu.Game.Overlays.Rankings public class SpotlightSelector : Container { private readonly Box background; - private readonly OsuDropdown dropdown; + private readonly SpotlightsDropdown dropdown; private readonly DimmedLoadingLayer loading; [Resolved] @@ -32,7 +32,7 @@ namespace osu.Game.Overlays.Rankings { RelativeSizeAxes = Axes.Both, }, - dropdown = new OsuDropdown + dropdown = new SpotlightsDropdown { Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, @@ -63,5 +63,10 @@ namespace osu.Game.Overlays.Rankings }; api.Queue(request); } + + private class SpotlightsDropdown : OsuDropdown + { + protected override DropdownMenu CreateMenu() => base.CreateMenu().With(menu => menu.MaxHeight = 400); + } } } From 2e627f4b7c4f52d827941399cf67fce87087ebc3 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 10 Jan 2020 17:30:51 +0300 Subject: [PATCH 0774/1829] Implement InfoColumn component --- .../Overlays/Rankings/SpotlightSelector.cs | 111 ++++++++++++++++-- 1 file changed, 102 insertions(+), 9 deletions(-) diff --git a/osu.Game/Overlays/Rankings/SpotlightSelector.cs b/osu.Game/Overlays/Rankings/SpotlightSelector.cs index 482db10796..66c5f37917 100644 --- a/osu.Game/Overlays/Rankings/SpotlightSelector.cs +++ b/osu.Game/Overlays/Rankings/SpotlightSelector.cs @@ -2,14 +2,18 @@ // 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.Graphics.Sprites; using osu.Game.Graphics.UserInterface; using osu.Game.Online.API; using osu.Game.Online.API.Requests; using osu.Game.Online.API.Requests.Responses; +using osuTK; +using System; namespace osu.Game.Overlays.Rankings { @@ -22,23 +26,49 @@ namespace osu.Game.Overlays.Rankings [Resolved] private IAPIProvider api { get; set; } + public readonly Bindable SelectedSpotlight = new Bindable(); + + private readonly InfoCoulmn startDateColumn; + private readonly InfoCoulmn endDateColumn; + public SpotlightSelector() { RelativeSizeAxes = Axes.X; - Height = 200; + Height = 100; Children = new Drawable[] { background = new Box { RelativeSizeAxes = Axes.Both, }, - dropdown = new SpotlightsDropdown + new Container { - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - RelativeSizeAxes = Axes.X, - Width = 0.8f, - Margin = new MarginPadding { Top = 10 } + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Horizontal = UserProfileOverlay.CONTENT_X_MARGIN, Vertical = 10 }, + Children = new Drawable[] + { + dropdown = new SpotlightsDropdown + { + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, + RelativeSizeAxes = Axes.X, + Current = SelectedSpotlight, + Depth = -float.MaxValue + }, + new FillFlowContainer + { + Anchor = Anchor.BottomRight, + Origin = Anchor.BottomRight, + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(15, 0), + Children = new Drawable[] + { + startDateColumn = new InfoCoulmn(@"Start Date"), + endDateColumn = new InfoCoulmn(@"End Date"), + } + } + } }, loading = new DimmedLoadingLayer(), }; @@ -48,7 +78,12 @@ namespace osu.Game.Overlays.Rankings private void load(OsuColour colours) { background.Colour = colours.GreySeafoam; - dropdown.AccentColour = colours.GreySeafoamDarker; + } + + protected override void LoadComplete() + { + base.LoadComplete(); + SelectedSpotlight.BindValueChanged(onSelectionChanged); } public void FetchSpotlights() @@ -64,9 +99,67 @@ namespace osu.Game.Overlays.Rankings api.Queue(request); } + private void onSelectionChanged(ValueChangedEvent spotlight) + { + startDateColumn.Value = dateToString(spotlight.NewValue.StartDate); + endDateColumn.Value = dateToString(spotlight.NewValue.EndDate); + } + + private string dateToString(DateTimeOffset date) => $"{date.Year}-{date.Month:D2}-{date.Day:D2}"; + + private class InfoCoulmn : FillFlowContainer + { + public string Value + { + set => valueText.Text = value; + } + + private readonly OsuSpriteText valueText; + + public InfoCoulmn(string name) + { + AutoSizeAxes = Axes.Both; + Direction = FillDirection.Vertical; + Children = new Drawable[] + { + new OsuSpriteText + { + Text = name, + Font = OsuFont.GetFont(size: 10), + }, + new Container + { + AutoSizeAxes = Axes.X, + Height = 20, + Child = valueText = new OsuSpriteText + { + Anchor = Anchor.BottomLeft, + Origin = Anchor.BottomLeft, + Font = OsuFont.GetFont(size: 18, weight: FontWeight.Light), + } + } + }; + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + valueText.Colour = colours.GreySeafoamLighter; + } + } + private class SpotlightsDropdown : OsuDropdown { - protected override DropdownMenu CreateMenu() => base.CreateMenu().With(menu => menu.MaxHeight = 400); + private DropdownMenu menu; + + protected override DropdownMenu CreateMenu() => menu = base.CreateMenu().With(m => m.MaxHeight = 400); + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + menu.BackgroundColour = colours.Gray1; + AccentColour = colours.GreySeafoamDarker; + } } } } From 9260ea91955fdcf56e4edbbb3770e39ac0eb21a0 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 10 Jan 2020 20:46:35 +0300 Subject: [PATCH 0775/1829] Apply suggestions --- .../Online/API/Requests/GetSpotlightsRequest.cs | 4 ++-- .../Online/API/Requests/Responses/APISpotlight.cs | 2 +- osu.Game/Overlays/Rankings/SpotlightSelector.cs | 14 +++++++------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/osu.Game/Online/API/Requests/GetSpotlightsRequest.cs b/osu.Game/Online/API/Requests/GetSpotlightsRequest.cs index d5b03e52e2..6fafb3933c 100644 --- a/osu.Game/Online/API/Requests/GetSpotlightsRequest.cs +++ b/osu.Game/Online/API/Requests/GetSpotlightsRequest.cs @@ -7,12 +7,12 @@ using osu.Game.Online.API.Requests.Responses; namespace osu.Game.Online.API.Requests { - public class GetSpotlightsRequest : APIRequest + public class GetSpotlightsRequest : APIRequest { protected override string Target => "spotlights"; } - public class SpotlightsArray + public class SpotlightsCollection { [JsonProperty("spotlights")] public List Spotlights; diff --git a/osu.Game/Online/API/Requests/Responses/APISpotlight.cs b/osu.Game/Online/API/Requests/Responses/APISpotlight.cs index 210ef04dac..63c47e7812 100644 --- a/osu.Game/Online/API/Requests/Responses/APISpotlight.cs +++ b/osu.Game/Online/API/Requests/Responses/APISpotlight.cs @@ -27,7 +27,7 @@ namespace osu.Game.Online.API.Requests.Responses public DateTimeOffset EndDate; [JsonProperty(@"participant_count")] - public int? ParticipiantCount; + public int? ParticipantCount; public override string ToString() => Name; } diff --git a/osu.Game/Overlays/Rankings/SpotlightSelector.cs b/osu.Game/Overlays/Rankings/SpotlightSelector.cs index 66c5f37917..fb61555c20 100644 --- a/osu.Game/Overlays/Rankings/SpotlightSelector.cs +++ b/osu.Game/Overlays/Rankings/SpotlightSelector.cs @@ -28,8 +28,8 @@ namespace osu.Game.Overlays.Rankings public readonly Bindable SelectedSpotlight = new Bindable(); - private readonly InfoCoulmn startDateColumn; - private readonly InfoCoulmn endDateColumn; + private readonly InfoColumn startDateColumn; + private readonly InfoColumn endDateColumn; public SpotlightSelector() { @@ -64,8 +64,8 @@ namespace osu.Game.Overlays.Rankings Spacing = new Vector2(15, 0), Children = new Drawable[] { - startDateColumn = new InfoCoulmn(@"Start Date"), - endDateColumn = new InfoCoulmn(@"End Date"), + startDateColumn = new InfoColumn(@"Start Date"), + endDateColumn = new InfoColumn(@"End Date"), } } } @@ -105,9 +105,9 @@ namespace osu.Game.Overlays.Rankings endDateColumn.Value = dateToString(spotlight.NewValue.EndDate); } - private string dateToString(DateTimeOffset date) => $"{date.Year}-{date.Month:D2}-{date.Day:D2}"; + private string dateToString(DateTimeOffset date) => date.ToString("yyyy-MM-dd"); - private class InfoCoulmn : FillFlowContainer + private class InfoColumn : FillFlowContainer { public string Value { @@ -116,7 +116,7 @@ namespace osu.Game.Overlays.Rankings private readonly OsuSpriteText valueText; - public InfoCoulmn(string name) + public InfoColumn(string name) { AutoSizeAxes = Axes.Both; Direction = FillDirection.Vertical; From bd175118e9a5075c396a4dfb578729f6d1a7ff89 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 11 Jan 2020 04:16:07 +0800 Subject: [PATCH 0776/1829] 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 fde58ec489..f3838644d1 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 04d0b580da..4fc9e47119 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 50aabd636a..760600e6d4 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From 19033e0ef85fba4086d303825718de15affc268c Mon Sep 17 00:00:00 2001 From: Joehu Date: Fri, 10 Jan 2020 19:25:33 -0800 Subject: [PATCH 0777/1829] Fix user status dropdown having no padding around items --- osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs b/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs index 27796c1e32..e485aa5ea9 100644 --- a/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs @@ -323,8 +323,6 @@ namespace osu.Game.Overlays.Settings.Sections.General Colour = Color4.Black.Opacity(0.25f), Radius = 4, }; - - ItemsContainer.Padding = new MarginPadding(); } [BackgroundDependencyLoader] From 6500cc967fff845a8e65cd3fc1a7a666be43669e Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 11 Jan 2020 06:58:35 +0300 Subject: [PATCH 0778/1829] Implement SongTicker component --- osu.Game/Screens/Menu/MainMenu.cs | 7 +++ osu.Game/Screens/Menu/SongTicker.cs | 66 +++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 osu.Game/Screens/Menu/SongTicker.cs diff --git a/osu.Game/Screens/Menu/MainMenu.cs b/osu.Game/Screens/Menu/MainMenu.cs index b28d572b5c..47c86fc1ae 100644 --- a/osu.Game/Screens/Menu/MainMenu.cs +++ b/osu.Game/Screens/Menu/MainMenu.cs @@ -75,6 +75,13 @@ namespace osu.Game.Screens.Menu holdDelay = config.GetBindable(OsuSetting.UIHoldActivationDelay); loginDisplayed = statics.GetBindable(Static.LoginOverlayDisplayed); + AddInternal(new SongTicker + { + Anchor = Anchor.TopRight, + Origin = Anchor.TopRight, + Margin = new MarginPadding { Right = 15 } + }); + if (host.CanExit) { AddInternal(exitConfirmOverlay = new ExitConfirmOverlay diff --git a/osu.Game/Screens/Menu/SongTicker.cs b/osu.Game/Screens/Menu/SongTicker.cs new file mode 100644 index 0000000000..504b016019 --- /dev/null +++ b/osu.Game/Screens/Menu/SongTicker.cs @@ -0,0 +1,66 @@ +// 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.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Graphics.Sprites; +using osuTK; +using osu.Game.Graphics; +using osu.Framework.Bindables; +using osu.Game.Beatmaps; + +namespace osu.Game.Screens.Menu +{ + public class SongTicker : Container + { + private const int duration = 500; + + [Resolved] + private Bindable beatmap { get; set; } + + private readonly Bindable workingBeatmap = new Bindable(); + private readonly OsuSpriteText title, artist; + + public SongTicker() + { + AutoSizeAxes = Axes.Both; + Child = new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Vertical, + Spacing = new Vector2(0, 3), + Children = new Drawable[] + { + title = new OsuSpriteText + { + Anchor = Anchor.TopRight, + Origin = Anchor.TopRight, + Font = OsuFont.GetFont(size: 24, weight: FontWeight.Light, italics: true) + }, + artist = new OsuSpriteText + { + Anchor = Anchor.TopRight, + Origin = Anchor.TopRight, + Font = OsuFont.GetFont(size: 16) + } + } + }; + } + + protected override void LoadComplete() + { + base.LoadComplete(); + workingBeatmap.BindTo(beatmap); + workingBeatmap.BindValueChanged(onBeatmapChanged); + } + + private void onBeatmapChanged(ValueChangedEvent working) + { + title.Text = working.NewValue?.Metadata?.Title; + artist.Text = working.NewValue?.Metadata?.Artist; + + this.FadeIn(duration, Easing.OutQuint).Delay(4000).Then().FadeOut(duration, Easing.OutQuint); + } + } +} From 7716a555ecb71fd5d3ad290bc22d89daf4a281c1 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 11 Jan 2020 07:08:00 +0300 Subject: [PATCH 0779/1829] Move only ButtonSystem on screen changes rather than everything --- osu.Game/Screens/Menu/MainMenu.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/osu.Game/Screens/Menu/MainMenu.cs b/osu.Game/Screens/Menu/MainMenu.cs index 47c86fc1ae..c4465dce17 100644 --- a/osu.Game/Screens/Menu/MainMenu.cs +++ b/osu.Game/Screens/Menu/MainMenu.cs @@ -69,6 +69,8 @@ namespace osu.Game.Screens.Menu private ExitConfirmOverlay exitConfirmOverlay; + private ParallaxContainer buttonsContainer; + [BackgroundDependencyLoader(true)] private void load(DirectOverlay direct, SettingsOverlay settings, OsuConfigManager config, SessionStatics statics) { @@ -79,7 +81,7 @@ namespace osu.Game.Screens.Menu { Anchor = Anchor.TopRight, Origin = Anchor.TopRight, - Margin = new MarginPadding { Right = 15 } + Margin = new MarginPadding { Right = 15, Top = 5 } }); if (host.CanExit) @@ -98,7 +100,7 @@ namespace osu.Game.Screens.Menu AddRangeInternal(new Drawable[] { - new ParallaxContainer + buttonsContainer = new ParallaxContainer { ParallaxAmount = 0.01f, Children = new Drawable[] @@ -197,7 +199,7 @@ namespace osu.Game.Screens.Menu buttons.State = ButtonSystemState.TopLevel; this.FadeIn(FADE_IN_DURATION, Easing.OutQuint); - this.MoveTo(new Vector2(0, 0), FADE_IN_DURATION, Easing.OutQuint); + buttonsContainer.MoveTo(new Vector2(0, 0), FADE_IN_DURATION, Easing.OutQuint); sideFlashes.Delay(FADE_IN_DURATION).FadeIn(64, Easing.InQuint); } @@ -234,7 +236,7 @@ namespace osu.Game.Screens.Menu buttons.State = ButtonSystemState.EnteringMode; this.FadeOut(FADE_OUT_DURATION, Easing.InSine); - this.MoveTo(new Vector2(-800, 0), FADE_OUT_DURATION, Easing.InSine); + buttonsContainer.MoveTo(new Vector2(-800, 0), FADE_OUT_DURATION, Easing.InSine); sideFlashes.FadeOut(64, Easing.OutQuint); } From 820f9f2273f98995c2da7c40427e43b3d0ca0ae8 Mon Sep 17 00:00:00 2001 From: Joehu Date: Fri, 10 Jan 2020 20:16:46 -0800 Subject: [PATCH 0780/1829] Fix default button absorbing drag scroll on settings --- osu.Game/Overlays/Settings/SettingsItem.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/osu.Game/Overlays/Settings/SettingsItem.cs b/osu.Game/Overlays/Settings/SettingsItem.cs index 35f28ab1b2..55e1937d83 100644 --- a/osu.Game/Overlays/Settings/SettingsItem.cs +++ b/osu.Game/Overlays/Settings/SettingsItem.cs @@ -163,10 +163,6 @@ namespace osu.Game.Overlays.Settings public string TooltipText => "Revert to default"; - protected override bool OnMouseDown(MouseDownEvent e) => true; - - protected override bool OnMouseUp(MouseUpEvent e) => true; - protected override bool OnClick(ClickEvent e) { if (bindable != null && !bindable.Disabled) From d59cae33d3f0ff67fc5f6a38a7a2c02449bcb110 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 11 Jan 2020 07:17:13 +0300 Subject: [PATCH 0781/1829] Some animation adjustments --- osu.Game/Screens/Menu/MainMenu.cs | 6 +++++- osu.Game/Screens/Menu/SongTicker.cs | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/osu.Game/Screens/Menu/MainMenu.cs b/osu.Game/Screens/Menu/MainMenu.cs index c4465dce17..0b267731d8 100644 --- a/osu.Game/Screens/Menu/MainMenu.cs +++ b/osu.Game/Screens/Menu/MainMenu.cs @@ -70,6 +70,7 @@ namespace osu.Game.Screens.Menu private ExitConfirmOverlay exitConfirmOverlay; private ParallaxContainer buttonsContainer; + private SongTicker songTicker; [BackgroundDependencyLoader(true)] private void load(DirectOverlay direct, SettingsOverlay settings, OsuConfigManager config, SessionStatics statics) @@ -77,7 +78,7 @@ namespace osu.Game.Screens.Menu holdDelay = config.GetBindable(OsuSetting.UIHoldActivationDelay); loginDisplayed = statics.GetBindable(Static.LoginOverlayDisplayed); - AddInternal(new SongTicker + AddInternal(songTicker = new SongTicker { Anchor = Anchor.TopRight, Origin = Anchor.TopRight, @@ -235,6 +236,7 @@ namespace osu.Game.Screens.Menu buttons.State = ButtonSystemState.EnteringMode; + songTicker.Hide(); this.FadeOut(FADE_OUT_DURATION, Easing.InSine); buttonsContainer.MoveTo(new Vector2(-800, 0), FADE_OUT_DURATION, Easing.InSine); @@ -244,6 +246,7 @@ namespace osu.Game.Screens.Menu public override void OnResuming(IScreen last) { base.OnResuming(last); + songTicker.Hide(); (Background as BackgroundScreenDefault)?.Next(); @@ -272,6 +275,7 @@ namespace osu.Game.Screens.Menu buttons.State = ButtonSystemState.Exit; this.FadeOut(3000); + songTicker.Hide(); return base.OnExiting(next); } diff --git a/osu.Game/Screens/Menu/SongTicker.cs b/osu.Game/Screens/Menu/SongTicker.cs index 504b016019..eb7012a150 100644 --- a/osu.Game/Screens/Menu/SongTicker.cs +++ b/osu.Game/Screens/Menu/SongTicker.cs @@ -14,7 +14,7 @@ namespace osu.Game.Screens.Menu { public class SongTicker : Container { - private const int duration = 500; + private const int fade_duration = 800; [Resolved] private Bindable beatmap { get; set; } @@ -60,7 +60,7 @@ namespace osu.Game.Screens.Menu title.Text = working.NewValue?.Metadata?.Title; artist.Text = working.NewValue?.Metadata?.Artist; - this.FadeIn(duration, Easing.OutQuint).Delay(4000).Then().FadeOut(duration, Easing.OutQuint); + this.FadeIn(fade_duration, Easing.OutQuint).Delay(4000).Then().FadeOut(fade_duration, Easing.OutQuint); } } } From e6210f10b7de81a12ef03148202ae14933a77fb7 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 11 Jan 2020 07:32:40 +0300 Subject: [PATCH 0782/1829] Add unicode metadata support --- osu.Game/Screens/Menu/SongTicker.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/osu.Game/Screens/Menu/SongTicker.cs b/osu.Game/Screens/Menu/SongTicker.cs index eb7012a150..d9b66d06e9 100644 --- a/osu.Game/Screens/Menu/SongTicker.cs +++ b/osu.Game/Screens/Menu/SongTicker.cs @@ -9,6 +9,7 @@ using osuTK; using osu.Game.Graphics; using osu.Framework.Bindables; using osu.Game.Beatmaps; +using osu.Framework.Localisation; namespace osu.Game.Screens.Menu { @@ -57,8 +58,13 @@ namespace osu.Game.Screens.Menu private void onBeatmapChanged(ValueChangedEvent working) { - title.Text = working.NewValue?.Metadata?.Title; - artist.Text = working.NewValue?.Metadata?.Artist; + if (working.NewValue?.Beatmap == null) + return; + + var metadata = working.NewValue?.Metadata; + + title.Text = new LocalisedString((metadata.TitleUnicode, metadata.Title)); + artist.Text = new LocalisedString((metadata.ArtistUnicode, metadata.Artist)); this.FadeIn(fade_duration, Easing.OutQuint).Delay(4000).Then().FadeOut(fade_duration, Easing.OutQuint); } From e1eda89ea69234164ae055d1f129626d8fc970f7 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Wed, 8 Jan 2020 17:41:44 +0100 Subject: [PATCH 0783/1829] Implement OnlineContainer --- osu.Game/Online/OnlineContainer.cs | 76 ++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 osu.Game/Online/OnlineContainer.cs diff --git a/osu.Game/Online/OnlineContainer.cs b/osu.Game/Online/OnlineContainer.cs new file mode 100644 index 0000000000..6ab5203fe6 --- /dev/null +++ b/osu.Game/Online/OnlineContainer.cs @@ -0,0 +1,76 @@ +using osu.Framework.Allocation; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Online.API; +using osu.Game.Online.Placeholders; + +namespace osu.Game.Online +{ + /// + /// A for dislaying online content who require a local user to be logged in. + /// Shows its children only when the local user is logged in and supports displaying a placeholder if not. + /// + public class OnlineViewContainer : Container, IOnlineComponent + { + private readonly Container content; + private readonly Container placeholderContainer; + private readonly Placeholder placeholder; + + private const int transform_time = 300; + + protected override Container Content => content; + + public OnlineViewContainer(string placeholder_message) + { + InternalChildren = new Drawable[] + { + content = new Container + { + RelativeSizeAxes = Axes.Both, + }, + placeholderContainer = new Container + { + RelativeSizeAxes = Axes.Both, + Alpha = 0, + Child = placeholder = new LoginPlaceholder() + }, + }; + } + + public void APIStateChanged(IAPIProvider api, APIState state) + { + switch (state) + { + case APIState.Offline: + case APIState.Connecting: + Schedule(() =>updatePlaceholderVisibility(true)); + break; + + default: + Schedule(() => updatePlaceholderVisibility(false)); + break; + } + } + + private void updatePlaceholderVisibility(bool show_placeholder) + { + if (show_placeholder) + { + content.FadeOut(transform_time / 2, Easing.OutQuint); + placeholder.ScaleTo(0.8f).Then().ScaleTo(1, 3 * transform_time, Easing.OutQuint); + placeholderContainer.FadeInFromZero(2 * transform_time, Easing.OutQuint); + } + else + { + placeholderContainer.FadeOut(transform_time / 2, Easing.OutQuint); + content.FadeIn(transform_time, Easing.OutQuint); + } + } + + [BackgroundDependencyLoader] + private void load(IAPIProvider api) + { + api.Register(this); + } + } +} From 76c70a76229a956c186d304c9232a604015148e8 Mon Sep 17 00:00:00 2001 From: mcendu Date: Sat, 11 Jan 2020 21:19:46 +0800 Subject: [PATCH 0784/1829] Move hit target bar height def to defaulthittarget --- osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs b/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs index ee2cec1bbd..90e78c3899 100644 --- a/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs +++ b/osu.Game.Rulesets.Mania/UI/Components/ColumnHitObjectArea.cs @@ -18,8 +18,6 @@ namespace osu.Game.Rulesets.Mania.UI.Components { public class ColumnHitObjectArea : CompositeDrawable, IHasAccentColour { - private const float hit_target_bar_height = 2; - private readonly IBindable direction = new Bindable(); private readonly Drawable hitTarget; @@ -67,6 +65,8 @@ namespace osu.Game.Rulesets.Mania.UI.Components private class DefaultHitTarget : CompositeDrawable, IHasAccentColour { + private const float hit_target_bar_height = 2; + private readonly IBindable direction = new Bindable(); private readonly Container hitTargetLine; From d25ef1966d32bda80e258da550a6c87768ca0eeb Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 11 Jan 2020 17:48:09 +0300 Subject: [PATCH 0785/1829] Remove unnecessary local bindable --- osu.Game/Screens/Menu/SongTicker.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/osu.Game/Screens/Menu/SongTicker.cs b/osu.Game/Screens/Menu/SongTicker.cs index d9b66d06e9..f2c861a296 100644 --- a/osu.Game/Screens/Menu/SongTicker.cs +++ b/osu.Game/Screens/Menu/SongTicker.cs @@ -20,7 +20,6 @@ namespace osu.Game.Screens.Menu [Resolved] private Bindable beatmap { get; set; } - private readonly Bindable workingBeatmap = new Bindable(); private readonly OsuSpriteText title, artist; public SongTicker() @@ -52,8 +51,7 @@ namespace osu.Game.Screens.Menu protected override void LoadComplete() { base.LoadComplete(); - workingBeatmap.BindTo(beatmap); - workingBeatmap.BindValueChanged(onBeatmapChanged); + beatmap.BindValueChanged(onBeatmapChanged); } private void onBeatmapChanged(ValueChangedEvent working) From 81948744d056acd6ca24d0f6875236fcef3f034a Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 11 Jan 2020 17:50:13 +0300 Subject: [PATCH 0786/1829] remove unnecessary null checks --- osu.Game/Screens/Menu/SongTicker.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/osu.Game/Screens/Menu/SongTicker.cs b/osu.Game/Screens/Menu/SongTicker.cs index f2c861a296..8eae94ae1d 100644 --- a/osu.Game/Screens/Menu/SongTicker.cs +++ b/osu.Game/Screens/Menu/SongTicker.cs @@ -56,10 +56,7 @@ namespace osu.Game.Screens.Menu private void onBeatmapChanged(ValueChangedEvent working) { - if (working.NewValue?.Beatmap == null) - return; - - var metadata = working.NewValue?.Metadata; + var metadata = working.NewValue.Metadata; title.Text = new LocalisedString((metadata.TitleUnicode, metadata.Title)); artist.Text = new LocalisedString((metadata.ArtistUnicode, metadata.Artist)); From ec95cbd0affc9e9c91817459740f46f4ba964a4d Mon Sep 17 00:00:00 2001 From: Lucas A Date: Sat, 11 Jan 2020 16:03:00 +0100 Subject: [PATCH 0787/1829] Don't update rich presence if the rpc client isn't initialized. --- osu.Desktop/DiscordRichPresence.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/osu.Desktop/DiscordRichPresence.cs b/osu.Desktop/DiscordRichPresence.cs index 80bb82c769..08cc0e7f5f 100644 --- a/osu.Desktop/DiscordRichPresence.cs +++ b/osu.Desktop/DiscordRichPresence.cs @@ -75,6 +75,9 @@ namespace osu.Desktop private void updateStatus() { + if (!client.IsInitialized) + return; + if (status.Value is UserStatusOffline) { client.ClearPresence(); From bd33687f533a969d7bd855054b50f840614ef754 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 11 Jan 2020 18:27:22 +0300 Subject: [PATCH 0788/1829] Add AllowUpdates flag to SongTicker --- osu.Game/Screens/Menu/MainMenu.cs | 5 ++++- osu.Game/Screens/Menu/SongTicker.cs | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Menu/MainMenu.cs b/osu.Game/Screens/Menu/MainMenu.cs index 0b267731d8..72b61eb05c 100644 --- a/osu.Game/Screens/Menu/MainMenu.cs +++ b/osu.Game/Screens/Menu/MainMenu.cs @@ -237,6 +237,8 @@ namespace osu.Game.Screens.Menu buttons.State = ButtonSystemState.EnteringMode; songTicker.Hide(); + songTicker.AllowUpdates = false; + this.FadeOut(FADE_OUT_DURATION, Easing.InSine); buttonsContainer.MoveTo(new Vector2(-800, 0), FADE_OUT_DURATION, Easing.InSine); @@ -246,7 +248,8 @@ namespace osu.Game.Screens.Menu public override void OnResuming(IScreen last) { base.OnResuming(last); - songTicker.Hide(); + + songTicker.AllowUpdates = true; (Background as BackgroundScreenDefault)?.Next(); diff --git a/osu.Game/Screens/Menu/SongTicker.cs b/osu.Game/Screens/Menu/SongTicker.cs index 8eae94ae1d..f858d162d2 100644 --- a/osu.Game/Screens/Menu/SongTicker.cs +++ b/osu.Game/Screens/Menu/SongTicker.cs @@ -17,6 +17,8 @@ namespace osu.Game.Screens.Menu { private const int fade_duration = 800; + public bool AllowUpdates { get; set; } = true; + [Resolved] private Bindable beatmap { get; set; } @@ -56,6 +58,9 @@ namespace osu.Game.Screens.Menu private void onBeatmapChanged(ValueChangedEvent working) { + if (!AllowUpdates) + return; + var metadata = working.NewValue.Metadata; title.Text = new LocalisedString((metadata.TitleUnicode, metadata.Title)); From cd679707eddc4aa2a4ff911e4da1221526bc3a2a Mon Sep 17 00:00:00 2001 From: Craftplacer Date: Sat, 11 Jan 2020 17:16:11 +0100 Subject: [PATCH 0789/1829] Prevent channel duplicates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Bartłomiej Dach --- osu.Game/Online/Chat/ChannelManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Online/Chat/ChannelManager.cs b/osu.Game/Online/Chat/ChannelManager.cs index 19c3be0d7b..33b0c0e9e1 100644 --- a/osu.Game/Online/Chat/ChannelManager.cs +++ b/osu.Game/Online/Chat/ChannelManager.cs @@ -447,7 +447,7 @@ namespace osu.Game.Online.Chat public void MarkChannelAsRead(Message message) { - var channel = JoinedChannels.First(c => c.Id == message.ChannelId); + var channel = JoinedChannels.Single(c => c.Id == message.ChannelId); var req = new MarkChannelAsReadRequest(channel, message); req.Success += () => channel.LastReadId = message.Id; req.Failure += e => Logger.Error(e, "Failed to mark channel as read"); From 50e357a79930b0980fb67fddafc21c65712a0c49 Mon Sep 17 00:00:00 2001 From: Craftplacer Date: Sat, 11 Jan 2020 17:42:02 +0100 Subject: [PATCH 0790/1829] Change method parameters, add detailed error message and method docs --- osu.Game/Online/Chat/ChannelManager.cs | 16 +++++++++++++--- osu.Game/Overlays/ChatOverlay.cs | 2 +- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/osu.Game/Online/Chat/ChannelManager.cs b/osu.Game/Online/Chat/ChannelManager.cs index 33b0c0e9e1..9f263477d0 100644 --- a/osu.Game/Online/Chat/ChannelManager.cs +++ b/osu.Game/Online/Chat/ChannelManager.cs @@ -445,12 +445,22 @@ namespace osu.Game.Online.Chat return tcs.Task; } - public void MarkChannelAsRead(Message message) + /// + /// Marks the as read + /// (see for more information) + /// + /// The channel that will be marked as read + /// The message where it will be read up to. If was provided, the latest message of the will be read. + public void MarkChannelAsRead(Channel channel, Message message = null) { - var channel = JoinedChannels.Single(c => c.Id == message.ChannelId); + if (message == null) + message = channel.Messages.Last(); + var req = new MarkChannelAsReadRequest(channel, message); + req.Success += () => channel.LastReadId = message.Id; - req.Failure += e => Logger.Error(e, "Failed to mark channel as read"); + req.Failure += e => Logger.Error(e, $"Failed to mark channel {channel.ToString()} up to '{message.ToString()}' as read"); + api.Queue(req); } diff --git a/osu.Game/Overlays/ChatOverlay.cs b/osu.Game/Overlays/ChatOverlay.cs index b64d3a1893..45d311df28 100644 --- a/osu.Game/Overlays/ChatOverlay.cs +++ b/osu.Game/Overlays/ChatOverlay.cs @@ -282,7 +282,7 @@ namespace osu.Game.Overlays // mark channel as read when channel switched if (e.NewValue.Messages.Any()) - channelManager.MarkChannelAsRead(e.NewValue.Messages.Last()); + channelManager.MarkChannelAsRead(e.NewValue); } private float startDragChatHeight; From d9c57baa89cab9430f3a9577666d0a8708096444 Mon Sep 17 00:00:00 2001 From: Craftplacer Date: Sat, 11 Jan 2020 17:48:03 +0100 Subject: [PATCH 0791/1829] Add test case for mismatch of channels --- osu.Game/Online/Chat/ChannelManager.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/osu.Game/Online/Chat/ChannelManager.cs b/osu.Game/Online/Chat/ChannelManager.cs index 9f263477d0..b30d1ffa60 100644 --- a/osu.Game/Online/Chat/ChannelManager.cs +++ b/osu.Game/Online/Chat/ChannelManager.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Threading.Tasks; using osu.Framework.Allocation; @@ -455,6 +456,8 @@ namespace osu.Game.Online.Chat { if (message == null) message = channel.Messages.Last(); + else + Debug.Assert(channel.Id == message.Id, "Provided channel and message owner channel aren't equal."); var req = new MarkChannelAsReadRequest(channel, message); From f8a11e50b677c4f3172efbbeae05eee81e713608 Mon Sep 17 00:00:00 2001 From: Craftplacer Date: Sat, 11 Jan 2020 18:00:34 +0100 Subject: [PATCH 0792/1829] Remove redundant ToString() calls as string interpolation does this automatically.. --- osu.Game/Online/Chat/ChannelManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Online/Chat/ChannelManager.cs b/osu.Game/Online/Chat/ChannelManager.cs index b30d1ffa60..5aab43dbd9 100644 --- a/osu.Game/Online/Chat/ChannelManager.cs +++ b/osu.Game/Online/Chat/ChannelManager.cs @@ -462,7 +462,7 @@ namespace osu.Game.Online.Chat var req = new MarkChannelAsReadRequest(channel, message); req.Success += () => channel.LastReadId = message.Id; - req.Failure += e => Logger.Error(e, $"Failed to mark channel {channel.ToString()} up to '{message.ToString()}' as read"); + req.Failure += e => Logger.Error(e, $"Failed to mark channel {channel} up to '{message}' as read"); api.Queue(req); } From 2ea1367a881cab6e5e9eed787971a6f5ca22f989 Mon Sep 17 00:00:00 2001 From: Craftplacer Date: Sat, 11 Jan 2020 19:47:35 +0100 Subject: [PATCH 0793/1829] Remove message parameter and make it mark the entire channel as read --- osu.Game/Online/Chat/ChannelManager.cs | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/osu.Game/Online/Chat/ChannelManager.cs b/osu.Game/Online/Chat/ChannelManager.cs index 5aab43dbd9..4071be0aaf 100644 --- a/osu.Game/Online/Chat/ChannelManager.cs +++ b/osu.Game/Online/Chat/ChannelManager.cs @@ -448,17 +448,11 @@ namespace osu.Game.Online.Chat /// /// Marks the as read - /// (see for more information) /// /// The channel that will be marked as read - /// The message where it will be read up to. If was provided, the latest message of the will be read. - public void MarkChannelAsRead(Channel channel, Message message = null) + public void MarkChannelAsRead(Channel channel) { - if (message == null) - message = channel.Messages.Last(); - else - Debug.Assert(channel.Id == message.Id, "Provided channel and message owner channel aren't equal."); - + var message = channel.Messages.Last(); var req = new MarkChannelAsReadRequest(channel, message); req.Success += () => channel.LastReadId = message.Id; From ccaf4e48a169644bafbfeafe006e9c71d57a5beb Mon Sep 17 00:00:00 2001 From: Craftplacer Date: Sat, 11 Jan 2020 20:04:58 +0100 Subject: [PATCH 0794/1829] Remove using directive --- osu.Game/Online/Chat/ChannelManager.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Online/Chat/ChannelManager.cs b/osu.Game/Online/Chat/ChannelManager.cs index 4071be0aaf..35a48b7ec8 100644 --- a/osu.Game/Online/Chat/ChannelManager.cs +++ b/osu.Game/Online/Chat/ChannelManager.cs @@ -3,7 +3,6 @@ using System; using System.Collections.Generic; -using System.Diagnostics; using System.Linq; using System.Threading.Tasks; using osu.Framework.Allocation; From 730cc92bf36ddf5c7a2eb53d5c7042b422708de5 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 11 Jan 2020 22:43:07 +0300 Subject: [PATCH 0795/1829] Fade out instead of insta hiding on menu suspending --- osu.Game/Screens/Menu/MainMenu.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Menu/MainMenu.cs b/osu.Game/Screens/Menu/MainMenu.cs index 72b61eb05c..2de31cf399 100644 --- a/osu.Game/Screens/Menu/MainMenu.cs +++ b/osu.Game/Screens/Menu/MainMenu.cs @@ -236,7 +236,7 @@ namespace osu.Game.Screens.Menu buttons.State = ButtonSystemState.EnteringMode; - songTicker.Hide(); + songTicker.FadeOut(100, Easing.OutQuint); songTicker.AllowUpdates = false; this.FadeOut(FADE_OUT_DURATION, Easing.InSine); From f43602518a6b013bdcb0e8cd9bc3309463f4d53c Mon Sep 17 00:00:00 2001 From: Joehu Date: Sat, 11 Jan 2020 11:43:51 -0800 Subject: [PATCH 0796/1829] Add global action for toggling now playing overlay --- osu.Game/Input/Bindings/GlobalActionContainer.cs | 4 ++++ osu.Game/OsuGame.cs | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/osu.Game/Input/Bindings/GlobalActionContainer.cs b/osu.Game/Input/Bindings/GlobalActionContainer.cs index e37567c72c..7763577a14 100644 --- a/osu.Game/Input/Bindings/GlobalActionContainer.cs +++ b/osu.Game/Input/Bindings/GlobalActionContainer.cs @@ -24,6 +24,7 @@ namespace osu.Game.Input.Bindings public IEnumerable GlobalKeyBindings => new[] { + new KeyBinding(InputKey.F6, GlobalAction.ToggleNowPlaying), new KeyBinding(InputKey.F8, GlobalAction.ToggleChat), new KeyBinding(InputKey.F9, GlobalAction.ToggleSocial), new KeyBinding(InputKey.F10, GlobalAction.ToggleGameplayMouseButtons), @@ -137,5 +138,8 @@ namespace osu.Game.Input.Bindings [Description("Play / pause")] MusicPlay, + + [Description("Toggle now playing overlay")] + ToggleNowPlaying, } } diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index 84aba4af52..9df854d178 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -61,6 +61,8 @@ namespace osu.Game private NotificationOverlay notifications; + private NowPlayingOverlay nowPlaying; + private DirectOverlay direct; private SocialOverlay social; @@ -624,7 +626,7 @@ namespace osu.Game Origin = Anchor.TopRight, }, rightFloatingOverlayContent.Add, true); - loadComponentSingleFile(new NowPlayingOverlay + loadComponentSingleFile(nowPlaying = new NowPlayingOverlay { GetToolbarHeight = () => ToolbarOffset, Anchor = Anchor.TopRight, @@ -822,6 +824,10 @@ namespace osu.Game switch (action) { + case GlobalAction.ToggleNowPlaying: + nowPlaying.ToggleVisibility(); + return true; + case GlobalAction.ToggleChat: chatOverlay.ToggleVisibility(); return true; From f1b4fbb844082a910481373c74114b59519ad62c Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 12 Jan 2020 17:38:15 +0300 Subject: [PATCH 0797/1829] Make gradient in NewsArticleCover be effected by hover --- osu.Game/Overlays/News/NewsArticleCover.cs | 23 +++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/News/NewsArticleCover.cs b/osu.Game/Overlays/News/NewsArticleCover.cs index e484309a18..f61b30b381 100644 --- a/osu.Game/Overlays/News/NewsArticleCover.cs +++ b/osu.Game/Overlays/News/NewsArticleCover.cs @@ -11,6 +11,7 @@ using osu.Framework.Graphics.Cursor; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Textures; +using osu.Framework.Input.Events; using osu.Game.Graphics; using osu.Game.Graphics.Sprites; using osuTK.Graphics; @@ -19,6 +20,10 @@ namespace osu.Game.Overlays.News { public class NewsArticleCover : Container { + private const int hover_duration = 300; + + private readonly Box gradient; + public NewsArticleCover(ArticleInfo info) { RelativeSizeAxes = Axes.X; @@ -47,11 +52,11 @@ namespace osu.Game.Overlays.News Origin = Anchor.Centre, RelativeSizeAxes = Axes.Both, }, - new Box + gradient = new Box { RelativeSizeAxes = Axes.Both, - Colour = ColourInfo.GradientVertical(Color4.Black.Opacity(0.1f), Color4.Black.Opacity(0.6f)), - Alpha = 1f, + Colour = ColourInfo.GradientVertical(Color4.Black.Opacity(0.1f), Color4.Black.Opacity(0.7f)), + Alpha = 0 }, new DateContainer(info.Time) { @@ -90,6 +95,18 @@ namespace osu.Game.Overlays.News bg.OnLoadComplete += d => d.FadeIn(250, Easing.In); } + protected override bool OnHover(HoverEvent e) + { + gradient.FadeIn(hover_duration, Easing.OutQuint); + return base.OnHover(e); + } + + protected override void OnHoverLost(HoverLostEvent e) + { + base.OnHoverLost(e); + gradient.FadeOut(hover_duration, Easing.OutQuint); + } + [LongRunningLoad] private class NewsBackground : Sprite { From e9a52984845e9a39cab5a5dd09081aa7045d6436 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Sun, 12 Jan 2020 15:50:35 +0100 Subject: [PATCH 0798/1829] Allow setting the displayed text on LoginPlaceholder --- osu.Game/Online/Leaderboards/Leaderboard.cs | 2 +- osu.Game/Online/OnlineContainer.cs | 2 +- osu.Game/Online/Placeholders/LoginPlaceholder.cs | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game/Online/Leaderboards/Leaderboard.cs b/osu.Game/Online/Leaderboards/Leaderboard.cs index 55233bef6e..095e552ddd 100644 --- a/osu.Game/Online/Leaderboards/Leaderboard.cs +++ b/osu.Game/Online/Leaderboards/Leaderboard.cs @@ -151,7 +151,7 @@ namespace osu.Game.Online.Leaderboards break; case PlaceholderState.NotLoggedIn: - replacePlaceholder(new LoginPlaceholder()); + replacePlaceholder(new LoginPlaceholder(@"Please sign in to view online leaderboards!")); break; case PlaceholderState.NotSupporter: diff --git a/osu.Game/Online/OnlineContainer.cs b/osu.Game/Online/OnlineContainer.cs index 6ab5203fe6..6a8963599f 100644 --- a/osu.Game/Online/OnlineContainer.cs +++ b/osu.Game/Online/OnlineContainer.cs @@ -32,7 +32,7 @@ namespace osu.Game.Online { RelativeSizeAxes = Axes.Both, Alpha = 0, - Child = placeholder = new LoginPlaceholder() + Child = placeholder = new LoginPlaceholder(placeholder_message) }, }; } diff --git a/osu.Game/Online/Placeholders/LoginPlaceholder.cs b/osu.Game/Online/Placeholders/LoginPlaceholder.cs index ffc6623229..f3b5a86785 100644 --- a/osu.Game/Online/Placeholders/LoginPlaceholder.cs +++ b/osu.Game/Online/Placeholders/LoginPlaceholder.cs @@ -14,7 +14,7 @@ namespace osu.Game.Online.Placeholders [Resolved(CanBeNull = true)] private LoginOverlay login { get; set; } - public LoginPlaceholder() + public LoginPlaceholder(string actionMessage) { AddIcon(FontAwesome.Solid.UserLock, cp => { @@ -22,7 +22,7 @@ namespace osu.Game.Online.Placeholders cp.Padding = new MarginPadding { Right = 10 }; }); - AddText(@"Please sign in to view online leaderboards!"); + AddText(actionMessage); } protected override bool OnMouseDown(MouseDownEvent e) From 8cc2d70df0fb725e09891caf912adb335841e31d Mon Sep 17 00:00:00 2001 From: Craftplacer Date: Sun, 12 Jan 2020 16:24:14 +0100 Subject: [PATCH 0799/1829] Reduce API calls by checking what message was last marked as read --- osu.Game/Online/Chat/ChannelManager.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/osu.Game/Online/Chat/ChannelManager.cs b/osu.Game/Online/Chat/ChannelManager.cs index 35a48b7ec8..b741bd9433 100644 --- a/osu.Game/Online/Chat/ChannelManager.cs +++ b/osu.Game/Online/Chat/ChannelManager.cs @@ -451,6 +451,9 @@ namespace osu.Game.Online.Chat /// The channel that will be marked as read public void MarkChannelAsRead(Channel channel) { + if (channel.LastMessageId == channel.LastReadId) + return; + var message = channel.Messages.Last(); var req = new MarkChannelAsReadRequest(channel, message); From 8f6c6ad77a6198c8954195e656099b6fc4450732 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Sun, 12 Jan 2020 17:43:44 +0100 Subject: [PATCH 0800/1829] Fix class name not corresponding to filename --- osu.Game/Online/{OnlineContainer.cs => OnlineViewContainer.cs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename osu.Game/Online/{OnlineContainer.cs => OnlineViewContainer.cs} (100%) diff --git a/osu.Game/Online/OnlineContainer.cs b/osu.Game/Online/OnlineViewContainer.cs similarity index 100% rename from osu.Game/Online/OnlineContainer.cs rename to osu.Game/Online/OnlineViewContainer.cs From aa2645502cf182cc8241814f89ad0a39f6b4cbf3 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Sun, 12 Jan 2020 20:43:48 +0100 Subject: [PATCH 0801/1829] Fix adjusted value always being 0 --- osu.Game/Screens/Select/Details/AdvancedStats.cs | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/osu.Game/Screens/Select/Details/AdvancedStats.cs b/osu.Game/Screens/Select/Details/AdvancedStats.cs index a147527f6c..52a5b101d4 100644 --- a/osu.Game/Screens/Select/Details/AdvancedStats.cs +++ b/osu.Game/Screens/Select/Details/AdvancedStats.cs @@ -118,17 +118,9 @@ namespace osu.Game.Screens.Select.Details mod.ApplyToDifficulty(adjustedDifficulty); } - //mania specific - if ((Beatmap?.Ruleset?.ID ?? 0) == 3) - { - firstValue.Title = "Key Amount"; - firstValue.Value = ((int)MathF.Round(baseDifficulty?.CircleSize ?? 0), (int)MathF.Round(adjustedDifficulty?.CircleSize ?? 0)); - } - else - { - firstValue.Title = "Circle Size"; - firstValue.Value = (baseDifficulty?.CircleSize ?? 0, adjustedDifficulty?.CircleSize); - } + // Account for mania differences + firstValue.Title = (Beatmap?.Ruleset?.ID ?? 0) == 3 ? "Key Amount" : "Circle Size"; + firstValue.Value = (baseDifficulty?.CircleSize ?? 0, adjustedDifficulty?.CircleSize); starDifficulty.Value = ((float)(Beatmap?.StarDifficulty ?? 0), null); From b5ac707c6cf9be7671adbaa95677ad43ce7d9379 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Sun, 12 Jan 2020 21:09:48 +0100 Subject: [PATCH 0802/1829] Remove unnecessary directive --- osu.Game/Screens/Select/Details/AdvancedStats.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Screens/Select/Details/AdvancedStats.cs b/osu.Game/Screens/Select/Details/AdvancedStats.cs index 52a5b101d4..b7f60a8370 100644 --- a/osu.Game/Screens/Select/Details/AdvancedStats.cs +++ b/osu.Game/Screens/Select/Details/AdvancedStats.cs @@ -10,7 +10,6 @@ using osu.Framework.Graphics.Containers; using osu.Game.Graphics; using osu.Game.Graphics.Sprites; using osu.Game.Graphics.UserInterface; -using System; using osu.Game.Beatmaps; using osu.Framework.Bindables; using System.Collections.Generic; From c190c68659236e0e5b2d57945b7a52ee7d936a7f Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 13 Jan 2020 12:22:44 +0900 Subject: [PATCH 0803/1829] Add safety for channel with no messages --- osu.Game/Online/Chat/ChannelManager.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/osu.Game/Online/Chat/ChannelManager.cs b/osu.Game/Online/Chat/ChannelManager.cs index b741bd9433..4b5ec1cad0 100644 --- a/osu.Game/Online/Chat/ChannelManager.cs +++ b/osu.Game/Online/Chat/ChannelManager.cs @@ -454,7 +454,11 @@ namespace osu.Game.Online.Chat if (channel.LastMessageId == channel.LastReadId) return; - var message = channel.Messages.Last(); + var message = channel.Messages.LastOrDefault(); + + if (message == null) + return; + var req = new MarkChannelAsReadRequest(channel, message); req.Success += () => channel.LastReadId = message.Id; From af167eb719964794663983e32f2fbac80ba4f693 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Mon, 13 Jan 2020 23:28:26 +0700 Subject: [PATCH 0804/1829] Remove duplicate condition in TournamentFont --- osu.Game.Tournament/TournamentFont.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Tournament/TournamentFont.cs b/osu.Game.Tournament/TournamentFont.cs index f9e60ff2bc..32f0264562 100644 --- a/osu.Game.Tournament/TournamentFont.cs +++ b/osu.Game.Tournament/TournamentFont.cs @@ -61,7 +61,7 @@ namespace osu.Game.Tournament string weightString = weight.ToString(); // Only exo has an explicit "regular" weight, other fonts do not - if (weight == FontWeight.Regular && family != GetFamilyString(TournamentTypeface.Aquatico) && family != GetFamilyString(TournamentTypeface.Aquatico)) + if (weight == FontWeight.Regular && family != GetFamilyString(TournamentTypeface.Aquatico)) weightString = string.Empty; return weightString; From 619fe29871b7e2797b9e0c15003842bb70e4059f Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 14 Jan 2020 01:39:45 +0900 Subject: [PATCH 0805/1829] Make reverse arrow animate faster via divisor specification Adds MinimumBeatLength to BeatSyncedContainer to make sure things don't get out of hand. --- .../Objects/Drawables/Pieces/ReverseArrowPiece.cs | 3 +++ osu.Game/Graphics/Containers/BeatSyncedContainer.cs | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs index 2b9a3aa197..2c6e5b7c18 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs @@ -20,6 +20,9 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces { this.repeatPoint = repeatPoint; + Divisor = 2; + MinimumBeatLength = 200; + Anchor = Anchor.Centre; Origin = Anchor.Centre; diff --git a/osu.Game/Graphics/Containers/BeatSyncedContainer.cs b/osu.Game/Graphics/Containers/BeatSyncedContainer.cs index b9ef279f5c..be9aefa359 100644 --- a/osu.Game/Graphics/Containers/BeatSyncedContainer.cs +++ b/osu.Game/Graphics/Containers/BeatSyncedContainer.cs @@ -38,6 +38,11 @@ namespace osu.Game.Graphics.Containers /// public int Divisor { get; set; } = 1; + /// + /// An optional minimum beat length. Any beat length below this will be multiplied by two until valid. + /// + public double MinimumBeatLength { get; set; } + /// /// Default length of a beat in milliseconds. Used whenever there is no beatmap or track playing. /// @@ -89,6 +94,9 @@ namespace osu.Game.Graphics.Containers double beatLength = timingPoint.BeatLength / Divisor; + while (beatLength < MinimumBeatLength) + beatLength *= 2; + int beatIndex = (int)((currentTrackTime - timingPoint.Time) / beatLength) - (effectPoint.OmitFirstBarLine ? 1 : 0); // The beats before the start of the first control point are off by 1, this should do the trick From c5085aea24ae4b08890baac8e894ce208d71af7e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 14 Jan 2020 01:45:10 +0900 Subject: [PATCH 0806/1829] Use Child, not InternalChild --- .../Objects/Drawables/Pieces/ReverseArrowPiece.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs index 2c6e5b7c18..ee7cdefa13 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs @@ -30,7 +30,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces Size = new Vector2(OsuHitObject.OBJECT_RADIUS * 2); - InternalChild = new SkinnableDrawable(new OsuSkinComponent(OsuSkinComponents.ReverseArrow), _ => new SpriteIcon + Child = new SkinnableDrawable(new OsuSkinComponent(OsuSkinComponents.ReverseArrow), _ => new SpriteIcon { RelativeSizeAxes = Axes.Both, Icon = FontAwesome.Solid.ChevronRight, @@ -45,7 +45,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces protected override void OnNewBeat(int beatIndex, TimingControlPoint timingPoint, EffectControlPoint effectPoint, TrackAmplitudes amplitudes) { if (Clock.CurrentTime < repeatPoint.StartTime) - InternalChild.ScaleTo(1.3f).ScaleTo(1f, Math.Min(timingPoint.BeatLength, repeatPoint.StartTime - Clock.CurrentTime), Easing.Out); + Child.ScaleTo(1.3f).ScaleTo(1f, Math.Min(timingPoint.BeatLength, repeatPoint.StartTime - Clock.CurrentTime), Easing.Out); } } } From 210d06b75ed27209d6d8721a8d3b131004a57bb5 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 14 Jan 2020 01:45:32 +0900 Subject: [PATCH 0807/1829] Remove default value --- .../Objects/Drawables/Pieces/ReverseArrowPiece.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs index ee7cdefa13..37bbfbe806 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs @@ -35,7 +35,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces RelativeSizeAxes = Axes.Both, Icon = FontAwesome.Solid.ChevronRight, Size = new Vector2(0.35f) - }, confineMode: ConfineMode.NoScaling) + }) { Anchor = Anchor.Centre, Origin = Anchor.Centre, From ab4f31639d9e2ccfd8ac4cc61091c024aa0c6827 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 14 Jan 2020 01:47:44 +0900 Subject: [PATCH 0808/1829] Remove weird time clause --- .../Objects/Drawables/Pieces/ReverseArrowPiece.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs index 37bbfbe806..0403fe8196 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs @@ -45,7 +45,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces protected override void OnNewBeat(int beatIndex, TimingControlPoint timingPoint, EffectControlPoint effectPoint, TrackAmplitudes amplitudes) { if (Clock.CurrentTime < repeatPoint.StartTime) - Child.ScaleTo(1.3f).ScaleTo(1f, Math.Min(timingPoint.BeatLength, repeatPoint.StartTime - Clock.CurrentTime), Easing.Out); + Child.ScaleTo(1.3f).ScaleTo(1f, timingPoint.BeatLength, Easing.Out); } } } From fe09e34f1bf8a9ed9d7479c0792ac871ae3b5020 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 14 Jan 2020 01:48:20 +0900 Subject: [PATCH 0809/1829] Remove limiting clause --- .../Objects/Drawables/Pieces/ReverseArrowPiece.cs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs index 0403fe8196..08dd97b0d8 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ReverseArrowPiece.cs @@ -42,10 +42,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces }; } - protected override void OnNewBeat(int beatIndex, TimingControlPoint timingPoint, EffectControlPoint effectPoint, TrackAmplitudes amplitudes) - { - if (Clock.CurrentTime < repeatPoint.StartTime) - Child.ScaleTo(1.3f).ScaleTo(1f, timingPoint.BeatLength, Easing.Out); - } + protected override void OnNewBeat(int beatIndex, TimingControlPoint timingPoint, EffectControlPoint effectPoint, TrackAmplitudes amplitudes) => + Child.ScaleTo(1.3f).ScaleTo(1f, timingPoint.BeatLength, Easing.Out); } } From 90e4def4bd0d782f24b4d987639f33a1388fe621 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 14 Jan 2020 07:07:21 +0300 Subject: [PATCH 0810/1829] Remove online stuff out of the selector --- .../TestSceneRankingsSpotlightSelector.cs | 18 ++++++-- .../Overlays/Rankings/SpotlightSelector.cs | 45 +++++++------------ 2 files changed, 31 insertions(+), 32 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs index 9320213844..0862b3251a 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using osu.Game.Online.API.Requests.Responses; using osu.Game.Overlays.Rankings; namespace osu.Game.Tests.Visual.Online @@ -14,15 +15,26 @@ namespace osu.Game.Tests.Visual.Online typeof(SpotlightSelector), }; - protected override bool UseOnlineAPI => true; - public TestSceneRankingsSpotlightSelector() { SpotlightSelector selector; Add(selector = new SpotlightSelector()); - AddStep("Fetch spotlights", selector.FetchSpotlights); + var spotlights = new APISpotlight[] + { + new APISpotlight { Name = "Spotlight 1" }, + new APISpotlight { Name = "Spotlight 2" }, + new APISpotlight { Name = "Spotlight 3" }, + }; + + AddStep("Load spotlights", () => selector.Spotlights = spotlights); + AddStep("Load info", () => selector.UpdateInfo(new APISpotlight + { + StartDate = DateTimeOffset.Now, + EndDate = DateTimeOffset.Now, + ParticipantCount = 15155151, + }, 18)); } } } diff --git a/osu.Game/Overlays/Rankings/SpotlightSelector.cs b/osu.Game/Overlays/Rankings/SpotlightSelector.cs index fb61555c20..a275f4ed50 100644 --- a/osu.Game/Overlays/Rankings/SpotlightSelector.cs +++ b/osu.Game/Overlays/Rankings/SpotlightSelector.cs @@ -9,11 +9,10 @@ using osu.Framework.Graphics.Shapes; using osu.Game.Graphics; using osu.Game.Graphics.Sprites; using osu.Game.Graphics.UserInterface; -using osu.Game.Online.API; -using osu.Game.Online.API.Requests; using osu.Game.Online.API.Requests.Responses; using osuTK; using System; +using System.Collections.Generic; namespace osu.Game.Overlays.Rankings { @@ -21,15 +20,19 @@ namespace osu.Game.Overlays.Rankings { private readonly Box background; private readonly SpotlightsDropdown dropdown; - private readonly DimmedLoadingLayer loading; - - [Resolved] - private IAPIProvider api { get; set; } public readonly Bindable SelectedSpotlight = new Bindable(); + public IEnumerable Spotlights + { + get => dropdown.Items; + set => dropdown.Items = value; + } + private readonly InfoColumn startDateColumn; private readonly InfoColumn endDateColumn; + private readonly InfoColumn mapCountColumn; + private readonly InfoColumn participants; public SpotlightSelector() { @@ -66,11 +69,12 @@ namespace osu.Game.Overlays.Rankings { startDateColumn = new InfoColumn(@"Start Date"), endDateColumn = new InfoColumn(@"End Date"), + mapCountColumn = new InfoColumn(@"Map Count"), + participants = new InfoColumn(@"Participants"), } } } }, - loading = new DimmedLoadingLayer(), }; } @@ -80,29 +84,12 @@ namespace osu.Game.Overlays.Rankings background.Colour = colours.GreySeafoam; } - protected override void LoadComplete() + public void UpdateInfo(APISpotlight spotlight, int mapCount) { - base.LoadComplete(); - SelectedSpotlight.BindValueChanged(onSelectionChanged); - } - - public void FetchSpotlights() - { - loading.Show(); - - var request = new GetSpotlightsRequest(); - request.Success += response => - { - dropdown.Items = response.Spotlights; - loading.Hide(); - }; - api.Queue(request); - } - - private void onSelectionChanged(ValueChangedEvent spotlight) - { - startDateColumn.Value = dateToString(spotlight.NewValue.StartDate); - endDateColumn.Value = dateToString(spotlight.NewValue.EndDate); + startDateColumn.Value = dateToString(spotlight.StartDate); + endDateColumn.Value = dateToString(spotlight.EndDate); + mapCountColumn.Value = mapCount.ToString(); + participants.Value = spotlight.ParticipantCount?.ToString("N0"); } private string dateToString(DateTimeOffset date) => date.ToString("yyyy-MM-dd"); From 18ebd309788124c12ae3d5bf8388f97e4822939c Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 14 Jan 2020 07:20:03 +0300 Subject: [PATCH 0811/1829] CI fix --- .../Visual/Online/TestSceneRankingsSpotlightSelector.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs index 0862b3251a..1a62cb6dad 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs @@ -21,7 +21,7 @@ namespace osu.Game.Tests.Visual.Online Add(selector = new SpotlightSelector()); - var spotlights = new APISpotlight[] + var spotlights = new[] { new APISpotlight { Name = "Spotlight 1" }, new APISpotlight { Name = "Spotlight 2" }, From c196e83e75f495f533f82e867d7d8cd3e9165738 Mon Sep 17 00:00:00 2001 From: Joehu Date: Mon, 13 Jan 2020 20:48:39 -0800 Subject: [PATCH 0812/1829] Allow changing volume in song select with arrow keys when pressing alt --- osu.Game/Screens/Select/BeatmapCarousel.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs b/osu.Game/Screens/Select/BeatmapCarousel.cs index bf2382c4ae..da01ac5f95 100644 --- a/osu.Game/Screens/Select/BeatmapCarousel.cs +++ b/osu.Game/Screens/Select/BeatmapCarousel.cs @@ -436,7 +436,7 @@ namespace osu.Game.Screens.Select break; } - if (direction == 0) + if (direction == 0 || e.AltPressed) return base.OnKeyDown(e); SelectNext(direction, skipDifficulties); From 7349c023d1b9696559d5190469024544d064204a Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 14 Jan 2020 14:01:51 +0900 Subject: [PATCH 0813/1829] Cleanup spotlight selection --- .../TestSceneRankingsSpotlightSelector.cs | 4 +-- .../API/Requests/Responses/APISpotlight.cs | 2 +- .../Overlays/Rankings/SpotlightSelector.cs | 30 ++++++++++++++----- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs index 1a62cb6dad..d714d5fb7d 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs @@ -29,12 +29,12 @@ namespace osu.Game.Tests.Visual.Online }; AddStep("Load spotlights", () => selector.Spotlights = spotlights); - AddStep("Load info", () => selector.UpdateInfo(new APISpotlight + AddStep("Load info", () => selector.Current.Value = new APISpotlight { StartDate = DateTimeOffset.Now, EndDate = DateTimeOffset.Now, ParticipantCount = 15155151, - }, 18)); + }); } } } diff --git a/osu.Game/Online/API/Requests/Responses/APISpotlight.cs b/osu.Game/Online/API/Requests/Responses/APISpotlight.cs index 63c47e7812..2191ed4743 100644 --- a/osu.Game/Online/API/Requests/Responses/APISpotlight.cs +++ b/osu.Game/Online/API/Requests/Responses/APISpotlight.cs @@ -27,7 +27,7 @@ namespace osu.Game.Online.API.Requests.Responses public DateTimeOffset EndDate; [JsonProperty(@"participant_count")] - public int? ParticipantCount; + public int ParticipantCount; public override string ToString() => Name; } diff --git a/osu.Game/Overlays/Rankings/SpotlightSelector.cs b/osu.Game/Overlays/Rankings/SpotlightSelector.cs index a275f4ed50..def7469b16 100644 --- a/osu.Game/Overlays/Rankings/SpotlightSelector.cs +++ b/osu.Game/Overlays/Rankings/SpotlightSelector.cs @@ -13,15 +13,22 @@ using osu.Game.Online.API.Requests.Responses; using osuTK; using System; using System.Collections.Generic; +using osu.Framework.Graphics.UserInterface; namespace osu.Game.Overlays.Rankings { - public class SpotlightSelector : Container + public class SpotlightSelector : Container, IHasCurrentValue { private readonly Box background; private readonly SpotlightsDropdown dropdown; - public readonly Bindable SelectedSpotlight = new Bindable(); + private readonly BindableWithCurrent current = new BindableWithCurrent(); + + public Bindable Current + { + get => current.Current; + set => current.Current = value; + } public IEnumerable Spotlights { @@ -55,7 +62,7 @@ namespace osu.Game.Overlays.Rankings Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, RelativeSizeAxes = Axes.X, - Current = SelectedSpotlight, + Current = Current, Depth = -float.MaxValue }, new FillFlowContainer @@ -84,12 +91,19 @@ namespace osu.Game.Overlays.Rankings background.Colour = colours.GreySeafoam; } - public void UpdateInfo(APISpotlight spotlight, int mapCount) + protected override void LoadComplete() { - startDateColumn.Value = dateToString(spotlight.StartDate); - endDateColumn.Value = dateToString(spotlight.EndDate); - mapCountColumn.Value = mapCount.ToString(); - participants.Value = spotlight.ParticipantCount?.ToString("N0"); + base.LoadComplete(); + + Current.BindValueChanged(onCurrentChanged); + } + + private void onCurrentChanged(ValueChangedEvent spotlight) + { + startDateColumn.Value = dateToString(spotlight.NewValue.StartDate); + endDateColumn.Value = dateToString(spotlight.NewValue.EndDate); + // mapCountColumn.Value = spotlight.NewValue.ParticipantCount.ToString(); + participants.Value = spotlight.NewValue.ParticipantCount.ToString(); } private string dateToString(DateTimeOffset date) => date.ToString("yyyy-MM-dd"); From 20466d79df37e8671badf7bd12f7dc66b0bcea10 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 14 Jan 2020 14:18:28 +0900 Subject: [PATCH 0814/1829] Update netcore version --- .idea/.idea.osu.Desktop/.idea/runConfigurations/osu_SDL.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.idea/.idea.osu.Desktop/.idea/runConfigurations/osu_SDL.xml b/.idea/.idea.osu.Desktop/.idea/runConfigurations/osu_SDL.xml index 1fd10e0e1a..d85a0ae44c 100644 --- a/.idea/.idea.osu.Desktop/.idea/runConfigurations/osu_SDL.xml +++ b/.idea/.idea.osu.Desktop/.idea/runConfigurations/osu_SDL.xml @@ -1,6 +1,6 @@ - @@ -302,7 +308,7 @@ namespace osu.Game.Database LogForModel(item, "Beginning import..."); item.Files = archive != null ? createFileInfos(archive, Files) : new List(); - item.Hash = archive != null ? computeHash(archive) : item.Hash; + item.Hash = computeHash(item, archive); await Populate(item, archive, cancellationToken); @@ -358,12 +364,37 @@ namespace osu.Game.Database return item; }, cancellationToken, TaskCreationOptions.HideScheduler, import_scheduler).Unwrap(); + public void UpdateFile(TFileModel file, Stream contents) + { + using (ContextFactory.GetForWrite()) // used to share a context for full import. keep in mind this will block all writes. + { + var existingModels = ModelStore.ConsumableItems.Where(b => b.Files.Any(f => f.FileInfoID == file.FileInfoID)).ToList(); + + if (existingModels.Count == 0) + throw new InvalidOperationException($"Cannot update files of models not contained by this {nameof(ArchiveModelManager)}."); + + using (var stream = Files.Storage.GetStream(file.FileInfo.StoragePath, FileAccess.Write, FileMode.Create)) + contents.CopyTo(stream); + + foreach (var model in existingModels) + Update(model); + } + } + /// /// Perform an update of the specified item. - /// TODO: Support file changes. + /// TODO: Support file additions/removals. /// /// The item to update. - public void Update(TModel item) => ModelStore.Update(item); + public void Update(TModel item) + { + using (ContextFactory.GetForWrite()) + { + item.Hash = computeHash(item); + + ModelStore.Update(item); + } + } /// /// Delete an item from the manager. From dce93dfe7c4bcbc4b8d8a4f8b90eceaff0e3a48c Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 9 Jan 2020 18:56:45 +0900 Subject: [PATCH 0823/1829] Split test --- .../Beatmaps/IO/ImportBeatmapTest.cs | 37 ++++++++++++++++--- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs b/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs index 52a705edfd..3db5a2b459 100644 --- a/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs +++ b/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs @@ -559,9 +559,39 @@ namespace osu.Game.Tests.Beatmaps.IO } [Test] - public async Task TestUpdateFile() + public async Task TestUpdateBeatmapInfoContents() { - using (HeadlessGameHost host = new CleanRunHeadlessGameHost(nameof(TestUpdateFile))) + using (HeadlessGameHost host = new CleanRunHeadlessGameHost(nameof(TestUpdateBeatmapInfoContents))) + { + try + { + var osu = loadOsu(host); + var manager = osu.Dependencies.Get(); + + var temp = TestResources.GetTestBeatmapForImport(); + await osu.Dependencies.Get().Import(temp); + + // Update via the beatmap, not the beatmap info, to ensure correct linking + BeatmapSetInfo setToUpdate = manager.GetAllUsableBeatmapSets()[0]; + Beatmap beatmapToUpdate = (Beatmap)manager.GetWorkingBeatmap(setToUpdate.Beatmaps.First(b => b.RulesetID == 0)).Beatmap; + beatmapToUpdate.BeatmapInfo.Version = "updated"; + + manager.Update(setToUpdate); + + BeatmapInfo updatedInfo = manager.QueryBeatmap(b => b.ID == beatmapToUpdate.BeatmapInfo.ID); + Assert.That(updatedInfo.Version, Is.EqualTo("updated")); + } + finally + { + host.Exit(); + } + } + } + + [Test] + public async Task TestUpdateBeatmapFileContents() + { + using (HeadlessGameHost host = new CleanRunHeadlessGameHost(nameof(TestUpdateBeatmapFileContents))) { try { @@ -579,7 +609,6 @@ namespace osu.Game.Tests.Beatmaps.IO { using (var writer = new StreamWriter(stream, leaveOpen: true)) { - beatmapToUpdate.BeatmapInfo.Version = "updated"; beatmapToUpdate.HitObjects.Clear(); beatmapToUpdate.HitObjects.Add(new HitCircle { StartTime = 5000 }); @@ -588,13 +617,11 @@ namespace osu.Game.Tests.Beatmaps.IO stream.Seek(0, SeekOrigin.Begin); - manager.Update(setToUpdate); manager.UpdateFile(fileToUpdate, stream); } Beatmap updatedBeatmap = (Beatmap)manager.GetWorkingBeatmap(manager.QueryBeatmap(b => b.ID == beatmapToUpdate.BeatmapInfo.ID)).Beatmap; - Assert.That(updatedBeatmap.BeatmapInfo.Version, Is.EqualTo("updated")); Assert.That(updatedBeatmap.HitObjects.Count, Is.EqualTo(1)); Assert.That(updatedBeatmap.HitObjects[0].StartTime, Is.EqualTo(5000)); } From 000fc836b2600108aa8d4571f11a04c6d759c9e3 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 9 Jan 2020 18:56:53 +0900 Subject: [PATCH 0824/1829] Remove unused class --- .../Beatmaps/IO/ImportBeatmapTest.cs | 51 ------------------- 1 file changed, 51 deletions(-) diff --git a/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs b/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs index 3db5a2b459..33fdd75de7 100644 --- a/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs +++ b/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs @@ -735,56 +735,5 @@ namespace osu.Game.Tests.Beatmaps.IO Assert.IsTrue(task.Wait(timeout), failureMessage); } - - private class UpdateArchiveReader : ArchiveReader - where TModel : class, IHasFiles - where TFileModel : INamedFileInfo, new() - { - private readonly IResourceStore store; - private readonly TModel modelToUpdate; - private readonly TFileModel fileToUpdate; - private readonly Stream newContents; - - public UpdateArchiveReader(IResourceStore store, TModel modelToUpdate, TFileModel fileToUpdate, Stream newContents) - : base(string.Empty) - { - this.store = store; - this.modelToUpdate = modelToUpdate; - this.fileToUpdate = fileToUpdate; - this.newContents = newContents; - } - - public override Stream GetStream(string name) - { - name = name.ToStandardisedPath(); - - if (name.Contains(fileToUpdate.Filename, StringComparison.Ordinal)) - { - var stream = new MemoryStream(); - - newContents.Seek(0, SeekOrigin.Begin); - newContents.CopyTo(stream); - - stream.Seek(0, SeekOrigin.Begin); - - return stream; - } - - TFileModel existing = modelToUpdate.Files.FirstOrDefault(m => name.Contains(m.Filename, StringComparison.Ordinal)); - - if (!string.IsNullOrEmpty(existing?.FileInfo?.StoragePath)) - return store.GetStream(existing.FileInfo.StoragePath); - - return null; - } - - public override void Dispose() - { - } - - public override IEnumerable Filenames => Enumerable.Empty(); // modelToUpdate.Files.Select(f => f.Filename); - - public override Stream GetUnderlyingStream() => null; - } } } From b592b6d80dc3445c1b0f5d2169c358abac0e912a Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 9 Jan 2020 19:42:47 +0900 Subject: [PATCH 0825/1829] Improve robustness by always creating a new file --- .../Beatmaps/IO/ImportBeatmapTest.cs | 58 ++++++++++++++++--- osu.Game/Database/ArchiveModelManager.cs | 18 +++--- 2 files changed, 57 insertions(+), 19 deletions(-) diff --git a/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs b/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs index 33fdd75de7..47eab01699 100644 --- a/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs +++ b/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs @@ -11,14 +11,10 @@ using NUnit.Framework; using osu.Framework.Platform; using osu.Game.IPC; using osu.Framework.Allocation; -using osu.Framework.Extensions; -using osu.Framework.IO.Stores; using osu.Framework.Logging; using osu.Game.Beatmaps; using osu.Game.Beatmaps.Formats; -using osu.Game.Database; using osu.Game.IO; -using osu.Game.IO.Archives; using osu.Game.Rulesets.Osu.Objects; using osu.Game.Tests.Resources; using SharpCompress.Archives; @@ -559,9 +555,9 @@ namespace osu.Game.Tests.Beatmaps.IO } [Test] - public async Task TestUpdateBeatmapInfoContents() + public async Task TestUpdateBeatmapInfo() { - using (HeadlessGameHost host = new CleanRunHeadlessGameHost(nameof(TestUpdateBeatmapInfoContents))) + using (HeadlessGameHost host = new CleanRunHeadlessGameHost(nameof(TestUpdateBeatmapInfo))) { try { @@ -589,9 +585,9 @@ namespace osu.Game.Tests.Beatmaps.IO } [Test] - public async Task TestUpdateBeatmapFileContents() + public async Task TestUpdateBeatmapFile() { - using (HeadlessGameHost host = new CleanRunHeadlessGameHost(nameof(TestUpdateBeatmapFileContents))) + using (HeadlessGameHost host = new CleanRunHeadlessGameHost(nameof(TestUpdateBeatmapFile))) { try { @@ -617,7 +613,51 @@ namespace osu.Game.Tests.Beatmaps.IO stream.Seek(0, SeekOrigin.Begin); - manager.UpdateFile(fileToUpdate, stream); + manager.UpdateFile(setToUpdate, fileToUpdate, stream); + } + + Beatmap updatedBeatmap = (Beatmap)manager.GetWorkingBeatmap(manager.QueryBeatmap(b => b.ID == beatmapToUpdate.BeatmapInfo.ID)).Beatmap; + + Assert.That(updatedBeatmap.HitObjects.Count, Is.EqualTo(1)); + Assert.That(updatedBeatmap.HitObjects[0].StartTime, Is.EqualTo(5000)); + } + finally + { + host.Exit(); + } + } + } + + [Test] + public async Task TestAddFile() + { + using (HeadlessGameHost host = new CleanRunHeadlessGameHost(nameof(TestAddFile))) + { + try + { + var osu = loadOsu(host); + var manager = osu.Dependencies.Get(); + + var temp = TestResources.GetTestBeatmapForImport(); + await osu.Dependencies.Get().Import(temp); + + BeatmapSetInfo setToUpdate = manager.GetAllUsableBeatmapSets()[0]; + Beatmap beatmapToUpdate = (Beatmap)manager.GetWorkingBeatmap(setToUpdate.Beatmaps.First(b => b.RulesetID == 0)).Beatmap; + BeatmapSetFileInfo fileToUpdate = setToUpdate.Files.First(f => beatmapToUpdate.BeatmapInfo.Path.Contains(f.Filename)); + + using (var stream = new MemoryStream()) + { + using (var writer = new StreamWriter(stream, leaveOpen: true)) + { + beatmapToUpdate.HitObjects.Clear(); + beatmapToUpdate.HitObjects.Add(new HitCircle { StartTime = 5000 }); + + new LegacyBeatmapEncoder(beatmapToUpdate).Encode(writer); + } + + stream.Seek(0, SeekOrigin.Begin); + + manager.UpdateFile(setToUpdate, fileToUpdate, stream); } Beatmap updatedBeatmap = (Beatmap)manager.GetWorkingBeatmap(manager.QueryBeatmap(b => b.ID == beatmapToUpdate.BeatmapInfo.ID)).Beatmap; diff --git a/osu.Game/Database/ArchiveModelManager.cs b/osu.Game/Database/ArchiveModelManager.cs index af21567610..fb64a4da15 100644 --- a/osu.Game/Database/ArchiveModelManager.cs +++ b/osu.Game/Database/ArchiveModelManager.cs @@ -364,20 +364,18 @@ namespace osu.Game.Database return item; }, cancellationToken, TaskCreationOptions.HideScheduler, import_scheduler).Unwrap(); - public void UpdateFile(TFileModel file, Stream contents) + public void UpdateFile(TModel model, TFileModel file, Stream contents) { using (ContextFactory.GetForWrite()) // used to share a context for full import. keep in mind this will block all writes. { - var existingModels = ModelStore.ConsumableItems.Where(b => b.Files.Any(f => f.FileInfoID == file.FileInfoID)).ToList(); + model.Files.Remove(file); + model.Files.Add(new TFileModel + { + Filename = file.Filename, + FileInfo = Files.Add(contents) + }); - if (existingModels.Count == 0) - throw new InvalidOperationException($"Cannot update files of models not contained by this {nameof(ArchiveModelManager)}."); - - using (var stream = Files.Storage.GetStream(file.FileInfo.StoragePath, FileAccess.Write, FileMode.Create)) - contents.CopyTo(stream); - - foreach (var model in existingModels) - Update(model); + Update(model); } } From 5f5878e37e889a126dc5f3084e123a1c0efe02ce Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 10 Jan 2020 11:55:47 +0900 Subject: [PATCH 0826/1829] Dereference existing file --- osu.Game/Database/ArchiveModelManager.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game/Database/ArchiveModelManager.cs b/osu.Game/Database/ArchiveModelManager.cs index fb64a4da15..66e1b43e58 100644 --- a/osu.Game/Database/ArchiveModelManager.cs +++ b/osu.Game/Database/ArchiveModelManager.cs @@ -375,6 +375,8 @@ namespace osu.Game.Database FileInfo = Files.Add(contents) }); + Files.Dereference(file.FileInfo); + Update(model); } } From 524ff419314c45bd2526df614cacee75599ae6b9 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 10 Jan 2020 12:39:45 +0900 Subject: [PATCH 0827/1829] Add more assertions --- osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs b/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs index 47eab01699..4a6e1f1caa 100644 --- a/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs +++ b/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs @@ -616,8 +616,15 @@ namespace osu.Game.Tests.Beatmaps.IO manager.UpdateFile(setToUpdate, fileToUpdate, stream); } - Beatmap updatedBeatmap = (Beatmap)manager.GetWorkingBeatmap(manager.QueryBeatmap(b => b.ID == beatmapToUpdate.BeatmapInfo.ID)).Beatmap; + // Check that the old file has been dereferenced + Assert.That(manager.Files.QueryFiles(f => f.ID == fileToUpdate.FileInfoID).SingleOrDefault(), Is.Null); + // Ensure that the old file is deleted upon a cleanup + manager.Files.Cleanup(); + Assert.That(new System.IO.FileInfo(manager.Files.Storage.GetFullPath(fileToUpdate.FileInfo.StoragePath)), Does.Not.Exist); + + // Check that the new file is referenced correctly by attempting a retrieval + Beatmap updatedBeatmap = (Beatmap)manager.GetWorkingBeatmap(manager.QueryBeatmap(b => b.ID == beatmapToUpdate.BeatmapInfo.ID)).Beatmap; Assert.That(updatedBeatmap.HitObjects.Count, Is.EqualTo(1)); Assert.That(updatedBeatmap.HitObjects[0].StartTime, Is.EqualTo(5000)); } From b91bcaccba30db2426a67dc58d110adc9889fb45 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 10 Jan 2020 12:40:07 +0900 Subject: [PATCH 0828/1829] Remove outdated comment --- osu.Game/Database/ArchiveModelManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Database/ArchiveModelManager.cs b/osu.Game/Database/ArchiveModelManager.cs index 66e1b43e58..a4c930d888 100644 --- a/osu.Game/Database/ArchiveModelManager.cs +++ b/osu.Game/Database/ArchiveModelManager.cs @@ -366,7 +366,7 @@ namespace osu.Game.Database public void UpdateFile(TModel model, TFileModel file, Stream contents) { - using (ContextFactory.GetForWrite()) // used to share a context for full import. keep in mind this will block all writes. + using (ContextFactory.GetForWrite()) { model.Files.Remove(file); model.Files.Add(new TFileModel From a25583219551fa6316cd7d71f8ea2e6fce88f507 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 10 Jan 2020 19:57:34 +0900 Subject: [PATCH 0829/1829] Add beatmapmanager method for saving --- osu.Game/Beatmaps/BeatmapManager.cs | 22 ++++++++++++++++++++++ osu.Game/Beatmaps/WorkingBeatmap.cs | 17 ----------------- osu.Game/Screens/Edit/Editor.cs | 10 ++++------ 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/osu.Game/Beatmaps/BeatmapManager.cs b/osu.Game/Beatmaps/BeatmapManager.cs index a10ad73817..395a72ef18 100644 --- a/osu.Game/Beatmaps/BeatmapManager.cs +++ b/osu.Game/Beatmaps/BeatmapManager.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Linq.Expressions; +using System.Text; using System.Threading; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; @@ -26,6 +27,7 @@ using osu.Game.Online.API; using osu.Game.Online.API.Requests; using osu.Game.Rulesets; using osu.Game.Rulesets.Objects; +using Decoder = osu.Game.Beatmaps.Formats.Decoder; namespace osu.Game.Beatmaps { @@ -174,6 +176,26 @@ namespace osu.Game.Beatmaps /// The beatmap difficulty to restore. public void Restore(BeatmapInfo beatmap) => beatmaps.Restore(beatmap); + /// + /// Saves an file against a given . + /// + /// The to save the content against. The file referenced by will be replaced. + /// The content to write. + public void Save(BeatmapInfo info, IBeatmap beatmapContent) + { + var setInfo = QueryBeatmapSet(s => s.Beatmaps.Any(b => b.ID == info.ID)); + + using (var stream = new MemoryStream()) + { + using (var sw = new StreamWriter(stream, Encoding.UTF8, 1024, true)) + new LegacyBeatmapEncoder(beatmapContent).Encode(sw); + + stream.Seek(0, SeekOrigin.Begin); + + UpdateFile(setInfo, setInfo.Files.Single(f => string.Equals(f.Filename, info.Path, StringComparison.OrdinalIgnoreCase)), stream); + } + } + private readonly WeakList workingCache = new WeakList(); /// diff --git a/osu.Game/Beatmaps/WorkingBeatmap.cs b/osu.Game/Beatmaps/WorkingBeatmap.cs index 6aba5257f5..05c344b199 100644 --- a/osu.Game/Beatmaps/WorkingBeatmap.cs +++ b/osu.Game/Beatmaps/WorkingBeatmap.cs @@ -7,13 +7,11 @@ using osu.Game.Rulesets.Mods; using System; using System.Collections.Generic; using osu.Game.Storyboards; -using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; using osu.Framework.Audio; using osu.Framework.Statistics; -using osu.Game.IO.Serialization; using osu.Game.Rulesets; using osu.Game.Rulesets.Objects.Types; using osu.Game.Rulesets.UI; @@ -76,21 +74,6 @@ namespace osu.Game.Beatmaps return AudioManager.Tracks.GetVirtual(length); } - /// - /// Saves the . - /// - /// The absolute path of the output file. - public string Save() - { - string directory = Path.Combine(Path.GetTempPath(), @"osu!"); - Directory.CreateDirectory(directory); - - var path = Path.Combine(directory, Guid.NewGuid().ToString().Replace("-", string.Empty) + ".json"); - using (var sw = new StreamWriter(path)) - sw.WriteLine(Beatmap.Serialize()); - return path; - } - /// /// Creates a to convert a for a specified . /// diff --git a/osu.Game/Screens/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs index 14d69cddd1..ef17e5ebd8 100644 --- a/osu.Game/Screens/Edit/Editor.cs +++ b/osu.Game/Screens/Edit/Editor.cs @@ -44,6 +44,9 @@ namespace osu.Game.Screens.Edit public override bool DisallowExternalBeatmapRulesetChanges => true; + [Resolved] + private BeatmapManager beatmapManager { get; set; } + private Box bottomBackground; private Container screenContainer; @@ -56,7 +59,6 @@ namespace osu.Game.Screens.Edit private EditorBeatmap editorBeatmap; private DependencyContainer dependencies; - private GameHost host; protected override UserActivity InitialActivity => new UserActivity.Editing(Beatmap.Value.BeatmapInfo); @@ -66,8 +68,6 @@ namespace osu.Game.Screens.Edit [BackgroundDependencyLoader] private void load(OsuColour colours, GameHost host) { - this.host = host; - beatDivisor.Value = Beatmap.Value.BeatmapInfo.BeatDivisor; beatDivisor.BindValueChanged(divisor => Beatmap.Value.BeatmapInfo.BeatDivisor = divisor.NewValue); @@ -90,7 +90,7 @@ namespace osu.Game.Screens.Edit if (RuntimeInfo.IsDesktop) { - fileMenuItems.Add(new EditorMenuItem("Export", MenuItemType.Standard, exportBeatmap)); + fileMenuItems.Add(new EditorMenuItem("Export", MenuItemType.Standard, () => beatmapManager.Save(playableBeatmap.BeatmapInfo, editorBeatmap))); fileMenuItems.Add(new EditorMenuItemSpacer()); } @@ -292,8 +292,6 @@ namespace osu.Game.Screens.Edit } } - private void exportBeatmap() => host.OpenFileExternally(Beatmap.Value.Save()); - private void onModeChanged(ValueChangedEvent e) { currentScreen?.Exit(); From 1b3bff6fa5e023c3202a6358fcf57b7cf7328005 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 14 Jan 2020 18:43:06 +0900 Subject: [PATCH 0830/1829] Fix model file infos not being removed --- osu.Game/Database/ArchiveModelManager.cs | 13 +++++++++---- .../Database/DownloadableArchiveModelManager.cs | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/osu.Game/Database/ArchiveModelManager.cs b/osu.Game/Database/ArchiveModelManager.cs index a4c930d888..be20b2c2e9 100644 --- a/osu.Game/Database/ArchiveModelManager.cs +++ b/osu.Game/Database/ArchiveModelManager.cs @@ -34,7 +34,7 @@ namespace osu.Game.Database /// The associated file join type. public abstract class ArchiveModelManager : ICanAcceptFiles, IModelManager where TModel : class, IHasFiles, IHasPrimaryKey, ISoftDelete - where TFileModel : INamedFileInfo, new() + where TFileModel : class, INamedFileInfo, new() { private const int import_queue_request_concurrency = 1; @@ -366,8 +366,15 @@ namespace osu.Game.Database public void UpdateFile(TModel model, TFileModel file, Stream contents) { - using (ContextFactory.GetForWrite()) + using (var usage = ContextFactory.GetForWrite()) { + // Dereference the existing file info, since the file model will be removed. + Files.Dereference(file.FileInfo); + + // Remove the file model. + usage.Context.Set().Remove(file); + + // Add the new file info and containing file model. model.Files.Remove(file); model.Files.Add(new TFileModel { @@ -375,8 +382,6 @@ namespace osu.Game.Database FileInfo = Files.Add(contents) }); - Files.Dereference(file.FileInfo); - Update(model); } } diff --git a/osu.Game/Database/DownloadableArchiveModelManager.cs b/osu.Game/Database/DownloadableArchiveModelManager.cs index 71bf195a8d..4bd9df5f36 100644 --- a/osu.Game/Database/DownloadableArchiveModelManager.cs +++ b/osu.Game/Database/DownloadableArchiveModelManager.cs @@ -21,7 +21,7 @@ namespace osu.Game.Database /// The associated file join type. public abstract class DownloadableArchiveModelManager : ArchiveModelManager, IModelDownloader where TModel : class, IHasFiles, IHasPrimaryKey, ISoftDelete, IEquatable - where TFileModel : INamedFileInfo, new() + where TFileModel : class, INamedFileInfo, new() { public event Action> DownloadBegan; From ea7510d2f53ed89b55a49fcdf3984fc4e9018bf3 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 14 Jan 2020 18:43:29 +0900 Subject: [PATCH 0831/1829] Rename menu option --- osu.Game/Screens/Edit/Editor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs index ef17e5ebd8..e1a6143ba4 100644 --- a/osu.Game/Screens/Edit/Editor.cs +++ b/osu.Game/Screens/Edit/Editor.cs @@ -90,7 +90,7 @@ namespace osu.Game.Screens.Edit if (RuntimeInfo.IsDesktop) { - fileMenuItems.Add(new EditorMenuItem("Export", MenuItemType.Standard, () => beatmapManager.Save(playableBeatmap.BeatmapInfo, editorBeatmap))); + fileMenuItems.Add(new EditorMenuItem("Save", MenuItemType.Standard, () => beatmapManager.Save(playableBeatmap.BeatmapInfo, editorBeatmap))); fileMenuItems.Add(new EditorMenuItemSpacer()); } From 4fe5ea8e92ef2c44be7665f12c193b99bc8f9f49 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 14 Jan 2020 19:03:50 +0900 Subject: [PATCH 0832/1829] Clear working beatmap cache on save --- osu.Game/Beatmaps/BeatmapManager.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/osu.Game/Beatmaps/BeatmapManager.cs b/osu.Game/Beatmaps/BeatmapManager.cs index 395a72ef18..eeb1c3478a 100644 --- a/osu.Game/Beatmaps/BeatmapManager.cs +++ b/osu.Game/Beatmaps/BeatmapManager.cs @@ -194,6 +194,10 @@ namespace osu.Game.Beatmaps UpdateFile(setInfo, setInfo.Files.Single(f => string.Equals(f.Filename, info.Path, StringComparison.OrdinalIgnoreCase)), stream); } + + var working = workingCache.FirstOrDefault(w => w.BeatmapInfo?.ID == info.ID); + if (working != null) + workingCache.Remove(working); } private readonly WeakList workingCache = new WeakList(); From b51575b433e89185d6691ddd2c93bef75da451b8 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 14 Jan 2020 19:05:52 +0900 Subject: [PATCH 0833/1829] Add temporary keybind for saving --- osu.Game/Screens/Edit/Editor.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs index e1a6143ba4..c6bdd2c39b 100644 --- a/osu.Game/Screens/Edit/Editor.cs +++ b/osu.Game/Screens/Edit/Editor.cs @@ -90,7 +90,7 @@ namespace osu.Game.Screens.Edit if (RuntimeInfo.IsDesktop) { - fileMenuItems.Add(new EditorMenuItem("Save", MenuItemType.Standard, () => beatmapManager.Save(playableBeatmap.BeatmapInfo, editorBeatmap))); + fileMenuItems.Add(new EditorMenuItem("Save", MenuItemType.Standard, saveBeatmap)); fileMenuItems.Add(new EditorMenuItemSpacer()); } @@ -205,6 +205,15 @@ namespace osu.Game.Screens.Edit case Key.Right: seek(e, 1); return true; + + case Key.S: + if (e.ControlPressed) + { + saveBeatmap(); + return true; + } + + break; } return base.OnKeyDown(e); @@ -327,5 +336,7 @@ namespace osu.Game.Screens.Edit else clock.SeekForward(!clock.IsRunning, amount); } + + private void saveBeatmap() => beatmapManager.Save(playableBeatmap.BeatmapInfo, editorBeatmap); } } From 4b8d62800026c0e587d7a5970b76cbd74826d24f Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 14 Jan 2020 19:08:47 +0900 Subject: [PATCH 0834/1829] Remove file addition test --- .../Beatmaps/IO/ImportBeatmapTest.cs | 44 ------------------- 1 file changed, 44 deletions(-) diff --git a/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs b/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs index 4a6e1f1caa..d6499760a7 100644 --- a/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs +++ b/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs @@ -635,50 +635,6 @@ namespace osu.Game.Tests.Beatmaps.IO } } - [Test] - public async Task TestAddFile() - { - using (HeadlessGameHost host = new CleanRunHeadlessGameHost(nameof(TestAddFile))) - { - try - { - var osu = loadOsu(host); - var manager = osu.Dependencies.Get(); - - var temp = TestResources.GetTestBeatmapForImport(); - await osu.Dependencies.Get().Import(temp); - - BeatmapSetInfo setToUpdate = manager.GetAllUsableBeatmapSets()[0]; - Beatmap beatmapToUpdate = (Beatmap)manager.GetWorkingBeatmap(setToUpdate.Beatmaps.First(b => b.RulesetID == 0)).Beatmap; - BeatmapSetFileInfo fileToUpdate = setToUpdate.Files.First(f => beatmapToUpdate.BeatmapInfo.Path.Contains(f.Filename)); - - using (var stream = new MemoryStream()) - { - using (var writer = new StreamWriter(stream, leaveOpen: true)) - { - beatmapToUpdate.HitObjects.Clear(); - beatmapToUpdate.HitObjects.Add(new HitCircle { StartTime = 5000 }); - - new LegacyBeatmapEncoder(beatmapToUpdate).Encode(writer); - } - - stream.Seek(0, SeekOrigin.Begin); - - manager.UpdateFile(setToUpdate, fileToUpdate, stream); - } - - Beatmap updatedBeatmap = (Beatmap)manager.GetWorkingBeatmap(manager.QueryBeatmap(b => b.ID == beatmapToUpdate.BeatmapInfo.ID)).Beatmap; - - Assert.That(updatedBeatmap.HitObjects.Count, Is.EqualTo(1)); - Assert.That(updatedBeatmap.HitObjects[0].StartTime, Is.EqualTo(5000)); - } - finally - { - host.Exit(); - } - } - } - public static async Task LoadOszIntoOsu(OsuGameBase osu, string path = null, bool virtualTrack = false) { var temp = path ?? TestResources.GetTestBeatmapForImport(virtualTrack); From 0e844b30395e856d25e11997e94e46a27867b3c6 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 14 Jan 2020 19:23:34 +0900 Subject: [PATCH 0835/1829] Cleanup / re-protect file store --- osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs | 8 ++------ osu.Game/Database/ArchiveModelManager.cs | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs b/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs index d6499760a7..fb7164062c 100644 --- a/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs +++ b/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs @@ -616,12 +616,8 @@ namespace osu.Game.Tests.Beatmaps.IO manager.UpdateFile(setToUpdate, fileToUpdate, stream); } - // Check that the old file has been dereferenced - Assert.That(manager.Files.QueryFiles(f => f.ID == fileToUpdate.FileInfoID).SingleOrDefault(), Is.Null); - - // Ensure that the old file is deleted upon a cleanup - manager.Files.Cleanup(); - Assert.That(new System.IO.FileInfo(manager.Files.Storage.GetFullPath(fileToUpdate.FileInfo.StoragePath)), Does.Not.Exist); + // Check that the old file reference has been removed + Assert.That(manager.QueryBeatmapSet(s => s.ID == setToUpdate.ID).Files.All(f => f.ID != fileToUpdate.ID)); // Check that the new file is referenced correctly by attempting a retrieval Beatmap updatedBeatmap = (Beatmap)manager.GetWorkingBeatmap(manager.QueryBeatmap(b => b.ID == beatmapToUpdate.BeatmapInfo.ID)).Beatmap; diff --git a/osu.Game/Database/ArchiveModelManager.cs b/osu.Game/Database/ArchiveModelManager.cs index be20b2c2e9..5e237d2ecb 100644 --- a/osu.Game/Database/ArchiveModelManager.cs +++ b/osu.Game/Database/ArchiveModelManager.cs @@ -68,7 +68,7 @@ namespace osu.Game.Database public virtual bool SupportsImportFromStable => RuntimeInfo.IsDesktop; - public readonly FileStore Files; + protected readonly FileStore Files; protected readonly IDatabaseContextFactory ContextFactory; From c08fc62e00f5bce2b19c46f0f21573d36f477626 Mon Sep 17 00:00:00 2001 From: mcendu Date: Tue, 14 Jan 2020 19:59:43 +0800 Subject: [PATCH 0836/1829] expose setter of Mod --- osu.Game/Rulesets/UI/ModIcon.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/UI/ModIcon.cs b/osu.Game/Rulesets/UI/ModIcon.cs index 945dbe4cc9..41bf81ac05 100644 --- a/osu.Game/Rulesets/UI/ModIcon.cs +++ b/osu.Game/Rulesets/UI/ModIcon.cs @@ -34,7 +34,7 @@ namespace osu.Game.Rulesets.UI public virtual string TooltipText { get; } - protected Mod Mod { get; private set; } + protected Mod Mod { get; set; } public ModIcon(Mod mod) { From abdebcfddc653057d42118799185f1d02bf0c08b Mon Sep 17 00:00:00 2001 From: mcendu Date: Tue, 14 Jan 2020 20:11:32 +0800 Subject: [PATCH 0837/1829] switch to changing Mod property --- osu.Game/Overlays/Mods/ModButton.cs | 6 +++--- osu.Game/Rulesets/UI/ModIcon.cs | 8 +++++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/Mods/ModButton.cs b/osu.Game/Overlays/Mods/ModButton.cs index 69a4a4181a..77ef08f52d 100644 --- a/osu.Game/Overlays/Mods/ModButton.cs +++ b/osu.Game/Overlays/Mods/ModButton.cs @@ -80,7 +80,7 @@ namespace osu.Game.Overlays.Mods foregroundIcon.RotateTo(rotate_angle * direction, mod_switch_duration, mod_switch_easing); backgroundIcon.RotateTo(-rotate_angle * direction, mod_switch_duration, mod_switch_easing); - backgroundIcon.Icon = modAfter.Icon; + backgroundIcon.Mod = modAfter; using (BeginDelayedSequence(mod_switch_duration, true)) { @@ -218,8 +218,8 @@ namespace osu.Game.Overlays.Mods private void displayMod(Mod mod) { if (backgroundIcon != null) - backgroundIcon.Icon = foregroundIcon.Icon; - foregroundIcon.Icon = mod.Icon; + backgroundIcon.Mod = foregroundIcon.Mod; + foregroundIcon.Mod = mod; text.Text = mod.Name; Colour = mod.HasImplementation ? Color4.White : Color4.Gray; } diff --git a/osu.Game/Rulesets/UI/ModIcon.cs b/osu.Game/Rulesets/UI/ModIcon.cs index 41bf81ac05..9a834a54af 100644 --- a/osu.Game/Rulesets/UI/ModIcon.cs +++ b/osu.Game/Rulesets/UI/ModIcon.cs @@ -34,7 +34,13 @@ namespace osu.Game.Rulesets.UI public virtual string TooltipText { get; } - protected Mod Mod { get; set; } + private Mod mod; + + public Mod Mod + { + get => mod; + set => mod = value; + } public ModIcon(Mod mod) { From 5d160376c06fd339721d2491f1d9b6217699c081 Mon Sep 17 00:00:00 2001 From: mcendu Date: Tue, 14 Jan 2020 21:22:00 +0800 Subject: [PATCH 0838/1829] nullable-ize Mod.Icon --- .../Mods/ManiaModFadeIn.cs | 2 +- .../Mods/ManiaModRandom.cs | 2 +- osu.Game.Rulesets.Osu/Mods/OsuModAutopilot.cs | 2 +- osu.Game.Rulesets.Osu/Mods/OsuModBlinds.cs | 2 +- osu.Game.Rulesets.Osu/Mods/OsuModDeflate.cs | 2 +- osu.Game.Rulesets.Osu/Mods/OsuModGrow.cs | 2 +- osu.Game.Rulesets.Osu/Mods/OsuModSpinIn.cs | 2 +- osu.Game.Rulesets.Osu/Mods/OsuModSpunOut.cs | 2 +- osu.Game.Rulesets.Osu/Mods/OsuModTarget.cs | 2 +- osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs | 2 +- osu.Game.Rulesets.Osu/Mods/OsuModTransform.cs | 2 +- osu.Game.Rulesets.Osu/Mods/OsuModWiggle.cs | 2 +- osu.Game/Rulesets/Mods/Mod.cs | 2 +- osu.Game/Rulesets/Mods/ModAutoplay.cs | 2 +- osu.Game/Rulesets/Mods/ModCinema.cs | 2 +- osu.Game/Rulesets/Mods/ModDaycore.cs | 2 +- osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs | 2 +- osu.Game/Rulesets/Mods/ModDoubleTime.cs | 2 +- osu.Game/Rulesets/Mods/ModEasy.cs | 2 +- osu.Game/Rulesets/Mods/ModFlashlight.cs | 2 +- osu.Game/Rulesets/Mods/ModHalfTime.cs | 2 +- osu.Game/Rulesets/Mods/ModHardRock.cs | 2 +- osu.Game/Rulesets/Mods/ModHidden.cs | 2 +- osu.Game/Rulesets/Mods/ModNightcore.cs | 2 +- osu.Game/Rulesets/Mods/ModNoFail.cs | 2 +- osu.Game/Rulesets/Mods/ModNoMod.cs | 2 +- osu.Game/Rulesets/Mods/ModPerfect.cs | 2 +- osu.Game/Rulesets/Mods/ModRelax.cs | 2 +- osu.Game/Rulesets/Mods/ModSuddenDeath.cs | 2 +- osu.Game/Rulesets/Mods/ModWindDown.cs | 2 +- osu.Game/Rulesets/Mods/ModWindUp.cs | 2 +- osu.Game/Rulesets/UI/ModIcon.cs | 47 +++++++++++++++---- 32 files changed, 69 insertions(+), 40 deletions(-) diff --git a/osu.Game.Rulesets.Mania/Mods/ManiaModFadeIn.cs b/osu.Game.Rulesets.Mania/Mods/ManiaModFadeIn.cs index 39185e6a57..4c125ad6ef 100644 --- a/osu.Game.Rulesets.Mania/Mods/ManiaModFadeIn.cs +++ b/osu.Game.Rulesets.Mania/Mods/ManiaModFadeIn.cs @@ -13,7 +13,7 @@ namespace osu.Game.Rulesets.Mania.Mods { public override string Name => "Fade In"; public override string Acronym => "FI"; - public override IconUsage Icon => OsuIcon.ModHidden; + public override IconUsage? Icon => OsuIcon.ModHidden; public override ModType Type => ModType.DifficultyIncrease; public override string Description => @"Keys appear out of nowhere!"; public override double ScoreMultiplier => 1; diff --git a/osu.Game.Rulesets.Mania/Mods/ManiaModRandom.cs b/osu.Game.Rulesets.Mania/Mods/ManiaModRandom.cs index b12d3a7a70..14b36fb765 100644 --- a/osu.Game.Rulesets.Mania/Mods/ManiaModRandom.cs +++ b/osu.Game.Rulesets.Mania/Mods/ManiaModRandom.cs @@ -18,7 +18,7 @@ namespace osu.Game.Rulesets.Mania.Mods public override string Name => "Random"; public override string Acronym => "RD"; public override ModType Type => ModType.Conversion; - public override IconUsage Icon => OsuIcon.Dice; + public override IconUsage? Icon => OsuIcon.Dice; public override string Description => @"Shuffle around the keys!"; public override double ScoreMultiplier => 1; diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModAutopilot.cs b/osu.Game.Rulesets.Osu/Mods/OsuModAutopilot.cs index 65d7acc911..fe46876050 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModAutopilot.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModAutopilot.cs @@ -18,7 +18,7 @@ namespace osu.Game.Rulesets.Osu.Mods { public override string Name => "Autopilot"; public override string Acronym => "AP"; - public override IconUsage Icon => OsuIcon.ModAutopilot; + public override IconUsage? Icon => OsuIcon.ModAutopilot; public override ModType Type => ModType.Automation; public override string Description => @"Automatic cursor movement - just follow the rhythm."; public override double ScoreMultiplier => 1; diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModBlinds.cs b/osu.Game.Rulesets.Osu/Mods/OsuModBlinds.cs index 831e4a700f..937473e824 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModBlinds.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModBlinds.cs @@ -24,7 +24,7 @@ namespace osu.Game.Rulesets.Osu.Mods public override string Description => "Play with blinds on your screen."; public override string Acronym => "BL"; - public override IconUsage Icon => FontAwesome.Solid.Adjust; + public override IconUsage? Icon => FontAwesome.Solid.Adjust; public override ModType Type => ModType.DifficultyIncrease; public override bool Ranked => false; diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModDeflate.cs b/osu.Game.Rulesets.Osu/Mods/OsuModDeflate.cs index 9bf7525d33..73cb483ef0 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModDeflate.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModDeflate.cs @@ -11,7 +11,7 @@ namespace osu.Game.Rulesets.Osu.Mods public override string Acronym => "DF"; - public override IconUsage Icon => FontAwesome.Solid.CompressArrowsAlt; + public override IconUsage? Icon => FontAwesome.Solid.CompressArrowsAlt; public override string Description => "Hit them at the right size!"; diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModGrow.cs b/osu.Game.Rulesets.Osu/Mods/OsuModGrow.cs index 76676ce888..f08d4e8f5e 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModGrow.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModGrow.cs @@ -11,7 +11,7 @@ namespace osu.Game.Rulesets.Osu.Mods public override string Acronym => "GR"; - public override IconUsage Icon => FontAwesome.Solid.ArrowsAltV; + public override IconUsage? Icon => FontAwesome.Solid.ArrowsAltV; public override string Description => "Hit them at the right size!"; diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModSpinIn.cs b/osu.Game.Rulesets.Osu/Mods/OsuModSpinIn.cs index eae218509e..940c888f3a 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModSpinIn.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModSpinIn.cs @@ -20,7 +20,7 @@ namespace osu.Game.Rulesets.Osu.Mods { public override string Name => "Spin In"; public override string Acronym => "SI"; - public override IconUsage Icon => FontAwesome.Solid.Undo; + public override IconUsage? Icon => FontAwesome.Solid.Undo; public override ModType Type => ModType.Fun; public override string Description => "Circles spin in. No approach circles."; public override double ScoreMultiplier => 1; diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModSpunOut.cs b/osu.Game.Rulesets.Osu/Mods/OsuModSpunOut.cs index 1cdcddbd33..9d5d300a9e 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModSpunOut.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModSpunOut.cs @@ -12,7 +12,7 @@ namespace osu.Game.Rulesets.Osu.Mods { public override string Name => "Spun Out"; public override string Acronym => "SO"; - public override IconUsage Icon => OsuIcon.ModSpunout; + public override IconUsage? Icon => OsuIcon.ModSpunout; public override ModType Type => ModType.DifficultyReduction; public override string Description => @"Spinners will be automatically completed."; public override double ScoreMultiplier => 0.9; diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModTarget.cs b/osu.Game.Rulesets.Osu/Mods/OsuModTarget.cs index 8360e2692e..2464308347 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModTarget.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModTarget.cs @@ -12,7 +12,7 @@ namespace osu.Game.Rulesets.Osu.Mods public override string Name => "Target"; public override string Acronym => "TP"; public override ModType Type => ModType.Conversion; - public override IconUsage Icon => OsuIcon.ModTarget; + public override IconUsage? Icon => OsuIcon.ModTarget; public override string Description => @"Practice keeping up with the beat of the song."; public override double ScoreMultiplier => 1; } diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs b/osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs index dff9a77807..46df963a39 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs @@ -19,7 +19,7 @@ namespace osu.Game.Rulesets.Osu.Mods { public override string Name => "Traceable"; public override string Acronym => "TC"; - public override IconUsage Icon => FontAwesome.Brands.SnapchatGhost; + public override IconUsage? Icon => FontAwesome.Brands.SnapchatGhost; public override ModType Type => ModType.Fun; public override string Description => "Put your faith in the approach circles..."; public override double ScoreMultiplier => 1; diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModTransform.cs b/osu.Game.Rulesets.Osu/Mods/OsuModTransform.cs index a9475af638..cc664ae72e 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModTransform.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModTransform.cs @@ -16,7 +16,7 @@ namespace osu.Game.Rulesets.Osu.Mods { public override string Name => "Transform"; public override string Acronym => "TR"; - public override IconUsage Icon => FontAwesome.Solid.ArrowsAlt; + public override IconUsage? Icon => FontAwesome.Solid.ArrowsAlt; public override ModType Type => ModType.Fun; public override string Description => "Everything rotates. EVERYTHING."; public override double ScoreMultiplier => 1; diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModWiggle.cs b/osu.Game.Rulesets.Osu/Mods/OsuModWiggle.cs index 1664a37a66..cc2f4c3f70 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModWiggle.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModWiggle.cs @@ -17,7 +17,7 @@ namespace osu.Game.Rulesets.Osu.Mods { public override string Name => "Wiggle"; public override string Acronym => "WG"; - public override IconUsage Icon => FontAwesome.Solid.Certificate; + public override IconUsage? Icon => FontAwesome.Solid.Certificate; public override ModType Type => ModType.Fun; public override string Description => "They just won't stay still..."; public override double ScoreMultiplier => 1; diff --git a/osu.Game/Rulesets/Mods/Mod.cs b/osu.Game/Rulesets/Mods/Mod.cs index b780ec9e76..e168171186 100644 --- a/osu.Game/Rulesets/Mods/Mod.cs +++ b/osu.Game/Rulesets/Mods/Mod.cs @@ -28,7 +28,7 @@ namespace osu.Game.Rulesets.Mods /// The icon of this mod. /// [JsonIgnore] - public virtual IconUsage Icon => FontAwesome.Solid.Question; + public virtual IconUsage? Icon => null; /// /// The type of this mod. diff --git a/osu.Game/Rulesets/Mods/ModAutoplay.cs b/osu.Game/Rulesets/Mods/ModAutoplay.cs index 070a10b1c8..e51b8b6457 100644 --- a/osu.Game/Rulesets/Mods/ModAutoplay.cs +++ b/osu.Game/Rulesets/Mods/ModAutoplay.cs @@ -22,7 +22,7 @@ namespace osu.Game.Rulesets.Mods { public override string Name => "Autoplay"; public override string Acronym => "AT"; - public override IconUsage Icon => OsuIcon.ModAuto; + public override IconUsage? Icon => OsuIcon.ModAuto; public override ModType Type => ModType.Automation; public override string Description => "Watch a perfect automated play through the song."; public override double ScoreMultiplier => 1; diff --git a/osu.Game/Rulesets/Mods/ModCinema.cs b/osu.Game/Rulesets/Mods/ModCinema.cs index 3487d49e08..cd08aee453 100644 --- a/osu.Game/Rulesets/Mods/ModCinema.cs +++ b/osu.Game/Rulesets/Mods/ModCinema.cs @@ -26,7 +26,7 @@ namespace osu.Game.Rulesets.Mods { public override string Name => "Cinema"; public override string Acronym => "CN"; - public override IconUsage Icon => OsuIcon.ModCinema; + public override IconUsage? Icon => OsuIcon.ModCinema; public override string Description => "Watch the video without visual distractions."; public void ApplyToHUD(HUDOverlay overlay) diff --git a/osu.Game/Rulesets/Mods/ModDaycore.cs b/osu.Game/Rulesets/Mods/ModDaycore.cs index 71a666414f..f3a4fd535c 100644 --- a/osu.Game/Rulesets/Mods/ModDaycore.cs +++ b/osu.Game/Rulesets/Mods/ModDaycore.cs @@ -12,7 +12,7 @@ namespace osu.Game.Rulesets.Mods { public override string Name => "Daycore"; public override string Acronym => "DC"; - public override IconUsage Icon => FontAwesome.Solid.Question; + public override IconUsage? Icon => FontAwesome.Solid.Question; public override string Description => "Whoaaaaa..."; private readonly BindableNumber tempoAdjust = new BindableDouble(1); diff --git a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs index c5b8a1bc73..b74bf01d1b 100644 --- a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs @@ -20,7 +20,7 @@ namespace osu.Game.Rulesets.Mods public override ModType Type => ModType.Conversion; - public override IconUsage Icon => FontAwesome.Solid.Hammer; + public override IconUsage? Icon => FontAwesome.Solid.Hammer; public override double ScoreMultiplier => 1.0; diff --git a/osu.Game/Rulesets/Mods/ModDoubleTime.cs b/osu.Game/Rulesets/Mods/ModDoubleTime.cs index 7015460c51..152657da33 100644 --- a/osu.Game/Rulesets/Mods/ModDoubleTime.cs +++ b/osu.Game/Rulesets/Mods/ModDoubleTime.cs @@ -14,7 +14,7 @@ namespace osu.Game.Rulesets.Mods { public override string Name => "Double Time"; public override string Acronym => "DT"; - public override IconUsage Icon => OsuIcon.ModDoubletime; + public override IconUsage? Icon => OsuIcon.ModDoubletime; public override ModType Type => ModType.DifficultyIncrease; public override string Description => "Zoooooooooom..."; public override bool Ranked => true; diff --git a/osu.Game/Rulesets/Mods/ModEasy.cs b/osu.Game/Rulesets/Mods/ModEasy.cs index ec0f50c0be..b56be95dfe 100644 --- a/osu.Game/Rulesets/Mods/ModEasy.cs +++ b/osu.Game/Rulesets/Mods/ModEasy.cs @@ -15,7 +15,7 @@ namespace osu.Game.Rulesets.Mods { public override string Name => "Easy"; public override string Acronym => "EZ"; - public override IconUsage Icon => OsuIcon.ModEasy; + public override IconUsage? Icon => OsuIcon.ModEasy; public override ModType Type => ModType.DifficultyReduction; public override double ScoreMultiplier => 0.5; public override bool Ranked => true; diff --git a/osu.Game/Rulesets/Mods/ModFlashlight.cs b/osu.Game/Rulesets/Mods/ModFlashlight.cs index 4f939362bb..35a8334237 100644 --- a/osu.Game/Rulesets/Mods/ModFlashlight.cs +++ b/osu.Game/Rulesets/Mods/ModFlashlight.cs @@ -28,7 +28,7 @@ namespace osu.Game.Rulesets.Mods { public override string Name => "Flashlight"; public override string Acronym => "FL"; - public override IconUsage Icon => OsuIcon.ModFlashlight; + public override IconUsage? Icon => OsuIcon.ModFlashlight; public override ModType Type => ModType.DifficultyIncrease; public override string Description => "Restricted view area."; public override bool Ranked => true; diff --git a/osu.Game/Rulesets/Mods/ModHalfTime.cs b/osu.Game/Rulesets/Mods/ModHalfTime.cs index 15f7afa312..203b88951c 100644 --- a/osu.Game/Rulesets/Mods/ModHalfTime.cs +++ b/osu.Game/Rulesets/Mods/ModHalfTime.cs @@ -14,7 +14,7 @@ namespace osu.Game.Rulesets.Mods { public override string Name => "Half Time"; public override string Acronym => "HT"; - public override IconUsage Icon => OsuIcon.ModHalftime; + public override IconUsage? Icon => OsuIcon.ModHalftime; public override ModType Type => ModType.DifficultyReduction; public override string Description => "Less zoom..."; public override bool Ranked => true; diff --git a/osu.Game/Rulesets/Mods/ModHardRock.cs b/osu.Game/Rulesets/Mods/ModHardRock.cs index a613d41cf4..58c9a58408 100644 --- a/osu.Game/Rulesets/Mods/ModHardRock.cs +++ b/osu.Game/Rulesets/Mods/ModHardRock.cs @@ -12,7 +12,7 @@ namespace osu.Game.Rulesets.Mods { public override string Name => "Hard Rock"; public override string Acronym => "HR"; - public override IconUsage Icon => OsuIcon.ModHardrock; + public override IconUsage? Icon => OsuIcon.ModHardrock; public override ModType Type => ModType.DifficultyIncrease; public override string Description => "Everything just got a bit harder..."; public override Type[] IncompatibleMods => new[] { typeof(ModEasy), typeof(ModDifficultyAdjust) }; diff --git a/osu.Game/Rulesets/Mods/ModHidden.cs b/osu.Game/Rulesets/Mods/ModHidden.cs index 0934992f55..4e4a75db82 100644 --- a/osu.Game/Rulesets/Mods/ModHidden.cs +++ b/osu.Game/Rulesets/Mods/ModHidden.cs @@ -17,7 +17,7 @@ namespace osu.Game.Rulesets.Mods { public override string Name => "Hidden"; public override string Acronym => "HD"; - public override IconUsage Icon => OsuIcon.ModHidden; + public override IconUsage? Icon => OsuIcon.ModHidden; public override ModType Type => ModType.DifficultyIncrease; public override bool Ranked => true; diff --git a/osu.Game/Rulesets/Mods/ModNightcore.cs b/osu.Game/Rulesets/Mods/ModNightcore.cs index a8c79bb896..1df2aeb348 100644 --- a/osu.Game/Rulesets/Mods/ModNightcore.cs +++ b/osu.Game/Rulesets/Mods/ModNightcore.cs @@ -23,7 +23,7 @@ namespace osu.Game.Rulesets.Mods { public override string Name => "Nightcore"; public override string Acronym => "NC"; - public override IconUsage Icon => OsuIcon.ModNightcore; + public override IconUsage? Icon => OsuIcon.ModNightcore; public override string Description => "Uguuuuuuuu..."; private readonly BindableNumber tempoAdjust = new BindableDouble(1); diff --git a/osu.Game/Rulesets/Mods/ModNoFail.cs b/osu.Game/Rulesets/Mods/ModNoFail.cs index 49ee3354c3..b95ec7490e 100644 --- a/osu.Game/Rulesets/Mods/ModNoFail.cs +++ b/osu.Game/Rulesets/Mods/ModNoFail.cs @@ -11,7 +11,7 @@ namespace osu.Game.Rulesets.Mods { public override string Name => "No Fail"; public override string Acronym => "NF"; - public override IconUsage Icon => OsuIcon.ModNofail; + public override IconUsage? Icon => OsuIcon.ModNofail; public override ModType Type => ModType.DifficultyReduction; public override string Description => "You can't fail, no matter what."; public override double ScoreMultiplier => 0.5; diff --git a/osu.Game/Rulesets/Mods/ModNoMod.cs b/osu.Game/Rulesets/Mods/ModNoMod.cs index 487985b2b3..379a2122f2 100644 --- a/osu.Game/Rulesets/Mods/ModNoMod.cs +++ b/osu.Game/Rulesets/Mods/ModNoMod.cs @@ -13,7 +13,7 @@ namespace osu.Game.Rulesets.Mods public override string Name => "No Mod"; public override string Acronym => "NM"; public override double ScoreMultiplier => 1; - public override IconUsage Icon => FontAwesome.Solid.Ban; + public override IconUsage? Icon => FontAwesome.Solid.Ban; public override ModType Type => ModType.System; } } diff --git a/osu.Game/Rulesets/Mods/ModPerfect.cs b/osu.Game/Rulesets/Mods/ModPerfect.cs index afa263f1c9..882d3ebd6a 100644 --- a/osu.Game/Rulesets/Mods/ModPerfect.cs +++ b/osu.Game/Rulesets/Mods/ModPerfect.cs @@ -12,7 +12,7 @@ namespace osu.Game.Rulesets.Mods { public override string Name => "Perfect"; public override string Acronym => "PF"; - public override IconUsage Icon => OsuIcon.ModPerfect; + public override IconUsage? Icon => OsuIcon.ModPerfect; public override string Description => "SS or quit."; protected override bool FailCondition(HealthProcessor healthProcessor, JudgementResult result) => result.Type != result.Judgement.MaxResult; diff --git a/osu.Game/Rulesets/Mods/ModRelax.cs b/osu.Game/Rulesets/Mods/ModRelax.cs index 7c355577d4..b6fec42f43 100644 --- a/osu.Game/Rulesets/Mods/ModRelax.cs +++ b/osu.Game/Rulesets/Mods/ModRelax.cs @@ -11,7 +11,7 @@ namespace osu.Game.Rulesets.Mods { public override string Name => "Relax"; public override string Acronym => "RX"; - public override IconUsage Icon => OsuIcon.ModRelax; + public override IconUsage? Icon => OsuIcon.ModRelax; public override ModType Type => ModType.Automation; public override double ScoreMultiplier => 1; public override Type[] IncompatibleMods => new[] { typeof(ModAutoplay), typeof(ModNoFail), typeof(ModSuddenDeath) }; diff --git a/osu.Game/Rulesets/Mods/ModSuddenDeath.cs b/osu.Game/Rulesets/Mods/ModSuddenDeath.cs index a4d0631d8c..8799431f1d 100644 --- a/osu.Game/Rulesets/Mods/ModSuddenDeath.cs +++ b/osu.Game/Rulesets/Mods/ModSuddenDeath.cs @@ -13,7 +13,7 @@ namespace osu.Game.Rulesets.Mods { public override string Name => "Sudden Death"; public override string Acronym => "SD"; - public override IconUsage Icon => OsuIcon.ModSuddendeath; + public override IconUsage? Icon => OsuIcon.ModSuddendeath; public override ModType Type => ModType.DifficultyIncrease; public override string Description => "Miss and fail."; public override double ScoreMultiplier => 1; diff --git a/osu.Game/Rulesets/Mods/ModWindDown.cs b/osu.Game/Rulesets/Mods/ModWindDown.cs index 5416f1ac22..da3bd75b44 100644 --- a/osu.Game/Rulesets/Mods/ModWindDown.cs +++ b/osu.Game/Rulesets/Mods/ModWindDown.cs @@ -14,7 +14,7 @@ namespace osu.Game.Rulesets.Mods public override string Name => "Wind Down"; public override string Acronym => "WD"; public override string Description => "Sloooow doooown..."; - public override IconUsage Icon => FontAwesome.Solid.ChevronCircleDown; + public override IconUsage? Icon => FontAwesome.Solid.ChevronCircleDown; public override double ScoreMultiplier => 1.0; [SettingSource("Final rate", "The speed increase to ramp towards")] diff --git a/osu.Game/Rulesets/Mods/ModWindUp.cs b/osu.Game/Rulesets/Mods/ModWindUp.cs index 3cf584f3dd..3f456a42a5 100644 --- a/osu.Game/Rulesets/Mods/ModWindUp.cs +++ b/osu.Game/Rulesets/Mods/ModWindUp.cs @@ -14,7 +14,7 @@ namespace osu.Game.Rulesets.Mods public override string Name => "Wind Up"; public override string Acronym => "WU"; public override string Description => "Can you keep up?"; - public override IconUsage Icon => FontAwesome.Solid.ChevronCircleUp; + public override IconUsage? Icon => FontAwesome.Solid.ChevronCircleUp; public override double ScoreMultiplier => 1.0; [SettingSource("Final rate", "The speed increase to ramp towards")] diff --git a/osu.Game/Rulesets/UI/ModIcon.cs b/osu.Game/Rulesets/UI/ModIcon.cs index 9a834a54af..6d4324f6a5 100644 --- a/osu.Game/Rulesets/UI/ModIcon.cs +++ b/osu.Game/Rulesets/UI/ModIcon.cs @@ -9,6 +9,7 @@ using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Cursor; using osu.Framework.Graphics.Sprites; using osu.Game.Graphics; +using osu.Game.Graphics.Sprites; using osu.Game.Rulesets.Mods; using osuTK; using osu.Framework.Bindables; @@ -20,16 +21,11 @@ namespace osu.Game.Rulesets.UI public readonly BindableBool Selected = new BindableBool(); private readonly SpriteIcon modIcon; + private readonly SpriteText modAcronym; private readonly SpriteIcon background; private const float size = 80; - public IconUsage Icon - { - get => modIcon.Icon; - set => modIcon.Icon = value; - } - private readonly ModType type; public virtual string TooltipText { get; } @@ -39,12 +35,16 @@ namespace osu.Game.Rulesets.UI public Mod Mod { get => mod; - set => mod = value; + set + { + mod = value; + updateMod(value); + } } public ModIcon(Mod mod) { - Mod = mod ?? throw new ArgumentNullException(nameof(mod)); + this.mod = mod ?? throw new ArgumentNullException(nameof(mod)); type = mod.Type; @@ -62,15 +62,44 @@ namespace osu.Game.Rulesets.UI Icon = OsuIcon.ModBg, Shadow = true, }, + modAcronym = new OsuSpriteText + { + Origin = Anchor.Centre, + Anchor = Anchor.Centre, + Colour = OsuColour.Gray(84), + Alpha = 0, + + Font = OsuFont.Numeric.With(null, size - 55), + UseFullGlyphHeight = false, + Text = mod.Acronym + }, modIcon = new SpriteIcon { Origin = Anchor.Centre, Anchor = Anchor.Centre, Colour = OsuColour.Gray(84), Size = new Vector2(size - 35), - Icon = mod.Icon + Icon = FontAwesome.Solid.Question }, }; + + updateMod(mod); + } + + private void updateMod(Mod value) + { + modAcronym.Text = value.Acronym; + modIcon.Icon = value.Icon ?? FontAwesome.Solid.Question; + + if (value.Icon is null) + { + modIcon.FadeOut(); + modAcronym.FadeIn(); + return; + } + + modIcon.FadeIn(); + modAcronym.FadeOut(); } private Color4 backgroundColour; From 12cf30459808c0a9ab04043693d87b6cd21d5505 Mon Sep 17 00:00:00 2001 From: mcendu Date: Tue, 14 Jan 2020 21:23:09 +0800 Subject: [PATCH 0839/1829] Update ModDaycore icon --- osu.Game/Rulesets/Mods/ModDaycore.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Mods/ModDaycore.cs b/osu.Game/Rulesets/Mods/ModDaycore.cs index f3a4fd535c..bd98e735e5 100644 --- a/osu.Game/Rulesets/Mods/ModDaycore.cs +++ b/osu.Game/Rulesets/Mods/ModDaycore.cs @@ -12,7 +12,7 @@ namespace osu.Game.Rulesets.Mods { public override string Name => "Daycore"; public override string Acronym => "DC"; - public override IconUsage? Icon => FontAwesome.Solid.Question; + public override IconUsage? Icon => null; public override string Description => "Whoaaaaa..."; private readonly BindableNumber tempoAdjust = new BindableDouble(1); From a86fb2113e66b9915de13b562c041a6f90a5ec8a Mon Sep 17 00:00:00 2001 From: Revel Date: Tue, 14 Jan 2020 14:26:54 -0500 Subject: [PATCH 0840/1829] fix tooltip capitalization --- osu.Game/Graphics/Containers/LinkFlowContainer.cs | 2 +- osu.Game/Graphics/UserInterface/ExternalLinkButton.cs | 2 +- osu.Game/Graphics/UserInterface/OsuPasswordTextBox.cs | 2 +- .../Overlays/BeatmapSet/Buttons/HeaderDownloadButton.cs | 2 +- osu.Game/Overlays/Chat/ChatLine.cs | 2 +- osu.Game/Overlays/Direct/PanelDownloadButton.cs | 2 +- osu.Game/Overlays/Profile/Header/Components/LevelBadge.cs | 2 +- .../Overlays/Profile/Header/Components/LevelProgressBar.cs | 2 +- .../Overlays/Settings/Sections/Input/KeyboardSettings.cs | 2 +- osu.Game/Overlays/Settings/Sections/Input/MouseSettings.cs | 2 +- osu.Game/Overlays/Settings/SettingsItem.cs | 2 +- osu.Game/Screens/Ranking/Pages/ReplayDownloadButton.cs | 6 +++--- osu.Game/Screens/Ranking/Pages/RetryButton.cs | 2 +- osu.Game/Users/Drawables/DrawableAvatar.cs | 2 +- osu.Game/Users/UserPanel.cs | 2 +- 15 files changed, 17 insertions(+), 17 deletions(-) diff --git a/osu.Game/Graphics/Containers/LinkFlowContainer.cs b/osu.Game/Graphics/Containers/LinkFlowContainer.cs index 9735f6373d..e3a9a5fe9d 100644 --- a/osu.Game/Graphics/Containers/LinkFlowContainer.cs +++ b/osu.Game/Graphics/Containers/LinkFlowContainer.cs @@ -63,7 +63,7 @@ namespace osu.Game.Graphics.Containers } public void AddUserLink(User user, Action creationParameters = null) - => createLink(AddText(user.Username, creationParameters), new LinkDetails(LinkAction.OpenUserProfile, user.Id.ToString()), "View Profile"); + => createLink(AddText(user.Username, creationParameters), new LinkDetails(LinkAction.OpenUserProfile, user.Id.ToString()), "view profile"); private void createLink(IEnumerable drawables, LinkDetails link, string tooltipText, Action action = null) { diff --git a/osu.Game/Graphics/UserInterface/ExternalLinkButton.cs b/osu.Game/Graphics/UserInterface/ExternalLinkButton.cs index 8c00cae08a..7225dbc66f 100644 --- a/osu.Game/Graphics/UserInterface/ExternalLinkButton.cs +++ b/osu.Game/Graphics/UserInterface/ExternalLinkButton.cs @@ -57,6 +57,6 @@ namespace osu.Game.Graphics.UserInterface return true; } - public string TooltipText => "View in browser"; + public string TooltipText => "view in browser"; } } diff --git a/osu.Game/Graphics/UserInterface/OsuPasswordTextBox.cs b/osu.Game/Graphics/UserInterface/OsuPasswordTextBox.cs index 418ad038f7..e4a4b1c50e 100644 --- a/osu.Game/Graphics/UserInterface/OsuPasswordTextBox.cs +++ b/osu.Game/Graphics/UserInterface/OsuPasswordTextBox.cs @@ -104,7 +104,7 @@ namespace osu.Game.Graphics.UserInterface private class CapsWarning : SpriteIcon, IHasTooltip { - public string TooltipText => @"Caps lock is active"; + public string TooltipText => @"caps lock is active"; public CapsWarning() { diff --git a/osu.Game/Overlays/BeatmapSet/Buttons/HeaderDownloadButton.cs b/osu.Game/Overlays/BeatmapSet/Buttons/HeaderDownloadButton.cs index fe10287491..e0360c6312 100644 --- a/osu.Game/Overlays/BeatmapSet/Buttons/HeaderDownloadButton.cs +++ b/osu.Game/Overlays/BeatmapSet/Buttons/HeaderDownloadButton.cs @@ -24,7 +24,7 @@ namespace osu.Game.Overlays.BeatmapSet.Buttons { private readonly bool noVideo; - public string TooltipText => button.Enabled.Value ? "Download this beatmap" : "Login to download"; + public string TooltipText => button.Enabled.Value ? "download this beatmap" : "login to download"; private readonly IBindable localUser = new Bindable(); diff --git a/osu.Game/Overlays/Chat/ChatLine.cs b/osu.Game/Overlays/Chat/ChatLine.cs index 8abde8a24f..1493d11950 100644 --- a/osu.Game/Overlays/Chat/ChatLine.cs +++ b/osu.Game/Overlays/Chat/ChatLine.cs @@ -236,7 +236,7 @@ namespace osu.Game.Overlays.Chat { List items = new List { - new OsuMenuItem("View Profile", MenuItemType.Highlighted, Action) + new OsuMenuItem("view profile", MenuItemType.Highlighted, Action) }; if (sender.Id != api.LocalUser.Value.Id) diff --git a/osu.Game/Overlays/Direct/PanelDownloadButton.cs b/osu.Game/Overlays/Direct/PanelDownloadButton.cs index 4037cd46f3..ed44f1e960 100644 --- a/osu.Game/Overlays/Direct/PanelDownloadButton.cs +++ b/osu.Game/Overlays/Direct/PanelDownloadButton.cs @@ -48,7 +48,7 @@ namespace osu.Game.Overlays.Direct if (BeatmapSet.Value.OnlineInfo.Availability?.DownloadDisabled ?? false) { button.Enabled.Value = false; - button.TooltipText = "This beatmap is currently not available for download."; + button.TooltipText = "this beatmap is currently not available for download."; return; } diff --git a/osu.Game/Overlays/Profile/Header/Components/LevelBadge.cs b/osu.Game/Overlays/Profile/Header/Components/LevelBadge.cs index 8069937810..29471375b5 100644 --- a/osu.Game/Overlays/Profile/Header/Components/LevelBadge.cs +++ b/osu.Game/Overlays/Profile/Header/Components/LevelBadge.cs @@ -24,7 +24,7 @@ namespace osu.Game.Overlays.Profile.Header.Components public LevelBadge() { - TooltipText = "Level"; + TooltipText = "level"; } [BackgroundDependencyLoader] diff --git a/osu.Game/Overlays/Profile/Header/Components/LevelProgressBar.cs b/osu.Game/Overlays/Profile/Header/Components/LevelProgressBar.cs index 6a6532764f..a73ce56a2b 100644 --- a/osu.Game/Overlays/Profile/Header/Components/LevelProgressBar.cs +++ b/osu.Game/Overlays/Profile/Header/Components/LevelProgressBar.cs @@ -25,7 +25,7 @@ namespace osu.Game.Overlays.Profile.Header.Components public LevelProgressBar() { - TooltipText = "Progress to next level"; + TooltipText = "progress to next level"; } [BackgroundDependencyLoader] diff --git a/osu.Game/Overlays/Settings/Sections/Input/KeyboardSettings.cs b/osu.Game/Overlays/Settings/Sections/Input/KeyboardSettings.cs index 55c7210d6c..db6f24a954 100644 --- a/osu.Game/Overlays/Settings/Sections/Input/KeyboardSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/Input/KeyboardSettings.cs @@ -16,7 +16,7 @@ namespace osu.Game.Overlays.Settings.Sections.Input new SettingsButton { Text = "Key configuration", - TooltipText = "Change global shortcut keys and gameplay bindings", + TooltipText = "change global shortcut keys and gameplay bindings", Action = keyConfig.ToggleVisibility }, }; diff --git a/osu.Game/Overlays/Settings/Sections/Input/MouseSettings.cs b/osu.Game/Overlays/Settings/Sections/Input/MouseSettings.cs index 4f2f3dfd1a..59d39a1c3c 100644 --- a/osu.Game/Overlays/Settings/Sections/Input/MouseSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/Input/MouseSettings.cs @@ -87,7 +87,7 @@ namespace osu.Game.Overlays.Settings.Sections.Input private class SensitivitySlider : OsuSliderBar { - public override string TooltipText => Current.Disabled ? "Enable raw input to adjust sensitivity" : $"{base.TooltipText}x"; + public override string TooltipText => Current.Disabled ? "enable raw input to adjust sensitivity" : $"{base.TooltipText}x"; } } } diff --git a/osu.Game/Overlays/Settings/SettingsItem.cs b/osu.Game/Overlays/Settings/SettingsItem.cs index 55e1937d83..e89f2adf0b 100644 --- a/osu.Game/Overlays/Settings/SettingsItem.cs +++ b/osu.Game/Overlays/Settings/SettingsItem.cs @@ -161,7 +161,7 @@ namespace osu.Game.Overlays.Settings UpdateState(); } - public string TooltipText => "Revert to default"; + public string TooltipText => "revert to default"; protected override bool OnClick(ClickEvent e) { diff --git a/osu.Game/Screens/Ranking/Pages/ReplayDownloadButton.cs b/osu.Game/Screens/Ranking/Pages/ReplayDownloadButton.cs index 9cc6ea2628..62213720aa 100644 --- a/osu.Game/Screens/Ranking/Pages/ReplayDownloadButton.cs +++ b/osu.Game/Screens/Ranking/Pages/ReplayDownloadButton.cs @@ -74,15 +74,15 @@ namespace osu.Game.Screens.Ranking.Pages switch (replayAvailability) { case ReplayAvailability.Local: - button.TooltipText = @"Watch replay"; + button.TooltipText = @"watch replay"; break; case ReplayAvailability.Online: - button.TooltipText = @"Download replay"; + button.TooltipText = @"download replay"; break; default: - button.TooltipText = @"Replay unavailable"; + button.TooltipText = @"replay unavailable"; break; } }, true); diff --git a/osu.Game/Screens/Ranking/Pages/RetryButton.cs b/osu.Game/Screens/Ranking/Pages/RetryButton.cs index 2a281224c1..06d0440b30 100644 --- a/osu.Game/Screens/Ranking/Pages/RetryButton.cs +++ b/osu.Game/Screens/Ranking/Pages/RetryButton.cs @@ -39,7 +39,7 @@ namespace osu.Game.Screens.Ranking.Pages }, }; - TooltipText = "Retry"; + TooltipText = "retry"; } [BackgroundDependencyLoader] diff --git a/osu.Game/Users/Drawables/DrawableAvatar.cs b/osu.Game/Users/Drawables/DrawableAvatar.cs index ee9af15863..93136e88a0 100644 --- a/osu.Game/Users/Drawables/DrawableAvatar.cs +++ b/osu.Game/Users/Drawables/DrawableAvatar.cs @@ -74,7 +74,7 @@ namespace osu.Game.Users.Drawables private class ClickableArea : OsuClickableContainer { - public override string TooltipText => Enabled.Value ? @"View Profile" : null; + public override string TooltipText => Enabled.Value ? @"view profile" : null; protected override bool OnClick(ClickEvent e) { diff --git a/osu.Game/Users/UserPanel.cs b/osu.Game/Users/UserPanel.cs index 6ddbc13a06..98c088f013 100644 --- a/osu.Game/Users/UserPanel.cs +++ b/osu.Game/Users/UserPanel.cs @@ -247,7 +247,7 @@ namespace osu.Game.Users public MenuItem[] ContextMenuItems => new MenuItem[] { - new OsuMenuItem("View Profile", MenuItemType.Highlighted, ViewProfile), + new OsuMenuItem("view profile", MenuItemType.Highlighted, ViewProfile), }; } } From 443dedfd07dec0b645e4da08aeab670d4954293a Mon Sep 17 00:00:00 2001 From: Revel Date: Tue, 14 Jan 2020 14:54:06 -0500 Subject: [PATCH 0841/1829] undo menu item capitalization --- osu.Game/Overlays/Chat/ChatLine.cs | 2 +- osu.Game/Users/UserPanel.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Chat/ChatLine.cs b/osu.Game/Overlays/Chat/ChatLine.cs index 1493d11950..8abde8a24f 100644 --- a/osu.Game/Overlays/Chat/ChatLine.cs +++ b/osu.Game/Overlays/Chat/ChatLine.cs @@ -236,7 +236,7 @@ namespace osu.Game.Overlays.Chat { List items = new List { - new OsuMenuItem("view profile", MenuItemType.Highlighted, Action) + new OsuMenuItem("View Profile", MenuItemType.Highlighted, Action) }; if (sender.Id != api.LocalUser.Value.Id) diff --git a/osu.Game/Users/UserPanel.cs b/osu.Game/Users/UserPanel.cs index 98c088f013..6ddbc13a06 100644 --- a/osu.Game/Users/UserPanel.cs +++ b/osu.Game/Users/UserPanel.cs @@ -247,7 +247,7 @@ namespace osu.Game.Users public MenuItem[] ContextMenuItems => new MenuItem[] { - new OsuMenuItem("view profile", MenuItemType.Highlighted, ViewProfile), + new OsuMenuItem("View Profile", MenuItemType.Highlighted, ViewProfile), }; } } From c25fefa3cab630688e689d5240dc546ada4d1ba8 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 15 Jan 2020 13:44:38 +0900 Subject: [PATCH 0842/1829] Add beatmap package export --- osu.Game/Beatmaps/BeatmapManager.cs | 27 +++++++++++++++++++++++---- osu.Game/Screens/Edit/Editor.cs | 1 + 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/osu.Game/Beatmaps/BeatmapManager.cs b/osu.Game/Beatmaps/BeatmapManager.cs index eeb1c3478a..31869f9310 100644 --- a/osu.Game/Beatmaps/BeatmapManager.cs +++ b/osu.Game/Beatmaps/BeatmapManager.cs @@ -28,6 +28,7 @@ using osu.Game.Online.API.Requests; using osu.Game.Rulesets; using osu.Game.Rulesets.Objects; using Decoder = osu.Game.Beatmaps.Formats.Decoder; +using ZipArchive = SharpCompress.Archives.Zip.ZipArchive; namespace osu.Game.Beatmaps { @@ -58,14 +59,11 @@ namespace osu.Game.Beatmaps protected override string ImportFromStablePath => "Songs"; private readonly RulesetStore rulesets; - private readonly BeatmapStore beatmaps; - private readonly AudioManager audioManager; - private readonly GameHost host; - private readonly BeatmapUpdateQueue updateQueue; + private readonly Storage exportStorage; public BeatmapManager(Storage storage, IDatabaseContextFactory contextFactory, RulesetStore rulesets, IAPIProvider api, AudioManager audioManager, GameHost host = null, WorkingBeatmap defaultBeatmap = null) @@ -82,6 +80,7 @@ namespace osu.Game.Beatmaps beatmaps.BeatmapRestored += b => BeatmapRestored?.Invoke(b); updateQueue = new BeatmapUpdateQueue(api); + exportStorage = storage.GetStorageForDirectory("exports"); } protected override ArchiveDownloadRequest CreateDownloadRequest(BeatmapSetInfo set, bool minimiseDownloadSize) => @@ -200,6 +199,26 @@ namespace osu.Game.Beatmaps workingCache.Remove(working); } + /// + /// Exports a to an .osz package. + /// + /// The to export. + public void Export(BeatmapSetInfo set) + { + var localSet = QueryBeatmapSet(s => s.ID == set.ID); + + using (var archive = ZipArchive.Create()) + { + foreach (var file in localSet.Files) + archive.AddEntry(file.Filename, Files.Storage.GetStream(file.FileInfo.StoragePath)); + + using (var outputStream = exportStorage.GetStream($"{set}.osz", FileAccess.Write, FileMode.Create)) + archive.SaveTo(outputStream); + + exportStorage.OpenInNativeExplorer(); + } + } + private readonly WeakList workingCache = new WeakList(); /// diff --git a/osu.Game/Screens/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs index c6bdd2c39b..a6f9963f67 100644 --- a/osu.Game/Screens/Edit/Editor.cs +++ b/osu.Game/Screens/Edit/Editor.cs @@ -91,6 +91,7 @@ namespace osu.Game.Screens.Edit if (RuntimeInfo.IsDesktop) { fileMenuItems.Add(new EditorMenuItem("Save", MenuItemType.Standard, saveBeatmap)); + fileMenuItems.Add(new EditorMenuItem("Export package", MenuItemType.Standard, () => beatmapManager.Export(Beatmap.Value.BeatmapSetInfo))); fileMenuItems.Add(new EditorMenuItemSpacer()); } From 2060be345d43a558926ad0d8edbe41efb423989b Mon Sep 17 00:00:00 2001 From: Joehu Date: Tue, 14 Jan 2020 20:44:55 -0800 Subject: [PATCH 0843/1829] Move alt pressed condition to top of method --- osu.Game/Screens/Select/BeatmapCarousel.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs b/osu.Game/Screens/Select/BeatmapCarousel.cs index da01ac5f95..49c7381f90 100644 --- a/osu.Game/Screens/Select/BeatmapCarousel.cs +++ b/osu.Game/Screens/Select/BeatmapCarousel.cs @@ -412,6 +412,9 @@ namespace osu.Game.Screens.Select protected override bool OnKeyDown(KeyDownEvent e) { + if (e.AltPressed) + return base.OnKeyDown(e); + int direction = 0; bool skipDifficulties = false; @@ -436,7 +439,7 @@ namespace osu.Game.Screens.Select break; } - if (direction == 0 || e.AltPressed) + if (direction == 0) return base.OnKeyDown(e); SelectNext(direction, skipDifficulties); From e49701a215d12e1c45fbc59179fce53242eb1a39 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 15 Jan 2020 13:48:28 +0900 Subject: [PATCH 0844/1829] Save before exporting --- osu.Game/Screens/Edit/Editor.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs index a6f9963f67..e212b429b9 100644 --- a/osu.Game/Screens/Edit/Editor.cs +++ b/osu.Game/Screens/Edit/Editor.cs @@ -91,7 +91,7 @@ namespace osu.Game.Screens.Edit if (RuntimeInfo.IsDesktop) { fileMenuItems.Add(new EditorMenuItem("Save", MenuItemType.Standard, saveBeatmap)); - fileMenuItems.Add(new EditorMenuItem("Export package", MenuItemType.Standard, () => beatmapManager.Export(Beatmap.Value.BeatmapSetInfo))); + fileMenuItems.Add(new EditorMenuItem("Export package", MenuItemType.Standard, exportBeatmap)); fileMenuItems.Add(new EditorMenuItemSpacer()); } @@ -339,5 +339,11 @@ namespace osu.Game.Screens.Edit } private void saveBeatmap() => beatmapManager.Save(playableBeatmap.BeatmapInfo, editorBeatmap); + + private void exportBeatmap() + { + saveBeatmap(); + beatmapManager.Export(Beatmap.Value.BeatmapSetInfo); + } } } From b42b23d65bf974d41799bed94fbf3639d8f6232a Mon Sep 17 00:00:00 2001 From: Joehu Date: Tue, 14 Jan 2020 20:52:15 -0800 Subject: [PATCH 0845/1829] Add comment for alt pressed Taken from OsuScrollContainer --- osu.Game/Screens/Select/BeatmapCarousel.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs b/osu.Game/Screens/Select/BeatmapCarousel.cs index 49c7381f90..76ca97d074 100644 --- a/osu.Game/Screens/Select/BeatmapCarousel.cs +++ b/osu.Game/Screens/Select/BeatmapCarousel.cs @@ -412,6 +412,8 @@ namespace osu.Game.Screens.Select protected override bool OnKeyDown(KeyDownEvent e) { + // allow for controlling volume when alt is held. + // mostly for compatibility with osu-stable. if (e.AltPressed) return base.OnKeyDown(e); From 363d7d724af0c195159da3b4c01151d11c7225c1 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 15 Jan 2020 14:02:29 +0900 Subject: [PATCH 0846/1829] Use old ctor params --- osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs b/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs index fb7164062c..c1bd73ef05 100644 --- a/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs +++ b/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs @@ -5,6 +5,7 @@ using System; using System.IO; using System.Collections.Generic; using System.Linq; +using System.Text; using System.Threading; using System.Threading.Tasks; using NUnit.Framework; @@ -603,7 +604,7 @@ namespace osu.Game.Tests.Beatmaps.IO using (var stream = new MemoryStream()) { - using (var writer = new StreamWriter(stream, leaveOpen: true)) + using (var writer = new StreamWriter(stream, Encoding.UTF8, 1024, true)) { beatmapToUpdate.HitObjects.Clear(); beatmapToUpdate.HitObjects.Add(new HitCircle { StartTime = 5000 }); From e88e40eec4edd073ceb9ad9ba6b912785b961f91 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 15 Jan 2020 15:11:36 +0900 Subject: [PATCH 0847/1829] Expand on comment --- osu.Game/Screens/Select/BeatmapCarousel.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs b/osu.Game/Screens/Select/BeatmapCarousel.cs index 76ca97d074..4433543ca1 100644 --- a/osu.Game/Screens/Select/BeatmapCarousel.cs +++ b/osu.Game/Screens/Select/BeatmapCarousel.cs @@ -413,7 +413,8 @@ namespace osu.Game.Screens.Select protected override bool OnKeyDown(KeyDownEvent e) { // allow for controlling volume when alt is held. - // mostly for compatibility with osu-stable. + // this is required as the VolumeControlReceptor uses OnPressed, which is + // executed after all OnKeyDown events. if (e.AltPressed) return base.OnKeyDown(e); From a0b6cadab58a9c733469785619221b11610e9c58 Mon Sep 17 00:00:00 2001 From: mcendu Date: Wed, 15 Jan 2020 17:36:27 +0800 Subject: [PATCH 0848/1829] add test scene --- .../UserInterface/TestSceneModButton.cs | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs new file mode 100644 index 0000000000..0cc7f6a399 --- /dev/null +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs @@ -0,0 +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 System; +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework; +using osu.Framework.Allocation; +using osu.Framework.Bindables; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Sprites; +using osu.Framework.Testing; +using osu.Game.Graphics.Sprites; +using osu.Game.Graphics.UserInterface; +using osu.Game.Overlays.Mods; +using osu.Game.Overlays.Mods.Sections; +using osu.Game.Rulesets; +using osu.Game.Rulesets.Mania; +using osu.Game.Rulesets.Mania.Mods; +using osu.Game.Rulesets.Mods; +using osu.Game.Rulesets.Osu; +using osu.Game.Rulesets.Osu.Mods; +using osu.Game.Rulesets.UI; +using osu.Game.Screens.Play.HUD; +using osuTK; +using osuTK.Graphics; + +namespace osu.Game.Tests.Visual.UserInterface +{ + public class TestSceneModButton : OsuTestScene + { + private ModButton modButton; + + [SetUp] + public void SetUp() => Schedule(() => + { + Children = new Drawable[] + { + modButton = new ModButton(new MultiMod(new TestMod1(), new TestMod2(), new TestMod3(), new TestMod4())) + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre + } + }; + }); + + private class TestMod1 : TestMod + { + public override string Name => "Test mod 1"; + + public override string Acronym => "M1"; + } + + private class TestMod2 : TestMod + { + public override string Name => "Test mod 2"; + + public override string Acronym => "M2"; + + public override IconUsage? Icon => FontAwesome.Solid.Exclamation; + } + + private class TestMod3 : TestMod + { + public override string Name => "Test mod 3"; + + public override string Acronym => "M3"; + + public override IconUsage? Icon => FontAwesome.Solid.ArrowRight; + } + + private class TestMod4 : TestMod + { + public override string Name => "Test mod 4"; + + public override string Acronym => "M4"; + } + + private abstract class TestMod : Mod, IApplicableMod + { + public override double ScoreMultiplier => 1.0; + } + } +} \ No newline at end of file From 970653470cac52f1241ce6a88e193c9a442ad920 Mon Sep 17 00:00:00 2001 From: mcendu Date: Wed, 15 Jan 2020 17:49:45 +0800 Subject: [PATCH 0849/1829] format --- osu.Game/Rulesets/UI/ModIcon.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/UI/ModIcon.cs b/osu.Game/Rulesets/UI/ModIcon.cs index 6d4324f6a5..7e22fd2946 100644 --- a/osu.Game/Rulesets/UI/ModIcon.cs +++ b/osu.Game/Rulesets/UI/ModIcon.cs @@ -69,7 +69,7 @@ namespace osu.Game.Rulesets.UI Colour = OsuColour.Gray(84), Alpha = 0, - Font = OsuFont.Numeric.With(null, size - 55), + Font = OsuFont.Numeric.With(null, size - 57.5f), UseFullGlyphHeight = false, Text = mod.Acronym }, From 62615fb8c1e301dcb55af073cc738afe07ea9ec0 Mon Sep 17 00:00:00 2001 From: mcendu Date: Wed, 15 Jan 2020 18:00:14 +0800 Subject: [PATCH 0850/1829] format --- osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs index 0cc7f6a399..856422016d 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs @@ -50,7 +50,7 @@ namespace osu.Game.Tests.Visual.UserInterface public override string Acronym => "M1"; } - + private class TestMod2 : TestMod { public override string Name => "Test mod 2"; @@ -59,7 +59,7 @@ namespace osu.Game.Tests.Visual.UserInterface public override IconUsage? Icon => FontAwesome.Solid.Exclamation; } - + private class TestMod3 : TestMod { public override string Name => "Test mod 3"; @@ -81,4 +81,4 @@ namespace osu.Game.Tests.Visual.UserInterface public override double ScoreMultiplier => 1.0; } } -} \ No newline at end of file +} From d57f55f053d2da94b7816ba16d5a603102147e67 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 15 Jan 2020 19:09:49 +0900 Subject: [PATCH 0851/1829] Apply remaining changes required to restore previous functionality --- .../Edit/ManiaBlueprintContainer.cs | 6 + .../Edit/ManiaHitObjectComposer.cs | 2 +- .../Edit/OsuBlueprintContainer.cs | 8 +- .../Edit/OsuHitObjectComposer.cs | 2 +- .../Editor/TestSceneBlueprintContainer.cs | 4 +- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 2 +- .../Compose/Components/BlueprintContainer.cs | 136 ++++------------- .../Components/ComposeBlueprintContainer.cs | 137 ++++++++++++++++++ .../Edit/Compose/Components/DragBox.cs | 8 +- .../Compose/Components/SelectionHandler.cs | 2 +- .../Timeline/TimelineHitObjectDisplay.cs | 30 +++- 11 files changed, 221 insertions(+), 116 deletions(-) diff --git a/osu.Game.Rulesets.Mania/Edit/ManiaBlueprintContainer.cs b/osu.Game.Rulesets.Mania/Edit/ManiaBlueprintContainer.cs index 9cb4e54234..5f66ae7491 100644 --- a/osu.Game.Rulesets.Mania/Edit/ManiaBlueprintContainer.cs +++ b/osu.Game.Rulesets.Mania/Edit/ManiaBlueprintContainer.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.Collections.Generic; using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Mania.Edit.Blueprints; using osu.Game.Rulesets.Mania.Objects.Drawables; @@ -11,6 +12,11 @@ namespace osu.Game.Rulesets.Mania.Edit { public class ManiaBlueprintContainer : ComposeBlueprintContainer { + public ManiaBlueprintContainer(IEnumerable drawableHitObjects) + : base(drawableHitObjects) + { + } + public override SelectionBlueprint CreateBlueprintFor(DrawableHitObject hitObject) { switch (hitObject) diff --git a/osu.Game.Rulesets.Mania/Edit/ManiaHitObjectComposer.cs b/osu.Game.Rulesets.Mania/Edit/ManiaHitObjectComposer.cs index 824c92184a..62b609610f 100644 --- a/osu.Game.Rulesets.Mania/Edit/ManiaHitObjectComposer.cs +++ b/osu.Game.Rulesets.Mania/Edit/ManiaHitObjectComposer.cs @@ -49,7 +49,7 @@ namespace osu.Game.Rulesets.Mania.Edit return drawableRuleset; } - protected override ComposeBlueprintContainer CreateBlueprintContainer() => new ManiaBlueprintContainer(); + protected override ComposeBlueprintContainer CreateBlueprintContainer() => new ManiaBlueprintContainer(drawableRuleset.Playfield.AllHitObjects); protected override IReadOnlyList CompositionTools => new HitObjectCompositionTool[] { diff --git a/osu.Game.Rulesets.Osu/Edit/OsuBlueprintContainer.cs b/osu.Game.Rulesets.Osu/Edit/OsuBlueprintContainer.cs index a6a7d9bcc0..fc856d9810 100644 --- a/osu.Game.Rulesets.Osu/Edit/OsuBlueprintContainer.cs +++ b/osu.Game.Rulesets.Osu/Edit/OsuBlueprintContainer.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.Collections.Generic; using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Objects.Drawables; using osu.Game.Rulesets.Osu.Edit.Blueprints.HitCircles; @@ -13,7 +14,7 @@ namespace osu.Game.Rulesets.Osu.Edit { public class OsuBlueprintContainer : ComposeBlueprintContainer { - public override SelectionHandler CreateSelectionHandler() => new OsuSelectionHandler(); + protected override SelectionHandler CreateSelectionHandler() => new OsuSelectionHandler(); public override SelectionBlueprint CreateBlueprintFor(DrawableHitObject hitObject) { @@ -31,5 +32,10 @@ namespace osu.Game.Rulesets.Osu.Edit return base.CreateBlueprintFor(hitObject); } + + public OsuBlueprintContainer(IEnumerable drawableHitObjects) + : base(drawableHitObjects) + { + } } } diff --git a/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs b/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs index 28f7768aac..b01488e7c2 100644 --- a/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs +++ b/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs @@ -32,7 +32,7 @@ namespace osu.Game.Rulesets.Osu.Edit new SpinnerCompositionTool() }; - protected override ComposeBlueprintContainer CreateBlueprintContainer() => new OsuBlueprintContainer(); + protected override ComposeBlueprintContainer CreateBlueprintContainer() => new OsuBlueprintContainer(HitObjects); protected override DistanceSnapGrid CreateDistanceSnapGrid(IEnumerable selectedHitObjects) { diff --git a/osu.Game.Tests/Editor/TestSceneBlueprintContainer.cs b/osu.Game.Tests/Editor/TestSceneBlueprintContainer.cs index 67b0b61545..a230e5221f 100644 --- a/osu.Game.Tests/Editor/TestSceneBlueprintContainer.cs +++ b/osu.Game.Tests/Editor/TestSceneBlueprintContainer.cs @@ -1,7 +1,9 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. +using System.Collections.Generic; using NUnit.Framework; +using osu.Game.Rulesets.Objects.Drawables; using osu.Game.Screens.Edit.Compose.Components; using osu.Game.Tests.Visual; @@ -12,7 +14,7 @@ namespace osu.Game.Tests.Editor [SetUp] public void Setup() => Schedule(() => { - Child = new ComposeBlueprintContainer(); + Child = new ComposeBlueprintContainer(new List()); }); } } diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index 536c7767b7..52c0701f4f 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -51,7 +51,7 @@ namespace osu.Game.Rulesets.Edit private IBeatmapProcessor beatmapProcessor; private DrawableEditRulesetWrapper drawableRulesetWrapper; - private BlueprintContainer blueprintContainer; + private ComposeBlueprintContainer blueprintContainer; private Container distanceSnapGridContainer; private DistanceSnapGrid distanceSnapGrid; private readonly List layerContainers = new List(); diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index a8fb87c1b0..7944476100 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -14,7 +14,6 @@ using osu.Framework.Input.Bindings; using osu.Framework.Input.Events; using osu.Framework.Timing; using osu.Game.Rulesets.Edit; -using osu.Game.Rulesets.Edit.Tools; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Objects.Drawables; using osuTK; @@ -30,12 +29,11 @@ namespace osu.Game.Screens.Edit.Compose.Components { public event Action> SelectionChanged; - private DragBox dragBox; + protected DragBox DragBox; + private SelectionBlueprintContainer selectionBlueprints; - private Container placementBlueprintContainer; - private PlacementBlueprint currentPlacement; + private SelectionHandler selectionHandler; - private InputManager inputManager; [Resolved] private IAdjustableClock adjustableClock { get; set; } @@ -43,6 +41,9 @@ namespace osu.Game.Screens.Edit.Compose.Components [Resolved] private EditorBeatmap beatmap { get; set; } + [Resolved(canBeNull: true)] + private IDistanceSnapProvider snapProvider { get; set; } + protected BlueprintContainer() { RelativeSizeAxes = Axes.Both; @@ -51,13 +52,15 @@ namespace osu.Game.Screens.Edit.Compose.Components /// /// Creates a which outlines s and handles movement of selections. /// - public virtual SelectionHandler CreateSelectionHandler() => new SelectionHandler(); + protected virtual SelectionHandler CreateSelectionHandler() => new SelectionHandler(); /// /// Creates a for a specific . /// /// The to create the overlay for. - public virtual SelectionBlueprint CreateBlueprintFor(DrawableHitObject hitObject) => null; + protected virtual SelectionBlueprint CreateBlueprintFor(HitObject hitObject) => null; + + protected virtual DragBox CreateDragBox(Action performSelect) => new DragBox(performSelect); [BackgroundDependencyLoader] private void load() @@ -65,46 +68,24 @@ namespace osu.Game.Screens.Edit.Compose.Components selectionHandler = CreateSelectionHandler(); selectionHandler.DeselectAll = deselectAll; - InternalChildren = new[] + AddRangeInternal(new[] { - dragBox = new DragBox(select), + DragBox = CreateDragBox(select), selectionHandler, selectionBlueprints = new SelectionBlueprintContainer { RelativeSizeAxes = Axes.Both }, - placementBlueprintContainer = new Container { RelativeSizeAxes = Axes.Both }, - dragBox.CreateProxy() - }; + DragBox.CreateProxy().With(p => p.Depth = int.MinValue) + }); foreach (var obj in beatmap.HitObjects) - addBlueprintFor(obj); + AddBlueprintFor(obj); } protected override void LoadComplete() { base.LoadComplete(); - beatmap.HitObjectAdded += addBlueprintFor; + beatmap.HitObjectAdded += AddBlueprintFor; beatmap.HitObjectRemoved += removeBlueprintFor; - - inputManager = GetContainingInputManager(); - } - - private HitObjectCompositionTool currentTool; - - /// - /// The current placement tool. - /// - public HitObjectCompositionTool CurrentTool - { - get => currentTool; - set - { - if (currentTool == value) - return; - - currentTool = value; - - refreshTool(); - } } protected override bool OnMouseDown(MouseDownEvent e) @@ -148,17 +129,6 @@ namespace osu.Game.Screens.Edit.Compose.Components return e.Button == MouseButton.Left; } - protected override bool OnMouseMove(MouseMoveEvent e) - { - if (currentPlacement != null) - { - updatePlacementPosition(e.ScreenSpaceMousePosition); - return true; - } - - return base.OnMouseMove(e); - } - protected override bool OnDragStart(DragStartEvent e) { if (e.Button == MouseButton.Right) @@ -166,8 +136,10 @@ namespace osu.Game.Screens.Edit.Compose.Components if (!beginSelectionMovement()) { - dragBox.UpdateDrag(e); - dragBox.FadeIn(250, Easing.OutQuint); + if (!DragBox.UpdateDrag(e)) + return false; + + DragBox.FadeIn(250, Easing.OutQuint); } return true; @@ -179,7 +151,10 @@ namespace osu.Game.Screens.Edit.Compose.Components return false; if (!moveCurrentSelection(e)) - dragBox.UpdateDrag(e); + { + if (!DragBox.UpdateDrag(e)) + return false; + } return true; } @@ -191,7 +166,7 @@ namespace osu.Game.Screens.Edit.Compose.Components if (!finishSelectionMovement()) { - dragBox.FadeOut(250, Easing.OutQuint); + DragBox.FadeOut(250, Easing.OutQuint); selectionHandler.UpdateVisibility(); } @@ -229,30 +204,8 @@ namespace osu.Game.Screens.Edit.Compose.Components public bool OnReleased(PlatformAction action) => false; - protected override void Update() - { - base.Update(); - - if (currentPlacement != null) - { - if (composer.CursorInPlacementArea) - currentPlacement.State = PlacementState.Shown; - else if (currentPlacement?.PlacementBegun == false) - currentPlacement.State = PlacementState.Hidden; - } - } - #region Blueprint Addition/Removal - private void addBlueprintFor(HitObject hitObject) - { - var drawable = composer.HitObjects.FirstOrDefault(d => d.HitObject == hitObject); - if (drawable == null) - return; - - addBlueprintFor(drawable); - } - private void removeBlueprintFor(HitObject hitObject) { var blueprint = selectionBlueprints.Single(m => m.DrawableObject.HitObject == hitObject); @@ -267,10 +220,8 @@ namespace osu.Game.Screens.Edit.Compose.Components selectionBlueprints.Remove(blueprint); } - private void addBlueprintFor(DrawableHitObject hitObject) + protected virtual void AddBlueprintFor(HitObject hitObject) { - refreshTool(); - var blueprint = CreateBlueprintFor(hitObject); if (blueprint == null) return; @@ -283,37 +234,6 @@ namespace osu.Game.Screens.Edit.Compose.Components #endregion - #region Placement - - /// - /// Refreshes the current placement tool. - /// - private void refreshTool() - { - placementBlueprintContainer.Clear(); - currentPlacement = null; - - var blueprint = CurrentTool?.CreatePlacementBlueprint(); - - if (blueprint != null) - { - placementBlueprintContainer.Child = currentPlacement = blueprint; - - // Fixes a 1-frame position discrepancy due to the first mouse move event happening in the next frame - updatePlacementPosition(inputManager.CurrentState.Mouse.Position); - } - } - - private void updatePlacementPosition(Vector2 screenSpacePosition) - { - Vector2 snappedGridPosition = composer.GetSnappedPosition(ToLocalSpace(screenSpacePosition), 0).position; - Vector2 snappedScreenSpacePosition = ToScreenSpace(snappedGridPosition); - - currentPlacement.UpdatePosition(snappedScreenSpacePosition); - } - - #endregion - #region Selection /// @@ -449,7 +369,7 @@ namespace osu.Game.Screens.Edit.Compose.Components // The final movement position, relative to screenSpaceMovementStartPosition Vector2 movePosition = startPosition + e.ScreenSpaceMousePosition - e.ScreenSpaceMouseDownPosition; - (Vector2 snappedPosition, double snappedTime) = composer.GetSnappedPosition(ToLocalSpace(movePosition), draggedObject.StartTime); + (Vector2 snappedPosition, double snappedTime) = snapProvider.GetSnappedPosition(ToLocalSpace(movePosition), draggedObject.StartTime); // Move the hitobjects if (!selectionHandler.HandleMovement(new MoveSelectionEvent(movementBlueprint, startPosition, ToScreenSpace(snappedPosition)))) @@ -486,7 +406,7 @@ namespace osu.Game.Screens.Edit.Compose.Components if (beatmap != null) { - beatmap.HitObjectAdded -= addBlueprintFor; + beatmap.HitObjectAdded -= AddBlueprintFor; beatmap.HitObjectRemoved -= removeBlueprintFor; } } diff --git a/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs index 9267006e4c..1576def38e 100644 --- a/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs @@ -1,6 +1,19 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. +using System.Collections.Generic; +using System.Linq; +using osu.Framework.Allocation; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Input; +using osu.Framework.Input.Events; +using osu.Game.Rulesets.Edit; +using osu.Game.Rulesets.Edit.Tools; +using osu.Game.Rulesets.Objects; +using osu.Game.Rulesets.Objects.Drawables; +using osuTK; + namespace osu.Game.Screens.Edit.Compose.Components { /// @@ -8,5 +21,129 @@ namespace osu.Game.Screens.Edit.Compose.Components /// public class ComposeBlueprintContainer : BlueprintContainer { + [Resolved] + private HitObjectComposer composer { get; set; } + + private PlacementBlueprint currentPlacement; + + private readonly Container placementBlueprintContainer; + + private InputManager inputManager; + + private readonly IEnumerable drawableHitObjects; + + public ComposeBlueprintContainer(IEnumerable drawableHitObjects) + { + this.drawableHitObjects = drawableHitObjects; + + placementBlueprintContainer = new Container + { + RelativeSizeAxes = Axes.Both + }; + } + + [BackgroundDependencyLoader] + private void load() + { + AddInternal(placementBlueprintContainer); + } + + protected override void LoadComplete() + { + base.LoadComplete(); + + inputManager = GetContainingInputManager(); + } + + #region Placement + + /// + /// Refreshes the current placement tool. + /// + private void refreshTool() + { + placementBlueprintContainer.Clear(); + currentPlacement = null; + + var blueprint = CurrentTool?.CreatePlacementBlueprint(); + + if (blueprint != null) + { + placementBlueprintContainer.Child = currentPlacement = blueprint; + + // Fixes a 1-frame position discrepancy due to the first mouse move event happening in the next frame + updatePlacementPosition(inputManager.CurrentState.Mouse.Position); + } + } + + private void updatePlacementPosition(Vector2 screenSpacePosition) + { + Vector2 snappedGridPosition = composer.GetSnappedPosition(ToLocalSpace(screenSpacePosition), 0).position; + Vector2 snappedScreenSpacePosition = ToScreenSpace(snappedGridPosition); + + currentPlacement.UpdatePosition(snappedScreenSpacePosition); + } + + #endregion + + protected override bool OnMouseMove(MouseMoveEvent e) + { + if (currentPlacement != null) + { + updatePlacementPosition(e.ScreenSpaceMousePosition); + return true; + } + + return base.OnMouseMove(e); + } + + protected override void Update() + { + base.Update(); + + if (currentPlacement != null) + { + if (composer.CursorInPlacementArea) + currentPlacement.State = PlacementState.Shown; + else if (currentPlacement?.PlacementBegun == false) + currentPlacement.State = PlacementState.Hidden; + } + } + + protected sealed override SelectionBlueprint CreateBlueprintFor(HitObject hitObject) + { + var drawable = drawableHitObjects.FirstOrDefault(d => d.HitObject == hitObject); + if (drawable == null) + return null; + + return CreateBlueprintFor(drawable); + } + + public virtual SelectionBlueprint CreateBlueprintFor(DrawableHitObject hitObject) => null; + + protected override void AddBlueprintFor(HitObject hitObject) + { + refreshTool(); + base.AddBlueprintFor(hitObject); + } + + private HitObjectCompositionTool currentTool; + + /// + /// The current placement tool. + /// + public HitObjectCompositionTool CurrentTool + { + get => currentTool; + set + { + if (currentTool == value) + return; + + currentTool = value; + + refreshTool(); + } + } } } diff --git a/osu.Game/Screens/Edit/Compose/Components/DragBox.cs b/osu.Game/Screens/Edit/Compose/Components/DragBox.cs index 2a510e74fd..f522ca356f 100644 --- a/osu.Game/Screens/Edit/Compose/Components/DragBox.cs +++ b/osu.Game/Screens/Edit/Compose/Components/DragBox.cs @@ -50,7 +50,12 @@ namespace osu.Game.Screens.Edit.Compose.Components }; } - public void UpdateDrag(MouseButtonEvent e) + /// + /// Handle a forwarded mouse event. + /// + /// The mouse event. + /// Whether the event should be handled and blocking. + public virtual bool UpdateDrag(MouseButtonEvent e) { var dragPosition = e.ScreenSpaceMousePosition; var dragStartPosition = e.ScreenSpaceMouseDownPosition; @@ -67,6 +72,7 @@ namespace osu.Game.Screens.Edit.Compose.Components box.Size = bottomRight - topLeft; performSelection?.Invoke(dragRectangle); + return true; } } } diff --git a/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs b/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs index e2d7855eb5..bff94e66ed 100644 --- a/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs +++ b/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs @@ -37,7 +37,7 @@ namespace osu.Game.Screens.Edit.Compose.Components private Drawable outline; - [Resolved] + [Resolved(CanBeNull = true)] private IPlacementHandler placementHandler { get; set; } public SelectionHandler() diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index 12909f257d..f521d08ada 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -1,11 +1,14 @@ // 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.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Primitives; using osu.Framework.Graphics.Shapes; +using osu.Framework.Input.Events; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Objects.Types; using osu.Game.Screens.Edit.Components.Timelines.Summary.Parts; @@ -26,7 +29,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline this.beatmap = beatmap; - AddInternal(content = new TimelinePart()); + AddInternal(content = new TimelinePart { RelativeSizeAxes = Axes.Both }); } [BackgroundDependencyLoader] @@ -44,6 +47,12 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline }; } + protected override void LoadComplete() + { + base.LoadComplete(); + DragBox.Alpha = 0; + } + private void remove(HitObject h) { foreach (var d in content.OfType().Where(c => c.HitObject == h)) @@ -57,6 +66,25 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline content.Add(new TimelineHitObjectRepresentation(h) { Y = -yOffset * TimelineHitObjectRepresentation.THICKNESS }); } + protected override bool OnMouseDown(MouseDownEvent e) + { + base.OnMouseDown(e); + + return false; // tempoerary until we correctly handle selections. + } + + protected override DragBox CreateDragBox(Action performSelect) => new NoDragDragBox(performSelect); + + internal class NoDragDragBox : DragBox + { + public NoDragDragBox(Action performSelect) + : base(performSelect) + { + } + + public override bool UpdateDrag(MouseButtonEvent e) => false; + } + private class TimelineHitObjectRepresentation : CompositeDrawable { public const float THICKNESS = 3; From 052772cce7423d3b67bbcd7ebb2e0ef6cd8ae842 Mon Sep 17 00:00:00 2001 From: mcendu Date: Wed, 15 Jan 2020 18:15:56 +0800 Subject: [PATCH 0852/1829] add test case --- .../Visual/UserInterface/TestSceneModButton.cs | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs index 856422016d..b1dccdaeea 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs @@ -1,29 +1,11 @@ // 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 System.Linq; using NUnit.Framework; -using osu.Framework.Allocation; -using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; -using osu.Framework.Testing; -using osu.Game.Graphics.Sprites; -using osu.Game.Graphics.UserInterface; using osu.Game.Overlays.Mods; -using osu.Game.Overlays.Mods.Sections; -using osu.Game.Rulesets; -using osu.Game.Rulesets.Mania; -using osu.Game.Rulesets.Mania.Mods; using osu.Game.Rulesets.Mods; -using osu.Game.Rulesets.Osu; -using osu.Game.Rulesets.Osu.Mods; -using osu.Game.Rulesets.UI; -using osu.Game.Screens.Play.HUD; -using osuTK; -using osuTK.Graphics; namespace osu.Game.Tests.Visual.UserInterface { From 4c18a67268d6aae90ed25c35d2f44fb7e5318cbe Mon Sep 17 00:00:00 2001 From: mcendu Date: Wed, 15 Jan 2020 18:24:43 +0800 Subject: [PATCH 0853/1829] add test step --- osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs index b1dccdaeea..7560ad2ce0 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs @@ -1,7 +1,6 @@ // 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.Game.Overlays.Mods; @@ -13,8 +12,7 @@ namespace osu.Game.Tests.Visual.UserInterface { private ModButton modButton; - [SetUp] - public void SetUp() => Schedule(() => + public TestSceneModButton() { Children = new Drawable[] { @@ -24,7 +22,9 @@ namespace osu.Game.Tests.Visual.UserInterface Origin = Anchor.Centre } }; - }); + + AddStep("left click", () => modButton.SelectNext(1)); + } private class TestMod1 : TestMod { From 02af546d3c60a6cb8c534f508a4c678d60f5204f Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 15 Jan 2020 22:22:13 +0300 Subject: [PATCH 0854/1829] Implement web colour schemes --- osu.Game/Graphics/OsuColour.cs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/osu.Game/Graphics/OsuColour.cs b/osu.Game/Graphics/OsuColour.cs index 2dc12b3e67..8775b3e1b8 100644 --- a/osu.Game/Graphics/OsuColour.cs +++ b/osu.Game/Graphics/OsuColour.cs @@ -3,6 +3,7 @@ using System; using osu.Game.Beatmaps; +using osuTK; using osuTK.Graphics; namespace osu.Game.Graphics @@ -63,6 +64,24 @@ namespace osu.Game.Graphics } } + public Color4 ForOverlayElement(OverlayColourScheme colourScheme, float saturation, float lightness, float opacity = 1) => Color4.FromHsl(new Vector4(getBaseHue(colourScheme), saturation, lightness, opacity)); + + private static float getBaseHue(OverlayColourScheme colourScheme) + { + var hue = colourScheme switch + { + OverlayColourScheme.Red => 0, + OverlayColourScheme.Pink => 333, + OverlayColourScheme.Orange => 46, + OverlayColourScheme.Green => 115, + OverlayColourScheme.Purple => 255, + OverlayColourScheme.Blue => 200, + _ => 0, + }; + + return hue / 360f; + } + // See https://github.com/ppy/osu-web/blob/master/resources/assets/less/colors.less public readonly Color4 PurpleLighter = FromHex(@"eeeeff"); public readonly Color4 PurpleLight = FromHex(@"aa88ff"); @@ -165,4 +184,14 @@ namespace osu.Game.Graphics public readonly Color4 ContextMenuGray = FromHex(@"223034"); } + + public enum OverlayColourScheme + { + Red, + Pink, + Orange, + Green, + Purple, + Blue + } } From 476717e181d233e4eb73868acd5e1603e9de6bf9 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 15 Jan 2020 22:41:22 +0300 Subject: [PATCH 0855/1829] Make OverlayHeader use colour schemes --- .../BreadcrumbControlOverlayHeader.cs | 13 ++++++++ .../Overlays/Changelog/ChangelogHeader.cs | 15 +--------- osu.Game/Overlays/News/NewsHeader.cs | 15 +--------- osu.Game/Overlays/OverlayHeader.cs | 30 +++++++++++-------- osu.Game/Overlays/Profile/ProfileHeader.cs | 16 +--------- osu.Game/Overlays/TabControlOverlayHeader.cs | 12 ++++++++ 6 files changed, 45 insertions(+), 56 deletions(-) diff --git a/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs b/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs index 8a82b1f0c0..2e50c19729 100644 --- a/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs +++ b/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs @@ -1,8 +1,10 @@ // 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.Graphics; using osu.Framework.Graphics.UserInterface; +using osu.Game.Graphics; using osu.Game.Graphics.UserInterface; namespace osu.Game.Overlays @@ -13,6 +15,17 @@ namespace osu.Game.Overlays protected override TabControl CreateTabControl() => BreadcrumbControl = new OverlayHeaderBreadcrumbControl(); + protected BreadcrumbControlOverlayHeader(OverlayColourScheme colourScheme) + : base(colourScheme) + { + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + BreadcrumbControl.AccentColour = colours.ForOverlayElement(ColourScheme, 1, 0.75f); + } + public class OverlayHeaderBreadcrumbControl : BreadcrumbControl { public OverlayHeaderBreadcrumbControl() diff --git a/osu.Game/Overlays/Changelog/ChangelogHeader.cs b/osu.Game/Overlays/Changelog/ChangelogHeader.cs index 7e47a3e29f..d5e0890b4d 100644 --- a/osu.Game/Overlays/Changelog/ChangelogHeader.cs +++ b/osu.Game/Overlays/Changelog/ChangelogHeader.cs @@ -26,6 +26,7 @@ namespace osu.Game.Overlays.Changelog private const string listing_string = "listing"; public ChangelogHeader() + : base(OverlayColourScheme.Purple) { BreadcrumbControl.AddItem(listing_string); BreadcrumbControl.Current.ValueChanged += e => @@ -43,14 +44,6 @@ namespace osu.Game.Overlays.Changelog }; } - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - BreadcrumbControl.AccentColour = colours.Violet; - TitleBackgroundColour = colours.GreyVioletDarker; - ControlBackgroundColour = colours.GreyVioletDark; - } - private ChangelogHeaderTitle title; private void showBuild(ValueChangedEvent e) @@ -117,12 +110,6 @@ namespace osu.Game.Overlays.Changelog Version = null; } - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - AccentColour = colours.Violet; - } - protected override Drawable CreateIcon() => new ScreenTitleTextureIcon(@"Icons/changelog"); } } diff --git a/osu.Game/Overlays/News/NewsHeader.cs b/osu.Game/Overlays/News/NewsHeader.cs index fc88c86df2..03dc64b3bd 100644 --- a/osu.Game/Overlays/News/NewsHeader.cs +++ b/osu.Game/Overlays/News/NewsHeader.cs @@ -23,6 +23,7 @@ namespace osu.Game.Overlays.News public Action ShowFrontPage; public NewsHeader() + : base(OverlayColourScheme.Purple) { BreadcrumbControl.AddItem(front_page_string); @@ -35,14 +36,6 @@ namespace osu.Game.Overlays.News Current.ValueChanged += showPost; } - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - BreadcrumbControl.AccentColour = colours.Violet; - TitleBackgroundColour = colours.GreyVioletDarker; - ControlBackgroundColour = colours.GreyVioletDark; - } - private void showPost(ValueChangedEvent e) { if (e.OldValue != null) @@ -97,12 +90,6 @@ namespace osu.Game.Overlays.News } protected override Drawable CreateIcon() => new ScreenTitleTextureIcon(@"Icons/news"); - - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - AccentColour = colours.Violet; - } } } } diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index 53da2da634..1c787ec0e7 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -2,10 +2,12 @@ // See the LICENCE file in the repository root for full licence text. using JetBrains.Annotations; +using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.UserInterface; +using osu.Game.Graphics; using osu.Game.Graphics.UserInterface; using osuTK.Graphics; @@ -16,24 +18,19 @@ namespace osu.Game.Overlays private readonly Box titleBackground; private readonly Box controlBackground; private readonly Container background; - - protected Color4 TitleBackgroundColour - { - set => titleBackground.Colour = value; - } - - protected Color4 ControlBackgroundColour - { - set => controlBackground.Colour = value; - } + private readonly ScreenTitle title; protected float BackgroundHeight { set => background.Height = value; } - protected OverlayHeader() + protected OverlayColourScheme ColourScheme { get; private set; } + + protected OverlayHeader(OverlayColourScheme colourScheme) { + ColourScheme = colourScheme; + RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; @@ -60,9 +57,8 @@ namespace osu.Game.Overlays titleBackground = new Box { RelativeSizeAxes = Axes.Both, - Colour = Color4.Gray, }, - CreateTitle().With(title => + title = CreateTitle().With(title => { title.Margin = new MarginPadding { @@ -92,6 +88,14 @@ namespace osu.Game.Overlays }); } + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + titleBackground.Colour = colours.ForOverlayElement(ColourScheme, 0.2f, 0.15f); + title.AccentColour = colours.ForOverlayElement(ColourScheme, 1, 0.7f); + controlBackground.Colour = colours.ForOverlayElement(ColourScheme, 0.2f, 0.2f); + } + protected abstract Drawable CreateBackground(); [NotNull] diff --git a/osu.Game/Overlays/Profile/ProfileHeader.cs b/osu.Game/Overlays/Profile/ProfileHeader.cs index 59e64dfc26..b550d7d823 100644 --- a/osu.Game/Overlays/Profile/ProfileHeader.cs +++ b/osu.Game/Overlays/Profile/ProfileHeader.cs @@ -1,7 +1,6 @@ // 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.Extensions.Color4Extensions; using osu.Framework.Graphics; @@ -25,6 +24,7 @@ namespace osu.Game.Overlays.Profile private DetailHeaderContainer detailHeaderContainer; public ProfileHeader() + : base(OverlayColourScheme.Green) { BackgroundHeight = 150; @@ -36,14 +36,6 @@ namespace osu.Game.Overlays.Profile centreHeaderContainer.DetailsVisible.BindValueChanged(visible => detailHeaderContainer.Expanded = visible.NewValue, true); } - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - TabControl.AccentColour = colours.Seafoam; - TitleBackgroundColour = colours.GreySeafoamDarker; - ControlBackgroundColour = colours.GreySeafoam; - } - protected override Drawable CreateBackground() => new Container { @@ -109,12 +101,6 @@ namespace osu.Game.Overlays.Profile Section = "info"; } - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - AccentColour = colours.Seafoam; - } - protected override Drawable CreateIcon() => new ScreenTitleTextureIcon(@"Icons/profile"); } } diff --git a/osu.Game/Overlays/TabControlOverlayHeader.cs b/osu.Game/Overlays/TabControlOverlayHeader.cs index f3521b66c8..8f3aa896ee 100644 --- a/osu.Game/Overlays/TabControlOverlayHeader.cs +++ b/osu.Game/Overlays/TabControlOverlayHeader.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 osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.UserInterface; @@ -15,6 +16,17 @@ namespace osu.Game.Overlays protected override TabControl CreateTabControl() => TabControl = new OverlayHeaderTabControl(); + protected TabControlOverlayHeader(OverlayColourScheme colourScheme) + : base(colourScheme) + { + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + TabControl.AccentColour = colours.ForOverlayElement(ColourScheme, 1, 0.75f); + } + public class OverlayHeaderTabControl : OverlayTabControl { public OverlayHeaderTabControl() From 5d4b9d11cffdb4de8cc60c3b4683ccc6cd212917 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 15 Jan 2020 23:35:40 +0300 Subject: [PATCH 0856/1829] Throw an excepion for incorerect colourScheme values --- osu.Game/Graphics/OsuColour.cs | 39 ++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/osu.Game/Graphics/OsuColour.cs b/osu.Game/Graphics/OsuColour.cs index 8775b3e1b8..15c213b034 100644 --- a/osu.Game/Graphics/OsuColour.cs +++ b/osu.Game/Graphics/OsuColour.cs @@ -68,16 +68,37 @@ namespace osu.Game.Graphics private static float getBaseHue(OverlayColourScheme colourScheme) { - var hue = colourScheme switch + float hue; + + switch (colourScheme) { - OverlayColourScheme.Red => 0, - OverlayColourScheme.Pink => 333, - OverlayColourScheme.Orange => 46, - OverlayColourScheme.Green => 115, - OverlayColourScheme.Purple => 255, - OverlayColourScheme.Blue => 200, - _ => 0, - }; + default: + throw new ArgumentException(@"Used colourScheme has no hue value!"); + + case OverlayColourScheme.Red: + hue = 0; + break; + + case OverlayColourScheme.Pink: + hue = 333; + break; + + case OverlayColourScheme.Orange: + hue = 46; + break; + + case OverlayColourScheme.Green: + hue = 115; + break; + + case OverlayColourScheme.Purple: + hue = 255; + break; + + case OverlayColourScheme.Blue: + hue = 200; + break; + } return hue / 360f; } From 5f178b77554d1fbd158b66bdd441f588c590c152 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 16 Jan 2020 11:54:03 +0900 Subject: [PATCH 0857/1829] General refactorings --- .../Edit/OsuBlueprintContainer.cs | 10 +++---- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 4 +-- .../Compose/Components/BlueprintContainer.cs | 30 +++++++++---------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/OsuBlueprintContainer.cs b/osu.Game.Rulesets.Osu/Edit/OsuBlueprintContainer.cs index fc856d9810..30682616e6 100644 --- a/osu.Game.Rulesets.Osu/Edit/OsuBlueprintContainer.cs +++ b/osu.Game.Rulesets.Osu/Edit/OsuBlueprintContainer.cs @@ -14,6 +14,11 @@ namespace osu.Game.Rulesets.Osu.Edit { public class OsuBlueprintContainer : ComposeBlueprintContainer { + public OsuBlueprintContainer(IEnumerable drawableHitObjects) + : base(drawableHitObjects) + { + } + protected override SelectionHandler CreateSelectionHandler() => new OsuSelectionHandler(); public override SelectionBlueprint CreateBlueprintFor(DrawableHitObject hitObject) @@ -32,10 +37,5 @@ namespace osu.Game.Rulesets.Osu.Edit return base.CreateBlueprintFor(hitObject); } - - public OsuBlueprintContainer(IEnumerable drawableHitObjects) - : base(drawableHitObjects) - { - } } } diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index 52c0701f4f..5eba31d149 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -147,8 +147,6 @@ namespace osu.Game.Rulesets.Edit blueprintContainer.SelectionChanged += selectionChanged; } - protected abstract ComposeBlueprintContainer CreateBlueprintContainer(); - protected override void LoadComplete() { base.LoadComplete(); @@ -235,6 +233,8 @@ namespace osu.Game.Rulesets.Edit protected abstract IReadOnlyList CompositionTools { get; } + protected abstract ComposeBlueprintContainer CreateBlueprintContainer(); + protected abstract DrawableRuleset CreateDrawableRuleset(Ruleset ruleset, IBeatmap beatmap, IReadOnlyList mods = null); public void BeginPlacement(HitObject hitObject) diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index 7944476100..c356f1d4e0 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -29,7 +29,7 @@ namespace osu.Game.Screens.Edit.Compose.Components { public event Action> SelectionChanged; - protected DragBox DragBox; + protected DragBox DragBox { get; private set; } private SelectionBlueprintContainer selectionBlueprints; @@ -49,19 +49,6 @@ namespace osu.Game.Screens.Edit.Compose.Components RelativeSizeAxes = Axes.Both; } - /// - /// Creates a which outlines s and handles movement of selections. - /// - protected virtual SelectionHandler CreateSelectionHandler() => new SelectionHandler(); - - /// - /// Creates a for a specific . - /// - /// The to create the overlay for. - protected virtual SelectionBlueprint CreateBlueprintFor(HitObject hitObject) => null; - - protected virtual DragBox CreateDragBox(Action performSelect) => new DragBox(performSelect); - [BackgroundDependencyLoader] private void load() { @@ -73,7 +60,7 @@ namespace osu.Game.Screens.Edit.Compose.Components DragBox = CreateDragBox(select), selectionHandler, selectionBlueprints = new SelectionBlueprintContainer { RelativeSizeAxes = Axes.Both }, - DragBox.CreateProxy().With(p => p.Depth = int.MinValue) + DragBox.CreateProxy().With(p => p.Depth = float.MinValue) }); foreach (var obj in beatmap.HitObjects) @@ -88,6 +75,19 @@ namespace osu.Game.Screens.Edit.Compose.Components beatmap.HitObjectRemoved += removeBlueprintFor; } + /// + /// Creates a which outlines s and handles movement of selections. + /// + protected virtual SelectionHandler CreateSelectionHandler() => new SelectionHandler(); + + /// + /// Creates a for a specific . + /// + /// The to create the overlay for. + protected virtual SelectionBlueprint CreateBlueprintFor(HitObject hitObject) => null; + + protected virtual DragBox CreateDragBox(Action performSelect) => new DragBox(performSelect); + protected override bool OnMouseDown(MouseDownEvent e) { beginClickSelection(e); From 9535b3eeba97df727471c4f947323cf20f172563 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 16 Jan 2020 12:00:36 +0900 Subject: [PATCH 0858/1829] Fix possible nullref on blueprint removal --- osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index c356f1d4e0..81b0fb247f 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -208,7 +208,7 @@ namespace osu.Game.Screens.Edit.Compose.Components private void removeBlueprintFor(HitObject hitObject) { - var blueprint = selectionBlueprints.Single(m => m.DrawableObject.HitObject == hitObject); + var blueprint = selectionBlueprints.SingleOrDefault(m => m.DrawableObject.HitObject == hitObject); if (blueprint == null) return; From 0d8b4e7c3e7a51a9223928b2e13eca67f8d8e6f2 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 16 Jan 2020 12:51:43 +0900 Subject: [PATCH 0859/1829] Fix user agent missing in registration --- osu.Game/Online/API/APIRequest.cs | 10 ---------- osu.Game/Online/API/OsuWebRequest.cs | 21 +++++++++++++++++++++ osu.Game/Online/API/RegistrationRequest.cs | 3 +-- 3 files changed, 22 insertions(+), 12 deletions(-) create mode 100644 osu.Game/Online/API/OsuWebRequest.cs diff --git a/osu.Game/Online/API/APIRequest.cs b/osu.Game/Online/API/APIRequest.cs index 0956c749a2..6c9356a9b7 100644 --- a/osu.Game/Online/API/APIRequest.cs +++ b/osu.Game/Online/API/APIRequest.cs @@ -162,16 +162,6 @@ namespace osu.Game.Online.API [JsonProperty("error")] public string ErrorMessage { get; set; } } - - private class OsuWebRequest : WebRequest - { - public OsuWebRequest(string uri) - : base(uri) - { - } - - protected override string UserAgent => "osu!"; - } } public class APIException : InvalidOperationException diff --git a/osu.Game/Online/API/OsuWebRequest.cs b/osu.Game/Online/API/OsuWebRequest.cs new file mode 100644 index 0000000000..1d27899473 --- /dev/null +++ b/osu.Game/Online/API/OsuWebRequest.cs @@ -0,0 +1,21 @@ +// 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.IO.Network; + +namespace osu.Game.Online.API +{ + public class OsuWebRequest : WebRequest + { + public OsuWebRequest(string uri) + : base(uri) + { + } + + public OsuWebRequest() + { + } + + protected override string UserAgent => "osu!"; + } +} diff --git a/osu.Game/Online/API/RegistrationRequest.cs b/osu.Game/Online/API/RegistrationRequest.cs index 349cd4de0c..f650e5c93b 100644 --- a/osu.Game/Online/API/RegistrationRequest.cs +++ b/osu.Game/Online/API/RegistrationRequest.cs @@ -2,11 +2,10 @@ // See the LICENCE file in the repository root for full licence text. using Newtonsoft.Json; -using osu.Framework.IO.Network; namespace osu.Game.Online.API { - public class RegistrationRequest : WebRequest + public class RegistrationRequest : OsuWebRequest { internal string Username; internal string Email; From d01cc3796899c54f85343e40e0f6fbda70ee20f4 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 16 Jan 2020 18:34:56 +0900 Subject: [PATCH 0860/1829] Fix channel tab control test scene --- .../Online/TestSceneChannelTabControl.cs | 42 ++++++++++++------- .../Overlays/Chat/Tabs/ChannelTabControl.cs | 5 ++- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneChannelTabControl.cs b/osu.Game.Tests/Visual/Online/TestSceneChannelTabControl.cs index c98b65ded7..1fb3f4ba45 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneChannelTabControl.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneChannelTabControl.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Linq; using osu.Framework.Extensions.Color4Extensions; +using osu.Framework.Extensions.IEnumerableExtensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; @@ -25,7 +26,7 @@ namespace osu.Game.Tests.Visual.Online typeof(ChannelTabControl), }; - private readonly ChannelTabControl channelTabControl; + private readonly TestTabControl channelTabControl; public TestSceneChannelTabControl() { @@ -37,7 +38,7 @@ namespace osu.Game.Tests.Visual.Online Anchor = Anchor.Centre, Children = new Drawable[] { - channelTabControl = new ChannelTabControl + channelTabControl = new TestTabControl { RelativeSizeAxes = Axes.X, Origin = Anchor.Centre, @@ -73,32 +74,40 @@ namespace osu.Game.Tests.Visual.Online channelTabControl.Current.ValueChanged += channel => currentText.Text = "Currently selected channel: " + channel.NewValue; AddStep("Add random private channel", addRandomPrivateChannel); - AddAssert("There is only one channels", () => channelTabControl.Items.Count() == 2); + AddAssert("There is only one channels", () => channelTabControl.Items.Count == 2); AddRepeatStep("Add 3 random private channels", addRandomPrivateChannel, 3); - AddAssert("There are four channels", () => channelTabControl.Items.Count() == 5); + AddAssert("There are four channels", () => channelTabControl.Items.Count == 5); AddStep("Add random public channel", () => addChannel(RNG.Next().ToString())); - AddRepeatStep("Select a random channel", () => channelTabControl.Current.Value = channelTabControl.Items.ElementAt(RNG.Next(channelTabControl.Items.Count() - 1)), 20); + AddRepeatStep("Select a random channel", () => + { + List validChannels = channelTabControl.Items.Where(c => !(c is ChannelSelectorTabItem.ChannelSelectorTabChannel)).ToList(); + channelTabControl.SelectChannel(validChannels[RNG.Next(0, validChannels.Count)]); + }, 20); - Channel channelBefore = channelTabControl.Items.First(); - AddStep("set first channel", () => channelTabControl.Current.Value = channelBefore); + Channel channelBefore = null; + AddStep("set first channel", () => channelTabControl.SelectChannel(channelBefore = channelTabControl.Items.First(c => !(c is ChannelSelectorTabItem.ChannelSelectorTabChannel)))); - AddStep("select selector tab", () => channelTabControl.Current.Value = channelTabControl.Items.Last()); + AddStep("select selector tab", () => channelTabControl.SelectChannel(channelTabControl.Items.Single(c => c is ChannelSelectorTabItem.ChannelSelectorTabChannel))); AddAssert("selector tab is active", () => channelTabControl.ChannelSelectorActive.Value); AddAssert("check channel unchanged", () => channelBefore == channelTabControl.Current.Value); - AddStep("set second channel", () => channelTabControl.Current.Value = channelTabControl.Items.Skip(1).First()); + AddStep("set second channel", () => channelTabControl.SelectChannel(channelTabControl.Items.GetNext(channelBefore))); AddAssert("selector tab is inactive", () => !channelTabControl.ChannelSelectorActive.Value); AddUntilStep("remove all channels", () => { - var first = channelTabControl.Items.First(); - if (first is ChannelSelectorTabItem.ChannelSelectorTabChannel) - return true; + foreach (var item in channelTabControl.Items.ToList()) + { + if (item is ChannelSelectorTabItem.ChannelSelectorTabChannel) + continue; - channelTabControl.RemoveChannel(first); - return false; + channelTabControl.RemoveChannel(item); + return false; + } + + return true; }); AddAssert("selector tab is active", () => channelTabControl.ChannelSelectorActive.Value); @@ -117,5 +126,10 @@ namespace osu.Game.Tests.Visual.Online Type = ChannelType.Public, Name = name }); + + private class TestTabControl : ChannelTabControl + { + public void SelectChannel(Channel channel) => base.SelectTab(TabMap[channel]); + } } } diff --git a/osu.Game/Overlays/Chat/Tabs/ChannelTabControl.cs b/osu.Game/Overlays/Chat/Tabs/ChannelTabControl.cs index 4b1d595b44..2e4d8ce729 100644 --- a/osu.Game/Overlays/Chat/Tabs/ChannelTabControl.cs +++ b/osu.Game/Overlays/Chat/Tabs/ChannelTabControl.cs @@ -81,7 +81,10 @@ namespace osu.Game.Overlays.Chat.Tabs RemoveItem(channel); if (Current.Value == channel) - Current.Value = Items.FirstOrDefault(); + { + // Prefer non-selector channels first + Current.Value = Items.FirstOrDefault(c => !(c is ChannelSelectorTabItem.ChannelSelectorTabChannel)) ?? Items.FirstOrDefault(); + } } protected override void SelectTab(TabItem tab) From e096688ac80056e87ea3cbfcc73084627e5ac9f4 Mon Sep 17 00:00:00 2001 From: mcendu Date: Thu, 16 Jan 2020 17:58:47 +0800 Subject: [PATCH 0861/1829] simplify some stuff --- osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs | 6 +----- osu.Game/Rulesets/UI/ModIcon.cs | 5 ++--- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs index 7560ad2ce0..443cf59003 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModButton.cs @@ -10,20 +10,16 @@ namespace osu.Game.Tests.Visual.UserInterface { public class TestSceneModButton : OsuTestScene { - private ModButton modButton; - public TestSceneModButton() { Children = new Drawable[] { - modButton = new ModButton(new MultiMod(new TestMod1(), new TestMod2(), new TestMod3(), new TestMod4())) + new ModButton(new MultiMod(new TestMod1(), new TestMod2(), new TestMod3(), new TestMod4())) { Anchor = Anchor.Centre, Origin = Anchor.Centre } }; - - AddStep("left click", () => modButton.SelectNext(1)); } private class TestMod1 : TestMod diff --git a/osu.Game/Rulesets/UI/ModIcon.cs b/osu.Game/Rulesets/UI/ModIcon.cs index 7e22fd2946..3edab0745d 100644 --- a/osu.Game/Rulesets/UI/ModIcon.cs +++ b/osu.Game/Rulesets/UI/ModIcon.cs @@ -68,8 +68,7 @@ namespace osu.Game.Rulesets.UI Anchor = Anchor.Centre, Colour = OsuColour.Gray(84), Alpha = 0, - - Font = OsuFont.Numeric.With(null, size - 57.5f), + Font = OsuFont.Numeric.With(null, 22f), UseFullGlyphHeight = false, Text = mod.Acronym }, @@ -78,7 +77,7 @@ namespace osu.Game.Rulesets.UI Origin = Anchor.Centre, Anchor = Anchor.Centre, Colour = OsuColour.Gray(84), - Size = new Vector2(size - 35), + Size = new Vector2(45), Icon = FontAwesome.Solid.Question }, }; From 2bc7458abf98113f38d43212201193caa01cb54f Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 17 Jan 2020 13:27:47 +0900 Subject: [PATCH 0862/1829] Add mod setting (de)serialization support --- .../Online/TestAPIModSerialization.cs | 82 +++++++++++++++++++ .../Configuration/SettingSourceAttribute.cs | 26 ++++-- osu.Game/Online/API/APIMod.cs | 56 +++++++++++++ .../Online/API/Requests/Responses/APIMod.cs | 14 ---- osu.Game/Online/Multiplayer/PlaylistItem.cs | 11 ++- 5 files changed, 162 insertions(+), 27 deletions(-) create mode 100644 osu.Game.Tests/Online/TestAPIModSerialization.cs create mode 100644 osu.Game/Online/API/APIMod.cs delete mode 100644 osu.Game/Online/API/Requests/Responses/APIMod.cs diff --git a/osu.Game.Tests/Online/TestAPIModSerialization.cs b/osu.Game.Tests/Online/TestAPIModSerialization.cs new file mode 100644 index 0000000000..845f57136a --- /dev/null +++ b/osu.Game.Tests/Online/TestAPIModSerialization.cs @@ -0,0 +1,82 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System.Collections.Generic; +using Newtonsoft.Json; +using NUnit.Framework; +using osu.Framework.Bindables; +using osu.Game.Beatmaps; +using osu.Game.Configuration; +using osu.Game.Online.API; +using osu.Game.Rulesets; +using osu.Game.Rulesets.Difficulty; +using osu.Game.Rulesets.Mods; +using osu.Game.Rulesets.UI; + +namespace osu.Game.Tests.Online +{ + [TestFixture] + public class TestAPIModSerialization + { + [Test] + public void TestAcronymIsPreserved() + { + var apiMod = new APIMod(new TestMod()); + + var deserialized = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(apiMod)); + + Assert.That(deserialized.Acronym, Is.EqualTo(apiMod.Acronym)); + } + + [Test] + public void TestRawSettingIsPreserved() + { + var apiMod = new APIMod(new TestMod { TestSetting = { Value = 2 } }); + + var deserialized = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(apiMod)); + + Assert.That(deserialized.Settings, Contains.Key("test_setting").With.ContainValue(2.0)); + } + + [Test] + public void TestConvertedModHasCorrectSetting() + { + var apiMod = new APIMod(new TestMod { TestSetting = { Value = 2 } }); + + var deserialized = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(apiMod)); + var converted = (TestMod)deserialized.ToMod(new TestRuleset()); + + Assert.That(converted.TestSetting.Value, Is.EqualTo(2)); + } + + private class TestRuleset : Ruleset + { + public override IEnumerable GetModsFor(ModType type) => new[] { new TestMod() }; + + public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => throw new System.NotImplementedException(); + + public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => throw new System.NotImplementedException(); + + public override DifficultyCalculator CreateDifficultyCalculator(WorkingBeatmap beatmap) => throw new System.NotImplementedException(); + + public override string Description { get; } + public override string ShortName { get; } + } + + private class TestMod : Mod + { + public override string Name => "Test Mod"; + public override string Acronym => "TM"; + public override double ScoreMultiplier => 1; + + [SettingSource("Test")] + public BindableNumber TestSetting { get; } = new BindableDouble + { + MinValue = 0, + MaxValue = 10, + Default = 5, + Precision = 0.01, + }; + } + } +} diff --git a/osu.Game/Configuration/SettingSourceAttribute.cs b/osu.Game/Configuration/SettingSourceAttribute.cs index 056fa8bcc0..f859dccc80 100644 --- a/osu.Game/Configuration/SettingSourceAttribute.cs +++ b/osu.Game/Configuration/SettingSourceAttribute.cs @@ -35,16 +35,11 @@ namespace osu.Game.Configuration { public static IEnumerable CreateSettingsControls(this object obj) { - foreach (var property in obj.GetType().GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance)) + foreach (var (attr, property) in obj.GetSettingsSourceProperties()) { - var attr = property.GetCustomAttribute(true); + object value = property.GetValue(obj); - if (attr == null) - continue; - - var prop = property.GetValue(obj); - - switch (prop) + switch (value) { case BindableNumber bNumber: yield return new SettingsSlider @@ -102,9 +97,22 @@ namespace osu.Game.Configuration break; default: - throw new InvalidOperationException($"{nameof(SettingSourceAttribute)} was attached to an unsupported type ({prop})"); + throw new InvalidOperationException($"{nameof(SettingSourceAttribute)} was attached to an unsupported type ({value})"); } } } + + public static IEnumerable<(SettingSourceAttribute, PropertyInfo)> GetSettingsSourceProperties(this object obj) + { + foreach (var property in obj.GetType().GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance)) + { + var attr = property.GetCustomAttribute(true); + + if (attr == null) + continue; + + yield return (attr, property); + } + } } } diff --git a/osu.Game/Online/API/APIMod.cs b/osu.Game/Online/API/APIMod.cs new file mode 100644 index 0000000000..30336d16a3 --- /dev/null +++ b/osu.Game/Online/API/APIMod.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 System.Collections.Generic; +using System.Linq; +using Humanizer; +using Newtonsoft.Json; +using osu.Framework.Bindables; +using osu.Game.Configuration; +using osu.Game.Rulesets; +using osu.Game.Rulesets.Mods; + +namespace osu.Game.Online.API +{ + public class APIMod : IMod + { + [JsonProperty("acronym")] + public string Acronym { get; set; } + + [JsonProperty("settings")] + public Dictionary Settings { get; set; } = new Dictionary(); + + [JsonConstructor] + private APIMod() + { + } + + public APIMod(Mod mod) + { + Acronym = mod.Acronym; + + foreach (var (_, property) in mod.GetSettingsSourceProperties()) + Settings.Add(property.Name.Underscore(), property.GetValue(mod)); + } + + public Mod ToMod(Ruleset ruleset) + { + Mod resultMod = ruleset.GetAllMods().FirstOrDefault(m => m.Acronym == Acronym); + + if (resultMod == null) + return null; // Todo: Maybe throw exception? + + foreach (var (_, property) in resultMod.GetSettingsSourceProperties()) + { + if (!Settings.TryGetValue(property.Name.Underscore(), out object settingValue)) + continue; + + ((IBindable)property.GetValue(resultMod)).Parse(settingValue); + } + + return resultMod; + } + + public bool Equals(IMod other) => Acronym == other?.Acronym; + } +} diff --git a/osu.Game/Online/API/Requests/Responses/APIMod.cs b/osu.Game/Online/API/Requests/Responses/APIMod.cs deleted file mode 100644 index b9da4f49ee..0000000000 --- a/osu.Game/Online/API/Requests/Responses/APIMod.cs +++ /dev/null @@ -1,14 +0,0 @@ -// 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.Rulesets.Mods; - -namespace osu.Game.Online.API.Requests.Responses -{ - public class APIMod : IMod - { - public string Acronym { get; set; } - - public bool Equals(IMod other) => Acronym == other?.Acronym; - } -} diff --git a/osu.Game/Online/Multiplayer/PlaylistItem.cs b/osu.Game/Online/Multiplayer/PlaylistItem.cs index d13e8b31e6..5f8edc607b 100644 --- a/osu.Game/Online/Multiplayer/PlaylistItem.cs +++ b/osu.Game/Online/Multiplayer/PlaylistItem.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Linq; using Newtonsoft.Json; using osu.Game.Beatmaps; +using osu.Game.Online.API; using osu.Game.Online.API.Requests.Responses; using osu.Game.Rulesets; using osu.Game.Rulesets.Mods; @@ -50,7 +51,7 @@ namespace osu.Game.Online.Multiplayer [JsonProperty("allowed_mods")] private APIMod[] allowedMods { - get => AllowedMods.Select(m => new APIMod { Acronym = m.Acronym }).ToArray(); + get => AllowedMods.Select(m => new APIMod(m)).ToArray(); set => allowedModsBacking = value; } @@ -59,7 +60,7 @@ namespace osu.Game.Online.Multiplayer [JsonProperty("required_mods")] private APIMod[] requiredMods { - get => RequiredMods.Select(m => new APIMod { Acronym = m.Acronym }).ToArray(); + get => RequiredMods.Select(m => new APIMod(m)).ToArray(); set => requiredModsBacking = value; } @@ -72,10 +73,12 @@ namespace osu.Game.Online.Multiplayer Beatmap = apiBeatmap == null ? beatmaps.QueryBeatmap(b => b.OnlineBeatmapID == BeatmapID) : apiBeatmap.ToBeatmap(rulesets); Ruleset = rulesets.GetRuleset(RulesetID); + Ruleset rulesetInstance = Ruleset.CreateInstance(); + if (allowedModsBacking != null) { AllowedMods.Clear(); - AllowedMods.AddRange(Ruleset.CreateInstance().GetAllMods().Where(mod => allowedModsBacking.Any(m => m.Acronym == mod.Acronym))); + AllowedMods.AddRange(allowedModsBacking.Select(m => m.ToMod(rulesetInstance))); allowedModsBacking = null; } @@ -83,7 +86,7 @@ namespace osu.Game.Online.Multiplayer if (requiredModsBacking != null) { RequiredMods.Clear(); - RequiredMods.AddRange(Ruleset.CreateInstance().GetAllMods().Where(mod => requiredModsBacking.Any(m => m.Acronym == mod.Acronym))); + RequiredMods.AddRange(requiredModsBacking.Select(m => m.ToMod(rulesetInstance))); requiredModsBacking = null; } From 4fa2c5c8c1fdcb9b51b629832bedd25f992a5284 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 17 Jan 2020 18:52:13 +0900 Subject: [PATCH 0863/1829] Resolve unassigned properties --- osu.Game.Tests/Online/TestAPIModSerialization.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tests/Online/TestAPIModSerialization.cs b/osu.Game.Tests/Online/TestAPIModSerialization.cs index 845f57136a..d9318aa822 100644 --- a/osu.Game.Tests/Online/TestAPIModSerialization.cs +++ b/osu.Game.Tests/Online/TestAPIModSerialization.cs @@ -59,8 +59,8 @@ namespace osu.Game.Tests.Online public override DifficultyCalculator CreateDifficultyCalculator(WorkingBeatmap beatmap) => throw new System.NotImplementedException(); - public override string Description { get; } - public override string ShortName { get; } + public override string Description { get; } = string.Empty; + public override string ShortName { get; } = string.Empty; } private class TestMod : Mod From 2187523bf3950af6dec5bc113c75a92920130830 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 17 Jan 2020 19:21:27 +0900 Subject: [PATCH 0864/1829] Fix json web requests having incorrect user agents --- osu.Game/Online/API/APIRequest.cs | 12 +----------- osu.Game/Online/API/OAuth.cs | 3 +-- osu.Game/Online/API/OsuJsonWebRequest.cs | 21 +++++++++++++++++++++ osu.Game/Updater/SimpleUpdateManager.cs | 4 ++-- 4 files changed, 25 insertions(+), 15 deletions(-) create mode 100644 osu.Game/Online/API/OsuJsonWebRequest.cs diff --git a/osu.Game/Online/API/APIRequest.cs b/osu.Game/Online/API/APIRequest.cs index 6c9356a9b7..30c1018c1e 100644 --- a/osu.Game/Online/API/APIRequest.cs +++ b/osu.Game/Online/API/APIRequest.cs @@ -16,7 +16,7 @@ namespace osu.Game.Online.API { protected override WebRequest CreateWebRequest() => new OsuJsonWebRequest(Uri); - public T Result => ((JsonWebRequest)WebRequest).ResponseObject; + public T Result => ((OsuJsonWebRequest)WebRequest).ResponseObject; protected APIRequest() { @@ -30,16 +30,6 @@ namespace osu.Game.Online.API /// This will be scheduled to the API's internal scheduler (run on update thread automatically). /// public new event APISuccessHandler Success; - - private class OsuJsonWebRequest : JsonWebRequest - { - public OsuJsonWebRequest(string uri) - : base(uri) - { - } - - protected override string UserAgent => "osu!"; - } } /// diff --git a/osu.Game/Online/API/OAuth.cs b/osu.Game/Online/API/OAuth.cs index baf494ebf9..bdc47aab8d 100644 --- a/osu.Game/Online/API/OAuth.cs +++ b/osu.Game/Online/API/OAuth.cs @@ -4,7 +4,6 @@ using System.Diagnostics; using System.Net.Http; using osu.Framework.Bindables; -using osu.Framework.IO.Network; namespace osu.Game.Online.API { @@ -166,7 +165,7 @@ namespace osu.Game.Online.API } } - private class AccessTokenRequest : JsonWebRequest + private class AccessTokenRequest : OsuJsonWebRequest { protected string GrantType; diff --git a/osu.Game/Online/API/OsuJsonWebRequest.cs b/osu.Game/Online/API/OsuJsonWebRequest.cs new file mode 100644 index 0000000000..4a45a8b261 --- /dev/null +++ b/osu.Game/Online/API/OsuJsonWebRequest.cs @@ -0,0 +1,21 @@ +// 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.IO.Network; + +namespace osu.Game.Online.API +{ + public class OsuJsonWebRequest : JsonWebRequest + { + public OsuJsonWebRequest(string uri) + : base(uri) + { + } + + public OsuJsonWebRequest() + { + } + + protected override string UserAgent => "osu!"; + } +} diff --git a/osu.Game/Updater/SimpleUpdateManager.cs b/osu.Game/Updater/SimpleUpdateManager.cs index f76cba7f41..5412b11b33 100644 --- a/osu.Game/Updater/SimpleUpdateManager.cs +++ b/osu.Game/Updater/SimpleUpdateManager.cs @@ -7,8 +7,8 @@ using Newtonsoft.Json; using osu.Framework; using osu.Framework.Allocation; using osu.Framework.Graphics.Sprites; -using osu.Framework.IO.Network; using osu.Framework.Platform; +using osu.Game.Online.API; using osu.Game.Overlays.Notifications; namespace osu.Game.Updater @@ -36,7 +36,7 @@ namespace osu.Game.Updater { try { - var releases = new JsonWebRequest("https://api.github.com/repos/ppy/osu/releases/latest"); + var releases = new OsuJsonWebRequest("https://api.github.com/repos/ppy/osu/releases/latest"); await releases.PerformAsync(); From 0422b326ad3faa719ba34852a4d80e3b22ce273d Mon Sep 17 00:00:00 2001 From: Lucas A Date: Mon, 13 Jan 2020 21:12:19 +0100 Subject: [PATCH 0865/1829] Add visual tests --- .../Online/TestSceneOnlineViewContainer.cs | 75 +++++++++++++++++++ osu.Game/Online/API/DummyAPIAccess.cs | 2 +- osu.Game/Online/OnlineViewContainer.cs | 25 ++++--- 3 files changed, 90 insertions(+), 12 deletions(-) create mode 100644 osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs diff --git a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs new file mode 100644 index 0000000000..a8c50a37e7 --- /dev/null +++ b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs @@ -0,0 +1,75 @@ +// 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 NUnit.Framework; +using osu.Framework.Allocation; +using osu.Framework.Extensions.Color4Extensions; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; +using osu.Game.Graphics.Sprites; +using osu.Game.Online; +using osu.Game.Online.API; +using osuTK.Graphics; + +namespace osu.Game.Tests.Visual.Online +{ + [TestFixture] + public class TestSceneOnlineViewContainer : OsuTestScene + { + private OnlineViewContainer onlineView; + private Box box; + + public TestSceneOnlineViewContainer() + { + Child = new Container + { + RelativeSizeAxes = Axes.Both, + Child = onlineView = new OnlineViewContainer(@"Please login to view dummy test content") + { + RelativeSizeAxes = Axes.Both, + Children = new Drawable[] + { + box = new Box + { + RelativeSizeAxes = Axes.Both, + Colour = Color4.Blue.Opacity(0.8f), + }, + new OsuSpriteText + { + Text = "dummy online content", + RelativeSizeAxes = Axes.Both, + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + } + } + } + }; + } + + [BackgroundDependencyLoader] + private void load() + { + AddStep("set status to offline", () => + { + (API as DummyAPIAccess).State = APIState.Offline; + }); + + AddAssert("children are hidden", () => + { + return !onlineView.Children.First().Parent.IsPresent; + }); + + AddStep("set status to online", () => + { + (API as DummyAPIAccess).State = APIState.Online; + }); + + AddAssert("children are visible", () => + { + return onlineView.Children.First().Parent.IsPresent; + }); + } + } +} diff --git a/osu.Game/Online/API/DummyAPIAccess.cs b/osu.Game/Online/API/DummyAPIAccess.cs index 7f23f9b5d5..a1c3475fd9 100644 --- a/osu.Game/Online/API/DummyAPIAccess.cs +++ b/osu.Game/Online/API/DummyAPIAccess.cs @@ -33,7 +33,7 @@ namespace osu.Game.Online.API public APIState State { get => state; - private set + set { if (state == value) return; diff --git a/osu.Game/Online/OnlineViewContainer.cs b/osu.Game/Online/OnlineViewContainer.cs index 6a8963599f..a7f81b4776 100644 --- a/osu.Game/Online/OnlineViewContainer.cs +++ b/osu.Game/Online/OnlineViewContainer.cs @@ -1,4 +1,7 @@ -using osu.Framework.Allocation; +// 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.Graphics; using osu.Framework.Graphics.Containers; using osu.Game.Online.API; @@ -20,7 +23,7 @@ namespace osu.Game.Online protected override Container Content => content; - public OnlineViewContainer(string placeholder_message) + public OnlineViewContainer(string placeholderMessage) { InternalChildren = new Drawable[] { @@ -32,7 +35,7 @@ namespace osu.Game.Online { RelativeSizeAxes = Axes.Both, Alpha = 0, - Child = placeholder = new LoginPlaceholder(placeholder_message) + Child = placeholder = new LoginPlaceholder(placeholderMessage) }, }; } @@ -43,7 +46,7 @@ namespace osu.Game.Online { case APIState.Offline: case APIState.Connecting: - Schedule(() =>updatePlaceholderVisibility(true)); + Schedule(() => updatePlaceholderVisibility(true)); break; default: @@ -52,18 +55,18 @@ namespace osu.Game.Online } } - private void updatePlaceholderVisibility(bool show_placeholder) + private void updatePlaceholderVisibility(bool showPlaceholder) { - if (show_placeholder) + if (showPlaceholder) { - content.FadeOut(transform_time / 2, Easing.OutQuint); - placeholder.ScaleTo(0.8f).Then().ScaleTo(1, 3 * transform_time, Easing.OutQuint); - placeholderContainer.FadeInFromZero(2 * transform_time, Easing.OutQuint); + content.FadeOut(transform_time / 2, Easing.OutQuint); + placeholder.ScaleTo(0.8f).Then().ScaleTo(1, 3 * transform_time, Easing.OutQuint); + placeholderContainer.FadeInFromZero(2 * transform_time, Easing.OutQuint); } else { - placeholderContainer.FadeOut(transform_time / 2, Easing.OutQuint); - content.FadeIn(transform_time, Easing.OutQuint); + placeholderContainer.FadeOut(transform_time / 2, Easing.OutQuint); + content.FadeIn(transform_time, Easing.OutQuint); } } From f00938971eda2ba95c451792a6ce56234f073532 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Fri, 17 Jan 2020 18:53:17 +0100 Subject: [PATCH 0866/1829] Apply review suggestions --- .../Online/TestSceneOnlineViewContainer.cs | 2 +- osu.Game/Online/OnlineViewContainer.cs | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs index a8c50a37e7..9b7de2b7f4 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs @@ -26,7 +26,7 @@ namespace osu.Game.Tests.Visual.Online Child = new Container { RelativeSizeAxes = Axes.Both, - Child = onlineView = new OnlineViewContainer(@"Please login to view dummy test content") + Child = onlineView = new OnlineViewContainer(@"view dummy test content") { RelativeSizeAxes = Axes.Both, Children = new Drawable[] diff --git a/osu.Game/Online/OnlineViewContainer.cs b/osu.Game/Online/OnlineViewContainer.cs index a7f81b4776..ac3a3edd67 100644 --- a/osu.Game/Online/OnlineViewContainer.cs +++ b/osu.Game/Online/OnlineViewContainer.cs @@ -23,6 +23,9 @@ namespace osu.Game.Online protected override Container Content => content; + [Resolved] + protected IAPIProvider API { get; private set; } + public OnlineViewContainer(string placeholderMessage) { InternalChildren = new Drawable[] @@ -35,12 +38,12 @@ namespace osu.Game.Online { RelativeSizeAxes = Axes.Both, Alpha = 0, - Child = placeholder = new LoginPlaceholder(placeholderMessage) + Child = placeholder = new LoginPlaceholder($@"Please sign in to {placeholderMessage}") }, }; } - public void APIStateChanged(IAPIProvider api, APIState state) + public virtual void APIStateChanged(IAPIProvider api, APIState state) { switch (state) { @@ -70,10 +73,16 @@ namespace osu.Game.Online } } - [BackgroundDependencyLoader] - private void load(IAPIProvider api) + protected override void LoadComplete() { - api.Register(this); + API?.Register(this); + base.LoadComplete(); + } + + protected override void Dispose(bool isDisposing) + { + API?.Unregister(this); + base.Dispose(isDisposing); } } } From e1f172e3f820c88b481f546b49752a71a1b754bc Mon Sep 17 00:00:00 2001 From: Lucas A Date: Fri, 17 Jan 2020 19:29:42 +0100 Subject: [PATCH 0867/1829] Fix CI issues --- .../Online/TestSceneOnlineViewContainer.cs | 25 +++++-------------- osu.Game/Online/OnlineViewContainer.cs | 4 +-- 2 files changed, 8 insertions(+), 21 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs index 9b7de2b7f4..4579e4f428 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs @@ -18,8 +18,7 @@ namespace osu.Game.Tests.Visual.Online [TestFixture] public class TestSceneOnlineViewContainer : OsuTestScene { - private OnlineViewContainer onlineView; - private Box box; + private readonly OnlineViewContainer onlineView; public TestSceneOnlineViewContainer() { @@ -31,7 +30,7 @@ namespace osu.Game.Tests.Visual.Online RelativeSizeAxes = Axes.Both, Children = new Drawable[] { - box = new Box + new Box { RelativeSizeAxes = Axes.Both, Colour = Color4.Blue.Opacity(0.8f), @@ -51,25 +50,13 @@ namespace osu.Game.Tests.Visual.Online [BackgroundDependencyLoader] private void load() { - AddStep("set status to offline", () => - { - (API as DummyAPIAccess).State = APIState.Offline; - }); + AddStep("set status to offline", () => ((DummyAPIAccess)API).State = APIState.Offline); - AddAssert("children are hidden", () => - { - return !onlineView.Children.First().Parent.IsPresent; - }); + AddAssert("children are hidden", () => !onlineView.Children.First().Parent.IsPresent); - AddStep("set status to online", () => - { - (API as DummyAPIAccess).State = APIState.Online; - }); + AddStep("set status to online", () => ((DummyAPIAccess)API).State = APIState.Online); - AddAssert("children are visible", () => - { - return onlineView.Children.First().Parent.IsPresent; - }); + AddAssert("children are visible", () => onlineView.Children.First().Parent.IsPresent); } } } diff --git a/osu.Game/Online/OnlineViewContainer.cs b/osu.Game/Online/OnlineViewContainer.cs index ac3a3edd67..0a8432ee12 100644 --- a/osu.Game/Online/OnlineViewContainer.cs +++ b/osu.Game/Online/OnlineViewContainer.cs @@ -62,13 +62,13 @@ namespace osu.Game.Online { if (showPlaceholder) { - content.FadeOut(transform_time / 2, Easing.OutQuint); + content.FadeOut(150, Easing.OutQuint); placeholder.ScaleTo(0.8f).Then().ScaleTo(1, 3 * transform_time, Easing.OutQuint); placeholderContainer.FadeInFromZero(2 * transform_time, Easing.OutQuint); } else { - placeholderContainer.FadeOut(transform_time / 2, Easing.OutQuint); + placeholderContainer.FadeOut(150, Easing.OutQuint); content.FadeIn(transform_time, Easing.OutQuint); } } From 59cb93321fbdffaf271021a8b6ede430e0eee10d Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 18 Jan 2020 01:36:14 +0300 Subject: [PATCH 0868/1829] Implement ProfileItemBackground component --- .../Historical/DrawableMostPlayedBeatmap.cs | 81 +++++++++---------- .../Profile/Sections/ProfileItemBackground.cs | 49 +++++++++++ 2 files changed, 85 insertions(+), 45 deletions(-) create mode 100644 osu.Game/Overlays/Profile/Sections/ProfileItemBackground.cs diff --git a/osu.Game/Overlays/Profile/Sections/Historical/DrawableMostPlayedBeatmap.cs b/osu.Game/Overlays/Profile/Sections/Historical/DrawableMostPlayedBeatmap.cs index 0206c4e13b..9040af3384 100644 --- a/osu.Game/Overlays/Profile/Sections/Historical/DrawableMostPlayedBeatmap.cs +++ b/osu.Game/Overlays/Profile/Sections/Historical/DrawableMostPlayedBeatmap.cs @@ -4,7 +4,6 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Sprites; using osu.Framework.Localisation; using osu.Game.Beatmaps; @@ -13,32 +12,25 @@ using osu.Game.Graphics; using osu.Game.Graphics.Containers; using osu.Game.Graphics.Sprites; using osuTK; -using System.Collections.Generic; using osu.Framework.Graphics.Cursor; namespace osu.Game.Overlays.Profile.Sections.Historical { - public class DrawableMostPlayedBeatmap : OsuHoverContainer + public class DrawableMostPlayedBeatmap : CompositeDrawable { private const int cover_width = 100; private const int corner_radius = 6; - private const int height = 50; private readonly BeatmapInfo beatmap; private readonly int playCount; - private Box background; - - protected override IEnumerable EffectTargets => new[] { background }; - public DrawableMostPlayedBeatmap(BeatmapInfo beatmap, int playCount) { this.beatmap = beatmap; this.playCount = playCount; - Enabled.Value = true; //manually enabled, because we have no action RelativeSizeAxes = Axes.X; - Height = height; + Height = 50; Masking = true; CornerRadius = corner_radius; @@ -47,10 +39,7 @@ namespace osu.Game.Overlays.Profile.Sections.Historical [BackgroundDependencyLoader] private void load(OsuColour colours) { - IdleColour = colours.GreySeafoam; - HoverColour = colours.GreySeafoamLight; - - Children = new Drawable[] + AddRangeInternal(new Drawable[] { new UpdateableBeatmapSetCover { @@ -72,46 +61,48 @@ namespace osu.Game.Overlays.Profile.Sections.Historical CornerRadius = corner_radius, Children = new Drawable[] { - background = new Box { RelativeSizeAxes = Axes.Both }, - new Container + new ProfileItemBackground { - RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding(10), - Children = new Drawable[] + Child = new Container { - new FillFlowContainer + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding(10), + Children = new Drawable[] { - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Vertical, - Children = new Drawable[] + new FillFlowContainer { - new MostPlayedBeatmapMetadataContainer(beatmap), - new LinkFlowContainer(t => t.Font = OsuFont.GetFont(size: 12, weight: FontWeight.Regular)) + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Vertical, + Children = new Drawable[] { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Colour = colours.GreySeafoamLighter - }.With(d => - { - d.AddText("mapped by "); - d.AddUserLink(beatmap.Metadata.Author); - }), - } - }, - new PlayCountText(playCount) - { - Anchor = Anchor.CentreRight, - Origin = Anchor.CentreRight - }, - } - }, + new MostPlayedBeatmapMetadataContainer(beatmap), + new LinkFlowContainer(t => t.Font = OsuFont.GetFont(size: 12, weight: FontWeight.Regular)) + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Colour = colours.GreySeafoamLighter + }.With(d => + { + d.AddText("mapped by "); + d.AddUserLink(beatmap.Metadata.Author); + }), + } + }, + new PlayCountText(playCount) + { + Anchor = Anchor.CentreRight, + Origin = Anchor.CentreRight + }, + } + }, + } } } } } - }; + }); } private class MostPlayedBeatmapMetadataContainer : BeatmapMetadataContainer diff --git a/osu.Game/Overlays/Profile/Sections/ProfileItemBackground.cs b/osu.Game/Overlays/Profile/Sections/ProfileItemBackground.cs new file mode 100644 index 0000000000..4f8630c92d --- /dev/null +++ b/osu.Game/Overlays/Profile/Sections/ProfileItemBackground.cs @@ -0,0 +1,49 @@ +// 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.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; +using osu.Game.Graphics; +using osu.Game.Graphics.Containers; +using System.Collections.Generic; + +namespace osu.Game.Overlays.Profile.Sections +{ + public class ProfileItemBackground : OsuHoverContainer + { + protected override IEnumerable EffectTargets => new[] { background }; + protected override Container Content => content; + + private readonly Box background; + private readonly Container content; + + public ProfileItemBackground() + { + RelativeSizeAxes = Axes.Both; + Enabled.Value = true; //manually enabled, because we have no action + Masking = true; + CornerRadius = 6; + + base.Content.AddRange(new Drawable[] + { + background = new Box + { + RelativeSizeAxes = Axes.Both, + }, + content = new Container + { + RelativeSizeAxes = Axes.Both, + } + }); + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + IdleColour = colours.GreySeafoam; + HoverColour = colours.GreySeafoamLight; + } + } +} From 4cdaebb42bf681a04e2e4043fd18f204c928fa6e Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 18 Jan 2020 02:58:10 +0300 Subject: [PATCH 0869/1829] Implement ProfileScore component --- .../Online/TestSceneUserProfileScores.cs | 82 ++++++ osu.Game/Graphics/DrawableDate.cs | 4 +- .../Profile/Sections/Ranks/ProfileScore.cs | 242 ++++++++++++++++++ 3 files changed, 326 insertions(+), 2 deletions(-) create mode 100644 osu.Game.Tests/Visual/Online/TestSceneUserProfileScores.cs create mode 100644 osu.Game/Overlays/Profile/Sections/Ranks/ProfileScore.cs diff --git a/osu.Game.Tests/Visual/Online/TestSceneUserProfileScores.cs b/osu.Game.Tests/Visual/Online/TestSceneUserProfileScores.cs new file mode 100644 index 0000000000..f8e3da5241 --- /dev/null +++ b/osu.Game.Tests/Visual/Online/TestSceneUserProfileScores.cs @@ -0,0 +1,82 @@ +// 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.Game.Overlays.Profile.Sections; +using osu.Game.Overlays.Profile.Sections.Ranks; +using osu.Framework.Graphics; +using osu.Game.Scoring; +using osu.Framework.Graphics.Containers; +using osuTK; +using osu.Game.Beatmaps; +using osu.Game.Rulesets.Mods; +using osu.Game.Rulesets.Osu.Mods; + +namespace osu.Game.Tests.Visual.Online +{ + public class TestSceneUserProfileScores : OsuTestScene + { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(ProfileScore), + typeof(ProfileItemBackground), + }; + + public TestSceneUserProfileScores() + { + var score = new ScoreInfo + { + PP = 134.32, + Rank = ScoreRank.A, + Beatmap = new BeatmapInfo + { + Metadata = new BeatmapMetadata + { + Title = "Triumph & Regret", + Artist = "typeMARS" + }, + Version = "[4K] Regret" + }, + Date = DateTimeOffset.Now, + Mods = new Mod[] + { + new OsuModHardRock(), + new OsuModDoubleTime(), + }, + Accuracy = 0.998546 + }; + + var noPPScore = new ScoreInfo + { + Rank = ScoreRank.B, + Beatmap = new BeatmapInfo + { + Metadata = new BeatmapMetadata + { + Title = "C18H27NO3(extend)", + Artist = "Team Grimoire" + }, + Version = "[4K] Cataclysmic Hypernova" + }, + Date = DateTimeOffset.Now, + Accuracy = 0.55879 + }; + + Add(new FillFlowContainer + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Direction = FillDirection.Vertical, + Spacing = new Vector2(0, 10), + Children = new[] + { + new ProfileScore(score), + new ProfileScore(noPPScore), + } + }); + } + } +} diff --git a/osu.Game/Graphics/DrawableDate.cs b/osu.Game/Graphics/DrawableDate.cs index 533f02af7b..925c7981e0 100644 --- a/osu.Game/Graphics/DrawableDate.cs +++ b/osu.Game/Graphics/DrawableDate.cs @@ -29,9 +29,9 @@ namespace osu.Game.Graphics } } - public DrawableDate(DateTimeOffset date) + public DrawableDate(DateTimeOffset date, float textSize = OsuFont.DEFAULT_FONT_SIZE) { - Font = OsuFont.GetFont(weight: FontWeight.Regular, italics: true); + Font = OsuFont.GetFont(weight: FontWeight.Regular, size: textSize, italics: true); Date = date; } diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/ProfileScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/ProfileScore.cs new file mode 100644 index 0000000000..c30c13d52e --- /dev/null +++ b/osu.Game/Overlays/Profile/Sections/Ranks/ProfileScore.cs @@ -0,0 +1,242 @@ +// 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.Allocation; +using osu.Framework.Extensions.Color4Extensions; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; +using osu.Framework.Localisation; +using osu.Game.Beatmaps; +using osu.Game.Graphics; +using osu.Game.Graphics.Sprites; +using osu.Game.Online.Leaderboards; +using osu.Game.Rulesets.UI; +using osu.Game.Scoring; +using osuTK; +using osuTK.Graphics; + +namespace osu.Game.Overlays.Profile.Sections.Ranks +{ + public class ProfileScore : CompositeDrawable + { + private const int performance_width = 80; + private const int content_padding = 10; + + protected readonly ScoreInfo Score; + + [Resolved] + private OsuColour colours { get; set; } + + public ProfileScore(ScoreInfo score) + { + Score = score; + + RelativeSizeAxes = Axes.X; + Height = 40; + } + + [BackgroundDependencyLoader] + private void load() + { + AddInternal(new ProfileItemBackground + { + Children = new Drawable[] + { + new Container + { + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Left = content_padding, Right = performance_width + content_padding }, + Children = new Drawable[] + { + new FillFlowContainer + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(8, 0), + Children = new Drawable[] + { + new UpdateableRank(Score.Rank) + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + Size = new Vector2(50, 20), + }, + new FillFlowContainer + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Vertical, + Spacing = new Vector2(0, 2), + Children = new Drawable[] + { + new ScoreBeatmapMetadataContainer(Score.Beatmap), + new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(5, 0), + Children = new Drawable[] + { + new OsuSpriteText + { + Text = $"{Score.Beatmap.Version}", + Font = OsuFont.GetFont(size: 12, weight: FontWeight.Regular), + Colour = colours.Yellow + }, + new DrawableDate(Score.Date, 12) + { + Colour = colours.GreySeafoamLighter + } + } + } + } + } + } + }, + new FillFlowContainer + { + Anchor = Anchor.CentreRight, + Origin = Anchor.CentreRight, + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(10), + Children = new Drawable[] + { + CreateRightContent().With(c => + { + c.Anchor = Anchor.CentreRight; + c.Origin = Anchor.CentreRight; + }), + new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Anchor = Anchor.CentreRight, + Origin = Anchor.CentreRight, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(2), + Children = Score.Mods.Select(mod => new ModIcon(mod) + { + Scale = new Vector2(0.35f) + }).ToList(), + } + } + } + } + }, + new Container + { + RelativeSizeAxes = Axes.Y, + Width = performance_width, + Anchor = Anchor.CentreRight, + Origin = Anchor.CentreRight, + Children = new[] + { + new Box + { + RelativeSizeAxes = Axes.Both, + Size = new Vector2(1, 0.5f), + Colour = Color4.Black.Opacity(0.5f), + Shear = new Vector2(-0.45f, 0), + EdgeSmoothness = new Vector2(2, 0), + }, + new Box + { + RelativeSizeAxes = Axes.Both, + RelativePositionAxes = Axes.Y, + Size = new Vector2(1, -0.5f), + Position = new Vector2(0, 1), + Colour = Color4.Black.Opacity(0.5f), + Shear = new Vector2(0.45f, 0), + EdgeSmoothness = new Vector2(2, 0), + }, + createDrawablePerformance().With(d => + { + d.Anchor = Anchor.Centre; + d.Origin = Anchor.Centre; + }) + } + } + } + }); + } + + protected virtual Drawable CreateRightContent() => CreateDrawableAccuracy(); + + protected OsuSpriteText CreateDrawableAccuracy(float textSize = 16) => new OsuSpriteText + { + Text = $"{Score.Accuracy:P2}", + Font = OsuFont.GetFont(size: textSize, weight: FontWeight.Bold, italics: true), + Colour = colours.Yellow, + }; + + private Drawable createDrawablePerformance() + { + if (Score.PP.HasValue) + { + return new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Children = new[] + { + new OsuSpriteText + { + Anchor = Anchor.BottomLeft, + Origin = Anchor.BottomLeft, + Font = OsuFont.GetFont(weight: FontWeight.Bold), + Text = $"{Score.PP:0}", + Colour = colours.GreenLight + }, + new OsuSpriteText + { + Anchor = Anchor.BottomLeft, + Origin = Anchor.BottomLeft, + Font = OsuFont.GetFont(size: 12, weight: FontWeight.Bold), + Text = "pp", + Colour = colours.Green + } + } + }; + } + + return new OsuSpriteText + { + Font = OsuFont.GetFont(weight: FontWeight.Bold), + Text = "-", + Colour = colours.GreenLight + }; + } + + private class ScoreBeatmapMetadataContainer : BeatmapMetadataContainer + { + public ScoreBeatmapMetadataContainer(BeatmapInfo beatmap) + : base(beatmap) + { + } + + protected override Drawable[] CreateText(BeatmapInfo beatmap) => new Drawable[] + { + new OsuSpriteText + { + Anchor = Anchor.BottomLeft, + Origin = Anchor.BottomLeft, + Text = new LocalisedString(( + $"{beatmap.Metadata.TitleUnicode ?? beatmap.Metadata.Title} ", + $"{beatmap.Metadata.Title ?? beatmap.Metadata.TitleUnicode} ")), + Font = OsuFont.GetFont(weight: FontWeight.SemiBold, italics: true) + }, + new OsuSpriteText + { + Anchor = Anchor.BottomLeft, + Origin = Anchor.BottomLeft, + Text = "by " + new LocalisedString((beatmap.Metadata.ArtistUnicode, beatmap.Metadata.Artist)), + Font = OsuFont.GetFont(size: 14, italics: true) + }, + }; + } + } +} From 4964505c3e3bbbf037dad273b6d1ee1cacd382f4 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 18 Jan 2020 03:19:28 +0300 Subject: [PATCH 0870/1829] Implement ProfileWeightedScore component --- .../Online/TestSceneUserProfileScores.cs | 2 + .../Profile/Sections/Ranks/ProfileScore.cs | 9 ++- .../Sections/Ranks/ProfileWeightedScore.cs | 70 +++++++++++++++++++ 3 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 osu.Game/Overlays/Profile/Sections/Ranks/ProfileWeightedScore.cs diff --git a/osu.Game.Tests/Visual/Online/TestSceneUserProfileScores.cs b/osu.Game.Tests/Visual/Online/TestSceneUserProfileScores.cs index f8e3da5241..4af024052e 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneUserProfileScores.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneUserProfileScores.cs @@ -20,6 +20,7 @@ namespace osu.Game.Tests.Visual.Online public override IReadOnlyList RequiredTypes => new[] { typeof(ProfileScore), + typeof(ProfileWeightedScore), typeof(ProfileItemBackground), }; @@ -75,6 +76,7 @@ namespace osu.Game.Tests.Visual.Online { new ProfileScore(score), new ProfileScore(noPPScore), + new ProfileWeightedScore(score, 0.85), } }); } diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/ProfileScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/ProfileScore.cs index c30c13d52e..bd49c59523 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/ProfileScore.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/ProfileScore.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System.Linq; +using JetBrains.Annotations; using osu.Framework.Allocation; using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; @@ -104,7 +105,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks Origin = Anchor.CentreRight, AutoSizeAxes = Axes.Both, Direction = FillDirection.Horizontal, - Spacing = new Vector2(10), + Spacing = new Vector2(15), Children = new Drawable[] { CreateRightContent().With(c => @@ -165,12 +166,13 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks }); } + [NotNull] protected virtual Drawable CreateRightContent() => CreateDrawableAccuracy(); - protected OsuSpriteText CreateDrawableAccuracy(float textSize = 16) => new OsuSpriteText + protected OsuSpriteText CreateDrawableAccuracy() => new OsuSpriteText { Text = $"{Score.Accuracy:P2}", - Font = OsuFont.GetFont(size: textSize, weight: FontWeight.Bold, italics: true), + Font = OsuFont.GetFont(weight: FontWeight.Bold, italics: true), Colour = colours.Yellow, }; @@ -181,6 +183,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks return new FillFlowContainer { AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, Children = new[] { new OsuSpriteText diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/ProfileWeightedScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/ProfileWeightedScore.cs new file mode 100644 index 0000000000..aaf3664403 --- /dev/null +++ b/osu.Game/Overlays/Profile/Sections/Ranks/ProfileWeightedScore.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 osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Graphics; +using osu.Game.Graphics.Sprites; +using osu.Game.Scoring; +using osuTK; + +namespace osu.Game.Overlays.Profile.Sections.Ranks +{ + public class ProfileWeightedScore : ProfileScore + { + private readonly double weight; + + public ProfileWeightedScore(ScoreInfo score, double weight) + : base(score) + { + this.weight = weight; + } + + protected override Drawable CreateRightContent() => new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Vertical, + Spacing = new Vector2(0, 2), + Children = new Drawable[] + { + new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(15, 0), + Children = new Drawable[] + { + CreateDrawableAccuracy(), + new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Children = new[] + { + new OsuSpriteText + { + Anchor = Anchor.BottomLeft, + Origin = Anchor.BottomLeft, + Font = OsuFont.GetFont(weight: FontWeight.Bold, italics: true), + Text = $"{Score.PP * weight:0}", + }, + new OsuSpriteText + { + Anchor = Anchor.BottomLeft, + Origin = Anchor.BottomLeft, + Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold, italics: true), + Text = "pp", + } + } + } + } + }, + new OsuSpriteText + { + Font = OsuFont.GetFont(size: 12, weight: FontWeight.Bold), + Text = $@"weighted {weight:P0}" + } + } + }; + } +} From 6e776d02f817563ad9299dd204e03dcecb937e70 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 18 Jan 2020 03:33:02 +0300 Subject: [PATCH 0871/1829] Refactor PaginatedScoreContainer to use new components --- .../Profile/Sections/Ranks/PaginatedScoreContainer.cs | 10 ++++------ .../Profile/Sections/Ranks/ProfileWeightedScore.cs | 7 ++++++- osu.Game/Overlays/Profile/Sections/RanksSection.cs | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/PaginatedScoreContainer.cs b/osu.Game/Overlays/Profile/Sections/Ranks/PaginatedScoreContainer.cs index e0f1c935da..ad6621696d 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/PaginatedScoreContainer.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/PaginatedScoreContainer.cs @@ -15,14 +15,12 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks { public class PaginatedScoreContainer : PaginatedContainer { - private readonly bool includeWeight; private readonly ScoreType type; - public PaginatedScoreContainer(ScoreType type, Bindable user, string header, string missing, bool includeWeight = false) + public PaginatedScoreContainer(ScoreType type, Bindable user, string header, string missing) : base(user, header, missing) { this.type = type; - this.includeWeight = includeWeight; ItemsPerPage = 5; @@ -43,10 +41,10 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks switch (type) { default: - return new DrawablePerformanceScore(model.CreateScoreInfo(Rulesets), includeWeight ? Math.Pow(0.95, ItemsContainer.Count) : (double?)null); + return new ProfileScore(model.CreateScoreInfo(Rulesets)); - case ScoreType.Recent: - return new DrawableTotalScore(model.CreateScoreInfo(Rulesets)); + case ScoreType.Best: + return new ProfileWeightedScore(model.CreateScoreInfo(Rulesets), Math.Pow(0.95, ItemsContainer.Count)); } } } diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/ProfileWeightedScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/ProfileWeightedScore.cs index aaf3664403..5f080f2589 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/ProfileWeightedScore.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/ProfileWeightedScore.cs @@ -34,7 +34,12 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks Spacing = new Vector2(15, 0), Children = new Drawable[] { - CreateDrawableAccuracy(), + new Container + { + AutoSizeAxes = Axes.Y, + Width = 60, + Child = CreateDrawableAccuracy() + }, new FillFlowContainer { AutoSizeAxes = Axes.Both, diff --git a/osu.Game/Overlays/Profile/Sections/RanksSection.cs b/osu.Game/Overlays/Profile/Sections/RanksSection.cs index c4b933593e..dbdff3a273 100644 --- a/osu.Game/Overlays/Profile/Sections/RanksSection.cs +++ b/osu.Game/Overlays/Profile/Sections/RanksSection.cs @@ -16,7 +16,7 @@ namespace osu.Game.Overlays.Profile.Sections { Children = new[] { - new PaginatedScoreContainer(ScoreType.Best, User, "Best Performance", "No performance records. :(", true), + new PaginatedScoreContainer(ScoreType.Best, User, "Best Performance", "No performance records. :("), new PaginatedScoreContainer(ScoreType.Firsts, User, "First Place Ranks", "No awesome performance records yet. :("), }; } From d5a3d8dbaa9f21d75a46150f55b048a0972c76cb Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 18 Jan 2020 03:35:47 +0300 Subject: [PATCH 0872/1829] Remove no longer used components --- .../Visual/Online/TestSceneUserRanks.cs | 7 +- .../Ranks/DrawablePerformanceScore.cs | 47 --------- .../Sections/Ranks/DrawableProfileScore.cs | 96 ------------------- .../Sections/Ranks/DrawableTotalScore.cs | 31 ------ 4 files changed, 6 insertions(+), 175 deletions(-) delete mode 100644 osu.Game/Overlays/Profile/Sections/Ranks/DrawablePerformanceScore.cs delete mode 100644 osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs delete mode 100644 osu.Game/Overlays/Profile/Sections/Ranks/DrawableTotalScore.cs diff --git a/osu.Game.Tests/Visual/Online/TestSceneUserRanks.cs b/osu.Game.Tests/Visual/Online/TestSceneUserRanks.cs index 2951f6b63e..9779343c07 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneUserRanks.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneUserRanks.cs @@ -20,7 +20,12 @@ namespace osu.Game.Tests.Visual.Online { protected override bool UseOnlineAPI => true; - public override IReadOnlyList RequiredTypes => new[] { typeof(DrawableProfileScore), typeof(RanksSection) }; + public override IReadOnlyList RequiredTypes => new[] + { + typeof(ProfileScore), + typeof(ProfileWeightedScore), + typeof(RanksSection) + }; public TestSceneUserRanks() { diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/DrawablePerformanceScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/DrawablePerformanceScore.cs deleted file mode 100644 index 843f9b7ef2..0000000000 --- a/osu.Game/Overlays/Profile/Sections/Ranks/DrawablePerformanceScore.cs +++ /dev/null @@ -1,47 +0,0 @@ -// 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.Graphics; -using osu.Game.Graphics; -using osu.Game.Graphics.Sprites; -using osu.Game.Scoring; - -namespace osu.Game.Overlays.Profile.Sections.Ranks -{ - public class DrawablePerformanceScore : DrawableProfileScore - { - private readonly double? weight; - - public DrawablePerformanceScore(ScoreInfo score, double? weight = null) - : base(score) - { - this.weight = weight; - } - - [BackgroundDependencyLoader] - private void load(OsuColour colour) - { - double pp = Score.PP ?? 0; - RightFlowContainer.Add(new OsuSpriteText - { - Text = $"{pp:0}pp", - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - Font = OsuFont.GetFont(size: 18, weight: FontWeight.Bold, italics: true) - }); - - if (weight.HasValue) - { - RightFlowContainer.Add(new OsuSpriteText - { - Text = $"weighted: {pp * weight:0}pp ({weight:P0})", - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - Colour = colour.GrayA, - Font = OsuFont.GetFont(size: 11, weight: FontWeight.Regular, italics: true) - }); - } - } - } -} diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs deleted file mode 100644 index 6362d3dfb0..0000000000 --- a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. -// See the LICENCE file in the repository root for full licence text. - -using osuTK; -using osu.Framework.Allocation; -using osu.Framework.Graphics; -using osu.Game.Graphics; -using osu.Game.Graphics.Sprites; -using osu.Game.Online.Leaderboards; -using osu.Game.Rulesets.Mods; -using osu.Game.Rulesets.UI; -using osu.Game.Scoring; -using osu.Game.Beatmaps; -using osu.Framework.Localisation; -using osu.Framework.Graphics.Containers; - -namespace osu.Game.Overlays.Profile.Sections.Ranks -{ - public abstract class DrawableProfileScore : DrawableProfileRow - { - private readonly FillFlowContainer modsContainer; - protected readonly ScoreInfo Score; - - protected DrawableProfileScore(ScoreInfo score) - { - Score = score; - - RelativeSizeAxes = Axes.X; - Height = 60; - Children = new Drawable[] - { - modsContainer = new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Anchor = Anchor.CentreRight, - Origin = Anchor.CentreRight, - Spacing = new Vector2(1), - Margin = new MarginPadding { Right = 160 } - } - }; - } - - [BackgroundDependencyLoader(true)] - private void load(OsuColour colour) - { - var text = new OsuSpriteText - { - Text = $"accuracy: {Score.Accuracy:P2}", - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - Colour = colour.GrayA, - Font = OsuFont.GetFont(size: 11, weight: FontWeight.Regular, italics: true) - }; - - RightFlowContainer.Insert(1, text); - - LeftFlowContainer.Add(new ProfileScoreBeatmapMetadataContainer(Score.Beatmap)); - LeftFlowContainer.Add(new DrawableDate(Score.Date)); - - foreach (Mod mod in Score.Mods) - modsContainer.Add(new ModIcon(mod) { Scale = new Vector2(0.5f) }); - } - - protected override Drawable CreateLeftVisual() => new UpdateableRank(Score.Rank) - { - RelativeSizeAxes = Axes.Y, - Width = 60, - FillMode = FillMode.Fit, - }; - - private class ProfileScoreBeatmapMetadataContainer : BeatmapMetadataContainer - { - public ProfileScoreBeatmapMetadataContainer(BeatmapInfo beatmap) - : base(beatmap) - { - } - - protected override Drawable[] CreateText(BeatmapInfo beatmap) => new Drawable[] - { - new OsuSpriteText - { - Text = new LocalisedString(( - $"{beatmap.Metadata.TitleUnicode ?? beatmap.Metadata.Title} [{beatmap.Version}] ", - $"{beatmap.Metadata.Title ?? beatmap.Metadata.TitleUnicode} [{beatmap.Version}] ")), - Font = OsuFont.GetFont(size: 15, weight: FontWeight.SemiBold, italics: true) - }, - new OsuSpriteText - { - Text = new LocalisedString((beatmap.Metadata.ArtistUnicode, beatmap.Metadata.Artist)), - Padding = new MarginPadding { Top = 3 }, - Font = OsuFont.GetFont(size: 12, weight: FontWeight.Regular, italics: true) - }, - }; - } - } -} diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableTotalScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableTotalScore.cs deleted file mode 100644 index 8bfca08fe7..0000000000 --- a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableTotalScore.cs +++ /dev/null @@ -1,31 +0,0 @@ -// 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.Graphics; -using osu.Game.Graphics; -using osu.Game.Graphics.Sprites; -using osu.Game.Scoring; - -namespace osu.Game.Overlays.Profile.Sections.Ranks -{ - public class DrawableTotalScore : DrawableProfileScore - { - public DrawableTotalScore(ScoreInfo score) - : base(score) - { - } - - [BackgroundDependencyLoader] - private void load() - { - RightFlowContainer.Add(new OsuSpriteText - { - Text = Score.TotalScore.ToString("#,###"), - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - Font = OsuFont.GetFont(size: 18, weight: FontWeight.Bold, italics: true) - }); - } - } -} From 16cfb9310b4edda6055eea3079d7a60cb94b3c04 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 18 Jan 2020 03:40:31 +0300 Subject: [PATCH 0873/1829] Naming adjustments --- .../Visual/Online/TestSceneUserProfileScores.cs | 10 +++++----- osu.Game.Tests/Visual/Online/TestSceneUserRanks.cs | 4 ++-- .../Ranks/{ProfileScore.cs => DrawableProfileScore.cs} | 4 ++-- ...eightedScore.cs => DrawableProfileWeightedScore.cs} | 4 ++-- .../Profile/Sections/Ranks/PaginatedScoreContainer.cs | 4 ++-- 5 files changed, 13 insertions(+), 13 deletions(-) rename osu.Game/Overlays/Profile/Sections/Ranks/{ProfileScore.cs => DrawableProfileScore.cs} (98%) rename osu.Game/Overlays/Profile/Sections/Ranks/{ProfileWeightedScore.cs => DrawableProfileWeightedScore.cs} (94%) diff --git a/osu.Game.Tests/Visual/Online/TestSceneUserProfileScores.cs b/osu.Game.Tests/Visual/Online/TestSceneUserProfileScores.cs index 4af024052e..ff26611311 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneUserProfileScores.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneUserProfileScores.cs @@ -19,8 +19,8 @@ namespace osu.Game.Tests.Visual.Online { public override IReadOnlyList RequiredTypes => new[] { - typeof(ProfileScore), - typeof(ProfileWeightedScore), + typeof(DrawableProfileScore), + typeof(DrawableProfileWeightedScore), typeof(ProfileItemBackground), }; @@ -74,9 +74,9 @@ namespace osu.Game.Tests.Visual.Online Spacing = new Vector2(0, 10), Children = new[] { - new ProfileScore(score), - new ProfileScore(noPPScore), - new ProfileWeightedScore(score, 0.85), + new DrawableProfileScore(score), + new DrawableProfileScore(noPPScore), + new DrawableProfileWeightedScore(score, 0.85), } }); } diff --git a/osu.Game.Tests/Visual/Online/TestSceneUserRanks.cs b/osu.Game.Tests/Visual/Online/TestSceneUserRanks.cs index 9779343c07..5cbdfb561e 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneUserRanks.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneUserRanks.cs @@ -22,8 +22,8 @@ namespace osu.Game.Tests.Visual.Online public override IReadOnlyList RequiredTypes => new[] { - typeof(ProfileScore), - typeof(ProfileWeightedScore), + typeof(DrawableProfileScore), + typeof(DrawableProfileWeightedScore), typeof(RanksSection) }; diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/ProfileScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs similarity index 98% rename from osu.Game/Overlays/Profile/Sections/Ranks/ProfileScore.cs rename to osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs index bd49c59523..13bdb523d2 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/ProfileScore.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs @@ -20,7 +20,7 @@ using osuTK.Graphics; namespace osu.Game.Overlays.Profile.Sections.Ranks { - public class ProfileScore : CompositeDrawable + public class DrawableProfileScore : CompositeDrawable { private const int performance_width = 80; private const int content_padding = 10; @@ -30,7 +30,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks [Resolved] private OsuColour colours { get; set; } - public ProfileScore(ScoreInfo score) + public DrawableProfileScore(ScoreInfo score) { Score = score; diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/ProfileWeightedScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileWeightedScore.cs similarity index 94% rename from osu.Game/Overlays/Profile/Sections/Ranks/ProfileWeightedScore.cs rename to osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileWeightedScore.cs index 5f080f2589..bacfc0fd83 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/ProfileWeightedScore.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileWeightedScore.cs @@ -10,11 +10,11 @@ using osuTK; namespace osu.Game.Overlays.Profile.Sections.Ranks { - public class ProfileWeightedScore : ProfileScore + public class DrawableProfileWeightedScore : DrawableProfileScore { private readonly double weight; - public ProfileWeightedScore(ScoreInfo score, double weight) + public DrawableProfileWeightedScore(ScoreInfo score, double weight) : base(score) { this.weight = weight; diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/PaginatedScoreContainer.cs b/osu.Game/Overlays/Profile/Sections/Ranks/PaginatedScoreContainer.cs index ad6621696d..64494f9814 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/PaginatedScoreContainer.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/PaginatedScoreContainer.cs @@ -41,10 +41,10 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks switch (type) { default: - return new ProfileScore(model.CreateScoreInfo(Rulesets)); + return new DrawableProfileScore(model.CreateScoreInfo(Rulesets)); case ScoreType.Best: - return new ProfileWeightedScore(model.CreateScoreInfo(Rulesets), Math.Pow(0.95, ItemsContainer.Count)); + return new DrawableProfileWeightedScore(model.CreateScoreInfo(Rulesets), Math.Pow(0.95, ItemsContainer.Count)); } } } From bab67eb399149c5ed638fafff8118a971dd7f11e Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 18 Jan 2020 04:12:17 +0300 Subject: [PATCH 0874/1829] CI fix --- .../Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs index 13bdb523d2..4d2334df5e 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs @@ -106,7 +106,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks AutoSizeAxes = Axes.Both, Direction = FillDirection.Horizontal, Spacing = new Vector2(15), - Children = new Drawable[] + Children = new[] { CreateRightContent().With(c => { From 5b7fd7e3ecc959f12bdd735935bd4214000fe1cc Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 18 Jan 2020 14:42:22 +0900 Subject: [PATCH 0875/1829] 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 f3838644d1..9c0da1e9fd 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 4fc9e47119..f41c5fee7f 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 760600e6d4..bb4a59a601 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From 969cb23671a65ed9b0b7b1f0719b1c611bf6b73c Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 18 Jan 2020 08:55:29 +0300 Subject: [PATCH 0876/1829] Add reference comment --- osu.Game/Graphics/OsuColour.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game/Graphics/OsuColour.cs b/osu.Game/Graphics/OsuColour.cs index 15c213b034..9333e1326d 100644 --- a/osu.Game/Graphics/OsuColour.cs +++ b/osu.Game/Graphics/OsuColour.cs @@ -66,6 +66,7 @@ namespace osu.Game.Graphics public Color4 ForOverlayElement(OverlayColourScheme colourScheme, float saturation, float lightness, float opacity = 1) => Color4.FromHsl(new Vector4(getBaseHue(colourScheme), saturation, lightness, opacity)); + // See https://github.com/ppy/osu-web/blob/4218c288292d7c810b619075471eaea8bbb8f9d8/app/helpers.php#L1463 private static float getBaseHue(OverlayColourScheme colourScheme) { float hue; From 9a2d85e7d9485aad05eec5703b4a57f67d897428 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 18 Jan 2020 14:52:03 +0900 Subject: [PATCH 0877/1829] Remove usage of snapchat icon --- osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs b/osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs index 46df963a39..774f9cf58b 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModTraceable.cs @@ -6,7 +6,6 @@ using System.Linq; using osu.Framework.Bindables; using System.Collections.Generic; using osu.Framework.Extensions.Color4Extensions; -using osu.Framework.Graphics.Sprites; using osu.Game.Configuration; using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Objects.Drawables; @@ -19,7 +18,6 @@ namespace osu.Game.Rulesets.Osu.Mods { public override string Name => "Traceable"; public override string Acronym => "TC"; - public override IconUsage? Icon => FontAwesome.Brands.SnapchatGhost; public override ModType Type => ModType.Fun; public override string Description => "Put your faith in the approach circles..."; public override double ScoreMultiplier => 1; From e8e68976030b3e302fbdb82cc68023fc365eae32 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 18 Jan 2020 15:27:21 +0900 Subject: [PATCH 0878/1829] Remove unnecessary linq count usage --- .../Visual/UserInterface/TestSceneScreenBreadcrumbControl.cs | 3 +-- .../Visual/UserInterface/TestSceneToolbarRulesetSelector.cs | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneScreenBreadcrumbControl.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneScreenBreadcrumbControl.cs index 0cb8683d72..7386e0fa1f 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneScreenBreadcrumbControl.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneScreenBreadcrumbControl.cs @@ -1,7 +1,6 @@ // 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 NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Graphics; @@ -62,7 +61,7 @@ namespace osu.Game.Tests.Visual.UserInterface waitForCurrent(); pushNext(); waitForCurrent(); - AddAssert(@"only 2 items", () => breadcrumbs.Items.Count() == 2); + AddAssert(@"only 2 items", () => breadcrumbs.Items.Count == 2); AddStep(@"exit current", () => screenStack.CurrentScreen.Exit()); AddAssert(@"current screen is first", () => startScreen == screenStack.CurrentScreen); } diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneToolbarRulesetSelector.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneToolbarRulesetSelector.cs index e6589fa823..9738f73548 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneToolbarRulesetSelector.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneToolbarRulesetSelector.cs @@ -44,7 +44,7 @@ namespace osu.Game.Tests.Visual.UserInterface AddStep("Select random", () => { - selector.Current.Value = selector.Items.ElementAt(RNG.Next(selector.Items.Count())); + selector.Current.Value = selector.Items.ElementAt(RNG.Next(selector.Items.Count)); }); AddStep("Toggle disabled state", () => selector.Current.Disabled = !selector.Current.Disabled); } From a2a2df09735ef00e3eef8ba2d49eb51824d6fdd0 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 18 Jan 2020 23:57:20 +0300 Subject: [PATCH 0879/1829] Make exception message more descriptive --- osu.Game/Graphics/OsuColour.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Graphics/OsuColour.cs b/osu.Game/Graphics/OsuColour.cs index 9333e1326d..6767104576 100644 --- a/osu.Game/Graphics/OsuColour.cs +++ b/osu.Game/Graphics/OsuColour.cs @@ -74,7 +74,7 @@ namespace osu.Game.Graphics switch (colourScheme) { default: - throw new ArgumentException(@"Used colourScheme has no hue value!"); + throw new ArgumentException($@"{colourScheme} colour scheme does not provide a hue value in {nameof(getBaseHue)}."); case OverlayColourScheme.Red: hue = 0; From 55ed823c882a38f21b14ca5644a2ef4f3efd35ed Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 19 Jan 2020 22:26:15 +0900 Subject: [PATCH 0880/1829] Fix hard crashes on tournament client if a round contains an empty beatmap --- osu.Game.Tournament/TournamentGameBase.cs | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/osu.Game.Tournament/TournamentGameBase.cs b/osu.Game.Tournament/TournamentGameBase.cs index bd91ad9704..8f9acfd5be 100644 --- a/osu.Game.Tournament/TournamentGameBase.cs +++ b/osu.Game.Tournament/TournamentGameBase.cs @@ -223,15 +223,22 @@ namespace osu.Game.Tournament foreach (var r in ladder.Rounds) { - foreach (var b in r.Beatmaps) + foreach (var b in r.Beatmaps.ToList()) { - if (b.BeatmapInfo == null && b.ID > 0) + if (b.BeatmapInfo == null) { - var req = new GetBeatmapRequest(new BeatmapInfo { OnlineBeatmapID = b.ID }); - API.Perform(req); - b.BeatmapInfo = req.Result?.ToBeatmap(RulesetStore); + if (b.ID > 0) + { + var req = new GetBeatmapRequest(new BeatmapInfo { OnlineBeatmapID = b.ID }); + API.Perform(req); + b.BeatmapInfo = req.Result?.ToBeatmap(RulesetStore); - addedInfo = true; + addedInfo = true; + } + + if (b.BeatmapInfo == null) + // if online population couldn't be performed, ensure we don't leave a null value behind + r.Beatmaps.Remove(b); } } } From 8906416294b21aa72ac2a1c574ed165651a12de6 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 19 Jan 2020 22:48:11 +0300 Subject: [PATCH 0881/1829] ProfileItemBackground -> ProfileItemContainer --- osu.Game.Tests/Visual/Online/TestSceneUserProfileScores.cs | 2 +- .../Profile/Sections/Historical/DrawableMostPlayedBeatmap.cs | 2 +- .../{ProfileItemBackground.cs => ProfileItemContainer.cs} | 4 ++-- .../Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) rename osu.Game/Overlays/Profile/Sections/{ProfileItemBackground.cs => ProfileItemContainer.cs} (93%) diff --git a/osu.Game.Tests/Visual/Online/TestSceneUserProfileScores.cs b/osu.Game.Tests/Visual/Online/TestSceneUserProfileScores.cs index ff26611311..a303d88037 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneUserProfileScores.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneUserProfileScores.cs @@ -21,7 +21,7 @@ namespace osu.Game.Tests.Visual.Online { typeof(DrawableProfileScore), typeof(DrawableProfileWeightedScore), - typeof(ProfileItemBackground), + typeof(ProfileItemContainer), }; public TestSceneUserProfileScores() diff --git a/osu.Game/Overlays/Profile/Sections/Historical/DrawableMostPlayedBeatmap.cs b/osu.Game/Overlays/Profile/Sections/Historical/DrawableMostPlayedBeatmap.cs index 9040af3384..e75ad2f161 100644 --- a/osu.Game/Overlays/Profile/Sections/Historical/DrawableMostPlayedBeatmap.cs +++ b/osu.Game/Overlays/Profile/Sections/Historical/DrawableMostPlayedBeatmap.cs @@ -61,7 +61,7 @@ namespace osu.Game.Overlays.Profile.Sections.Historical CornerRadius = corner_radius, Children = new Drawable[] { - new ProfileItemBackground + new ProfileItemContainer { Child = new Container { diff --git a/osu.Game/Overlays/Profile/Sections/ProfileItemBackground.cs b/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs similarity index 93% rename from osu.Game/Overlays/Profile/Sections/ProfileItemBackground.cs rename to osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs index 4f8630c92d..8b6d4ea97d 100644 --- a/osu.Game/Overlays/Profile/Sections/ProfileItemBackground.cs +++ b/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs @@ -11,7 +11,7 @@ using System.Collections.Generic; namespace osu.Game.Overlays.Profile.Sections { - public class ProfileItemBackground : OsuHoverContainer + public class ProfileItemContainer : OsuHoverContainer { protected override IEnumerable EffectTargets => new[] { background }; protected override Container Content => content; @@ -19,7 +19,7 @@ namespace osu.Game.Overlays.Profile.Sections private readonly Box background; private readonly Container content; - public ProfileItemBackground() + public ProfileItemContainer() { RelativeSizeAxes = Axes.Both; Enabled.Value = true; //manually enabled, because we have no action diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs index 4d2334df5e..722b4d2dae 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs @@ -41,7 +41,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks [BackgroundDependencyLoader] private void load() { - AddInternal(new ProfileItemBackground + AddInternal(new ProfileItemContainer { Children = new Drawable[] { From 5f11084aedc4a6896f50d0e5a32ca7cf8540e653 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 19 Jan 2020 22:57:39 +0300 Subject: [PATCH 0882/1829] Refactor ProfileItemContainer to not use sounds --- .../Profile/Sections/ProfileItemContainer.cs | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs b/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs index 8b6d4ea97d..99cad26a64 100644 --- a/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs +++ b/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs @@ -5,28 +5,31 @@ using osu.Framework.Allocation; 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.Containers; -using System.Collections.Generic; +using osuTK.Graphics; namespace osu.Game.Overlays.Profile.Sections { - public class ProfileItemContainer : OsuHoverContainer + public class ProfileItemContainer : Container { - protected override IEnumerable EffectTargets => new[] { background }; + private const int hover_duration = 200; + protected override Container Content => content; + private Color4 idleColour; + private Color4 hoverColour; + private readonly Box background; private readonly Container content; public ProfileItemContainer() { RelativeSizeAxes = Axes.Both; - Enabled.Value = true; //manually enabled, because we have no action Masking = true; CornerRadius = 6; - base.Content.AddRange(new Drawable[] + AddRangeInternal(new Drawable[] { background = new Box { @@ -42,8 +45,20 @@ namespace osu.Game.Overlays.Profile.Sections [BackgroundDependencyLoader] private void load(OsuColour colours) { - IdleColour = colours.GreySeafoam; - HoverColour = colours.GreySeafoamLight; + background.Colour = idleColour = colours.GreySeafoam; + hoverColour = colours.GreySeafoamLight; + } + + protected override bool OnHover(HoverEvent e) + { + 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); } } } From 5a2ed5391d758674b63ed689b514240305add30e Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Sun, 19 Jan 2020 23:51:10 +0300 Subject: [PATCH 0883/1829] Update license year --- Directory.Build.props | 2 +- LICENCE | 2 +- osu.Desktop/osu.nuspec | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 27a0bd0d48..21b8b402e0 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -40,7 +40,7 @@ https://github.com/ppy/osu Automated release. ppy Pty Ltd - Copyright (c) 2019 ppy Pty Ltd + Copyright (c) 2020 ppy Pty Ltd osu game \ No newline at end of file diff --git a/LICENCE b/LICENCE index 21c6a7090f..2435c23545 100644 --- a/LICENCE +++ b/LICENCE @@ -1,4 +1,4 @@ -Copyright (c) 2019 ppy Pty Ltd . +Copyright (c) 2020 ppy Pty Ltd . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/osu.Desktop/osu.nuspec b/osu.Desktop/osu.nuspec index a26b35fcd5..a919d54f38 100644 --- a/osu.Desktop/osu.nuspec +++ b/osu.Desktop/osu.nuspec @@ -12,7 +12,7 @@ click the circles. to the beat. click the circles. testing - Copyright (c) 2019 ppy Pty Ltd + Copyright (c) 2020 ppy Pty Ltd en-AU From 43f144cd6a683abc85a6e51d47fc0f7471c8bd2b Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 20 Jan 2020 11:48:56 +0900 Subject: [PATCH 0884/1829] Invert condition --- osu.Game.Tournament/TournamentGameBase.cs | 24 +++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/osu.Game.Tournament/TournamentGameBase.cs b/osu.Game.Tournament/TournamentGameBase.cs index 8f9acfd5be..17d7dc0245 100644 --- a/osu.Game.Tournament/TournamentGameBase.cs +++ b/osu.Game.Tournament/TournamentGameBase.cs @@ -225,21 +225,21 @@ namespace osu.Game.Tournament { foreach (var b in r.Beatmaps.ToList()) { - if (b.BeatmapInfo == null) + if (b.BeatmapInfo != null) + continue; + + if (b.ID > 0) { - if (b.ID > 0) - { - var req = new GetBeatmapRequest(new BeatmapInfo { OnlineBeatmapID = b.ID }); - API.Perform(req); - b.BeatmapInfo = req.Result?.ToBeatmap(RulesetStore); + var req = new GetBeatmapRequest(new BeatmapInfo { OnlineBeatmapID = b.ID }); + API.Perform(req); + b.BeatmapInfo = req.Result?.ToBeatmap(RulesetStore); - addedInfo = true; - } - - if (b.BeatmapInfo == null) - // if online population couldn't be performed, ensure we don't leave a null value behind - r.Beatmaps.Remove(b); + addedInfo = true; } + + if (b.BeatmapInfo == null) + // if online population couldn't be performed, ensure we don't leave a null value behind + r.Beatmaps.Remove(b); } } From 6875b41f747c5d3ddfca05049e191c65c8bf1a8c Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 20 Jan 2020 07:47:49 +0300 Subject: [PATCH 0885/1829] Remove unnecessary setter --- osu.Game/Overlays/OverlayHeader.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index 1c787ec0e7..c9547bb5b8 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -25,7 +25,7 @@ namespace osu.Game.Overlays set => background.Height = value; } - protected OverlayColourScheme ColourScheme { get; private set; } + protected OverlayColourScheme ColourScheme { get; } protected OverlayHeader(OverlayColourScheme colourScheme) { From cd5290b03007d24d42c54d64558cd5b9f0528115 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 20 Jan 2020 13:50:27 +0900 Subject: [PATCH 0886/1829] Enforce using get-only auto property where possible --- .../Screens/Ladder/Components/ProgressionPath.cs | 4 ++-- osu.Game/Screens/Ranking/ResultModeButton.cs | 2 +- osu.Game/Screens/Select/BeatmapInfoWedge.cs | 2 +- osu.Game/Storyboards/Drawables/DrawableStoryboard.cs | 2 +- .../Storyboards/Drawables/DrawableStoryboardAnimation.cs | 2 +- osu.Game/Storyboards/Drawables/DrawableStoryboardLayer.cs | 2 +- osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs | 2 +- osu.sln.DotSettings | 5 +++-- 8 files changed, 11 insertions(+), 10 deletions(-) diff --git a/osu.Game.Tournament/Screens/Ladder/Components/ProgressionPath.cs b/osu.Game.Tournament/Screens/Ladder/Components/ProgressionPath.cs index 84a329085a..cb73985b11 100644 --- a/osu.Game.Tournament/Screens/Ladder/Components/ProgressionPath.cs +++ b/osu.Game.Tournament/Screens/Ladder/Components/ProgressionPath.cs @@ -10,8 +10,8 @@ namespace osu.Game.Tournament.Screens.Ladder.Components { public class ProgressionPath : Path { - public DrawableTournamentMatch Source { get; private set; } - public DrawableTournamentMatch Destination { get; private set; } + public DrawableTournamentMatch Source { get; } + public DrawableTournamentMatch Destination { get; } public ProgressionPath(DrawableTournamentMatch source, DrawableTournamentMatch destination) { diff --git a/osu.Game/Screens/Ranking/ResultModeButton.cs b/osu.Game/Screens/Ranking/ResultModeButton.cs index 38636b0c3b..d7eb5db125 100644 --- a/osu.Game/Screens/Ranking/ResultModeButton.cs +++ b/osu.Game/Screens/Ranking/ResultModeButton.cs @@ -92,6 +92,6 @@ namespace osu.Game.Screens.Ranking protected override void OnDeactivated() => colouredPart.FadeColour(inactiveColour, 200, Easing.OutQuint); - public string TooltipText { get; private set; } + public string TooltipText { get; } } } diff --git a/osu.Game/Screens/Select/BeatmapInfoWedge.cs b/osu.Game/Screens/Select/BeatmapInfoWedge.cs index 451708c1cf..b0d5be8140 100644 --- a/osu.Game/Screens/Select/BeatmapInfoWedge.cs +++ b/osu.Game/Screens/Select/BeatmapInfoWedge.cs @@ -363,7 +363,7 @@ namespace osu.Game.Screens.Select public class InfoLabel : Container, IHasTooltip { - public string TooltipText { get; private set; } + public string TooltipText { get; } public InfoLabel(BeatmapStatistic statistic) { diff --git a/osu.Game/Storyboards/Drawables/DrawableStoryboard.cs b/osu.Game/Storyboards/Drawables/DrawableStoryboard.cs index 7a84ac009a..94d7395ecf 100644 --- a/osu.Game/Storyboards/Drawables/DrawableStoryboard.cs +++ b/osu.Game/Storyboards/Drawables/DrawableStoryboard.cs @@ -14,7 +14,7 @@ namespace osu.Game.Storyboards.Drawables { public class DrawableStoryboard : Container { - public Storyboard Storyboard { get; private set; } + public Storyboard Storyboard { get; } protected override Container Content { get; } diff --git a/osu.Game/Storyboards/Drawables/DrawableStoryboardAnimation.cs b/osu.Game/Storyboards/Drawables/DrawableStoryboardAnimation.cs index ced3b9c1b6..eabb78bac5 100644 --- a/osu.Game/Storyboards/Drawables/DrawableStoryboardAnimation.cs +++ b/osu.Game/Storyboards/Drawables/DrawableStoryboardAnimation.cs @@ -15,7 +15,7 @@ namespace osu.Game.Storyboards.Drawables { public class DrawableStoryboardAnimation : TextureAnimation, IFlippable, IVectorScalable { - public StoryboardAnimation Animation { get; private set; } + public StoryboardAnimation Animation { get; } private bool flipH; diff --git a/osu.Game/Storyboards/Drawables/DrawableStoryboardLayer.cs b/osu.Game/Storyboards/Drawables/DrawableStoryboardLayer.cs index fd2d441f34..39f5418902 100644 --- a/osu.Game/Storyboards/Drawables/DrawableStoryboardLayer.cs +++ b/osu.Game/Storyboards/Drawables/DrawableStoryboardLayer.cs @@ -10,7 +10,7 @@ namespace osu.Game.Storyboards.Drawables { public class DrawableStoryboardLayer : LifetimeManagementContainer { - public StoryboardLayer Layer { get; private set; } + public StoryboardLayer Layer { get; } public bool Enabled; public override bool IsPresent => Enabled && base.IsPresent; diff --git a/osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs b/osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs index c0da0e9c0e..d8d3248659 100644 --- a/osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs +++ b/osu.Game/Storyboards/Drawables/DrawableStoryboardSprite.cs @@ -15,7 +15,7 @@ namespace osu.Game.Storyboards.Drawables { public class DrawableStoryboardSprite : Sprite, IFlippable, IVectorScalable { - public StoryboardSprite Sprite { get; private set; } + public StoryboardSprite Sprite { get; } private bool flipH; diff --git a/osu.sln.DotSettings b/osu.sln.DotSettings index 12571be31d..15ea20084d 100644 --- a/osu.sln.DotSettings +++ b/osu.sln.DotSettings @@ -19,8 +19,8 @@ HINT DO_NOT_SHOW HINT - HINT - HINT + WARNING + WARNING WARNING WARNING WARNING @@ -765,6 +765,7 @@ See the LICENCE file in the repository root for full licence text. <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + True True True From a27e2c574d003f72a956b892d195e1d416d6d6f2 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 20 Jan 2020 13:53:46 +0900 Subject: [PATCH 0887/1829] Update fastlane and plugins --- Gemfile.lock | 74 +++++++++++++++++++++++++++------------------------- 1 file changed, 38 insertions(+), 36 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index ab594aee74..e3954c2681 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ GEM remote: https://rubygems.org/ specs: - CFPropertyList (3.0.1) + CFPropertyList (3.0.2) addressable (2.7.0) public_suffix (>= 2.0.2, < 5.0) atomos (0.1.3) @@ -18,8 +18,8 @@ GEM unf (>= 0.0.5, < 1.0.0) dotenv (2.7.5) emoji_regex (1.0.1) - excon (0.67.0) - faraday (0.15.4) + excon (0.71.1) + faraday (0.17.3) multipart-post (>= 1.2, < 3) faraday-cookie_jar (0.0.6) faraday (>= 0.7.4) @@ -27,7 +27,7 @@ GEM faraday_middleware (0.13.1) faraday (>= 0.7.4, < 1.0) fastimage (2.1.7) - fastlane (2.133.0) + fastlane (2.140.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.3, < 3.0.0) babosa (>= 1.0.2, < 2.0.0) @@ -36,13 +36,13 @@ GEM commander-fastlane (>= 4.4.6, < 5.0.0) dotenv (>= 2.1.1, < 3.0.0) emoji_regex (>= 0.1, < 2.0) - excon (>= 0.45.0, < 1.0.0) - faraday (< 0.16.0) + excon (>= 0.71.0, < 1.0.0) + faraday (~> 0.17) faraday-cookie_jar (~> 0.0.6) - faraday_middleware (< 0.16.0) + faraday_middleware (~> 0.13.1) fastimage (>= 2.1.0, < 3.0.0) gh_inspector (>= 1.1.2, < 2.0.0) - google-api-client (>= 0.21.2, < 0.24.0) + google-api-client (>= 0.29.2, < 0.37.0) google-cloud-storage (>= 1.15.0, < 2.0.0) highline (>= 1.7.2, < 2.0.0) json (< 3.0.0) @@ -61,56 +61,58 @@ GEM tty-screen (>= 0.6.3, < 1.0.0) tty-spinner (>= 0.8.0, < 1.0.0) word_wrap (~> 1.0.0) - xcodeproj (>= 1.8.1, < 2.0.0) + xcodeproj (>= 1.13.0, < 2.0.0) xcpretty (~> 0.3.0) xcpretty-travis-formatter (>= 0.0.3) fastlane-plugin-clean_testflight_testers (0.3.0) - fastlane-plugin-souyuz (0.8.1) - souyuz (>= 0.8.1) + fastlane-plugin-souyuz (0.9.1) + souyuz (= 0.9.1) fastlane-plugin-xamarin (0.6.3) gh_inspector (1.1.3) - google-api-client (0.23.9) + google-api-client (0.36.4) addressable (~> 2.5, >= 2.5.1) - googleauth (>= 0.5, < 0.7.0) + googleauth (~> 0.9) httpclient (>= 2.8.1, < 3.0) - mime-types (~> 3.0) + mini_mime (~> 1.0) representable (~> 3.0) retriable (>= 2.0, < 4.0) - signet (~> 0.9) - google-cloud-core (1.3.1) + signet (~> 0.12) + google-cloud-core (1.5.0) google-cloud-env (~> 1.0) - google-cloud-env (1.2.1) + google-cloud-errors (~> 1.0) + google-cloud-env (1.3.0) faraday (~> 0.11) - google-cloud-storage (1.16.0) + google-cloud-errors (1.0.0) + google-cloud-storage (1.25.1) + addressable (~> 2.5) digest-crc (~> 0.4) - google-api-client (~> 0.23) + google-api-client (~> 0.33) google-cloud-core (~> 1.2) - googleauth (>= 0.6.2, < 0.10.0) - googleauth (0.6.7) + googleauth (~> 0.9) + mini_mime (~> 1.0) + googleauth (0.10.0) faraday (~> 0.12) jwt (>= 1.4, < 3.0) memoist (~> 0.16) multi_json (~> 1.11) os (>= 0.9, < 2.0) - signet (~> 0.7) + signet (~> 0.12) highline (1.7.10) http-cookie (1.0.3) domain_name (~> 0.5) httpclient (2.8.3) - json (2.2.0) + json (2.3.0) jwt (2.1.0) - memoist (0.16.0) - mime-types (3.3) - mime-types-data (~> 3.2015) - mime-types-data (3.2019.1009) - mini_magick (4.9.5) + memoist (0.16.2) + mini_magick (4.10.1) + mini_mime (1.0.2) mini_portile2 (2.4.0) - multi_json (1.13.1) + multi_json (1.14.1) multi_xml (0.6.0) multipart-post (2.0.0) nanaimo (0.2.6) naturally (2.2.0) - nokogiri (1.10.4) + nokogiri (1.10.7) mini_portile2 (~> 2.4.0) os (1.0.1) plist (3.5.0) @@ -128,12 +130,12 @@ GEM faraday (~> 0.9) jwt (>= 1.5, < 3.0) multi_json (~> 1.10) - simctl (1.6.6) + simctl (1.6.7) CFPropertyList naturally slack-notifier (2.3.2) - souyuz (0.8.1) - fastlane (>= 2.29.0) + souyuz (0.9.1) + fastlane (>= 1.103.0) highline (~> 1.7) nokogiri (~> 1.7) terminal-notifier (2.0.0) @@ -141,15 +143,15 @@ GEM unicode-display_width (~> 1.1, >= 1.1.1) tty-cursor (0.7.0) tty-screen (0.7.0) - tty-spinner (0.9.1) + tty-spinner (0.9.2) tty-cursor (~> 0.7) uber (0.1.0) unf (0.1.4) unf_ext unf_ext (0.0.7.6) - unicode-display_width (1.6.0) + unicode-display_width (1.6.1) word_wrap (1.0.0) - xcodeproj (1.12.0) + xcodeproj (1.14.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) From 11e7c8be3f3f3da461a65a22d1be2b5ec8017a7d Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 20 Jan 2020 08:34:46 +0300 Subject: [PATCH 0888/1829] Use colour schemes for OverlayRulesetSelector --- .../Online/TestSceneProfileRulesetSelector.cs | 3 +- .../TestSceneOverlayRulesetSelector.cs | 28 ++++++++++--------- osu.Game/Overlays/OverlayRulesetSelector.cs | 9 ++++-- .../Components/ProfileRulesetSelector.cs | 7 ++--- 4 files changed, 25 insertions(+), 22 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneProfileRulesetSelector.cs b/osu.Game.Tests/Visual/Online/TestSceneProfileRulesetSelector.cs index a36b6880d2..1a9dca51c9 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneProfileRulesetSelector.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneProfileRulesetSelector.cs @@ -11,6 +11,7 @@ using osu.Game.Rulesets.Osu; using osu.Game.Rulesets.Taiko; using osu.Game.Users; using osu.Framework.Bindables; +using osu.Game.Graphics; namespace osu.Game.Tests.Visual.Online { @@ -27,7 +28,7 @@ namespace osu.Game.Tests.Visual.Online ProfileRulesetSelector selector; var user = new Bindable(); - Child = selector = new ProfileRulesetSelector + Child = selector = new ProfileRulesetSelector(OverlayColourScheme.Green) { Anchor = Anchor.Centre, Origin = Anchor.Centre, diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayRulesetSelector.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayRulesetSelector.cs index 93aa414c94..bc5f66da0b 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayRulesetSelector.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayRulesetSelector.cs @@ -13,7 +13,8 @@ using osu.Game.Overlays; using osu.Game.Rulesets; using NUnit.Framework; using osu.Game.Graphics; -using osu.Framework.Allocation; +using osu.Framework.Graphics.Containers; +using osuTK; namespace osu.Game.Tests.Visual.UserInterface { @@ -25,19 +26,27 @@ namespace osu.Game.Tests.Visual.UserInterface typeof(OverlayRulesetTabItem), }; - [Resolved] - private OsuColour colours { get; set; } - private readonly OverlayRulesetSelector selector; private readonly Bindable ruleset = new Bindable(); public TestSceneOverlayRulesetSelector() { - Add(selector = new OverlayRulesetSelector + Add(new FillFlowContainer { Anchor = Anchor.Centre, Origin = Anchor.Centre, - Current = ruleset, + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Vertical, + Spacing = new Vector2(0, 5), + Children = new[] + { + selector = new OverlayRulesetSelector(OverlayColourScheme.Green) { Current = ruleset }, + new OverlayRulesetSelector(OverlayColourScheme.Blue) { Current = ruleset }, + new OverlayRulesetSelector(OverlayColourScheme.Orange) { Current = ruleset }, + new OverlayRulesetSelector(OverlayColourScheme.Pink) { Current = ruleset }, + new OverlayRulesetSelector(OverlayColourScheme.Purple) { Current = ruleset }, + new OverlayRulesetSelector(OverlayColourScheme.Red) { Current = ruleset } + } }); } @@ -56,12 +65,5 @@ namespace osu.Game.Tests.Visual.UserInterface AddStep("Select catch", () => ruleset.Value = new CatchRuleset().RulesetInfo); AddAssert("Check catch selected", () => selector.Current.Value.Equals(new CatchRuleset().RulesetInfo)); } - - [Test] - public void TestColours() - { - AddStep("Set colour to blue", () => selector.AccentColour = colours.Blue); - AddAssert("Check colour is blue", () => selector.AccentColour == colours.Blue); - } } } diff --git a/osu.Game/Overlays/OverlayRulesetSelector.cs b/osu.Game/Overlays/OverlayRulesetSelector.cs index da49335250..b70d6a08f2 100644 --- a/osu.Game/Overlays/OverlayRulesetSelector.cs +++ b/osu.Game/Overlays/OverlayRulesetSelector.cs @@ -28,16 +28,19 @@ namespace osu.Game.Overlays } } - public OverlayRulesetSelector() + protected OverlayColourScheme ColourScheme { get; } + + public OverlayRulesetSelector(OverlayColourScheme colourScheme) { + ColourScheme = colourScheme; + AutoSizeAxes = Axes.Both; } [BackgroundDependencyLoader] private void load(OsuColour colours) { - if (accentColour == default) - AccentColour = colours.Pink; + AccentColour = colours.ForOverlayElement(ColourScheme, 1, 0.7f); } protected override TabItem CreateTabItem(RulesetInfo value) => new OverlayRulesetTabItem(value); diff --git a/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetSelector.cs b/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetSelector.cs index e63102f989..f7e8d4b1f5 100644 --- a/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetSelector.cs +++ b/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetSelector.cs @@ -1,7 +1,6 @@ // 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.UserInterface; using osu.Game.Graphics; @@ -14,16 +13,14 @@ namespace osu.Game.Overlays.Profile.Header.Components { public readonly Bindable User = new Bindable(); - [BackgroundDependencyLoader] - private void load(OsuColour colours) + public ProfileRulesetSelector(OverlayColourScheme colourScheme) + : base(colourScheme) { - AccentColour = colours.Seafoam; } protected override void LoadComplete() { base.LoadComplete(); - User.BindValueChanged(u => SetDefaultRuleset(Rulesets.GetRuleset(u.NewValue?.PlayMode ?? "osu")), true); } From bfb056c612029c78fcb2676645a5fb1cda97884d Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 20 Jan 2020 18:17:21 +0900 Subject: [PATCH 0889/1829] Apply input method signature refactorings --- .../Edit/Blueprints/ManiaPlacementBlueprint.cs | 4 ++-- .../Edit/Blueprints/ManiaSelectionBlueprint.cs | 6 ++---- .../Components/PathControlPointPiece.cs | 8 +------- .../Sliders/SliderPlacementBlueprint.cs | 4 ++-- .../Sliders/SliderSelectionBlueprint.cs | 7 ++----- .../Components/DrawableTournamentMatch.cs | 5 ++--- .../Screens/Ladder/LadderDragContainer.cs | 3 +-- .../Containers/OsuFocusedOverlayContainer.cs | 4 ++-- .../Graphics/Containers/OsuScrollContainer.cs | 18 +++++++++--------- osu.Game/Graphics/Cursor/MenuCursor.cs | 4 ++-- .../Graphics/UserInterface/DialogButton.cs | 4 ++-- .../UserInterface/OsuAnimatedButton.cs | 4 ++-- osu.Game/Graphics/UserInterface/OsuButton.cs | 4 ++-- .../Graphics/UserInterface/OsuSliderBar.cs | 4 ++-- .../RetrievalFailurePlaceholder.cs | 4 ++-- .../Online/Placeholders/LoginPlaceholder.cs | 4 ++-- osu.Game/Overlays/Chat/Tabs/ChannelTabItem.cs | 7 ++----- osu.Game/Overlays/Chat/Tabs/TabCloseButton.cs | 4 ++-- osu.Game/Overlays/ChatOverlay.cs | 8 +++----- osu.Game/Overlays/KeyBinding/KeyBindingRow.cs | 16 +++++----------- osu.Game/Overlays/Mods/ModButton.cs | 4 +--- osu.Game/Overlays/Music/PlaylistItem.cs | 4 ++-- osu.Game/Overlays/Music/PlaylistList.cs | 16 ++++++++-------- osu.Game/Overlays/NowPlayingOverlay.cs | 7 +++---- .../Timelines/Summary/Parts/MarkerPart.cs | 8 +++++--- .../Compose/Components/BeatDivisorControl.cs | 7 +++---- .../Compose/Components/BlueprintContainer.cs | 15 +++++---------- .../Compose/Components/Timeline/Timeline.cs | 4 ++-- osu.Game/Screens/Menu/Button.cs | 4 ++-- osu.Game/Screens/Menu/OsuLogo.cs | 5 ++--- osu.Game/Screens/Play/GameplayMenuOverlay.cs | 4 +++- osu.Game/Screens/Play/HUD/HoldForMenuButton.cs | 3 +-- osu.Game/Screens/Play/KeyCounterMouse.cs | 4 ++-- osu.Game/Screens/Play/SkipOverlay.cs | 7 +++---- osu.Game/Screens/Select/FooterButton.cs | 4 ++-- .../Select/Options/BeatmapOptionsButton.cs | 4 ++-- 36 files changed, 95 insertions(+), 127 deletions(-) diff --git a/osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaPlacementBlueprint.cs b/osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaPlacementBlueprint.cs index b28d8bb0e6..7a3b42914e 100644 --- a/osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaPlacementBlueprint.cs +++ b/osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaPlacementBlueprint.cs @@ -54,10 +54,10 @@ namespace osu.Game.Rulesets.Mania.Edit.Blueprints return true; } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { EndPlacement(); - return base.OnMouseUp(e); + base.OnMouseUp(e); } public override void UpdatePosition(Vector2 screenSpacePosition) diff --git a/osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaSelectionBlueprint.cs b/osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaSelectionBlueprint.cs index 3bd7fb2d49..ff3dbe614a 100644 --- a/osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaSelectionBlueprint.cs +++ b/osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaSelectionBlueprint.cs @@ -55,14 +55,12 @@ namespace osu.Game.Rulesets.Mania.Edit.Blueprints return base.OnMouseDown(e); } - protected override bool OnDrag(DragEvent e) + protected override void OnDrag(DragEvent e) { - var result = base.OnDrag(e); + base.OnDrag(e); ScreenSpaceDragPosition = e.ScreenSpaceMousePosition; DragPosition = DrawableObject.ToLocalSpace(e.ScreenSpaceMousePosition); - - return result; } public override void Show() diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs index 6a0730db91..af4da5e853 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs @@ -135,13 +135,11 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components return false; } - protected override bool OnMouseUp(MouseUpEvent e) => RequestSelection != null; - protected override bool OnClick(ClickEvent e) => RequestSelection != null; protected override bool OnDragStart(DragStartEvent e) => e.Button == MouseButton.Left; - protected override bool OnDrag(DragEvent e) + protected override void OnDrag(DragEvent e) { if (ControlPoint == slider.Path.ControlPoints[0]) { @@ -158,12 +156,8 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components } else ControlPoint.Position.Value += e.Delta; - - return true; } - protected override bool OnDragEnd(DragEndEvent e) => true; - /// /// Updates the state of the circular control point marker. /// diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs index 2497e428fc..90512849d4 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs @@ -106,11 +106,11 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders return true; } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { if (state == PlacementState.Body && e.Button == MouseButton.Right) endCurve(); - return base.OnMouseUp(e); + base.OnMouseUp(e); } protected override bool OnDoubleClick(DoubleClickEvent e) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs index 3165c441fb..4fdead512a 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs @@ -90,19 +90,16 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders protected override bool OnDragStart(DragStartEvent e) => placementControlPointIndex != null; - protected override bool OnDrag(DragEvent e) + protected override void OnDrag(DragEvent e) { Debug.Assert(placementControlPointIndex != null); HitObject.Path.ControlPoints[placementControlPointIndex.Value].Position.Value = e.MousePosition - HitObject.Position; - - return true; } - protected override bool OnDragEnd(DragEndEvent e) + protected override void OnDragEnd(DragEndEvent e) { placementControlPointIndex = null; - return true; } private BindableList controlPoints => HitObject.Path.ControlPoints; diff --git a/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs b/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs index dde280ccd8..c4b670f059 100644 --- a/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs +++ b/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs @@ -289,16 +289,15 @@ namespace osu.Game.Tournament.Screens.Ladder.Components return true; } - protected override bool OnDrag(DragEvent e) + protected override void OnDrag(DragEvent e) { - if (base.OnDrag(e)) return true; + base.OnDrag(e); Selected = true; this.MoveToOffset(e.Delta); var pos = Position; Match.Position.Value = new Point((int)pos.X, (int)pos.Y); - return true; } public void Remove() diff --git a/osu.Game.Tournament/Screens/Ladder/LadderDragContainer.cs b/osu.Game.Tournament/Screens/Ladder/LadderDragContainer.cs index 0c450a66b4..bdaa1ae7fd 100644 --- a/osu.Game.Tournament/Screens/Ladder/LadderDragContainer.cs +++ b/osu.Game.Tournament/Screens/Ladder/LadderDragContainer.cs @@ -22,10 +22,9 @@ namespace osu.Game.Tournament.Screens.Ladder protected override bool ComputeIsMaskedAway(RectangleF maskingBounds) => false; - protected override bool OnDrag(DragEvent e) + protected override void OnDrag(DragEvent e) { this.MoveTo(target += e.Delta, 1000, Easing.OutQuint); - return true; } private const float min_scale = 0.6f; diff --git a/osu.Game/Graphics/Containers/OsuFocusedOverlayContainer.cs b/osu.Game/Graphics/Containers/OsuFocusedOverlayContainer.cs index facf70b47a..7c2c1e5c67 100644 --- a/osu.Game/Graphics/Containers/OsuFocusedOverlayContainer.cs +++ b/osu.Game/Graphics/Containers/OsuFocusedOverlayContainer.cs @@ -76,12 +76,12 @@ namespace osu.Game.Graphics.Containers return base.OnMouseDown(e); } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { if (closeOnMouseUp && !base.ReceivePositionalInputAt(e.ScreenSpaceMousePosition)) Hide(); - return base.OnMouseUp(e); + base.OnMouseUp(e); } public virtual bool OnPressed(GlobalAction action) diff --git a/osu.Game/Graphics/Containers/OsuScrollContainer.cs b/osu.Game/Graphics/Containers/OsuScrollContainer.cs index cfd459da5e..6d531887ed 100644 --- a/osu.Game/Graphics/Containers/OsuScrollContainer.cs +++ b/osu.Game/Graphics/Containers/OsuScrollContainer.cs @@ -50,15 +50,15 @@ namespace osu.Game.Graphics.Containers return base.OnMouseDown(e); } - protected override bool OnDrag(DragEvent e) + protected override void OnDrag(DragEvent e) { if (rightMouseDragging) { scrollFromMouseEvent(e); - return true; + return; } - return base.OnDrag(e); + base.OnDrag(e); } protected override bool OnDragStart(DragStartEvent e) @@ -72,15 +72,15 @@ namespace osu.Game.Graphics.Containers return base.OnDragStart(e); } - protected override bool OnDragEnd(DragEndEvent e) + protected override void OnDragEnd(DragEndEvent e) { if (rightMouseDragging) { rightMouseDragging = false; - return true; + return; } - return base.OnDragEnd(e); + base.OnDragEnd(e); } protected override bool OnScroll(ScrollEvent e) @@ -162,13 +162,13 @@ namespace osu.Game.Graphics.Containers return true; } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { - if (e.Button != MouseButton.Left) return false; + if (e.Button != MouseButton.Left) return; box.FadeColour(Color4.White, 100); - return base.OnMouseUp(e); + base.OnMouseUp(e); } } } diff --git a/osu.Game/Graphics/Cursor/MenuCursor.cs b/osu.Game/Graphics/Cursor/MenuCursor.cs index 170ea63059..580177d17a 100644 --- a/osu.Game/Graphics/Cursor/MenuCursor.cs +++ b/osu.Game/Graphics/Cursor/MenuCursor.cs @@ -92,7 +92,7 @@ namespace osu.Game.Graphics.Cursor return base.OnMouseDown(e); } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { if (!e.IsPressed(MouseButton.Left) && !e.IsPressed(MouseButton.Right)) { @@ -107,7 +107,7 @@ namespace osu.Game.Graphics.Cursor dragRotationState = DragRotationState.NotDragging; } - return base.OnMouseUp(e); + base.OnMouseUp(e); } protected override void PopIn() diff --git a/osu.Game/Graphics/UserInterface/DialogButton.cs b/osu.Game/Graphics/UserInterface/DialogButton.cs index aed07e56ee..9b53ee7b2d 100644 --- a/osu.Game/Graphics/UserInterface/DialogButton.cs +++ b/osu.Game/Graphics/UserInterface/DialogButton.cs @@ -232,11 +232,11 @@ namespace osu.Game.Graphics.UserInterface return base.OnMouseDown(e); } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { if (Selected.Value) colourContainer.ResizeWidthTo(hover_width, click_duration, Easing.In); - return base.OnMouseUp(e); + base.OnMouseUp(e); } protected override bool OnHover(HoverEvent e) diff --git a/osu.Game/Graphics/UserInterface/OsuAnimatedButton.cs b/osu.Game/Graphics/UserInterface/OsuAnimatedButton.cs index 660bd7979f..cfcf034d1c 100644 --- a/osu.Game/Graphics/UserInterface/OsuAnimatedButton.cs +++ b/osu.Game/Graphics/UserInterface/OsuAnimatedButton.cs @@ -107,10 +107,10 @@ namespace osu.Game.Graphics.UserInterface return base.OnMouseDown(e); } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { Content.ScaleTo(1, 1000, Easing.OutElastic); - return base.OnMouseUp(e); + base.OnMouseUp(e); } } } diff --git a/osu.Game/Graphics/UserInterface/OsuButton.cs b/osu.Game/Graphics/UserInterface/OsuButton.cs index c6a9aa1c97..9cf8f02024 100644 --- a/osu.Game/Graphics/UserInterface/OsuButton.cs +++ b/osu.Game/Graphics/UserInterface/OsuButton.cs @@ -129,10 +129,10 @@ namespace osu.Game.Graphics.UserInterface return base.OnMouseDown(e); } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { Content.ScaleTo(1, 1000, Easing.OutElastic); - return base.OnMouseUp(e); + base.OnMouseUp(e); } protected virtual SpriteText CreateText() => new OsuSpriteText diff --git a/osu.Game/Graphics/UserInterface/OsuSliderBar.cs b/osu.Game/Graphics/UserInterface/OsuSliderBar.cs index 958390d5d2..2112aac6a3 100644 --- a/osu.Game/Graphics/UserInterface/OsuSliderBar.cs +++ b/osu.Game/Graphics/UserInterface/OsuSliderBar.cs @@ -128,10 +128,10 @@ namespace osu.Game.Graphics.UserInterface return base.OnMouseDown(e); } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { Nub.Current.Value = false; - return base.OnMouseUp(e); + base.OnMouseUp(e); } protected override void OnUserChange(T value) diff --git a/osu.Game/Online/Leaderboards/RetrievalFailurePlaceholder.cs b/osu.Game/Online/Leaderboards/RetrievalFailurePlaceholder.cs index 15d7dabe65..d109f28e72 100644 --- a/osu.Game/Online/Leaderboards/RetrievalFailurePlaceholder.cs +++ b/osu.Game/Online/Leaderboards/RetrievalFailurePlaceholder.cs @@ -55,10 +55,10 @@ namespace osu.Game.Online.Leaderboards return base.OnMouseDown(e); } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { icon.ScaleTo(1, 1000, Easing.OutElastic); - return base.OnMouseUp(e); + base.OnMouseUp(e); } } } diff --git a/osu.Game/Online/Placeholders/LoginPlaceholder.cs b/osu.Game/Online/Placeholders/LoginPlaceholder.cs index ffc6623229..591eb976e2 100644 --- a/osu.Game/Online/Placeholders/LoginPlaceholder.cs +++ b/osu.Game/Online/Placeholders/LoginPlaceholder.cs @@ -31,10 +31,10 @@ namespace osu.Game.Online.Placeholders return base.OnMouseDown(e); } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { this.ScaleTo(1, 1000, Easing.OutElastic); - return base.OnMouseUp(e); + base.OnMouseUp(e); } protected override bool OnClick(ClickEvent e) diff --git a/osu.Game/Overlays/Chat/Tabs/ChannelTabItem.cs b/osu.Game/Overlays/Chat/Tabs/ChannelTabItem.cs index 266e68f17e..09dc06b95f 100644 --- a/osu.Game/Overlays/Chat/Tabs/ChannelTabItem.cs +++ b/osu.Game/Overlays/Chat/Tabs/ChannelTabItem.cs @@ -141,16 +141,13 @@ namespace osu.Game.Overlays.Chat.Tabs updateState(); } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { switch (e.Button) { case MouseButton.Middle: CloseButton.Click(); - return true; - - default: - return false; + break; } } diff --git a/osu.Game/Overlays/Chat/Tabs/TabCloseButton.cs b/osu.Game/Overlays/Chat/Tabs/TabCloseButton.cs index bde930d4fb..178afda5ac 100644 --- a/osu.Game/Overlays/Chat/Tabs/TabCloseButton.cs +++ b/osu.Game/Overlays/Chat/Tabs/TabCloseButton.cs @@ -34,10 +34,10 @@ namespace osu.Game.Overlays.Chat.Tabs return base.OnMouseDown(e); } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { icon.ScaleTo(0.75f, 1000, Easing.OutElastic); - return base.OnMouseUp(e); + base.OnMouseUp(e); } protected override bool OnHover(HoverEvent e) diff --git a/osu.Game/Overlays/ChatOverlay.cs b/osu.Game/Overlays/ChatOverlay.cs index 45d311df28..2c0fa49b5d 100644 --- a/osu.Game/Overlays/ChatOverlay.cs +++ b/osu.Game/Overlays/ChatOverlay.cs @@ -299,7 +299,7 @@ namespace osu.Game.Overlays return true; } - protected override bool OnDrag(DragEvent e) + protected override void OnDrag(DragEvent e) { if (isDragging) { @@ -311,14 +311,12 @@ namespace osu.Game.Overlays ChatHeight.Value = targetChatHeight; } - - return true; } - protected override bool OnDragEnd(DragEndEvent e) + protected override void OnDragEnd(DragEndEvent e) { isDragging = false; - return base.OnDragEnd(e); + base.OnDragEnd(e); } private void selectTab(int index) diff --git a/osu.Game/Overlays/KeyBinding/KeyBindingRow.cs b/osu.Game/Overlays/KeyBinding/KeyBindingRow.cs index 8317951c8a..a35fa016a9 100644 --- a/osu.Game/Overlays/KeyBinding/KeyBindingRow.cs +++ b/osu.Game/Overlays/KeyBinding/KeyBindingRow.cs @@ -177,17 +177,19 @@ namespace osu.Game.Overlays.KeyBinding return true; } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { // don't do anything until the last button is released. if (!HasFocus || e.HasAnyButtonPressed) - return base.OnMouseUp(e); + { + base.OnMouseUp(e); + return; + } if (bindTarget.IsHovered) finalise(); else updateBindTarget(); - return true; } protected override bool OnScroll(ScrollEvent e) @@ -313,14 +315,6 @@ namespace osu.Game.Overlays.KeyBinding Size = new Vector2(80, 20); } - protected override bool OnMouseUp(MouseUpEvent e) - { - base.OnMouseUp(e); - - // without this, the mouse up triggers a finalise (and deselection) of the current binding target. - return true; - } - [BackgroundDependencyLoader] private void load(OsuColour colours) { diff --git a/osu.Game/Overlays/Mods/ModButton.cs b/osu.Game/Overlays/Mods/ModButton.cs index 77ef08f52d..e574828cd2 100644 --- a/osu.Game/Overlays/Mods/ModButton.cs +++ b/osu.Game/Overlays/Mods/ModButton.cs @@ -158,7 +158,7 @@ namespace osu.Game.Overlays.Mods return base.OnMouseDown(e); } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { scaleContainer.ScaleTo(1, 500, Easing.OutElastic); @@ -172,8 +172,6 @@ namespace osu.Game.Overlays.Mods break; } } - - return true; } protected override bool OnClick(ClickEvent e) diff --git a/osu.Game/Overlays/Music/PlaylistItem.cs b/osu.Game/Overlays/Music/PlaylistItem.cs index 29b6ae00f3..d40f391982 100644 --- a/osu.Game/Overlays/Music/PlaylistItem.cs +++ b/osu.Game/Overlays/Music/PlaylistItem.cs @@ -43,10 +43,10 @@ namespace osu.Game.Overlays.Music return base.OnMouseDown(e); } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { IsDraggable = false; - return base.OnMouseUp(e); + base.OnMouseUp(e); } private bool selected; diff --git a/osu.Game/Overlays/Music/PlaylistList.cs b/osu.Game/Overlays/Music/PlaylistList.cs index 3cd04ac809..7bdcab6dff 100644 --- a/osu.Game/Overlays/Music/PlaylistList.cs +++ b/osu.Game/Overlays/Music/PlaylistList.cs @@ -136,29 +136,29 @@ namespace osu.Game.Overlays.Music return draggedItem != null || base.OnDragStart(e); } - protected override bool OnDrag(DragEvent e) + protected override void OnDrag(DragEvent e) { nativeDragPosition = e.ScreenSpaceMousePosition; - if (draggedItem == null) - return base.OnDrag(e); - return true; + if (draggedItem == null) + base.OnDrag(e); } - protected override bool OnDragEnd(DragEndEvent e) + protected override void OnDragEnd(DragEndEvent e) { nativeDragPosition = e.ScreenSpaceMousePosition; if (draggedItem == null) - return base.OnDragEnd(e); + { + base.OnDragEnd(e); + return; + } if (dragDestination != null) musicController.ChangeBeatmapSetPosition(draggedItem.BeatmapSetInfo, dragDestination.Value); draggedItem = null; dragDestination = null; - - return true; } protected override void Update() diff --git a/osu.Game/Overlays/NowPlayingOverlay.cs b/osu.Game/Overlays/NowPlayingOverlay.cs index a8ba7fa427..042e95c6d7 100644 --- a/osu.Game/Overlays/NowPlayingOverlay.cs +++ b/osu.Game/Overlays/NowPlayingOverlay.cs @@ -385,7 +385,7 @@ namespace osu.Game.Overlays return true; } - protected override bool OnDrag(DragEvent e) + protected override void OnDrag(DragEvent e) { Vector2 change = e.MousePosition - e.MouseDownPosition; @@ -393,13 +393,12 @@ namespace osu.Game.Overlays change *= change.Length <= 0 ? 0 : MathF.Pow(change.Length, 0.7f) / change.Length; this.MoveTo(change); - return true; } - protected override bool OnDragEnd(DragEndEvent e) + protected override void OnDragEnd(DragEndEvent e) { this.MoveTo(Vector2.Zero, 800, Easing.OutElastic); - return base.OnDragEnd(e); + base.OnDragEnd(e); } } diff --git a/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/MarkerPart.cs b/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/MarkerPart.cs index 79ada40a89..d03cc8a0e8 100644 --- a/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/MarkerPart.cs +++ b/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/MarkerPart.cs @@ -32,12 +32,14 @@ namespace osu.Game.Screens.Edit.Components.Timelines.Summary.Parts } protected override bool OnDragStart(DragStartEvent e) => true; - protected override bool OnDragEnd(DragEndEvent e) => true; - protected override bool OnDrag(DragEvent e) + protected override void OnDragEnd(DragEndEvent e) + { + } + + protected override void OnDrag(DragEvent e) { seekToPosition(e.ScreenSpaceMousePosition); - return true; } protected override bool OnMouseDown(MouseDownEvent e) diff --git a/osu.Game/Screens/Edit/Compose/Components/BeatDivisorControl.cs b/osu.Game/Screens/Edit/Compose/Components/BeatDivisorControl.cs index 42773ef687..8201ec2710 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BeatDivisorControl.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BeatDivisorControl.cs @@ -262,10 +262,10 @@ namespace osu.Game.Screens.Edit.Compose.Components return base.OnMouseDown(e); } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { marker.Active = false; - return base.OnMouseUp(e); + base.OnMouseUp(e); } protected override bool OnClick(ClickEvent e) @@ -274,10 +274,9 @@ namespace osu.Game.Screens.Edit.Compose.Components return true; } - protected override bool OnDrag(DragEvent e) + protected override void OnDrag(DragEvent e) { handleMouseInput(e.ScreenSpaceMousePosition); - return true; } private void handleMouseInput(Vector2 screenSpaceMousePosition) diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index cafaddc39e..0679174fc8 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -129,11 +129,10 @@ namespace osu.Game.Screens.Edit.Compose.Components return true; } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { // Special case for when a drag happened instead of a click Schedule(() => endClickSelection()); - return e.Button == MouseButton.Left; } protected override bool OnMouseMove(MouseMoveEvent e) @@ -161,29 +160,25 @@ namespace osu.Game.Screens.Edit.Compose.Components return true; } - protected override bool OnDrag(DragEvent e) + protected override void OnDrag(DragEvent e) { if (e.Button == MouseButton.Right) - return false; + return; if (!moveCurrentSelection(e)) dragBox.UpdateDrag(e); - - return true; } - protected override bool OnDragEnd(DragEndEvent e) + protected override void OnDragEnd(DragEndEvent e) { if (e.Button == MouseButton.Right) - return false; + return; if (!finishSelectionMovement()) { dragBox.FadeOut(250, Easing.OutQuint); selectionHandler.UpdateVisibility(); } - - return true; } protected override bool OnKeyDown(KeyDownEvent e) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs index b4f3b1f610..b8acc1ab44 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs @@ -143,10 +143,10 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline return false; } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { endUserDrag(); - return base.OnMouseUp(e); + base.OnMouseUp(e); } private void beginUserDrag() diff --git a/osu.Game/Screens/Menu/Button.cs b/osu.Game/Screens/Menu/Button.cs index fac6b69e1f..6708ce0ba0 100644 --- a/osu.Game/Screens/Menu/Button.cs +++ b/osu.Game/Screens/Menu/Button.cs @@ -194,10 +194,10 @@ namespace osu.Game.Screens.Menu return base.OnMouseDown(e); } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { boxHoverLayer.FadeTo(0, 1000, Easing.OutQuint); - return base.OnMouseUp(e); + base.OnMouseUp(e); } protected override bool OnClick(ClickEvent e) diff --git a/osu.Game/Screens/Menu/OsuLogo.cs b/osu.Game/Screens/Menu/OsuLogo.cs index 33b6ee8025..be2f29cbe9 100644 --- a/osu.Game/Screens/Menu/OsuLogo.cs +++ b/osu.Game/Screens/Menu/OsuLogo.cs @@ -353,12 +353,11 @@ namespace osu.Game.Screens.Menu return true; } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { - if (e.Button != MouseButton.Left) return false; + if (e.Button != MouseButton.Left) return; logoBounceContainer.ScaleTo(1f, 500, Easing.OutElastic); - return true; } protected override bool OnClick(ClickEvent e) diff --git a/osu.Game/Screens/Play/GameplayMenuOverlay.cs b/osu.Game/Screens/Play/GameplayMenuOverlay.cs index adfbe977a4..b968f96414 100644 --- a/osu.Game/Screens/Play/GameplayMenuOverlay.cs +++ b/osu.Game/Screens/Play/GameplayMenuOverlay.cs @@ -163,7 +163,9 @@ namespace osu.Game.Screens.Play // Don't let mouse down events through the overlay or people can click circles while paused. protected override bool OnMouseDown(MouseDownEvent e) => true; - protected override bool OnMouseUp(MouseUpEvent e) => true; + protected override void OnMouseUp(MouseUpEvent e) + { + } protected override bool OnMouseMove(MouseMoveEvent e) => true; diff --git a/osu.Game/Screens/Play/HUD/HoldForMenuButton.cs b/osu.Game/Screens/Play/HUD/HoldForMenuButton.cs index 7946e6d322..5d7b2a084d 100644 --- a/osu.Game/Screens/Play/HUD/HoldForMenuButton.cs +++ b/osu.Game/Screens/Play/HUD/HoldForMenuButton.cs @@ -278,11 +278,10 @@ namespace osu.Game.Screens.Play.HUD return true; } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { if (!e.HasAnyButtonPressed) AbortConfirm(); - return true; } } } diff --git a/osu.Game/Screens/Play/KeyCounterMouse.cs b/osu.Game/Screens/Play/KeyCounterMouse.cs index 828441de6e..e55525c5e8 100644 --- a/osu.Game/Screens/Play/KeyCounterMouse.cs +++ b/osu.Game/Screens/Play/KeyCounterMouse.cs @@ -45,10 +45,10 @@ namespace osu.Game.Screens.Play return base.OnMouseDown(e); } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { if (e.Button == Button) IsLit = false; - return base.OnMouseUp(e); + base.OnMouseUp(e); } } } diff --git a/osu.Game/Screens/Play/SkipOverlay.cs b/osu.Game/Screens/Play/SkipOverlay.cs index 772d326c7f..c6324b6db5 100644 --- a/osu.Game/Screens/Play/SkipOverlay.cs +++ b/osu.Game/Screens/Play/SkipOverlay.cs @@ -202,10 +202,9 @@ namespace osu.Game.Screens.Play return true; } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { Show(); - return true; } public override void Hide() => State = Visibility.Hidden; @@ -311,10 +310,10 @@ namespace osu.Game.Screens.Play return base.OnMouseDown(e); } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { aspect.ScaleTo(1, 1000, Easing.OutElastic); - return base.OnMouseUp(e); + base.OnMouseUp(e); } protected override bool OnClick(ClickEvent e) diff --git a/osu.Game/Screens/Select/FooterButton.cs b/osu.Game/Screens/Select/FooterButton.cs index b77da36748..4dcab60548 100644 --- a/osu.Game/Screens/Select/FooterButton.cs +++ b/osu.Game/Screens/Select/FooterButton.cs @@ -118,10 +118,10 @@ namespace osu.Game.Screens.Select return base.OnMouseDown(e); } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { box.FadeOut(Footer.TRANSITION_LENGTH, Easing.OutQuint); - return base.OnMouseUp(e); + base.OnMouseUp(e); } protected override bool OnClick(ClickEvent e) diff --git a/osu.Game/Screens/Select/Options/BeatmapOptionsButton.cs b/osu.Game/Screens/Select/Options/BeatmapOptionsButton.cs index ff9beafb23..4e4653cb57 100644 --- a/osu.Game/Screens/Select/Options/BeatmapOptionsButton.cs +++ b/osu.Game/Screens/Select/Options/BeatmapOptionsButton.cs @@ -60,10 +60,10 @@ namespace osu.Game.Screens.Select.Options return base.OnMouseDown(e); } - protected override bool OnMouseUp(MouseUpEvent e) + protected override void OnMouseUp(MouseUpEvent e) { flash.FadeTo(0, 1000, Easing.OutQuint); - return base.OnMouseUp(e); + base.OnMouseUp(e); } protected override bool OnClick(ClickEvent e) From 4a5e8559537f696a2d27f96ec0475f27a7080736 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 20 Jan 2020 12:21:21 +0300 Subject: [PATCH 0890/1829] Rename test scene --- .../{TestSceneOverlayHeaders.cs => TestSceneOverlayHeader.cs} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename osu.Game.Tests/Visual/UserInterface/{TestSceneOverlayHeaders.cs => TestSceneOverlayHeader.cs} (98%) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeaders.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeader.cs similarity index 98% rename from osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeaders.cs rename to osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeader.cs index 09326247f3..b015007f69 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeaders.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeader.cs @@ -17,7 +17,7 @@ using osuTK.Graphics; namespace osu.Game.Tests.Visual.UserInterface { - public class TestSceneOverlayHeaders : OsuTestScene + public class TestSceneOverlayHeader : OsuTestScene { public override IReadOnlyList RequiredTypes => new[] { @@ -33,7 +33,7 @@ namespace osu.Game.Tests.Visual.UserInterface private readonly FillFlowContainer flow; - public TestSceneOverlayHeaders() + public TestSceneOverlayHeader() { AddRange(new Drawable[] { From 843feb4e0879d98e852c4f780a5c17ff8d807aca Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 20 Jan 2020 12:26:14 +0300 Subject: [PATCH 0891/1829] Add more xmldoc to ControllableOverlayHeader --- osu.Game/Overlays/ControllableOverlayHeader.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/osu.Game/Overlays/ControllableOverlayHeader.cs b/osu.Game/Overlays/ControllableOverlayHeader.cs index 3117990699..de0431340f 100644 --- a/osu.Game/Overlays/ControllableOverlayHeader.cs +++ b/osu.Game/Overlays/ControllableOverlayHeader.cs @@ -11,6 +11,9 @@ using osuTK.Graphics; namespace osu.Game.Overlays { + /// + /// which contains . + /// /// The type of item to be represented by tabs in . public abstract class ControllableOverlayHeader : OverlayHeader { From 1b1003bd731bf3797b5c47ed9eb6eacea7db595a Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 20 Jan 2020 18:31:25 +0900 Subject: [PATCH 0892/1829] Refactor --- .../Edit/Components/Timelines/Summary/Parts/MarkerPart.cs | 4 ---- osu.Game/Screens/Play/GameplayMenuOverlay.cs | 4 ---- 2 files changed, 8 deletions(-) diff --git a/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/MarkerPart.cs b/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/MarkerPart.cs index d03cc8a0e8..5d638d7919 100644 --- a/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/MarkerPart.cs +++ b/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/MarkerPart.cs @@ -33,10 +33,6 @@ namespace osu.Game.Screens.Edit.Components.Timelines.Summary.Parts protected override bool OnDragStart(DragStartEvent e) => true; - protected override void OnDragEnd(DragEndEvent e) - { - } - protected override void OnDrag(DragEvent e) { seekToPosition(e.ScreenSpaceMousePosition); diff --git a/osu.Game/Screens/Play/GameplayMenuOverlay.cs b/osu.Game/Screens/Play/GameplayMenuOverlay.cs index b968f96414..f0fec41e46 100644 --- a/osu.Game/Screens/Play/GameplayMenuOverlay.cs +++ b/osu.Game/Screens/Play/GameplayMenuOverlay.cs @@ -163,10 +163,6 @@ namespace osu.Game.Screens.Play // Don't let mouse down events through the overlay or people can click circles while paused. protected override bool OnMouseDown(MouseDownEvent e) => true; - protected override void OnMouseUp(MouseUpEvent e) - { - } - protected override bool OnMouseMove(MouseMoveEvent e) => true; protected void AddButton(string text, Color4 colour, Action action) From 40f502c6d13e163cf2d93ebedf5b2ae6ab38d57d Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 20 Jan 2020 19:35:37 +0900 Subject: [PATCH 0893/1829] Apply input method signature refactorings --- osu.Game/Overlays/KeyBinding/KeyBindingRow.cs | 9 ++++++--- .../Edit/Compose/Components/BlueprintContainer.cs | 2 -- osu.Game/Screens/Play/KeyCounterKeyboard.cs | 4 ++-- osu.Game/Screens/Select/FooterButtonRandom.cs | 4 ++-- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/osu.Game/Overlays/KeyBinding/KeyBindingRow.cs b/osu.Game/Overlays/KeyBinding/KeyBindingRow.cs index 8317951c8a..02ddd1505e 100644 --- a/osu.Game/Overlays/KeyBinding/KeyBindingRow.cs +++ b/osu.Game/Overlays/KeyBinding/KeyBindingRow.cs @@ -216,12 +216,15 @@ namespace osu.Game.Overlays.KeyBinding return true; } - protected override bool OnKeyUp(KeyUpEvent e) + protected override void OnKeyUp(KeyUpEvent e) { - if (!HasFocus) return base.OnKeyUp(e); + if (!HasFocus) + { + base.OnKeyUp(e); + return; + } finalise(); - return true; } protected override bool OnJoystickPress(JoystickPressEvent e) diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index cafaddc39e..43e8cd96f8 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -201,8 +201,6 @@ namespace osu.Game.Screens.Edit.Compose.Components return false; } - protected override bool OnKeyUp(KeyUpEvent e) => false; - public bool OnPressed(PlatformAction action) { switch (action.ActionType) diff --git a/osu.Game/Screens/Play/KeyCounterKeyboard.cs b/osu.Game/Screens/Play/KeyCounterKeyboard.cs index 29188b6b59..187dcc1264 100644 --- a/osu.Game/Screens/Play/KeyCounterKeyboard.cs +++ b/osu.Game/Screens/Play/KeyCounterKeyboard.cs @@ -27,10 +27,10 @@ namespace osu.Game.Screens.Play return base.OnKeyDown(e); } - protected override bool OnKeyUp(KeyUpEvent e) + protected override void OnKeyUp(KeyUpEvent e) { if (e.Key == Key) IsLit = false; - return base.OnKeyUp(e); + base.OnKeyUp(e); } } } diff --git a/osu.Game/Screens/Select/FooterButtonRandom.cs b/osu.Game/Screens/Select/FooterButtonRandom.cs index 14c9eb2035..9bc5181f6f 100644 --- a/osu.Game/Screens/Select/FooterButtonRandom.cs +++ b/osu.Game/Screens/Select/FooterButtonRandom.cs @@ -44,11 +44,11 @@ namespace osu.Game.Screens.Select return base.OnKeyDown(e); } - protected override bool OnKeyUp(KeyUpEvent e) + protected override void OnKeyUp(KeyUpEvent e) { secondaryActive = e.ShiftPressed; updateText(); - return base.OnKeyUp(e); + base.OnKeyUp(e); } private void updateText() From b62e3addf378ad05bbb3733d22ad347c594f3e82 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 20 Jan 2020 20:30:25 +0900 Subject: [PATCH 0894/1829] Apply input method signature refactorings --- osu.Game/Overlays/KeyBinding/KeyBindingRow.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/KeyBinding/KeyBindingRow.cs b/osu.Game/Overlays/KeyBinding/KeyBindingRow.cs index 8317951c8a..cbaa9fb718 100644 --- a/osu.Game/Overlays/KeyBinding/KeyBindingRow.cs +++ b/osu.Game/Overlays/KeyBinding/KeyBindingRow.cs @@ -235,13 +235,15 @@ namespace osu.Game.Overlays.KeyBinding return true; } - protected override bool OnJoystickRelease(JoystickReleaseEvent e) + protected override void OnJoystickRelease(JoystickReleaseEvent e) { if (!HasFocus) - return base.OnJoystickRelease(e); + { + base.OnJoystickRelease(e); + return; + } finalise(); - return true; } private void clear() From 1becbb072efa33543373fa14bad51b9aab287078 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 20 Jan 2020 23:26:21 +0900 Subject: [PATCH 0895/1829] Remove broken test --- .../Editor/TestSceneBlueprintContainer.cs | 20 ------------------- 1 file changed, 20 deletions(-) delete mode 100644 osu.Game.Tests/Editor/TestSceneBlueprintContainer.cs diff --git a/osu.Game.Tests/Editor/TestSceneBlueprintContainer.cs b/osu.Game.Tests/Editor/TestSceneBlueprintContainer.cs deleted file mode 100644 index a230e5221f..0000000000 --- a/osu.Game.Tests/Editor/TestSceneBlueprintContainer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. -// See the LICENCE file in the repository root for full licence text. - -using System.Collections.Generic; -using NUnit.Framework; -using osu.Game.Rulesets.Objects.Drawables; -using osu.Game.Screens.Edit.Compose.Components; -using osu.Game.Tests.Visual; - -namespace osu.Game.Tests.Editor -{ - public class TestSceneBlueprintContainer : EditorClockTestScene - { - [SetUp] - public void Setup() => Schedule(() => - { - Child = new ComposeBlueprintContainer(new List()); - }); - } -} From 740bdee125ca7b8ed7bd32c21026b31b19a36333 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 20 Jan 2020 23:59:21 +0900 Subject: [PATCH 0896/1829] Apply remaining uncaught changes --- osu.Game/Audio/SampleInfo.cs | 2 +- osu.Game/Graphics/UserInterface/HoverSounds.cs | 2 +- osu.Game/Graphics/UserInterface/ScoreCounter.cs | 6 +----- osu.Game/Storyboards/StoryboardSprite.cs | 2 +- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/osu.Game/Audio/SampleInfo.cs b/osu.Game/Audio/SampleInfo.cs index 66c07209f3..2406b0bef2 100644 --- a/osu.Game/Audio/SampleInfo.cs +++ b/osu.Game/Audio/SampleInfo.cs @@ -19,6 +19,6 @@ namespace osu.Game.Audio public IEnumerable LookupNames => new[] { sampleName }; - public int Volume { get; set; } = 100; + public int Volume { get; } = 100; } } diff --git a/osu.Game/Graphics/UserInterface/HoverSounds.cs b/osu.Game/Graphics/UserInterface/HoverSounds.cs index fcd8940348..40899e7e95 100644 --- a/osu.Game/Graphics/UserInterface/HoverSounds.cs +++ b/osu.Game/Graphics/UserInterface/HoverSounds.cs @@ -24,7 +24,7 @@ namespace osu.Game.Graphics.UserInterface /// /// Length of debounce for hover sound playback, in milliseconds. Default is 50ms. /// - public double HoverDebounceTime { get; set; } = 50; + public double HoverDebounceTime { get; } = 50; protected readonly HoverSampleSet SampleSet; diff --git a/osu.Game/Graphics/UserInterface/ScoreCounter.cs b/osu.Game/Graphics/UserInterface/ScoreCounter.cs index 24d8009f40..01d8edaecf 100644 --- a/osu.Game/Graphics/UserInterface/ScoreCounter.cs +++ b/osu.Game/Graphics/UserInterface/ScoreCounter.cs @@ -16,11 +16,7 @@ namespace osu.Game.Graphics.UserInterface /// /// How many leading zeroes the counter has. /// - public uint LeadingZeroes - { - get; - protected set; - } + public uint LeadingZeroes { get; } /// /// Displays score. diff --git a/osu.Game/Storyboards/StoryboardSprite.cs b/osu.Game/Storyboards/StoryboardSprite.cs index 22e1929419..f411ad04f3 100644 --- a/osu.Game/Storyboards/StoryboardSprite.cs +++ b/osu.Game/Storyboards/StoryboardSprite.cs @@ -16,7 +16,7 @@ namespace osu.Game.Storyboards private readonly List loops = new List(); private readonly List triggers = new List(); - public string Path { get; set; } + public string Path { get; } public bool IsDrawable => HasCommands; public Anchor Origin; From 41295bc27cb5100376a9007230d84e299bb18156 Mon Sep 17 00:00:00 2001 From: ProTheory8 Date: Mon, 20 Jan 2020 16:06:36 +0000 Subject: [PATCH 0897/1829] Difficulty Adjust mod customisation menu opens automatically now --- osu.Game/Overlays/Mods/ModSelectOverlay.cs | 1 + osu.Game/Rulesets/Mods/Mod.cs | 6 ++++++ osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs | 2 ++ 3 files changed, 9 insertions(+) diff --git a/osu.Game/Overlays/Mods/ModSelectOverlay.cs b/osu.Game/Overlays/Mods/ModSelectOverlay.cs index 7f07ce620c..cdc4a42b33 100644 --- a/osu.Game/Overlays/Mods/ModSelectOverlay.cs +++ b/osu.Game/Overlays/Mods/ModSelectOverlay.cs @@ -474,6 +474,7 @@ namespace osu.Game.Overlays.Mods { if (State.Value == Visibility.Visible) sampleOn?.Play(); DeselectTypes(selectedMod.IncompatibleMods, true); + if (selectedMod.RequiresConfiguration) ModSettingsContainer.Alpha = 1; } else { diff --git a/osu.Game/Rulesets/Mods/Mod.cs b/osu.Game/Rulesets/Mods/Mod.cs index e168171186..9ee19a433b 100644 --- a/osu.Game/Rulesets/Mods/Mod.cs +++ b/osu.Game/Rulesets/Mods/Mod.cs @@ -60,6 +60,12 @@ namespace osu.Game.Rulesets.Mods [JsonIgnore] public virtual bool Ranked => false; + /// + /// Returns true if this mod requires configuration. If true, opens mod customisation menu every time user enables mod. + /// + [JsonIgnore] + public virtual bool RequiresConfiguration => false; + /// /// The mods this mod cannot be enabled with. /// diff --git a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs index b74bf01d1b..d74e2ce2bc 100644 --- a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs @@ -24,6 +24,8 @@ namespace osu.Game.Rulesets.Mods public override double ScoreMultiplier => 1.0; + public override bool RequiresConfiguration => true; + public override Type[] IncompatibleMods => new[] { typeof(ModEasy), typeof(ModHardRock) }; [SettingSource("Drain Rate", "Override a beatmap's set HP.")] From 178a72f9b8dc4da9e5e30397869ddbfa466ae9c1 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 21 Jan 2020 05:24:49 +0300 Subject: [PATCH 0898/1829] Make OverlayTabControl inherited from OsuTabControl --- osu.Game/Overlays/OverlayTabControl.cs | 30 +++++--------------------- 1 file changed, 5 insertions(+), 25 deletions(-) diff --git a/osu.Game/Overlays/OverlayTabControl.cs b/osu.Game/Overlays/OverlayTabControl.cs index 812f8963c9..000cc4b113 100644 --- a/osu.Game/Overlays/OverlayTabControl.cs +++ b/osu.Game/Overlays/OverlayTabControl.cs @@ -13,34 +13,14 @@ using osuTK.Graphics; namespace osu.Game.Overlays { - public abstract class OverlayTabControl : TabControl + public abstract class OverlayTabControl : OsuTabControl { private readonly Box bar; - private Color4 accentColour = Color4.White; - - public Color4 AccentColour + public new Color4 AccentColour { - get => accentColour; - set - { - if (accentColour == value) - return; - - accentColour = value; - bar.Colour = value; - - foreach (TabItem tabItem in TabContainer) - { - ((OverlayTabItem)tabItem).AccentColour = value; - } - } - } - - public new MarginPadding Padding - { - get => TabContainer.Padding; - set => TabContainer.Padding = value; + get => base.AccentColour; + set => base.AccentColour = bar.Colour = value; } protected float BarHeight @@ -66,7 +46,7 @@ namespace osu.Game.Overlays protected override TabItem CreateTabItem(T value) => new OverlayTabItem(value); - protected class OverlayTabItem : TabItem + protected class OverlayTabItem : TabItem, IHasAccentColour { protected readonly ExpandingBar Bar; protected readonly OsuSpriteText Text; From 30edd80c8c9582e4607f300ebdf3de23b060f261 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 21 Jan 2020 06:00:12 +0300 Subject: [PATCH 0899/1829] Refactor OverlayHeader hierarchy --- .../UserInterface/TestSceneOverlayHeader.cs | 7 ++- .../Graphics/UserInterface/OsuTabControl.cs | 2 + .../BreadcrumbControlOverlayHeader.cs | 13 +---- .../Overlays/Changelog/ChangelogHeader.cs | 12 ++--- .../Overlays/ControllableOverlayHeader.cs | 49 ------------------- osu.Game/Overlays/News/NewsHeader.cs | 12 ++--- osu.Game/Overlays/OverlayTabControl.cs | 30 +++++++++--- osu.Game/Overlays/TabControlOverlayHeader.cs | 39 ++++++++++----- 8 files changed, 67 insertions(+), 97 deletions(-) delete mode 100644 osu.Game/Overlays/ControllableOverlayHeader.cs diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeader.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeader.cs index b015007f69..814a9ebf10 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeader.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeader.cs @@ -22,7 +22,6 @@ namespace osu.Game.Tests.Visual.UserInterface public override IReadOnlyList RequiredTypes => new[] { typeof(OverlayHeader), - typeof(ControllableOverlayHeader<>), typeof(TabControlOverlayHeader<>), typeof(BreadcrumbControlOverlayHeader), typeof(TestNoControlHeader), @@ -139,9 +138,9 @@ namespace osu.Game.Tests.Visual.UserInterface public TestBreadcrumbControlHeader(OverlayColourScheme colourScheme) : base(colourScheme) { - BreadcrumbControl.AddItem("tab1"); - BreadcrumbControl.AddItem("tab2"); - BreadcrumbControl.Current.Value = "tab2"; + TabControl.AddItem("tab1"); + TabControl.AddItem("tab2"); + TabControl.Current.Value = "tab2"; } } diff --git a/osu.Game/Graphics/UserInterface/OsuTabControl.cs b/osu.Game/Graphics/UserInterface/OsuTabControl.cs index 6a7998d5fb..ca18ab83a0 100644 --- a/osu.Game/Graphics/UserInterface/OsuTabControl.cs +++ b/osu.Game/Graphics/UserInterface/OsuTabControl.cs @@ -17,6 +17,7 @@ using osu.Framework.Graphics.UserInterface; using osu.Framework.Input.Events; using osu.Framework.Utils; using osu.Game.Graphics.Sprites; +using osu.Framework.Extensions.IEnumerableExtensions; namespace osu.Game.Graphics.UserInterface { @@ -75,6 +76,7 @@ namespace osu.Game.Graphics.UserInterface dropdown.AccentColour = value; foreach (var i in TabContainer.Children.OfType()) i.AccentColour = value; + InternalChildren.OfType().ForEach(c => c.AccentColour = value); } } diff --git a/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs b/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs index 2456568252..bc9108929d 100644 --- a/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs +++ b/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs @@ -1,7 +1,6 @@ // 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.Graphics; using osu.Framework.Graphics.UserInterface; using osu.Game.Graphics; @@ -9,23 +8,15 @@ using osu.Game.Graphics.UserInterface; namespace osu.Game.Overlays { - public abstract class BreadcrumbControlOverlayHeader : ControllableOverlayHeader + public abstract class BreadcrumbControlOverlayHeader : TabControlOverlayHeader { - protected OverlayHeaderBreadcrumbControl BreadcrumbControl; - - protected override TabControl CreateTabControl() => BreadcrumbControl = new OverlayHeaderBreadcrumbControl(); + protected override OsuTabControl CreateTabControl() => new OverlayHeaderBreadcrumbControl(); protected BreadcrumbControlOverlayHeader(OverlayColourScheme colourScheme) : base(colourScheme) { } - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - BreadcrumbControl.AccentColour = colours.ForOverlayElement(ColourScheme, 1, 0.75f); - } - public class OverlayHeaderBreadcrumbControl : BreadcrumbControl { public OverlayHeaderBreadcrumbControl() diff --git a/osu.Game/Overlays/Changelog/ChangelogHeader.cs b/osu.Game/Overlays/Changelog/ChangelogHeader.cs index d5e0890b4d..484a800992 100644 --- a/osu.Game/Overlays/Changelog/ChangelogHeader.cs +++ b/osu.Game/Overlays/Changelog/ChangelogHeader.cs @@ -28,8 +28,8 @@ namespace osu.Game.Overlays.Changelog public ChangelogHeader() : base(OverlayColourScheme.Purple) { - BreadcrumbControl.AddItem(listing_string); - BreadcrumbControl.Current.ValueChanged += e => + TabControl.AddItem(listing_string); + TabControl.Current.ValueChanged += e => { if (e.NewValue == listing_string) ListingSelected?.Invoke(); @@ -49,12 +49,12 @@ namespace osu.Game.Overlays.Changelog private void showBuild(ValueChangedEvent e) { if (e.OldValue != null) - BreadcrumbControl.RemoveItem(e.OldValue.ToString()); + TabControl.RemoveItem(e.OldValue.ToString()); if (e.NewValue != null) { - BreadcrumbControl.AddItem(e.NewValue.ToString()); - BreadcrumbControl.Current.Value = e.NewValue.ToString(); + TabControl.AddItem(e.NewValue.ToString()); + TabControl.Current.Value = e.NewValue.ToString(); Streams.Current.Value = Streams.Items.FirstOrDefault(s => s.Name == e.NewValue.UpdateStream.Name); @@ -62,7 +62,7 @@ namespace osu.Game.Overlays.Changelog } else { - BreadcrumbControl.Current.Value = listing_string; + TabControl.Current.Value = listing_string; Streams.Current.Value = null; title.Version = null; } diff --git a/osu.Game/Overlays/ControllableOverlayHeader.cs b/osu.Game/Overlays/ControllableOverlayHeader.cs deleted file mode 100644 index de0431340f..0000000000 --- a/osu.Game/Overlays/ControllableOverlayHeader.cs +++ /dev/null @@ -1,49 +0,0 @@ -// 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.Graphics; -using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Shapes; -using osu.Framework.Graphics.UserInterface; -using osu.Game.Graphics; -using osuTK.Graphics; - -namespace osu.Game.Overlays -{ - /// - /// which contains . - /// - /// The type of item to be represented by tabs in . - public abstract class ControllableOverlayHeader : OverlayHeader - { - private readonly Box controlBackground; - - protected ControllableOverlayHeader(OverlayColourScheme colourScheme) - : base(colourScheme) - { - HeaderInfo.Add(new Container - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Children = new Drawable[] - { - controlBackground = new Box - { - RelativeSizeAxes = Axes.Both, - Colour = Color4.Gray, - }, - CreateTabControl().With(control => control.Margin = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN }) - } - }); - } - - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - controlBackground.Colour = colours.ForOverlayElement(ColourScheme, 0.2f, 0.2f); - } - - protected abstract TabControl CreateTabControl(); - } -} diff --git a/osu.Game/Overlays/News/NewsHeader.cs b/osu.Game/Overlays/News/NewsHeader.cs index 03dc64b3bd..7d9fce11f1 100644 --- a/osu.Game/Overlays/News/NewsHeader.cs +++ b/osu.Game/Overlays/News/NewsHeader.cs @@ -25,9 +25,9 @@ namespace osu.Game.Overlays.News public NewsHeader() : base(OverlayColourScheme.Purple) { - BreadcrumbControl.AddItem(front_page_string); + TabControl.AddItem(front_page_string); - BreadcrumbControl.Current.ValueChanged += e => + TabControl.Current.ValueChanged += e => { if (e.NewValue == front_page_string) ShowFrontPage?.Invoke(); @@ -39,18 +39,18 @@ namespace osu.Game.Overlays.News private void showPost(ValueChangedEvent e) { if (e.OldValue != null) - BreadcrumbControl.RemoveItem(e.OldValue); + TabControl.RemoveItem(e.OldValue); if (e.NewValue != null) { - BreadcrumbControl.AddItem(e.NewValue); - BreadcrumbControl.Current.Value = e.NewValue; + TabControl.AddItem(e.NewValue); + TabControl.Current.Value = e.NewValue; title.IsReadingPost = true; } else { - BreadcrumbControl.Current.Value = front_page_string; + TabControl.Current.Value = front_page_string; title.IsReadingPost = false; } } diff --git a/osu.Game/Overlays/OverlayTabControl.cs b/osu.Game/Overlays/OverlayTabControl.cs index 000cc4b113..a58ac87a11 100644 --- a/osu.Game/Overlays/OverlayTabControl.cs +++ b/osu.Game/Overlays/OverlayTabControl.cs @@ -2,6 +2,7 @@ // 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.Framework.Graphics.UserInterface; using osu.Framework.Input.Events; @@ -15,13 +16,7 @@ namespace osu.Game.Overlays { public abstract class OverlayTabControl : OsuTabControl { - private readonly Box bar; - - public new Color4 AccentColour - { - get => base.AccentColour; - set => base.AccentColour = bar.Colour = value; - } + private readonly Bar bar; protected float BarHeight { @@ -33,7 +28,7 @@ namespace osu.Game.Overlays TabContainer.Masking = false; TabContainer.Spacing = new Vector2(15, 0); - AddInternal(bar = new Box + AddInternal(bar = new Bar { RelativeSizeAxes = Axes.X, Height = 2, @@ -143,5 +138,24 @@ namespace osu.Game.Overlays Text.FadeColour(AccentColour, 120, Easing.InQuad); } } + + private class Bar : CompositeDrawable, IHasAccentColour + { + public Color4 AccentColour + { + get => background.Colour; + set => background.Colour = value; + } + + private readonly Box background; + + public Bar() + { + AddInternal(background = new Box + { + RelativeSizeAxes = Axes.Both + }); + } + } } } diff --git a/osu.Game/Overlays/TabControlOverlayHeader.cs b/osu.Game/Overlays/TabControlOverlayHeader.cs index a4bf423e46..defd6d6b05 100644 --- a/osu.Game/Overlays/TabControlOverlayHeader.cs +++ b/osu.Game/Overlays/TabControlOverlayHeader.cs @@ -5,29 +5,51 @@ using System; using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.UserInterface; using osu.Game.Graphics; +using osu.Game.Graphics.UserInterface; using osuTK; namespace osu.Game.Overlays { - public abstract class TabControlOverlayHeader : ControllableOverlayHeader + /// + /// which contains . + /// + /// The type of item to be represented by tabs in . + public abstract class TabControlOverlayHeader : OverlayHeader { - protected OverlayHeaderTabControl TabControl; + protected OsuTabControl TabControl; - protected override TabControl CreateTabControl() => TabControl = new OverlayHeaderTabControl(); + private readonly Box controlBackground; protected TabControlOverlayHeader(OverlayColourScheme colourScheme) : base(colourScheme) { + HeaderInfo.Add(new Container + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Children = new Drawable[] + { + controlBackground = new Box + { + RelativeSizeAxes = Axes.Both, + }, + TabControl = CreateTabControl().With(control => control.Margin = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN }) + } + }); } [BackgroundDependencyLoader] private void load(OsuColour colours) { TabControl.AccentColour = colours.ForOverlayElement(ColourScheme, 1, 0.75f); + controlBackground.Colour = colours.ForOverlayElement(ColourScheme, 0.2f, 0.2f); } + protected virtual OsuTabControl CreateTabControl() => new OverlayHeaderTabControl(); + public class OverlayHeaderTabControl : OverlayTabControl { public OverlayHeaderTabControl() @@ -38,18 +60,9 @@ namespace osu.Game.Overlays Anchor = Anchor.BottomLeft; Origin = Anchor.BottomLeft; Height = 35; - - if (typeof(T).IsEnum) - { - foreach (var val in (T[])Enum.GetValues(typeof(T))) - AddItem(val); - } } - protected override TabItem CreateTabItem(T value) => new OverlayHeaderTabItem(value) - { - AccentColour = AccentColour, - }; + protected override TabItem CreateTabItem(T value) => new OverlayHeaderTabItem(value); protected override TabFillFlowContainer CreateTabFlow() => new TabFillFlowContainer { From 8bf19913c05e71110a90f07d50982ffc7832593b Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 21 Jan 2020 06:03:48 +0300 Subject: [PATCH 0900/1829] Add NotNull attribute --- osu.Game/Overlays/TabControlOverlayHeader.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/TabControlOverlayHeader.cs b/osu.Game/Overlays/TabControlOverlayHeader.cs index defd6d6b05..11f93bb373 100644 --- a/osu.Game/Overlays/TabControlOverlayHeader.cs +++ b/osu.Game/Overlays/TabControlOverlayHeader.cs @@ -1,7 +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 JetBrains.Annotations; using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; @@ -48,6 +48,7 @@ namespace osu.Game.Overlays controlBackground.Colour = colours.ForOverlayElement(ColourScheme, 0.2f, 0.2f); } + [NotNull] protected virtual OsuTabControl CreateTabControl() => new OverlayHeaderTabControl(); public class OverlayHeaderTabControl : OverlayTabControl From 327d8c213bac61abd4801720684cf8d2d4dd6a6e Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 21 Jan 2020 06:25:13 +0300 Subject: [PATCH 0901/1829] Rename Bar to TabControlBar --- osu.Game/Overlays/OverlayTabControl.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/OverlayTabControl.cs b/osu.Game/Overlays/OverlayTabControl.cs index a58ac87a11..839136d37c 100644 --- a/osu.Game/Overlays/OverlayTabControl.cs +++ b/osu.Game/Overlays/OverlayTabControl.cs @@ -16,7 +16,7 @@ namespace osu.Game.Overlays { public abstract class OverlayTabControl : OsuTabControl { - private readonly Bar bar; + private readonly TabControlBar bar; protected float BarHeight { @@ -28,7 +28,7 @@ namespace osu.Game.Overlays TabContainer.Masking = false; TabContainer.Spacing = new Vector2(15, 0); - AddInternal(bar = new Bar + AddInternal(bar = new TabControlBar { RelativeSizeAxes = Axes.X, Height = 2, @@ -139,7 +139,7 @@ namespace osu.Game.Overlays } } - private class Bar : CompositeDrawable, IHasAccentColour + private class TabControlBar : CompositeDrawable, IHasAccentColour { public Color4 AccentColour { @@ -149,7 +149,7 @@ namespace osu.Game.Overlays private readonly Box background; - public Bar() + public TabControlBar() { AddInternal(background = new Box { From 02f26e4a4d02a1aba90aa88829d694631aba4cce Mon Sep 17 00:00:00 2001 From: ProTheory8 <59506423+ProTheory8@users.noreply.github.com> Date: Tue, 21 Jan 2020 08:44:22 +0500 Subject: [PATCH 0902/1829] Update comment Co-Authored-By: Salman Ahmed --- osu.Game/Rulesets/Mods/Mod.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Mods/Mod.cs b/osu.Game/Rulesets/Mods/Mod.cs index 9ee19a433b..46c0c1da07 100644 --- a/osu.Game/Rulesets/Mods/Mod.cs +++ b/osu.Game/Rulesets/Mods/Mod.cs @@ -61,7 +61,7 @@ namespace osu.Game.Rulesets.Mods public virtual bool Ranked => false; /// - /// Returns true if this mod requires configuration. If true, opens mod customisation menu every time user enables mod. + /// Whether this mod requires configuration to apply changes to the game. /// [JsonIgnore] public virtual bool RequiresConfiguration => false; From bd96cf94a6284f1d6b9be30e054fda5cfa6c4c62 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 21 Jan 2020 00:53:59 +0900 Subject: [PATCH 0903/1829] Begin refactoring SelectionBlueprint to handle non-drawable HitObjects --- .../Blueprints/ManiaSelectionBlueprint.cs | 2 +- .../Edit/ManiaBlueprintContainer.cs | 2 +- .../Edit/ManiaSelectionHandler.cs | 5 +- .../Edit/Masks/ManiaSelectionBlueprint.cs | 2 +- .../Edit/Blueprints/OsuSelectionBlueprint.cs | 4 +- .../Edit/OsuBlueprintContainer.cs | 2 +- .../Edit/OverlaySelectionBlueprint.cs | 32 ++++++++++++ osu.Game/Rulesets/Edit/SelectionBlueprint.cs | 35 +++++-------- .../Timelines/Summary/Parts/TimelinePart.cs | 20 +++++--- .../Compose/Components/BlueprintContainer.cs | 38 ++++---------- .../Components/ComposeBlueprintContainer.cs | 2 +- .../Compose/Components/MoveSelectionEvent.cs | 8 +-- .../Compose/Components/SelectionHandler.cs | 4 +- .../Timeline/TimelineHitObjectDisplay.cs | 51 ++++++------------- .../Visual/SelectionBlueprintTestScene.cs | 2 +- 15 files changed, 102 insertions(+), 107 deletions(-) create mode 100644 osu.Game/Rulesets/Edit/OverlaySelectionBlueprint.cs diff --git a/osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaSelectionBlueprint.cs b/osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaSelectionBlueprint.cs index 3bd7fb2d49..63e3d0fcc1 100644 --- a/osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaSelectionBlueprint.cs +++ b/osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaSelectionBlueprint.cs @@ -13,7 +13,7 @@ using osuTK; namespace osu.Game.Rulesets.Mania.Edit.Blueprints { - public class ManiaSelectionBlueprint : SelectionBlueprint + public class ManiaSelectionBlueprint : OverlaySelectionBlueprint { public Vector2 ScreenSpaceDragPosition { get; private set; } public Vector2 DragPosition { get; private set; } diff --git a/osu.Game.Rulesets.Mania/Edit/ManiaBlueprintContainer.cs b/osu.Game.Rulesets.Mania/Edit/ManiaBlueprintContainer.cs index 5f66ae7491..d744036b4c 100644 --- a/osu.Game.Rulesets.Mania/Edit/ManiaBlueprintContainer.cs +++ b/osu.Game.Rulesets.Mania/Edit/ManiaBlueprintContainer.cs @@ -17,7 +17,7 @@ namespace osu.Game.Rulesets.Mania.Edit { } - public override SelectionBlueprint CreateBlueprintFor(DrawableHitObject hitObject) + public override OverlaySelectionBlueprint CreateBlueprintFor(DrawableHitObject hitObject) { switch (hitObject) { diff --git a/osu.Game.Rulesets.Mania/Edit/ManiaSelectionHandler.cs b/osu.Game.Rulesets.Mania/Edit/ManiaSelectionHandler.cs index 618af3e772..f33fd3c640 100644 --- a/osu.Game.Rulesets.Mania/Edit/ManiaSelectionHandler.cs +++ b/osu.Game.Rulesets.Mania/Edit/ManiaSelectionHandler.cs @@ -5,6 +5,7 @@ using System; using System.Linq; using osu.Framework.Allocation; using osu.Framework.Timing; +using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Mania.Edit.Blueprints; using osu.Game.Rulesets.Mania.Objects; using osu.Game.Rulesets.UI; @@ -72,8 +73,10 @@ namespace osu.Game.Rulesets.Mania.Edit if (scrollingInfo.Direction.Value == ScrollingDirection.Down) delta -= moveEvent.Blueprint.DrawableObject.Parent.DrawHeight; - foreach (var b in SelectedBlueprints) + foreach (var selectionBlueprint in SelectedBlueprints) { + var b = (OverlaySelectionBlueprint)selectionBlueprint; + var hitObject = b.DrawableObject; var objectParent = (HitObjectContainer)hitObject.Parent; diff --git a/osu.Game.Rulesets.Mania/Edit/Masks/ManiaSelectionBlueprint.cs b/osu.Game.Rulesets.Mania/Edit/Masks/ManiaSelectionBlueprint.cs index ff8882124f..433db79ae0 100644 --- a/osu.Game.Rulesets.Mania/Edit/Masks/ManiaSelectionBlueprint.cs +++ b/osu.Game.Rulesets.Mania/Edit/Masks/ManiaSelectionBlueprint.cs @@ -7,7 +7,7 @@ using osu.Game.Rulesets.Objects.Drawables; namespace osu.Game.Rulesets.Mania.Edit.Masks { - public abstract class ManiaSelectionBlueprint : SelectionBlueprint + public abstract class ManiaSelectionBlueprint : OverlaySelectionBlueprint { protected ManiaSelectionBlueprint(DrawableHitObject drawableObject) : base(drawableObject) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/OsuSelectionBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/OsuSelectionBlueprint.cs index a864257274..b0e13808a5 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/OsuSelectionBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/OsuSelectionBlueprint.cs @@ -7,10 +7,10 @@ using osu.Game.Rulesets.Osu.Objects; namespace osu.Game.Rulesets.Osu.Edit.Blueprints { - public abstract class OsuSelectionBlueprint : SelectionBlueprint + public abstract class OsuSelectionBlueprint : OverlaySelectionBlueprint where T : OsuHitObject { - protected T HitObject => (T)DrawableObject.HitObject; + protected new T HitObject => (T)DrawableObject.HitObject; protected OsuSelectionBlueprint(DrawableHitObject drawableObject) : base(drawableObject) diff --git a/osu.Game.Rulesets.Osu/Edit/OsuBlueprintContainer.cs b/osu.Game.Rulesets.Osu/Edit/OsuBlueprintContainer.cs index 30682616e6..330f34b85c 100644 --- a/osu.Game.Rulesets.Osu/Edit/OsuBlueprintContainer.cs +++ b/osu.Game.Rulesets.Osu/Edit/OsuBlueprintContainer.cs @@ -21,7 +21,7 @@ namespace osu.Game.Rulesets.Osu.Edit protected override SelectionHandler CreateSelectionHandler() => new OsuSelectionHandler(); - public override SelectionBlueprint CreateBlueprintFor(DrawableHitObject hitObject) + public override OverlaySelectionBlueprint CreateBlueprintFor(DrawableHitObject hitObject) { switch (hitObject) { diff --git a/osu.Game/Rulesets/Edit/OverlaySelectionBlueprint.cs b/osu.Game/Rulesets/Edit/OverlaySelectionBlueprint.cs new file mode 100644 index 0000000000..4c3898aa04 --- /dev/null +++ b/osu.Game/Rulesets/Edit/OverlaySelectionBlueprint.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 osu.Framework.Graphics.Primitives; +using osu.Game.Graphics.UserInterface; +using osu.Game.Rulesets.Objects.Drawables; +using osuTK; + +namespace osu.Game.Rulesets.Edit +{ + public abstract class OverlaySelectionBlueprint : SelectionBlueprint + { + /// + /// The which this applies to. + /// + public readonly DrawableHitObject DrawableObject; + + protected override bool ShouldBeAlive => (DrawableObject.IsAlive && DrawableObject.IsPresent) || State == SelectionState.Selected; + + protected OverlaySelectionBlueprint(DrawableHitObject drawableObject) + : base(drawableObject.HitObject) + { + DrawableObject = drawableObject; + } + + public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => DrawableObject.ReceivePositionalInputAt(screenSpacePos); + + public override Vector2 SelectionPoint => DrawableObject.ScreenSpaceDrawQuad.Centre; + + public override Quad SelectionQuad => DrawableObject.ScreenSpaceDrawQuad; + } +} diff --git a/osu.Game/Rulesets/Edit/SelectionBlueprint.cs b/osu.Game/Rulesets/Edit/SelectionBlueprint.cs index bf99f83e0b..d8952a3932 100644 --- a/osu.Game/Rulesets/Edit/SelectionBlueprint.cs +++ b/osu.Game/Rulesets/Edit/SelectionBlueprint.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; @@ -20,6 +20,8 @@ namespace osu.Game.Rulesets.Edit /// public abstract class SelectionBlueprint : CompositeDrawable, IStateful { + public readonly HitObject HitObject; + /// /// Invoked when this has been selected. /// @@ -30,22 +32,15 @@ namespace osu.Game.Rulesets.Edit /// public event Action Deselected; - /// - /// The which this applies to. - /// - public readonly DrawableHitObject DrawableObject; - - protected override bool ShouldBeAlive => (DrawableObject.IsAlive && DrawableObject.IsPresent) || State == SelectionState.Selected; public override bool HandlePositionalInput => ShouldBeAlive; public override bool RemoveWhenNotAlive => false; [Resolved(CanBeNull = true)] private HitObjectComposer composer { get; set; } - protected SelectionBlueprint(DrawableHitObject drawableObject) + protected SelectionBlueprint(HitObject hitObject) { - DrawableObject = drawableObject; - + this.HitObject = hitObject; RelativeSizeAxes = Axes.Both; AlwaysPresent = true; @@ -87,37 +82,35 @@ namespace osu.Game.Rulesets.Edit protected override bool ShouldBeConsideredForInput(Drawable child) => State == SelectionState.Selected; /// - /// Selects this , causing it to become visible. + /// Selects this , causing it to become visible. /// public void Select() => State = SelectionState.Selected; /// - /// Deselects this , causing it to become invisible. + /// Deselects this , causing it to become invisible. /// public void Deselect() => State = SelectionState.NotSelected; public bool IsSelected => State == SelectionState.Selected; /// - /// Updates the , invoking and re-processing the beatmap. + /// Updates the , invoking and re-processing the beatmap. /// - protected void UpdateHitObject() => composer?.UpdateHitObject(DrawableObject.HitObject); - - public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => DrawableObject.ReceivePositionalInputAt(screenSpacePos); + protected void UpdateHitObject() => composer?.UpdateHitObject(HitObject); /// - /// The s to be displayed in the context menu for this . + /// The s to be displayed in the context menu for this . /// public virtual MenuItem[] ContextMenuItems => Array.Empty(); /// - /// The screen-space point that causes this to be selected. + /// The screen-space point that causes this to be selected. /// - public virtual Vector2 SelectionPoint => DrawableObject.ScreenSpaceDrawQuad.Centre; + public virtual Vector2 SelectionPoint => ScreenSpaceDrawQuad.Centre; /// - /// The screen-space quad that outlines this for selections. + /// The screen-space quad that outlines this for selections. /// - public virtual Quad SelectionQuad => DrawableObject.ScreenSpaceDrawQuad; + public virtual Quad SelectionQuad => ScreenSpaceDrawQuad; } } diff --git a/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/TimelinePart.cs b/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/TimelinePart.cs index 119635ccd5..4a7c3f26bc 100644 --- a/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/TimelinePart.cs +++ b/osu.Game/Screens/Edit/Components/Timelines/Summary/Parts/TimelinePart.cs @@ -11,20 +11,24 @@ using osu.Game.Beatmaps; namespace osu.Game.Screens.Edit.Components.Timelines.Summary.Parts { + public class TimelinePart : TimelinePart + { + } + /// /// Represents a part of the summary timeline.. /// - public class TimelinePart : Container + public class TimelinePart : Container where T : Drawable { protected readonly IBindable Beatmap = new Bindable(); - private readonly Container timeline; + private readonly Container content; - protected override Container Content => timeline; + protected override Container Content => content; - public TimelinePart() + public TimelinePart(Container content = null) { - AddInternal(timeline = new Container { RelativeSizeAxes = Axes.Both }); + AddInternal(this.content = content ?? new Container { RelativeSizeAxes = Axes.Both }); Beatmap.ValueChanged += b => { @@ -44,17 +48,17 @@ namespace osu.Game.Screens.Edit.Components.Timelines.Summary.Parts // the track may not be loaded completely (only has a length once it is). if (!Beatmap.Value.Track.IsLoaded) { - timeline.RelativeChildSize = Vector2.One; + content.RelativeChildSize = Vector2.One; Schedule(updateRelativeChildSize); return; } - timeline.RelativeChildSize = new Vector2((float)Math.Max(1, Beatmap.Value.Track.Length), 1); + content.RelativeChildSize = new Vector2((float)Math.Max(1, Beatmap.Value.Track.Length), 1); } protected virtual void LoadBeatmap(WorkingBeatmap beatmap) { - timeline.Clear(); + content.Clear(); } } } diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index 81b0fb247f..e945955db6 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -59,7 +59,7 @@ namespace osu.Game.Screens.Edit.Compose.Components { DragBox = CreateDragBox(select), selectionHandler, - selectionBlueprints = new SelectionBlueprintContainer { RelativeSizeAxes = Axes.Both }, + selectionBlueprints = CreateSelectionBlueprintContainer(), DragBox.CreateProxy().With(p => p.Depth = float.MinValue) }); @@ -67,6 +67,8 @@ namespace osu.Game.Screens.Edit.Compose.Components AddBlueprintFor(obj); } + protected virtual SelectionBlueprintContainer CreateSelectionBlueprintContainer() => new SelectionBlueprintContainer { RelativeSizeAxes = Axes.Both }; + protected override void LoadComplete() { base.LoadComplete(); @@ -118,7 +120,7 @@ namespace osu.Game.Screens.Edit.Compose.Components if (clickedBlueprint == null) return false; - adjustableClock?.Seek(clickedBlueprint.DrawableObject.HitObject.StartTime); + adjustableClock?.Seek(clickedBlueprint.HitObject.StartTime); return true; } @@ -208,7 +210,7 @@ namespace osu.Game.Screens.Edit.Compose.Components private void removeBlueprintFor(HitObject hitObject) { - var blueprint = selectionBlueprints.SingleOrDefault(m => m.DrawableObject.HitObject == hitObject); + var blueprint = selectionBlueprints.SingleOrDefault(m => m.HitObject == hitObject); if (blueprint == null) return; @@ -346,8 +348,8 @@ namespace osu.Game.Screens.Edit.Compose.Components return false; // Movement is tracked from the blueprint of the earliest hitobject, since it only makes sense to distance snap from that hitobject - movementBlueprint = selectionHandler.SelectedBlueprints.OrderBy(b => b.DrawableObject.HitObject.StartTime).First(); - screenSpaceMovementStartPosition = movementBlueprint.DrawableObject.ToScreenSpace(movementBlueprint.DrawableObject.OriginPosition); + movementBlueprint = selectionHandler.SelectedBlueprints.OrderBy(b => b.HitObject.StartTime).First(); + screenSpaceMovementStartPosition = movementBlueprint.SelectionPoint; // todo: unsure if correct return true; } @@ -365,14 +367,14 @@ namespace osu.Game.Screens.Edit.Compose.Components Debug.Assert(screenSpaceMovementStartPosition != null); Vector2 startPosition = screenSpaceMovementStartPosition.Value; - HitObject draggedObject = movementBlueprint.DrawableObject.HitObject; + HitObject draggedObject = movementBlueprint.HitObject; // The final movement position, relative to screenSpaceMovementStartPosition Vector2 movePosition = startPosition + e.ScreenSpaceMousePosition - e.ScreenSpaceMouseDownPosition; (Vector2 snappedPosition, double snappedTime) = snapProvider.GetSnappedPosition(ToLocalSpace(movePosition), draggedObject.StartTime); // Move the hitobjects - if (!selectionHandler.HandleMovement(new MoveSelectionEvent(movementBlueprint, startPosition, ToScreenSpace(snappedPosition)))) + if (!selectionHandler.HandleMovement(new MoveSelectionEvent((OverlaySelectionBlueprint)movementBlueprint, startPosition, ToScreenSpace(snappedPosition)))) return true; // Apply the start time at the newly snapped-to position @@ -411,29 +413,9 @@ namespace osu.Game.Screens.Edit.Compose.Components } } - private class SelectionBlueprintContainer : Container + protected class SelectionBlueprintContainer : Container { public IEnumerable AliveBlueprints => AliveInternalChildren.Cast(); - - protected override int Compare(Drawable x, Drawable y) - { - if (!(x is SelectionBlueprint xBlueprint) || !(y is SelectionBlueprint yBlueprint)) - return base.Compare(x, y); - - return Compare(xBlueprint, yBlueprint); - } - - public int Compare(SelectionBlueprint x, SelectionBlueprint y) - { - // dpeth is used to denote selected status (we always want selected blueprints to handle input first). - int d = x.Depth.CompareTo(y.Depth); - if (d != 0) - return d; - - // Put earlier hitobjects towards the end of the list, so they handle input first - int i = y.DrawableObject.HitObject.StartTime.CompareTo(x.DrawableObject.HitObject.StartTime); - return i == 0 ? CompareReverseChildID(x, y) : i; - } } } } diff --git a/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs index 1576def38e..3c41dead5d 100644 --- a/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs @@ -119,7 +119,7 @@ namespace osu.Game.Screens.Edit.Compose.Components return CreateBlueprintFor(drawable); } - public virtual SelectionBlueprint CreateBlueprintFor(DrawableHitObject hitObject) => null; + public virtual OverlaySelectionBlueprint CreateBlueprintFor(DrawableHitObject hitObject) => null; protected override void AddBlueprintFor(HitObject hitObject) { diff --git a/osu.Game/Screens/Edit/Compose/Components/MoveSelectionEvent.cs b/osu.Game/Screens/Edit/Compose/Components/MoveSelectionEvent.cs index fe0a47aec8..8662347aeb 100644 --- a/osu.Game/Screens/Edit/Compose/Components/MoveSelectionEvent.cs +++ b/osu.Game/Screens/Edit/Compose/Components/MoveSelectionEvent.cs @@ -7,14 +7,14 @@ using osuTK; namespace osu.Game.Screens.Edit.Compose.Components { /// - /// An event which occurs when a is moved. + /// An event which occurs when a is moved. /// public class MoveSelectionEvent { /// - /// The that triggered this . + /// The that triggered this . /// - public readonly SelectionBlueprint Blueprint; + public readonly OverlaySelectionBlueprint Blueprint; /// /// The starting screen-space position of the hitobject. @@ -34,7 +34,7 @@ namespace osu.Game.Screens.Edit.Compose.Components /// public readonly Vector2 InstantDelta; - public MoveSelectionEvent(SelectionBlueprint blueprint, Vector2 screenSpaceStartPosition, Vector2 screenSpacePosition) + public MoveSelectionEvent(OverlaySelectionBlueprint blueprint, Vector2 screenSpaceStartPosition, Vector2 screenSpacePosition) { Blueprint = blueprint; ScreenSpaceStartPosition = screenSpaceStartPosition; diff --git a/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs b/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs index bff94e66ed..907a22b9ce 100644 --- a/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs +++ b/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs @@ -33,7 +33,7 @@ namespace osu.Game.Screens.Edit.Compose.Components public IEnumerable SelectedBlueprints => selectedBlueprints; private readonly List selectedBlueprints; - public IEnumerable SelectedHitObjects => selectedBlueprints.Select(b => b.DrawableObject.HitObject); + public IEnumerable SelectedHitObjects => selectedBlueprints.Select(b => b.HitObject); private Drawable outline; @@ -146,7 +146,7 @@ namespace osu.Game.Screens.Edit.Compose.Components private void deleteSelected() { foreach (var h in selectedBlueprints.ToList()) - placementHandler.Delete(h.DrawableObject.HitObject); + placementHandler.Delete(h.HitObject); } #endregion diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index f521d08ada..e1acaa34cb 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -2,13 +2,12 @@ // See the LICENCE file in the repository root for full licence text. using System; -using System.Linq; -using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Primitives; using osu.Framework.Graphics.Shapes; using osu.Framework.Input.Events; +using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Objects.Types; using osu.Game.Screens.Edit.Components.Timelines.Summary.Parts; @@ -19,32 +18,21 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline { internal class TimelineHitObjectDisplay : BlueprintContainer { - private EditorBeatmap beatmap { get; } - - private readonly TimelinePart content; - public TimelineHitObjectDisplay(EditorBeatmap beatmap) { RelativeSizeAxes = Axes.Both; - - this.beatmap = beatmap; - - AddInternal(content = new TimelinePart { RelativeSizeAxes = Axes.Both }); } - [BackgroundDependencyLoader] - private void load() - { - foreach (var h in beatmap.HitObjects) - add(h); + protected override SelectionBlueprintContainer CreateSelectionBlueprintContainer() => new TimelineSelectionBlueprintContainer { RelativeSizeAxes = Axes.Both }; - beatmap.HitObjectAdded += add; - beatmap.HitObjectRemoved += remove; - beatmap.StartTimeChanged += h => + protected class TimelineSelectionBlueprintContainer : SelectionBlueprintContainer + { + protected override Container Content { get; } + + public TimelineSelectionBlueprintContainer() { - remove(h); - add(h); - }; + AddInternal(new TimelinePart(Content = new Container { RelativeSizeAxes = Axes.Both }) { RelativeSizeAxes = Axes.Both }); + } } protected override void LoadComplete() @@ -53,24 +41,19 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline DragBox.Alpha = 0; } - private void remove(HitObject h) + protected override SelectionBlueprint CreateBlueprintFor(HitObject hitObject) { - foreach (var d in content.OfType().Where(c => c.HitObject == h)) - d.Expire(); - } + //var yOffset = content.Count(d => d.X == h.StartTime); + var yOffset = 0; - private void add(HitObject h) - { - var yOffset = content.Count(d => d.X == h.StartTime); - - content.Add(new TimelineHitObjectRepresentation(h) { Y = -yOffset * TimelineHitObjectRepresentation.THICKNESS }); + return new TimelineHitObjectRepresentation(hitObject) { Y = -yOffset * TimelineHitObjectRepresentation.THICKNESS }; } protected override bool OnMouseDown(MouseDownEvent e) { base.OnMouseDown(e); - return false; // tempoerary until we correctly handle selections. + return false; // temporary until we correctly handle selections. } protected override DragBox CreateDragBox(Action performSelect) => new NoDragDragBox(performSelect); @@ -85,15 +68,13 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline public override bool UpdateDrag(MouseButtonEvent e) => false; } - private class TimelineHitObjectRepresentation : CompositeDrawable + private class TimelineHitObjectRepresentation : SelectionBlueprint { public const float THICKNESS = 3; - public readonly HitObject HitObject; - public TimelineHitObjectRepresentation(HitObject hitObject) + : base(hitObject) { - HitObject = hitObject; Anchor = Anchor.CentreLeft; Origin = Anchor.CentreLeft; diff --git a/osu.Game/Tests/Visual/SelectionBlueprintTestScene.cs b/osu.Game/Tests/Visual/SelectionBlueprintTestScene.cs index 3233ee160d..6565f98666 100644 --- a/osu.Game/Tests/Visual/SelectionBlueprintTestScene.cs +++ b/osu.Game/Tests/Visual/SelectionBlueprintTestScene.cs @@ -22,7 +22,7 @@ namespace osu.Game.Tests.Visual }); } - protected void AddBlueprint(SelectionBlueprint blueprint) + protected void AddBlueprint(OverlaySelectionBlueprint blueprint) { Add(blueprint.With(d => { From 61d7b63914c2c806f1ae6eab113f01a7193036d1 Mon Sep 17 00:00:00 2001 From: ProTheory8 <59506423+ProTheory8@users.noreply.github.com> Date: Tue, 21 Jan 2020 09:30:11 +0500 Subject: [PATCH 0904/1829] Readability Improvement --- osu.Game/Overlays/Mods/ModSelectOverlay.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game/Overlays/Mods/ModSelectOverlay.cs b/osu.Game/Overlays/Mods/ModSelectOverlay.cs index cdc4a42b33..38f5d54714 100644 --- a/osu.Game/Overlays/Mods/ModSelectOverlay.cs +++ b/osu.Game/Overlays/Mods/ModSelectOverlay.cs @@ -473,7 +473,9 @@ namespace osu.Game.Overlays.Mods if (selectedMod != null) { if (State.Value == Visibility.Visible) sampleOn?.Play(); + DeselectTypes(selectedMod.IncompatibleMods, true); + if (selectedMod.RequiresConfiguration) ModSettingsContainer.Alpha = 1; } else From 53fe0ce79086351260002e3162baccf63840c17d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 21 Jan 2020 14:20:52 +0900 Subject: [PATCH 0905/1829] Use AliveChildren --- .../Screens/Edit/Compose/Components/BlueprintContainer.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index e945955db6..438be6ab54 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -258,7 +258,7 @@ namespace osu.Game.Screens.Edit.Compose.Components if (!allowDeselection && selectionHandler.SelectedBlueprints.Any(s => s.IsHovered)) return; - foreach (SelectionBlueprint blueprint in selectionBlueprints.AliveBlueprints) + foreach (SelectionBlueprint blueprint in selectionBlueprints.AliveChildren) { if (blueprint.IsHovered) { @@ -415,7 +415,7 @@ namespace osu.Game.Screens.Edit.Compose.Components protected class SelectionBlueprintContainer : Container { - public IEnumerable AliveBlueprints => AliveInternalChildren.Cast(); + //todo: remove } } } From 8f16c1cb049813cce2e1dabc07aa52e44e894038 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 21 Jan 2020 14:21:00 +0900 Subject: [PATCH 0906/1829] Add non-hiding selection state --- osu.Game/Rulesets/Edit/SelectionBlueprint.cs | 10 +++++++--- .../Components/Timeline/TimelineHitObjectDisplay.cs | 8 +++++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/osu.Game/Rulesets/Edit/SelectionBlueprint.cs b/osu.Game/Rulesets/Edit/SelectionBlueprint.cs index d8952a3932..d50a9dce16 100644 --- a/osu.Game/Rulesets/Edit/SelectionBlueprint.cs +++ b/osu.Game/Rulesets/Edit/SelectionBlueprint.cs @@ -44,7 +44,7 @@ namespace osu.Game.Rulesets.Edit RelativeSizeAxes = Axes.Both; AlwaysPresent = true; - Alpha = 0; + OnDeselected(); } private SelectionState state; @@ -64,12 +64,12 @@ namespace osu.Game.Rulesets.Edit switch (state) { case SelectionState.Selected: - Show(); + OnSelected(); Selected?.Invoke(this); break; case SelectionState.NotSelected: - Hide(); + OnDeselected(); Deselected?.Invoke(this); break; } @@ -78,6 +78,10 @@ namespace osu.Game.Rulesets.Edit } } + protected virtual void OnDeselected() => Hide(); + + protected virtual void OnSelected() => Show(); + // When not selected, input is only required for the blueprint itself to receive IsHovering protected override bool ShouldBeConsideredForInput(Drawable child) => State == SelectionState.Selected; diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index e1acaa34cb..5d1c4eeeae 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -70,6 +70,8 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline private class TimelineHitObjectRepresentation : SelectionBlueprint { + private Circle circle; + public const float THICKNESS = 3; public TimelineHitObjectRepresentation(HitObject hitObject) @@ -104,7 +106,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline }); } - AddInternal(new Circle + AddInternal(circle = new Circle { Size = new Vector2(16), Anchor = Anchor.CentreLeft, @@ -116,6 +118,10 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline BorderThickness = THICKNESS, }); } + + protected override void OnSelected() => circle.BorderColour = Color4.Orange; + + protected override void OnDeselected() => circle.BorderColour = Color4.Black; } } } From 195068ba9a9f6d35708159b2276ec74e70568456 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 21 Jan 2020 17:35:36 +0900 Subject: [PATCH 0907/1829] Cache EditorBeatmap in test --- osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs b/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs index 29575cb42e..e9372bd134 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs @@ -40,6 +40,8 @@ namespace osu.Game.Tests.Visual.Editor var editorBeatmap = new EditorBeatmap((Beatmap)Beatmap.Value.Beatmap); + Dependencies.Cache(editorBeatmap); + Children = new Drawable[] { new FillFlowContainer From 24a466ab249e6a88790a9f067f34ce44388e4521 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 21 Jan 2020 17:36:21 +0900 Subject: [PATCH 0908/1829] Avoid null by calling initial OnDeselected later --- osu.Game/Rulesets/Edit/SelectionBlueprint.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/osu.Game/Rulesets/Edit/SelectionBlueprint.cs b/osu.Game/Rulesets/Edit/SelectionBlueprint.cs index d50a9dce16..1c82a8287b 100644 --- a/osu.Game/Rulesets/Edit/SelectionBlueprint.cs +++ b/osu.Game/Rulesets/Edit/SelectionBlueprint.cs @@ -40,11 +40,15 @@ namespace osu.Game.Rulesets.Edit protected SelectionBlueprint(HitObject hitObject) { - this.HitObject = hitObject; + HitObject = hitObject; RelativeSizeAxes = Axes.Both; + } - AlwaysPresent = true; + [BackgroundDependencyLoader] + private void load() + { OnDeselected(); + AlwaysPresent = true; } private SelectionState state; @@ -116,5 +120,7 @@ namespace osu.Game.Rulesets.Edit /// The screen-space quad that outlines this for selections. /// public virtual Quad SelectionQuad => ScreenSpaceDrawQuad; + + public Vector2 GetInstantDelta(Vector2 screenSpacePosition) => Parent.ToLocalSpace(screenSpacePosition) - Position; } } From 79351976d5bc3eed44859e1a2f357d0f1b59f8e8 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 21 Jan 2020 17:37:05 +0900 Subject: [PATCH 0909/1829] Allow timeline content to get more localised dependencies --- osu.Game/Screens/Edit/EditorScreenWithTimeline.cs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs b/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs index aa8d99b517..8967f24185 100644 --- a/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs +++ b/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs @@ -20,7 +20,7 @@ namespace osu.Game.Screens.Edit private readonly BindableBeatDivisor beatDivisor = new BindableBeatDivisor(); - private TimelineArea timelineArea; + private Container timelineContainer; [BackgroundDependencyLoader(true)] private void load([CanBeNull] BindableBeatDivisor beatDivisor) @@ -62,11 +62,10 @@ namespace osu.Game.Screens.Edit { new Drawable[] { - new Container + timelineContainer = new Container { RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { Right = 5 }, - Child = timelineArea = CreateTimelineArea() }, new BeatDivisorControl(beatDivisor) { RelativeSizeAxes = Axes.Both } }, @@ -100,14 +99,16 @@ namespace osu.Game.Screens.Edit mainContent.Add(content); content.FadeInFromZero(300, Easing.OutQuint); - LoadComponentAsync(CreateTimelineContent(), timelineArea.Add); + LoadComponentAsync(new TimelineArea + { + RelativeSizeAxes = Axes.Both, + Child = CreateTimelineContent() + }, timelineContainer.Add); }); } protected abstract Drawable CreateMainContent(); protected virtual Drawable CreateTimelineContent() => new Container(); - - protected TimelineArea CreateTimelineArea() => new TimelineArea { RelativeSizeAxes = Axes.Both }; } } From 353b74b04a81331a9343e5cd0f3ba41ba129a64e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 21 Jan 2020 17:37:35 +0900 Subject: [PATCH 0910/1829] Handle selection events in timeline --- .../Components/Timeline/TimelineHitObjectDisplay.cs | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index 5d1c4eeeae..32efdd42a3 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -49,15 +49,6 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline return new TimelineHitObjectRepresentation(hitObject) { Y = -yOffset * TimelineHitObjectRepresentation.THICKNESS }; } - protected override bool OnMouseDown(MouseDownEvent e) - { - base.OnMouseDown(e); - - return false; // temporary until we correctly handle selections. - } - - protected override DragBox CreateDragBox(Action performSelect) => new NoDragDragBox(performSelect); - internal class NoDragDragBox : DragBox { public NoDragDragBox(Action performSelect) @@ -74,6 +65,8 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline public const float THICKNESS = 3; + public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => base.ReceivePositionalInputAt(screenSpacePos) || circle.ReceivePositionalInputAt(screenSpacePos); + public TimelineHitObjectRepresentation(HitObject hitObject) : base(hitObject) { From 6dd50572d242993a9c1a174ea4e5cf4344c0996a Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 21 Jan 2020 17:37:43 +0900 Subject: [PATCH 0911/1829] Break mania more --- osu.Game.Rulesets.Mania/Edit/ManiaSelectionHandler.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Mania/Edit/ManiaSelectionHandler.cs b/osu.Game.Rulesets.Mania/Edit/ManiaSelectionHandler.cs index f33fd3c640..9069a636a8 100644 --- a/osu.Game.Rulesets.Mania/Edit/ManiaSelectionHandler.cs +++ b/osu.Game.Rulesets.Mania/Edit/ManiaSelectionHandler.cs @@ -71,7 +71,7 @@ namespace osu.Game.Rulesets.Mania.Edit // When scrolling downwards the anchor position is at the bottom of the screen, however the movement event assumes the anchor is at the top of the screen. // This causes the delta to assume a positive hitobject position, and which can be corrected for by subtracting the parent height. if (scrollingInfo.Direction.Value == ScrollingDirection.Down) - delta -= moveEvent.Blueprint.DrawableObject.Parent.DrawHeight; + delta -= moveEvent.Blueprint.Parent.DrawHeight; // todo: probably wrong foreach (var selectionBlueprint in SelectedBlueprints) { From 6187b2e77cad79cb899af96adb66d400081bf9fd Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 21 Jan 2020 18:00:36 +0900 Subject: [PATCH 0912/1829] Implement IDistanceSnapProvider in timeline for now --- .../Compose/Components/Timeline/Timeline.cs | 52 ++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs index b4f3b1f610..c866fb38c8 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs @@ -10,11 +10,15 @@ using osu.Framework.Graphics.Audio; using osu.Framework.Input.Events; using osu.Framework.Timing; using osu.Game.Beatmaps; +using osu.Game.Beatmaps.ControlPoints; using osu.Game.Graphics; +using osu.Game.Rulesets.Edit; +using osuTK; namespace osu.Game.Screens.Edit.Compose.Components.Timeline { - public class Timeline : ZoomableScrollContainer + [Cached(typeof(IDistanceSnapProvider))] + public class Timeline : ZoomableScrollContainer, IDistanceSnapProvider { public readonly Bindable WaveformVisible = new Bindable(); public readonly IBindable Beatmap = new Bindable(); @@ -162,5 +166,51 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline if (trackWasPlaying) adjustableClock.Start(); } + + [Resolved] + private BindableBeatDivisor beatDivisor { get; set; } + + [Resolved] + private EditorBeatmap beatmap { get; set; } + + public (Vector2 position, double time) GetSnappedPosition(Vector2 position, double time) => (position, time); + + public float GetBeatSnapDistanceAt(double referenceTime) + { + DifficultyControlPoint difficultyPoint = beatmap.ControlPointInfo.DifficultyPointAt(referenceTime); + return (float)(100 * beatmap.BeatmapInfo.BaseDifficulty.SliderMultiplier * difficultyPoint.SpeedMultiplier / beatDivisor.Value); + } + + public float DurationToDistance(double referenceTime, double duration) + { + double beatLength = beatmap.ControlPointInfo.TimingPointAt(referenceTime).BeatLength / beatDivisor.Value; + return (float)(duration / beatLength * GetBeatSnapDistanceAt(referenceTime)); + } + + public double DistanceToDuration(double referenceTime, float distance) + { + double beatLength = beatmap.ControlPointInfo.TimingPointAt(referenceTime).BeatLength / beatDivisor.Value; + return distance / GetBeatSnapDistanceAt(referenceTime) * beatLength; + } + + public double GetSnappedDurationFromDistance(double referenceTime, float distance) + => beatSnap(referenceTime, DistanceToDuration(referenceTime, distance)); + + public float GetSnappedDistanceFromDistance(double referenceTime, float distance) + => DurationToDistance(referenceTime, beatSnap(referenceTime, DistanceToDuration(referenceTime, distance))); + + /// + /// Snaps a duration to the closest beat of a timing point applicable at the reference time. + /// + /// The time of the timing point which resides in. + /// The duration to snap. + /// A value that represents snapped to the closest beat of the timing point. + private double beatSnap(double referenceTime, double duration) + { + double beatLength = beatmap.ControlPointInfo.TimingPointAt(referenceTime).BeatLength / beatDivisor.Value; + + // A 1ms offset prevents rounding errors due to minute variations in duration + return (int)((duration + 1) / beatLength) * beatLength; + } } } From a888d148b653477e11ea7b5a292faf5a2c63b39d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 21 Jan 2020 18:01:10 +0900 Subject: [PATCH 0913/1829] Remove remaining cast --- .../Screens/Edit/Compose/Components/BlueprintContainer.cs | 2 +- .../Screens/Edit/Compose/Components/MoveSelectionEvent.cs | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index 438be6ab54..b792065b43 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -374,7 +374,7 @@ namespace osu.Game.Screens.Edit.Compose.Components (Vector2 snappedPosition, double snappedTime) = snapProvider.GetSnappedPosition(ToLocalSpace(movePosition), draggedObject.StartTime); // Move the hitobjects - if (!selectionHandler.HandleMovement(new MoveSelectionEvent((OverlaySelectionBlueprint)movementBlueprint, startPosition, ToScreenSpace(snappedPosition)))) + if (!selectionHandler.HandleMovement(new MoveSelectionEvent(movementBlueprint, startPosition, ToScreenSpace(snappedPosition)))) return true; // Apply the start time at the newly snapped-to position diff --git a/osu.Game/Screens/Edit/Compose/Components/MoveSelectionEvent.cs b/osu.Game/Screens/Edit/Compose/Components/MoveSelectionEvent.cs index 8662347aeb..48cb702c78 100644 --- a/osu.Game/Screens/Edit/Compose/Components/MoveSelectionEvent.cs +++ b/osu.Game/Screens/Edit/Compose/Components/MoveSelectionEvent.cs @@ -12,9 +12,9 @@ namespace osu.Game.Screens.Edit.Compose.Components public class MoveSelectionEvent { /// - /// The that triggered this . + /// The that triggered this . /// - public readonly OverlaySelectionBlueprint Blueprint; + public readonly SelectionBlueprint Blueprint; /// /// The starting screen-space position of the hitobject. @@ -34,13 +34,13 @@ namespace osu.Game.Screens.Edit.Compose.Components /// public readonly Vector2 InstantDelta; - public MoveSelectionEvent(OverlaySelectionBlueprint blueprint, Vector2 screenSpaceStartPosition, Vector2 screenSpacePosition) + public MoveSelectionEvent(SelectionBlueprint blueprint, Vector2 screenSpaceStartPosition, Vector2 screenSpacePosition) { Blueprint = blueprint; ScreenSpaceStartPosition = screenSpaceStartPosition; ScreenSpacePosition = screenSpacePosition; - InstantDelta = Blueprint.DrawableObject.Parent.ToLocalSpace(ScreenSpacePosition) - Blueprint.DrawableObject.Position; + InstantDelta = Blueprint.GetInstantDelta(ScreenSpacePosition); } } } From f582c42bbd3a248c98d47bcc27470a94c7e7b6d4 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 21 Jan 2020 18:56:09 +0900 Subject: [PATCH 0914/1829] Perform deletion directly via EditorBeatmap --- osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs b/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs index 907a22b9ce..9d9685af8a 100644 --- a/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs +++ b/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs @@ -38,7 +38,7 @@ namespace osu.Game.Screens.Edit.Compose.Components private Drawable outline; [Resolved(CanBeNull = true)] - private IPlacementHandler placementHandler { get; set; } + private EditorBeatmap editorBeatmap { get; set; } public SelectionHandler() { @@ -146,7 +146,7 @@ namespace osu.Game.Screens.Edit.Compose.Components private void deleteSelected() { foreach (var h in selectedBlueprints.ToList()) - placementHandler.Delete(h.HitObject); + editorBeatmap.Remove(h.HitObject); } #endregion From b8d2012fc3fa5a02315ff9f394e6f3eda2d320be Mon Sep 17 00:00:00 2001 From: ProTheory8 Date: Tue, 21 Jan 2020 10:26:51 +0000 Subject: [PATCH 0915/1829] Added test --- .../UserInterface/TestSceneModSettings.cs | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs index 8dcb7dcbf8..c7744129cb 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs @@ -25,6 +25,8 @@ namespace osu.Game.Tests.Visual.UserInterface private readonly Mod testCustomisableMod = new TestModCustomisable1(); + private readonly Mod testCustomisableAutoOpenMod = new TestModCustomisable3(); + [Test] public void TestButtonShowsOnCustomisableMod() { @@ -53,6 +55,16 @@ namespace osu.Game.Tests.Visual.UserInterface AddAssert("button enabled", () => modSelect.CustomiseButton.Enabled.Value); } + [Test] + public void TestCustomisationOpensOnModSelect() + { + createModSelect(); + + AddStep("open", () => modSelect.Show()); + AddStep("select mod", () => modSelect.SelectMod(testCustomisableAutoOpenMod)); + AddAssert("Customisation opened", () => modSelect.ModSettingsContainer.Alpha == 1); + } + private void createModSelect() { AddStep("create mod select", () => @@ -98,7 +110,8 @@ namespace osu.Game.Tests.Visual.UserInterface return new Mod[] { new TestModCustomisable1(), - new TestModCustomisable2() + new TestModCustomisable2(), + new TestModCustomisable3() }; } @@ -130,6 +143,15 @@ namespace osu.Game.Tests.Visual.UserInterface public override string Acronym => "CM2"; } + private class TestModCustomisable3 : TestModCustomisable + { + public override string Name => "Customisable Mod 3"; + + public override string Acronym => "CM3"; + + public override bool RequiresConfiguration => true; + } + private abstract class TestModCustomisable : Mod, IApplicableMod { public override double ScoreMultiplier => 1.0; From 1ce78afa9872008ceed0a428366eedb4da9472d5 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 21 Jan 2020 19:51:44 +0900 Subject: [PATCH 0916/1829] Disable y offset for now --- .../Compose/Components/Timeline/TimelineHitObjectDisplay.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index 32efdd42a3..d83336b21b 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -44,9 +44,9 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline protected override SelectionBlueprint CreateBlueprintFor(HitObject hitObject) { //var yOffset = content.Count(d => d.X == h.StartTime); - var yOffset = 0; + //var yOffset = 0; - return new TimelineHitObjectRepresentation(hitObject) { Y = -yOffset * TimelineHitObjectRepresentation.THICKNESS }; + return new TimelineHitObjectRepresentation(hitObject); } internal class NoDragDragBox : DragBox From c88bdbd4a0264f766de60f88af736d1da4b6a998 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 21 Jan 2020 20:46:39 +0900 Subject: [PATCH 0917/1829] Share selected hitobjects across multiple blueprint containers --- .../Compose/Components/BlueprintContainer.cs | 18 ++++++++++++++++++ .../Compose/Components/SelectionHandler.cs | 7 ++++++- osu.Game/Screens/Edit/EditorBeatmap.cs | 2 ++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index b792065b43..c5414542e4 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; using osu.Framework.Allocation; +using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Primitives; @@ -41,6 +42,8 @@ namespace osu.Game.Screens.Edit.Compose.Components [Resolved] private EditorBeatmap beatmap { get; set; } + private readonly BindableList selectedHitObjects = new BindableList(); + [Resolved(canBeNull: true)] private IDistanceSnapProvider snapProvider { get; set; } @@ -65,6 +68,19 @@ namespace osu.Game.Screens.Edit.Compose.Components foreach (var obj in beatmap.HitObjects) AddBlueprintFor(obj); + + selectedHitObjects.BindTo(beatmap.SelectedHitObjects); + selectedHitObjects.ItemsAdded += objects => + { + foreach (var o in objects) + selectionBlueprints.FirstOrDefault(b => b.HitObject == o)?.Select(); + }; + + selectedHitObjects.ItemsRemoved += objects => + { + foreach (var o in objects) + selectionBlueprints.FirstOrDefault(b => b.HitObject == o)?.Deselect(); + }; } protected virtual SelectionBlueprintContainer CreateSelectionBlueprintContainer() => new SelectionBlueprintContainer { RelativeSizeAxes = Axes.Both }; @@ -315,6 +331,7 @@ namespace osu.Game.Screens.Edit.Compose.Components { selectionHandler.HandleSelected(blueprint); selectionBlueprints.ChangeChildDepth(blueprint, 1); + beatmap.SelectedHitObjects.Add(blueprint.HitObject); SelectionChanged?.Invoke(selectionHandler.SelectedHitObjects); } @@ -323,6 +340,7 @@ namespace osu.Game.Screens.Edit.Compose.Components { selectionHandler.HandleDeselected(blueprint); selectionBlueprints.ChangeChildDepth(blueprint, 0); + beatmap.SelectedHitObjects.Remove(blueprint.HitObject); SelectionChanged?.Invoke(selectionHandler.SelectedHitObjects); } diff --git a/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs b/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs index 9d9685af8a..6ca110e518 100644 --- a/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs +++ b/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs @@ -102,7 +102,11 @@ namespace osu.Game.Screens.Edit.Compose.Components /// Handle a blueprint becoming selected. /// /// The blueprint. - internal void HandleSelected(SelectionBlueprint blueprint) => selectedBlueprints.Add(blueprint); + internal void HandleSelected(SelectionBlueprint blueprint) + { + selectedBlueprints.Add(blueprint); + editorBeatmap.SelectedHitObjects.Add(blueprint.HitObject); + } /// /// Handle a blueprint becoming deselected. @@ -111,6 +115,7 @@ namespace osu.Game.Screens.Edit.Compose.Components internal void HandleDeselected(SelectionBlueprint blueprint) { selectedBlueprints.Remove(blueprint); + editorBeatmap.SelectedHitObjects.Remove(blueprint.HitObject); // We don't want to update visibility if > 0, since we may be deselecting blueprints during drag-selection if (selectedBlueprints.Count == 0) diff --git a/osu.Game/Screens/Edit/EditorBeatmap.cs b/osu.Game/Screens/Edit/EditorBeatmap.cs index 6ed74dfdb0..2ff7563a88 100644 --- a/osu.Game/Screens/Edit/EditorBeatmap.cs +++ b/osu.Game/Screens/Edit/EditorBeatmap.cs @@ -29,6 +29,8 @@ namespace osu.Game.Screens.Edit /// public event Action StartTimeChanged; + public BindableList SelectedHitObjects { get; } = new BindableList(); + public readonly IBeatmap PlayableBeatmap; private readonly Dictionary> startTimeBindables = new Dictionary>(); From a963d652bc1caee47081b5d4a8dc0ae93134a246 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 21 Jan 2020 20:54:50 +0900 Subject: [PATCH 0918/1829] Mark readonly --- .../Compose/Components/Timeline/TimelineHitObjectDisplay.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index d83336b21b..b2ff9eee12 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -61,7 +61,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline private class TimelineHitObjectRepresentation : SelectionBlueprint { - private Circle circle; + private readonly Circle circle; public const float THICKNESS = 3; From 83fa4a9bb34d74e362cd7e684f0879c9d385a812 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 21 Jan 2020 22:24:04 +0900 Subject: [PATCH 0919/1829] Move circle size to a constant --- .../Compose/Components/Timeline/TimelineHitObjectDisplay.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index b2ff9eee12..7932813bbc 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -65,6 +65,8 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline public const float THICKNESS = 3; + private const float circle_size = 16; + public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => base.ReceivePositionalInputAt(screenSpacePos) || circle.ReceivePositionalInputAt(screenSpacePos); public TimelineHitObjectRepresentation(HitObject hitObject) @@ -101,7 +103,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline AddInternal(circle = new Circle { - Size = new Vector2(16), + Size = new Vector2(circle_size), Anchor = Anchor.CentreLeft, Origin = Anchor.Centre, RelativePositionAxes = Axes.X, From 9de4424aec08a26e5d179d5015e4fef93de25990 Mon Sep 17 00:00:00 2001 From: ProTheory8 Date: Tue, 21 Jan 2020 14:32:53 +0000 Subject: [PATCH 0920/1829] Removed TestModCustomisable3 --- .../Visual/UserInterface/TestSceneModSettings.cs | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs index c7744129cb..e2ce2341e5 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs @@ -25,7 +25,7 @@ namespace osu.Game.Tests.Visual.UserInterface private readonly Mod testCustomisableMod = new TestModCustomisable1(); - private readonly Mod testCustomisableAutoOpenMod = new TestModCustomisable3(); + private readonly Mod testCustomisableAutoOpenMod = new TestModCustomisable2(); [Test] public void TestButtonShowsOnCustomisableMod() @@ -61,6 +61,7 @@ namespace osu.Game.Tests.Visual.UserInterface createModSelect(); AddStep("open", () => modSelect.Show()); + AddAssert("Customisation closed", () => modSelect.ModSettingsContainer.Alpha == 0); AddStep("select mod", () => modSelect.SelectMod(testCustomisableAutoOpenMod)); AddAssert("Customisation opened", () => modSelect.ModSettingsContainer.Alpha == 1); } @@ -110,8 +111,7 @@ namespace osu.Game.Tests.Visual.UserInterface return new Mod[] { new TestModCustomisable1(), - new TestModCustomisable2(), - new TestModCustomisable3() + new TestModCustomisable2() }; } @@ -141,13 +141,6 @@ namespace osu.Game.Tests.Visual.UserInterface public override string Name => "Customisable Mod 2"; public override string Acronym => "CM2"; - } - - private class TestModCustomisable3 : TestModCustomisable - { - public override string Name => "Customisable Mod 3"; - - public override string Acronym => "CM3"; public override bool RequiresConfiguration => true; } From 98aaf3864953f31a942184bdc6adce5e3781e782 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 21 Jan 2020 23:58:51 +0900 Subject: [PATCH 0921/1829] Fix playfield movement regressing --- osu.Game/Rulesets/Edit/OverlaySelectionBlueprint.cs | 2 ++ osu.Game/Rulesets/Edit/SelectionBlueprint.cs | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Edit/OverlaySelectionBlueprint.cs b/osu.Game/Rulesets/Edit/OverlaySelectionBlueprint.cs index 4c3898aa04..b4ae3f3fba 100644 --- a/osu.Game/Rulesets/Edit/OverlaySelectionBlueprint.cs +++ b/osu.Game/Rulesets/Edit/OverlaySelectionBlueprint.cs @@ -28,5 +28,7 @@ namespace osu.Game.Rulesets.Edit public override Vector2 SelectionPoint => DrawableObject.ScreenSpaceDrawQuad.Centre; public override Quad SelectionQuad => DrawableObject.ScreenSpaceDrawQuad; + + public override Vector2 GetInstantDelta(Vector2 screenSpacePosition) => DrawableObject.Parent.ToLocalSpace(screenSpacePosition) - DrawableObject.Position; } } diff --git a/osu.Game/Rulesets/Edit/SelectionBlueprint.cs b/osu.Game/Rulesets/Edit/SelectionBlueprint.cs index 1c82a8287b..9998254f76 100644 --- a/osu.Game/Rulesets/Edit/SelectionBlueprint.cs +++ b/osu.Game/Rulesets/Edit/SelectionBlueprint.cs @@ -121,6 +121,6 @@ namespace osu.Game.Rulesets.Edit /// public virtual Quad SelectionQuad => ScreenSpaceDrawQuad; - public Vector2 GetInstantDelta(Vector2 screenSpacePosition) => Parent.ToLocalSpace(screenSpacePosition) - Position; + public virtual Vector2 GetInstantDelta(Vector2 screenSpacePosition) => Parent.ToLocalSpace(screenSpacePosition) - Position; } } From e3a2b20f631532dece1d51a4eabd89cc4c05bdff Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 22 Jan 2020 01:32:11 +0900 Subject: [PATCH 0922/1829] Fix SelectionHandler visibility on remote selection --- osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs b/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs index 6ca110e518..0aced5f957 100644 --- a/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs +++ b/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs @@ -106,6 +106,8 @@ namespace osu.Game.Screens.Edit.Compose.Components { selectedBlueprints.Add(blueprint); editorBeatmap.SelectedHitObjects.Add(blueprint.HitObject); + + UpdateVisibility(); } /// @@ -144,8 +146,6 @@ namespace osu.Game.Screens.Edit.Compose.Components DeselectAll?.Invoke(); blueprint.Select(); } - - UpdateVisibility(); } private void deleteSelected() From 03b6a3ddc3fabdffc6fb7c8a76dc6999ba7c2cca Mon Sep 17 00:00:00 2001 From: raouls555 <30951475+raouls555@users.noreply.github.com> Date: Tue, 21 Jan 2020 23:22:08 +0100 Subject: [PATCH 0923/1829] Allow parsing hex colour codes with alpha --- osu.Game/Graphics/OsuColour.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/osu.Game/Graphics/OsuColour.cs b/osu.Game/Graphics/OsuColour.cs index 6767104576..53a40f5613 100644 --- a/osu.Game/Graphics/OsuColour.cs +++ b/osu.Game/Graphics/OsuColour.cs @@ -36,6 +36,20 @@ namespace osu.Game.Graphics Convert.ToByte(hex.Substring(2, 2), 16), Convert.ToByte(hex.Substring(4, 2), 16), 255); + + case 4: + return new Color4( + (byte)(Convert.ToByte(hex.Substring(0, 1), 16) * 17), + (byte)(Convert.ToByte(hex.Substring(1, 1), 16) * 17), + (byte)(Convert.ToByte(hex.Substring(2, 1), 16) * 17), + (byte)(Convert.ToByte(hex.Substring(3, 1), 16) * 17)); + + case 8: + return new Color4( + Convert.ToByte(hex.Substring(0, 2), 16), + Convert.ToByte(hex.Substring(2, 2), 16), + Convert.ToByte(hex.Substring(4, 2), 16), + Convert.ToByte(hex.Substring(6, 2), 16)); } } From 14a961c95b3a6bb17f303c168bb5ed26e9f1192c Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 22 Jan 2020 04:41:10 +0300 Subject: [PATCH 0924/1829] Remove invariance in the OverlayTabItem --- osu.Game/Overlays/TabControlOverlayHeader.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/TabControlOverlayHeader.cs b/osu.Game/Overlays/TabControlOverlayHeader.cs index 11f93bb373..0837bf0db4 100644 --- a/osu.Game/Overlays/TabControlOverlayHeader.cs +++ b/osu.Game/Overlays/TabControlOverlayHeader.cs @@ -78,7 +78,7 @@ namespace osu.Game.Overlays public OverlayHeaderTabItem(T value) : base(value) { - Text.Text = value.ToString().ToLowerInvariant(); + Text.Text = value.ToString().ToLower(); Text.Font = OsuFont.GetFont(size: 14); Bar.ExpandedSize = 5; } From 7b2f58eb305bd27c8183c9f0405b97c07569708a Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 22 Jan 2020 13:22:34 +0900 Subject: [PATCH 0925/1829] Apply OnRelease method signature refactorings --- osu.Game.Rulesets.Catch/Mods/CatchModRelax.cs | 5 ++++- osu.Game.Rulesets.Catch/UI/CatcherArea.cs | 14 +++++++------- .../Objects/Drawables/DrawableHoldNote.cs | 10 ++++------ .../Objects/Drawables/DrawableHoldNoteHead.cs | 4 +++- .../Objects/Drawables/DrawableHoldNoteTail.cs | 4 +++- .../Objects/Drawables/DrawableNote.cs | 4 +++- osu.Game.Rulesets.Mania/UI/Column.cs | 4 +++- .../UI/Components/ColumnBackground.cs | 3 +-- .../UI/Components/ColumnKeyArea.cs | 3 +-- .../Components/PathControlPointVisualiser.cs | 4 +++- .../Objects/Drawables/DrawableHitCircle.cs | 4 +++- .../UI/Cursor/OsuCursorContainer.cs | 4 +--- osu.Game.Rulesets.Osu/UI/OsuResumeOverlay.cs | 4 +++- .../Objects/Drawables/DrawableHit.cs | 5 +++-- .../Objects/Drawables/DrawableTaikoHitObject.cs | 5 ++++- osu.Game.Rulesets.Taiko/UI/InputDrum.cs | 4 +++- .../Containers/OsuFocusedOverlayContainer.cs | 4 +++- osu.Game/Graphics/ScreenshotManager.cs | 4 +++- osu.Game/Graphics/UserInterface/BackButton.cs | 4 +++- osu.Game/Graphics/UserInterface/FocusedTextBox.cs | 4 +++- osu.Game/Input/IdleTracker.cs | 2 +- osu.Game/OsuGame.cs | 4 +++- osu.Game/Overlays/MusicController.cs | 4 +++- osu.Game/Overlays/Volume/VolumeControlReceptor.cs | 5 ++++- osu.Game/Rulesets/UI/RulesetInputManager.cs | 6 +++++- .../UI/Scrolling/DrawableScrollingRuleset.cs | 4 +++- .../Edit/Compose/Components/BlueprintContainer.cs | 4 +++- .../Edit/Compose/Components/SelectionHandler.cs | 4 +++- osu.Game/Screens/Edit/Editor.cs | 4 +++- osu.Game/Screens/Menu/ButtonSystem.cs | 4 +++- osu.Game/Screens/Menu/ExitConfirmOverlay.cs | 5 +---- osu.Game/Screens/Play/GameplayMenuOverlay.cs | 10 +--------- osu.Game/Screens/Play/HUD/HoldForMenuButton.cs | 6 ++---- osu.Game/Screens/Play/HotkeyExitOverlay.cs | 5 ++--- osu.Game/Screens/Play/HotkeyRetryOverlay.cs | 5 ++--- osu.Game/Screens/Play/KeyCounterAction.cs | 5 ++--- osu.Game/Screens/Play/SkipOverlay.cs | 4 +++- osu.Game/Screens/Select/SongSelect.cs | 4 +++- 38 files changed, 108 insertions(+), 74 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Mods/CatchModRelax.cs b/osu.Game.Rulesets.Catch/Mods/CatchModRelax.cs index a47efcc10a..4c72b9fd3e 100644 --- a/osu.Game.Rulesets.Catch/Mods/CatchModRelax.cs +++ b/osu.Game.Rulesets.Catch/Mods/CatchModRelax.cs @@ -36,7 +36,10 @@ namespace osu.Game.Rulesets.Catch.Mods //disable keyboard controls public bool OnPressed(CatchAction action) => true; - public bool OnReleased(CatchAction action) => true; + + public void OnReleased(CatchAction action) + { + } protected override bool OnMouseMove(MouseMoveEvent e) { diff --git a/osu.Game.Rulesets.Catch/UI/CatcherArea.cs b/osu.Game.Rulesets.Catch/UI/CatcherArea.cs index 0c8c483048..1de0b6bfa3 100644 --- a/osu.Game.Rulesets.Catch/UI/CatcherArea.cs +++ b/osu.Game.Rulesets.Catch/UI/CatcherArea.cs @@ -103,7 +103,9 @@ namespace osu.Game.Rulesets.Catch.UI MovableCatcher.X = state.CatcherX.Value; } - public bool OnReleased(CatchAction action) => false; + public void OnReleased(CatchAction action) + { + } public bool AttemptCatch(CatchHitObject obj) => MovableCatcher.AttemptCatch(obj); @@ -341,24 +343,22 @@ namespace osu.Game.Rulesets.Catch.UI return false; } - public bool OnReleased(CatchAction action) + public void OnReleased(CatchAction action) { switch (action) { case CatchAction.MoveLeft: currentDirection++; - return true; + break; case CatchAction.MoveRight: currentDirection--; - return true; + break; case CatchAction.Dash: Dashing = false; - return true; + break; } - - return false; } /// diff --git a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNote.cs b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNote.cs index 155adb958b..14a7c5fda3 100644 --- a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNote.cs +++ b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNote.cs @@ -171,17 +171,17 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables bodyPiece.Hitting = true; } - public bool OnReleased(ManiaAction action) + public void OnReleased(ManiaAction action) { if (AllJudged) - return false; + return; if (action != Action.Value) - return false; + return; // Make sure a hold was started if (HoldStartTime == null) - return false; + return; Tail.UpdateResult(); endHold(); @@ -189,8 +189,6 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables // If the key has been released too early, the user should not receive full score for the release if (!Tail.IsHit) HasBroken = true; - - return true; } private void endHold() diff --git a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteHead.cs b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteHead.cs index a5d03bf765..390c64c5e2 100644 --- a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteHead.cs +++ b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteHead.cs @@ -17,6 +17,8 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables public override bool OnPressed(ManiaAction action) => false; // Handled by the hold note - public override bool OnReleased(ManiaAction action) => false; // Handled by the hold note + public override void OnReleased(ManiaAction action) + { + } } } diff --git a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteTail.cs b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteTail.cs index a660144dd1..568b07c958 100644 --- a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteTail.cs +++ b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNoteTail.cs @@ -59,6 +59,8 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables public override bool OnPressed(ManiaAction action) => false; // Handled by the hold note - public override bool OnReleased(ManiaAction action) => false; // Handled by the hold note + public override void OnReleased(ManiaAction action) + { + } } } diff --git a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableNote.cs b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableNote.cs index 8f353ae138..85613d3afb 100644 --- a/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableNote.cs +++ b/osu.Game.Rulesets.Mania/Objects/Drawables/DrawableNote.cs @@ -77,6 +77,8 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables return UpdateResult(true); } - public virtual bool OnReleased(ManiaAction action) => false; + public virtual void OnReleased(ManiaAction action) + { + } } } diff --git a/osu.Game.Rulesets.Mania/UI/Column.cs b/osu.Game.Rulesets.Mania/UI/Column.cs index 3d2a070b0f..63c573d344 100644 --- a/osu.Game.Rulesets.Mania/UI/Column.cs +++ b/osu.Game.Rulesets.Mania/UI/Column.cs @@ -191,7 +191,9 @@ namespace osu.Game.Rulesets.Mania.UI return true; } - public bool OnReleased(ManiaAction action) => false; + public void OnReleased(ManiaAction action) + { + } public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) // This probably shouldn't exist as is, but the columns in the stage are separated by a 1px border diff --git a/osu.Game.Rulesets.Mania/UI/Components/ColumnBackground.cs b/osu.Game.Rulesets.Mania/UI/Components/ColumnBackground.cs index 57241da564..75cc351310 100644 --- a/osu.Game.Rulesets.Mania/UI/Components/ColumnBackground.cs +++ b/osu.Game.Rulesets.Mania/UI/Components/ColumnBackground.cs @@ -98,11 +98,10 @@ namespace osu.Game.Rulesets.Mania.UI.Components return false; } - public bool OnReleased(ManiaAction action) + public void OnReleased(ManiaAction action) { if (action == this.action.Value) backgroundOverlay.FadeTo(0, 250, Easing.OutQuint); - return false; } } } diff --git a/osu.Game.Rulesets.Mania/UI/Components/ColumnKeyArea.cs b/osu.Game.Rulesets.Mania/UI/Components/ColumnKeyArea.cs index 85880222d7..60fc2713b3 100644 --- a/osu.Game.Rulesets.Mania/UI/Components/ColumnKeyArea.cs +++ b/osu.Game.Rulesets.Mania/UI/Components/ColumnKeyArea.cs @@ -115,11 +115,10 @@ namespace osu.Game.Rulesets.Mania.UI.Components return false; } - public bool OnReleased(ManiaAction action) + public void OnReleased(ManiaAction action) { if (action == this.action.Value) keyIcon.ScaleTo(1f, 125, Easing.OutQuint); - return false; } } } diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs index 6f583d7983..e293eba9d7 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointVisualiser.cs @@ -108,7 +108,9 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components return false; } - public bool OnReleased(PlatformAction action) => action.ActionMethod == PlatformActionMethod.Delete; + public void OnReleased(PlatformAction action) + { + } private void selectPiece(PathControlPointPiece piece, MouseButtonEvent e) { diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableHitCircle.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableHitCircle.cs index f74f2d7bc5..3162f4b379 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableHitCircle.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableHitCircle.cs @@ -205,7 +205,9 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables return false; } - public bool OnReleased(OsuAction action) => false; + public void OnReleased(OsuAction action) + { + } } } } diff --git a/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorContainer.cs b/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorContainer.cs index 6433ced624..a463542e64 100644 --- a/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorContainer.cs +++ b/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorContainer.cs @@ -107,7 +107,7 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor return false; } - public bool OnReleased(OsuAction action) + public void OnReleased(OsuAction action) { switch (action) { @@ -120,8 +120,6 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor updateExpandedState(); break; } - - return false; } public override bool HandlePositionalInput => true; // OverlayContainer will set this false when we go hidden, but we always want to receive input. diff --git a/osu.Game.Rulesets.Osu/UI/OsuResumeOverlay.cs b/osu.Game.Rulesets.Osu/UI/OsuResumeOverlay.cs index 3b18e41f30..ca3030db3e 100644 --- a/osu.Game.Rulesets.Osu/UI/OsuResumeOverlay.cs +++ b/osu.Game.Rulesets.Osu/UI/OsuResumeOverlay.cs @@ -107,7 +107,9 @@ namespace osu.Game.Rulesets.Osu.UI return false; } - public bool OnReleased(OsuAction action) => false; + public void OnReleased(OsuAction action) + { + } public void Appear() => Schedule(() => { diff --git a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHit.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHit.cs index 4b25ff0ecc..85dfc8d5e0 100644 --- a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHit.cs +++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHit.cs @@ -77,11 +77,12 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables return result; } - public override bool OnReleased(TaikoAction action) + public override void OnReleased(TaikoAction action) { if (action == HitAction) HitAction = null; - return base.OnReleased(action); + + base.OnReleased(action); } protected override void Update() diff --git a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs index b9d31ff906..5f892dd2fa 100644 --- a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs +++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs @@ -77,7 +77,10 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables public Drawable CreateProxiedContent() => proxiedContent.CreateProxy(); public abstract bool OnPressed(TaikoAction action); - public virtual bool OnReleased(TaikoAction action) => false; + + public virtual void OnReleased(TaikoAction action) + { + } public override double LifetimeStart { diff --git a/osu.Game.Rulesets.Taiko/UI/InputDrum.cs b/osu.Game.Rulesets.Taiko/UI/InputDrum.cs index 5234ae1f69..d26ccfe867 100644 --- a/osu.Game.Rulesets.Taiko/UI/InputDrum.cs +++ b/osu.Game.Rulesets.Taiko/UI/InputDrum.cs @@ -187,7 +187,9 @@ namespace osu.Game.Rulesets.Taiko.UI return false; } - public bool OnReleased(TaikoAction action) => false; + public void OnReleased(TaikoAction action) + { + } } } } diff --git a/osu.Game/Graphics/Containers/OsuFocusedOverlayContainer.cs b/osu.Game/Graphics/Containers/OsuFocusedOverlayContainer.cs index facf70b47a..652b693b86 100644 --- a/osu.Game/Graphics/Containers/OsuFocusedOverlayContainer.cs +++ b/osu.Game/Graphics/Containers/OsuFocusedOverlayContainer.cs @@ -99,7 +99,9 @@ namespace osu.Game.Graphics.Containers return false; } - public bool OnReleased(GlobalAction action) => false; + public void OnReleased(GlobalAction action) + { + } protected override void UpdateState(ValueChangedEvent state) { diff --git a/osu.Game/Graphics/ScreenshotManager.cs b/osu.Game/Graphics/ScreenshotManager.cs index b9151b7393..7f20c30048 100644 --- a/osu.Game/Graphics/ScreenshotManager.cs +++ b/osu.Game/Graphics/ScreenshotManager.cs @@ -67,7 +67,9 @@ namespace osu.Game.Graphics return false; } - public bool OnReleased(GlobalAction action) => false; + public void OnReleased(GlobalAction action) + { + } private volatile int screenShotTasks; diff --git a/osu.Game/Graphics/UserInterface/BackButton.cs b/osu.Game/Graphics/UserInterface/BackButton.cs index 23565e8742..88ba7ede6e 100644 --- a/osu.Game/Graphics/UserInterface/BackButton.cs +++ b/osu.Game/Graphics/UserInterface/BackButton.cs @@ -67,7 +67,9 @@ namespace osu.Game.Graphics.UserInterface return false; } - public bool OnReleased(GlobalAction action) => action == GlobalAction.Back; + public void OnReleased(GlobalAction action) + { + } } } } diff --git a/osu.Game/Graphics/UserInterface/FocusedTextBox.cs b/osu.Game/Graphics/UserInterface/FocusedTextBox.cs index 0b183c0ec9..e59353a480 100644 --- a/osu.Game/Graphics/UserInterface/FocusedTextBox.cs +++ b/osu.Game/Graphics/UserInterface/FocusedTextBox.cs @@ -80,7 +80,9 @@ namespace osu.Game.Graphics.UserInterface return false; } - public bool OnReleased(GlobalAction action) => false; + public void OnReleased(GlobalAction action) + { + } public override bool RequestsFocus => HoldFocus; } diff --git a/osu.Game/Input/IdleTracker.cs b/osu.Game/Input/IdleTracker.cs index 39ccf9fe1c..63a6348b57 100644 --- a/osu.Game/Input/IdleTracker.cs +++ b/osu.Game/Input/IdleTracker.cs @@ -50,7 +50,7 @@ namespace osu.Game.Input public bool OnPressed(PlatformAction action) => updateLastInteractionTime(); - public bool OnReleased(PlatformAction action) => updateLastInteractionTime(); + public void OnReleased(PlatformAction action) => updateLastInteractionTime(); protected override bool Handle(UIEvent e) { diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index 9df854d178..ff46c6d849 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -881,7 +881,9 @@ namespace osu.Game #endregion - public bool OnReleased(GlobalAction action) => false; + public void OnReleased(GlobalAction action) + { + } private Container overlayContent; diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs index 3c0f6468bc..19f06e99f1 100644 --- a/osu.Game/Overlays/MusicController.cs +++ b/osu.Game/Overlays/MusicController.cs @@ -326,7 +326,9 @@ namespace osu.Game.Overlays return false; } - public bool OnReleased(GlobalAction action) => false; + public void OnReleased(GlobalAction action) + { + } public class MusicControllerToast : Toast { diff --git a/osu.Game/Overlays/Volume/VolumeControlReceptor.cs b/osu.Game/Overlays/Volume/VolumeControlReceptor.cs index 9cd3aac2cb..76fad945cc 100644 --- a/osu.Game/Overlays/Volume/VolumeControlReceptor.cs +++ b/osu.Game/Overlays/Volume/VolumeControlReceptor.cs @@ -16,6 +16,9 @@ namespace osu.Game.Overlays.Volume public bool OnPressed(GlobalAction action) => ActionRequested?.Invoke(action) ?? false; public bool OnScroll(GlobalAction action, float amount, bool isPrecise) => ScrollActionRequested?.Invoke(action, amount, isPrecise) ?? false; - public bool OnReleased(GlobalAction action) => false; + + public void OnReleased(GlobalAction action) + { + } } } diff --git a/osu.Game/Rulesets/UI/RulesetInputManager.cs b/osu.Game/Rulesets/UI/RulesetInputManager.cs index 5cc213be41..41b2739fc5 100644 --- a/osu.Game/Rulesets/UI/RulesetInputManager.cs +++ b/osu.Game/Rulesets/UI/RulesetInputManager.cs @@ -139,7 +139,11 @@ namespace osu.Game.Rulesets.UI public bool OnPressed(T action) => Target.Children.OfType>().Any(c => c.OnPressed(action, Clock.Rate >= 0)); - public bool OnReleased(T action) => Target.Children.OfType>().Any(c => c.OnReleased(action, Clock.Rate >= 0)); + public void OnReleased(T action) + { + foreach (var c in Target.Children.OfType>()) + c.OnReleased(action, Clock.Rate >= 0); + } } #endregion diff --git a/osu.Game/Rulesets/UI/Scrolling/DrawableScrollingRuleset.cs b/osu.Game/Rulesets/UI/Scrolling/DrawableScrollingRuleset.cs index fda1d7c723..8bcdfff2fd 100644 --- a/osu.Game/Rulesets/UI/Scrolling/DrawableScrollingRuleset.cs +++ b/osu.Game/Rulesets/UI/Scrolling/DrawableScrollingRuleset.cs @@ -201,7 +201,9 @@ namespace osu.Game.Rulesets.UI.Scrolling throw new ArgumentException($"{nameof(Playfield)} must be a {nameof(ScrollingPlayfield)} when using {nameof(DrawableScrollingRuleset)}."); } - public bool OnReleased(GlobalAction action) => false; + public void OnReleased(GlobalAction action) + { + } private class LocalScrollingInfo : IScrollingInfo { diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index cafaddc39e..11fbd8ce04 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -215,7 +215,9 @@ namespace osu.Game.Screens.Edit.Compose.Components return false; } - public bool OnReleased(PlatformAction action) => false; + public void OnReleased(PlatformAction action) + { + } protected override void Update() { diff --git a/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs b/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs index e2d7855eb5..1473a1a2da 100644 --- a/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs +++ b/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs @@ -87,7 +87,9 @@ namespace osu.Game.Screens.Edit.Compose.Components return false; } - public bool OnReleased(PlatformAction action) => action.ActionMethod == PlatformActionMethod.Delete; + public void OnReleased(PlatformAction action) + { + } #endregion diff --git a/osu.Game/Screens/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs index e212b429b9..e5cb319fb9 100644 --- a/osu.Game/Screens/Edit/Editor.cs +++ b/osu.Game/Screens/Edit/Editor.cs @@ -253,7 +253,9 @@ namespace osu.Game.Screens.Edit return false; } - public bool OnReleased(GlobalAction action) => action == GlobalAction.Back; + public void OnReleased(GlobalAction action) + { + } public override void OnResuming(IScreen last) { diff --git a/osu.Game/Screens/Menu/ButtonSystem.cs b/osu.Game/Screens/Menu/ButtonSystem.cs index ed8e4c70f9..d94f8aa11a 100644 --- a/osu.Game/Screens/Menu/ButtonSystem.cs +++ b/osu.Game/Screens/Menu/ButtonSystem.cs @@ -211,7 +211,9 @@ namespace osu.Game.Screens.Menu } } - public bool OnReleased(GlobalAction action) => false; + public void OnReleased(GlobalAction action) + { + } private bool goBack() { diff --git a/osu.Game/Screens/Menu/ExitConfirmOverlay.cs b/osu.Game/Screens/Menu/ExitConfirmOverlay.cs index aaa3a77e74..db2faeb60a 100644 --- a/osu.Game/Screens/Menu/ExitConfirmOverlay.cs +++ b/osu.Game/Screens/Menu/ExitConfirmOverlay.cs @@ -24,16 +24,13 @@ namespace osu.Game.Screens.Menu return false; } - public bool OnReleased(GlobalAction action) + public void OnReleased(GlobalAction action) { if (action == GlobalAction.Back) { if (!Fired) AbortConfirm(); - return true; } - - return false; } } } diff --git a/osu.Game/Screens/Play/GameplayMenuOverlay.cs b/osu.Game/Screens/Play/GameplayMenuOverlay.cs index adfbe977a4..0c94e04cf6 100644 --- a/osu.Game/Screens/Play/GameplayMenuOverlay.cs +++ b/osu.Game/Screens/Play/GameplayMenuOverlay.cs @@ -247,16 +247,8 @@ namespace osu.Game.Screens.Play return false; } - public bool OnReleased(GlobalAction action) + public void OnReleased(GlobalAction action) { - switch (action) - { - case GlobalAction.Back: - case GlobalAction.Select: - return true; - } - - return false; } private void buttonSelectionChanged(DialogButton button, bool isSelected) diff --git a/osu.Game/Screens/Play/HUD/HoldForMenuButton.cs b/osu.Game/Screens/Play/HUD/HoldForMenuButton.cs index 7946e6d322..f209d5ea6c 100644 --- a/osu.Game/Screens/Play/HUD/HoldForMenuButton.cs +++ b/osu.Game/Screens/Play/HUD/HoldForMenuButton.cs @@ -259,16 +259,14 @@ namespace osu.Game.Screens.Play.HUD return false; } - public bool OnReleased(GlobalAction action) + public void OnReleased(GlobalAction action) { switch (action) { case GlobalAction.Back: AbortConfirm(); - return true; + break; } - - return false; } protected override bool OnMouseDown(MouseDownEvent e) diff --git a/osu.Game/Screens/Play/HotkeyExitOverlay.cs b/osu.Game/Screens/Play/HotkeyExitOverlay.cs index c18aecda55..8d7e2481bf 100644 --- a/osu.Game/Screens/Play/HotkeyExitOverlay.cs +++ b/osu.Game/Screens/Play/HotkeyExitOverlay.cs @@ -17,12 +17,11 @@ namespace osu.Game.Screens.Play return true; } - public bool OnReleased(GlobalAction action) + public void OnReleased(GlobalAction action) { - if (action != GlobalAction.QuickExit) return false; + if (action != GlobalAction.QuickExit) return; AbortConfirm(); - return true; } } } diff --git a/osu.Game/Screens/Play/HotkeyRetryOverlay.cs b/osu.Game/Screens/Play/HotkeyRetryOverlay.cs index f1b851f2d5..58fd941f36 100644 --- a/osu.Game/Screens/Play/HotkeyRetryOverlay.cs +++ b/osu.Game/Screens/Play/HotkeyRetryOverlay.cs @@ -17,12 +17,11 @@ namespace osu.Game.Screens.Play return true; } - public bool OnReleased(GlobalAction action) + public void OnReleased(GlobalAction action) { - if (action != GlobalAction.QuickRetry) return false; + if (action != GlobalAction.QuickRetry) return; AbortConfirm(); - return true; } } } diff --git a/osu.Game/Screens/Play/KeyCounterAction.cs b/osu.Game/Screens/Play/KeyCounterAction.cs index 33d675358c..00eddcc776 100644 --- a/osu.Game/Screens/Play/KeyCounterAction.cs +++ b/osu.Game/Screens/Play/KeyCounterAction.cs @@ -27,15 +27,14 @@ namespace osu.Game.Screens.Play return false; } - public bool OnReleased(T action, bool forwards) + public void OnReleased(T action, bool forwards) { if (!EqualityComparer.Default.Equals(action, Action)) - return false; + return; IsLit = false; if (!forwards) Decrement(); - return false; } } } diff --git a/osu.Game/Screens/Play/SkipOverlay.cs b/osu.Game/Screens/Play/SkipOverlay.cs index 772d326c7f..d06e72bfa0 100644 --- a/osu.Game/Screens/Play/SkipOverlay.cs +++ b/osu.Game/Screens/Play/SkipOverlay.cs @@ -143,7 +143,9 @@ namespace osu.Game.Screens.Play return false; } - public bool OnReleased(GlobalAction action) => false; + public void OnReleased(GlobalAction action) + { + } private class FadeContainer : Container, IStateful { diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index 8f7ad2022d..bf57def700 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -681,7 +681,9 @@ namespace osu.Game.Screens.Select return false; } - public bool OnReleased(GlobalAction action) => action == GlobalAction.Select; + public void OnReleased(GlobalAction action) + { + } protected override bool OnKeyDown(KeyDownEvent e) { From bf2b71f7dd9cf1967d71c94872af1892c732ec14 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 22 Jan 2020 09:36:16 +0300 Subject: [PATCH 0926/1829] Cleanup OsuTabControl.AccentColour --- .../Graphics/UserInterface/OsuTabControl.cs | 35 +++++++++++-------- osu.Game/Overlays/OverlayTabControl.cs | 31 +++++----------- 2 files changed, 29 insertions(+), 37 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/OsuTabControl.cs b/osu.Game/Graphics/UserInterface/OsuTabControl.cs index ca18ab83a0..c0129c921e 100644 --- a/osu.Game/Graphics/UserInterface/OsuTabControl.cs +++ b/osu.Game/Graphics/UserInterface/OsuTabControl.cs @@ -17,12 +17,19 @@ using osu.Framework.Graphics.UserInterface; using osu.Framework.Input.Events; using osu.Framework.Utils; using osu.Game.Graphics.Sprites; -using osu.Framework.Extensions.IEnumerableExtensions; namespace osu.Game.Graphics.UserInterface { public class OsuTabControl : TabControl { + private readonly Bindable accentColour = new Bindable(); + + public Color4 AccentColour + { + get => accentColour.Value; + set => accentColour.Value = value; + } + private readonly Box strip; protected override Dropdown CreateDropdown() => new OsuTabDropdown(); @@ -60,24 +67,22 @@ namespace osu.Game.Graphics.UserInterface [BackgroundDependencyLoader] private void load(OsuColour colours) { - if (accentColour == default) + if (accentColour.Value == default) AccentColour = colours.Blue; } - private Color4 accentColour; - - public Color4 AccentColour + protected override void LoadComplete() { - get => accentColour; - set - { - accentColour = value; - if (Dropdown is IHasAccentColour dropdown) - dropdown.AccentColour = value; - foreach (var i in TabContainer.Children.OfType()) - i.AccentColour = value; - InternalChildren.OfType().ForEach(c => c.AccentColour = value); - } + base.LoadComplete(); + accentColour.BindValueChanged(OnAccentColourChanged, true); + } + + protected virtual void OnAccentColourChanged(ValueChangedEvent colour) + { + if (Dropdown is IHasAccentColour dropdown) + dropdown.AccentColour = colour.NewValue; + foreach (var i in TabContainer.Children.OfType()) + i.AccentColour = colour.NewValue; } public Color4 StripColour diff --git a/osu.Game/Overlays/OverlayTabControl.cs b/osu.Game/Overlays/OverlayTabControl.cs index 839136d37c..72977d6bff 100644 --- a/osu.Game/Overlays/OverlayTabControl.cs +++ b/osu.Game/Overlays/OverlayTabControl.cs @@ -1,8 +1,8 @@ // 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.Framework.Graphics.Shapes; using osu.Framework.Graphics.UserInterface; using osu.Framework.Input.Events; @@ -16,7 +16,7 @@ namespace osu.Game.Overlays { public abstract class OverlayTabControl : OsuTabControl { - private readonly TabControlBar bar; + private readonly Box bar; protected float BarHeight { @@ -28,7 +28,7 @@ namespace osu.Game.Overlays TabContainer.Masking = false; TabContainer.Spacing = new Vector2(15, 0); - AddInternal(bar = new TabControlBar + AddInternal(bar = new Box { RelativeSizeAxes = Axes.X, Height = 2, @@ -37,6 +37,12 @@ namespace osu.Game.Overlays }); } + protected override void OnAccentColourChanged(ValueChangedEvent colour) + { + base.OnAccentColourChanged(colour); + bar.Colour = colour.NewValue; + } + protected override Dropdown CreateDropdown() => null; protected override TabItem CreateTabItem(T value) => new OverlayTabItem(value); @@ -138,24 +144,5 @@ namespace osu.Game.Overlays Text.FadeColour(AccentColour, 120, Easing.InQuad); } } - - private class TabControlBar : CompositeDrawable, IHasAccentColour - { - public Color4 AccentColour - { - get => background.Colour; - set => background.Colour = value; - } - - private readonly Box background; - - public TabControlBar() - { - AddInternal(background = new Box - { - RelativeSizeAxes = Axes.Both - }); - } - } } } From 03b61e4a5a5e3338400882776b99be6a221e6679 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 22 Jan 2020 20:00:36 +0900 Subject: [PATCH 0927/1829] Throw exception rather than returning nulls --- osu.Game/Online/API/APIMod.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Online/API/APIMod.cs b/osu.Game/Online/API/APIMod.cs index 30336d16a3..46a8db31b7 100644 --- a/osu.Game/Online/API/APIMod.cs +++ b/osu.Game/Online/API/APIMod.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.Collections.Generic; using System.Linq; using Humanizer; @@ -38,7 +39,7 @@ namespace osu.Game.Online.API Mod resultMod = ruleset.GetAllMods().FirstOrDefault(m => m.Acronym == Acronym); if (resultMod == null) - return null; // Todo: Maybe throw exception? + throw new InvalidOperationException($"There is no mod in the ruleset ({ruleset.ShortName}) matching the acronym {Acronym}."); foreach (var (_, property) in resultMod.GetSettingsSourceProperties()) { From e2c4cffc9a23860bbebfd13405ffc33fc52e986c Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 22 Jan 2020 22:57:09 +0900 Subject: [PATCH 0928/1829] 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 9c0da1e9fd..2ccba60424 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index f41c5fee7f..9b431e6425 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 bb4a59a601..4dc7403553 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From 8ea354571cd48f010c6d0ca68f99fd5f2128e35e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 22 Jan 2020 23:04:37 +0900 Subject: [PATCH 0929/1829] Update naming --- osu.Game/OsuGameBase.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs index 0819642d2d..07c9d37a86 100644 --- a/osu.Game/OsuGameBase.cs +++ b/osu.Game/OsuGameBase.cs @@ -330,7 +330,7 @@ namespace osu.Game private class OsuUserInputManager : UserInputManager { - protected override MouseButtonEventManager CreateButtonManagerFor(MouseButton button) + protected override MouseButtonEventManager CreateButtonEventManagerFor(MouseButton button) { switch (button) { @@ -338,7 +338,7 @@ namespace osu.Game return new RightMouseManager(button); } - return base.CreateButtonManagerFor(button); + return base.CreateButtonEventManagerFor(button); } private class RightMouseManager : MouseButtonEventManager From c0935b9b86e9977c100090944c1d5528449eb379 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 22 Jan 2020 23:13:21 +0900 Subject: [PATCH 0930/1829] Update naming in tournament --- osu.Game.Tournament/TournamentGameBase.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tournament/TournamentGameBase.cs b/osu.Game.Tournament/TournamentGameBase.cs index 17d7dc0245..1c94856a4e 100644 --- a/osu.Game.Tournament/TournamentGameBase.cs +++ b/osu.Game.Tournament/TournamentGameBase.cs @@ -303,7 +303,7 @@ namespace osu.Game.Tournament private class TournamentInputManager : UserInputManager { - protected override MouseButtonEventManager CreateButtonManagerFor(MouseButton button) + protected override MouseButtonEventManager CreateButtonEventManagerFor(MouseButton button) { switch (button) { @@ -311,7 +311,7 @@ namespace osu.Game.Tournament return new RightMouseManager(button); } - return base.CreateButtonManagerFor(button); + return base.CreateButtonEventManagerFor(button); } private class RightMouseManager : MouseButtonEventManager From a6775d1bd3a0432e5e2b3b907d3bb14851fc26fe Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 22 Jan 2020 14:58:15 +0900 Subject: [PATCH 0931/1829] Implement custom drag box and allow drag seeking once again --- .../Edit/Compose/Components/DragBox.cs | 36 ++++++++++--------- .../Timeline/TimelineHitObjectDisplay.cs | 35 ++++++++++++++++-- 2 files changed, 51 insertions(+), 20 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/DragBox.cs b/osu.Game/Screens/Edit/Compose/Components/DragBox.cs index f522ca356f..adbab1767b 100644 --- a/osu.Game/Screens/Edit/Compose/Components/DragBox.cs +++ b/osu.Game/Screens/Edit/Compose/Components/DragBox.cs @@ -17,9 +17,9 @@ namespace osu.Game.Screens.Edit.Compose.Components /// public class DragBox : CompositeDrawable { - private readonly Action performSelection; + protected readonly Action PerformSelection; - private Drawable box; + protected Drawable Box; /// /// Creates a new . @@ -27,7 +27,7 @@ namespace osu.Game.Screens.Edit.Compose.Components /// A delegate that performs drag selection. public DragBox(Action performSelection) { - this.performSelection = performSelection; + PerformSelection = performSelection; RelativeSizeAxes = Axes.Both; AlwaysPresent = true; @@ -37,19 +37,21 @@ namespace osu.Game.Screens.Edit.Compose.Components [BackgroundDependencyLoader] private void load() { - InternalChild = box = new Container - { - Masking = true, - BorderColour = Color4.White, - BorderThickness = SelectionHandler.BORDER_RADIUS, - Child = new Box - { - RelativeSizeAxes = Axes.Both, - Alpha = 0.1f - } - }; + InternalChild = Box = CreateBox(); } + protected virtual Drawable CreateBox() => new Container + { + Masking = true, + BorderColour = Color4.White, + BorderThickness = SelectionHandler.BORDER_RADIUS, + Child = new Box + { + RelativeSizeAxes = Axes.Both, + Alpha = 0.1f + } + }; + /// /// Handle a forwarded mouse event. /// @@ -68,10 +70,10 @@ namespace osu.Game.Screens.Edit.Compose.Components var topLeft = ToLocalSpace(dragRectangle.TopLeft); var bottomRight = ToLocalSpace(dragRectangle.BottomRight); - box.Position = topLeft; - box.Size = bottomRight - topLeft; + Box.Position = topLeft; + Box.Size = bottomRight - topLeft; - performSelection?.Invoke(dragRectangle); + PerformSelection?.Invoke(dragRectangle); return true; } } diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index 7932813bbc..e68b088d78 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -21,6 +21,17 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline public TimelineHitObjectDisplay(EditorBeatmap beatmap) { RelativeSizeAxes = Axes.Both; + Anchor = Anchor.Centre; + Origin = Anchor.Centre; + + Height = 0.4f; + + AddInternal(new Box + { + Colour = Color4.Black, + RelativeSizeAxes = Axes.Both, + Alpha = 0.1f, + }); } protected override SelectionBlueprintContainer CreateSelectionBlueprintContainer() => new TimelineSelectionBlueprintContainer { RelativeSizeAxes = Axes.Both }; @@ -49,14 +60,32 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline return new TimelineHitObjectRepresentation(hitObject); } - internal class NoDragDragBox : DragBox + protected override DragBox CreateDragBox(Action performSelect) => new CustomDragBox(performSelect); + + internal class CustomDragBox : DragBox { - public NoDragDragBox(Action performSelect) + public CustomDragBox(Action performSelect) : base(performSelect) { } - public override bool UpdateDrag(MouseButtonEvent e) => false; + protected override Drawable CreateBox() => new Box + { + RelativeSizeAxes = Axes.Y, + Alpha = 0.3f + }; + + public override bool UpdateDrag(MouseButtonEvent e) + { + float selection1 = e.MouseDownPosition.X; + float selection2 = e.MousePosition.X; + + Box.X = Math.Min(selection1, selection2); + Box.Width = Math.Abs(selection1 - selection2); + + PerformSelection?.Invoke(Box.ScreenSpaceDrawQuad.AABBFloat); + return true; + } } private class TimelineHitObjectRepresentation : SelectionBlueprint From 482409e776cd9def6f45af0106b1fd5367aff221 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 22 Jan 2020 15:31:58 +0900 Subject: [PATCH 0932/1829] Colour extension bars of long objects --- .../Timeline/TimelineHitObjectDisplay.cs | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index e68b088d78..b09c1a5597 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -92,6 +92,8 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline { private readonly Circle circle; + private Container extensionBar; + public const float THICKNESS = 3; private const float circle_size = 16; @@ -109,11 +111,13 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline X = (float)hitObject.StartTime; RelativePositionAxes = Axes.X; + RelativeSizeAxes = Axes.X; + AutoSizeAxes = Axes.Y; if (hitObject is IHasEndTime) { - AddInternal(new Container + AddInternal(extensionBar = new Container { CornerRadius = 2, Masking = true, @@ -143,9 +147,32 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline }); } - protected override void OnSelected() => circle.BorderColour = Color4.Orange; + protected override void OnSelected() + { + circle.BorderColour = Color4.Orange; + if (extensionBar != null) + extensionBar.Colour = Color4.Orange; + } - protected override void OnDeselected() => circle.BorderColour = Color4.Black; + protected override void OnDeselected() + { + circle.BorderColour = Color4.Black; + if (extensionBar != null) + extensionBar.Colour = Color4.Black; + } + + public override Quad SelectionQuad + { + get + { + // correctly include the circle in the selection quad region, as it is usually outside the blueprint itself. + var circleQuad = circle.ScreenSpaceDrawQuad; + var actualQuad = ScreenSpaceDrawQuad; + + return new Quad(circleQuad.TopLeft, Vector2.ComponentMax(actualQuad.TopRight, circleQuad.TopRight), + circleQuad.BottomLeft, Vector2.ComponentMax(actualQuad.BottomRight, circleQuad.BottomRight)); + } + } } } } From c4395b1cea45b242e2f19816a92b9aa4df2c727a Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 22 Jan 2020 15:42:49 +0900 Subject: [PATCH 0933/1829] Clean up nested class implementations --- .../Timeline/TimelineHitObjectDisplay.cs | 43 +++++++++++-------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index b09c1a5597..397c74b193 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -36,33 +36,32 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline protected override SelectionBlueprintContainer CreateSelectionBlueprintContainer() => new TimelineSelectionBlueprintContainer { RelativeSizeAxes = Axes.Both }; - protected class TimelineSelectionBlueprintContainer : SelectionBlueprintContainer - { - protected override Container Content { get; } - - public TimelineSelectionBlueprintContainer() - { - AddInternal(new TimelinePart(Content = new Container { RelativeSizeAxes = Axes.Both }) { RelativeSizeAxes = Axes.Both }); - } - } - protected override void LoadComplete() { base.LoadComplete(); DragBox.Alpha = 0; } - protected override SelectionBlueprint CreateBlueprintFor(HitObject hitObject) + protected override bool OnDrag(DragEvent e) { - //var yOffset = content.Count(d => d.X == h.StartTime); - //var yOffset = 0; - - return new TimelineHitObjectRepresentation(hitObject); + lastDragEvent = e; + return base.OnDrag(e); } + protected override void Update() + { + if (IsDragged && lastDragEvent != null) + // trigger every frame so drags continue to update selection while playback is scrolling the timeline. + DragBox.UpdateDrag(lastDragEvent); + + base.Update(); + } + + protected override SelectionBlueprint CreateBlueprintFor(HitObject hitObject) => new TimelineHitObjectRepresentation(hitObject); + protected override DragBox CreateDragBox(Action performSelect) => new CustomDragBox(performSelect); - internal class CustomDragBox : DragBox + private class CustomDragBox : DragBox { public CustomDragBox(Action performSelect) : base(performSelect) @@ -88,11 +87,21 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline } } + protected class TimelineSelectionBlueprintContainer : SelectionBlueprintContainer + { + protected override Container Content { get; } + + public TimelineSelectionBlueprintContainer() + { + AddInternal(new TimelinePart(Content = new Container { RelativeSizeAxes = Axes.Both }) { RelativeSizeAxes = Axes.Both }); + } + } + private class TimelineHitObjectRepresentation : SelectionBlueprint { private readonly Circle circle; - private Container extensionBar; + private readonly Container extensionBar; public const float THICKNESS = 3; From a8ec4907c410dedb4d8c71bc5348db3c096d73ac Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 22 Jan 2020 15:58:03 +0900 Subject: [PATCH 0934/1829] Fix selections while scrolling timeline --- .../Components/Timeline/TimelineHitObjectDisplay.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index 397c74b193..d50616a66f 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -63,6 +63,9 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline private class CustomDragBox : DragBox { + private Vector2 lastMouseDown; + private float localMouseDown; + public CustomDragBox(Action performSelect) : base(performSelect) { @@ -76,7 +79,14 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline public override bool UpdateDrag(MouseButtonEvent e) { - float selection1 = e.MouseDownPosition.X; + // store the original position of the mouse down, as we may be scrolled during selection. + if (lastMouseDown != e.ScreenSpaceMouseDownPosition) + { + lastMouseDown = e.ScreenSpaceMouseDownPosition; + localMouseDown = e.MouseDownPosition.X; + } + + float selection1 = localMouseDown; float selection2 = e.MousePosition.X; Box.X = Math.Min(selection1, selection2); From 89d90fdfa054620811404ab60c694d6cb12098c5 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 22 Jan 2020 16:33:23 +0900 Subject: [PATCH 0935/1829] Fix drag not updating until mouse is moved while scrolling timeline --- .../Components/Timeline/TimelineHitObjectDisplay.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index d50616a66f..f812095a35 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -18,6 +18,8 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline { internal class TimelineHitObjectDisplay : BlueprintContainer { + private DragEvent lastDragEvent; + public TimelineHitObjectDisplay(EditorBeatmap beatmap) { RelativeSizeAxes = Axes.Both; @@ -50,9 +52,9 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline protected override void Update() { - if (IsDragged && lastDragEvent != null) - // trigger every frame so drags continue to update selection while playback is scrolling the timeline. - DragBox.UpdateDrag(lastDragEvent); + // trigger every frame so drags continue to update selection while playback is scrolling the timeline. + if (IsDragged) + OnDrag(lastDragEvent); base.Update(); } From 63cef8b8b7189bb4c9215c26e90d532ffd5d83ef Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 22 Jan 2020 16:58:33 +0900 Subject: [PATCH 0936/1829] Rename nested classes to be more appropriate --- .../Components/Timeline/TimelineHitObjectDisplay.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index f812095a35..10b470e4b7 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -59,16 +59,16 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline base.Update(); } - protected override SelectionBlueprint CreateBlueprintFor(HitObject hitObject) => new TimelineHitObjectRepresentation(hitObject); + protected override SelectionBlueprint CreateBlueprintFor(HitObject hitObject) => new TimelineHitObjectBlueprint(hitObject); - protected override DragBox CreateDragBox(Action performSelect) => new CustomDragBox(performSelect); + protected override DragBox CreateDragBox(Action performSelect) => new TimelineDragBox(performSelect); - private class CustomDragBox : DragBox + private class TimelineDragBox : DragBox { private Vector2 lastMouseDown; private float localMouseDown; - public CustomDragBox(Action performSelect) + public TimelineDragBox(Action performSelect) : base(performSelect) { } @@ -109,7 +109,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline } } - private class TimelineHitObjectRepresentation : SelectionBlueprint + private class TimelineHitObjectBlueprint : SelectionBlueprint { private readonly Circle circle; @@ -121,7 +121,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => base.ReceivePositionalInputAt(screenSpacePos) || circle.ReceivePositionalInputAt(screenSpacePos); - public TimelineHitObjectRepresentation(HitObject hitObject) + public TimelineHitObjectBlueprint(HitObject hitObject) : base(hitObject) { Anchor = Anchor.CentreLeft; From f0d810fe2098a94a15ad34e439a98ca36e42b59b Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 22 Jan 2020 17:11:37 +0900 Subject: [PATCH 0937/1829] Follow start time and duration changes --- .../Timeline/TimelineHitObjectDisplay.cs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index 10b470e4b7..a11958c8c9 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -2,6 +2,8 @@ // See the LICENCE file in the repository root for full licence text. using System; +using JetBrains.Annotations; +using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Primitives; @@ -115,6 +117,9 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline private readonly Container extensionBar; + [UsedImplicitly] + private readonly Bindable startTime; + public const float THICKNESS = 3; private const float circle_size = 16; @@ -127,9 +132,8 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline Anchor = Anchor.CentreLeft; Origin = Anchor.CentreLeft; - Width = (float)(hitObject.GetEndTime() - hitObject.StartTime); - - X = (float)hitObject.StartTime; + startTime = hitObject.StartTimeBindable.GetBoundCopy(); + startTime.BindValueChanged(time => X = (float)time.NewValue, true); RelativePositionAxes = Axes.X; @@ -168,6 +172,14 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline }); } + protected override void Update() + { + base.Update(); + + // no bindable so we perform this every update + Width = (float)(HitObject.GetEndTime() - HitObject.StartTime); + } + protected override void OnSelected() { circle.BorderColour = Color4.Orange; From cb6e7425aebc9789ac80af0a21f29fd25bad2205 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 22 Jan 2020 17:54:11 +0900 Subject: [PATCH 0938/1829] Make dragbox stateful to fix blueprint movement --- .../Compose/Components/BlueprintContainer.cs | 29 +++++++++---------- .../Edit/Compose/Components/DragBox.cs | 26 +++++++++++++++-- .../Timeline/TimelineHitObjectDisplay.cs | 8 ++++- 3 files changed, 45 insertions(+), 18 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index c5414542e4..583627f78e 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -152,15 +152,16 @@ namespace osu.Game.Screens.Edit.Compose.Components if (e.Button == MouseButton.Right) return false; - if (!beginSelectionMovement()) - { - if (!DragBox.UpdateDrag(e)) - return false; + if (beginSelectionMovement()) + return true; - DragBox.FadeIn(250, Easing.OutQuint); + if (DragBox.HandleDrag(e)) + { + DragBox.Show(); + return true; } - return true; + return false; } protected override bool OnDrag(DragEvent e) @@ -168,13 +169,10 @@ namespace osu.Game.Screens.Edit.Compose.Components if (e.Button == MouseButton.Right) return false; - if (!moveCurrentSelection(e)) - { - if (!DragBox.UpdateDrag(e)) - return false; - } + if (DragBox.State == Visibility.Visible) + return DragBox.HandleDrag(e); - return true; + return moveCurrentSelection(e); } protected override bool OnDragEnd(DragEndEvent e) @@ -182,13 +180,14 @@ namespace osu.Game.Screens.Edit.Compose.Components if (e.Button == MouseButton.Right) return false; - if (!finishSelectionMovement()) + if (DragBox.State == Visibility.Visible) { - DragBox.FadeOut(250, Easing.OutQuint); + DragBox.Hide(); selectionHandler.UpdateVisibility(); + return true; } - return true; + return finishSelectionMovement(); } protected override bool OnKeyDown(KeyDownEvent e) diff --git a/osu.Game/Screens/Edit/Compose/Components/DragBox.cs b/osu.Game/Screens/Edit/Compose/Components/DragBox.cs index adbab1767b..c5f1bd1575 100644 --- a/osu.Game/Screens/Edit/Compose/Components/DragBox.cs +++ b/osu.Game/Screens/Edit/Compose/Components/DragBox.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System; +using osu.Framework; using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; @@ -15,7 +16,7 @@ namespace osu.Game.Screens.Edit.Compose.Components /// /// A box that displays the drag selection and provides selection events for users to handle. /// - public class DragBox : CompositeDrawable + public class DragBox : CompositeDrawable, IStateful { protected readonly Action PerformSelection; @@ -57,7 +58,7 @@ namespace osu.Game.Screens.Edit.Compose.Components /// /// The mouse event. /// Whether the event should be handled and blocking. - public virtual bool UpdateDrag(MouseButtonEvent e) + public virtual bool HandleDrag(MouseButtonEvent e) { var dragPosition = e.ScreenSpaceMousePosition; var dragStartPosition = e.ScreenSpaceMouseDownPosition; @@ -76,5 +77,26 @@ namespace osu.Game.Screens.Edit.Compose.Components PerformSelection?.Invoke(dragRectangle); return true; } + + private Visibility state; + + public Visibility State + { + get => state; + set + { + if (value == state) return; + + state = value; + this.FadeTo(state == Visibility.Hidden ? 0 : 1, 250, Easing.OutQuint); + StateChanged?.Invoke(state); + } + } + + public override void Hide() => State = Visibility.Hidden; + + public override void Show() => State = Visibility.Visible; + + public event Action StateChanged; } } diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index a11958c8c9..7101fac310 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -52,6 +52,12 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline return base.OnDrag(e); } + protected override bool OnDragEnd(DragEndEvent e) + { + lastDragEvent = null; + return base.OnDragEnd(e); + } + protected override void Update() { // trigger every frame so drags continue to update selection while playback is scrolling the timeline. @@ -81,7 +87,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline Alpha = 0.3f }; - public override bool UpdateDrag(MouseButtonEvent e) + public override bool HandleDrag(MouseButtonEvent e) { // store the original position of the mouse down, as we may be scrolled during selection. if (lastMouseDown != e.ScreenSpaceMouseDownPosition) From 53bdf72592ba86418da460560515553e63401437 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 22 Jan 2020 21:37:06 +0900 Subject: [PATCH 0939/1829] Allow basic timeline selection temporal movement --- .../Screens/Edit/Compose/Components/Timeline/Timeline.cs | 2 +- .../Components/Timeline/TimelineHitObjectDisplay.cs | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs index c866fb38c8..21eb4b08b0 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs @@ -173,7 +173,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline [Resolved] private EditorBeatmap beatmap { get; set; } - public (Vector2 position, double time) GetSnappedPosition(Vector2 position, double time) => (position, time); + public (Vector2 position, double time) GetSnappedPosition(Vector2 position, double time) => (position, (position.X / Content.DrawWidth) * track.Length); public float GetBeatSnapDistanceAt(double referenceTime) { diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs index 7101fac310..5e6403bb05 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs @@ -67,6 +67,13 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline base.Update(); } + protected override SelectionHandler CreateSelectionHandler() => new TimelineSelectionHandler(); + + internal class TimelineSelectionHandler : SelectionHandler + { + public override bool HandleMovement(MoveSelectionEvent moveEvent) => true; + } + protected override SelectionBlueprint CreateBlueprintFor(HitObject hitObject) => new TimelineHitObjectBlueprint(hitObject); protected override DragBox CreateDragBox(Action performSelect) => new TimelineDragBox(performSelect); @@ -212,6 +219,8 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline circleQuad.BottomLeft, Vector2.ComponentMax(actualQuad.BottomRight, circleQuad.BottomRight)); } } + + public override Vector2 SelectionPoint => ScreenSpaceDrawQuad.TopLeft; } } } From aa1a226ab7522b3207d3c3a949fbec1a905be345 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 22 Jan 2020 21:37:57 +0900 Subject: [PATCH 0940/1829] Remove unused ScreenSpaceStartPosition field --- .../Edit/Compose/Components/BlueprintContainer.cs | 2 +- .../Edit/Compose/Components/MoveSelectionEvent.cs | 11 +---------- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index 583627f78e..58cd4d0974 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -391,7 +391,7 @@ namespace osu.Game.Screens.Edit.Compose.Components (Vector2 snappedPosition, double snappedTime) = snapProvider.GetSnappedPosition(ToLocalSpace(movePosition), draggedObject.StartTime); // Move the hitobjects - if (!selectionHandler.HandleMovement(new MoveSelectionEvent(movementBlueprint, startPosition, ToScreenSpace(snappedPosition)))) + if (!selectionHandler.HandleMovement(new MoveSelectionEvent(movementBlueprint, ToScreenSpace(snappedPosition)))) return true; // Apply the start time at the newly snapped-to position diff --git a/osu.Game/Screens/Edit/Compose/Components/MoveSelectionEvent.cs b/osu.Game/Screens/Edit/Compose/Components/MoveSelectionEvent.cs index 48cb702c78..0792d0f80e 100644 --- a/osu.Game/Screens/Edit/Compose/Components/MoveSelectionEvent.cs +++ b/osu.Game/Screens/Edit/Compose/Components/MoveSelectionEvent.cs @@ -16,11 +16,6 @@ namespace osu.Game.Screens.Edit.Compose.Components /// public readonly SelectionBlueprint Blueprint; - /// - /// The starting screen-space position of the hitobject. - /// - public readonly Vector2 ScreenSpaceStartPosition; - /// /// The expected screen-space position of the hitobject at the current cursor position. /// @@ -29,15 +24,11 @@ namespace osu.Game.Screens.Edit.Compose.Components /// /// The distance between and the hitobject's current position, in the coordinate-space of the hitobject's parent. /// - /// - /// This does not use and does not represent the cumulative movement distance. - /// public readonly Vector2 InstantDelta; - public MoveSelectionEvent(SelectionBlueprint blueprint, Vector2 screenSpaceStartPosition, Vector2 screenSpacePosition) + public MoveSelectionEvent(SelectionBlueprint blueprint, Vector2 screenSpacePosition) { Blueprint = blueprint; - ScreenSpaceStartPosition = screenSpaceStartPosition; ScreenSpacePosition = screenSpacePosition; InstantDelta = Blueprint.GetInstantDelta(ScreenSpacePosition); From c76f76e5aa441c526278345a706f34487e6c1eaa Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 22 Jan 2020 21:43:02 +0900 Subject: [PATCH 0941/1829] Fix being able to drag out of the blueprint intending to be moved --- .../Compose/Components/BlueprintContainer.cs | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index 58cd4d0974..ef4a06879e 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -109,6 +109,9 @@ namespace osu.Game.Screens.Edit.Compose.Components protected override bool OnMouseDown(MouseDownEvent e) { beginClickSelection(e); + + prepareSelectionMovement(); + return e.Button == MouseButton.Left; } @@ -144,6 +147,9 @@ namespace osu.Game.Screens.Edit.Compose.Components { // Special case for when a drag happened instead of a click Schedule(() => endClickSelection()); + + finishSelectionMovement(); + return e.Button == MouseButton.Left; } @@ -152,7 +158,7 @@ namespace osu.Game.Screens.Edit.Compose.Components if (e.Button == MouseButton.Right) return false; - if (beginSelectionMovement()) + if (movementBlueprint != null) return true; if (DragBox.HandleDrag(e)) @@ -184,10 +190,9 @@ namespace osu.Game.Screens.Edit.Compose.Components { DragBox.Hide(); selectionHandler.UpdateVisibility(); - return true; } - return finishSelectionMovement(); + return true; } protected override bool OnKeyDown(KeyDownEvent e) @@ -348,14 +353,14 @@ namespace osu.Game.Screens.Edit.Compose.Components #region Selection Movement - private Vector2? screenSpaceMovementStartPosition; + private Vector2? movementBlueprintOriginalPosition; private SelectionBlueprint movementBlueprint; /// /// Attempts to begin the movement of any selected blueprints. /// /// Whether movement began. - private bool beginSelectionMovement() + private bool prepareSelectionMovement() { Debug.Assert(movementBlueprint == null); @@ -366,7 +371,7 @@ namespace osu.Game.Screens.Edit.Compose.Components // Movement is tracked from the blueprint of the earliest hitobject, since it only makes sense to distance snap from that hitobject movementBlueprint = selectionHandler.SelectedBlueprints.OrderBy(b => b.HitObject.StartTime).First(); - screenSpaceMovementStartPosition = movementBlueprint.SelectionPoint; // todo: unsure if correct + movementBlueprintOriginalPosition = movementBlueprint.SelectionPoint; // todo: unsure if correct return true; } @@ -381,13 +386,13 @@ namespace osu.Game.Screens.Edit.Compose.Components if (movementBlueprint == null) return false; - Debug.Assert(screenSpaceMovementStartPosition != null); + Debug.Assert(movementBlueprintOriginalPosition != null); - Vector2 startPosition = screenSpaceMovementStartPosition.Value; HitObject draggedObject = movementBlueprint.HitObject; // The final movement position, relative to screenSpaceMovementStartPosition - Vector2 movePosition = startPosition + e.ScreenSpaceMousePosition - e.ScreenSpaceMouseDownPosition; + Vector2 movePosition = movementBlueprintOriginalPosition.Value + e.ScreenSpaceMousePosition - e.ScreenSpaceMouseDownPosition; + (Vector2 snappedPosition, double snappedTime) = snapProvider.GetSnappedPosition(ToLocalSpace(movePosition), draggedObject.StartTime); // Move the hitobjects @@ -411,7 +416,7 @@ namespace osu.Game.Screens.Edit.Compose.Components if (movementBlueprint == null) return false; - screenSpaceMovementStartPosition = null; + movementBlueprintOriginalPosition = null; movementBlueprint = null; return true; From 9d2a46df892587185343b8ebb7723823df750c33 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 22 Jan 2020 21:46:24 +0900 Subject: [PATCH 0942/1829] Add beat snapping to timeline movement --- .../Screens/Edit/Compose/Components/Timeline/Timeline.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs index 21eb4b08b0..98fb754931 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs @@ -173,7 +173,11 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline [Resolved] private EditorBeatmap beatmap { get; set; } - public (Vector2 position, double time) GetSnappedPosition(Vector2 position, double time) => (position, (position.X / Content.DrawWidth) * track.Length); + public (Vector2 position, double time) GetSnappedPosition(Vector2 position, double time) + { + var targetTime = (position.X / Content.DrawWidth) * track.Length; + return (position, beatSnap(targetTime, targetTime)); + } public float GetBeatSnapDistanceAt(double referenceTime) { From 477e1b7d278a9b1b490a43d4291c5c0af00b05f5 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 23 Jan 2020 12:17:46 +0900 Subject: [PATCH 0943/1829] Rename TimelineHitObjectDisplay to TimelineBlueprintContainer --- .../Visual/Editor/TestSceneEditorComposeTimeline.cs | 4 ++-- ...elineHitObjectDisplay.cs => TimelineBlueprintContainer.cs} | 4 ++-- osu.Game/Screens/Edit/Compose/ComposeScreen.cs | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) rename osu.Game/Screens/Edit/Compose/Components/Timeline/{TimelineHitObjectDisplay.cs => TimelineBlueprintContainer.cs} (98%) diff --git a/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs b/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs index e9372bd134..78cdeb3ac8 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs @@ -27,7 +27,7 @@ namespace osu.Game.Tests.Visual.Editor public override IReadOnlyList RequiredTypes => new[] { typeof(TimelineArea), - typeof(TimelineHitObjectDisplay), + typeof(TimelineBlueprintContainer), typeof(Timeline), typeof(TimelineButton), typeof(CentreMarker) @@ -57,7 +57,7 @@ namespace osu.Game.Tests.Visual.Editor }, new TimelineArea { - Child = new TimelineHitObjectDisplay(editorBeatmap), + Child = new TimelineBlueprintContainer(editorBeatmap), Anchor = Anchor.Centre, Origin = Anchor.Centre, RelativeSizeAxes = Axes.X, diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs similarity index 98% rename from osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs rename to osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs index 5e6403bb05..c5603c0f67 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs @@ -18,11 +18,11 @@ using osuTK.Graphics; namespace osu.Game.Screens.Edit.Compose.Components.Timeline { - internal class TimelineHitObjectDisplay : BlueprintContainer + internal class TimelineBlueprintContainer : BlueprintContainer { private DragEvent lastDragEvent; - public TimelineHitObjectDisplay(EditorBeatmap beatmap) + public TimelineBlueprintContainer(EditorBeatmap beatmap) { RelativeSizeAxes = Axes.Both; Anchor = Anchor.Centre; diff --git a/osu.Game/Screens/Edit/Compose/ComposeScreen.cs b/osu.Game/Screens/Edit/Compose/ComposeScreen.cs index 1a6aae294a..20e1ef95d3 100644 --- a/osu.Game/Screens/Edit/Compose/ComposeScreen.cs +++ b/osu.Game/Screens/Edit/Compose/ComposeScreen.cs @@ -32,6 +32,6 @@ namespace osu.Game.Screens.Edit.Compose return beatmapSkinProvider.WithChild(rulesetSkinProvider.WithChild(composer)); } - protected override Drawable CreateTimelineContent() => composer == null ? base.CreateTimelineContent() : new TimelineHitObjectDisplay(EditorBeatmap); + protected override Drawable CreateTimelineContent() => composer == null ? base.CreateTimelineContent() : new TimelineBlueprintContainer(EditorBeatmap); } } From cb09c2e1449ee26285d14a27a9f40c3fb0f937d6 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 23 Jan 2020 12:29:32 +0900 Subject: [PATCH 0944/1829] Add support for dragging outside visible extents --- .../Edit/Compose/Components/Timeline/Timeline.cs | 1 + .../Timeline/TimelineBlueprintContainer.cs | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs index 98fb754931..804c2f1e65 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs @@ -18,6 +18,7 @@ using osuTK; namespace osu.Game.Screens.Edit.Compose.Components.Timeline { [Cached(typeof(IDistanceSnapProvider))] + [Cached] public class Timeline : ZoomableScrollContainer, IDistanceSnapProvider { public readonly Bindable WaveformVisible = new Bindable(); diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs index c5603c0f67..16e1793c8c 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs @@ -3,6 +3,7 @@ using System; using JetBrains.Annotations; +using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; @@ -20,6 +21,9 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline { internal class TimelineBlueprintContainer : BlueprintContainer { + [Resolved(CanBeNull = true)] + private Timeline timeline { get; set; } + private DragEvent lastDragEvent; public TimelineBlueprintContainer(EditorBeatmap beatmap) @@ -48,6 +52,18 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline protected override bool OnDrag(DragEvent e) { + if (timeline != null) + { + var timelineQuad = timeline.ScreenSpaceDrawQuad; + var mouseX = e.ScreenSpaceMousePosition.X; + + // scroll if in a drag and dragging outside visible extents + if (mouseX > timelineQuad.TopRight.X) + timeline.ScrollBy((float)((mouseX - timelineQuad.TopRight.X) / 10 * Clock.ElapsedFrameTime)); + else if (mouseX < timelineQuad.TopLeft.X) + timeline.ScrollBy((float)((mouseX - timelineQuad.TopLeft.X) / 10 * Clock.ElapsedFrameTime)); + } + lastDragEvent = e; return base.OnDrag(e); } From 56c044c44ac6cc6ea460fef8883d99fb9a88aadc Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 23 Jan 2020 13:33:55 +0900 Subject: [PATCH 0945/1829] Move beat snapping to its own interface --- ...tSceneHitObjectComposerDistanceSnapping.cs | 9 +++- .../Visual/Editor/TestSceneComposeScreen.cs | 2 + .../Editor/TestSceneEditorComposeTimeline.cs | 4 +- .../Editor/TestSceneHitObjectComposer.cs | 1 + osu.Game/Rulesets/Edit/HitObjectComposer.cs | 26 +++-------- osu.Game/Rulesets/Edit/IBeatSnapProvider.cs | 30 ++++++++++++ .../Compose/Components/Timeline/Timeline.cs | 46 ++++--------------- osu.Game/Screens/Edit/Editor.cs | 15 +++++- osu.Game/Screens/Edit/EditorBeatmap.cs | 20 +++++++- 9 files changed, 90 insertions(+), 63 deletions(-) create mode 100644 osu.Game/Rulesets/Edit/IBeatSnapProvider.cs diff --git a/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs b/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs index 2d336bd19c..e825df5a3f 100644 --- a/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs +++ b/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs @@ -5,6 +5,7 @@ using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Testing; using osu.Game.Beatmaps.ControlPoints; +using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Osu; using osu.Game.Rulesets.Osu.Beatmaps; using osu.Game.Rulesets.Osu.Edit; @@ -19,7 +20,13 @@ namespace osu.Game.Tests.Editor private TestHitObjectComposer composer; [Cached(typeof(EditorBeatmap))] - private readonly EditorBeatmap editorBeatmap = new EditorBeatmap(new OsuBeatmap()); + [Cached(typeof(IBeatSnapProvider))] + private readonly EditorBeatmap editorBeatmap; + + public TestSceneHitObjectComposerDistanceSnapping() + { + editorBeatmap = new EditorBeatmap(new OsuBeatmap(), BeatDivisor); + } [SetUp] public void Setup() => Schedule(() => diff --git a/osu.Game.Tests/Visual/Editor/TestSceneComposeScreen.cs b/osu.Game.Tests/Visual/Editor/TestSceneComposeScreen.cs index 3562689482..a8830824c0 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneComposeScreen.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneComposeScreen.cs @@ -3,6 +3,7 @@ using NUnit.Framework; using osu.Framework.Allocation; +using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Osu; using osu.Game.Rulesets.Osu.Beatmaps; using osu.Game.Screens.Edit; @@ -14,6 +15,7 @@ namespace osu.Game.Tests.Visual.Editor public class TestSceneComposeScreen : EditorClockTestScene { [Cached(typeof(EditorBeatmap))] + [Cached(typeof(IBeatSnapProvider))] private readonly EditorBeatmap editorBeatmap = new EditorBeatmap(new OsuBeatmap { diff --git a/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs b/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs index 78cdeb3ac8..5b0408268f 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs @@ -13,6 +13,7 @@ using osu.Framework.Graphics.Shapes; using osu.Framework.Timing; using osu.Game.Beatmaps; using osu.Game.Graphics.UserInterface; +using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Objects; using osu.Game.Screens.Edit; using osu.Game.Screens.Edit.Compose.Components.Timeline; @@ -38,9 +39,10 @@ namespace osu.Game.Tests.Visual.Editor { Beatmap.Value = new WaveformTestBeatmap(audio); - var editorBeatmap = new EditorBeatmap((Beatmap)Beatmap.Value.Beatmap); + var editorBeatmap = new EditorBeatmap((Beatmap)Beatmap.Value.Beatmap, BeatDivisor); Dependencies.Cache(editorBeatmap); + Dependencies.CacheAs(editorBeatmap); Children = new Drawable[] { diff --git a/osu.Game.Tests/Visual/Editor/TestSceneHitObjectComposer.cs b/osu.Game.Tests/Visual/Editor/TestSceneHitObjectComposer.cs index c001c83877..e41c2427fb 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneHitObjectComposer.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneHitObjectComposer.cs @@ -66,6 +66,7 @@ namespace osu.Game.Tests.Visual.Editor Dependencies.CacheAs(clock); Dependencies.CacheAs(clock); Dependencies.CacheAs(editorBeatmap); + Dependencies.CacheAs(editorBeatmap); Child = new OsuHitObjectComposer(new OsuRuleset()); } diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index 5eba31d149..50042d1e3b 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -46,7 +46,7 @@ namespace osu.Game.Rulesets.Edit private IAdjustableClock adjustableClock { get; set; } [Resolved] - private BindableBeatDivisor beatDivisor { get; set; } + private IBeatSnapProvider beatSnapProvider { get; set; } private IBeatmapProcessor beatmapProcessor; @@ -259,40 +259,26 @@ namespace osu.Game.Rulesets.Edit public override float GetBeatSnapDistanceAt(double referenceTime) { DifficultyControlPoint difficultyPoint = EditorBeatmap.ControlPointInfo.DifficultyPointAt(referenceTime); - return (float)(100 * EditorBeatmap.BeatmapInfo.BaseDifficulty.SliderMultiplier * difficultyPoint.SpeedMultiplier / beatDivisor.Value); + return (float)(100 * EditorBeatmap.BeatmapInfo.BaseDifficulty.SliderMultiplier * difficultyPoint.SpeedMultiplier / beatSnapProvider.BeatDivisor); } public override float DurationToDistance(double referenceTime, double duration) { - double beatLength = EditorBeatmap.ControlPointInfo.TimingPointAt(referenceTime).BeatLength / beatDivisor.Value; + double beatLength = beatSnapProvider.GetBeatLengthAtTime(referenceTime, beatSnapProvider.BeatDivisor); return (float)(duration / beatLength * GetBeatSnapDistanceAt(referenceTime)); } public override double DistanceToDuration(double referenceTime, float distance) { - double beatLength = EditorBeatmap.ControlPointInfo.TimingPointAt(referenceTime).BeatLength / beatDivisor.Value; + double beatLength = beatSnapProvider.GetBeatLengthAtTime(referenceTime, beatSnapProvider.BeatDivisor); return distance / GetBeatSnapDistanceAt(referenceTime) * beatLength; } public override double GetSnappedDurationFromDistance(double referenceTime, float distance) - => beatSnap(referenceTime, DistanceToDuration(referenceTime, distance)); + => beatSnapProvider.SnapTime(referenceTime, DistanceToDuration(referenceTime, distance), beatSnapProvider.BeatDivisor); public override float GetSnappedDistanceFromDistance(double referenceTime, float distance) - => DurationToDistance(referenceTime, beatSnap(referenceTime, DistanceToDuration(referenceTime, distance))); - - /// - /// Snaps a duration to the closest beat of a timing point applicable at the reference time. - /// - /// The time of the timing point which resides in. - /// The duration to snap. - /// A value that represents snapped to the closest beat of the timing point. - private double beatSnap(double referenceTime, double duration) - { - double beatLength = EditorBeatmap.ControlPointInfo.TimingPointAt(referenceTime).BeatLength / beatDivisor.Value; - - // A 1ms offset prevents rounding errors due to minute variations in duration - return (int)((duration + 1) / beatLength) * beatLength; - } + => DurationToDistance(referenceTime, beatSnapProvider.SnapTime(referenceTime, DistanceToDuration(referenceTime, distance), beatSnapProvider.BeatDivisor)); protected override void Dispose(bool isDisposing) { diff --git a/osu.Game/Rulesets/Edit/IBeatSnapProvider.cs b/osu.Game/Rulesets/Edit/IBeatSnapProvider.cs new file mode 100644 index 0000000000..ed6e08d054 --- /dev/null +++ b/osu.Game/Rulesets/Edit/IBeatSnapProvider.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. + +namespace osu.Game.Rulesets.Edit +{ + public interface IBeatSnapProvider + { + /// + /// Snaps a duration to the closest beat of a timing point applicable at the reference time. + /// + /// The time of the timing point which resides in. + /// The duration to snap. + /// The divisor to use for snapping purposes. + /// A value that represents snapped to the closest beat of the timing point. + double SnapTime(double referenceTime, double duration, int beatDivisor); + + /// + /// Get the most appropriate beat length at a given time. + /// + /// A reference time used for lookup. + /// The divisor to use for snapping purposes. + /// The most appropriate beat length. + double GetBeatLengthAtTime(double referenceTime, int beatDivisor); + + /// + /// Returns the current beat divisor. + /// + int BeatDivisor { get; } + } +} diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs index 804c2f1e65..ec6f0bb923 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.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 osu.Framework.Allocation; using osu.Framework.Audio.Track; using osu.Framework.Bindables; @@ -10,7 +11,6 @@ using osu.Framework.Graphics.Audio; using osu.Framework.Input.Events; using osu.Framework.Timing; using osu.Game.Beatmaps; -using osu.Game.Beatmaps.ControlPoints; using osu.Game.Graphics; using osu.Game.Rulesets.Edit; using osuTK; @@ -169,53 +169,25 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline } [Resolved] - private BindableBeatDivisor beatDivisor { get; set; } + private EditorBeatmap beatmap { get; set; } [Resolved] - private EditorBeatmap beatmap { get; set; } + private IBeatSnapProvider beatSnapProvider { get; set; } public (Vector2 position, double time) GetSnappedPosition(Vector2 position, double time) { var targetTime = (position.X / Content.DrawWidth) * track.Length; - return (position, beatSnap(targetTime, targetTime)); + return (position, beatSnapProvider.SnapTime(targetTime, targetTime, beatSnapProvider.BeatDivisor)); } - public float GetBeatSnapDistanceAt(double referenceTime) - { - DifficultyControlPoint difficultyPoint = beatmap.ControlPointInfo.DifficultyPointAt(referenceTime); - return (float)(100 * beatmap.BeatmapInfo.BaseDifficulty.SliderMultiplier * difficultyPoint.SpeedMultiplier / beatDivisor.Value); - } + public float GetBeatSnapDistanceAt(double referenceTime) => throw new NotImplementedException(); - public float DurationToDistance(double referenceTime, double duration) - { - double beatLength = beatmap.ControlPointInfo.TimingPointAt(referenceTime).BeatLength / beatDivisor.Value; - return (float)(duration / beatLength * GetBeatSnapDistanceAt(referenceTime)); - } + public float DurationToDistance(double referenceTime, double duration) => throw new NotImplementedException(); - public double DistanceToDuration(double referenceTime, float distance) - { - double beatLength = beatmap.ControlPointInfo.TimingPointAt(referenceTime).BeatLength / beatDivisor.Value; - return distance / GetBeatSnapDistanceAt(referenceTime) * beatLength; - } + public double DistanceToDuration(double referenceTime, float distance) => throw new NotImplementedException(); - public double GetSnappedDurationFromDistance(double referenceTime, float distance) - => beatSnap(referenceTime, DistanceToDuration(referenceTime, distance)); + public double GetSnappedDurationFromDistance(double referenceTime, float distance) => throw new NotImplementedException(); - public float GetSnappedDistanceFromDistance(double referenceTime, float distance) - => DurationToDistance(referenceTime, beatSnap(referenceTime, DistanceToDuration(referenceTime, distance))); - - /// - /// Snaps a duration to the closest beat of a timing point applicable at the reference time. - /// - /// The time of the timing point which resides in. - /// The duration to snap. - /// A value that represents snapped to the closest beat of the timing point. - private double beatSnap(double referenceTime, double duration) - { - double beatLength = beatmap.ControlPointInfo.TimingPointAt(referenceTime).BeatLength / beatDivisor.Value; - - // A 1ms offset prevents rounding errors due to minute variations in duration - return (int)((duration + 1) / beatLength) * beatLength; - } + public float GetSnappedDistanceFromDistance(double referenceTime, float distance) => throw new NotImplementedException(); } } diff --git a/osu.Game/Screens/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs index e212b429b9..26660c427c 100644 --- a/osu.Game/Screens/Edit/Editor.cs +++ b/osu.Game/Screens/Edit/Editor.cs @@ -26,6 +26,7 @@ using osu.Framework.Input.Bindings; using osu.Game.Beatmaps; using osu.Game.Graphics.Cursor; using osu.Game.Input.Bindings; +using osu.Game.Rulesets.Edit; using osu.Game.Screens.Edit.Compose; using osu.Game.Screens.Edit.Setup; using osu.Game.Screens.Edit.Timing; @@ -34,7 +35,8 @@ using osu.Game.Users; namespace osu.Game.Screens.Edit { - public class Editor : ScreenWithBeatmapBackground, IKeyBindingHandler + [Cached(typeof(IBeatSnapProvider))] + public class Editor : ScreenWithBeatmapBackground, IKeyBindingHandler, IBeatSnapProvider { public override float BackgroundParallaxAmount => 0.1f; @@ -77,11 +79,14 @@ namespace osu.Game.Screens.Edit clock.ChangeSource(sourceClock); playableBeatmap = Beatmap.Value.GetPlayableBeatmap(Beatmap.Value.BeatmapInfo.Ruleset); - editorBeatmap = new EditorBeatmap(playableBeatmap); + editorBeatmap = new EditorBeatmap(playableBeatmap, beatDivisor); dependencies.CacheAs(clock); dependencies.CacheAs(clock); + + // todo: remove caching of this and consume via editorBeatmap? dependencies.Cache(beatDivisor); + dependencies.CacheAs(editorBeatmap); EditorMenuBar menuBar; @@ -345,5 +350,11 @@ namespace osu.Game.Screens.Edit saveBeatmap(); beatmapManager.Export(Beatmap.Value.BeatmapSetInfo); } + + public double SnapTime(double referenceTime, double duration, int beatDivisor) => editorBeatmap.SnapTime(referenceTime, duration, beatDivisor); + + public double GetBeatLengthAtTime(double referenceTime, int beatDivisor) => editorBeatmap.GetBeatLengthAtTime(referenceTime, beatDivisor); + + public int BeatDivisor => beatDivisor.Value; } } diff --git a/osu.Game/Screens/Edit/EditorBeatmap.cs b/osu.Game/Screens/Edit/EditorBeatmap.cs index 2ff7563a88..b7dd94b6c5 100644 --- a/osu.Game/Screens/Edit/EditorBeatmap.cs +++ b/osu.Game/Screens/Edit/EditorBeatmap.cs @@ -8,11 +8,12 @@ using osu.Framework.Bindables; using osu.Game.Beatmaps; using osu.Game.Beatmaps.ControlPoints; using osu.Game.Beatmaps.Timing; +using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Objects; namespace osu.Game.Screens.Edit { - public class EditorBeatmap : IBeatmap + public class EditorBeatmap : IBeatmap, IBeatSnapProvider { /// /// Invoked when a is added to this . @@ -33,11 +34,14 @@ namespace osu.Game.Screens.Edit public readonly IBeatmap PlayableBeatmap; + private readonly BindableBeatDivisor beatDivisor; + private readonly Dictionary> startTimeBindables = new Dictionary>(); - public EditorBeatmap(IBeatmap playableBeatmap) + public EditorBeatmap(IBeatmap playableBeatmap, BindableBeatDivisor beatDivisor = null) { PlayableBeatmap = playableBeatmap; + this.beatDivisor = beatDivisor; foreach (var obj in HitObjects) trackStartTime(obj); @@ -123,5 +127,17 @@ namespace osu.Game.Screens.Edit return list.Count - 1; } + + public double SnapTime(double referenceTime, double duration, int beatDivisor) + { + double beatLength = GetBeatLengthAtTime(referenceTime, beatDivisor); + + // A 1ms offset prevents rounding errors due to minute variations in duration + return (int)((duration + 1) / beatLength) * beatLength; + } + + public double GetBeatLengthAtTime(double referenceTime, int beatDivisor) => ControlPointInfo.TimingPointAt(referenceTime).BeatLength / BeatDivisor; + + public int BeatDivisor => beatDivisor?.Value ?? 1; } } From 098d643955fc7fd05a35f1106451b1fb12290ea4 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 23 Jan 2020 14:39:56 +0900 Subject: [PATCH 0946/1829] Move beat snapping to its own interface --- ...tSceneHitObjectComposerDistanceSnapping.cs | 9 +++++- .../Visual/Editor/TestSceneComposeScreen.cs | 2 ++ .../Editor/TestSceneHitObjectComposer.cs | 1 + osu.Game/Rulesets/Edit/HitObjectComposer.cs | 26 ++++------------ osu.Game/Rulesets/Edit/IBeatSnapProvider.cs | 30 +++++++++++++++++++ osu.Game/Screens/Edit/Editor.cs | 15 ++++++++-- osu.Game/Screens/Edit/EditorBeatmap.cs | 20 +++++++++++-- 7 files changed, 78 insertions(+), 25 deletions(-) create mode 100644 osu.Game/Rulesets/Edit/IBeatSnapProvider.cs diff --git a/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs b/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs index 2d336bd19c..e825df5a3f 100644 --- a/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs +++ b/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs @@ -5,6 +5,7 @@ using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Testing; using osu.Game.Beatmaps.ControlPoints; +using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Osu; using osu.Game.Rulesets.Osu.Beatmaps; using osu.Game.Rulesets.Osu.Edit; @@ -19,7 +20,13 @@ namespace osu.Game.Tests.Editor private TestHitObjectComposer composer; [Cached(typeof(EditorBeatmap))] - private readonly EditorBeatmap editorBeatmap = new EditorBeatmap(new OsuBeatmap()); + [Cached(typeof(IBeatSnapProvider))] + private readonly EditorBeatmap editorBeatmap; + + public TestSceneHitObjectComposerDistanceSnapping() + { + editorBeatmap = new EditorBeatmap(new OsuBeatmap(), BeatDivisor); + } [SetUp] public void Setup() => Schedule(() => diff --git a/osu.Game.Tests/Visual/Editor/TestSceneComposeScreen.cs b/osu.Game.Tests/Visual/Editor/TestSceneComposeScreen.cs index 3562689482..a8830824c0 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneComposeScreen.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneComposeScreen.cs @@ -3,6 +3,7 @@ using NUnit.Framework; using osu.Framework.Allocation; +using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Osu; using osu.Game.Rulesets.Osu.Beatmaps; using osu.Game.Screens.Edit; @@ -14,6 +15,7 @@ namespace osu.Game.Tests.Visual.Editor public class TestSceneComposeScreen : EditorClockTestScene { [Cached(typeof(EditorBeatmap))] + [Cached(typeof(IBeatSnapProvider))] private readonly EditorBeatmap editorBeatmap = new EditorBeatmap(new OsuBeatmap { diff --git a/osu.Game.Tests/Visual/Editor/TestSceneHitObjectComposer.cs b/osu.Game.Tests/Visual/Editor/TestSceneHitObjectComposer.cs index c001c83877..e41c2427fb 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneHitObjectComposer.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneHitObjectComposer.cs @@ -66,6 +66,7 @@ namespace osu.Game.Tests.Visual.Editor Dependencies.CacheAs(clock); Dependencies.CacheAs(clock); Dependencies.CacheAs(editorBeatmap); + Dependencies.CacheAs(editorBeatmap); Child = new OsuHitObjectComposer(new OsuRuleset()); } diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index bfaa7e8872..e1ce294581 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -46,7 +46,7 @@ namespace osu.Game.Rulesets.Edit private IAdjustableClock adjustableClock { get; set; } [Resolved] - private BindableBeatDivisor beatDivisor { get; set; } + private IBeatSnapProvider beatSnapProvider { get; set; } private IBeatmapProcessor beatmapProcessor; @@ -257,40 +257,26 @@ namespace osu.Game.Rulesets.Edit public override float GetBeatSnapDistanceAt(double referenceTime) { DifficultyControlPoint difficultyPoint = EditorBeatmap.ControlPointInfo.DifficultyPointAt(referenceTime); - return (float)(100 * EditorBeatmap.BeatmapInfo.BaseDifficulty.SliderMultiplier * difficultyPoint.SpeedMultiplier / beatDivisor.Value); + return (float)(100 * EditorBeatmap.BeatmapInfo.BaseDifficulty.SliderMultiplier * difficultyPoint.SpeedMultiplier / beatSnapProvider.BeatDivisor); } public override float DurationToDistance(double referenceTime, double duration) { - double beatLength = EditorBeatmap.ControlPointInfo.TimingPointAt(referenceTime).BeatLength / beatDivisor.Value; + double beatLength = beatSnapProvider.GetBeatLengthAtTime(referenceTime, beatSnapProvider.BeatDivisor); return (float)(duration / beatLength * GetBeatSnapDistanceAt(referenceTime)); } public override double DistanceToDuration(double referenceTime, float distance) { - double beatLength = EditorBeatmap.ControlPointInfo.TimingPointAt(referenceTime).BeatLength / beatDivisor.Value; + double beatLength = beatSnapProvider.GetBeatLengthAtTime(referenceTime, beatSnapProvider.BeatDivisor); return distance / GetBeatSnapDistanceAt(referenceTime) * beatLength; } public override double GetSnappedDurationFromDistance(double referenceTime, float distance) - => beatSnap(referenceTime, DistanceToDuration(referenceTime, distance)); + => beatSnapProvider.SnapTime(referenceTime, DistanceToDuration(referenceTime, distance), beatSnapProvider.BeatDivisor); public override float GetSnappedDistanceFromDistance(double referenceTime, float distance) - => DurationToDistance(referenceTime, beatSnap(referenceTime, DistanceToDuration(referenceTime, distance))); - - /// - /// Snaps a duration to the closest beat of a timing point applicable at the reference time. - /// - /// The time of the timing point which resides in. - /// The duration to snap. - /// A value that represents snapped to the closest beat of the timing point. - private double beatSnap(double referenceTime, double duration) - { - double beatLength = EditorBeatmap.ControlPointInfo.TimingPointAt(referenceTime).BeatLength / beatDivisor.Value; - - // A 1ms offset prevents rounding errors due to minute variations in duration - return (int)((duration + 1) / beatLength) * beatLength; - } + => DurationToDistance(referenceTime, beatSnapProvider.SnapTime(referenceTime, DistanceToDuration(referenceTime, distance), beatSnapProvider.BeatDivisor)); protected override void Dispose(bool isDisposing) { diff --git a/osu.Game/Rulesets/Edit/IBeatSnapProvider.cs b/osu.Game/Rulesets/Edit/IBeatSnapProvider.cs new file mode 100644 index 0000000000..ed6e08d054 --- /dev/null +++ b/osu.Game/Rulesets/Edit/IBeatSnapProvider.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. + +namespace osu.Game.Rulesets.Edit +{ + public interface IBeatSnapProvider + { + /// + /// Snaps a duration to the closest beat of a timing point applicable at the reference time. + /// + /// The time of the timing point which resides in. + /// The duration to snap. + /// The divisor to use for snapping purposes. + /// A value that represents snapped to the closest beat of the timing point. + double SnapTime(double referenceTime, double duration, int beatDivisor); + + /// + /// Get the most appropriate beat length at a given time. + /// + /// A reference time used for lookup. + /// The divisor to use for snapping purposes. + /// The most appropriate beat length. + double GetBeatLengthAtTime(double referenceTime, int beatDivisor); + + /// + /// Returns the current beat divisor. + /// + int BeatDivisor { get; } + } +} diff --git a/osu.Game/Screens/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs index e5cb319fb9..820915e8e3 100644 --- a/osu.Game/Screens/Edit/Editor.cs +++ b/osu.Game/Screens/Edit/Editor.cs @@ -26,6 +26,7 @@ using osu.Framework.Input.Bindings; using osu.Game.Beatmaps; using osu.Game.Graphics.Cursor; using osu.Game.Input.Bindings; +using osu.Game.Rulesets.Edit; using osu.Game.Screens.Edit.Compose; using osu.Game.Screens.Edit.Setup; using osu.Game.Screens.Edit.Timing; @@ -34,7 +35,8 @@ using osu.Game.Users; namespace osu.Game.Screens.Edit { - public class Editor : ScreenWithBeatmapBackground, IKeyBindingHandler + [Cached(typeof(IBeatSnapProvider))] + public class Editor : ScreenWithBeatmapBackground, IKeyBindingHandler, IBeatSnapProvider { public override float BackgroundParallaxAmount => 0.1f; @@ -77,11 +79,14 @@ namespace osu.Game.Screens.Edit clock.ChangeSource(sourceClock); playableBeatmap = Beatmap.Value.GetPlayableBeatmap(Beatmap.Value.BeatmapInfo.Ruleset); - editorBeatmap = new EditorBeatmap(playableBeatmap); + editorBeatmap = new EditorBeatmap(playableBeatmap, beatDivisor); dependencies.CacheAs(clock); dependencies.CacheAs(clock); + + // todo: remove caching of this and consume via editorBeatmap? dependencies.Cache(beatDivisor); + dependencies.CacheAs(editorBeatmap); EditorMenuBar menuBar; @@ -347,5 +352,11 @@ namespace osu.Game.Screens.Edit saveBeatmap(); beatmapManager.Export(Beatmap.Value.BeatmapSetInfo); } + + public double SnapTime(double referenceTime, double duration, int beatDivisor) => editorBeatmap.SnapTime(referenceTime, duration, beatDivisor); + + public double GetBeatLengthAtTime(double referenceTime, int beatDivisor) => editorBeatmap.GetBeatLengthAtTime(referenceTime, beatDivisor); + + public int BeatDivisor => beatDivisor.Value; } } diff --git a/osu.Game/Screens/Edit/EditorBeatmap.cs b/osu.Game/Screens/Edit/EditorBeatmap.cs index 6ed74dfdb0..7c037c435f 100644 --- a/osu.Game/Screens/Edit/EditorBeatmap.cs +++ b/osu.Game/Screens/Edit/EditorBeatmap.cs @@ -8,11 +8,12 @@ using osu.Framework.Bindables; using osu.Game.Beatmaps; using osu.Game.Beatmaps.ControlPoints; using osu.Game.Beatmaps.Timing; +using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Objects; namespace osu.Game.Screens.Edit { - public class EditorBeatmap : IBeatmap + public class EditorBeatmap : IBeatmap, IBeatSnapProvider { /// /// Invoked when a is added to this . @@ -31,11 +32,14 @@ namespace osu.Game.Screens.Edit public readonly IBeatmap PlayableBeatmap; + private readonly BindableBeatDivisor beatDivisor; + private readonly Dictionary> startTimeBindables = new Dictionary>(); - public EditorBeatmap(IBeatmap playableBeatmap) + public EditorBeatmap(IBeatmap playableBeatmap, BindableBeatDivisor beatDivisor = null) { PlayableBeatmap = playableBeatmap; + this.beatDivisor = beatDivisor; foreach (var obj in HitObjects) trackStartTime(obj); @@ -121,5 +125,17 @@ namespace osu.Game.Screens.Edit return list.Count - 1; } + + public double SnapTime(double referenceTime, double duration, int beatDivisor) + { + double beatLength = GetBeatLengthAtTime(referenceTime, beatDivisor); + + // A 1ms offset prevents rounding errors due to minute variations in duration + return (int)((duration + 1) / beatLength) * beatLength; + } + + public double GetBeatLengthAtTime(double referenceTime, int beatDivisor) => ControlPointInfo.TimingPointAt(referenceTime).BeatLength / BeatDivisor; + + public int BeatDivisor => beatDivisor?.Value ?? 1; } } From ccf911884be0e8a822b4ed4215413cd103752758 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 23 Jan 2020 15:31:56 +0900 Subject: [PATCH 0947/1829] Remove passed in BaetDivisor --- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 8 ++++---- osu.Game/Rulesets/Edit/IBeatSnapProvider.cs | 6 ++---- osu.Game/Screens/Edit/Editor.cs | 4 ++-- osu.Game/Screens/Edit/EditorBeatmap.cs | 6 +++--- 4 files changed, 11 insertions(+), 13 deletions(-) diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index e1ce294581..dbd29a167c 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -262,21 +262,21 @@ namespace osu.Game.Rulesets.Edit public override float DurationToDistance(double referenceTime, double duration) { - double beatLength = beatSnapProvider.GetBeatLengthAtTime(referenceTime, beatSnapProvider.BeatDivisor); + double beatLength = beatSnapProvider.GetBeatLengthAtTime(referenceTime); return (float)(duration / beatLength * GetBeatSnapDistanceAt(referenceTime)); } public override double DistanceToDuration(double referenceTime, float distance) { - double beatLength = beatSnapProvider.GetBeatLengthAtTime(referenceTime, beatSnapProvider.BeatDivisor); + double beatLength = beatSnapProvider.GetBeatLengthAtTime(referenceTime); return distance / GetBeatSnapDistanceAt(referenceTime) * beatLength; } public override double GetSnappedDurationFromDistance(double referenceTime, float distance) - => beatSnapProvider.SnapTime(referenceTime, DistanceToDuration(referenceTime, distance), beatSnapProvider.BeatDivisor); + => beatSnapProvider.SnapTime(referenceTime, DistanceToDuration(referenceTime, distance)); public override float GetSnappedDistanceFromDistance(double referenceTime, float distance) - => DurationToDistance(referenceTime, beatSnapProvider.SnapTime(referenceTime, DistanceToDuration(referenceTime, distance), beatSnapProvider.BeatDivisor)); + => DurationToDistance(referenceTime, beatSnapProvider.SnapTime(referenceTime, DistanceToDuration(referenceTime, distance))); protected override void Dispose(bool isDisposing) { diff --git a/osu.Game/Rulesets/Edit/IBeatSnapProvider.cs b/osu.Game/Rulesets/Edit/IBeatSnapProvider.cs index ed6e08d054..e1daafaebe 100644 --- a/osu.Game/Rulesets/Edit/IBeatSnapProvider.cs +++ b/osu.Game/Rulesets/Edit/IBeatSnapProvider.cs @@ -10,17 +10,15 @@ namespace osu.Game.Rulesets.Edit /// /// The time of the timing point which resides in. /// The duration to snap. - /// The divisor to use for snapping purposes. /// A value that represents snapped to the closest beat of the timing point. - double SnapTime(double referenceTime, double duration, int beatDivisor); + double SnapTime(double referenceTime, double duration); /// /// Get the most appropriate beat length at a given time. /// /// A reference time used for lookup. - /// The divisor to use for snapping purposes. /// The most appropriate beat length. - double GetBeatLengthAtTime(double referenceTime, int beatDivisor); + double GetBeatLengthAtTime(double referenceTime); /// /// Returns the current beat divisor. diff --git a/osu.Game/Screens/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs index 820915e8e3..8d66cef16e 100644 --- a/osu.Game/Screens/Edit/Editor.cs +++ b/osu.Game/Screens/Edit/Editor.cs @@ -353,9 +353,9 @@ namespace osu.Game.Screens.Edit beatmapManager.Export(Beatmap.Value.BeatmapSetInfo); } - public double SnapTime(double referenceTime, double duration, int beatDivisor) => editorBeatmap.SnapTime(referenceTime, duration, beatDivisor); + public double SnapTime(double referenceTime, double duration) => editorBeatmap.SnapTime(referenceTime, duration); - public double GetBeatLengthAtTime(double referenceTime, int beatDivisor) => editorBeatmap.GetBeatLengthAtTime(referenceTime, beatDivisor); + public double GetBeatLengthAtTime(double referenceTime) => editorBeatmap.GetBeatLengthAtTime(referenceTime); public int BeatDivisor => beatDivisor.Value; } diff --git a/osu.Game/Screens/Edit/EditorBeatmap.cs b/osu.Game/Screens/Edit/EditorBeatmap.cs index 7c037c435f..a67a0ff0f1 100644 --- a/osu.Game/Screens/Edit/EditorBeatmap.cs +++ b/osu.Game/Screens/Edit/EditorBeatmap.cs @@ -126,15 +126,15 @@ namespace osu.Game.Screens.Edit return list.Count - 1; } - public double SnapTime(double referenceTime, double duration, int beatDivisor) + public double SnapTime(double referenceTime, double duration) { - double beatLength = GetBeatLengthAtTime(referenceTime, beatDivisor); + double beatLength = GetBeatLengthAtTime(referenceTime); // A 1ms offset prevents rounding errors due to minute variations in duration return (int)((duration + 1) / beatLength) * beatLength; } - public double GetBeatLengthAtTime(double referenceTime, int beatDivisor) => ControlPointInfo.TimingPointAt(referenceTime).BeatLength / BeatDivisor; + public double GetBeatLengthAtTime(double referenceTime) => ControlPointInfo.TimingPointAt(referenceTime).BeatLength / BeatDivisor; public int BeatDivisor => beatDivisor?.Value ?? 1; } From d3262a5667757ef047722c69634d3250d614f6a8 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 21 Jan 2020 17:35:36 +0900 Subject: [PATCH 0948/1829] Cache EditorBeatmap in test --- osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs b/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs index 29575cb42e..e9372bd134 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs @@ -40,6 +40,8 @@ namespace osu.Game.Tests.Visual.Editor var editorBeatmap = new EditorBeatmap((Beatmap)Beatmap.Value.Beatmap); + Dependencies.Cache(editorBeatmap); + Children = new Drawable[] { new FillFlowContainer From 9d90799447027b3d74a92363514aed5a6b1911f9 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 23 Jan 2020 16:20:42 +0900 Subject: [PATCH 0949/1829] Remove useless container --- .../Edit/Compose/Components/BlueprintContainer.cs | 10 +++------- .../Components/Timeline/TimelineBlueprintContainer.cs | 4 ++-- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index 4ef8877795..23f62e4eaf 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -32,7 +32,7 @@ namespace osu.Game.Screens.Edit.Compose.Components protected DragBox DragBox { get; private set; } - private SelectionBlueprintContainer selectionBlueprints; + private Container selectionBlueprints; private SelectionHandler selectionHandler; @@ -83,7 +83,8 @@ namespace osu.Game.Screens.Edit.Compose.Components }; } - protected virtual SelectionBlueprintContainer CreateSelectionBlueprintContainer() => new SelectionBlueprintContainer { RelativeSizeAxes = Axes.Both }; + protected virtual Container CreateSelectionBlueprintContainer() => + new Container { RelativeSizeAxes = Axes.Both }; protected override void LoadComplete() { @@ -430,10 +431,5 @@ namespace osu.Game.Screens.Edit.Compose.Components beatmap.HitObjectRemoved -= removeBlueprintFor; } } - - protected class SelectionBlueprintContainer : Container - { - //todo: remove - } } } diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs index b0d3e2dcde..9fef2998bd 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs @@ -42,7 +42,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline }); } - protected override SelectionBlueprintContainer CreateSelectionBlueprintContainer() => new TimelineSelectionBlueprintContainer { RelativeSizeAxes = Axes.Both }; + protected override Container CreateSelectionBlueprintContainer() => new TimelineSelectionBlueprintContainer { RelativeSizeAxes = Axes.Both }; protected override void LoadComplete() { @@ -130,7 +130,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline } } - protected class TimelineSelectionBlueprintContainer : SelectionBlueprintContainer + protected class TimelineSelectionBlueprintContainer : Container { protected override Container Content { get; } From 5cadbb1ffb057f71f086b6a6053a65e15807001a Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 23 Jan 2020 16:22:43 +0900 Subject: [PATCH 0950/1829] Move timeline blueprint to own class --- .../Timeline/TimelineBlueprintContainer.cs | 102 --------------- .../Timeline/TimelineHitObjectBlueprint.cs | 116 ++++++++++++++++++ 2 files changed, 116 insertions(+), 102 deletions(-) create mode 100644 osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs index 9fef2998bd..c1458480a6 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs @@ -2,9 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System; -using JetBrains.Annotations; using osu.Framework.Allocation; -using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Primitives; @@ -12,7 +10,6 @@ using osu.Framework.Graphics.Shapes; using osu.Framework.Input.Events; using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Objects; -using osu.Game.Rulesets.Objects.Types; using osu.Game.Screens.Edit.Components.Timelines.Summary.Parts; using osuTK; using osuTK.Graphics; @@ -139,104 +136,5 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline AddInternal(new TimelinePart(Content = new Container { RelativeSizeAxes = Axes.Both }) { RelativeSizeAxes = Axes.Both }); } } - - private class TimelineHitObjectBlueprint : SelectionBlueprint - { - private readonly Circle circle; - - private readonly Container extensionBar; - - [UsedImplicitly] - private readonly Bindable startTime; - - public const float THICKNESS = 3; - - private const float circle_size = 16; - - public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => base.ReceivePositionalInputAt(screenSpacePos) || circle.ReceivePositionalInputAt(screenSpacePos); - - public TimelineHitObjectBlueprint(HitObject hitObject) - : base(hitObject) - { - Anchor = Anchor.CentreLeft; - Origin = Anchor.CentreLeft; - - startTime = hitObject.StartTimeBindable.GetBoundCopy(); - startTime.BindValueChanged(time => X = (float)time.NewValue, true); - - RelativePositionAxes = Axes.X; - - RelativeSizeAxes = Axes.X; - AutoSizeAxes = Axes.Y; - - if (hitObject is IHasEndTime) - { - AddInternal(extensionBar = new Container - { - CornerRadius = 2, - Masking = true, - Size = new Vector2(1, THICKNESS), - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - RelativePositionAxes = Axes.X, - RelativeSizeAxes = Axes.X, - Colour = Color4.Black, - Child = new Box - { - RelativeSizeAxes = Axes.Both, - } - }); - } - - AddInternal(circle = new Circle - { - Size = new Vector2(circle_size), - Anchor = Anchor.CentreLeft, - Origin = Anchor.Centre, - RelativePositionAxes = Axes.X, - AlwaysPresent = true, - Colour = Color4.White, - BorderColour = Color4.Black, - BorderThickness = THICKNESS, - }); - } - - protected override void Update() - { - base.Update(); - - // no bindable so we perform this every update - Width = (float)(HitObject.GetEndTime() - HitObject.StartTime); - } - - protected override void OnSelected() - { - circle.BorderColour = Color4.Orange; - if (extensionBar != null) - extensionBar.Colour = Color4.Orange; - } - - protected override void OnDeselected() - { - circle.BorderColour = Color4.Black; - if (extensionBar != null) - extensionBar.Colour = Color4.Black; - } - - public override Quad SelectionQuad - { - get - { - // correctly include the circle in the selection quad region, as it is usually outside the blueprint itself. - var circleQuad = circle.ScreenSpaceDrawQuad; - var actualQuad = ScreenSpaceDrawQuad; - - return new Quad(circleQuad.TopLeft, Vector2.ComponentMax(actualQuad.TopRight, circleQuad.TopRight), - circleQuad.BottomLeft, Vector2.ComponentMax(actualQuad.BottomRight, circleQuad.BottomRight)); - } - } - - public override Vector2 SelectionPoint => ScreenSpaceDrawQuad.TopLeft; - } } } diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs new file mode 100644 index 0000000000..2ed5471444 --- /dev/null +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs @@ -0,0 +1,116 @@ +// 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.Bindables; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Primitives; +using osu.Framework.Graphics.Shapes; +using osu.Game.Rulesets.Edit; +using osu.Game.Rulesets.Objects; +using osu.Game.Rulesets.Objects.Types; +using osuTK; +using osuTK.Graphics; + +namespace osu.Game.Screens.Edit.Compose.Components.Timeline +{ + public class TimelineHitObjectBlueprint : SelectionBlueprint + { + private readonly Circle circle; + + private readonly Container extensionBar; + + [UsedImplicitly] + private readonly Bindable startTime; + + public const float THICKNESS = 3; + + private const float circle_size = 16; + + public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => base.ReceivePositionalInputAt(screenSpacePos) || circle.ReceivePositionalInputAt(screenSpacePos); + + public TimelineHitObjectBlueprint(HitObject hitObject) + : base(hitObject) + { + Anchor = Anchor.CentreLeft; + Origin = Anchor.CentreLeft; + + startTime = hitObject.StartTimeBindable.GetBoundCopy(); + startTime.BindValueChanged(time => X = (float)time.NewValue, true); + + RelativePositionAxes = Axes.X; + + RelativeSizeAxes = Axes.X; + AutoSizeAxes = Axes.Y; + + if (hitObject is IHasEndTime) + { + AddInternal(extensionBar = new Container + { + CornerRadius = 2, + Masking = true, + Size = new Vector2(1, THICKNESS), + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + RelativePositionAxes = Axes.X, + RelativeSizeAxes = Axes.X, + Colour = Color4.Black, + Child = new Box + { + RelativeSizeAxes = Axes.Both, + } + }); + } + + AddInternal(circle = new Circle + { + Size = new Vector2(circle_size), + Anchor = Anchor.CentreLeft, + Origin = Anchor.Centre, + RelativePositionAxes = Axes.X, + AlwaysPresent = true, + Colour = Color4.White, + BorderColour = Color4.Black, + BorderThickness = THICKNESS, + }); + } + + protected override void Update() + { + base.Update(); + + // no bindable so we perform this every update + Width = (float)(HitObject.GetEndTime() - HitObject.StartTime); + } + + protected override void OnSelected() + { + circle.BorderColour = Color4.Orange; + if (extensionBar != null) + extensionBar.Colour = Color4.Orange; + } + + protected override void OnDeselected() + { + circle.BorderColour = Color4.Black; + if (extensionBar != null) + extensionBar.Colour = Color4.Black; + } + + public override Quad SelectionQuad + { + get + { + // correctly include the circle in the selection quad region, as it is usually outside the blueprint itself. + var circleQuad = circle.ScreenSpaceDrawQuad; + var actualQuad = ScreenSpaceDrawQuad; + + return new Quad(circleQuad.TopLeft, Vector2.ComponentMax(actualQuad.TopRight, circleQuad.TopRight), + circleQuad.BottomLeft, Vector2.ComponentMax(actualQuad.BottomRight, circleQuad.BottomRight)); + } + } + + public override Vector2 SelectionPoint => ScreenSpaceDrawQuad.TopLeft; + } +} From 5646f7777e77bd6c7a5414debef4bfd9c7c769cd Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 23 Jan 2020 16:23:42 +0900 Subject: [PATCH 0951/1829] Add comment about custom SelectionHandler --- .../Components/Timeline/TimelineBlueprintContainer.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs index c1458480a6..6bfd323c13 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs @@ -82,15 +82,16 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline protected override SelectionHandler CreateSelectionHandler() => new TimelineSelectionHandler(); - internal class TimelineSelectionHandler : SelectionHandler - { - public override bool HandleMovement(MoveSelectionEvent moveEvent) => true; - } - protected override SelectionBlueprint CreateBlueprintFor(HitObject hitObject) => new TimelineHitObjectBlueprint(hitObject); protected override DragBox CreateDragBox(Action performSelect) => new TimelineDragBox(performSelect); + internal class TimelineSelectionHandler : SelectionHandler + { + // for now we always allow movement. snapping is provided by the Timeline's "distance" snap implementation + public override bool HandleMovement(MoveSelectionEvent moveEvent) => true; + } + private class TimelineDragBox : DragBox { private Vector2 lastMouseDown; From 32fb87acecdad9722ab9c7acf1d235df2f342fad Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 23 Jan 2020 16:45:30 +0900 Subject: [PATCH 0952/1829] Update country names --- osu.Game.Tournament/Resources/countries.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game.Tournament/Resources/countries.json b/osu.Game.Tournament/Resources/countries.json index ec2ca2bf37..7306a8bec5 100644 --- a/osu.Game.Tournament/Resources/countries.json +++ b/osu.Game.Tournament/Resources/countries.json @@ -541,7 +541,7 @@ }, { "FlagName": "MK", - "FullName": "Macedonia", + "FullName": "North Macedonia", "Acronym": "MKD" }, { @@ -811,7 +811,7 @@ }, { "FlagName": "CV", - "FullName": "Cape Verde", + "FullName": "Cabo Verde", "Acronym": "CPV" }, { @@ -821,7 +821,7 @@ }, { "FlagName": "SZ", - "FullName": "Swaziland", + "FullName": "Eswatini", "Acronym": "SWZ" }, { From 667fdb907cb56e6ad5fb5d4f616e1c8a23d85710 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 23 Jan 2020 12:21:16 +0300 Subject: [PATCH 0953/1829] Call the method directly rather that trigger a bindable --- osu.Game/Overlays/Comments/CommentsContainer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Comments/CommentsContainer.cs b/osu.Game/Overlays/Comments/CommentsContainer.cs index 99f79cd940..1193de52d7 100644 --- a/osu.Game/Overlays/Comments/CommentsContainer.cs +++ b/osu.Game/Overlays/Comments/CommentsContainer.cs @@ -129,7 +129,7 @@ namespace osu.Game.Overlays.Comments { this.type = type; this.id = id; - Sort.TriggerChange(); + refetchComments(); } private void refetchComments() From 0c3120d965914062e5dd14619bee56abb031ccb0 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 23 Jan 2020 12:59:53 +0300 Subject: [PATCH 0954/1829] Fix possible crash due to not loaded api --- osu.Game/Overlays/Comments/CommentsContainer.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Comments/CommentsContainer.cs b/osu.Game/Overlays/Comments/CommentsContainer.cs index 1193de52d7..9f1d9d9488 100644 --- a/osu.Game/Overlays/Comments/CommentsContainer.cs +++ b/osu.Game/Overlays/Comments/CommentsContainer.cs @@ -119,7 +119,7 @@ namespace osu.Game.Overlays.Comments protected override void LoadComplete() { - Sort.BindValueChanged(_ => refetchComments()); + Sort.BindValueChanged(_ => refetchComments(), true); base.LoadComplete(); } @@ -129,6 +129,10 @@ namespace osu.Game.Overlays.Comments { this.type = type; this.id = id; + + if (!IsLoaded) + return; + refetchComments(); } From f8cb8985161d313490b33fe420cc0b3f931d33bb Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 23 Jan 2020 20:03:52 +0900 Subject: [PATCH 0955/1829] Improve song select display on ultrawide displays (or when UI scale is set low) --- osu.Game/Screens/Select/BeatmapInfoWedge.cs | 2 +- osu.Game/Screens/Select/SongSelect.cs | 117 ++++++++++++++------ 2 files changed, 82 insertions(+), 37 deletions(-) diff --git a/osu.Game/Screens/Select/BeatmapInfoWedge.cs b/osu.Game/Screens/Select/BeatmapInfoWedge.cs index b0d5be8140..cf49cf0228 100644 --- a/osu.Game/Screens/Select/BeatmapInfoWedge.cs +++ b/osu.Game/Screens/Select/BeatmapInfoWedge.cs @@ -33,7 +33,7 @@ namespace osu.Game.Screens.Select { private const float shear_width = 36.75f; - private static readonly Vector2 wedged_container_shear = new Vector2(shear_width / SongSelect.WEDGED_CONTAINER_SIZE.Y, 0); + private static readonly Vector2 wedged_container_shear = new Vector2(shear_width / SongSelect.WEDGE_HEIGHT, 0); private readonly IBindable ruleset = new Bindable(); diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index bf57def700..bcb828a666 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -41,7 +41,7 @@ namespace osu.Game.Screens.Select { public abstract class SongSelect : OsuScreen, IKeyBindingHandler { - public static readonly Vector2 WEDGED_CONTAINER_SIZE = new Vector2(0.5f, 245); + public static readonly float WEDGE_HEIGHT = 245; protected const float BACKGROUND_BLUR = 20; private const float left_area_padding = 20; @@ -88,13 +88,15 @@ namespace osu.Game.Screens.Select [Resolved(canBeNull: true)] private MusicController music { get; set; } + private const float panel_overflow = 1.2f; + [BackgroundDependencyLoader(true)] private void load(BeatmapManager beatmaps, AudioManager audio, DialogOverlay dialog, OsuColour colours, SkinManager skins, ScoreManager scores) { // initial value transfer is required for FilterControl (it uses our re-cached bindables in its async load for the initial filter). transferRulesetValue(); - AddRangeInternal(new Drawable[] + AddRangeInternal(new[] { new ParallaxContainer { @@ -107,27 +109,61 @@ namespace osu.Game.Screens.Select { RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { Right = -150 }, - Size = new Vector2(WEDGED_CONTAINER_SIZE.X, 1), + Size = new Vector2(0.5f, 1), } } }, - new Container + new GridContainer // used for max width implementation { - Origin = Anchor.BottomLeft, - Anchor = Anchor.BottomLeft, RelativeSizeAxes = Axes.Both, - Size = new Vector2(WEDGED_CONTAINER_SIZE.X, 1), - Padding = new MarginPadding + ColumnDimensions = new[] { - Bottom = Footer.HEIGHT, - Top = WEDGED_CONTAINER_SIZE.Y + left_area_padding, - Left = left_area_padding, - Right = left_area_padding * 2, + new Dimension(GridSizeMode.Relative, 0.5f, maxSize: 650), }, - Child = BeatmapDetails = new BeatmapDetailArea + Content = new[] { - RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding { Top = 10, Right = 5 }, + new Drawable[] + { + new Container + { + Origin = Anchor.BottomLeft, + Anchor = Anchor.BottomLeft, + RelativeSizeAxes = Axes.Both, + + Children = new Drawable[] + { + beatmapInfoWedge = new BeatmapInfoWedge + { + Height = WEDGE_HEIGHT, + RelativeSizeAxes = Axes.X, + Margin = new MarginPadding + { + Top = left_area_padding, + Right = left_area_padding, + }, + }, + new Container + { + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding + { + Bottom = Footer.HEIGHT, + Top = WEDGE_HEIGHT + left_area_padding, + Left = left_area_padding, + Right = left_area_padding * 2, + }, + Children = new Drawable[] + { + BeatmapDetails = new BeatmapDetailArea + { + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Top = 10, Right = 5 }, + }, + } + }, + } + }, + }, } }, new Container @@ -136,13 +172,13 @@ namespace osu.Game.Screens.Select Masking = true, Anchor = Anchor.Centre, Origin = Anchor.Centre, - Width = 2, //avoid horizontal masking so the panels don't clip when screen stack is pushed. + Width = panel_overflow, //avoid horizontal masking so the panels don't clip when screen stack is pushed. Child = new Container { RelativeSizeAxes = Axes.Both, Anchor = Anchor.Centre, Origin = Anchor.Centre, - Width = 0.5f, + Width = 1 / panel_overflow, Children = new Drawable[] { new Container @@ -153,15 +189,33 @@ namespace osu.Game.Screens.Select Top = FilterControl.HEIGHT, Bottom = Footer.HEIGHT }, - Child = Carousel = new BeatmapCarousel + Children = new Drawable[] { - RelativeSizeAxes = Axes.Both, - Size = new Vector2(1 - WEDGED_CONTAINER_SIZE.X, 1), - Anchor = Anchor.CentreRight, - Origin = Anchor.CentreRight, - SelectionChanged = updateSelectedBeatmap, - BeatmapSetsChanged = carouselBeatmapsLoaded, - }, + new GridContainer // used for max width implementation + { + RelativeSizeAxes = Axes.Both, + ColumnDimensions = new[] + { + new Dimension(), + new Dimension(GridSizeMode.Relative, 0.5f, maxSize: 850), + }, + Content = new[] + { + new Drawable[] + { + null, + Carousel = new BeatmapCarousel + { + Anchor = Anchor.CentreRight, + Origin = Anchor.CentreRight, + RelativeSizeAxes = Axes.Both, + SelectionChanged = updateSelectedBeatmap, + BeatmapSetsChanged = carouselBeatmapsLoaded, + }, + } + } + }, + } }, FilterControl = new FilterControl { @@ -173,21 +227,12 @@ namespace osu.Game.Screens.Select } }, }, - beatmapInfoWedge = new BeatmapInfoWedge - { - Size = WEDGED_CONTAINER_SIZE, - RelativeSizeAxes = Axes.X, - Margin = new MarginPadding - { - Top = left_area_padding, - Right = left_area_padding, - }, - }, new ResetScrollContainer(() => Carousel.ScrollToSelected()) { RelativeSizeAxes = Axes.Y, Width = 250, - } + }, + beatmapInfoWedge.CreateProxy() }); if (ShowFooter) From 6493f24547bd1eae1ecbfce3edb13f4ac0612d80 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 23 Jan 2020 15:56:01 +0300 Subject: [PATCH 0956/1829] Add TotalCommentsCounter to CommentsContainer --- osu.Game/Overlays/Comments/CommentsContainer.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/osu.Game/Overlays/Comments/CommentsContainer.cs b/osu.Game/Overlays/Comments/CommentsContainer.cs index 9f1d9d9488..433af5fb4e 100644 --- a/osu.Game/Overlays/Comments/CommentsContainer.cs +++ b/osu.Game/Overlays/Comments/CommentsContainer.cs @@ -38,6 +38,7 @@ namespace osu.Game.Overlays.Comments private readonly FillFlowContainer content; private readonly DeletedChildrenPlaceholder deletedChildrenPlaceholder; private readonly CommentsShowMoreButton moreButton; + private readonly TotalCommentsCounter commentCounter; public CommentsContainer() { @@ -56,6 +57,7 @@ namespace osu.Game.Overlays.Comments Direction = FillDirection.Vertical, Children = new Drawable[] { + commentCounter = new TotalCommentsCounter(), new CommentsHeader { Sort = { BindTarget = Sort }, @@ -133,6 +135,7 @@ namespace osu.Game.Overlays.Comments if (!IsLoaded) return; + commentCounter.Current.Value = 0; refetchComments(); } @@ -199,6 +202,8 @@ namespace osu.Game.Overlays.Comments moreButton.IsLoading = false; } + commentCounter.Current.Value = response.Total; + moreButton.FadeTo(response.HasMore ? 1 : 0); }, loadCancellation.Token); } From 316a764f6f85a91f42b1d11b6bb8b03b47392e73 Mon Sep 17 00:00:00 2001 From: Berkan Diler Date: Thu, 23 Jan 2020 16:23:53 +0100 Subject: [PATCH 0957/1829] Minor cleanups for Legacy Storyboard/Beatmap decoder --- osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs | 12 ++++++------ osu.Game/Beatmaps/Formats/LegacyDecoder.cs | 5 ++++- .../Beatmaps/Formats/LegacyStoryboardDecoder.cs | 14 +++++++------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs index 447d52d980..a8ec351817 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs @@ -239,11 +239,11 @@ namespace osu.Game.Beatmaps.Formats break; case @"Source": - beatmap.BeatmapInfo.Metadata.Source = pair.Value; + metadata.Source = pair.Value; break; case @"Tags": - beatmap.BeatmapInfo.Metadata.Tags = pair.Value; + metadata.Tags = pair.Value; break; case @"BeatmapID": @@ -300,13 +300,13 @@ namespace osu.Game.Beatmaps.Formats switch (type) { case LegacyEventType.Background: - string bgFilename = split[2].Trim('"'); - beatmap.BeatmapInfo.Metadata.BackgroundFile = bgFilename.ToStandardisedPath(); + string bgFilename = split[2]; + beatmap.BeatmapInfo.Metadata.BackgroundFile = CleanFilename(bgFilename); ; break; case LegacyEventType.Video: - string videoFilename = split[2].Trim('"'); - beatmap.BeatmapInfo.Metadata.VideoFile = videoFilename.ToStandardisedPath(); + string videoFilename = split[2]; + beatmap.BeatmapInfo.Metadata.VideoFile = CleanFilename(videoFilename); break; case LegacyEventType.Break: diff --git a/osu.Game/Beatmaps/Formats/LegacyDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyDecoder.cs index f55e24245b..0ec80eee41 100644 --- a/osu.Game/Beatmaps/Formats/LegacyDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyDecoder.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using osu.Framework.Extensions; using osu.Framework.Logging; using osu.Game.Audio; using osu.Game.Beatmaps.ControlPoints; @@ -115,7 +116,7 @@ namespace osu.Game.Beatmaps.Formats protected KeyValuePair SplitKeyVal(string line, char separator = ':') { - var split = line.Trim().Split(new[] { separator }, 2); + var split = line.Split(separator, 2); return new KeyValuePair ( @@ -124,6 +125,8 @@ namespace osu.Game.Beatmaps.Formats ); } + protected string CleanFilename(string path) => path.Trim('"').ToStandardisedPath(); + protected enum Section { None, diff --git a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs index c46634e72f..cbf0f8dfbd 100644 --- a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs @@ -7,7 +7,6 @@ using System.Globalization; using System.IO; using osuTK; using osuTK.Graphics; -using osu.Framework.Extensions; using osu.Framework.Graphics; using osu.Game.IO; using osu.Game.Storyboards; @@ -65,12 +64,14 @@ namespace osu.Game.Beatmaps.Formats private void handleEvents(string line) { var depth = 0; + var lineSpan = line.AsSpan(); - while (line.StartsWith(" ", StringComparison.Ordinal) || line.StartsWith("_", StringComparison.Ordinal)) + while (lineSpan.StartsWith(" ", StringComparison.Ordinal) || lineSpan.StartsWith("_", StringComparison.Ordinal)) { + lineSpan = lineSpan.Slice(1); ++depth; - line = line.Substring(1); } + line = line.Substring(depth); decodeVariables(ref line); @@ -89,7 +90,7 @@ namespace osu.Game.Beatmaps.Formats { var layer = parseLayer(split[1]); var origin = parseOrigin(split[2]); - var path = cleanFilename(split[3]); + var path = CleanFilename(split[3]); var x = float.Parse(split[4], NumberFormatInfo.InvariantInfo); var y = float.Parse(split[5], NumberFormatInfo.InvariantInfo); storyboardSprite = new StoryboardSprite(path, origin, new Vector2(x, y)); @@ -101,7 +102,7 @@ namespace osu.Game.Beatmaps.Formats { var layer = parseLayer(split[1]); var origin = parseOrigin(split[2]); - var path = cleanFilename(split[3]); + 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]); @@ -116,7 +117,7 @@ namespace osu.Game.Beatmaps.Formats { var time = double.Parse(split[1], CultureInfo.InvariantCulture); var layer = parseLayer(split[2]); - var path = cleanFilename(split[3]); + var path = CleanFilename(split[3]); var volume = split.Length > 4 ? float.Parse(split[4], CultureInfo.InvariantCulture) : 100; storyboard.GetLayer(layer).Add(new StoryboardSampleInfo(path, time, (int)volume)); break; @@ -332,6 +333,5 @@ namespace osu.Game.Beatmaps.Formats } } - private string cleanFilename(string path) => path.Trim('"').ToStandardisedPath(); } } From 6658bdb223c15661bf7836d66165dacef2d07eec Mon Sep 17 00:00:00 2001 From: Berkan Diler Date: Thu, 23 Jan 2020 16:34:43 +0100 Subject: [PATCH 0958/1829] Fix CodeFactor issues --- osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs | 2 +- osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs index a8ec351817..965fcc03a3 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs @@ -301,7 +301,7 @@ namespace osu.Game.Beatmaps.Formats { case LegacyEventType.Background: string bgFilename = split[2]; - beatmap.BeatmapInfo.Metadata.BackgroundFile = CleanFilename(bgFilename); ; + beatmap.BeatmapInfo.Metadata.BackgroundFile = CleanFilename(bgFilename); break; case LegacyEventType.Video: diff --git a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs index cbf0f8dfbd..a7d0360f0d 100644 --- a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs @@ -332,6 +332,5 @@ namespace osu.Game.Beatmaps.Formats break; } } - } } From 5863576ce49721bb0cad638dfdeedb997c95fa48 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 24 Jan 2020 11:42:33 +0900 Subject: [PATCH 0959/1829] Add comment as to why counter is zeroes only in Show method --- osu.Game/Overlays/Comments/CommentsContainer.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game/Overlays/Comments/CommentsContainer.cs b/osu.Game/Overlays/Comments/CommentsContainer.cs index 433af5fb4e..d252083411 100644 --- a/osu.Game/Overlays/Comments/CommentsContainer.cs +++ b/osu.Game/Overlays/Comments/CommentsContainer.cs @@ -135,7 +135,9 @@ namespace osu.Game.Overlays.Comments if (!IsLoaded) return; + // only reset when changing ID/type. other refetch ops are generally just changing sort order. commentCounter.Current.Value = 0; + refetchComments(); } From 851b89128559aee63f81b6dbccfa0f50e0f5dc66 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 24 Jan 2020 11:52:32 +0900 Subject: [PATCH 0960/1829] Fix incorrect insert logic --- .../Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs b/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs index d18f6f3743..f06f6938a2 100644 --- a/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs +++ b/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.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.Collections.Generic; using System.Linq; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; @@ -33,7 +34,7 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters private const int drawable_judgement_size = 8; private const int spacing = 2; - private int runningDepth; + public override IEnumerable FlowingChildren => base.FlowingChildren.Reverse(); public JudgementFlow() { @@ -47,7 +48,7 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters public void Push(Color4 colour) { - Insert(runningDepth--, new DrawableResult(colour, drawable_judgement_size)); + Add(new DrawableResult(colour, drawable_judgement_size)); if (Children.Count > max_available_judgements) Children.FirstOrDefault(c => !c.IsRemoved)?.Remove(); From eb5abcab8c129a47f11a56f178e32f50d4a6c8aa Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 24 Jan 2020 11:54:48 +0900 Subject: [PATCH 0961/1829] Rename and simplify circle logic --- .../HUD/HitErrorMeters/ColourHitErrorMeter.cs | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs b/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs index f06f6938a2..657235bfd4 100644 --- a/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs +++ b/osu.Game/Screens/Play/HUD/HitErrorMeters/ColourHitErrorMeter.cs @@ -28,7 +28,7 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters public override void OnNewJudgement(JudgementResult judgement) => judgementsFlow.Push(GetColourForHitResult(HitWindows.ResultFor(judgement.TimeOffset))); - private class JudgementFlow : FillFlowContainer + private class JudgementFlow : FillFlowContainer { private const int max_available_judgements = 20; private const int drawable_judgement_size = 8; @@ -48,46 +48,43 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters public void Push(Color4 colour) { - Add(new DrawableResult(colour, drawable_judgement_size)); + Add(new HitErrorCircle(colour, drawable_judgement_size)); if (Children.Count > max_available_judgements) Children.FirstOrDefault(c => !c.IsRemoved)?.Remove(); } } - private class DrawableResult : Container + private class HitErrorCircle : Container { public bool IsRemoved { get; private set; } - private readonly CircularContainer content; + private readonly Circle circle; - public DrawableResult(Color4 colour, int size) + public HitErrorCircle(Color4 colour, int size) { Size = new Vector2(size); - Child = content = new CircularContainer + Child = circle = new Circle { RelativeSizeAxes = Axes.Both, - Masking = true, Alpha = 0, - Child = new Box - { - RelativeSizeAxes = Axes.Both, - Colour = colour - }, + Colour = colour }; } protected override void LoadComplete() { base.LoadComplete(); - content.FadeInFromZero(animation_duration, Easing.OutQuint); - content.MoveToY(-DrawSize.Y); - content.MoveToY(0, animation_duration, Easing.OutQuint); + + circle.FadeInFromZero(animation_duration, Easing.OutQuint); + circle.MoveToY(-DrawSize.Y); + circle.MoveToY(0, animation_duration, Easing.OutQuint); } public void Remove() { IsRemoved = true; + this.FadeOut(animation_duration, Easing.OutQuint).Expire(); } } From e4702ffe9ef809a966fdc519c4039ce9ee076f06 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 24 Jan 2020 13:10:02 +0900 Subject: [PATCH 0962/1829] Fix editor rate adjustment polluting global beatmap rate --- .../Screens/Edit/Components/PlaybackControl.cs | 17 +++++++++++++---- osu.Game/Screens/Edit/Editor.cs | 9 ++------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/osu.Game/Screens/Edit/Components/PlaybackControl.cs b/osu.Game/Screens/Edit/Components/PlaybackControl.cs index 62d6c4648b..66df68418a 100644 --- a/osu.Game/Screens/Edit/Components/PlaybackControl.cs +++ b/osu.Game/Screens/Edit/Components/PlaybackControl.cs @@ -5,6 +5,8 @@ using System.Linq; using osuTK; using osuTK.Graphics; using osu.Framework.Allocation; +using osu.Framework.Audio; +using osu.Framework.Bindables; using osu.Framework.Extensions.IEnumerableExtensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; @@ -25,13 +27,13 @@ namespace osu.Game.Screens.Edit.Components private IAdjustableClock adjustableClock; + private readonly BindableNumber tempo = new BindableDouble(1); + [BackgroundDependencyLoader] private void load(IAdjustableClock adjustableClock) { this.adjustableClock = adjustableClock; - PlaybackTabControl tabs; - Children = new Drawable[] { playButton = new IconButton @@ -58,11 +60,18 @@ namespace osu.Game.Screens.Edit.Components RelativeSizeAxes = Axes.Both, Height = 0.5f, Padding = new MarginPadding { Left = 45 }, - Child = tabs = new PlaybackTabControl(), + Child = new PlaybackTabControl { Current = tempo }, } }; - tabs.Current.ValueChanged += tempo => Beatmap.Value.Track.Tempo.Value = tempo.NewValue; + Track?.AddAdjustment(AdjustableProperty.Tempo, tempo); + } + + protected override void Dispose(bool isDisposing) + { + Track?.RemoveAdjustment(AdjustableProperty.Tempo, tempo); + + base.Dispose(isDisposing); } protected override bool OnKeyDown(KeyDownEvent e) diff --git a/osu.Game/Screens/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs index 8d66cef16e..eae94a3c8e 100644 --- a/osu.Game/Screens/Edit/Editor.cs +++ b/osu.Game/Screens/Edit/Editor.cs @@ -46,6 +46,8 @@ namespace osu.Game.Screens.Edit public override bool DisallowExternalBeatmapRulesetChanges => true; + public override bool AllowRateAdjustments => false; + [Resolved] private BeatmapManager beatmapManager { get; set; } @@ -262,12 +264,6 @@ namespace osu.Game.Screens.Edit { } - public override void OnResuming(IScreen last) - { - base.OnResuming(last); - Beatmap.Value.Track?.Stop(); - } - public override void OnEntering(IScreen last) { base.OnEntering(last); @@ -291,7 +287,6 @@ namespace osu.Game.Screens.Edit private void resetTrack(bool seekToStart = false) { - Beatmap.Value.Track?.ResetSpeedAdjustments(); Beatmap.Value.Track?.Stop(); if (seekToStart) From 0e9ab8c76b843fcb35bd06d7ffd1c423549ba5f3 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 24 Jan 2020 13:39:47 +0900 Subject: [PATCH 0963/1829] Rename test scene to match --- ...mposeTimeline.cs => TestSceneTimelineBlueprintContainer.cs} | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) rename osu.Game.Tests/Visual/Editor/{TestSceneEditorComposeTimeline.cs => TestSceneTimelineBlueprintContainer.cs} (97%) diff --git a/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs b/osu.Game.Tests/Visual/Editor/TestSceneTimelineBlueprintContainer.cs similarity index 97% rename from osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs rename to osu.Game.Tests/Visual/Editor/TestSceneTimelineBlueprintContainer.cs index 5b0408268f..34bf671eba 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneEditorComposeTimeline.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneTimelineBlueprintContainer.cs @@ -23,12 +23,11 @@ using osuTK.Graphics; namespace osu.Game.Tests.Visual.Editor { [TestFixture] - public class TestSceneEditorComposeTimeline : EditorClockTestScene + public class TestSceneTimelineBlueprintContainer : EditorClockTestScene { public override IReadOnlyList RequiredTypes => new[] { typeof(TimelineArea), - typeof(TimelineBlueprintContainer), typeof(Timeline), typeof(TimelineButton), typeof(CentreMarker) From 997b49f6dc872f0104a9680665b5dbb92c67c91f Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 24 Jan 2020 14:21:22 +0900 Subject: [PATCH 0964/1829] Change display to always show progress bar, only hiding seeking handle instead --- .../Visual/Gameplay/TestSceneSongProgress.cs | 3 +++ osu.Game/Screens/Play/HUDOverlay.cs | 1 - osu.Game/Screens/Play/SongProgress.cs | 8 +++---- osu.Game/Screens/Play/SongProgressBar.cs | 23 ++++++++++++++++++- 4 files changed, 29 insertions(+), 6 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs index 0996b5b0c7..ff14846b68 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs @@ -6,6 +6,9 @@ using System.Collections.Generic; using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; +using osu.Framework.Testing; using osu.Framework.Utils; using osu.Framework.Timing; using osu.Game.Graphics; diff --git a/osu.Game/Screens/Play/HUDOverlay.cs b/osu.Game/Screens/Play/HUDOverlay.cs index 236bdc8442..a5f8051557 100644 --- a/osu.Game/Screens/Play/HUDOverlay.cs +++ b/osu.Game/Screens/Play/HUDOverlay.cs @@ -131,7 +131,6 @@ namespace osu.Game.Screens.Play BindDrawableRuleset(drawableRuleset); Progress.Objects = drawableRuleset.Objects; - Progress.AllowSeeking = drawableRuleset.HasReplayLoaded.Value; Progress.RequestSeek = time => RequestSeek(time); Progress.ReferenceClock = drawableRuleset.FrameStableClock; } diff --git a/osu.Game/Screens/Play/SongProgress.cs b/osu.Game/Screens/Play/SongProgress.cs index 1368158938..aa745f5ba2 100644 --- a/osu.Game/Screens/Play/SongProgress.cs +++ b/osu.Game/Screens/Play/SongProgress.cs @@ -46,7 +46,6 @@ namespace osu.Game.Screens.Play public override bool HandlePositionalInput => AllowSeeking.Value; private double firstHitTime => objects.First().StartTime; - private double lastHitTime => ((objects.Last() as IHasEndTime)?.EndTime ?? objects.Last().StartTime) + 1; private IEnumerable objects; @@ -92,7 +91,6 @@ namespace osu.Game.Screens.Play }, bar = new SongProgressBar(bottom_bar_height, graph_height, handle_size) { - Alpha = 0, Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, OnSeek = time => RequestSeek?.Invoke(time), @@ -105,6 +103,9 @@ namespace osu.Game.Screens.Play { base.LoadComplete(); + if (clock != null) + gameplayClock = clock; + config.BindWith(OsuSetting.ShowProgressGraph, ShowGraph); graph.FillColour = bar.FillColour = colours.BlueLighter; @@ -151,8 +152,7 @@ namespace osu.Game.Screens.Play private void updateBarVisibility() { - bar.FadeTo(AllowSeeking.Value ? 1 : 0, transition_duration, Easing.In); - this.MoveTo(new Vector2(0, AllowSeeking.Value ? 0 : bottom_bar_height), transition_duration, Easing.In); + bar.ShowHandle = AllowSeeking.Value; updateInfoMargin(); } diff --git a/osu.Game/Screens/Play/SongProgressBar.cs b/osu.Game/Screens/Play/SongProgressBar.cs index 817b703fca..5052b32335 100644 --- a/osu.Game/Screens/Play/SongProgressBar.cs +++ b/osu.Game/Screens/Play/SongProgressBar.cs @@ -21,6 +21,22 @@ namespace osu.Game.Screens.Play private readonly Container handleBase; private readonly Container handleContainer; + private bool showHandle; + + public bool ShowHandle + { + get => showHandle; + set + { + if (value == showHandle) + return; + + showHandle = value; + + handleBase.FadeTo(showHandle ? 1 : 0, 200); + } + } + public Color4 FillColour { set => fill.Colour = value; @@ -75,6 +91,7 @@ namespace osu.Game.Screens.Play Origin = Anchor.BottomLeft, Anchor = Anchor.BottomLeft, Width = 2, + Alpha = 0, Colour = Color4.White, Position = new Vector2(2, 0), Children = new Drawable[] @@ -128,7 +145,11 @@ namespace osu.Game.Screens.Play protected override void OnUserChange(double value) { scheduledSeek?.Cancel(); - scheduledSeek = Schedule(() => OnSeek?.Invoke(value)); + scheduledSeek = Schedule(() => + { + if (showHandle) + OnSeek?.Invoke(value); + }); } } } From 2187dbd0c28b43684842593aa6f4f3b9427294d6 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 24 Jan 2020 14:37:37 +0900 Subject: [PATCH 0965/1829] Rename steps in test for clarity --- osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs index ff14846b68..b9b13d7bd8 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneSongProgress.cs @@ -111,10 +111,10 @@ namespace osu.Game.Tests.Visual.Gameplay AddStep("display max values", displayMaxValues); AddUntilStep("wait for graph", () => graph.CreationCount == 1); AddStep("start", clock.Start); - AddStep("show bar", () => progress.AllowSeeking.Value = true); + AddStep("allow seeking", () => progress.AllowSeeking.Value = true); AddStep("hide graph", () => progress.ShowGraph.Value = false); - AddStep("hide Bar", () => progress.AllowSeeking.Value = false); - AddStep("show bar", () => progress.AllowSeeking.Value = true); + AddStep("disallow seeking", () => progress.AllowSeeking.Value = false); + AddStep("allow seeking", () => progress.AllowSeeking.Value = true); AddStep("show graph", () => progress.ShowGraph.Value = true); AddStep("stop", clock.Stop); } From c0a233e8bb7d8a8ce8c2a6b67b6be72c09a8d57b Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 24 Jan 2020 15:00:10 +0900 Subject: [PATCH 0966/1829] Align background wedge with carousel --- osu.Game/Screens/Select/SongSelect.cs | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index bcb828a666..30cb66b301 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -105,11 +105,26 @@ namespace osu.Game.Screens.Select RelativeSizeAxes = Axes.Both, Children = new[] { - new WedgeBackground + new GridContainer // used for max width implementation { RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding { Right = -150 }, - Size = new Vector2(0.5f, 1), + ColumnDimensions = new[] + { + new Dimension(), + new Dimension(GridSizeMode.Relative, 0.5f, maxSize: 850), + }, + Content = new[] + { + new Drawable[] + { + new WedgeBackground + { + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Right = -150 }, + }, + null + } + } } } }, From fdde4a6858301129ac787b4fc4990a421e09cf28 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 24 Jan 2020 15:34:15 +0900 Subject: [PATCH 0967/1829] Tidy up song select hierarchy to be more readable --- osu.Game/Screens/Select/SongSelect.cs | 219 ++++++++++++-------------- 1 file changed, 100 insertions(+), 119 deletions(-) diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index 30cb66b301..1a29f336ea 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -88,22 +88,22 @@ namespace osu.Game.Screens.Select [Resolved(canBeNull: true)] private MusicController music { get; set; } - private const float panel_overflow = 1.2f; - [BackgroundDependencyLoader(true)] private void load(BeatmapManager beatmaps, AudioManager audio, DialogOverlay dialog, OsuColour colours, SkinManager skins, ScoreManager scores) { // initial value transfer is required for FilterControl (it uses our re-cached bindables in its async load for the initial filter). transferRulesetValue(); - AddRangeInternal(new[] + AddRangeInternal(new Drawable[] { - new ParallaxContainer + new ResetScrollContainer(() => Carousel.ScrollToSelected()) { - Masking = true, - ParallaxAmount = 0.005f, - RelativeSizeAxes = Axes.Both, - Children = new[] + RelativeSizeAxes = Axes.Y, + Width = 250, + }, + new VerticalMaskingContainer + { + Children = new Drawable[] { new GridContainer // used for max width implementation { @@ -117,44 +117,14 @@ namespace osu.Game.Screens.Select { new Drawable[] { - new WedgeBackground + new ParallaxContainer { + ParallaxAmount = 0.005f, RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding { Right = -150 }, - }, - null - } - } - } - } - }, - new GridContainer // used for max width implementation - { - RelativeSizeAxes = Axes.Both, - ColumnDimensions = new[] - { - new Dimension(GridSizeMode.Relative, 0.5f, maxSize: 650), - }, - Content = new[] - { - new Drawable[] - { - new Container - { - Origin = Anchor.BottomLeft, - Anchor = Anchor.BottomLeft, - RelativeSizeAxes = Axes.Both, - - Children = new Drawable[] - { - beatmapInfoWedge = new BeatmapInfoWedge - { - Height = WEDGE_HEIGHT, - RelativeSizeAxes = Axes.X, - Margin = new MarginPadding + Child = new WedgeBackground { - Top = left_area_padding, - Right = left_area_padding, + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Right = -150 }, }, }, new Container @@ -162,92 +132,80 @@ namespace osu.Game.Screens.Select RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { - Bottom = Footer.HEIGHT, - Top = WEDGE_HEIGHT + left_area_padding, - Left = left_area_padding, - Right = left_area_padding * 2, + Top = FilterControl.HEIGHT, + Bottom = Footer.HEIGHT }, + Child = Carousel = new BeatmapCarousel + { + Anchor = Anchor.CentreRight, + Origin = Anchor.CentreRight, + RelativeSizeAxes = Axes.Both, + SelectionChanged = updateSelectedBeatmap, + BeatmapSetsChanged = carouselBeatmapsLoaded, + }, + } + }, + } + }, + FilterControl = new FilterControl + { + RelativeSizeAxes = Axes.X, + Height = FilterControl.HEIGHT, + FilterChanged = ApplyFilterToCarousel, + Background = { Width = 2 }, + }, + new GridContainer // used for max width implementation + { + RelativeSizeAxes = Axes.Both, + ColumnDimensions = new[] + { + new Dimension(GridSizeMode.Relative, 0.5f, maxSize: 650), + }, + Content = new[] + { + new Drawable[] + { + new Container + { + Origin = Anchor.BottomLeft, + Anchor = Anchor.BottomLeft, + RelativeSizeAxes = Axes.Both, + Children = new Drawable[] { - BeatmapDetails = new BeatmapDetailArea + beatmapInfoWedge = new BeatmapInfoWedge + { + Height = WEDGE_HEIGHT, + RelativeSizeAxes = Axes.X, + Margin = new MarginPadding + { + Top = left_area_padding, + Right = left_area_padding, + }, + }, + new Container { RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding { Top = 10, Right = 5 }, + Padding = new MarginPadding + { + Bottom = Footer.HEIGHT, + Top = WEDGE_HEIGHT + left_area_padding, + Left = left_area_padding, + Right = left_area_padding * 2, + }, + Child = BeatmapDetails = new BeatmapDetailArea + { + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Top = 10, Right = 5 }, + }, }, } }, - } - }, - }, + }, + } + } } }, - new Container - { - RelativeSizeAxes = Axes.Both, - Masking = true, - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Width = panel_overflow, //avoid horizontal masking so the panels don't clip when screen stack is pushed. - Child = new Container - { - RelativeSizeAxes = Axes.Both, - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Width = 1 / panel_overflow, - Children = new Drawable[] - { - new Container - { - RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding - { - Top = FilterControl.HEIGHT, - Bottom = Footer.HEIGHT - }, - Children = new Drawable[] - { - new GridContainer // used for max width implementation - { - RelativeSizeAxes = Axes.Both, - ColumnDimensions = new[] - { - new Dimension(), - new Dimension(GridSizeMode.Relative, 0.5f, maxSize: 850), - }, - Content = new[] - { - new Drawable[] - { - null, - Carousel = new BeatmapCarousel - { - Anchor = Anchor.CentreRight, - Origin = Anchor.CentreRight, - RelativeSizeAxes = Axes.Both, - SelectionChanged = updateSelectedBeatmap, - BeatmapSetsChanged = carouselBeatmapsLoaded, - }, - } - } - }, - } - }, - FilterControl = new FilterControl - { - RelativeSizeAxes = Axes.X, - Height = FilterControl.HEIGHT, - FilterChanged = ApplyFilterToCarousel, - Background = { Width = 2 }, - }, - } - }, - }, - new ResetScrollContainer(() => Carousel.ScrollToSelected()) - { - RelativeSizeAxes = Axes.Y, - Width = 250, - }, - beatmapInfoWedge.CreateProxy() }); if (ShowFooter) @@ -765,6 +723,29 @@ namespace osu.Game.Screens.Select return base.OnKeyDown(e); } + private class VerticalMaskingContainer : Container + { + private const float panel_overflow = 1.2f; + + protected override Container Content { get; } + + public VerticalMaskingContainer() + { + RelativeSizeAxes = Axes.Both; + Masking = true; + Anchor = Anchor.Centre; + Origin = Anchor.Centre; + Width = panel_overflow; //avoid horizontal masking so the panels don't clip when screen stack is pushed. + InternalChild = Content = new Container + { + RelativeSizeAxes = Axes.Both, + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Width = 1 / panel_overflow, + }; + } + } + private class ResetScrollContainer : Container { private readonly Action onHoverAction; From 34ffbcf2ae66065e3ceeef69597e81ce6593934d Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 24 Jan 2020 10:24:44 +0300 Subject: [PATCH 0968/1829] Adjust xmldoc --- osu.Game/Overlays/TabControlOverlayHeader.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/TabControlOverlayHeader.cs b/osu.Game/Overlays/TabControlOverlayHeader.cs index 0837bf0db4..d5017fb4d7 100644 --- a/osu.Game/Overlays/TabControlOverlayHeader.cs +++ b/osu.Game/Overlays/TabControlOverlayHeader.cs @@ -14,9 +14,9 @@ using osuTK; namespace osu.Game.Overlays { /// - /// which contains . + /// An overlay header which contains a . /// - /// The type of item to be represented by tabs in . + /// The type of item to be represented by tabs. public abstract class TabControlOverlayHeader : OverlayHeader { protected OsuTabControl TabControl; From f9a54dfb1dc59a9e85cec3ccb1c63e46361ea911 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 24 Jan 2020 16:23:41 +0900 Subject: [PATCH 0969/1829] Tidy up implementation and show on returning with new song --- osu.Game/Screens/Menu/MainMenu.cs | 50 +++++++++++++---------------- osu.Game/Screens/Menu/SongTicker.cs | 7 ++-- 2 files changed, 25 insertions(+), 32 deletions(-) diff --git a/osu.Game/Screens/Menu/MainMenu.cs b/osu.Game/Screens/Menu/MainMenu.cs index 2de31cf399..27b87e4fa5 100644 --- a/osu.Game/Screens/Menu/MainMenu.cs +++ b/osu.Game/Screens/Menu/MainMenu.cs @@ -78,27 +78,6 @@ namespace osu.Game.Screens.Menu holdDelay = config.GetBindable(OsuSetting.UIHoldActivationDelay); loginDisplayed = statics.GetBindable(Static.LoginOverlayDisplayed); - AddInternal(songTicker = new SongTicker - { - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - Margin = new MarginPadding { Right = 15, Top = 5 } - }); - - if (host.CanExit) - { - AddInternal(exitConfirmOverlay = new ExitConfirmOverlay - { - Action = () => - { - if (holdDelay.Value > 0) - confirmAndExit(); - else - this.Exit(); - } - }); - } - AddRangeInternal(new Drawable[] { buttonsContainer = new ParallaxContainer @@ -117,8 +96,28 @@ namespace osu.Game.Screens.Menu } }, sideFlashes = new MenuSideFlashes(), + songTicker = new SongTicker + { + Anchor = Anchor.TopRight, + Origin = Anchor.TopRight, + Margin = new MarginPadding { Right = 15, Top = 5 } + } }); + if (host.CanExit) + { + AddInternal(exitConfirmOverlay = new ExitConfirmOverlay + { + Action = () => + { + if (holdDelay.Value > 0) + confirmAndExit(); + else + this.Exit(); + } + }); + } + buttons.StateChanged += state => { switch (state) @@ -236,9 +235,6 @@ namespace osu.Game.Screens.Menu buttons.State = ButtonSystemState.EnteringMode; - songTicker.FadeOut(100, Easing.OutQuint); - songTicker.AllowUpdates = false; - this.FadeOut(FADE_OUT_DURATION, Easing.InSine); buttonsContainer.MoveTo(new Vector2(-800, 0), FADE_OUT_DURATION, Easing.InSine); @@ -249,8 +245,6 @@ namespace osu.Game.Screens.Menu { base.OnResuming(last); - songTicker.AllowUpdates = true; - (Background as BackgroundScreenDefault)?.Next(); //we may have consumed our preloaded instance, so let's make another. @@ -277,8 +271,10 @@ namespace osu.Game.Screens.Menu } buttons.State = ButtonSystemState.Exit; - this.FadeOut(3000); + songTicker.Hide(); + + this.FadeOut(3000); return base.OnExiting(next); } diff --git a/osu.Game/Screens/Menu/SongTicker.cs b/osu.Game/Screens/Menu/SongTicker.cs index f858d162d2..c3569b7ccb 100644 --- a/osu.Game/Screens/Menu/SongTicker.cs +++ b/osu.Game/Screens/Menu/SongTicker.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// 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; @@ -17,8 +17,6 @@ namespace osu.Game.Screens.Menu { private const int fade_duration = 800; - public bool AllowUpdates { get; set; } = true; - [Resolved] private Bindable beatmap { get; set; } @@ -58,8 +56,7 @@ namespace osu.Game.Screens.Menu private void onBeatmapChanged(ValueChangedEvent working) { - if (!AllowUpdates) - return; + var metadata = beatmap.Value.Metadata; var metadata = working.NewValue.Metadata; From 6f44f8a1ad0a64a142043ea97eb806836519df76 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 24 Jan 2020 16:27:49 +0900 Subject: [PATCH 0970/1829] Ensure only run once when not current screen --- osu.Game/Screens/Menu/SongTicker.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/osu.Game/Screens/Menu/SongTicker.cs b/osu.Game/Screens/Menu/SongTicker.cs index c3569b7ccb..4323d639c4 100644 --- a/osu.Game/Screens/Menu/SongTicker.cs +++ b/osu.Game/Screens/Menu/SongTicker.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// 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; @@ -22,6 +22,8 @@ namespace osu.Game.Screens.Menu private readonly OsuSpriteText title, artist; + public override bool IsPresent => base.IsPresent || Scheduler.HasPendingTasks; + public SongTicker() { AutoSizeAxes = Axes.Both; @@ -51,19 +53,20 @@ namespace osu.Game.Screens.Menu protected override void LoadComplete() { base.LoadComplete(); - beatmap.BindValueChanged(onBeatmapChanged); + + beatmap.BindValueChanged(_ => Scheduler.AddOnce(show), true); } - private void onBeatmapChanged(ValueChangedEvent working) + private void show() { var metadata = beatmap.Value.Metadata; - var metadata = working.NewValue.Metadata; - title.Text = new LocalisedString((metadata.TitleUnicode, metadata.Title)); artist.Text = new LocalisedString((metadata.ArtistUnicode, metadata.Artist)); - this.FadeIn(fade_duration, Easing.OutQuint).Delay(4000).Then().FadeOut(fade_duration, Easing.OutQuint); + this.FadeInFromZero(fade_duration) + .Delay(4000) + .Then().FadeOut(fade_duration); } } } From 738980e3f76f8e2ddfbeab90fb40d1109e49c689 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 24 Jan 2020 10:31:47 +0300 Subject: [PATCH 0971/1829] Refactor OsuTabControl.AccentColour --- .../Graphics/UserInterface/OsuTabControl.cs | 30 ++++++++----------- osu.Game/Overlays/OverlayTabControl.cs | 6 ++-- 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/OsuTabControl.cs b/osu.Game/Graphics/UserInterface/OsuTabControl.cs index c0129c921e..deffa863dd 100644 --- a/osu.Game/Graphics/UserInterface/OsuTabControl.cs +++ b/osu.Game/Graphics/UserInterface/OsuTabControl.cs @@ -22,12 +22,20 @@ namespace osu.Game.Graphics.UserInterface { public class OsuTabControl : TabControl { - private readonly Bindable accentColour = new Bindable(); + protected readonly Bindable AccentColourBindable = new Bindable(); public Color4 AccentColour { - get => accentColour.Value; - set => accentColour.Value = value; + get => AccentColourBindable.Value; + set + { + AccentColourBindable.Value = value; + + if (Dropdown is IHasAccentColour dropdown) + dropdown.AccentColour = value; + foreach (var i in TabContainer.Children.OfType()) + i.AccentColour = value; + } } private readonly Box strip; @@ -67,24 +75,10 @@ namespace osu.Game.Graphics.UserInterface [BackgroundDependencyLoader] private void load(OsuColour colours) { - if (accentColour.Value == default) + if (AccentColour == default) AccentColour = colours.Blue; } - protected override void LoadComplete() - { - base.LoadComplete(); - accentColour.BindValueChanged(OnAccentColourChanged, true); - } - - protected virtual void OnAccentColourChanged(ValueChangedEvent colour) - { - if (Dropdown is IHasAccentColour dropdown) - dropdown.AccentColour = colour.NewValue; - foreach (var i in TabContainer.Children.OfType()) - i.AccentColour = colour.NewValue; - } - public Color4 StripColour { get => strip.Colour; diff --git a/osu.Game/Overlays/OverlayTabControl.cs b/osu.Game/Overlays/OverlayTabControl.cs index 72977d6bff..e8ef05f473 100644 --- a/osu.Game/Overlays/OverlayTabControl.cs +++ b/osu.Game/Overlays/OverlayTabControl.cs @@ -37,10 +37,10 @@ namespace osu.Game.Overlays }); } - protected override void OnAccentColourChanged(ValueChangedEvent colour) + protected override void LoadComplete() { - base.OnAccentColourChanged(colour); - bar.Colour = colour.NewValue; + base.LoadComplete(); + AccentColourBindable.BindValueChanged(colour => bar.Colour = colour.NewValue, true); } protected override Dropdown CreateDropdown() => null; From 7495cfa0a95dc4e8e54af3b11c9d299422114d7f Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 24 Jan 2020 16:32:31 +0900 Subject: [PATCH 0972/1829] Add a test scene You have to have a test scene You have to have a test scene You have to have a test scene You have to have a test scene You have to have a test scene You have to have a test scene You have to have a test scene You have to have a test scene You have to have a test scene You have to have a test scene You have to have a test scene You have to have a test scene You have to have a test scene --- .../Visual/Menus/TestSceneSongTicker.cs | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 osu.Game.Tests/Visual/Menus/TestSceneSongTicker.cs diff --git a/osu.Game.Tests/Visual/Menus/TestSceneSongTicker.cs b/osu.Game.Tests/Visual/Menus/TestSceneSongTicker.cs new file mode 100644 index 0000000000..d7f23f5cc0 --- /dev/null +++ b/osu.Game.Tests/Visual/Menus/TestSceneSongTicker.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.Allocation; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Overlays; +using osu.Game.Screens.Menu; + +namespace osu.Game.Tests.Visual.Menus +{ + public class TestSceneSongTicker : OsuTestScene + { + [Cached] + private MusicController musicController = new MusicController(); + + public TestSceneSongTicker() + { + AddRange(new Drawable[] + { + musicController, + new SongTicker + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + }, + new NowPlayingOverlay + { + Origin = Anchor.TopRight, + Anchor = Anchor.TopRight, + State = { Value = Visibility.Visible } + } + }); + } + } +} From 827f48c29bc8a512a1807b9e010899a0f7172c8e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 24 Jan 2020 16:32:39 +0900 Subject: [PATCH 0973/1829] Adjust fade --- osu.Game/Screens/Menu/SongTicker.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Menu/SongTicker.cs b/osu.Game/Screens/Menu/SongTicker.cs index 4323d639c4..c4943e77d5 100644 --- a/osu.Game/Screens/Menu/SongTicker.cs +++ b/osu.Game/Screens/Menu/SongTicker.cs @@ -64,7 +64,7 @@ namespace osu.Game.Screens.Menu title.Text = new LocalisedString((metadata.TitleUnicode, metadata.Title)); artist.Text = new LocalisedString((metadata.ArtistUnicode, metadata.Artist)); - this.FadeInFromZero(fade_duration) + this.FadeInFromZero(fade_duration / 2f) .Delay(4000) .Then().FadeOut(fade_duration); } From 1d549a0c8aaa817bd3347bdc9160e941f021ac03 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 24 Jan 2020 10:46:27 +0300 Subject: [PATCH 0974/1829] Remove unused using --- osu.Game/Overlays/OverlayTabControl.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Overlays/OverlayTabControl.cs b/osu.Game/Overlays/OverlayTabControl.cs index e8ef05f473..619729acae 100644 --- a/osu.Game/Overlays/OverlayTabControl.cs +++ b/osu.Game/Overlays/OverlayTabControl.cs @@ -1,7 +1,6 @@ // 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.Shapes; using osu.Framework.Graphics.UserInterface; From f9e93e2a6ae041f0a956f82aaa0768e9cb601a12 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 24 Jan 2020 16:34:13 +0900 Subject: [PATCH 0975/1829] Fix regressed input handling order --- osu.Game/Screens/Menu/MainMenu.cs | 33 ++++++++++++++++--------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/osu.Game/Screens/Menu/MainMenu.cs b/osu.Game/Screens/Menu/MainMenu.cs index 27b87e4fa5..b03febce31 100644 --- a/osu.Game/Screens/Menu/MainMenu.cs +++ b/osu.Game/Screens/Menu/MainMenu.cs @@ -78,7 +78,21 @@ namespace osu.Game.Screens.Menu holdDelay = config.GetBindable(OsuSetting.UIHoldActivationDelay); loginDisplayed = statics.GetBindable(Static.LoginOverlayDisplayed); - AddRangeInternal(new Drawable[] + if (host.CanExit) + { + AddInternal(exitConfirmOverlay = new ExitConfirmOverlay + { + Action = () => + { + if (holdDelay.Value > 0) + confirmAndExit(); + else + this.Exit(); + } + }); + } + + AddRangeInternal(new[] { buttonsContainer = new ParallaxContainer { @@ -101,23 +115,10 @@ namespace osu.Game.Screens.Menu Anchor = Anchor.TopRight, Origin = Anchor.TopRight, Margin = new MarginPadding { Right = 15, Top = 5 } - } + }, + exitConfirmOverlay.CreateProxy() }); - if (host.CanExit) - { - AddInternal(exitConfirmOverlay = new ExitConfirmOverlay - { - Action = () => - { - if (holdDelay.Value > 0) - confirmAndExit(); - else - this.Exit(); - } - }); - } - buttons.StateChanged += state => { switch (state) From 28727bbafd1c7e5e3fb3bd2aabf73d47e900f24e Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 24 Jan 2020 17:30:37 +0900 Subject: [PATCH 0976/1829] Fix crash when deselecting via ctrl+click --- .../Edit/Compose/Components/BlueprintContainer.cs | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index 23f62e4eaf..165fc93b9e 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -110,7 +110,6 @@ namespace osu.Game.Screens.Edit.Compose.Components protected override bool OnMouseDown(MouseDownEvent e) { beginClickSelection(e); - prepareSelectionMovement(); return e.Button == MouseButton.Left; @@ -356,21 +355,19 @@ namespace osu.Game.Screens.Edit.Compose.Components /// /// Attempts to begin the movement of any selected blueprints. /// - /// Whether movement began. - private bool prepareSelectionMovement() + private void prepareSelectionMovement() { - Debug.Assert(movementBlueprint == null); + if (!selectionHandler.SelectedBlueprints.Any()) + return; // Any selected blueprint that is hovered can begin the movement of the group, however only the earliest hitobject is used for movement // A special case is added for when a click selection occurred before the drag if (!clickSelectionBegan && !selectionHandler.SelectedBlueprints.Any(b => b.IsHovered)) - return false; + return; // Movement is tracked from the blueprint of the earliest hitobject, since it only makes sense to distance snap from that hitobject movementBlueprint = selectionHandler.SelectedBlueprints.OrderBy(b => b.HitObject.StartTime).First(); movementBlueprintOriginalPosition = movementBlueprint.SelectionPoint; // todo: unsure if correct - - return true; } /// From 6fc6a376ee285700940fcfbebac3da349e312d99 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 24 Jan 2020 17:50:09 +0900 Subject: [PATCH 0977/1829] Fix incorrect slider selection point --- .../Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs index 4fdead512a..c18b3b0ff3 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs @@ -170,7 +170,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders new OsuMenuItem("Add control point", MenuItemType.Standard, () => addControlPoint(rightClickPosition)), }; - public override Vector2 SelectionPoint => HeadBlueprint.SelectionPoint; + public override Vector2 SelectionPoint => ((DrawableSlider)DrawableObject).HeadCircle.ScreenSpaceDrawQuad.Centre; public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => BodyPiece.ReceivePositionalInputAt(screenSpacePos); From 811ddb02a4bca157bcb17b5fee4adbeb11415fd0 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 24 Jan 2020 17:50:36 +0900 Subject: [PATCH 0978/1829] General refactoring --- .../Blueprints/Sliders/SliderCircleSelectionBlueprint.cs | 1 + .../Visual/Editor/TestSceneTimelineBlueprintContainer.cs | 2 +- .../Screens/Edit/Compose/Components/BlueprintContainer.cs | 6 +++--- .../Components/Timeline/TimelineBlueprintContainer.cs | 6 +++--- osu.Game/Screens/Edit/Compose/ComposeScreen.cs | 2 +- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderCircleSelectionBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderCircleSelectionBlueprint.cs index f09279ed73..a0392fe536 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderCircleSelectionBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderCircleSelectionBlueprint.cs @@ -17,6 +17,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders : base(slider) { this.position = position; + InternalChild = CirclePiece = new HitCirclePiece(); Select(); diff --git a/osu.Game.Tests/Visual/Editor/TestSceneTimelineBlueprintContainer.cs b/osu.Game.Tests/Visual/Editor/TestSceneTimelineBlueprintContainer.cs index 34bf671eba..e7b2508ac7 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneTimelineBlueprintContainer.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneTimelineBlueprintContainer.cs @@ -58,7 +58,7 @@ namespace osu.Game.Tests.Visual.Editor }, new TimelineArea { - Child = new TimelineBlueprintContainer(editorBeatmap), + Child = new TimelineBlueprintContainer(), Anchor = Anchor.Centre, Origin = Anchor.Centre, RelativeSizeAxes = Axes.X, diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index 165fc93b9e..6b21f56567 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -83,9 +83,6 @@ namespace osu.Game.Screens.Edit.Compose.Components }; } - protected virtual Container CreateSelectionBlueprintContainer() => - new Container { RelativeSizeAxes = Axes.Both }; - protected override void LoadComplete() { base.LoadComplete(); @@ -94,6 +91,9 @@ namespace osu.Game.Screens.Edit.Compose.Components beatmap.HitObjectRemoved += removeBlueprintFor; } + protected virtual Container CreateSelectionBlueprintContainer() => + new Container { RelativeSizeAxes = Axes.Both }; + /// /// Creates a which outlines s and handles movement of selections. /// diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs index 6bfd323c13..3b9cb1df24 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs @@ -23,7 +23,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline private DragEvent lastDragEvent; - public TimelineBlueprintContainer(EditorBeatmap beatmap) + public TimelineBlueprintContainer() { RelativeSizeAxes = Axes.Both; Anchor = Anchor.Centre; @@ -39,14 +39,14 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline }); } - protected override Container CreateSelectionBlueprintContainer() => new TimelineSelectionBlueprintContainer { RelativeSizeAxes = Axes.Both }; - protected override void LoadComplete() { base.LoadComplete(); DragBox.Alpha = 0; } + protected override Container CreateSelectionBlueprintContainer() => new TimelineSelectionBlueprintContainer { RelativeSizeAxes = Axes.Both }; + protected override void OnDrag(DragEvent e) { if (timeline != null) diff --git a/osu.Game/Screens/Edit/Compose/ComposeScreen.cs b/osu.Game/Screens/Edit/Compose/ComposeScreen.cs index 20e1ef95d3..cdea200e10 100644 --- a/osu.Game/Screens/Edit/Compose/ComposeScreen.cs +++ b/osu.Game/Screens/Edit/Compose/ComposeScreen.cs @@ -32,6 +32,6 @@ namespace osu.Game.Screens.Edit.Compose return beatmapSkinProvider.WithChild(rulesetSkinProvider.WithChild(composer)); } - protected override Drawable CreateTimelineContent() => composer == null ? base.CreateTimelineContent() : new TimelineBlueprintContainer(EditorBeatmap); + protected override Drawable CreateTimelineContent() => composer == null ? base.CreateTimelineContent() : new TimelineBlueprintContainer(); } } From 027778acc1dff50fcfd04ff116f0b94daf732a25 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 24 Jan 2020 17:51:24 +0900 Subject: [PATCH 0979/1829] Fix slider circles not being selected by default --- osu.Game/Rulesets/Edit/SelectionBlueprint.cs | 39 ++++++++++++-------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/osu.Game/Rulesets/Edit/SelectionBlueprint.cs b/osu.Game/Rulesets/Edit/SelectionBlueprint.cs index 9998254f76..a972d28480 100644 --- a/osu.Game/Rulesets/Edit/SelectionBlueprint.cs +++ b/osu.Game/Rulesets/Edit/SelectionBlueprint.cs @@ -41,14 +41,15 @@ namespace osu.Game.Rulesets.Edit protected SelectionBlueprint(HitObject hitObject) { HitObject = hitObject; + RelativeSizeAxes = Axes.Both; + AlwaysPresent = true; } - [BackgroundDependencyLoader] - private void load() + protected override void LoadComplete() { - OnDeselected(); - AlwaysPresent = true; + base.LoadComplete(); + updateState(); } private SelectionState state; @@ -65,23 +66,29 @@ namespace osu.Game.Rulesets.Edit state = value; - switch (state) - { - case SelectionState.Selected: - OnSelected(); - Selected?.Invoke(this); - break; - - case SelectionState.NotSelected: - OnDeselected(); - Deselected?.Invoke(this); - break; - } + if (IsLoaded) + updateState(); StateChanged?.Invoke(state); } } + private void updateState() + { + switch (state) + { + case SelectionState.Selected: + OnSelected(); + Selected?.Invoke(this); + break; + + case SelectionState.NotSelected: + OnDeselected(); + Deselected?.Invoke(this); + break; + } + } + protected virtual void OnDeselected() => Hide(); protected virtual void OnSelected() => Show(); From db4cd51d020cc768d5131d5e1f47456d47cead94 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 24 Jan 2020 12:24:35 +0300 Subject: [PATCH 0980/1829] Implement OverlayColourProvider --- osu.Game/Graphics/OsuColour.cs | 51 ----------- osu.Game/Overlays/BeatmapSetOverlay.cs | 1 + osu.Game/Overlays/ChangelogOverlay.cs | 5 ++ osu.Game/Overlays/DirectOverlay.cs | 1 + osu.Game/Overlays/FullscreenOverlay.cs | 17 +++- osu.Game/Overlays/NewsOverlay.cs | 5 ++ osu.Game/Overlays/OverlayColourProvider.cs | 90 +++++++++++++++++++ osu.Game/Overlays/RankingsOverlay.cs | 1 + .../SearchableList/SearchableListOverlay.cs | 8 +- osu.Game/Overlays/SocialOverlay.cs | 1 + osu.Game/Overlays/UserProfileOverlay.cs | 5 ++ 11 files changed, 132 insertions(+), 53 deletions(-) create mode 100644 osu.Game/Overlays/OverlayColourProvider.cs diff --git a/osu.Game/Graphics/OsuColour.cs b/osu.Game/Graphics/OsuColour.cs index 53a40f5613..c8298543a1 100644 --- a/osu.Game/Graphics/OsuColour.cs +++ b/osu.Game/Graphics/OsuColour.cs @@ -3,7 +3,6 @@ using System; using osu.Game.Beatmaps; -using osuTK; using osuTK.Graphics; namespace osu.Game.Graphics @@ -78,46 +77,6 @@ namespace osu.Game.Graphics } } - public Color4 ForOverlayElement(OverlayColourScheme colourScheme, float saturation, float lightness, float opacity = 1) => Color4.FromHsl(new Vector4(getBaseHue(colourScheme), saturation, lightness, opacity)); - - // See https://github.com/ppy/osu-web/blob/4218c288292d7c810b619075471eaea8bbb8f9d8/app/helpers.php#L1463 - private static float getBaseHue(OverlayColourScheme colourScheme) - { - float hue; - - switch (colourScheme) - { - default: - throw new ArgumentException($@"{colourScheme} colour scheme does not provide a hue value in {nameof(getBaseHue)}."); - - case OverlayColourScheme.Red: - hue = 0; - break; - - case OverlayColourScheme.Pink: - hue = 333; - break; - - case OverlayColourScheme.Orange: - hue = 46; - break; - - case OverlayColourScheme.Green: - hue = 115; - break; - - case OverlayColourScheme.Purple: - hue = 255; - break; - - case OverlayColourScheme.Blue: - hue = 200; - break; - } - - return hue / 360f; - } - // See https://github.com/ppy/osu-web/blob/master/resources/assets/less/colors.less public readonly Color4 PurpleLighter = FromHex(@"eeeeff"); public readonly Color4 PurpleLight = FromHex(@"aa88ff"); @@ -220,14 +179,4 @@ namespace osu.Game.Graphics public readonly Color4 ContextMenuGray = FromHex(@"223034"); } - - public enum OverlayColourScheme - { - Red, - Pink, - Orange, - Green, - Purple, - Blue - } } diff --git a/osu.Game/Overlays/BeatmapSetOverlay.cs b/osu.Game/Overlays/BeatmapSetOverlay.cs index 50fb2782d4..e4e928df18 100644 --- a/osu.Game/Overlays/BeatmapSetOverlay.cs +++ b/osu.Game/Overlays/BeatmapSetOverlay.cs @@ -34,6 +34,7 @@ namespace osu.Game.Overlays public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => true; public BeatmapSetOverlay() + : base(OverlayColourScheme.Blue) { OsuScrollContainer scroll; Info info; diff --git a/osu.Game/Overlays/ChangelogOverlay.cs b/osu.Game/Overlays/ChangelogOverlay.cs index 15b0079277..e2186df64c 100644 --- a/osu.Game/Overlays/ChangelogOverlay.cs +++ b/osu.Game/Overlays/ChangelogOverlay.cs @@ -36,6 +36,11 @@ namespace osu.Game.Overlays private List streams; + public ChangelogOverlay() + : base(OverlayColourScheme.Purple) + { + } + [BackgroundDependencyLoader] private void load(AudioManager audio, OsuColour colour) { diff --git a/osu.Game/Overlays/DirectOverlay.cs b/osu.Game/Overlays/DirectOverlay.cs index 9daf55c796..c718ca7a1e 100644 --- a/osu.Game/Overlays/DirectOverlay.cs +++ b/osu.Game/Overlays/DirectOverlay.cs @@ -84,6 +84,7 @@ namespace osu.Game.Overlays } public DirectOverlay() + : base(OverlayColourScheme.Blue) { // osu!direct colours are not part of the standard palette diff --git a/osu.Game/Overlays/FullscreenOverlay.cs b/osu.Game/Overlays/FullscreenOverlay.cs index 0911ee84de..662188cbfd 100644 --- a/osu.Game/Overlays/FullscreenOverlay.cs +++ b/osu.Game/Overlays/FullscreenOverlay.cs @@ -18,8 +18,12 @@ namespace osu.Game.Overlays [Resolved] protected IAPIProvider API { get; private set; } - protected FullscreenOverlay() + private readonly OverlayColourScheme colourScheme; + + protected FullscreenOverlay(OverlayColourScheme colourScheme) { + this.colourScheme = colourScheme; + Waves.FirstWaveColour = OsuColour.Gray(0.4f); Waves.SecondWaveColour = OsuColour.Gray(0.3f); Waves.ThirdWaveColour = OsuColour.Gray(0.2f); @@ -41,6 +45,17 @@ namespace osu.Game.Overlays }; } + private DependencyContainer dependencies; + + protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent) => + dependencies = new DependencyContainer(base.CreateChildDependencies(parent)); + + [BackgroundDependencyLoader] + private void load() + { + dependencies.Cache(new OverlayColourProvider(colourScheme)); + } + public override void Show() { if (State.Value == Visibility.Visible) diff --git a/osu.Game/Overlays/NewsOverlay.cs b/osu.Game/Overlays/NewsOverlay.cs index e7471cb21d..6dde300556 100644 --- a/osu.Game/Overlays/NewsOverlay.cs +++ b/osu.Game/Overlays/NewsOverlay.cs @@ -21,6 +21,11 @@ namespace osu.Game.Overlays public readonly Bindable Current = new Bindable(null); + public NewsOverlay() + : base(OverlayColourScheme.Purple) + { + } + [BackgroundDependencyLoader] private void load(OsuColour colours) { diff --git a/osu.Game/Overlays/OverlayColourProvider.cs b/osu.Game/Overlays/OverlayColourProvider.cs new file mode 100644 index 0000000000..1223b8d064 --- /dev/null +++ b/osu.Game/Overlays/OverlayColourProvider.cs @@ -0,0 +1,90 @@ +// 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 osuTK; +using osuTK.Graphics; + +namespace osu.Game.Overlays +{ + public class OverlayColourProvider + { + private readonly OverlayColourScheme colourScheme; + + public OverlayColourProvider(OverlayColourScheme colourScheme) + { + this.colourScheme = colourScheme; + } + + private Color4 convert(float saturation, float lightness) => Color4.FromHsl(new Vector4(getBaseHue(colourScheme), saturation, lightness, 1)); + + // See https://github.com/ppy/osu-web/blob/4218c288292d7c810b619075471eaea8bbb8f9d8/app/helpers.php#L1463 + private static float getBaseHue(OverlayColourScheme colourScheme) + { + float hue; + + switch (colourScheme) + { + default: + throw new ArgumentException($@"{colourScheme} colour scheme does not provide a hue value in {nameof(getBaseHue)}."); + + case OverlayColourScheme.Red: + hue = 0; + break; + + case OverlayColourScheme.Pink: + hue = 333; + break; + + case OverlayColourScheme.Orange: + hue = 46; + break; + + case OverlayColourScheme.Green: + hue = 115; + break; + + case OverlayColourScheme.Purple: + hue = 255; + break; + + case OverlayColourScheme.Blue: + hue = 200; + break; + } + + return hue / 360f; + } + + public Color4 Highlight1 => convert(1, 0.7f); + public Color4 Content1 => convert(0.4f, 1); + public Color4 Content2 => convert(0.4f, 0.9f); + public Color4 Link1 => convert(0.4f, 0.8f); + public Color4 Link2 => convert(0.4f, 0.75f); + public Color4 Link3 => convert(0.4f, 0.7f); + public Color4 Link4 => convert(0.4f, 0.5f); + public Color4 Dark1 => convert(0.2f, 0.35f); + public Color4 Dark2 => convert(0.2f, 0.3f); + public Color4 Dark3 => convert(0.2f, 0.25f); + public Color4 Dark4 => convert(0.2f, 0.20f); + public Color4 Dark5 => convert(0.2f, 0.15f); + public Color4 Dark6 => convert(0.2f, 0.1f); + public Color4 Foreground1 => convert(0.1f, 0.6f); + public Color4 Background1 => convert(0.1f, 0.4f); + public Color4 Background2 => convert(0.1f, 0.3f); + public Color4 Background3 => convert(0.1f, 0.25f); + public Color4 Background4 => convert(0.1f, 0.2f); + public Color4 Background5 => convert(0.1f, 0.15f); + public Color4 Background6 => convert(0.1f, 0.1f); + } + + public enum OverlayColourScheme + { + Red, + Pink, + Orange, + Green, + Purple, + Blue + } +} diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index c8874ef891..2297925e5c 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -36,6 +36,7 @@ namespace osu.Game.Overlays private IAPIProvider api { get; set; } public RankingsOverlay() + : base(OverlayColourScheme.Green) { Children = new Drawable[] { diff --git a/osu.Game/Overlays/SearchableList/SearchableListOverlay.cs b/osu.Game/Overlays/SearchableList/SearchableListOverlay.cs index 5975e94ffc..0783c64c20 100644 --- a/osu.Game/Overlays/SearchableList/SearchableListOverlay.cs +++ b/osu.Game/Overlays/SearchableList/SearchableListOverlay.cs @@ -16,6 +16,11 @@ namespace osu.Game.Overlays.SearchableList public abstract class SearchableListOverlay : FullscreenOverlay { public const float WIDTH_PADDING = 80; + + protected SearchableListOverlay(OverlayColourScheme colourScheme) + : base(colourScheme) + { + } } public abstract class SearchableListOverlay : SearchableListOverlay @@ -35,7 +40,8 @@ namespace osu.Game.Overlays.SearchableList protected abstract SearchableListHeader CreateHeader(); protected abstract SearchableListFilterControl CreateFilterControl(); - protected SearchableListOverlay() + protected SearchableListOverlay(OverlayColourScheme colourScheme) + : base(colourScheme) { Children = new Drawable[] { diff --git a/osu.Game/Overlays/SocialOverlay.cs b/osu.Game/Overlays/SocialOverlay.cs index 0c99962def..27bef7145b 100644 --- a/osu.Game/Overlays/SocialOverlay.cs +++ b/osu.Game/Overlays/SocialOverlay.cs @@ -52,6 +52,7 @@ namespace osu.Game.Overlays } public SocialOverlay() + : base(OverlayColourScheme.Pink) { Waves.FirstWaveColour = OsuColour.FromHex(@"cb5fa0"); Waves.SecondWaveColour = OsuColour.FromHex(@"b04384"); diff --git a/osu.Game/Overlays/UserProfileOverlay.cs b/osu.Game/Overlays/UserProfileOverlay.cs index a34fc619a8..07c0dbed43 100644 --- a/osu.Game/Overlays/UserProfileOverlay.cs +++ b/osu.Game/Overlays/UserProfileOverlay.cs @@ -29,6 +29,11 @@ namespace osu.Game.Overlays public const float CONTENT_X_MARGIN = 70; + public UserProfileOverlay() + : base(OverlayColourScheme.Green) + { + } + public void ShowUser(long userId) => ShowUser(new User { Id = userId }); public void ShowUser(User user, bool fetchOnline = true) From e03a085d7071228941d0f1f20fd90d57806fc32c Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 24 Jan 2020 12:33:34 +0300 Subject: [PATCH 0981/1829] Make overlay elements use OverlayColourProvider --- .../Overlays/BreadcrumbControlOverlayHeader.cs | 10 ++-------- osu.Game/Overlays/Changelog/ChangelogHeader.cs | 2 -- osu.Game/Overlays/News/NewsHeader.cs | 1 - osu.Game/Overlays/OverlayColourProvider.cs | 2 +- osu.Game/Overlays/OverlayHeader.cs | 14 +++++--------- osu.Game/Overlays/Profile/ProfileHeader.cs | 1 - osu.Game/Overlays/TabControlOverlayHeader.cs | 9 ++------- 7 files changed, 10 insertions(+), 29 deletions(-) diff --git a/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs b/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs index 2e50c19729..c3f35b4313 100644 --- a/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs +++ b/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs @@ -4,7 +4,6 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.UserInterface; -using osu.Game.Graphics; using osu.Game.Graphics.UserInterface; namespace osu.Game.Overlays @@ -15,15 +14,10 @@ namespace osu.Game.Overlays protected override TabControl CreateTabControl() => BreadcrumbControl = new OverlayHeaderBreadcrumbControl(); - protected BreadcrumbControlOverlayHeader(OverlayColourScheme colourScheme) - : base(colourScheme) - { - } - [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - BreadcrumbControl.AccentColour = colours.ForOverlayElement(ColourScheme, 1, 0.75f); + BreadcrumbControl.AccentColour = colourProvider.Highlight1; } public class OverlayHeaderBreadcrumbControl : BreadcrumbControl diff --git a/osu.Game/Overlays/Changelog/ChangelogHeader.cs b/osu.Game/Overlays/Changelog/ChangelogHeader.cs index d5e0890b4d..70a45f2667 100644 --- a/osu.Game/Overlays/Changelog/ChangelogHeader.cs +++ b/osu.Game/Overlays/Changelog/ChangelogHeader.cs @@ -9,7 +9,6 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Textures; -using osu.Game.Graphics; using osu.Game.Graphics.UserInterface; using osu.Game.Online.API.Requests.Responses; @@ -26,7 +25,6 @@ namespace osu.Game.Overlays.Changelog private const string listing_string = "listing"; public ChangelogHeader() - : base(OverlayColourScheme.Purple) { BreadcrumbControl.AddItem(listing_string); BreadcrumbControl.Current.ValueChanged += e => diff --git a/osu.Game/Overlays/News/NewsHeader.cs b/osu.Game/Overlays/News/NewsHeader.cs index 03dc64b3bd..457c5a19ba 100644 --- a/osu.Game/Overlays/News/NewsHeader.cs +++ b/osu.Game/Overlays/News/NewsHeader.cs @@ -23,7 +23,6 @@ namespace osu.Game.Overlays.News public Action ShowFrontPage; public NewsHeader() - : base(OverlayColourScheme.Purple) { BreadcrumbControl.AddItem(front_page_string); diff --git a/osu.Game/Overlays/OverlayColourProvider.cs b/osu.Game/Overlays/OverlayColourProvider.cs index 1223b8d064..e92a231bc1 100644 --- a/osu.Game/Overlays/OverlayColourProvider.cs +++ b/osu.Game/Overlays/OverlayColourProvider.cs @@ -66,7 +66,7 @@ namespace osu.Game.Overlays public Color4 Dark1 => convert(0.2f, 0.35f); public Color4 Dark2 => convert(0.2f, 0.3f); public Color4 Dark3 => convert(0.2f, 0.25f); - public Color4 Dark4 => convert(0.2f, 0.20f); + public Color4 Dark4 => convert(0.2f, 0.2f); public Color4 Dark5 => convert(0.2f, 0.15f); public Color4 Dark6 => convert(0.2f, 0.1f); public Color4 Foreground1 => convert(0.1f, 0.6f); diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index c9547bb5b8..2578f6a3bd 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -25,12 +25,8 @@ namespace osu.Game.Overlays set => background.Height = value; } - protected OverlayColourScheme ColourScheme { get; } - - protected OverlayHeader(OverlayColourScheme colourScheme) + protected OverlayHeader() { - ColourScheme = colourScheme; - RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; @@ -89,11 +85,11 @@ namespace osu.Game.Overlays } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - titleBackground.Colour = colours.ForOverlayElement(ColourScheme, 0.2f, 0.15f); - title.AccentColour = colours.ForOverlayElement(ColourScheme, 1, 0.7f); - controlBackground.Colour = colours.ForOverlayElement(ColourScheme, 0.2f, 0.2f); + titleBackground.Colour = colourProvider.Dark5; + title.AccentColour = colourProvider.Highlight1; + controlBackground.Colour = colourProvider.Dark4; } protected abstract Drawable CreateBackground(); diff --git a/osu.Game/Overlays/Profile/ProfileHeader.cs b/osu.Game/Overlays/Profile/ProfileHeader.cs index b550d7d823..f8eb03770a 100644 --- a/osu.Game/Overlays/Profile/ProfileHeader.cs +++ b/osu.Game/Overlays/Profile/ProfileHeader.cs @@ -24,7 +24,6 @@ namespace osu.Game.Overlays.Profile private DetailHeaderContainer detailHeaderContainer; public ProfileHeader() - : base(OverlayColourScheme.Green) { BackgroundHeight = 150; diff --git a/osu.Game/Overlays/TabControlOverlayHeader.cs b/osu.Game/Overlays/TabControlOverlayHeader.cs index 8f3aa896ee..0c55b8383b 100644 --- a/osu.Game/Overlays/TabControlOverlayHeader.cs +++ b/osu.Game/Overlays/TabControlOverlayHeader.cs @@ -16,15 +16,10 @@ namespace osu.Game.Overlays protected override TabControl CreateTabControl() => TabControl = new OverlayHeaderTabControl(); - protected TabControlOverlayHeader(OverlayColourScheme colourScheme) - : base(colourScheme) - { - } - [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - TabControl.AccentColour = colours.ForOverlayElement(ColourScheme, 1, 0.75f); + TabControl.AccentColour = colourProvider.Highlight1; } public class OverlayHeaderTabControl : OverlayTabControl From 59ff3aa800648663d6c30a7db6632380866d9290 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 24 Jan 2020 12:42:48 +0300 Subject: [PATCH 0982/1829] Fix tests --- osu.Game.Tests/Visual/Online/TestSceneFullscreenOverlay.cs | 1 + osu.Game.Tests/Visual/Online/TestSceneUserProfileHeader.cs | 3 +++ 2 files changed, 4 insertions(+) diff --git a/osu.Game.Tests/Visual/Online/TestSceneFullscreenOverlay.cs b/osu.Game.Tests/Visual/Online/TestSceneFullscreenOverlay.cs index fe8437be17..e60adcee34 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneFullscreenOverlay.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneFullscreenOverlay.cs @@ -41,6 +41,7 @@ namespace osu.Game.Tests.Visual.Online private class TestFullscreenOverlay : FullscreenOverlay { public TestFullscreenOverlay() + : base(OverlayColourScheme.Pink) { Children = new Drawable[] { diff --git a/osu.Game.Tests/Visual/Online/TestSceneUserProfileHeader.cs b/osu.Game.Tests/Visual/Online/TestSceneUserProfileHeader.cs index 63b46c991f..f825e4f1e9 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneUserProfileHeader.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneUserProfileHeader.cs @@ -31,6 +31,9 @@ namespace osu.Game.Tests.Visual.Online typeof(ProfileHeaderButton) }; + [Cached] + private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Green); + [Resolved] private IAPIProvider api { get; set; } From d9af43da4c231e21f03ddadd2a541aa3d1a55132 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 24 Jan 2020 12:55:51 +0300 Subject: [PATCH 0983/1829] Remove unused usings --- osu.Game/Overlays/News/NewsHeader.cs | 1 - osu.Game/Overlays/OverlayHeader.cs | 1 - 2 files changed, 2 deletions(-) diff --git a/osu.Game/Overlays/News/NewsHeader.cs b/osu.Game/Overlays/News/NewsHeader.cs index 457c5a19ba..1152d9044b 100644 --- a/osu.Game/Overlays/News/NewsHeader.cs +++ b/osu.Game/Overlays/News/NewsHeader.cs @@ -6,7 +6,6 @@ using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Textures; -using osu.Game.Graphics; using osu.Game.Graphics.UserInterface; using System; diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index 2578f6a3bd..bc58a17401 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -7,7 +7,6 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.UserInterface; -using osu.Game.Graphics; using osu.Game.Graphics.UserInterface; using osuTK.Graphics; From 9e0e7be8d09b2c8d449a7ebb138e8c4e90a8c6bb Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 24 Jan 2020 18:57:17 +0900 Subject: [PATCH 0984/1829] Modernise filter implementation --- osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs | 2 +- osu.Game/Screens/Select/FilterControl.cs | 10 +++++++--- osu.Game/Screens/Select/FilterCriteria.cs | 3 +-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs b/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs index d50154485a..2ffb73f226 100644 --- a/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs +++ b/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs @@ -44,7 +44,7 @@ namespace osu.Game.Screens.Select.Carousel match &= !criteria.Artist.HasFilter || criteria.Artist.Matches(Beatmap.Metadata.Artist) || criteria.Artist.Matches(Beatmap.Metadata.ArtistUnicode); - match &= Beatmap.StarDifficulty >= criteria.DisplayStarsMinimum && Beatmap.StarDifficulty <= criteria.DisplayStarsMaximum; + match &= !criteria.UserStarDifficulty.HasFilter || criteria.UserStarDifficulty.IsInRange(Beatmap.StarDifficulty); if (match) { diff --git a/osu.Game/Screens/Select/FilterControl.cs b/osu.Game/Screens/Select/FilterControl.cs index 88a48a54fc..c851b201d7 100644 --- a/osu.Game/Screens/Select/FilterControl.cs +++ b/osu.Game/Screens/Select/FilterControl.cs @@ -42,11 +42,15 @@ namespace osu.Game.Screens.Select Group = groupMode.Value, Sort = sortMode.Value, AllowConvertedBeatmaps = showConverted.Value, - Ruleset = ruleset.Value - DisplayStarsMinimum = minimumStars, - DisplayStarsMaximum = maximumStars, + Ruleset = ruleset.Value, }; + if (!minimumStars.IsDefault) + criteria.UserStarDifficulty.Min = minimumStars.Value; + + if (!maximumStars.IsDefault) + criteria.UserStarDifficulty.Max = maximumStars.Value; + FilterQueryParser.ApplyQueries(criteria, query); return criteria; } diff --git a/osu.Game/Screens/Select/FilterCriteria.cs b/osu.Game/Screens/Select/FilterCriteria.cs index fb41c1d09a..27d9adc386 100644 --- a/osu.Game/Screens/Select/FilterCriteria.cs +++ b/osu.Game/Screens/Select/FilterCriteria.cs @@ -25,13 +25,12 @@ namespace osu.Game.Screens.Select public OptionalRange OnlineStatus; public OptionalTextFilter Creator; public OptionalTextFilter Artist; + public OptionalRange UserStarDifficulty; public string[] SearchTerms = Array.Empty(); public RulesetInfo Ruleset; public bool AllowConvertedBeatmaps; - public double DisplayStarsMinimum; - public double DisplayStarsMaximum; private string searchText; From 62fa619ad43fc9161f9a733ff2a9d6d057817b75 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 24 Jan 2020 19:08:14 +0900 Subject: [PATCH 0985/1829] Display "no limit" for maximum stars --- .../Settings/Sections/Gameplay/SongSelectSettings.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs b/osu.Game/Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs index a5f56ae76e..78f12c0695 100644 --- a/osu.Game/Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs @@ -34,7 +34,7 @@ namespace osu.Game.Overlays.Settings.Sections.Gameplay KeyboardStep = 0.1f, Keywords = new[] { "star", "difficulty" } }, - new SettingsSlider + new SettingsSlider { LabelText = "up to", Bindable = config.GetBindable(OsuSetting.DisplayStarsMaximum), @@ -49,6 +49,11 @@ namespace osu.Game.Overlays.Settings.Sections.Gameplay }; } + private class MaximumStarsSlider : StarSlider + { + public override string TooltipText => Current.IsDefault ? "no limit" : base.TooltipText; + } + private class StarSlider : OsuSliderBar { public override string TooltipText => Current.Value.ToString(@"0.## stars"); From 2643b6fca3b1d3695bcb53731c81b9cc4dfb2e73 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 24 Jan 2020 19:12:48 +0900 Subject: [PATCH 0986/1829] Add additional keywods --- .../Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs b/osu.Game/Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs index 78f12c0695..b01aa1e297 100644 --- a/osu.Game/Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs @@ -32,14 +32,14 @@ namespace osu.Game.Overlays.Settings.Sections.Gameplay LabelText = "Display beatmaps from", Bindable = config.GetBindable(OsuSetting.DisplayStarsMinimum), KeyboardStep = 0.1f, - Keywords = new[] { "star", "difficulty" } + Keywords = new[] { "minimum", "star", "difficulty" } }, new SettingsSlider { LabelText = "up to", Bindable = config.GetBindable(OsuSetting.DisplayStarsMaximum), KeyboardStep = 0.1f, - Keywords = new[] { "star", "difficulty" } + Keywords = new[] { "maximum", "star", "difficulty" } }, new SettingsEnumDropdown { From ed66ee3ba6904beb011a885e3266dd47f6d81aae Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 24 Jan 2020 19:12:56 +0900 Subject: [PATCH 0987/1829] Allow 10.0 stars to be selectable --- osu.Game/Configuration/OsuConfigManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Configuration/OsuConfigManager.cs b/osu.Game/Configuration/OsuConfigManager.cs index 7e4ab58e36..4155381790 100644 --- a/osu.Game/Configuration/OsuConfigManager.cs +++ b/osu.Game/Configuration/OsuConfigManager.cs @@ -24,7 +24,7 @@ namespace osu.Game.Configuration Set(OsuSetting.ShowConvertedBeatmaps, true); Set(OsuSetting.DisplayStarsMinimum, 0.0, 0, 10, 0.1); - Set(OsuSetting.DisplayStarsMaximum, 10.0, 0, 10, 0.1); + Set(OsuSetting.DisplayStarsMaximum, 10.1, 0, 10.1, 0.1); Set(OsuSetting.SongSelectGroupingMode, GroupMode.All); Set(OsuSetting.SongSelectSortingMode, SortMode.Title); From 45a25214ab401b73c5f55e8aa6aefa614fe8c8db Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 24 Jan 2020 19:39:21 +0900 Subject: [PATCH 0988/1829] Make upper and lower bounds inclusive --- osu.Game/Screens/Select/FilterCriteria.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Select/FilterCriteria.cs b/osu.Game/Screens/Select/FilterCriteria.cs index 27d9adc386..9fa57af01d 100644 --- a/osu.Game/Screens/Select/FilterCriteria.cs +++ b/osu.Game/Screens/Select/FilterCriteria.cs @@ -25,7 +25,12 @@ namespace osu.Game.Screens.Select public OptionalRange OnlineStatus; public OptionalTextFilter Creator; public OptionalTextFilter Artist; - public OptionalRange UserStarDifficulty; + + public OptionalRange UserStarDifficulty = new OptionalRange + { + IsLowerInclusive = true, + IsUpperInclusive = true + }; public string[] SearchTerms = Array.Empty(); From bb390b4470df1e5c6536da9740edc6698bfd2354 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 24 Jan 2020 19:40:20 +0900 Subject: [PATCH 0989/1829] Add test --- .../SongSelect/TestSceneBeatmapCarousel.cs | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapCarousel.cs b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapCarousel.cs index 132b104afb..71ae47dc66 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapCarousel.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapCarousel.cs @@ -437,6 +437,53 @@ namespace osu.Game.Tests.Visual.SongSelect AddAssert("Selection was random", () => eagerSelectedIDs.Count > 1); } + [Test] + public void TestFilteringByUserStarDifficulty() + { + BeatmapSetInfo set = null; + + loadBeatmaps(new List()); + + AddStep("add mixed difficulty set", () => + { + set = createTestBeatmapSet(1); + set.Beatmaps.Clear(); + + for (int i = 1; i <= 15; i++) + { + set.Beatmaps.Add(new BeatmapInfo + { + Version = $"Stars: {i}", + StarDifficulty = i, + }); + } + + carousel.UpdateBeatmapSet(set); + }); + + AddStep("select added set", () => carousel.SelectBeatmap(set.Beatmaps[0], false)); + + AddStep("filter [5..]", () => carousel.Filter(new FilterCriteria { UserStarDifficulty = { Min = 5 } })); + AddUntilStep("Wait for debounce", () => !carousel.PendingFilterTask); + checkVisibleItemCount(true, 11); + + AddStep("filter to [0..7]", () => carousel.Filter(new FilterCriteria { UserStarDifficulty = { Max = 7 } })); + AddUntilStep("Wait for debounce", () => !carousel.PendingFilterTask); + checkVisibleItemCount(true, 7); + + AddStep("filter to [5..7]", () => carousel.Filter(new FilterCriteria { UserStarDifficulty = { Min = 5, Max = 7 } })); + AddUntilStep("Wait for debounce", () => !carousel.PendingFilterTask); + checkVisibleItemCount(true, 3); + + AddStep("filter [2..2]", () => carousel.Filter(new FilterCriteria { UserStarDifficulty = { Min = 2, Max = 2 } })); + AddUntilStep("Wait for debounce", () => !carousel.PendingFilterTask); + checkVisibleItemCount(true, 1); + + AddStep("filter to [0..]", () => carousel.Filter(new FilterCriteria { UserStarDifficulty = { Min = 0 } })); + AddUntilStep("Wait for debounce", () => !carousel.PendingFilterTask); + checkVisibleItemCount(true, 15); + } + private void loadBeatmaps(List beatmapSets = null) { createCarousel(); From 75d0fd0bab1ca0a00308bca0f459cb242024ed37 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 24 Jan 2020 19:43:23 +0900 Subject: [PATCH 0990/1829] Rename class --- .../Settings/Sections/Gameplay/SongSelectSettings.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs b/osu.Game/Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs index b01aa1e297..de67d55184 100644 --- a/osu.Game/Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs @@ -27,7 +27,7 @@ namespace osu.Game.Overlays.Settings.Sections.Gameplay LabelText = "Show converted beatmaps", Bindable = config.GetBindable(OsuSetting.ShowConvertedBeatmaps), }, - new SettingsSlider + new SettingsSlider { LabelText = "Display beatmaps from", Bindable = config.GetBindable(OsuSetting.DisplayStarsMinimum), @@ -49,12 +49,12 @@ namespace osu.Game.Overlays.Settings.Sections.Gameplay }; } - private class MaximumStarsSlider : StarSlider + private class MaximumStarsSlider : StarsSlider { public override string TooltipText => Current.IsDefault ? "no limit" : base.TooltipText; } - private class StarSlider : OsuSliderBar + private class StarsSlider : OsuSliderBar { public override string TooltipText => Current.Value.ToString(@"0.## stars"); } From d1684a3c92513e7e0af59d3452a98afffaff79aa Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 24 Jan 2020 19:50:16 +0900 Subject: [PATCH 0991/1829] Duplicate keywords for better UX --- .../Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs b/osu.Game/Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs index de67d55184..e03c247b6c 100644 --- a/osu.Game/Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs @@ -32,14 +32,14 @@ namespace osu.Game.Overlays.Settings.Sections.Gameplay LabelText = "Display beatmaps from", Bindable = config.GetBindable(OsuSetting.DisplayStarsMinimum), KeyboardStep = 0.1f, - Keywords = new[] { "minimum", "star", "difficulty" } + Keywords = new[] { "minimum", "maximum", "star", "difficulty" } }, new SettingsSlider { LabelText = "up to", Bindable = config.GetBindable(OsuSetting.DisplayStarsMaximum), KeyboardStep = 0.1f, - Keywords = new[] { "maximum", "star", "difficulty" } + Keywords = new[] { "minimum", "maximum", "star", "difficulty" } }, new SettingsEnumDropdown { From bc75290655b222d073fc58ea99cd2525dfb72656 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 25 Jan 2020 00:11:20 +0900 Subject: [PATCH 0992/1829] Ensure min and max stars are correctly ordered --- .../Settings/Sections/Gameplay/SongSelectSettings.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/osu.Game/Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs b/osu.Game/Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs index e03c247b6c..0c42247993 100644 --- a/osu.Game/Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/Gameplay/SongSelectSettings.cs @@ -1,7 +1,9 @@ // 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 osu.Framework.Allocation; +using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Game.Configuration; using osu.Game.Graphics.UserInterface; @@ -10,11 +12,20 @@ namespace osu.Game.Overlays.Settings.Sections.Gameplay { public class SongSelectSettings : SettingsSubsection { + private Bindable minStars; + private Bindable maxStars; + protected override string Header => "Song Select"; [BackgroundDependencyLoader] private void load(OsuConfigManager config) { + minStars = config.GetBindable(OsuSetting.DisplayStarsMinimum); + maxStars = config.GetBindable(OsuSetting.DisplayStarsMaximum); + + minStars.ValueChanged += min => maxStars.Value = Math.Max(min.NewValue, maxStars.Value); + maxStars.ValueChanged += max => minStars.Value = Math.Min(max.NewValue, minStars.Value); + Children = new Drawable[] { new SettingsCheckbox From 219e14baa2e0f7a9a63be5a78f418c5e826d6c71 Mon Sep 17 00:00:00 2001 From: Berkan Diler Date: Fri, 24 Jan 2020 17:05:27 +0100 Subject: [PATCH 0993/1829] Address review and fix InspectCode --- osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs | 6 ++---- osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs | 1 + 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs index 965fcc03a3..009da0656b 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs @@ -300,13 +300,11 @@ namespace osu.Game.Beatmaps.Formats switch (type) { case LegacyEventType.Background: - string bgFilename = split[2]; - beatmap.BeatmapInfo.Metadata.BackgroundFile = CleanFilename(bgFilename); + beatmap.BeatmapInfo.Metadata.BackgroundFile = CleanFilename(split[2]); break; case LegacyEventType.Video: - string videoFilename = split[2]; - beatmap.BeatmapInfo.Metadata.VideoFile = CleanFilename(videoFilename); + beatmap.BeatmapInfo.Metadata.VideoFile = CleanFilename(split[2]); break; case LegacyEventType.Break: diff --git a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs index a7d0360f0d..9ba4d7b05e 100644 --- a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs @@ -71,6 +71,7 @@ namespace osu.Game.Beatmaps.Formats lineSpan = lineSpan.Slice(1); ++depth; } + line = line.Substring(depth); decodeVariables(ref line); From fa595e07a65907e66cb2e37b31c7e76ab5cb62f2 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 25 Jan 2020 12:44:48 +0900 Subject: [PATCH 0994/1829] 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 2ccba60424..5497a82a7a 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 9b431e6425..0ea558bbc7 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 4dc7403553..a215bc65e8 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From 73e822e08db765e1a3fbc1f1fdea8bab88d029df Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 25 Jan 2020 06:46:54 +0300 Subject: [PATCH 0995/1829] Make waves colour dependent on overlay colour scheme --- osu.Game/Overlays/ChangelogOverlay.cs | 5 ----- osu.Game/Overlays/DirectOverlay.cs | 7 ------- osu.Game/Overlays/FullscreenOverlay.cs | 14 +++++++------- osu.Game/Overlays/RankingsOverlay.cs | 15 ++------------- osu.Game/Overlays/SocialOverlay.cs | 5 ----- 5 files changed, 9 insertions(+), 37 deletions(-) diff --git a/osu.Game/Overlays/ChangelogOverlay.cs b/osu.Game/Overlays/ChangelogOverlay.cs index e2186df64c..412e29735a 100644 --- a/osu.Game/Overlays/ChangelogOverlay.cs +++ b/osu.Game/Overlays/ChangelogOverlay.cs @@ -44,11 +44,6 @@ namespace osu.Game.Overlays [BackgroundDependencyLoader] private void load(AudioManager audio, OsuColour colour) { - Waves.FirstWaveColour = colour.GreyVioletLight; - Waves.SecondWaveColour = colour.GreyViolet; - Waves.ThirdWaveColour = colour.GreyVioletDark; - Waves.FourthWaveColour = colour.GreyVioletDarker; - Children = new Drawable[] { new Box diff --git a/osu.Game/Overlays/DirectOverlay.cs b/osu.Game/Overlays/DirectOverlay.cs index c718ca7a1e..e4cef319fe 100644 --- a/osu.Game/Overlays/DirectOverlay.cs +++ b/osu.Game/Overlays/DirectOverlay.cs @@ -86,13 +86,6 @@ namespace osu.Game.Overlays public DirectOverlay() : base(OverlayColourScheme.Blue) { - // osu!direct colours are not part of the standard palette - - Waves.FirstWaveColour = OsuColour.FromHex(@"19b0e2"); - Waves.SecondWaveColour = OsuColour.FromHex(@"2280a2"); - Waves.ThirdWaveColour = OsuColour.FromHex(@"005774"); - Waves.FourthWaveColour = OsuColour.FromHex(@"003a4e"); - ScrollFlow.Children = new Drawable[] { resultCountsContainer = new FillFlowContainer diff --git a/osu.Game/Overlays/FullscreenOverlay.cs b/osu.Game/Overlays/FullscreenOverlay.cs index 662188cbfd..c391947ccb 100644 --- a/osu.Game/Overlays/FullscreenOverlay.cs +++ b/osu.Game/Overlays/FullscreenOverlay.cs @@ -6,7 +6,6 @@ using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Effects; -using osu.Game.Graphics; using osu.Game.Graphics.Containers; using osu.Game.Online.API; using osuTK.Graphics; @@ -24,11 +23,6 @@ namespace osu.Game.Overlays { this.colourScheme = colourScheme; - Waves.FirstWaveColour = OsuColour.Gray(0.4f); - Waves.SecondWaveColour = OsuColour.Gray(0.3f); - Waves.ThirdWaveColour = OsuColour.Gray(0.2f); - Waves.FourthWaveColour = OsuColour.Gray(0.1f); - RelativeSizeAxes = Axes.Both; RelativePositionAxes = Axes.Both; Width = 0.85f; @@ -53,7 +47,13 @@ namespace osu.Game.Overlays [BackgroundDependencyLoader] private void load() { - dependencies.Cache(new OverlayColourProvider(colourScheme)); + OverlayColourProvider colourProvider; + dependencies.Cache(colourProvider = new OverlayColourProvider(colourScheme)); + + Waves.FirstWaveColour = colourProvider.Highlight1; + Waves.SecondWaveColour = colourProvider.Link4; + Waves.ThirdWaveColour = colourProvider.Dark3; + Waves.FourthWaveColour = colourProvider.Dark1; } public override void Show() diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index 2297925e5c..1ab18b8c15 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -25,7 +25,6 @@ namespace osu.Game.Overlays private readonly Bindable ruleset = new Bindable(); private readonly BasicScrollContainer scrollFlow; - private readonly Box background; private readonly Container tableContainer; private readonly DimmedLoadingLayer loading; @@ -40,9 +39,10 @@ namespace osu.Game.Overlays { Children = new Drawable[] { - background = new Box + new Box { RelativeSizeAxes = Axes.Both, + Colour = OsuColour.Gray(0.1f), }, scrollFlow = new BasicScrollContainer { @@ -86,17 +86,6 @@ namespace osu.Game.Overlays }; } - [BackgroundDependencyLoader] - private void load(OsuColour colour) - { - Waves.FirstWaveColour = colour.Green; - Waves.SecondWaveColour = colour.GreenLight; - Waves.ThirdWaveColour = colour.GreenDark; - Waves.FourthWaveColour = colour.GreenDarker; - - background.Colour = OsuColour.Gray(0.1f); - } - protected override void LoadComplete() { Country.BindValueChanged(_ => diff --git a/osu.Game/Overlays/SocialOverlay.cs b/osu.Game/Overlays/SocialOverlay.cs index 27bef7145b..9a523bc1bc 100644 --- a/osu.Game/Overlays/SocialOverlay.cs +++ b/osu.Game/Overlays/SocialOverlay.cs @@ -54,11 +54,6 @@ namespace osu.Game.Overlays public SocialOverlay() : base(OverlayColourScheme.Pink) { - Waves.FirstWaveColour = OsuColour.FromHex(@"cb5fa0"); - Waves.SecondWaveColour = OsuColour.FromHex(@"b04384"); - Waves.ThirdWaveColour = OsuColour.FromHex(@"9b2b6e"); - Waves.FourthWaveColour = OsuColour.FromHex(@"6d214d"); - Add(loading = new LoadingAnimation()); Filter.Search.Current.ValueChanged += text => From 9a960a60e37fe69cb6140ca9fdb78f949b077b8c Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 25 Jan 2020 17:08:24 +0900 Subject: [PATCH 0996/1829] Remove build target from Fastfile --- fastlane/Fastfile | 1 - 1 file changed, 1 deletion(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 28a83fbbae..510b53054b 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -111,7 +111,6 @@ platform :ios do souyuz( platform: "ios", - build_target: "osu_iOS", plist_path: "../osu.iOS/Info.plist" ) end From 8aec9e450089d874caf812153c7dd7025621018a Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Sat, 25 Jan 2020 11:41:26 +0300 Subject: [PATCH 0997/1829] Fix NullReferenceException on main menu for mobile game hsots --- osu.Game/Screens/Menu/MainMenu.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Menu/MainMenu.cs b/osu.Game/Screens/Menu/MainMenu.cs index b03febce31..cb5ceefb0f 100644 --- a/osu.Game/Screens/Menu/MainMenu.cs +++ b/osu.Game/Screens/Menu/MainMenu.cs @@ -116,7 +116,7 @@ namespace osu.Game.Screens.Menu Origin = Anchor.TopRight, Margin = new MarginPadding { Right = 15, Top = 5 } }, - exitConfirmOverlay.CreateProxy() + exitConfirmOverlay?.CreateProxy() ?? Drawable.Empty() }); buttons.StateChanged += state => From d2a032ca8d84453fc35cf54123dfda7dd8070c39 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Sat, 25 Jan 2020 22:16:21 +0100 Subject: [PATCH 0998/1829] Move reverse-order comparer to ChannelTabControl --- osu.Game/Graphics/UserInterface/OsuTabControl.cs | 14 -------------- osu.Game/Overlays/Chat/Tabs/ChannelTabControl.cs | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/OsuTabControl.cs b/osu.Game/Graphics/UserInterface/OsuTabControl.cs index 6a7998d5fb..1bfbee4a60 100644 --- a/osu.Game/Graphics/UserInterface/OsuTabControl.cs +++ b/osu.Game/Graphics/UserInterface/OsuTabControl.cs @@ -10,7 +10,6 @@ using osu.Framework.Bindables; using osu.Framework.Extensions; using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.UserInterface; @@ -84,14 +83,6 @@ namespace osu.Game.Graphics.UserInterface set => strip.Colour = value; } - protected override TabFillFlowContainer CreateTabFlow() => new OsuTabFillFlowContainer - { - Direction = FillDirection.Full, - RelativeSizeAxes = Axes.Both, - Depth = -1, - Masking = true - }; - protected override void UpdateAfterChildren() { base.UpdateAfterChildren(); @@ -283,10 +274,5 @@ namespace osu.Game.Graphics.UserInterface } } } - - private class OsuTabFillFlowContainer : TabFillFlowContainer - { - protected override int Compare(Drawable x, Drawable y) => CompareReverseChildID(x, y); - } } } diff --git a/osu.Game/Overlays/Chat/Tabs/ChannelTabControl.cs b/osu.Game/Overlays/Chat/Tabs/ChannelTabControl.cs index 2e4d8ce729..104495ae01 100644 --- a/osu.Game/Overlays/Chat/Tabs/ChannelTabControl.cs +++ b/osu.Game/Overlays/Chat/Tabs/ChannelTabControl.cs @@ -9,6 +9,7 @@ using osuTK; using System; using System.Linq; using osu.Framework.Bindables; +using osu.Framework.Graphics.Containers; namespace osu.Game.Overlays.Chat.Tabs { @@ -113,5 +114,18 @@ namespace osu.Game.Overlays.Chat.Tabs OnRequestLeave?.Invoke(tab.Value); } + + protected override TabFillFlowContainer CreateTabFlow() => new ChannelTabFillFlowContainer + { + Direction = FillDirection.Full, + RelativeSizeAxes = Axes.Both, + Depth = -1, + Masking = true + }; + + private class ChannelTabFillFlowContainer : TabFillFlowContainer + { + protected override int Compare(Drawable x, Drawable y) => CompareReverseChildID(x, y); + } } } From eabb5a870175e6f59fb86b9039c7a77d6cd832ba Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 26 Jan 2020 17:40:38 +0900 Subject: [PATCH 0999/1829] Use ToString instead of Substring --- osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs index 9ba4d7b05e..35576e0f33 100644 --- a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs @@ -72,7 +72,7 @@ namespace osu.Game.Beatmaps.Formats ++depth; } - line = line.Substring(depth); + line = lineSpan.ToString(); decodeVariables(ref line); From bd7c137394e5f2f7c4377d575b83b6df8f09f43e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 26 Jan 2020 18:31:01 +0900 Subject: [PATCH 1000/1829] Remap osu!mania dual stage key bindings to be more ergonomic --- osu.Game.Rulesets.Mania/ManiaRuleset.cs | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/osu.Game.Rulesets.Mania/ManiaRuleset.cs b/osu.Game.Rulesets.Mania/ManiaRuleset.cs index 02c2158383..b7b523a94d 100644 --- a/osu.Game.Rulesets.Mania/ManiaRuleset.cs +++ b/osu.Game.Rulesets.Mania/ManiaRuleset.cs @@ -237,19 +237,19 @@ namespace osu.Game.Rulesets.Mania { LeftKeys = new[] { - InputKey.Number1, - InputKey.Number2, - InputKey.Number3, - InputKey.Number4, + InputKey.Q, + InputKey.W, + InputKey.E, + InputKey.R, }, RightKeys = new[] { - InputKey.Z, InputKey.X, InputKey.C, - InputKey.V + InputKey.V, + InputKey.B }, - SpecialKey = InputKey.Tilde, + SpecialKey = InputKey.S, SpecialAction = ManiaAction.Special1, NormalActionStart = ManiaAction.Key1 }.GenerateKeyBindingsFor(keys, out var nextNormal); @@ -265,12 +265,12 @@ namespace osu.Game.Rulesets.Mania }, RightKeys = new[] { - InputKey.O, - InputKey.P, - InputKey.BracketLeft, - InputKey.BracketRight + InputKey.K, + InputKey.L, + InputKey.Semicolon, + InputKey.Quote }, - SpecialKey = InputKey.BackSlash, + SpecialKey = InputKey.I, SpecialAction = ManiaAction.Special2, NormalActionStart = nextNormal }.GenerateKeyBindingsFor(keys, out _); From 406bc23fdeea4955de909fb4d1cd30371e032ba7 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 26 Jan 2020 12:38:20 +0300 Subject: [PATCH 1001/1829] Rename incorrect colours --- osu.Game/Overlays/FullscreenOverlay.cs | 2 +- osu.Game/Overlays/OverlayColourProvider.cs | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/osu.Game/Overlays/FullscreenOverlay.cs b/osu.Game/Overlays/FullscreenOverlay.cs index c391947ccb..8a8a53e042 100644 --- a/osu.Game/Overlays/FullscreenOverlay.cs +++ b/osu.Game/Overlays/FullscreenOverlay.cs @@ -51,7 +51,7 @@ namespace osu.Game.Overlays dependencies.Cache(colourProvider = new OverlayColourProvider(colourScheme)); Waves.FirstWaveColour = colourProvider.Highlight1; - Waves.SecondWaveColour = colourProvider.Link4; + Waves.SecondWaveColour = colourProvider.Light4; Waves.ThirdWaveColour = colourProvider.Dark3; Waves.FourthWaveColour = colourProvider.Dark1; } diff --git a/osu.Game/Overlays/OverlayColourProvider.cs b/osu.Game/Overlays/OverlayColourProvider.cs index e92a231bc1..dd756d4b3f 100644 --- a/osu.Game/Overlays/OverlayColourProvider.cs +++ b/osu.Game/Overlays/OverlayColourProvider.cs @@ -59,10 +59,10 @@ namespace osu.Game.Overlays public Color4 Highlight1 => convert(1, 0.7f); public Color4 Content1 => convert(0.4f, 1); public Color4 Content2 => convert(0.4f, 0.9f); - public Color4 Link1 => convert(0.4f, 0.8f); - public Color4 Link2 => convert(0.4f, 0.75f); - public Color4 Link3 => convert(0.4f, 0.7f); - public Color4 Link4 => convert(0.4f, 0.5f); + public Color4 Light1 => convert(0.4f, 0.8f); + public Color4 Light2 => convert(0.4f, 0.75f); + public Color4 Light3 => convert(0.4f, 0.7f); + public Color4 Light4 => convert(0.4f, 0.5f); public Color4 Dark1 => convert(0.2f, 0.35f); public Color4 Dark2 => convert(0.2f, 0.3f); public Color4 Dark3 => convert(0.2f, 0.25f); From 6dee287a82c28a5bdfcc097c9d74f98370b9c691 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 26 Jan 2020 12:39:15 +0300 Subject: [PATCH 1002/1829] Move private methods below public --- osu.Game/Overlays/OverlayColourProvider.cs | 42 +++++++++++----------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/osu.Game/Overlays/OverlayColourProvider.cs b/osu.Game/Overlays/OverlayColourProvider.cs index dd756d4b3f..b548522538 100644 --- a/osu.Game/Overlays/OverlayColourProvider.cs +++ b/osu.Game/Overlays/OverlayColourProvider.cs @@ -16,6 +16,27 @@ namespace osu.Game.Overlays this.colourScheme = colourScheme; } + public Color4 Highlight1 => convert(1, 0.7f); + public Color4 Content1 => convert(0.4f, 1); + public Color4 Content2 => convert(0.4f, 0.9f); + public Color4 Light1 => convert(0.4f, 0.8f); + public Color4 Light2 => convert(0.4f, 0.75f); + public Color4 Light3 => convert(0.4f, 0.7f); + public Color4 Light4 => convert(0.4f, 0.5f); + public Color4 Dark1 => convert(0.2f, 0.35f); + public Color4 Dark2 => convert(0.2f, 0.3f); + public Color4 Dark3 => convert(0.2f, 0.25f); + public Color4 Dark4 => convert(0.2f, 0.2f); + public Color4 Dark5 => convert(0.2f, 0.15f); + public Color4 Dark6 => convert(0.2f, 0.1f); + public Color4 Foreground1 => convert(0.1f, 0.6f); + public Color4 Background1 => convert(0.1f, 0.4f); + public Color4 Background2 => convert(0.1f, 0.3f); + public Color4 Background3 => convert(0.1f, 0.25f); + public Color4 Background4 => convert(0.1f, 0.2f); + public Color4 Background5 => convert(0.1f, 0.15f); + public Color4 Background6 => convert(0.1f, 0.1f); + private Color4 convert(float saturation, float lightness) => Color4.FromHsl(new Vector4(getBaseHue(colourScheme), saturation, lightness, 1)); // See https://github.com/ppy/osu-web/blob/4218c288292d7c810b619075471eaea8bbb8f9d8/app/helpers.php#L1463 @@ -55,27 +76,6 @@ namespace osu.Game.Overlays return hue / 360f; } - - public Color4 Highlight1 => convert(1, 0.7f); - public Color4 Content1 => convert(0.4f, 1); - public Color4 Content2 => convert(0.4f, 0.9f); - public Color4 Light1 => convert(0.4f, 0.8f); - public Color4 Light2 => convert(0.4f, 0.75f); - public Color4 Light3 => convert(0.4f, 0.7f); - public Color4 Light4 => convert(0.4f, 0.5f); - public Color4 Dark1 => convert(0.2f, 0.35f); - public Color4 Dark2 => convert(0.2f, 0.3f); - public Color4 Dark3 => convert(0.2f, 0.25f); - public Color4 Dark4 => convert(0.2f, 0.2f); - public Color4 Dark5 => convert(0.2f, 0.15f); - public Color4 Dark6 => convert(0.2f, 0.1f); - public Color4 Foreground1 => convert(0.1f, 0.6f); - public Color4 Background1 => convert(0.1f, 0.4f); - public Color4 Background2 => convert(0.1f, 0.3f); - public Color4 Background3 => convert(0.1f, 0.25f); - public Color4 Background4 => convert(0.1f, 0.2f); - public Color4 Background5 => convert(0.1f, 0.15f); - public Color4 Background6 => convert(0.1f, 0.1f); } public enum OverlayColourScheme From 750a4476d8cb91e5984552a53d3f7cccba7de1d1 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 26 Jan 2020 12:41:21 +0300 Subject: [PATCH 1003/1829] Simplify getBaseHue function --- osu.Game/Overlays/OverlayColourProvider.cs | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/osu.Game/Overlays/OverlayColourProvider.cs b/osu.Game/Overlays/OverlayColourProvider.cs index b548522538..1221de480e 100644 --- a/osu.Game/Overlays/OverlayColourProvider.cs +++ b/osu.Game/Overlays/OverlayColourProvider.cs @@ -42,39 +42,29 @@ namespace osu.Game.Overlays // See https://github.com/ppy/osu-web/blob/4218c288292d7c810b619075471eaea8bbb8f9d8/app/helpers.php#L1463 private static float getBaseHue(OverlayColourScheme colourScheme) { - float hue; - switch (colourScheme) { default: throw new ArgumentException($@"{colourScheme} colour scheme does not provide a hue value in {nameof(getBaseHue)}."); case OverlayColourScheme.Red: - hue = 0; - break; + return 0; case OverlayColourScheme.Pink: - hue = 333; - break; + return 333 / 360f; case OverlayColourScheme.Orange: - hue = 46; - break; + return 46 / 360f; case OverlayColourScheme.Green: - hue = 115; - break; + return 115 / 360f; case OverlayColourScheme.Purple: - hue = 255; - break; + return 255 / 360f; case OverlayColourScheme.Blue: - hue = 200; - break; + return 200 / 360f; } - - return hue / 360f; } } From 8e470678c7d124fab495d4c15be304f598be87aa Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 26 Jan 2020 12:42:23 +0300 Subject: [PATCH 1004/1829] Rename convert() to getColour() --- osu.Game/Overlays/OverlayColourProvider.cs | 42 +++++++++++----------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/osu.Game/Overlays/OverlayColourProvider.cs b/osu.Game/Overlays/OverlayColourProvider.cs index 1221de480e..9816f313ad 100644 --- a/osu.Game/Overlays/OverlayColourProvider.cs +++ b/osu.Game/Overlays/OverlayColourProvider.cs @@ -16,28 +16,28 @@ namespace osu.Game.Overlays this.colourScheme = colourScheme; } - public Color4 Highlight1 => convert(1, 0.7f); - public Color4 Content1 => convert(0.4f, 1); - public Color4 Content2 => convert(0.4f, 0.9f); - public Color4 Light1 => convert(0.4f, 0.8f); - public Color4 Light2 => convert(0.4f, 0.75f); - public Color4 Light3 => convert(0.4f, 0.7f); - public Color4 Light4 => convert(0.4f, 0.5f); - public Color4 Dark1 => convert(0.2f, 0.35f); - public Color4 Dark2 => convert(0.2f, 0.3f); - public Color4 Dark3 => convert(0.2f, 0.25f); - public Color4 Dark4 => convert(0.2f, 0.2f); - public Color4 Dark5 => convert(0.2f, 0.15f); - public Color4 Dark6 => convert(0.2f, 0.1f); - public Color4 Foreground1 => convert(0.1f, 0.6f); - public Color4 Background1 => convert(0.1f, 0.4f); - public Color4 Background2 => convert(0.1f, 0.3f); - public Color4 Background3 => convert(0.1f, 0.25f); - public Color4 Background4 => convert(0.1f, 0.2f); - public Color4 Background5 => convert(0.1f, 0.15f); - public Color4 Background6 => convert(0.1f, 0.1f); + public Color4 Highlight1 => getColour(1, 0.7f); + public Color4 Content1 => getColour(0.4f, 1); + public Color4 Content2 => getColour(0.4f, 0.9f); + public Color4 Light1 => getColour(0.4f, 0.8f); + public Color4 Light2 => getColour(0.4f, 0.75f); + public Color4 Light3 => getColour(0.4f, 0.7f); + public Color4 Light4 => getColour(0.4f, 0.5f); + public Color4 Dark1 => getColour(0.2f, 0.35f); + public Color4 Dark2 => getColour(0.2f, 0.3f); + public Color4 Dark3 => getColour(0.2f, 0.25f); + public Color4 Dark4 => getColour(0.2f, 0.2f); + public Color4 Dark5 => getColour(0.2f, 0.15f); + public Color4 Dark6 => getColour(0.2f, 0.1f); + public Color4 Foreground1 => getColour(0.1f, 0.6f); + public Color4 Background1 => getColour(0.1f, 0.4f); + public Color4 Background2 => getColour(0.1f, 0.3f); + public Color4 Background3 => getColour(0.1f, 0.25f); + public Color4 Background4 => getColour(0.1f, 0.2f); + public Color4 Background5 => getColour(0.1f, 0.15f); + public Color4 Background6 => getColour(0.1f, 0.1f); - private Color4 convert(float saturation, float lightness) => Color4.FromHsl(new Vector4(getBaseHue(colourScheme), saturation, lightness, 1)); + private Color4 getColour(float saturation, float lightness) => Color4.FromHsl(new Vector4(getBaseHue(colourScheme), saturation, lightness, 1)); // See https://github.com/ppy/osu-web/blob/4218c288292d7c810b619075471eaea8bbb8f9d8/app/helpers.php#L1463 private static float getBaseHue(OverlayColourScheme colourScheme) From e442e8535bc46fbf5b3d2a51079148d97ec0f7f4 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 26 Jan 2020 12:57:19 +0300 Subject: [PATCH 1005/1829] Remake OsuTabControl.AccentColour --- .../Graphics/UserInterface/OsuTabControl.cs | 19 ++++++++++++------- osu.Game/Overlays/OverlayTabControl.cs | 6 +++--- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/OsuTabControl.cs b/osu.Game/Graphics/UserInterface/OsuTabControl.cs index 9bdd227957..ca623b7775 100644 --- a/osu.Game/Graphics/UserInterface/OsuTabControl.cs +++ b/osu.Game/Graphics/UserInterface/OsuTabControl.cs @@ -21,19 +21,16 @@ namespace osu.Game.Graphics.UserInterface { public class OsuTabControl : TabControl { - protected readonly Bindable AccentColourBindable = new Bindable(); + private Color4 accentColour; public Color4 AccentColour { - get => AccentColourBindable.Value; + get => accentColour; set { - AccentColourBindable.Value = value; + accentColour = value; - if (Dropdown is IHasAccentColour dropdown) - dropdown.AccentColour = value; - foreach (var i in TabContainer.Children.OfType()) - i.AccentColour = value; + OnAccentColourChanged(value); } } @@ -93,6 +90,14 @@ namespace osu.Game.Graphics.UserInterface strip.Width = Interpolation.ValueAt(Math.Clamp(Clock.ElapsedFrameTime, 0, 1000), strip.Width, StripWidth, 0, 500, Easing.OutQuint); } + protected virtual void OnAccentColourChanged(Color4 colour) + { + if (Dropdown is IHasAccentColour dropdown) + dropdown.AccentColour = colour; + foreach (var i in TabContainer.Children.OfType()) + i.AccentColour = colour; + } + public class OsuTabItem : TabItem, IHasAccentColour { protected readonly SpriteText Text; diff --git a/osu.Game/Overlays/OverlayTabControl.cs b/osu.Game/Overlays/OverlayTabControl.cs index 619729acae..aa79dde13c 100644 --- a/osu.Game/Overlays/OverlayTabControl.cs +++ b/osu.Game/Overlays/OverlayTabControl.cs @@ -36,10 +36,10 @@ namespace osu.Game.Overlays }); } - protected override void LoadComplete() + protected override void OnAccentColourChanged(Color4 colour) { - base.LoadComplete(); - AccentColourBindable.BindValueChanged(colour => bar.Colour = colour.NewValue, true); + base.OnAccentColourChanged(colour); + bar.Colour = colour; } protected override Dropdown CreateDropdown() => null; From 2d74609f5030b07844fab427bb4f11e7915ebdbd Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 26 Jan 2020 19:06:50 +0900 Subject: [PATCH 1006/1829] Fix crash due to misordered selection events --- osu.Game/Screens/Select/BeatmapCarousel.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs b/osu.Game/Screens/Select/BeatmapCarousel.cs index 4433543ca1..420aa14a99 100644 --- a/osu.Game/Screens/Select/BeatmapCarousel.cs +++ b/osu.Game/Screens/Select/BeatmapCarousel.cs @@ -559,6 +559,14 @@ namespace osu.Game.Screens.Select { if (state.NewValue == CarouselItemState.Selected) { + if (!AllowSelection) + { + // CarouselBeatmap may trigger a state change from OnClick, unaware that it is not allowed to. + // we revert this change here to ensure sanity. + c.State.Value = state.OldValue; + return; + } + selectedBeatmapSet = set; SelectionChanged?.Invoke(c.Beatmap); From 852e622f02056bf296f0b3ae5721c659df0b1d7c Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 26 Jan 2020 13:12:35 +0300 Subject: [PATCH 1007/1829] Fix broken BreadcrumbControl --- osu.Game/Graphics/UserInterface/BreadcrumbControl.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs b/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs index e2438cc4cd..4dfb2769dc 100644 --- a/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs +++ b/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs @@ -34,8 +34,8 @@ namespace osu.Game.Graphics.UserInterface var tIndex = TabContainer.IndexOf(t); var tabIndex = TabContainer.IndexOf(TabMap[index.NewValue]); - t.State = tIndex < tabIndex ? Visibility.Hidden : Visibility.Visible; - t.Chevron.FadeTo(tIndex <= tabIndex ? 0f : 1f, 500, Easing.OutQuint); + t.State = tIndex > tabIndex ? Visibility.Hidden : Visibility.Visible; + t.Chevron.FadeTo(tIndex >= tabIndex ? 0f : 1f, 500, Easing.OutQuint); } }; } From 1305634c5263a9e628d4cbd0879d246181225aee Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 26 Jan 2020 14:02:05 +0300 Subject: [PATCH 1008/1829] Simplify colour provider caching --- osu.Game/Overlays/FullscreenOverlay.cs | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/osu.Game/Overlays/FullscreenOverlay.cs b/osu.Game/Overlays/FullscreenOverlay.cs index 8a8a53e042..b7e6eb2ff7 100644 --- a/osu.Game/Overlays/FullscreenOverlay.cs +++ b/osu.Game/Overlays/FullscreenOverlay.cs @@ -17,11 +17,12 @@ namespace osu.Game.Overlays [Resolved] protected IAPIProvider API { get; private set; } - private readonly OverlayColourScheme colourScheme; + [Cached] + private OverlayColourProvider colourProvider; protected FullscreenOverlay(OverlayColourScheme colourScheme) { - this.colourScheme = colourScheme; + colourProvider = new OverlayColourProvider(colourScheme); RelativeSizeAxes = Axes.Both; RelativePositionAxes = Axes.Both; @@ -39,17 +40,9 @@ namespace osu.Game.Overlays }; } - private DependencyContainer dependencies; - - protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent) => - dependencies = new DependencyContainer(base.CreateChildDependencies(parent)); - [BackgroundDependencyLoader] private void load() { - OverlayColourProvider colourProvider; - dependencies.Cache(colourProvider = new OverlayColourProvider(colourScheme)); - Waves.FirstWaveColour = colourProvider.Highlight1; Waves.SecondWaveColour = colourProvider.Light4; Waves.ThirdWaveColour = colourProvider.Dark3; From 49c5d5b23d27d188183930920bc3628cdcf43e65 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 26 Jan 2020 14:06:05 +0300 Subject: [PATCH 1009/1829] Make colour provider readonly --- osu.Game/Overlays/FullscreenOverlay.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/FullscreenOverlay.cs b/osu.Game/Overlays/FullscreenOverlay.cs index b7e6eb2ff7..e02f03301b 100644 --- a/osu.Game/Overlays/FullscreenOverlay.cs +++ b/osu.Game/Overlays/FullscreenOverlay.cs @@ -18,7 +18,7 @@ namespace osu.Game.Overlays protected IAPIProvider API { get; private set; } [Cached] - private OverlayColourProvider colourProvider; + private readonly OverlayColourProvider colourProvider; protected FullscreenOverlay(OverlayColourScheme colourScheme) { From 97c80529d5ac0abeb848c56af603cc5033d72d45 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 26 Jan 2020 21:47:40 +0900 Subject: [PATCH 1010/1829] Adjust wave colours slightly --- osu.Game/Overlays/FullscreenOverlay.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/FullscreenOverlay.cs b/osu.Game/Overlays/FullscreenOverlay.cs index e02f03301b..959f6749d2 100644 --- a/osu.Game/Overlays/FullscreenOverlay.cs +++ b/osu.Game/Overlays/FullscreenOverlay.cs @@ -43,10 +43,10 @@ namespace osu.Game.Overlays [BackgroundDependencyLoader] private void load() { - Waves.FirstWaveColour = colourProvider.Highlight1; - Waves.SecondWaveColour = colourProvider.Light4; - Waves.ThirdWaveColour = colourProvider.Dark3; - Waves.FourthWaveColour = colourProvider.Dark1; + Waves.FirstWaveColour = colourProvider.Light4; + Waves.SecondWaveColour = colourProvider.Light3; + Waves.ThirdWaveColour = colourProvider.Dark4; + Waves.FourthWaveColour = colourProvider.Dark3; } public override void Show() From 891f9a9b18c1ff7ff59a6180017fbc46eebe6bf0 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 26 Jan 2020 16:49:39 +0300 Subject: [PATCH 1011/1829] Remove unused using --- osu.Game/Graphics/UserInterface/OsuTabControl.cs | 2 +- osu.Game/Overlays/OverlayHeader.cs | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/OsuTabControl.cs b/osu.Game/Graphics/UserInterface/OsuTabControl.cs index ca623b7775..922535b39e 100644 --- a/osu.Game/Graphics/UserInterface/OsuTabControl.cs +++ b/osu.Game/Graphics/UserInterface/OsuTabControl.cs @@ -71,7 +71,7 @@ namespace osu.Game.Graphics.UserInterface [BackgroundDependencyLoader] private void load(OsuColour colours) { - if (AccentColour == default) + if (accentColour == default) AccentColour = colours.Blue; } diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index 509aa175ed..0575f6f296 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -6,7 +6,6 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; -using osu.Game.Graphics; using osu.Game.Graphics.UserInterface; using osuTK.Graphics; From 7cd60e3193a615c4ce71311693762ec6c01aa57e Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 26 Jan 2020 17:07:17 +0300 Subject: [PATCH 1012/1829] Make OverlayRulesetSelector use colour provider --- .../Online/TestSceneProfileRulesetSelector.cs | 8 ++++-- .../TestSceneOverlayRulesetSelector.cs | 27 ++++++++++++++----- osu.Game/Overlays/OverlayRulesetSelector.cs | 10 +++---- .../Components/ProfileRulesetSelector.cs | 6 ----- 4 files changed, 29 insertions(+), 22 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneProfileRulesetSelector.cs b/osu.Game.Tests/Visual/Online/TestSceneProfileRulesetSelector.cs index 1a9dca51c9..826624f686 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneProfileRulesetSelector.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneProfileRulesetSelector.cs @@ -11,7 +11,8 @@ using osu.Game.Rulesets.Osu; using osu.Game.Rulesets.Taiko; using osu.Game.Users; using osu.Framework.Bindables; -using osu.Game.Graphics; +using osu.Game.Overlays; +using osu.Framework.Allocation; namespace osu.Game.Tests.Visual.Online { @@ -23,12 +24,15 @@ namespace osu.Game.Tests.Visual.Online typeof(ProfileRulesetTabItem), }; + [Cached] + private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Green); + public TestSceneProfileRulesetSelector() { ProfileRulesetSelector selector; var user = new Bindable(); - Child = selector = new ProfileRulesetSelector(OverlayColourScheme.Green) + Child = selector = new ProfileRulesetSelector { Anchor = Anchor.Centre, Origin = Anchor.Centre, diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayRulesetSelector.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayRulesetSelector.cs index bc5f66da0b..8a98127793 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayRulesetSelector.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayRulesetSelector.cs @@ -12,9 +12,9 @@ using osu.Framework.Bindables; using osu.Game.Overlays; using osu.Game.Rulesets; using NUnit.Framework; -using osu.Game.Graphics; using osu.Framework.Graphics.Containers; using osuTK; +using osu.Framework.Allocation; namespace osu.Game.Tests.Visual.UserInterface { @@ -40,16 +40,29 @@ namespace osu.Game.Tests.Visual.UserInterface Spacing = new Vector2(0, 5), Children = new[] { - selector = new OverlayRulesetSelector(OverlayColourScheme.Green) { Current = ruleset }, - new OverlayRulesetSelector(OverlayColourScheme.Blue) { Current = ruleset }, - new OverlayRulesetSelector(OverlayColourScheme.Orange) { Current = ruleset }, - new OverlayRulesetSelector(OverlayColourScheme.Pink) { Current = ruleset }, - new OverlayRulesetSelector(OverlayColourScheme.Purple) { Current = ruleset }, - new OverlayRulesetSelector(OverlayColourScheme.Red) { Current = ruleset } + new ColourProvidedContainer(OverlayColourScheme.Green, selector = new OverlayRulesetSelector { Current = ruleset }), + new ColourProvidedContainer(OverlayColourScheme.Blue, new OverlayRulesetSelector { Current = ruleset }), + new ColourProvidedContainer(OverlayColourScheme.Orange, new OverlayRulesetSelector { Current = ruleset }), + new ColourProvidedContainer(OverlayColourScheme.Pink, new OverlayRulesetSelector { Current = ruleset }), + new ColourProvidedContainer(OverlayColourScheme.Purple, new OverlayRulesetSelector { Current = ruleset }), + new ColourProvidedContainer(OverlayColourScheme.Red, new OverlayRulesetSelector { Current = ruleset }), } }); } + private class ColourProvidedContainer : Container + { + [Cached] + private readonly OverlayColourProvider colourProvider; + + public ColourProvidedContainer(OverlayColourScheme colourScheme, OverlayRulesetSelector rulesetSelector) + { + colourProvider = new OverlayColourProvider(colourScheme); + AutoSizeAxes = Axes.Both; + Add(rulesetSelector); + } + } + [Test] public void TestSelection() { diff --git a/osu.Game/Overlays/OverlayRulesetSelector.cs b/osu.Game/Overlays/OverlayRulesetSelector.cs index b70d6a08f2..0c87686f6f 100644 --- a/osu.Game/Overlays/OverlayRulesetSelector.cs +++ b/osu.Game/Overlays/OverlayRulesetSelector.cs @@ -28,19 +28,15 @@ namespace osu.Game.Overlays } } - protected OverlayColourScheme ColourScheme { get; } - - public OverlayRulesetSelector(OverlayColourScheme colourScheme) + public OverlayRulesetSelector() { - ColourScheme = colourScheme; - AutoSizeAxes = Axes.Both; } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - AccentColour = colours.ForOverlayElement(ColourScheme, 1, 0.7f); + AccentColour = colourProvider.Highlight1; } protected override TabItem CreateTabItem(RulesetInfo value) => new OverlayRulesetTabItem(value); diff --git a/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetSelector.cs b/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetSelector.cs index f7e8d4b1f5..41a3ee8ad6 100644 --- a/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetSelector.cs +++ b/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetSelector.cs @@ -3,7 +3,6 @@ using osu.Framework.Bindables; using osu.Framework.Graphics.UserInterface; -using osu.Game.Graphics; using osu.Game.Rulesets; using osu.Game.Users; @@ -13,11 +12,6 @@ namespace osu.Game.Overlays.Profile.Header.Components { public readonly Bindable User = new Bindable(); - public ProfileRulesetSelector(OverlayColourScheme colourScheme) - : base(colourScheme) - { - } - protected override void LoadComplete() { base.LoadComplete(); From e54ea92c60c7465f536b7a682eca1b2d1b809a21 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 26 Jan 2020 17:21:22 +0300 Subject: [PATCH 1013/1829] Use virtual property for OsuTabControl.AccentColour --- osu.Game/Graphics/UserInterface/OsuTabControl.cs | 15 +++++---------- osu.Game/Overlays/OverlayTabControl.cs | 12 ++++++------ 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/OsuTabControl.cs b/osu.Game/Graphics/UserInterface/OsuTabControl.cs index 922535b39e..9fa6085035 100644 --- a/osu.Game/Graphics/UserInterface/OsuTabControl.cs +++ b/osu.Game/Graphics/UserInterface/OsuTabControl.cs @@ -23,14 +23,17 @@ namespace osu.Game.Graphics.UserInterface { private Color4 accentColour; - public Color4 AccentColour + public virtual Color4 AccentColour { get => accentColour; set { accentColour = value; - OnAccentColourChanged(value); + if (Dropdown is IHasAccentColour dropdown) + dropdown.AccentColour = value; + foreach (var i in TabContainer.Children.OfType()) + i.AccentColour = value; } } @@ -90,14 +93,6 @@ namespace osu.Game.Graphics.UserInterface strip.Width = Interpolation.ValueAt(Math.Clamp(Clock.ElapsedFrameTime, 0, 1000), strip.Width, StripWidth, 0, 500, Easing.OutQuint); } - protected virtual void OnAccentColourChanged(Color4 colour) - { - if (Dropdown is IHasAccentColour dropdown) - dropdown.AccentColour = colour; - foreach (var i in TabContainer.Children.OfType()) - i.AccentColour = colour; - } - public class OsuTabItem : TabItem, IHasAccentColour { protected readonly SpriteText Text; diff --git a/osu.Game/Overlays/OverlayTabControl.cs b/osu.Game/Overlays/OverlayTabControl.cs index aa79dde13c..30ae6a9e52 100644 --- a/osu.Game/Overlays/OverlayTabControl.cs +++ b/osu.Game/Overlays/OverlayTabControl.cs @@ -22,6 +22,12 @@ namespace osu.Game.Overlays set => bar.Height = value; } + public override Color4 AccentColour + { + get => base.AccentColour; + set => base.AccentColour = bar.Colour = value; + } + protected OverlayTabControl() { TabContainer.Masking = false; @@ -36,12 +42,6 @@ namespace osu.Game.Overlays }); } - protected override void OnAccentColourChanged(Color4 colour) - { - base.OnAccentColourChanged(colour); - bar.Colour = colour; - } - protected override Dropdown CreateDropdown() => null; protected override TabItem CreateTabItem(T value) => new OverlayTabItem(value); From 6463a32f58f1a05e31e2610fa014428b2cfa2a66 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 26 Jan 2020 17:42:07 +0300 Subject: [PATCH 1014/1829] Split AccentColour setter in two lines --- osu.Game/Overlays/OverlayTabControl.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/OverlayTabControl.cs b/osu.Game/Overlays/OverlayTabControl.cs index 30ae6a9e52..aa96f0e19b 100644 --- a/osu.Game/Overlays/OverlayTabControl.cs +++ b/osu.Game/Overlays/OverlayTabControl.cs @@ -25,7 +25,11 @@ namespace osu.Game.Overlays public override Color4 AccentColour { get => base.AccentColour; - set => base.AccentColour = bar.Colour = value; + set + { + base.AccentColour = value; + bar.Colour = value; + } } protected OverlayTabControl() From 7f538cfa747f069fada8354d4999dfc67f51a45a Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 27 Jan 2020 07:56:18 +0800 Subject: [PATCH 1015/1829] allow setting initial rate instead of reversing --- osu.Game/Rulesets/Mods/ModTimeRamp.cs | 14 ++++++-------- osu.Game/Rulesets/Mods/ModWindDown.cs | 10 ++++++++++ osu.Game/Rulesets/Mods/ModWindUp.cs | 10 ++++++++++ 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModTimeRamp.cs b/osu.Game/Rulesets/Mods/ModTimeRamp.cs index d21990ae91..a9330f9287 100644 --- a/osu.Game/Rulesets/Mods/ModTimeRamp.cs +++ b/osu.Game/Rulesets/Mods/ModTimeRamp.cs @@ -20,12 +20,12 @@ namespace osu.Game.Rulesets.Mods /// private const double final_rate_progress = 0.75f; + [SettingSource("Initial rate", "The starting speed of the track")] + public abstract BindableNumber InitialRate { get; } + [SettingSource("Final rate", "The final speed to ramp to")] public abstract BindableNumber FinalRate { get; } - [SettingSource("Start wounded", "Start at 100% of the final rate")] - public BindableBool Reverse { get; } = new BindableBool(); - private double finalRateTime; private double beginRampTime; @@ -64,10 +64,7 @@ namespace osu.Game.Rulesets.Mods public virtual void Update(Playfield playfield) { - if (!Reverse.Value) - applyAdjustment((track.CurrentTime - beginRampTime) / finalRateTime); - else - applyAdjustment(1 - ((track.CurrentTime - beginRampTime) / finalRateTime)); + applyAdjustment((track.CurrentTime - beginRampTime) / finalRateTime); } /// @@ -75,6 +72,7 @@ namespace osu.Game.Rulesets.Mods /// /// The amount of adjustment to apply (from 0..1). private void applyAdjustment(double amount) => - SpeedChange.Value = 1 + (FinalRate.Value - 1) * Math.Clamp(amount, 0, 1); + // SpeedChange.Value = 1 + (FinalRate.Value - 1) * Math.Clamp(amount, 0, 1); + SpeedChange.Value = InitialRate.Value + (FinalRate.Value - InitialRate.Value) * Math.Clamp(amount, 0, 1); } } diff --git a/osu.Game/Rulesets/Mods/ModWindDown.cs b/osu.Game/Rulesets/Mods/ModWindDown.cs index da3bd75b44..939766fee5 100644 --- a/osu.Game/Rulesets/Mods/ModWindDown.cs +++ b/osu.Game/Rulesets/Mods/ModWindDown.cs @@ -17,6 +17,16 @@ namespace osu.Game.Rulesets.Mods public override IconUsage? Icon => FontAwesome.Solid.ChevronCircleDown; public override double ScoreMultiplier => 1.0; + [SettingSource("Initial rate", "The starting speed of the track")] + public override BindableNumber InitialRate { get; } = new BindableDouble + { + MinValue = 1, + MaxValue = 1.5, + Default = 1, + Value = 1, + Precision = 0.01, + }; + [SettingSource("Final rate", "The speed increase to ramp towards")] public override BindableNumber FinalRate { get; } = new BindableDouble { diff --git a/osu.Game/Rulesets/Mods/ModWindUp.cs b/osu.Game/Rulesets/Mods/ModWindUp.cs index 3f456a42a5..74c6fc22d3 100644 --- a/osu.Game/Rulesets/Mods/ModWindUp.cs +++ b/osu.Game/Rulesets/Mods/ModWindUp.cs @@ -17,6 +17,16 @@ namespace osu.Game.Rulesets.Mods public override IconUsage? Icon => FontAwesome.Solid.ChevronCircleUp; public override double ScoreMultiplier => 1.0; + [SettingSource("Initial rate", "The starting speed of the track")] + public override BindableNumber InitialRate { get; } = new BindableDouble + { + MinValue = 0.5, + MaxValue = 1, + Default = 1, + Value = 1, + Precision = 0.01, + }; + [SettingSource("Final rate", "The speed increase to ramp towards")] public override BindableNumber FinalRate { get; } = new BindableDouble { From a6124ae499eddbe22c799fc8b1de46f74c560f79 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 27 Jan 2020 08:24:15 +0800 Subject: [PATCH 1016/1829] fix typo on ScoreProcessor xmldoc --- osu.Game/Rulesets/Scoring/ScoreProcessor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Scoring/ScoreProcessor.cs b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs index 8ccc2af93b..8eafaa88ec 100644 --- a/osu.Game/Rulesets/Scoring/ScoreProcessor.cs +++ b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs @@ -45,7 +45,7 @@ namespace osu.Game.Rulesets.Scoring public readonly Bindable Rank = new Bindable(ScoreRank.X); /// - /// THe highest combo achieved by this score. + /// The highest combo achieved by this score. /// public readonly BindableInt HighestCombo = new BindableInt(); From 15fd8596c238348c45b5ff367b8d6b5fcfc97f21 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 27 Jan 2020 12:16:00 +0900 Subject: [PATCH 1017/1829] Fix cursor not hiding for screenshots --- osu.Game/Graphics/ScreenshotManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Graphics/ScreenshotManager.cs b/osu.Game/Graphics/ScreenshotManager.cs index 7f20c30048..3ad36577b5 100644 --- a/osu.Game/Graphics/ScreenshotManager.cs +++ b/osu.Game/Graphics/ScreenshotManager.cs @@ -90,7 +90,7 @@ namespace osu.Game.Graphics { ScheduledDelegate waitDelegate = host.DrawThread.Scheduler.AddDelayed(() => { - if (framesWaited++ < frames_to_wait) + if (framesWaited++ >= frames_to_wait) // ReSharper disable once AccessToDisposedClosure framesWaitedEvent.Set(); }, 10, true); From 1f0aaabf7b72966c0eb741cd11822bce123a96fd Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 27 Jan 2020 12:21:17 +0900 Subject: [PATCH 1018/1829] Add tests --- .../SongSelect/TestScenePlaySongSelect.cs | 111 ++++++++++++++++++ .../Visual/ManualInputManagerTestScene.cs | 7 +- 2 files changed, 117 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs index eb812f5d5a..81a44f9f8a 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs @@ -14,6 +14,7 @@ using osu.Framework.Extensions; using osu.Framework.Utils; using osu.Framework.Platform; using osu.Framework.Screens; +using osu.Framework.Testing; using osu.Game.Beatmaps; using osu.Game.Configuration; using osu.Game.Overlays; @@ -25,6 +26,7 @@ using osu.Game.Rulesets.Taiko; using osu.Game.Screens.Select; using osu.Game.Screens.Select.Carousel; using osu.Game.Screens.Select.Filter; +using osuTK.Input; namespace osu.Game.Tests.Visual.SongSelect { @@ -95,6 +97,115 @@ namespace osu.Game.Tests.Visual.SongSelect AddAssert("filter count is 1", () => songSelect.FilterCount == 1); } + [Test] + public void TestChangeBeatmapBeforeEnter() + { + addRulesetImportStep(0); + + createSongSelect(); + + WorkingBeatmap selected = null; + + AddStep("store selected beatmap", () => selected = Beatmap.Value); + + AddStep("select next and enter", () => + { + InputManager.PressKey(Key.Down); + InputManager.ReleaseKey(Key.Down); + InputManager.PressKey(Key.Enter); + InputManager.ReleaseKey(Key.Enter); + }); + + AddAssert("ensure selection changed", () => selected != Beatmap.Value); + + AddUntilStep("wait for return to song select", () => songSelect.IsCurrentScreen()); + AddUntilStep("bindable lease returned", () => !Beatmap.Disabled); + } + + [Test] + public void TestChangeBeatmapAfterEnter() + { + addRulesetImportStep(0); + + createSongSelect(); + + WorkingBeatmap selected = null; + + AddStep("store selected beatmap", () => selected = Beatmap.Value); + + AddStep("select next and enter", () => + { + InputManager.PressKey(Key.Enter); + InputManager.ReleaseKey(Key.Enter); + InputManager.PressKey(Key.Down); + InputManager.ReleaseKey(Key.Down); + }); + + AddAssert("ensure selection didn't change", () => selected == Beatmap.Value); + + AddUntilStep("wait for return to song select", () => songSelect.IsCurrentScreen()); + AddUntilStep("bindable lease returned", () => !Beatmap.Disabled); + } + + [Test] + public void TestChangeBeatmapViaMouseBeforeEnter() + { + addRulesetImportStep(0); + + createSongSelect(); + + WorkingBeatmap selected = null; + + AddStep("store selected beatmap", () => selected = Beatmap.Value); + + AddStep("select next and enter", () => + { + InputManager.MoveMouseTo(songSelect.Carousel.ChildrenOfType() + .First(b => ((CarouselBeatmap)b.Item).Beatmap != songSelect.Carousel.SelectedBeatmap)); + + InputManager.PressButton(MouseButton.Left); + InputManager.ReleaseButton(MouseButton.Left); + + InputManager.PressKey(Key.Enter); + InputManager.ReleaseKey(Key.Enter); + }); + + AddAssert("ensure selection changed", () => selected != Beatmap.Value); + + AddUntilStep("wait for return to song select", () => songSelect.IsCurrentScreen()); + AddUntilStep("bindable lease returned", () => !Beatmap.Disabled); + } + + [Test] + public void TestChangeBeatmapViaMouseAfterEnter() + { + addRulesetImportStep(0); + + createSongSelect(); + + WorkingBeatmap selected = null; + + AddStep("store selected beatmap", () => selected = Beatmap.Value); + + AddStep("select next and enter", () => + { + InputManager.MoveMouseTo(songSelect.Carousel.ChildrenOfType() + .First(b => ((CarouselBeatmap)b.Item).Beatmap != songSelect.Carousel.SelectedBeatmap)); + + InputManager.PressButton(MouseButton.Left); + + InputManager.PressKey(Key.Enter); + InputManager.ReleaseKey(Key.Enter); + + InputManager.ReleaseButton(MouseButton.Left); + }); + + AddAssert("ensure selection didn't change", () => selected == Beatmap.Value); + + AddUntilStep("wait for return to song select", () => songSelect.IsCurrentScreen()); + AddUntilStep("bindable lease returned", () => !Beatmap.Disabled); + } + [Test] public void TestNoFilterOnSimpleResume() { diff --git a/osu.Game/Tests/Visual/ManualInputManagerTestScene.cs b/osu.Game/Tests/Visual/ManualInputManagerTestScene.cs index 86191609a4..a0af07013c 100644 --- a/osu.Game/Tests/Visual/ManualInputManagerTestScene.cs +++ b/osu.Game/Tests/Visual/ManualInputManagerTestScene.cs @@ -8,6 +8,7 @@ using osu.Framework.Testing.Input; using osu.Game.Graphics.Cursor; using osu.Game.Graphics.Sprites; using osu.Game.Graphics.UserInterface; +using osu.Game.Input.Bindings; using osuTK; using osuTK.Graphics; @@ -30,7 +31,11 @@ namespace osu.Game.Tests.Visual InputManager = new ManualInputManager { UseParentInput = true, - Child = content = new MenuCursorContainer { RelativeSizeAxes = Axes.Both }, + Child = new GlobalActionContainer(null) + { + RelativeSizeAxes = Axes.Both, + Child = content = new MenuCursorContainer { RelativeSizeAxes = Axes.Both } + }, }, new Container { From 431b1489b9e859fcb79ea6dfd0709c33fb3d7478 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 27 Jan 2020 13:16:36 +0900 Subject: [PATCH 1019/1829] Add test --- .../TestSceneBreadcrumbControl.cs | 27 +++++++++++++++++-- .../UserInterface/BreadcrumbControl.cs | 2 +- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneBreadcrumbControl.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneBreadcrumbControl.cs index 19eebc89b6..3967b62c95 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneBreadcrumbControl.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneBreadcrumbControl.cs @@ -1,9 +1,11 @@ // 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 NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; using osu.Game.Graphics; using osu.Game.Graphics.UserInterface; @@ -12,11 +14,11 @@ namespace osu.Game.Tests.Visual.UserInterface [TestFixture] public class TestSceneBreadcrumbControl : OsuTestScene { - private readonly BreadcrumbControl breadcrumbs; + private readonly TestBreadcrumbControl breadcrumbs; public TestSceneBreadcrumbControl() { - Add(breadcrumbs = new BreadcrumbControl + Add(breadcrumbs = new TestBreadcrumbControl { Anchor = Anchor.Centre, Origin = Anchor.Centre, @@ -25,8 +27,13 @@ namespace osu.Game.Tests.Visual.UserInterface }); AddStep(@"first", () => breadcrumbs.Current.Value = BreadcrumbTab.Click); + assertVisible(1); + AddStep(@"second", () => breadcrumbs.Current.Value = BreadcrumbTab.The); + assertVisible(2); + AddStep(@"third", () => breadcrumbs.Current.Value = BreadcrumbTab.Circles); + assertVisible(3); } [BackgroundDependencyLoader] @@ -35,11 +42,27 @@ namespace osu.Game.Tests.Visual.UserInterface breadcrumbs.StripColour = colours.Blue; } + private void assertVisible(int count) => AddAssert($"first {count} item(s) visible", () => + { + for (int i = 0; i < count; i++) + { + if (breadcrumbs.GetDrawable((BreadcrumbTab)i).State != Visibility.Visible) + return false; + } + + return true; + }); + private enum BreadcrumbTab { Click, The, Circles, } + + private class TestBreadcrumbControl : BreadcrumbControl + { + public BreadcrumbTabItem GetDrawable(BreadcrumbTab tab) => (BreadcrumbTabItem)TabContainer.First(t => t.Value == tab); + } } } diff --git a/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs b/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs index 4dfb2769dc..84429bf5bd 100644 --- a/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs +++ b/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs @@ -40,7 +40,7 @@ namespace osu.Game.Graphics.UserInterface }; } - protected class BreadcrumbTabItem : OsuTabItem, IStateful + public class BreadcrumbTabItem : OsuTabItem, IStateful { protected virtual float ChevronSize => 10; From 834e82d543074cdfb45480c31d1c83a4d62f727c Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 27 Jan 2020 14:50:24 +0900 Subject: [PATCH 1020/1829] Add comprehensive tests for changelog overlay Includes failing case --- .../Online/TestSceneChangelogOverlay.cs | 57 +++++++++++++------ osu.Game/Overlays/ChangelogOverlay.cs | 16 +++--- osu.sln.DotSettings | 1 + 3 files changed, 48 insertions(+), 26 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneChangelogOverlay.cs b/osu.Game.Tests/Visual/Online/TestSceneChangelogOverlay.cs index 658f678b10..7a8570c09b 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneChangelogOverlay.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneChangelogOverlay.cs @@ -13,7 +13,7 @@ namespace osu.Game.Tests.Visual.Online [TestFixture] public class TestSceneChangelogOverlay : OsuTestScene { - private ChangelogOverlay changelog; + private TestChangelogOverlay changelog; public override IReadOnlyList RequiredTypes => new[] { @@ -29,23 +29,40 @@ namespace osu.Game.Tests.Visual.Online protected override bool UseOnlineAPI => true; - protected override void LoadComplete() + [SetUp] + public void SetUp() => Schedule(() => { - base.LoadComplete(); + Child = changelog = new TestChangelogOverlay(); + }); - Add(changelog = new ChangelogOverlay()); - AddStep(@"Show", changelog.Show); - AddStep(@"Hide", changelog.Hide); + [Test] + public void ShowWithNoFetch() + { + AddStep(@"Show", () => changelog.Show()); + AddUntilStep(@"wait for streams", () => changelog.Streams?.Count > 0); + AddAssert(@"listing displayed", () => changelog.Current.Value == null); + AddAssert(@"no stream selected", () => changelog.Header.Streams.Current.Value == null); + } - AddWaitStep("wait for hide", 3); + [Test] + public void ShowWithListing() + { + AddStep(@"Show with listing", () => changelog.ShowListing()); + AddUntilStep(@"wait for streams", () => changelog.Streams?.Count > 0); + AddAssert(@"listing displayed", () => changelog.Current.Value == null); + AddAssert(@"no stream selected", () => changelog.Header.Streams.Current.Value == null); + } + [Test] + public void ShowWithBuild() + { AddStep(@"Show with Lazer 2018.712.0", () => { changelog.ShowBuild(new APIChangelogBuild { Version = "2018.712.0", DisplayVersion = "2018.712.0", - UpdateStream = new APIUpdateStream { Name = OsuGameBase.CLIENT_STREAM_NAME }, + UpdateStream = new APIUpdateStream { Id = 7, Name = OsuGameBase.CLIENT_STREAM_NAME }, ChangelogEntries = new List { new APIChangelogEntry @@ -56,19 +73,16 @@ namespace osu.Game.Tests.Visual.Online } } }); - changelog.Show(); }); - AddWaitStep("wait for show", 3); - AddStep(@"Hide", changelog.Hide); - AddWaitStep("wait for hide", 3); - - AddStep(@"Show with listing", () => - { - changelog.ShowListing(); - changelog.Show(); - }); + AddUntilStep(@"wait for streams", () => changelog.Streams?.Count > 0); + AddAssert(@"correct build displayed", () => changelog.Current.Value.Version == "2018.712.0"); + AddAssert(@"correct stream selected", () => changelog.Header.Streams.Current.Value.Id == 7); + } + [Test] + public void TestHTMLUnescaping() + { AddStep(@"Ensure HTML string unescaping", () => { changelog.ShowBuild(new APIChangelogBuild @@ -97,5 +111,12 @@ namespace osu.Game.Tests.Visual.Online }); }); } + + private class TestChangelogOverlay : ChangelogOverlay + { + public new List Streams => base.Streams; + + public new ChangelogHeader Header => base.Header; + } } } diff --git a/osu.Game/Overlays/ChangelogOverlay.cs b/osu.Game/Overlays/ChangelogOverlay.cs index 412e29735a..2ce26276d5 100644 --- a/osu.Game/Overlays/ChangelogOverlay.cs +++ b/osu.Game/Overlays/ChangelogOverlay.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; @@ -26,7 +26,7 @@ namespace osu.Game.Overlays { public readonly Bindable Current = new Bindable(); - private ChangelogHeader header; + protected ChangelogHeader Header; private Container content; @@ -34,7 +34,7 @@ namespace osu.Game.Overlays private List builds; - private List streams; + protected List Streams; public ChangelogOverlay() : base(OverlayColourScheme.Purple) @@ -62,7 +62,7 @@ namespace osu.Game.Overlays Direction = FillDirection.Vertical, Children = new Drawable[] { - header = new ChangelogHeader + Header = new ChangelogHeader { ListingSelected = ShowListing, }, @@ -78,7 +78,7 @@ namespace osu.Game.Overlays sampleBack = audio.Samples.Get(@"UI/generic-select-soft"); - header.Current.BindTo(Current); + Header.Current.BindTo(Current); Current.BindValueChanged(e => { @@ -117,7 +117,7 @@ namespace osu.Game.Overlays performAfterFetch(() => { var build = builds.Find(b => b.Version == version && b.UpdateStream.Name == updateStream) - ?? streams.Find(s => s.Name == updateStream)?.LatestBuild; + ?? Streams.Find(s => s.Name == updateStream)?.LatestBuild; if (build != null) ShowBuild(build); @@ -179,9 +179,9 @@ namespace osu.Game.Overlays res.Streams.ForEach(s => s.LatestBuild.UpdateStream = res.Streams.Find(s2 => s2.Id == s.LatestBuild.UpdateStream.Id)); builds = res.Builds; - streams = res.Streams; + Streams = res.Streams; - header.Streams.Populate(res.Streams); + Header.Streams.Populate(res.Streams); tcs.SetResult(true); }); diff --git a/osu.sln.DotSettings b/osu.sln.DotSettings index 15ea20084d..6d131bf423 100644 --- a/osu.sln.DotSettings +++ b/osu.sln.DotSettings @@ -298,6 +298,7 @@ GL GLSL HID + HTML HUD ID IL From 292a82ac273f2f2df092aa7b4368e5e7ff9ef5c4 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 27 Jan 2020 14:52:21 +0900 Subject: [PATCH 1021/1829] Fix incorrect propagation of stream/build on initial display with build --- .../Overlays/Changelog/ChangelogHeader.cs | 19 +++++++++++++++++-- .../Changelog/UpdateStreamBadgeArea.cs | 2 -- osu.Game/Overlays/ChangelogOverlay.cs | 4 ++-- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/osu.Game/Overlays/Changelog/ChangelogHeader.cs b/osu.Game/Overlays/Changelog/ChangelogHeader.cs index 70a45f2667..7755c0f64b 100644 --- a/osu.Game/Overlays/Changelog/ChangelogHeader.cs +++ b/osu.Game/Overlays/Changelog/ChangelogHeader.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System; +using System.Collections.Generic; using System.Linq; using osu.Framework.Allocation; using osu.Framework.Bindables; @@ -37,7 +38,7 @@ namespace osu.Game.Overlays.Changelog Streams.Current.ValueChanged += e => { - if (e.NewValue?.LatestBuild != null && e.NewValue != Current.Value?.UpdateStream) + if (e.NewValue?.LatestBuild != null && !e.NewValue.Equals(Current.Value?.UpdateStream)) Current.Value = e.NewValue.LatestBuild; }; } @@ -54,7 +55,7 @@ namespace osu.Game.Overlays.Changelog BreadcrumbControl.AddItem(e.NewValue.ToString()); BreadcrumbControl.Current.Value = e.NewValue.ToString(); - Streams.Current.Value = Streams.Items.FirstOrDefault(s => s.Name == e.NewValue.UpdateStream.Name); + updateCurrentStream(); title.Version = e.NewValue.UpdateStream.DisplayName; } @@ -80,6 +81,20 @@ namespace osu.Game.Overlays.Changelog protected override ScreenTitle CreateTitle() => title = new ChangelogHeaderTitle(); + public void Populate(List streams) + { + Streams.Populate(streams); + updateCurrentStream(); + } + + private void updateCurrentStream() + { + if (Current.Value == null) + return; + + Streams.Current.Value = Streams.Items.FirstOrDefault(s => s.Name == Current.Value.UpdateStream.Name); + } + public class HeaderBackground : Sprite { public HeaderBackground() diff --git a/osu.Game/Overlays/Changelog/UpdateStreamBadgeArea.cs b/osu.Game/Overlays/Changelog/UpdateStreamBadgeArea.cs index 2b48811bd6..ca57ba24e2 100644 --- a/osu.Game/Overlays/Changelog/UpdateStreamBadgeArea.cs +++ b/osu.Game/Overlays/Changelog/UpdateStreamBadgeArea.cs @@ -29,8 +29,6 @@ namespace osu.Game.Overlays.Changelog public void Populate(List streams) { - Current.Value = null; - foreach (APIUpdateStream updateStream in streams) AddItem(updateStream); } diff --git a/osu.Game/Overlays/ChangelogOverlay.cs b/osu.Game/Overlays/ChangelogOverlay.cs index 2ce26276d5..90ba206077 100644 --- a/osu.Game/Overlays/ChangelogOverlay.cs +++ b/osu.Game/Overlays/ChangelogOverlay.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; @@ -181,7 +181,7 @@ namespace osu.Game.Overlays builds = res.Builds; Streams = res.Streams; - Header.Streams.Populate(res.Streams); + Header.Populate(res.Streams); tcs.SetResult(true); }); From 1c64b70b0674f270cef8aa25d3a28615f8373518 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 26 Jan 2020 19:06:50 +0900 Subject: [PATCH 1022/1829] Revert "Fix crash due to misordered selection events" This reverts commit 2d74609f5030b07844fab427bb4f11e7915ebdbd. --- osu.Game/Screens/Select/BeatmapCarousel.cs | 8 -------- 1 file changed, 8 deletions(-) diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs b/osu.Game/Screens/Select/BeatmapCarousel.cs index 420aa14a99..4433543ca1 100644 --- a/osu.Game/Screens/Select/BeatmapCarousel.cs +++ b/osu.Game/Screens/Select/BeatmapCarousel.cs @@ -559,14 +559,6 @@ namespace osu.Game.Screens.Select { if (state.NewValue == CarouselItemState.Selected) { - if (!AllowSelection) - { - // CarouselBeatmap may trigger a state change from OnClick, unaware that it is not allowed to. - // we revert this change here to ensure sanity. - c.State.Value = state.OldValue; - return; - } - selectedBeatmapSet = set; SelectionChanged?.Invoke(c.Beatmap); From 7aa5e8c23eec292b2f3b7d669203ca639d2478e2 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 27 Jan 2020 14:55:47 +0900 Subject: [PATCH 1023/1829] Limit input propagation correctly --- osu.Game/Screens/Select/BeatmapCarousel.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs b/osu.Game/Screens/Select/BeatmapCarousel.cs index 4433543ca1..2bb5ba612e 100644 --- a/osu.Game/Screens/Select/BeatmapCarousel.cs +++ b/osu.Game/Screens/Select/BeatmapCarousel.cs @@ -56,6 +56,9 @@ namespace osu.Game.Screens.Select public override bool HandleNonPositionalInput => AllowSelection; public override bool HandlePositionalInput => AllowSelection; + public override bool PropagatePositionalInputSubTree => AllowSelection; + public override bool PropagateNonPositionalInputSubTree => AllowSelection; + /// /// Whether carousel items have completed asynchronously loaded. /// @@ -449,8 +452,6 @@ namespace osu.Game.Screens.Select return true; } - protected override bool ReceivePositionalInputAtSubTree(Vector2 screenSpacePos) => ReceivePositionalInputAt(screenSpacePos); - protected override void Update() { base.Update(); From 5609c92aafa89a99ff79943c4dd2481c421897f0 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2020 07:50:21 +0000 Subject: [PATCH 1024/1829] Bump DiscordRichPresence from 1.0.121 to 1.0.147 Bumps [DiscordRichPresence](https://github.com/Lachee/discord-rpc-csharp) from 1.0.121 to 1.0.147. - [Release notes](https://github.com/Lachee/discord-rpc-csharp/releases) - [Commits](https://github.com/Lachee/discord-rpc-csharp/commits) Signed-off-by: dependabot-preview[bot] --- osu.Desktop/osu.Desktop.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Desktop/osu.Desktop.csproj b/osu.Desktop/osu.Desktop.csproj index da47ad8223..b9294088f4 100644 --- a/osu.Desktop/osu.Desktop.csproj +++ b/osu.Desktop/osu.Desktop.csproj @@ -29,7 +29,7 @@ - + From 508b92e611c3c20ffa4a7bbdecd64b2f3db42586 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 27 Jan 2020 15:57:55 +0900 Subject: [PATCH 1025/1829] Update beat divisor colours to be more distinguishable Close to osu-stable --- osu.Game/Screens/Edit/BindableBeatDivisor.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/osu.Game/Screens/Edit/BindableBeatDivisor.cs b/osu.Game/Screens/Edit/BindableBeatDivisor.cs index ce95d81f54..e8f7c75cc1 100644 --- a/osu.Game/Screens/Edit/BindableBeatDivisor.cs +++ b/osu.Game/Screens/Edit/BindableBeatDivisor.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; @@ -52,29 +52,32 @@ namespace osu.Game.Screens.Edit { switch (beatDivisor) { + case 1: + return Color4.White; + case 2: - return colours.BlueLight; + return colours.Red; case 4: return colours.Blue; case 8: - return colours.BlueDarker; + return colours.Yellow; case 16: return colours.PurpleDark; case 3: - return colours.YellowLight; + return colours.Purple; case 6: - return colours.Yellow; + return colours.YellowDark; case 12: return colours.YellowDarker; default: - return Color4.White; + return Color4.Red; } } } From df665c3a3cd98744c5381282c124148b60d83cdc Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 27 Jan 2020 16:00:51 +0900 Subject: [PATCH 1026/1829] Move beat index colour retrieval to static function --- osu.Game/Screens/Edit/BindableBeatDivisor.cs | 23 ++++++++++++++++++- .../Compose/Components/DistanceSnapGrid.cs | 14 +---------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/osu.Game/Screens/Edit/BindableBeatDivisor.cs b/osu.Game/Screens/Edit/BindableBeatDivisor.cs index e8f7c75cc1..be1e121a99 100644 --- a/osu.Game/Screens/Edit/BindableBeatDivisor.cs +++ b/osu.Game/Screens/Edit/BindableBeatDivisor.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; @@ -80,5 +80,26 @@ namespace osu.Game.Screens.Edit return Color4.Red; } } + + /// + /// Retrieves the applicable divisor for a specific beat index. + /// + /// The 0-based beat index. + /// The beat divisor. + /// The applicable divisor. + public static int GetDivisorForBeatIndex(int index, int beatDivisor) + { + int beat = index % beatDivisor; + + for (int i = 0; i < BindableBeatDivisor.VALID_DIVISORS.Length; i++) + { + int divisor = BindableBeatDivisor.VALID_DIVISORS[i]; + + if ((beat * divisor) % beatDivisor == 0) + return divisor; + } + + return 0; + } } } diff --git a/osu.Game/Screens/Edit/Compose/Components/DistanceSnapGrid.cs b/osu.Game/Screens/Edit/Compose/Components/DistanceSnapGrid.cs index 53c5cf97fa..3bbccd612b 100644 --- a/osu.Game/Screens/Edit/Compose/Components/DistanceSnapGrid.cs +++ b/osu.Game/Screens/Edit/Compose/Components/DistanceSnapGrid.cs @@ -130,19 +130,7 @@ namespace osu.Game.Screens.Edit.Compose.Components /// The applicable colour. protected ColourInfo GetColourForBeatIndex(int index) { - int beat = (index + 1) % beatDivisor.Value; - ColourInfo colour = Colours.Gray5; - - for (int i = 0; i < BindableBeatDivisor.VALID_DIVISORS.Length; i++) - { - int divisor = BindableBeatDivisor.VALID_DIVISORS[i]; - - if ((beat * divisor) % beatDivisor.Value == 0) - { - colour = BindableBeatDivisor.GetColourFor(divisor, Colours); - break; - } - } + var colour = BindableBeatDivisor.GetColourFor(BindableBeatDivisor.GetDivisorForBeatIndex(index + 1, beatDivisor.Value), Colours); int repeatIndex = index / beatDivisor.Value; return colour.MultiplyAlpha(0.5f / (repeatIndex + 1)); From 03b7c6cfa7ed291dc9b9c2913d12c7b4378c65b6 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 27 Jan 2020 16:54:36 +0900 Subject: [PATCH 1027/1829] Add base test scene for timeline --- .../TestSceneTimelineBlueprintContainer.cs | 135 +--------------- .../Visual/Editor/TimelineTestScene.cs | 148 ++++++++++++++++++ 2 files changed, 150 insertions(+), 133 deletions(-) create mode 100644 osu.Game.Tests/Visual/Editor/TimelineTestScene.cs diff --git a/osu.Game.Tests/Visual/Editor/TestSceneTimelineBlueprintContainer.cs b/osu.Game.Tests/Visual/Editor/TestSceneTimelineBlueprintContainer.cs index e7b2508ac7..3c75fd5310 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneTimelineBlueprintContainer.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneTimelineBlueprintContainer.cs @@ -1,146 +1,15 @@ // 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 NUnit.Framework; -using osu.Framework.Allocation; -using osu.Framework.Audio; -using osu.Framework.Bindables; using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Shapes; -using osu.Framework.Timing; -using osu.Game.Beatmaps; -using osu.Game.Graphics.UserInterface; -using osu.Game.Rulesets.Edit; -using osu.Game.Rulesets.Objects; -using osu.Game.Screens.Edit; using osu.Game.Screens.Edit.Compose.Components.Timeline; -using osuTK; -using osuTK.Graphics; namespace osu.Game.Tests.Visual.Editor { [TestFixture] - public class TestSceneTimelineBlueprintContainer : EditorClockTestScene + public class TestSceneTimelineBlueprintContainer : TimelineTestScene { - public override IReadOnlyList RequiredTypes => new[] - { - typeof(TimelineArea), - typeof(Timeline), - typeof(TimelineButton), - typeof(CentreMarker) - }; - - [BackgroundDependencyLoader] - private void load(AudioManager audio) - { - Beatmap.Value = new WaveformTestBeatmap(audio); - - var editorBeatmap = new EditorBeatmap((Beatmap)Beatmap.Value.Beatmap, BeatDivisor); - - Dependencies.Cache(editorBeatmap); - Dependencies.CacheAs(editorBeatmap); - - Children = new Drawable[] - { - new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Vertical, - Spacing = new Vector2(0, 5), - Children = new Drawable[] - { - new StartStopButton(), - new AudioVisualiser(), - } - }, - new TimelineArea - { - Child = new TimelineBlueprintContainer(), - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - RelativeSizeAxes = Axes.X, - Size = new Vector2(0.8f, 100) - } - }; - } - - private class AudioVisualiser : CompositeDrawable - { - private readonly Drawable marker; - - [Resolved] - private IBindable beatmap { get; set; } - - [Resolved] - private IAdjustableClock adjustableClock { get; set; } - - public AudioVisualiser() - { - Size = new Vector2(250, 25); - - InternalChildren = new[] - { - new Box - { - RelativeSizeAxes = Axes.Both, - Alpha = 0.25f, - }, - marker = new Box - { - RelativePositionAxes = Axes.X, - RelativeSizeAxes = Axes.Y, - Width = 2, - } - }; - } - - protected override void Update() - { - base.Update(); - - if (beatmap.Value.Track.IsLoaded) - marker.X = (float)(adjustableClock.CurrentTime / beatmap.Value.Track.Length); - } - } - - private class StartStopButton : OsuButton - { - private IAdjustableClock adjustableClock; - private bool started; - - public StartStopButton() - { - BackgroundColour = Color4.SlateGray; - Size = new Vector2(100, 50); - Text = "Start"; - - Action = onClick; - } - - [BackgroundDependencyLoader] - private void load(IAdjustableClock adjustableClock) - { - this.adjustableClock = adjustableClock; - } - - private void onClick() - { - if (started) - { - adjustableClock.Stop(); - Text = "Start"; - } - else - { - adjustableClock.Start(); - Text = "Stop"; - } - - started = !started; - } - } + public override Drawable CreateTestComponent() => new TimelineBlueprintContainer(); } } diff --git a/osu.Game.Tests/Visual/Editor/TimelineTestScene.cs b/osu.Game.Tests/Visual/Editor/TimelineTestScene.cs new file mode 100644 index 0000000000..b5e526d3c2 --- /dev/null +++ b/osu.Game.Tests/Visual/Editor/TimelineTestScene.cs @@ -0,0 +1,148 @@ +// 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.Framework.Audio; +using osu.Framework.Bindables; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; +using osu.Framework.Timing; +using osu.Game.Beatmaps; +using osu.Game.Graphics.UserInterface; +using osu.Game.Rulesets.Edit; +using osu.Game.Rulesets.Objects; +using osu.Game.Screens.Edit; +using osu.Game.Screens.Edit.Compose.Components.Timeline; +using osuTK; +using osuTK.Graphics; + +namespace osu.Game.Tests.Visual.Editor +{ + public abstract class TimelineTestScene : EditorClockTestScene + { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(TimelineArea), + typeof(Timeline), + typeof(TimelineButton), + typeof(CentreMarker) + }; + + protected TimelineArea TimelineArea { get; private set; } + + [BackgroundDependencyLoader] + private void load(AudioManager audio) + { + Beatmap.Value = new WaveformTestBeatmap(audio); + + var editorBeatmap = new EditorBeatmap((Beatmap)Beatmap.Value.Beatmap, BeatDivisor); + + Dependencies.Cache(editorBeatmap); + Dependencies.CacheAs(editorBeatmap); + + AddRange(new Drawable[] + { + new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Vertical, + Spacing = new Vector2(0, 5), + Children = new Drawable[] + { + new StartStopButton(), + new AudioVisualiser(), + } + }, + TimelineArea = new TimelineArea + { + Child = CreateTestComponent(), + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + RelativeSizeAxes = Axes.X, + Size = new Vector2(0.8f, 100), + } + }); + } + + public abstract Drawable CreateTestComponent(); + + private class AudioVisualiser : CompositeDrawable + { + private readonly Drawable marker; + + [Resolved] + private IBindable beatmap { get; set; } + + [Resolved] + private IAdjustableClock adjustableClock { get; set; } + + public AudioVisualiser() + { + Size = new Vector2(250, 25); + + InternalChildren = new[] + { + new Box + { + RelativeSizeAxes = Axes.Both, + Alpha = 0.25f, + }, + marker = new Box + { + RelativePositionAxes = Axes.X, + RelativeSizeAxes = Axes.Y, + Width = 2, + } + }; + } + + protected override void Update() + { + base.Update(); + + if (beatmap.Value.Track.IsLoaded) + marker.X = (float)(adjustableClock.CurrentTime / beatmap.Value.Track.Length); + } + } + + private class StartStopButton : OsuButton + { + private IAdjustableClock adjustableClock; + private bool started; + + public StartStopButton() + { + BackgroundColour = Color4.SlateGray; + Size = new Vector2(100, 50); + Text = "Start"; + + Action = onClick; + } + + [BackgroundDependencyLoader] + private void load(IAdjustableClock adjustableClock) + { + this.adjustableClock = adjustableClock; + } + + private void onClick() + { + if (started) + { + adjustableClock.Stop(); + Text = "Start"; + } + else + { + adjustableClock.Start(); + Text = "Stop"; + } + + started = !started; + } + } + } +} From e24c4ab90101ed2c53035db225a5c85339dc6183 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 27 Jan 2020 16:54:57 +0900 Subject: [PATCH 1028/1829] Adjust zoom defaults for timeline to be more useful --- .../Screens/Edit/Compose/Components/Timeline/Timeline.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs index 96395696c3..5b2dd343e6 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs @@ -30,7 +30,10 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline { ZoomDuration = 200; ZoomEasing = Easing.OutQuint; - Zoom = 10; + + Zoom = 60; + MaxZoom = 240; + ScrollbarVisible = false; } From 084fa2f04a8fa8b1d6a3c34b7744c590c0256f75 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 27 Jan 2020 17:34:25 +0900 Subject: [PATCH 1029/1829] Add timeline beat display --- .../TestSceneTimelineBeatLineDisplay.cs | 32 +++++++ .../Visualisations/PointVisualisation.cs | 2 +- .../Timeline/TimelineBeatLineDisplay.cs | 90 +++++++++++++++++++ .../Screens/Edit/EditorScreenWithTimeline.cs | 6 +- 4 files changed, 128 insertions(+), 2 deletions(-) create mode 100644 osu.Game.Tests/Visual/Editor/TestSceneTimelineBeatLineDisplay.cs create mode 100644 osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBeatLineDisplay.cs diff --git a/osu.Game.Tests/Visual/Editor/TestSceneTimelineBeatLineDisplay.cs b/osu.Game.Tests/Visual/Editor/TestSceneTimelineBeatLineDisplay.cs new file mode 100644 index 0000000000..50a33852be --- /dev/null +++ b/osu.Game.Tests/Visual/Editor/TestSceneTimelineBeatLineDisplay.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 NUnit.Framework; +using osu.Framework.Allocation; +using osu.Framework.Graphics; +using osu.Game.Screens.Edit.Compose.Components; +using osu.Game.Screens.Edit.Compose.Components.Timeline; +using osuTK; + +namespace osu.Game.Tests.Visual.Editor +{ + [TestFixture] + public class TestSceneTimelineBeatLineDisplay : TimelineTestScene + { + public override Drawable CreateTestComponent() => new TimelineBeatLineDisplay(); + + [BackgroundDependencyLoader] + private void load() + { + BeatDivisor.Value = 4; + + Add(new BeatDivisorControl(BeatDivisor) + { + Anchor = Anchor.TopRight, + Origin = Anchor.TopRight, + Margin = new MarginPadding(30), + Size = new Vector2(90) + }); + } + } +} diff --git a/osu.Game/Screens/Edit/Components/Timelines/Summary/Visualisations/PointVisualisation.cs b/osu.Game/Screens/Edit/Components/Timelines/Summary/Visualisations/PointVisualisation.cs index 9c00cce57a..1ac960039e 100644 --- a/osu.Game/Screens/Edit/Components/Timelines/Summary/Visualisations/PointVisualisation.cs +++ b/osu.Game/Screens/Edit/Components/Timelines/Summary/Visualisations/PointVisualisation.cs @@ -12,7 +12,7 @@ namespace osu.Game.Screens.Edit.Components.Timelines.Summary.Visualisations /// public class PointVisualisation : Box { - protected PointVisualisation(double startTime) + public PointVisualisation(double startTime) { Origin = Anchor.TopCentre; diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBeatLineDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBeatLineDisplay.cs new file mode 100644 index 0000000000..0a6fa2be66 --- /dev/null +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBeatLineDisplay.cs @@ -0,0 +1,90 @@ +// 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.Allocation; +using osu.Framework.Bindables; +using osu.Framework.Graphics; +using osu.Game.Beatmaps; +using osu.Game.Graphics; +using osu.Game.Screens.Edit.Components.Timelines.Summary.Parts; +using osu.Game.Screens.Edit.Components.Timelines.Summary.Visualisations; + +namespace osu.Game.Screens.Edit.Compose.Components.Timeline +{ + public class TimelineBeatLineDisplay : TimelinePart + { + [Resolved] + private EditorBeatmap beatmap { get; set; } + + [Resolved] + private Bindable working { get; set; } + + [Resolved] + private BindableBeatDivisor beatDivisor { get; set; } + + [Resolved] + private OsuColour colours { get; set; } + + public TimelineBeatLineDisplay() + { + RelativeSizeAxes = Axes.Both; + } + + [BackgroundDependencyLoader] + private void load() + { + beatDivisor.BindValueChanged(_ => createLines(), true); + } + + private void createLines() + { + Clear(); + + for (var i = 0; i < beatmap.ControlPointInfo.TimingPoints.Count; i++) + { + var point = beatmap.ControlPointInfo.TimingPoints[i]; + var until = beatmap.ControlPointInfo.TimingPoints.Count < i + 1 ? beatmap.ControlPointInfo.TimingPoints[i + 1].Time : working.Value.Track.Length; + + int beat = 0; + + for (double t = point.Time; t < until; t += point.BeatLength / beatDivisor.Value) + { + var indexInBeat = beat % beatDivisor.Value; + + if (indexInBeat == 0) + { + Add(new PointVisualisation(t) + { + Colour = BindableBeatDivisor.GetColourFor(1, colours), + Anchor = Anchor.BottomLeft, + Origin = Anchor.BottomLeft, + }); + } + else + { + var divisor = BindableBeatDivisor.GetDivisorForBeatIndex(beat, beatDivisor.Value); + var colour = BindableBeatDivisor.GetColourFor(divisor, colours); + var height = 0.1f - (float)divisor / BindableBeatDivisor.VALID_DIVISORS.Last() * 0.08f; + + Add(new PointVisualisation(t) + { + Colour = colour, + Height = height, + }); + + Add(new PointVisualisation(t) + { + Colour = colour, + Anchor = Anchor.BottomLeft, + Origin = Anchor.BottomLeft, + Height = height, + }); + } + + beat++; + } + } + } + } +} diff --git a/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs b/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs index 8967f24185..0f81194894 100644 --- a/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs +++ b/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs @@ -102,7 +102,11 @@ namespace osu.Game.Screens.Edit LoadComponentAsync(new TimelineArea { RelativeSizeAxes = Axes.Both, - Child = CreateTimelineContent() + Children = new[] + { + new TimelineBeatLineDisplay(), + CreateTimelineContent(), + } }, timelineContainer.Add); }); } From 493390b75088993c67d6c6c8d662b366483cb622 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 27 Jan 2020 18:07:46 +0900 Subject: [PATCH 1030/1829] Rename class to TimelineTickDisplay --- .../Visual/Editor/TestSceneTimelineBeatLineDisplay.cs | 2 +- .../{TimelineBeatLineDisplay.cs => TimelineTickDisplay.cs} | 4 ++-- osu.Game/Screens/Edit/EditorScreenWithTimeline.cs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename osu.Game/Screens/Edit/Compose/Components/Timeline/{TimelineBeatLineDisplay.cs => TimelineTickDisplay.cs} (96%) diff --git a/osu.Game.Tests/Visual/Editor/TestSceneTimelineBeatLineDisplay.cs b/osu.Game.Tests/Visual/Editor/TestSceneTimelineBeatLineDisplay.cs index 50a33852be..3b04496792 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneTimelineBeatLineDisplay.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneTimelineBeatLineDisplay.cs @@ -13,7 +13,7 @@ namespace osu.Game.Tests.Visual.Editor [TestFixture] public class TestSceneTimelineBeatLineDisplay : TimelineTestScene { - public override Drawable CreateTestComponent() => new TimelineBeatLineDisplay(); + public override Drawable CreateTestComponent() => new TimelineTickDisplay(); [BackgroundDependencyLoader] private void load() diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBeatLineDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineTickDisplay.cs similarity index 96% rename from osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBeatLineDisplay.cs rename to osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineTickDisplay.cs index 0a6fa2be66..03fb1fdba1 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBeatLineDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineTickDisplay.cs @@ -12,7 +12,7 @@ using osu.Game.Screens.Edit.Components.Timelines.Summary.Visualisations; namespace osu.Game.Screens.Edit.Compose.Components.Timeline { - public class TimelineBeatLineDisplay : TimelinePart + public class TimelineTickDisplay : TimelinePart { [Resolved] private EditorBeatmap beatmap { get; set; } @@ -26,7 +26,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline [Resolved] private OsuColour colours { get; set; } - public TimelineBeatLineDisplay() + public TimelineTickDisplay() { RelativeSizeAxes = Axes.Both; } diff --git a/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs b/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs index 0f81194894..7ee1005add 100644 --- a/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs +++ b/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs @@ -104,7 +104,7 @@ namespace osu.Game.Screens.Edit RelativeSizeAxes = Axes.Both, Children = new[] { - new TimelineBeatLineDisplay(), + new TimelineTickDisplay(), CreateTimelineContent(), } }, timelineContainer.Add); From d5fda053f4333bd6c68715c3cc077412d5607b57 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 27 Jan 2020 18:08:30 +0900 Subject: [PATCH 1031/1829] Use centre origin/anchors --- .../Edit/Compose/Components/Timeline/TimelineTickDisplay.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineTickDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineTickDisplay.cs index 03fb1fdba1..f9b92c0504 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineTickDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineTickDisplay.cs @@ -57,8 +57,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline Add(new PointVisualisation(t) { Colour = BindableBeatDivisor.GetColourFor(1, colours), - Anchor = Anchor.BottomLeft, - Origin = Anchor.BottomLeft, + Origin = Anchor.TopCentre, }); } else @@ -71,13 +70,14 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline { Colour = colour, Height = height, + Origin = Anchor.TopCentre, }); Add(new PointVisualisation(t) { Colour = colour, Anchor = Anchor.BottomLeft, - Origin = Anchor.BottomLeft, + Origin = Anchor.BottomCentre, Height = height, }); } From 9a2867d3d97e8becceffa5d7b6866ae336758cdb Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 27 Jan 2020 18:10:42 +0900 Subject: [PATCH 1032/1829] Rename test class --- ...melineBeatLineDisplay.cs => TestSceneTimelineTickDisplay.cs} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename osu.Game.Tests/Visual/Editor/{TestSceneTimelineBeatLineDisplay.cs => TestSceneTimelineTickDisplay.cs} (92%) diff --git a/osu.Game.Tests/Visual/Editor/TestSceneTimelineBeatLineDisplay.cs b/osu.Game.Tests/Visual/Editor/TestSceneTimelineTickDisplay.cs similarity index 92% rename from osu.Game.Tests/Visual/Editor/TestSceneTimelineBeatLineDisplay.cs rename to osu.Game.Tests/Visual/Editor/TestSceneTimelineTickDisplay.cs index 3b04496792..43a3cd6122 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneTimelineBeatLineDisplay.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneTimelineTickDisplay.cs @@ -11,7 +11,7 @@ using osuTK; namespace osu.Game.Tests.Visual.Editor { [TestFixture] - public class TestSceneTimelineBeatLineDisplay : TimelineTestScene + public class TestSceneTimelineTickDisplay : TimelineTestScene { public override Drawable CreateTestComponent() => new TimelineTickDisplay(); From fd7f07433da4b6f95d75bbce6c328c29e5d72ca4 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 27 Jan 2020 18:26:44 +0900 Subject: [PATCH 1033/1829] Ensure selection has occurred before storing value --- .../Visual/SongSelect/TestScenePlaySongSelect.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs index 81a44f9f8a..98b8e3c5d6 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs @@ -104,6 +104,8 @@ namespace osu.Game.Tests.Visual.SongSelect createSongSelect(); + AddUntilStep("wait for initial selection", () => !Beatmap.IsDefault); + WorkingBeatmap selected = null; AddStep("store selected beatmap", () => selected = Beatmap.Value); @@ -129,6 +131,8 @@ namespace osu.Game.Tests.Visual.SongSelect createSongSelect(); + AddUntilStep("wait for initial selection", () => !Beatmap.IsDefault); + WorkingBeatmap selected = null; AddStep("store selected beatmap", () => selected = Beatmap.Value); @@ -154,6 +158,8 @@ namespace osu.Game.Tests.Visual.SongSelect createSongSelect(); + AddUntilStep("wait for initial selection", () => !Beatmap.IsDefault); + WorkingBeatmap selected = null; AddStep("store selected beatmap", () => selected = Beatmap.Value); @@ -183,6 +189,8 @@ namespace osu.Game.Tests.Visual.SongSelect createSongSelect(); + AddUntilStep("wait for initial selection", () => !Beatmap.IsDefault); + WorkingBeatmap selected = null; AddStep("store selected beatmap", () => selected = Beatmap.Value); From 79cdfc6dc211ec3086843d8bfddb998df80db4ed Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 27 Jan 2020 12:55:19 +0300 Subject: [PATCH 1034/1829] Use OverlayColourProvider --- .../Online/TestSceneUserProfileScores.cs | 23 ++++++++++++++++--- .../Visual/Online/TestSceneUserRanks.cs | 5 ++++ .../Profile/Sections/ProfileItemContainer.cs | 7 +++--- .../Sections/Ranks/DrawableProfileScore.cs | 11 +++++---- 4 files changed, 35 insertions(+), 11 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneUserProfileScores.cs b/osu.Game.Tests/Visual/Online/TestSceneUserProfileScores.cs index a303d88037..19b72e7071 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneUserProfileScores.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneUserProfileScores.cs @@ -12,6 +12,8 @@ using osuTK; using osu.Game.Beatmaps; using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Osu.Mods; +using osu.Game.Overlays; +using osu.Framework.Allocation; namespace osu.Game.Tests.Visual.Online { @@ -74,11 +76,26 @@ namespace osu.Game.Tests.Visual.Online Spacing = new Vector2(0, 10), Children = new[] { - new DrawableProfileScore(score), - new DrawableProfileScore(noPPScore), - new DrawableProfileWeightedScore(score, 0.85), + new ColourProvidedContainer(OverlayColourScheme.Green, new DrawableProfileScore(score)), + new ColourProvidedContainer(OverlayColourScheme.Pink, new DrawableProfileScore(noPPScore)), + new ColourProvidedContainer(OverlayColourScheme.Pink, new DrawableProfileWeightedScore(score, 0.85)) } }); } + + private class ColourProvidedContainer : Container + { + [Cached] + private readonly OverlayColourProvider colourProvider; + + public ColourProvidedContainer(OverlayColourScheme colourScheme, DrawableProfileScore score) + { + colourProvider = new OverlayColourProvider(colourScheme); + + AutoSizeAxes = Axes.Y; + RelativeSizeAxes = Axes.X; + Add(score); + } + } } } diff --git a/osu.Game.Tests/Visual/Online/TestSceneUserRanks.cs b/osu.Game.Tests/Visual/Online/TestSceneUserRanks.cs index 5cbdfb561e..c8e94b2915 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneUserRanks.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneUserRanks.cs @@ -4,11 +4,13 @@ using System; using System.Collections.Generic; using NUnit.Framework; +using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Game.Graphics; using osu.Game.Graphics.Containers; +using osu.Game.Overlays; using osu.Game.Overlays.Profile.Sections; using osu.Game.Overlays.Profile.Sections.Ranks; using osu.Game.Users; @@ -27,6 +29,9 @@ namespace osu.Game.Tests.Visual.Online typeof(RanksSection) }; + [Cached] + private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Green); + public TestSceneUserRanks() { RanksSection ranks; diff --git a/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs b/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs index 99cad26a64..717ec4fb1a 100644 --- a/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs +++ b/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs @@ -6,7 +6,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 osuTK.Graphics; namespace osu.Game.Overlays.Profile.Sections @@ -43,10 +42,10 @@ namespace osu.Game.Overlays.Profile.Sections } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - background.Colour = idleColour = colours.GreySeafoam; - hoverColour = colours.GreySeafoamLight; + background.Colour = idleColour = colourProvider.Background4; + hoverColour = colourProvider.Background3; } protected override bool OnHover(HoverEvent e) diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs index 722b4d2dae..9145ce6894 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs @@ -30,6 +30,9 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks [Resolved] private OsuColour colours { get; set; } + [Resolved] + private OverlayColourProvider colourProvider { get; set; } + public DrawableProfileScore(ScoreInfo score) { Score = score; @@ -91,7 +94,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks }, new DrawableDate(Score.Date, 12) { - Colour = colours.GreySeafoamLighter + Colour = colourProvider.Foreground1 } } } @@ -192,7 +195,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks Origin = Anchor.BottomLeft, Font = OsuFont.GetFont(weight: FontWeight.Bold), Text = $"{Score.PP:0}", - Colour = colours.GreenLight + Colour = colourProvider.Highlight1 }, new OsuSpriteText { @@ -200,7 +203,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks Origin = Anchor.BottomLeft, Font = OsuFont.GetFont(size: 12, weight: FontWeight.Bold), Text = "pp", - Colour = colours.Green + Colour = colourProvider.Light3 } } }; @@ -210,7 +213,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks { Font = OsuFont.GetFont(weight: FontWeight.Bold), Text = "-", - Colour = colours.GreenLight + Colour = colourProvider.Highlight1 }; } From ed2737e0276efa75859ff1f205c9e58e3ef26d72 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 27 Jan 2020 14:47:47 +0300 Subject: [PATCH 1035/1829] Recolour TotalCommentCounter --- .../Online/TestSceneTotalCommentsCounter.cs | 5 +++++ .../Overlays/Comments/TotalCommentsCounter.cs | 16 +++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneTotalCommentsCounter.cs b/osu.Game.Tests/Visual/Online/TestSceneTotalCommentsCounter.cs index f14c75084f..8ecbf0891b 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneTotalCommentsCounter.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneTotalCommentsCounter.cs @@ -7,6 +7,8 @@ using osu.Framework.Graphics; using osu.Framework.Bindables; using osu.Game.Overlays.Comments; using osu.Framework.Utils; +using osu.Framework.Allocation; +using osu.Game.Overlays; namespace osu.Game.Tests.Visual.Online { @@ -17,6 +19,9 @@ namespace osu.Game.Tests.Visual.Online typeof(TotalCommentsCounter), }; + [Cached] + private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Blue); + public TestSceneTotalCommentsCounter() { var count = new BindableInt(); diff --git a/osu.Game/Overlays/Comments/TotalCommentsCounter.cs b/osu.Game/Overlays/Comments/TotalCommentsCounter.cs index 376853c1de..57f4986bce 100644 --- a/osu.Game/Overlays/Comments/TotalCommentsCounter.cs +++ b/osu.Game/Overlays/Comments/TotalCommentsCounter.cs @@ -5,7 +5,6 @@ using osu.Framework.Graphics.Containers; using osu.Framework.Graphics; using osu.Framework.Graphics.Shapes; using osu.Game.Graphics; -using osu.Framework.Graphics.Sprites; using osuTK; using osu.Framework.Allocation; using osu.Framework.Bindables; @@ -17,7 +16,9 @@ namespace osu.Game.Overlays.Comments { public readonly BindableInt Current = new BindableInt(); - private readonly SpriteText counter; + private readonly OsuSpriteText counter; + private readonly OsuSpriteText text; + private readonly Box pillBackground; public TotalCommentsCounter() { @@ -33,7 +34,7 @@ namespace osu.Game.Overlays.Comments Spacing = new Vector2(5, 0), Children = new Drawable[] { - new OsuSpriteText + text = new OsuSpriteText { Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, @@ -48,10 +49,9 @@ namespace osu.Game.Overlays.Comments Masking = true, Children = new Drawable[] { - new Box + pillBackground = new Box { RelativeSizeAxes = Axes.Both, - Colour = OsuColour.Gray(0.05f) }, counter = new OsuSpriteText { @@ -67,9 +67,11 @@ namespace osu.Game.Overlays.Comments } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - counter.Colour = colours.BlueLighter; + text.Colour = colourProvider.Light1; + pillBackground.Colour = colourProvider.Background6; + counter.Colour = colourProvider.Foreground1; } protected override void LoadComplete() From 12ca28ea6d3f4a21f10ea44794acbd9899adc612 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 27 Jan 2020 14:58:27 +0300 Subject: [PATCH 1036/1829] Recolour CommentsHeader --- osu.Game.Tests/Visual/Online/TestSceneCommentsHeader.cs | 5 +++++ osu.Game/Overlays/Comments/CommentsHeader.cs | 4 ++-- osu.Game/Overlays/Comments/HeaderButton.cs | 5 ++--- osu.Game/Overlays/Comments/SortTabControl.cs | 4 ++-- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneCommentsHeader.cs b/osu.Game.Tests/Visual/Online/TestSceneCommentsHeader.cs index bc3e0eff1a..a60f220e4b 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneCommentsHeader.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneCommentsHeader.cs @@ -4,7 +4,9 @@ using System; using System.Collections.Generic; using NUnit.Framework; +using osu.Framework.Allocation; using osu.Framework.Bindables; +using osu.Game.Overlays; using osu.Game.Overlays.Comments; namespace osu.Game.Tests.Visual.Online @@ -19,6 +21,9 @@ namespace osu.Game.Tests.Visual.Online typeof(SortTabControl), }; + [Cached] + private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Blue); + private readonly Bindable sort = new Bindable(); private readonly BindableBool showDeleted = new BindableBool(); diff --git a/osu.Game/Overlays/Comments/CommentsHeader.cs b/osu.Game/Overlays/Comments/CommentsHeader.cs index 6a7a678cc7..ad80e67330 100644 --- a/osu.Game/Overlays/Comments/CommentsHeader.cs +++ b/osu.Game/Overlays/Comments/CommentsHeader.cs @@ -76,9 +76,9 @@ namespace osu.Game.Overlays.Comments } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - background.Colour = colours.Gray3; + background.Colour = colourProvider.Background4; } private class ShowDeletedButton : HeaderButton diff --git a/osu.Game/Overlays/Comments/HeaderButton.cs b/osu.Game/Overlays/Comments/HeaderButton.cs index 8789cf5830..fdc8db35ab 100644 --- a/osu.Game/Overlays/Comments/HeaderButton.cs +++ b/osu.Game/Overlays/Comments/HeaderButton.cs @@ -5,7 +5,6 @@ using osu.Framework.Allocation; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics; using osu.Framework.Graphics.Shapes; -using osu.Game.Graphics; using osu.Framework.Input.Events; using osu.Game.Graphics.UserInterface; @@ -45,9 +44,9 @@ namespace osu.Game.Overlays.Comments } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - background.Colour = colours.Gray4; + background.Colour = colourProvider.Background3; } protected override bool OnHover(HoverEvent e) diff --git a/osu.Game/Overlays/Comments/SortTabControl.cs b/osu.Game/Overlays/Comments/SortTabControl.cs index a114197b8d..700d63351f 100644 --- a/osu.Game/Overlays/Comments/SortTabControl.cs +++ b/osu.Game/Overlays/Comments/SortTabControl.cs @@ -56,7 +56,7 @@ namespace osu.Game.Overlays.Comments public readonly BindableBool Active = new BindableBool(); [Resolved] - private OsuColour colours { get; set; } + private OverlayColourProvider colourProvider { get; set; } private readonly SpriteText text; @@ -78,7 +78,7 @@ namespace osu.Game.Overlays.Comments updateBackgroundState(); text.Font = text.Font.With(weight: active.NewValue ? FontWeight.Bold : FontWeight.Medium); - text.Colour = active.NewValue ? colours.BlueLighter : Color4.White; + text.Colour = active.NewValue ? colourProvider.Light1 : Color4.White; }, true); } From 68503bf7711a8f5163cf36b084e4a876454f1d0f Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 27 Jan 2020 15:00:56 +0300 Subject: [PATCH 1037/1829] Recolour CommentsShowMoreButton --- osu.Game/Overlays/Comments/CommentsShowMoreButton.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/osu.Game/Overlays/Comments/CommentsShowMoreButton.cs b/osu.Game/Overlays/Comments/CommentsShowMoreButton.cs index b0174e7b1a..ab65c9c63a 100644 --- a/osu.Game/Overlays/Comments/CommentsShowMoreButton.cs +++ b/osu.Game/Overlays/Comments/CommentsShowMoreButton.cs @@ -1,8 +1,8 @@ // 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.Game.Graphics; using osu.Game.Graphics.UserInterface; namespace osu.Game.Overlays.Comments @@ -11,11 +11,12 @@ namespace osu.Game.Overlays.Comments { public readonly BindableInt Current = new BindableInt(); - public CommentsShowMoreButton() + [BackgroundDependencyLoader] + private void load(OverlayColourProvider colourProvider) { - IdleColour = OsuColour.Gray(0.3f); - HoverColour = OsuColour.Gray(0.4f); - ChevronIconColour = OsuColour.Gray(0.5f); + IdleColour = colourProvider.Background2; + HoverColour = colourProvider.Background1; + ChevronIconColour = colourProvider.Foreground1; } protected override void LoadComplete() From 100532845b2d5ba27828ffc9b4f5c6a2836584f8 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 27 Jan 2020 15:07:24 +0300 Subject: [PATCH 1038/1829] Recolour CommentsContainer --- .../Visual/Online/TestSceneCommentsContainer.cs | 5 +++++ osu.Game/Overlays/Comments/CommentsContainer.cs | 13 +++++-------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs index 8134c10750..3d63e2b07e 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs @@ -8,6 +8,8 @@ using osu.Game.Online.API.Requests; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics; using osu.Game.Overlays.Comments; +using osu.Game.Overlays; +using osu.Framework.Allocation; namespace osu.Game.Tests.Visual.Online { @@ -28,6 +30,9 @@ namespace osu.Game.Tests.Visual.Online protected override bool UseOnlineAPI => true; + [Cached] + private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Purple); + public TestSceneCommentsContainer() { BasicScrollContainer scroll; diff --git a/osu.Game/Overlays/Comments/CommentsContainer.cs b/osu.Game/Overlays/Comments/CommentsContainer.cs index d252083411..36b165c97d 100644 --- a/osu.Game/Overlays/Comments/CommentsContainer.cs +++ b/osu.Game/Overlays/Comments/CommentsContainer.cs @@ -8,7 +8,6 @@ using osu.Game.Online.API.Requests; using osu.Framework.Graphics; using osu.Framework.Bindables; using osu.Framework.Graphics.Shapes; -using osu.Game.Graphics; using osu.Game.Online.API.Requests.Responses; using System.Threading; using System.Linq; @@ -27,14 +26,12 @@ namespace osu.Game.Overlays.Comments [Resolved] private IAPIProvider api { get; set; } - [Resolved] - private OsuColour colours { get; set; } - private GetCommentsRequest request; private CancellationTokenSource loadCancellation; private int currentPage; private readonly Box background; + private readonly Box footerBackground; private readonly FillFlowContainer content; private readonly DeletedChildrenPlaceholder deletedChildrenPlaceholder; private readonly CommentsShowMoreButton moreButton; @@ -75,10 +72,9 @@ namespace osu.Game.Overlays.Comments AutoSizeAxes = Axes.Y, Children = new Drawable[] { - new Box + footerBackground = new Box { RelativeSizeAxes = Axes.Both, - Colour = OsuColour.Gray(0.2f) }, new FillFlowContainer { @@ -114,9 +110,10 @@ namespace osu.Game.Overlays.Comments } [BackgroundDependencyLoader] - private void load() + private void load(OverlayColourProvider colourProvider) { - background.Colour = colours.Gray2; + background.Colour = colourProvider.Background5; + footerBackground.Colour = colourProvider.Background4; } protected override void LoadComplete() From e6fa793d5624deeea15720631e2c9677027a5259 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 27 Jan 2020 15:36:19 +0300 Subject: [PATCH 1039/1829] Refactor background creation in OverlayHeader --- .../UserInterface/TestSceneOverlayHeader.cs | 32 +++++--------- .../Overlays/Changelog/ChangelogHeader.cs | 20 +-------- osu.Game/Overlays/News/NewsHeader.cs | 20 +-------- osu.Game/Overlays/OverlayHeader.cs | 19 ++------ osu.Game/Overlays/OverlayHeaderBackground.cs | 43 +++++++++++++++++++ osu.Game/Overlays/Profile/ProfileHeader.cs | 6 +-- 6 files changed, 63 insertions(+), 77 deletions(-) create mode 100644 osu.Game/Overlays/OverlayHeaderBackground.cs diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeader.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeader.cs index be0933e9d4..7e6fda14c1 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeader.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeader.cs @@ -7,9 +7,7 @@ using System; using System.Collections.Generic; using osu.Framework.Graphics; using osu.Game.Graphics.Sprites; -using osu.Framework.Graphics.Sprites; using osu.Framework.Allocation; -using osu.Framework.Graphics.Textures; using osu.Game.Graphics.UserInterface; using osu.Framework.Graphics.Shapes; using osuTK.Graphics; @@ -27,6 +25,7 @@ namespace osu.Game.Tests.Visual.UserInterface typeof(TestStringTabControlHeader), typeof(TestEnumTabControlHeader), typeof(TestBreadcrumbControlHeader), + typeof(OverlayHeaderBackground) }; private readonly FillFlowContainer flow; @@ -52,6 +51,7 @@ namespace osu.Game.Tests.Visual.UserInterface } }); + addHeader("Orange OverlayHeader (no background)", new TestNoBackgroundHeader(), OverlayColourScheme.Orange); addHeader("Blue OverlayHeader", new TestNoControlHeader(), OverlayColourScheme.Blue); addHeader("Green TabControlOverlayHeader (string)", new TestStringTabControlHeader(), OverlayColourScheme.Green); addHeader("Pink TabControlOverlayHeader (enum)", new TestEnumTabControlHeader(), OverlayColourScheme.Pink); @@ -98,16 +98,21 @@ namespace osu.Game.Tests.Visual.UserInterface } } + private class TestNoBackgroundHeader : OverlayHeader + { + protected override ScreenTitle CreateTitle() => new TestTitle(); + } + private class TestNoControlHeader : OverlayHeader { - protected override Drawable CreateBackground() => new TestBackground(); + protected override Drawable CreateBackground() => new OverlayHeaderBackground(@"Headers/changelog"); protected override ScreenTitle CreateTitle() => new TestTitle(); } private class TestStringTabControlHeader : TabControlOverlayHeader { - protected override Drawable CreateBackground() => new TestBackground(); + protected override Drawable CreateBackground() => new OverlayHeaderBackground(@"Headers/news"); protected override ScreenTitle CreateTitle() => new TestTitle(); @@ -120,7 +125,7 @@ namespace osu.Game.Tests.Visual.UserInterface private class TestEnumTabControlHeader : TabControlOverlayHeader { - protected override Drawable CreateBackground() => new TestBackground(); + protected override Drawable CreateBackground() => new OverlayHeaderBackground(@"Headers/rankings"); protected override ScreenTitle CreateTitle() => new TestTitle(); } @@ -134,7 +139,7 @@ namespace osu.Game.Tests.Visual.UserInterface private class TestBreadcrumbControlHeader : BreadcrumbControlOverlayHeader { - protected override Drawable CreateBackground() => new TestBackground(); + protected override Drawable CreateBackground() => new OverlayHeaderBackground(@"Headers/search"); protected override ScreenTitle CreateTitle() => new TestTitle(); @@ -146,21 +151,6 @@ namespace osu.Game.Tests.Visual.UserInterface } } - private class TestBackground : Sprite - { - public TestBackground() - { - RelativeSizeAxes = Axes.Both; - FillMode = FillMode.Fill; - } - - [BackgroundDependencyLoader] - private void load(TextureStore textures) - { - Texture = textures.Get(@"Headers/changelog"); - } - } - private class TestTitle : ScreenTitle { public TestTitle() diff --git a/osu.Game/Overlays/Changelog/ChangelogHeader.cs b/osu.Game/Overlays/Changelog/ChangelogHeader.cs index 2fbfdec3d1..4165a180da 100644 --- a/osu.Game/Overlays/Changelog/ChangelogHeader.cs +++ b/osu.Game/Overlays/Changelog/ChangelogHeader.cs @@ -4,12 +4,9 @@ using System; using System.Collections.Generic; using System.Linq; -using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Sprites; -using osu.Framework.Graphics.Textures; using osu.Game.Graphics.UserInterface; using osu.Game.Online.API.Requests.Responses; @@ -67,7 +64,7 @@ namespace osu.Game.Overlays.Changelog } } - protected override Drawable CreateBackground() => new HeaderBackground(); + protected override Drawable CreateBackground() => new OverlayHeaderBackground(@"Headers/changelog"); protected override Drawable CreateContent() => new Container { @@ -95,21 +92,6 @@ namespace osu.Game.Overlays.Changelog Streams.Current.Value = Streams.Items.FirstOrDefault(s => s.Name == Current.Value.UpdateStream.Name); } - public class HeaderBackground : Sprite - { - public HeaderBackground() - { - RelativeSizeAxes = Axes.Both; - FillMode = FillMode.Fill; - } - - [BackgroundDependencyLoader] - private void load(TextureStore textures) - { - Texture = textures.Get(@"Headers/changelog"); - } - } - private class ChangelogHeaderTitle : ScreenTitle { public string Version diff --git a/osu.Game/Overlays/News/NewsHeader.cs b/osu.Game/Overlays/News/NewsHeader.cs index 2f9cde1687..b525ba7a82 100644 --- a/osu.Game/Overlays/News/NewsHeader.cs +++ b/osu.Game/Overlays/News/NewsHeader.cs @@ -1,11 +1,8 @@ // 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.Sprites; -using osu.Framework.Graphics.Textures; using osu.Game.Graphics.UserInterface; using System; @@ -53,25 +50,10 @@ namespace osu.Game.Overlays.News } } - protected override Drawable CreateBackground() => new NewsHeaderBackground(); + protected override Drawable CreateBackground() => new OverlayHeaderBackground(@"Headers/news"); protected override ScreenTitle CreateTitle() => title = new NewsHeaderTitle(); - private class NewsHeaderBackground : Sprite - { - public NewsHeaderBackground() - { - RelativeSizeAxes = Axes.Both; - FillMode = FillMode.Fill; - } - - [BackgroundDependencyLoader] - private void load(TextureStore textures) - { - Texture = textures.Get(@"Headers/news"); - } - } - private class NewsHeaderTitle : ScreenTitle { private const string post_string = "post"; diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index 0575f6f296..aca931d9c3 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -14,16 +14,10 @@ namespace osu.Game.Overlays public abstract class OverlayHeader : Container { private readonly Box titleBackground; - private readonly Container background; private readonly ScreenTitle title; protected readonly FillFlowContainer HeaderInfo; - protected float BackgroundHeight - { - set => background.Height = value; - } - protected OverlayHeader() { RelativeSizeAxes = Axes.X; @@ -44,13 +38,7 @@ namespace osu.Game.Overlays Depth = -float.MaxValue, Children = new Drawable[] { - background = new Container - { - RelativeSizeAxes = Axes.X, - Height = 80, - Masking = true, - Child = CreateBackground() - }, + CreateBackground(), new Container { RelativeSizeAxes = Axes.X, @@ -86,11 +74,12 @@ namespace osu.Game.Overlays title.AccentColour = colourProvider.Highlight1; } - protected abstract Drawable CreateBackground(); - [NotNull] protected virtual Drawable CreateContent() => new Container(); + [NotNull] + protected virtual Drawable CreateBackground() => new Container(); + protected abstract ScreenTitle CreateTitle(); } } diff --git a/osu.Game/Overlays/OverlayHeaderBackground.cs b/osu.Game/Overlays/OverlayHeaderBackground.cs new file mode 100644 index 0000000000..2fef593285 --- /dev/null +++ b/osu.Game/Overlays/OverlayHeaderBackground.cs @@ -0,0 +1,43 @@ +// 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.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Sprites; +using osu.Framework.Graphics.Textures; + +namespace osu.Game.Overlays +{ + public class OverlayHeaderBackground : CompositeDrawable + { + public OverlayHeaderBackground(string textureName) + { + Height = 80; + RelativeSizeAxes = Axes.X; + Masking = true; + InternalChild = new Background(textureName); + } + + private class Background : Sprite + { + private readonly string textureName; + + public Background(string textureName) + { + this.textureName = textureName; + + Anchor = Anchor.Centre; + Origin = Anchor.Centre; + RelativeSizeAxes = Axes.Both; + FillMode = FillMode.Fill; + } + + [BackgroundDependencyLoader] + private void load(TextureStore textures) + { + Texture = textures.Get(textureName); + } + } + } +} diff --git a/osu.Game/Overlays/Profile/ProfileHeader.cs b/osu.Game/Overlays/Profile/ProfileHeader.cs index 203df2ec12..3e78423a5a 100644 --- a/osu.Game/Overlays/Profile/ProfileHeader.cs +++ b/osu.Game/Overlays/Profile/ProfileHeader.cs @@ -25,8 +25,6 @@ namespace osu.Game.Overlays.Profile public ProfileHeader() { - BackgroundHeight = 150; - User.ValueChanged += e => updateDisplay(e.NewValue); TabControl.AddItem("info"); @@ -38,7 +36,9 @@ namespace osu.Game.Overlays.Profile protected override Drawable CreateBackground() => new Container { - RelativeSizeAxes = Axes.Both, + RelativeSizeAxes = Axes.X, + Height = 150, + Masking = true, Children = new Drawable[] { coverContainer = new UserCoverBackground From 97fb7a5593470829dfaaec08408608cbd54c9921 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 27 Jan 2020 15:42:46 +0300 Subject: [PATCH 1040/1829] Add test scene --- .../UserInterface/TestSceneOverlayHeader.cs | 4 +- .../TestSceneOverlayHeaderBackground.cs | 42 +++++++++++++++++++ 2 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeaderBackground.cs diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeader.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeader.cs index 7e6fda14c1..c899ccb9eb 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeader.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeader.cs @@ -55,7 +55,7 @@ namespace osu.Game.Tests.Visual.UserInterface addHeader("Blue OverlayHeader", new TestNoControlHeader(), OverlayColourScheme.Blue); addHeader("Green TabControlOverlayHeader (string)", new TestStringTabControlHeader(), OverlayColourScheme.Green); addHeader("Pink TabControlOverlayHeader (enum)", new TestEnumTabControlHeader(), OverlayColourScheme.Pink); - addHeader("Red BreadcrumbControlOverlayHeader", new TestBreadcrumbControlHeader(), OverlayColourScheme.Red); + addHeader("Red BreadcrumbControlOverlayHeader (no background)", new TestBreadcrumbControlHeader(), OverlayColourScheme.Red); } private void addHeader(string name, OverlayHeader header, OverlayColourScheme colourScheme) @@ -139,8 +139,6 @@ namespace osu.Game.Tests.Visual.UserInterface private class TestBreadcrumbControlHeader : BreadcrumbControlOverlayHeader { - protected override Drawable CreateBackground() => new OverlayHeaderBackground(@"Headers/search"); - protected override ScreenTitle CreateTitle() => new TestTitle(); public TestBreadcrumbControlHeader() diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeaderBackground.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeaderBackground.cs new file mode 100644 index 0000000000..5a0b28e24a --- /dev/null +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeaderBackground.cs @@ -0,0 +1,42 @@ +// 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.Containers; +using osu.Game.Overlays; +using System; +using System.Collections.Generic; +using osu.Framework.Graphics; +using osuTK; + +namespace osu.Game.Tests.Visual.UserInterface +{ + public class TestSceneOverlayHeaderBackground : OsuTestScene + { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(OverlayHeaderBackground) + }; + + public TestSceneOverlayHeaderBackground() + { + Add(new BasicScrollContainer + { + RelativeSizeAxes = Axes.Both, + Child = new FillFlowContainer + { + AutoSizeAxes = Axes.Y, + RelativeSizeAxes = Axes.X, + Direction = FillDirection.Vertical, + Spacing = new Vector2(0, 20), + Children = new[] + { + new OverlayHeaderBackground(@"Headers/changelog"), + new OverlayHeaderBackground(@"Headers/news"), + new OverlayHeaderBackground(@"Headers/rankings"), + new OverlayHeaderBackground(@"Headers/search"), + } + } + }); + } + } +} From 55d78dbc577c9b273fc23265b161f04ec4176425 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 27 Jan 2020 16:45:10 +0300 Subject: [PATCH 1041/1829] CI fix --- osu.Game/Overlays/OverlayHeader.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index aca931d9c3..b165882864 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -36,7 +36,7 @@ namespace osu.Game.Overlays AutoSizeAxes = Axes.Y, Direction = FillDirection.Vertical, Depth = -float.MaxValue, - Children = new Drawable[] + Children = new[] { CreateBackground(), new Container From b14c7bd171905e44f8cdd831ed06d1bfc063c573 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Mon, 27 Jan 2020 21:28:28 +0800 Subject: [PATCH 1042/1829] Use type switch in SearializationWriter. --- osu.Game/IO/Legacy/SerializationWriter.cs | 70 +++++++++++------------ 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/osu.Game/IO/Legacy/SerializationWriter.cs b/osu.Game/IO/Legacy/SerializationWriter.cs index c75de93bc8..bb8014fe54 100644 --- a/osu.Game/IO/Legacy/SerializationWriter.cs +++ b/osu.Game/IO/Legacy/SerializationWriter.cs @@ -130,91 +130,91 @@ namespace osu.Game.IO.Legacy } else { - switch (obj.GetType().Name) + switch (obj) { - case "Boolean": + case bool boolObj: Write((byte)ObjType.boolType); - Write((bool)obj); + Write(boolObj); break; - case "Byte": + case byte byteObj: Write((byte)ObjType.byteType); - Write((byte)obj); + Write(byteObj); break; - case "UInt16": + case ushort ushortObj: Write((byte)ObjType.uint16Type); - Write((ushort)obj); + Write(ushortObj); break; - case "UInt32": + case uint uintObj: Write((byte)ObjType.uint32Type); - Write((uint)obj); + Write(uintObj); break; - case "UInt64": + case ulong ulongObj: Write((byte)ObjType.uint64Type); - Write((ulong)obj); + Write(ulongObj); break; - case "SByte": + case sbyte sbyteObj: Write((byte)ObjType.sbyteType); - Write((sbyte)obj); + Write(sbyteObj); break; - case "Int16": + case short shortObj: Write((byte)ObjType.int16Type); - Write((short)obj); + Write(shortObj); break; - case "Int32": + case int intObj: Write((byte)ObjType.int32Type); - Write((int)obj); + Write(intObj); break; - case "Int64": + case long longObj: Write((byte)ObjType.int64Type); - Write((long)obj); + Write(longObj); break; - case "Char": + case char charObj: Write((byte)ObjType.charType); - base.Write((char)obj); + base.Write(charObj); break; - case "String": + case string stringObj: Write((byte)ObjType.stringType); - base.Write((string)obj); + base.Write(stringObj); break; - case "Single": + case float floatObj: Write((byte)ObjType.singleType); - Write((float)obj); + Write(floatObj); break; - case "Double": + case double doubleObj: Write((byte)ObjType.doubleType); - Write((double)obj); + Write(doubleObj); break; - case "Decimal": + case decimal decimalObj: Write((byte)ObjType.decimalType); - Write((decimal)obj); + Write(decimalObj); break; - case "DateTime": + case DateTime dateTimeObj: Write((byte)ObjType.dateTimeType); - Write((DateTime)obj); + Write(dateTimeObj); break; - case "Byte[]": + case byte[] byteArray: Write((byte)ObjType.byteArrayType); - base.Write((byte[])obj); + base.Write(byteArray); break; - case "Char[]": + case char[] charArray: Write((byte)ObjType.charArrayType); - base.Write((char[])obj); + base.Write(charArray); break; default: From d9e21a572fba46f991a7ca94a218e8655bca9d47 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 28 Jan 2020 07:13:28 +0800 Subject: [PATCH 1043/1829] remove unecessary comment --- osu.Game/Rulesets/Mods/ModTimeRamp.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Rulesets/Mods/ModTimeRamp.cs b/osu.Game/Rulesets/Mods/ModTimeRamp.cs index a9330f9287..9e63142b42 100644 --- a/osu.Game/Rulesets/Mods/ModTimeRamp.cs +++ b/osu.Game/Rulesets/Mods/ModTimeRamp.cs @@ -72,7 +72,6 @@ namespace osu.Game.Rulesets.Mods /// /// The amount of adjustment to apply (from 0..1). private void applyAdjustment(double amount) => - // SpeedChange.Value = 1 + (FinalRate.Value - 1) * Math.Clamp(amount, 0, 1); SpeedChange.Value = InitialRate.Value + (FinalRate.Value - InitialRate.Value) * Math.Clamp(amount, 0, 1); } } From ce95b4a10623ad8533df7de211369fd4a9ef1a6c Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 28 Jan 2020 05:57:45 +0300 Subject: [PATCH 1044/1829] TotalCommentsCounter improvements --- .../Overlays/Comments/TotalCommentsCounter.cs | 24 +++++++------------ 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/osu.Game/Overlays/Comments/TotalCommentsCounter.cs b/osu.Game/Overlays/Comments/TotalCommentsCounter.cs index 57f4986bce..1bb9b52689 100644 --- a/osu.Game/Overlays/Comments/TotalCommentsCounter.cs +++ b/osu.Game/Overlays/Comments/TotalCommentsCounter.cs @@ -16,11 +16,10 @@ namespace osu.Game.Overlays.Comments { public readonly BindableInt Current = new BindableInt(); - private readonly OsuSpriteText counter; - private readonly OsuSpriteText text; - private readonly Box pillBackground; + private OsuSpriteText counter; - public TotalCommentsCounter() + [BackgroundDependencyLoader] + private void load(OverlayColourProvider colourProvider) { RelativeSizeAxes = Axes.X; Height = 50; @@ -34,11 +33,12 @@ namespace osu.Game.Overlays.Comments Spacing = new Vector2(5, 0), Children = new Drawable[] { - text = new OsuSpriteText + new OsuSpriteText { Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, Font = OsuFont.GetFont(size: 20, italics: true), + Colour = colourProvider.Light1, Text = @"Comments" }, new CircularContainer @@ -49,16 +49,18 @@ namespace osu.Game.Overlays.Comments Masking = true, Children = new Drawable[] { - pillBackground = new Box + new Box { RelativeSizeAxes = Axes.Both, + Colour = colourProvider.Background6 }, counter = new OsuSpriteText { Anchor = Anchor.Centre, Origin = Anchor.Centre, Margin = new MarginPadding { Horizontal = 10, Vertical = 5 }, - Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold) + Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold), + Colour = colourProvider.Foreground1 } }, } @@ -66,14 +68,6 @@ namespace osu.Game.Overlays.Comments }); } - [BackgroundDependencyLoader] - private void load(OverlayColourProvider colourProvider) - { - text.Colour = colourProvider.Light1; - pillBackground.Colour = colourProvider.Background6; - counter.Colour = colourProvider.Foreground1; - } - protected override void LoadComplete() { Current.BindValueChanged(value => counter.Text = value.NewValue.ToString("N0"), true); From 29daabb40a42856de7fd6a709ee938b17bedf152 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 28 Jan 2020 11:59:21 +0900 Subject: [PATCH 1045/1829] Fix distance snap grid showing incorrect colouring Now matches timeline colours (based on timing point). --- .../Editor/TestSceneDistanceSnapGrid.cs | 36 +++++++++---------- .../Components/CircularDistanceSnapGrid.cs | 14 ++++---- .../Compose/Components/DistanceSnapGrid.cs | 15 ++++---- 3 files changed, 34 insertions(+), 31 deletions(-) diff --git a/osu.Game.Tests/Visual/Editor/TestSceneDistanceSnapGrid.cs b/osu.Game.Tests/Visual/Editor/TestSceneDistanceSnapGrid.cs index 847d168e51..f49256a633 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneDistanceSnapGrid.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneDistanceSnapGrid.cs @@ -85,64 +85,64 @@ namespace osu.Game.Tests.Visual.Editor { } - protected override void CreateContent(Vector2 startPosition) + protected override void CreateContent() { AddInternal(new Circle { Origin = Anchor.Centre, Size = new Vector2(5), - Position = startPosition + Position = StartPosition }); - int beatIndex = 0; + int indexFromPlacement = 0; - for (float s = startPosition.X + DistanceSpacing; s <= DrawWidth && beatIndex < MaxIntervals; s += DistanceSpacing, beatIndex++) + for (float s = StartPosition.X + DistanceSpacing; s <= DrawWidth && indexFromPlacement < MaxIntervals; s += DistanceSpacing, indexFromPlacement++) { AddInternal(new Circle { Origin = Anchor.Centre, Size = new Vector2(5, 10), - Position = new Vector2(s, startPosition.Y), - Colour = GetColourForBeatIndex(beatIndex) + Position = new Vector2(s, StartPosition.Y), + Colour = GetColourForIndexFromPlacement(indexFromPlacement) }); } - beatIndex = 0; + indexFromPlacement = 0; - for (float s = startPosition.X - DistanceSpacing; s >= 0 && beatIndex < MaxIntervals; s -= DistanceSpacing, beatIndex++) + for (float s = StartPosition.X - DistanceSpacing; s >= 0 && indexFromPlacement < MaxIntervals; s -= DistanceSpacing, indexFromPlacement++) { AddInternal(new Circle { Origin = Anchor.Centre, Size = new Vector2(5, 10), - Position = new Vector2(s, startPosition.Y), - Colour = GetColourForBeatIndex(beatIndex) + Position = new Vector2(s, StartPosition.Y), + Colour = GetColourForIndexFromPlacement(indexFromPlacement) }); } - beatIndex = 0; + indexFromPlacement = 0; - for (float s = startPosition.Y + DistanceSpacing; s <= DrawHeight && beatIndex < MaxIntervals; s += DistanceSpacing, beatIndex++) + for (float s = StartPosition.Y + DistanceSpacing; s <= DrawHeight && indexFromPlacement < MaxIntervals; s += DistanceSpacing, indexFromPlacement++) { AddInternal(new Circle { Origin = Anchor.Centre, Size = new Vector2(10, 5), - Position = new Vector2(startPosition.X, s), - Colour = GetColourForBeatIndex(beatIndex) + Position = new Vector2(StartPosition.X, s), + Colour = GetColourForIndexFromPlacement(indexFromPlacement) }); } - beatIndex = 0; + indexFromPlacement = 0; - for (float s = startPosition.Y - DistanceSpacing; s >= 0 && beatIndex < MaxIntervals; s -= DistanceSpacing, beatIndex++) + for (float s = StartPosition.Y - DistanceSpacing; s >= 0 && indexFromPlacement < MaxIntervals; s -= DistanceSpacing, indexFromPlacement++) { AddInternal(new Circle { Origin = Anchor.Centre, Size = new Vector2(10, 5), - Position = new Vector2(startPosition.X, s), - Colour = GetColourForBeatIndex(beatIndex) + Position = new Vector2(StartPosition.X, s), + Colour = GetColourForIndexFromPlacement(indexFromPlacement) }); } } diff --git a/osu.Game/Screens/Edit/Compose/Components/CircularDistanceSnapGrid.cs b/osu.Game/Screens/Edit/Compose/Components/CircularDistanceSnapGrid.cs index 23ed10b92d..730f482f83 100644 --- a/osu.Game/Screens/Edit/Compose/Components/CircularDistanceSnapGrid.cs +++ b/osu.Game/Screens/Edit/Compose/Components/CircularDistanceSnapGrid.cs @@ -16,7 +16,7 @@ namespace osu.Game.Screens.Edit.Compose.Components { } - protected override void CreateContent(Vector2 startPosition) + protected override void CreateContent() { const float crosshair_thickness = 1; const float crosshair_max_size = 10; @@ -26,7 +26,7 @@ namespace osu.Game.Screens.Edit.Compose.Components new Box { Origin = Anchor.Centre, - Position = startPosition, + Position = StartPosition, Width = crosshair_thickness, EdgeSmoothness = new Vector2(1), Height = Math.Min(crosshair_max_size, DistanceSpacing * 2), @@ -34,15 +34,15 @@ namespace osu.Game.Screens.Edit.Compose.Components new Box { Origin = Anchor.Centre, - Position = startPosition, + Position = StartPosition, EdgeSmoothness = new Vector2(1), Width = Math.Min(crosshair_max_size, DistanceSpacing * 2), Height = crosshair_thickness, } }); - float dx = Math.Max(startPosition.X, DrawWidth - startPosition.X); - float dy = Math.Max(startPosition.Y, DrawHeight - startPosition.Y); + float dx = Math.Max(StartPosition.X, DrawWidth - StartPosition.X); + float dy = Math.Max(StartPosition.Y, DrawHeight - StartPosition.Y); float maxDistance = new Vector2(dx, dy).Length; int requiredCircles = Math.Min(MaxIntervals, (int)(maxDistance / DistanceSpacing)); @@ -53,11 +53,11 @@ namespace osu.Game.Screens.Edit.Compose.Components AddInternal(new CircularProgress { Origin = Anchor.Centre, - Position = startPosition, + Position = StartPosition, Current = { Value = 1 }, Size = new Vector2(radius), InnerRadius = 4 * 1f / radius, - Colour = GetColourForBeatIndex(i) + Colour = GetColourForIndexFromPlacement(i) }); } } diff --git a/osu.Game/Screens/Edit/Compose/Components/DistanceSnapGrid.cs b/osu.Game/Screens/Edit/Compose/Components/DistanceSnapGrid.cs index 3bbccd612b..bce8878766 100644 --- a/osu.Game/Screens/Edit/Compose/Components/DistanceSnapGrid.cs +++ b/osu.Game/Screens/Edit/Compose/Components/DistanceSnapGrid.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 osu.Framework.Allocation; using osu.Framework.Caching; using osu.Framework.Graphics; @@ -106,7 +107,7 @@ namespace osu.Game.Screens.Edit.Compose.Components if (!gridCache.IsValid) { ClearInternal(); - CreateContent(StartPosition); + CreateContent(); gridCache.Validate(); } } @@ -114,7 +115,7 @@ namespace osu.Game.Screens.Edit.Compose.Components /// /// Creates the content which visualises the grid ticks. /// - protected abstract void CreateContent(Vector2 startPosition); + protected abstract void CreateContent(); /// /// Snaps a position to this grid. @@ -126,13 +127,15 @@ namespace osu.Game.Screens.Edit.Compose.Components /// /// Retrieves the applicable colour for a beat index. /// - /// The 0-based beat index. + /// The 0-based beat index from the point of placement. /// The applicable colour. - protected ColourInfo GetColourForBeatIndex(int index) + protected ColourInfo GetColourForIndexFromPlacement(int placementIndex) { - var colour = BindableBeatDivisor.GetColourFor(BindableBeatDivisor.GetDivisorForBeatIndex(index + 1, beatDivisor.Value), Colours); + var timingPoint = beatmap.ControlPointInfo.TimingPointAt(StartTime); + var beatIndex = (int)Math.Round((StartTime - timingPoint.Time) / timingPoint.BeatLength * beatDivisor.Value); + var colour = BindableBeatDivisor.GetColourFor(BindableBeatDivisor.GetDivisorForBeatIndex(beatIndex + placementIndex + 1, beatDivisor.Value), Colours); - int repeatIndex = index / beatDivisor.Value; + int repeatIndex = placementIndex / beatDivisor.Value; return colour.MultiplyAlpha(0.5f / (repeatIndex + 1)); } } From 58654f28b67e4ce29d50125237e075007f0ec7ff Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 28 Jan 2020 12:48:24 +0900 Subject: [PATCH 1046/1829] Fix beat snap implementation being incorrect --- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 4 ++-- osu.Game/Rulesets/Edit/IBeatSnapProvider.cs | 8 ++++---- .../Screens/Edit/Compose/Components/Timeline/Timeline.cs | 2 +- osu.Game/Screens/Edit/Editor.cs | 2 +- osu.Game/Screens/Edit/EditorBeatmap.cs | 8 +++++--- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index 9ee3bacf9b..252b418523 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -275,10 +275,10 @@ namespace osu.Game.Rulesets.Edit } public override double GetSnappedDurationFromDistance(double referenceTime, float distance) - => beatSnapProvider.SnapTime(referenceTime, DistanceToDuration(referenceTime, distance)); + => beatSnapProvider.SnapTime(referenceTime + DistanceToDuration(referenceTime, distance), referenceTime) - referenceTime; public override float GetSnappedDistanceFromDistance(double referenceTime, float distance) - => DurationToDistance(referenceTime, beatSnapProvider.SnapTime(referenceTime, DistanceToDuration(referenceTime, distance))); + => DurationToDistance(referenceTime, beatSnapProvider.SnapTime(DistanceToDuration(referenceTime, distance), referenceTime)); protected override void Dispose(bool isDisposing) { diff --git a/osu.Game/Rulesets/Edit/IBeatSnapProvider.cs b/osu.Game/Rulesets/Edit/IBeatSnapProvider.cs index e1daafaebe..616f854cd7 100644 --- a/osu.Game/Rulesets/Edit/IBeatSnapProvider.cs +++ b/osu.Game/Rulesets/Edit/IBeatSnapProvider.cs @@ -8,10 +8,10 @@ namespace osu.Game.Rulesets.Edit /// /// Snaps a duration to the closest beat of a timing point applicable at the reference time. /// - /// The time of the timing point which resides in. - /// The duration to snap. - /// A value that represents snapped to the closest beat of the timing point. - double SnapTime(double referenceTime, double duration); + /// The time to snap. + /// An optional reference point to use for timing point lookup. + /// A value that represents snapped to the closest beat of the timing point. + double SnapTime(double time, double? referenceTime = null); /// /// Get the most appropriate beat length at a given time. diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs index 96395696c3..2dd7ad79ba 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs @@ -177,7 +177,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline public (Vector2 position, double time) GetSnappedPosition(Vector2 position, double time) { var targetTime = (position.X / Content.DrawWidth) * track.Length; - return (position, beatSnapProvider.SnapTime(targetTime, targetTime)); + return (position, beatSnapProvider.SnapTime(targetTime)); } public float GetBeatSnapDistanceAt(double referenceTime) => throw new NotImplementedException(); diff --git a/osu.Game/Screens/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs index eae94a3c8e..8c7270d3a2 100644 --- a/osu.Game/Screens/Edit/Editor.cs +++ b/osu.Game/Screens/Edit/Editor.cs @@ -348,7 +348,7 @@ namespace osu.Game.Screens.Edit beatmapManager.Export(Beatmap.Value.BeatmapSetInfo); } - public double SnapTime(double referenceTime, double duration) => editorBeatmap.SnapTime(referenceTime, duration); + public double SnapTime(double time, double? referenceTime) => editorBeatmap.SnapTime(time, referenceTime); public double GetBeatLengthAtTime(double referenceTime) => editorBeatmap.GetBeatLengthAtTime(referenceTime); diff --git a/osu.Game/Screens/Edit/EditorBeatmap.cs b/osu.Game/Screens/Edit/EditorBeatmap.cs index 9c75d40bec..2d3ecf583e 100644 --- a/osu.Game/Screens/Edit/EditorBeatmap.cs +++ b/osu.Game/Screens/Edit/EditorBeatmap.cs @@ -128,12 +128,14 @@ namespace osu.Game.Screens.Edit return list.Count - 1; } - public double SnapTime(double referenceTime, double duration) + public double SnapTime(double time, double? referenceTime) { - double beatLength = GetBeatLengthAtTime(referenceTime); + var timingPoint = ControlPointInfo.TimingPointAt(referenceTime ?? time); + + var beatLength = timingPoint.BeatLength / BeatDivisor; // A 1ms offset prevents rounding errors due to minute variations in duration - return (int)((duration + 1) / beatLength) * beatLength; + return timingPoint.Time + (int)Math.Round(((time - timingPoint.Time) + 1) / beatLength) * beatLength; } public double GetBeatLengthAtTime(double referenceTime) => ControlPointInfo.TimingPointAt(referenceTime).BeatLength / BeatDivisor; From 4bb33046ca3b4237c3227c3bbba4c60c6084971a Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 28 Jan 2020 13:02:29 +0900 Subject: [PATCH 1047/1829] Standardise editor timeline zoom across maps of all lengths --- .../Screens/Edit/Compose/Components/Timeline/Timeline.cs | 7 ++++++- .../Components/Timeline/ZoomableScrollContainer.cs | 8 ++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs index 96395696c3..b4baa64086 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs @@ -30,7 +30,6 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline { ZoomDuration = 200; ZoomEasing = Easing.OutQuint; - Zoom = 10; ScrollbarVisible = false; } @@ -61,9 +60,15 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline { waveform.Waveform = b.NewValue.Waveform; track = b.NewValue.Track; + + MinZoom = getZoomLevelForVisibleMilliseconds(10000); + MaxZoom = getZoomLevelForVisibleMilliseconds(500); + Zoom = getZoomLevelForVisibleMilliseconds(2000); }, true); } + private float getZoomLevelForVisibleMilliseconds(double milliseconds) => (float)(track.Length / milliseconds); + /// /// The timeline's scroll position in the last frame. /// diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/ZoomableScrollContainer.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/ZoomableScrollContainer.cs index 9aa527667b..7ce8a751e0 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/ZoomableScrollContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/ZoomableScrollContainer.cs @@ -36,12 +36,12 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline base.Content.Add(zoomedContent = new Container { RelativeSizeAxes = Axes.Y }); } - private int minZoom = 1; + private float minZoom = 1; /// /// The minimum zoom level allowed. /// - public int MinZoom + public float MinZoom { get => minZoom; set @@ -56,12 +56,12 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline } } - private int maxZoom = 60; + private float maxZoom = 60; /// /// The maximum zoom level allowed. /// - public int MaxZoom + public float MaxZoom { get => maxZoom; set From aa264cd2a8c89f77c966471661e6b76d781e27bf Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 28 Jan 2020 12:32:30 +0800 Subject: [PATCH 1048/1829] allow tooltip to show as percentage as needed --- osu.Game/Graphics/UserInterface/OsuSliderBar.cs | 8 ++++++-- .../Settings/Sections/Audio/VolumeSettings.cs | 8 ++++---- .../Settings/Sections/Gameplay/GeneralSettings.cs | 6 ++++-- .../Settings/Sections/Graphics/LayoutSettings.cs | 12 ++++++++---- osu.Game/Overlays/Settings/SettingsSlider.cs | 6 ++++++ .../Screens/Play/PlayerSettings/VisualSettings.cs | 10 ++++++++-- 6 files changed, 36 insertions(+), 14 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/OsuSliderBar.cs b/osu.Game/Graphics/UserInterface/OsuSliderBar.cs index 2112aac6a3..1058595232 100644 --- a/osu.Game/Graphics/UserInterface/OsuSliderBar.cs +++ b/osu.Game/Graphics/UserInterface/OsuSliderBar.cs @@ -35,6 +35,7 @@ namespace osu.Game.Graphics.UserInterface private readonly Container nubContainer; public virtual string TooltipText { get; private set; } + public bool DisplayAsPercentage { get; set; } private Color4 accentColour; @@ -172,8 +173,11 @@ namespace osu.Game.Graphics.UserInterface double floatMinValue = CurrentNumber.MinValue.ToDouble(NumberFormatInfo.InvariantInfo); double floatMaxValue = CurrentNumber.MaxValue.ToDouble(NumberFormatInfo.InvariantInfo); - if (floatMaxValue == 1 && floatMinValue >= -1) - TooltipText = floatValue.ToString("P0"); + if (DisplayAsPercentage) + { + double percentage = floatValue / floatMaxValue; + TooltipText = percentage.ToString("P0"); + } else { var decimalPrecision = normalise(CurrentNumber.Precision.ToDecimal(NumberFormatInfo.InvariantInfo), max_decimal_digits); diff --git a/osu.Game/Overlays/Settings/Sections/Audio/VolumeSettings.cs b/osu.Game/Overlays/Settings/Sections/Audio/VolumeSettings.cs index 0124f7090e..fe7f4c4908 100644 --- a/osu.Game/Overlays/Settings/Sections/Audio/VolumeSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/Audio/VolumeSettings.cs @@ -17,10 +17,10 @@ namespace osu.Game.Overlays.Settings.Sections.Audio { Children = new Drawable[] { - new SettingsSlider { LabelText = "Master", Bindable = audio.Volume, KeyboardStep = 0.01f }, - new SettingsSlider { LabelText = "Master (window inactive)", Bindable = config.GetBindable(OsuSetting.VolumeInactive), KeyboardStep = 0.01f }, - new SettingsSlider { LabelText = "Effect", Bindable = audio.VolumeSample, KeyboardStep = 0.01f }, - new SettingsSlider { LabelText = "Music", Bindable = audio.VolumeTrack, KeyboardStep = 0.01f }, + new SettingsSlider { LabelText = "Master", Bindable = audio.Volume, KeyboardStep = 0.01f, DisplayAsPercentage = true }, + new SettingsSlider { LabelText = "Master (window inactive)", Bindable = config.GetBindable(OsuSetting.VolumeInactive), KeyboardStep = 0.01f, DisplayAsPercentage = true }, + new SettingsSlider { LabelText = "Effect", Bindable = audio.VolumeSample, KeyboardStep = 0.01f, DisplayAsPercentage = true }, + new SettingsSlider { LabelText = "Music", Bindable = audio.VolumeTrack, KeyboardStep = 0.01f, DisplayAsPercentage = true }, }; } } diff --git a/osu.Game/Overlays/Settings/Sections/Gameplay/GeneralSettings.cs b/osu.Game/Overlays/Settings/Sections/Gameplay/GeneralSettings.cs index 08bc67e43e..2d2cd42213 100644 --- a/osu.Game/Overlays/Settings/Sections/Gameplay/GeneralSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/Gameplay/GeneralSettings.cs @@ -21,13 +21,15 @@ namespace osu.Game.Overlays.Settings.Sections.Gameplay { LabelText = "Background dim", Bindable = config.GetBindable(OsuSetting.DimLevel), - KeyboardStep = 0.01f + KeyboardStep = 0.01f, + DisplayAsPercentage = true }, new SettingsSlider { LabelText = "Background blur", Bindable = config.GetBindable(OsuSetting.BlurLevel), - KeyboardStep = 0.01f + KeyboardStep = 0.01f, + DisplayAsPercentage = true }, new SettingsCheckbox { diff --git a/osu.Game/Overlays/Settings/Sections/Graphics/LayoutSettings.cs b/osu.Game/Overlays/Settings/Sections/Graphics/LayoutSettings.cs index 02b9edd975..efbb08b7df 100644 --- a/osu.Game/Overlays/Settings/Sections/Graphics/LayoutSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/Graphics/LayoutSettings.cs @@ -98,25 +98,29 @@ namespace osu.Game.Overlays.Settings.Sections.Graphics { LabelText = "Horizontal position", Bindable = scalingPositionX, - KeyboardStep = 0.01f + KeyboardStep = 0.01f, + DisplayAsPercentage = true }, new SettingsSlider { LabelText = "Vertical position", Bindable = scalingPositionY, - KeyboardStep = 0.01f + KeyboardStep = 0.01f, + DisplayAsPercentage = true }, new SettingsSlider { LabelText = "Horizontal scale", Bindable = scalingSizeX, - KeyboardStep = 0.01f + KeyboardStep = 0.01f, + DisplayAsPercentage = true }, new SettingsSlider { LabelText = "Vertical scale", Bindable = scalingSizeY, - KeyboardStep = 0.01f + KeyboardStep = 0.01f, + DisplayAsPercentage = true }, } }, diff --git a/osu.Game/Overlays/Settings/SettingsSlider.cs b/osu.Game/Overlays/Settings/SettingsSlider.cs index 96c0279a7b..a7485f77cd 100644 --- a/osu.Game/Overlays/Settings/SettingsSlider.cs +++ b/osu.Game/Overlays/Settings/SettingsSlider.cs @@ -33,5 +33,11 @@ namespace osu.Game.Overlays.Settings get => ((TSlider)Control).KeyboardStep; set => ((TSlider)Control).KeyboardStep = value; } + + public bool DisplayAsPercentage + { + get => ((TSlider)Control).DisplayAsPercentage; + set => ((TSlider)Control).DisplayAsPercentage = value; + } } } diff --git a/osu.Game/Screens/Play/PlayerSettings/VisualSettings.cs b/osu.Game/Screens/Play/PlayerSettings/VisualSettings.cs index ff64f35a18..9db3a587fa 100644 --- a/osu.Game/Screens/Play/PlayerSettings/VisualSettings.cs +++ b/osu.Game/Screens/Play/PlayerSettings/VisualSettings.cs @@ -27,12 +27,18 @@ namespace osu.Game.Screens.Play.PlayerSettings { Text = "Background dim:" }, - dimSliderBar = new PlayerSliderBar(), + dimSliderBar = new PlayerSliderBar + { + DisplayAsPercentage = true + }, new OsuSpriteText { Text = "Background blur:" }, - blurSliderBar = new PlayerSliderBar(), + blurSliderBar = new PlayerSliderBar + { + DisplayAsPercentage = true + }, new OsuSpriteText { Text = "Toggles:" From a3cfeb08d41d3b4b8235b6422fc35c8d5cf16b0d Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 28 Jan 2020 12:34:17 +0800 Subject: [PATCH 1049/1829] remove unused assignment --- osu.Game/Graphics/UserInterface/OsuSliderBar.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Graphics/UserInterface/OsuSliderBar.cs b/osu.Game/Graphics/UserInterface/OsuSliderBar.cs index 1058595232..d908f046bd 100644 --- a/osu.Game/Graphics/UserInterface/OsuSliderBar.cs +++ b/osu.Game/Graphics/UserInterface/OsuSliderBar.cs @@ -170,7 +170,6 @@ namespace osu.Game.Graphics.UserInterface else { double floatValue = value.ToDouble(NumberFormatInfo.InvariantInfo); - double floatMinValue = CurrentNumber.MinValue.ToDouble(NumberFormatInfo.InvariantInfo); double floatMaxValue = CurrentNumber.MaxValue.ToDouble(NumberFormatInfo.InvariantInfo); if (DisplayAsPercentage) From 596a01661cfed0e2dc275c105754fb6c4304adb1 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 28 Jan 2020 13:42:22 +0900 Subject: [PATCH 1050/1829] Remove 1ms offset and update tests --- ...tSceneHitObjectComposerDistanceSnapping.cs | 30 ++++++++++--------- osu.Game/Screens/Edit/EditorBeatmap.cs | 2 +- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs b/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs index e825df5a3f..5a4e76d586 100644 --- a/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs +++ b/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs @@ -118,17 +118,19 @@ namespace osu.Game.Tests.Editor [Test] public void TestGetSnappedDurationFromDistance() { - assertSnappedDuration(50, 0); + assertSnappedDuration(0, 0); + assertSnappedDuration(50, 1000); assertSnappedDuration(100, 1000); - assertSnappedDuration(150, 1000); + assertSnappedDuration(150, 2000); assertSnappedDuration(200, 2000); - assertSnappedDuration(250, 2000); + assertSnappedDuration(250, 3000); AddStep("set slider multiplier = 2", () => composer.EditorBeatmap.BeatmapInfo.BaseDifficulty.SliderMultiplier = 2); + assertSnappedDuration(0, 0); assertSnappedDuration(50, 0); - assertSnappedDuration(100, 0); - assertSnappedDuration(150, 0); + assertSnappedDuration(100, 1000); + assertSnappedDuration(150, 1000); assertSnappedDuration(200, 1000); assertSnappedDuration(250, 1000); @@ -139,8 +141,8 @@ namespace osu.Game.Tests.Editor }); assertSnappedDuration(50, 0); - assertSnappedDuration(100, 0); - assertSnappedDuration(150, 0); + assertSnappedDuration(100, 500); + assertSnappedDuration(150, 500); assertSnappedDuration(200, 500); assertSnappedDuration(250, 500); assertSnappedDuration(400, 1000); @@ -149,17 +151,17 @@ namespace osu.Game.Tests.Editor [Test] public void GetSnappedDistanceFromDistance() { - assertSnappedDistance(50, 0); + assertSnappedDistance(50, 100); assertSnappedDistance(100, 100); - assertSnappedDistance(150, 100); + assertSnappedDistance(150, 200); assertSnappedDistance(200, 200); - assertSnappedDistance(250, 200); + assertSnappedDistance(250, 300); AddStep("set slider multiplier = 2", () => composer.EditorBeatmap.BeatmapInfo.BaseDifficulty.SliderMultiplier = 2); assertSnappedDistance(50, 0); - assertSnappedDistance(100, 0); - assertSnappedDistance(150, 0); + assertSnappedDistance(100, 200); + assertSnappedDistance(150, 200); assertSnappedDistance(200, 200); assertSnappedDistance(250, 200); @@ -170,8 +172,8 @@ namespace osu.Game.Tests.Editor }); assertSnappedDistance(50, 0); - assertSnappedDistance(100, 0); - assertSnappedDistance(150, 0); + assertSnappedDistance(100, 200); + assertSnappedDistance(150, 200); assertSnappedDistance(200, 200); assertSnappedDistance(250, 200); assertSnappedDistance(400, 400); diff --git a/osu.Game/Screens/Edit/EditorBeatmap.cs b/osu.Game/Screens/Edit/EditorBeatmap.cs index 2d3ecf583e..385afc2392 100644 --- a/osu.Game/Screens/Edit/EditorBeatmap.cs +++ b/osu.Game/Screens/Edit/EditorBeatmap.cs @@ -135,7 +135,7 @@ namespace osu.Game.Screens.Edit var beatLength = timingPoint.BeatLength / BeatDivisor; // A 1ms offset prevents rounding errors due to minute variations in duration - return timingPoint.Time + (int)Math.Round(((time - timingPoint.Time) + 1) / beatLength) * beatLength; + return timingPoint.Time + (int)Math.Round((time - timingPoint.Time) / beatLength, MidpointRounding.AwayFromZero) * beatLength; } public double GetBeatLengthAtTime(double referenceTime) => ControlPointInfo.TimingPointAt(referenceTime).BeatLength / BeatDivisor; From e81d3c51edb0f4ca502409593d03d34c0b523a1a Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 28 Jan 2020 15:00:45 +0900 Subject: [PATCH 1051/1829] Move select tool to an actual tool implementation Also tidies up radio button action firing so calling Select actually fires the associated action in all cases. --- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 14 ++++---- .../Edit/Tools/HitObjectCompositionTool.cs | 2 ++ osu.Game/Rulesets/Edit/Tools/SelectTool.cs | 15 +++++++++ .../RadioButtons/DrawableRadioButton.cs | 18 ++--------- .../Components/RadioButtons/RadioButton.cs | 32 +++++++++++-------- 5 files changed, 44 insertions(+), 37 deletions(-) create mode 100644 osu.Game/Rulesets/Edit/Tools/SelectTool.cs diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index 9ee3bacf9b..c413d25f09 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -137,12 +137,12 @@ namespace osu.Game.Rulesets.Edit } }; - toolboxCollection.Items = - CompositionTools.Select(t => new RadioButton(t.Name, () => selectTool(t))) - .Prepend(new RadioButton("Select", () => selectTool(null))) - .ToList(); + toolboxCollection.Items = CompositionTools + .Prepend(new SelectTool()) + .Select(t => new RadioButton(t.Name, () => toolSelected(t))) + .ToList(); - toolboxCollection.Items[0].Select(); + toolboxCollection.Items.First().Select(); blueprintContainer.SelectionChanged += selectionChanged; } @@ -187,11 +187,11 @@ namespace osu.Game.Rulesets.Edit showGridFor(hitObjects); } - private void selectTool(HitObjectCompositionTool tool) + private void toolSelected(HitObjectCompositionTool tool) { blueprintContainer.CurrentTool = tool; - if (tool == null) + if (tool is SelectTool) distanceSnapGridContainer.Hide(); else showGridFor(Enumerable.Empty()); diff --git a/osu.Game/Rulesets/Edit/Tools/HitObjectCompositionTool.cs b/osu.Game/Rulesets/Edit/Tools/HitObjectCompositionTool.cs index 825c63e6ee..0631031302 100644 --- a/osu.Game/Rulesets/Edit/Tools/HitObjectCompositionTool.cs +++ b/osu.Game/Rulesets/Edit/Tools/HitObjectCompositionTool.cs @@ -13,5 +13,7 @@ namespace osu.Game.Rulesets.Edit.Tools } public abstract PlacementBlueprint CreatePlacementBlueprint(); + + public override string ToString() => Name; } } diff --git a/osu.Game/Rulesets/Edit/Tools/SelectTool.cs b/osu.Game/Rulesets/Edit/Tools/SelectTool.cs new file mode 100644 index 0000000000..b96eeb0790 --- /dev/null +++ b/osu.Game/Rulesets/Edit/Tools/SelectTool.cs @@ -0,0 +1,15 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +namespace osu.Game.Rulesets.Edit.Tools +{ + public class SelectTool : HitObjectCompositionTool + { + public SelectTool() + : base("Select") + { + } + + public override PlacementBlueprint CreatePlacementBlueprint() => null; + } +} diff --git a/osu.Game/Screens/Edit/Components/RadioButtons/DrawableRadioButton.cs b/osu.Game/Screens/Edit/Components/RadioButtons/DrawableRadioButton.cs index 5854d66aa8..7be91f4e8e 100644 --- a/osu.Game/Screens/Edit/Components/RadioButtons/DrawableRadioButton.cs +++ b/osu.Game/Screens/Edit/Components/RadioButtons/DrawableRadioButton.cs @@ -9,7 +9,6 @@ using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Effects; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Sprites; -using osu.Framework.Input.Events; using osu.Game.Graphics; using osu.Game.Graphics.Sprites; using osu.Game.Graphics.UserInterface; @@ -37,8 +36,8 @@ namespace osu.Game.Screens.Edit.Components.RadioButtons { this.button = button; - Text = button.Text; - Action = button.Action; + Text = button.Item.ToString(); + Action = button.Select; RelativeSizeAxes = Axes.X; @@ -100,19 +99,6 @@ namespace osu.Game.Screens.Edit.Components.RadioButtons bubble.Colour = button.Selected.Value ? selectedBubbleColour : defaultBubbleColour; } - protected override bool OnClick(ClickEvent e) - { - if (button.Selected.Value) - return true; - - if (!Enabled.Value) - return true; - - button.Selected.Value = true; - - return base.OnClick(e); - } - protected override SpriteText CreateText() => new OsuSpriteText { Depth = -1, diff --git a/osu.Game/Screens/Edit/Components/RadioButtons/RadioButton.cs b/osu.Game/Screens/Edit/Components/RadioButtons/RadioButton.cs index 3692c0437b..b515d7c8bd 100644 --- a/osu.Game/Screens/Edit/Components/RadioButtons/RadioButton.cs +++ b/osu.Game/Screens/Edit/Components/RadioButtons/RadioButton.cs @@ -15,33 +15,37 @@ namespace osu.Game.Screens.Edit.Components.RadioButtons public readonly BindableBool Selected; /// - /// The text that should be displayed in this button. + /// The item related to this button. /// - public string Text; + public object Item; - /// - /// The that should be invoked when this button is selected. - /// - public Action Action; + private readonly Action action; - public RadioButton(string text, Action action) + public RadioButton(object item, Action action) { - Text = text; - Action = action; + Item = item; + this.action = action; Selected = new BindableBool(); } - public RadioButton(string text) - : this(text, null) + public RadioButton(string item) + : this(item, null) { - Text = text; - Action = null; + Item = item; + action = null; } /// /// Selects this . /// - public void Select() => Selected.Value = true; + public void Select() + { + if (!Selected.Value) + { + Selected.Value = true; + action?.Invoke(); + } + } /// /// Deselects this . From 7e0c45de6dfb736d749f3606b8c33eded764c432 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 28 Jan 2020 15:08:02 +0900 Subject: [PATCH 1052/1829] Allow selecting composition tools using 1-4 keys --- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index c413d25f09..82e0905bd8 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -9,6 +9,7 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Input; +using osu.Framework.Input.Events; using osu.Framework.Logging; using osu.Framework.Threading; using osu.Framework.Timing; @@ -25,6 +26,7 @@ using osu.Game.Screens.Edit.Components.RadioButtons; using osu.Game.Screens.Edit.Compose; using osu.Game.Screens.Edit.Compose.Components; using osuTK; +using Key = osuTK.Input.Key; namespace osu.Game.Rulesets.Edit { @@ -58,6 +60,8 @@ namespace osu.Game.Rulesets.Edit private InputManager inputManager; + private RadioButtonCollection toolboxCollection; + protected HitObjectComposer(Ruleset ruleset) { Ruleset = ruleset; @@ -100,7 +104,6 @@ namespace osu.Game.Rulesets.Edit layerContainers.Add(layerBelowRuleset); layerContainers.Add(layerAboveRuleset); - RadioButtonCollection toolboxCollection; InternalChild = new GridContainer { RelativeSizeAxes = Axes.Both, @@ -147,6 +150,22 @@ namespace osu.Game.Rulesets.Edit blueprintContainer.SelectionChanged += selectionChanged; } + protected override bool OnKeyDown(KeyDownEvent e) + { + if (e.Key >= Key.Number1 && e.Key <= Key.Number9) + { + var item = toolboxCollection.Items.Skip(e.Key - Key.Number1).FirstOrDefault(); + + if (item != null) + { + item.Select(); + return true; + } + } + + return base.OnKeyDown(e); + } + protected override void LoadComplete() { base.LoadComplete(); From 8e2159e4eba213a624dbb759bd5ff130207590b3 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 28 Jan 2020 15:07:37 +0900 Subject: [PATCH 1053/1829] Ensure selection tool correctly matches selection state - When a selection is made (via the timeline) the selection tool should become the select tool. - When the selection tool is changed to anything *but* the select tool, the selection should be cleared. --- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 21 ++++++++++++++----- .../Compose/Components/BlueprintContainer.cs | 8 +++---- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index c413d25f09..1d97567b39 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -58,6 +58,8 @@ namespace osu.Game.Rulesets.Edit private InputManager inputManager; + private RadioButtonCollection toolboxCollection; + protected HitObjectComposer(Ruleset ruleset) { Ruleset = ruleset; @@ -100,7 +102,6 @@ namespace osu.Game.Rulesets.Edit layerContainers.Add(layerBelowRuleset); layerContainers.Add(layerAboveRuleset); - RadioButtonCollection toolboxCollection; InternalChild = new GridContainer { RelativeSizeAxes = Axes.Both, @@ -142,7 +143,7 @@ namespace osu.Game.Rulesets.Edit .Select(t => new RadioButton(t.Name, () => toolSelected(t))) .ToList(); - toolboxCollection.Items.First().Select(); + setSelectTool(); blueprintContainer.SelectionChanged += selectionChanged; } @@ -181,12 +182,19 @@ namespace osu.Game.Rulesets.Edit { var hitObjects = selectedHitObjects.ToArray(); - if (!hitObjects.Any()) - distanceSnapGridContainer.Hide(); - else + if (hitObjects.Any()) + { + // ensure in selection mode if a selection is made. + setSelectTool(); + showGridFor(hitObjects); + } + else + distanceSnapGridContainer.Hide(); } + private void setSelectTool() => toolboxCollection.Items.First().Select(); + private void toolSelected(HitObjectCompositionTool tool) { blueprintContainer.CurrentTool = tool; @@ -194,7 +202,10 @@ namespace osu.Game.Rulesets.Edit if (tool is SelectTool) distanceSnapGridContainer.Hide(); else + { + EditorBeatmap.SelectedHitObjects.Clear(); showGridFor(Enumerable.Empty()); + } } private void showGridFor(IEnumerable selectedHitObjects) diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index 6b21f56567..675b2b648d 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -74,12 +74,16 @@ namespace osu.Game.Screens.Edit.Compose.Components { foreach (var o in objects) selectionBlueprints.FirstOrDefault(b => b.HitObject == o)?.Select(); + + SelectionChanged?.Invoke(selectedHitObjects); }; selectedHitObjects.ItemsRemoved += objects => { foreach (var o in objects) selectionBlueprints.FirstOrDefault(b => b.HitObject == o)?.Deselect(); + + SelectionChanged?.Invoke(selectedHitObjects); }; } @@ -332,8 +336,6 @@ namespace osu.Game.Screens.Edit.Compose.Components selectionHandler.HandleSelected(blueprint); selectionBlueprints.ChangeChildDepth(blueprint, 1); beatmap.SelectedHitObjects.Add(blueprint.HitObject); - - SelectionChanged?.Invoke(selectionHandler.SelectedHitObjects); } private void onBlueprintDeselected(SelectionBlueprint blueprint) @@ -341,8 +343,6 @@ namespace osu.Game.Screens.Edit.Compose.Components selectionHandler.HandleDeselected(blueprint); selectionBlueprints.ChangeChildDepth(blueprint, 0); beatmap.SelectedHitObjects.Remove(blueprint.HitObject); - - SelectionChanged?.Invoke(selectionHandler.SelectedHitObjects); } #endregion From a6cac072ee7f4376238094fcee94ef926162dab6 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 28 Jan 2020 15:17:50 +0900 Subject: [PATCH 1054/1829] Change default method style for better IDE autocompletion --- .editorconfig | 2 +- osu.sln.DotSettings | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.editorconfig b/.editorconfig index 8cdb92d11c..67f98f94eb 100644 --- a/.editorconfig +++ b/.editorconfig @@ -135,7 +135,7 @@ csharp_preferred_modifier_order = public,private,protected,internal,new,abstract csharp_style_expression_bodied_accessors = true:warning csharp_style_expression_bodied_constructors = false:none csharp_style_expression_bodied_indexers = true:warning -csharp_style_expression_bodied_methods = true:silent +csharp_style_expression_bodied_methods = false:silent csharp_style_expression_bodied_operators = true:warning csharp_style_expression_bodied_properties = true:warning csharp_style_expression_bodied_local_functions = true:silent diff --git a/osu.sln.DotSettings b/osu.sln.DotSettings index 6d131bf423..e3b64c03b9 100644 --- a/osu.sln.DotSettings +++ b/osu.sln.DotSettings @@ -1,4 +1,4 @@ - + True True True @@ -245,7 +245,7 @@ RequiredForMultiline Explicit ExpressionBody - ExpressionBody + BlockBody True NEXT_LINE True From f48c7db8276a38727914e8643cb20b9016eebe44 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 28 Jan 2020 15:41:09 +0900 Subject: [PATCH 1055/1829] Use Drawable.Empty instead of container --- osu.Game/Overlays/OverlayHeader.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index b165882864..5596f71dd0 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -75,10 +75,10 @@ namespace osu.Game.Overlays } [NotNull] - protected virtual Drawable CreateContent() => new Container(); + protected virtual Drawable CreateContent() => Drawable.Empty(); [NotNull] - protected virtual Drawable CreateBackground() => new Container(); + protected virtual Drawable CreateBackground() => Drawable.Empty(); protected abstract ScreenTitle CreateTitle(); } From 40379a5e225eb8b2b8f13a1214858e5dedf059e8 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 28 Jan 2020 16:04:13 +0900 Subject: [PATCH 1056/1829] Use foreach --- osu.Game/Screens/Edit/BindableBeatDivisor.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/osu.Game/Screens/Edit/BindableBeatDivisor.cs b/osu.Game/Screens/Edit/BindableBeatDivisor.cs index be1e121a99..d9477dd4bc 100644 --- a/osu.Game/Screens/Edit/BindableBeatDivisor.cs +++ b/osu.Game/Screens/Edit/BindableBeatDivisor.cs @@ -91,10 +91,8 @@ namespace osu.Game.Screens.Edit { int beat = index % beatDivisor; - for (int i = 0; i < BindableBeatDivisor.VALID_DIVISORS.Length; i++) + foreach (var divisor in BindableBeatDivisor.VALID_DIVISORS) { - int divisor = BindableBeatDivisor.VALID_DIVISORS[i]; - if ((beat * divisor) % beatDivisor == 0) return divisor; } From 5a2fd18bdd46ea994d7605cf757daa4434b36fb1 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 28 Jan 2020 10:21:27 +0300 Subject: [PATCH 1057/1829] Allow better async support for CommentsContainer --- .../Overlays/Comments/CommentsContainer.cs | 26 +++++++------------ 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/osu.Game/Overlays/Comments/CommentsContainer.cs b/osu.Game/Overlays/Comments/CommentsContainer.cs index 36b165c97d..78df73eb0d 100644 --- a/osu.Game/Overlays/Comments/CommentsContainer.cs +++ b/osu.Game/Overlays/Comments/CommentsContainer.cs @@ -30,22 +30,22 @@ namespace osu.Game.Overlays.Comments private CancellationTokenSource loadCancellation; private int currentPage; - private readonly Box background; - private readonly Box footerBackground; - private readonly FillFlowContainer content; - private readonly DeletedChildrenPlaceholder deletedChildrenPlaceholder; - private readonly CommentsShowMoreButton moreButton; - private readonly TotalCommentsCounter commentCounter; + private FillFlowContainer content; + private DeletedChildrenPlaceholder deletedChildrenPlaceholder; + private CommentsShowMoreButton moreButton; + private TotalCommentsCounter commentCounter; - public CommentsContainer() + [BackgroundDependencyLoader] + private void load(OverlayColourProvider colourProvider) { RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; AddRangeInternal(new Drawable[] { - background = new Box + new Box { RelativeSizeAxes = Axes.Both, + Colour = colourProvider.Background5 }, new FillFlowContainer { @@ -72,9 +72,10 @@ namespace osu.Game.Overlays.Comments AutoSizeAxes = Axes.Y, Children = new Drawable[] { - footerBackground = new Box + new Box { RelativeSizeAxes = Axes.Both, + Colour = colourProvider.Background4 }, new FillFlowContainer { @@ -109,13 +110,6 @@ namespace osu.Game.Overlays.Comments }); } - [BackgroundDependencyLoader] - private void load(OverlayColourProvider colourProvider) - { - background.Colour = colourProvider.Background5; - footerBackground.Colour = colourProvider.Background4; - } - protected override void LoadComplete() { Sort.BindValueChanged(_ => refetchComments(), true); From 12ff51f686cfd884200dabed1f2ef87dc7f08d91 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 28 Jan 2020 17:21:24 +0900 Subject: [PATCH 1058/1829] Fix key count being incorrectly adjusted by hard/easy mods --- .../Screens/Select/Details/AdvancedStats.cs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/osu.Game/Screens/Select/Details/AdvancedStats.cs b/osu.Game/Screens/Select/Details/AdvancedStats.cs index b7f60a8370..56c400e869 100644 --- a/osu.Game/Screens/Select/Details/AdvancedStats.cs +++ b/osu.Game/Screens/Select/Details/AdvancedStats.cs @@ -117,9 +117,20 @@ namespace osu.Game.Screens.Select.Details mod.ApplyToDifficulty(adjustedDifficulty); } - // Account for mania differences - firstValue.Title = (Beatmap?.Ruleset?.ID ?? 0) == 3 ? "Key Amount" : "Circle Size"; - firstValue.Value = (baseDifficulty?.CircleSize ?? 0, adjustedDifficulty?.CircleSize); + switch (Beatmap?.Ruleset?.ID ?? 0) + { + case 3: + // Account for mania differences locally for now + // Eventually this should be handled in a more modular way, allowing rulesets to return arbitrary difficulty attributes + firstValue.Title = "Key Count"; + firstValue.Value = (baseDifficulty?.CircleSize ?? 0, null); + break; + + default: + firstValue.Title = "Circle Size"; + firstValue.Value = (baseDifficulty?.CircleSize ?? 0, adjustedDifficulty?.CircleSize); + break; + } starDifficulty.Value = ((float)(Beatmap?.StarDifficulty ?? 0), null); From 2b2cfd91a6a48b7804870f4dfb19753372b54e9a Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 28 Jan 2020 17:59:14 +0900 Subject: [PATCH 1059/1829] Initial re-implementation using rearrangeable list --- .../UserInterface/TestScenePlaylistOverlay.cs | 59 ++++ osu.Game/Overlays/Music/PlaylistList.cs | 301 ++++-------------- osu.Game/Overlays/Music/PlaylistOverlay.cs | 12 +- 3 files changed, 135 insertions(+), 237 deletions(-) create mode 100644 osu.Game.Tests/Visual/UserInterface/TestScenePlaylistOverlay.cs diff --git a/osu.Game.Tests/Visual/UserInterface/TestScenePlaylistOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestScenePlaylistOverlay.cs new file mode 100644 index 0000000000..a470244f53 --- /dev/null +++ b/osu.Game.Tests/Visual/UserInterface/TestScenePlaylistOverlay.cs @@ -0,0 +1,59 @@ +// 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 NUnit.Framework; +using osu.Framework.Bindables; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Utils; +using osu.Game.Beatmaps; +using osu.Game.Overlays.Music; +using osuTK; + +namespace osu.Game.Tests.Visual.UserInterface +{ + public class TestScenePlaylistOverlay : OsuTestScene + { + private readonly BindableList beatmapSets = new BindableList(); + + [SetUp] + public void Setup() => Schedule(() => + { + PlaylistOverlay overlay; + + Child = new Container + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Size = new Vector2(300, 500), + Child = overlay = new PlaylistOverlay + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + RelativeSizeAxes = Axes.X, + State = { Value = Visibility.Visible } + } + }; + + beatmapSets.Clear(); + + for (int i = 0; i < 100; i++) + { + beatmapSets.Add(new BeatmapSetInfo + { + Metadata = new BeatmapMetadata + { + // Create random metadata, then we can check if sorting works based on these + Artist = "Some Artist " + RNG.Next(0, 9), + Title = $"Some Song {i + 1}", + AuthorString = "Some Guy " + RNG.Next(0, 9), + }, + DateAdded = DateTimeOffset.UtcNow, + }); + } + + overlay.BeatmapSets.BindTo(beatmapSets); + }); + } +} diff --git a/osu.Game/Overlays/Music/PlaylistList.cs b/osu.Game/Overlays/Music/PlaylistList.cs index 7bdcab6dff..5c091a21db 100644 --- a/osu.Game/Overlays/Music/PlaylistList.cs +++ b/osu.Game/Overlays/Music/PlaylistList.cs @@ -6,30 +6,16 @@ using System.Collections.Generic; using System.Linq; using osu.Framework.Allocation; using osu.Framework.Bindables; -using osu.Framework.Extensions.IEnumerableExtensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.Input.Events; +using osu.Framework.Graphics.UserInterface; using osu.Game.Beatmaps; -using osu.Game.Graphics.Containers; -using osuTK; namespace osu.Game.Overlays.Music { - public class PlaylistList : CompositeDrawable + public class PlaylistList2 : BasicRearrangeableListContainer { - public Action Selected; - - private readonly ItemsScrollContainer items; - - public PlaylistList() - { - InternalChild = items = new ItemsScrollContainer - { - RelativeSizeAxes = Axes.Both, - Selected = set => Selected?.Invoke(set), - }; - } + public readonly BindableList BeatmapSets = new BindableList(); public new MarginPadding Padding { @@ -37,232 +23,81 @@ namespace osu.Game.Overlays.Music set => base.Padding = value; } - public BeatmapSetInfo FirstVisibleSet => items.FirstVisibleSet; - - public void Filter(string searchTerm) => items.SearchTerm = searchTerm; - - private class ItemsScrollContainer : OsuScrollContainer + [BackgroundDependencyLoader] + private void load() { - public Action Selected; + BeatmapSets.ItemsAdded += addBeatmapSets; + BeatmapSets.ItemsRemoved += removeBeatmapSets; + } - private readonly SearchContainer search; - private readonly FillFlowContainer items; + public void Filter(string searchTerm) => ((PlaylistListFlowContainer)ListContainer).SearchTerm = searchTerm; - private readonly IBindable beatmapBacking = new Bindable(); + public BeatmapSetInfo FirstVisibleSet => ListContainer.FlowingChildren.Cast().FirstOrDefault(i => i.MatchingFilter)?.Model.BeatmapSetInfo; - private IBindableList beatmaps; + private void addBeatmapSets(IEnumerable sets) => Schedule(() => + { + foreach (var item in sets) + AddItem(new PlaylistListItem(item)); + }); - [Resolved] - private MusicController musicController { get; set; } + private void removeBeatmapSets(IEnumerable sets) => Schedule(() => + { + foreach (var item in sets) + RemoveItem(ListContainer.Children.Select(d => d.Model).FirstOrDefault(m => m.BeatmapSetInfo == item)); + }); - public ItemsScrollContainer() + protected override BasicDrawableRearrangeableListItem CreateBasicItem(PlaylistListItem item) => new DrawablePlaylistListItem(item); + + protected override FillFlowContainer CreateListFillFlowContainer() => new PlaylistListFlowContainer + { + LayoutDuration = 200, + LayoutEasing = Easing.OutQuint + }; + } + + public class PlaylistListFlowContainer : SearchContainer.DrawableRearrangeableListItem> + { + } + + public class PlaylistListItem : IEquatable + { + public readonly BeatmapSetInfo BeatmapSetInfo; + + public PlaylistListItem(BeatmapSetInfo beatmapSetInfo) + { + BeatmapSetInfo = beatmapSetInfo; + } + + public override string ToString() => BeatmapSetInfo.ToString(); + + public bool Equals(PlaylistListItem other) => BeatmapSetInfo.Equals(other?.BeatmapSetInfo); + } + + public class DrawablePlaylistListItem : BasicRearrangeableListContainer.BasicDrawableRearrangeableListItem, IFilterable + { + public DrawablePlaylistListItem(PlaylistListItem item) + : base(item) + { + FilterTerms = item.BeatmapSetInfo.Metadata.SearchableTerms; + } + + public IEnumerable FilterTerms { get; } + + private bool matching = true; + + public bool MatchingFilter + { + get => matching; + set { - Children = new Drawable[] - { - search = new SearchContainer - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Children = new Drawable[] - { - items = new ItemSearchContainer - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - }, - } - } - }; - } + if (matching == value) return; - [BackgroundDependencyLoader] - private void load(IBindable beatmap) - { - beatmaps = musicController.BeatmapSets.GetBoundCopy(); - beatmaps.ItemsAdded += i => i.ForEach(addBeatmapSet); - beatmaps.ItemsRemoved += i => i.ForEach(removeBeatmapSet); - beatmaps.ForEach(addBeatmapSet); + matching = value; - beatmapBacking.BindTo(beatmap); - beatmapBacking.ValueChanged += _ => Scheduler.AddOnce(updateSelectedSet); - } - - private void addBeatmapSet(BeatmapSetInfo obj) - { - if (obj == draggedItem?.BeatmapSetInfo) return; - - Schedule(() => items.Insert(items.Count - 1, new PlaylistItem(obj) { OnSelect = set => Selected?.Invoke(set) })); - } - - private void removeBeatmapSet(BeatmapSetInfo obj) - { - if (obj == draggedItem?.BeatmapSetInfo) return; - - Schedule(() => - { - var itemToRemove = items.FirstOrDefault(i => i.BeatmapSetInfo.ID == obj.ID); - if (itemToRemove != null) - items.Remove(itemToRemove); - }); - } - - private void updateSelectedSet() - { - foreach (PlaylistItem s in items.Children) - { - s.Selected = s.BeatmapSetInfo.ID == beatmapBacking.Value.BeatmapSetInfo?.ID; - if (s.Selected) - ScrollIntoView(s); - } - } - - public string SearchTerm - { - get => search.SearchTerm; - set => search.SearchTerm = value; - } - - public BeatmapSetInfo FirstVisibleSet => items.FirstOrDefault(i => i.MatchingFilter)?.BeatmapSetInfo; - - private Vector2 nativeDragPosition; - private PlaylistItem draggedItem; - - private int? dragDestination; - - protected override bool OnDragStart(DragStartEvent e) - { - nativeDragPosition = e.ScreenSpaceMousePosition; - draggedItem = items.FirstOrDefault(d => d.IsDraggable); - return draggedItem != null || base.OnDragStart(e); - } - - protected override void OnDrag(DragEvent e) - { - nativeDragPosition = e.ScreenSpaceMousePosition; - - if (draggedItem == null) - base.OnDrag(e); - } - - protected override void OnDragEnd(DragEndEvent e) - { - nativeDragPosition = e.ScreenSpaceMousePosition; - - if (draggedItem == null) - { - base.OnDragEnd(e); - return; - } - - if (dragDestination != null) - musicController.ChangeBeatmapSetPosition(draggedItem.BeatmapSetInfo, dragDestination.Value); - - draggedItem = null; - dragDestination = null; - } - - protected override void Update() - { - base.Update(); - - if (draggedItem == null) - return; - - updateScrollPosition(); - updateDragPosition(); - } - - private void updateScrollPosition() - { - const float start_offset = 10; - const double max_power = 50; - const double exp_base = 1.05; - - var localPos = ToLocalSpace(nativeDragPosition); - - if (localPos.Y < start_offset) - { - if (Current <= 0) - return; - - var power = Math.Min(max_power, Math.Abs(start_offset - localPos.Y)); - ScrollBy(-(float)Math.Pow(exp_base, power)); - } - else if (localPos.Y > DrawHeight - start_offset) - { - if (IsScrolledToEnd()) - return; - - var power = Math.Min(max_power, Math.Abs(DrawHeight - start_offset - localPos.Y)); - ScrollBy((float)Math.Pow(exp_base, power)); - } - } - - private void updateDragPosition() - { - var itemsPos = items.ToLocalSpace(nativeDragPosition); - - int srcIndex = (int)items.GetLayoutPosition(draggedItem); - - // Find the last item with position < mouse position. Note we can't directly use - // the item positions as they are being transformed - float heightAccumulator = 0; - int dstIndex = 0; - - for (; dstIndex < items.Count; dstIndex++) - { - // Using BoundingBox here takes care of scale, paddings, etc... - heightAccumulator += items[dstIndex].BoundingBox.Height; - if (heightAccumulator > itemsPos.Y) - break; - } - - dstIndex = Math.Clamp(dstIndex, 0, items.Count - 1); - - if (srcIndex == dstIndex) - return; - - if (srcIndex < dstIndex) - { - for (int i = srcIndex + 1; i <= dstIndex; i++) - items.SetLayoutPosition(items[i], i - 1); - } - else - { - for (int i = dstIndex; i < srcIndex; i++) - items.SetLayoutPosition(items[i], i + 1); - } - - items.SetLayoutPosition(draggedItem, dstIndex); - dragDestination = dstIndex; - } - - private class ItemSearchContainer : FillFlowContainer, IHasFilterableChildren - { - public IEnumerable FilterTerms => Array.Empty(); - - public bool MatchingFilter - { - set - { - if (value) - InvalidateLayout(); - } - } - - public bool FilteringActive - { - set { } - } - - public IEnumerable FilterableChildren => Children; - - public ItemSearchContainer() - { - LayoutDuration = 200; - LayoutEasing = Easing.OutQuint; - } + this.FadeTo(matching ? 1 : 0, 200); } } + + public bool FilteringActive { get; set; } } } diff --git a/osu.Game/Overlays/Music/PlaylistOverlay.cs b/osu.Game/Overlays/Music/PlaylistOverlay.cs index b89a577282..ff1b26e335 100644 --- a/osu.Game/Overlays/Music/PlaylistOverlay.cs +++ b/osu.Game/Overlays/Music/PlaylistOverlay.cs @@ -21,12 +21,14 @@ namespace osu.Game.Overlays.Music private const float transition_duration = 600; private const float playlist_height = 510; + public readonly BindableList BeatmapSets = new BindableList(); + private readonly Bindable beatmap = new Bindable(); private BeatmapManager beatmaps; private FilterControl filter; - private PlaylistList list; - + private PlaylistList2 list; + [BackgroundDependencyLoader] private void load(OsuColour colours, Bindable beatmap, BeatmapManager beatmaps) { @@ -53,11 +55,11 @@ namespace osu.Game.Overlays.Music Colour = colours.Gray3, RelativeSizeAxes = Axes.Both, }, - list = new PlaylistList + list = new PlaylistList2 { RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { Top = 95, Bottom = 10, Right = 10 }, - Selected = itemSelected, + // Selected = itemSelected, }, filter = new FilterControl { @@ -70,6 +72,8 @@ namespace osu.Game.Overlays.Music }, }; + list.BeatmapSets.BindTo(BeatmapSets); + filter.Search.OnCommit = (sender, newText) => { BeatmapInfo toSelect = list.FirstVisibleSet?.Beatmaps?.FirstOrDefault(); From 894642d5883d75dcd9c1b294c6edde806994a06c Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 28 Jan 2020 18:04:00 +0800 Subject: [PATCH 1060/1829] add xmldoc and formatting --- .../Graphics/UserInterface/OsuSliderBar.cs | 4 +++ .../Settings/Sections/Audio/VolumeSettings.cs | 32 ++++++++++++++++--- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/OsuSliderBar.cs b/osu.Game/Graphics/UserInterface/OsuSliderBar.cs index d908f046bd..2db1c881c0 100644 --- a/osu.Game/Graphics/UserInterface/OsuSliderBar.cs +++ b/osu.Game/Graphics/UserInterface/OsuSliderBar.cs @@ -35,6 +35,10 @@ namespace osu.Game.Graphics.UserInterface private readonly Container nubContainer; public virtual string TooltipText { get; private set; } + + /// + /// Whether to format the tooltip as a percentage or the actual value. + /// public bool DisplayAsPercentage { get; set; } private Color4 accentColour; diff --git a/osu.Game/Overlays/Settings/Sections/Audio/VolumeSettings.cs b/osu.Game/Overlays/Settings/Sections/Audio/VolumeSettings.cs index fe7f4c4908..bda677ecd6 100644 --- a/osu.Game/Overlays/Settings/Sections/Audio/VolumeSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/Audio/VolumeSettings.cs @@ -17,10 +17,34 @@ namespace osu.Game.Overlays.Settings.Sections.Audio { Children = new Drawable[] { - new SettingsSlider { LabelText = "Master", Bindable = audio.Volume, KeyboardStep = 0.01f, DisplayAsPercentage = true }, - new SettingsSlider { LabelText = "Master (window inactive)", Bindable = config.GetBindable(OsuSetting.VolumeInactive), KeyboardStep = 0.01f, DisplayAsPercentage = true }, - new SettingsSlider { LabelText = "Effect", Bindable = audio.VolumeSample, KeyboardStep = 0.01f, DisplayAsPercentage = true }, - new SettingsSlider { LabelText = "Music", Bindable = audio.VolumeTrack, KeyboardStep = 0.01f, DisplayAsPercentage = true }, + new SettingsSlider + { + LabelText = "Master", + Bindable = audio.Volume, + KeyboardStep = 0.01f, + DisplayAsPercentage = true + }, + new SettingsSlider + { + LabelText = "Master (window inactive)", + Bindable = config.GetBindable(OsuSetting.VolumeInactive), + KeyboardStep = 0.01f, + DisplayAsPercentage = true + }, + new SettingsSlider + { + LabelText = "Effect", + Bindable = audio.VolumeSample, + KeyboardStep = 0.01f, + DisplayAsPercentage = true + }, + new SettingsSlider + { + LabelText = "Music", + Bindable = audio.VolumeTrack, + KeyboardStep = 0.01f, + DisplayAsPercentage = true + }, }; } } From 0e0c730095e11e4320c50d4934d0ad60df6f5af8 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 28 Jan 2020 19:44:32 +0900 Subject: [PATCH 1061/1829] Add a method to recycle test storage between runs --- .../Visual/Menus/TestSceneScreenNavigation.cs | 2 ++ osu.Game/Tests/Visual/OsuTestScene.cs | 33 +++++++++++-------- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/osu.Game.Tests/Visual/Menus/TestSceneScreenNavigation.cs b/osu.Game.Tests/Visual/Menus/TestSceneScreenNavigation.cs index 471f67b7b6..f3c5d2a7ef 100644 --- a/osu.Game.Tests/Visual/Menus/TestSceneScreenNavigation.cs +++ b/osu.Game.Tests/Visual/Menus/TestSceneScreenNavigation.cs @@ -65,6 +65,8 @@ namespace osu.Game.Tests.Visual.Menus game.Dispose(); } + RecycleLocalStorage(); + game = new TestOsuGame(LocalStorage, API); game.SetHost(host); diff --git a/osu.Game/Tests/Visual/OsuTestScene.cs b/osu.Game/Tests/Visual/OsuTestScene.cs index 8926c76018..41ab7fce99 100644 --- a/osu.Game/Tests/Visual/OsuTestScene.cs +++ b/osu.Game/Tests/Visual/OsuTestScene.cs @@ -36,7 +36,7 @@ namespace osu.Game.Tests.Visual protected new OsuScreenDependencies Dependencies { get; private set; } - private readonly Lazy localStorage; + private Lazy localStorage; protected Storage LocalStorage => localStorage.Value; private readonly Lazy contextFactory; @@ -91,7 +91,7 @@ namespace osu.Game.Tests.Visual protected OsuTestScene() { - localStorage = new Lazy(() => new NativeStorage($"{GetType().Name}-{Guid.NewGuid()}")); + RecycleLocalStorage(); contextFactory = new Lazy(() => { var factory = new DatabaseContextFactory(LocalStorage); @@ -104,6 +104,23 @@ namespace osu.Game.Tests.Visual base.Content.Add(content = new DrawSizePreservingFillContainer()); } + public void RecycleLocalStorage() + { + if (localStorage?.IsValueCreated == true) + { + try + { + localStorage.Value.DeleteDirectory("."); + } + catch + { + // we don't really care if this fails; it will just leave folders lying around from test runs. + } + } + + localStorage = new Lazy(() => new NativeStorage($"{GetType().Name}-{Guid.NewGuid()}")); + } + [Resolved] protected AudioManager Audio { get; private set; } @@ -131,17 +148,7 @@ namespace osu.Game.Tests.Visual if (contextFactory.IsValueCreated) contextFactory.Value.ResetDatabase(); - if (localStorage.IsValueCreated) - { - try - { - localStorage.Value.DeleteDirectory("."); - } - catch - { - // we don't really care if this fails; it will just leave folders lying around from test runs. - } - } + RecycleLocalStorage(); } protected override ITestSceneTestRunner CreateRunner() => new OsuTestSceneTestRunner(); From 2498709d0626c388c0a1d4801db7c743585a6618 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 28 Jan 2020 19:46:57 +0900 Subject: [PATCH 1062/1829] Fix navigation test crashing when raw input is disabled --- osu.Game.Tests/Visual/Menus/TestSceneScreenNavigation.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Menus/TestSceneScreenNavigation.cs b/osu.Game.Tests/Visual/Menus/TestSceneScreenNavigation.cs index 471f67b7b6..0908e527a6 100644 --- a/osu.Game.Tests/Visual/Menus/TestSceneScreenNavigation.cs +++ b/osu.Game.Tests/Visual/Menus/TestSceneScreenNavigation.cs @@ -7,6 +7,7 @@ using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Audio.Track; using osu.Framework.Bindables; +using osu.Framework.Configuration; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; @@ -65,10 +66,14 @@ namespace osu.Game.Tests.Visual.Menus game.Dispose(); } + // see MouseSettings + var frameworkConfig = host.Dependencies.Get(); + frameworkConfig.GetBindable(FrameworkSetting.CursorSensitivity).Disabled = false; + game = new TestOsuGame(LocalStorage, API); game.SetHost(host); - // todo: this can be removed once we can run audio trakcs without a device present + // todo: this can be removed once we can run audio tracks without a device present // see https://github.com/ppy/osu/issues/1302 game.LocalConfig.Set(OsuSetting.IntroSequence, IntroSequence.Circles); From b947e89a6b11946110ec66709657fc70bfbe73ec Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 28 Jan 2020 16:53:22 +0300 Subject: [PATCH 1063/1829] Add placeholder for no comments case in CommentsContainer --- .../Online/TestSceneCommentsContainer.cs | 1 + .../Overlays/Comments/CommentsContainer.cs | 33 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs index 3d63e2b07e..2af191945c 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs @@ -48,6 +48,7 @@ namespace osu.Game.Tests.Visual.Online AddStep("Airman comments", () => comments.ShowComments(CommentableType.Beatmapset, 24313)); AddStep("Lazer build comments", () => comments.ShowComments(CommentableType.Build, 4772)); AddStep("News comments", () => comments.ShowComments(CommentableType.NewsPost, 715)); + AddStep("Beatmap with no comments", () => comments.ShowComments(CommentableType.Beatmapset, 1291)); AddStep("Idle state", () => { scroll.Clear(); diff --git a/osu.Game/Overlays/Comments/CommentsContainer.cs b/osu.Game/Overlays/Comments/CommentsContainer.cs index 78df73eb0d..fd5c390f0f 100644 --- a/osu.Game/Overlays/Comments/CommentsContainer.cs +++ b/osu.Game/Overlays/Comments/CommentsContainer.cs @@ -12,6 +12,7 @@ using osu.Game.Online.API.Requests.Responses; using System.Threading; using System.Linq; using osu.Framework.Extensions.IEnumerableExtensions; +using osu.Game.Graphics.Sprites; namespace osu.Game.Overlays.Comments { @@ -34,6 +35,7 @@ namespace osu.Game.Overlays.Comments private DeletedChildrenPlaceholder deletedChildrenPlaceholder; private CommentsShowMoreButton moreButton; private TotalCommentsCounter commentCounter; + private Container noCommentsPlaceholder; [BackgroundDependencyLoader] private void load(OverlayColourProvider colourProvider) @@ -60,6 +62,27 @@ namespace osu.Game.Overlays.Comments Sort = { BindTarget = Sort }, ShowDeleted = { BindTarget = ShowDeleted } }, + noCommentsPlaceholder = new Container + { + Height = 80, + RelativeSizeAxes = Axes.X, + Alpha = 0, + Children = new Drawable[] + { + new Box + { + RelativeSizeAxes = Axes.Both, + Colour = colourProvider.Background4 + }, + new OsuSpriteText + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + Margin = new MarginPadding { Left = 50 }, + Text = @"No comments yet." + } + } + }, content = new FillFlowContainer { RelativeSizeAxes = Axes.X, @@ -68,6 +91,7 @@ namespace osu.Game.Overlays.Comments }, new Container { + Name = @"Footer", RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, Children = new Drawable[] @@ -154,12 +178,21 @@ namespace osu.Game.Overlays.Comments { currentPage = 1; deletedChildrenPlaceholder.DeletedCount.Value = 0; + moreButton.Show(); moreButton.IsLoading = true; content.Clear(); + noCommentsPlaceholder.Hide(); } private void onSuccess(CommentBundle response) { + if (!response.Comments.Any()) + { + noCommentsPlaceholder.Show(); + moreButton.Hide(); + return; + } + loadCancellation = new CancellationTokenSource(); var page = new FillFlowContainer From c5e0c77bcadb98cd252684dcb5adbb6c4fff9886 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 29 Jan 2020 06:08:11 +0300 Subject: [PATCH 1064/1829] Refactor NoCommentsPlaceholder --- .../Online/TestSceneCommentsContainer.cs | 2 +- .../Overlays/Comments/CommentsContainer.cs | 50 ++++++++++--------- 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs index 2af191945c..c81e850cc9 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs @@ -48,7 +48,7 @@ namespace osu.Game.Tests.Visual.Online AddStep("Airman comments", () => comments.ShowComments(CommentableType.Beatmapset, 24313)); AddStep("Lazer build comments", () => comments.ShowComments(CommentableType.Build, 4772)); AddStep("News comments", () => comments.ShowComments(CommentableType.NewsPost, 715)); - AddStep("Beatmap with no comments", () => comments.ShowComments(CommentableType.Beatmapset, 1291)); + AddStep("Beatmap with no comments", () => comments.ShowComments(CommentableType.Beatmapset, 1288)); AddStep("Idle state", () => { scroll.Clear(); diff --git a/osu.Game/Overlays/Comments/CommentsContainer.cs b/osu.Game/Overlays/Comments/CommentsContainer.cs index fd5c390f0f..6abb85088f 100644 --- a/osu.Game/Overlays/Comments/CommentsContainer.cs +++ b/osu.Game/Overlays/Comments/CommentsContainer.cs @@ -35,7 +35,6 @@ namespace osu.Game.Overlays.Comments private DeletedChildrenPlaceholder deletedChildrenPlaceholder; private CommentsShowMoreButton moreButton; private TotalCommentsCounter commentCounter; - private Container noCommentsPlaceholder; [BackgroundDependencyLoader] private void load(OverlayColourProvider colourProvider) @@ -62,27 +61,6 @@ namespace osu.Game.Overlays.Comments Sort = { BindTarget = Sort }, ShowDeleted = { BindTarget = ShowDeleted } }, - noCommentsPlaceholder = new Container - { - Height = 80, - RelativeSizeAxes = Axes.X, - Alpha = 0, - Children = new Drawable[] - { - new Box - { - RelativeSizeAxes = Axes.Both, - Colour = colourProvider.Background4 - }, - new OsuSpriteText - { - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - Margin = new MarginPadding { Left = 50 }, - Text = @"No comments yet." - } - } - }, content = new FillFlowContainer { RelativeSizeAxes = Axes.X, @@ -181,14 +159,13 @@ namespace osu.Game.Overlays.Comments moreButton.Show(); moreButton.IsLoading = true; content.Clear(); - noCommentsPlaceholder.Hide(); } private void onSuccess(CommentBundle response) { if (!response.Comments.Any()) { - noCommentsPlaceholder.Show(); + content.Add(new NoCommentsPlaceholder()); moreButton.Hide(); return; } @@ -240,5 +217,30 @@ namespace osu.Game.Overlays.Comments loadCancellation?.Cancel(); base.Dispose(isDisposing); } + + private class NoCommentsPlaceholder : CompositeDrawable + { + [BackgroundDependencyLoader] + private void load(OverlayColourProvider colourProvider) + { + Height = 80; + RelativeSizeAxes = Axes.X; + AddRangeInternal(new Drawable[] + { + new Box + { + RelativeSizeAxes = Axes.Both, + Colour = colourProvider.Background4 + }, + new OsuSpriteText + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + Margin = new MarginPadding { Left = 50 }, + Text = @"No comments yet." + } + }); + } + } } } From ebf15c6a1ceacb45aae17b8c384eb7daf2236581 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 29 Jan 2020 12:17:03 +0900 Subject: [PATCH 1065/1829] General work towards completion + framework updates --- .../UserInterface/TestScenePlaylistOverlay.cs | 7 + osu.Game/Overlays/Music/PlaylistList.cs | 197 ++++++++++++++++-- osu.Game/Overlays/Music/PlaylistOverlay.cs | 12 +- osu.Game/Overlays/NowPlayingOverlay.cs | 1 + 4 files changed, 200 insertions(+), 17 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestScenePlaylistOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestScenePlaylistOverlay.cs index a470244f53..986cf458ab 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestScenePlaylistOverlay.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestScenePlaylistOverlay.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System; +using System.Collections.Generic; using NUnit.Framework; using osu.Framework.Bindables; using osu.Framework.Graphics; @@ -15,6 +16,12 @@ namespace osu.Game.Tests.Visual.UserInterface { public class TestScenePlaylistOverlay : OsuTestScene { + public override IReadOnlyList RequiredTypes => new Type[] + { + typeof(PlaylistOverlay), + typeof(PlaylistList) + }; + private readonly BindableList beatmapSets = new BindableList(); [SetUp] diff --git a/osu.Game/Overlays/Music/PlaylistList.cs b/osu.Game/Overlays/Music/PlaylistList.cs index 5c091a21db..f7be69e1f2 100644 --- a/osu.Game/Overlays/Music/PlaylistList.cs +++ b/osu.Game/Overlays/Music/PlaylistList.cs @@ -8,14 +8,23 @@ using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.UserInterface; +using osu.Framework.Graphics.Sprites; +using osu.Framework.Input.Events; +using osu.Framework.Localisation; using osu.Game.Beatmaps; +using osu.Game.Graphics; +using osu.Game.Graphics.Containers; +using osuTK; +using osuTK.Graphics; namespace osu.Game.Overlays.Music { - public class PlaylistList2 : BasicRearrangeableListContainer + public class PlaylistList : RearrangeableListContainer { - public readonly BindableList BeatmapSets = new BindableList(); + public Action RequestSelection; + + public readonly Bindable SelectedSet = new Bindable(); + public readonly IBindableList BeatmapSets = new BindableList(); public new MarginPadding Padding { @@ -23,21 +32,35 @@ namespace osu.Game.Overlays.Music set => base.Padding = value; } + private readonly HashSet existingItems = new HashSet(); + [BackgroundDependencyLoader] private void load() { BeatmapSets.ItemsAdded += addBeatmapSets; BeatmapSets.ItemsRemoved += removeBeatmapSets; + + foreach (var item in BeatmapSets) + addBeatmapSet(item); } public void Filter(string searchTerm) => ((PlaylistListFlowContainer)ListContainer).SearchTerm = searchTerm; public BeatmapSetInfo FirstVisibleSet => ListContainer.FlowingChildren.Cast().FirstOrDefault(i => i.MatchingFilter)?.Model.BeatmapSetInfo; - private void addBeatmapSets(IEnumerable sets) => Schedule(() => + private void addBeatmapSets(IEnumerable sets) { - foreach (var item in sets) - AddItem(new PlaylistListItem(item)); + foreach (var set in sets) + addBeatmapSet(set); + } + + private void addBeatmapSet(BeatmapSetInfo set) => Schedule(() => + { + if (existingItems.Contains(set)) + return; + + AddItem(new PlaylistListItem(set)); + existingItems.Add(set); }); private void removeBeatmapSets(IEnumerable sets) => Schedule(() => @@ -46,16 +69,23 @@ namespace osu.Game.Overlays.Music RemoveItem(ListContainer.Children.Select(d => d.Model).FirstOrDefault(m => m.BeatmapSetInfo == item)); }); - protected override BasicDrawableRearrangeableListItem CreateBasicItem(PlaylistListItem item) => new DrawablePlaylistListItem(item); - - protected override FillFlowContainer CreateListFillFlowContainer() => new PlaylistListFlowContainer + protected override DrawableRearrangeableListItem CreateDrawable(PlaylistListItem item) => new DrawablePlaylistListItem(item) { + SelectedSet = { BindTarget = SelectedSet }, + RequestSelection = set => RequestSelection?.Invoke(set) + }; + + protected override ScrollContainer CreateScrollContainer() => new OsuScrollContainer(); + + protected override FillFlowContainer> CreateListFillFlowContainer() => new PlaylistListFlowContainer + { + Spacing = new Vector2(0, 3), LayoutDuration = 200, - LayoutEasing = Easing.OutQuint + LayoutEasing = Easing.OutQuint, }; } - public class PlaylistListFlowContainer : SearchContainer.DrawableRearrangeableListItem> + public class PlaylistListFlowContainer : SearchContainer> { } @@ -73,14 +103,118 @@ namespace osu.Game.Overlays.Music public bool Equals(PlaylistListItem other) => BeatmapSetInfo.Equals(other?.BeatmapSetInfo); } - public class DrawablePlaylistListItem : BasicRearrangeableListContainer.BasicDrawableRearrangeableListItem, IFilterable + public class DrawablePlaylistListItem : DrawableRearrangeableListItem, IFilterable { + private const float fade_duration = 100; + + public readonly Bindable SelectedSet = new Bindable(); + public Action RequestSelection; + + private PlaylistItemHandle handle; + private TextFlowContainer text; + private IEnumerable titleSprites; + private ILocalisedBindableString titleBind; + private ILocalisedBindableString artistBind; + + private Color4 hoverColour; + private Color4 artistColour; + public DrawablePlaylistListItem(PlaylistListItem item) : base(item) { + RelativeSizeAxes = Axes.X; + AutoSizeAxes = Axes.Y; + + Padding = new MarginPadding { Left = 5 }; + FilterTerms = item.BeatmapSetInfo.Metadata.SearchableTerms; } + [BackgroundDependencyLoader] + private void load(OsuColour colours, LocalisationManager localisation) + { + hoverColour = colours.Yellow; + artistColour = colours.Gray9; + + InternalChild = new GridContainer + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Content = new[] + { + new Drawable[] + { + handle = new PlaylistItemHandle + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + Size = new Vector2(12), + Colour = colours.Gray5, + Alpha = 0 + }, + text = new OsuTextFlowContainer + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Padding = new MarginPadding { Left = 5 }, + }, + } + }, + ColumnDimensions = new[] { new Dimension(GridSizeMode.AutoSize) }, + RowDimensions = new[] { new Dimension(GridSizeMode.AutoSize) } + }; + + titleBind = localisation.GetLocalisedString(new LocalisedString((Model.BeatmapSetInfo.Metadata.TitleUnicode, Model.BeatmapSetInfo.Metadata.Title))); + artistBind = localisation.GetLocalisedString(new LocalisedString((Model.BeatmapSetInfo.Metadata.ArtistUnicode, Model.BeatmapSetInfo.Metadata.Artist))); + + artistBind.BindValueChanged(_ => recreateText(), true); + } + + protected override void LoadComplete() + { + base.LoadComplete(); + + SelectedSet.BindValueChanged(set => + { + if (set.OldValue != Model.BeatmapSetInfo && set.NewValue != Model.BeatmapSetInfo) + return; + + foreach (Drawable s in titleSprites) + s.FadeColour(set.NewValue == Model.BeatmapSetInfo ? hoverColour : Color4.White, fade_duration); + }, true); + } + + private void recreateText() + { + text.Clear(); + + //space after the title to put a space between the title and artist + titleSprites = text.AddText(titleBind.Value + @" ", sprite => sprite.Font = OsuFont.GetFont(weight: FontWeight.Regular)).OfType(); + + text.AddText(artistBind.Value, sprite => + { + sprite.Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold); + sprite.Colour = artistColour; + sprite.Padding = new MarginPadding { Top = 1 }; + }); + } + + protected override bool OnClick(ClickEvent e) + { + RequestSelection?.Invoke(Model.BeatmapSetInfo); + return true; + } + + protected override bool IsDraggableAt(Vector2 screenSpacePos) => handle.HandlingDrag; + + protected override bool OnHover(HoverEvent e) + { + handle.UpdateHoverState(true); + return base.OnHover(e); + } + + protected override void OnHoverLost(HoverLostEvent e) => handle.UpdateHoverState(false); + public IEnumerable FilterTerms { get; } private bool matching = true; @@ -99,5 +233,44 @@ namespace osu.Game.Overlays.Music } public bool FilteringActive { get; set; } + + private class PlaylistItemHandle : SpriteIcon + { + public bool HandlingDrag { get; private set; } + private bool isHovering; + + public PlaylistItemHandle() + { + Icon = FontAwesome.Solid.Bars; + } + + protected override bool OnMouseDown(MouseDownEvent e) + { + base.OnMouseDown(e); + + HandlingDrag = true; + UpdateHoverState(isHovering); + + return false; + } + + protected override void OnMouseUp(MouseUpEvent e) + { + base.OnMouseUp(e); + + HandlingDrag = false; + UpdateHoverState(isHovering); + } + + public void UpdateHoverState(bool hovering) + { + isHovering = hovering; + + if (isHovering || HandlingDrag) + this.FadeIn(fade_duration); + else + this.FadeOut(fade_duration); + } + } } } diff --git a/osu.Game/Overlays/Music/PlaylistOverlay.cs b/osu.Game/Overlays/Music/PlaylistOverlay.cs index ff1b26e335..87abbd142c 100644 --- a/osu.Game/Overlays/Music/PlaylistOverlay.cs +++ b/osu.Game/Overlays/Music/PlaylistOverlay.cs @@ -21,14 +21,14 @@ namespace osu.Game.Overlays.Music private const float transition_duration = 600; private const float playlist_height = 510; - public readonly BindableList BeatmapSets = new BindableList(); + public readonly IBindableList BeatmapSets = new BindableList(); private readonly Bindable beatmap = new Bindable(); private BeatmapManager beatmaps; private FilterControl filter; - private PlaylistList2 list; - + private PlaylistList list; + [BackgroundDependencyLoader] private void load(OsuColour colours, Bindable beatmap, BeatmapManager beatmaps) { @@ -55,11 +55,11 @@ namespace osu.Game.Overlays.Music Colour = colours.Gray3, RelativeSizeAxes = Axes.Both, }, - list = new PlaylistList2 + list = new PlaylistList { RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { Top = 95, Bottom = 10, Right = 10 }, - // Selected = itemSelected, + RequestSelection = itemSelected }, filter = new FilterControl { @@ -84,6 +84,8 @@ namespace osu.Game.Overlays.Music beatmap.Value.Track.Restart(); } }; + + beatmap.BindValueChanged(working => list.SelectedSet.Value = working.NewValue.BeatmapSetInfo, true); } protected override void PopIn() diff --git a/osu.Game/Overlays/NowPlayingOverlay.cs b/osu.Game/Overlays/NowPlayingOverlay.cs index 042e95c6d7..dfcf99d30c 100644 --- a/osu.Game/Overlays/NowPlayingOverlay.cs +++ b/osu.Game/Overlays/NowPlayingOverlay.cs @@ -183,6 +183,7 @@ namespace osu.Game.Overlays } }; + playlist.BeatmapSets.BindTo(musicController.BeatmapSets); playlist.State.ValueChanged += s => playlistButton.FadeColour(s.NewValue == Visibility.Visible ? colours.Yellow : Color4.White, 200, Easing.OutQuint); } From e7964023aed0a6d8eeebd6762de8e6e6aff04ad1 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 29 Jan 2020 06:22:08 +0300 Subject: [PATCH 1066/1829] Implement CommentsPage class --- .../Overlays/Comments/CommentsContainer.cs | 54 +------------ osu.Game/Overlays/Comments/CommentsPage.cs | 76 +++++++++++++++++++ 2 files changed, 79 insertions(+), 51 deletions(-) create mode 100644 osu.Game/Overlays/Comments/CommentsPage.cs diff --git a/osu.Game/Overlays/Comments/CommentsContainer.cs b/osu.Game/Overlays/Comments/CommentsContainer.cs index 6abb85088f..0e307d4d0d 100644 --- a/osu.Game/Overlays/Comments/CommentsContainer.cs +++ b/osu.Game/Overlays/Comments/CommentsContainer.cs @@ -12,7 +12,6 @@ using osu.Game.Online.API.Requests.Responses; using System.Threading; using System.Linq; using osu.Framework.Extensions.IEnumerableExtensions; -using osu.Game.Graphics.Sprites; namespace osu.Game.Overlays.Comments { @@ -163,34 +162,12 @@ namespace osu.Game.Overlays.Comments private void onSuccess(CommentBundle response) { - if (!response.Comments.Any()) - { - content.Add(new NoCommentsPlaceholder()); - moreButton.Hide(); - return; - } - loadCancellation = new CancellationTokenSource(); - var page = new FillFlowContainer + LoadComponentAsync(new CommentsPage(response) { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Direction = FillDirection.Vertical, - }; - - foreach (var c in response.Comments) - { - if (c.IsTopLevel) - { - page.Add(new DrawableComment(c) - { - ShowDeleted = { BindTarget = ShowDeleted } - }); - } - } - - LoadComponentAsync(page, loaded => + ShowDeleted = { BindTarget = ShowDeleted } + }, loaded => { content.Add(loaded); @@ -217,30 +194,5 @@ namespace osu.Game.Overlays.Comments loadCancellation?.Cancel(); base.Dispose(isDisposing); } - - private class NoCommentsPlaceholder : CompositeDrawable - { - [BackgroundDependencyLoader] - private void load(OverlayColourProvider colourProvider) - { - Height = 80; - RelativeSizeAxes = Axes.X; - AddRangeInternal(new Drawable[] - { - new Box - { - RelativeSizeAxes = Axes.Both, - Colour = colourProvider.Background4 - }, - new OsuSpriteText - { - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - Margin = new MarginPadding { Left = 50 }, - Text = @"No comments yet." - } - }); - } - } } } diff --git a/osu.Game/Overlays/Comments/CommentsPage.cs b/osu.Game/Overlays/Comments/CommentsPage.cs new file mode 100644 index 0000000000..1bc9c89dfc --- /dev/null +++ b/osu.Game/Overlays/Comments/CommentsPage.cs @@ -0,0 +1,76 @@ +// 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.Graphics.Containers; +using osu.Framework.Graphics; +using osu.Framework.Bindables; +using osu.Game.Online.API.Requests.Responses; +using osu.Framework.Graphics.Shapes; +using osu.Game.Graphics.Sprites; +using System.Linq; + +namespace osu.Game.Overlays.Comments +{ + public class CommentsPage : FillFlowContainer + { + public readonly BindableBool ShowDeleted = new BindableBool(); + + private readonly CommentBundle commentBundle; + + public CommentsPage(CommentBundle commentBundle) + { + this.commentBundle = commentBundle; + } + + [BackgroundDependencyLoader] + private void load() + { + RelativeSizeAxes = Axes.X; + AutoSizeAxes = Axes.Y; + Direction = FillDirection.Vertical; + + if (!commentBundle.Comments.Any()) + { + Add(new NoCommentsPlaceholder()); + return; + } + + foreach (var c in commentBundle.Comments) + { + if (c.IsTopLevel) + { + Add(new DrawableComment(c) + { + ShowDeleted = { BindTarget = ShowDeleted } + }); + } + } + } + + private class NoCommentsPlaceholder : CompositeDrawable + { + [BackgroundDependencyLoader] + private void load(OverlayColourProvider colourProvider) + { + Height = 80; + RelativeSizeAxes = Axes.X; + AddRangeInternal(new Drawable[] + { + new Box + { + RelativeSizeAxes = Axes.Both, + Colour = colourProvider.Background4 + }, + new OsuSpriteText + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + Margin = new MarginPadding { Left = 50 }, + Text = @"No comments yet." + } + }); + } + } + } +} From dc10e58b4f1f4c4e39fa68ebefdf88f919855905 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 29 Jan 2020 06:44:39 +0300 Subject: [PATCH 1067/1829] Add tests for CommentsPage --- .../Online/TestSceneCommentsContainer.cs | 3 +- .../Visual/Online/TestSceneCommentsPage.cs | 165 ++++++++++++++++++ .../Online/API/Requests/Responses/Comment.cs | 6 +- .../API/Requests/Responses/CommentBundle.cs | 20 ++- osu.Game/Overlays/Comments/DrawableComment.cs | 4 +- 5 files changed, 184 insertions(+), 14 deletions(-) create mode 100644 osu.Game.Tests/Visual/Online/TestSceneCommentsPage.cs diff --git a/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs index c81e850cc9..c877176adf 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs @@ -25,7 +25,8 @@ namespace osu.Game.Tests.Visual.Online typeof(SortTabControl), typeof(ShowChildrenButton), typeof(DeletedChildrenPlaceholder), - typeof(VotePill) + typeof(VotePill), + typeof(CommentsPage), }; protected override bool UseOnlineAPI => true; diff --git a/osu.Game.Tests/Visual/Online/TestSceneCommentsPage.cs b/osu.Game.Tests/Visual/Online/TestSceneCommentsPage.cs new file mode 100644 index 0000000000..706b1ca1ba --- /dev/null +++ b/osu.Game.Tests/Visual/Online/TestSceneCommentsPage.cs @@ -0,0 +1,165 @@ +// 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.Game.Overlays.Comments; +using osu.Game.Overlays; +using osu.Framework.Allocation; +using osu.Game.Online.API.Requests.Responses; +using osu.Game.Users; +using osu.Game.Graphics.UserInterface; +using osu.Framework.Bindables; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Shapes; +using osuTK.Graphics; + +namespace osu.Game.Tests.Visual.Online +{ + public class TestSceneCommentsPage : OsuTestScene + { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(DrawableComment), + typeof(CommentsPage), + }; + + [Cached] + private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Purple); + + private readonly BindableBool showDeleted = new BindableBool(); + private readonly Container content; + + public TestSceneCommentsPage() + { + AddRange(new Drawable[] + { + new Box + { + RelativeSizeAxes = Axes.Both, + Colour = Color4.Black, + }, + new FillFlowContainer + { + AutoSizeAxes = Axes.Y, + RelativeSizeAxes = Axes.X, + Direction = FillDirection.Vertical, + Children = new Drawable[] + { + new OsuCheckbox + { + Current = showDeleted, + LabelText = @"Show Deleted" + }, + content = new Container + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + } + } + } + }); + + AddStep("load comments", () => createPage(comment_bundle)); + AddStep("load empty comments", () => createPage(empty_comment_bundle)); + } + + private void createPage(CommentBundle commentBundle) + { + content.Clear(); + content.Add(new CommentsPage(commentBundle) + { + ShowDeleted = { BindTarget = showDeleted } + }); + } + + private static readonly CommentBundle empty_comment_bundle = new CommentBundle + { + Comments = new List(), + Total = 0, + }; + + private static readonly CommentBundle comment_bundle = new CommentBundle + { + Comments = new List + { + new Comment + { + Id = 1, + Message = "Simple test comment", + LegacyName = "TestUser1", + CreatedAt = DateTimeOffset.Now, + VotesCount = 5 + }, + new Comment + { + Id = 2, + Message = "This comment has been deleted :( but visible for admins", + LegacyName = "TestUser2", + CreatedAt = DateTimeOffset.Now, + DeletedAt = DateTimeOffset.Now, + VotesCount = 5 + }, + new Comment + { + Id = 3, + Message = "This comment is a top level", + LegacyName = "TestUser3", + CreatedAt = DateTimeOffset.Now, + RepliesCount = 2, + }, + new Comment + { + Id = 4, + ParentId = 3, + Message = "And this is a reply", + RepliesCount = 1, + LegacyName = "TestUser1", + CreatedAt = DateTimeOffset.Now, + }, + new Comment + { + Id = 15, + ParentId = 4, + Message = "Reply to reply", + LegacyName = "TestUser1", + CreatedAt = DateTimeOffset.Now, + }, + new Comment + { + Id = 6, + ParentId = 3, + LegacyName = "TestUser11515", + CreatedAt = DateTimeOffset.Now, + DeletedAt = DateTimeOffset.Now, + }, + new Comment + { + Id = 5, + Message = "This comment is voted and edited", + LegacyName = "BigBrainUser", + CreatedAt = DateTimeOffset.Now, + EditedAt = DateTimeOffset.Now, + VotesCount = 1000, + EditedById = 1, + } + }, + IncludedComments = new List(), + UserVotes = new List + { + 5 + }, + Users = new List + { + new User + { + Id = 1, + Username = "Good_Admin" + } + }, + TopLevelCount = 4, + Total = 7 + }; + } +} diff --git a/osu.Game/Online/API/Requests/Responses/Comment.cs b/osu.Game/Online/API/Requests/Responses/Comment.cs index 5510e9afff..3e38c3067b 100644 --- a/osu.Game/Online/API/Requests/Responses/Comment.cs +++ b/osu.Game/Online/API/Requests/Responses/Comment.cs @@ -6,8 +6,6 @@ using osu.Game.Users; using System; using System.Collections.Generic; using System.Linq; -using System.Net; -using System.Text.RegularExpressions; namespace osu.Game.Online.API.Requests.Responses { @@ -70,12 +68,10 @@ namespace osu.Game.Online.API.Requests.Responses public bool IsDeleted => DeletedAt.HasValue; - public bool HasMessage => !string.IsNullOrEmpty(MessageHtml); + public bool HasMessage => !string.IsNullOrEmpty(Message); public bool IsVoted { get; set; } - public string GetMessage => HasMessage ? WebUtility.HtmlDecode(Regex.Replace(MessageHtml, @"<(.|\n)*?>", string.Empty)) : string.Empty; - public int DeletedChildrenCount => ChildComments.Count(c => c.IsDeleted); } } diff --git a/osu.Game/Online/API/Requests/Responses/CommentBundle.cs b/osu.Game/Online/API/Requests/Responses/CommentBundle.cs index 8db5d8d6ad..c3dc775bd0 100644 --- a/osu.Game/Online/API/Requests/Responses/CommentBundle.cs +++ b/osu.Game/Online/API/Requests/Responses/CommentBundle.cs @@ -47,17 +47,25 @@ namespace osu.Game.Online.API.Requests.Responses [JsonProperty(@"included_comments")] public List IncludedComments { get; set; } + private List userVotes; + [JsonProperty(@"user_votes")] - private List userVotes + public List UserVotes { - set => value.ForEach(v => + get => userVotes; + set { - Comments.ForEach(c => + userVotes = value; + + value.ForEach(v => { - if (v == c.Id) - c.IsVoted = true; + Comments.ForEach(c => + { + if (v == c.Id) + c.IsVoted = true; + }); }); - }); + } } private List users; diff --git a/osu.Game/Overlays/Comments/DrawableComment.cs b/osu.Game/Overlays/Comments/DrawableComment.cs index bdae9da226..d77ba5e298 100644 --- a/osu.Game/Overlays/Comments/DrawableComment.cs +++ b/osu.Game/Overlays/Comments/DrawableComment.cs @@ -213,7 +213,7 @@ namespace osu.Game.Overlays.Comments if (comment.HasMessage) { - var formattedSource = MessageFormatter.FormatText(comment.GetMessage); + var formattedSource = MessageFormatter.FormatText(comment.Message); message.AddLinks(formattedSource.Text, formattedSource.Links); } @@ -343,7 +343,7 @@ namespace osu.Game.Overlays.Comments if (parentComment == null) return string.Empty; - return parentComment.HasMessage ? parentComment.GetMessage : parentComment.IsDeleted ? @"deleted" : string.Empty; + return parentComment.HasMessage ? parentComment.Message : parentComment.IsDeleted ? @"deleted" : string.Empty; } } } From cfc4eaff59c72c41e41f2b16485429b581dfa134 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 29 Jan 2020 12:50:21 +0900 Subject: [PATCH 1068/1829] Fix display being incorrect when MaxValue is not 1 --- osu.Game/Graphics/UserInterface/OsuSliderBar.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/OsuSliderBar.cs b/osu.Game/Graphics/UserInterface/OsuSliderBar.cs index 2db1c881c0..5c6c7aeafd 100644 --- a/osu.Game/Graphics/UserInterface/OsuSliderBar.cs +++ b/osu.Game/Graphics/UserInterface/OsuSliderBar.cs @@ -174,12 +174,10 @@ namespace osu.Game.Graphics.UserInterface else { double floatValue = value.ToDouble(NumberFormatInfo.InvariantInfo); - double floatMaxValue = CurrentNumber.MaxValue.ToDouble(NumberFormatInfo.InvariantInfo); if (DisplayAsPercentage) { - double percentage = floatValue / floatMaxValue; - TooltipText = percentage.ToString("P0"); + TooltipText = floatValue.ToString("P0"); } else { From aa597c193468b5b2f4c798412b41f003ad5e1e2d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 29 Jan 2020 12:55:07 +0900 Subject: [PATCH 1069/1829] Copy documentation across to SettingsSlider --- osu.Game/Overlays/Settings/SettingsSlider.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/osu.Game/Overlays/Settings/SettingsSlider.cs b/osu.Game/Overlays/Settings/SettingsSlider.cs index a7485f77cd..9fc3379b94 100644 --- a/osu.Game/Overlays/Settings/SettingsSlider.cs +++ b/osu.Game/Overlays/Settings/SettingsSlider.cs @@ -3,6 +3,7 @@ using System; using osu.Framework.Graphics; +using osu.Framework.Graphics.UserInterface; using osu.Game.Graphics.UserInterface; namespace osu.Game.Overlays.Settings @@ -22,18 +23,28 @@ namespace osu.Game.Overlays.Settings RelativeSizeAxes = Axes.X }; + /// + /// When set, value changes based on user input are only transferred to any bound control's Current on commit. + /// This is useful if the UI interaction could be adversely affected by the value changing, such as the position of the on the screen. + /// public bool TransferValueOnCommit { get => ((TSlider)Control).TransferValueOnCommit; set => ((TSlider)Control).TransferValueOnCommit = value; } + /// + /// A custom step value for each key press which actuates a change on this control. + /// public float KeyboardStep { get => ((TSlider)Control).KeyboardStep; set => ((TSlider)Control).KeyboardStep = value; } + /// + /// Whether to format the tooltip as a percentage or the actual value. + /// public bool DisplayAsPercentage { get => ((TSlider)Control).DisplayAsPercentage; From 5fcda013469f133efb573496fd0a398c65621785 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 29 Jan 2020 06:58:53 +0300 Subject: [PATCH 1070/1829] Cleanup pass --- .../Visual/Online/TestSceneCommentsPage.cs | 35 +++++++++---------- osu.Game/Overlays/Comments/CommentsPage.cs | 26 +++++++++++--- 2 files changed, 37 insertions(+), 24 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneCommentsPage.cs b/osu.Game.Tests/Visual/Online/TestSceneCommentsPage.cs index 706b1ca1ba..1217ce6b42 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneCommentsPage.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneCommentsPage.cs @@ -12,8 +12,7 @@ using osu.Game.Graphics.UserInterface; using osu.Framework.Bindables; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics; -using osu.Framework.Graphics.Shapes; -using osuTK.Graphics; +using osuTK; namespace osu.Game.Tests.Visual.Online { @@ -33,30 +32,28 @@ namespace osu.Game.Tests.Visual.Online public TestSceneCommentsPage() { - AddRange(new Drawable[] + Add(new FillFlowContainer { - new Box + AutoSizeAxes = Axes.Y, + RelativeSizeAxes = Axes.X, + Direction = FillDirection.Vertical, + Spacing = new Vector2(0, 10), + Children = new Drawable[] { - RelativeSizeAxes = Axes.Both, - Colour = Color4.Black, - }, - new FillFlowContainer - { - AutoSizeAxes = Axes.Y, - RelativeSizeAxes = Axes.X, - Direction = FillDirection.Vertical, - Children = new Drawable[] + new Container { - new OsuCheckbox + AutoSizeAxes = Axes.Y, + Width = 200, + Child = new OsuCheckbox { Current = showDeleted, LabelText = @"Show Deleted" - }, - content = new Container - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, } + }, + content = new Container + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, } } }); diff --git a/osu.Game/Overlays/Comments/CommentsPage.cs b/osu.Game/Overlays/Comments/CommentsPage.cs index 1bc9c89dfc..153ce676eb 100644 --- a/osu.Game/Overlays/Comments/CommentsPage.cs +++ b/osu.Game/Overlays/Comments/CommentsPage.cs @@ -12,7 +12,7 @@ using System.Linq; namespace osu.Game.Overlays.Comments { - public class CommentsPage : FillFlowContainer + public class CommentsPage : CompositeDrawable { public readonly BindableBool ShowDeleted = new BindableBool(); @@ -24,15 +24,31 @@ namespace osu.Game.Overlays.Comments } [BackgroundDependencyLoader] - private void load() + private void load(OverlayColourProvider colourProvider) { + FillFlowContainer flow; + RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; - Direction = FillDirection.Vertical; + + AddRangeInternal(new Drawable[] + { + new Box + { + RelativeSizeAxes = Axes.Both, + Colour = colourProvider.Background5 + }, + flow = new FillFlowContainer + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Direction = FillDirection.Vertical, + } + }); if (!commentBundle.Comments.Any()) { - Add(new NoCommentsPlaceholder()); + flow.Add(new NoCommentsPlaceholder()); return; } @@ -40,7 +56,7 @@ namespace osu.Game.Overlays.Comments { if (c.IsTopLevel) { - Add(new DrawableComment(c) + flow.Add(new DrawableComment(c) { ShowDeleted = { BindTarget = ShowDeleted } }); From f457ecaf83968ce794e42bb6f8198c842b738aac Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 29 Jan 2020 13:54:12 +0900 Subject: [PATCH 1071/1829] Fix random test failures --- osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs index 98b8e3c5d6..fc06780431 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs @@ -118,6 +118,7 @@ namespace osu.Game.Tests.Visual.SongSelect InputManager.ReleaseKey(Key.Enter); }); + AddUntilStep("wait for not current", () => !songSelect.IsCurrentScreen()); AddAssert("ensure selection changed", () => selected != Beatmap.Value); AddUntilStep("wait for return to song select", () => songSelect.IsCurrentScreen()); @@ -145,6 +146,7 @@ namespace osu.Game.Tests.Visual.SongSelect InputManager.ReleaseKey(Key.Down); }); + AddUntilStep("wait for not current", () => !songSelect.IsCurrentScreen()); AddAssert("ensure selection didn't change", () => selected == Beatmap.Value); AddUntilStep("wait for return to song select", () => songSelect.IsCurrentScreen()); @@ -176,6 +178,7 @@ namespace osu.Game.Tests.Visual.SongSelect InputManager.ReleaseKey(Key.Enter); }); + AddUntilStep("wait for not current", () => !songSelect.IsCurrentScreen()); AddAssert("ensure selection changed", () => selected != Beatmap.Value); AddUntilStep("wait for return to song select", () => songSelect.IsCurrentScreen()); @@ -208,6 +211,7 @@ namespace osu.Game.Tests.Visual.SongSelect InputManager.ReleaseButton(MouseButton.Left); }); + AddUntilStep("wait for not current", () => !songSelect.IsCurrentScreen()); AddAssert("ensure selection didn't change", () => selected == Beatmap.Value); AddUntilStep("wait for return to song select", () => songSelect.IsCurrentScreen()); From 9a47428bfd9fa68fd1ba9924d579f28260bec861 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 29 Jan 2020 14:40:42 +0900 Subject: [PATCH 1072/1829] Remove out of date comment --- osu.Game/Screens/Edit/EditorBeatmap.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/osu.Game/Screens/Edit/EditorBeatmap.cs b/osu.Game/Screens/Edit/EditorBeatmap.cs index 385afc2392..6edd62fa67 100644 --- a/osu.Game/Screens/Edit/EditorBeatmap.cs +++ b/osu.Game/Screens/Edit/EditorBeatmap.cs @@ -131,10 +131,8 @@ namespace osu.Game.Screens.Edit public double SnapTime(double time, double? referenceTime) { var timingPoint = ControlPointInfo.TimingPointAt(referenceTime ?? time); - var beatLength = timingPoint.BeatLength / BeatDivisor; - // A 1ms offset prevents rounding errors due to minute variations in duration return timingPoint.Time + (int)Math.Round((time - timingPoint.Time) / beatLength, MidpointRounding.AwayFromZero) * beatLength; } From 391681b7afaf17d14178d975c4292689fa37d4f9 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 29 Jan 2020 15:16:48 +0900 Subject: [PATCH 1073/1829] Separate calculation to follow other examples --- osu.Game/Screens/Edit/Compose/Components/DistanceSnapGrid.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/DistanceSnapGrid.cs b/osu.Game/Screens/Edit/Compose/Components/DistanceSnapGrid.cs index bce8878766..479de64eab 100644 --- a/osu.Game/Screens/Edit/Compose/Components/DistanceSnapGrid.cs +++ b/osu.Game/Screens/Edit/Compose/Components/DistanceSnapGrid.cs @@ -132,7 +132,9 @@ namespace osu.Game.Screens.Edit.Compose.Components protected ColourInfo GetColourForIndexFromPlacement(int placementIndex) { var timingPoint = beatmap.ControlPointInfo.TimingPointAt(StartTime); - var beatIndex = (int)Math.Round((StartTime - timingPoint.Time) / timingPoint.BeatLength * beatDivisor.Value); + var beatLength = timingPoint.BeatLength / beatDivisor.Value; + var beatIndex = (int)Math.Round((StartTime - timingPoint.Time) / beatLength); + var colour = BindableBeatDivisor.GetColourFor(BindableBeatDivisor.GetDivisorForBeatIndex(beatIndex + placementIndex + 1, beatDivisor.Value), Colours); int repeatIndex = placementIndex / beatDivisor.Value; From 17294b1b09719724a8694b38aa374b15ebbc6501 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 29 Jan 2020 15:34:36 +0900 Subject: [PATCH 1074/1829] Make wind down max value 200% --- osu.Game/Rulesets/Mods/ModWindDown.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Mods/ModWindDown.cs b/osu.Game/Rulesets/Mods/ModWindDown.cs index 939766fee5..5e634ac434 100644 --- a/osu.Game/Rulesets/Mods/ModWindDown.cs +++ b/osu.Game/Rulesets/Mods/ModWindDown.cs @@ -21,7 +21,7 @@ namespace osu.Game.Rulesets.Mods public override BindableNumber InitialRate { get; } = new BindableDouble { MinValue = 1, - MaxValue = 1.5, + MaxValue = 2, Default = 1, Value = 1, Precision = 0.01, From 6e8bd35373701f7758e302010b5d994655e1afdd Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 29 Jan 2020 14:23:23 +0900 Subject: [PATCH 1075/1829] Move navigation / game test scenes to new namespace --- .../Visual/Navigation/OsuGameTestScene.cs | 122 ++++++++++++++++ .../TestSceneScreenNavigation.cs | 132 +++--------------- 2 files changed, 139 insertions(+), 115 deletions(-) create mode 100644 osu.Game.Tests/Visual/Navigation/OsuGameTestScene.cs rename osu.Game.Tests/Visual/{Menus => Navigation}/TestSceneScreenNavigation.cs (54%) diff --git a/osu.Game.Tests/Visual/Navigation/OsuGameTestScene.cs b/osu.Game.Tests/Visual/Navigation/OsuGameTestScene.cs new file mode 100644 index 0000000000..662d9977ba --- /dev/null +++ b/osu.Game.Tests/Visual/Navigation/OsuGameTestScene.cs @@ -0,0 +1,122 @@ +// 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.Configuration; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Shapes; +using osu.Framework.Platform; +using osu.Framework.Screens; +using osu.Framework.Testing; +using osu.Game.Beatmaps; +using osu.Game.Configuration; +using osu.Game.Graphics.UserInterface; +using osu.Game.Online.API; +using osu.Game.Overlays; +using osu.Game.Rulesets; +using osu.Game.Screens; +using osu.Game.Screens.Menu; +using osuTK.Graphics; +using IntroSequence = osu.Game.Configuration.IntroSequence; + +namespace osu.Game.Tests.Visual.Navigation +{ + /// + /// A scene which tests full game flow. + /// + public abstract class OsuGameTestScene : ManualInputManagerTestScene + { + private GameHost host; + + protected TestOsuGame Game; + + [BackgroundDependencyLoader] + private void load(GameHost host) + { + this.host = host; + + Child = new Box + { + RelativeSizeAxes = Axes.Both, + Colour = Color4.Black, + }; + } + + [SetUpSteps] + public void SetUpSteps() + { + AddStep("Create new game instance", () => + { + if (Game != null) + { + Remove(Game); + Game.Dispose(); + } + + RecycleLocalStorage(); + + // see MouseSettings + var frameworkConfig = host.Dependencies.Get(); + frameworkConfig.GetBindable(FrameworkSetting.CursorSensitivity).Disabled = false; + + Game = new TestOsuGame(LocalStorage, API); + Game.SetHost(host); + + // todo: this can be removed once we can run audio tracks without a device present + // see https://github.com/ppy/osu/issues/1302 + Game.LocalConfig.Set(OsuSetting.IntroSequence, IntroSequence.Circles); + + Add(Game); + }); + + AddUntilStep("Wait for load", () => Game.IsLoaded); + AddUntilStep("Wait for intro", () => Game.ScreenStack.CurrentScreen is IntroScreen); + + ConfirmAtMainMenu(); + } + + protected void ConfirmAtMainMenu() => AddUntilStep("Wait for main menu", () => Game.ScreenStack.CurrentScreen is MainMenu menu && menu.IsLoaded); + + public class TestOsuGame : OsuGame + { + public new ScreenStack ScreenStack => base.ScreenStack; + + public new BackButton BackButton => base.BackButton; + + public new BeatmapManager BeatmapManager => base.BeatmapManager; + + public new SettingsPanel Settings => base.Settings; + + public new OsuConfigManager LocalConfig => base.LocalConfig; + + public new Bindable Beatmap => base.Beatmap; + + public new Bindable Ruleset => base.Ruleset; + + protected override Loader CreateLoader() => new TestLoader(); + + public TestOsuGame(Storage storage, IAPIProvider api) + { + Storage = storage; + API = api; + } + + protected override void LoadComplete() + { + base.LoadComplete(); + API.Login("Rhythm Champion", "osu!"); + } + } + + public class TestLoader : Loader + { + protected override ShaderPrecompiler CreateShaderPrecompiler() => new TestShaderPrecompiler(); + + private class TestShaderPrecompiler : ShaderPrecompiler + { + protected override bool AllLoaded => true; + } + } + } +} diff --git a/osu.Game.Tests/Visual/Menus/TestSceneScreenNavigation.cs b/osu.Game.Tests/Visual/Navigation/TestSceneScreenNavigation.cs similarity index 54% rename from osu.Game.Tests/Visual/Menus/TestSceneScreenNavigation.cs rename to osu.Game.Tests/Visual/Navigation/TestSceneScreenNavigation.cs index c4307a3ad3..d706d47384 100644 --- a/osu.Game.Tests/Visual/Menus/TestSceneScreenNavigation.cs +++ b/osu.Game.Tests/Visual/Navigation/TestSceneScreenNavigation.cs @@ -6,85 +6,26 @@ using System.Linq; using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Audio.Track; -using osu.Framework.Bindables; -using osu.Framework.Configuration; -using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Shapes; -using osu.Framework.Platform; using osu.Framework.Screens; -using osu.Framework.Testing; using osu.Game.Beatmaps; -using osu.Game.Configuration; -using osu.Game.Graphics.UserInterface; -using osu.Game.Online.API; using osu.Game.Overlays; using osu.Game.Overlays.Mods; -using osu.Game.Screens; -using osu.Game.Screens.Menu; using osu.Game.Screens.Play; using osu.Game.Screens.Select; using osu.Game.Tests.Beatmaps.IO; using osuTK; -using osuTK.Graphics; using osuTK.Input; -using IntroSequence = osu.Game.Configuration.IntroSequence; -namespace osu.Game.Tests.Visual.Menus +namespace osu.Game.Tests.Visual.Navigation { - public class TestSceneScreenNavigation : ManualInputManagerTestScene + public class TestSceneScreenNavigation : OsuGameTestScene { private const float click_padding = 25; - private GameHost host; - private TestOsuGame game; + private Vector2 backButtonPosition => Game.ToScreenSpace(new Vector2(click_padding, Game.LayoutRectangle.Bottom - click_padding)); - private Vector2 backButtonPosition => game.ToScreenSpace(new Vector2(click_padding, game.LayoutRectangle.Bottom - click_padding)); - - private Vector2 optionsButtonPosition => game.ToScreenSpace(new Vector2(click_padding, click_padding)); - - [BackgroundDependencyLoader] - private void load(GameHost host) - { - this.host = host; - - Child = new Box - { - RelativeSizeAxes = Axes.Both, - Colour = Color4.Black, - }; - } - - [SetUpSteps] - public void SetUpSteps() - { - AddStep("Create new game instance", () => - { - if (game != null) - { - Remove(game); - game.Dispose(); - } - - RecycleLocalStorage(); - - // see MouseSettings - var frameworkConfig = host.Dependencies.Get(); - frameworkConfig.GetBindable(FrameworkSetting.CursorSensitivity).Disabled = false; - - game = new TestOsuGame(LocalStorage, API); - game.SetHost(host); - - // todo: this can be removed once we can run audio tracks without a device present - // see https://github.com/ppy/osu/issues/1302 - game.LocalConfig.Set(OsuSetting.IntroSequence, IntroSequence.Circles); - - Add(game); - }); - AddUntilStep("Wait for load", () => game.IsLoaded); - AddUntilStep("Wait for intro", () => game.ScreenStack.CurrentScreen is IntroScreen); - confirmAtMainMenu(); - } + private Vector2 optionsButtonPosition => Game.ToScreenSpace(new Vector2(click_padding, click_padding)); [Test] public void TestExitSongSelectWithEscape() @@ -105,21 +46,21 @@ namespace osu.Game.Tests.Visual.Menus { Player player = null; - WorkingBeatmap beatmap() => game.Beatmap.Value; + WorkingBeatmap beatmap() => Game.Beatmap.Value; Track track() => beatmap().Track; pushAndConfirm(() => new TestSongSelect()); - AddStep("import beatmap", () => ImportBeatmapTest.LoadOszIntoOsu(game, virtualTrack: true).Wait()); + AddStep("import beatmap", () => ImportBeatmapTest.LoadOszIntoOsu(Game, virtualTrack: true).Wait()); - AddUntilStep("wait for selected", () => !game.Beatmap.IsDefault); + AddUntilStep("wait for selected", () => !Game.Beatmap.IsDefault); if (withUserPause) - AddStep("pause", () => game.Dependencies.Get().Stop()); + AddStep("pause", () => Game.Dependencies.Get().Stop()); AddStep("press enter", () => pressAndRelease(Key.Enter)); - AddUntilStep("wait for player", () => (player = game.ScreenStack.CurrentScreen as Player) != null); + AddUntilStep("wait for player", () => (player = Game.ScreenStack.CurrentScreen as Player) != null); AddUntilStep("wait for fail", () => player.HasFailed); AddUntilStep("wait for track stop", () => !track().IsRunning); @@ -142,7 +83,7 @@ namespace osu.Game.Tests.Visual.Menus AddStep("Move mouse to backButton", () => InputManager.MoveMouseTo(backButtonPosition)); // BackButton handles hover using its child button, so this checks whether or not any of BackButton's children are hovered. - AddUntilStep("Back button is hovered", () => InputManager.HoveredDrawables.Any(d => d.Parent == game.BackButton)); + AddUntilStep("Back button is hovered", () => InputManager.HoveredDrawables.Any(d => d.Parent == Game.BackButton)); AddStep("Click back button", () => InputManager.Click(MouseButton.Left)); AddUntilStep("Overlay was hidden", () => songSelect.ModSelectOverlay.State.Value == Visibility.Hidden); @@ -166,20 +107,20 @@ namespace osu.Game.Tests.Visual.Menus [Test] public void TestOpenOptionsAndExitWithEscape() { - AddUntilStep("Wait for options to load", () => game.Settings.IsLoaded); + AddUntilStep("Wait for options to load", () => Game.Settings.IsLoaded); AddStep("Enter menu", () => pressAndRelease(Key.Enter)); AddStep("Move mouse to options overlay", () => InputManager.MoveMouseTo(optionsButtonPosition)); AddStep("Click options overlay", () => InputManager.Click(MouseButton.Left)); - AddAssert("Options overlay was opened", () => game.Settings.State.Value == Visibility.Visible); + AddAssert("Options overlay was opened", () => Game.Settings.State.Value == Visibility.Visible); AddStep("Hide options overlay using escape", () => pressAndRelease(Key.Escape)); - AddAssert("Options overlay was closed", () => game.Settings.State.Value == Visibility.Hidden); + AddAssert("Options overlay was closed", () => Game.Settings.State.Value == Visibility.Hidden); } private void pushAndConfirm(Func newScreen) { Screen screen = null; - AddStep("Push new screen", () => game.ScreenStack.Push(screen = newScreen())); - AddUntilStep("Wait for new screen", () => game.ScreenStack.CurrentScreen == screen && screen.IsLoaded); + AddStep("Push new screen", () => Game.ScreenStack.Push(screen = newScreen())); + AddUntilStep("Wait for new screen", () => Game.ScreenStack.CurrentScreen == screen && screen.IsLoaded); } private void pushEscape() => @@ -188,64 +129,25 @@ namespace osu.Game.Tests.Visual.Menus private void exitViaEscapeAndConfirm() { pushEscape(); - confirmAtMainMenu(); + ConfirmAtMainMenu(); } private void exitViaBackButtonAndConfirm() { AddStep("Move mouse to backButton", () => InputManager.MoveMouseTo(backButtonPosition)); AddStep("Click back button", () => InputManager.Click(MouseButton.Left)); - confirmAtMainMenu(); + ConfirmAtMainMenu(); } - private void confirmAtMainMenu() => AddUntilStep("Wait for main menu", () => game.ScreenStack.CurrentScreen is MainMenu menu && menu.IsLoaded); - private void pressAndRelease(Key key) { InputManager.PressKey(key); InputManager.ReleaseKey(key); } - private class TestOsuGame : OsuGame - { - public new ScreenStack ScreenStack => base.ScreenStack; - - public new BackButton BackButton => base.BackButton; - - public new SettingsPanel Settings => base.Settings; - - public new OsuConfigManager LocalConfig => base.LocalConfig; - - public new Bindable Beatmap => base.Beatmap; - - protected override Loader CreateLoader() => new TestLoader(); - - public TestOsuGame(Storage storage, IAPIProvider api) - { - Storage = storage; - API = api; - } - - protected override void LoadComplete() - { - base.LoadComplete(); - API.Login("Rhythm Champion", "osu!"); - } - } - private class TestSongSelect : PlaySongSelect { public ModSelectOverlay ModSelectOverlay => ModSelect; } - - private class TestLoader : Loader - { - protected override ShaderPrecompiler CreateShaderPrecompiler() => new TestShaderPrecompiler(); - - private class TestShaderPrecompiler : ShaderPrecompiler - { - protected override bool AllLoaded => true; - } - } } } From 1db353558bf0b4f09a58e0079be1e0ee5a6839f3 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 29 Jan 2020 14:23:31 +0900 Subject: [PATCH 1076/1829] Add present beatmap tests --- .../Navigation/TestScenePresentBeatmap.cs | 110 ++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 osu.Game.Tests/Visual/Navigation/TestScenePresentBeatmap.cs diff --git a/osu.Game.Tests/Visual/Navigation/TestScenePresentBeatmap.cs b/osu.Game.Tests/Visual/Navigation/TestScenePresentBeatmap.cs new file mode 100644 index 0000000000..909409835c --- /dev/null +++ b/osu.Game.Tests/Visual/Navigation/TestScenePresentBeatmap.cs @@ -0,0 +1,110 @@ +// 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 System.Linq; +using NUnit.Framework; +using osu.Framework.Screens; +using osu.Game.Beatmaps; +using osu.Game.Rulesets; +using osu.Game.Rulesets.Mania; +using osu.Game.Rulesets.Osu; +using osu.Game.Screens.Menu; + +namespace osu.Game.Tests.Visual.Navigation +{ + public class TestScenePresentBeatmap : OsuGameTestScene + { + [Test] + public void TestFromMainMenu() + { + var firstImport = importBeatmap(1); + presentAndConfirm(firstImport); + + AddStep("return to menu", () => Game.ScreenStack.CurrentScreen.Exit()); + AddUntilStep("wait for menu", () => Game.ScreenStack.CurrentScreen is MainMenu); + + var secondimport = importBeatmap(2); + presentAndConfirm(secondimport); + } + + [Test] + public void TestFromMainMenuDifferentRuleset() + { + var firstImport = importBeatmap(1); + presentAndConfirm(firstImport); + + AddStep("return to menu", () => Game.ScreenStack.CurrentScreen.Exit()); + AddUntilStep("wait for menu", () => Game.ScreenStack.CurrentScreen is MainMenu); + + var secondimport = importBeatmap(2, new ManiaRuleset().RulesetInfo); + presentAndConfirm(secondimport); + } + + [Test] + public void TestFromSongSelect() + { + var firstImport = importBeatmap(1); + presentAndConfirm(firstImport); + + var secondimport = importBeatmap(2); + presentAndConfirm(secondimport); + } + + [Test] + public void TestFromSongSelectDifferentRuleset() + { + var firstImport = importBeatmap(1); + presentAndConfirm(firstImport); + + var secondimport = importBeatmap(2, new ManiaRuleset().RulesetInfo); + presentAndConfirm(secondimport); + } + + private Func importBeatmap(int i, RulesetInfo ruleset = null) + { + BeatmapSetInfo imported = null; + AddStep($"import beatmap {i}", () => + { + var difficulty = new BeatmapDifficulty(); + var metadata = new BeatmapMetadata + { + Artist = "SomeArtist", + AuthorString = "SomeAuthor", + Title = $"import {i}" + }; + + imported = Game.BeatmapManager.Import(new BeatmapSetInfo + { + Hash = Guid.NewGuid().ToString(), + OnlineBeatmapSetID = i, + Metadata = metadata, + Beatmaps = new List + { + new BeatmapInfo + { + OnlineBeatmapID = i * 1024, + Metadata = metadata, + BaseDifficulty = difficulty, + Ruleset = ruleset ?? new OsuRuleset().RulesetInfo + }, + } + }).Result; + }); + + AddAssert($"import {i} succeeded", () => imported != null); + + return () => imported; + } + + private void presentAndConfirm(Func getImport) + { + AddStep("present beatmap", () => Game.PresentBeatmap(getImport())); + + AddUntilStep("wait for song select", () => Game.ScreenStack.CurrentScreen is Screens.Select.SongSelect); + AddUntilStep("correct beatmap displayed", () => Game.Beatmap.Value.BeatmapSetInfo.ID == getImport().ID); + AddAssert("correct ruleset selected", () => Game.Ruleset.Value.ID == getImport().Beatmaps.First().Ruleset.ID); + } + } +} From 77c06b1c6eb7f20d0e6f9ae3fc248ed2680cf3fe Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 29 Jan 2020 16:51:14 +0900 Subject: [PATCH 1077/1829] Fix beatmap carousel potentially missing beatmap imports --- osu.Game/Screens/Select/BeatmapCarousel.cs | 27 +++++++++++++++++++++- osu.Game/Screens/Select/SongSelect.cs | 27 ++++------------------ 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs b/osu.Game/Screens/Select/BeatmapCarousel.cs index 2bb5ba612e..592e26adc2 100644 --- a/osu.Game/Screens/Select/BeatmapCarousel.cs +++ b/osu.Game/Screens/Select/BeatmapCarousel.cs @@ -68,6 +68,7 @@ namespace osu.Game.Screens.Select private IEnumerable beatmapSets => root.Children.OfType(); + // todo: only used for testing, maybe remove. public IEnumerable BeatmapSets { get => beatmapSets.Select(g => g.BeatmapSet); @@ -133,8 +134,11 @@ namespace osu.Game.Screens.Select }; } + [Resolved] + private BeatmapManager beatmaps { get; set; } + [BackgroundDependencyLoader(permitNulls: true)] - private void load(OsuConfigManager config, BeatmapManager beatmaps) + private void load(OsuConfigManager config) { config.BindWith(OsuSetting.RandomSelectAlgorithm, RandomAlgorithm); config.BindWith(OsuSetting.SongSelectRightMouseScroll, RightClickScrollingEnabled); @@ -142,6 +146,11 @@ namespace osu.Game.Screens.Select RightClickScrollingEnabled.ValueChanged += enabled => scroll.RightMouseScrollbar = enabled.NewValue; RightClickScrollingEnabled.TriggerChange(); + beatmaps.ItemAdded += beatmapAdded; + beatmaps.ItemRemoved += beatmapRemoved; + beatmaps.BeatmapHidden += beatmapHidden; + beatmaps.BeatmapRestored += beatmapRestored; + loadBeatmapSets(beatmaps.GetAllUsableBeatmapSetsEnumerable()); } @@ -535,11 +544,27 @@ namespace osu.Game.Screens.Select { base.Dispose(isDisposing); + if (beatmaps != null) + { + beatmaps.ItemAdded -= beatmapAdded; + beatmaps.ItemRemoved -= beatmapRemoved; + beatmaps.BeatmapHidden -= beatmapHidden; + beatmaps.BeatmapRestored -= beatmapRestored; + } + // aggressively dispose "off-screen" items to reduce GC pressure. foreach (var i in Items) i.Dispose(); } + private void beatmapRemoved(BeatmapSetInfo item) => RemoveBeatmapSet(item); + + private void beatmapAdded(BeatmapSetInfo item) => UpdateBeatmapSet(item); + + private void beatmapRestored(BeatmapInfo b) => UpdateBeatmapSet(beatmaps.QueryBeatmapSet(s => s.ID == b.BeatmapSetInfoID)); + + private void beatmapHidden(BeatmapInfo b) => UpdateBeatmapSet(beatmaps.QueryBeatmapSet(s => s.ID == b.BeatmapSetInfoID)); + private CarouselBeatmapSet createCarouselSet(BeatmapSetInfo beatmapSet) { if (beatmapSet.Beatmaps.All(b => b.Hidden)) diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index 1a29f336ea..a5352c4eeb 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -72,7 +72,9 @@ namespace osu.Game.Screens.Select private BeatmapInfoWedge beatmapInfoWedge; private DialogOverlay dialogOverlay; - private BeatmapManager beatmaps; + + [Resolved] + private BeatmapManager beatmaps { get; set; } protected ModSelectOverlay ModSelect { get; private set; } @@ -89,7 +91,7 @@ namespace osu.Game.Screens.Select private MusicController music { get; set; } [BackgroundDependencyLoader(true)] - private void load(BeatmapManager beatmaps, AudioManager audio, DialogOverlay dialog, OsuColour colours, SkinManager skins, ScoreManager scores) + private void load(AudioManager audio, DialogOverlay dialog, OsuColour colours, SkinManager skins, ScoreManager scores) { // initial value transfer is required for FilterControl (it uses our re-cached bindables in its async load for the initial filter). transferRulesetValue(); @@ -247,14 +249,6 @@ namespace osu.Game.Screens.Select BeatmapOptions.AddButton(@"Delete", @"all difficulties", FontAwesome.Solid.Trash, colours.Pink, () => delete(Beatmap.Value.BeatmapSetInfo), Key.Number3); } - if (this.beatmaps == null) - this.beatmaps = beatmaps; - - this.beatmaps.ItemAdded += onBeatmapSetAdded; - this.beatmaps.ItemRemoved += onBeatmapSetRemoved; - this.beatmaps.BeatmapHidden += onBeatmapHidden; - this.beatmaps.BeatmapRestored += onBeatmapRestored; - dialogOverlay = dialog; sampleChangeDifficulty = audio.Samples.Get(@"SongSelect/select-difficulty"); @@ -563,14 +557,6 @@ namespace osu.Game.Screens.Select base.Dispose(isDisposing); decoupledRuleset.UnbindAll(); - - if (beatmaps != null) - { - beatmaps.ItemAdded -= onBeatmapSetAdded; - beatmaps.ItemRemoved -= onBeatmapSetRemoved; - beatmaps.BeatmapHidden -= onBeatmapHidden; - beatmaps.BeatmapRestored -= onBeatmapRestored; - } } /// @@ -617,11 +603,6 @@ namespace osu.Game.Screens.Select lastTrack.SetTarget(track); } - private void onBeatmapSetAdded(BeatmapSetInfo s) => Carousel.UpdateBeatmapSet(s); - private void onBeatmapSetRemoved(BeatmapSetInfo s) => Carousel.RemoveBeatmapSet(s); - private void onBeatmapRestored(BeatmapInfo b) => Carousel.UpdateBeatmapSet(beatmaps.QueryBeatmapSet(s => s.ID == b.BeatmapSetInfoID)); - private void onBeatmapHidden(BeatmapInfo b) => Carousel.UpdateBeatmapSet(beatmaps.QueryBeatmapSet(s => s.ID == b.BeatmapSetInfoID)); - private void carouselBeatmapsLoaded() { bindBindables(); From c003ae63d5afa9fd9d32eacbc884b0692e241151 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 29 Jan 2020 17:17:10 +0900 Subject: [PATCH 1078/1829] Ignore failing test for now --- osu.Game.Tests/Visual/Navigation/TestScenePresentBeatmap.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game.Tests/Visual/Navigation/TestScenePresentBeatmap.cs b/osu.Game.Tests/Visual/Navigation/TestScenePresentBeatmap.cs index 909409835c..de330004c2 100644 --- a/osu.Game.Tests/Visual/Navigation/TestScenePresentBeatmap.cs +++ b/osu.Game.Tests/Visual/Navigation/TestScenePresentBeatmap.cs @@ -30,6 +30,7 @@ namespace osu.Game.Tests.Visual.Navigation } [Test] + [Ignore("will be fixed soon")] public void TestFromMainMenuDifferentRuleset() { var firstImport = importBeatmap(1); From d908bc269345c13a7a1f282418faa29fb79204d6 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 29 Jan 2020 18:44:30 +0900 Subject: [PATCH 1079/1829] Remove unnecessary extra spritetext --- .../Ranks/DrawableProfileWeightedScore.cs | 27 +++++-------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileWeightedScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileWeightedScore.cs index bacfc0fd83..1b77e8e4fb 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileWeightedScore.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileWeightedScore.cs @@ -40,28 +40,13 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks Width = 60, Child = CreateDrawableAccuracy() }, - new FillFlowContainer + new OsuSpriteText { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Children = new[] - { - new OsuSpriteText - { - Anchor = Anchor.BottomLeft, - Origin = Anchor.BottomLeft, - Font = OsuFont.GetFont(weight: FontWeight.Bold, italics: true), - Text = $"{Score.PP * weight:0}", - }, - new OsuSpriteText - { - Anchor = Anchor.BottomLeft, - Origin = Anchor.BottomLeft, - Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold, italics: true), - Text = "pp", - } - } - } + Anchor = Anchor.BottomLeft, + Origin = Anchor.BottomLeft, + Font = OsuFont.GetFont(weight: FontWeight.Bold, italics: true), + Text = $"{Score.PP * weight:0}pp", + }, } }, new OsuSpriteText From 7f946047f9ab1b064a27901eea7a171a864c06ee Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 29 Jan 2020 18:51:20 +0900 Subject: [PATCH 1080/1829] Adjust styling to closer match osu-web --- .../Profile/Sections/Ranks/DrawableProfileScore.cs | 8 ++++---- .../Sections/Ranks/DrawableProfileWeightedScore.cs | 11 +++-------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs index 9145ce6894..5196bef48d 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs @@ -174,8 +174,8 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks protected OsuSpriteText CreateDrawableAccuracy() => new OsuSpriteText { - Text = $"{Score.Accuracy:P2}", - Font = OsuFont.GetFont(weight: FontWeight.Bold, italics: true), + Text = $"{Score.Accuracy:0.00%}", + Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold, italics: true), Colour = colours.Yellow, }; @@ -233,14 +233,14 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks Text = new LocalisedString(( $"{beatmap.Metadata.TitleUnicode ?? beatmap.Metadata.Title} ", $"{beatmap.Metadata.Title ?? beatmap.Metadata.TitleUnicode} ")), - Font = OsuFont.GetFont(weight: FontWeight.SemiBold, italics: true) + Font = OsuFont.GetFont(size: 14, weight: FontWeight.SemiBold, italics: true) }, new OsuSpriteText { Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, Text = "by " + new LocalisedString((beatmap.Metadata.ArtistUnicode, beatmap.Metadata.Artist)), - Font = OsuFont.GetFont(size: 14, italics: true) + Font = OsuFont.GetFont(size: 12, italics: true) }, }; } diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileWeightedScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileWeightedScore.cs index 1b77e8e4fb..e741c88aeb 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileWeightedScore.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileWeightedScore.cs @@ -6,7 +6,6 @@ using osu.Framework.Graphics.Containers; using osu.Game.Graphics; using osu.Game.Graphics.Sprites; using osu.Game.Scoring; -using osuTK; namespace osu.Game.Overlays.Profile.Sections.Ranks { @@ -24,14 +23,12 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks { AutoSizeAxes = Axes.Both, Direction = FillDirection.Vertical, - Spacing = new Vector2(0, 2), Children = new Drawable[] { new FillFlowContainer { AutoSizeAxes = Axes.Both, Direction = FillDirection.Horizontal, - Spacing = new Vector2(15, 0), Children = new Drawable[] { new Container @@ -42,17 +39,15 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks }, new OsuSpriteText { - Anchor = Anchor.BottomLeft, - Origin = Anchor.BottomLeft, - Font = OsuFont.GetFont(weight: FontWeight.Bold, italics: true), + Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold, italics: true), Text = $"{Score.PP * weight:0}pp", }, } }, new OsuSpriteText { - Font = OsuFont.GetFont(size: 12, weight: FontWeight.Bold), - Text = $@"weighted {weight:P0}" + Font = OsuFont.GetFont(size: 12), + Text = $@"weighted {weight:0%}" } } }; From 7588c574a21e7a0a54a509f4c50013714769f810 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 29 Jan 2020 19:37:54 +0900 Subject: [PATCH 1081/1829] Fix presenting a beatmap from a different ruleset not working --- .../Navigation/TestScenePresentBeatmap.cs | 1 - osu.Game/Screens/Select/SongSelect.cs | 39 +++++++++++-------- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/osu.Game.Tests/Visual/Navigation/TestScenePresentBeatmap.cs b/osu.Game.Tests/Visual/Navigation/TestScenePresentBeatmap.cs index de330004c2..909409835c 100644 --- a/osu.Game.Tests/Visual/Navigation/TestScenePresentBeatmap.cs +++ b/osu.Game.Tests/Visual/Navigation/TestScenePresentBeatmap.cs @@ -30,7 +30,6 @@ namespace osu.Game.Tests.Visual.Navigation } [Test] - [Ignore("will be fixed soon")] public void TestFromMainMenuDifferentRuleset() { var firstImport = importBeatmap(1); diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index a5352c4eeb..a1959ff17d 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -277,7 +277,7 @@ namespace osu.Game.Screens.Select // if not the current screen, we want to get carousel in a good presentation state before displaying (resume or enter). bool shouldDebounce = this.IsCurrentScreen(); - Schedule(() => Carousel.Filter(criteria, shouldDebounce)); + Carousel.Filter(criteria, shouldDebounce); } private DependencyContainer dependencies; @@ -310,8 +310,10 @@ namespace osu.Game.Screens.Select if (!Carousel.BeatmapSetsLoaded) return; - // if we have a pending filter operation, we want to run it now. - // it could change selection (ie. if the ruleset has been changed). + transferRulesetValue(); + + // while transferRulesetValue will flush, it only does so if the ruleset changes. + // the user could have changed a filter, and we want to ensure we are 100% up-to-date and consistent here. Carousel.FlushPendingFilterOperations(); // avoid attempting to continue before a selection has been obtained. @@ -397,20 +399,10 @@ namespace osu.Game.Screens.Select { Logger.Log($"updating selection with beatmap:{beatmap?.ID.ToString() ?? "null"} ruleset:{ruleset?.ID.ToString() ?? "null"}"); - if (ruleset?.Equals(decoupledRuleset.Value) == false) + if (transferRulesetValue()) { - Logger.Log($"ruleset changed from \"{decoupledRuleset.Value}\" to \"{ruleset}\""); - + // if the ruleset changed, the rest of the selection update will happen via updateSelectedRuleset. Mods.Value = Array.Empty(); - decoupledRuleset.Value = ruleset; - - // force a filter before attempting to change the beatmap. - // we may still be in the wrong ruleset as there is a debounce delay on ruleset changes. - Carousel.Filter(null, false); - - // Filtering only completes after the carousel runs Update. - // If we also have a pending beatmap change we should delay it one frame. - selectionChangedDebounce = Schedule(run); return; } @@ -634,6 +626,7 @@ namespace osu.Game.Screens.Select // manual binding to parent ruleset to allow for delayed load in the incoming direction. transferRulesetValue(); + Ruleset.ValueChanged += r => updateSelectedRuleset(r.NewValue); decoupledRuleset.ValueChanged += r => Ruleset.Value = r.NewValue; @@ -645,9 +638,23 @@ namespace osu.Game.Screens.Select boundLocalBindables = true; } - private void transferRulesetValue() + /// + /// Transfer the game-wide ruleset to the local decoupled ruleset. + /// Will immediately run filter operations is required. + /// + /// Whether a transfer occurred. + private bool transferRulesetValue() { + if (decoupledRuleset.Value?.Equals(Ruleset.Value) == true) + return false; + + Logger.Log($"decoupled ruleset transferred (\"{decoupledRuleset.Value}\" -> \"{Ruleset.Value}\""); rulesetNoDebounce = decoupledRuleset.Value = Ruleset.Value; + + // if we have a pending filter operation, we want to run it now. + // it could change selection (ie. if the ruleset has been changed). + Carousel?.FlushPendingFilterOperations(); + return true; } private void delete(BeatmapSetInfo beatmap) From 76af8bea5dd13d940d021ed6328f7d77c99bcf20 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 29 Jan 2020 19:51:24 +0900 Subject: [PATCH 1082/1829] Fix percentage-formatted displays containing a space --- osu.Game/Graphics/UserInterface/OsuSliderBar.cs | 2 +- osu.Game/Online/Leaderboards/LeaderboardScore.cs | 2 +- osu.Game/Overlays/BeatmapSet/SuccessRate.cs | 2 +- .../Screens/Multi/Match/Components/MatchLeaderboardScore.cs | 2 +- osu.Game/Screens/Select/LocalScoreDeleteDialog.cs | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/OsuSliderBar.cs b/osu.Game/Graphics/UserInterface/OsuSliderBar.cs index 5c6c7aeafd..d0356e77c7 100644 --- a/osu.Game/Graphics/UserInterface/OsuSliderBar.cs +++ b/osu.Game/Graphics/UserInterface/OsuSliderBar.cs @@ -177,7 +177,7 @@ namespace osu.Game.Graphics.UserInterface if (DisplayAsPercentage) { - TooltipText = floatValue.ToString("P0"); + TooltipText = floatValue.ToString("0%"); } else { diff --git a/osu.Game/Online/Leaderboards/LeaderboardScore.cs b/osu.Game/Online/Leaderboards/LeaderboardScore.cs index 9c7324d913..c8b2f2327b 100644 --- a/osu.Game/Online/Leaderboards/LeaderboardScore.cs +++ b/osu.Game/Online/Leaderboards/LeaderboardScore.cs @@ -277,7 +277,7 @@ namespace osu.Game.Online.Leaderboards protected virtual IEnumerable GetStatistics(ScoreInfo model) => new[] { new LeaderboardScoreStatistic(FontAwesome.Solid.Link, "Max Combo", model.MaxCombo.ToString()), - new LeaderboardScoreStatistic(FontAwesome.Solid.Crosshairs, "Accuracy", string.Format(model.Accuracy % 1 == 0 ? @"{0:P0}" : @"{0:P2}", model.Accuracy)) + new LeaderboardScoreStatistic(FontAwesome.Solid.Crosshairs, "Accuracy", string.Format(model.Accuracy % 1 == 0 ? @"{0:0%}" : @"{0:0.00%}", model.Accuracy)) }; protected override bool OnHover(HoverEvent e) diff --git a/osu.Game/Overlays/BeatmapSet/SuccessRate.cs b/osu.Game/Overlays/BeatmapSet/SuccessRate.cs index 0258a0301a..cd81013c30 100644 --- a/osu.Game/Overlays/BeatmapSet/SuccessRate.cs +++ b/osu.Game/Overlays/BeatmapSet/SuccessRate.cs @@ -42,7 +42,7 @@ namespace osu.Game.Overlays.BeatmapSet int playCount = beatmap?.OnlineInfo?.PlayCount ?? 0; var rate = playCount != 0 ? (float)passCount / playCount : 0; - successPercent.Text = rate.ToString("P0"); + successPercent.Text = rate.ToString("0%"); successRate.Length = rate; percentContainer.ResizeWidthTo(successRate.Length, 250, Easing.InOutCubic); diff --git a/osu.Game/Screens/Multi/Match/Components/MatchLeaderboardScore.cs b/osu.Game/Screens/Multi/Match/Components/MatchLeaderboardScore.cs index aa92451c77..bab9672d65 100644 --- a/osu.Game/Screens/Multi/Match/Components/MatchLeaderboardScore.cs +++ b/osu.Game/Screens/Multi/Match/Components/MatchLeaderboardScore.cs @@ -28,7 +28,7 @@ namespace osu.Game.Screens.Multi.Match.Components protected override IEnumerable GetStatistics(ScoreInfo model) => new[] { - new LeaderboardScoreStatistic(FontAwesome.Solid.Crosshairs, "Accuracy", string.Format(model.Accuracy % 1 == 0 ? @"{0:P0}" : @"{0:P2}", model.Accuracy)), + new LeaderboardScoreStatistic(FontAwesome.Solid.Crosshairs, "Accuracy", string.Format(model.Accuracy % 1 == 0 ? @"{0:0%}" : @"{0:0.00%}", model.Accuracy)), new LeaderboardScoreStatistic(FontAwesome.Solid.Sync, "Total Attempts", score.TotalAttempts.ToString()), new LeaderboardScoreStatistic(FontAwesome.Solid.Check, "Completed Beatmaps", score.CompletedBeatmaps.ToString()), }; diff --git a/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs index 97df40fa6d..99e76124e8 100644 --- a/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs +++ b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs @@ -32,7 +32,7 @@ namespace osu.Game.Screens.Select BeatmapInfo beatmap = beatmapManager.QueryBeatmap(b => b.ID == score.BeatmapInfoID); Debug.Assert(beatmap != null); - string accuracy = string.Format(score.Accuracy == 1 ? "{0:P0}" : "{0:P2}", score.Accuracy); + string accuracy = string.Format(score.Accuracy == 1 ? "{0:0%}" : "{0:0.00%}", score.Accuracy); BodyText = $"{score.User} ({accuracy}, {score.Rank})"; Icon = FontAwesome.Regular.TrashAlt; From 3d6e00095edc737f247b6a93e20b4608d0206b7b Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 29 Jan 2020 14:08:10 +0300 Subject: [PATCH 1083/1829] Remove useless test --- osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs index c877176adf..de6f7fd29d 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs @@ -49,7 +49,6 @@ namespace osu.Game.Tests.Visual.Online AddStep("Airman comments", () => comments.ShowComments(CommentableType.Beatmapset, 24313)); AddStep("Lazer build comments", () => comments.ShowComments(CommentableType.Build, 4772)); AddStep("News comments", () => comments.ShowComments(CommentableType.NewsPost, 715)); - AddStep("Beatmap with no comments", () => comments.ShowComments(CommentableType.Beatmapset, 1288)); AddStep("Idle state", () => { scroll.Clear(); From 13eb32fea25b0e02d8e4e0a8af9a7b0c5c3a2c1e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 29 Jan 2020 22:20:34 +0900 Subject: [PATCH 1084/1829] Fix editor being accessible for multiplayer song select --- osu.Game/Screens/Select/MatchSongSelect.cs | 2 ++ osu.Game/Screens/Select/SongSelect.cs | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/osu.Game/Screens/Select/MatchSongSelect.cs b/osu.Game/Screens/Select/MatchSongSelect.cs index c5fa9e2396..a78477c771 100644 --- a/osu.Game/Screens/Select/MatchSongSelect.cs +++ b/osu.Game/Screens/Select/MatchSongSelect.cs @@ -24,6 +24,8 @@ namespace osu.Game.Screens.Select [Resolved(typeof(Room))] protected Bindable CurrentItem { get; private set; } + public override bool AllowEditing => false; + [Resolved] private BeatmapManager beatmaps { get; set; } diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index a5352c4eeb..f36b7ae059 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -35,6 +35,7 @@ using System.Linq; using System.Threading.Tasks; using osu.Framework.Graphics.Sprites; using osu.Framework.Input.Bindings; +using osu.Game.Overlays.Notifications; using osu.Game.Scoring; namespace osu.Game.Screens.Select @@ -66,6 +67,14 @@ namespace osu.Game.Screens.Select /// protected Container FooterPanels { get; private set; } + /// + /// Whether entering editor mode should be allowed. + /// + public virtual bool AllowEditing => true; + + [Resolved] + private NotificationOverlay notificationOverlay { get; set; } + protected override BackgroundScreen CreateBackground() => new BackgroundScreenBeatmap(Beatmap.Value); protected BeatmapCarousel Carousel { get; private set; } @@ -295,6 +304,12 @@ namespace osu.Game.Screens.Select public void Edit(BeatmapInfo beatmap = null) { + if (!AllowEditing) + { + notificationOverlay?.Post(new SimpleNotification { Text = "Editing is not available from the current mode." }); + return; + } + Beatmap.Value = beatmaps.GetWorkingBeatmap(beatmap ?? beatmapNoDebounce); this.Push(new Editor()); } From da6952407ea04b5f4e752c0d2587b77d4f3ce103 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 29 Jan 2020 23:01:57 +0900 Subject: [PATCH 1085/1829] Allow null DI --- osu.Game/Screens/Select/SongSelect.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index f36b7ae059..74a4aea033 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -72,7 +72,7 @@ namespace osu.Game.Screens.Select /// public virtual bool AllowEditing => true; - [Resolved] + [Resolved(canBeNull: true)] private NotificationOverlay notificationOverlay { get; set; } protected override BackgroundScreen CreateBackground() => new BackgroundScreenBeatmap(Beatmap.Value); From c9dda78ded008337b45b1b4190dce7ea70751613 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Wed, 29 Jan 2020 18:59:51 +0100 Subject: [PATCH 1086/1829] Refactor drawable hierarchy to center properly * Use FillFlowContainer.Spacing instead of manually applying margins. * Use Update() for calculating button padding to preserve it after mod button expansion and adjust FooterButtonRandom to use this method while avoiding flickering. * Expose mod display margin to clear it in the footer button. --- osu.Game/Screens/Play/HUD/ModDisplay.cs | 16 +++++++------- osu.Game/Screens/Select/FooterButton.cs | 21 ++++++++++++++++--- osu.Game/Screens/Select/FooterButtonMods.cs | 2 +- osu.Game/Screens/Select/FooterButtonRandom.cs | 5 ++++- 4 files changed, 31 insertions(+), 13 deletions(-) diff --git a/osu.Game/Screens/Play/HUD/ModDisplay.cs b/osu.Game/Screens/Play/HUD/ModDisplay.cs index 0f3c92a962..00edd4db99 100644 --- a/osu.Game/Screens/Play/HUD/ModDisplay.cs +++ b/osu.Game/Screens/Play/HUD/ModDisplay.cs @@ -41,7 +41,7 @@ namespace osu.Game.Screens.Play.HUD } } - private readonly FillFlowContainer iconsContainer; + protected readonly FillFlowContainer IconsContainer; private readonly OsuSpriteText unrankedText; public ModDisplay() @@ -50,7 +50,7 @@ namespace osu.Game.Screens.Play.HUD Children = new Drawable[] { - iconsContainer = new ReverseChildIDFillFlowContainer + IconsContainer = new ReverseChildIDFillFlowContainer { Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, @@ -69,11 +69,11 @@ namespace osu.Game.Screens.Play.HUD Current.ValueChanged += mods => { - iconsContainer.Clear(); + IconsContainer.Clear(); foreach (Mod mod in mods.NewValue) { - iconsContainer.Add(new ModIcon(mod) { Scale = new Vector2(0.6f) }); + IconsContainer.Add(new ModIcon(mod) { Scale = new Vector2(0.6f) }); } if (IsLoaded) @@ -92,7 +92,7 @@ namespace osu.Game.Screens.Play.HUD base.LoadComplete(); appearTransform(); - iconsContainer.FadeInFromZero(fade_duration, Easing.OutQuint); + IconsContainer.FadeInFromZero(fade_duration, Easing.OutQuint); } private void appearTransform() @@ -104,17 +104,17 @@ namespace osu.Game.Screens.Play.HUD expand(); - using (iconsContainer.BeginDelayedSequence(1200)) + using (IconsContainer.BeginDelayedSequence(1200)) contract(); } private void expand() { if (AllowExpand) - iconsContainer.TransformSpacingTo(new Vector2(5, 0), 500, Easing.OutQuint); + IconsContainer.TransformSpacingTo(new Vector2(5, 0), 500, Easing.OutQuint); } - private void contract() => iconsContainer.TransformSpacingTo(new Vector2(-25, 0), 500, Easing.OutQuint); + private void contract() => IconsContainer.TransformSpacingTo(new Vector2(-25, 0), 500, Easing.OutQuint); protected override bool OnHover(HoverEvent e) { diff --git a/osu.Game/Screens/Select/FooterButton.cs b/osu.Game/Screens/Select/FooterButton.cs index 869e9e8aa4..cebc73d70d 100644 --- a/osu.Game/Screens/Select/FooterButton.cs +++ b/osu.Game/Screens/Select/FooterButton.cs @@ -92,15 +92,17 @@ namespace osu.Game.Screens.Select Origin = Anchor.CentreLeft, Direction = FillDirection.Horizontal, Shear = -SHEAR, - AutoSizeAxes = Axes.Both, - Margin = new MarginPadding { Horizontal = SHEAR_WIDTH / 4 }, + AutoSizeAxes = Axes.X, + Height = 50, + Margin = new MarginPadding { Right = -SHEAR_WIDTH / 2 }, + Spacing = new Vector2(15, 0), Children = new Drawable[] { TextContainer = new Container { Anchor = Anchor.Centre, Origin = Anchor.Centre, - Size = new Vector2(100 - SHEAR_WIDTH, 50), + AutoSizeAxes = Axes.Both, Child = SpriteText = new OsuSpriteText { Anchor = Anchor.Centre, @@ -118,6 +120,19 @@ namespace osu.Game.Screens.Select public Action HoverLost; public Key? Hotkey; + protected override void UpdateAfterChildren() + { + base.UpdateAfterChildren(); + + float horizontalMargin = (100 - TextContainer.Width) / 2; + ButtonContentContainer.Padding = new MarginPadding + { + Left = horizontalMargin, + // right side margin offset to compensate for shear + Right = horizontalMargin - SHEAR_WIDTH / 2 + }; + } + protected override bool OnHover(HoverEvent e) { Hovered?.Invoke(); diff --git a/osu.Game/Screens/Select/FooterButtonMods.cs b/osu.Game/Screens/Select/FooterButtonMods.cs index 67b491cf9e..a98f3d6c5e 100644 --- a/osu.Game/Screens/Select/FooterButtonMods.cs +++ b/osu.Game/Screens/Select/FooterButtonMods.cs @@ -46,7 +46,6 @@ namespace osu.Game.Screens.Select Anchor = Anchor.Centre, Origin = Anchor.Centre, Font = OsuFont.GetFont(weight: FontWeight.Bold), - Margin = new MarginPadding { Right = 10 } }); } @@ -94,6 +93,7 @@ namespace osu.Game.Screens.Select public FooterModDisplay() { AllowExpand = false; + IconsContainer.Margin = new MarginPadding(); } } } diff --git a/osu.Game/Screens/Select/FooterButtonRandom.cs b/osu.Game/Screens/Select/FooterButtonRandom.cs index 14c9eb2035..990b9a52fb 100644 --- a/osu.Game/Screens/Select/FooterButtonRandom.cs +++ b/osu.Game/Screens/Select/FooterButtonRandom.cs @@ -24,8 +24,11 @@ namespace osu.Game.Screens.Select Anchor = Anchor.Centre, Origin = Anchor.Centre, Text = @"rewind", - Alpha = 0 + Alpha = 0, }); + + // force both text sprites to always be present to avoid width flickering while they're being swapped out + SpriteText.AlwaysPresent = secondaryText.AlwaysPresent = true; } [BackgroundDependencyLoader] From 786ed038683f49ebd105b7668da9b95007c4e6d1 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 29 Jan 2020 21:01:40 +0300 Subject: [PATCH 1087/1829] Update profile recent activities in line with the web design --- .../Online/TestSceneHistoricalSection.cs | 6 +- .../TestSceneUserProfileRecentSection.cs | 5 + .../Sections/BeatmapMetadataContainer.cs | 2 +- .../Profile/Sections/DrawableProfileRow.cs | 124 ------------------ .../Sections/Recent/DrawableRecentActivity.cs | 78 +++++++---- .../Profile/Sections/Recent/MedalIcon.cs | 3 +- .../PaginatedRecentActivityContainer.cs | 4 +- 7 files changed, 68 insertions(+), 154 deletions(-) delete mode 100644 osu.Game/Overlays/Profile/Sections/DrawableProfileRow.cs diff --git a/osu.Game.Tests/Visual/Online/TestSceneHistoricalSection.cs b/osu.Game.Tests/Visual/Online/TestSceneHistoricalSection.cs index d3b037f499..5825bc72f7 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneHistoricalSection.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneHistoricalSection.cs @@ -4,10 +4,12 @@ using System; using System.Collections.Generic; using NUnit.Framework; +using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Shapes; using osu.Game.Graphics; using osu.Game.Graphics.Containers; +using osu.Game.Overlays; using osu.Game.Overlays.Profile.Sections; using osu.Game.Overlays.Profile.Sections.Historical; using osu.Game.Users; @@ -24,9 +26,11 @@ namespace osu.Game.Tests.Visual.Online typeof(HistoricalSection), typeof(PaginatedMostPlayedBeatmapContainer), typeof(DrawableMostPlayedBeatmap), - typeof(DrawableProfileRow) }; + [Cached] + private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Green); + public TestSceneHistoricalSection() { HistoricalSection section; diff --git a/osu.Game.Tests/Visual/Online/TestSceneUserProfileRecentSection.cs b/osu.Game.Tests/Visual/Online/TestSceneUserProfileRecentSection.cs index f022425bf6..532aaa9c92 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneUserProfileRecentSection.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneUserProfileRecentSection.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Linq; using NUnit.Framework; +using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; @@ -12,6 +13,7 @@ using osu.Game.Graphics; using osu.Game.Graphics.Containers; using osu.Game.Online.API.Requests; using osu.Game.Online.API.Requests.Responses; +using osu.Game.Overlays; using osu.Game.Overlays.Profile.Sections; using osu.Game.Overlays.Profile.Sections.Recent; @@ -28,6 +30,9 @@ namespace osu.Game.Tests.Visual.Online typeof(MedalIcon) }; + [Cached] + private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Green); + public TestSceneUserProfileRecentSection() { Children = new Drawable[] diff --git a/osu.Game/Overlays/Profile/Sections/BeatmapMetadataContainer.cs b/osu.Game/Overlays/Profile/Sections/BeatmapMetadataContainer.cs index 13b547eed3..67a976fe6f 100644 --- a/osu.Game/Overlays/Profile/Sections/BeatmapMetadataContainer.cs +++ b/osu.Game/Overlays/Profile/Sections/BeatmapMetadataContainer.cs @@ -10,7 +10,7 @@ using osu.Game.Graphics.Containers; namespace osu.Game.Overlays.Profile.Sections { /// - /// Display artist/title/mapper information, commonly used as the left portion of a profile or score display row (see ). + /// Display artist/title/mapper information, commonly used as the left portion of a profile or score display row. /// public abstract class BeatmapMetadataContainer : OsuHoverContainer { diff --git a/osu.Game/Overlays/Profile/Sections/DrawableProfileRow.cs b/osu.Game/Overlays/Profile/Sections/DrawableProfileRow.cs deleted file mode 100644 index 03ee29d0c2..0000000000 --- a/osu.Game/Overlays/Profile/Sections/DrawableProfileRow.cs +++ /dev/null @@ -1,124 +0,0 @@ -// 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.Extensions.Color4Extensions; -using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Effects; -using osu.Framework.Graphics.Shapes; -using osu.Framework.Input.Events; -using osu.Game.Graphics; -using osuTK; -using osuTK.Graphics; - -namespace osu.Game.Overlays.Profile.Sections -{ - public abstract class DrawableProfileRow : Container - { - private const int fade_duration = 200; - - private Box underscoreLine; - private Box coloredBackground; - private Container background; - - /// - /// A visual element displayed to the left of content. - /// - protected abstract Drawable CreateLeftVisual(); - - protected FillFlowContainer LeftFlowContainer { get; private set; } - protected FillFlowContainer RightFlowContainer { get; private set; } - - protected override Container Content { get; } - - protected DrawableProfileRow() - { - RelativeSizeAxes = Axes.X; - Height = 60; - - Content = new Container - { - RelativeSizeAxes = Axes.Both, - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - Width = 0.97f, - }; - } - - [BackgroundDependencyLoader(true)] - private void load(OsuColour colour) - { - InternalChildren = new Drawable[] - { - background = new Container - { - RelativeSizeAxes = Axes.Both, - Masking = true, - CornerRadius = 3, - Alpha = 0, - EdgeEffect = new EdgeEffectParameters - { - Type = EdgeEffectType.Shadow, - Offset = new Vector2(0f, 1f), - Radius = 1f, - Colour = Color4.Black.Opacity(0.2f), - }, - Child = coloredBackground = new Box { RelativeSizeAxes = Axes.Both } - }, - Content, - underscoreLine = new Box - { - Anchor = Anchor.BottomCentre, - Origin = Anchor.BottomCentre, - RelativeSizeAxes = Axes.X, - Height = 1, - }, - new FillFlowContainer - { - RelativeSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Children = new[] - { - CreateLeftVisual(), - LeftFlowContainer = new FillFlowContainer - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - Margin = new MarginPadding { Left = 10 }, - Direction = FillDirection.Vertical, - }, - } - }, - RightFlowContainer = new FillFlowContainer - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Anchor = Anchor.CentreRight, - Origin = Anchor.CentreRight, - Direction = FillDirection.Vertical, - }, - }; - - coloredBackground.Colour = underscoreLine.Colour = colour.Gray4; - } - - protected override bool OnClick(ClickEvent e) => true; - - protected override bool OnHover(HoverEvent e) - { - background.FadeIn(fade_duration, Easing.OutQuint); - underscoreLine.FadeOut(fade_duration, Easing.OutQuint); - return true; - } - - protected override void OnHoverLost(HoverLostEvent e) - { - background.FadeOut(fade_duration, Easing.OutQuint); - underscoreLine.FadeIn(fade_duration, Easing.OutQuint); - base.OnHoverLost(e); - } - } -} diff --git a/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs b/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs index 4e856845ac..aef8044b12 100644 --- a/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs +++ b/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs @@ -14,7 +14,7 @@ using osu.Game.Online.Leaderboards; namespace osu.Game.Overlays.Profile.Sections.Recent { - public class DrawableRecentActivity : DrawableProfileRow + public class DrawableRecentActivity : CompositeDrawable { private IAPIProvider api; @@ -28,24 +28,55 @@ namespace osu.Game.Overlays.Profile.Sections.Recent } [BackgroundDependencyLoader] - private void load(IAPIProvider api) + private void load(IAPIProvider api, OverlayColourProvider colourProvider) { this.api = api; - LeftFlowContainer.Padding = new MarginPadding { Left = 10, Right = 160 }; - - LeftFlowContainer.Add(content = new LinkFlowContainer + RelativeSizeAxes = Axes.X; + AutoSizeAxes = Axes.Y; + AddInternal(new GridContainer { - AutoSizeAxes = Axes.Y, RelativeSizeAxes = Axes.X, - }); - - RightFlowContainer.Add(new DrawableDate(activity.CreatedAt) - { - Font = OsuFont.GetFont(size: 13), - Colour = OsuColour.Gray(0xAA), - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, + AutoSizeAxes = Axes.Y, + ColumnDimensions = new[] + { + new Dimension(GridSizeMode.Absolute, size: 40), + new Dimension(), + new Dimension(GridSizeMode.AutoSize) + }, + RowDimensions = new[] + { + new Dimension(GridSizeMode.AutoSize) + }, + Content = new[] + { + new Drawable[] + { + new Container + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Child = createIcon().With(icon => + { + icon.Anchor = Anchor.Centre; + icon.Origin = Anchor.Centre; + }) + }, + content = new LinkFlowContainer + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + AutoSizeAxes = Axes.Y, + RelativeSizeAxes = Axes.X, + }, + new DrawableDate(activity.CreatedAt) + { + Anchor = Anchor.CentreRight, + Origin = Anchor.CentreRight, + Colour = colourProvider.Foreground1, + } + } + } }); var formatted = createMessage(); @@ -53,36 +84,33 @@ namespace osu.Game.Overlays.Profile.Sections.Recent content.AddLinks(formatted.Text, formatted.Links); } - protected override Drawable CreateLeftVisual() + private Drawable createIcon() { switch (activity.Type) { case RecentActivityType.Rank: return new UpdateableRank(activity.ScoreRank) { - RelativeSizeAxes = Axes.Y, - Width = 60, + RelativeSizeAxes = Axes.X, + Height = 16, FillMode = FillMode.Fit, }; case RecentActivityType.Achievement: return new DelayedLoadWrapper(new MedalIcon(activity.Achievement.Slug) { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, RelativeSizeAxes = Axes.Both, FillMode = FillMode.Fit, }) { - RelativeSizeAxes = Axes.Y, - Width = 60, + RelativeSizeAxes = Axes.X, + Height = 20 }; default: - return new Container - { - RelativeSizeAxes = Axes.Y, - Width = 60, - FillMode = FillMode.Fit, - }; + return Empty(); } } diff --git a/osu.Game/Overlays/Profile/Sections/Recent/MedalIcon.cs b/osu.Game/Overlays/Profile/Sections/Recent/MedalIcon.cs index 4563510046..0c1f8b2e92 100644 --- a/osu.Game/Overlays/Profile/Sections/Recent/MedalIcon.cs +++ b/osu.Game/Overlays/Profile/Sections/Recent/MedalIcon.cs @@ -23,8 +23,7 @@ namespace osu.Game.Overlays.Profile.Sections.Recent Child = sprite = new Sprite { - Height = 40, - Width = 40, + RelativeSizeAxes = Axes.Both, Anchor = Anchor.Centre, Origin = Anchor.Centre, }; diff --git a/osu.Game/Overlays/Profile/Sections/Recent/PaginatedRecentActivityContainer.cs b/osu.Game/Overlays/Profile/Sections/Recent/PaginatedRecentActivityContainer.cs index 3f9d4dc93e..7a9cce4675 100644 --- a/osu.Game/Overlays/Profile/Sections/Recent/PaginatedRecentActivityContainer.cs +++ b/osu.Game/Overlays/Profile/Sections/Recent/PaginatedRecentActivityContainer.cs @@ -8,6 +8,7 @@ using osu.Framework.Bindables; using osu.Game.Online.API.Requests.Responses; using osu.Game.Online.API; using System.Collections.Generic; +using osuTK; namespace osu.Game.Overlays.Profile.Sections.Recent { @@ -16,7 +17,8 @@ namespace osu.Game.Overlays.Profile.Sections.Recent public PaginatedRecentActivityContainer(Bindable user, string header, string missing) : base(user, header, missing) { - ItemsPerPage = 5; + ItemsPerPage = 10; + ItemsContainer.Spacing = new Vector2(0, 5); } protected override APIRequest> CreateRequest() => From f130e48c9e05ba37d348feac2a541edfff533f14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Wed, 29 Jan 2020 19:17:07 +0100 Subject: [PATCH 1088/1829] Remove leftover negative margin --- osu.Game/Screens/Select/FooterButton.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Screens/Select/FooterButton.cs b/osu.Game/Screens/Select/FooterButton.cs index cebc73d70d..3517ab4c3c 100644 --- a/osu.Game/Screens/Select/FooterButton.cs +++ b/osu.Game/Screens/Select/FooterButton.cs @@ -94,7 +94,6 @@ namespace osu.Game.Screens.Select Shear = -SHEAR, AutoSizeAxes = Axes.X, Height = 50, - Margin = new MarginPadding { Right = -SHEAR_WIDTH / 2 }, Spacing = new Vector2(15, 0), Children = new Drawable[] { From 65f71b8c12757a1085d971d77fcd65c2fca23e9c Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 29 Jan 2020 21:23:19 +0100 Subject: [PATCH 1089/1829] Make colourProvider accessable from derived classes --- osu.Game/Overlays/FullscreenOverlay.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/FullscreenOverlay.cs b/osu.Game/Overlays/FullscreenOverlay.cs index 959f6749d2..44e6ce086b 100644 --- a/osu.Game/Overlays/FullscreenOverlay.cs +++ b/osu.Game/Overlays/FullscreenOverlay.cs @@ -18,7 +18,7 @@ namespace osu.Game.Overlays protected IAPIProvider API { get; private set; } [Cached] - private readonly OverlayColourProvider colourProvider; + protected readonly OverlayColourProvider colourProvider; protected FullscreenOverlay(OverlayColourScheme colourScheme) { From 0ce18256e02af52ae5feb156659b1ce998d11c5f Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 29 Jan 2020 21:35:17 +0100 Subject: [PATCH 1090/1829] Recolor ProfileTabControl --- osu.Game/Overlays/UserProfileOverlay.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/UserProfileOverlay.cs b/osu.Game/Overlays/UserProfileOverlay.cs index 07c0dbed43..8ba79efe18 100644 --- a/osu.Game/Overlays/UserProfileOverlay.cs +++ b/osu.Game/Overlays/UserProfileOverlay.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; @@ -165,9 +165,9 @@ namespace osu.Game.Overlays }; [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - AccentColour = colours.Seafoam; + AccentColour = colourProvider.Highlight1; } private class ProfileTabItem : OverlayTabItem From c091b31fe875a98e70a0c37258b49674176406a7 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 29 Jan 2020 21:37:51 +0100 Subject: [PATCH 1091/1829] Recolor basic background boxes --- osu.Game/Overlays/UserProfileOverlay.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/UserProfileOverlay.cs b/osu.Game/Overlays/UserProfileOverlay.cs index 8ba79efe18..a8e11ec124 100644 --- a/osu.Game/Overlays/UserProfileOverlay.cs +++ b/osu.Game/Overlays/UserProfileOverlay.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; @@ -8,7 +8,6 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.UserInterface; -using osu.Game.Graphics; using osu.Game.Graphics.Containers; using osu.Game.Online.API.Requests; using osu.Game.Overlays.Profile; @@ -74,7 +73,7 @@ namespace osu.Game.Overlays Add(new Box { RelativeSizeAxes = Axes.Both, - Colour = OsuColour.Gray(0.1f) + Colour = colourProvider.Background6 }); Add(sectionsContainer = new ProfileSectionsContainer @@ -83,7 +82,8 @@ namespace osu.Game.Overlays FixedHeader = tabs, HeaderBackground = new Box { - Colour = OsuColour.Gray(34), + // this is only visible as the ProfileTabControl background + Colour = colourProvider.Background5, RelativeSizeAxes = Axes.Both }, }); From 12a49b74bb19e8e6151ad8a828dcd4c039669023 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 29 Jan 2020 21:48:02 +0100 Subject: [PATCH 1092/1829] Recolor TopHeaderContainer --- osu.Game/Overlays/Profile/Header/TopHeaderContainer.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/Profile/Header/TopHeaderContainer.cs b/osu.Game/Overlays/Profile/Header/TopHeaderContainer.cs index b0d7070994..19a24dd576 100644 --- a/osu.Game/Overlays/Profile/Header/TopHeaderContainer.cs +++ b/osu.Game/Overlays/Profile/Header/TopHeaderContainer.cs @@ -33,7 +33,7 @@ namespace osu.Game.Overlays.Profile.Header private FillFlowContainer userStats; [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { Height = 150; @@ -42,7 +42,7 @@ namespace osu.Game.Overlays.Profile.Header new Box { RelativeSizeAxes = Axes.Both, - Colour = colours.GreySeafoamDark, + Colour = colourProvider.Background5, }, new FillFlowContainer { @@ -117,7 +117,7 @@ namespace osu.Game.Overlays.Profile.Header RelativeSizeAxes = Axes.X, Height = 1.5f, Margin = new MarginPadding { Top = 10 }, - Colour = colours.GreySeafoamLighter, + Colour = colourProvider.Light1, }, new FillFlowContainer { @@ -137,7 +137,7 @@ namespace osu.Game.Overlays.Profile.Header Margin = new MarginPadding { Left = 10 }, Origin = Anchor.CentreLeft, Anchor = Anchor.CentreLeft, - Colour = colours.GreySeafoamLighter, + Colour = colourProvider.Light1, } } }, From 088064523bdd2a67c7d758de98351bb73583a6f7 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 29 Jan 2020 21:55:41 +0100 Subject: [PATCH 1093/1829] Recolor CentreHeaderContainer --- osu.Game/Overlays/Profile/Header/CentreHeaderContainer.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/Profile/Header/CentreHeaderContainer.cs b/osu.Game/Overlays/Profile/Header/CentreHeaderContainer.cs index 68fd77dd84..4f36a7e240 100644 --- a/osu.Game/Overlays/Profile/Header/CentreHeaderContainer.cs +++ b/osu.Game/Overlays/Profile/Header/CentreHeaderContainer.cs @@ -28,7 +28,7 @@ namespace osu.Game.Overlays.Profile.Header } [BackgroundDependencyLoader] - private void load(OsuColour colours, TextureStore textures) + private void load(OverlayColourProvider colourProvider, TextureStore textures) { Container hiddenDetailContainer; Container expandedDetailContainer; @@ -38,7 +38,7 @@ namespace osu.Game.Overlays.Profile.Header new Box { RelativeSizeAxes = Axes.Both, - Colour = colours.GreySeafoam + Colour = colourProvider.Background4 }, new FillFlowContainer { @@ -119,12 +119,12 @@ namespace osu.Game.Overlays.Profile.Header hiddenDetailGlobal = new OverlinedInfoContainer { Title = "Global Ranking", - LineColour = colours.Yellow + LineColour = colourProvider.Highlight1 }, hiddenDetailCountry = new OverlinedInfoContainer { Title = "Country Ranking", - LineColour = colours.Yellow + LineColour = colourProvider.Highlight1 }, } } From 799a86544f577e5a627b4b9e74d0e3b8c9886a99 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 29 Jan 2020 21:57:43 +0100 Subject: [PATCH 1094/1829] Recolor play time border --- .../Profile/Header/Components/OverlinedTotalPlayTime.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Profile/Header/Components/OverlinedTotalPlayTime.cs b/osu.Game/Overlays/Profile/Header/Components/OverlinedTotalPlayTime.cs index 2c88a83680..06c9dc2602 100644 --- a/osu.Game/Overlays/Profile/Header/Components/OverlinedTotalPlayTime.cs +++ b/osu.Game/Overlays/Profile/Header/Components/OverlinedTotalPlayTime.cs @@ -27,12 +27,12 @@ namespace osu.Game.Overlays.Profile.Header.Components } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { InternalChild = info = new OverlinedInfoContainer { Title = "Total Play Time", - LineColour = colours.Yellow, + LineColour = colourProvider.Highlight1, }; User.BindValueChanged(updateTime, true); From 83d5691ba3eab76fc98b62ff16f7bedd32f5fb0b Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 29 Jan 2020 22:00:37 +0100 Subject: [PATCH 1095/1829] Match web border height --- .../Profile/Header/Components/OverlinedInfoContainer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Profile/Header/Components/OverlinedInfoContainer.cs b/osu.Game/Overlays/Profile/Header/Components/OverlinedInfoContainer.cs index c40ddca688..c306e3db2e 100644 --- a/osu.Game/Overlays/Profile/Header/Components/OverlinedInfoContainer.cs +++ b/osu.Game/Overlays/Profile/Header/Components/OverlinedInfoContainer.cs @@ -43,7 +43,7 @@ namespace osu.Game.Overlays.Profile.Header.Components line = new Circle { RelativeSizeAxes = Axes.X, - Height = 4, + Height = 2, }, title = new OsuSpriteText { From fa0a96c3f5981dadafb5e03f31eba101acb77ed5 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 29 Jan 2020 22:05:40 +0100 Subject: [PATCH 1096/1829] Match web margins --- .../Profile/Header/Components/OverlinedInfoContainer.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/osu.Game/Overlays/Profile/Header/Components/OverlinedInfoContainer.cs b/osu.Game/Overlays/Profile/Header/Components/OverlinedInfoContainer.cs index c306e3db2e..e9d22139ae 100644 --- a/osu.Game/Overlays/Profile/Header/Components/OverlinedInfoContainer.cs +++ b/osu.Game/Overlays/Profile/Header/Components/OverlinedInfoContainer.cs @@ -12,6 +12,11 @@ namespace osu.Game.Overlays.Profile.Header.Components { public class OverlinedInfoContainer : CompositeDrawable { + /// + /// The amount of space between the overline and the underneath text. + /// + private const float line_bottom_margin = 2; + private readonly Circle line; private readonly OsuSpriteText title; private readonly OsuSpriteText content; @@ -44,6 +49,7 @@ namespace osu.Game.Overlays.Profile.Header.Components { RelativeSizeAxes = Axes.X, Height = 2, + Margin = new MarginPadding { Bottom = line_bottom_margin } }, title = new OsuSpriteText { From 0f9ab7c98050286d90044a18383ea1307c95b2bf Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 29 Jan 2020 22:10:19 +0100 Subject: [PATCH 1097/1829] Recolor BottomHeaderContainer --- osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs b/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs index 158641d816..b6c6f33678 100644 --- a/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs +++ b/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs @@ -33,16 +33,16 @@ namespace osu.Game.Overlays.Profile.Header } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - iconColour = colours.GreySeafoamLighter; + iconColour = colourProvider.Foreground1; InternalChildren = new Drawable[] { new Box { RelativeSizeAxes = Axes.Both, - Colour = colours.GreySeafoamDark, + Colour = colourProvider.Background4 }, new FillFlowContainer { From 85990cdcdb4d714673afa1b569f6efdc48b484f7 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 29 Jan 2020 22:10:48 +0100 Subject: [PATCH 1098/1829] Recolor MedalHeaderContainer --- osu.Game/Overlays/Profile/Header/MedalHeaderContainer.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Profile/Header/MedalHeaderContainer.cs b/osu.Game/Overlays/Profile/Header/MedalHeaderContainer.cs index 45bc60f794..bbba9a3538 100644 --- a/osu.Game/Overlays/Profile/Header/MedalHeaderContainer.cs +++ b/osu.Game/Overlays/Profile/Header/MedalHeaderContainer.cs @@ -23,7 +23,7 @@ namespace osu.Game.Overlays.Profile.Header public readonly Bindable User = new Bindable(); [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { Alpha = 0; AutoSizeAxes = Axes.Y; @@ -34,7 +34,7 @@ namespace osu.Game.Overlays.Profile.Header new Box { RelativeSizeAxes = Axes.Both, - Colour = colours.GreySeafoamDarker, + Colour = colourProvider.Background5, }, new Container //artificial shadow { From 06eded16e282a754d0ed672d342b53a11e18995f Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 29 Jan 2020 22:10:58 +0100 Subject: [PATCH 1099/1829] Recolor DetailHeaderContainer --- osu.Game/Overlays/Profile/Header/DetailHeaderContainer.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/Profile/Header/DetailHeaderContainer.cs b/osu.Game/Overlays/Profile/Header/DetailHeaderContainer.cs index 6ee0d9ee8f..cf6ae1a3fc 100644 --- a/osu.Game/Overlays/Profile/Header/DetailHeaderContainer.cs +++ b/osu.Game/Overlays/Profile/Header/DetailHeaderContainer.cs @@ -54,7 +54,7 @@ namespace osu.Game.Overlays.Profile.Header } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider, OsuColour colours) { AutoSizeAxes = Axes.Y; @@ -65,7 +65,7 @@ namespace osu.Game.Overlays.Profile.Header new Box { RelativeSizeAxes = Axes.Both, - Colour = colours.GreySeafoamDarker, + Colour = colourProvider.Background5, }, fillFlow = new FillFlowContainer { @@ -152,12 +152,12 @@ namespace osu.Game.Overlays.Profile.Header detailGlobalRank = new OverlinedInfoContainer(true, 110) { Title = "Global Ranking", - LineColour = colours.Yellow, + LineColour = colourProvider.Highlight1, }, detailCountryRank = new OverlinedInfoContainer(false, 110) { Title = "Country Ranking", - LineColour = colours.Yellow, + LineColour = colourProvider.Highlight1, }, } } From 87521f35ed6e98d99a3ef5b30b5f8a707714349e Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 29 Jan 2020 22:25:28 +0100 Subject: [PATCH 1100/1829] Recolor buttons --- .../Profile/Header/Components/ExpandDetailsButton.cs | 6 +++--- .../Overlays/Profile/Sections/ProfileShowMoreButton.cs | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/osu.Game/Overlays/Profile/Header/Components/ExpandDetailsButton.cs b/osu.Game/Overlays/Profile/Header/Components/ExpandDetailsButton.cs index 46d24608ed..859cf0cc0b 100644 --- a/osu.Game/Overlays/Profile/Header/Components/ExpandDetailsButton.cs +++ b/osu.Game/Overlays/Profile/Header/Components/ExpandDetailsButton.cs @@ -25,10 +25,10 @@ namespace osu.Game.Overlays.Profile.Header.Components } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - IdleColour = colours.GreySeafoamLight; - HoverColour = colours.GreySeafoamLight.Darken(0.2f); + IdleColour = colourProvider.Background2; + HoverColour = colourProvider.Background2.Lighten(0.2f); Child = icon = new SpriteIcon { diff --git a/osu.Game/Overlays/Profile/Sections/ProfileShowMoreButton.cs b/osu.Game/Overlays/Profile/Sections/ProfileShowMoreButton.cs index 28486cc743..b009ab90d7 100644 --- a/osu.Game/Overlays/Profile/Sections/ProfileShowMoreButton.cs +++ b/osu.Game/Overlays/Profile/Sections/ProfileShowMoreButton.cs @@ -10,11 +10,11 @@ namespace osu.Game.Overlays.Profile.Sections public class ProfileShowMoreButton : ShowMoreButton { [BackgroundDependencyLoader] - private void load(OsuColour colors) + private void load(OverlayColourProvider colourProvider) { - IdleColour = colors.GreySeafoamDark; - HoverColour = colors.GreySeafoam; - ChevronIconColour = colors.Yellow; + IdleColour = colourProvider.Background2; + HoverColour = colourProvider.Background1; + ChevronIconColour = colourProvider.Foreground1; } } } From f7c38da0306dad4b461fef1d66b03efac8e239df Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 29 Jan 2020 22:25:56 +0100 Subject: [PATCH 1101/1829] Match web border height --- osu.Game/Overlays/Profile/Sections/Kudosu/KudosuInfo.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/Kudosu/KudosuInfo.cs b/osu.Game/Overlays/Profile/Sections/Kudosu/KudosuInfo.cs index aabfa56ee6..d4d0976724 100644 --- a/osu.Game/Overlays/Profile/Sections/Kudosu/KudosuInfo.cs +++ b/osu.Game/Overlays/Profile/Sections/Kudosu/KudosuInfo.cs @@ -101,7 +101,7 @@ namespace osu.Game.Overlays.Profile.Sections.Kudosu { Masking = true, RelativeSizeAxes = Axes.X, - Height = 5, + Height = 2, Child = lineBackground = new Box { RelativeSizeAxes = Axes.Both, @@ -128,10 +128,10 @@ namespace osu.Game.Overlays.Profile.Sections.Kudosu } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - lineBackground.Colour = colours.Yellow; - DescriptionText.Colour = colours.GreySeafoamLighter; + lineBackground.Colour = colourProvider.Highlight1; + DescriptionText.Colour = colourProvider.Foreground1; } } } From ef92c26c17aa0704ae37ed1cbdd75df441a4e024 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 29 Jan 2020 22:26:21 +0100 Subject: [PATCH 1102/1829] Recolor ProfileSection --- osu.Game/Overlays/Profile/ProfileSection.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/osu.Game/Overlays/Profile/ProfileSection.cs b/osu.Game/Overlays/Profile/ProfileSection.cs index f3590d4bb7..2e19ae4b64 100644 --- a/osu.Game/Overlays/Profile/ProfileSection.cs +++ b/osu.Game/Overlays/Profile/ProfileSection.cs @@ -95,10 +95,10 @@ namespace osu.Game.Overlays.Profile } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - background.Colour = colours.GreySeafoamDarker; - underscore.Colour = colours.Seafoam; + background.Colour = colourProvider.Background5; + underscore.Colour = colourProvider.Highlight1; } private class SectionTriangles : Container @@ -128,11 +128,11 @@ namespace osu.Game.Overlays.Profile } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - triangles.ColourLight = colours.GreySeafoamDark; - triangles.ColourDark = colours.GreySeafoamDarker.Darken(0.2f); - foreground.Colour = ColourInfo.GradientVertical(colours.GreySeafoamDarker, colours.GreySeafoamDarker.Opacity(0)); + triangles.ColourLight = colourProvider.Background4; + triangles.ColourDark = colourProvider.Background5.Darken(0.2f); + foreground.Colour = ColourInfo.GradientVertical(colourProvider.Background5, colourProvider.Background5.Opacity(0)); } } } From d20c48d15146b1c5e69616bb71afbc6441ade761 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 30 Jan 2020 00:53:05 +0300 Subject: [PATCH 1103/1829] Resolve possible UserVotes issues --- osu.Game/Online/API/Requests/Responses/CommentBundle.cs | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/osu.Game/Online/API/Requests/Responses/CommentBundle.cs b/osu.Game/Online/API/Requests/Responses/CommentBundle.cs index c3dc775bd0..9b3ef8b6e5 100644 --- a/osu.Game/Online/API/Requests/Responses/CommentBundle.cs +++ b/osu.Game/Online/API/Requests/Responses/CommentBundle.cs @@ -57,14 +57,7 @@ namespace osu.Game.Online.API.Requests.Responses { userVotes = value; - value.ForEach(v => - { - Comments.ForEach(c => - { - if (v == c.Id) - c.IsVoted = true; - }); - }); + Comments.ForEach(c => c.IsVoted = value.Contains(c.Id)); } } From 37ecf8a060fc37743dfc72b7bf4d7e1ad2a363b3 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 30 Jan 2020 10:50:48 +0900 Subject: [PATCH 1104/1829] Remove commented line --- osu.Game/Screens/Select/FooterButtonMods.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Screens/Select/FooterButtonMods.cs b/osu.Game/Screens/Select/FooterButtonMods.cs index a98f3d6c5e..965be10219 100644 --- a/osu.Game/Screens/Select/FooterButtonMods.cs +++ b/osu.Game/Screens/Select/FooterButtonMods.cs @@ -3,7 +3,6 @@ using osu.Framework.Bindables; using osu.Framework.Graphics; -// using osu.Framework.Graphics.Containers; using osu.Game.Screens.Play.HUD; using osu.Game.Rulesets.Mods; using System.Collections.Generic; From f72de235cc9ad05ab9f76cc874fc118aabc5f358 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 30 Jan 2020 11:00:14 +0900 Subject: [PATCH 1105/1829] Remove unnecessary length specifications --- osu.Game/Screens/Select/FooterButtonMods.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Screens/Select/FooterButtonMods.cs b/osu.Game/Screens/Select/FooterButtonMods.cs index 965be10219..4f2369847f 100644 --- a/osu.Game/Screens/Select/FooterButtonMods.cs +++ b/osu.Game/Screens/Select/FooterButtonMods.cs @@ -80,9 +80,9 @@ namespace osu.Game.Screens.Select MultiplierText.FadeColour(Color4.White, 200); if (Current.Value?.Count > 0) - modDisplay.FadeIn(0); + modDisplay.FadeIn(); else - modDisplay.FadeOut(0); + modDisplay.FadeOut(); } private class FooterModDisplay : ModDisplay From ebdb425c508c34894048e40a66c84b8cd1aacea7 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 30 Jan 2020 11:17:26 +0900 Subject: [PATCH 1106/1829] Rename and tidy up DeletedCommentsCounter --- .../Online/TestSceneCommentsContainer.cs | 2 +- .../Overlays/Comments/CommentsContainer.cs | 8 ++-- ...aceholder.cs => DeletedCommentsCounter.cs} | 45 ++++++++++--------- osu.Game/Overlays/Comments/DrawableComment.cs | 6 +-- 4 files changed, 33 insertions(+), 28 deletions(-) rename osu.Game/Overlays/Comments/{DeletedChildrenPlaceholder.cs => DeletedCommentsCounter.cs} (51%) diff --git a/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs index 3d63e2b07e..3deb9cb1fa 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs @@ -24,7 +24,7 @@ namespace osu.Game.Tests.Visual.Online typeof(HeaderButton), typeof(SortTabControl), typeof(ShowChildrenButton), - typeof(DeletedChildrenPlaceholder), + typeof(DeletedCommentsCounter), typeof(VotePill) }; diff --git a/osu.Game/Overlays/Comments/CommentsContainer.cs b/osu.Game/Overlays/Comments/CommentsContainer.cs index 78df73eb0d..e641cd8ddf 100644 --- a/osu.Game/Overlays/Comments/CommentsContainer.cs +++ b/osu.Game/Overlays/Comments/CommentsContainer.cs @@ -31,7 +31,7 @@ namespace osu.Game.Overlays.Comments private int currentPage; private FillFlowContainer content; - private DeletedChildrenPlaceholder deletedChildrenPlaceholder; + private DeletedCommentsCounter deletedCommentsCounter; private CommentsShowMoreButton moreButton; private TotalCommentsCounter commentCounter; @@ -84,7 +84,7 @@ namespace osu.Game.Overlays.Comments Direction = FillDirection.Vertical, Children = new Drawable[] { - deletedChildrenPlaceholder = new DeletedChildrenPlaceholder + deletedCommentsCounter = new DeletedCommentsCounter { ShowDeleted = { BindTarget = ShowDeleted } }, @@ -153,7 +153,7 @@ namespace osu.Game.Overlays.Comments private void clearComments() { currentPage = 1; - deletedChildrenPlaceholder.DeletedCount.Value = 0; + deletedCommentsCounter.Count.Value = 0; moreButton.IsLoading = true; content.Clear(); } @@ -184,7 +184,7 @@ namespace osu.Game.Overlays.Comments { content.Add(loaded); - deletedChildrenPlaceholder.DeletedCount.Value += response.Comments.Count(c => c.IsDeleted && c.IsTopLevel); + deletedCommentsCounter.Count.Value += response.Comments.Count(c => c.IsDeleted && c.IsTopLevel); if (response.HasMore) { diff --git a/osu.Game/Overlays/Comments/DeletedChildrenPlaceholder.cs b/osu.Game/Overlays/Comments/DeletedCommentsCounter.cs similarity index 51% rename from osu.Game/Overlays/Comments/DeletedChildrenPlaceholder.cs rename to osu.Game/Overlays/Comments/DeletedCommentsCounter.cs index 6b41453b91..f22086bf23 100644 --- a/osu.Game/Overlays/Comments/DeletedChildrenPlaceholder.cs +++ b/osu.Game/Overlays/Comments/DeletedCommentsCounter.cs @@ -12,51 +12,56 @@ using osu.Game.Graphics.Sprites; namespace osu.Game.Overlays.Comments { - public class DeletedChildrenPlaceholder : FillFlowContainer + public class DeletedCommentsCounter : CompositeDrawable { public readonly BindableBool ShowDeleted = new BindableBool(); - public readonly BindableInt DeletedCount = new BindableInt(); + + public readonly BindableInt Count = new BindableInt(); private readonly SpriteText countText; - public DeletedChildrenPlaceholder() + public DeletedCommentsCounter() { AutoSizeAxes = Axes.Both; - Direction = FillDirection.Horizontal; - Spacing = new Vector2(3, 0); Margin = new MarginPadding { Vertical = 10, Left = 80 }; - Children = new Drawable[] + + InternalChild = new FillFlowContainer { - new SpriteIcon + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(3, 0), + Children = new Drawable[] { - Icon = FontAwesome.Solid.Trash, - Size = new Vector2(14), - }, - countText = new OsuSpriteText - { - Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold, italics: true), + new SpriteIcon + { + Icon = FontAwesome.Solid.Trash, + Size = new Vector2(14), + }, + countText = new OsuSpriteText + { + Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold, italics: true), + } } }; } protected override void LoadComplete() { - DeletedCount.BindValueChanged(_ => updateDisplay(), true); - ShowDeleted.BindValueChanged(_ => updateDisplay(), true); base.LoadComplete(); + + Count.BindValueChanged(_ => updateDisplay(), true); + ShowDeleted.BindValueChanged(_ => updateDisplay(), true); } private void updateDisplay() { - if (DeletedCount.Value != 0) + if (!ShowDeleted.Value && Count.Value != 0) { - countText.Text = @"deleted comment".ToQuantity(DeletedCount.Value); - this.FadeTo(ShowDeleted.Value ? 0 : 1); + countText.Text = @"deleted comment".ToQuantity(Count.Value); + Show(); } else - { Hide(); - } } } } diff --git a/osu.Game/Overlays/Comments/DrawableComment.cs b/osu.Game/Overlays/Comments/DrawableComment.cs index bdae9da226..0f217f057d 100644 --- a/osu.Game/Overlays/Comments/DrawableComment.cs +++ b/osu.Game/Overlays/Comments/DrawableComment.cs @@ -42,7 +42,7 @@ namespace osu.Game.Overlays.Comments { LinkFlowContainer username; FillFlowContainer childCommentsContainer; - DeletedChildrenPlaceholder deletedChildrenPlaceholder; + DeletedCommentsCounter deletedCommentsCounter; FillFlowContainer info; LinkFlowContainer message; GridContainer content; @@ -184,7 +184,7 @@ namespace osu.Game.Overlays.Comments AutoSizeAxes = Axes.Y, Direction = FillDirection.Vertical }, - deletedChildrenPlaceholder = new DeletedChildrenPlaceholder + deletedCommentsCounter = new DeletedCommentsCounter { ShowDeleted = { BindTarget = ShowDeleted } } @@ -193,7 +193,7 @@ namespace osu.Game.Overlays.Comments } }; - deletedChildrenPlaceholder.DeletedCount.Value = comment.DeletedChildrenCount; + deletedCommentsCounter.Count.Value = comment.DeletedChildrenCount; if (comment.UserId.HasValue) username.AddUserLink(comment.User); From c158570249cfc5867ebd1a79f0766e8f33e2762d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 30 Jan 2020 11:31:34 +0900 Subject: [PATCH 1107/1829] Fix typo in comment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Bartłomiej Dach --- osu.Game/Screens/Select/SongSelect.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index a1959ff17d..ea852d26f1 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -640,7 +640,7 @@ namespace osu.Game.Screens.Select /// /// Transfer the game-wide ruleset to the local decoupled ruleset. - /// Will immediately run filter operations is required. + /// Will immediately run filter operations if required. /// /// Whether a transfer occurred. private bool transferRulesetValue() From d7d7ab48d354e00fb6c29dba5e148dbc73c66e65 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 30 Jan 2020 12:36:38 +0900 Subject: [PATCH 1108/1829] Cleanup --- osu.Game/Overlays/Profile/Header/CentreHeaderContainer.cs | 1 - .../Profile/Header/Components/ExpandDetailsButton.cs | 1 - .../Profile/Header/Components/OverlinedInfoContainer.cs | 7 +------ .../Profile/Header/Components/OverlinedTotalPlayTime.cs | 1 - osu.Game/Overlays/Profile/Header/MedalHeaderContainer.cs | 1 - .../Overlays/Profile/Sections/ProfileShowMoreButton.cs | 1 - 6 files changed, 1 insertion(+), 11 deletions(-) diff --git a/osu.Game/Overlays/Profile/Header/CentreHeaderContainer.cs b/osu.Game/Overlays/Profile/Header/CentreHeaderContainer.cs index 4f36a7e240..658cdb8ce3 100644 --- a/osu.Game/Overlays/Profile/Header/CentreHeaderContainer.cs +++ b/osu.Game/Overlays/Profile/Header/CentreHeaderContainer.cs @@ -7,7 +7,6 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Textures; -using osu.Game.Graphics; using osu.Game.Overlays.Profile.Header.Components; using osu.Game.Users; using osuTK; diff --git a/osu.Game/Overlays/Profile/Header/Components/ExpandDetailsButton.cs b/osu.Game/Overlays/Profile/Header/Components/ExpandDetailsButton.cs index 859cf0cc0b..29e13e4f51 100644 --- a/osu.Game/Overlays/Profile/Header/Components/ExpandDetailsButton.cs +++ b/osu.Game/Overlays/Profile/Header/Components/ExpandDetailsButton.cs @@ -6,7 +6,6 @@ using osu.Framework.Bindables; using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; -using osu.Game.Graphics; using osuTK; namespace osu.Game.Overlays.Profile.Header.Components diff --git a/osu.Game/Overlays/Profile/Header/Components/OverlinedInfoContainer.cs b/osu.Game/Overlays/Profile/Header/Components/OverlinedInfoContainer.cs index e9d22139ae..b11e41f90f 100644 --- a/osu.Game/Overlays/Profile/Header/Components/OverlinedInfoContainer.cs +++ b/osu.Game/Overlays/Profile/Header/Components/OverlinedInfoContainer.cs @@ -12,11 +12,6 @@ namespace osu.Game.Overlays.Profile.Header.Components { public class OverlinedInfoContainer : CompositeDrawable { - /// - /// The amount of space between the overline and the underneath text. - /// - private const float line_bottom_margin = 2; - private readonly Circle line; private readonly OsuSpriteText title; private readonly OsuSpriteText content; @@ -49,7 +44,7 @@ namespace osu.Game.Overlays.Profile.Header.Components { RelativeSizeAxes = Axes.X, Height = 2, - Margin = new MarginPadding { Bottom = line_bottom_margin } + Margin = new MarginPadding { Bottom = 2 } }, title = new OsuSpriteText { diff --git a/osu.Game/Overlays/Profile/Header/Components/OverlinedTotalPlayTime.cs b/osu.Game/Overlays/Profile/Header/Components/OverlinedTotalPlayTime.cs index 06c9dc2602..be96840217 100644 --- a/osu.Game/Overlays/Profile/Header/Components/OverlinedTotalPlayTime.cs +++ b/osu.Game/Overlays/Profile/Header/Components/OverlinedTotalPlayTime.cs @@ -6,7 +6,6 @@ using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Cursor; -using osu.Game.Graphics; using osu.Game.Users; namespace osu.Game.Overlays.Profile.Header.Components diff --git a/osu.Game/Overlays/Profile/Header/MedalHeaderContainer.cs b/osu.Game/Overlays/Profile/Header/MedalHeaderContainer.cs index bbba9a3538..a5938a3fe7 100644 --- a/osu.Game/Overlays/Profile/Header/MedalHeaderContainer.cs +++ b/osu.Game/Overlays/Profile/Header/MedalHeaderContainer.cs @@ -8,7 +8,6 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Colour; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; -using osu.Game.Graphics; using osu.Game.Overlays.Profile.Header.Components; using osu.Game.Users; using osuTK; diff --git a/osu.Game/Overlays/Profile/Sections/ProfileShowMoreButton.cs b/osu.Game/Overlays/Profile/Sections/ProfileShowMoreButton.cs index b009ab90d7..426ebeebe6 100644 --- a/osu.Game/Overlays/Profile/Sections/ProfileShowMoreButton.cs +++ b/osu.Game/Overlays/Profile/Sections/ProfileShowMoreButton.cs @@ -2,7 +2,6 @@ // See the LICENCE file in the repository root for full licence text. using osu.Framework.Allocation; -using osu.Game.Graphics; using osu.Game.Graphics.UserInterface; namespace osu.Game.Overlays.Profile.Sections From da2c2450833acacf2f68f3d207768088d0806aaf Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 30 Jan 2020 12:36:47 +0900 Subject: [PATCH 1109/1829] Change to pink colour scheme --- osu.Game/Overlays/UserProfileOverlay.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/UserProfileOverlay.cs b/osu.Game/Overlays/UserProfileOverlay.cs index a8e11ec124..d6a9b82ca1 100644 --- a/osu.Game/Overlays/UserProfileOverlay.cs +++ b/osu.Game/Overlays/UserProfileOverlay.cs @@ -29,7 +29,7 @@ namespace osu.Game.Overlays public const float CONTENT_X_MARGIN = 70; public UserProfileOverlay() - : base(OverlayColourScheme.Green) + : base(OverlayColourScheme.Pink) { } From 17978035ea90466a1f4625012197b3105d813bf6 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 30 Jan 2020 12:50:15 +0900 Subject: [PATCH 1110/1829] Fix uncaught inconsistent naming --- osu.Game/Overlays/FullscreenOverlay.cs | 12 ++++++------ osu.Game/Overlays/UserProfileOverlay.cs | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/osu.Game/Overlays/FullscreenOverlay.cs b/osu.Game/Overlays/FullscreenOverlay.cs index 44e6ce086b..3464ce6086 100644 --- a/osu.Game/Overlays/FullscreenOverlay.cs +++ b/osu.Game/Overlays/FullscreenOverlay.cs @@ -18,11 +18,11 @@ namespace osu.Game.Overlays protected IAPIProvider API { get; private set; } [Cached] - protected readonly OverlayColourProvider colourProvider; + protected readonly OverlayColourProvider ColourProvider; protected FullscreenOverlay(OverlayColourScheme colourScheme) { - colourProvider = new OverlayColourProvider(colourScheme); + ColourProvider = new OverlayColourProvider(colourScheme); RelativeSizeAxes = Axes.Both; RelativePositionAxes = Axes.Both; @@ -43,10 +43,10 @@ namespace osu.Game.Overlays [BackgroundDependencyLoader] private void load() { - Waves.FirstWaveColour = colourProvider.Light4; - Waves.SecondWaveColour = colourProvider.Light3; - Waves.ThirdWaveColour = colourProvider.Dark4; - Waves.FourthWaveColour = colourProvider.Dark3; + Waves.FirstWaveColour = ColourProvider.Light4; + Waves.SecondWaveColour = ColourProvider.Light3; + Waves.ThirdWaveColour = ColourProvider.Dark4; + Waves.FourthWaveColour = ColourProvider.Dark3; } public override void Show() diff --git a/osu.Game/Overlays/UserProfileOverlay.cs b/osu.Game/Overlays/UserProfileOverlay.cs index d6a9b82ca1..6f0d96c226 100644 --- a/osu.Game/Overlays/UserProfileOverlay.cs +++ b/osu.Game/Overlays/UserProfileOverlay.cs @@ -73,7 +73,7 @@ namespace osu.Game.Overlays Add(new Box { RelativeSizeAxes = Axes.Both, - Colour = colourProvider.Background6 + Colour = ColourProvider.Background6 }); Add(sectionsContainer = new ProfileSectionsContainer @@ -83,7 +83,7 @@ namespace osu.Game.Overlays HeaderBackground = new Box { // this is only visible as the ProfileTabControl background - Colour = colourProvider.Background5, + Colour = ColourProvider.Background5, RelativeSizeAxes = Axes.Both }, }); From 4ca3f216b82790ab026dea5c2914baa6033bcfca Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 30 Jan 2020 13:11:35 +0900 Subject: [PATCH 1111/1829] Fix test scene --- osu.Game.Tests/Visual/Online/TestSceneHistoricalSection.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/osu.Game.Tests/Visual/Online/TestSceneHistoricalSection.cs b/osu.Game.Tests/Visual/Online/TestSceneHistoricalSection.cs index d3b037f499..1b7a2160d0 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneHistoricalSection.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneHistoricalSection.cs @@ -4,10 +4,12 @@ using System; using System.Collections.Generic; using NUnit.Framework; +using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Shapes; using osu.Game.Graphics; using osu.Game.Graphics.Containers; +using osu.Game.Overlays; using osu.Game.Overlays.Profile.Sections; using osu.Game.Overlays.Profile.Sections.Historical; using osu.Game.Users; @@ -27,6 +29,9 @@ namespace osu.Game.Tests.Visual.Online typeof(DrawableProfileRow) }; + [Cached] + private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Pink); + public TestSceneHistoricalSection() { HistoricalSection section; From d8ce1fd86cda5d00ec78ce3c63ae4b2fb9023012 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 30 Jan 2020 13:23:39 +0900 Subject: [PATCH 1112/1829] Fix osu!catch not handling all vertical space --- osu.Game.Rulesets.Catch/UI/CatchPlayfield.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Catch/UI/CatchPlayfield.cs b/osu.Game.Rulesets.Catch/UI/CatchPlayfield.cs index 589503c35b..2d71fb93fb 100644 --- a/osu.Game.Rulesets.Catch/UI/CatchPlayfield.cs +++ b/osu.Game.Rulesets.Catch/UI/CatchPlayfield.cs @@ -20,7 +20,9 @@ namespace osu.Game.Rulesets.Catch.UI internal readonly CatcherArea CatcherArea; - public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => base.ReceivePositionalInputAt(screenSpacePos) || CatcherArea.ReceivePositionalInputAt(screenSpacePos); + public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => + // only check the X position; handle all vertical space. + base.ReceivePositionalInputAt(new Vector2(screenSpacePos.X, ScreenSpaceDrawQuad.Centre.Y)); public CatchPlayfield(BeatmapDifficulty difficulty, Func> createDrawableRepresentation) { From ce36e5458fa74640b9d8cbc3d7c68f7e19991074 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 30 Jan 2020 14:35:03 +0900 Subject: [PATCH 1113/1829] Fix possible crash with no channel topic --- .../Visual/Online/TestSceneChatOverlay.cs | 17 ++++++++++++++--- .../Overlays/Chat/Selection/ChannelListItem.cs | 12 ++++++------ 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs b/osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs index 9196513a55..6626640a32 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs @@ -3,12 +3,15 @@ using System; using System.Collections.Generic; +using System.Linq; using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.UserInterface; +using osu.Framework.Testing; +using osu.Game.Graphics.UserInterface; using osu.Game.Online.Chat; using osu.Game.Overlays; using osu.Game.Overlays.Chat; @@ -35,8 +38,9 @@ namespace osu.Game.Tests.Visual.Online private TestChatOverlay chatOverlay; private ChannelManager channelManager; - private readonly Channel channel1 = new Channel(new User()) { Name = "test really long username" }; - private readonly Channel channel2 = new Channel(new User()) { Name = "test2" }; + private readonly Channel channel1 = new Channel(new User()) { Name = "test really long username", Topic = "Topic for channel 1" }; + private readonly Channel channel2 = new Channel(new User()) { Name = "test2", Topic = "Topic for channel 2" }; + private readonly Channel channel3 = new Channel(new User()) { Name = "channel with no topic" }; [SetUp] public void Setup() @@ -45,7 +49,7 @@ namespace osu.Game.Tests.Visual.Online { ChannelManagerContainer container; - Child = container = new ChannelManagerContainer(new List { channel1, channel2 }) + Child = container = new ChannelManagerContainer(new List { channel1, channel2, channel3 }) { RelativeSizeAxes = Axes.Both, }; @@ -96,6 +100,13 @@ namespace osu.Game.Tests.Visual.Online AddAssert("Selector is visible", () => chatOverlay.SelectionOverlayState == Visibility.Visible); } + [Test] + public void TestSearchInSelector() + { + AddStep("search for 'test2'", () => chatOverlay.ChildrenOfType().First().Text = "test2"); + AddAssert("only channel 2 visible", () => chatOverlay.ChildrenOfType().Single(c => c.IsPresent).Channel == channel2); + } + private void clickDrawable(Drawable d) { InputManager.MoveMouseTo(d); diff --git a/osu.Game/Overlays/Chat/Selection/ChannelListItem.cs b/osu.Game/Overlays/Chat/Selection/ChannelListItem.cs index 31c48deee0..e6f61e4fbb 100644 --- a/osu.Game/Overlays/Chat/Selection/ChannelListItem.cs +++ b/osu.Game/Overlays/Chat/Selection/ChannelListItem.cs @@ -25,7 +25,7 @@ namespace osu.Game.Overlays.Chat.Selection private const float text_size = 15; private const float transition_duration = 100; - private readonly Channel channel; + public readonly Channel Channel; private readonly Bindable joinedBind = new Bindable(); private readonly OsuSpriteText name; @@ -36,7 +36,7 @@ namespace osu.Game.Overlays.Chat.Selection private Color4 topicColour; private Color4 hoverColour; - public IEnumerable FilterTerms => new[] { channel.Name, channel.Topic }; + public IEnumerable FilterTerms => new[] { Channel.Name, Channel.Topic ?? string.Empty }; public bool MatchingFilter { @@ -50,7 +50,7 @@ namespace osu.Game.Overlays.Chat.Selection public ChannelListItem(Channel channel) { - this.channel = channel; + this.Channel = channel; RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; @@ -148,7 +148,7 @@ namespace osu.Game.Overlays.Chat.Selection hoverColour = colours.Yellow; joinedBind.ValueChanged += joined => updateColour(joined.NewValue); - joinedBind.BindTo(channel.Joined); + joinedBind.BindTo(Channel.Joined); joinedBind.TriggerChange(); FinishTransforms(true); @@ -156,7 +156,7 @@ namespace osu.Game.Overlays.Chat.Selection protected override bool OnHover(HoverEvent e) { - if (!channel.Joined.Value) + if (!Channel.Joined.Value) name.FadeColour(hoverColour, 50, Easing.OutQuint); return base.OnHover(e); @@ -164,7 +164,7 @@ namespace osu.Game.Overlays.Chat.Selection protected override void OnHoverLost(HoverLostEvent e) { - if (!channel.Joined.Value) + if (!Channel.Joined.Value) name.FadeColour(Color4.White, transition_duration); } From 7b4a658264ba82938d7967bd233cc35e7ba8175e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 30 Jan 2020 14:54:57 +0900 Subject: [PATCH 1114/1829] Fix negative replay frames being played back incorrectly --- osu.Game/Scoring/Legacy/LegacyScoreParser.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/osu.Game/Scoring/Legacy/LegacyScoreParser.cs b/osu.Game/Scoring/Legacy/LegacyScoreParser.cs index 0029c843b4..85c5d414df 100644 --- a/osu.Game/Scoring/Legacy/LegacyScoreParser.cs +++ b/osu.Game/Scoring/Legacy/LegacyScoreParser.cs @@ -220,9 +220,11 @@ namespace osu.Game.Scoring.Legacy float lastTime = 0; ReplayFrame currentFrame = null; - foreach (var l in reader.ReadToEnd().Split(',')) + var frames = reader.ReadToEnd().Split(','); + + for (var i = 0; i < frames.Length; i++) { - var split = l.Split('|'); + var split = frames[i].Split('|'); if (split.Length < 4) continue; @@ -234,8 +236,14 @@ namespace osu.Game.Scoring.Legacy } var diff = Parsing.ParseFloat(split[0]); + lastTime += diff; + if (i == 0 && diff == 0) + // osu-stable adds a zero-time frame before potentially valid negative user frames. + // we need to ignroe this. + continue; + // Todo: At some point we probably want to rewind and play back the negative-time frames // but for now we'll achieve equal playback to stable by skipping negative frames if (diff < 0) From 2fb640f57f88a58008fe9c1ecd6bc855cf2972b8 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 30 Jan 2020 15:00:39 +0900 Subject: [PATCH 1115/1829] Change to until step + fix CI error --- osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs | 2 +- osu.Game/Overlays/Chat/Selection/ChannelListItem.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs b/osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs index 6626640a32..29bda524e8 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs @@ -104,7 +104,7 @@ namespace osu.Game.Tests.Visual.Online public void TestSearchInSelector() { AddStep("search for 'test2'", () => chatOverlay.ChildrenOfType().First().Text = "test2"); - AddAssert("only channel 2 visible", () => chatOverlay.ChildrenOfType().Single(c => c.IsPresent).Channel == channel2); + AddUntilStep("only channel 2 visible", () => chatOverlay.ChildrenOfType().Single(c => c.IsPresent).Channel == channel2); } private void clickDrawable(Drawable d) diff --git a/osu.Game/Overlays/Chat/Selection/ChannelListItem.cs b/osu.Game/Overlays/Chat/Selection/ChannelListItem.cs index e6f61e4fbb..1e58e8b640 100644 --- a/osu.Game/Overlays/Chat/Selection/ChannelListItem.cs +++ b/osu.Game/Overlays/Chat/Selection/ChannelListItem.cs @@ -50,7 +50,7 @@ namespace osu.Game.Overlays.Chat.Selection public ChannelListItem(Channel channel) { - this.Channel = channel; + Channel = channel; RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; From d03723303d0402c8dac21d045086519aedf96a42 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 30 Jan 2020 16:29:15 +0900 Subject: [PATCH 1116/1829] Fix typo in comment --- osu.Game/Scoring/Legacy/LegacyScoreParser.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Scoring/Legacy/LegacyScoreParser.cs b/osu.Game/Scoring/Legacy/LegacyScoreParser.cs index 85c5d414df..19d8410cc2 100644 --- a/osu.Game/Scoring/Legacy/LegacyScoreParser.cs +++ b/osu.Game/Scoring/Legacy/LegacyScoreParser.cs @@ -241,7 +241,7 @@ namespace osu.Game.Scoring.Legacy if (i == 0 && diff == 0) // osu-stable adds a zero-time frame before potentially valid negative user frames. - // we need to ignroe this. + // we need to ignore this. continue; // Todo: At some point we probably want to rewind and play back the negative-time frames From ea2f66da1d9d10a9608a87cfed312b46a95afc4d Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 30 Jan 2020 10:34:22 +0300 Subject: [PATCH 1117/1829] Simplify OverlayRulesetTabItem.AccentColour --- osu.Game/Overlays/OverlayRulesetSelector.cs | 23 ----------- osu.Game/Overlays/OverlayRulesetTabItem.cs | 40 ++++++++----------- .../Components/ProfileRulesetTabItem.cs | 17 ++++---- 3 files changed, 27 insertions(+), 53 deletions(-) diff --git a/osu.Game/Overlays/OverlayRulesetSelector.cs b/osu.Game/Overlays/OverlayRulesetSelector.cs index 0c87686f6f..b73d38eeb3 100644 --- a/osu.Game/Overlays/OverlayRulesetSelector.cs +++ b/osu.Game/Overlays/OverlayRulesetSelector.cs @@ -1,44 +1,21 @@ // 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.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.UserInterface; -using osu.Game.Graphics; using osu.Game.Rulesets; using osuTK; -using osuTK.Graphics; -using System.Linq; namespace osu.Game.Overlays { public class OverlayRulesetSelector : RulesetSelector { - private Color4 accentColour; - - public Color4 AccentColour - { - get => accentColour; - set - { - accentColour = value; - foreach (var i in TabContainer.Children.OfType()) - i.AccentColour = value; - } - } - public OverlayRulesetSelector() { AutoSizeAxes = Axes.Both; } - [BackgroundDependencyLoader] - private void load(OverlayColourProvider colourProvider) - { - AccentColour = colourProvider.Highlight1; - } - protected override TabItem CreateTabItem(RulesetInfo value) => new OverlayRulesetTabItem(value); protected override TabFillFlowContainer CreateTabFlow() => new TabFillFlowContainer diff --git a/osu.Game/Overlays/OverlayRulesetTabItem.cs b/osu.Game/Overlays/OverlayRulesetTabItem.cs index 91cf2d6b96..5b53d9d1fa 100644 --- a/osu.Game/Overlays/OverlayRulesetTabItem.cs +++ b/osu.Game/Overlays/OverlayRulesetTabItem.cs @@ -11,27 +11,31 @@ using osu.Game.Graphics.UserInterface; using osu.Game.Rulesets; using osuTK.Graphics; using osuTK; -using osu.Framework.Bindables; +using osu.Framework.Allocation; namespace osu.Game.Overlays { - public class OverlayRulesetTabItem : TabItem, IHasAccentColour + public class OverlayRulesetTabItem : TabItem { protected readonly OsuSpriteText Text; private readonly FillFlowContainer content; - public override bool PropagatePositionalInputSubTree => Enabled.Value && !Active.Value && base.PropagatePositionalInputSubTree; + protected override Container Content => content; - private readonly Bindable accentColour = new Bindable(); - private readonly Bindable currentColour = new Bindable(); + private Color4 accentColour; - public Color4 AccentColour + protected virtual Color4 AccentColour { - get => accentColour.Value; - set => accentColour.Value = value; + get => accentColour; + set + { + accentColour = value; + Text.FadeColour(value, 120, Easing.OutQuint); + } } - protected override Container Content => content; + [Resolved] + private OverlayColourProvider colourProvider { get; set; } public OverlayRulesetTabItem(RulesetInfo value) : base(value) @@ -58,13 +62,10 @@ namespace osu.Game.Overlays Enabled.Value = true; } - protected override void LoadComplete() + [BackgroundDependencyLoader] + private void load() { - base.LoadComplete(); - - currentColour.BindValueChanged(OnCurrentColourChanged); - accentColour.BindValueChanged(_ => updateState()); - Enabled.BindValueChanged(_ => updateState(), true); + updateState(); } protected override bool OnHover(HoverEvent e) @@ -87,14 +88,7 @@ namespace osu.Game.Overlays private void updateState() { Text.Font = Text.Font.With(weight: Active.Value ? FontWeight.Bold : FontWeight.Medium); - - currentColour.Value = IsHovered || Active.Value - ? Color4.White - : Enabled.Value - ? AccentColour - : Color4.DimGray; + AccentColour = IsHovered || Active.Value ? Color4.White : colourProvider.Highlight1; } - - protected virtual void OnCurrentColourChanged(ValueChangedEvent colour) => Text.FadeColour(colour.NewValue, 120, Easing.OutQuint); } } diff --git a/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetTabItem.cs b/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetTabItem.cs index 038509d371..3d20fba542 100644 --- a/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetTabItem.cs +++ b/osu.Game/Overlays/Profile/Header/Components/ProfileRulesetTabItem.cs @@ -1,7 +1,6 @@ // 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.Sprites; using osu.Game.Rulesets; @@ -28,6 +27,16 @@ namespace osu.Game.Overlays.Profile.Header.Components } } + protected override Color4 AccentColour + { + get => base.AccentColour; + set + { + base.AccentColour = value; + icon.FadeColour(value, 120, Easing.OutQuint); + } + } + private readonly SpriteIcon icon; public ProfileRulesetTabItem(RulesetInfo value) @@ -43,11 +52,5 @@ namespace osu.Game.Overlays.Profile.Header.Components Size = new Vector2(12), }); } - - protected override void OnCurrentColourChanged(ValueChangedEvent colour) - { - base.OnCurrentColourChanged(colour); - icon.FadeColour(colour.NewValue, 120, Easing.OutQuint); - } } } From b2c501a4393751eb58cd220400688b5fd52f08dc Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 30 Jan 2020 10:54:58 +0300 Subject: [PATCH 1118/1829] Adjust font size --- .../Profile/Sections/Recent/DrawableRecentActivity.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs b/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs index aef8044b12..b8b53f6ab6 100644 --- a/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs +++ b/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs @@ -16,6 +16,8 @@ namespace osu.Game.Overlays.Profile.Sections.Recent { public class DrawableRecentActivity : CompositeDrawable { + private const int font_size = 14; + private IAPIProvider api; private readonly APIRecentActivity activity; @@ -62,7 +64,7 @@ namespace osu.Game.Overlays.Profile.Sections.Recent icon.Origin = Anchor.Centre; }) }, - content = new LinkFlowContainer + content = new LinkFlowContainer(t => t.Font = OsuFont.GetFont(size: font_size)) { Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, @@ -74,6 +76,7 @@ namespace osu.Game.Overlays.Profile.Sections.Recent Anchor = Anchor.CentreRight, Origin = Anchor.CentreRight, Colour = colourProvider.Foreground1, + Font = OsuFont.GetFont(size: font_size), } } } From 2f7076f91c15b21896a92c08b2c3c86969e13a35 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 30 Jan 2020 11:16:58 +0300 Subject: [PATCH 1119/1829] Adjust icons size --- .../Profile/Sections/Recent/DrawableRecentActivity.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs b/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs index b8b53f6ab6..0387f79131 100644 --- a/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs +++ b/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs @@ -42,7 +42,7 @@ namespace osu.Game.Overlays.Profile.Sections.Recent AutoSizeAxes = Axes.Y, ColumnDimensions = new[] { - new Dimension(GridSizeMode.Absolute, size: 40), + new Dimension(GridSizeMode.Absolute, size: 28), new Dimension(), new Dimension(GridSizeMode.AutoSize) }, @@ -95,8 +95,9 @@ namespace osu.Game.Overlays.Profile.Sections.Recent return new UpdateableRank(activity.ScoreRank) { RelativeSizeAxes = Axes.X, - Height = 16, + Height = 11, FillMode = FillMode.Fit, + Margin = new MarginPadding { Top = 2 } }; case RecentActivityType.Achievement: @@ -109,7 +110,8 @@ namespace osu.Game.Overlays.Profile.Sections.Recent }) { RelativeSizeAxes = Axes.X, - Height = 20 + Width = 0.5f, + Height = 18 }; default: From 7bf2e9b36989dddd793b997fef8a254e993ee9a7 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 30 Jan 2020 17:37:52 +0900 Subject: [PATCH 1120/1829] Decouple ModSelectOverlay from global SelectedMods --- osu.Game/Overlays/Mods/ModSelectOverlay.cs | 5 ++--- osu.Game/Screens/Select/SongSelect.cs | 12 ++++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/Mods/ModSelectOverlay.cs b/osu.Game/Overlays/Mods/ModSelectOverlay.cs index 38f5d54714..6afe398172 100644 --- a/osu.Game/Overlays/Mods/ModSelectOverlay.cs +++ b/osu.Game/Overlays/Mods/ModSelectOverlay.cs @@ -47,7 +47,7 @@ namespace osu.Game.Overlays.Mods protected readonly Container ModSettingsContainer; - protected readonly Bindable> SelectedMods = new Bindable>(Array.Empty()); + public readonly Bindable> SelectedMods = new Bindable>(Array.Empty()); private Bindable>> availableMods; @@ -321,14 +321,13 @@ namespace osu.Game.Overlays.Mods } [BackgroundDependencyLoader(true)] - private void load(OsuColour colours, AudioManager audio, Bindable> selectedMods, OsuGameBase osu) + private void load(OsuColour colours, AudioManager audio, OsuGameBase osu) { LowMultiplierColour = colours.Red; HighMultiplierColour = colours.Green; UnrankedLabel.Colour = colours.Blue; availableMods = osu.AvailableMods.GetBoundCopy(); - SelectedMods.BindTo(selectedMods); sampleOn = audio.Samples.Get(@"UI/check-on"); sampleOff = audio.Samples.Get(@"UI/check-off"); diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index 74a4aea033..018c487250 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -75,6 +75,9 @@ namespace osu.Game.Screens.Select [Resolved(canBeNull: true)] private NotificationOverlay notificationOverlay { get; set; } + [Resolved] + private Bindable> selectedMods { get; set; } + protected override BackgroundScreen CreateBackground() => new BackgroundScreenBeatmap(Beatmap.Value); protected BeatmapCarousel Carousel { get; private set; } @@ -468,6 +471,8 @@ namespace osu.Game.Screens.Select this.FadeInFromZero(250); FilterControl.Activate(); + + ModSelect.SelectedMods.BindTo(selectedMods); } private const double logo_transition = 250; @@ -508,6 +513,12 @@ namespace osu.Game.Screens.Select public override void OnResuming(IScreen last) { + base.OnResuming(last); + + // required due to https://github.com/ppy/osu-framework/issues/3218 + ModSelect.SelectedMods.Disabled = false; + ModSelect.SelectedMods.BindTo(selectedMods); + BeatmapDetails.Leaderboard.RefreshScores(); Beatmap.Value.Track.Looping = true; @@ -532,6 +543,7 @@ namespace osu.Game.Screens.Select public override void OnSuspending(IScreen next) { + ModSelect.SelectedMods.UnbindFrom(selectedMods); ModSelect.Hide(); BeatmapOptions.Hide(); From bc21e30b09ef42fa17f8297a58bab4873181a100 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 30 Jan 2020 17:35:54 +0900 Subject: [PATCH 1121/1829] Allow specifying a valid list of types to performFromMenu --- osu.Game/OsuGame.cs | 45 ++++++++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index ff46c6d849..f54e6c02af 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -327,10 +327,10 @@ namespace osu.Game return; } - performFromMainMenu(() => + performFromScreen(screen => { // we might already be at song select, so a check is required before performing the load to solo. - if (menuScreen.IsCurrentScreen()) + if (screen is MainMenu) menuScreen.LoadToSolo(); // we might even already be at the song @@ -344,7 +344,7 @@ namespace osu.Game Ruleset.Value = first.Ruleset; Beatmap.Value = BeatmapManager.GetWorkingBeatmap(first); - }, $"load {beatmap}", bypassScreenAllowChecks: true, targetScreen: typeof(PlaySongSelect)); + }, $"load {beatmap}", bypassScreenAllowChecks: true, validScreens: new[] { typeof(PlaySongSelect) }); } /// @@ -381,11 +381,11 @@ namespace osu.Game return; } - performFromMainMenu(() => + performFromScreen(screen => { Beatmap.Value = BeatmapManager.GetWorkingBeatmap(databasedBeatmap); - menuScreen.Push(new ReplayPlayerLoader(databasedScore)); + screen.Push(new ReplayPlayerLoader(databasedScore)); }, $"watch {databasedScoreInfo}", bypassScreenAllowChecks: true); } @@ -441,17 +441,20 @@ namespace osu.Game private ScheduledDelegate performFromMainMenuTask; /// - /// Perform an action only after returning to the main menu. + /// Perform an action only after returning to a specific screen specification. /// Eagerly tries to exit the current screen until it succeeds. /// /// The action to perform once we are in the correct state. /// The task name to display in a notification (if we can't immediately reach the main menu state). - /// An optional target screen type. If this screen is already current we can immediately perform the action without returning to the menu. + /// An optional collection of valid screen types. If any of these screens are already current we can immediately perform the action immediately, else the first valid parent will be made current before performing the action. is used if not specified. /// Whether checking should be bypassed. - private void performFromMainMenu(Action action, string taskName, Type targetScreen = null, bool bypassScreenAllowChecks = false) + private void performFromScreen(Action action, string taskName, IEnumerable validScreens = null, bool bypassScreenAllowChecks = false) { performFromMainMenuTask?.Cancel(); + validScreens ??= Enumerable.Empty(); + validScreens = validScreens.Append(typeof(MainMenu)); + // if the current screen does not allow screen changing, give the user an option to try again later. if (!bypassScreenAllowChecks && (ScreenStack.CurrentScreen as IOsuScreen)?.AllowExternalScreenChange == false) { @@ -460,7 +463,7 @@ namespace osu.Game Text = $"Click here to {taskName}", Activated = () => { - performFromMainMenu(action, taskName, targetScreen, true); + performFromScreen(action, taskName, validScreens, true); return true; } }); @@ -471,23 +474,27 @@ namespace osu.Game CloseAllOverlays(false); // we may already be at the target screen type. - if (targetScreen != null && ScreenStack.CurrentScreen?.GetType() == targetScreen) + if (validScreens.Contains(ScreenStack.CurrentScreen?.GetType()) && !Beatmap.Disabled) { - action(); + action(ScreenStack.CurrentScreen); return; } - // all conditions have been met to continue with the action. - if (menuScreen?.IsCurrentScreen() == true && !Beatmap.Disabled) + // find closest valid target + IScreen screen = ScreenStack.CurrentScreen; + + while (screen != null) { - action(); - return; + if (validScreens.Contains(screen.GetType())) + { + screen.MakeCurrent(); + break; + } + + screen = screen.GetParentScreen(); } - // menuScreen may not be initialised yet (null check required). - menuScreen?.MakeCurrent(); - - performFromMainMenuTask = Schedule(() => performFromMainMenu(action, taskName)); + performFromMainMenuTask = Schedule(() => performFromScreen(action, taskName, validScreens)); } /// From f637e0e5a73c356cccf03580cee858c9a737996f Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 30 Jan 2020 18:08:34 +0900 Subject: [PATCH 1122/1829] Remove unused bypassScreenAllowChecks argument --- osu.Game/OsuGame.cs | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index f54e6c02af..374bacde00 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -344,7 +344,7 @@ namespace osu.Game Ruleset.Value = first.Ruleset; Beatmap.Value = BeatmapManager.GetWorkingBeatmap(first); - }, $"load {beatmap}", bypassScreenAllowChecks: true, validScreens: new[] { typeof(PlaySongSelect) }); + }, $"load {beatmap}", validScreens: new[] { typeof(PlaySongSelect) }); } /// @@ -386,7 +386,7 @@ namespace osu.Game Beatmap.Value = BeatmapManager.GetWorkingBeatmap(databasedBeatmap); screen.Push(new ReplayPlayerLoader(databasedScore)); - }, $"watch {databasedScoreInfo}", bypassScreenAllowChecks: true); + }, $"watch {databasedScoreInfo}"); } protected virtual Loader CreateLoader() => new Loader(); @@ -447,30 +447,13 @@ namespace osu.Game /// The action to perform once we are in the correct state. /// The task name to display in a notification (if we can't immediately reach the main menu state). /// An optional collection of valid screen types. If any of these screens are already current we can immediately perform the action immediately, else the first valid parent will be made current before performing the action. is used if not specified. - /// Whether checking should be bypassed. - private void performFromScreen(Action action, string taskName, IEnumerable validScreens = null, bool bypassScreenAllowChecks = false) + private void performFromScreen(Action action, string taskName, IEnumerable validScreens = null) { performFromMainMenuTask?.Cancel(); validScreens ??= Enumerable.Empty(); validScreens = validScreens.Append(typeof(MainMenu)); - // if the current screen does not allow screen changing, give the user an option to try again later. - if (!bypassScreenAllowChecks && (ScreenStack.CurrentScreen as IOsuScreen)?.AllowExternalScreenChange == false) - { - notifications.Post(new SimpleNotification - { - Text = $"Click here to {taskName}", - Activated = () => - { - performFromScreen(action, taskName, validScreens, true); - return true; - } - }); - - return; - } - CloseAllOverlays(false); // we may already be at the target screen type. From 8e0d51766b3c9ca8e90e9ba74f45f0e0c45a4360 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 30 Jan 2020 18:10:19 +0900 Subject: [PATCH 1123/1829] 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 5497a82a7a..a31db201b2 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 0ea558bbc7..6c3aea04a1 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 a215bc65e8..6f9d27a93a 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From 0975002ef503841177a69bc6c5bccc3a80465fef Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 30 Jan 2020 18:16:28 +0900 Subject: [PATCH 1124/1829] Allow presenting scores from PlaySongSelect --- osu.Game/OsuGame.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index 374bacde00..597b318c90 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -386,7 +386,7 @@ namespace osu.Game Beatmap.Value = BeatmapManager.GetWorkingBeatmap(databasedBeatmap); screen.Push(new ReplayPlayerLoader(databasedScore)); - }, $"watch {databasedScoreInfo}"); + }, $"watch {databasedScoreInfo}", new[] { typeof(PlaySongSelect) }); } protected virtual Loader CreateLoader() => new Loader(); From 29ba82ee448ecab176c603ea4582e0edf3021912 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 30 Jan 2020 12:29:35 +0300 Subject: [PATCH 1125/1829] Apply different font styles for different content parts --- .../Sections/Recent/DrawableRecentActivity.cs | 80 ++++++++++++------- 1 file changed, 52 insertions(+), 28 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs b/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs index 0387f79131..e9377bb00b 100644 --- a/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs +++ b/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs @@ -4,6 +4,7 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Sprites; using osu.Game.Graphics; using osu.Game.Graphics.Containers; using osu.Game.Online.API; @@ -82,9 +83,7 @@ namespace osu.Game.Overlays.Profile.Sections.Recent } }); - var formatted = createMessage(); - - content.AddLinks(formatted.Text, formatted.Links); + createMessage(); } private Drawable createIcon() @@ -119,81 +118,106 @@ namespace osu.Game.Overlays.Profile.Sections.Recent } } - private string toAbsoluteUrl(string url) => $"{api.Endpoint}{url}"; + private string getLinkArgument(string url) => MessageFormatter.GetLinkDetails($"{api.Endpoint}{url}").Argument; - private MessageFormatter.MessageFormatterResult createMessage() + private FontUsage getLinkFont(FontWeight fontWeight = FontWeight.Regular) + => OsuFont.GetFont(size: font_size, weight: fontWeight, italics: true); + + private void addUserLink() + => content.AddLink(activity.User?.Username, LinkAction.OpenUserProfile, getLinkArgument(activity.User?.Url), creationParameters: t => t.Font = getLinkFont(FontWeight.Bold)); + + private void addBeatmapLink() + => content.AddLink(activity.Beatmap?.Title, LinkAction.OpenBeatmap, getLinkArgument(activity.Beatmap?.Url), creationParameters: t => t.Font = getLinkFont()); + + private void addBeatmapsetLink() + => content.AddLink(activity.Beatmapset?.Title, LinkAction.OpenBeatmapSet, getLinkArgument(activity.Beatmapset?.Url), creationParameters: t => t.Font = getLinkFont()); + + private void addText(string text) + => content.AddText(text, t => t.Font = OsuFont.GetFont(size: font_size, weight: FontWeight.SemiBold)); + + private void createMessage() { - string userLinkTemplate() => $"[{toAbsoluteUrl(activity.User?.Url)} {activity.User?.Username}]"; - string beatmapLinkTemplate() => $"[{toAbsoluteUrl(activity.Beatmap?.Url)} {activity.Beatmap?.Title}]"; - string beatmapsetLinkTemplate() => $"[{toAbsoluteUrl(activity.Beatmapset?.Url)} {activity.Beatmapset?.Title}]"; - - string message; - switch (activity.Type) { case RecentActivityType.Achievement: - message = $"{userLinkTemplate()} unlocked the {activity.Achievement.Name} medal!"; + addUserLink(); + addText($" unlocked the \"{activity.Achievement.Name}\" medal!"); break; case RecentActivityType.BeatmapPlaycount: - message = $"{beatmapLinkTemplate()} has been played {activity.Count} times!"; + addBeatmapLink(); + addText($" has been played {activity.Count} times!"); break; case RecentActivityType.BeatmapsetApprove: - message = $"{beatmapsetLinkTemplate()} has been {activity.Approval.ToString().ToLowerInvariant()}!"; + addBeatmapsetLink(); + addText($" has been {activity.Approval.ToString().ToLowerInvariant()}!"); break; case RecentActivityType.BeatmapsetDelete: - message = $"{beatmapsetLinkTemplate()} has been deleted."; + addBeatmapsetLink(); + addText(" has been deleted."); break; case RecentActivityType.BeatmapsetRevive: - message = $"{beatmapsetLinkTemplate()} has been revived from eternal slumber by {userLinkTemplate()}."; + addBeatmapsetLink(); + addText(" has been revived from eternal slumber by "); + addUserLink(); break; case RecentActivityType.BeatmapsetUpdate: - message = $"{userLinkTemplate()} has updated the beatmap {beatmapsetLinkTemplate()}!"; + addUserLink(); + addText(" has updated the beatmap "); + addBeatmapsetLink(); break; case RecentActivityType.BeatmapsetUpload: - message = $"{userLinkTemplate()} has submitted a new beatmap {beatmapsetLinkTemplate()}!"; + addUserLink(); + addText(" has submitted a new beatmap "); + addBeatmapsetLink(); break; case RecentActivityType.Medal: // apparently this shouldn't exist look at achievement instead (https://github.com/ppy/osu-web/blob/master/resources/assets/coffee/react/profile-page/recent-activity.coffee#L111) - message = string.Empty; break; case RecentActivityType.Rank: - message = $"{userLinkTemplate()} achieved rank #{activity.Rank} on {beatmapLinkTemplate()} ({activity.Mode}!)"; + addUserLink(); + addText($" achieved rank #{activity.Rank} on "); + addBeatmapLink(); + addText($" ({activity.Mode}!)"); break; case RecentActivityType.RankLost: - message = $"{userLinkTemplate()} has lost first place on {beatmapLinkTemplate()} ({activity.Mode}!)"; + addUserLink(); + addText(" has lost first place on "); + addBeatmapLink(); + addText($" ({activity.Mode}!)"); break; case RecentActivityType.UserSupportAgain: - message = $"{userLinkTemplate()} has once again chosen to support osu! - thanks for your generosity!"; + addUserLink(); + addText(" has once again chosen to support osu! - thanks for your generosity!"); break; case RecentActivityType.UserSupportFirst: - message = $"{userLinkTemplate()} has become an osu!supporter - thanks for your generosity!"; + addUserLink(); + addText(" has become an osu!supporter - thanks for your generosity!"); break; case RecentActivityType.UserSupportGift: - message = $"{userLinkTemplate()} has received the gift of osu!supporter!"; + addUserLink(); + addText(" has received the gift of osu!supporter!"); break; case RecentActivityType.UsernameChange: - message = $"{activity.User?.PreviousUsername} has changed their username to {userLinkTemplate()}!"; + addText($"{activity.User?.PreviousUsername} has changed their username to "); + addUserLink(); break; default: - message = string.Empty; break; } - - return MessageFormatter.FormatText(message); } } } From f6ba98eec0f1087d9d7214681f41b8a35c1c47bd Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 30 Jan 2020 19:00:59 +0900 Subject: [PATCH 1126/1829] Apply refactorings for framework-side changes --- osu.Game/Overlays/Music/PlaylistList.cs | 70 +++++----------------- osu.Game/Overlays/Music/PlaylistOverlay.cs | 6 +- 2 files changed, 18 insertions(+), 58 deletions(-) diff --git a/osu.Game/Overlays/Music/PlaylistList.cs b/osu.Game/Overlays/Music/PlaylistList.cs index f7be69e1f2..e183c14f10 100644 --- a/osu.Game/Overlays/Music/PlaylistList.cs +++ b/osu.Game/Overlays/Music/PlaylistList.cs @@ -19,12 +19,11 @@ using osuTK.Graphics; namespace osu.Game.Overlays.Music { - public class PlaylistList : RearrangeableListContainer + public class PlaylistList : RearrangeableListContainer { public Action RequestSelection; public readonly Bindable SelectedSet = new Bindable(); - public readonly IBindableList BeatmapSets = new BindableList(); public new MarginPadding Padding { @@ -32,44 +31,17 @@ namespace osu.Game.Overlays.Music set => base.Padding = value; } - private readonly HashSet existingItems = new HashSet(); - - [BackgroundDependencyLoader] - private void load() - { - BeatmapSets.ItemsAdded += addBeatmapSets; - BeatmapSets.ItemsRemoved += removeBeatmapSets; - - foreach (var item in BeatmapSets) - addBeatmapSet(item); - } - public void Filter(string searchTerm) => ((PlaylistListFlowContainer)ListContainer).SearchTerm = searchTerm; - public BeatmapSetInfo FirstVisibleSet => ListContainer.FlowingChildren.Cast().FirstOrDefault(i => i.MatchingFilter)?.Model.BeatmapSetInfo; - - private void addBeatmapSets(IEnumerable sets) - { - foreach (var set in sets) - addBeatmapSet(set); - } - - private void addBeatmapSet(BeatmapSetInfo set) => Schedule(() => - { - if (existingItems.Contains(set)) - return; - - AddItem(new PlaylistListItem(set)); - existingItems.Add(set); - }); + public BeatmapSetInfo FirstVisibleSet => ListContainer.FlowingChildren.Cast().FirstOrDefault(i => i.MatchingFilter)?.Model; private void removeBeatmapSets(IEnumerable sets) => Schedule(() => { foreach (var item in sets) - RemoveItem(ListContainer.Children.Select(d => d.Model).FirstOrDefault(m => m.BeatmapSetInfo == item)); + Items.Remove(ListContainer.Children.Select(d => d.Model).FirstOrDefault(m => m == item)); }); - protected override DrawableRearrangeableListItem CreateDrawable(PlaylistListItem item) => new DrawablePlaylistListItem(item) + protected override DrawableRearrangeableListItem CreateDrawable(BeatmapSetInfo item) => new DrawablePlaylistListItem(item) { SelectedSet = { BindTarget = SelectedSet }, RequestSelection = set => RequestSelection?.Invoke(set) @@ -77,7 +49,7 @@ namespace osu.Game.Overlays.Music protected override ScrollContainer CreateScrollContainer() => new OsuScrollContainer(); - protected override FillFlowContainer> CreateListFillFlowContainer() => new PlaylistListFlowContainer + protected override FillFlowContainer> CreateListFillFlowContainer() => new PlaylistListFlowContainer { Spacing = new Vector2(0, 3), LayoutDuration = 200, @@ -85,25 +57,11 @@ namespace osu.Game.Overlays.Music }; } - public class PlaylistListFlowContainer : SearchContainer> + public class PlaylistListFlowContainer : SearchContainer> { } - public class PlaylistListItem : IEquatable - { - public readonly BeatmapSetInfo BeatmapSetInfo; - - public PlaylistListItem(BeatmapSetInfo beatmapSetInfo) - { - BeatmapSetInfo = beatmapSetInfo; - } - - public override string ToString() => BeatmapSetInfo.ToString(); - - public bool Equals(PlaylistListItem other) => BeatmapSetInfo.Equals(other?.BeatmapSetInfo); - } - - public class DrawablePlaylistListItem : DrawableRearrangeableListItem, IFilterable + public class DrawablePlaylistListItem : DrawableRearrangeableListItem, IFilterable { private const float fade_duration = 100; @@ -119,7 +77,7 @@ namespace osu.Game.Overlays.Music private Color4 hoverColour; private Color4 artistColour; - public DrawablePlaylistListItem(PlaylistListItem item) + public DrawablePlaylistListItem(BeatmapSetInfo item) : base(item) { RelativeSizeAxes = Axes.X; @@ -127,7 +85,7 @@ namespace osu.Game.Overlays.Music Padding = new MarginPadding { Left = 5 }; - FilterTerms = item.BeatmapSetInfo.Metadata.SearchableTerms; + FilterTerms = item.Metadata.SearchableTerms; } [BackgroundDependencyLoader] @@ -164,8 +122,8 @@ namespace osu.Game.Overlays.Music RowDimensions = new[] { new Dimension(GridSizeMode.AutoSize) } }; - titleBind = localisation.GetLocalisedString(new LocalisedString((Model.BeatmapSetInfo.Metadata.TitleUnicode, Model.BeatmapSetInfo.Metadata.Title))); - artistBind = localisation.GetLocalisedString(new LocalisedString((Model.BeatmapSetInfo.Metadata.ArtistUnicode, Model.BeatmapSetInfo.Metadata.Artist))); + titleBind = localisation.GetLocalisedString(new LocalisedString((Model.Metadata.TitleUnicode, Model.Metadata.Title))); + artistBind = localisation.GetLocalisedString(new LocalisedString((Model.Metadata.ArtistUnicode, Model.Metadata.Artist))); artistBind.BindValueChanged(_ => recreateText(), true); } @@ -176,11 +134,11 @@ namespace osu.Game.Overlays.Music SelectedSet.BindValueChanged(set => { - if (set.OldValue != Model.BeatmapSetInfo && set.NewValue != Model.BeatmapSetInfo) + if (set.OldValue != Model && set.NewValue != Model) return; foreach (Drawable s in titleSprites) - s.FadeColour(set.NewValue == Model.BeatmapSetInfo ? hoverColour : Color4.White, fade_duration); + s.FadeColour(set.NewValue == Model ? hoverColour : Color4.White, fade_duration); }, true); } @@ -201,7 +159,7 @@ namespace osu.Game.Overlays.Music protected override bool OnClick(ClickEvent e) { - RequestSelection?.Invoke(Model.BeatmapSetInfo); + RequestSelection?.Invoke(Model); return true; } diff --git a/osu.Game/Overlays/Music/PlaylistOverlay.cs b/osu.Game/Overlays/Music/PlaylistOverlay.cs index 87abbd142c..a814712907 100644 --- a/osu.Game/Overlays/Music/PlaylistOverlay.cs +++ b/osu.Game/Overlays/Music/PlaylistOverlay.cs @@ -21,7 +21,9 @@ namespace osu.Game.Overlays.Music private const float transition_duration = 600; private const float playlist_height = 510; - public readonly IBindableList BeatmapSets = new BindableList(); + public IBindableList BeatmapSets => beatmapSets; + + private readonly BindableList beatmapSets = new BindableList(); private readonly Bindable beatmap = new Bindable(); private BeatmapManager beatmaps; @@ -72,7 +74,7 @@ namespace osu.Game.Overlays.Music }, }; - list.BeatmapSets.BindTo(BeatmapSets); + list.Items.BindTo(beatmapSets); filter.Search.OnCommit = (sender, newText) => { From a7a3372a984bd9ad79c3414a4e75d16d883df2b5 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 30 Jan 2020 13:01:40 +0300 Subject: [PATCH 1127/1829] Remove redundant empty switch section --- .../Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs b/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs index e9377bb00b..d5bdcffeef 100644 --- a/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs +++ b/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs @@ -214,9 +214,6 @@ namespace osu.Game.Overlays.Profile.Sections.Recent addText($"{activity.User?.PreviousUsername} has changed their username to "); addUserLink(); break; - - default: - break; } } } From 00a7adcdca53ccc475372b5f9d5221944d17a696 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 30 Jan 2020 19:21:24 +0900 Subject: [PATCH 1128/1829] Further refactorings --- .../UserInterface/TestScenePlaylistOverlay.cs | 4 +- ...laylistList.cs => DrawablePlaylistItem.cs} | 48 +---- osu.Game/Overlays/Music/Playlist.cs | 46 +++++ osu.Game/Overlays/Music/PlaylistItem.cs | 183 ------------------ osu.Game/Overlays/Music/PlaylistOverlay.cs | 4 +- 5 files changed, 53 insertions(+), 232 deletions(-) rename osu.Game/Overlays/Music/{PlaylistList.cs => DrawablePlaylistItem.cs} (75%) create mode 100644 osu.Game/Overlays/Music/Playlist.cs delete mode 100644 osu.Game/Overlays/Music/PlaylistItem.cs diff --git a/osu.Game.Tests/Visual/UserInterface/TestScenePlaylistOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestScenePlaylistOverlay.cs index 986cf458ab..7476b52b49 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestScenePlaylistOverlay.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestScenePlaylistOverlay.cs @@ -16,10 +16,10 @@ namespace osu.Game.Tests.Visual.UserInterface { public class TestScenePlaylistOverlay : OsuTestScene { - public override IReadOnlyList RequiredTypes => new Type[] + public override IReadOnlyList RequiredTypes => new[] { typeof(PlaylistOverlay), - typeof(PlaylistList) + typeof(Playlist) }; private readonly BindableList beatmapSets = new BindableList(); diff --git a/osu.Game/Overlays/Music/PlaylistList.cs b/osu.Game/Overlays/Music/DrawablePlaylistItem.cs similarity index 75% rename from osu.Game/Overlays/Music/PlaylistList.cs rename to osu.Game/Overlays/Music/DrawablePlaylistItem.cs index e183c14f10..e3dd72ae8b 100644 --- a/osu.Game/Overlays/Music/PlaylistList.cs +++ b/osu.Game/Overlays/Music/DrawablePlaylistItem.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; @@ -19,49 +19,7 @@ using osuTK.Graphics; namespace osu.Game.Overlays.Music { - public class PlaylistList : RearrangeableListContainer - { - public Action RequestSelection; - - public readonly Bindable SelectedSet = new Bindable(); - - public new MarginPadding Padding - { - get => base.Padding; - set => base.Padding = value; - } - - public void Filter(string searchTerm) => ((PlaylistListFlowContainer)ListContainer).SearchTerm = searchTerm; - - public BeatmapSetInfo FirstVisibleSet => ListContainer.FlowingChildren.Cast().FirstOrDefault(i => i.MatchingFilter)?.Model; - - private void removeBeatmapSets(IEnumerable sets) => Schedule(() => - { - foreach (var item in sets) - Items.Remove(ListContainer.Children.Select(d => d.Model).FirstOrDefault(m => m == item)); - }); - - protected override DrawableRearrangeableListItem CreateDrawable(BeatmapSetInfo item) => new DrawablePlaylistListItem(item) - { - SelectedSet = { BindTarget = SelectedSet }, - RequestSelection = set => RequestSelection?.Invoke(set) - }; - - protected override ScrollContainer CreateScrollContainer() => new OsuScrollContainer(); - - protected override FillFlowContainer> CreateListFillFlowContainer() => new PlaylistListFlowContainer - { - Spacing = new Vector2(0, 3), - LayoutDuration = 200, - LayoutEasing = Easing.OutQuint, - }; - } - - public class PlaylistListFlowContainer : SearchContainer> - { - } - - public class DrawablePlaylistListItem : DrawableRearrangeableListItem, IFilterable + public class DrawablePlaylistItem : RearrangeableListItem, IFilterable { private const float fade_duration = 100; @@ -77,7 +35,7 @@ namespace osu.Game.Overlays.Music private Color4 hoverColour; private Color4 artistColour; - public DrawablePlaylistListItem(BeatmapSetInfo item) + public DrawablePlaylistItem(BeatmapSetInfo item) : base(item) { RelativeSizeAxes = Axes.X; diff --git a/osu.Game/Overlays/Music/Playlist.cs b/osu.Game/Overlays/Music/Playlist.cs new file mode 100644 index 0000000000..ba9aaf03d4 --- /dev/null +++ b/osu.Game/Overlays/Music/Playlist.cs @@ -0,0 +1,46 @@ +// 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.Bindables; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Beatmaps; +using osu.Game.Graphics.Containers; +using osuTK; + +namespace osu.Game.Overlays.Music +{ + public class Playlist : RearrangeableListContainer + { + public Action RequestSelection; + + public readonly Bindable SelectedSet = new Bindable(); + + public new MarginPadding Padding + { + get => base.Padding; + set => base.Padding = value; + } + + public void Filter(string searchTerm) => ((SearchContainer>)ListContainer).SearchTerm = searchTerm; + + public BeatmapSetInfo FirstVisibleSet => Items.FirstOrDefault(i => ((DrawablePlaylistItem)ItemMap[i]).MatchingFilter); + + protected override RearrangeableListItem CreateDrawable(BeatmapSetInfo item) => new DrawablePlaylistItem(item) + { + SelectedSet = { BindTarget = SelectedSet }, + RequestSelection = set => RequestSelection?.Invoke(set) + }; + + protected override ScrollContainer CreateScrollContainer() => new OsuScrollContainer(); + + protected override FillFlowContainer> CreateListFillFlowContainer() => new SearchContainer> + { + Spacing = new Vector2(0, 3), + LayoutDuration = 200, + LayoutEasing = Easing.OutQuint, + }; + } +} diff --git a/osu.Game/Overlays/Music/PlaylistItem.cs b/osu.Game/Overlays/Music/PlaylistItem.cs deleted file mode 100644 index d40f391982..0000000000 --- a/osu.Game/Overlays/Music/PlaylistItem.cs +++ /dev/null @@ -1,183 +0,0 @@ -// 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 System.Linq; -using osuTK.Graphics; -using osu.Framework.Allocation; -using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Sprites; -using osu.Framework.Input.Events; -using osu.Framework.Localisation; -using osu.Game.Beatmaps; -using osu.Game.Graphics; -using osu.Game.Graphics.Containers; -using osuTK; - -namespace osu.Game.Overlays.Music -{ - public class PlaylistItem : Container, IFilterable, IDraggable - { - private const float fade_duration = 100; - - private Color4 hoverColour; - private Color4 artistColour; - - private SpriteIcon handle; - private TextFlowContainer text; - private IEnumerable titleSprites; - private ILocalisedBindableString titleBind; - private ILocalisedBindableString artistBind; - - public readonly BeatmapSetInfo BeatmapSetInfo; - - public Action OnSelect; - - public bool IsDraggable { get; private set; } - - protected override bool OnMouseDown(MouseDownEvent e) - { - IsDraggable = handle.IsHovered; - return base.OnMouseDown(e); - } - - protected override void OnMouseUp(MouseUpEvent e) - { - IsDraggable = false; - base.OnMouseUp(e); - } - - private bool selected; - - public bool Selected - { - get => selected; - set - { - if (value == selected) return; - - selected = value; - - FinishTransforms(true); - foreach (Drawable s in titleSprites) - s.FadeColour(Selected ? hoverColour : Color4.White, fade_duration); - } - } - - public PlaylistItem(BeatmapSetInfo setInfo) - { - BeatmapSetInfo = setInfo; - - RelativeSizeAxes = Axes.X; - AutoSizeAxes = Axes.Y; - Padding = new MarginPadding { Top = 3, Bottom = 3 }; - } - - [BackgroundDependencyLoader] - private void load(OsuColour colours, LocalisationManager localisation) - { - hoverColour = colours.Yellow; - artistColour = colours.Gray9; - - var metadata = BeatmapSetInfo.Metadata; - FilterTerms = metadata.SearchableTerms; - - Children = new Drawable[] - { - handle = new PlaylistItemHandle - { - Colour = colours.Gray5 - }, - text = new OsuTextFlowContainer - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Padding = new MarginPadding { Left = 20 }, - ContentIndent = 10f, - }, - }; - - titleBind = localisation.GetLocalisedString(new LocalisedString((metadata.TitleUnicode, metadata.Title))); - artistBind = localisation.GetLocalisedString(new LocalisedString((metadata.ArtistUnicode, metadata.Artist))); - - artistBind.BindValueChanged(_ => recreateText(), true); - } - - private void recreateText() - { - text.Clear(); - - //space after the title to put a space between the title and artist - titleSprites = text.AddText(titleBind.Value + @" ", sprite => sprite.Font = OsuFont.GetFont(weight: FontWeight.Regular)).OfType(); - - text.AddText(artistBind.Value, sprite => - { - sprite.Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold); - sprite.Colour = artistColour; - sprite.Padding = new MarginPadding { Top = 1 }; - }); - } - - protected override bool OnHover(HoverEvent e) - { - handle.FadeIn(fade_duration); - - return base.OnHover(e); - } - - protected override void OnHoverLost(HoverLostEvent e) - { - handle.FadeOut(fade_duration); - } - - protected override bool OnClick(ClickEvent e) - { - OnSelect?.Invoke(BeatmapSetInfo); - return true; - } - - public IEnumerable FilterTerms { get; private set; } - - private bool matching = true; - - public bool MatchingFilter - { - get => matching; - set - { - if (matching == value) return; - - matching = value; - - this.FadeTo(matching ? 1 : 0, 200); - } - } - - public bool FilteringActive { get; set; } - - private class PlaylistItemHandle : SpriteIcon - { - public PlaylistItemHandle() - { - Anchor = Anchor.CentreLeft; - Origin = Anchor.CentreLeft; - Size = new Vector2(12); - Icon = FontAwesome.Solid.Bars; - Alpha = 0f; - Margin = new MarginPadding { Left = 5 }; - } - - public override bool HandlePositionalInput => IsPresent; - } - } - - public interface IDraggable : IDrawable - { - /// - /// Whether this can be dragged in its current state. - /// - bool IsDraggable { get; } - } -} diff --git a/osu.Game/Overlays/Music/PlaylistOverlay.cs b/osu.Game/Overlays/Music/PlaylistOverlay.cs index a814712907..7c391e27f9 100644 --- a/osu.Game/Overlays/Music/PlaylistOverlay.cs +++ b/osu.Game/Overlays/Music/PlaylistOverlay.cs @@ -29,7 +29,7 @@ namespace osu.Game.Overlays.Music private BeatmapManager beatmaps; private FilterControl filter; - private PlaylistList list; + private Playlist list; [BackgroundDependencyLoader] private void load(OsuColour colours, Bindable beatmap, BeatmapManager beatmaps) @@ -57,7 +57,7 @@ namespace osu.Game.Overlays.Music Colour = colours.Gray3, RelativeSizeAxes = Axes.Both, }, - list = new PlaylistList + list = new Playlist { RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { Top = 95, Bottom = 10, Right = 10 }, From 0c4540b551138d3ca0676469071c0f0d18315ce5 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 30 Jan 2020 19:23:53 +0900 Subject: [PATCH 1129/1829] Rename PlaylistItem --- osu.Game/Overlays/Music/Playlist.cs | 4 ++-- .../Music/{DrawablePlaylistItem.cs => PlaylistItem.cs} | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) rename osu.Game/Overlays/Music/{DrawablePlaylistItem.cs => PlaylistItem.cs} (97%) diff --git a/osu.Game/Overlays/Music/Playlist.cs b/osu.Game/Overlays/Music/Playlist.cs index ba9aaf03d4..8744a6db8b 100644 --- a/osu.Game/Overlays/Music/Playlist.cs +++ b/osu.Game/Overlays/Music/Playlist.cs @@ -26,9 +26,9 @@ namespace osu.Game.Overlays.Music public void Filter(string searchTerm) => ((SearchContainer>)ListContainer).SearchTerm = searchTerm; - public BeatmapSetInfo FirstVisibleSet => Items.FirstOrDefault(i => ((DrawablePlaylistItem)ItemMap[i]).MatchingFilter); + public BeatmapSetInfo FirstVisibleSet => Items.FirstOrDefault(i => ((PlaylistItem)ItemMap[i]).MatchingFilter); - protected override RearrangeableListItem CreateDrawable(BeatmapSetInfo item) => new DrawablePlaylistItem(item) + protected override RearrangeableListItem CreateDrawable(BeatmapSetInfo item) => new PlaylistItem(item) { SelectedSet = { BindTarget = SelectedSet }, RequestSelection = set => RequestSelection?.Invoke(set) diff --git a/osu.Game/Overlays/Music/DrawablePlaylistItem.cs b/osu.Game/Overlays/Music/PlaylistItem.cs similarity index 97% rename from osu.Game/Overlays/Music/DrawablePlaylistItem.cs rename to osu.Game/Overlays/Music/PlaylistItem.cs index e3dd72ae8b..4ce67c2d66 100644 --- a/osu.Game/Overlays/Music/DrawablePlaylistItem.cs +++ b/osu.Game/Overlays/Music/PlaylistItem.cs @@ -19,7 +19,7 @@ using osuTK.Graphics; namespace osu.Game.Overlays.Music { - public class DrawablePlaylistItem : RearrangeableListItem, IFilterable + public class PlaylistItem : RearrangeableListItem, IFilterable { private const float fade_duration = 100; @@ -35,7 +35,7 @@ namespace osu.Game.Overlays.Music private Color4 hoverColour; private Color4 artistColour; - public DrawablePlaylistItem(BeatmapSetInfo item) + public PlaylistItem(BeatmapSetInfo item) : base(item) { RelativeSizeAxes = Axes.X; From 8e966624e02345c593501f69cabd8c78b34ec384 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 30 Jan 2020 19:55:25 +0900 Subject: [PATCH 1130/1829] Fix regressing tests --- .../Visual/UserInterface/TestSceneModSelectOverlay.cs | 1 + .../Visual/UserInterface/TestSceneModSettings.cs | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs index 12ee4ceb2e..cd0ce26ea5 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs @@ -63,6 +63,7 @@ namespace osu.Game.Tests.Visual.UserInterface RelativeSizeAxes = Axes.X, Origin = Anchor.BottomCentre, Anchor = Anchor.BottomCentre, + SelectedMods = { BindTarget = SelectedMods } }, modDisplay = new ModDisplay diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs index e2ce2341e5..a89b4f5ba9 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs @@ -27,6 +27,13 @@ namespace osu.Game.Tests.Visual.UserInterface private readonly Mod testCustomisableAutoOpenMod = new TestModCustomisable2(); + [SetUp] + public void SetUp() => Schedule(() => + { + SelectedMods.Value = Array.Empty(); + Ruleset.Value = new TestRulesetInfo(); + }); + [Test] public void TestButtonShowsOnCustomisableMod() { @@ -70,13 +77,12 @@ namespace osu.Game.Tests.Visual.UserInterface { AddStep("create mod select", () => { - Ruleset.Value = new TestRulesetInfo(); - Child = modSelect = new TestModSelectOverlay { RelativeSizeAxes = Axes.X, Origin = Anchor.BottomCentre, Anchor = Anchor.BottomCentre, + SelectedMods = { BindTarget = SelectedMods } }; }); } From 3f62c40e709bd1ac2d66abe6f33578fa99ed8aec Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 30 Jan 2020 13:55:50 +0300 Subject: [PATCH 1131/1829] Increase spacing --- .../Profile/Sections/Recent/PaginatedRecentActivityContainer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Profile/Sections/Recent/PaginatedRecentActivityContainer.cs b/osu.Game/Overlays/Profile/Sections/Recent/PaginatedRecentActivityContainer.cs index 7a9cce4675..a37f398272 100644 --- a/osu.Game/Overlays/Profile/Sections/Recent/PaginatedRecentActivityContainer.cs +++ b/osu.Game/Overlays/Profile/Sections/Recent/PaginatedRecentActivityContainer.cs @@ -18,7 +18,7 @@ namespace osu.Game.Overlays.Profile.Sections.Recent : base(user, header, missing) { ItemsPerPage = 10; - ItemsContainer.Spacing = new Vector2(0, 5); + ItemsContainer.Spacing = new Vector2(0, 8); } protected override APIRequest> CreateRequest() => From 3002366e70281b1bc600c741239a529b114ae9f1 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 30 Jan 2020 13:56:19 +0300 Subject: [PATCH 1132/1829] Adjust mode part --- .../Requests/Responses/APIRecentActivity.cs | 31 ++++++++++++++++++- .../Sections/Recent/DrawableRecentActivity.cs | 4 +-- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/osu.Game/Online/API/Requests/Responses/APIRecentActivity.cs b/osu.Game/Online/API/Requests/Responses/APIRecentActivity.cs index 8695d09570..92b520c36b 100644 --- a/osu.Game/Online/API/Requests/Responses/APIRecentActivity.cs +++ b/osu.Game/Online/API/Requests/Responses/APIRecentActivity.cs @@ -41,8 +41,37 @@ namespace osu.Game.Online.API.Requests.Responses [JsonProperty("count")] public int Count; + public string Mode { get; private set; } + [JsonProperty("mode")] - public string Mode; + private string mode + { + set + { + switch (value) + { + default: + Mode = value; + return; + + case "osu": + Mode = "osu!"; + return; + + case "mania": + Mode = "osu!mania"; + return; + + case "taiko": + Mode = "osu!taiko"; + return; + + case "fruits": + Mode = "osu!catch"; + return; + } + } + } [JsonProperty("beatmap")] public RecentActivityBeatmap Beatmap; diff --git a/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs b/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs index d5bdcffeef..3f8ab93abd 100644 --- a/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs +++ b/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs @@ -185,14 +185,14 @@ namespace osu.Game.Overlays.Profile.Sections.Recent addUserLink(); addText($" achieved rank #{activity.Rank} on "); addBeatmapLink(); - addText($" ({activity.Mode}!)"); + addText($" ({activity.Mode})"); break; case RecentActivityType.RankLost: addUserLink(); addText(" has lost first place on "); addBeatmapLink(); - addText($" ({activity.Mode}!)"); + addText($" ({activity.Mode})"); break; case RecentActivityType.UserSupportAgain: From 3db4c11f29979057147f0e3589ed3009e917ec13 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 30 Jan 2020 14:05:55 +0300 Subject: [PATCH 1133/1829] CI fix --- osu.Game/Online/API/Requests/Responses/APIRecentActivity.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Online/API/Requests/Responses/APIRecentActivity.cs b/osu.Game/Online/API/Requests/Responses/APIRecentActivity.cs index 92b520c36b..b416085217 100644 --- a/osu.Game/Online/API/Requests/Responses/APIRecentActivity.cs +++ b/osu.Game/Online/API/Requests/Responses/APIRecentActivity.cs @@ -41,7 +41,7 @@ namespace osu.Game.Online.API.Requests.Responses [JsonProperty("count")] public int Count; - public string Mode { get; private set; } + public string Mode; [JsonProperty("mode")] private string mode From 878250056c1dc4096c76c8ace223a6cc202f6787 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 30 Jan 2020 23:34:04 +0900 Subject: [PATCH 1134/1829] Remove unused parameter --- osu.Game/OsuGame.cs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index 374bacde00..321cb25088 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -327,7 +327,7 @@ namespace osu.Game return; } - performFromScreen(screen => + PerformFromScreen(screen => { // we might already be at song select, so a check is required before performing the load to solo. if (screen is MainMenu) @@ -344,7 +344,7 @@ namespace osu.Game Ruleset.Value = first.Ruleset; Beatmap.Value = BeatmapManager.GetWorkingBeatmap(first); - }, $"load {beatmap}", validScreens: new[] { typeof(PlaySongSelect) }); + }, validScreens: new[] { typeof(PlaySongSelect) }); } /// @@ -381,12 +381,12 @@ namespace osu.Game return; } - performFromScreen(screen => + PerformFromScreen(screen => { Beatmap.Value = BeatmapManager.GetWorkingBeatmap(databasedBeatmap); screen.Push(new ReplayPlayerLoader(databasedScore)); - }, $"watch {databasedScoreInfo}"); + }); } protected virtual Loader CreateLoader() => new Loader(); @@ -445,9 +445,8 @@ namespace osu.Game /// Eagerly tries to exit the current screen until it succeeds. /// /// The action to perform once we are in the correct state. - /// The task name to display in a notification (if we can't immediately reach the main menu state). /// An optional collection of valid screen types. If any of these screens are already current we can immediately perform the action immediately, else the first valid parent will be made current before performing the action. is used if not specified. - private void performFromScreen(Action action, string taskName, IEnumerable validScreens = null) + protected void PerformFromScreen(Action action, IEnumerable validScreens = null) { performFromMainMenuTask?.Cancel(); @@ -477,7 +476,7 @@ namespace osu.Game screen = screen.GetParentScreen(); } - performFromMainMenuTask = Schedule(() => performFromScreen(action, taskName, validScreens)); + performFromMainMenuTask = Schedule(() => PerformFromScreen(action, validScreens)); } /// From 6b24b7687f68137c6dfca6fdb10b7121275eba3f Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 30 Jan 2020 23:45:15 +0900 Subject: [PATCH 1135/1829] Add test coverage --- .../Visual/Navigation/OsuGameTestScene.cs | 11 +++ .../Navigation/TestScenePerformFromScreen.cs | 72 +++++++++++++++++++ .../Navigation/TestSceneScreenNavigation.cs | 19 ++--- 3 files changed, 88 insertions(+), 14 deletions(-) create mode 100644 osu.Game.Tests/Visual/Navigation/TestScenePerformFromScreen.cs diff --git a/osu.Game.Tests/Visual/Navigation/OsuGameTestScene.cs b/osu.Game.Tests/Visual/Navigation/OsuGameTestScene.cs index 662d9977ba..8d2e4a614d 100644 --- a/osu.Game.Tests/Visual/Navigation/OsuGameTestScene.cs +++ b/osu.Game.Tests/Visual/Navigation/OsuGameTestScene.cs @@ -1,6 +1,8 @@ // 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.Framework.Bindables; using osu.Framework.Configuration; @@ -76,6 +78,13 @@ namespace osu.Game.Tests.Visual.Navigation ConfirmAtMainMenu(); } + protected void PushAndConfirm(Func newScreen) + { + Screen screen = null; + AddStep("Push new screen", () => Game.ScreenStack.Push(screen = newScreen())); + AddUntilStep("Wait for new screen", () => Game.ScreenStack.CurrentScreen == screen && screen.IsLoaded); + } + protected void ConfirmAtMainMenu() => AddUntilStep("Wait for main menu", () => Game.ScreenStack.CurrentScreen is MainMenu menu && menu.IsLoaded); public class TestOsuGame : OsuGame @@ -96,6 +105,8 @@ namespace osu.Game.Tests.Visual.Navigation protected override Loader CreateLoader() => new TestLoader(); + public new void PerformFromScreen(Action action, IEnumerable validScreens = null) => base.PerformFromScreen(action, validScreens); + public TestOsuGame(Storage storage, IAPIProvider api) { Storage = storage; diff --git a/osu.Game.Tests/Visual/Navigation/TestScenePerformFromScreen.cs b/osu.Game.Tests/Visual/Navigation/TestScenePerformFromScreen.cs new file mode 100644 index 0000000000..75c6a2b733 --- /dev/null +++ b/osu.Game.Tests/Visual/Navigation/TestScenePerformFromScreen.cs @@ -0,0 +1,72 @@ +// 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.Screens.Menu; +using osu.Game.Screens.Play; +using osu.Game.Screens.Select; + +namespace osu.Game.Tests.Visual.Navigation +{ + public class TestScenePerformFromScreen : OsuGameTestScene + { + [Test] + public void TestPerformAtMenu() + { + AddAssert("could perform immediately", () => + { + bool actionPerformed = false; + Game.PerformFromScreen(_ => actionPerformed = true); + return actionPerformed; + }); + } + + [Test] + public void TestPerformAtSongSelect() + { + PushAndConfirm(() => new PlaySongSelect()); + + AddAssert("could perform immediately", () => + { + bool actionPerformed = false; + Game.PerformFromScreen(_ => actionPerformed = true, new[] { typeof(PlaySongSelect) }); + return actionPerformed; + }); + } + + [Test] + public void TestPerformAtMenuFromSongSelect() + { + PushAndConfirm(() => new PlaySongSelect()); + + bool actionPerformed = false; + AddStep("try to perform", () => Game.PerformFromScreen(_ => actionPerformed = true)); + AddUntilStep("returned to menu", () => Game.ScreenStack.CurrentScreen is MainMenu); + AddAssert("did perform", () => actionPerformed); + } + + [Test] + public void TestPerformAtSongSelectFromPlayerLoader() + { + PushAndConfirm(() => new PlaySongSelect()); + PushAndConfirm(() => new PlayerLoader(() => new Player())); + + bool actionPerformed = false; + AddStep("try to perform", () => Game.PerformFromScreen(_ => actionPerformed = true, new[] { typeof(PlaySongSelect) })); + AddUntilStep("returned to song select", () => Game.ScreenStack.CurrentScreen is PlaySongSelect); + AddAssert("did perform", () => actionPerformed); + } + + [Test] + public void TestPerformAtMenuFromPlayerLoader() + { + PushAndConfirm(() => new PlaySongSelect()); + PushAndConfirm(() => new PlayerLoader(() => new Player())); + + bool actionPerformed = false; + AddStep("try to perform", () => Game.PerformFromScreen(_ => actionPerformed = true)); + AddUntilStep("returned to song select", () => Game.ScreenStack.CurrentScreen is MainMenu); + AddAssert("did perform", () => actionPerformed); + } + } +} diff --git a/osu.Game.Tests/Visual/Navigation/TestSceneScreenNavigation.cs b/osu.Game.Tests/Visual/Navigation/TestSceneScreenNavigation.cs index d706d47384..8258cc9465 100644 --- a/osu.Game.Tests/Visual/Navigation/TestSceneScreenNavigation.cs +++ b/osu.Game.Tests/Visual/Navigation/TestSceneScreenNavigation.cs @@ -1,13 +1,11 @@ // 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.Allocation; using osu.Framework.Audio.Track; using osu.Framework.Graphics.Containers; -using osu.Framework.Screens; using osu.Game.Beatmaps; using osu.Game.Overlays; using osu.Game.Overlays.Mods; @@ -32,7 +30,7 @@ namespace osu.Game.Tests.Visual.Navigation { TestSongSelect songSelect = null; - pushAndConfirm(() => songSelect = new TestSongSelect()); + PushAndConfirm(() => songSelect = new TestSongSelect()); AddStep("Show mods overlay", () => songSelect.ModSelectOverlay.Show()); AddAssert("Overlay was shown", () => songSelect.ModSelectOverlay.State.Value == Visibility.Visible); pushEscape(); @@ -49,7 +47,7 @@ namespace osu.Game.Tests.Visual.Navigation WorkingBeatmap beatmap() => Game.Beatmap.Value; Track track() => beatmap().Track; - pushAndConfirm(() => new TestSongSelect()); + PushAndConfirm(() => new TestSongSelect()); AddStep("import beatmap", () => ImportBeatmapTest.LoadOszIntoOsu(Game, virtualTrack: true).Wait()); @@ -77,7 +75,7 @@ namespace osu.Game.Tests.Visual.Navigation { TestSongSelect songSelect = null; - pushAndConfirm(() => songSelect = new TestSongSelect()); + PushAndConfirm(() => songSelect = new TestSongSelect()); AddStep("Show mods overlay", () => songSelect.ModSelectOverlay.Show()); AddAssert("Overlay was shown", () => songSelect.ModSelectOverlay.State.Value == Visibility.Visible); AddStep("Move mouse to backButton", () => InputManager.MoveMouseTo(backButtonPosition)); @@ -93,14 +91,14 @@ namespace osu.Game.Tests.Visual.Navigation [Test] public void TestExitMultiWithEscape() { - pushAndConfirm(() => new Screens.Multi.Multiplayer()); + PushAndConfirm(() => new Screens.Multi.Multiplayer()); exitViaEscapeAndConfirm(); } [Test] public void TestExitMultiWithBackButton() { - pushAndConfirm(() => new Screens.Multi.Multiplayer()); + PushAndConfirm(() => new Screens.Multi.Multiplayer()); exitViaBackButtonAndConfirm(); } @@ -116,13 +114,6 @@ namespace osu.Game.Tests.Visual.Navigation AddAssert("Options overlay was closed", () => Game.Settings.State.Value == Visibility.Hidden); } - private void pushAndConfirm(Func newScreen) - { - Screen screen = null; - AddStep("Push new screen", () => Game.ScreenStack.Push(screen = newScreen())); - AddUntilStep("Wait for new screen", () => Game.ScreenStack.CurrentScreen == screen && screen.IsLoaded); - } - private void pushEscape() => AddStep("Press escape", () => pressAndRelease(Key.Escape)); From f51cfa22204c3b4da2ebbd3eb3d32912f11d576f Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 31 Jan 2020 00:24:00 +0900 Subject: [PATCH 1136/1829] Fix too many ticks being displayed on beatmaps with multiple timing sections Closes https://github.com/ppy/osu/issues/7681. --- .../Edit/Compose/Components/Timeline/TimelineTickDisplay.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineTickDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineTickDisplay.cs index f9b92c0504..b565a42c5a 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineTickDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineTickDisplay.cs @@ -44,7 +44,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline for (var i = 0; i < beatmap.ControlPointInfo.TimingPoints.Count; i++) { var point = beatmap.ControlPointInfo.TimingPoints[i]; - var until = beatmap.ControlPointInfo.TimingPoints.Count < i + 1 ? beatmap.ControlPointInfo.TimingPoints[i + 1].Time : working.Value.Track.Length; + var until = beatmap.ControlPointInfo.TimingPoints.Count > i + 1 ? beatmap.ControlPointInfo.TimingPoints[i + 1].Time : working.Value.Track.Length; int beat = 0; From 40a44357925e9e0479aaf8b315935655e12605eb Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 31 Jan 2020 00:33:24 +0900 Subject: [PATCH 1137/1829] Fix chat test intermittently failing Was throwing exception instead of returning false due to LINQ Single() call. --- osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs b/osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs index 29bda524e8..1561d0d11d 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs @@ -104,7 +104,11 @@ namespace osu.Game.Tests.Visual.Online public void TestSearchInSelector() { AddStep("search for 'test2'", () => chatOverlay.ChildrenOfType().First().Text = "test2"); - AddUntilStep("only channel 2 visible", () => chatOverlay.ChildrenOfType().Single(c => c.IsPresent).Channel == channel2); + AddUntilStep("only channel 2 visible", () => + { + var listItems = chatOverlay.ChildrenOfType().Where(c => c.IsPresent); + return listItems.Count() == 1 && listItems.Single().Channel == channel2; + }); } private void clickDrawable(Drawable d) From 682d0e6e712984007307e0d3679d23f53da0860b Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Thu, 30 Jan 2020 17:46:59 +0100 Subject: [PATCH 1138/1829] Fix typo in variable --- .../Overlays/Profile/Header/BottomHeaderContainer.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs b/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs index b6c6f33678..aa8b332bd3 100644 --- a/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs +++ b/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs @@ -111,14 +111,14 @@ namespace osu.Game.Overlays.Profile.Header topLinkContainer.AddText("Contributed "); topLinkContainer.AddLink($@"{user.PostCount:#,##0} forum posts", $"https://osu.ppy.sh/users/{user.Id}/posts", creationParameters: embolden); - string websiteWithoutProtcol = user.Website; + string websiteWithoutProtocol = user.Website; - if (!string.IsNullOrEmpty(websiteWithoutProtcol)) + if (!string.IsNullOrEmpty(websiteWithoutProtocol)) { - if (Uri.TryCreate(websiteWithoutProtcol, UriKind.Absolute, out var uri)) + if (Uri.TryCreate(websiteWithoutProtocol, UriKind.Absolute, out var uri)) { - websiteWithoutProtcol = uri.Host + uri.PathAndQuery + uri.Fragment; - websiteWithoutProtcol = websiteWithoutProtcol.TrimEnd('/'); + websiteWithoutProtocol = uri.Host + uri.PathAndQuery + uri.Fragment; + websiteWithoutProtocol = websiteWithoutProtocol.TrimEnd('/'); } } @@ -131,7 +131,7 @@ namespace osu.Game.Overlays.Profile.Header tryAddInfo(FontAwesome.Brands.Discord, user.Discord); tryAddInfo(FontAwesome.Brands.Skype, user.Skype, @"skype:" + user.Skype + @"?chat"); tryAddInfo(FontAwesome.Brands.Lastfm, user.Lastfm, $@"https://last.fm/users/{user.Lastfm}"); - tryAddInfo(FontAwesome.Solid.Link, websiteWithoutProtcol, user.Website); + tryAddInfo(FontAwesome.Solid.Link, websiteWithoutProtocol, user.Website); } private void addSpacer(OsuTextFlowContainer textFlow) => textFlow.AddArbitraryDrawable(new Container { Width = 15 }); From 754200d84358b740f80c744be45018d6968a32f6 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Thu, 30 Jan 2020 18:10:40 +0100 Subject: [PATCH 1139/1829] Fix padding when user has no additional info --- osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs b/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs index aa8b332bd3..7531cab024 100644 --- a/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs +++ b/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs @@ -132,6 +132,10 @@ namespace osu.Game.Overlays.Profile.Header tryAddInfo(FontAwesome.Brands.Skype, user.Skype, @"skype:" + user.Skype + @"?chat"); tryAddInfo(FontAwesome.Brands.Lastfm, user.Lastfm, $@"https://last.fm/users/{user.Lastfm}"); tryAddInfo(FontAwesome.Solid.Link, websiteWithoutProtocol, user.Website); + + // Hide the container to prevent adding unnecessary padding if it has no children other than the NewLine + if (!bottomLinkContainer.Children.Skip(1).Any()) + bottomLinkContainer.Hide(); } private void addSpacer(OsuTextFlowContainer textFlow) => textFlow.AddArbitraryDrawable(new Container { Width = 15 }); From de9a1737a5f04800c5c1ee2f1dbb9c23a9ffa226 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Thu, 30 Jan 2020 18:18:42 +0100 Subject: [PATCH 1140/1829] Recolour LevelProgressBar --- .../Overlays/Profile/Header/Components/LevelProgressBar.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Profile/Header/Components/LevelProgressBar.cs b/osu.Game/Overlays/Profile/Header/Components/LevelProgressBar.cs index a73ce56a2b..c97df3bc4d 100644 --- a/osu.Game/Overlays/Profile/Header/Components/LevelProgressBar.cs +++ b/osu.Game/Overlays/Profile/Header/Components/LevelProgressBar.cs @@ -29,7 +29,7 @@ namespace osu.Game.Overlays.Profile.Header.Components } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { InternalChildren = new Drawable[] { @@ -42,7 +42,7 @@ namespace osu.Game.Overlays.Profile.Header.Components RelativeSizeAxes = Axes.Both, BackgroundColour = Color4.Black, Direction = BarDirection.LeftToRight, - AccentColour = colours.Yellow + AccentColour = colourProvider.Highlight1 } }, levelProgressText = new OsuSpriteText From e69d93ae5c01b90d0a5d6fea4c0aa58bd4f86e2e Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Thu, 30 Jan 2020 19:26:42 +0100 Subject: [PATCH 1141/1829] Adjust ProfileTabControl height --- osu.Game/Overlays/UserProfileOverlay.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/UserProfileOverlay.cs b/osu.Game/Overlays/UserProfileOverlay.cs index 6f0d96c226..045a52a0c7 100644 --- a/osu.Game/Overlays/UserProfileOverlay.cs +++ b/osu.Game/Overlays/UserProfileOverlay.cs @@ -67,7 +67,7 @@ namespace osu.Game.Overlays RelativeSizeAxes = Axes.X, Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, - Height = 30 + Height = 34 }; Add(new Box From 1751e96840e345d6c51b95eec54dd9f692052807 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Thu, 30 Jan 2020 19:45:12 +0100 Subject: [PATCH 1142/1829] Recolour ProfileHeaderButton --- .../Profile/Header/Components/ProfileHeaderButton.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/Profile/Header/Components/ProfileHeaderButton.cs b/osu.Game/Overlays/Profile/Header/Components/ProfileHeaderButton.cs index ddcf011277..ae94f3485f 100644 --- a/osu.Game/Overlays/Profile/Header/Components/ProfileHeaderButton.cs +++ b/osu.Game/Overlays/Profile/Header/Components/ProfileHeaderButton.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System.Collections.Generic; +using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; @@ -24,9 +25,6 @@ namespace osu.Game.Overlays.Profile.Header.Components { AutoSizeAxes = Axes.X; - IdleColour = Color4.Black; - HoverColour = OsuColour.Gray(0.1f); - base.Content.Add(new CircularContainer { Masking = true, @@ -47,5 +45,12 @@ namespace osu.Game.Overlays.Profile.Header.Components } }); } + + [BackgroundDependencyLoader] + private void load(OverlayColourProvider colourProvider) + { + IdleColour = colourProvider.Background6; + HoverColour = colourProvider.Background5; + } } } From 3970151e31bbc571fbee4b3fe4f7fc159488827f Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Thu, 30 Jan 2020 20:51:33 +0100 Subject: [PATCH 1143/1829] Improve condition check --- osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs b/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs index 7531cab024..86e816a28c 100644 --- a/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs +++ b/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs @@ -15,6 +15,7 @@ using osu.Game.Graphics.Containers; using osu.Game.Users; using osuTK; using osuTK.Graphics; +using static osu.Framework.Graphics.Containers.TextFlowContainer; namespace osu.Game.Overlays.Profile.Header { @@ -133,9 +134,12 @@ namespace osu.Game.Overlays.Profile.Header tryAddInfo(FontAwesome.Brands.Lastfm, user.Lastfm, $@"https://last.fm/users/{user.Lastfm}"); tryAddInfo(FontAwesome.Solid.Link, websiteWithoutProtocol, user.Website); - // Hide the container to prevent adding unnecessary padding if it has no children other than the NewLine - if (!bottomLinkContainer.Children.Skip(1).Any()) + // Hide the container to prevent adding unnecessary padding if it has no children other than the NewLineContainer + if (!bottomLinkContainer.Children.Any(child => !(child is NewLineContainer))) bottomLinkContainer.Hide(); + else + // this is needed if user gets changed without the whole header being reloaded + bottomLinkContainer.Show(); } private void addSpacer(OsuTextFlowContainer textFlow) => textFlow.AddArbitraryDrawable(new Container { Width = 15 }); From a3877cc29e549999d82bd8e45c2de37e50b2c83d Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Thu, 30 Jan 2020 20:55:44 +0100 Subject: [PATCH 1144/1829] Recolour RankGraph circle --- osu.Game/Overlays/Profile/Header/Components/RankGraph.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Profile/Header/Components/RankGraph.cs b/osu.Game/Overlays/Profile/Header/Components/RankGraph.cs index 250b345db7..aed63293ea 100644 --- a/osu.Game/Overlays/Profile/Header/Components/RankGraph.cs +++ b/osu.Game/Overlays/Profile/Header/Components/RankGraph.cs @@ -167,9 +167,9 @@ namespace osu.Game.Overlays.Profile.Header.Components } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider, OsuColour colours) { - ballBg.Colour = colours.GreySeafoamDarker; + ballBg.Colour = colourProvider.Background5; movingBall.BorderColour = line.Colour = colours.Yellow; } From fcd05b5a3c1ddd70a0afcd314fa732d2d481bf76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Thu, 30 Jan 2020 21:17:46 +0100 Subject: [PATCH 1145/1829] Add failing test --- .../Visual/Online/TestSceneChatOverlay.cs | 52 +++++++++++++++++-- 1 file changed, 47 insertions(+), 5 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs b/osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs index 1561d0d11d..19bdaff6ff 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs @@ -38,9 +38,21 @@ namespace osu.Game.Tests.Visual.Online private TestChatOverlay chatOverlay; private ChannelManager channelManager; - private readonly Channel channel1 = new Channel(new User()) { Name = "test really long username", Topic = "Topic for channel 1" }; - private readonly Channel channel2 = new Channel(new User()) { Name = "test2", Topic = "Topic for channel 2" }; - private readonly Channel channel3 = new Channel(new User()) { Name = "channel with no topic" }; + private readonly List channels; + + private Channel channel1 => channels[0]; + private Channel channel2 => channels[1]; + + public TestSceneChatOverlay() + { + channels = Enumerable.Range(1, 10) + .Select(index => new Channel(new User()) + { + Name = $"Channel no. {index}", + Topic = index == 3 ? null : $"We talk about the number {index} here" + }) + .ToList(); + } [SetUp] public void Setup() @@ -49,7 +61,7 @@ namespace osu.Game.Tests.Visual.Online { ChannelManagerContainer container; - Child = container = new ChannelManagerContainer(new List { channel1, channel2, channel3 }) + Child = container = new ChannelManagerContainer(channels) { RelativeSizeAxes = Axes.Both, }; @@ -103,7 +115,7 @@ namespace osu.Game.Tests.Visual.Online [Test] public void TestSearchInSelector() { - AddStep("search for 'test2'", () => chatOverlay.ChildrenOfType().First().Text = "test2"); + AddStep("search for 'no. 2'", () => chatOverlay.ChildrenOfType().First().Text = "no. 2"); AddUntilStep("only channel 2 visible", () => { var listItems = chatOverlay.ChildrenOfType().Where(c => c.IsPresent); @@ -111,6 +123,36 @@ namespace osu.Game.Tests.Visual.Online }); } + [Test] + public void TestChannelShortcutKeys() + { + AddStep("join 10 channels", () => channels.ForEach(channel => channelManager.JoinChannel(channel))); + AddStep("close channel selector", () => + { + InputManager.PressKey(Key.Escape); + InputManager.ReleaseKey(Key.Escape); + }); + AddUntilStep("wait for close", () => chatOverlay.SelectionOverlayState == Visibility.Hidden); + + for (int zeroBasedIndex = 0; zeroBasedIndex < 10; ++zeroBasedIndex) + { + var oneBasedIndex = zeroBasedIndex + 1; + var targetNumberKey = oneBasedIndex % 10; + var targetChannel = channels[zeroBasedIndex]; + AddStep($"press Alt+{targetNumberKey}", () => pressChannelHotkey(targetNumberKey)); + AddAssert($"channel #{oneBasedIndex} is selected", () => channelManager.CurrentChannel.Value == targetChannel); + } + } + + private void pressChannelHotkey(int number) + { + var channelKey = Key.Number0 + number; + InputManager.PressKey(Key.AltLeft); + InputManager.PressKey(channelKey); + InputManager.ReleaseKey(Key.AltLeft); + InputManager.ReleaseKey(channelKey); + } + private void clickDrawable(Drawable d) { InputManager.MoveMouseTo(d); From c38dc815351616ff14ce3b7941ab736d9df18c94 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Thu, 30 Jan 2020 21:39:06 +0100 Subject: [PATCH 1146/1829] Remove unnecessary using --- .../Overlays/Profile/Header/Components/ProfileHeaderButton.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/osu.Game/Overlays/Profile/Header/Components/ProfileHeaderButton.cs b/osu.Game/Overlays/Profile/Header/Components/ProfileHeaderButton.cs index ae94f3485f..e14d73dd98 100644 --- a/osu.Game/Overlays/Profile/Header/Components/ProfileHeaderButton.cs +++ b/osu.Game/Overlays/Profile/Header/Components/ProfileHeaderButton.cs @@ -6,9 +6,7 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; -using osu.Game.Graphics; using osu.Game.Graphics.Containers; -using osuTK.Graphics; namespace osu.Game.Overlays.Profile.Header.Components { From 155344400181a321a79cb100a3490c6cc128848a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Thu, 30 Jan 2020 21:44:53 +0100 Subject: [PATCH 1147/1829] Fix channel tab keyboard shortcut Filter out the selector tab item at the point of enumerating tabs to fix the regression of the Alt+number key shortcut. --- osu.Game/Overlays/ChatOverlay.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/ChatOverlay.cs b/osu.Game/Overlays/ChatOverlay.cs index 2c0fa49b5d..9e48ee5041 100644 --- a/osu.Game/Overlays/ChatOverlay.cs +++ b/osu.Game/Overlays/ChatOverlay.cs @@ -321,8 +321,11 @@ namespace osu.Game.Overlays private void selectTab(int index) { - var channel = ChannelTabControl.Items.Skip(index).FirstOrDefault(); - if (channel != null && !(channel is ChannelSelectorTabItem.ChannelSelectorTabChannel)) + var channel = ChannelTabControl.Items + .Where(tab => !(tab is ChannelSelectorTabItem.ChannelSelectorTabChannel)) + .Skip(index) + .FirstOrDefault(); + if (channel != null) ChannelTabControl.Current.Value = channel; } From caf76511a73d8b7b73965bba85b7fa5ebe2ea402 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Thu, 30 Jan 2020 21:45:42 +0100 Subject: [PATCH 1148/1829] Remove double negation --- osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs b/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs index 86e816a28c..469f9caf4a 100644 --- a/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs +++ b/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs @@ -135,7 +135,7 @@ namespace osu.Game.Overlays.Profile.Header tryAddInfo(FontAwesome.Solid.Link, websiteWithoutProtocol, user.Website); // Hide the container to prevent adding unnecessary padding if it has no children other than the NewLineContainer - if (!bottomLinkContainer.Children.Any(child => !(child is NewLineContainer))) + if (bottomLinkContainer.Children.All(child => child is NewLineContainer)) bottomLinkContainer.Hide(); else // this is needed if user gets changed without the whole header being reloaded From c050eed79b08e07087e337ac582da48fae0e4470 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Thu, 30 Jan 2020 22:05:06 +0100 Subject: [PATCH 1149/1829] Recolour RankGraphTooltip --- osu.Game/Overlays/Profile/Header/Components/RankGraph.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Profile/Header/Components/RankGraph.cs b/osu.Game/Overlays/Profile/Header/Components/RankGraph.cs index aed63293ea..a742711d26 100644 --- a/osu.Game/Overlays/Profile/Header/Components/RankGraph.cs +++ b/osu.Game/Overlays/Profile/Header/Components/RankGraph.cs @@ -16,6 +16,7 @@ using osu.Game.Graphics.Sprites; using osu.Game.Graphics.UserInterface; using osu.Game.Users; using osuTK; +using osuTK.Graphics; namespace osu.Game.Overlays.Profile.Header.Components { @@ -270,7 +271,8 @@ namespace osu.Game.Overlays.Profile.Header.Components [BackgroundDependencyLoader] private void load(OsuColour colours) { - background.Colour = colours.GreySeafoamDark; + // To match osu-web, background and text should both be coloured using OverlayColourProvider + background.Colour = colours.Gray1; } public bool SetContent(object content) From b03e7f12ff0e22b0b7c0279bd27ac75fc79b0bcf Mon Sep 17 00:00:00 2001 From: Tree Date: Thu, 30 Jan 2020 22:51:35 +0100 Subject: [PATCH 1150/1829] Remove unused directive --- osu.Game/Overlays/Profile/Header/Components/RankGraph.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Overlays/Profile/Header/Components/RankGraph.cs b/osu.Game/Overlays/Profile/Header/Components/RankGraph.cs index a742711d26..83c6d80dae 100644 --- a/osu.Game/Overlays/Profile/Header/Components/RankGraph.cs +++ b/osu.Game/Overlays/Profile/Header/Components/RankGraph.cs @@ -16,7 +16,6 @@ using osu.Game.Graphics.Sprites; using osu.Game.Graphics.UserInterface; using osu.Game.Users; using osuTK; -using osuTK.Graphics; namespace osu.Game.Overlays.Profile.Header.Components { From 9a1907d8e07fe2a3bfa92d71dbe8a4912ebbea1a Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 31 Jan 2020 09:48:20 +0900 Subject: [PATCH 1151/1829] Apply doc fixes from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Bartłomiej Dach --- osu.Game/OsuGame.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index 321cb25088..fb3ce00824 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -441,11 +441,11 @@ namespace osu.Game private ScheduledDelegate performFromMainMenuTask; /// - /// Perform an action only after returning to a specific screen specification. + /// Perform an action only after returning to a specific screen as indicated by . /// Eagerly tries to exit the current screen until it succeeds. /// /// The action to perform once we are in the correct state. - /// An optional collection of valid screen types. If any of these screens are already current we can immediately perform the action immediately, else the first valid parent will be made current before performing the action. is used if not specified. + /// An optional collection of valid screen types. If any of these screens are already current we can perform the action immediately, else the first valid parent will be made current before performing the action. is used if not specified. protected void PerformFromScreen(Action action, IEnumerable validScreens = null) { performFromMainMenuTask?.Cancel(); From 5f48affcbaa3d8a9a36bb44474fbc0fb616ee296 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 31 Jan 2020 13:54:26 +0900 Subject: [PATCH 1152/1829] Centralise screen exit logic to ScreenTestScene --- .../Gameplay/TestSceneAllRulesetPlayers.cs | 57 ++++++++++++------- .../Visual/Gameplay/TestSceneAutoplay.cs | 2 +- .../Visual/Gameplay/TestSceneFailAnimation.cs | 4 +- .../Visual/Gameplay/TestSceneFailJudgement.cs | 2 +- .../Visual/Gameplay/TestScenePause.cs | 1 + .../TestScenePlayerReferenceLeaking.cs | 2 +- .../Visual/Gameplay/TestSceneReplay.cs | 2 +- .../SongSelect/TestScenePlaySongSelect.cs | 27 ++++----- osu.Game/Screens/Play/Player.cs | 2 + osu.Game/Tests/Visual/PlayerTestScene.cs | 4 +- osu.Game/Tests/Visual/ScreenTestScene.cs | 20 ++++++- 11 files changed, 76 insertions(+), 47 deletions(-) rename osu.Game/Tests/Visual/AllPlayersTestScene.cs => osu.Game.Tests/Visual/Gameplay/TestSceneAllRulesetPlayers.cs (59%) diff --git a/osu.Game/Tests/Visual/AllPlayersTestScene.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneAllRulesetPlayers.cs similarity index 59% rename from osu.Game/Tests/Visual/AllPlayersTestScene.cs rename to osu.Game.Tests/Visual/Gameplay/TestSceneAllRulesetPlayers.cs index dd65c8c382..83a7b896d2 100644 --- a/osu.Game/Tests/Visual/AllPlayersTestScene.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneAllRulesetPlayers.cs @@ -2,49 +2,66 @@ // See the LICENCE file in the repository root for full licence text. using System.Linq; +using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Screens; using osu.Game.Configuration; using osu.Game.Rulesets; +using osu.Game.Rulesets.Catch; +using osu.Game.Rulesets.Mania; using osu.Game.Rulesets.Mods; +using osu.Game.Rulesets.Osu; +using osu.Game.Rulesets.Taiko; using osu.Game.Screens.Play; -namespace osu.Game.Tests.Visual +namespace osu.Game.Tests.Visual.Gameplay { /// /// A base class which runs test for all available rulesets. /// Steps to be run for each ruleset should be added via . /// - public abstract class AllPlayersTestScene : RateAdjustedBeatmapTestScene + public abstract class TestSceneAllRulesetPlayers : RateAdjustedBeatmapTestScene { protected Player Player; [BackgroundDependencyLoader] private void load(RulesetStore rulesets) { - foreach (var r in rulesets.AvailableRulesets) - { - Player p = null; - AddStep(r.Name, () => p = loadPlayerFor(r)); - AddUntilStep("player loaded", () => - { - if (p?.IsLoaded == true) - { - p = null; - return true; - } - - return false; - }); - - AddCheckSteps(); - } - OsuConfigManager manager; Dependencies.Cache(manager = new OsuConfigManager(LocalStorage)); manager.GetBindable(OsuSetting.DimLevel).Value = 1.0; } + [Test] + public void TestOsu() => runForRuleset(new OsuRuleset().RulesetInfo); + + [Test] + public void TestTaiko() => runForRuleset(new TaikoRuleset().RulesetInfo); + + [Test] + public void TestCatch() => runForRuleset(new CatchRuleset().RulesetInfo); + + [Test] + public void TestMania() => runForRuleset(new ManiaRuleset().RulesetInfo); + + private void runForRuleset(RulesetInfo ruleset) + { + Player p = null; + AddStep($"load {ruleset.Name} player", () => p = loadPlayerFor(ruleset)); + AddUntilStep("player loaded", () => + { + if (p?.IsLoaded == true) + { + p = null; + return true; + } + + return false; + }); + + AddCheckSteps(); + } + protected abstract void AddCheckSteps(); private Player loadPlayerFor(RulesetInfo rulesetInfo) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneAutoplay.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneAutoplay.cs index 069b965d9b..4daab8d137 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneAutoplay.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneAutoplay.cs @@ -12,7 +12,7 @@ using osu.Game.Storyboards; namespace osu.Game.Tests.Visual.Gameplay { [Description("Player instantiated with an autoplay mod.")] - public class TestSceneAutoplay : AllPlayersTestScene + public class TestSceneAutoplay : TestSceneAllRulesetPlayers { private ClockBackedTestWorkingBeatmap.TrackVirtualManual track; diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneFailAnimation.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneFailAnimation.cs index 81050b1637..de257c9e53 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneFailAnimation.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneFailAnimation.cs @@ -10,7 +10,7 @@ using osu.Game.Screens.Play; namespace osu.Game.Tests.Visual.Gameplay { - public class TestSceneFailAnimation : AllPlayersTestScene + public class TestSceneFailAnimation : TestSceneAllRulesetPlayers { protected override Player CreatePlayer(Ruleset ruleset) { @@ -20,7 +20,7 @@ namespace osu.Game.Tests.Visual.Gameplay public override IReadOnlyList RequiredTypes => new[] { - typeof(AllPlayersTestScene), + typeof(TestSceneAllRulesetPlayers), typeof(TestPlayer), typeof(Player), }; diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneFailJudgement.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneFailJudgement.cs index 2045072c79..d80efb2c6e 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneFailJudgement.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneFailJudgement.cs @@ -10,7 +10,7 @@ using osu.Game.Screens.Play; namespace osu.Game.Tests.Visual.Gameplay { - public class TestSceneFailJudgement : AllPlayersTestScene + public class TestSceneFailJudgement : TestSceneAllRulesetPlayers { protected override Player CreatePlayer(Ruleset ruleset) { diff --git a/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs b/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs index 1a83e35e4f..ad5bab4681 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs @@ -36,6 +36,7 @@ namespace osu.Game.Tests.Visual.Gameplay public override void SetUpSteps() { base.SetUpSteps(); + AddStep("resume player", () => Player.GameplayClockContainer.Start()); confirmClockRunning(true); } diff --git a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerReferenceLeaking.cs b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerReferenceLeaking.cs index 4d701f56a9..8f767659c6 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerReferenceLeaking.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerReferenceLeaking.cs @@ -10,7 +10,7 @@ using osu.Game.Storyboards; namespace osu.Game.Tests.Visual.Gameplay { - public class TestScenePlayerReferenceLeaking : AllPlayersTestScene + public class TestScenePlayerReferenceLeaking : TestSceneAllRulesetPlayers { private readonly WeakList workingWeakReferences = new WeakList(); diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneReplay.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneReplay.cs index 36335bc54a..e82722e7a2 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneReplay.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneReplay.cs @@ -13,7 +13,7 @@ using osu.Game.Screens.Play; namespace osu.Game.Tests.Visual.Gameplay { [Description("Player instantiated with a replay.")] - public class TestSceneReplay : AllPlayersTestScene + public class TestSceneReplay : TestSceneAllRulesetPlayers { protected override Player CreatePlayer(Ruleset ruleset) { diff --git a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs index fc06780431..189420dcef 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs @@ -79,12 +79,17 @@ namespace osu.Game.Tests.Visual.SongSelect private OsuConfigManager config; - [SetUp] - public virtual void SetUp() => Schedule(() => + [SetUpSteps] + public override void SetUpSteps() { - Ruleset.Value = new OsuRuleset().RulesetInfo; - manager?.Delete(manager.GetAllUsableBeatmapSets()); - }); + base.SetUpSteps(); + + AddStep("delete all beatmaps", () => + { + Ruleset.Value = new OsuRuleset().RulesetInfo; + manager?.Delete(manager.GetAllUsableBeatmapSets()); + }); + } [Test] public void TestSingleFilterOnEnter() @@ -120,9 +125,6 @@ namespace osu.Game.Tests.Visual.SongSelect AddUntilStep("wait for not current", () => !songSelect.IsCurrentScreen()); AddAssert("ensure selection changed", () => selected != Beatmap.Value); - - AddUntilStep("wait for return to song select", () => songSelect.IsCurrentScreen()); - AddUntilStep("bindable lease returned", () => !Beatmap.Disabled); } [Test] @@ -148,9 +150,6 @@ namespace osu.Game.Tests.Visual.SongSelect AddUntilStep("wait for not current", () => !songSelect.IsCurrentScreen()); AddAssert("ensure selection didn't change", () => selected == Beatmap.Value); - - AddUntilStep("wait for return to song select", () => songSelect.IsCurrentScreen()); - AddUntilStep("bindable lease returned", () => !Beatmap.Disabled); } [Test] @@ -180,9 +179,6 @@ namespace osu.Game.Tests.Visual.SongSelect AddUntilStep("wait for not current", () => !songSelect.IsCurrentScreen()); AddAssert("ensure selection changed", () => selected != Beatmap.Value); - - AddUntilStep("wait for return to song select", () => songSelect.IsCurrentScreen()); - AddUntilStep("bindable lease returned", () => !Beatmap.Disabled); } [Test] @@ -213,9 +209,6 @@ namespace osu.Game.Tests.Visual.SongSelect AddUntilStep("wait for not current", () => !songSelect.IsCurrentScreen()); AddAssert("ensure selection didn't change", () => selected == Beatmap.Value); - - AddUntilStep("wait for return to song select", () => songSelect.IsCurrentScreen()); - AddUntilStep("bindable lease returned", () => !Beatmap.Disabled); } [Test] diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index 7228e22382..8a288f8299 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -39,6 +39,8 @@ namespace osu.Game.Screens.Play public override float BackgroundParallaxAmount => 0.1f; + public override bool DisallowExternalBeatmapRulesetChanges => true; + public override bool HideOverlaysOnEnter => true; public override OverlayActivation InitialOverlayActivationMode => OverlayActivation.UserTriggered; diff --git a/osu.Game/Tests/Visual/PlayerTestScene.cs b/osu.Game/Tests/Visual/PlayerTestScene.cs index 3ed65bee61..7c5ba7d30f 100644 --- a/osu.Game/Tests/Visual/PlayerTestScene.cs +++ b/osu.Game/Tests/Visual/PlayerTestScene.cs @@ -33,8 +33,10 @@ namespace osu.Game.Tests.Visual } [SetUpSteps] - public virtual void SetUpSteps() + public override void SetUpSteps() { + base.SetUpSteps(); + AddStep(ruleset.RulesetInfo.Name, loadPlayer); AddUntilStep("player loaded", () => Player.IsLoaded && Player.Alpha == 1); } diff --git a/osu.Game/Tests/Visual/ScreenTestScene.cs b/osu.Game/Tests/Visual/ScreenTestScene.cs index 707aa61283..e501aa33b3 100644 --- a/osu.Game/Tests/Visual/ScreenTestScene.cs +++ b/osu.Game/Tests/Visual/ScreenTestScene.cs @@ -3,6 +3,7 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.Testing; using osu.Game.Screens; namespace osu.Game.Tests.Visual @@ -27,11 +28,24 @@ namespace osu.Game.Tests.Visual }); } - protected void LoadScreen(OsuScreen screen) + protected void LoadScreen(OsuScreen screen) => Stack.Push(screen); + + [SetUpSteps] + public virtual void SetUpSteps() => addExitAllScreensStep(); + + // pending framework update. + //[TearDownSteps] + //public void TearDownSteps() => addExitAllScreensStep(); + + private void addExitAllScreensStep() { - if (Stack.CurrentScreen != null) + AddUntilStep("exit all screens", () => + { + if (Stack.CurrentScreen == null) return true; + Stack.Exit(); - Stack.Push(screen); + return false; + }); } } } From e6783b622d2ab6ba693a956ce2bdebaec12d6e2a Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 31 Jan 2020 14:56:42 +0900 Subject: [PATCH 1153/1829] Fix incorrectly build tests --- osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs index 4676f14655..bbb50c287b 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs @@ -7,12 +7,10 @@ using System.Linq; using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Audio; -using osu.Framework.Graphics; using osu.Framework.IO.Stores; using osu.Framework.Testing; using osu.Game.Beatmaps; using osu.Game.Rulesets.Osu.Objects; -using osu.Game.Screens; using osu.Game.Screens.Play; using osu.Game.Skinning; using osu.Game.Tests.Visual; @@ -21,7 +19,7 @@ using osuTK.Graphics; namespace osu.Game.Rulesets.Osu.Tests { - public class TestSceneLegacyBeatmapSkin : OsuTestScene + public class TestSceneLegacyBeatmapSkin : ScreenTestScene { [Resolved] private AudioManager audio { get; set; } @@ -65,7 +63,8 @@ namespace osu.Game.Rulesets.Osu.Tests ExposedPlayer player; Beatmap.Value = new CustomSkinWorkingBeatmap(audio, beatmapHasColours); - Child = new OsuScreenStack(player = new ExposedPlayer(userHasCustomColours)) { RelativeSizeAxes = Axes.Both }; + + LoadScreen(player = new ExposedPlayer(userHasCustomColours)); return player; } From 97c3ce132bd7febeb1f90d7f533748ab9436236d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 31 Jan 2020 15:01:37 +0900 Subject: [PATCH 1154/1829] Fix incorrect nUnit adapter version causing rider failures --- osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj b/osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj index 1d8c4708c1..9d4e016eae 100644 --- a/osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj +++ b/osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj @@ -4,7 +4,7 @@ - + From 4a444face115c69cb95f8df0e538602a2cb0d94d Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 31 Jan 2020 09:46:35 +0300 Subject: [PATCH 1155/1829] Change ShowMoreButton hide logic --- osu.Game/Overlays/Comments/CommentsContainer.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Comments/CommentsContainer.cs b/osu.Game/Overlays/Comments/CommentsContainer.cs index d174c78666..8761b88b1e 100644 --- a/osu.Game/Overlays/Comments/CommentsContainer.cs +++ b/osu.Game/Overlays/Comments/CommentsContainer.cs @@ -181,10 +181,12 @@ namespace osu.Game.Overlays.Comments moreButton.Current.Value = response.TopLevelCount - loadedTopLevelComments; moreButton.IsLoading = false; } + else + { + moreButton.Hide(); + } commentCounter.Current.Value = response.Total; - - moreButton.FadeTo(response.HasMore ? 1 : 0); }, loadCancellation.Token); } From 3b5b799d60157ab47a7507ee3184365591d151c2 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 31 Jan 2020 09:51:56 +0300 Subject: [PATCH 1156/1829] Adjust height of ShowMore button --- osu.Game/Graphics/UserInterface/ShowMoreButton.cs | 5 +++-- osu.Game/Overlays/Comments/CommentsShowMoreButton.cs | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/ShowMoreButton.cs b/osu.Game/Graphics/UserInterface/ShowMoreButton.cs index 4931a6aed6..c9cd9f1158 100644 --- a/osu.Game/Graphics/UserInterface/ShowMoreButton.cs +++ b/osu.Game/Graphics/UserInterface/ShowMoreButton.cs @@ -40,13 +40,14 @@ namespace osu.Game.Graphics.UserInterface public ShowMoreButton() { - AutoSizeAxes = Axes.Both; + Height = 30; + Width = 140; } protected override Drawable CreateContent() => new CircularContainer { Masking = true, - Size = new Vector2(140, 30), + RelativeSizeAxes = Axes.Both, Children = new Drawable[] { background = new Box diff --git a/osu.Game/Overlays/Comments/CommentsShowMoreButton.cs b/osu.Game/Overlays/Comments/CommentsShowMoreButton.cs index ab65c9c63a..d2ff7ecb1f 100644 --- a/osu.Game/Overlays/Comments/CommentsShowMoreButton.cs +++ b/osu.Game/Overlays/Comments/CommentsShowMoreButton.cs @@ -14,6 +14,8 @@ namespace osu.Game.Overlays.Comments [BackgroundDependencyLoader] private void load(OverlayColourProvider colourProvider) { + Height = 20; + IdleColour = colourProvider.Background2; HoverColour = colourProvider.Background1; ChevronIconColour = colourProvider.Foreground1; From ab7bbf38a8e768f0ddef1cdb902ed4b3576805f5 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 31 Jan 2020 16:14:55 +0900 Subject: [PATCH 1157/1829] Set default beatmap later in test initialisation --- osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs index 189420dcef..c01dee2959 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs @@ -72,8 +72,6 @@ namespace osu.Game.Tests.Visual.SongSelect // required to get bindables attached Add(music); - Beatmap.SetDefault(); - Dependencies.Cache(config = new OsuConfigManager(LocalStorage)); } @@ -88,6 +86,8 @@ namespace osu.Game.Tests.Visual.SongSelect { Ruleset.Value = new OsuRuleset().RulesetInfo; manager?.Delete(manager.GetAllUsableBeatmapSets()); + + Beatmap.SetDefault(); }); } From 2f61d3f5ad5f5697c75b8b5500246586b036c58e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 31 Jan 2020 17:35:53 +0900 Subject: [PATCH 1158/1829] Fix song select remaining issue locally --- osu.Game/Screens/Select/SongSelect.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index a16401a527..f9f015643d 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -345,8 +345,8 @@ namespace osu.Game.Screens.Select selectionChangedDebounce = null; } - if (performStartAction) - OnStart(); + if (performStartAction && OnStart()) + Carousel.AllowSelection = false; } /// @@ -500,6 +500,8 @@ namespace osu.Game.Screens.Select public override void OnResuming(IScreen last) { + Carousel.AllowSelection = true; + BeatmapDetails.Leaderboard.RefreshScores(); Beatmap.Value.Track.Looping = true; @@ -647,7 +649,6 @@ namespace osu.Game.Screens.Select decoupledRuleset.ValueChanged += r => Ruleset.Value = r.NewValue; decoupledRuleset.DisabledChanged += r => Ruleset.Disabled = r; - Beatmap.BindDisabledChanged(disabled => Carousel.AllowSelection = !disabled, true); Beatmap.BindValueChanged(workingBeatmapChanged); boundLocalBindables = true; From a547d2ed5c0004458911859e6a3b719d65931d03 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 31 Jan 2020 18:37:16 +0900 Subject: [PATCH 1159/1829] Don't least at Player just yet --- osu.Game/Screens/Play/Player.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index 8a288f8299..7228e22382 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -39,8 +39,6 @@ namespace osu.Game.Screens.Play public override float BackgroundParallaxAmount => 0.1f; - public override bool DisallowExternalBeatmapRulesetChanges => true; - public override bool HideOverlaysOnEnter => true; public override OverlayActivation InitialOverlayActivationMode => OverlayActivation.UserTriggered; From 19f516e710b657aacc124d433459bd0ce8fc96ee Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 31 Jan 2020 19:10:44 +0900 Subject: [PATCH 1160/1829] Ensure OsuScreen level leases are taken out synchronously --- .../Background/TestSceneUserDimBackgrounds.cs | 8 ++-- .../Visual/Gameplay/TestScenePlayerLoader.cs | 6 ++- .../Visual/Gameplay/TestSceneResults.cs | 15 ++++++-- osu.Game.Tests/Visual/Menus/IntroTestScene.cs | 6 ++- .../Multiplayer/TestSceneMultiHeader.cs | 4 +- .../TestSceneScreenBreadcrumbControl.cs | 4 +- .../UserInterface/ScreenBreadcrumbControl.cs | 3 +- osu.Game/Screens/Multi/Multiplayer.cs | 4 +- osu.Game/Screens/OsuScreen.cs | 22 +++++++++-- osu.Game/Screens/OsuScreenStack.cs | 38 +++++++++++-------- osu.Game/Screens/Select/PlaySongSelect.cs | 5 +-- 11 files changed, 79 insertions(+), 36 deletions(-) diff --git a/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs b/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs index 589ec7e8aa..eff5bd710d 100644 --- a/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs +++ b/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs @@ -68,10 +68,10 @@ namespace osu.Game.Tests.Visual.Background [SetUp] public virtual void SetUp() => Schedule(() => { - Child = new OsuScreenStack(songSelect = new DummySongSelect()) - { - RelativeSizeAxes = Axes.Both - }; + var stack = new OsuScreenStack { RelativeSizeAxes = Axes.Both }; + Child = stack; + + stack.Push(songSelect = new DummySongSelect()); }); /// diff --git a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs index ad5950d9fc..33ecbed62e 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs @@ -207,9 +207,11 @@ namespace osu.Game.Tests.Visual.Gameplay { RelativeSizeAxes = Axes.Both; + OsuScreenStack stack; + InternalChildren = new Drawable[] { - new OsuScreenStack(screen) + stack = new OsuScreenStack { RelativeSizeAxes = Axes.Both, }, @@ -224,6 +226,8 @@ namespace osu.Game.Tests.Visual.Gameplay Origin = Anchor.TopLeft, } }; + + stack.Push(screen); } } diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneResults.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneResults.cs index 7790126db5..2b7a32ba17 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneResults.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneResults.cs @@ -75,10 +75,16 @@ namespace osu.Game.Tests.Visual.Gameplay public void ResultsWithoutPlayer() { TestSoloResults screen = null; + OsuScreenStack stack; - AddStep("load results", () => Child = new OsuScreenStack(screen = createResultsScreen()) + AddStep("load results", () => { - RelativeSizeAxes = Axes.Both + Child = stack = new OsuScreenStack + { + RelativeSizeAxes = Axes.Both + }; + + stack.Push(screen = createResultsScreen()); }); AddUntilStep("wait for loaded", () => screen.IsLoaded); AddAssert("retry overlay not present", () => screen.RetryOverlay == null); @@ -102,11 +108,14 @@ namespace osu.Game.Tests.Visual.Gameplay public TestResultsContainer(IScreen screen) { RelativeSizeAxes = Axes.Both; + OsuScreenStack stack; - InternalChild = new OsuScreenStack(screen) + InternalChild = stack = new OsuScreenStack { RelativeSizeAxes = Axes.Both, }; + + stack.Push(screen); } } diff --git a/osu.Game.Tests/Visual/Menus/IntroTestScene.cs b/osu.Game.Tests/Visual/Menus/IntroTestScene.cs index d03d341ee4..5870ef9813 100644 --- a/osu.Game.Tests/Visual/Menus/IntroTestScene.cs +++ b/osu.Game.Tests/Visual/Menus/IntroTestScene.cs @@ -31,7 +31,7 @@ namespace osu.Game.Tests.Visual.Menus protected IntroTestScene() { - Drawable introStack = null; + OsuScreenStack introStack = null; Children = new Drawable[] { @@ -57,10 +57,12 @@ namespace osu.Game.Tests.Visual.Menus introStack?.Expire(); - Add(introStack = new OsuScreenStack(CreateScreen()) + Add(introStack = new OsuScreenStack { RelativeSizeAxes = Axes.Both, }); + + introStack.Push(CreateScreen()); }); } diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiHeader.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiHeader.cs index 3f89f636b1..76ab402b72 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiHeader.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiHeader.cs @@ -16,7 +16,9 @@ namespace osu.Game.Tests.Visual.Multiplayer { int index = 0; - OsuScreenStack screenStack = new OsuScreenStack(new TestMultiplayerSubScreen(index)) { RelativeSizeAxes = Axes.Both }; + OsuScreenStack screenStack = new OsuScreenStack { RelativeSizeAxes = Axes.Both }; + + screenStack.Push(new TestMultiplayerSubScreen(index)); Children = new Drawable[] { diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneScreenBreadcrumbControl.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneScreenBreadcrumbControl.cs index 7386e0fa1f..77a7d819a9 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneScreenBreadcrumbControl.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneScreenBreadcrumbControl.cs @@ -25,7 +25,9 @@ namespace osu.Game.Tests.Visual.UserInterface OsuSpriteText titleText; IScreen startScreen = new TestScreenOne(); - screenStack = new OsuScreenStack(startScreen) { RelativeSizeAxes = Axes.Both }; + + screenStack = new OsuScreenStack { RelativeSizeAxes = Axes.Both }; + screenStack.Push(startScreen); Children = new Drawable[] { diff --git a/osu.Game/Graphics/UserInterface/ScreenBreadcrumbControl.cs b/osu.Game/Graphics/UserInterface/ScreenBreadcrumbControl.cs index 3e0a6c3265..e85525b2f8 100644 --- a/osu.Game/Graphics/UserInterface/ScreenBreadcrumbControl.cs +++ b/osu.Game/Graphics/UserInterface/ScreenBreadcrumbControl.cs @@ -17,7 +17,8 @@ namespace osu.Game.Graphics.UserInterface stack.ScreenPushed += onPushed; stack.ScreenExited += onExited; - onPushed(null, stack.CurrentScreen); + if (stack.CurrentScreen != null) + onPushed(null, stack.CurrentScreen); Current.ValueChanged += current => current.NewValue.MakeCurrent(); } diff --git a/osu.Game/Screens/Multi/Multiplayer.cs b/osu.Game/Screens/Multi/Multiplayer.cs index 86d52ff791..9d6a459d14 100644 --- a/osu.Game/Screens/Multi/Multiplayer.cs +++ b/osu.Game/Screens/Multi/Multiplayer.cs @@ -96,7 +96,7 @@ namespace osu.Game.Screens.Multi { RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { Top = Header.HEIGHT }, - Child = screenStack = new OsuScreenStack(loungeSubScreen = new LoungeSubScreen()) { RelativeSizeAxes = Axes.Both } + Child = screenStack = new OsuScreenStack { RelativeSizeAxes = Axes.Both } }, new Header(screenStack), createButton = new HeaderButton @@ -120,6 +120,8 @@ namespace osu.Game.Screens.Multi } }; + screenStack.Push(loungeSubScreen = new LoungeSubScreen()); + screenStack.ScreenPushed += screenPushed; screenStack.ScreenExited += screenExited; } diff --git a/osu.Game/Screens/OsuScreen.cs b/osu.Game/Screens/OsuScreen.cs index 6394fb8d23..61e94ae969 100644 --- a/osu.Game/Screens/OsuScreen.cs +++ b/osu.Game/Screens/OsuScreen.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.Collections.Generic; using Microsoft.EntityFrameworkCore.Internal; using osu.Framework.Allocation; @@ -95,15 +96,30 @@ namespace osu.Game.Screens public Bindable> Mods { get; private set; } + private OsuScreenDependencies screenDependencies; + + internal void CreateLeasedDependencies(IReadOnlyDependencyContainer dependencies) => createDependencies(dependencies); + protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent) { - var screenDependencies = new OsuScreenDependencies(DisallowExternalBeatmapRulesetChanges, parent); + if (screenDependencies == null) + { + if (DisallowExternalBeatmapRulesetChanges) + throw new InvalidOperationException($"Screens that specify {nameof(DisallowExternalBeatmapRulesetChanges)} must be pushed immediately."); + + createDependencies(parent); + } + + return base.CreateChildDependencies(screenDependencies); + } + + private void createDependencies(IReadOnlyDependencyContainer dependencies) + { + screenDependencies = new OsuScreenDependencies(DisallowExternalBeatmapRulesetChanges, dependencies); Beatmap = screenDependencies.Beatmap; Ruleset = screenDependencies.Ruleset; Mods = screenDependencies.Mods; - - return base.CreateChildDependencies(screenDependencies); } protected BackgroundScreen Background => backgroundStack?.CurrentScreen as BackgroundScreen; diff --git a/osu.Game/Screens/OsuScreenStack.cs b/osu.Game/Screens/OsuScreenStack.cs index 0844e32d46..db577ea5e9 100644 --- a/osu.Game/Screens/OsuScreenStack.cs +++ b/osu.Game/Screens/OsuScreenStack.cs @@ -18,17 +18,6 @@ namespace osu.Game.Screens protected float ParallaxAmount => parallaxContainer.ParallaxAmount; public OsuScreenStack() - { - initializeStack(); - } - - public OsuScreenStack(IScreen baseScreen) - : base(baseScreen) - { - initializeStack(); - } - - private void initializeStack() { InternalChild = parallaxContainer = new ParallaxContainer { @@ -36,13 +25,32 @@ namespace osu.Game.Screens Child = backgroundScreenStack = new BackgroundScreenStack { RelativeSizeAxes = Axes.Both }, }; - ScreenPushed += onScreenChange; - ScreenExited += onScreenChange; + ScreenPushed += screenPushed; + ScreenExited += screenExited; } - private void onScreenChange(IScreen prev, IScreen next) + private void screenPushed(IScreen prev, IScreen next) { - parallaxContainer.ParallaxAmount = ParallaxContainer.DEFAULT_PARALLAX_AMOUNT * ((IOsuScreen)next)?.BackgroundParallaxAmount ?? 1.0f; + if (LoadState < LoadState.Ready) + { + // dependencies must be present to stay in a sane state. + // this is generally only ever hit by test scenes. + Schedule(() => screenPushed(prev, next)); + return; + } + + // create dependencies synchronously to ensure leases are in a sane state. + ((OsuScreen)next).CreateLeasedDependencies((prev as OsuScreen)?.Dependencies ?? Dependencies); + + setParallax(next); } + + private void screenExited(IScreen prev, IScreen next) + { + setParallax(next); + } + + private void setParallax(IScreen next) => + parallaxContainer.ParallaxAmount = ParallaxContainer.DEFAULT_PARALLAX_AMOUNT * ((IOsuScreen)next)?.BackgroundParallaxAmount ?? 1.0f; } } diff --git a/osu.Game/Screens/Select/PlaySongSelect.cs b/osu.Game/Screens/Select/PlaySongSelect.cs index 9368bac69f..347eae49f0 100644 --- a/osu.Game/Screens/Select/PlaySongSelect.cs +++ b/osu.Game/Screens/Select/PlaySongSelect.cs @@ -68,10 +68,7 @@ namespace osu.Game.Screens.Select SampleConfirm?.Play(); - LoadComponentAsync(player = new PlayerLoader(() => new Player()), l => - { - if (this.IsCurrentScreen()) this.Push(player); - }); + this.Push(player = new PlayerLoader(() => new Player())); return true; } From a66cdee5e98a849cfafdbbc8a955e7217a573e16 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 31 Jan 2020 21:36:19 +0900 Subject: [PATCH 1161/1829] Fix missed issues --- osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs | 5 ++++- osu.Game/Screens/OsuScreenStack.cs | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs index 4676f14655..c3742601c1 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs @@ -63,9 +63,12 @@ namespace osu.Game.Rulesets.Osu.Tests private ExposedPlayer loadBeatmap(bool userHasCustomColours, bool beatmapHasColours) { ExposedPlayer player; + OsuScreenStack stack; Beatmap.Value = new CustomSkinWorkingBeatmap(audio, beatmapHasColours); - Child = new OsuScreenStack(player = new ExposedPlayer(userHasCustomColours)) { RelativeSizeAxes = Axes.Both }; + Child = stack = new OsuScreenStack { RelativeSizeAxes = Axes.Both }; + + stack.Push(player = new ExposedPlayer(userHasCustomColours)); return player; } diff --git a/osu.Game/Screens/OsuScreenStack.cs b/osu.Game/Screens/OsuScreenStack.cs index db577ea5e9..a05933ef0e 100644 --- a/osu.Game/Screens/OsuScreenStack.cs +++ b/osu.Game/Screens/OsuScreenStack.cs @@ -13,7 +13,7 @@ namespace osu.Game.Screens [Cached] private BackgroundScreenStack backgroundScreenStack; - private ParallaxContainer parallaxContainer; + private readonly ParallaxContainer parallaxContainer; protected float ParallaxAmount => parallaxContainer.ParallaxAmount; From 3e15265a53df29d334d5aff48af57c073405c40c Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 31 Jan 2020 22:09:02 +0900 Subject: [PATCH 1162/1829] 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 5497a82a7a..e5a1ec2f4e 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 0ea558bbc7..b38b7ff9b1 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 a215bc65e8..6ab3c0f2d2 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From c4331f34d55772d6b6c9d04b638772724cd74ca8 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 31 Jan 2020 22:09:39 +0900 Subject: [PATCH 1163/1829] Consume TearDownSteps --- osu.Game/Tests/Visual/ScreenTestScene.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/osu.Game/Tests/Visual/ScreenTestScene.cs b/osu.Game/Tests/Visual/ScreenTestScene.cs index e501aa33b3..feca592049 100644 --- a/osu.Game/Tests/Visual/ScreenTestScene.cs +++ b/osu.Game/Tests/Visual/ScreenTestScene.cs @@ -33,9 +33,8 @@ namespace osu.Game.Tests.Visual [SetUpSteps] public virtual void SetUpSteps() => addExitAllScreensStep(); - // pending framework update. - //[TearDownSteps] - //public void TearDownSteps() => addExitAllScreensStep(); + [TearDownSteps] + public void TearDownSteps() => addExitAllScreensStep(); private void addExitAllScreensStep() { From e728d2be1779d280d5ee3a1492a0590acf463af6 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 1 Feb 2020 01:19:04 +0900 Subject: [PATCH 1164/1829] Use ElementAtOrDefault --- osu.Game/Overlays/ChatOverlay.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/osu.Game/Overlays/ChatOverlay.cs b/osu.Game/Overlays/ChatOverlay.cs index 9e48ee5041..f2aef0995f 100644 --- a/osu.Game/Overlays/ChatOverlay.cs +++ b/osu.Game/Overlays/ChatOverlay.cs @@ -323,8 +323,7 @@ namespace osu.Game.Overlays { var channel = ChannelTabControl.Items .Where(tab => !(tab is ChannelSelectorTabItem.ChannelSelectorTabChannel)) - .Skip(index) - .FirstOrDefault(); + .ElementAtOrDefault(index); if (channel != null) ChannelTabControl.Current.Value = channel; } From 90caa612455425f97c892a81be2f37a46066e9f0 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 1 Feb 2020 02:05:26 +0900 Subject: [PATCH 1165/1829] Reverse comparison for readability MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Bartłomiej Dach --- .../Edit/Compose/Components/Timeline/TimelineTickDisplay.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineTickDisplay.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineTickDisplay.cs index b565a42c5a..36ee976bf7 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineTickDisplay.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineTickDisplay.cs @@ -44,7 +44,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline for (var i = 0; i < beatmap.ControlPointInfo.TimingPoints.Count; i++) { var point = beatmap.ControlPointInfo.TimingPoints[i]; - var until = beatmap.ControlPointInfo.TimingPoints.Count > i + 1 ? beatmap.ControlPointInfo.TimingPoints[i + 1].Time : working.Value.Track.Length; + var until = i + 1 < beatmap.ControlPointInfo.TimingPoints.Count ? beatmap.ControlPointInfo.TimingPoints[i + 1].Time : working.Value.Track.Length; int beat = 0; From d94045e612cf0d4e1105078fdf66512bacdc5b09 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 1 Feb 2020 02:12:50 +0900 Subject: [PATCH 1166/1829] Fix remaining merge conflict --- osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs index 7cf40b1209..bbb50c287b 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs @@ -61,7 +61,6 @@ namespace osu.Game.Rulesets.Osu.Tests private ExposedPlayer loadBeatmap(bool userHasCustomColours, bool beatmapHasColours) { ExposedPlayer player; - OsuScreenStack stack; Beatmap.Value = new CustomSkinWorkingBeatmap(audio, beatmapHasColours); From 9596030e1dadd5c0190c7868718bb090ae18b978 Mon Sep 17 00:00:00 2001 From: Berkan Diler Date: Fri, 31 Jan 2020 18:32:47 +0100 Subject: [PATCH 1167/1829] Make use of ElementAtOrDefault() when possible --- osu.Game/Overlays/ChatOverlay.cs | 2 +- osu.Game/Overlays/MusicController.cs | 2 +- osu.Game/Overlays/Toolbar/ToolbarRulesetSelector.cs | 2 +- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/ChatOverlay.cs b/osu.Game/Overlays/ChatOverlay.cs index 2c0fa49b5d..8b3edd60a1 100644 --- a/osu.Game/Overlays/ChatOverlay.cs +++ b/osu.Game/Overlays/ChatOverlay.cs @@ -321,7 +321,7 @@ namespace osu.Game.Overlays private void selectTab(int index) { - var channel = ChannelTabControl.Items.Skip(index).FirstOrDefault(); + var channel = ChannelTabControl.Items.ElementAtOrDefault(index); if (channel != null && !(channel is ChannelSelectorTabItem.ChannelSelectorTabChannel)) ChannelTabControl.Current.Value = channel; } diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs index 19f06e99f1..7c7daf6eb9 100644 --- a/osu.Game/Overlays/MusicController.cs +++ b/osu.Game/Overlays/MusicController.cs @@ -196,7 +196,7 @@ namespace osu.Game.Overlays if (!instant) queuedDirection = TrackChangeDirection.Next; - var playable = BeatmapSets.SkipWhile(i => i.ID != current.BeatmapSetInfo.ID).Skip(1).FirstOrDefault() ?? BeatmapSets.FirstOrDefault(); + var playable = BeatmapSets.SkipWhile(i => i.ID != current.BeatmapSetInfo.ID).ElementAtOrDefault(1) ?? BeatmapSets.FirstOrDefault(); if (playable != null) { diff --git a/osu.Game/Overlays/Toolbar/ToolbarRulesetSelector.cs b/osu.Game/Overlays/Toolbar/ToolbarRulesetSelector.cs index 8f2dbce6f7..422bf00c6d 100644 --- a/osu.Game/Overlays/Toolbar/ToolbarRulesetSelector.cs +++ b/osu.Game/Overlays/Toolbar/ToolbarRulesetSelector.cs @@ -99,7 +99,7 @@ namespace osu.Game.Overlays.Toolbar { int requested = e.Key - Key.Number1; - RulesetInfo found = Rulesets.AvailableRulesets.Skip(requested).FirstOrDefault(); + RulesetInfo found = Rulesets.AvailableRulesets.ElementAtOrDefault(requested); if (found != null) Current.Value = found; return true; diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index ab8dccb9dd..5ac1d4ecc4 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -154,7 +154,7 @@ namespace osu.Game.Rulesets.Edit { if (e.Key >= Key.Number1 && e.Key <= Key.Number9) { - var item = toolboxCollection.Items.Skip(e.Key - Key.Number1).FirstOrDefault(); + var item = toolboxCollection.Items.ElementAtOrDefault(e.Key - Key.Number1); if (item != null) { From 6d30e425a1083e41a9a80285cf539584b45a2345 Mon Sep 17 00:00:00 2001 From: Berkan Diler Date: Fri, 31 Jan 2020 18:51:29 +0100 Subject: [PATCH 1168/1829] Revert change to avoid conflict with another PR --- osu.Game/Overlays/ChatOverlay.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/ChatOverlay.cs b/osu.Game/Overlays/ChatOverlay.cs index 8b3edd60a1..2c0fa49b5d 100644 --- a/osu.Game/Overlays/ChatOverlay.cs +++ b/osu.Game/Overlays/ChatOverlay.cs @@ -321,7 +321,7 @@ namespace osu.Game.Overlays private void selectTab(int index) { - var channel = ChannelTabControl.Items.ElementAtOrDefault(index); + var channel = ChannelTabControl.Items.Skip(index).FirstOrDefault(); if (channel != null && !(channel is ChannelSelectorTabItem.ChannelSelectorTabChannel)) ChannelTabControl.Current.Value = channel; } From a74d22d9e55a5fb76fcd4f55bc049ae4ee046b32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Sat, 1 Feb 2020 15:50:33 +0100 Subject: [PATCH 1169/1829] Extract beatmap stats test to separate scene --- .../SongSelect/TestSceneAdvancedStats.cs | 125 ++++++++++++++++++ .../SongSelect/TestSceneBeatmapDetails.cs | 28 ---- .../Screens/Select/Details/AdvancedStats.cs | 40 +++--- 3 files changed, 146 insertions(+), 47 deletions(-) create mode 100644 osu.Game.Tests/Visual/SongSelect/TestSceneAdvancedStats.cs diff --git a/osu.Game.Tests/Visual/SongSelect/TestSceneAdvancedStats.cs b/osu.Game.Tests/Visual/SongSelect/TestSceneAdvancedStats.cs new file mode 100644 index 0000000000..c08e974544 --- /dev/null +++ b/osu.Game.Tests/Visual/SongSelect/TestSceneAdvancedStats.cs @@ -0,0 +1,125 @@ +// 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.Allocation; +using osu.Framework.Graphics.Sprites; +using osu.Framework.Testing; +using osu.Game.Beatmaps; +using osu.Game.Graphics; +using osu.Game.Rulesets; +using osu.Game.Rulesets.Mods; +using osu.Game.Screens.Select.Details; +using osuTK.Graphics; + +namespace osu.Game.Tests.Visual.SongSelect +{ + [System.ComponentModel.Description("Advanced beatmap statistics display")] + public class TestSceneAdvancedStats : OsuTestScene + { + private TestAdvancedStats advancedStats; + + [Resolved] + private RulesetStore rulesets { get; set; } + + [Resolved] + private OsuColour colours { get; set; } + + [SetUp] + public void Setup() => Schedule(() => Child = advancedStats = new TestAdvancedStats + { + Width = 500 + }); + + private BeatmapInfo exampleBeatmapInfo => new BeatmapInfo + { + RulesetID = 0, + Ruleset = rulesets.AvailableRulesets.First(), + BaseDifficulty = new BeatmapDifficulty + { + CircleSize = 7.2f, + DrainRate = 1, + OverallDifficulty = 5.7f, + ApproachRate = 3.5f + }, + StarDifficulty = 4.5f + }; + + [Test] + public void TestNoMod() + { + AddStep("set beatmap", () => advancedStats.Beatmap = exampleBeatmapInfo); + + AddStep("no mods selected", () => SelectedMods.Value = Array.Empty()); + + AddAssert("first bar text is Circle Size", () => advancedStats.ChildrenOfType().First().Text == "Circle Size"); + AddAssert("circle size bar is white", () => advancedStats.FirstValue.ModBar.AccentColour == Color4.White); + AddAssert("HP drain bar is white", () => advancedStats.HpDrain.ModBar.AccentColour == Color4.White); + AddAssert("accuracy bar is white", () => advancedStats.Accuracy.ModBar.AccentColour == Color4.White); + AddAssert("approach rate bar is white", () => advancedStats.ApproachRate.ModBar.AccentColour == Color4.White); + } + + [Test] + public void TestManiaFirstBarText() + { + AddStep("set beatmap", () => advancedStats.Beatmap = new BeatmapInfo + { + Ruleset = rulesets.GetRuleset(3), + BaseDifficulty = new BeatmapDifficulty + { + CircleSize = 5, + DrainRate = 4.3f, + OverallDifficulty = 4.5f, + ApproachRate = 3.1f + }, + StarDifficulty = 8 + }); + + AddAssert("first bar text is Key Count", () => advancedStats.ChildrenOfType().First().Text == "Key Count"); + } + + [Test] + public void TestEasyMod() + { + AddStep("set beatmap", () => advancedStats.Beatmap = exampleBeatmapInfo); + + AddStep("select EZ mod", () => + { + var ruleset = advancedStats.Beatmap.Ruleset.CreateInstance(); + SelectedMods.Value = new[] { ruleset.GetAllMods().OfType().Single() }; + }); + + AddAssert("circle size bar is blue", () => advancedStats.FirstValue.ModBar.AccentColour == colours.BlueDark); + AddAssert("HP drain bar is blue", () => advancedStats.HpDrain.ModBar.AccentColour == colours.BlueDark); + AddAssert("accuracy bar is blue", () => advancedStats.Accuracy.ModBar.AccentColour == colours.BlueDark); + AddAssert("approach rate bar is blue", () => advancedStats.ApproachRate.ModBar.AccentColour == colours.BlueDark); + } + + [Test] + public void TestHardRockMod() + { + AddStep("set beatmap", () => advancedStats.Beatmap = exampleBeatmapInfo); + + AddStep("select HR mod", () => + { + var ruleset = advancedStats.Beatmap.Ruleset.CreateInstance(); + SelectedMods.Value = new[] { ruleset.GetAllMods().OfType().Single() }; + }); + + AddAssert("circle size bar is red", () => advancedStats.FirstValue.ModBar.AccentColour == colours.Red); + AddAssert("HP drain bar is red", () => advancedStats.HpDrain.ModBar.AccentColour == colours.Red); + AddAssert("accuracy bar is red", () => advancedStats.Accuracy.ModBar.AccentColour == colours.Red); + AddAssert("approach rate bar is red", () => advancedStats.ApproachRate.ModBar.AccentColour == colours.Red); + } + + private class TestAdvancedStats : AdvancedStats + { + public new StatisticRow FirstValue => base.FirstValue; + public new StatisticRow HpDrain => base.HpDrain; + public new StatisticRow Accuracy => base.Accuracy; + public new StatisticRow ApproachRate => base.ApproachRate; + } + } +} diff --git a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetails.cs b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetails.cs index 6aa5a76490..acf037198f 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetails.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapDetails.cs @@ -3,14 +3,8 @@ using System.Linq; using NUnit.Framework; -using osu.Framework.Allocation; using osu.Framework.Graphics; -using osu.Framework.Testing; using osu.Game.Beatmaps; -using osu.Game.Graphics; -using osu.Game.Graphics.UserInterface; -using osu.Game.Rulesets; -using osu.Game.Rulesets.Mods; using osu.Game.Screens.Select; namespace osu.Game.Tests.Visual.SongSelect @@ -180,27 +174,5 @@ namespace osu.Game.Tests.Visual.SongSelect OnlineBeatmapID = 162, }); } - - [Resolved] - private RulesetStore rulesets { get; set; } - - [Resolved] - private OsuColour colours { get; set; } - - [Test] - public void TestModAdjustments() - { - TestAllMetrics(); - - Ruleset ruleset = rulesets.AvailableRulesets.First().CreateInstance(); - - AddStep("with EZ mod", () => SelectedMods.Value = new[] { ruleset.GetAllMods().First(m => m is ModEasy) }); - - AddAssert("first bar coloured blue", () => details.ChildrenOfType().Skip(1).First().AccentColour == colours.BlueDark); - - AddStep("with HR mod", () => SelectedMods.Value = new[] { ruleset.GetAllMods().First(m => m is ModHardRock) }); - - AddAssert("first bar coloured red", () => details.ChildrenOfType().Skip(1).First().AccentColour == colours.Red); - } } } diff --git a/osu.Game/Screens/Select/Details/AdvancedStats.cs b/osu.Game/Screens/Select/Details/AdvancedStats.cs index 56c400e869..81f2b8dc7b 100644 --- a/osu.Game/Screens/Select/Details/AdvancedStats.cs +++ b/osu.Game/Screens/Select/Details/AdvancedStats.cs @@ -26,7 +26,8 @@ namespace osu.Game.Screens.Select.Details [Resolved] private IBindable> mods { get; set; } - private readonly StatisticRow firstValue, hpDrain, accuracy, approachRate, starDifficulty; + protected readonly StatisticRow FirstValue, HpDrain, Accuracy, ApproachRate; + private readonly StatisticRow starDifficulty; private BeatmapInfo beatmap; @@ -52,10 +53,10 @@ namespace osu.Game.Screens.Select.Details Spacing = new Vector2(4f), Children = new[] { - firstValue = new StatisticRow(), //circle size/key amount - hpDrain = new StatisticRow { Title = "HP Drain" }, - accuracy = new StatisticRow { Title = "Accuracy" }, - approachRate = new StatisticRow { Title = "Approach Rate" }, + FirstValue = new StatisticRow(), //circle size/key amount + HpDrain = new StatisticRow { Title = "HP Drain" }, + Accuracy = new StatisticRow { Title = "Accuracy" }, + ApproachRate = new StatisticRow { Title = "Approach Rate" }, starDifficulty = new StatisticRow(10, true) { Title = "Star Difficulty" }, }, }; @@ -122,24 +123,24 @@ namespace osu.Game.Screens.Select.Details case 3: // Account for mania differences locally for now // Eventually this should be handled in a more modular way, allowing rulesets to return arbitrary difficulty attributes - firstValue.Title = "Key Count"; - firstValue.Value = (baseDifficulty?.CircleSize ?? 0, null); + FirstValue.Title = "Key Count"; + FirstValue.Value = (baseDifficulty?.CircleSize ?? 0, null); break; default: - firstValue.Title = "Circle Size"; - firstValue.Value = (baseDifficulty?.CircleSize ?? 0, adjustedDifficulty?.CircleSize); + FirstValue.Title = "Circle Size"; + FirstValue.Value = (baseDifficulty?.CircleSize ?? 0, adjustedDifficulty?.CircleSize); break; } starDifficulty.Value = ((float)(Beatmap?.StarDifficulty ?? 0), null); - hpDrain.Value = (baseDifficulty?.DrainRate ?? 0, adjustedDifficulty?.DrainRate); - accuracy.Value = (baseDifficulty?.OverallDifficulty ?? 0, adjustedDifficulty?.OverallDifficulty); - approachRate.Value = (baseDifficulty?.ApproachRate ?? 0, adjustedDifficulty?.ApproachRate); + HpDrain.Value = (baseDifficulty?.DrainRate ?? 0, adjustedDifficulty?.DrainRate); + Accuracy.Value = (baseDifficulty?.OverallDifficulty ?? 0, adjustedDifficulty?.OverallDifficulty); + ApproachRate.Value = (baseDifficulty?.ApproachRate ?? 0, adjustedDifficulty?.ApproachRate); } - private class StatisticRow : Container, IHasAccentColour + public class StatisticRow : Container, IHasAccentColour { private const float value_width = 25; private const float name_width = 70; @@ -147,7 +148,8 @@ namespace osu.Game.Screens.Select.Details private readonly float maxValue; private readonly bool forceDecimalPlaces; private readonly OsuSpriteText name, valueText; - private readonly Bar bar, modBar; + private readonly Bar bar; + public readonly Bar ModBar; [Resolved] private OsuColour colours { get; set; } @@ -173,14 +175,14 @@ namespace osu.Game.Screens.Select.Details bar.Length = value.baseValue / maxValue; valueText.Text = (value.adjustedValue ?? value.baseValue).ToString(forceDecimalPlaces ? "0.00" : "0.##"); - modBar.Length = (value.adjustedValue ?? 0) / maxValue; + ModBar.Length = (value.adjustedValue ?? 0) / maxValue; if (value.adjustedValue > value.baseValue) - modBar.AccentColour = valueText.Colour = colours.Red; + ModBar.AccentColour = valueText.Colour = colours.Red; else if (value.adjustedValue < value.baseValue) - modBar.AccentColour = valueText.Colour = colours.BlueDark; + ModBar.AccentColour = valueText.Colour = colours.BlueDark; else - modBar.AccentColour = valueText.Colour = Color4.White; + ModBar.AccentColour = valueText.Colour = Color4.White; } } @@ -217,7 +219,7 @@ namespace osu.Game.Screens.Select.Details BackgroundColour = Color4.White.Opacity(0.5f), Padding = new MarginPadding { Left = name_width + 10, Right = value_width + 10 }, }, - modBar = new Bar + ModBar = new Bar { Origin = Anchor.CentreLeft, Anchor = Anchor.CentreLeft, From e90ae667b7e2481ad867fabae6df1e1969064012 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Sat, 1 Feb 2020 16:08:24 +0100 Subject: [PATCH 1170/1829] Add failing tests --- .../SongSelect/TestSceneAdvancedStats.cs | 76 +++++++++++++++---- 1 file changed, 63 insertions(+), 13 deletions(-) diff --git a/osu.Game.Tests/Visual/SongSelect/TestSceneAdvancedStats.cs b/osu.Game.Tests/Visual/SongSelect/TestSceneAdvancedStats.cs index c08e974544..3d3517ada4 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestSceneAdvancedStats.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestSceneAdvancedStats.cs @@ -40,7 +40,7 @@ namespace osu.Game.Tests.Visual.SongSelect BaseDifficulty = new BeatmapDifficulty { CircleSize = 7.2f, - DrainRate = 1, + DrainRate = 3, OverallDifficulty = 5.7f, ApproachRate = 3.5f }, @@ -55,10 +55,10 @@ namespace osu.Game.Tests.Visual.SongSelect AddStep("no mods selected", () => SelectedMods.Value = Array.Empty()); AddAssert("first bar text is Circle Size", () => advancedStats.ChildrenOfType().First().Text == "Circle Size"); - AddAssert("circle size bar is white", () => advancedStats.FirstValue.ModBar.AccentColour == Color4.White); - AddAssert("HP drain bar is white", () => advancedStats.HpDrain.ModBar.AccentColour == Color4.White); - AddAssert("accuracy bar is white", () => advancedStats.Accuracy.ModBar.AccentColour == Color4.White); - AddAssert("approach rate bar is white", () => advancedStats.ApproachRate.ModBar.AccentColour == Color4.White); + AddAssert("circle size bar is white", () => barIsWhite(advancedStats.FirstValue)); + AddAssert("HP drain bar is white", () => barIsWhite(advancedStats.HpDrain)); + AddAssert("accuracy bar is white", () => barIsWhite(advancedStats.Accuracy)); + AddAssert("approach rate bar is white", () => barIsWhite(advancedStats.ApproachRate)); } [Test] @@ -91,10 +91,10 @@ namespace osu.Game.Tests.Visual.SongSelect SelectedMods.Value = new[] { ruleset.GetAllMods().OfType().Single() }; }); - AddAssert("circle size bar is blue", () => advancedStats.FirstValue.ModBar.AccentColour == colours.BlueDark); - AddAssert("HP drain bar is blue", () => advancedStats.HpDrain.ModBar.AccentColour == colours.BlueDark); - AddAssert("accuracy bar is blue", () => advancedStats.Accuracy.ModBar.AccentColour == colours.BlueDark); - AddAssert("approach rate bar is blue", () => advancedStats.ApproachRate.ModBar.AccentColour == colours.BlueDark); + AddAssert("circle size bar is blue", () => barIsBlue(advancedStats.FirstValue)); + AddAssert("HP drain bar is blue", () => barIsBlue(advancedStats.HpDrain)); + AddAssert("accuracy bar is blue", () => barIsBlue(advancedStats.Accuracy)); + AddAssert("approach rate bar is blue", () => barIsBlue(advancedStats.ApproachRate)); } [Test] @@ -108,12 +108,62 @@ namespace osu.Game.Tests.Visual.SongSelect SelectedMods.Value = new[] { ruleset.GetAllMods().OfType().Single() }; }); - AddAssert("circle size bar is red", () => advancedStats.FirstValue.ModBar.AccentColour == colours.Red); - AddAssert("HP drain bar is red", () => advancedStats.HpDrain.ModBar.AccentColour == colours.Red); - AddAssert("accuracy bar is red", () => advancedStats.Accuracy.ModBar.AccentColour == colours.Red); - AddAssert("approach rate bar is red", () => advancedStats.ApproachRate.ModBar.AccentColour == colours.Red); + AddAssert("circle size bar is red", () => barIsRed(advancedStats.FirstValue)); + AddAssert("HP drain bar is red", () => barIsRed(advancedStats.HpDrain)); + AddAssert("accuracy bar is red", () => barIsRed(advancedStats.Accuracy)); + AddAssert("approach rate bar is red", () => barIsRed(advancedStats.ApproachRate)); } + [Test] + public void TestUnchangedDifficultyAdjustMod() + { + AddStep("set beatmap", () => advancedStats.Beatmap = exampleBeatmapInfo); + + AddStep("select unchanged Difficulty Adjust mod", () => + { + var ruleset = advancedStats.Beatmap.Ruleset.CreateInstance(); + var difficultyAdjustMod = ruleset.GetAllMods().OfType().Single(); + difficultyAdjustMod.ReadFromDifficulty(advancedStats.Beatmap.BaseDifficulty); + SelectedMods.Value = new[] { difficultyAdjustMod }; + }); + + AddAssert("circle size bar is white", () => barIsWhite(advancedStats.FirstValue)); + AddAssert("HP drain bar is white", () => barIsWhite(advancedStats.HpDrain)); + AddAssert("accuracy bar is white", () => barIsWhite(advancedStats.Accuracy)); + AddAssert("approach rate bar is white", () => barIsWhite(advancedStats.ApproachRate)); + } + + [Test] + public void TestChangedDifficultyAdjustMod() + { + AddStep("set beatmap", () => advancedStats.Beatmap = exampleBeatmapInfo); + + AddStep("select changed Difficulty Adjust mod", () => + { + var ruleset = advancedStats.Beatmap.Ruleset.CreateInstance(); + var difficultyAdjustMod = ruleset.GetAllMods().OfType().Single(); + var originalDifficulty = advancedStats.Beatmap.BaseDifficulty; + var adjustedDifficulty = new BeatmapDifficulty + { + CircleSize = originalDifficulty.CircleSize, + DrainRate = originalDifficulty.DrainRate - 0.5f, + OverallDifficulty = originalDifficulty.OverallDifficulty, + ApproachRate = originalDifficulty.ApproachRate + 2.2f, + }; + difficultyAdjustMod.ReadFromDifficulty(adjustedDifficulty); + SelectedMods.Value = new[] { difficultyAdjustMod }; + }); + + AddAssert("circle size bar is white", () => barIsWhite(advancedStats.FirstValue)); + AddAssert("drain rate bar is blue", () => barIsBlue(advancedStats.HpDrain)); + AddAssert("accuracy bar is white", () => barIsWhite(advancedStats.Accuracy)); + AddAssert("approach rate bar is red", () => barIsRed(advancedStats.ApproachRate)); + } + + private bool barIsWhite(AdvancedStats.StatisticRow row) => row.ModBar.AccentColour == Color4.White; + private bool barIsBlue(AdvancedStats.StatisticRow row) => row.ModBar.AccentColour == colours.BlueDark; + private bool barIsRed(AdvancedStats.StatisticRow row) => row.ModBar.AccentColour == colours.Red; + private class TestAdvancedStats : AdvancedStats { public new StatisticRow FirstValue => base.FirstValue; From 0bfadfbbf1fbb713e10f252001285b43cbae6343 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Sat, 1 Feb 2020 16:16:15 +0100 Subject: [PATCH 1171/1829] Apply precision when comparing adjusted values In some cases, applying the Difficulty Adjust mod without actually changing any of the settings previously caused the bar in song select beatmap details to appear red/blue instead of staying white. This was caused by not accounting for floating-point imprecisions when determining bar colour in AdvancedStats. To resolve, first check equality with tolerance, and only then apply blue/red colours if that equality check does not hold. --- osu.Game/Screens/Select/Details/AdvancedStats.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/osu.Game/Screens/Select/Details/AdvancedStats.cs b/osu.Game/Screens/Select/Details/AdvancedStats.cs index 81f2b8dc7b..7ab91677a9 100644 --- a/osu.Game/Screens/Select/Details/AdvancedStats.cs +++ b/osu.Game/Screens/Select/Details/AdvancedStats.cs @@ -16,6 +16,7 @@ using System.Collections.Generic; using osu.Game.Rulesets.Mods; using System.Linq; using osu.Framework.Threading; +using osu.Framework.Utils; using osu.Game.Configuration; using osu.Game.Overlays.Settings; @@ -177,12 +178,12 @@ namespace osu.Game.Screens.Select.Details valueText.Text = (value.adjustedValue ?? value.baseValue).ToString(forceDecimalPlaces ? "0.00" : "0.##"); ModBar.Length = (value.adjustedValue ?? 0) / maxValue; - if (value.adjustedValue > value.baseValue) + if (Precision.AlmostEquals(value.baseValue, value.adjustedValue ?? value.baseValue, 0.05f)) + ModBar.AccentColour = valueText.Colour = Color4.White; + else if (value.adjustedValue > value.baseValue) ModBar.AccentColour = valueText.Colour = colours.Red; else if (value.adjustedValue < value.baseValue) ModBar.AccentColour = valueText.Colour = colours.BlueDark; - else - ModBar.AccentColour = valueText.Colour = Color4.White; } } From 9f4261111b3347719009e7ea21dff8c895791548 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Sat, 1 Feb 2020 16:55:30 +0100 Subject: [PATCH 1172/1829] Match osu-stable behaviour and size --- .../Objects/Drawables/Pieces/SliderBall.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs index ef7b077480..1fa27b6ff6 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs @@ -24,6 +24,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces private readonly Slider slider; public readonly Drawable FollowCircle; + public readonly Drawable InternalFollowCircle; private readonly DrawableSlider drawableSlider; public SliderBall(Slider slider, DrawableSlider drawableSlider = null) @@ -38,6 +39,13 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces Children = new[] { + InternalFollowCircle = new CircularContainer + { + Origin = Anchor.Centre, + Anchor = Anchor.Centre, + RelativeSizeAxes = Axes.Both, + Alpha = 0 + }, FollowCircle = new FollowCircleContainer { Origin = Anchor.Centre, @@ -95,7 +103,9 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces tracking = value; - FollowCircle.ScaleTo(tracking ? 2f : 1, 300, Easing.OutQuint); + // Cursor input is checked against the internal circle, which scales instantly to match osu-stable behaviour + InternalFollowCircle.ScaleTo(tracking ? 2.4f : 1f); + FollowCircle.ScaleTo(tracking ? 2f : 1f, 300, Easing.OutQuint); FollowCircle.FadeTo(tracking ? 1f : 0, 300, Easing.OutQuint); } } @@ -149,7 +159,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces // in valid time range Time.Current >= slider.StartTime && Time.Current < slider.EndTime && // in valid position range - lastScreenSpaceMousePosition.HasValue && FollowCircle.ReceivePositionalInputAt(lastScreenSpaceMousePosition.Value) && + lastScreenSpaceMousePosition.HasValue && InternalFollowCircle.ReceivePositionalInputAt(lastScreenSpaceMousePosition.Value) && // valid action (actions?.Any(isValidTrackingAction) ?? false); } From 2d42a83bb9bd718bac9e6ce5c5dce41632f6f455 Mon Sep 17 00:00:00 2001 From: Joehu Date: Sat, 1 Feb 2020 11:24:29 -0800 Subject: [PATCH 1173/1829] Fix mod select overlay overflowing toolbar at max ui scale --- osu.Game/Overlays/Mods/ModSelectOverlay.cs | 4 +-- osu.Game/Screens/Select/SongSelect.cs | 41 +++++++++++++++------- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/osu.Game/Overlays/Mods/ModSelectOverlay.cs b/osu.Game/Overlays/Mods/ModSelectOverlay.cs index 38f5d54714..af772bc2fa 100644 --- a/osu.Game/Overlays/Mods/ModSelectOverlay.cs +++ b/osu.Game/Overlays/Mods/ModSelectOverlay.cs @@ -66,7 +66,6 @@ namespace osu.Game.Overlays.Mods Waves.ThirdWaveColour = OsuColour.FromHex(@"005774"); Waves.FourthWaveColour = OsuColour.FromHex(@"003a4e"); - Height = 510; Padding = new MarginPadding { Horizontal = -OsuScreen.HORIZONTAL_OVERFLOW_PADDING }; Children = new Drawable[] @@ -85,8 +84,7 @@ namespace osu.Game.Overlays.Mods new Triangles { TriangleScale = 5, - RelativeSizeAxes = Axes.X, - Height = Height, //set the height from the start to ensure correct triangle density. + RelativeSizeAxes = Axes.Both, ColourLight = new Color4(53, 66, 82, 255), ColourDark = new Color4(41, 54, 70, 255), }, diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index f9f015643d..8647012ee7 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -221,23 +221,38 @@ namespace osu.Game.Screens.Select if (ShowFooter) { - AddRangeInternal(new[] + AddRangeInternal(new Drawable[] { - FooterPanels = new Container + new GridContainer // used for max width implementation { - Anchor = Anchor.BottomLeft, - Origin = Anchor.BottomLeft, - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Margin = new MarginPadding { Bottom = Footer.HEIGHT }, - Children = new Drawable[] + RelativeSizeAxes = Axes.Both, + RowDimensions = new[] { - BeatmapOptions = new BeatmapOptionsOverlay(), - ModSelect = new ModSelectOverlay + new Dimension(), + new Dimension(GridSizeMode.Relative, 1f, maxSize: 560), + }, + Content = new[] + { + null, + new Drawable[] { - RelativeSizeAxes = Axes.X, - Origin = Anchor.BottomCentre, - Anchor = Anchor.BottomCentre, + FooterPanels = new Container + { + Anchor = Anchor.BottomLeft, + Origin = Anchor.BottomLeft, + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Bottom = Footer.HEIGHT }, + Children = new Drawable[] + { + BeatmapOptions = new BeatmapOptionsOverlay(), + ModSelect = new ModSelectOverlay + { + RelativeSizeAxes = Axes.Both, + Origin = Anchor.BottomCentre, + Anchor = Anchor.BottomCentre, + } + } + } } } }, From 609ee260302563751370d7e47ad5939cb887e673 Mon Sep 17 00:00:00 2001 From: Joehu Date: Sat, 1 Feb 2020 11:41:41 -0800 Subject: [PATCH 1174/1829] Fix mod select overlay not showing up in test --- .../Visual/UserInterface/TestSceneModSelectOverlay.cs | 1 - osu.Game/Overlays/Mods/ModSelectOverlay.cs | 2 ++ osu.Game/Screens/Select/SongSelect.cs | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs index 12ee4ceb2e..dfc684d376 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModSelectOverlay.cs @@ -60,7 +60,6 @@ namespace osu.Game.Tests.Visual.UserInterface { modSelect = new TestModSelectOverlay { - RelativeSizeAxes = Axes.X, Origin = Anchor.BottomCentre, Anchor = Anchor.BottomCentre, }, diff --git a/osu.Game/Overlays/Mods/ModSelectOverlay.cs b/osu.Game/Overlays/Mods/ModSelectOverlay.cs index af772bc2fa..2868fe1d79 100644 --- a/osu.Game/Overlays/Mods/ModSelectOverlay.cs +++ b/osu.Game/Overlays/Mods/ModSelectOverlay.cs @@ -66,6 +66,8 @@ namespace osu.Game.Overlays.Mods Waves.ThirdWaveColour = OsuColour.FromHex(@"005774"); Waves.FourthWaveColour = OsuColour.FromHex(@"003a4e"); + RelativeSizeAxes = Axes.Both; + Padding = new MarginPadding { Horizontal = -OsuScreen.HORIZONTAL_OVERFLOW_PADDING }; Children = new Drawable[] diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index 8647012ee7..3f80c90b9d 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -247,7 +247,6 @@ namespace osu.Game.Screens.Select BeatmapOptions = new BeatmapOptionsOverlay(), ModSelect = new ModSelectOverlay { - RelativeSizeAxes = Axes.Both, Origin = Anchor.BottomCentre, Anchor = Anchor.BottomCentre, } From 583fee074fa2ef266f5595501646c7b383b1a0fa Mon Sep 17 00:00:00 2001 From: Joehu Date: Sat, 1 Feb 2020 11:50:24 -0800 Subject: [PATCH 1175/1829] Fix mod select not showing up in mod settings test --- osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs index e2ce2341e5..ba0970e123 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs @@ -74,7 +74,6 @@ namespace osu.Game.Tests.Visual.UserInterface Child = modSelect = new TestModSelectOverlay { - RelativeSizeAxes = Axes.X, Origin = Anchor.BottomCentre, Anchor = Anchor.BottomCentre, }; From e894acf53ca21b2d8eb8ce13c7850623b22e2e29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Sat, 1 Feb 2020 22:48:46 +0100 Subject: [PATCH 1176/1829] Make star filter range bindables BindableDoubles Due to using Bindables previously, song select's filter control would not apply tolerance when checking IsDefault, therefore wrongly hiding maps with star ratings above 10.1. --- osu.Game/Screens/Select/FilterControl.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Screens/Select/FilterControl.cs b/osu.Game/Screens/Select/FilterControl.cs index c851b201d7..6a03cfb68e 100644 --- a/osu.Game/Screens/Select/FilterControl.cs +++ b/osu.Game/Screens/Select/FilterControl.cs @@ -149,8 +149,8 @@ namespace osu.Game.Screens.Select private readonly IBindable ruleset = new Bindable(); private readonly Bindable showConverted = new Bindable(); - private readonly Bindable minimumStars = new Bindable(); - private readonly Bindable maximumStars = new Bindable(); + private readonly Bindable minimumStars = new BindableDouble(); + private readonly Bindable maximumStars = new BindableDouble(); public readonly Box Background; From 434c0d92e4ff952b57806b73609b30b327f029f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Sat, 1 Feb 2020 22:50:29 +0100 Subject: [PATCH 1177/1829] Use Bindable{Float,Double}s everywhere To avoid further floating-point comparison bugs, remove all usages of Bindable<{float,double}>, replacing them with their Bindable counterparts. --- .../Objects/Drawables/Connections/FollowPointConnection.cs | 2 +- osu.Game.Rulesets.Osu/Objects/Drawables/DrawableHitCircle.cs | 2 +- .../Objects/Drawables/DrawableRepeatPoint.cs | 2 +- osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs | 2 +- osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTick.cs | 2 +- osu.Game.Rulesets.Osu/Objects/OsuHitObject.cs | 2 +- osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorContainer.cs | 2 +- osu.Game.Rulesets.Osu/UI/OsuResumeOverlay.cs | 2 +- .../Visual/Background/TestSceneUserDimBackgrounds.cs | 4 ++-- osu.Game/Rulesets/Objects/HitObject.cs | 2 +- osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs | 4 ++-- osu.Game/Tests/Visual/ScrollingTestContainer.cs | 2 +- 12 files changed, 14 insertions(+), 14 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Connections/FollowPointConnection.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Connections/FollowPointConnection.cs index 6c4fbbac17..a5e89210f6 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Connections/FollowPointConnection.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Connections/FollowPointConnection.cs @@ -23,7 +23,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Connections /// /// The start time of . /// - public readonly Bindable StartTime = new Bindable(); + public readonly Bindable StartTime = new BindableDouble(); /// /// The which s will exit from. diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableHitCircle.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableHitCircle.cs index 3162f4b379..4ef63bb2a0 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableHitCircle.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableHitCircle.cs @@ -22,7 +22,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables private readonly IBindable positionBindable = new Bindable(); private readonly IBindable stackHeightBindable = new Bindable(); - private readonly IBindable scaleBindable = new Bindable(); + private readonly IBindable scaleBindable = new BindableFloat(); public OsuAction? HitAction => HitArea.HitAction; diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs index 20b31c68f2..8fdcd060e7 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableRepeatPoint.cs @@ -37,7 +37,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables InternalChild = scaleContainer = new ReverseArrowPiece(); } - private readonly IBindable scaleBindable = new Bindable(); + private readonly IBindable scaleBindable = new BindableFloat(); [BackgroundDependencyLoader] private void load() diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs index cd3c572ba0..7403649184 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs @@ -37,7 +37,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables private readonly IBindable positionBindable = new Bindable(); private readonly IBindable stackHeightBindable = new Bindable(); - private readonly IBindable scaleBindable = new Bindable(); + private readonly IBindable scaleBindable = new BindableFloat(); public DrawableSlider(Slider s) : base(s) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTick.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTick.cs index 9d4d9958a1..60b5c335d6 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTick.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTick.cs @@ -52,7 +52,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables }; } - private readonly IBindable scaleBindable = new Bindable(); + private readonly IBindable scaleBindable = new BindableFloat(); [BackgroundDependencyLoader] private void load() diff --git a/osu.Game.Rulesets.Osu/Objects/OsuHitObject.cs b/osu.Game.Rulesets.Osu/Objects/OsuHitObject.cs index 0ba712a83f..15af141c99 100644 --- a/osu.Game.Rulesets.Osu/Objects/OsuHitObject.cs +++ b/osu.Game.Rulesets.Osu/Objects/OsuHitObject.cs @@ -57,7 +57,7 @@ namespace osu.Game.Rulesets.Osu.Objects public double Radius => OBJECT_RADIUS * Scale; - public readonly Bindable ScaleBindable = new Bindable(1); + public readonly Bindable ScaleBindable = new BindableFloat(1); public float Scale { diff --git a/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorContainer.cs b/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorContainer.cs index a463542e64..79b5d1b7f8 100644 --- a/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorContainer.cs +++ b/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorContainer.cs @@ -57,7 +57,7 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor autoCursorScale = config.GetBindable(OsuSetting.AutoCursorSize); autoCursorScale.ValueChanged += _ => calculateScale(); - CursorScale = new Bindable(); + CursorScale = new BindableFloat(); CursorScale.ValueChanged += e => ActiveCursor.Scale = cursorTrail.Scale = new Vector2(e.NewValue); calculateScale(); diff --git a/osu.Game.Rulesets.Osu/UI/OsuResumeOverlay.cs b/osu.Game.Rulesets.Osu/UI/OsuResumeOverlay.cs index ca3030db3e..abba444c73 100644 --- a/osu.Game.Rulesets.Osu/UI/OsuResumeOverlay.cs +++ b/osu.Game.Rulesets.Osu/UI/OsuResumeOverlay.cs @@ -50,7 +50,7 @@ namespace osu.Game.Rulesets.Osu.UI { Add(localCursorContainer = new OsuCursorContainer()); - localCursorScale = new Bindable(); + localCursorScale = new BindableFloat(); localCursorScale.BindTo(localCursorContainer.CursorScale); localCursorScale.BindValueChanged(scale => cursorScaleContainer.Scale = new Vector2(scale.NewValue), true); } diff --git a/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs b/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs index 589ec7e8aa..29bcc7df9e 100644 --- a/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs +++ b/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs @@ -302,8 +302,8 @@ namespace osu.Game.Tests.Visual.Background } public readonly Bindable DimEnabled = new Bindable(); - public readonly Bindable DimLevel = new Bindable(); - public readonly Bindable BlurLevel = new Bindable(); + public readonly Bindable DimLevel = new BindableDouble(); + public readonly Bindable BlurLevel = new BindableDouble(); public new BeatmapCarousel Carousel => base.Carousel; diff --git a/osu.Game/Rulesets/Objects/HitObject.cs b/osu.Game/Rulesets/Objects/HitObject.cs index bd96441ebb..c09844e0c6 100644 --- a/osu.Game/Rulesets/Objects/HitObject.cs +++ b/osu.Game/Rulesets/Objects/HitObject.cs @@ -34,7 +34,7 @@ namespace osu.Game.Rulesets.Objects /// public event Action DefaultsApplied; - public readonly Bindable StartTimeBindable = new Bindable(); + public readonly Bindable StartTimeBindable = new BindableDouble(); /// /// The time at which the HitObject starts. diff --git a/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs b/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs index 3ced9ee753..50fd127093 100644 --- a/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs +++ b/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs @@ -36,7 +36,7 @@ namespace osu.Game.Screens.Backgrounds /// /// The amount of blur to be applied in addition to user-specified blur. /// - public readonly Bindable BlurAmount = new Bindable(); + public readonly Bindable BlurAmount = new BindableFloat(); internal readonly IBindable IsBreakTime = new Bindable(); @@ -119,7 +119,7 @@ namespace osu.Game.Screens.Backgrounds /// /// Used in contexts where there can potentially be both user and screen-specified blurring occuring at the same time, such as in /// - public readonly Bindable BlurAmount = new Bindable(); + public readonly Bindable BlurAmount = new BindableFloat(); public Background Background { diff --git a/osu.Game/Tests/Visual/ScrollingTestContainer.cs b/osu.Game/Tests/Visual/ScrollingTestContainer.cs index bdad3d278c..161ebe7030 100644 --- a/osu.Game/Tests/Visual/ScrollingTestContainer.cs +++ b/osu.Game/Tests/Visual/ScrollingTestContainer.cs @@ -47,7 +47,7 @@ namespace osu.Game.Tests.Visual public readonly Bindable Direction = new Bindable(); IBindable IScrollingInfo.Direction => Direction; - public readonly Bindable TimeRange = new Bindable(1000) { Value = 1000 }; + public readonly Bindable TimeRange = new BindableDouble(1000) { Value = 1000 }; IBindable IScrollingInfo.TimeRange => TimeRange; public readonly TestScrollAlgorithm Algorithm = new TestScrollAlgorithm(); From 36116f8c45f06ffa0256f6e2ba53a67182a74753 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 2 Feb 2020 12:03:51 +0300 Subject: [PATCH 1178/1829] Refactor ruleset presentation --- .../TestSceneUserProfileRecentSection.cs | 16 ++++++++++ .../Requests/Responses/APIRecentActivity.cs | 31 +------------------ .../Sections/Recent/DrawableRecentActivity.cs | 26 ++++++++++++---- 3 files changed, 37 insertions(+), 36 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneUserProfileRecentSection.cs b/osu.Game.Tests/Visual/Online/TestSceneUserProfileRecentSection.cs index 532aaa9c92..06091f3c81 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneUserProfileRecentSection.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneUserProfileRecentSection.cs @@ -136,6 +136,22 @@ namespace osu.Game.Tests.Visual.Online Beatmap = dummyBeatmap, }, new APIRecentActivity + { + User = dummyUser, + Type = RecentActivityType.Rank, + Rank = 1, + Mode = "vitaru", + Beatmap = dummyBeatmap, + }, + new APIRecentActivity + { + User = dummyUser, + Type = RecentActivityType.Rank, + Rank = 1, + Mode = "fruits", + Beatmap = dummyBeatmap, + }, + new APIRecentActivity { User = dummyUser, Type = RecentActivityType.RankLost, diff --git a/osu.Game/Online/API/Requests/Responses/APIRecentActivity.cs b/osu.Game/Online/API/Requests/Responses/APIRecentActivity.cs index b416085217..8695d09570 100644 --- a/osu.Game/Online/API/Requests/Responses/APIRecentActivity.cs +++ b/osu.Game/Online/API/Requests/Responses/APIRecentActivity.cs @@ -41,37 +41,8 @@ namespace osu.Game.Online.API.Requests.Responses [JsonProperty("count")] public int Count; - public string Mode; - [JsonProperty("mode")] - private string mode - { - set - { - switch (value) - { - default: - Mode = value; - return; - - case "osu": - Mode = "osu!"; - return; - - case "mania": - Mode = "osu!mania"; - return; - - case "taiko": - Mode = "osu!taiko"; - return; - - case "fruits": - Mode = "osu!catch"; - return; - } - } - } + public string Mode; [JsonProperty("beatmap")] public RecentActivityBeatmap Beatmap; diff --git a/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs b/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs index 3f8ab93abd..5a315b59b4 100644 --- a/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs +++ b/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.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.Linq; using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; @@ -12,6 +13,7 @@ using osu.Game.Online.API.Requests; using osu.Game.Online.API.Requests.Responses; using osu.Game.Online.Chat; using osu.Game.Online.Leaderboards; +using osu.Game.Rulesets; namespace osu.Game.Overlays.Profile.Sections.Recent { @@ -19,7 +21,11 @@ namespace osu.Game.Overlays.Profile.Sections.Recent { private const int font_size = 14; - private IAPIProvider api; + [Resolved] + private IAPIProvider api { get; set; } + + [Resolved] + private RulesetStore rulesets { get; set; } private readonly APIRecentActivity activity; @@ -31,10 +37,8 @@ namespace osu.Game.Overlays.Profile.Sections.Recent } [BackgroundDependencyLoader] - private void load(IAPIProvider api, OverlayColourProvider colourProvider) + private void load(OverlayColourProvider colourProvider) { - this.api = api; - RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; AddInternal(new GridContainer @@ -118,6 +122,16 @@ namespace osu.Game.Overlays.Profile.Sections.Recent } } + private string getRulesetName() + { + var shortName = activity.Mode; + + if (rulesets.AvailableRulesets.Select(r => r.ShortName).Contains(shortName)) + return rulesets.AvailableRulesets.FirstOrDefault(r => r.ShortName == shortName).Name; + + return shortName; + } + private string getLinkArgument(string url) => MessageFormatter.GetLinkDetails($"{api.Endpoint}{url}").Argument; private FontUsage getLinkFont(FontWeight fontWeight = FontWeight.Regular) @@ -185,14 +199,14 @@ namespace osu.Game.Overlays.Profile.Sections.Recent addUserLink(); addText($" achieved rank #{activity.Rank} on "); addBeatmapLink(); - addText($" ({activity.Mode})"); + addText($" ({getRulesetName()})"); break; case RecentActivityType.RankLost: addUserLink(); addText(" has lost first place on "); addBeatmapLink(); - addText($" ({activity.Mode})"); + addText($" ({getRulesetName()})"); break; case RecentActivityType.UserSupportAgain: From a70385f2b26058cec6da3d7ebb7d150cbe54967c Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 2 Feb 2020 12:19:09 +0300 Subject: [PATCH 1179/1829] Simplify getRulesetName --- .../Profile/Sections/Recent/DrawableRecentActivity.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs b/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs index 5a315b59b4..f538833eb0 100644 --- a/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs +++ b/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs @@ -126,10 +126,7 @@ namespace osu.Game.Overlays.Profile.Sections.Recent { var shortName = activity.Mode; - if (rulesets.AvailableRulesets.Select(r => r.ShortName).Contains(shortName)) - return rulesets.AvailableRulesets.FirstOrDefault(r => r.ShortName == shortName).Name; - - return shortName; + return rulesets.AvailableRulesets.FirstOrDefault(r => r.ShortName == shortName)?.Name ?? shortName; } private string getLinkArgument(string url) => MessageFormatter.GetLinkDetails($"{api.Endpoint}{url}").Argument; From e2589b2dcb6cdaaef86485ce04484635c7d0ed92 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Sun, 2 Feb 2020 11:24:28 +0100 Subject: [PATCH 1180/1829] Rename drawable --- .../Objects/Drawables/Pieces/SliderBall.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs index 1fa27b6ff6..4599044912 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs @@ -24,7 +24,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces private readonly Slider slider; public readonly Drawable FollowCircle; - public readonly Drawable InternalFollowCircle; + public readonly Drawable TrackingArea; private readonly DrawableSlider drawableSlider; public SliderBall(Slider slider, DrawableSlider drawableSlider = null) @@ -39,7 +39,8 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces Children = new[] { - InternalFollowCircle = new CircularContainer + // This is separate from the visible followcircle to ensure consistent internal tracking area (needed to match osu-stable) + TrackingArea = new CircularContainer { Origin = Anchor.Centre, Anchor = Anchor.Centre, @@ -103,8 +104,8 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces tracking = value; - // Cursor input is checked against the internal circle, which scales instantly to match osu-stable behaviour - InternalFollowCircle.ScaleTo(tracking ? 2.4f : 1f); + // Tracking area is bigger than the visible followcircle and scales instantly to match osu-stable + TrackingArea.ScaleTo(tracking ? 2.4f : 1f); FollowCircle.ScaleTo(tracking ? 2f : 1f, 300, Easing.OutQuint); FollowCircle.FadeTo(tracking ? 1f : 0, 300, Easing.OutQuint); } @@ -159,7 +160,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces // in valid time range Time.Current >= slider.StartTime && Time.Current < slider.EndTime && // in valid position range - lastScreenSpaceMousePosition.HasValue && InternalFollowCircle.ReceivePositionalInputAt(lastScreenSpaceMousePosition.Value) && + lastScreenSpaceMousePosition.HasValue && TrackingArea.ReceivePositionalInputAt(lastScreenSpaceMousePosition.Value) && // valid action (actions?.Any(isValidTrackingAction) ?? false); } From 52aae684116fbed2109b168dcb2a534da491fb88 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Sun, 2 Feb 2020 17:52:34 +0700 Subject: [PATCH 1181/1829] Adjust profile scores to closer match osu-web --- .../Profile/Sections/Ranks/DrawableProfileScore.cs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs index 5196bef48d..13f4d9a3a5 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs @@ -23,7 +23,8 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks public class DrawableProfileScore : CompositeDrawable { private const int performance_width = 80; - private const int content_padding = 10; + private const int content_padding_left = 10; + private const int content_padding_right = 30; protected readonly ScoreInfo Score; @@ -51,7 +52,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks new Container { RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding { Left = content_padding, Right = performance_width + content_padding }, + Padding = new MarginPadding { Left = content_padding_left, Right = performance_width + content_padding_right }, Children = new Drawable[] { new FillFlowContainer @@ -142,17 +143,21 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks { new Box { + Anchor = Anchor.TopRight, + Origin = Anchor.TopRight, RelativeSizeAxes = Axes.Both, - Size = new Vector2(1, 0.5f), + Size = new Vector2(1.06f, 0.5f), Colour = Color4.Black.Opacity(0.5f), Shear = new Vector2(-0.45f, 0), EdgeSmoothness = new Vector2(2, 0), }, new Box { + Anchor = Anchor.TopRight, + Origin = Anchor.TopRight, RelativeSizeAxes = Axes.Both, RelativePositionAxes = Axes.Y, - Size = new Vector2(1, -0.5f), + Size = new Vector2(1.06f, -0.5f), Position = new Vector2(0, 1), Colour = Color4.Black.Opacity(0.5f), Shear = new Vector2(0.45f, 0), From abccf05155906d24c0b1757f89f3ac0b5f206a11 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Sun, 2 Feb 2020 14:46:50 +0300 Subject: [PATCH 1182/1829] Update visibility of each key counter instead of this container For isolating changing visibility of the key counter display based on config and internal values from just fading the container. --- osu.Game/Screens/Play/KeyCounterDisplay.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Play/KeyCounterDisplay.cs b/osu.Game/Screens/Play/KeyCounterDisplay.cs index 9c107f0293..5672042a98 100644 --- a/osu.Game/Screens/Play/KeyCounterDisplay.cs +++ b/osu.Game/Screens/Play/KeyCounterDisplay.cs @@ -5,6 +5,7 @@ using System; using System.Linq; using osu.Framework.Allocation; using osu.Framework.Bindables; +using osu.Framework.Extensions.IEnumerableExtensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Input.Events; @@ -100,7 +101,9 @@ namespace osu.Game.Screens.Play } } - private void updateVisibility() => this.FadeTo(Visible.Value || configVisibility.Value ? 1 : 0, duration); + private void updateVisibility() => + // Change visibility of all key counters internally to isolate from showing them by fading in this container. + Children.ForEach(k => k.FadeTo(Visible.Value || ConfigVisibility.Value ? 1 : 0, duration)); public override bool HandleNonPositionalInput => receptor == null; public override bool HandlePositionalInput => receptor == null; From 6a11c3a8f9edcdf04b386215d5601e6fba9ba2d3 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Sun, 2 Feb 2020 14:48:07 +0300 Subject: [PATCH 1183/1829] Expose ConfigVisibility bindable for testing purposes --- osu.Game/Screens/Play/KeyCounterDisplay.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game/Screens/Play/KeyCounterDisplay.cs b/osu.Game/Screens/Play/KeyCounterDisplay.cs index 5672042a98..d7b4913d3c 100644 --- a/osu.Game/Screens/Play/KeyCounterDisplay.cs +++ b/osu.Game/Screens/Play/KeyCounterDisplay.cs @@ -21,7 +21,7 @@ namespace osu.Game.Screens.Play private const double key_fade_time = 80; public readonly Bindable Visible = new Bindable(true); - private readonly Bindable configVisibility = new Bindable(); + protected readonly Bindable ConfigVisibility = new Bindable(); public KeyCounterDisplay() { @@ -43,7 +43,7 @@ namespace osu.Game.Screens.Play [BackgroundDependencyLoader] private void load(OsuConfigManager config) { - config.BindWith(OsuSetting.KeyOverlay, configVisibility); + config.BindWith(OsuSetting.KeyOverlay, ConfigVisibility); } protected override void LoadComplete() @@ -51,7 +51,7 @@ namespace osu.Game.Screens.Play base.LoadComplete(); Visible.BindValueChanged(_ => updateVisibility()); - configVisibility.BindValueChanged(_ => updateVisibility(), true); + ConfigVisibility.BindValueChanged(_ => updateVisibility(), true); } private bool isCounting = true; From 6103674b5481055f2a34cb2f44d09889583793bb Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Sun, 2 Feb 2020 14:50:05 +0300 Subject: [PATCH 1184/1829] Add tests for changing HUD visibility on hidden key counter configuration --- .../Visual/Gameplay/TestSceneHUDOverlay.cs | 57 ++++++++++++++++++- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs index ee58219cd3..e34e87d8df 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs @@ -2,18 +2,21 @@ // See the LICENCE file in the repository root for full licence text. using System; +using System.Linq; using NUnit.Framework; using osu.Framework.Allocation; +using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Game.Configuration; using osu.Game.Rulesets.Mods; using osu.Game.Screens.Play; +using osuTK.Input; namespace osu.Game.Tests.Visual.Gameplay { public class TestSceneHUDOverlay : ManualInputManagerTestScene { - private HUDOverlay hudOverlay; + private TestHUDOverlay hudOverlay; private Drawable hideTarget => hudOverlay.KeyCounter; // best way of checking hideTargets without exposing. @@ -28,6 +31,7 @@ namespace osu.Game.Tests.Visual.Gameplay AddAssert("showhud is set", () => hudOverlay.ShowHud.Value); AddAssert("hidetarget is visible", () => hideTarget.IsPresent); + AddAssert("key counters are visible", () => hudOverlay.KeyCounter.All(k => k.IsPresent)); AddAssert("pause button is visible", () => hudOverlay.HoldToQuit.IsPresent); } @@ -50,6 +54,9 @@ namespace osu.Game.Tests.Visual.Gameplay AddUntilStep("hidetarget is hidden", () => !hideTarget.IsPresent); AddAssert("pause button is still visible", () => hudOverlay.HoldToQuit.IsPresent); + + // Key counters should not be affected by this, only the key counter container will be hidden as checked above. + AddAssert("key counters not affected", () => hudOverlay.KeyCounter.All(k => k.IsPresent)); } [Test] @@ -68,14 +75,58 @@ namespace osu.Game.Tests.Visual.Gameplay AddAssert("config unchanged", () => originalConfigValue == config.Get(OsuSetting.ShowInterface)); } - private void createNew(Action action = null) + [Test] + public void TestChangeHUDVisibilityOnHiddenKeyCounter() + { + createNew(); + + AddStep("set keycounter visible false", () => + { + hudOverlay.KeyCounter.ConfigVisibility.Value = false; + hudOverlay.KeyCounter.Visible.Value = false; + }); + + AddStep("set showhud false", () => hudOverlay.ShowHud.Value = false); + AddUntilStep("hidetarget is hidden", () => !hideTarget.IsPresent); + AddAssert("key counters hidden", () => hudOverlay.KeyCounter.All(k => !k.IsPresent)); + + AddStep("set showhud true", () => hudOverlay.ShowHud.Value = true); + AddUntilStep("hidetarget is visible", () => hideTarget.IsPresent); + AddAssert("key counters still hidden", () => hudOverlay.KeyCounter.All(k => !k.IsPresent)); + } + + private void createNew(Action action = null) { AddStep("create overlay", () => { - Child = hudOverlay = new HUDOverlay(null, null, null, Array.Empty()); + Child = hudOverlay = new TestHUDOverlay(); action?.Invoke(hudOverlay); }); } + + private class TestHUDOverlay : HUDOverlay + { + public new TestKeyCounterDisplay KeyCounter => (TestKeyCounterDisplay)base.KeyCounter; + + protected override KeyCounterDisplay CreateKeyCounter() => new TestKeyCounterDisplay + { + Anchor = Anchor.BottomRight, + Origin = Anchor.BottomRight, + Margin = new MarginPadding(10), + }; + + public TestHUDOverlay() + : base(null, null, null, Array.Empty()) + { + // Add any key just to display the key counter visually. + KeyCounter.Add(new KeyCounterKeyboard(Key.Space)); + } + } + + private class TestKeyCounterDisplay : KeyCounterDisplay + { + public new Bindable ConfigVisibility => base.ConfigVisibility; + } } } From f7abfdb40e8fcea47b3ddfc8bb33550f9bc60ba7 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Sun, 2 Feb 2020 14:33:48 +0100 Subject: [PATCH 1185/1829] Remove unnecessary parameter --- osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs index 4599044912..a81ac3f4ff 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; @@ -44,8 +44,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces { Origin = Anchor.Centre, Anchor = Anchor.Centre, - RelativeSizeAxes = Axes.Both, - Alpha = 0 + RelativeSizeAxes = Axes.Both }, FollowCircle = new FollowCircleContainer { From 35032e2ddd1b0d76bd1615c25dd17de7cd3cee10 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Sun, 2 Feb 2020 14:34:06 +0100 Subject: [PATCH 1186/1829] Make variables private --- .../Objects/Drawables/Pieces/SliderBall.cs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs index a81ac3f4ff..b89b0cafc4 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; @@ -23,8 +23,8 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces public Func GetInitialHitAction; private readonly Slider slider; - public readonly Drawable FollowCircle; - public readonly Drawable TrackingArea; + private readonly Drawable followCircle; + private readonly Drawable trackingArea; private readonly DrawableSlider drawableSlider; public SliderBall(Slider slider, DrawableSlider drawableSlider = null) @@ -40,13 +40,13 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces Children = new[] { // This is separate from the visible followcircle to ensure consistent internal tracking area (needed to match osu-stable) - TrackingArea = new CircularContainer + trackingArea = new CircularContainer { Origin = Anchor.Centre, Anchor = Anchor.Centre, RelativeSizeAxes = Axes.Both }, - FollowCircle = new FollowCircleContainer + followCircle = new FollowCircleContainer { Origin = Anchor.Centre, Anchor = Anchor.Centre, @@ -104,9 +104,9 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces tracking = value; // Tracking area is bigger than the visible followcircle and scales instantly to match osu-stable - TrackingArea.ScaleTo(tracking ? 2.4f : 1f); - FollowCircle.ScaleTo(tracking ? 2f : 1f, 300, Easing.OutQuint); - FollowCircle.FadeTo(tracking ? 1f : 0, 300, Easing.OutQuint); + trackingArea.ScaleTo(tracking ? 2.4f : 1f); + followCircle.ScaleTo(tracking ? 2f : 1f, 300, Easing.OutQuint); + followCircle.FadeTo(tracking ? 1f : 0, 300, Easing.OutQuint); } } @@ -159,7 +159,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces // in valid time range Time.Current >= slider.StartTime && Time.Current < slider.EndTime && // in valid position range - lastScreenSpaceMousePosition.HasValue && TrackingArea.ReceivePositionalInputAt(lastScreenSpaceMousePosition.Value) && + lastScreenSpaceMousePosition.HasValue && trackingArea.ReceivePositionalInputAt(lastScreenSpaceMousePosition.Value) && // valid action (actions?.Any(isValidTrackingAction) ?? false); } From 122fd63ac467912b80ffea3d9d1d90637ba47dcc Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Sun, 2 Feb 2020 21:05:20 +0700 Subject: [PATCH 1187/1829] Inline single-use constants --- .../Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs index 13f4d9a3a5..7400bed04e 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// 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; @@ -23,8 +23,6 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks public class DrawableProfileScore : CompositeDrawable { private const int performance_width = 80; - private const int content_padding_left = 10; - private const int content_padding_right = 30; protected readonly ScoreInfo Score; @@ -52,7 +50,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks new Container { RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding { Left = content_padding_left, Right = performance_width + content_padding_right }, + Padding = new MarginPadding { Left = 10, Right = performance_width + 30 }, Children = new Drawable[] { new FillFlowContainer From a641069ec2b9ef3b7f47da143084facfecaaa719 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Sun, 2 Feb 2020 21:07:23 +0700 Subject: [PATCH 1188/1829] Change profile score background colour --- osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs | 4 ++-- .../Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs b/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs index 717ec4fb1a..f65c909155 100644 --- a/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs +++ b/osu.Game/Overlays/Profile/Sections/ProfileItemContainer.cs @@ -44,8 +44,8 @@ namespace osu.Game.Overlays.Profile.Sections [BackgroundDependencyLoader] private void load(OverlayColourProvider colourProvider) { - background.Colour = idleColour = colourProvider.Background4; - hoverColour = colourProvider.Background3; + background.Colour = idleColour = colourProvider.Background3; + hoverColour = colourProvider.Background2; } protected override bool OnHover(HoverEvent e) diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs index 7400bed04e..55ed80cc04 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// 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; @@ -145,7 +145,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks Origin = Anchor.TopRight, RelativeSizeAxes = Axes.Both, Size = new Vector2(1.06f, 0.5f), - Colour = Color4.Black.Opacity(0.5f), + Colour = colourProvider.Background4, Shear = new Vector2(-0.45f, 0), EdgeSmoothness = new Vector2(2, 0), }, @@ -157,7 +157,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks RelativePositionAxes = Axes.Y, Size = new Vector2(1.06f, -0.5f), Position = new Vector2(0, 1), - Colour = Color4.Black.Opacity(0.5f), + Colour = colourProvider.Background4, Shear = new Vector2(0.45f, 0), EdgeSmoothness = new Vector2(2, 0), }, From 30a5835bdbc24abc82d09f8e6832d5aa9aaf37a5 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 2 Feb 2020 23:07:39 +0900 Subject: [PATCH 1189/1829] Combine link flows and simplify new line addition --- .../Profile/Header/BottomHeaderContainer.cs | 80 ++++++++----------- 1 file changed, 34 insertions(+), 46 deletions(-) diff --git a/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs b/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs index 469f9caf4a..bca72666de 100644 --- a/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs +++ b/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs @@ -15,7 +15,6 @@ using osu.Game.Graphics.Containers; using osu.Game.Users; using osuTK; using osuTK.Graphics; -using static osu.Framework.Graphics.Containers.TextFlowContainer; namespace osu.Game.Overlays.Profile.Header { @@ -23,8 +22,7 @@ namespace osu.Game.Overlays.Profile.Header { public readonly Bindable User = new Bindable(); - private LinkFlowContainer topLinkContainer; - private LinkFlowContainer bottomLinkContainer; + private LinkFlowContainer linkContainer; private Color4 iconColour; @@ -45,26 +43,12 @@ namespace osu.Game.Overlays.Profile.Header RelativeSizeAxes = Axes.Both, Colour = colourProvider.Background4 }, - new FillFlowContainer + linkContainer = new LinkFlowContainer(text => text.Font = text.Font.With(size: 12)) { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, - Direction = FillDirection.Vertical, Padding = new MarginPadding { Horizontal = UserProfileOverlay.CONTENT_X_MARGIN, Vertical = 10 }, Spacing = new Vector2(0, 10), - Children = new Drawable[] - { - topLinkContainer = new LinkFlowContainer(text => text.Font = text.Font.With(size: 12)) - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - }, - bottomLinkContainer = new LinkFlowContainer(text => text.Font = text.Font.With(size: 12)) - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - } - } } }; @@ -73,44 +57,43 @@ namespace osu.Game.Overlays.Profile.Header private void updateDisplay(User user) { - topLinkContainer.Clear(); - bottomLinkContainer.Clear(); + linkContainer.Clear(); if (user == null) return; if (user.JoinDate.ToUniversalTime().Year < 2008) - topLinkContainer.AddText("Here since the beginning"); + linkContainer.AddText("Here since the beginning"); else { - topLinkContainer.AddText("Joined "); - topLinkContainer.AddText(new DrawableDate(user.JoinDate), embolden); + linkContainer.AddText("Joined "); + linkContainer.AddText(new DrawableDate(user.JoinDate), embolden); } - addSpacer(topLinkContainer); + addSpacer(linkContainer); if (user.IsOnline) { - topLinkContainer.AddText("Currently online"); - addSpacer(topLinkContainer); + linkContainer.AddText("Currently online"); + addSpacer(linkContainer); } else if (user.LastVisit.HasValue) { - topLinkContainer.AddText("Last seen "); - topLinkContainer.AddText(new DrawableDate(user.LastVisit.Value), embolden); + linkContainer.AddText("Last seen "); + linkContainer.AddText(new DrawableDate(user.LastVisit.Value), embolden); - addSpacer(topLinkContainer); + addSpacer(linkContainer); } if (user.PlayStyles?.Length > 0) { - topLinkContainer.AddText("Plays with "); - topLinkContainer.AddText(string.Join(", ", user.PlayStyles.Select(style => style.GetDescription())), embolden); + linkContainer.AddText("Plays with "); + linkContainer.AddText(string.Join(", ", user.PlayStyles.Select(style => style.GetDescription())), embolden); - addSpacer(topLinkContainer); + addSpacer(linkContainer); } - topLinkContainer.AddText("Contributed "); - topLinkContainer.AddLink($@"{user.PostCount:#,##0} forum posts", $"https://osu.ppy.sh/users/{user.Id}/posts", creationParameters: embolden); + linkContainer.AddText("Contributed "); + linkContainer.AddLink($@"{user.PostCount:#,##0} forum posts", $"https://osu.ppy.sh/users/{user.Id}/posts", creationParameters: embolden); string websiteWithoutProtocol = user.Website; @@ -123,46 +106,51 @@ namespace osu.Game.Overlays.Profile.Header } } + requireNewLineOnAddInfo = true; + tryAddInfo(FontAwesome.Solid.MapMarker, user.Location); tryAddInfo(OsuIcon.Heart, user.Interests); tryAddInfo(FontAwesome.Solid.Suitcase, user.Occupation); - bottomLinkContainer.NewLine(); + + requireNewLineOnAddInfo = true; + if (!string.IsNullOrEmpty(user.Twitter)) tryAddInfo(FontAwesome.Brands.Twitter, "@" + user.Twitter, $@"https://twitter.com/{user.Twitter}"); tryAddInfo(FontAwesome.Brands.Discord, user.Discord); tryAddInfo(FontAwesome.Brands.Skype, user.Skype, @"skype:" + user.Skype + @"?chat"); tryAddInfo(FontAwesome.Brands.Lastfm, user.Lastfm, $@"https://last.fm/users/{user.Lastfm}"); tryAddInfo(FontAwesome.Solid.Link, websiteWithoutProtocol, user.Website); - - // Hide the container to prevent adding unnecessary padding if it has no children other than the NewLineContainer - if (bottomLinkContainer.Children.All(child => child is NewLineContainer)) - bottomLinkContainer.Hide(); - else - // this is needed if user gets changed without the whole header being reloaded - bottomLinkContainer.Show(); } private void addSpacer(OsuTextFlowContainer textFlow) => textFlow.AddArbitraryDrawable(new Container { Width = 15 }); + private bool requireNewLineOnAddInfo; + private void tryAddInfo(IconUsage icon, string content, string link = null) { if (string.IsNullOrEmpty(content)) return; + if (requireNewLineOnAddInfo) + { + linkContainer.NewLine(); + requireNewLineOnAddInfo = false; + } + // newlines could be contained in API returned user content. content = content.Replace("\n", " "); - bottomLinkContainer.AddIcon(icon, text => + linkContainer.AddIcon(icon, text => { text.Font = text.Font.With(size: 10); text.Colour = iconColour; }); if (link != null) - bottomLinkContainer.AddLink(" " + content, link, creationParameters: embolden); + linkContainer.AddLink(" " + content, link, creationParameters: embolden); else - bottomLinkContainer.AddText(" " + content, embolden); + linkContainer.AddText(" " + content, embolden); - addSpacer(bottomLinkContainer); + addSpacer(linkContainer); } private void embolden(SpriteText text) => text.Font = text.Font.With(weight: FontWeight.Bold); From 79efcbd6f315c4cc6e6d723d09f544d75838dde7 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Sun, 2 Feb 2020 21:08:16 +0700 Subject: [PATCH 1190/1829] Fix performance background width --- .../Sections/Ranks/DrawableProfileScore.cs | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs index 55ed80cc04..07a85be041 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs @@ -1,10 +1,10 @@ // 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 JetBrains.Annotations; using osu.Framework.Allocation; -using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; @@ -16,14 +16,16 @@ using osu.Game.Online.Leaderboards; using osu.Game.Rulesets.UI; using osu.Game.Scoring; using osuTK; -using osuTK.Graphics; namespace osu.Game.Overlays.Profile.Sections.Ranks { public class DrawableProfileScore : CompositeDrawable { + private const int height = 40; private const int performance_width = 80; + private const float performance_background_shear = 0.45f; + protected readonly ScoreInfo Score; [Resolved] @@ -37,12 +39,14 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks Score = score; RelativeSizeAxes = Axes.X; - Height = 40; + Height = height; } [BackgroundDependencyLoader] private void load() { + float performance_background_width = performance_width + (height / 4f * MathF.Tan(performance_background_shear)); + AddInternal(new ProfileItemContainer { Children = new Drawable[] @@ -143,22 +147,24 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks { Anchor = Anchor.TopRight, Origin = Anchor.TopRight, - RelativeSizeAxes = Axes.Both, - Size = new Vector2(1.06f, 0.5f), + RelativeSizeAxes = Axes.Y, + Width = performance_background_width, + Height = 0.5f, Colour = colourProvider.Background4, - Shear = new Vector2(-0.45f, 0), + Shear = new Vector2(-performance_background_shear, 0), EdgeSmoothness = new Vector2(2, 0), }, new Box { Anchor = Anchor.TopRight, Origin = Anchor.TopRight, - RelativeSizeAxes = Axes.Both, + RelativeSizeAxes = Axes.Y, RelativePositionAxes = Axes.Y, - Size = new Vector2(1.06f, -0.5f), + Width = performance_background_width, + Height = -0.5f, Position = new Vector2(0, 1), Colour = colourProvider.Background4, - Shear = new Vector2(0.45f, 0), + Shear = new Vector2(performance_background_shear, 0), EdgeSmoothness = new Vector2(2, 0), }, createDrawablePerformance().With(d => From aa13b605a4877458470173f33ddd0946b26a781a Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Sun, 2 Feb 2020 21:34:35 +0700 Subject: [PATCH 1191/1829] Fix inconsistent local variable naming --- .../Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs index 07a85be041..930f9b8a43 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs @@ -45,7 +45,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks [BackgroundDependencyLoader] private void load() { - float performance_background_width = performance_width + (height / 4f * MathF.Tan(performance_background_shear)); + float performanceBackgroundWidth = performance_width + (height / 4f * MathF.Tan(performance_background_shear)); AddInternal(new ProfileItemContainer { @@ -148,7 +148,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks Anchor = Anchor.TopRight, Origin = Anchor.TopRight, RelativeSizeAxes = Axes.Y, - Width = performance_background_width, + Width = performanceBackgroundWidth, Height = 0.5f, Colour = colourProvider.Background4, Shear = new Vector2(-performance_background_shear, 0), @@ -160,7 +160,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks Origin = Anchor.TopRight, RelativeSizeAxes = Axes.Y, RelativePositionAxes = Axes.Y, - Width = performance_background_width, + Width = performanceBackgroundWidth, Height = -0.5f, Position = new Vector2(0, 1), Colour = colourProvider.Background4, From 0a186fe7229380551c663cb828f299bb6634a5b3 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Sun, 2 Feb 2020 22:37:58 +0700 Subject: [PATCH 1192/1829] Avoid calculating constants in load() --- .../Profile/Sections/Ranks/DrawableProfileScore.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs index 930f9b8a43..1905728442 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs @@ -25,6 +25,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks private const int performance_width = 80; private const float performance_background_shear = 0.45f; + private float performance_background_width = performance_width + (height / 4f * MathF.Tan(performance_background_shear)); protected readonly ScoreInfo Score; @@ -45,8 +46,6 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks [BackgroundDependencyLoader] private void load() { - float performanceBackgroundWidth = performance_width + (height / 4f * MathF.Tan(performance_background_shear)); - AddInternal(new ProfileItemContainer { Children = new Drawable[] @@ -148,7 +147,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks Anchor = Anchor.TopRight, Origin = Anchor.TopRight, RelativeSizeAxes = Axes.Y, - Width = performanceBackgroundWidth, + Width = performance_background_width, Height = 0.5f, Colour = colourProvider.Background4, Shear = new Vector2(-performance_background_shear, 0), @@ -160,7 +159,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks Origin = Anchor.TopRight, RelativeSizeAxes = Axes.Y, RelativePositionAxes = Axes.Y, - Width = performanceBackgroundWidth, + Width = performance_background_width, Height = -0.5f, Position = new Vector2(0, 1), Colour = colourProvider.Background4, From 28e340c4860b72a5a4ca6a35415a8af8d032d45f Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Sun, 2 Feb 2020 18:39:39 +0300 Subject: [PATCH 1193/1829] Inherit Container and fade the key flow instead of individual children --- .../Visual/Gameplay/TestSceneHUDOverlay.cs | 15 +++++++-------- osu.Game/Screens/Play/KeyCounterDisplay.cs | 18 +++++++++++++----- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs index e34e87d8df..11064d0ffd 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs @@ -2,11 +2,10 @@ // See the LICENCE file in the repository root for full licence text. using System; -using System.Linq; using NUnit.Framework; using osu.Framework.Allocation; -using osu.Framework.Bindables; using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; using osu.Game.Configuration; using osu.Game.Rulesets.Mods; using osu.Game.Screens.Play; @@ -31,7 +30,7 @@ namespace osu.Game.Tests.Visual.Gameplay AddAssert("showhud is set", () => hudOverlay.ShowHud.Value); AddAssert("hidetarget is visible", () => hideTarget.IsPresent); - AddAssert("key counters are visible", () => hudOverlay.KeyCounter.All(k => k.IsPresent)); + AddAssert("key counter flow is visible", () => hudOverlay.KeyCounter.KeyFlow.IsPresent); AddAssert("pause button is visible", () => hudOverlay.HoldToQuit.IsPresent); } @@ -55,8 +54,8 @@ namespace osu.Game.Tests.Visual.Gameplay AddUntilStep("hidetarget is hidden", () => !hideTarget.IsPresent); AddAssert("pause button is still visible", () => hudOverlay.HoldToQuit.IsPresent); - // Key counters should not be affected by this, only the key counter container will be hidden as checked above. - AddAssert("key counters not affected", () => hudOverlay.KeyCounter.All(k => k.IsPresent)); + // Key counter flow container should not be affected by this, only the key counter display will be hidden as checked above. + AddAssert("key counter flow not affected", () => hudOverlay.KeyCounter.KeyFlow.IsPresent); } [Test] @@ -88,11 +87,11 @@ namespace osu.Game.Tests.Visual.Gameplay AddStep("set showhud false", () => hudOverlay.ShowHud.Value = false); AddUntilStep("hidetarget is hidden", () => !hideTarget.IsPresent); - AddAssert("key counters hidden", () => hudOverlay.KeyCounter.All(k => !k.IsPresent)); + AddAssert("key counters hidden", () => !hudOverlay.KeyCounter.KeyFlow.IsPresent); AddStep("set showhud true", () => hudOverlay.ShowHud.Value = true); AddUntilStep("hidetarget is visible", () => hideTarget.IsPresent); - AddAssert("key counters still hidden", () => hudOverlay.KeyCounter.All(k => !k.IsPresent)); + AddAssert("key counters still hidden", () => !hudOverlay.KeyCounter.KeyFlow.IsPresent); } private void createNew(Action action = null) @@ -126,7 +125,7 @@ namespace osu.Game.Tests.Visual.Gameplay private class TestKeyCounterDisplay : KeyCounterDisplay { - public new Bindable ConfigVisibility => base.ConfigVisibility; + public new Container KeyFlow => base.KeyFlow; } } } diff --git a/osu.Game/Screens/Play/KeyCounterDisplay.cs b/osu.Game/Screens/Play/KeyCounterDisplay.cs index d7b4913d3c..b03f663371 100644 --- a/osu.Game/Screens/Play/KeyCounterDisplay.cs +++ b/osu.Game/Screens/Play/KeyCounterDisplay.cs @@ -5,7 +5,6 @@ using System; using System.Linq; using osu.Framework.Allocation; using osu.Framework.Bindables; -using osu.Framework.Extensions.IEnumerableExtensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Input.Events; @@ -15,7 +14,7 @@ using osuTK.Graphics; namespace osu.Game.Screens.Play { - public class KeyCounterDisplay : FillFlowContainer + public class KeyCounterDisplay : Container { private const int duration = 100; private const double key_fade_time = 80; @@ -23,10 +22,19 @@ namespace osu.Game.Screens.Play public readonly Bindable Visible = new Bindable(true); protected readonly Bindable ConfigVisibility = new Bindable(); + protected readonly FillFlowContainer KeyFlow; + + protected override Container Content => KeyFlow; + public KeyCounterDisplay() { - Direction = FillDirection.Horizontal; AutoSizeAxes = Axes.Both; + + InternalChild = KeyFlow = new FillFlowContainer + { + Direction = FillDirection.Horizontal, + AutoSizeAxes = Axes.Both, + }; } public override void Add(KeyCounter key) @@ -102,8 +110,8 @@ namespace osu.Game.Screens.Play } private void updateVisibility() => - // Change visibility of all key counters internally to isolate from showing them by fading in this container. - Children.ForEach(k => k.FadeTo(Visible.Value || ConfigVisibility.Value ? 1 : 0, duration)); + // Isolate changing visibility of the key counters from fading this component. + KeyFlow.FadeTo(Visible.Value || alwaysShow.Value ? 1 : 0, duration); public override bool HandleNonPositionalInput => receptor == null; public override bool HandlePositionalInput => receptor == null; From 0f449d1b9945902bee4913488fec8bfe2a44bc45 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Sun, 2 Feb 2020 18:46:59 +0300 Subject: [PATCH 1194/1829] Set config value instead --- osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs index 11064d0ffd..7ce6153ba5 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs @@ -77,11 +77,14 @@ namespace osu.Game.Tests.Visual.Gameplay [Test] public void TestChangeHUDVisibilityOnHiddenKeyCounter() { + bool keyCounterVisibleValue = false; + createNew(); + AddStep("save keycounter visible value", () => keyCounterVisibleValue = config.Get(OsuSetting.KeyOverlay)); AddStep("set keycounter visible false", () => { - hudOverlay.KeyCounter.ConfigVisibility.Value = false; + config.Set(OsuSetting.KeyOverlay, false); hudOverlay.KeyCounter.Visible.Value = false; }); @@ -92,6 +95,8 @@ namespace osu.Game.Tests.Visual.Gameplay AddStep("set showhud true", () => hudOverlay.ShowHud.Value = true); AddUntilStep("hidetarget is visible", () => hideTarget.IsPresent); AddAssert("key counters still hidden", () => !hudOverlay.KeyCounter.KeyFlow.IsPresent); + + AddStep("return value", () => config.Set(OsuSetting.KeyOverlay, keyCounterVisibleValue)); } private void createNew(Action action = null) @@ -125,7 +130,7 @@ namespace osu.Game.Tests.Visual.Gameplay private class TestKeyCounterDisplay : KeyCounterDisplay { - public new Container KeyFlow => base.KeyFlow; + public new FillFlowContainer KeyFlow => base.KeyFlow; } } } From 4cdf4b223c1c0141ca7627096386dba16d26655b Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Sun, 2 Feb 2020 18:47:12 +0300 Subject: [PATCH 1195/1829] Rename to alwaysShow and add XMLDoc --- osu.Game/Screens/Play/KeyCounterDisplay.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/osu.Game/Screens/Play/KeyCounterDisplay.cs b/osu.Game/Screens/Play/KeyCounterDisplay.cs index b03f663371..b5d8c99e67 100644 --- a/osu.Game/Screens/Play/KeyCounterDisplay.cs +++ b/osu.Game/Screens/Play/KeyCounterDisplay.cs @@ -19,8 +19,13 @@ namespace osu.Game.Screens.Play private const int duration = 100; private const double key_fade_time = 80; + /// + /// Whether to always show key counter regardless of . + /// This is bound to configuration setting bindable. + /// + private readonly Bindable alwaysShow = new Bindable(); + public readonly Bindable Visible = new Bindable(true); - protected readonly Bindable ConfigVisibility = new Bindable(); protected readonly FillFlowContainer KeyFlow; @@ -51,7 +56,7 @@ namespace osu.Game.Screens.Play [BackgroundDependencyLoader] private void load(OsuConfigManager config) { - config.BindWith(OsuSetting.KeyOverlay, ConfigVisibility); + config.BindWith(OsuSetting.KeyOverlay, alwaysShow); } protected override void LoadComplete() @@ -59,7 +64,7 @@ namespace osu.Game.Screens.Play base.LoadComplete(); Visible.BindValueChanged(_ => updateVisibility()); - ConfigVisibility.BindValueChanged(_ => updateVisibility(), true); + alwaysShow.BindValueChanged(_ => updateVisibility(), true); } private bool isCounting = true; From 1f53778d623244d17ac616943be992da7710f532 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Sun, 2 Feb 2020 16:59:17 +0100 Subject: [PATCH 1196/1829] Add explanation to comment --- osu.Game/Overlays/Profile/Header/Components/RankGraph.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Profile/Header/Components/RankGraph.cs b/osu.Game/Overlays/Profile/Header/Components/RankGraph.cs index 83c6d80dae..ffc060b3f1 100644 --- a/osu.Game/Overlays/Profile/Header/Components/RankGraph.cs +++ b/osu.Game/Overlays/Profile/Header/Components/RankGraph.cs @@ -270,7 +270,8 @@ namespace osu.Game.Overlays.Profile.Header.Components [BackgroundDependencyLoader] private void load(OsuColour colours) { - // To match osu-web, background and text should both be coloured using OverlayColourProvider + // Temporary colour since it's currently impossible to change it without bugs (see https://github.com/ppy/osu-framework/issues/3231) + // If above is fixed, this should use OverlayColourProvider background.Colour = colours.Gray1; } From 7e162d9798d7e88fc27cdebe04bcdcc7dbdbd719 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Sun, 2 Feb 2020 17:03:41 +0100 Subject: [PATCH 1197/1829] Fix failing test --- osu.Game.Tests/Visual/Online/TestSceneRankGraph.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankGraph.cs b/osu.Game.Tests/Visual/Online/TestSceneRankGraph.cs index c70cc4ae4e..8f7e7498a9 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankGraph.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankGraph.cs @@ -4,11 +4,13 @@ using System; using System.Collections.Generic; using NUnit.Framework; +using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Game.Graphics; using osu.Game.Graphics.UserInterface; +using osu.Game.Overlays; using osu.Game.Overlays.Profile.Header.Components; using osu.Game.Users; using osuTK; @@ -24,6 +26,9 @@ namespace osu.Game.Tests.Visual.Online typeof(LineGraph) }; + [Cached] + private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Pink); + public TestSceneRankGraph() { RankGraph graph; From 878489651c456b6747960b6e724c7305400f71b3 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Sun, 2 Feb 2020 23:04:11 +0700 Subject: [PATCH 1198/1829] Make performance_background_width readonly --- .../Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs index 1905728442..f55d469e22 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs @@ -25,7 +25,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks private const int performance_width = 80; private const float performance_background_shear = 0.45f; - private float performance_background_width = performance_width + (height / 4f * MathF.Tan(performance_background_shear)); + private readonly float performance_background_width = performance_width + (height / 4f * MathF.Tan(performance_background_shear)); protected readonly ScoreInfo Score; From 030d02594cc955a19fb1d2a4c2ccb3b8f8243d99 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Sun, 2 Feb 2020 17:10:11 +0100 Subject: [PATCH 1199/1829] Allow non-italic DrawableDate --- osu.Game/Graphics/DrawableDate.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Graphics/DrawableDate.cs b/osu.Game/Graphics/DrawableDate.cs index 925c7981e0..0224c77ee8 100644 --- a/osu.Game/Graphics/DrawableDate.cs +++ b/osu.Game/Graphics/DrawableDate.cs @@ -29,9 +29,9 @@ namespace osu.Game.Graphics } } - public DrawableDate(DateTimeOffset date, float textSize = OsuFont.DEFAULT_FONT_SIZE) + public DrawableDate(DateTimeOffset date, float textSize = OsuFont.DEFAULT_FONT_SIZE, bool italic = true) { - Font = OsuFont.GetFont(weight: FontWeight.Regular, size: textSize, italics: true); + Font = OsuFont.GetFont(weight: FontWeight.Regular, size: textSize, italics: italic); Date = date; } From d15942d1270a803947bb4dcf0811560d32efa71a Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Sun, 2 Feb 2020 17:21:22 +0100 Subject: [PATCH 1200/1829] Revert containers merge and rework bottomLinkContainer visibility logic --- .../Profile/Header/BottomHeaderContainer.cs | 101 ++++++++++-------- 1 file changed, 57 insertions(+), 44 deletions(-) diff --git a/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs b/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs index bca72666de..065bef8329 100644 --- a/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs +++ b/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; @@ -22,7 +22,8 @@ namespace osu.Game.Overlays.Profile.Header { public readonly Bindable User = new Bindable(); - private LinkFlowContainer linkContainer; + private LinkFlowContainer topLinkContainer; + private LinkFlowContainer bottomLinkContainer; private Color4 iconColour; @@ -43,12 +44,26 @@ namespace osu.Game.Overlays.Profile.Header RelativeSizeAxes = Axes.Both, Colour = colourProvider.Background4 }, - linkContainer = new LinkFlowContainer(text => text.Font = text.Font.With(size: 12)) + new FillFlowContainer { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, + Direction = FillDirection.Vertical, Padding = new MarginPadding { Horizontal = UserProfileOverlay.CONTENT_X_MARGIN, Vertical = 10 }, Spacing = new Vector2(0, 10), + Children = new Drawable[] + { + topLinkContainer = new LinkFlowContainer(text => text.Font = text.Font.With(size: 12)) + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + }, + bottomLinkContainer = new LinkFlowContainer(text => text.Font = text.Font.With(size: 12)) + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + } + } } }; @@ -57,43 +72,44 @@ namespace osu.Game.Overlays.Profile.Header private void updateDisplay(User user) { - linkContainer.Clear(); + topLinkContainer.Clear(); + bottomLinkContainer.Clear(); if (user == null) return; if (user.JoinDate.ToUniversalTime().Year < 2008) - linkContainer.AddText("Here since the beginning"); + topLinkContainer.AddText("Here since the beginning"); else { - linkContainer.AddText("Joined "); - linkContainer.AddText(new DrawableDate(user.JoinDate), embolden); + topLinkContainer.AddText("Joined "); + topLinkContainer.AddText(new DrawableDate(user.JoinDate), embolden); } - addSpacer(linkContainer); + addSpacer(topLinkContainer); if (user.IsOnline) { - linkContainer.AddText("Currently online"); - addSpacer(linkContainer); + topLinkContainer.AddText("Currently online"); + addSpacer(topLinkContainer); } else if (user.LastVisit.HasValue) { - linkContainer.AddText("Last seen "); - linkContainer.AddText(new DrawableDate(user.LastVisit.Value), embolden); + topLinkContainer.AddText("Last seen "); + topLinkContainer.AddText(new DrawableDate(user.LastVisit.Value), embolden); - addSpacer(linkContainer); + addSpacer(topLinkContainer); } if (user.PlayStyles?.Length > 0) { - linkContainer.AddText("Plays with "); - linkContainer.AddText(string.Join(", ", user.PlayStyles.Select(style => style.GetDescription())), embolden); + topLinkContainer.AddText("Plays with "); + topLinkContainer.AddText(string.Join(", ", user.PlayStyles.Select(style => style.GetDescription())), embolden); - addSpacer(linkContainer); + addSpacer(topLinkContainer); } - linkContainer.AddText("Contributed "); - linkContainer.AddLink($@"{user.PostCount:#,##0} forum posts", $"https://osu.ppy.sh/users/{user.Id}/posts", creationParameters: embolden); + topLinkContainer.AddText("Contributed "); + topLinkContainer.AddLink($@"{user.PostCount:#,##0} forum posts", $"https://osu.ppy.sh/users/{user.Id}/posts", creationParameters: embolden); string websiteWithoutProtocol = user.Website; @@ -106,51 +122,48 @@ namespace osu.Game.Overlays.Profile.Header } } - requireNewLineOnAddInfo = true; - - tryAddInfo(FontAwesome.Solid.MapMarker, user.Location); - tryAddInfo(OsuIcon.Heart, user.Interests); - tryAddInfo(FontAwesome.Solid.Suitcase, user.Occupation); - - requireNewLineOnAddInfo = true; + bool anyInfoAdded = false; + anyInfoAdded |= tryAddInfo(FontAwesome.Solid.MapMarker, user.Location); + anyInfoAdded |= tryAddInfo(OsuIcon.Heart, user.Interests); + anyInfoAdded |= tryAddInfo(FontAwesome.Solid.Suitcase, user.Occupation); + bottomLinkContainer.NewLine(); if (!string.IsNullOrEmpty(user.Twitter)) - tryAddInfo(FontAwesome.Brands.Twitter, "@" + user.Twitter, $@"https://twitter.com/{user.Twitter}"); - tryAddInfo(FontAwesome.Brands.Discord, user.Discord); - tryAddInfo(FontAwesome.Brands.Skype, user.Skype, @"skype:" + user.Skype + @"?chat"); - tryAddInfo(FontAwesome.Brands.Lastfm, user.Lastfm, $@"https://last.fm/users/{user.Lastfm}"); - tryAddInfo(FontAwesome.Solid.Link, websiteWithoutProtocol, user.Website); + anyInfoAdded |= tryAddInfo(FontAwesome.Brands.Twitter, "@" + user.Twitter, $@"https://twitter.com/{user.Twitter}"); + anyInfoAdded |= tryAddInfo(FontAwesome.Brands.Discord, user.Discord); + anyInfoAdded |= tryAddInfo(FontAwesome.Brands.Skype, user.Skype, @"skype:" + user.Skype + @"?chat"); + anyInfoAdded |= tryAddInfo(FontAwesome.Brands.Lastfm, user.Lastfm, $@"https://last.fm/users/{user.Lastfm}"); + anyInfoAdded |= tryAddInfo(FontAwesome.Solid.Link, websiteWithoutProtocol, user.Website); + + // If no information was added to the bottomLinkContainer, hide it to avoid unwanted padding + if (anyInfoAdded) + bottomLinkContainer.Show(); + else + bottomLinkContainer.Hide(); } private void addSpacer(OsuTextFlowContainer textFlow) => textFlow.AddArbitraryDrawable(new Container { Width = 15 }); - private bool requireNewLineOnAddInfo; - - private void tryAddInfo(IconUsage icon, string content, string link = null) + private bool tryAddInfo(IconUsage icon, string content, string link = null) { - if (string.IsNullOrEmpty(content)) return; - - if (requireNewLineOnAddInfo) - { - linkContainer.NewLine(); - requireNewLineOnAddInfo = false; - } + if (string.IsNullOrEmpty(content)) return false; // newlines could be contained in API returned user content. content = content.Replace("\n", " "); - linkContainer.AddIcon(icon, text => + bottomLinkContainer.AddIcon(icon, text => { text.Font = text.Font.With(size: 10); text.Colour = iconColour; }); if (link != null) - linkContainer.AddLink(" " + content, link, creationParameters: embolden); + bottomLinkContainer.AddLink(" " + content, link, creationParameters: embolden); else - linkContainer.AddText(" " + content, embolden); + bottomLinkContainer.AddText(" " + content, embolden); - addSpacer(linkContainer); + addSpacer(bottomLinkContainer); + return true; } private void embolden(SpriteText text) => text.Font = text.Font.With(weight: FontWeight.Bold); From 3cc1b811ef21a648eeda60c51aa751fdc6db3431 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Sun, 2 Feb 2020 17:22:48 +0100 Subject: [PATCH 1201/1829] Make dates non-italic to match osu-web --- osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs b/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs index 065bef8329..3dcd65d64e 100644 --- a/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs +++ b/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs @@ -82,7 +82,7 @@ namespace osu.Game.Overlays.Profile.Header else { topLinkContainer.AddText("Joined "); - topLinkContainer.AddText(new DrawableDate(user.JoinDate), embolden); + topLinkContainer.AddText(new DrawableDate(user.JoinDate, italic: false), embolden); } addSpacer(topLinkContainer); @@ -95,7 +95,7 @@ namespace osu.Game.Overlays.Profile.Header else if (user.LastVisit.HasValue) { topLinkContainer.AddText("Last seen "); - topLinkContainer.AddText(new DrawableDate(user.LastVisit.Value), embolden); + topLinkContainer.AddText(new DrawableDate(user.LastVisit.Value, italic: false), embolden); addSpacer(topLinkContainer); } From 72107c27c99cb568d8457dfe01f3ce2d271ffbc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Sun, 2 Feb 2020 17:39:58 +0100 Subject: [PATCH 1202/1829] Only add newline if necessary --- osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs b/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs index 3dcd65d64e..4643ca709b 100644 --- a/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs +++ b/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs @@ -127,7 +127,10 @@ namespace osu.Game.Overlays.Profile.Header anyInfoAdded |= tryAddInfo(FontAwesome.Solid.MapMarker, user.Location); anyInfoAdded |= tryAddInfo(OsuIcon.Heart, user.Interests); anyInfoAdded |= tryAddInfo(FontAwesome.Solid.Suitcase, user.Occupation); - bottomLinkContainer.NewLine(); + + if (anyInfoAdded) + bottomLinkContainer.NewLine(); + if (!string.IsNullOrEmpty(user.Twitter)) anyInfoAdded |= tryAddInfo(FontAwesome.Brands.Twitter, "@" + user.Twitter, $@"https://twitter.com/{user.Twitter}"); anyInfoAdded |= tryAddInfo(FontAwesome.Brands.Discord, user.Discord); From c479d0efa48be274e36ffa55359bfff6716ab30d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Sun, 2 Feb 2020 17:41:42 +0100 Subject: [PATCH 1203/1829] Simplify show/hide logic --- osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs b/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs index 4643ca709b..c27b5f4b4a 100644 --- a/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs +++ b/osu.Game/Overlays/Profile/Header/BottomHeaderContainer.cs @@ -139,10 +139,7 @@ namespace osu.Game.Overlays.Profile.Header anyInfoAdded |= tryAddInfo(FontAwesome.Solid.Link, websiteWithoutProtocol, user.Website); // If no information was added to the bottomLinkContainer, hide it to avoid unwanted padding - if (anyInfoAdded) - bottomLinkContainer.Show(); - else - bottomLinkContainer.Hide(); + bottomLinkContainer.Alpha = anyInfoAdded ? 1 : 0; } private void addSpacer(OsuTextFlowContainer textFlow) => textFlow.AddArbitraryDrawable(new Container { Width = 15 }); From fd7fccbb62c50a7201d88218c4375f1cd984a648 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Sun, 2 Feb 2020 19:16:54 +0100 Subject: [PATCH 1204/1829] Add tests --- .../TestSceneSliderInput.cs | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs index b6fc9821a4..675c9fd0e7 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs @@ -44,6 +44,7 @@ namespace osu.Game.Rulesets.Osu.Tests private const double time_during_slide_2 = 3000; private const double time_during_slide_3 = 3500; private const double time_during_slide_4 = 3800; + private const double time_slider_end = 4000; private List judgementResults; private bool allJudgedFired; @@ -284,6 +285,47 @@ namespace osu.Game.Rulesets.Osu.Tests AddAssert("Tracking acquired", assertMidSliderJudgements); } + + /// + /// Scenario: + /// - Press a key on the slider head + /// - While holding the key, move cursor close to the edge of tracking area + /// - Keep the cursor on the edge of tracking area until the slider ends + /// Expected Result: + /// A passing test case will have the slider track the cursor throughout the whole test. + /// + [Test] + public void TestTrackingAreaEdge() + { + performTest(new List + { + new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_slider_start }, + new OsuReplayFrame { Position = new Vector2(0, OsuHitObject.OBJECT_RADIUS * 1.199f), Actions = { OsuAction.LeftButton }, Time = time_slider_start + 100 }, + new OsuReplayFrame { Position = new Vector2(25, OsuHitObject.OBJECT_RADIUS * 1.199f), Actions = { OsuAction.LeftButton }, Time = time_slider_end }, + }); + AddAssert("Tracking kept", assertGreatJudge); + } + + /// + /// Scenario: + /// - Press a key on the slider head + /// - While holding the key, move cursor just outside the tracking area + /// - Keep the cursor just outside the tracking area until the slider ends + /// Expected Result: + /// A passing test case will have the slider drop the tracking on frame 2. + /// + [Test] + public void TestTrackingAreaOutsideEdge() + { + performTest(new List + { + new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_slider_start }, + new OsuReplayFrame { Position = new Vector2(0, OsuHitObject.OBJECT_RADIUS * 1.2f), Actions = { OsuAction.LeftButton }, Time = time_slider_start + 100 }, + new OsuReplayFrame { Position = new Vector2(25, OsuHitObject.OBJECT_RADIUS * 1.2f), Actions = { OsuAction.LeftButton }, Time = time_slider_end }, + }); + AddAssert("Tracking dropped", assertMidSliderJudgementFail); + } + private bool assertGreatJudge() => judgementResults.Last().Type == HitResult.Great; private bool assertHeadMissTailTracked() => judgementResults[^2].Type == HitResult.Great && judgementResults.First().Type == HitResult.Miss; From c7f1d4a8a0874b6e59b58bbaccb10456966320b0 Mon Sep 17 00:00:00 2001 From: Tree Date: Sun, 2 Feb 2020 19:29:26 +0100 Subject: [PATCH 1205/1829] Remove unnecessary newline --- osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs index 675c9fd0e7..38dcc3b23e 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs @@ -285,7 +285,6 @@ namespace osu.Game.Rulesets.Osu.Tests AddAssert("Tracking acquired", assertMidSliderJudgements); } - /// /// Scenario: /// - Press a key on the slider head From 162a3713a33bbec70b4b4c3f260cf9167dc881ae Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Sun, 2 Feb 2020 21:25:35 +0100 Subject: [PATCH 1206/1829] Modify tests to avoid fails in CLI testing --- osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs index 675c9fd0e7..7dc81059eb 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs @@ -300,8 +300,8 @@ namespace osu.Game.Rulesets.Osu.Tests performTest(new List { new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_slider_start }, - new OsuReplayFrame { Position = new Vector2(0, OsuHitObject.OBJECT_RADIUS * 1.199f), Actions = { OsuAction.LeftButton }, Time = time_slider_start + 100 }, - new OsuReplayFrame { Position = new Vector2(25, OsuHitObject.OBJECT_RADIUS * 1.199f), Actions = { OsuAction.LeftButton }, Time = time_slider_end }, + new OsuReplayFrame { Position = new Vector2(0, OsuHitObject.OBJECT_RADIUS * 1.19f), Actions = { OsuAction.LeftButton }, Time = time_slider_start + 100 }, + new OsuReplayFrame { Position = new Vector2(25, OsuHitObject.OBJECT_RADIUS * 1.19f), Actions = { OsuAction.LeftButton }, Time = time_slider_end }, }); AddAssert("Tracking kept", assertGreatJudge); } @@ -320,8 +320,8 @@ namespace osu.Game.Rulesets.Osu.Tests performTest(new List { new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_slider_start }, - new OsuReplayFrame { Position = new Vector2(0, OsuHitObject.OBJECT_RADIUS * 1.2f), Actions = { OsuAction.LeftButton }, Time = time_slider_start + 100 }, - new OsuReplayFrame { Position = new Vector2(25, OsuHitObject.OBJECT_RADIUS * 1.2f), Actions = { OsuAction.LeftButton }, Time = time_slider_end }, + new OsuReplayFrame { Position = new Vector2(0, OsuHitObject.OBJECT_RADIUS * 1.21f), Actions = { OsuAction.LeftButton }, Time = time_slider_start + 100 }, + new OsuReplayFrame { Position = new Vector2(25, OsuHitObject.OBJECT_RADIUS * 1.21f), Actions = { OsuAction.LeftButton }, Time = time_slider_end }, }); AddAssert("Tracking dropped", assertMidSliderJudgementFail); } From edb4c0f7528dfee3d20290166d82ca375626c550 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 3 Feb 2020 10:24:53 +0900 Subject: [PATCH 1207/1829] Add blank lines for conformity --- osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs index 4b18b961ad..eaa714d68a 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs @@ -302,6 +302,7 @@ namespace osu.Game.Rulesets.Osu.Tests new OsuReplayFrame { Position = new Vector2(0, OsuHitObject.OBJECT_RADIUS * 1.19f), Actions = { OsuAction.LeftButton }, Time = time_slider_start + 100 }, new OsuReplayFrame { Position = new Vector2(25, OsuHitObject.OBJECT_RADIUS * 1.19f), Actions = { OsuAction.LeftButton }, Time = time_slider_end }, }); + AddAssert("Tracking kept", assertGreatJudge); } @@ -322,6 +323,7 @@ namespace osu.Game.Rulesets.Osu.Tests new OsuReplayFrame { Position = new Vector2(0, OsuHitObject.OBJECT_RADIUS * 1.21f), Actions = { OsuAction.LeftButton }, Time = time_slider_start + 100 }, new OsuReplayFrame { Position = new Vector2(25, OsuHitObject.OBJECT_RADIUS * 1.21f), Actions = { OsuAction.LeftButton }, Time = time_slider_end }, }); + AddAssert("Tracking dropped", assertMidSliderJudgementFail); } From ff17c76a20180b5789f03b5b217b11aa315a8b42 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Mon, 3 Feb 2020 08:26:12 +0700 Subject: [PATCH 1208/1829] Fix modifiers for performance_background_width --- .../Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs index f55d469e22..c9f787bb26 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs @@ -25,7 +25,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks private const int performance_width = 80; private const float performance_background_shear = 0.45f; - private readonly float performance_background_width = performance_width + (height / 4f * MathF.Tan(performance_background_shear)); + private static readonly float performance_background_width = performance_width + (height / 4f * MathF.Tan(performance_background_shear)); protected readonly ScoreInfo Score; From 2253ed4c0d13544ab4ef802c666acfd6a004bb87 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 3 Feb 2020 10:29:40 +0900 Subject: [PATCH 1209/1829] Move path length to a constant --- osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs index eaa714d68a..2ad2c544e5 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs @@ -300,7 +300,7 @@ namespace osu.Game.Rulesets.Osu.Tests { new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_slider_start }, new OsuReplayFrame { Position = new Vector2(0, OsuHitObject.OBJECT_RADIUS * 1.19f), Actions = { OsuAction.LeftButton }, Time = time_slider_start + 100 }, - new OsuReplayFrame { Position = new Vector2(25, OsuHitObject.OBJECT_RADIUS * 1.19f), Actions = { OsuAction.LeftButton }, Time = time_slider_end }, + new OsuReplayFrame { Position = new Vector2(slider_path_length, OsuHitObject.OBJECT_RADIUS * 1.19f), Actions = { OsuAction.LeftButton }, Time = time_slider_end }, }); AddAssert("Tracking kept", assertGreatJudge); @@ -321,7 +321,7 @@ namespace osu.Game.Rulesets.Osu.Tests { new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_slider_start }, new OsuReplayFrame { Position = new Vector2(0, OsuHitObject.OBJECT_RADIUS * 1.21f), Actions = { OsuAction.LeftButton }, Time = time_slider_start + 100 }, - new OsuReplayFrame { Position = new Vector2(25, OsuHitObject.OBJECT_RADIUS * 1.21f), Actions = { OsuAction.LeftButton }, Time = time_slider_end }, + new OsuReplayFrame { Position = new Vector2(slider_path_length, OsuHitObject.OBJECT_RADIUS * 1.21f), Actions = { OsuAction.LeftButton }, Time = time_slider_end }, }); AddAssert("Tracking dropped", assertMidSliderJudgementFail); @@ -337,6 +337,8 @@ namespace osu.Game.Rulesets.Osu.Tests private ScoreAccessibleReplayPlayer currentPlayer; + private const float slider_path_length = 25; + private void performTest(List frames) { AddStep("load player", () => @@ -352,8 +354,8 @@ namespace osu.Game.Rulesets.Osu.Tests Path = new SliderPath(PathType.PerfectCurve, new[] { Vector2.Zero, - new Vector2(25, 0), - }, 25), + new Vector2(slider_path_length, 0), + }, slider_path_length), } }, BeatmapInfo = From 9426f786e91adefae97c64397ed9356fc2125d8c Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 3 Feb 2020 10:33:56 +0900 Subject: [PATCH 1210/1829] Use slightly closer values --- osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs index 2ad2c544e5..33d79d9cbc 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs @@ -300,7 +300,7 @@ namespace osu.Game.Rulesets.Osu.Tests { new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_slider_start }, new OsuReplayFrame { Position = new Vector2(0, OsuHitObject.OBJECT_RADIUS * 1.19f), Actions = { OsuAction.LeftButton }, Time = time_slider_start + 100 }, - new OsuReplayFrame { Position = new Vector2(slider_path_length, OsuHitObject.OBJECT_RADIUS * 1.19f), Actions = { OsuAction.LeftButton }, Time = time_slider_end }, + new OsuReplayFrame { Position = new Vector2(slider_path_length, OsuHitObject.OBJECT_RADIUS * 1.199f), Actions = { OsuAction.LeftButton }, Time = time_slider_end }, }); AddAssert("Tracking kept", assertGreatJudge); @@ -321,7 +321,7 @@ namespace osu.Game.Rulesets.Osu.Tests { new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_slider_start }, new OsuReplayFrame { Position = new Vector2(0, OsuHitObject.OBJECT_RADIUS * 1.21f), Actions = { OsuAction.LeftButton }, Time = time_slider_start + 100 }, - new OsuReplayFrame { Position = new Vector2(slider_path_length, OsuHitObject.OBJECT_RADIUS * 1.21f), Actions = { OsuAction.LeftButton }, Time = time_slider_end }, + new OsuReplayFrame { Position = new Vector2(slider_path_length, OsuHitObject.OBJECT_RADIUS * 1.201f), Actions = { OsuAction.LeftButton }, Time = time_slider_end }, }); AddAssert("Tracking dropped", assertMidSliderJudgementFail); From 84fcf45aaead75d4f43efe54b890760ed50c551a Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 3 Feb 2020 11:55:14 +0900 Subject: [PATCH 1211/1829] Make slider tracking match what is on screen --- .../TestSceneSliderInput.cs | 4 ++-- .../Objects/Drawables/Pieces/SliderBall.cs | 14 ++------------ 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs index 33d79d9cbc..94df239267 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneSliderInput.cs @@ -299,7 +299,7 @@ namespace osu.Game.Rulesets.Osu.Tests performTest(new List { new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_slider_start }, - new OsuReplayFrame { Position = new Vector2(0, OsuHitObject.OBJECT_RADIUS * 1.19f), Actions = { OsuAction.LeftButton }, Time = time_slider_start + 100 }, + new OsuReplayFrame { Position = new Vector2(0, OsuHitObject.OBJECT_RADIUS * 1.19f), Actions = { OsuAction.LeftButton }, Time = time_slider_start + 250 }, new OsuReplayFrame { Position = new Vector2(slider_path_length, OsuHitObject.OBJECT_RADIUS * 1.199f), Actions = { OsuAction.LeftButton }, Time = time_slider_end }, }); @@ -320,7 +320,7 @@ namespace osu.Game.Rulesets.Osu.Tests performTest(new List { new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_slider_start }, - new OsuReplayFrame { Position = new Vector2(0, OsuHitObject.OBJECT_RADIUS * 1.21f), Actions = { OsuAction.LeftButton }, Time = time_slider_start + 100 }, + new OsuReplayFrame { Position = new Vector2(0, OsuHitObject.OBJECT_RADIUS * 1.21f), Actions = { OsuAction.LeftButton }, Time = time_slider_start + 250 }, new OsuReplayFrame { Position = new Vector2(slider_path_length, OsuHitObject.OBJECT_RADIUS * 1.201f), Actions = { OsuAction.LeftButton }, Time = time_slider_end }, }); diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs index b89b0cafc4..0dc5c9b4a0 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs @@ -24,7 +24,6 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces private readonly Slider slider; private readonly Drawable followCircle; - private readonly Drawable trackingArea; private readonly DrawableSlider drawableSlider; public SliderBall(Slider slider, DrawableSlider drawableSlider = null) @@ -39,13 +38,6 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces Children = new[] { - // This is separate from the visible followcircle to ensure consistent internal tracking area (needed to match osu-stable) - trackingArea = new CircularContainer - { - Origin = Anchor.Centre, - Anchor = Anchor.Centre, - RelativeSizeAxes = Axes.Both - }, followCircle = new FollowCircleContainer { Origin = Anchor.Centre, @@ -103,9 +95,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces tracking = value; - // Tracking area is bigger than the visible followcircle and scales instantly to match osu-stable - trackingArea.ScaleTo(tracking ? 2.4f : 1f); - followCircle.ScaleTo(tracking ? 2f : 1f, 300, Easing.OutQuint); + followCircle.ScaleTo(tracking ? 2.4f : 1f, 300, Easing.OutQuint); followCircle.FadeTo(tracking ? 1f : 0, 300, Easing.OutQuint); } } @@ -159,7 +149,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces // in valid time range Time.Current >= slider.StartTime && Time.Current < slider.EndTime && // in valid position range - lastScreenSpaceMousePosition.HasValue && trackingArea.ReceivePositionalInputAt(lastScreenSpaceMousePosition.Value) && + lastScreenSpaceMousePosition.HasValue && followCircle.ReceivePositionalInputAt(lastScreenSpaceMousePosition.Value) && // valid action (actions?.Any(isValidTrackingAction) ?? false); } From 9680c0941fa1b751b1dd0a4ab48235e6b15081ba Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 3 Feb 2020 12:46:11 +0900 Subject: [PATCH 1212/1829] Move private helper methods to botom of file --- .../Sections/Recent/DrawableRecentActivity.cs | 44 +++++++++---------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs b/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs index f538833eb0..8782e82642 100644 --- a/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs +++ b/osu.Game/Overlays/Profile/Sections/Recent/DrawableRecentActivity.cs @@ -122,30 +122,6 @@ namespace osu.Game.Overlays.Profile.Sections.Recent } } - private string getRulesetName() - { - var shortName = activity.Mode; - - return rulesets.AvailableRulesets.FirstOrDefault(r => r.ShortName == shortName)?.Name ?? shortName; - } - - private string getLinkArgument(string url) => MessageFormatter.GetLinkDetails($"{api.Endpoint}{url}").Argument; - - private FontUsage getLinkFont(FontWeight fontWeight = FontWeight.Regular) - => OsuFont.GetFont(size: font_size, weight: fontWeight, italics: true); - - private void addUserLink() - => content.AddLink(activity.User?.Username, LinkAction.OpenUserProfile, getLinkArgument(activity.User?.Url), creationParameters: t => t.Font = getLinkFont(FontWeight.Bold)); - - private void addBeatmapLink() - => content.AddLink(activity.Beatmap?.Title, LinkAction.OpenBeatmap, getLinkArgument(activity.Beatmap?.Url), creationParameters: t => t.Font = getLinkFont()); - - private void addBeatmapsetLink() - => content.AddLink(activity.Beatmapset?.Title, LinkAction.OpenBeatmapSet, getLinkArgument(activity.Beatmapset?.Url), creationParameters: t => t.Font = getLinkFont()); - - private void addText(string text) - => content.AddText(text, t => t.Font = OsuFont.GetFont(size: font_size, weight: FontWeight.SemiBold)); - private void createMessage() { switch (activity.Type) @@ -227,5 +203,25 @@ namespace osu.Game.Overlays.Profile.Sections.Recent break; } } + + private string getRulesetName() => + rulesets.AvailableRulesets.FirstOrDefault(r => r.ShortName == activity.Mode)?.Name ?? activity.Mode; + + private void addUserLink() + => content.AddLink(activity.User?.Username, LinkAction.OpenUserProfile, getLinkArgument(activity.User?.Url), creationParameters: t => t.Font = getLinkFont(FontWeight.Bold)); + + private void addBeatmapLink() + => content.AddLink(activity.Beatmap?.Title, LinkAction.OpenBeatmap, getLinkArgument(activity.Beatmap?.Url), creationParameters: t => t.Font = getLinkFont()); + + private void addBeatmapsetLink() + => content.AddLink(activity.Beatmapset?.Title, LinkAction.OpenBeatmapSet, getLinkArgument(activity.Beatmapset?.Url), creationParameters: t => t.Font = getLinkFont()); + + private string getLinkArgument(string url) => MessageFormatter.GetLinkDetails($"{api.Endpoint}{url}").Argument; + + private FontUsage getLinkFont(FontWeight fontWeight = FontWeight.Regular) + => OsuFont.GetFont(size: font_size, weight: fontWeight, italics: true); + + private void addText(string text) + => content.AddText(text, t => t.Font = OsuFont.GetFont(size: font_size, weight: FontWeight.SemiBold)); } } From d9d8712360b3093c76bf0cb6f7f1f3922de45578 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 3 Feb 2020 15:13:21 +0900 Subject: [PATCH 1213/1829] Refactor class layout for readability --- osu.Game/Overlays/OverlayRulesetTabItem.cs | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/osu.Game/Overlays/OverlayRulesetTabItem.cs b/osu.Game/Overlays/OverlayRulesetTabItem.cs index 5b53d9d1fa..f8a9d14f62 100644 --- a/osu.Game/Overlays/OverlayRulesetTabItem.cs +++ b/osu.Game/Overlays/OverlayRulesetTabItem.cs @@ -17,11 +17,6 @@ namespace osu.Game.Overlays { public class OverlayRulesetTabItem : TabItem { - protected readonly OsuSpriteText Text; - private readonly FillFlowContainer content; - - protected override Container Content => content; - private Color4 accentColour; protected virtual Color4 AccentColour @@ -30,13 +25,17 @@ namespace osu.Game.Overlays set { accentColour = value; - Text.FadeColour(value, 120, Easing.OutQuint); + text.FadeColour(value, 120, Easing.OutQuint); } } + protected override Container Content { get; } + [Resolved] private OverlayColourProvider colourProvider { get; set; } + private readonly OsuSpriteText text; + public OverlayRulesetTabItem(RulesetInfo value) : base(value) { @@ -44,12 +43,12 @@ namespace osu.Game.Overlays AddRangeInternal(new Drawable[] { - content = new FillFlowContainer + Content = new FillFlowContainer { AutoSizeAxes = Axes.Both, Direction = FillDirection.Horizontal, Spacing = new Vector2(3, 0), - Child = Text = new OsuSpriteText + Child = text = new OsuSpriteText { Origin = Anchor.Centre, Anchor = Anchor.Centre, @@ -87,7 +86,7 @@ namespace osu.Game.Overlays private void updateState() { - Text.Font = Text.Font.With(weight: Active.Value ? FontWeight.Bold : FontWeight.Medium); + text.Font = text.Font.With(weight: Active.Value ? FontWeight.Bold : FontWeight.Medium); AccentColour = IsHovered || Active.Value ? Color4.White : colourProvider.Highlight1; } } From 9183c78319bf3629d67e8c0346e0e5640ca83219 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 3 Feb 2020 16:04:32 +0900 Subject: [PATCH 1214/1829] Fix crash on exiting song select with ctrl-enter autoplay --- .../SongSelect/TestScenePlaySongSelect.cs | 27 ++++++++++++++++++- osu.Game/Screens/Select/PlaySongSelect.cs | 4 +-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs index c01dee2959..80192b9ebc 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs @@ -23,6 +23,7 @@ using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Osu; using osu.Game.Rulesets.Osu.Mods; using osu.Game.Rulesets.Taiko; +using osu.Game.Screens.Play; using osu.Game.Screens.Select; using osu.Game.Screens.Select.Carousel; using osu.Game.Screens.Select.Filter; @@ -77,7 +78,6 @@ namespace osu.Game.Tests.Visual.SongSelect private OsuConfigManager config; - [SetUpSteps] public override void SetUpSteps() { base.SetUpSteps(); @@ -426,6 +426,31 @@ namespace osu.Game.Tests.Visual.SongSelect AddAssert("start not requested", () => !startRequested); } + [Test] + public void TestAutoplayViaCtrlEnter() + { + addRulesetImportStep(0); + + createSongSelect(); + + AddStep("press ctrl+enter", () => + { + InputManager.PressKey(Key.ControlLeft); + InputManager.PressKey(Key.Enter); + + InputManager.ReleaseKey(Key.ControlLeft); + InputManager.ReleaseKey(Key.Enter); + }); + + AddUntilStep("wait for player", () => Stack.CurrentScreen is PlayerLoader); + + AddAssert("autoplay enabled", () => songSelect.Mods.Value.FirstOrDefault() is ModAutoplay); + + AddUntilStep("wait for return to ss", () => songSelect.IsCurrentScreen()); + + AddAssert("mod disabled", () => songSelect.Mods.Value.Count == 0); + } + [Test] public void TestHideSetSelectsCorrectBeatmap() { diff --git a/osu.Game/Screens/Select/PlaySongSelect.cs b/osu.Game/Screens/Select/PlaySongSelect.cs index 9368bac69f..18f13c5e1d 100644 --- a/osu.Game/Screens/Select/PlaySongSelect.cs +++ b/osu.Game/Screens/Select/PlaySongSelect.cs @@ -33,6 +33,8 @@ namespace osu.Game.Screens.Select public override void OnResuming(IScreen last) { + base.OnResuming(last); + player = null; if (removeAutoModOnResume) @@ -41,8 +43,6 @@ namespace osu.Game.Screens.Select ModSelect.DeselectTypes(new[] { autoType }, true); removeAutoModOnResume = false; } - - base.OnResuming(last); } protected override bool OnStart() From 81ab6d43b6cc0be470910f11d478f56d2e3c5032 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 3 Feb 2020 11:09:46 +0300 Subject: [PATCH 1215/1829] Add ability to create ruleset selector in OverlayHeader --- .../UserInterface/TestSceneOverlayHeader.cs | 4 ++- osu.Game/Overlays/OverlayHeader.cs | 35 +++++++++++++++---- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeader.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeader.cs index c899ccb9eb..1cd68d1fdd 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeader.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneOverlayHeader.cs @@ -53,7 +53,7 @@ namespace osu.Game.Tests.Visual.UserInterface addHeader("Orange OverlayHeader (no background)", new TestNoBackgroundHeader(), OverlayColourScheme.Orange); addHeader("Blue OverlayHeader", new TestNoControlHeader(), OverlayColourScheme.Blue); - addHeader("Green TabControlOverlayHeader (string)", new TestStringTabControlHeader(), OverlayColourScheme.Green); + addHeader("Green TabControlOverlayHeader (string) with ruleset selector", new TestStringTabControlHeader(), OverlayColourScheme.Green); addHeader("Pink TabControlOverlayHeader (enum)", new TestEnumTabControlHeader(), OverlayColourScheme.Pink); addHeader("Red BreadcrumbControlOverlayHeader (no background)", new TestBreadcrumbControlHeader(), OverlayColourScheme.Red); } @@ -116,6 +116,8 @@ namespace osu.Game.Tests.Visual.UserInterface protected override ScreenTitle CreateTitle() => new TestTitle(); + protected override Drawable CreateTitleContent() => new OverlayRulesetSelector(); + public TestStringTabControlHeader() { TabControl.AddItem("tab1"); diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index 5596f71dd0..36ac47bb87 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -50,14 +50,29 @@ namespace osu.Game.Overlays RelativeSizeAxes = Axes.Both, Colour = Color4.Gray, }, - title = CreateTitle().With(title => + new Container { - title.Margin = new MarginPadding + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Padding = new MarginPadding { + Horizontal = UserProfileOverlay.CONTENT_X_MARGIN, Vertical = 10, - Left = UserProfileOverlay.CONTENT_X_MARGIN - }; - }) + }, + Children = new[] + { + title = CreateTitle().With(title => + { + Anchor = Anchor.CentreLeft; + Origin = Anchor.CentreLeft; + }), + CreateTitleContent().With(content => + { + content.Anchor = Anchor.CentreRight; + content.Origin = Anchor.CentreRight; + }) + } + } } }, } @@ -75,10 +90,16 @@ namespace osu.Game.Overlays } [NotNull] - protected virtual Drawable CreateContent() => Drawable.Empty(); + protected virtual Drawable CreateContent() => Empty(); [NotNull] - protected virtual Drawable CreateBackground() => Drawable.Empty(); + protected virtual Drawable CreateBackground() => Empty(); + + /// + /// Creates a on the opposite side of the . Used mostly to create . + /// + [NotNull] + protected virtual Drawable CreateTitleContent() => Empty(); protected abstract ScreenTitle CreateTitle(); } From 91aa66bcb29b6e5a43a5ef0f921fdf497c1c16a4 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2020 08:16:18 +0000 Subject: [PATCH 1216/1829] Bump Sentry from 1.2.0 to 2.0.1 Bumps [Sentry](https://github.com/getsentry/sentry-dotnet) from 1.2.0 to 2.0.1. - [Release notes](https://github.com/getsentry/sentry-dotnet/releases) - [Commits](https://github.com/getsentry/sentry-dotnet/compare/1.2.0...2.0.1) Signed-off-by: dependabot-preview[bot] --- osu.Game/osu.Game.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index b38b7ff9b1..ce58be52ee 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -24,7 +24,7 @@ - + From ce6e97096cd3889b2807a22934736d6760a6ca56 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 3 Feb 2020 11:44:31 +0300 Subject: [PATCH 1217/1829] Fix broken overlays oops --- osu.Game/Overlays/OverlayHeader.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index 36ac47bb87..bedf8e5435 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -63,8 +63,8 @@ namespace osu.Game.Overlays { title = CreateTitle().With(title => { - Anchor = Anchor.CentreLeft; - Origin = Anchor.CentreLeft; + title.Anchor = Anchor.CentreLeft; + title.Origin = Anchor.CentreLeft; }), CreateTitleContent().With(content => { From 032c2c2afe281d1a68e86612096ff5a6dbd9bd75 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 3 Feb 2020 14:16:26 +0300 Subject: [PATCH 1218/1829] Refactor BeatmapRulesetSelector --- .../Online/TestSceneBeatmapRulesetSelector.cs | 4 + .../BeatmapSet/BeatmapRulesetSelector.cs | 17 +- .../BeatmapSet/BeatmapRulesetTabItem.cs | 150 ++++++------------ osu.Game/Overlays/BeatmapSet/Header.cs | 6 +- osu.Game/Overlays/OverlayRulesetTabItem.cs | 16 +- 5 files changed, 65 insertions(+), 128 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneBeatmapRulesetSelector.cs b/osu.Game.Tests/Visual/Online/TestSceneBeatmapRulesetSelector.cs index 1f8df438fb..8b077c8de3 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneBeatmapRulesetSelector.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneBeatmapRulesetSelector.cs @@ -5,6 +5,7 @@ using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Graphics.UserInterface; using osu.Game.Beatmaps; +using osu.Game.Overlays; using osu.Game.Overlays.BeatmapSet; using osu.Game.Rulesets; using System; @@ -21,6 +22,9 @@ namespace osu.Game.Tests.Visual.Online typeof(BeatmapRulesetTabItem), }; + [Cached] + private OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Blue); + private readonly TestRulesetSelector selector; public TestSceneBeatmapRulesetSelector() diff --git a/osu.Game/Overlays/BeatmapSet/BeatmapRulesetSelector.cs b/osu.Game/Overlays/BeatmapSet/BeatmapRulesetSelector.cs index a0bedc848e..005d21726b 100644 --- a/osu.Game/Overlays/BeatmapSet/BeatmapRulesetSelector.cs +++ b/osu.Game/Overlays/BeatmapSet/BeatmapRulesetSelector.cs @@ -2,17 +2,14 @@ // 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.Framework.Graphics.UserInterface; using osu.Game.Beatmaps; using osu.Game.Rulesets; -using osuTK; using System.Linq; namespace osu.Game.Overlays.BeatmapSet { - public class BeatmapRulesetSelector : RulesetSelector + public class BeatmapRulesetSelector : OverlayRulesetSelector { private readonly Bindable beatmapSet = new Bindable(); @@ -28,21 +25,9 @@ namespace osu.Game.Overlays.BeatmapSet } } - public BeatmapRulesetSelector() - { - AutoSizeAxes = Axes.Both; - } - protected override TabItem CreateTabItem(RulesetInfo value) => new BeatmapRulesetTabItem(value) { BeatmapSet = { BindTarget = beatmapSet } }; - - protected override TabFillFlowContainer CreateTabFlow() => new TabFillFlowContainer - { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Spacing = new Vector2(10, 0), - }; } } diff --git a/osu.Game/Overlays/BeatmapSet/BeatmapRulesetTabItem.cs b/osu.Game/Overlays/BeatmapSet/BeatmapRulesetTabItem.cs index cdea49afe7..3e473df621 100644 --- a/osu.Game/Overlays/BeatmapSet/BeatmapRulesetTabItem.cs +++ b/osu.Game/Overlays/BeatmapSet/BeatmapRulesetTabItem.cs @@ -3,143 +3,87 @@ 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.Shapes; -using osu.Framework.Graphics.UserInterface; -using osu.Framework.Input.Events; using osu.Game.Beatmaps; using osu.Game.Graphics; using osu.Game.Graphics.Sprites; -using osu.Game.Graphics.UserInterface; using osu.Game.Rulesets; -using osuTK; -using osuTK.Graphics; using System.Linq; namespace osu.Game.Overlays.BeatmapSet { - public class BeatmapRulesetTabItem : TabItem + public class BeatmapRulesetTabItem : OverlayRulesetTabItem { - private readonly OsuSpriteText name, count; - private readonly Box bar; - public readonly Bindable BeatmapSet = new Bindable(); public override bool PropagatePositionalInputSubTree => Enabled.Value && !Active.Value && base.PropagatePositionalInputSubTree; + [Resolved] + private OverlayColourProvider colourProvider { get; set; } + + private OsuSpriteText count; + private Container countContainer; + public BeatmapRulesetTabItem(RulesetInfo value) : base(value) { - AutoSizeAxes = Axes.Both; + } - FillFlowContainer nameContainer; - - Children = new Drawable[] + [BackgroundDependencyLoader] + private void load() + { + Content.Add(countContainer = new Container { - nameContainer = new FillFlowContainer + AutoSizeAxes = Axes.Both, + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Masking = true, + CornerRadius = 4f, + Children = new Drawable[] { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Margin = new MarginPadding { Bottom = 7.5f }, - Spacing = new Vector2(2.5f), - Children = new Drawable[] + new Box { - name = new OsuSpriteText - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Text = value.Name, - Font = OsuFont.Default.With(size: 18), - }, - new Container - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - AutoSizeAxes = Axes.Both, - Masking = true, - CornerRadius = 4f, - Children = new Drawable[] - { - new Box - { - RelativeSizeAxes = Axes.Both, - Colour = Color4.Black.Opacity(0.5f), - }, - count = new OsuSpriteText - { - Alpha = 0, - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Margin = new MarginPadding { Horizontal = 5f }, - Font = OsuFont.Default.With(weight: FontWeight.SemiBold), - } - } - } + RelativeSizeAxes = Axes.Both, + Colour = colourProvider.Background6 + }, + count = new OsuSpriteText + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Margin = new MarginPadding { Horizontal = 5f }, + Font = OsuFont.Default.With(weight: FontWeight.SemiBold), + Colour = colourProvider.Foreground1, } - }, - bar = new Box - { - Anchor = Anchor.BottomCentre, - Origin = Anchor.BottomCentre, - RelativeSizeAxes = Axes.X, - }, - new HoverClickSounds(), - }; + } + }); + } + + protected override void LoadComplete() + { + base.LoadComplete(); BeatmapSet.BindValueChanged(setInfo => { var beatmapsCount = setInfo.NewValue?.Beatmaps.Count(b => b.Ruleset.Equals(Value)) ?? 0; count.Text = beatmapsCount.ToString(); - count.Alpha = beatmapsCount > 0 ? 1f : 0f; + countContainer.FadeTo(beatmapsCount > 0 ? 1 : 0); Enabled.Value = beatmapsCount > 0; }, true); - Enabled.BindValueChanged(v => nameContainer.Alpha = v.NewValue ? 1f : 0.5f, true); + Enabled.BindValueChanged(enabled => + { + if (enabled.NewValue) + { + UpdateState(); + return; + } + + AccentColour = colourProvider.Foreground1; + }, true); } - - [Resolved] - private OsuColour colour { get; set; } - - protected override void LoadComplete() - { - base.LoadComplete(); - - count.Colour = colour.Gray9; - bar.Colour = colour.Blue; - - updateState(); - } - - private void updateState() - { - var isHoveredOrActive = IsHovered || Active.Value; - - bar.ResizeHeightTo(isHoveredOrActive ? 4 : 0, 200, Easing.OutQuint); - - name.Colour = isHoveredOrActive ? colour.GrayE : colour.GrayC; - name.Font = name.Font.With(weight: Active.Value ? FontWeight.Bold : FontWeight.Regular); - } - - #region Hovering and activation logic - - protected override void OnActivated() => updateState(); - - protected override void OnDeactivated() => updateState(); - - protected override bool OnHover(HoverEvent e) - { - updateState(); - return false; - } - - protected override void OnHoverLost(HoverLostEvent e) => updateState(); - - #endregion } } diff --git a/osu.Game/Overlays/BeatmapSet/Header.cs b/osu.Game/Overlays/BeatmapSet/Header.cs index 7b42e7e459..c787df01ae 100644 --- a/osu.Game/Overlays/BeatmapSet/Header.cs +++ b/osu.Game/Overlays/BeatmapSet/Header.cs @@ -74,7 +74,7 @@ namespace osu.Game.Overlays.BeatmapSet new Container { RelativeSizeAxes = Axes.X, - Height = tabs_height, + AutoSizeAxes = Axes.Y, Children = new Drawable[] { tabsBg = new Box @@ -84,8 +84,8 @@ namespace osu.Game.Overlays.BeatmapSet RulesetSelector = new BeatmapRulesetSelector { Current = ruleset, - Anchor = Anchor.BottomCentre, - Origin = Anchor.BottomCentre, + Anchor = Anchor.Centre, + Origin = Anchor.Centre, } }, }, diff --git a/osu.Game/Overlays/OverlayRulesetTabItem.cs b/osu.Game/Overlays/OverlayRulesetTabItem.cs index f8a9d14f62..5e6ac57886 100644 --- a/osu.Game/Overlays/OverlayRulesetTabItem.cs +++ b/osu.Game/Overlays/OverlayRulesetTabItem.cs @@ -64,29 +64,33 @@ namespace osu.Game.Overlays [BackgroundDependencyLoader] private void load() { - updateState(); + UpdateState(); } protected override bool OnHover(HoverEvent e) { base.OnHover(e); - updateState(); + UpdateState(); return true; } protected override void OnHoverLost(HoverLostEvent e) { base.OnHoverLost(e); - updateState(); + UpdateState(); } - protected override void OnActivated() => updateState(); + protected override void OnActivated() => UpdateState(); - protected override void OnDeactivated() => updateState(); + protected override void OnDeactivated() => UpdateState(); - private void updateState() + protected void UpdateState() { text.Font = text.Font.With(weight: Active.Value ? FontWeight.Bold : FontWeight.Medium); + + if (!Enabled.Value) + return; + AccentColour = IsHovered || Active.Value ? Color4.White : colourProvider.Highlight1; } } From fa453bc3e158d3a604407d1a44fc1f09a5aed600 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 3 Feb 2020 14:35:07 +0300 Subject: [PATCH 1219/1829] Refactor beatmap header --- .../Overlays/BeatmapSet/BeatmapSetHeader.cs | 34 +++ osu.Game/Overlays/BeatmapSet/Header.cs | 248 +++++++++--------- 2 files changed, 151 insertions(+), 131 deletions(-) create mode 100644 osu.Game/Overlays/BeatmapSet/BeatmapSetHeader.cs diff --git a/osu.Game/Overlays/BeatmapSet/BeatmapSetHeader.cs b/osu.Game/Overlays/BeatmapSet/BeatmapSetHeader.cs new file mode 100644 index 0000000000..bf9f3ccc17 --- /dev/null +++ b/osu.Game/Overlays/BeatmapSet/BeatmapSetHeader.cs @@ -0,0 +1,34 @@ +// 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.Game.Graphics.UserInterface; +using osu.Game.Rulesets; + +namespace osu.Game.Overlays.BeatmapSet +{ + public class BeatmapSetHeader : OverlayHeader + { + public readonly Bindable Ruleset = new Bindable(); + public BeatmapRulesetSelector RulesetSelector; + + protected override ScreenTitle CreateTitle() => new BeatmapHeaderTitle(); + + protected override Drawable CreateTitleContent() => RulesetSelector = new BeatmapRulesetSelector + { + Current = Ruleset + }; + + private class BeatmapHeaderTitle : ScreenTitle + { + public BeatmapHeaderTitle() + { + Title = @"beatmap"; + Section = @"info"; + } + + protected override Drawable CreateIcon() => new ScreenTitleTextureIcon(@"Icons/changelog"); + } + } +} diff --git a/osu.Game/Overlays/BeatmapSet/Header.cs b/osu.Game/Overlays/BeatmapSet/Header.cs index c787df01ae..7c5c5a9d55 100644 --- a/osu.Game/Overlays/BeatmapSet/Header.cs +++ b/osu.Game/Overlays/BeatmapSet/Header.cs @@ -26,11 +26,9 @@ namespace osu.Game.Overlays.BeatmapSet public class Header : BeatmapDownloadTrackingComposite { private const float transition_duration = 200; - private const float tabs_height = 50; private const float buttons_height = 45; private const float buttons_spacing = 5; - private readonly Box tabsBg; private readonly UpdateableBeatmapSetCover cover; private readonly OsuSpriteText title, artist; private readonly AuthorInfo author; @@ -41,14 +39,13 @@ namespace osu.Game.Overlays.BeatmapSet public bool DownloadButtonsVisible => downloadButtonsContainer.Any(); - public readonly BeatmapRulesetSelector RulesetSelector; + public BeatmapRulesetSelector RulesetSelector => beatmapSetHeader.RulesetSelector; public readonly BeatmapPicker Picker; private readonly FavouriteButton favouriteButton; - private readonly FillFlowContainer fadeContent; - private readonly LoadingAnimation loading; + private readonly BeatmapSetHeader beatmapSetHeader; [Cached(typeof(IBindable))] private readonly Bindable ruleset = new Bindable(); @@ -69,154 +66,145 @@ namespace osu.Game.Overlays.BeatmapSet Offset = new Vector2(0f, 1f), }; - InternalChildren = new Drawable[] + InternalChild = new FillFlowContainer { - new Container + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Direction = FillDirection.Vertical, + Children = new Drawable[] { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Children = new Drawable[] + beatmapSetHeader = new BeatmapSetHeader { - tabsBg = new Box - { - RelativeSizeAxes = Axes.Both, - }, - RulesetSelector = new BeatmapRulesetSelector - { - Current = ruleset, - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - } + Ruleset = { BindTarget = ruleset }, }, - }, - new Container - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Padding = new MarginPadding { Top = tabs_height }, - Children = new Drawable[] + new Container { - new Container + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Children = new Drawable[] { - RelativeSizeAxes = Axes.Both, - Children = new Drawable[] + new Container { - cover = new UpdateableBeatmapSetCover + RelativeSizeAxes = Axes.Both, + Children = new Drawable[] { - RelativeSizeAxes = Axes.Both, - Masking = true, - }, - new Box - { - RelativeSizeAxes = Axes.Both, - Colour = ColourInfo.GradientVertical(Color4.Black.Opacity(0.3f), Color4.Black.Opacity(0.8f)), - }, - }, - }, - new Container - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Padding = new MarginPadding - { - Top = 20, - Bottom = 30, - Left = BeatmapSetOverlay.X_PADDING, - Right = BeatmapSetOverlay.X_PADDING + BeatmapSetOverlay.RIGHT_WIDTH, - }, - Children = new Drawable[] - { - fadeContent = new FillFlowContainer - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Direction = FillDirection.Vertical, - Children = new Drawable[] + cover = new UpdateableBeatmapSetCover { - new Container + RelativeSizeAxes = Axes.Both, + Masking = true, + }, + new Box + { + RelativeSizeAxes = Axes.Both, + Colour = ColourInfo.GradientVertical(Color4.Black.Opacity(0.3f), Color4.Black.Opacity(0.8f)), + }, + }, + }, + new Container + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Padding = new MarginPadding + { + Top = 20, + Bottom = 30, + Left = BeatmapSetOverlay.X_PADDING, + Right = BeatmapSetOverlay.X_PADDING + BeatmapSetOverlay.RIGHT_WIDTH, + }, + Children = new Drawable[] + { + fadeContent = new FillFlowContainer + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Direction = FillDirection.Vertical, + Children = new Drawable[] { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Child = Picker = new BeatmapPicker(), - }, - new FillFlowContainer - { - Direction = FillDirection.Horizontal, - AutoSizeAxes = Axes.Both, - Children = new Drawable[] + new Container { - title = new OsuSpriteText - { - Font = OsuFont.GetFont(size: 37, weight: FontWeight.Bold, italics: true) - }, - externalLink = new ExternalLinkButton - { - Anchor = Anchor.BottomLeft, - Origin = Anchor.BottomLeft, - Margin = new MarginPadding { Left = 3, Bottom = 4 }, //To better lineup with the font - }, - } - }, - artist = new OsuSpriteText { Font = OsuFont.GetFont(size: 25, weight: FontWeight.SemiBold, italics: true) }, - new Container - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Margin = new MarginPadding { Top = 20 }, - Child = author = new AuthorInfo(), - }, - beatmapAvailability = new BeatmapAvailability(), - new Container - { - RelativeSizeAxes = Axes.X, - Height = buttons_height, - Margin = new MarginPadding { Top = 10 }, - Children = new Drawable[] + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Child = Picker = new BeatmapPicker(), + }, + new FillFlowContainer { - favouriteButton = new FavouriteButton + Direction = FillDirection.Horizontal, + AutoSizeAxes = Axes.Both, + Children = new Drawable[] { - BeatmapSet = { BindTarget = BeatmapSet } - }, - downloadButtonsContainer = new FillFlowContainer + title = new OsuSpriteText + { + Font = OsuFont.GetFont(size: 37, weight: FontWeight.Bold, italics: true) + }, + externalLink = new ExternalLinkButton + { + Anchor = Anchor.BottomLeft, + Origin = Anchor.BottomLeft, + Margin = new MarginPadding { Left = 3, Bottom = 4 }, //To better lineup with the font + }, + } + }, + artist = new OsuSpriteText { Font = OsuFont.GetFont(size: 25, weight: FontWeight.SemiBold, italics: true) }, + new Container + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Margin = new MarginPadding { Top = 20 }, + Child = author = new AuthorInfo(), + }, + beatmapAvailability = new BeatmapAvailability(), + new Container + { + RelativeSizeAxes = Axes.X, + Height = buttons_height, + Margin = new MarginPadding { Top = 10 }, + Children = new Drawable[] { - RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding { Left = buttons_height + buttons_spacing }, - Spacing = new Vector2(buttons_spacing), + favouriteButton = new FavouriteButton + { + BeatmapSet = { BindTarget = BeatmapSet } + }, + downloadButtonsContainer = new FillFlowContainer + { + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Left = buttons_height + buttons_spacing }, + Spacing = new Vector2(buttons_spacing), + }, }, }, }, }, - }, - } - }, - loading = new LoadingAnimation - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Scale = new Vector2(1.5f), - }, - new FillFlowContainer - { - Anchor = Anchor.BottomRight, - Origin = Anchor.BottomRight, - AutoSizeAxes = Axes.Both, - Margin = new MarginPadding { Top = BeatmapSetOverlay.TOP_PADDING, Right = BeatmapSetOverlay.X_PADDING }, - Direction = FillDirection.Vertical, - Spacing = new Vector2(10), - Children = new Drawable[] + } + }, + loading = new LoadingAnimation { - onlineStatusPill = new BeatmapSetOnlineStatusPill + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Scale = new Vector2(1.5f), + }, + new FillFlowContainer + { + Anchor = Anchor.BottomRight, + Origin = Anchor.BottomRight, + AutoSizeAxes = Axes.Both, + Margin = new MarginPadding { Top = BeatmapSetOverlay.TOP_PADDING, Right = BeatmapSetOverlay.X_PADDING }, + Direction = FillDirection.Vertical, + Spacing = new Vector2(10), + Children = new Drawable[] { - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - TextSize = 14, - TextPadding = new MarginPadding { Horizontal = 25, Vertical = 8 } + onlineStatusPill = new BeatmapSetOnlineStatusPill + { + Anchor = Anchor.TopRight, + Origin = Anchor.TopRight, + TextSize = 14, + TextPadding = new MarginPadding { Horizontal = 25, Vertical = 8 } + }, + Details = new Details(), }, - Details = new Details(), }, }, }, - }, + } }; Picker.Beatmap.ValueChanged += b => @@ -229,8 +217,6 @@ namespace osu.Game.Overlays.BeatmapSet [BackgroundDependencyLoader] private void load(OsuColour colours) { - tabsBg.Colour = colours.Gray3; - State.BindValueChanged(_ => updateDownloadButtons()); BeatmapSet.BindValueChanged(setInfo => From 2abcc6ad69c4c9c64ebb15f227ff77e3463c1f06 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 3 Feb 2020 15:25:07 +0300 Subject: [PATCH 1220/1829] Simplify counter addition in BeatmapRulesetTabItem --- osu.Game/Overlays/BeatmapSet/BeatmapRulesetTabItem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/BeatmapRulesetTabItem.cs b/osu.Game/Overlays/BeatmapSet/BeatmapRulesetTabItem.cs index 3e473df621..df159977e6 100644 --- a/osu.Game/Overlays/BeatmapSet/BeatmapRulesetTabItem.cs +++ b/osu.Game/Overlays/BeatmapSet/BeatmapRulesetTabItem.cs @@ -34,7 +34,7 @@ namespace osu.Game.Overlays.BeatmapSet [BackgroundDependencyLoader] private void load() { - Content.Add(countContainer = new Container + Add(countContainer = new Container { AutoSizeAxes = Axes.Both, Anchor = Anchor.Centre, From 351cb8ac1a8c9e00c587b4fa8b0f3a3684d5a629 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Mon, 3 Feb 2020 15:47:52 +0300 Subject: [PATCH 1221/1829] Rename Visible to HasReplayLoaded and change default value Doesn't make sense to be true by default --- .../Visual/Gameplay/TestSceneHUDOverlay.cs | 18 ++++++++---------- osu.Game/Screens/Play/KeyCounterDisplay.cs | 8 ++++---- osu.Game/Screens/Play/Player.cs | 2 +- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs index 7ce6153ba5..5887cc2435 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs @@ -30,8 +30,8 @@ namespace osu.Game.Tests.Visual.Gameplay AddAssert("showhud is set", () => hudOverlay.ShowHud.Value); AddAssert("hidetarget is visible", () => hideTarget.IsPresent); - AddAssert("key counter flow is visible", () => hudOverlay.KeyCounter.KeyFlow.IsPresent); AddAssert("pause button is visible", () => hudOverlay.HoldToQuit.IsPresent); + AddAssert("key counter flow is hidden", () => !hudOverlay.KeyCounter.KeyFlow.IsPresent); } [Test] @@ -45,17 +45,19 @@ namespace osu.Game.Tests.Visual.Gameplay } [Test] - public void TestHideExternally() + public void TestChangeVisibilityExternally() { createNew(); AddStep("set showhud false", () => hudOverlay.ShowHud.Value = false); - AddUntilStep("hidetarget is hidden", () => !hideTarget.IsPresent); + AddAssert("key counter flow is hidden", () => !hudOverlay.KeyCounter.KeyFlow.IsPresent); AddAssert("pause button is still visible", () => hudOverlay.HoldToQuit.IsPresent); - // Key counter flow container should not be affected by this, only the key counter display will be hidden as checked above. - AddAssert("key counter flow not affected", () => hudOverlay.KeyCounter.KeyFlow.IsPresent); + AddStep("set showhud false", () => hudOverlay.ShowHud.Value = true); + AddUntilStep("hidetarget is visible", () => hideTarget.IsPresent); + AddAssert("key counter flow is still hidden", () => !hudOverlay.KeyCounter.KeyFlow.IsPresent); + AddAssert("pause button is still visible", () => hudOverlay.HoldToQuit.IsPresent); } [Test] @@ -82,11 +84,7 @@ namespace osu.Game.Tests.Visual.Gameplay createNew(); AddStep("save keycounter visible value", () => keyCounterVisibleValue = config.Get(OsuSetting.KeyOverlay)); - AddStep("set keycounter visible false", () => - { - config.Set(OsuSetting.KeyOverlay, false); - hudOverlay.KeyCounter.Visible.Value = false; - }); + AddStep("set keycounter visible false", () => config.Set(OsuSetting.KeyOverlay, false)); AddStep("set showhud false", () => hudOverlay.ShowHud.Value = false); AddUntilStep("hidetarget is hidden", () => !hideTarget.IsPresent); diff --git a/osu.Game/Screens/Play/KeyCounterDisplay.cs b/osu.Game/Screens/Play/KeyCounterDisplay.cs index b5d8c99e67..4c4fcea879 100644 --- a/osu.Game/Screens/Play/KeyCounterDisplay.cs +++ b/osu.Game/Screens/Play/KeyCounterDisplay.cs @@ -20,12 +20,12 @@ namespace osu.Game.Screens.Play private const double key_fade_time = 80; /// - /// Whether to always show key counter regardless of . + /// Whether to always show key counter regardless of any other condition. /// This is bound to configuration setting bindable. /// private readonly Bindable alwaysShow = new Bindable(); - public readonly Bindable Visible = new Bindable(true); + public readonly Bindable HasReplayLoaded = new BindableBool(); protected readonly FillFlowContainer KeyFlow; @@ -63,7 +63,7 @@ namespace osu.Game.Screens.Play { base.LoadComplete(); - Visible.BindValueChanged(_ => updateVisibility()); + HasReplayLoaded.BindValueChanged(_ => updateVisibility()); alwaysShow.BindValueChanged(_ => updateVisibility(), true); } @@ -116,7 +116,7 @@ namespace osu.Game.Screens.Play private void updateVisibility() => // Isolate changing visibility of the key counters from fading this component. - KeyFlow.FadeTo(Visible.Value || alwaysShow.Value ? 1 : 0, duration); + KeyFlow.FadeTo(HasReplayLoaded.Value || alwaysShow.Value ? 1 : 0, duration); public override bool HandleNonPositionalInput => receptor == null; public override bool HandlePositionalInput => receptor == null; diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index 7228e22382..02fc5f81d5 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -219,7 +219,7 @@ namespace osu.Game.Screens.Play IsPaused = { BindTarget = GameplayClockContainer.IsPaused } }, PlayerSettingsOverlay = { PlaybackSettings = { UserPlaybackRate = { BindTarget = GameplayClockContainer.UserPlaybackRate } } }, - KeyCounter = { Visible = { BindTarget = DrawableRuleset.HasReplayLoaded } }, + KeyCounter = { HasReplayLoaded = { BindTarget = DrawableRuleset.HasReplayLoaded } }, RequestSeek = GameplayClockContainer.Seek, Anchor = Anchor.Centre, Origin = Anchor.Centre From a365082a98283b3fef5f2d557a689e2bb4385a44 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 3 Feb 2020 22:18:07 +0900 Subject: [PATCH 1222/1829] Fix potential nullref in UserDimBackgrounds tests --- osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs b/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs index 41b13b50df..6d014ca1ca 100644 --- a/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs +++ b/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs @@ -277,7 +277,7 @@ namespace osu.Game.Tests.Visual.Background private void setupUserSettings() { - AddUntilStep("Song select has selection", () => songSelect.Carousel.SelectedBeatmap != null); + AddUntilStep("Song select has selection", () => songSelect.Carousel?.SelectedBeatmap != null); AddStep("Set default user settings", () => { SelectedMods.Value = SelectedMods.Value.Concat(new[] { new OsuModNoFail() }).ToArray(); From 257b4052e89ed18030b24877fc656007a9dace54 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Mon, 3 Feb 2020 22:09:07 +0700 Subject: [PATCH 1223/1829] Add {ScoreInfo,UserStatistics}.Accuracy --- osu.Game/Scoring/ScoreInfo.cs | 3 +++ osu.Game/Users/UserStatistics.cs | 3 +++ 2 files changed, 6 insertions(+) diff --git a/osu.Game/Scoring/ScoreInfo.cs b/osu.Game/Scoring/ScoreInfo.cs index c37bab9086..8787785861 100644 --- a/osu.Game/Scoring/ScoreInfo.cs +++ b/osu.Game/Scoring/ScoreInfo.cs @@ -31,6 +31,9 @@ namespace osu.Game.Scoring [Column(TypeName = "DECIMAL(1,4)")] public double Accuracy { get; set; } + [JsonIgnore] + public string DisplayAccuracy => Accuracy == 1 ? "100%" : $"{Accuracy:P2}"; + [JsonProperty(@"pp")] public double? PP { get; set; } diff --git a/osu.Game/Users/UserStatistics.cs b/osu.Game/Users/UserStatistics.cs index 24f1f0b30e..9254eefb60 100644 --- a/osu.Game/Users/UserStatistics.cs +++ b/osu.Game/Users/UserStatistics.cs @@ -43,6 +43,9 @@ namespace osu.Game.Users [JsonProperty(@"hit_accuracy")] public decimal Accuracy; + [JsonIgnore] + public string DisplayAccuracy => $"{Accuracy:P2}"; + [JsonProperty(@"play_count")] public int PlayCount; From 9898a926b2afca3823e81895aa03f3859693a7d6 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Mon, 3 Feb 2020 22:11:36 +0700 Subject: [PATCH 1224/1829] Use ScoreInfo.DisplayAccuracy everywhere --- osu.Game/Online/Leaderboards/LeaderboardScore.cs | 2 +- osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs | 2 +- .../Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs | 2 +- .../Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs | 2 +- .../Screens/Multi/Match/Components/MatchLeaderboardScore.cs | 2 +- osu.Game/Screens/Ranking/Results.cs | 2 +- osu.Game/Screens/Select/LocalScoreDeleteDialog.cs | 3 +-- 7 files changed, 7 insertions(+), 8 deletions(-) diff --git a/osu.Game/Online/Leaderboards/LeaderboardScore.cs b/osu.Game/Online/Leaderboards/LeaderboardScore.cs index c8b2f2327b..c9131883bb 100644 --- a/osu.Game/Online/Leaderboards/LeaderboardScore.cs +++ b/osu.Game/Online/Leaderboards/LeaderboardScore.cs @@ -277,7 +277,7 @@ namespace osu.Game.Online.Leaderboards protected virtual IEnumerable GetStatistics(ScoreInfo model) => new[] { new LeaderboardScoreStatistic(FontAwesome.Solid.Link, "Max Combo", model.MaxCombo.ToString()), - new LeaderboardScoreStatistic(FontAwesome.Solid.Crosshairs, "Accuracy", string.Format(model.Accuracy % 1 == 0 ? @"{0:0%}" : @"{0:0.00%}", model.Accuracy)) + new LeaderboardScoreStatistic(FontAwesome.Solid.Crosshairs, "Accuracy", model.DisplayAccuracy) }; protected override bool OnHover(HoverEvent e) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs index f6723839b2..3a944882ab 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs @@ -116,7 +116,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores new OsuSpriteText { Margin = new MarginPadding { Right = horizontal_inset }, - Text = $@"{score.Accuracy:P2}", + Text = score.DisplayAccuracy, Font = OsuFont.GetFont(size: text_size), Colour = score.Accuracy == 1 ? highAccuracyColour : Color4.White }, diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs index b9664d7c2f..4f26e43fb2 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs @@ -92,7 +92,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores set { totalScoreColumn.Text = $@"{value.TotalScore:N0}"; - accuracyColumn.Text = $@"{value.Accuracy:P2}"; + accuracyColumn.Text = value.DisplayAccuracy; maxComboColumn.Text = $@"{value.MaxCombo:N0}x"; ppColumn.Text = $@"{value.PP:N0}"; diff --git a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs index c9f787bb26..0eee34a304 100644 --- a/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs +++ b/osu.Game/Overlays/Profile/Sections/Ranks/DrawableProfileScore.cs @@ -182,7 +182,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks protected OsuSpriteText CreateDrawableAccuracy() => new OsuSpriteText { - Text = $"{Score.Accuracy:0.00%}", + Text = Score.DisplayAccuracy, Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold, italics: true), Colour = colours.Yellow, }; diff --git a/osu.Game/Screens/Multi/Match/Components/MatchLeaderboardScore.cs b/osu.Game/Screens/Multi/Match/Components/MatchLeaderboardScore.cs index bab9672d65..73a40d9579 100644 --- a/osu.Game/Screens/Multi/Match/Components/MatchLeaderboardScore.cs +++ b/osu.Game/Screens/Multi/Match/Components/MatchLeaderboardScore.cs @@ -28,7 +28,7 @@ namespace osu.Game.Screens.Multi.Match.Components protected override IEnumerable GetStatistics(ScoreInfo model) => new[] { - new LeaderboardScoreStatistic(FontAwesome.Solid.Crosshairs, "Accuracy", string.Format(model.Accuracy % 1 == 0 ? @"{0:0%}" : @"{0:0.00%}", model.Accuracy)), + new LeaderboardScoreStatistic(FontAwesome.Solid.Crosshairs, "Accuracy", model.DisplayAccuracy), new LeaderboardScoreStatistic(FontAwesome.Solid.Sync, "Total Attempts", score.TotalAttempts.ToString()), new LeaderboardScoreStatistic(FontAwesome.Solid.Check, "Completed Beatmaps", score.CompletedBeatmaps.ToString()), }; diff --git a/osu.Game/Screens/Ranking/Results.cs b/osu.Game/Screens/Ranking/Results.cs index d063988b3f..05f1872be9 100644 --- a/osu.Game/Screens/Ranking/Results.cs +++ b/osu.Game/Screens/Ranking/Results.cs @@ -211,7 +211,7 @@ namespace osu.Game.Screens.Ranking { Anchor = Anchor.CentreLeft, Origin = Anchor.BottomCentre, - Text = $"{Score.Accuracy:P2}", + Text = Score.DisplayAccuracy, Font = OsuFont.GetFont(weight: FontWeight.Bold, size: 40), RelativePositionAxes = Axes.X, X = 0.9f, diff --git a/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs index 99e76124e8..085ea372c0 100644 --- a/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs +++ b/osu.Game/Screens/Select/LocalScoreDeleteDialog.cs @@ -32,8 +32,7 @@ namespace osu.Game.Screens.Select BeatmapInfo beatmap = beatmapManager.QueryBeatmap(b => b.ID == score.BeatmapInfoID); Debug.Assert(beatmap != null); - string accuracy = string.Format(score.Accuracy == 1 ? "{0:0%}" : "{0:0.00%}", score.Accuracy); - BodyText = $"{score.User} ({accuracy}, {score.Rank})"; + BodyText = $"{score.User} ({score.DisplayAccuracy}, {score.Rank})"; Icon = FontAwesome.Regular.TrashAlt; HeaderText = "Confirm deletion of local score"; From 4dfdd98e8bda9e5c1f2c86351b1c0c2f23696ed8 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Mon, 3 Feb 2020 22:12:34 +0700 Subject: [PATCH 1225/1829] Use UserStatistics.DisplayAccuracy everywhere --- osu.Game/Overlays/Profile/Header/TopHeaderContainer.cs | 2 +- osu.Game/Overlays/Rankings/Tables/UserBasedTable.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Profile/Header/TopHeaderContainer.cs b/osu.Game/Overlays/Profile/Header/TopHeaderContainer.cs index 19a24dd576..668de15c9e 100644 --- a/osu.Game/Overlays/Profile/Header/TopHeaderContainer.cs +++ b/osu.Game/Overlays/Profile/Header/TopHeaderContainer.cs @@ -178,7 +178,7 @@ namespace osu.Game.Overlays.Profile.Header if (user?.Statistics != null) { userStats.Add(new UserStatsLine("Ranked Score", user.Statistics.RankedScore.ToString("#,##0"))); - userStats.Add(new UserStatsLine("Hit Accuracy", Math.Round(user.Statistics.Accuracy, 2).ToString("#0.00'%'"))); + userStats.Add(new UserStatsLine("Hit Accuracy", user.Statistics.DisplayAccuracy)); userStats.Add(new UserStatsLine("Play Count", user.Statistics.PlayCount.ToString("#,##0"))); userStats.Add(new UserStatsLine("Total Score", user.Statistics.TotalScore.ToString("#,##0"))); userStats.Add(new UserStatsLine("Total Hits", user.Statistics.TotalHits.ToString("#,##0"))); diff --git a/osu.Game/Overlays/Rankings/Tables/UserBasedTable.cs b/osu.Game/Overlays/Rankings/Tables/UserBasedTable.cs index 019a278771..351c4df6b7 100644 --- a/osu.Game/Overlays/Rankings/Tables/UserBasedTable.cs +++ b/osu.Game/Overlays/Rankings/Tables/UserBasedTable.cs @@ -40,7 +40,7 @@ namespace osu.Game.Overlays.Rankings.Tables protected sealed override Drawable[] CreateAdditionalContent(UserStatistics item) => new[] { - new ColoredRowText { Text = $@"{item.Accuracy:F2}%", }, + new ColoredRowText { Text = item.DisplayAccuracy, }, new ColoredRowText { Text = $@"{item.PlayCount:N0}", }, }.Concat(CreateUniqueContent(item)).Concat(new[] { From 698408bb6d147cc977f1b445afeeaf5957151314 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Mon, 3 Feb 2020 22:36:38 +0700 Subject: [PATCH 1226/1829] Remove redundant using directive --- osu.Game/Overlays/Profile/Header/TopHeaderContainer.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Overlays/Profile/Header/TopHeaderContainer.cs b/osu.Game/Overlays/Profile/Header/TopHeaderContainer.cs index 668de15c9e..6ed4fc3187 100644 --- a/osu.Game/Overlays/Profile/Header/TopHeaderContainer.cs +++ b/osu.Game/Overlays/Profile/Header/TopHeaderContainer.cs @@ -1,7 +1,6 @@ // 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 osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; From 12574111e5375b56ebfae7af839b38d55be427d6 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 3 Feb 2020 19:44:10 +0300 Subject: [PATCH 1227/1829] Use ColourProvider colours --- .../Online/TestSceneRankingsSpotlightSelector.cs | 4 ++++ osu.Game/Overlays/Rankings/SpotlightSelector.cs | 14 +++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs index 009fe7cc8c..e46c8a4a71 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs @@ -8,6 +8,7 @@ using osu.Framework.Allocation; using osu.Game.Online.API; using osu.Game.Online.API.Requests; using osu.Game.Online.API.Requests.Responses; +using osu.Game.Overlays; using osu.Game.Overlays.Rankings; namespace osu.Game.Tests.Visual.Online @@ -21,6 +22,9 @@ namespace osu.Game.Tests.Visual.Online protected override bool UseOnlineAPI => true; + [Cached] + private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Green); + [Resolved] private IAPIProvider api { get; set; } diff --git a/osu.Game/Overlays/Rankings/SpotlightSelector.cs b/osu.Game/Overlays/Rankings/SpotlightSelector.cs index 4da3daa62a..e34c01113e 100644 --- a/osu.Game/Overlays/Rankings/SpotlightSelector.cs +++ b/osu.Game/Overlays/Rankings/SpotlightSelector.cs @@ -83,9 +83,9 @@ namespace osu.Game.Overlays.Rankings } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - background.Colour = colours.GreySeafoam; + background.Colour = colourProvider.Dark3; } protected override void LoadComplete() @@ -138,9 +138,9 @@ namespace osu.Game.Overlays.Rankings } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - valueText.Colour = colours.GreySeafoamLighter; + valueText.Colour = colourProvider.Content2; } } @@ -151,10 +151,10 @@ namespace osu.Game.Overlays.Rankings protected override DropdownMenu CreateMenu() => menu = base.CreateMenu().With(m => m.MaxHeight = 400); [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - menu.BackgroundColour = colours.Gray1; - AccentColour = colours.GreySeafoamDarker; + menu.BackgroundColour = colourProvider.Background5; + AccentColour = colourProvider.Background6; } } } From 51ed289c597407867c7096345ed89b8a53d09d95 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Mon, 3 Feb 2020 19:59:58 +0300 Subject: [PATCH 1228/1829] Revert namings and behaviour changes --- .../Visual/Gameplay/TestSceneHUDOverlay.cs | 18 ++++++++++-------- osu.Game/Screens/Play/KeyCounterDisplay.cs | 17 ++++++----------- osu.Game/Screens/Play/Player.cs | 2 +- 3 files changed, 17 insertions(+), 20 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs index 5887cc2435..7ce6153ba5 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs @@ -30,8 +30,8 @@ namespace osu.Game.Tests.Visual.Gameplay AddAssert("showhud is set", () => hudOverlay.ShowHud.Value); AddAssert("hidetarget is visible", () => hideTarget.IsPresent); + AddAssert("key counter flow is visible", () => hudOverlay.KeyCounter.KeyFlow.IsPresent); AddAssert("pause button is visible", () => hudOverlay.HoldToQuit.IsPresent); - AddAssert("key counter flow is hidden", () => !hudOverlay.KeyCounter.KeyFlow.IsPresent); } [Test] @@ -45,19 +45,17 @@ namespace osu.Game.Tests.Visual.Gameplay } [Test] - public void TestChangeVisibilityExternally() + public void TestHideExternally() { createNew(); AddStep("set showhud false", () => hudOverlay.ShowHud.Value = false); + AddUntilStep("hidetarget is hidden", () => !hideTarget.IsPresent); - AddAssert("key counter flow is hidden", () => !hudOverlay.KeyCounter.KeyFlow.IsPresent); AddAssert("pause button is still visible", () => hudOverlay.HoldToQuit.IsPresent); - AddStep("set showhud false", () => hudOverlay.ShowHud.Value = true); - AddUntilStep("hidetarget is visible", () => hideTarget.IsPresent); - AddAssert("key counter flow is still hidden", () => !hudOverlay.KeyCounter.KeyFlow.IsPresent); - AddAssert("pause button is still visible", () => hudOverlay.HoldToQuit.IsPresent); + // Key counter flow container should not be affected by this, only the key counter display will be hidden as checked above. + AddAssert("key counter flow not affected", () => hudOverlay.KeyCounter.KeyFlow.IsPresent); } [Test] @@ -84,7 +82,11 @@ namespace osu.Game.Tests.Visual.Gameplay createNew(); AddStep("save keycounter visible value", () => keyCounterVisibleValue = config.Get(OsuSetting.KeyOverlay)); - AddStep("set keycounter visible false", () => config.Set(OsuSetting.KeyOverlay, false)); + AddStep("set keycounter visible false", () => + { + config.Set(OsuSetting.KeyOverlay, false); + hudOverlay.KeyCounter.Visible.Value = false; + }); AddStep("set showhud false", () => hudOverlay.ShowHud.Value = false); AddUntilStep("hidetarget is hidden", () => !hideTarget.IsPresent); diff --git a/osu.Game/Screens/Play/KeyCounterDisplay.cs b/osu.Game/Screens/Play/KeyCounterDisplay.cs index 4c4fcea879..5584bdc359 100644 --- a/osu.Game/Screens/Play/KeyCounterDisplay.cs +++ b/osu.Game/Screens/Play/KeyCounterDisplay.cs @@ -19,13 +19,8 @@ namespace osu.Game.Screens.Play private const int duration = 100; private const double key_fade_time = 80; - /// - /// Whether to always show key counter regardless of any other condition. - /// This is bound to configuration setting bindable. - /// - private readonly Bindable alwaysShow = new Bindable(); - - public readonly Bindable HasReplayLoaded = new BindableBool(); + public readonly Bindable Visible = new Bindable(true); + private readonly Bindable configVisibility = new Bindable(); protected readonly FillFlowContainer KeyFlow; @@ -56,15 +51,15 @@ namespace osu.Game.Screens.Play [BackgroundDependencyLoader] private void load(OsuConfigManager config) { - config.BindWith(OsuSetting.KeyOverlay, alwaysShow); + config.BindWith(OsuSetting.KeyOverlay, configVisibility); } protected override void LoadComplete() { base.LoadComplete(); - HasReplayLoaded.BindValueChanged(_ => updateVisibility()); - alwaysShow.BindValueChanged(_ => updateVisibility(), true); + Visible.BindValueChanged(_ => updateVisibility()); + configVisibility.BindValueChanged(_ => updateVisibility(), true); } private bool isCounting = true; @@ -116,7 +111,7 @@ namespace osu.Game.Screens.Play private void updateVisibility() => // Isolate changing visibility of the key counters from fading this component. - KeyFlow.FadeTo(HasReplayLoaded.Value || alwaysShow.Value ? 1 : 0, duration); + KeyFlow.FadeTo(AlwaysVisible.Value || configVisibility.Value ? 1 : 0, duration); public override bool HandleNonPositionalInput => receptor == null; public override bool HandlePositionalInput => receptor == null; diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index 02fc5f81d5..7228e22382 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -219,7 +219,7 @@ namespace osu.Game.Screens.Play IsPaused = { BindTarget = GameplayClockContainer.IsPaused } }, PlayerSettingsOverlay = { PlaybackSettings = { UserPlaybackRate = { BindTarget = GameplayClockContainer.UserPlaybackRate } } }, - KeyCounter = { HasReplayLoaded = { BindTarget = DrawableRuleset.HasReplayLoaded } }, + KeyCounter = { Visible = { BindTarget = DrawableRuleset.HasReplayLoaded } }, RequestSeek = GameplayClockContainer.Seek, Anchor = Anchor.Centre, Origin = Anchor.Centre From 4cd4055e7cb509d20e788ab261dd2dcb44519bfa Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Mon, 3 Feb 2020 20:00:43 +0300 Subject: [PATCH 1229/1829] Rename to AlwaysVisible and add XMLDoc --- osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs | 2 +- osu.Game/Screens/Play/KeyCounterDisplay.cs | 9 +++++++-- osu.Game/Screens/Play/Player.cs | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs index 7ce6153ba5..2bafcc1197 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs @@ -85,7 +85,7 @@ namespace osu.Game.Tests.Visual.Gameplay AddStep("set keycounter visible false", () => { config.Set(OsuSetting.KeyOverlay, false); - hudOverlay.KeyCounter.Visible.Value = false; + hudOverlay.KeyCounter.AlwaysVisible.Value = false; }); AddStep("set showhud false", () => hudOverlay.ShowHud.Value = false); diff --git a/osu.Game/Screens/Play/KeyCounterDisplay.cs b/osu.Game/Screens/Play/KeyCounterDisplay.cs index 5584bdc359..2ed4afafd3 100644 --- a/osu.Game/Screens/Play/KeyCounterDisplay.cs +++ b/osu.Game/Screens/Play/KeyCounterDisplay.cs @@ -19,13 +19,18 @@ namespace osu.Game.Screens.Play private const int duration = 100; private const double key_fade_time = 80; - public readonly Bindable Visible = new Bindable(true); private readonly Bindable configVisibility = new Bindable(); protected readonly FillFlowContainer KeyFlow; protected override Container Content => KeyFlow; + /// + /// Whether the key counter should be visible regardless of the configuration value. + /// This is true by default, but can be changed. + /// + public readonly Bindable AlwaysVisible = new Bindable(true); + public KeyCounterDisplay() { AutoSizeAxes = Axes.Both; @@ -58,7 +63,7 @@ namespace osu.Game.Screens.Play { base.LoadComplete(); - Visible.BindValueChanged(_ => updateVisibility()); + AlwaysVisible.BindValueChanged(_ => updateVisibility()); configVisibility.BindValueChanged(_ => updateVisibility(), true); } diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index 7228e22382..aecd35f7dc 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -219,7 +219,7 @@ namespace osu.Game.Screens.Play IsPaused = { BindTarget = GameplayClockContainer.IsPaused } }, PlayerSettingsOverlay = { PlaybackSettings = { UserPlaybackRate = { BindTarget = GameplayClockContainer.UserPlaybackRate } } }, - KeyCounter = { Visible = { BindTarget = DrawableRuleset.HasReplayLoaded } }, + KeyCounter = { AlwaysVisible = { BindTarget = DrawableRuleset.HasReplayLoaded } }, RequestSeek = GameplayClockContainer.Seek, Anchor = Anchor.Centre, Origin = Anchor.Centre From b284170437d3174f27c07ec090f51201923f1ec5 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 3 Feb 2020 20:20:35 +0300 Subject: [PATCH 1230/1829] Basic implementation of new RankingsOverlayHeader --- .../Visual/Online/TestSceneRankingsHeader.cs | 18 ++++--- .../Overlays/Changelog/ChangelogHeader.cs | 18 +++---- osu.Game/Overlays/ChangelogOverlay.cs | 2 +- osu.Game/Overlays/News/NewsHeader.cs | 10 ++-- .../Rankings/RankingsOverlayHeader.cs | 48 +++++++++++++++++++ osu.Game/Overlays/TabControlOverlayHeader.cs | 9 +++- 6 files changed, 79 insertions(+), 26 deletions(-) create mode 100644 osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs index e708934bc3..ff2da39629 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs @@ -3,8 +3,9 @@ using System; using System.Collections.Generic; +using osu.Framework.Allocation; using osu.Framework.Bindables; -using osu.Framework.Graphics; +using osu.Game.Overlays; using osu.Game.Overlays.Rankings; using osu.Game.Rulesets; using osu.Game.Users; @@ -15,24 +16,21 @@ namespace osu.Game.Tests.Visual.Online { public override IReadOnlyList RequiredTypes => new[] { - typeof(DismissableFlag), - typeof(HeaderTitle), - typeof(RankingsRulesetSelector), - typeof(RankingsScopeSelector), - typeof(RankingsHeader), + typeof(RankingsOverlayHeader), }; + [Cached] + private readonly OverlayColourProvider overlayColour = new OverlayColourProvider(OverlayColourScheme.Green); + public TestSceneRankingsHeader() { var countryBindable = new Bindable(); var ruleset = new Bindable(); var scope = new Bindable(); - Add(new RankingsHeader + Add(new RankingsOverlayHeader { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Scope = { BindTarget = scope }, + Current = { BindTarget = scope }, Country = { BindTarget = countryBindable }, Ruleset = { BindTarget = ruleset }, Spotlights = new[] diff --git a/osu.Game/Overlays/Changelog/ChangelogHeader.cs b/osu.Game/Overlays/Changelog/ChangelogHeader.cs index 4165a180da..8663ec586b 100644 --- a/osu.Game/Overlays/Changelog/ChangelogHeader.cs +++ b/osu.Game/Overlays/Changelog/ChangelogHeader.cs @@ -14,7 +14,7 @@ namespace osu.Game.Overlays.Changelog { public class ChangelogHeader : BreadcrumbControlOverlayHeader { - public readonly Bindable Current = new Bindable(); + public readonly Bindable Build = new Bindable(); public Action ListingSelected; @@ -25,18 +25,18 @@ namespace osu.Game.Overlays.Changelog public ChangelogHeader() { TabControl.AddItem(listing_string); - TabControl.Current.ValueChanged += e => + Current.ValueChanged += e => { if (e.NewValue == listing_string) ListingSelected?.Invoke(); }; - Current.ValueChanged += showBuild; + Build.ValueChanged += showBuild; Streams.Current.ValueChanged += e => { - if (e.NewValue?.LatestBuild != null && !e.NewValue.Equals(Current.Value?.UpdateStream)) - Current.Value = e.NewValue.LatestBuild; + if (e.NewValue?.LatestBuild != null && !e.NewValue.Equals(Build.Value?.UpdateStream)) + Build.Value = e.NewValue.LatestBuild; }; } @@ -50,7 +50,7 @@ namespace osu.Game.Overlays.Changelog if (e.NewValue != null) { TabControl.AddItem(e.NewValue.ToString()); - TabControl.Current.Value = e.NewValue.ToString(); + Current.Value = e.NewValue.ToString(); updateCurrentStream(); @@ -58,7 +58,7 @@ namespace osu.Game.Overlays.Changelog } else { - TabControl.Current.Value = listing_string; + Current.Value = listing_string; Streams.Current.Value = null; title.Version = null; } @@ -86,10 +86,10 @@ namespace osu.Game.Overlays.Changelog private void updateCurrentStream() { - if (Current.Value == null) + if (Build.Value == null) return; - Streams.Current.Value = Streams.Items.FirstOrDefault(s => s.Name == Current.Value.UpdateStream.Name); + Streams.Current.Value = Streams.Items.FirstOrDefault(s => s.Name == Build.Value.UpdateStream.Name); } private class ChangelogHeaderTitle : ScreenTitle diff --git a/osu.Game/Overlays/ChangelogOverlay.cs b/osu.Game/Overlays/ChangelogOverlay.cs index 90ba206077..6a8cb29d3e 100644 --- a/osu.Game/Overlays/ChangelogOverlay.cs +++ b/osu.Game/Overlays/ChangelogOverlay.cs @@ -78,7 +78,7 @@ namespace osu.Game.Overlays sampleBack = audio.Samples.Get(@"UI/generic-select-soft"); - Header.Current.BindTo(Current); + Header.Build.BindTo(Current); Current.BindValueChanged(e => { diff --git a/osu.Game/Overlays/News/NewsHeader.cs b/osu.Game/Overlays/News/NewsHeader.cs index b525ba7a82..b55e3ffba0 100644 --- a/osu.Game/Overlays/News/NewsHeader.cs +++ b/osu.Game/Overlays/News/NewsHeader.cs @@ -14,7 +14,7 @@ namespace osu.Game.Overlays.News private NewsHeaderTitle title; - public readonly Bindable Current = new Bindable(null); + public readonly Bindable Post = new Bindable(null); public Action ShowFrontPage; @@ -22,13 +22,13 @@ namespace osu.Game.Overlays.News { TabControl.AddItem(front_page_string); - TabControl.Current.ValueChanged += e => + Current.ValueChanged += e => { if (e.NewValue == front_page_string) ShowFrontPage?.Invoke(); }; - Current.ValueChanged += showPost; + Post.ValueChanged += showPost; } private void showPost(ValueChangedEvent e) @@ -39,13 +39,13 @@ namespace osu.Game.Overlays.News if (e.NewValue != null) { TabControl.AddItem(e.NewValue); - TabControl.Current.Value = e.NewValue; + Current.Value = e.NewValue; title.IsReadingPost = true; } else { - TabControl.Current.Value = front_page_string; + Current.Value = front_page_string; title.IsReadingPost = false; } } diff --git a/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs b/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs new file mode 100644 index 0000000000..e4199ba56d --- /dev/null +++ b/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs @@ -0,0 +1,48 @@ +// 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.Bindables; +using osu.Game.Graphics.UserInterface; +using osu.Game.Rulesets; +using osu.Game.Users; +using System.Collections.Generic; + +namespace osu.Game.Overlays.Rankings +{ + public class RankingsOverlayHeader : TabControlOverlayHeader + { + public readonly Bindable Ruleset = new Bindable(); + public readonly Bindable Country = new Bindable(); + + public IEnumerable Spotlights { get; set; } + + protected override ScreenTitle CreateTitle() => new RankingsTitle + { + Scope = { BindTarget = Current } + }; + + protected override Drawable CreateTitleContent() => new OverlayRulesetSelector + { + Current = Ruleset + }; + + private class RankingsTitle : ScreenTitle + { + public readonly Bindable Scope = new Bindable(); + + public RankingsTitle() + { + Title = "ranking"; + } + + protected override void LoadComplete() + { + base.LoadComplete(); + Scope.BindValueChanged(scope => Section = scope.NewValue.ToString().ToLowerInvariant(), true); + } + + protected override Drawable CreateIcon() => new ScreenTitleTextureIcon(@"Icons/rankings"); + } + } +} diff --git a/osu.Game/Overlays/TabControlOverlayHeader.cs b/osu.Game/Overlays/TabControlOverlayHeader.cs index b410739b25..5c3881c4ee 100644 --- a/osu.Game/Overlays/TabControlOverlayHeader.cs +++ b/osu.Game/Overlays/TabControlOverlayHeader.cs @@ -3,6 +3,7 @@ using JetBrains.Annotations; using osu.Framework.Allocation; +using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; @@ -19,6 +20,8 @@ namespace osu.Game.Overlays /// The type of item to be represented by tabs. public abstract class TabControlOverlayHeader : OverlayHeader { + public readonly Bindable Current = new Bindable(); + protected OsuTabControl TabControl; private readonly Box controlBackground; @@ -35,7 +38,11 @@ namespace osu.Game.Overlays { RelativeSizeAxes = Axes.Both, }, - TabControl = CreateTabControl().With(control => control.Margin = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN }) + TabControl = CreateTabControl().With(control => + { + control.Margin = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN }; + control.Current = Current; + }) } }); } From 588a77484b65e07d5a5a1cc225dca96771b62eb8 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 3 Feb 2020 20:32:20 +0300 Subject: [PATCH 1231/1829] Add ContryFilter to new header --- .../Online/TestSceneRankingsCountryFilter.cs | 5 +++++ .../Visual/Online/TestSceneRankingsHeader.cs | 1 + osu.Game/Overlays/Rankings/CountryFilter.cs | 4 ++-- osu.Game/Overlays/Rankings/CountryPill.cs | 8 ++++---- .../Overlays/Rankings/RankingsOverlayHeader.cs | 14 ++++++++++++++ 5 files changed, 26 insertions(+), 6 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs index 7ac65181f9..79862deb16 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs @@ -11,6 +11,8 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Shapes; using osuTK.Graphics; using osu.Game.Graphics.Sprites; +using osu.Game.Overlays; +using osu.Framework.Allocation; namespace osu.Game.Tests.Visual.Online { @@ -22,6 +24,9 @@ namespace osu.Game.Tests.Visual.Online typeof(CountryPill) }; + [Cached] + private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Green); + public TestSceneRankingsCountryFilter() { var countryBindable = new Bindable(); diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs index ff2da39629..9837ae251d 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs @@ -17,6 +17,7 @@ namespace osu.Game.Tests.Visual.Online public override IReadOnlyList RequiredTypes => new[] { typeof(RankingsOverlayHeader), + typeof(CountryFilter), }; [Cached] diff --git a/osu.Game/Overlays/Rankings/CountryFilter.cs b/osu.Game/Overlays/Rankings/CountryFilter.cs index 2b12457ccc..4bdefb06ef 100644 --- a/osu.Game/Overlays/Rankings/CountryFilter.cs +++ b/osu.Game/Overlays/Rankings/CountryFilter.cs @@ -76,9 +76,9 @@ namespace osu.Game.Overlays.Rankings } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - background.Colour = colours.GreySeafoam; + background.Colour = colourProvider.Dark3; } protected override void LoadComplete() diff --git a/osu.Game/Overlays/Rankings/CountryPill.cs b/osu.Game/Overlays/Rankings/CountryPill.cs index 410d316006..1b19bbd95e 100644 --- a/osu.Game/Overlays/Rankings/CountryPill.cs +++ b/osu.Game/Overlays/Rankings/CountryPill.cs @@ -100,9 +100,9 @@ namespace osu.Game.Overlays.Rankings } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - background.Colour = colours.GreySeafoamDarker; + background.Colour = colourProvider.Background5; } protected override void LoadComplete() @@ -154,9 +154,9 @@ namespace osu.Game.Overlays.Rankings } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - IdleColour = colours.GreySeafoamLighter; + IdleColour = colourProvider.Light2; HoverColour = Color4.White; } } diff --git a/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs b/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs index e4199ba56d..b3f96604ea 100644 --- a/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs +++ b/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs @@ -7,6 +7,7 @@ using osu.Game.Graphics.UserInterface; using osu.Game.Rulesets; using osu.Game.Users; using System.Collections.Generic; +using osu.Framework.Graphics.Containers; namespace osu.Game.Overlays.Rankings { @@ -27,6 +28,19 @@ namespace osu.Game.Overlays.Rankings Current = Ruleset }; + protected override Drawable CreateContent() => new Container + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Children = new Drawable[] + { + new CountryFilter + { + Current = Country + } + } + }; + private class RankingsTitle : ScreenTitle { public readonly Bindable Scope = new Bindable(); From dc1d0d0f32063952da5e149deb03193fbf284205 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 3 Feb 2020 20:47:41 +0300 Subject: [PATCH 1232/1829] Add spotlights selector to new header --- .../Rankings/RankingsOverlayHeader.cs | 69 ++++++++++++++++++- 1 file changed, 67 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs b/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs index b3f96604ea..f6d39c7df4 100644 --- a/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs +++ b/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs @@ -8,15 +8,22 @@ using osu.Game.Rulesets; using osu.Game.Users; using System.Collections.Generic; using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; +using osu.Framework.Allocation; namespace osu.Game.Overlays.Rankings { public class RankingsOverlayHeader : TabControlOverlayHeader { public readonly Bindable Ruleset = new Bindable(); + public readonly Bindable Spotlight = new Bindable(); public readonly Bindable Country = new Bindable(); - public IEnumerable Spotlights { get; set; } + public IEnumerable Spotlights + { + get => spotlightsContainer.Spotlights; + set => spotlightsContainer.Spotlights = value; + } protected override ScreenTitle CreateTitle() => new RankingsTitle { @@ -28,19 +35,35 @@ namespace osu.Game.Overlays.Rankings Current = Ruleset }; - protected override Drawable CreateContent() => new Container + private SpotlightsContainer spotlightsContainer; + + protected override Drawable CreateContent() => new FillFlowContainer { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, + Direction = FillDirection.Vertical, Children = new Drawable[] { new CountryFilter { Current = Country + }, + spotlightsContainer = new SpotlightsContainer + { + Spotlight = { BindTarget = Spotlight } } } }; + protected override void LoadComplete() + { + Current.BindValueChanged(onCurrentChanged, true); + base.LoadComplete(); + } + + private void onCurrentChanged(ValueChangedEvent scope) => + spotlightsContainer.FadeTo(scope.NewValue == RankingsScope.Spotlights ? 1 : 0, 200, Easing.OutQuint); + private class RankingsTitle : ScreenTitle { public readonly Bindable Scope = new Bindable(); @@ -58,5 +81,47 @@ namespace osu.Game.Overlays.Rankings protected override Drawable CreateIcon() => new ScreenTitleTextureIcon(@"Icons/rankings"); } + + private class SpotlightsContainer : CompositeDrawable + { + public readonly Bindable Spotlight = new Bindable(); + + public IEnumerable Spotlights + { + get => dropdown.Items; + set => dropdown.Items = value; + } + + private readonly OsuDropdown dropdown; + private readonly Box background; + + public SpotlightsContainer() + { + Height = 100; + RelativeSizeAxes = Axes.X; + InternalChildren = new Drawable[] + { + background = new Box + { + RelativeSizeAxes = Axes.Both, + }, + dropdown = new OsuDropdown + { + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, + RelativeSizeAxes = Axes.X, + Width = 0.8f, + Current = Spotlight, + Y = 20, + } + }; + } + + [BackgroundDependencyLoader] + private void load(OverlayColourProvider colourProvider) + { + background.Colour = colourProvider.Dark3; + } + } } } From 3b6ed3fb2756a9a61fff3c4174c03aed36aa5f69 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 3 Feb 2020 20:53:30 +0300 Subject: [PATCH 1233/1829] Use new header in the RankingsOverlay --- osu.Game.Tests/Visual/Online/TestSceneRankingsOverlay.cs | 3 ++- osu.Game/Overlays/RankingsOverlay.cs | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsOverlay.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsOverlay.cs index 568e36df4c..a769ebe4a9 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsOverlay.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsOverlay.cs @@ -25,7 +25,8 @@ namespace osu.Game.Tests.Visual.Online typeof(TableRowBackground), typeof(UserBasedTable), typeof(RankingsTable<>), - typeof(RankingsOverlay) + typeof(RankingsOverlay), + typeof(RankingsOverlayHeader) }; [Cached] diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index 1ab18b8c15..4a463e431c 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -55,12 +55,13 @@ namespace osu.Game.Overlays Direction = FillDirection.Vertical, Children = new Drawable[] { - new RankingsHeader + new RankingsOverlayHeader { Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, + Depth = -float.MaxValue, Country = { BindTarget = Country }, - Scope = { BindTarget = Scope }, + Current = { BindTarget = Scope }, Ruleset = { BindTarget = ruleset } }, new Container From 2a802307e7b2b38e87765ea8eb3378c4329126cc Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 3 Feb 2020 20:59:08 +0300 Subject: [PATCH 1234/1829] Delete unused components --- .../TestSceneRankingsDismissableFlag.cs | 66 --------- .../Visual/Online/TestSceneRankingsHeader.cs | 1 + .../Online/TestSceneRankingsHeaderTitle.cs | 55 -------- .../TestSceneRankingsRulesetSelector.cs | 41 ------ .../Online/TestSceneRankingsScopeSelector.cs | 54 -------- osu.Game/Overlays/Rankings/DismissableFlag.cs | 55 -------- osu.Game/Overlays/Rankings/HeaderTitle.cs | 91 ------------ osu.Game/Overlays/Rankings/RankingsHeader.cs | 129 ------------------ .../Rankings/RankingsOverlayHeader.cs | 8 ++ .../Rankings/RankingsRulesetSelector.cs | 56 -------- .../Rankings/RankingsScopeSelector.cs | 26 ---- 11 files changed, 9 insertions(+), 573 deletions(-) delete mode 100644 osu.Game.Tests/Visual/Online/TestSceneRankingsDismissableFlag.cs delete mode 100644 osu.Game.Tests/Visual/Online/TestSceneRankingsHeaderTitle.cs delete mode 100644 osu.Game.Tests/Visual/Online/TestSceneRankingsRulesetSelector.cs delete mode 100644 osu.Game.Tests/Visual/Online/TestSceneRankingsScopeSelector.cs delete mode 100644 osu.Game/Overlays/Rankings/DismissableFlag.cs delete mode 100644 osu.Game/Overlays/Rankings/HeaderTitle.cs delete mode 100644 osu.Game/Overlays/Rankings/RankingsHeader.cs delete mode 100644 osu.Game/Overlays/Rankings/RankingsRulesetSelector.cs delete mode 100644 osu.Game/Overlays/Rankings/RankingsScopeSelector.cs diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsDismissableFlag.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsDismissableFlag.cs deleted file mode 100644 index cd954cd6bd..0000000000 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsDismissableFlag.cs +++ /dev/null @@ -1,66 +0,0 @@ -// 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.Framework.Graphics.Sprites; -using osu.Game.Graphics; -using osu.Game.Graphics.Sprites; -using osu.Game.Overlays.Rankings; -using osu.Game.Users; -using osuTK; - -namespace osu.Game.Tests.Visual.Online -{ - public class TestSceneRankingsDismissableFlag : OsuTestScene - { - public override IReadOnlyList RequiredTypes => new[] - { - typeof(DismissableFlag), - }; - - public TestSceneRankingsDismissableFlag() - { - DismissableFlag flag; - SpriteText text; - - var countryA = new Country - { - FlagName = "BY", - FullName = "Belarus" - }; - - var countryB = new Country - { - FlagName = "US", - FullName = "United States" - }; - - AddRange(new Drawable[] - { - flag = new DismissableFlag - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Size = new Vector2(30, 20), - Country = countryA, - }, - text = new OsuSpriteText - { - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - Text = "Invoked", - Font = OsuFont.GetFont(size: 30), - Alpha = 0, - } - }); - - flag.Action += () => text.FadeIn().Then().FadeOut(1000, Easing.OutQuint); - - AddStep("Trigger click", () => flag.Click()); - AddStep("Change to country 2", () => flag.Country = countryB); - AddStep("Change to country 1", () => flag.Country = countryA); - } - } -} diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs index 9837ae251d..898e461bde 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs @@ -18,6 +18,7 @@ namespace osu.Game.Tests.Visual.Online { typeof(RankingsOverlayHeader), typeof(CountryFilter), + typeof(CountryPill) }; [Cached] diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsHeaderTitle.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsHeaderTitle.cs deleted file mode 100644 index 0edf104da0..0000000000 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsHeaderTitle.cs +++ /dev/null @@ -1,55 +0,0 @@ -// 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.Bindables; -using osu.Framework.Graphics; -using osu.Game.Overlays.Rankings; -using osu.Game.Users; - -namespace osu.Game.Tests.Visual.Online -{ - public class TestSceneRankingsHeaderTitle : OsuTestScene - { - public override IReadOnlyList RequiredTypes => new[] - { - typeof(DismissableFlag), - typeof(HeaderTitle), - }; - - public TestSceneRankingsHeaderTitle() - { - var countryBindable = new Bindable(); - var scope = new Bindable(); - - Add(new HeaderTitle - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Country = { BindTarget = countryBindable }, - Scope = { BindTarget = scope }, - }); - - var countryA = new Country - { - FlagName = "BY", - FullName = "Belarus" - }; - - var countryB = new Country - { - FlagName = "US", - FullName = "United States" - }; - - AddStep("Set country 1", () => countryBindable.Value = countryA); - AddStep("Set country 2", () => countryBindable.Value = countryB); - AddStep("Set null country", () => countryBindable.Value = null); - AddStep("Set scope to Performance", () => scope.Value = RankingsScope.Performance); - AddStep("Set scope to Spotlights", () => scope.Value = RankingsScope.Spotlights); - AddStep("Set scope to Score", () => scope.Value = RankingsScope.Score); - AddStep("Set scope to Country", () => scope.Value = RankingsScope.Country); - } - } -} diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsRulesetSelector.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsRulesetSelector.cs deleted file mode 100644 index 84515bd3a4..0000000000 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsRulesetSelector.cs +++ /dev/null @@ -1,41 +0,0 @@ -// 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.Game.Overlays.Rankings; -using osu.Framework.Graphics; -using osu.Game.Rulesets; -using osu.Framework.Bindables; -using osu.Game.Rulesets.Osu; -using osu.Game.Rulesets.Mania; -using osu.Game.Rulesets.Taiko; -using osu.Game.Rulesets.Catch; - -namespace osu.Game.Tests.Visual.Online -{ - public class TestSceneRankingsRulesetSelector : OsuTestScene - { - public override IReadOnlyList RequiredTypes => new[] - { - typeof(RankingsRulesetSelector), - }; - - public TestSceneRankingsRulesetSelector() - { - var current = new Bindable(); - - Add(new RankingsRulesetSelector - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Current = { BindTarget = current } - }); - - AddStep("Select osu!", () => current.Value = new OsuRuleset().RulesetInfo); - AddStep("Select mania", () => current.Value = new ManiaRuleset().RulesetInfo); - AddStep("Select taiko", () => current.Value = new TaikoRuleset().RulesetInfo); - AddStep("Select catch", () => current.Value = new CatchRuleset().RulesetInfo); - } - } -} diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsScopeSelector.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsScopeSelector.cs deleted file mode 100644 index 3693d6b5b4..0000000000 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsScopeSelector.cs +++ /dev/null @@ -1,54 +0,0 @@ -// 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.Framework.Bindables; -using osu.Framework.Graphics.Shapes; -using osu.Framework.Allocation; -using osu.Game.Graphics; -using osu.Game.Overlays.Rankings; - -namespace osu.Game.Tests.Visual.Online -{ - public class TestSceneRankingsScopeSelector : OsuTestScene - { - public override IReadOnlyList RequiredTypes => new[] - { - typeof(RankingsScopeSelector), - }; - - private readonly Box background; - - public TestSceneRankingsScopeSelector() - { - var scope = new Bindable(); - - AddRange(new Drawable[] - { - background = new Box - { - RelativeSizeAxes = Axes.Both - }, - new RankingsScopeSelector - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Current = scope, - } - }); - - AddStep(@"Select country", () => scope.Value = RankingsScope.Country); - AddStep(@"Select performance", () => scope.Value = RankingsScope.Performance); - AddStep(@"Select score", () => scope.Value = RankingsScope.Score); - AddStep(@"Select spotlights", () => scope.Value = RankingsScope.Spotlights); - } - - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - background.Colour = colours.GreySeafoam; - } - } -} diff --git a/osu.Game/Overlays/Rankings/DismissableFlag.cs b/osu.Game/Overlays/Rankings/DismissableFlag.cs deleted file mode 100644 index 7a55b0bba6..0000000000 --- a/osu.Game/Overlays/Rankings/DismissableFlag.cs +++ /dev/null @@ -1,55 +0,0 @@ -// 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.Sprites; -using osu.Game.Users.Drawables; -using osuTK.Graphics; -using osuTK; -using osu.Framework.Input.Events; -using System; - -namespace osu.Game.Overlays.Rankings -{ - public class DismissableFlag : UpdateableFlag - { - private const int duration = 200; - - public Action Action; - - private readonly SpriteIcon hoverIcon; - - public DismissableFlag() - { - AddInternal(hoverIcon = new SpriteIcon - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Depth = -1, - Alpha = 0, - Size = new Vector2(10), - Icon = FontAwesome.Solid.Times, - }); - } - - protected override bool OnHover(HoverEvent e) - { - hoverIcon.FadeIn(duration, Easing.OutQuint); - this.FadeColour(Color4.Gray, duration, Easing.OutQuint); - return base.OnHover(e); - } - - protected override void OnHoverLost(HoverLostEvent e) - { - base.OnHoverLost(e); - hoverIcon.FadeOut(duration, Easing.OutQuint); - this.FadeColour(Color4.White, duration, Easing.OutQuint); - } - - protected override bool OnClick(ClickEvent e) - { - Action?.Invoke(); - return true; - } - } -} diff --git a/osu.Game/Overlays/Rankings/HeaderTitle.cs b/osu.Game/Overlays/Rankings/HeaderTitle.cs deleted file mode 100644 index b08a2a3900..0000000000 --- a/osu.Game/Overlays/Rankings/HeaderTitle.cs +++ /dev/null @@ -1,91 +0,0 @@ -// 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.Containers; -using osu.Framework.Graphics.Sprites; -using osu.Game.Users; -using osu.Framework.Graphics; -using osuTK; -using osu.Game.Graphics; -using osu.Framework.Allocation; -using osu.Game.Graphics.Sprites; - -namespace osu.Game.Overlays.Rankings -{ - public class HeaderTitle : CompositeDrawable - { - private const int spacing = 10; - private const int flag_margin = 5; - private const int text_size = 40; - - public readonly Bindable Scope = new Bindable(); - public readonly Bindable Country = new Bindable(); - - private readonly SpriteText scopeText; - private readonly DismissableFlag flag; - - public HeaderTitle() - { - AutoSizeAxes = Axes.Both; - InternalChild = new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Spacing = new Vector2(spacing, 0), - Children = new Drawable[] - { - flag = new DismissableFlag - { - Anchor = Anchor.BottomLeft, - Origin = Anchor.BottomLeft, - Margin = new MarginPadding { Bottom = flag_margin }, - Size = new Vector2(30, 20), - }, - scopeText = new OsuSpriteText - { - Anchor = Anchor.BottomLeft, - Origin = Anchor.BottomLeft, - Font = OsuFont.GetFont(size: text_size, weight: FontWeight.Light) - }, - new OsuSpriteText - { - Anchor = Anchor.BottomLeft, - Origin = Anchor.BottomLeft, - Font = OsuFont.GetFont(size: text_size, weight: FontWeight.Light), - Text = @"Ranking" - } - } - }; - - flag.Action += () => Country.Value = null; - } - - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - scopeText.Colour = colours.Lime; - } - - protected override void LoadComplete() - { - Scope.BindValueChanged(onScopeChanged, true); - Country.BindValueChanged(onCountryChanged, true); - base.LoadComplete(); - } - - private void onScopeChanged(ValueChangedEvent scope) => scopeText.Text = scope.NewValue.ToString(); - - private void onCountryChanged(ValueChangedEvent country) - { - if (country.NewValue == null) - { - flag.Hide(); - return; - } - - flag.Country = country.NewValue; - flag.Show(); - } - } -} diff --git a/osu.Game/Overlays/Rankings/RankingsHeader.cs b/osu.Game/Overlays/Rankings/RankingsHeader.cs deleted file mode 100644 index 6aa3e75df9..0000000000 --- a/osu.Game/Overlays/Rankings/RankingsHeader.cs +++ /dev/null @@ -1,129 +0,0 @@ -// 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.Containers; -using osu.Framework.Graphics; -using osu.Framework.Allocation; -using osu.Framework.Bindables; -using osu.Game.Rulesets; -using osu.Game.Users; -using osu.Framework.Graphics.Sprites; -using osu.Framework.Graphics.Textures; -using osuTK; -using osu.Game.Graphics.UserInterface; -using System.Collections.Generic; - -namespace osu.Game.Overlays.Rankings -{ - public class RankingsHeader : CompositeDrawable - { - private const int content_height = 250; - - public IEnumerable Spotlights - { - get => dropdown.Items; - set => dropdown.Items = value; - } - - public readonly Bindable Scope = new Bindable(); - public readonly Bindable Ruleset = new Bindable(); - public readonly Bindable Country = new Bindable(); - public readonly Bindable Spotlight = new Bindable(); - - private readonly OsuDropdown dropdown; - - public RankingsHeader() - { - RelativeSizeAxes = Axes.X; - AutoSizeAxes = Axes.Y; - - AddInternal(new FillFlowContainer - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Children = new Drawable[] - { - new RankingsRulesetSelector - { - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - Current = Ruleset - }, - new Container - { - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - RelativeSizeAxes = Axes.X, - Height = content_height, - Children = new Drawable[] - { - new Container - { - RelativeSizeAxes = Axes.Both, - Masking = true, - Child = new HeaderBackground(), - }, - new FillFlowContainer - { - AutoSizeAxes = Axes.Y, - RelativeSizeAxes = Axes.X, - Direction = FillDirection.Vertical, - Spacing = new Vector2(0, 20), - Children = new Drawable[] - { - new RankingsScopeSelector - { - Margin = new MarginPadding { Top = 10 }, - Current = Scope - }, - new HeaderTitle - { - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - Margin = new MarginPadding { Top = 10 }, - Scope = { BindTarget = Scope }, - Country = { BindTarget = Country }, - }, - dropdown = new OsuDropdown - { - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - RelativeSizeAxes = Axes.X, - Width = 0.8f, - Current = Spotlight, - } - } - }, - } - } - } - }); - } - - protected override void LoadComplete() - { - Scope.BindValueChanged(onScopeChanged, true); - base.LoadComplete(); - } - - private void onScopeChanged(ValueChangedEvent scope) => - dropdown.FadeTo(scope.NewValue == RankingsScope.Spotlights ? 1 : 0, 200, Easing.OutQuint); - - private class HeaderBackground : Sprite - { - public HeaderBackground() - { - Anchor = Anchor.Centre; - Origin = Anchor.Centre; - RelativeSizeAxes = Axes.Both; - FillMode = FillMode.Fill; - } - - [BackgroundDependencyLoader] - private void load(TextureStore textures) - { - Texture = textures.Get(@"Headers/rankings"); - } - } - } -} diff --git a/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs b/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs index f6d39c7df4..94afe4e5a5 100644 --- a/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs +++ b/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs @@ -124,4 +124,12 @@ namespace osu.Game.Overlays.Rankings } } } + + public enum RankingsScope + { + Performance, + Spotlights, + Score, + Country + } } diff --git a/osu.Game/Overlays/Rankings/RankingsRulesetSelector.cs b/osu.Game/Overlays/Rankings/RankingsRulesetSelector.cs deleted file mode 100644 index 3d25e3995a..0000000000 --- a/osu.Game/Overlays/Rankings/RankingsRulesetSelector.cs +++ /dev/null @@ -1,56 +0,0 @@ -// 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.Graphics; -using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.UserInterface; -using osu.Game.Graphics; -using osu.Game.Graphics.UserInterface; -using osu.Game.Rulesets; -using osuTK; -using System.Linq; - -namespace osu.Game.Overlays.Rankings -{ - public class RankingsRulesetSelector : PageTabControl - { - protected override TabItem CreateTabItem(RulesetInfo value) => new RankingsTabItem(value); - - protected override Dropdown CreateDropdown() => null; - - public RankingsRulesetSelector() - { - AutoSizeAxes = Axes.X; - } - - [BackgroundDependencyLoader] - private void load(OsuColour colours, RulesetStore rulesets) - { - foreach (var r in rulesets.AvailableRulesets) - AddItem(r); - - AccentColour = colours.Lime; - - SelectTab(TabContainer.FirstOrDefault()); - } - - protected override TabFillFlowContainer CreateTabFlow() => new TabFillFlowContainer - { - AutoSizeAxes = Axes.X, - RelativeSizeAxes = Axes.Y, - Direction = FillDirection.Horizontal, - Spacing = new Vector2(20, 0), - }; - - private class RankingsTabItem : PageTabItem - { - public RankingsTabItem(RulesetInfo value) - : base(value) - { - } - - protected override string CreateText() => $"{Value.Name}"; - } - } -} diff --git a/osu.Game/Overlays/Rankings/RankingsScopeSelector.cs b/osu.Game/Overlays/Rankings/RankingsScopeSelector.cs deleted file mode 100644 index 2095bcc61c..0000000000 --- a/osu.Game/Overlays/Rankings/RankingsScopeSelector.cs +++ /dev/null @@ -1,26 +0,0 @@ -// 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.UserInterface; -using osu.Framework.Allocation; -using osuTK.Graphics; - -namespace osu.Game.Overlays.Rankings -{ - public class RankingsScopeSelector : GradientLineTabControl - { - [BackgroundDependencyLoader] - private void load() - { - AccentColour = LineColour = Color4.Black; - } - } - - public enum RankingsScope - { - Performance, - Spotlights, - Score, - Country - } -} From f7cbb8c1f7c202e9c4b14cae9357a883d6cb4708 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 3 Feb 2020 21:05:11 +0300 Subject: [PATCH 1235/1829] Recolour RankingsOverlay background --- osu.Game/Overlays/RankingsOverlay.cs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index 4a463e431c..84470d9caa 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -6,7 +6,6 @@ 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.Overlays.Rankings; using osu.Game.Users; using osu.Game.Rulesets; @@ -27,6 +26,7 @@ namespace osu.Game.Overlays private readonly BasicScrollContainer scrollFlow; private readonly Container tableContainer; private readonly DimmedLoadingLayer loading; + private readonly Box background; private APIRequest lastRequest; private CancellationTokenSource cancellationToken; @@ -39,10 +39,9 @@ namespace osu.Game.Overlays { Children = new Drawable[] { - new Box + background = new Box { - RelativeSizeAxes = Axes.Both, - Colour = OsuColour.Gray(0.1f), + RelativeSizeAxes = Axes.Both }, scrollFlow = new BasicScrollContainer { @@ -87,6 +86,12 @@ namespace osu.Game.Overlays }; } + [BackgroundDependencyLoader] + private void load() + { + background.Colour = ColourProvider.Background5; + } + protected override void LoadComplete() { Country.BindValueChanged(_ => From 824ee8a8882dacbb18269894739dbedbe2524512 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 3 Feb 2020 21:22:37 +0300 Subject: [PATCH 1236/1829] Recolour rankings tables --- .../Visual/Online/TestSceneRankingsTables.cs | 4 ++++ osu.Game/Overlays/Rankings/Tables/RankingsTable.cs | 14 +++++++------- .../Overlays/Rankings/Tables/TableRowBackground.cs | 7 +++---- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsTables.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsTables.cs index 93da2a439e..ab174f303e 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsTables.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsTables.cs @@ -16,6 +16,7 @@ using osu.Game.Rulesets.Mania; using osu.Game.Rulesets.Taiko; using osu.Game.Rulesets.Catch; using osu.Framework.Allocation; +using osu.Game.Overlays; namespace osu.Game.Tests.Visual.Online { @@ -36,6 +37,9 @@ namespace osu.Game.Tests.Visual.Online [Resolved] private IAPIProvider api { get; set; } + [Cached] + private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Green); + private readonly BasicScrollContainer scrollFlow; private readonly DimmedLoadingLayer loading; private CancellationTokenSource cancellationToken; diff --git a/osu.Game/Overlays/Rankings/Tables/RankingsTable.cs b/osu.Game/Overlays/Rankings/Tables/RankingsTable.cs index f947c5585c..943897581e 100644 --- a/osu.Game/Overlays/Rankings/Tables/RankingsTable.cs +++ b/osu.Game/Overlays/Rankings/Tables/RankingsTable.cs @@ -18,7 +18,7 @@ namespace osu.Game.Overlays.Rankings.Tables { public abstract class RankingsTable : TableContainer { - protected const int TEXT_SIZE = 14; + protected const int TEXT_SIZE = 12; private const float horizontal_inset = 20; private const float row_height = 25; private const int items_per_page = 50; @@ -60,7 +60,7 @@ namespace osu.Game.Overlays.Rankings.Tables private static TableColumn[] mainHeaders => new[] { - new TableColumn(string.Empty, Anchor.Centre, new Dimension(GridSizeMode.Absolute, 50)), // place + new TableColumn(string.Empty, Anchor.Centre, new Dimension(GridSizeMode.Absolute, 40)), // place new TableColumn(string.Empty, Anchor.CentreLeft, new Dimension(GridSizeMode.Distributed)), // flag and username (country name) }; @@ -77,7 +77,7 @@ namespace osu.Game.Overlays.Rankings.Tables private OsuSpriteText createIndexDrawable(int index) => new OsuSpriteText { Text = $"#{index + 1}", - Font = OsuFont.GetFont(size: TEXT_SIZE, weight: FontWeight.Bold) + Font = OsuFont.GetFont(size: TEXT_SIZE, weight: FontWeight.SemiBold) }; private FillFlowContainer createMainContent(TModel item) => new FillFlowContainer @@ -112,10 +112,10 @@ namespace osu.Game.Overlays.Rankings.Tables } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { if (Text != highlighted) - Colour = colours.GreySeafoamLighter; + Colour = colourProvider.Foreground1; } } @@ -131,9 +131,9 @@ namespace osu.Game.Overlays.Rankings.Tables protected class ColoredRowText : RowText { [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - Colour = colours.GreySeafoamLighter; + Colour = colourProvider.Foreground1; } } } diff --git a/osu.Game/Overlays/Rankings/Tables/TableRowBackground.cs b/osu.Game/Overlays/Rankings/Tables/TableRowBackground.cs index 04e1c22dae..fe87a8b3d4 100644 --- a/osu.Game/Overlays/Rankings/Tables/TableRowBackground.cs +++ b/osu.Game/Overlays/Rankings/Tables/TableRowBackground.cs @@ -6,7 +6,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 osuTK.Graphics; namespace osu.Game.Overlays.Rankings.Tables @@ -35,10 +34,10 @@ namespace osu.Game.Overlays.Rankings.Tables } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - background.Colour = idleColour = colours.GreySeafoam; - hoverColour = colours.GreySeafoamLight; + background.Colour = idleColour = colourProvider.Background4; + hoverColour = colourProvider.Background3; } protected override bool OnHover(HoverEvent e) From 4abd9cb89ae3fc3c5bf13a633a35a622a67656c5 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 3 Feb 2020 21:45:10 +0300 Subject: [PATCH 1237/1829] Move Enabled/Disabled state logic to the OverlayRulesetTabItem --- .../BeatmapSet/BeatmapRulesetTabItem.cs | 13 ---------- osu.Game/Overlays/OverlayRulesetTabItem.cs | 26 +++++++++---------- 2 files changed, 13 insertions(+), 26 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/BeatmapRulesetTabItem.cs b/osu.Game/Overlays/BeatmapSet/BeatmapRulesetTabItem.cs index df159977e6..cb258edced 100644 --- a/osu.Game/Overlays/BeatmapSet/BeatmapRulesetTabItem.cs +++ b/osu.Game/Overlays/BeatmapSet/BeatmapRulesetTabItem.cs @@ -18,8 +18,6 @@ namespace osu.Game.Overlays.BeatmapSet { public readonly Bindable BeatmapSet = new Bindable(); - public override bool PropagatePositionalInputSubTree => Enabled.Value && !Active.Value && base.PropagatePositionalInputSubTree; - [Resolved] private OverlayColourProvider colourProvider { get; set; } @@ -73,17 +71,6 @@ namespace osu.Game.Overlays.BeatmapSet Enabled.Value = beatmapsCount > 0; }, true); - - Enabled.BindValueChanged(enabled => - { - if (enabled.NewValue) - { - UpdateState(); - return; - } - - AccentColour = colourProvider.Foreground1; - }, true); } } } diff --git a/osu.Game/Overlays/OverlayRulesetTabItem.cs b/osu.Game/Overlays/OverlayRulesetTabItem.cs index 5e6ac57886..1f0beffe78 100644 --- a/osu.Game/Overlays/OverlayRulesetTabItem.cs +++ b/osu.Game/Overlays/OverlayRulesetTabItem.cs @@ -17,6 +17,8 @@ namespace osu.Game.Overlays { public class OverlayRulesetTabItem : TabItem { + public override bool PropagatePositionalInputSubTree => Enabled.Value && !Active.Value && base.PropagatePositionalInputSubTree; + private Color4 accentColour; protected virtual Color4 AccentColour @@ -61,37 +63,35 @@ namespace osu.Game.Overlays Enabled.Value = true; } - [BackgroundDependencyLoader] - private void load() + protected override void LoadComplete() { - UpdateState(); + base.LoadComplete(); + Enabled.BindValueChanged(_ => updateState(), true); } protected override bool OnHover(HoverEvent e) { base.OnHover(e); - UpdateState(); + updateState(); return true; } protected override void OnHoverLost(HoverLostEvent e) { base.OnHoverLost(e); - UpdateState(); + updateState(); } - protected override void OnActivated() => UpdateState(); + protected override void OnActivated() => updateState(); - protected override void OnDeactivated() => UpdateState(); + protected override void OnDeactivated() => updateState(); - protected void UpdateState() + private void updateState() { text.Font = text.Font.With(weight: Active.Value ? FontWeight.Bold : FontWeight.Medium); - - if (!Enabled.Value) - return; - - AccentColour = IsHovered || Active.Value ? Color4.White : colourProvider.Highlight1; + AccentColour = IsHovered || Active.Value ? Color4.White : getStateColour(); } + + private Color4 getStateColour() => Enabled.Value ? colourProvider.Highlight1 : colourProvider.Foreground1; } } From e42b95974a9d9b9071faabde678d28754bde8d99 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 3 Feb 2020 21:49:21 +0300 Subject: [PATCH 1238/1829] Fix failing test scene --- osu.Game/Overlays/NewsOverlay.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/NewsOverlay.cs b/osu.Game/Overlays/NewsOverlay.cs index 6dde300556..71c205ff63 100644 --- a/osu.Game/Overlays/NewsOverlay.cs +++ b/osu.Game/Overlays/NewsOverlay.cs @@ -60,7 +60,7 @@ namespace osu.Game.Overlays }, }; - header.Current.BindTo(Current); + header.Post.BindTo(Current); Current.TriggerChange(); } From 26a9d60437d706ab993354d4a39630548a3d5c38 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Mon, 3 Feb 2020 23:17:10 +0300 Subject: [PATCH 1239/1829] Avoid exposing whenever possible --- .../Visual/Gameplay/TestSceneHUDOverlay.cs | 45 ++++++------------- 1 file changed, 13 insertions(+), 32 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs index 2bafcc1197..b7d4c0be21 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs @@ -15,9 +15,11 @@ namespace osu.Game.Tests.Visual.Gameplay { public class TestSceneHUDOverlay : ManualInputManagerTestScene { - private TestHUDOverlay hudOverlay; + private HUDOverlay hudOverlay; - private Drawable hideTarget => hudOverlay.KeyCounter; // best way of checking hideTargets without exposing. + // best way to check without exposing. + private Drawable hideTarget => hudOverlay.KeyCounter; + private FillFlowContainer keyCounterFlow => (FillFlowContainer)hudOverlay.KeyCounter.Child.Parent; [Resolved] private OsuConfigManager config { get; set; } @@ -30,7 +32,7 @@ namespace osu.Game.Tests.Visual.Gameplay AddAssert("showhud is set", () => hudOverlay.ShowHud.Value); AddAssert("hidetarget is visible", () => hideTarget.IsPresent); - AddAssert("key counter flow is visible", () => hudOverlay.KeyCounter.KeyFlow.IsPresent); + AddAssert("key counter flow is visible", () => keyCounterFlow.IsPresent); AddAssert("pause button is visible", () => hudOverlay.HoldToQuit.IsPresent); } @@ -55,7 +57,7 @@ namespace osu.Game.Tests.Visual.Gameplay AddAssert("pause button is still visible", () => hudOverlay.HoldToQuit.IsPresent); // Key counter flow container should not be affected by this, only the key counter display will be hidden as checked above. - AddAssert("key counter flow not affected", () => hudOverlay.KeyCounter.KeyFlow.IsPresent); + AddAssert("key counter flow not affected", () => keyCounterFlow.IsPresent); } [Test] @@ -90,47 +92,26 @@ namespace osu.Game.Tests.Visual.Gameplay AddStep("set showhud false", () => hudOverlay.ShowHud.Value = false); AddUntilStep("hidetarget is hidden", () => !hideTarget.IsPresent); - AddAssert("key counters hidden", () => !hudOverlay.KeyCounter.KeyFlow.IsPresent); + AddAssert("key counters hidden", () => !keyCounterFlow.IsPresent); AddStep("set showhud true", () => hudOverlay.ShowHud.Value = true); AddUntilStep("hidetarget is visible", () => hideTarget.IsPresent); - AddAssert("key counters still hidden", () => !hudOverlay.KeyCounter.KeyFlow.IsPresent); + AddAssert("key counters still hidden", () => !keyCounterFlow.IsPresent); AddStep("return value", () => config.Set(OsuSetting.KeyOverlay, keyCounterVisibleValue)); } - private void createNew(Action action = null) + private void createNew(Action action = null) { AddStep("create overlay", () => { - Child = hudOverlay = new TestHUDOverlay(); + Child = hudOverlay = new HUDOverlay(null, null, null, Array.Empty()); + + // Add any key just to display the key counter visually. + hudOverlay.KeyCounter.Add(new KeyCounterKeyboard(Key.Space)); action?.Invoke(hudOverlay); }); } - - private class TestHUDOverlay : HUDOverlay - { - public new TestKeyCounterDisplay KeyCounter => (TestKeyCounterDisplay)base.KeyCounter; - - protected override KeyCounterDisplay CreateKeyCounter() => new TestKeyCounterDisplay - { - Anchor = Anchor.BottomRight, - Origin = Anchor.BottomRight, - Margin = new MarginPadding(10), - }; - - public TestHUDOverlay() - : base(null, null, null, Array.Empty()) - { - // Add any key just to display the key counter visually. - KeyCounter.Add(new KeyCounterKeyboard(Key.Space)); - } - } - - private class TestKeyCounterDisplay : KeyCounterDisplay - { - public new FillFlowContainer KeyFlow => base.KeyFlow; - } } } From 0ccbffde8d9b7d114eb9d88e6ee2a1441f4fd35a Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Mon, 3 Feb 2020 23:43:04 +0300 Subject: [PATCH 1240/1829] Use ChildrenOfType instead --- osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs index b7d4c0be21..fc03dc6ed3 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs @@ -2,10 +2,12 @@ // See the LICENCE file in the repository root for full licence text. using System; +using System.Linq; using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.Testing; using osu.Game.Configuration; using osu.Game.Rulesets.Mods; using osu.Game.Screens.Play; @@ -19,7 +21,7 @@ namespace osu.Game.Tests.Visual.Gameplay // best way to check without exposing. private Drawable hideTarget => hudOverlay.KeyCounter; - private FillFlowContainer keyCounterFlow => (FillFlowContainer)hudOverlay.KeyCounter.Child.Parent; + private FillFlowContainer keyCounterFlow => hudOverlay.KeyCounter.ChildrenOfType>().First(); [Resolved] private OsuConfigManager config { get; set; } From fe078c244d2d0e11fd449355cefd9ed6f2233c1e Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 4 Feb 2020 00:43:04 +0300 Subject: [PATCH 1241/1829] Expose TabControlOverlayHeader.Current value --- osu.Game/Overlays/Changelog/ChangelogHeader.cs | 18 +++++++++--------- osu.Game/Overlays/ChangelogOverlay.cs | 2 +- osu.Game/Overlays/News/NewsHeader.cs | 10 +++++----- osu.Game/Overlays/NewsOverlay.cs | 2 +- osu.Game/Overlays/TabControlOverlayHeader.cs | 17 +++++++++++++++-- 5 files changed, 31 insertions(+), 18 deletions(-) diff --git a/osu.Game/Overlays/Changelog/ChangelogHeader.cs b/osu.Game/Overlays/Changelog/ChangelogHeader.cs index 4165a180da..8663ec586b 100644 --- a/osu.Game/Overlays/Changelog/ChangelogHeader.cs +++ b/osu.Game/Overlays/Changelog/ChangelogHeader.cs @@ -14,7 +14,7 @@ namespace osu.Game.Overlays.Changelog { public class ChangelogHeader : BreadcrumbControlOverlayHeader { - public readonly Bindable Current = new Bindable(); + public readonly Bindable Build = new Bindable(); public Action ListingSelected; @@ -25,18 +25,18 @@ namespace osu.Game.Overlays.Changelog public ChangelogHeader() { TabControl.AddItem(listing_string); - TabControl.Current.ValueChanged += e => + Current.ValueChanged += e => { if (e.NewValue == listing_string) ListingSelected?.Invoke(); }; - Current.ValueChanged += showBuild; + Build.ValueChanged += showBuild; Streams.Current.ValueChanged += e => { - if (e.NewValue?.LatestBuild != null && !e.NewValue.Equals(Current.Value?.UpdateStream)) - Current.Value = e.NewValue.LatestBuild; + if (e.NewValue?.LatestBuild != null && !e.NewValue.Equals(Build.Value?.UpdateStream)) + Build.Value = e.NewValue.LatestBuild; }; } @@ -50,7 +50,7 @@ namespace osu.Game.Overlays.Changelog if (e.NewValue != null) { TabControl.AddItem(e.NewValue.ToString()); - TabControl.Current.Value = e.NewValue.ToString(); + Current.Value = e.NewValue.ToString(); updateCurrentStream(); @@ -58,7 +58,7 @@ namespace osu.Game.Overlays.Changelog } else { - TabControl.Current.Value = listing_string; + Current.Value = listing_string; Streams.Current.Value = null; title.Version = null; } @@ -86,10 +86,10 @@ namespace osu.Game.Overlays.Changelog private void updateCurrentStream() { - if (Current.Value == null) + if (Build.Value == null) return; - Streams.Current.Value = Streams.Items.FirstOrDefault(s => s.Name == Current.Value.UpdateStream.Name); + Streams.Current.Value = Streams.Items.FirstOrDefault(s => s.Name == Build.Value.UpdateStream.Name); } private class ChangelogHeaderTitle : ScreenTitle diff --git a/osu.Game/Overlays/ChangelogOverlay.cs b/osu.Game/Overlays/ChangelogOverlay.cs index 90ba206077..6a8cb29d3e 100644 --- a/osu.Game/Overlays/ChangelogOverlay.cs +++ b/osu.Game/Overlays/ChangelogOverlay.cs @@ -78,7 +78,7 @@ namespace osu.Game.Overlays sampleBack = audio.Samples.Get(@"UI/generic-select-soft"); - Header.Current.BindTo(Current); + Header.Build.BindTo(Current); Current.BindValueChanged(e => { diff --git a/osu.Game/Overlays/News/NewsHeader.cs b/osu.Game/Overlays/News/NewsHeader.cs index b525ba7a82..b55e3ffba0 100644 --- a/osu.Game/Overlays/News/NewsHeader.cs +++ b/osu.Game/Overlays/News/NewsHeader.cs @@ -14,7 +14,7 @@ namespace osu.Game.Overlays.News private NewsHeaderTitle title; - public readonly Bindable Current = new Bindable(null); + public readonly Bindable Post = new Bindable(null); public Action ShowFrontPage; @@ -22,13 +22,13 @@ namespace osu.Game.Overlays.News { TabControl.AddItem(front_page_string); - TabControl.Current.ValueChanged += e => + Current.ValueChanged += e => { if (e.NewValue == front_page_string) ShowFrontPage?.Invoke(); }; - Current.ValueChanged += showPost; + Post.ValueChanged += showPost; } private void showPost(ValueChangedEvent e) @@ -39,13 +39,13 @@ namespace osu.Game.Overlays.News if (e.NewValue != null) { TabControl.AddItem(e.NewValue); - TabControl.Current.Value = e.NewValue; + Current.Value = e.NewValue; title.IsReadingPost = true; } else { - TabControl.Current.Value = front_page_string; + Current.Value = front_page_string; title.IsReadingPost = false; } } diff --git a/osu.Game/Overlays/NewsOverlay.cs b/osu.Game/Overlays/NewsOverlay.cs index 6dde300556..71c205ff63 100644 --- a/osu.Game/Overlays/NewsOverlay.cs +++ b/osu.Game/Overlays/NewsOverlay.cs @@ -60,7 +60,7 @@ namespace osu.Game.Overlays }, }; - header.Current.BindTo(Current); + header.Post.BindTo(Current); Current.TriggerChange(); } diff --git a/osu.Game/Overlays/TabControlOverlayHeader.cs b/osu.Game/Overlays/TabControlOverlayHeader.cs index b410739b25..dff5a17bd8 100644 --- a/osu.Game/Overlays/TabControlOverlayHeader.cs +++ b/osu.Game/Overlays/TabControlOverlayHeader.cs @@ -3,6 +3,7 @@ using JetBrains.Annotations; using osu.Framework.Allocation; +using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; @@ -17,10 +18,18 @@ namespace osu.Game.Overlays /// An overlay header which contains a . /// /// The type of item to be represented by tabs. - public abstract class TabControlOverlayHeader : OverlayHeader + public abstract class TabControlOverlayHeader : OverlayHeader, IHasCurrentValue { protected OsuTabControl TabControl; + private readonly BindableWithCurrent current = new BindableWithCurrent(); + + public Bindable Current + { + get => current.Current; + set => current.Current = value; + } + private readonly Box controlBackground; protected TabControlOverlayHeader() @@ -35,7 +44,11 @@ namespace osu.Game.Overlays { RelativeSizeAxes = Axes.Both, }, - TabControl = CreateTabControl().With(control => control.Margin = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN }) + TabControl = CreateTabControl().With(control => + { + control.Margin = new MarginPadding { Left = UserProfileOverlay.CONTENT_X_MARGIN }; + control.Current = current; + }) } }); } From 5950ba3656914e9c667ebd6764ca55905935745a Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 4 Feb 2020 00:55:41 +0300 Subject: [PATCH 1242/1829] Change the order of colour check --- osu.Game/Overlays/OverlayRulesetTabItem.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/OverlayRulesetTabItem.cs b/osu.Game/Overlays/OverlayRulesetTabItem.cs index 1f0beffe78..67c458cc5c 100644 --- a/osu.Game/Overlays/OverlayRulesetTabItem.cs +++ b/osu.Game/Overlays/OverlayRulesetTabItem.cs @@ -89,9 +89,9 @@ namespace osu.Game.Overlays private void updateState() { text.Font = text.Font.With(weight: Active.Value ? FontWeight.Bold : FontWeight.Medium); - AccentColour = IsHovered || Active.Value ? Color4.White : getStateColour(); + AccentColour = Enabled.Value ? getActiveColour() : colourProvider.Foreground1; } - private Color4 getStateColour() => Enabled.Value ? colourProvider.Highlight1 : colourProvider.Foreground1; + private Color4 getActiveColour() => IsHovered || Active.Value ? Color4.White : colourProvider.Highlight1; } } From 22e3150f685a6916f0ddc2d689023cb32361598e Mon Sep 17 00:00:00 2001 From: Joehu Date: Mon, 3 Feb 2020 17:21:06 -0800 Subject: [PATCH 1243/1829] Fix comment and remove magic numbers --- osu.Game/Overlays/Mods/ModSelectOverlay.cs | 2 ++ osu.Game/Screens/Select/SongSelect.cs | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Mods/ModSelectOverlay.cs b/osu.Game/Overlays/Mods/ModSelectOverlay.cs index 2868fe1d79..0813e57dae 100644 --- a/osu.Game/Overlays/Mods/ModSelectOverlay.cs +++ b/osu.Game/Overlays/Mods/ModSelectOverlay.cs @@ -30,6 +30,8 @@ namespace osu.Game.Overlays.Mods { public class ModSelectOverlay : WaveOverlayContainer { + public const float HEIGHT = 510; + protected readonly TriangleButton DeselectAllButton; protected readonly TriangleButton CustomiseButton; protected readonly TriangleButton CloseButton; diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index 3f80c90b9d..a5dce9a065 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -223,13 +223,13 @@ namespace osu.Game.Screens.Select { AddRangeInternal(new Drawable[] { - new GridContainer // used for max width implementation + new GridContainer // used for max height implementation { RelativeSizeAxes = Axes.Both, RowDimensions = new[] { new Dimension(), - new Dimension(GridSizeMode.Relative, 1f, maxSize: 560), + new Dimension(GridSizeMode.Relative, 1f, maxSize: ModSelectOverlay.HEIGHT + Footer.HEIGHT), }, Content = new[] { From ddf9317bec9113ac89ac3ad7fc12d356d5cc070c Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Tue, 4 Feb 2020 08:25:01 +0700 Subject: [PATCH 1244/1829] Replace `:P2` with `:0.00%` --- osu.Game/Scoring/ScoreInfo.cs | 2 +- osu.Game/Users/UserStatistics.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Scoring/ScoreInfo.cs b/osu.Game/Scoring/ScoreInfo.cs index 8787785861..8dc5137818 100644 --- a/osu.Game/Scoring/ScoreInfo.cs +++ b/osu.Game/Scoring/ScoreInfo.cs @@ -32,7 +32,7 @@ namespace osu.Game.Scoring public double Accuracy { get; set; } [JsonIgnore] - public string DisplayAccuracy => Accuracy == 1 ? "100%" : $"{Accuracy:P2}"; + public string DisplayAccuracy => Accuracy == 1 ? "100%" : $"{Accuracy:0.00%}"; [JsonProperty(@"pp")] public double? PP { get; set; } diff --git a/osu.Game/Users/UserStatistics.cs b/osu.Game/Users/UserStatistics.cs index 9254eefb60..0f692dd60d 100644 --- a/osu.Game/Users/UserStatistics.cs +++ b/osu.Game/Users/UserStatistics.cs @@ -44,7 +44,7 @@ namespace osu.Game.Users public decimal Accuracy; [JsonIgnore] - public string DisplayAccuracy => $"{Accuracy:P2}"; + public string DisplayAccuracy => $"{Accuracy:0.00%}"; [JsonProperty(@"play_count")] public int PlayCount; From 68b3dc01df65551e900bc3762a18c371a841b33d Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 4 Feb 2020 12:53:57 +0900 Subject: [PATCH 1245/1829] Move property override below ctor --- osu.Game/Overlays/OverlayRulesetTabItem.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/OverlayRulesetTabItem.cs b/osu.Game/Overlays/OverlayRulesetTabItem.cs index 67c458cc5c..9b4dd5ba1e 100644 --- a/osu.Game/Overlays/OverlayRulesetTabItem.cs +++ b/osu.Game/Overlays/OverlayRulesetTabItem.cs @@ -17,8 +17,6 @@ namespace osu.Game.Overlays { public class OverlayRulesetTabItem : TabItem { - public override bool PropagatePositionalInputSubTree => Enabled.Value && !Active.Value && base.PropagatePositionalInputSubTree; - private Color4 accentColour; protected virtual Color4 AccentColour @@ -69,6 +67,8 @@ namespace osu.Game.Overlays Enabled.BindValueChanged(_ => updateState(), true); } + public override bool PropagatePositionalInputSubTree => Enabled.Value && !Active.Value && base.PropagatePositionalInputSubTree; + protected override bool OnHover(HoverEvent e) { base.OnHover(e); From bc9b499de010fc6f311908db0745d928c153caaf Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 4 Feb 2020 12:55:09 +0900 Subject: [PATCH 1246/1829] Make selector only privately-settable --- osu.Game/Overlays/BeatmapSet/BeatmapSetHeader.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/BeatmapSetHeader.cs b/osu.Game/Overlays/BeatmapSet/BeatmapSetHeader.cs index bf9f3ccc17..e5e3e276d5 100644 --- a/osu.Game/Overlays/BeatmapSet/BeatmapSetHeader.cs +++ b/osu.Game/Overlays/BeatmapSet/BeatmapSetHeader.cs @@ -11,7 +11,8 @@ namespace osu.Game.Overlays.BeatmapSet public class BeatmapSetHeader : OverlayHeader { public readonly Bindable Ruleset = new Bindable(); - public BeatmapRulesetSelector RulesetSelector; + + public BeatmapRulesetSelector RulesetSelector { get; private set; } protected override ScreenTitle CreateTitle() => new BeatmapHeaderTitle(); From a8ce50fadd588f0f6b8aa5b3c6c4624272335fc1 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Tue, 4 Feb 2020 11:17:23 +0700 Subject: [PATCH 1247/1829] Add FormatUtils.FormatAccuracy and usages --- osu.Game/Scoring/ScoreInfo.cs | 3 ++- osu.Game/Users/UserStatistics.cs | 3 ++- osu.Game/Utils/FormatUtils.cs | 21 +++++++++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 osu.Game/Utils/FormatUtils.cs diff --git a/osu.Game/Scoring/ScoreInfo.cs b/osu.Game/Scoring/ScoreInfo.cs index 8dc5137818..bed9104cad 100644 --- a/osu.Game/Scoring/ScoreInfo.cs +++ b/osu.Game/Scoring/ScoreInfo.cs @@ -13,6 +13,7 @@ using osu.Game.Rulesets; using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Scoring; using osu.Game.Users; +using osu.Game.Utils; namespace osu.Game.Scoring { @@ -32,7 +33,7 @@ namespace osu.Game.Scoring public double Accuracy { get; set; } [JsonIgnore] - public string DisplayAccuracy => Accuracy == 1 ? "100%" : $"{Accuracy:0.00%}"; + public string DisplayAccuracy => Accuracy.FormatAccuracy(); [JsonProperty(@"pp")] public double? PP { get; set; } diff --git a/osu.Game/Users/UserStatistics.cs b/osu.Game/Users/UserStatistics.cs index 0f692dd60d..129c128977 100644 --- a/osu.Game/Users/UserStatistics.cs +++ b/osu.Game/Users/UserStatistics.cs @@ -5,6 +5,7 @@ using System; using Newtonsoft.Json; using osu.Game.Scoring; using static osu.Game.Users.User; +using osu.Game.Utils; namespace osu.Game.Users { @@ -44,7 +45,7 @@ namespace osu.Game.Users public decimal Accuracy; [JsonIgnore] - public string DisplayAccuracy => $"{Accuracy:0.00%}"; + public string DisplayAccuracy => Accuracy.FormatAccuracy(); [JsonProperty(@"play_count")] public int PlayCount; diff --git a/osu.Game/Utils/FormatUtils.cs b/osu.Game/Utils/FormatUtils.cs new file mode 100644 index 0000000000..f966c09a67 --- /dev/null +++ b/osu.Game/Utils/FormatUtils.cs @@ -0,0 +1,21 @@ +namespace osu.Game.Utils +{ + public static class FormatUtils + { + /// + /// Turns the provided accuracy into a percentage with 2 decimal places. + /// Omits all decimal places when equals 1d. + /// + /// The accuracy to be formatted + /// formatted accuracy in percentage + public static string FormatAccuracy(this double accuracy) => accuracy == 1 ? "100%" : $"{accuracy:0.00%}"; + + /// + /// Turns the provided accuracy into a percentage with 2 decimal places. + /// Omits all decimal places when equals 100m. + /// + /// The accuracy to be formatted + /// formatted accuracy in percentage + public static string FormatAccuracy(this decimal accuracy) => accuracy == 100 ? "100%" : $"{accuracy:0.00}%"; + } +} \ No newline at end of file From 14db81384295ec7e97d9b3bc749fefe01d982da8 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Tue, 4 Feb 2020 11:18:19 +0700 Subject: [PATCH 1248/1829] Add licence header --- osu.Game/Utils/FormatUtils.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/osu.Game/Utils/FormatUtils.cs b/osu.Game/Utils/FormatUtils.cs index f966c09a67..7ff0c4f657 100644 --- a/osu.Game/Utils/FormatUtils.cs +++ b/osu.Game/Utils/FormatUtils.cs @@ -1,3 +1,6 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + namespace osu.Game.Utils { public static class FormatUtils From 2bbd12e39a235b10b0c7c3b781e5ca9ddbe5413d Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Tue, 4 Feb 2020 11:36:22 +0700 Subject: [PATCH 1249/1829] Fix code formatting --- osu.Game/Users/UserStatistics.cs | 2 +- osu.Game/Utils/FormatUtils.cs | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/osu.Game/Users/UserStatistics.cs b/osu.Game/Users/UserStatistics.cs index 129c128977..e5e77821ab 100644 --- a/osu.Game/Users/UserStatistics.cs +++ b/osu.Game/Users/UserStatistics.cs @@ -4,8 +4,8 @@ using System; using Newtonsoft.Json; using osu.Game.Scoring; -using static osu.Game.Users.User; using osu.Game.Utils; +using static osu.Game.Users.User; namespace osu.Game.Users { diff --git a/osu.Game/Utils/FormatUtils.cs b/osu.Game/Utils/FormatUtils.cs index 7ff0c4f657..b3758b3375 100644 --- a/osu.Game/Utils/FormatUtils.cs +++ b/osu.Game/Utils/FormatUtils.cs @@ -3,22 +3,22 @@ namespace osu.Game.Utils { - public static class FormatUtils - { - /// + public static class FormatUtils + { + /// /// Turns the provided accuracy into a percentage with 2 decimal places. - /// Omits all decimal places when equals 1d. + /// Omits all decimal places when equals 1d. /// /// The accuracy to be formatted /// formatted accuracy in percentage - public static string FormatAccuracy(this double accuracy) => accuracy == 1 ? "100%" : $"{accuracy:0.00%}"; + public static string FormatAccuracy(this double accuracy) => accuracy == 1 ? "100%" : $"{accuracy:0.00%}"; - /// + /// /// Turns the provided accuracy into a percentage with 2 decimal places. - /// Omits all decimal places when equals 100m. + /// Omits all decimal places when equals 100m. /// /// The accuracy to be formatted /// formatted accuracy in percentage - public static string FormatAccuracy(this decimal accuracy) => accuracy == 100 ? "100%" : $"{accuracy:0.00}%"; - } -} \ No newline at end of file + public static string FormatAccuracy(this decimal accuracy) => accuracy == 100 ? "100%" : $"{accuracy:0.00}%"; + } +} From b6cfb987f327304cfee25efbf4134866794e6925 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 4 Feb 2020 17:00:36 +0900 Subject: [PATCH 1250/1829] Make drag handles not pop into existence --- osu.Game/Overlays/Music/PlaylistItem.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Music/PlaylistItem.cs b/osu.Game/Overlays/Music/PlaylistItem.cs index 4ce67c2d66..0f68df737e 100644 --- a/osu.Game/Overlays/Music/PlaylistItem.cs +++ b/osu.Game/Overlays/Music/PlaylistItem.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; @@ -66,6 +66,7 @@ namespace osu.Game.Overlays.Music Origin = Anchor.CentreLeft, Size = new Vector2(12), Colour = colours.Gray5, + AlwaysPresent = true, Alpha = 0 }, text = new OsuTextFlowContainer From c3bd6c3f7f5aba82e19273a05971e052d28656de Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 4 Feb 2020 11:21:21 +0300 Subject: [PATCH 1251/1829] Remove no longer used field --- osu.Game/Overlays/TabControlOverlayHeader.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/osu.Game/Overlays/TabControlOverlayHeader.cs b/osu.Game/Overlays/TabControlOverlayHeader.cs index d729b9fa9f..b199a2a0cf 100644 --- a/osu.Game/Overlays/TabControlOverlayHeader.cs +++ b/osu.Game/Overlays/TabControlOverlayHeader.cs @@ -20,8 +20,6 @@ namespace osu.Game.Overlays /// The type of item to be represented by tabs. public abstract class TabControlOverlayHeader : OverlayHeader, IHasCurrentValue { - public readonly Bindable Current = new Bindable(); - protected OsuTabControl TabControl; private readonly BindableWithCurrent current = new BindableWithCurrent(); From 873eda3bb544520239667d5dd79d236261985b86 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 4 Feb 2020 14:00:18 +0300 Subject: [PATCH 1252/1829] Recolour info section --- osu.Game/Overlays/BeatmapSet/Info.cs | 25 ++++++++------------- osu.Game/Overlays/BeatmapSet/SuccessRate.cs | 7 +++--- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Info.cs b/osu.Game/Overlays/BeatmapSet/Info.cs index 16d6236051..d7392b31e1 100644 --- a/osu.Game/Overlays/BeatmapSet/Info.cs +++ b/osu.Game/Overlays/BeatmapSet/Info.cs @@ -24,6 +24,7 @@ namespace osu.Game.Overlays.BeatmapSet private const float spacing = 20; private readonly Box successRateBackground; + private readonly Box background; private readonly SuccessRate successRate; public readonly Bindable BeatmapSet = new Bindable(); @@ -50,10 +51,9 @@ namespace osu.Game.Overlays.BeatmapSet Children = new Drawable[] { - new Box + background = new Box { - RelativeSizeAxes = Axes.Both, - Colour = Color4.White, + RelativeSizeAxes = Axes.Both }, new Container { @@ -126,14 +126,14 @@ namespace osu.Game.Overlays.BeatmapSet } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - successRateBackground.Colour = colours.GrayE; + successRateBackground.Colour = colourProvider.Background4; + background.Colour = colourProvider.Background5; } private class MetadataSection : FillFlowContainer { - private readonly OsuSpriteText header; private readonly TextFlowContainer textFlow; public string Text @@ -148,7 +148,7 @@ namespace osu.Game.Overlays.BeatmapSet this.FadeIn(transition_duration); textFlow.Clear(); - textFlow.AddText(value, s => s.Font = s.Font.With(size: 14)); + textFlow.AddText(value, s => s.Font = s.Font.With(size: 12)); } } @@ -160,11 +160,10 @@ namespace osu.Game.Overlays.BeatmapSet InternalChildren = new Drawable[] { - header = new OsuSpriteText + new OsuSpriteText { Text = title, - Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold), - Shadow = false, + Font = OsuFont.GetFont(size: 14, weight: FontWeight.Black), Margin = new MarginPadding { Top = 20 }, }, textFlow = new OsuTextFlowContainer @@ -174,12 +173,6 @@ namespace osu.Game.Overlays.BeatmapSet }, }; } - - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - header.Colour = textFlow.Colour = colours.Gray5; - } } } } diff --git a/osu.Game/Overlays/BeatmapSet/SuccessRate.cs b/osu.Game/Overlays/BeatmapSet/SuccessRate.cs index cd81013c30..1dcc847760 100644 --- a/osu.Game/Overlays/BeatmapSet/SuccessRate.cs +++ b/osu.Game/Overlays/BeatmapSet/SuccessRate.cs @@ -17,7 +17,7 @@ namespace osu.Game.Overlays.BeatmapSet protected readonly FailRetryGraph Graph; private readonly FillFlowContainer header; - private readonly OsuSpriteText successRateLabel, successPercent, graphLabel; + private readonly OsuSpriteText successPercent; private readonly Bar successRate; private readonly Container percentContainer; @@ -60,7 +60,7 @@ namespace osu.Game.Overlays.BeatmapSet Direction = FillDirection.Vertical, Children = new Drawable[] { - successRateLabel = new OsuSpriteText + new OsuSpriteText { Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, @@ -85,7 +85,7 @@ namespace osu.Game.Overlays.BeatmapSet Font = OsuFont.GetFont(size: 13), }, }, - graphLabel = new OsuSpriteText + new OsuSpriteText { Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, @@ -107,7 +107,6 @@ namespace osu.Game.Overlays.BeatmapSet [BackgroundDependencyLoader] private void load(OsuColour colours) { - successRateLabel.Colour = successPercent.Colour = graphLabel.Colour = colours.Gray5; successRate.AccentColour = colours.Green; successRate.BackgroundColour = colours.GrayD; From 0e54e0e092dd01ca70338b26da74c685a687eec4 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 4 Feb 2020 14:17:22 +0300 Subject: [PATCH 1253/1829] Recolour DrawableTopScore --- .../BeatmapSet/Scores/DrawableTopScore.cs | 28 ++----------------- .../Scores/TopScoreStatisticsSection.cs | 25 ++++++++--------- .../BeatmapSet/Scores/TopScoreUserSection.cs | 19 ++++--------- 3 files changed, 20 insertions(+), 52 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/DrawableTopScore.cs b/osu.Game/Overlays/BeatmapSet/Scores/DrawableTopScore.cs index d263483046..e12c977430 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/DrawableTopScore.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/DrawableTopScore.cs @@ -7,8 +7,6 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Effects; using osu.Framework.Graphics.Shapes; -using osu.Framework.Input.Events; -using osu.Game.Graphics; using osu.Game.Scoring; using osuTK; using osuTK.Graphics; @@ -17,11 +15,6 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { public class DrawableTopScore : CompositeDrawable { - private const float fade_duration = 100; - - private Color4 backgroundIdleColour; - private Color4 backgroundHoveredColour; - private readonly Box background; public DrawableTopScore(ScoreInfo score, int position = 1) @@ -30,7 +23,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores AutoSizeAxes = Axes.Y; Masking = true; - CornerRadius = 10; + CornerRadius = 5; EdgeEffect = new EdgeEffectParameters { Type = EdgeEffectType.Shadow, @@ -84,24 +77,9 @@ namespace osu.Game.Overlays.BeatmapSet.Scores } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - backgroundIdleColour = colours.Gray3; - backgroundHoveredColour = colours.Gray4; - - background.Colour = backgroundIdleColour; - } - - protected override bool OnHover(HoverEvent e) - { - background.FadeColour(backgroundHoveredColour, fade_duration, Easing.OutQuint); - return base.OnHover(e); - } - - protected override void OnHoverLost(HoverLostEvent e) - { - background.FadeColour(backgroundIdleColour, fade_duration, Easing.OutQuint); - base.OnHoverLost(e); + background.Colour = colourProvider.Background4; } private class AutoSizingGrid : GridContainer diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs index 4f26e43fb2..9f6e60a547 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs @@ -24,8 +24,8 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { private const float margin = 10; - private readonly FontUsage smallFont = OsuFont.GetFont(size: 20); - private readonly FontUsage largeFont = OsuFont.GetFont(size: 25); + private readonly FontUsage smallFont = OsuFont.GetFont(size: 16); + private readonly FontUsage largeFont = OsuFont.GetFont(size: 22); private readonly TextColumn totalScoreColumn; private readonly TextColumn accuracyColumn; @@ -109,6 +109,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores private class InfoColumn : CompositeDrawable { private readonly Box separator; + private readonly OsuSpriteText text; public InfoColumn(string title, Drawable content) { @@ -121,9 +122,9 @@ namespace osu.Game.Overlays.BeatmapSet.Scores Spacing = new Vector2(0, 2), Children = new[] { - new OsuSpriteText + text = new OsuSpriteText { - Font = OsuFont.GetFont(size: 12, weight: FontWeight.Black), + Font = OsuFont.GetFont(size: 10, weight: FontWeight.Black), Text = title.ToUpper() }, separator = new Box @@ -137,9 +138,9 @@ namespace osu.Game.Overlays.BeatmapSet.Scores } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - separator.Colour = colours.Gray5; + separator.Colour = text.Colour = colourProvider.Foreground1; } } @@ -189,15 +190,11 @@ namespace osu.Game.Overlays.BeatmapSet.Scores set { modsContainer.Clear(); - - foreach (Mod mod in value) + modsContainer.Children = value.Select(mod => new ModIcon(mod) { - modsContainer.Add(new ModIcon(mod) - { - AutoSizeAxes = Axes.Both, - Scale = new Vector2(0.3f), - }); - } + AutoSizeAxes = Axes.Both, + Scale = new Vector2(0.25f), + }).ToList(); } } } diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs index 38a909411a..afffdd04c4 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs @@ -1,7 +1,6 @@ // 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.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; @@ -51,13 +50,13 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { Anchor = Anchor.Centre, Origin = Anchor.Centre, - Font = OsuFont.GetFont(size: 24, weight: FontWeight.Bold, italics: true) + Font = OsuFont.GetFont(size: 18, weight: FontWeight.Bold, italics: true) }, rank = new UpdateableRank(ScoreRank.D) { Anchor = Anchor.Centre, Origin = Anchor.Centre, - Size = new Vector2(40), + Size = new Vector2(28), FillMode = FillMode.Fit, }, } @@ -66,7 +65,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { Anchor = Anchor.Centre, Origin = Anchor.Centre, - Size = new Vector2(80), + Size = new Vector2(70), Masking = true, CornerRadius = 5, EdgeEffect = new EdgeEffectParameters @@ -87,7 +86,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores Spacing = new Vector2(0, 3), Children = new Drawable[] { - usernameText = new LinkFlowContainer(s => s.Font = OsuFont.GetFont(size: 20, weight: FontWeight.Bold, italics: true)) + usernameText = new LinkFlowContainer(s => s.Font = OsuFont.GetFont(size: 18, weight: FontWeight.Bold, italics: true)) { Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, @@ -97,13 +96,13 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, - Font = OsuFont.GetFont(size: 15, weight: FontWeight.Bold) + Font = OsuFont.GetFont(size: 10, weight: FontWeight.Bold) }, flag = new UpdateableFlag { Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, - Size = new Vector2(20, 13), + Size = new Vector2(19, 13), ShowPlaceholderOnNull = false, }, } @@ -112,12 +111,6 @@ namespace osu.Game.Overlays.BeatmapSet.Scores }; } - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - rankText.Colour = colours.Yellow; - } - public int ScorePosition { set => rankText.Text = $"#{value}"; From f30cdab025fc4ef4409a0a395589fa2a97c8929c Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 4 Feb 2020 14:35:04 +0300 Subject: [PATCH 1254/1829] Update Scores section --- osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs | 10 ++++++++-- .../BeatmapSet/Scores/ScoreTableRowBackground.cs | 6 +++--- osu.Game/Overlays/BeatmapSet/Scores/ScoresContainer.cs | 5 ++--- .../BeatmapSet/Scores/TopScoreStatisticsSection.cs | 2 +- .../Overlays/BeatmapSet/Scores/TopScoreUserSection.cs | 2 +- 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs index 3a944882ab..7a17412722 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs @@ -23,7 +23,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { private const float horizontal_inset = 20; private const float row_height = 25; - private const int text_size = 14; + private const int text_size = 12; private readonly FillFlowContainer backgroundFlow; @@ -190,7 +190,13 @@ namespace osu.Game.Overlays.BeatmapSet.Scores public HeaderText(string text) { Text = text.ToUpper(); - Font = OsuFont.GetFont(size: 12, weight: FontWeight.Black); + Font = OsuFont.GetFont(size: 10, weight: FontWeight.Bold); + } + + [BackgroundDependencyLoader] + private void load(OverlayColourProvider colourProvider) + { + Colour = colourProvider.Foreground1; } } } diff --git a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTableRowBackground.cs b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTableRowBackground.cs index 724a7f8b55..14ea3e6b38 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTableRowBackground.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTableRowBackground.cs @@ -48,18 +48,18 @@ namespace osu.Game.Overlays.BeatmapSet.Scores } [BackgroundDependencyLoader] - private void load(OsuColour colours, IAPIProvider api) + private void load(OsuColour colours, OverlayColourProvider colourProvider, IAPIProvider api) { var isOwnScore = api.LocalUser.Value.Id == score.UserID; if (isOwnScore) background.Colour = colours.GreenDarker; else if (index % 2 == 0) - background.Colour = colours.Gray3; + background.Colour = colourProvider.Background4; else background.Alpha = 0; - hoveredBackground.Colour = isOwnScore ? colours.GreenDark : colours.Gray4; + hoveredBackground.Colour = isOwnScore ? colours.GreenDark : colourProvider.Background3; } protected override bool OnHover(HoverEvent e) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/ScoresContainer.cs b/osu.Game/Overlays/BeatmapSet/Scores/ScoresContainer.cs index 0378d364b8..0a3b5d9457 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/ScoresContainer.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/ScoresContainer.cs @@ -5,7 +5,6 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; -using osu.Game.Graphics; using osu.Game.Graphics.UserInterface; using osuTK; using System.Linq; @@ -179,9 +178,9 @@ namespace osu.Game.Overlays.BeatmapSet.Scores } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - background.Colour = colours.Gray2; + background.Colour = colourProvider.Background5; user.BindTo(api.LocalUser); } diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs index 9f6e60a547..7d410d0d34 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs @@ -130,7 +130,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores separator = new Box { RelativeSizeAxes = Axes.X, - Height = 2 + Height = 1 }, content } diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs index afffdd04c4..72a7efd777 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs @@ -50,7 +50,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { Anchor = Anchor.Centre, Origin = Anchor.Centre, - Font = OsuFont.GetFont(size: 18, weight: FontWeight.Bold, italics: true) + Font = OsuFont.GetFont(size: 18, weight: FontWeight.Bold) }, rank = new UpdateableRank(ScoreRank.D) { From cff619b0e406823df149704560f7154f210fb0c5 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 4 Feb 2020 14:46:22 +0300 Subject: [PATCH 1255/1829] Adjust overlay layout --- osu.Game/Overlays/BeatmapSetOverlay.cs | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSetOverlay.cs b/osu.Game/Overlays/BeatmapSetOverlay.cs index e4e928df18..f747cfff16 100644 --- a/osu.Game/Overlays/BeatmapSetOverlay.cs +++ b/osu.Game/Overlays/BeatmapSetOverlay.cs @@ -9,7 +9,6 @@ using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Input.Events; using osu.Game.Beatmaps; -using osu.Game.Graphics; using osu.Game.Graphics.Containers; using osu.Game.Online.API.Requests; using osu.Game.Overlays.BeatmapSet; @@ -33,6 +32,8 @@ namespace osu.Game.Overlays // receive input outside our bounds so we can trigger a close event on ourselves. public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => true; + private readonly Box background; + public BeatmapSetOverlay() : base(OverlayColourScheme.Blue) { @@ -41,10 +42,9 @@ namespace osu.Game.Overlays Children = new Drawable[] { - new Box + background = new Box { - RelativeSizeAxes = Axes.Both, - Colour = OsuColour.Gray(0.2f) + RelativeSizeAxes = Axes.Both }, scroll = new OsuScrollContainer { @@ -55,10 +55,20 @@ namespace osu.Game.Overlays RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, Direction = FillDirection.Vertical, + Spacing = new Vector2(0, 20), Children = new Drawable[] { - Header = new Header(), - info = new Info(), + new ReverseChildIDFillFlowContainer + { + AutoSizeAxes = Axes.Y, + RelativeSizeAxes = Axes.X, + Direction = FillDirection.Vertical, + Children = new Drawable[] + { + Header = new Header(), + info = new Info() + } + }, new ScoresContainer { Beatmap = { BindTarget = Header.Picker.Beatmap } @@ -83,6 +93,8 @@ namespace osu.Game.Overlays private void load(RulesetStore rulesets) { this.rulesets = rulesets; + + background.Colour = ColourProvider.Background6; } protected override void PopOutComplete() From 5f63ef3bc139d9245046d6bac4d64f5246e231e4 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 4 Feb 2020 14:52:26 +0300 Subject: [PATCH 1256/1829] Fix crashing test --- osu.Game.Tests/Visual/Online/TestSceneScoresContainer.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/osu.Game.Tests/Visual/Online/TestSceneScoresContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneScoresContainer.cs index 1b136d9e41..3c959e05c1 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneScoresContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneScoresContainer.cs @@ -3,11 +3,13 @@ using System; using System.Collections.Generic; +using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Utils; using osu.Game.Online.API.Requests.Responses; +using osu.Game.Overlays; using osu.Game.Overlays.BeatmapSet.Scores; using osu.Game.Rulesets.Osu.Mods; using osu.Game.Scoring; @@ -27,6 +29,9 @@ namespace osu.Game.Tests.Visual.Online typeof(ScoreTableRowBackground), }; + [Cached] + private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Blue); + public TestSceneScoresContainer() { TestScoresContainer scoresContainer; From 3571c2b6172c70abb46586ffb801eb45f68df6fe Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Tue, 4 Feb 2020 19:41:44 +0700 Subject: [PATCH 1257/1829] Rearrange children in TopScoreStatisticsSection --- .../Scores/TopScoreStatisticsSection.cs | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs index 7d410d0d34..5abff41cc1 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs @@ -44,9 +44,24 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, - Spacing = new Vector2(10, 0), + Direction = FillDirection.Vertical, + Spacing = new Vector2(10, 8), Children = new Drawable[] { + new FillFlowContainer + { + Anchor = Anchor.TopRight, + Origin = Anchor.TopRight, + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(margin, 0), + Children = new Drawable[] + { + totalScoreColumn = new TextColumn("total score", largeFont), + accuracyColumn = new TextColumn("accuracy", largeFont), + maxComboColumn = new TextColumn("max combo", largeFont) + } + }, new FillFlowContainer { Anchor = Anchor.TopRight, @@ -66,20 +81,6 @@ namespace osu.Game.Overlays.BeatmapSet.Scores modsColumn = new ModsInfoColumn(), } }, - new FillFlowContainer - { - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Spacing = new Vector2(margin, 0), - Children = new Drawable[] - { - totalScoreColumn = new TextColumn("total score", largeFont), - accuracyColumn = new TextColumn("accuracy", largeFont), - maxComboColumn = new TextColumn("max combo", largeFont) - } - }, } }; } From c12fc67887781b4c13c824e689f6bc09194fd6e3 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Tue, 4 Feb 2020 19:42:37 +0700 Subject: [PATCH 1258/1829] Change InfoColumn title font weight --- .../Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs index 5abff41cc1..928d6be800 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs @@ -125,7 +125,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { text = new OsuSpriteText { - Font = OsuFont.GetFont(size: 10, weight: FontWeight.Black), + Font = OsuFont.GetFont(size: 10, weight: FontWeight.Bold), Text = title.ToUpper() }, separator = new Box From 4f312ae6bca082e476bfac9b32d83fb2694850f8 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Tue, 4 Feb 2020 19:43:14 +0700 Subject: [PATCH 1259/1829] Adjust InfoColumn spacing --- .../Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs index 928d6be800..88aac732d7 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs @@ -120,7 +120,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { AutoSizeAxes = Axes.Both, Direction = FillDirection.Vertical, - Spacing = new Vector2(0, 2), + Spacing = new Vector2(0, 1), Children = new[] { text = new OsuSpriteText From 8f9917238e3303860659442aa7ac373cbdae04bf Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Tue, 4 Feb 2020 19:45:08 +0700 Subject: [PATCH 1260/1829] Add optional minimum width to InfoColumn --- .../BeatmapSet/Scores/TopScoreStatisticsSection.cs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs index 88aac732d7..b456a35480 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs @@ -23,6 +23,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores public class TopScoreStatisticsSection : CompositeDrawable { private const float margin = 10; + private const float statistics_column_min_width = 50; private readonly FontUsage smallFont = OsuFont.GetFont(size: 16); private readonly FontUsage largeFont = OsuFont.GetFont(size: 22); @@ -112,7 +113,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores private readonly Box separator; private readonly OsuSpriteText text; - public InfoColumn(string title, Drawable content) + public InfoColumn(string title, Drawable content, float? minWidth = null) { AutoSizeAxes = Axes.Both; @@ -130,7 +131,8 @@ namespace osu.Game.Overlays.BeatmapSet.Scores }, separator = new Box { - RelativeSizeAxes = Axes.X, + RelativeSizeAxes = minWidth == null ? Axes.X : Axes.None, + Width = minWidth ?? 1f, Height = 1 }, content @@ -149,13 +151,13 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { private readonly SpriteText text; - public TextColumn(string title, FontUsage font) - : this(title, new OsuSpriteText { Font = font }) + public TextColumn(string title, FontUsage font, float? minWidth = null) + : this(title, new OsuSpriteText { Font = font }, minWidth) { } - private TextColumn(string title, SpriteText text) - : base(title, text) + private TextColumn(string title, SpriteText text, float? minWidth = null) + : base(title, text, minWidth) { this.text = text; } From 556a4e64cb705c8a413fe7acd14446b3fedb29b8 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Tue, 4 Feb 2020 19:46:14 +0700 Subject: [PATCH 1261/1829] Use minimum width on statistics columns --- .../Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs index b456a35480..d11a74617a 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs @@ -103,7 +103,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores } } - private TextColumn createStatisticsColumn(HitResult hitResult, int count) => new TextColumn(hitResult.GetDescription(), smallFont) + private TextColumn createStatisticsColumn(HitResult hitResult, int count) => new TextColumn(hitResult.GetDescription(), smallFont, statistics_column_min_width) { Text = count.ToString() }; From a8faee91d8404989469e7606a85296d371065b64 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Tue, 4 Feb 2020 19:54:57 +0700 Subject: [PATCH 1262/1829] Use minWidth on pp column --- .../Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs index d11a74617a..fc50a528e9 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs @@ -78,7 +78,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores Direction = FillDirection.Horizontal, Spacing = new Vector2(margin, 0), }, - ppColumn = new TextColumn("pp", smallFont), + ppColumn = new TextColumn("pp", smallFont, statistics_column_min_width), modsColumn = new ModsInfoColumn(), } }, From 5030b66092ff9e28c006c5ee025bf5881c65997d Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Tue, 4 Feb 2020 19:59:11 +0700 Subject: [PATCH 1263/1829] Adjust width of statistics columns --- .../Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs index fc50a528e9..54ead4ebf4 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs @@ -23,7 +23,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores public class TopScoreStatisticsSection : CompositeDrawable { private const float margin = 10; - private const float statistics_column_min_width = 50; + private const float statistics_column_min_width = 40; private readonly FontUsage smallFont = OsuFont.GetFont(size: 16); private readonly FontUsage largeFont = OsuFont.GetFont(size: 22); From 37992e99f9785f27540be781d76ce04bbf190568 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 4 Feb 2020 16:04:06 +0300 Subject: [PATCH 1264/1829] API implementation --- .../Requests/GetSpotlightRankingsRequest.cs | 30 +++++++++++++++++++ .../Requests/GetSpotlightRankingsResponse.cs | 22 ++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 osu.Game/Online/API/Requests/GetSpotlightRankingsRequest.cs create mode 100644 osu.Game/Online/API/Requests/GetSpotlightRankingsResponse.cs diff --git a/osu.Game/Online/API/Requests/GetSpotlightRankingsRequest.cs b/osu.Game/Online/API/Requests/GetSpotlightRankingsRequest.cs new file mode 100644 index 0000000000..a279db134f --- /dev/null +++ b/osu.Game/Online/API/Requests/GetSpotlightRankingsRequest.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.IO.Network; +using osu.Game.Rulesets; + +namespace osu.Game.Online.API.Requests +{ + public class GetSpotlightRankingsRequest : GetRankingsRequest + { + private readonly int spotlight; + + public GetSpotlightRankingsRequest(RulesetInfo ruleset, int spotlight) + : base(ruleset, 1) + { + this.spotlight = spotlight; + } + + protected override WebRequest CreateWebRequest() + { + var req = base.CreateWebRequest(); + + req.AddParameter("spotlight", spotlight.ToString()); + + return req; + } + + protected override string TargetPostfix() => "charts"; + } +} diff --git a/osu.Game/Online/API/Requests/GetSpotlightRankingsResponse.cs b/osu.Game/Online/API/Requests/GetSpotlightRankingsResponse.cs new file mode 100644 index 0000000000..2259314a9f --- /dev/null +++ b/osu.Game/Online/API/Requests/GetSpotlightRankingsResponse.cs @@ -0,0 +1,22 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System.Collections.Generic; +using Newtonsoft.Json; +using osu.Game.Online.API.Requests.Responses; +using osu.Game.Users; + +namespace osu.Game.Online.API.Requests +{ + public class GetSpotlightRankingsResponse + { + [JsonProperty("ranking")] + public List Users; + + [JsonProperty("spotlight")] + public APISpotlight Spotlight; + + [JsonProperty("beatmapsets")] + public List BeatmapSets; + } +} From f889f2435bc83cebb783c37a31d49319fac505d8 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 4 Feb 2020 16:20:15 +0300 Subject: [PATCH 1265/1829] Add test step to TestSceneRankingsTable --- .../Visual/Online/TestSceneRankingsTables.cs | 15 +++++++++++++++ .../Overlays/Rankings/Tables/UserBasedTable.cs | 4 ++-- osu.Game/Users/UserStatistics.cs | 8 ++++---- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsTables.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsTables.cs index ab174f303e..19ca63208e 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsTables.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsTables.cs @@ -68,6 +68,7 @@ namespace osu.Game.Tests.Visual.Online AddStep("Mania scores", () => createScoreTable(new ManiaRuleset().RulesetInfo)); AddStep("Taiko country scores", () => createCountryTable(new TaikoRuleset().RulesetInfo)); AddStep("Catch US performance page 10", () => createPerformanceTable(new CatchRuleset().RulesetInfo, "US", 10)); + AddStep("Osu 271 spotlight table", () => createSpotlightTable(new OsuRuleset().RulesetInfo, 271)); } private void createCountryTable(RulesetInfo ruleset, int page = 1) @@ -112,6 +113,20 @@ namespace osu.Game.Tests.Visual.Online api.Queue(request); } + private void createSpotlightTable(RulesetInfo ruleset, int spotlight) + { + onLoadStarted(); + + request = new GetSpotlightRankingsRequest(ruleset, spotlight); + ((GetSpotlightRankingsRequest)request).Success += rankings => Schedule(() => + { + var table = new ScoresTable(1, rankings.Users); + loadTable(table); + }); + + api.Queue(request); + } + private void onLoadStarted() { loading.Show(); diff --git a/osu.Game/Overlays/Rankings/Tables/UserBasedTable.cs b/osu.Game/Overlays/Rankings/Tables/UserBasedTable.cs index 351c4df6b7..e1395479f2 100644 --- a/osu.Game/Overlays/Rankings/Tables/UserBasedTable.cs +++ b/osu.Game/Overlays/Rankings/Tables/UserBasedTable.cs @@ -44,8 +44,8 @@ namespace osu.Game.Overlays.Rankings.Tables new ColoredRowText { Text = $@"{item.PlayCount:N0}", }, }.Concat(CreateUniqueContent(item)).Concat(new[] { - new ColoredRowText { Text = $@"{item.GradesCount.SS + item.GradesCount.SSPlus:N0}", }, - new ColoredRowText { Text = $@"{item.GradesCount.S + item.GradesCount.SPlus:N0}", }, + new ColoredRowText { Text = $@"{item.GradesCount.SS + (item.GradesCount.SSPlus ?? 0):N0}", }, + new ColoredRowText { Text = $@"{item.GradesCount.S + (item.GradesCount.SPlus ?? 0):N0}", }, new ColoredRowText { Text = $@"{item.GradesCount.A:N0}", } }).ToArray(); diff --git a/osu.Game/Users/UserStatistics.cs b/osu.Game/Users/UserStatistics.cs index e5e77821ab..8ce26074a8 100644 --- a/osu.Game/Users/UserStatistics.cs +++ b/osu.Game/Users/UserStatistics.cs @@ -30,7 +30,7 @@ namespace osu.Game.Users public decimal? PP; [JsonProperty(@"pp_rank")] // the API sometimes only returns this value in condensed user responses - private int rank + private int? rank { set => Ranks.Global = value; } @@ -71,13 +71,13 @@ namespace osu.Game.Users public struct Grades { [JsonProperty(@"ssh")] - public int SSPlus; + public int? SSPlus; [JsonProperty(@"ss")] public int SS; [JsonProperty(@"sh")] - public int SPlus; + public int? SPlus; [JsonProperty(@"s")] public int S; @@ -85,7 +85,7 @@ namespace osu.Game.Users [JsonProperty(@"a")] public int A; - public int this[ScoreRank rank] + public int? this[ScoreRank rank] { get { From f112760b0027030f8c1e62683529624d04e9e8fd Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Tue, 4 Feb 2020 21:55:04 +0700 Subject: [PATCH 1266/1829] Revert column separator height to 2 --- .../Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs index 54ead4ebf4..c3a929dd4a 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs @@ -133,7 +133,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { RelativeSizeAxes = minWidth == null ? Axes.X : Axes.None, Width = minWidth ?? 1f, - Height = 1 + Height = 2 }, content } From 1c16ab1813393f0652a8ea257e51540f34b77817 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Tue, 4 Feb 2020 21:55:20 +0700 Subject: [PATCH 1267/1829] Use better colours --- .../Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs index c3a929dd4a..ec87b04947 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs @@ -143,7 +143,8 @@ namespace osu.Game.Overlays.BeatmapSet.Scores [BackgroundDependencyLoader] private void load(OverlayColourProvider colourProvider) { - separator.Colour = text.Colour = colourProvider.Foreground1; + text.Colour = colourProvider.Foreground1; + separator.Colour = colourProvider.Background3; } } From bd815cd81b003f5fe95250cab209e09b759492b3 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Tue, 4 Feb 2020 21:55:48 +0700 Subject: [PATCH 1268/1829] Use minWidth on more columns to further match web --- .../BeatmapSet/Scores/TopScoreStatisticsSection.cs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs index ec87b04947..8386c82572 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs @@ -23,7 +23,8 @@ namespace osu.Game.Overlays.BeatmapSet.Scores public class TopScoreStatisticsSection : CompositeDrawable { private const float margin = 10; - private const float statistics_column_min_width = 40; + private const float top_columns_min_width = 64; + private const float bottom_columns_min_width = 45; private readonly FontUsage smallFont = OsuFont.GetFont(size: 16); private readonly FontUsage largeFont = OsuFont.GetFont(size: 22); @@ -58,9 +59,9 @@ namespace osu.Game.Overlays.BeatmapSet.Scores Spacing = new Vector2(margin, 0), Children = new Drawable[] { - totalScoreColumn = new TextColumn("total score", largeFont), - accuracyColumn = new TextColumn("accuracy", largeFont), - maxComboColumn = new TextColumn("max combo", largeFont) + totalScoreColumn = new TextColumn("total score", largeFont, top_columns_min_width), + accuracyColumn = new TextColumn("accuracy", largeFont, top_columns_min_width), + maxComboColumn = new TextColumn("max combo", largeFont, top_columns_min_width) } }, new FillFlowContainer @@ -78,7 +79,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores Direction = FillDirection.Horizontal, Spacing = new Vector2(margin, 0), }, - ppColumn = new TextColumn("pp", smallFont, statistics_column_min_width), + ppColumn = new TextColumn("pp", smallFont, bottom_columns_min_width), modsColumn = new ModsInfoColumn(), } }, @@ -103,7 +104,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores } } - private TextColumn createStatisticsColumn(HitResult hitResult, int count) => new TextColumn(hitResult.GetDescription(), smallFont, statistics_column_min_width) + private TextColumn createStatisticsColumn(HitResult hitResult, int count) => new TextColumn(hitResult.GetDescription(), smallFont, bottom_columns_min_width) { Text = count.ToString() }; From 0cba1a357f68f90b81fb2828aa2265ae7a328c1d Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Tue, 4 Feb 2020 21:56:22 +0700 Subject: [PATCH 1269/1829] Adjust padding on DrawableTopScore --- osu.Game/Overlays/BeatmapSet/Scores/DrawableTopScore.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/DrawableTopScore.cs b/osu.Game/Overlays/BeatmapSet/Scores/DrawableTopScore.cs index e12c977430..bb85b4a37b 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/DrawableTopScore.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/DrawableTopScore.cs @@ -42,7 +42,12 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, - Padding = new MarginPadding(10), + Padding = new MarginPadding + { + Vertical = 10, + Left = 10, + Right = 25, + }, Children = new Drawable[] { new AutoSizingGrid From 833bb28dcfcddd529959a60b0f4ea2b1a25d4688 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Tue, 4 Feb 2020 22:38:25 +0700 Subject: [PATCH 1270/1829] Adjust separator position between top and bottom content --- .../Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs index 8386c82572..171aae06d3 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs @@ -134,7 +134,8 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { RelativeSizeAxes = minWidth == null ? Axes.X : Axes.None, Width = minWidth ?? 1f, - Height = 2 + Height = 2, + Margin = new MarginPadding { Top = 2 } }, content } From b28a1d38a6b66f0c678bfb1150a29dcdf82a2cfe Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 17:09:18 +0100 Subject: [PATCH 1271/1829] Simplify GradientLine and fix colour changing --- .../UserInterface/GradientLineTabControl.cs | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/GradientLineTabControl.cs b/osu.Game/Graphics/UserInterface/GradientLineTabControl.cs index baca57ea89..1d67c4e033 100644 --- a/osu.Game/Graphics/UserInterface/GradientLineTabControl.cs +++ b/osu.Game/Graphics/UserInterface/GradientLineTabControl.cs @@ -49,14 +49,7 @@ namespace osu.Game.Graphics.UserInterface public GradientLine() { RelativeSizeAxes = Axes.X; - Size = new Vector2(0.8f, 1.5f); - - ColumnDimensions = new[] - { - new Dimension(), - new Dimension(mode: GridSizeMode.Relative, size: 0.4f), - new Dimension(), - }; + Size = new Vector2(0.8f, 1f); Content = new[] { @@ -65,16 +58,12 @@ namespace osu.Game.Graphics.UserInterface new Box { RelativeSizeAxes = Axes.Both, - Colour = ColourInfo.GradientHorizontal(Color4.Transparent, Color4.White) + Colour = ColourInfo.GradientHorizontal(Color4.Transparent, Colour) }, new Box { RelativeSizeAxes = Axes.Both, - }, - new Box - { - RelativeSizeAxes = Axes.Both, - Colour = ColourInfo.GradientHorizontal(Color4.White, Color4.Transparent) + Colour = ColourInfo.GradientHorizontal(Colour, Color4.Transparent) }, } }; From 9bc45d21f13e2a048d991e9144cf773e2592389b Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 17:11:28 +0100 Subject: [PATCH 1272/1829] Recolour LeaderboardScopeSelector --- osu.Game/Overlays/BeatmapSet/LeaderboardScopeSelector.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/LeaderboardScopeSelector.cs b/osu.Game/Overlays/BeatmapSet/LeaderboardScopeSelector.cs index e2a725ec46..20a3b09db4 100644 --- a/osu.Game/Overlays/BeatmapSet/LeaderboardScopeSelector.cs +++ b/osu.Game/Overlays/BeatmapSet/LeaderboardScopeSelector.cs @@ -26,10 +26,10 @@ namespace osu.Game.Overlays.BeatmapSet } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - AccentColour = colours.Blue; - LineColour = Color4.Gray; + AccentColour = colourProvider.Highlight1; + LineColour = colourProvider.Background1; } private class ScopeSelectorTabItem : PageTabItem From 5e369534b6a6d949c526a0fea2b802cf7b2d540c Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 4 Feb 2020 19:15:23 +0300 Subject: [PATCH 1273/1829] Allow guests to view comments --- osu.Game/Overlays/Comments/CommentsContainer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Comments/CommentsContainer.cs b/osu.Game/Overlays/Comments/CommentsContainer.cs index 8761b88b1e..15443ace88 100644 --- a/osu.Game/Overlays/Comments/CommentsContainer.cs +++ b/osu.Game/Overlays/Comments/CommentsContainer.cs @@ -148,7 +148,7 @@ namespace osu.Game.Overlays.Comments loadCancellation?.Cancel(); request = new GetCommentsRequest(type, id.Value, Sort.Value, currentPage++); request.Success += onSuccess; - api.Queue(request); + api.PerformAsync(request); } private void clearComments() From a84068448a2e40ffd81e94a8bacd42e4981c8403 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 4 Feb 2020 19:19:49 +0300 Subject: [PATCH 1274/1829] refetch comments on user change --- osu.Game/Overlays/Comments/CommentsContainer.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game/Overlays/Comments/CommentsContainer.cs b/osu.Game/Overlays/Comments/CommentsContainer.cs index 15443ace88..3d68f453b7 100644 --- a/osu.Game/Overlays/Comments/CommentsContainer.cs +++ b/osu.Game/Overlays/Comments/CommentsContainer.cs @@ -113,6 +113,7 @@ namespace osu.Game.Overlays.Comments protected override void LoadComplete() { + api.LocalUser.BindValueChanged(_ => refetchComments()); Sort.BindValueChanged(_ => refetchComments(), true); base.LoadComplete(); } From 4ea9efd92e8a1f87ec905ac8ec387d335d1862a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Tue, 4 Feb 2020 17:56:06 +0100 Subject: [PATCH 1275/1829] Enforce column ordering --- .../Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs index 171aae06d3..8a17fef367 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs @@ -99,7 +99,9 @@ namespace osu.Game.Overlays.BeatmapSet.Scores maxComboColumn.Text = $@"{value.MaxCombo:N0}x"; ppColumn.Text = $@"{value.PP:N0}"; - statisticsColumns.ChildrenEnumerable = value.Statistics.Select(kvp => createStatisticsColumn(kvp.Key, kvp.Value)); + statisticsColumns.ChildrenEnumerable = value.Statistics + .OrderByDescending(pair => pair.Key) + .Select(kvp => createStatisticsColumn(kvp.Key, kvp.Value)); modsColumn.Mods = value.Mods; } } From 5eb1619e24ca180b99de8b762a30b9986dc4da75 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 18:02:49 +0100 Subject: [PATCH 1276/1829] Adjust title / artist font weight --- osu.Game/Overlays/BeatmapSet/Header.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Header.cs b/osu.Game/Overlays/BeatmapSet/Header.cs index 7c5c5a9d55..b62a5d46f0 100644 --- a/osu.Game/Overlays/BeatmapSet/Header.cs +++ b/osu.Game/Overlays/BeatmapSet/Header.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// 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; @@ -134,7 +134,7 @@ namespace osu.Game.Overlays.BeatmapSet { title = new OsuSpriteText { - Font = OsuFont.GetFont(size: 37, weight: FontWeight.Bold, italics: true) + Font = OsuFont.GetFont(size: 37, weight: FontWeight.SemiBold, italics: true) }, externalLink = new ExternalLinkButton { @@ -144,7 +144,7 @@ namespace osu.Game.Overlays.BeatmapSet }, } }, - artist = new OsuSpriteText { Font = OsuFont.GetFont(size: 25, weight: FontWeight.SemiBold, italics: true) }, + artist = new OsuSpriteText { Font = OsuFont.GetFont(size: 25, weight: FontWeight.Medium, italics: true) }, new Container { RelativeSizeAxes = Axes.X, From a9cfade2f4a2af83c94b81132ff66a1cfa867dab Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 4 Feb 2020 21:02:10 +0300 Subject: [PATCH 1277/1829] Adjust null handling --- osu.Game/Overlays/Rankings/Tables/UserBasedTable.cs | 7 ++++--- osu.Game/Users/UserStatistics.cs | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/osu.Game/Overlays/Rankings/Tables/UserBasedTable.cs b/osu.Game/Overlays/Rankings/Tables/UserBasedTable.cs index e1395479f2..0e77d7d764 100644 --- a/osu.Game/Overlays/Rankings/Tables/UserBasedTable.cs +++ b/osu.Game/Overlays/Rankings/Tables/UserBasedTable.cs @@ -8,6 +8,7 @@ using osu.Framework.Graphics.Containers; using osu.Game.Graphics; using osu.Game.Graphics.Containers; using osu.Game.Users; +using osu.Game.Scoring; namespace osu.Game.Overlays.Rankings.Tables { @@ -44,9 +45,9 @@ namespace osu.Game.Overlays.Rankings.Tables new ColoredRowText { Text = $@"{item.PlayCount:N0}", }, }.Concat(CreateUniqueContent(item)).Concat(new[] { - new ColoredRowText { Text = $@"{item.GradesCount.SS + (item.GradesCount.SSPlus ?? 0):N0}", }, - new ColoredRowText { Text = $@"{item.GradesCount.S + (item.GradesCount.SPlus ?? 0):N0}", }, - new ColoredRowText { Text = $@"{item.GradesCount.A:N0}", } + new ColoredRowText { Text = $@"{item.GradesCount[ScoreRank.XH] + item.GradesCount[ScoreRank.X]:N0}", }, + new ColoredRowText { Text = $@"{item.GradesCount[ScoreRank.SH] + item.GradesCount[ScoreRank.S]:N0}", }, + new ColoredRowText { Text = $@"{item.GradesCount[ScoreRank.A]:N0}", } }).ToArray(); protected abstract TableColumn[] CreateUniqueHeaders(); diff --git a/osu.Game/Users/UserStatistics.cs b/osu.Game/Users/UserStatistics.cs index 8ce26074a8..8b7699d0ad 100644 --- a/osu.Game/Users/UserStatistics.cs +++ b/osu.Game/Users/UserStatistics.cs @@ -85,20 +85,20 @@ namespace osu.Game.Users [JsonProperty(@"a")] public int A; - public int? this[ScoreRank rank] + public int this[ScoreRank rank] { get { switch (rank) { case ScoreRank.XH: - return SSPlus; + return SSPlus ?? 0; case ScoreRank.X: return SS; case ScoreRank.SH: - return SPlus; + return SPlus ?? 0; case ScoreRank.S: return S; From f8ad9476efd7727945ee9b38f324555180d1e908 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 4 Feb 2020 21:03:17 +0300 Subject: [PATCH 1278/1829] Adjust test step name --- osu.Game.Tests/Visual/Online/TestSceneRankingsTables.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsTables.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsTables.cs index 19ca63208e..656402e713 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsTables.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsTables.cs @@ -68,7 +68,7 @@ namespace osu.Game.Tests.Visual.Online AddStep("Mania scores", () => createScoreTable(new ManiaRuleset().RulesetInfo)); AddStep("Taiko country scores", () => createCountryTable(new TaikoRuleset().RulesetInfo)); AddStep("Catch US performance page 10", () => createPerformanceTable(new CatchRuleset().RulesetInfo, "US", 10)); - AddStep("Osu 271 spotlight table", () => createSpotlightTable(new OsuRuleset().RulesetInfo, 271)); + AddStep("Osu spotlight table (chart 271)", () => createSpotlightTable(new OsuRuleset().RulesetInfo, 271)); } private void createCountryTable(RulesetInfo ruleset, int page = 1) From 5b881568db688d501f8464963ac85d87b751981a Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 19:15:02 +0100 Subject: [PATCH 1279/1829] Adjust header gradient colours --- osu.Game/Overlays/BeatmapSet/Header.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Header.cs b/osu.Game/Overlays/BeatmapSet/Header.cs index b62a5d46f0..5cfbd2ef83 100644 --- a/osu.Game/Overlays/BeatmapSet/Header.cs +++ b/osu.Game/Overlays/BeatmapSet/Header.cs @@ -93,10 +93,9 @@ namespace osu.Game.Overlays.BeatmapSet RelativeSizeAxes = Axes.Both, Masking = true, }, - new Box + coverGradient = new Box { - RelativeSizeAxes = Axes.Both, - Colour = ColourInfo.GradientVertical(Color4.Black.Opacity(0.3f), Color4.Black.Opacity(0.8f)), + RelativeSizeAxes = Axes.Both }, }, }, @@ -215,8 +214,10 @@ namespace osu.Game.Overlays.BeatmapSet } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { + coverGradient.Colour = ColourInfo.GradientVertical(colourProvider.Background6.Opacity(0.3f), colourProvider.Background6.Opacity(0.8f)); + State.BindValueChanged(_ => updateDownloadButtons()); BeatmapSet.BindValueChanged(setInfo => From b6301f6537753fa7ad6597dbb8b7a2135cdb2e7a Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 19:52:32 +0100 Subject: [PATCH 1280/1829] Adjust PreviewButton alpha and animation --- osu.Game/Overlays/BeatmapSet/Buttons/PreviewButton.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Buttons/PreviewButton.cs b/osu.Game/Overlays/BeatmapSet/Buttons/PreviewButton.cs index 8c884e0950..80b287f6c6 100644 --- a/osu.Game/Overlays/BeatmapSet/Buttons/PreviewButton.cs +++ b/osu.Game/Overlays/BeatmapSet/Buttons/PreviewButton.cs @@ -22,7 +22,7 @@ namespace osu.Game.Overlays.BeatmapSet.Buttons { private const float transition_duration = 500; - private readonly Box bg, progress; + private readonly Box background, progress; private readonly PlayButton playButton; private PreviewTrack preview => playButton.Preview; @@ -40,10 +40,11 @@ namespace osu.Game.Overlays.BeatmapSet.Buttons Children = new Drawable[] { - bg = new Box + background = new Box { RelativeSizeAxes = Axes.Both, - Colour = Color4.Black.Opacity(0.25f), + Colour = Color4.Black, + Alpha = 0.5f }, new Container { @@ -91,13 +92,13 @@ namespace osu.Game.Overlays.BeatmapSet.Buttons protected override bool OnHover(HoverEvent e) { - bg.FadeColour(Color4.Black.Opacity(0.5f), 100); + background.FadeTo(0.75f, 80); return base.OnHover(e); } protected override void OnHoverLost(HoverLostEvent e) { - bg.FadeColour(Color4.Black.Opacity(0.25f), 100); + background.FadeTo(0.5f, 80); base.OnHoverLost(e); } } From a366a92d4c93001a0af58566ff68448d20f88e96 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 19:54:51 +0100 Subject: [PATCH 1281/1829] Use alpha instead of colour opacity --- osu.Game/Overlays/BeatmapSet/Details.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Details.cs b/osu.Game/Overlays/BeatmapSet/Details.cs index d76f6a43db..627f3d04c9 100644 --- a/osu.Game/Overlays/BeatmapSet/Details.cs +++ b/osu.Game/Overlays/BeatmapSet/Details.cs @@ -2,7 +2,6 @@ // See the LICENCE file in the repository root for full licence text. using osu.Framework.Allocation; -using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; @@ -119,7 +118,8 @@ namespace osu.Game.Overlays.BeatmapSet new Box { RelativeSizeAxes = Axes.Both, - Colour = Color4.Black.Opacity(0.5f), + Colour = Color4.Black, + Alpha = 0.5f }, content = new Container { From 86283cc422654e7babbb54a67cab8f8ccc8dc151 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 19:55:19 +0100 Subject: [PATCH 1282/1829] Recolour SuccessRate background --- osu.Game/Overlays/BeatmapSet/SuccessRate.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/SuccessRate.cs b/osu.Game/Overlays/BeatmapSet/SuccessRate.cs index 1dcc847760..dac750dacf 100644 --- a/osu.Game/Overlays/BeatmapSet/SuccessRate.cs +++ b/osu.Game/Overlays/BeatmapSet/SuccessRate.cs @@ -105,10 +105,10 @@ namespace osu.Game.Overlays.BeatmapSet } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OsuColour colours, OverlayColourProvider colourProvider) { successRate.AccentColour = colours.Green; - successRate.BackgroundColour = colours.GrayD; + successRate.BackgroundColour = colourProvider.Background6; updateDisplay(); } From d0eb4e44719b20621362dc721cedfc18f17ab051 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 20:08:54 +0100 Subject: [PATCH 1283/1829] Add necessary variable --- osu.Game/Overlays/BeatmapSet/Header.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game/Overlays/BeatmapSet/Header.cs b/osu.Game/Overlays/BeatmapSet/Header.cs index 5cfbd2ef83..f2d1077844 100644 --- a/osu.Game/Overlays/BeatmapSet/Header.cs +++ b/osu.Game/Overlays/BeatmapSet/Header.cs @@ -30,6 +30,7 @@ namespace osu.Game.Overlays.BeatmapSet private const float buttons_spacing = 5; private readonly UpdateableBeatmapSetCover cover; + private readonly Box coverGradient; private readonly OsuSpriteText title, artist; private readonly AuthorInfo author; private readonly FillFlowContainer downloadButtonsContainer; From 2cc1255035d5f84aad41dd5cc21a38db0a837229 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 20:09:52 +0100 Subject: [PATCH 1284/1829] Adjust online status pill font and padding --- osu.Game/Overlays/BeatmapSet/Header.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Header.cs b/osu.Game/Overlays/BeatmapSet/Header.cs index f2d1077844..dccebe5bad 100644 --- a/osu.Game/Overlays/BeatmapSet/Header.cs +++ b/osu.Game/Overlays/BeatmapSet/Header.cs @@ -196,8 +196,8 @@ namespace osu.Game.Overlays.BeatmapSet { Anchor = Anchor.TopRight, Origin = Anchor.TopRight, - TextSize = 14, - TextPadding = new MarginPadding { Horizontal = 25, Vertical = 8 } + TextSize = 17, + TextPadding = new MarginPadding { Horizontal = 35, Vertical = 10 } }, Details = new Details(), }, From 268bb73ac668f927f936b5c72798fc6cdf5fc270 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 20:14:50 +0100 Subject: [PATCH 1285/1829] Adjust header padding --- osu.Game/Overlays/BeatmapSet/Header.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Header.cs b/osu.Game/Overlays/BeatmapSet/Header.cs index dccebe5bad..c620ae2bca 100644 --- a/osu.Game/Overlays/BeatmapSet/Header.cs +++ b/osu.Game/Overlays/BeatmapSet/Header.cs @@ -106,8 +106,7 @@ namespace osu.Game.Overlays.BeatmapSet AutoSizeAxes = Axes.Y, Padding = new MarginPadding { - Top = 20, - Bottom = 30, + Vertical = BeatmapSetOverlay.Y_PADDING, Left = BeatmapSetOverlay.X_PADDING, Right = BeatmapSetOverlay.X_PADDING + BeatmapSetOverlay.RIGHT_WIDTH, }, @@ -187,7 +186,7 @@ namespace osu.Game.Overlays.BeatmapSet Anchor = Anchor.BottomRight, Origin = Anchor.BottomRight, AutoSizeAxes = Axes.Both, - Margin = new MarginPadding { Top = BeatmapSetOverlay.TOP_PADDING, Right = BeatmapSetOverlay.X_PADDING }, + Margin = new MarginPadding { Top = BeatmapSetOverlay.Y_PADDING, Right = BeatmapSetOverlay.X_PADDING }, Direction = FillDirection.Vertical, Spacing = new Vector2(10), Children = new Drawable[] From cbfb90983bfe8b146bcf1df5883c6b7b06a109d6 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 20:17:27 +0100 Subject: [PATCH 1286/1829] Rename variable --- osu.Game/Overlays/BeatmapSetOverlay.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSetOverlay.cs b/osu.Game/Overlays/BeatmapSetOverlay.cs index f747cfff16..7624351e41 100644 --- a/osu.Game/Overlays/BeatmapSetOverlay.cs +++ b/osu.Game/Overlays/BeatmapSetOverlay.cs @@ -21,7 +21,7 @@ namespace osu.Game.Overlays public class BeatmapSetOverlay : FullscreenOverlay { public const float X_PADDING = 40; - public const float TOP_PADDING = 25; + public const float Y_PADDING = 25; public const float RIGHT_WIDTH = 275; protected readonly Header Header; From 85fb4b4a18eb79ccd7b65786a3f99f83b67838f7 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 21:00:00 +0100 Subject: [PATCH 1287/1829] Recolour DetailBox --- osu.Game/Overlays/BeatmapSet/Details.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Details.cs b/osu.Game/Overlays/BeatmapSet/Details.cs index 627f3d04c9..d24ad58a74 100644 --- a/osu.Game/Overlays/BeatmapSet/Details.cs +++ b/osu.Game/Overlays/BeatmapSet/Details.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// 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; @@ -106,6 +106,8 @@ namespace osu.Game.Overlays.BeatmapSet private class DetailBox : Container { private readonly Container content; + private readonly Box background; + protected override Container Content => content; public DetailBox() @@ -115,10 +117,9 @@ namespace osu.Game.Overlays.BeatmapSet InternalChildren = new Drawable[] { - new Box + background = new Box { RelativeSizeAxes = Axes.Both, - Colour = Color4.Black, Alpha = 0.5f }, content = new Container @@ -129,6 +130,12 @@ namespace osu.Game.Overlays.BeatmapSet }, }; } + + [BackgroundDependencyLoader] + private void load(OverlayColourProvider colourProvider) + { + background.Colour = colourProvider.Background6; + } } } } From 88e79dfa78031b474fdb1ba341a4c8acb9c4ae13 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 21:00:27 +0100 Subject: [PATCH 1288/1829] Hide ratings if beatmap has no leaderboard --- osu.Game/Overlays/BeatmapSet/Details.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Details.cs b/osu.Game/Overlays/BeatmapSet/Details.cs index d24ad58a74..85341e6f1c 100644 --- a/osu.Game/Overlays/BeatmapSet/Details.cs +++ b/osu.Game/Overlays/BeatmapSet/Details.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// 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; @@ -20,6 +20,7 @@ namespace osu.Game.Overlays.BeatmapSet private readonly PreviewButton preview; private readonly BasicStats basic; private readonly AdvancedStats advanced; + private readonly DetailBox ratingBox; private BeatmapSetInfo beatmapSet; @@ -53,6 +54,7 @@ namespace osu.Game.Overlays.BeatmapSet private void updateDisplay() { Ratings.Metrics = BeatmapSet?.Metrics; + ratingBox.Alpha = (BeatmapSet?.OnlineInfo?.Status ?? 0) > 0 ? 1 : 0; } public Details() @@ -85,7 +87,7 @@ namespace osu.Game.Overlays.BeatmapSet Margin = new MarginPadding { Vertical = 7.5f }, }, }, - new DetailBox + ratingBox = new DetailBox { Child = Ratings = new UserRatings { From 48beb9fd6d45688911e18f08f81137bde53b03ee Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 21:01:02 +0100 Subject: [PATCH 1289/1829] Recolour PreviewButton --- osu.Game/Overlays/BeatmapSet/Buttons/PreviewButton.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Buttons/PreviewButton.cs b/osu.Game/Overlays/BeatmapSet/Buttons/PreviewButton.cs index 80b287f6c6..5ce283d0d8 100644 --- a/osu.Game/Overlays/BeatmapSet/Buttons/PreviewButton.cs +++ b/osu.Game/Overlays/BeatmapSet/Buttons/PreviewButton.cs @@ -43,7 +43,6 @@ namespace osu.Game.Overlays.BeatmapSet.Buttons background = new Box { RelativeSizeAxes = Axes.Both, - Colour = Color4.Black, Alpha = 0.5f }, new Container @@ -72,9 +71,10 @@ namespace osu.Game.Overlays.BeatmapSet.Buttons } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OsuColour colours, OverlayColourProvider colourProvider) { progress.Colour = colours.Yellow; + background.Colour = colourProvider.Background6; } protected override void Update() From 3ef6027d5718a11bd2a4ef8154c949d2911452f5 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 21:02:02 +0100 Subject: [PATCH 1290/1829] Show placeholder instead of success rate when beatmap unranked --- osu.Game/Overlays/BeatmapSet/Info.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/osu.Game/Overlays/BeatmapSet/Info.cs b/osu.Game/Overlays/BeatmapSet/Info.cs index d7392b31e1..516eee43ce 100644 --- a/osu.Game/Overlays/BeatmapSet/Info.cs +++ b/osu.Game/Overlays/BeatmapSet/Info.cs @@ -26,6 +26,7 @@ namespace osu.Game.Overlays.BeatmapSet private readonly Box successRateBackground; private readonly Box background; private readonly SuccessRate successRate; + private readonly OsuSpriteText unrankedPlaceholder; public readonly Bindable BeatmapSet = new Bindable(); @@ -110,6 +111,14 @@ namespace osu.Game.Overlays.BeatmapSet RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { Top = 20, Horizontal = 15 }, }, + unrankedPlaceholder = new OsuSpriteText + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Alpha = 0, + Text = "Unranked beatmap", + Font = OsuFont.GetFont(size: 13) + }, }, }, }, @@ -122,6 +131,9 @@ namespace osu.Game.Overlays.BeatmapSet tags.Text = b.NewValue?.Metadata.Tags ?? string.Empty; genre.Text = b.NewValue?.OnlineInfo?.Genre?.Name ?? string.Empty; language.Text = b.NewValue?.OnlineInfo?.Language?.Name ?? string.Empty; + var setHasLeaderboard = (b.NewValue?.OnlineInfo?.Status ?? 0) > 0; + successRate.Alpha = setHasLeaderboard ? 1 : 0; + unrankedPlaceholder.Alpha = setHasLeaderboard ? 0 : 1; }; } From 54580858499cb36326ef0a8beade69f5c568702c Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 21:11:35 +0100 Subject: [PATCH 1291/1829] Adjust TopScoreUserSection font and spacing --- osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs index 72a7efd777..1923c5a48f 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs @@ -96,13 +96,14 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, - Font = OsuFont.GetFont(size: 10, weight: FontWeight.Bold) + Font = OsuFont.GetFont(size: 10) }, flag = new UpdateableFlag { Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, Size = new Vector2(19, 13), + Margin = new MarginPadding { Top = 2 }, // makes spacing look more even ShowPlaceholderOnNull = false, }, } From d23e4a1fa1cc649a7242b356298c081474ccdc35 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 21:27:51 +0100 Subject: [PATCH 1292/1829] Change scoreboard text size --- osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs index 7a17412722..c124f7b262 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// 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; @@ -23,7 +23,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { private const float horizontal_inset = 20; private const float row_height = 25; - private const int text_size = 12; + private const int text_size = 14; private readonly FillFlowContainer backgroundFlow; From 979589704534c0592bb249b9f42084aadb929e77 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 21:28:31 +0100 Subject: [PATCH 1293/1829] Enforce correct column order in ScoreTable --- osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs index c124f7b262..7820323171 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// 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; @@ -65,6 +65,10 @@ namespace osu.Game.Overlays.BeatmapSet.Scores for (int i = 0; i < value.Count; i++) backgroundFlow.Add(new ScoreTableRowBackground(i, value[i])); + // Ensure correct column order + foreach (ScoreInfo score in value) + score.Statistics = score.Statistics.OrderByDescending(pair => pair.Key).ToDictionary(pair => pair.Key, pair => pair.Value); + Columns = createHeaders(value[0]); Content = value.Select((s, i) => createContent(i, s)).ToArray().ToRectangular(); } From 82914b5d6e6f852f9d21ab65277b3889f3d19468 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 21:41:33 +0100 Subject: [PATCH 1294/1829] Adjust ScoreTable spacing --- osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs index 7820323171..f04477d911 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs @@ -81,9 +81,9 @@ namespace osu.Game.Overlays.BeatmapSet.Scores new TableColumn("rank", Anchor.CentreRight, new Dimension(GridSizeMode.AutoSize)), new TableColumn("", Anchor.Centre, new Dimension(GridSizeMode.Absolute, 70)), // grade new TableColumn("score", Anchor.CentreLeft, new Dimension(GridSizeMode.AutoSize)), - new TableColumn("accuracy", Anchor.CentreLeft, new Dimension(GridSizeMode.AutoSize)), + new TableColumn("accuracy", Anchor.CentreLeft, new Dimension(GridSizeMode.Distributed, minSize: 60, maxSize: 70)), new TableColumn("player", Anchor.CentreLeft, new Dimension(GridSizeMode.Distributed, minSize: 150)), - new TableColumn("max combo", Anchor.CentreLeft, new Dimension(GridSizeMode.Distributed, minSize: 70, maxSize: 90)) + new TableColumn("max combo", Anchor.CentreLeft, new Dimension(GridSizeMode.Distributed, minSize: 70, maxSize: 110)) }; foreach (var statistic in score.Statistics) @@ -194,7 +194,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores public HeaderText(string text) { Text = text.ToUpper(); - Font = OsuFont.GetFont(size: 10, weight: FontWeight.Bold); + Font = OsuFont.GetFont(size: 12, weight: FontWeight.Bold); } [BackgroundDependencyLoader] From d7af96a2e51817fbffa8d872d500f25081cc628b Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 21:42:01 +0100 Subject: [PATCH 1295/1829] Adjust corner radius --- osu.Game/Overlays/BeatmapSet/Scores/ScoreTableRowBackground.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTableRowBackground.cs b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTableRowBackground.cs index 14ea3e6b38..83271efe09 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTableRowBackground.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTableRowBackground.cs @@ -30,7 +30,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores RelativeSizeAxes = Axes.X; Height = 25; - CornerRadius = 3; + CornerRadius = 5; Masking = true; InternalChildren = new Drawable[] From 86c0b509835eae73a680c72f41bb6bc59124c9fd Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 21:45:45 +0100 Subject: [PATCH 1296/1829] Adjust font once again for readibility --- osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs index 1923c5a48f..9913493617 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs @@ -96,14 +96,14 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, - Font = OsuFont.GetFont(size: 10) + Font = OsuFont.GetFont(size: 12) }, flag = new UpdateableFlag { Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, Size = new Vector2(19, 13), - Margin = new MarginPadding { Top = 2 }, // makes spacing look more even + Margin = new MarginPadding { Top = 3 }, // makes spacing look more even ShowPlaceholderOnNull = false, }, } From c1b8445b006fd22243a4235a7da14c458220b53f Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 21:53:23 +0100 Subject: [PATCH 1297/1829] Add spacing to match osu-web Note: due to osu-web using flex to even out the spacing and me not being able to implement the same behaviour here, I added a static margin to separate the title from the diffname above. This looks better than the previous state in most cases, the only scenario where this differs somehow visibly from web is on mapsets with large numbers of difficulties. --- osu.Game/Overlays/BeatmapSet/Header.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game/Overlays/BeatmapSet/Header.cs b/osu.Game/Overlays/BeatmapSet/Header.cs index c620ae2bca..9f79b92cb6 100644 --- a/osu.Game/Overlays/BeatmapSet/Header.cs +++ b/osu.Game/Overlays/BeatmapSet/Header.cs @@ -129,6 +129,7 @@ namespace osu.Game.Overlays.BeatmapSet { Direction = FillDirection.Horizontal, AutoSizeAxes = Axes.Both, + Margin = new MarginPadding { Top = 15 }, Children = new Drawable[] { title = new OsuSpriteText From ae467538d3bf0ff1b3483ba201d8f19d7b7f46c9 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Tue, 4 Feb 2020 22:39:51 +0100 Subject: [PATCH 1298/1829] Fix tests --- .../Online/TestSceneBeatmapSetOverlayDetails.cs | 11 ++++++++++- .../Online/TestSceneBeatmapSetOverlaySuccessRate.cs | 5 +++++ .../Online/TestSceneLeaderboardScopeSelector.cs | 5 +++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlayDetails.cs b/osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlayDetails.cs index 990e0a166b..dea1e710b5 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlayDetails.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlayDetails.cs @@ -5,9 +5,11 @@ using System; using System.Collections.Generic; using System.Linq; using NUnit.Framework; +using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Utils; using osu.Game.Beatmaps; +using osu.Game.Overlays; using osu.Game.Overlays.BeatmapSet; using osu.Game.Screens.Select.Details; @@ -22,6 +24,9 @@ namespace osu.Game.Tests.Visual.Online private RatingsExposingDetails details; + [Cached] + private OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Blue); + [SetUp] public void Setup() => Schedule(() => { @@ -55,8 +60,12 @@ namespace osu.Game.Tests.Visual.Online { Fails = Enumerable.Range(1, 100).Select(_ => RNG.Next(10)).ToArray(), Retries = Enumerable.Range(-2, 100).Select(_ => RNG.Next(10)).ToArray(), - } + }, } + }, + OnlineInfo = new BeatmapSetOnlineInfo + { + Status = BeatmapSetOnlineStatus.Ranked } }; } diff --git a/osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlaySuccessRate.cs b/osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlaySuccessRate.cs index 2b572c1f6c..03003daf81 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlaySuccessRate.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlaySuccessRate.cs @@ -5,11 +5,13 @@ using System; using System.Collections.Generic; using System.Linq; using NUnit.Framework; +using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Utils; using osu.Game.Beatmaps; +using osu.Game.Overlays; using osu.Game.Overlays.BeatmapSet; using osu.Game.Screens.Select.Details; using osuTK; @@ -26,6 +28,9 @@ namespace osu.Game.Tests.Visual.Online private GraphExposingSuccessRate successRate; + [Cached] + private OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Blue); + [SetUp] public void Setup() => Schedule(() => { diff --git a/osu.Game.Tests/Visual/Online/TestSceneLeaderboardScopeSelector.cs b/osu.Game.Tests/Visual/Online/TestSceneLeaderboardScopeSelector.cs index cc3b2ac68b..f9a7bc99c3 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneLeaderboardScopeSelector.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneLeaderboardScopeSelector.cs @@ -7,11 +7,16 @@ using System.Collections.Generic; using osu.Framework.Graphics; using osu.Framework.Bindables; using osu.Game.Screens.Select.Leaderboards; +using osu.Framework.Allocation; +using osu.Game.Overlays; namespace osu.Game.Tests.Visual.Online { public class TestSceneLeaderboardScopeSelector : OsuTestScene { + [Cached] + private OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Blue); + public override IReadOnlyList RequiredTypes => new[] { typeof(LeaderboardScopeSelector), From b606408667e842dd0326bf071fa551a2e1de7452 Mon Sep 17 00:00:00 2001 From: Tree Date: Tue, 4 Feb 2020 23:02:28 +0100 Subject: [PATCH 1299/1829] Remove space --- osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs index 9913493617..00171e1170 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs @@ -103,7 +103,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, Size = new Vector2(19, 13), - Margin = new MarginPadding { Top = 3 }, // makes spacing look more even + Margin = new MarginPadding { Top = 3 }, // makes spacing look more even ShowPlaceholderOnNull = false, }, } From 23d1d3fdf11bb9cf23e416cd0478dd8ba8ab4644 Mon Sep 17 00:00:00 2001 From: Tree Date: Tue, 4 Feb 2020 23:09:10 +0100 Subject: [PATCH 1300/1829] Convert field to local variable --- osu.Game/Overlays/BeatmapSet/Info.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Info.cs b/osu.Game/Overlays/BeatmapSet/Info.cs index 516eee43ce..a71409a05f 100644 --- a/osu.Game/Overlays/BeatmapSet/Info.cs +++ b/osu.Game/Overlays/BeatmapSet/Info.cs @@ -26,7 +26,6 @@ namespace osu.Game.Overlays.BeatmapSet private readonly Box successRateBackground; private readonly Box background; private readonly SuccessRate successRate; - private readonly OsuSpriteText unrankedPlaceholder; public readonly Bindable BeatmapSet = new Bindable(); @@ -39,6 +38,8 @@ namespace osu.Game.Overlays.BeatmapSet public Info() { MetadataSection source, tags, genre, language; + OsuSpriteText unrankedPlaceholder; + RelativeSizeAxes = Axes.X; Height = 220; Masking = true; From c2a80119ca4cf9c65755abecfc9000dd234cc446 Mon Sep 17 00:00:00 2001 From: Tree Date: Tue, 4 Feb 2020 23:23:57 +0100 Subject: [PATCH 1301/1829] Remove using directives --- osu.Game/Overlays/BeatmapSet/Buttons/PreviewButton.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Buttons/PreviewButton.cs b/osu.Game/Overlays/BeatmapSet/Buttons/PreviewButton.cs index 5ce283d0d8..7eae05e4a9 100644 --- a/osu.Game/Overlays/BeatmapSet/Buttons/PreviewButton.cs +++ b/osu.Game/Overlays/BeatmapSet/Buttons/PreviewButton.cs @@ -3,7 +3,6 @@ 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.Shapes; @@ -14,7 +13,6 @@ using osu.Game.Graphics; using osu.Game.Graphics.Containers; using osu.Game.Overlays.Direct; using osuTK; -using osuTK.Graphics; namespace osu.Game.Overlays.BeatmapSet.Buttons { From 447f31ccfc21f96f3795c6e4f121e3a1f82aded0 Mon Sep 17 00:00:00 2001 From: Tree Date: Tue, 4 Feb 2020 23:25:21 +0100 Subject: [PATCH 1302/1829] Remove using directive --- osu.Game/Overlays/BeatmapSet/Details.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Details.cs b/osu.Game/Overlays/BeatmapSet/Details.cs index 85341e6f1c..bd13b4371e 100644 --- a/osu.Game/Overlays/BeatmapSet/Details.cs +++ b/osu.Game/Overlays/BeatmapSet/Details.cs @@ -9,7 +9,6 @@ using osu.Game.Beatmaps; using osu.Game.Overlays.BeatmapSet.Buttons; using osu.Game.Screens.Select.Details; using osuTK; -using osuTK.Graphics; namespace osu.Game.Overlays.BeatmapSet { From 9347c3f535e9820ed461ea5c11b62fd9d9a8d7a4 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 5 Feb 2020 11:13:32 +0300 Subject: [PATCH 1303/1829] Add trigger user change test --- .../Visual/Online/TestSceneCommentsContainer.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs index 9c526c4f81..33acc75fa8 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs @@ -10,6 +10,7 @@ using osu.Framework.Graphics; using osu.Game.Overlays.Comments; using osu.Game.Overlays; using osu.Framework.Allocation; +using osu.Game.Online.API; namespace osu.Game.Tests.Visual.Online { @@ -34,21 +35,26 @@ namespace osu.Game.Tests.Visual.Online [Cached] private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Purple); + private CommentsContainer comments; + private readonly BasicScrollContainer scroll; + public TestSceneCommentsContainer() { - BasicScrollContainer scroll; - CommentsContainer comments; - Add(scroll = new BasicScrollContainer { RelativeSizeAxes = Axes.Both, Child = comments = new CommentsContainer() }); + } + [BackgroundDependencyLoader] + private void load(IAPIProvider api) + { AddStep("Big Black comments", () => comments.ShowComments(CommentableType.Beatmapset, 41823)); AddStep("Airman comments", () => comments.ShowComments(CommentableType.Beatmapset, 24313)); AddStep("Lazer build comments", () => comments.ShowComments(CommentableType.Build, 4772)); AddStep("News comments", () => comments.ShowComments(CommentableType.NewsPost, 715)); + AddStep("Trigger user change", api.LocalUser.TriggerChange); AddStep("Idle state", () => { scroll.Clear(); From a3fd952f74bf6693a576f3db4b8261e399db037c Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 5 Feb 2020 11:21:23 +0300 Subject: [PATCH 1304/1829] Use new SpotlightSelector in RankingsHeader --- .../Visual/Online/TestSceneRankingsHeader.cs | 13 ++-- .../Rankings/RankingsOverlayHeader.cs | 61 +++---------------- osu.Game/Overlays/Rankings/Spotlight.cs | 18 ------ 3 files changed, 16 insertions(+), 76 deletions(-) delete mode 100644 osu.Game/Overlays/Rankings/Spotlight.cs diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs index 898e461bde..bc0ae3d264 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using osu.Framework.Allocation; using osu.Framework.Bindables; +using osu.Game.Online.API.Requests.Responses; using osu.Game.Overlays; using osu.Game.Overlays.Rankings; using osu.Game.Rulesets; @@ -37,20 +38,20 @@ namespace osu.Game.Tests.Visual.Online Ruleset = { BindTarget = ruleset }, Spotlights = new[] { - new Spotlight + new APISpotlight { Id = 1, - Text = "Spotlight 1" + Name = "Spotlight 1" }, - new Spotlight + new APISpotlight { Id = 2, - Text = "Spotlight 2" + Name = "Spotlight 2" }, - new Spotlight + new APISpotlight { Id = 3, - Text = "Spotlight 3" + Name = "Spotlight 3" } } }); diff --git a/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs b/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs index 94afe4e5a5..41722034b6 100644 --- a/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs +++ b/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs @@ -8,21 +8,20 @@ using osu.Game.Rulesets; using osu.Game.Users; using System.Collections.Generic; using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Shapes; -using osu.Framework.Allocation; +using osu.Game.Online.API.Requests.Responses; namespace osu.Game.Overlays.Rankings { public class RankingsOverlayHeader : TabControlOverlayHeader { public readonly Bindable Ruleset = new Bindable(); - public readonly Bindable Spotlight = new Bindable(); + public readonly Bindable Spotlight = new Bindable(); public readonly Bindable Country = new Bindable(); - public IEnumerable Spotlights + public IEnumerable Spotlights { - get => spotlightsContainer.Spotlights; - set => spotlightsContainer.Spotlights = value; + get => spotlightSelector.Spotlights; + set => spotlightSelector.Spotlights = value; } protected override ScreenTitle CreateTitle() => new RankingsTitle @@ -35,7 +34,7 @@ namespace osu.Game.Overlays.Rankings Current = Ruleset }; - private SpotlightsContainer spotlightsContainer; + private SpotlightSelector spotlightSelector; protected override Drawable CreateContent() => new FillFlowContainer { @@ -48,9 +47,9 @@ namespace osu.Game.Overlays.Rankings { Current = Country }, - spotlightsContainer = new SpotlightsContainer + spotlightSelector = new SpotlightSelector { - Spotlight = { BindTarget = Spotlight } + Current = { BindTarget = Spotlight } } } }; @@ -62,7 +61,7 @@ namespace osu.Game.Overlays.Rankings } private void onCurrentChanged(ValueChangedEvent scope) => - spotlightsContainer.FadeTo(scope.NewValue == RankingsScope.Spotlights ? 1 : 0, 200, Easing.OutQuint); + spotlightSelector.FadeTo(scope.NewValue == RankingsScope.Spotlights ? 1 : 0, 200, Easing.OutQuint); private class RankingsTitle : ScreenTitle { @@ -81,48 +80,6 @@ namespace osu.Game.Overlays.Rankings protected override Drawable CreateIcon() => new ScreenTitleTextureIcon(@"Icons/rankings"); } - - private class SpotlightsContainer : CompositeDrawable - { - public readonly Bindable Spotlight = new Bindable(); - - public IEnumerable Spotlights - { - get => dropdown.Items; - set => dropdown.Items = value; - } - - private readonly OsuDropdown dropdown; - private readonly Box background; - - public SpotlightsContainer() - { - Height = 100; - RelativeSizeAxes = Axes.X; - InternalChildren = new Drawable[] - { - background = new Box - { - RelativeSizeAxes = Axes.Both, - }, - dropdown = new OsuDropdown - { - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - RelativeSizeAxes = Axes.X, - Width = 0.8f, - Current = Spotlight, - Y = 20, - } - }; - } - - [BackgroundDependencyLoader] - private void load(OverlayColourProvider colourProvider) - { - background.Colour = colourProvider.Dark3; - } - } } public enum RankingsScope diff --git a/osu.Game/Overlays/Rankings/Spotlight.cs b/osu.Game/Overlays/Rankings/Spotlight.cs deleted file mode 100644 index e956b4f449..0000000000 --- a/osu.Game/Overlays/Rankings/Spotlight.cs +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. -// See the LICENCE file in the repository root for full licence text. - -using Newtonsoft.Json; - -namespace osu.Game.Overlays.Rankings -{ - public class Spotlight - { - [JsonProperty("id")] - public int Id; - - [JsonProperty("text")] - public string Text; - - public override string ToString() => Text; - } -} From 63c595ed974ef224e7e350599ceafffa202320d0 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 5 Feb 2020 17:16:15 +0900 Subject: [PATCH 1305/1829] Make EditorBeatmap a component and move UpdateHitObject to it --- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 20 ++-------------- osu.Game/Screens/Edit/Editor.cs | 6 ++--- osu.Game/Screens/Edit/EditorBeatmap.cs | 26 ++++++++++++++++++++- 3 files changed, 30 insertions(+), 22 deletions(-) diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index 5ac1d4ecc4..0014360d24 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -11,7 +11,6 @@ using osu.Framework.Graphics.Containers; using osu.Framework.Input; using osu.Framework.Input.Events; using osu.Framework.Logging; -using osu.Framework.Threading; using osu.Framework.Timing; using osu.Game.Beatmaps; using osu.Game.Beatmaps.ControlPoints; @@ -50,8 +49,6 @@ namespace osu.Game.Rulesets.Edit [Resolved] private IBeatSnapProvider beatSnapProvider { get; set; } - private IBeatmapProcessor beatmapProcessor; - private DrawableEditRulesetWrapper drawableRulesetWrapper; private ComposeBlueprintContainer blueprintContainer; private Container distanceSnapGridContainer; @@ -71,8 +68,6 @@ namespace osu.Game.Rulesets.Edit [BackgroundDependencyLoader] private void load(IFrameBasedClock framedClock) { - beatmapProcessor = Ruleset.CreateBeatmapProcessor(EditorBeatmap.PlayableBeatmap); - EditorBeatmap.HitObjectAdded += addHitObject; EditorBeatmap.HitObjectRemoved += removeHitObject; EditorBeatmap.StartTimeChanged += UpdateHitObject; @@ -240,19 +235,6 @@ namespace osu.Game.Rulesets.Edit lastGridUpdateTime = EditorClock.CurrentTime; } - private ScheduledDelegate scheduledUpdate; - - public override void UpdateHitObject(HitObject hitObject) - { - scheduledUpdate?.Cancel(); - scheduledUpdate = Schedule(() => - { - beatmapProcessor?.PreProcess(); - hitObject?.ApplyDefaults(EditorBeatmap.ControlPointInfo, EditorBeatmap.BeatmapInfo.BaseDifficulty); - beatmapProcessor?.PostProcess(); - }); - } - private void addHitObject(HitObject hitObject) => UpdateHitObject(hitObject); private void removeHitObject(HitObject hitObject) => UpdateHitObject(null); @@ -309,6 +291,8 @@ namespace osu.Game.Rulesets.Edit public override float GetSnappedDistanceFromDistance(double referenceTime, float distance) => DurationToDistance(referenceTime, beatSnapProvider.SnapTime(DistanceToDuration(referenceTime, distance), referenceTime)); + public override void UpdateHitObject(HitObject hitObject) => EditorBeatmap.UpdateHitObject(hitObject); + protected override void Dispose(bool isDisposing) { base.Dispose(isDisposing); diff --git a/osu.Game/Screens/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs index 8c7270d3a2..9a60edadc4 100644 --- a/osu.Game/Screens/Edit/Editor.cs +++ b/osu.Game/Screens/Edit/Editor.cs @@ -81,7 +81,7 @@ namespace osu.Game.Screens.Edit clock.ChangeSource(sourceClock); playableBeatmap = Beatmap.Value.GetPlayableBeatmap(Beatmap.Value.BeatmapInfo.Ruleset); - editorBeatmap = new EditorBeatmap(playableBeatmap, beatDivisor); + AddInternal(editorBeatmap = new EditorBeatmap(playableBeatmap, beatDivisor)); dependencies.CacheAs(clock); dependencies.CacheAs(clock); @@ -104,7 +104,7 @@ namespace osu.Game.Screens.Edit fileMenuItems.Add(new EditorMenuItem("Exit", MenuItemType.Standard, this.Exit)); - InternalChild = new OsuContextMenuContainer + AddInternal(new OsuContextMenuContainer { RelativeSizeAxes = Axes.Both, Children = new[] @@ -189,7 +189,7 @@ namespace osu.Game.Screens.Edit } }, } - }; + }); menuBar.Mode.ValueChanged += onModeChanged; diff --git a/osu.Game/Screens/Edit/EditorBeatmap.cs b/osu.Game/Screens/Edit/EditorBeatmap.cs index 6edd62fa67..ba008e32e8 100644 --- a/osu.Game/Screens/Edit/EditorBeatmap.cs +++ b/osu.Game/Screens/Edit/EditorBeatmap.cs @@ -5,6 +5,8 @@ using System; using System.Collections; using System.Collections.Generic; using osu.Framework.Bindables; +using osu.Framework.Graphics; +using osu.Framework.Threading; using osu.Game.Beatmaps; using osu.Game.Beatmaps.ControlPoints; using osu.Game.Beatmaps.Timing; @@ -13,7 +15,7 @@ using osu.Game.Rulesets.Objects; namespace osu.Game.Screens.Edit { - public class EditorBeatmap : IBeatmap, IBeatSnapProvider + public class EditorBeatmap : Component, IBeatmap, IBeatSnapProvider { /// /// Invoked when a is added to this . @@ -36,17 +38,39 @@ namespace osu.Game.Screens.Edit private readonly BindableBeatDivisor beatDivisor; + private readonly IBeatmapProcessor beatmapProcessor; + private readonly Dictionary> startTimeBindables = new Dictionary>(); public EditorBeatmap(IBeatmap playableBeatmap, BindableBeatDivisor beatDivisor = null) { PlayableBeatmap = playableBeatmap; + this.beatDivisor = beatDivisor; + beatmapProcessor = playableBeatmap.BeatmapInfo.Ruleset?.CreateInstance().CreateBeatmapProcessor(PlayableBeatmap); + foreach (var obj in HitObjects) trackStartTime(obj); } + private ScheduledDelegate scheduledUpdate; + + /// + /// Updates a , invoking and re-processing the beatmap. + /// + /// The to update. + public void UpdateHitObject(HitObject hitObject) + { + scheduledUpdate?.Cancel(); + scheduledUpdate = Scheduler.AddDelayed(() => + { + beatmapProcessor?.PreProcess(); + hitObject?.ApplyDefaults(ControlPointInfo, BeatmapInfo.BaseDifficulty); + beatmapProcessor?.PostProcess(); + }, 0); + } + public BeatmapInfo BeatmapInfo { get => PlayableBeatmap.BeatmapInfo; From 96986bf5fcf03e56acbf8926346665ef1fea42f6 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 5 Feb 2020 17:32:33 +0900 Subject: [PATCH 1306/1829] Remove beat divisor from ctor and use DI instead --- ...tSceneHitObjectComposerDistanceSnapping.cs | 22 +++++++++++++++++-- .../Visual/Editor/TimelineTestScene.cs | 3 ++- osu.Game/Screens/Edit/Editor.cs | 6 ++--- osu.Game/Screens/Edit/EditorBeatmap.cs | 8 +++---- 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs b/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs index 5a4e76d586..3cb5909ba9 100644 --- a/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs +++ b/osu.Game.Tests/Editor/TestSceneHitObjectComposerDistanceSnapping.cs @@ -3,6 +3,8 @@ using NUnit.Framework; using osu.Framework.Allocation; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; using osu.Framework.Testing; using osu.Game.Beatmaps.ControlPoints; using osu.Game.Rulesets.Edit; @@ -23,15 +25,31 @@ namespace osu.Game.Tests.Editor [Cached(typeof(IBeatSnapProvider))] private readonly EditorBeatmap editorBeatmap; + protected override Container Content { get; } + public TestSceneHitObjectComposerDistanceSnapping() { - editorBeatmap = new EditorBeatmap(new OsuBeatmap(), BeatDivisor); + base.Content.Add(new Container + { + RelativeSizeAxes = Axes.Both, + Children = new Drawable[] + { + editorBeatmap = new EditorBeatmap(new OsuBeatmap()), + Content = new Container + { + RelativeSizeAxes = Axes.Both, + } + }, + }); } [SetUp] public void Setup() => Schedule(() => { - Child = composer = new TestHitObjectComposer(); + Children = new Drawable[] + { + composer = new TestHitObjectComposer() + }; BeatDivisor.Value = 1; diff --git a/osu.Game.Tests/Visual/Editor/TimelineTestScene.cs b/osu.Game.Tests/Visual/Editor/TimelineTestScene.cs index b5e526d3c2..40c0fedc9e 100644 --- a/osu.Game.Tests/Visual/Editor/TimelineTestScene.cs +++ b/osu.Game.Tests/Visual/Editor/TimelineTestScene.cs @@ -38,13 +38,14 @@ namespace osu.Game.Tests.Visual.Editor { Beatmap.Value = new WaveformTestBeatmap(audio); - var editorBeatmap = new EditorBeatmap((Beatmap)Beatmap.Value.Beatmap, BeatDivisor); + var editorBeatmap = new EditorBeatmap((Beatmap)Beatmap.Value.Beatmap); Dependencies.Cache(editorBeatmap); Dependencies.CacheAs(editorBeatmap); AddRange(new Drawable[] { + editorBeatmap, new FillFlowContainer { AutoSizeAxes = Axes.Both, diff --git a/osu.Game/Screens/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs index 9a60edadc4..3bec4b8f6f 100644 --- a/osu.Game/Screens/Edit/Editor.cs +++ b/osu.Game/Screens/Edit/Editor.cs @@ -80,15 +80,15 @@ namespace osu.Game.Screens.Edit clock = new EditorClock(Beatmap.Value, beatDivisor) { IsCoupled = false }; clock.ChangeSource(sourceClock); - playableBeatmap = Beatmap.Value.GetPlayableBeatmap(Beatmap.Value.BeatmapInfo.Ruleset); - AddInternal(editorBeatmap = new EditorBeatmap(playableBeatmap, beatDivisor)); - dependencies.CacheAs(clock); dependencies.CacheAs(clock); // todo: remove caching of this and consume via editorBeatmap? dependencies.Cache(beatDivisor); + playableBeatmap = Beatmap.Value.GetPlayableBeatmap(Beatmap.Value.BeatmapInfo.Ruleset); + AddInternal(editorBeatmap = new EditorBeatmap(playableBeatmap)); + dependencies.CacheAs(editorBeatmap); EditorMenuBar menuBar; diff --git a/osu.Game/Screens/Edit/EditorBeatmap.cs b/osu.Game/Screens/Edit/EditorBeatmap.cs index ba008e32e8..cacb539891 100644 --- a/osu.Game/Screens/Edit/EditorBeatmap.cs +++ b/osu.Game/Screens/Edit/EditorBeatmap.cs @@ -4,6 +4,7 @@ using System; using System.Collections; using System.Collections.Generic; +using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Threading; @@ -36,18 +37,17 @@ namespace osu.Game.Screens.Edit public readonly IBeatmap PlayableBeatmap; - private readonly BindableBeatDivisor beatDivisor; + [Resolved] + private BindableBeatDivisor beatDivisor { get; set; } private readonly IBeatmapProcessor beatmapProcessor; private readonly Dictionary> startTimeBindables = new Dictionary>(); - public EditorBeatmap(IBeatmap playableBeatmap, BindableBeatDivisor beatDivisor = null) + public EditorBeatmap(IBeatmap playableBeatmap) { PlayableBeatmap = playableBeatmap; - this.beatDivisor = beatDivisor; - beatmapProcessor = playableBeatmap.BeatmapInfo.Ruleset?.CreateInstance().CreateBeatmapProcessor(PlayableBeatmap); foreach (var obj in HitObjects) From dffc58c5fae9e18fc96af3b8128ce3a7b2d06226 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 4 Feb 2020 12:23:02 +0900 Subject: [PATCH 1307/1829] Add blueprint type to timeline test --- .../Editor/TestSceneTimelineBlueprintContainer.cs | 13 +++++++++++++ .../Visual/Editor/TestSceneTimingScreen.cs | 7 ++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Editor/TestSceneTimelineBlueprintContainer.cs b/osu.Game.Tests/Visual/Editor/TestSceneTimelineBlueprintContainer.cs index 3c75fd5310..4d8f877575 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneTimelineBlueprintContainer.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneTimelineBlueprintContainer.cs @@ -1,6 +1,8 @@ // 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 NUnit.Framework; using osu.Framework.Graphics; using osu.Game.Screens.Edit.Compose.Components.Timeline; @@ -10,6 +12,17 @@ namespace osu.Game.Tests.Visual.Editor [TestFixture] public class TestSceneTimelineBlueprintContainer : TimelineTestScene { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(TimelineHitObjectBlueprint), + }; + public override Drawable CreateTestComponent() => new TimelineBlueprintContainer(); + + protected override void LoadComplete() + { + base.LoadComplete(); + Clock.Seek(10000); + } } } diff --git a/osu.Game.Tests/Visual/Editor/TestSceneTimingScreen.cs b/osu.Game.Tests/Visual/Editor/TestSceneTimingScreen.cs index adfed9a299..ae09a7fa47 100644 --- a/osu.Game.Tests/Visual/Editor/TestSceneTimingScreen.cs +++ b/osu.Game.Tests/Visual/Editor/TestSceneTimingScreen.cs @@ -27,7 +27,12 @@ namespace osu.Game.Tests.Visual.Editor }; [Cached(typeof(EditorBeatmap))] - private readonly EditorBeatmap editorBeatmap = new EditorBeatmap(new OsuBeatmap()); + private readonly EditorBeatmap editorBeatmap; + + public TestSceneTimingScreen() + { + editorBeatmap = new EditorBeatmap(new OsuBeatmap()); + } [BackgroundDependencyLoader] private void load() From cd6902a312480e53a7f49d1fa264ef158750d4cd Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 5 Feb 2020 17:12:26 +0900 Subject: [PATCH 1308/1829] Make EndTime and RepeatCount settable --- osu.Game.Rulesets.Catch/Objects/BananaShower.cs | 6 +++++- osu.Game.Rulesets.Catch/Objects/JuiceStream.cs | 6 +++++- osu.Game.Rulesets.Mania/Objects/HoldNote.cs | 6 +++++- osu.Game.Rulesets.Osu/Objects/Slider.cs | 9 +++++++-- osu.Game.Rulesets.Taiko/Objects/DrumRoll.cs | 6 +++++- osu.Game.Rulesets.Taiko/Objects/Swell.cs | 6 +++++- osu.Game/Rulesets/Objects/Legacy/ConvertSlider.cs | 7 ++++++- osu.Game/Rulesets/Objects/Types/IHasEndTime.cs | 5 ++++- osu.Game/Rulesets/Objects/Types/IHasRepeats.cs | 2 +- 9 files changed, 43 insertions(+), 10 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Objects/BananaShower.cs b/osu.Game.Rulesets.Catch/Objects/BananaShower.cs index 267e6d12c7..0c754412e5 100644 --- a/osu.Game.Rulesets.Catch/Objects/BananaShower.cs +++ b/osu.Game.Rulesets.Catch/Objects/BananaShower.cs @@ -36,7 +36,11 @@ namespace osu.Game.Rulesets.Catch.Objects } } - public double EndTime => StartTime + Duration; + public double EndTime + { + get => StartTime + Duration; + set => Duration = value - StartTime; + } public double Duration { get; set; } } diff --git a/osu.Game.Rulesets.Catch/Objects/JuiceStream.cs b/osu.Game.Rulesets.Catch/Objects/JuiceStream.cs index a4ed966abb..4d68bf592c 100644 --- a/osu.Game.Rulesets.Catch/Objects/JuiceStream.cs +++ b/osu.Game.Rulesets.Catch/Objects/JuiceStream.cs @@ -110,7 +110,11 @@ namespace osu.Game.Rulesets.Catch.Objects } } - public double EndTime => StartTime + this.SpanCount() * Path.Distance / Velocity; + public double EndTime + { + get => StartTime + this.SpanCount() * Path.Distance / Velocity; + set => throw new System.NotImplementedException(); + } public float EndX => X + this.CurvePositionAt(1).X / CatchPlayfield.BASE_WIDTH; diff --git a/osu.Game.Rulesets.Mania/Objects/HoldNote.cs b/osu.Game.Rulesets.Mania/Objects/HoldNote.cs index bdba813eed..86d3d2b2b0 100644 --- a/osu.Game.Rulesets.Mania/Objects/HoldNote.cs +++ b/osu.Game.Rulesets.Mania/Objects/HoldNote.cs @@ -15,7 +15,11 @@ namespace osu.Game.Rulesets.Mania.Objects /// public class HoldNote : ManiaHitObject, IHasEndTime { - public double EndTime => StartTime + Duration; + public double EndTime + { + get => StartTime + Duration; + set => Duration = value - StartTime; + } private double duration; diff --git a/osu.Game.Rulesets.Osu/Objects/Slider.cs b/osu.Game.Rulesets.Osu/Objects/Slider.cs index fe65ab78d1..bab7e6dbee 100644 --- a/osu.Game.Rulesets.Osu/Objects/Slider.cs +++ b/osu.Game.Rulesets.Osu/Objects/Slider.cs @@ -18,7 +18,12 @@ namespace osu.Game.Rulesets.Osu.Objects { public class Slider : OsuHitObject, IHasCurve { - public double EndTime => StartTime + this.SpanCount() * Path.Distance / Velocity; + public double EndTime + { + get => StartTime + this.SpanCount() * Path.Distance / Velocity; + set => throw new System.NotImplementedException(); + } + public double Duration => EndTime - StartTime; private readonly Cached endPositionCache = new Cached(); @@ -81,7 +86,7 @@ namespace osu.Game.Rulesets.Osu.Objects set { repeatCount = value; - endPositionCache.Invalidate(); + updateNestedPositions(); } } diff --git a/osu.Game.Rulesets.Taiko/Objects/DrumRoll.cs b/osu.Game.Rulesets.Taiko/Objects/DrumRoll.cs index 8956ca9c19..aacd78f176 100644 --- a/osu.Game.Rulesets.Taiko/Objects/DrumRoll.cs +++ b/osu.Game.Rulesets.Taiko/Objects/DrumRoll.cs @@ -18,7 +18,11 @@ namespace osu.Game.Rulesets.Taiko.Objects /// private const float base_distance = 100; - public double EndTime => StartTime + Duration; + public double EndTime + { + get => StartTime + Duration; + set => Duration = value - StartTime; + } public double Duration { get; set; } diff --git a/osu.Game.Rulesets.Taiko/Objects/Swell.cs b/osu.Game.Rulesets.Taiko/Objects/Swell.cs index e60984596d..2f06066a16 100644 --- a/osu.Game.Rulesets.Taiko/Objects/Swell.cs +++ b/osu.Game.Rulesets.Taiko/Objects/Swell.cs @@ -11,7 +11,11 @@ namespace osu.Game.Rulesets.Taiko.Objects { public class Swell : TaikoHitObject, IHasEndTime { - public double EndTime => StartTime + Duration; + public double EndTime + { + get => StartTime + Duration; + set => Duration = value - StartTime; + } public double Duration { get; set; } diff --git a/osu.Game/Rulesets/Objects/Legacy/ConvertSlider.cs b/osu.Game/Rulesets/Objects/Legacy/ConvertSlider.cs index 8d523022d6..b5cd9be245 100644 --- a/osu.Game/Rulesets/Objects/Legacy/ConvertSlider.cs +++ b/osu.Game/Rulesets/Objects/Legacy/ConvertSlider.cs @@ -26,7 +26,12 @@ namespace osu.Game.Rulesets.Objects.Legacy public List> NodeSamples { get; set; } public int RepeatCount { get; set; } - public double EndTime => StartTime + this.SpanCount() * Distance / Velocity; + public double EndTime + { + get => StartTime + this.SpanCount() * Distance / Velocity; + set => throw new System.NotImplementedException(); + } + public double Duration => EndTime - StartTime; public double Velocity = 1; diff --git a/osu.Game/Rulesets/Objects/Types/IHasEndTime.cs b/osu.Game/Rulesets/Objects/Types/IHasEndTime.cs index 516f1002a4..bc7103c60d 100644 --- a/osu.Game/Rulesets/Objects/Types/IHasEndTime.cs +++ b/osu.Game/Rulesets/Objects/Types/IHasEndTime.cs @@ -1,6 +1,8 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. +using Newtonsoft.Json; + namespace osu.Game.Rulesets.Objects.Types { /// @@ -11,7 +13,8 @@ namespace osu.Game.Rulesets.Objects.Types /// /// The time at which the HitObject ends. /// - double EndTime { get; } + [JsonIgnore] + double EndTime { get; set; } /// /// The duration of the HitObject. diff --git a/osu.Game/Rulesets/Objects/Types/IHasRepeats.cs b/osu.Game/Rulesets/Objects/Types/IHasRepeats.cs index b22752e902..256b1f3963 100644 --- a/osu.Game/Rulesets/Objects/Types/IHasRepeats.cs +++ b/osu.Game/Rulesets/Objects/Types/IHasRepeats.cs @@ -14,7 +14,7 @@ namespace osu.Game.Rulesets.Objects.Types /// /// The amount of times the HitObject repeats. /// - int RepeatCount { get; } + int RepeatCount { get; set; } /// /// The samples to be played when each node of the is hit.
    From fa65e3a5bb51db63dc33f74189607e5d8dcb0487 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 5 Feb 2020 12:09:32 +0300 Subject: [PATCH 1309/1829] Make spotlight selector work --- osu.Game/Overlays/RankingsOverlay.cs | 32 +++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index 84470d9caa..36f5a3155a 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -14,6 +14,8 @@ using osu.Game.Online.API; using System.Threading; using osu.Game.Online.API.Requests; using osu.Game.Overlays.Rankings.Tables; +using osu.Game.Online.API.Requests.Responses; +using System.Linq; namespace osu.Game.Overlays { @@ -22,11 +24,13 @@ namespace osu.Game.Overlays protected readonly Bindable Country = new Bindable(); protected readonly Bindable Scope = new Bindable(); private readonly Bindable ruleset = new Bindable(); + private readonly Bindable spotlight = new Bindable(); private readonly BasicScrollContainer scrollFlow; private readonly Container tableContainer; private readonly DimmedLoadingLayer loading; private readonly Box background; + private readonly RankingsOverlayHeader header; private APIRequest lastRequest; private CancellationTokenSource cancellationToken; @@ -54,14 +58,15 @@ namespace osu.Game.Overlays Direction = FillDirection.Vertical, Children = new Drawable[] { - new RankingsOverlayHeader + header = new RankingsOverlayHeader { Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, Depth = -float.MaxValue, Country = { BindTarget = Country }, Current = { BindTarget = Scope }, - Ruleset = { BindTarget = ruleset } + Ruleset = { BindTarget = ruleset }, + Spotlight = { BindTarget = spotlight } }, new Container { @@ -109,11 +114,19 @@ namespace osu.Game.Overlays if (Scope.Value != RankingsScope.Performance) Country.Value = null; + if (Scope.Value == RankingsScope.Spotlights && !header.Spotlights.Any()) + { + getSpotlights(); + return; + } + Scheduler.AddOnce(loadNewContent); }, true); ruleset.BindValueChanged(_ => Scheduler.AddOnce(loadNewContent), true); + spotlight.BindValueChanged(_ => Scheduler.AddOnce(loadNewContent), true); + base.LoadComplete(); } @@ -127,6 +140,14 @@ namespace osu.Game.Overlays Country.Value = requested; } + private void getSpotlights() + { + loading.Show(); + var request = new GetSpotlightsRequest(); + request.Success += response => header.Spotlights = response.Spotlights; + api.Queue(request); + } + private void loadNewContent() { loading.Show(); @@ -145,7 +166,6 @@ namespace osu.Game.Overlays request.Success += () => loadTable(createTableFromResponse(request)); request.Failure += _ => loadTable(null); - api.Queue(request); } @@ -161,6 +181,9 @@ namespace osu.Game.Overlays case RankingsScope.Score: return new GetUserRankingsRequest(ruleset.Value, UserRankingsType.Score); + + case RankingsScope.Spotlights: + return new GetSpotlightRankingsRequest(ruleset.Value, header.Spotlight.Value.Id); } return null; @@ -184,6 +207,9 @@ namespace osu.Game.Overlays case GetCountryRankingsRequest countryRequest: return new CountriesTable(1, countryRequest.Result.Countries); + + case GetSpotlightRankingsRequest spotlightRequest: + return new ScoresTable(1, spotlightRequest.Result.Users); } return null; From 2b0b789980a0c7a099bc4ae88a5cf11a2229b70e Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 5 Feb 2020 12:14:24 +0300 Subject: [PATCH 1310/1829] Naming adjustments --- osu.Game/Overlays/RankingsOverlay.cs | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index 36f5a3155a..39f106a24e 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -27,7 +27,7 @@ namespace osu.Game.Overlays private readonly Bindable spotlight = new Bindable(); private readonly BasicScrollContainer scrollFlow; - private readonly Container tableContainer; + private readonly Container contentContainer; private readonly DimmedLoadingLayer loading; private readonly Box background; private readonly RankingsOverlayHeader header; @@ -74,7 +74,7 @@ namespace osu.Game.Overlays AutoSizeAxes = Axes.Y, Children = new Drawable[] { - tableContainer = new Container + contentContainer = new Container { Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, @@ -160,12 +160,12 @@ namespace osu.Game.Overlays if (request == null) { - loadTable(null); + loadContent(null); return; } - request.Success += () => loadTable(createTableFromResponse(request)); - request.Failure += _ => loadTable(null); + request.Success += () => loadContent(createContentFromResponse(request)); + request.Failure += _ => loadContent(null); api.Queue(request); } @@ -189,7 +189,7 @@ namespace osu.Game.Overlays return null; } - private Drawable createTableFromResponse(APIRequest request) + private Drawable createContentFromResponse(APIRequest request) { switch (request) { @@ -215,21 +215,21 @@ namespace osu.Game.Overlays return null; } - private void loadTable(Drawable table) + private void loadContent(Drawable content) { scrollFlow.ScrollToStart(); - if (table == null) + if (content == null) { - tableContainer.Clear(); + contentContainer.Clear(); loading.Hide(); return; } - LoadComponentAsync(table, t => + LoadComponentAsync(content, t => { loading.Hide(); - tableContainer.Child = table; + contentContainer.Child = content; }, (cancellationToken = new CancellationTokenSource()).Token); } } From b83ee6dabf45a4baf1ceebd4204ad56affe1245b Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 5 Feb 2020 12:22:42 +0300 Subject: [PATCH 1311/1829] Show beatmap panels for selected spotlight --- osu.Game/Overlays/RankingsOverlay.cs | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index 39f106a24e..2a4bc28b18 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -16,6 +16,8 @@ using osu.Game.Online.API.Requests; using osu.Game.Overlays.Rankings.Tables; using osu.Game.Online.API.Requests.Responses; using System.Linq; +using osuTK; +using osu.Game.Overlays.Direct; namespace osu.Game.Overlays { @@ -38,6 +40,9 @@ namespace osu.Game.Overlays [Resolved] private IAPIProvider api { get; set; } + [Resolved] + private RulesetStore rulesets { get; set; } + public RankingsOverlay() : base(OverlayColourScheme.Green) { @@ -209,7 +214,28 @@ namespace osu.Game.Overlays return new CountriesTable(1, countryRequest.Result.Countries); case GetSpotlightRankingsRequest spotlightRequest: - return new ScoresTable(1, spotlightRequest.Result.Users); + return new FillFlowContainer + { + AutoSizeAxes = Axes.Y, + RelativeSizeAxes = Axes.X, + Direction = FillDirection.Vertical, + Spacing = new Vector2(0, 20), + Children = new Drawable[] + { + new ScoresTable(1, spotlightRequest.Result.Users), + new FillFlowContainer + { + AutoSizeAxes = Axes.Y, + RelativeSizeAxes = Axes.X, + Spacing = new Vector2(10), + Children = spotlightRequest.Result.BeatmapSets.Select(b => new DirectGridPanel(b.ToBeatmapSet(rulesets)) + { + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, + }).ToList() + } + } + }; } return null; From d04cc0123df7c7c7d3a476a03a27f93dd79257f4 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 5 Feb 2020 17:16:37 +0900 Subject: [PATCH 1312/1829] Initial implementation of timeline blueprint dragbars --- .../Compose/Components/Timeline/Timeline.cs | 13 ++- .../Timeline/TimelineHitObjectBlueprint.cs | 99 ++++++++++++++----- 2 files changed, 85 insertions(+), 27 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs index a33040f400..0475e68e42 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs @@ -179,11 +179,14 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline [Resolved] private IBeatSnapProvider beatSnapProvider { get; set; } - public (Vector2 position, double time) GetSnappedPosition(Vector2 position, double time) - { - var targetTime = (position.X / Content.DrawWidth) * track.Length; - return (position, beatSnapProvider.SnapTime(targetTime)); - } + public double GetTimeFromScreenSpacePosition(Vector2 position) + => getTimeFromPosition(Content.ToLocalSpace(position)); + + public (Vector2 position, double time) GetSnappedPosition(Vector2 position, double time) => + (position, beatSnapProvider.SnapTime(getTimeFromPosition(position))); + + private double getTimeFromPosition(Vector2 localPosition) => + (localPosition.X / Content.DrawWidth) * track.Length; public float GetBeatSnapDistanceAt(double referenceTime) => throw new NotImplementedException(); diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs index 2ed5471444..2ac35534f4 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs @@ -2,11 +2,13 @@ // 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; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Primitives; using osu.Framework.Graphics.Shapes; +using osu.Framework.Input.Events; using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Objects.Types; @@ -24,7 +26,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline [UsedImplicitly] private readonly Bindable startTime; - public const float THICKNESS = 3; + public const float THICKNESS = 5; private const float circle_size = 16; @@ -44,25 +46,6 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; - if (hitObject is IHasEndTime) - { - AddInternal(extensionBar = new Container - { - CornerRadius = 2, - Masking = true, - Size = new Vector2(1, THICKNESS), - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - RelativePositionAxes = Axes.X, - RelativeSizeAxes = Axes.X, - Colour = Color4.Black, - Child = new Box - { - RelativeSizeAxes = Axes.Both, - } - }); - } - AddInternal(circle = new Circle { Size = new Vector2(circle_size), @@ -74,6 +57,78 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline BorderColour = Color4.Black, BorderThickness = THICKNESS, }); + + if (hitObject is IHasEndTime) + { + AddRangeInternal(new Drawable[] + { + extensionBar = new Container + { + CornerRadius = 2, + Masking = true, + Size = new Vector2(1, THICKNESS), + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + RelativePositionAxes = Axes.X, + RelativeSizeAxes = Axes.X, + Child = new Box + { + RelativeSizeAxes = Axes.Both, + } + }, + new DragBar(hitObject), + }); + } + } + + public class DragBar : CompositeDrawable + { + private readonly HitObject hitObject; + + [Resolved] + private Timeline timeline { get; set; } + + public DragBar(HitObject hitObject) + { + this.hitObject = hitObject; + + CornerRadius = 2; + Masking = true; + Size = new Vector2(THICKNESS, 1.5f); + Anchor = Anchor.CentreRight; + Origin = Anchor.CentreRight; + RelativePositionAxes = Axes.X; + RelativeSizeAxes = Axes.Y; + InternalChild = new Box + { + RelativeSizeAxes = Axes.Both, + }; + } + + protected override bool OnDragStart(DragStartEvent e) => true; + + [Resolved] + private EditorBeatmap beatmap { get; set; } + + protected override void OnDrag(DragEvent e) + { + base.OnDrag(e); + + var time = timeline.GetTimeFromScreenSpacePosition(e.ScreenSpaceMousePosition); + + switch (hitObject) + { + case IHasRepeats repeatHitObject: + repeatHitObject.RepeatCount = (int)((time - hitObject.StartTime) / (repeatHitObject.Duration / repeatHitObject.RepeatCount)); + break; + + case IHasEndTime endTimeHitObject: + endTimeHitObject.EndTime = time; + break; + } + + beatmap.UpdateHitObject(hitObject); + } } protected override void Update() @@ -88,14 +143,14 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline { circle.BorderColour = Color4.Orange; if (extensionBar != null) - extensionBar.Colour = Color4.Orange; + extensionBar.BorderColour = Color4.Orange; } protected override void OnDeselected() { circle.BorderColour = Color4.Black; if (extensionBar != null) - extensionBar.Colour = Color4.Black; + extensionBar.BorderColour = Color4.Black; } public override Quad SelectionQuad From 09273d1da97a5b2ffe75fc9185a0c43161fdcb7c Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 5 Feb 2020 18:14:44 +0900 Subject: [PATCH 1313/1829] Fix test scene not correctly building a playable beatmap --- .../Visual/Editor/TimelineTestScene.cs | 5 ++-- osu.Game.Tests/WaveformTestBeatmap.cs | 27 ++++++++++++++----- osu.Game/Tests/Beatmaps/TestBeatmap.cs | 4 ++- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/osu.Game.Tests/Visual/Editor/TimelineTestScene.cs b/osu.Game.Tests/Visual/Editor/TimelineTestScene.cs index 40c0fedc9e..7081eb3af5 100644 --- a/osu.Game.Tests/Visual/Editor/TimelineTestScene.cs +++ b/osu.Game.Tests/Visual/Editor/TimelineTestScene.cs @@ -13,7 +13,6 @@ using osu.Framework.Timing; using osu.Game.Beatmaps; using osu.Game.Graphics.UserInterface; using osu.Game.Rulesets.Edit; -using osu.Game.Rulesets.Objects; using osu.Game.Screens.Edit; using osu.Game.Screens.Edit.Compose.Components.Timeline; using osuTK; @@ -38,7 +37,9 @@ namespace osu.Game.Tests.Visual.Editor { Beatmap.Value = new WaveformTestBeatmap(audio); - var editorBeatmap = new EditorBeatmap((Beatmap)Beatmap.Value.Beatmap); + var playable = Beatmap.Value.GetPlayableBeatmap(Beatmap.Value.BeatmapInfo.Ruleset); + + var editorBeatmap = new EditorBeatmap(playable); Dependencies.Cache(editorBeatmap); Dependencies.CacheAs(editorBeatmap); diff --git a/osu.Game.Tests/WaveformTestBeatmap.cs b/osu.Game.Tests/WaveformTestBeatmap.cs index b7d7bb1ee1..df6394ed34 100644 --- a/osu.Game.Tests/WaveformTestBeatmap.cs +++ b/osu.Game.Tests/WaveformTestBeatmap.cs @@ -11,6 +11,8 @@ using osu.Game.Beatmaps; using osu.Game.Beatmaps.Formats; using osu.Game.IO; using osu.Game.IO.Archives; +using osu.Game.Rulesets.Catch; +using osu.Game.Tests.Beatmaps; using osu.Game.Tests.Resources; namespace osu.Game.Tests @@ -20,11 +22,18 @@ namespace osu.Game.Tests ///
    public class WaveformTestBeatmap : WorkingBeatmap { + private readonly Beatmap beatmap; private readonly ITrackStore trackStore; public WaveformTestBeatmap(AudioManager audioManager) - : base(new BeatmapInfo(), audioManager) + : this(audioManager, new WaveformBeatmap()) { + } + + public WaveformTestBeatmap(AudioManager audioManager, Beatmap beatmap) + : base(beatmap.BeatmapInfo, audioManager) + { + this.beatmap = beatmap; trackStore = audioManager.GetTrackStore(getZipReader()); } @@ -34,11 +43,11 @@ namespace osu.Game.Tests trackStore?.Dispose(); } - private Stream getStream() => TestResources.GetTestBeatmapStream(); + private static Stream getStream() => TestResources.GetTestBeatmapStream(); - private ZipArchiveReader getZipReader() => new ZipArchiveReader(getStream()); + private static ZipArchiveReader getZipReader() => new ZipArchiveReader(getStream()); - protected override IBeatmap GetBeatmap() => createTestBeatmap(); + protected override IBeatmap GetBeatmap() => beatmap; protected override Texture GetBackground() => null; @@ -57,10 +66,16 @@ namespace osu.Game.Tests } } - private Beatmap createTestBeatmap() + private class WaveformBeatmap : TestBeatmap { - using (var reader = getZipReader()) + public WaveformBeatmap() + : base(new CatchRuleset().RulesetInfo) { + } + + protected override Beatmap CreateBeatmap() + { + using (var reader = getZipReader()) using (var beatmapStream = reader.GetStream(reader.Filenames.First(f => f.EndsWith(".osu")))) using (var beatmapReader = new LineBufferedReader(beatmapStream)) return Decoder.GetDecoder(beatmapReader).Decode(beatmapReader); diff --git a/osu.Game/Tests/Beatmaps/TestBeatmap.cs b/osu.Game/Tests/Beatmaps/TestBeatmap.cs index d6f92ba086..96e3c037a3 100644 --- a/osu.Game/Tests/Beatmaps/TestBeatmap.cs +++ b/osu.Game/Tests/Beatmaps/TestBeatmap.cs @@ -15,7 +15,7 @@ namespace osu.Game.Tests.Beatmaps { public TestBeatmap(RulesetInfo ruleset) { - var baseBeatmap = createTestBeatmap(); + var baseBeatmap = CreateBeatmap(); BeatmapInfo = baseBeatmap.BeatmapInfo; ControlPointInfo = baseBeatmap.ControlPointInfo; @@ -37,6 +37,8 @@ namespace osu.Game.Tests.Beatmaps }; } + protected virtual Beatmap CreateBeatmap() => createTestBeatmap(); + private static Beatmap createTestBeatmap() { using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(test_beatmap_data))) From d56accaef1ab193f33d214a16e53a56a8e22be49 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 5 Feb 2020 15:32:51 +0900 Subject: [PATCH 1314/1829] Disallow negative / zero repeat counts (and fix off-by-one) --- .../Components/Timeline/TimelineHitObjectBlueprint.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs index 2ac35534f4..b2da1577d0 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs @@ -119,7 +119,14 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline switch (hitObject) { case IHasRepeats repeatHitObject: - repeatHitObject.RepeatCount = (int)((time - hitObject.StartTime) / (repeatHitObject.Duration / repeatHitObject.RepeatCount)); + // find the number of repeats which can fit in the requested time. + var lengthOfOneRepeat = repeatHitObject.Duration / (repeatHitObject.RepeatCount + 1); + var proposedCount = (int)((time - hitObject.StartTime) / lengthOfOneRepeat) - 1; + + if (proposedCount == repeatHitObject.RepeatCount || proposedCount < 0) + return; + + repeatHitObject.RepeatCount = proposedCount; break; case IHasEndTime endTimeHitObject: From cef45afbc85eb24bad74f44d1e8d4c8d16913b86 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 5 Feb 2020 15:33:04 +0900 Subject: [PATCH 1315/1829] Add a simple hover state --- .../Timeline/TimelineHitObjectBlueprint.cs | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs index b2da1577d0..8a6dd40bde 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs @@ -23,6 +23,8 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline private readonly Container extensionBar; + protected override bool ShouldBeConsideredForInput(Drawable child) => true; + [UsedImplicitly] private readonly Bindable startTime; @@ -105,6 +107,45 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline }; } + protected override bool OnHover(HoverEvent e) + { + updateState(); + + return base.OnHover(e); + } + + protected override void OnHoverLost(HoverLostEvent e) + { + updateState(); + base.OnHoverLost(e); + } + + private bool hasMouseDown; + + protected override bool OnMouseDown(MouseDownEvent e) + { + hasMouseDown = true; + updateState(); + return true; + } + + protected override void OnMouseUp(MouseUpEvent e) + { + hasMouseDown = false; + updateState(); + base.OnMouseUp(e); + } + + private void updateState() + { + if (IsHovered || hasMouseDown) + Colour = Color4.Orange; + else + { + Colour = Color4.White; + } + } + protected override bool OnDragStart(DragStartEvent e) => true; [Resolved] From 3d42973764434fbfe5359996e9edb270a56c759d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 5 Feb 2020 15:58:35 +0900 Subject: [PATCH 1316/1829] Allow scrolling via drag while dragging a hold note handle --- .../Timeline/TimelineBlueprintContainer.cs | 40 ++++++++++++------- .../Timeline/TimelineHitObjectBlueprint.cs | 16 +++++++- 2 files changed, 41 insertions(+), 15 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs index 3b9cb1df24..9f3d776e5c 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs @@ -49,20 +49,9 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline protected override void OnDrag(DragEvent e) { - if (timeline != null) - { - var timelineQuad = timeline.ScreenSpaceDrawQuad; - var mouseX = e.ScreenSpaceMousePosition.X; - - // scroll if in a drag and dragging outside visible extents - if (mouseX > timelineQuad.TopRight.X) - timeline.ScrollBy((float)((mouseX - timelineQuad.TopRight.X) / 10 * Clock.ElapsedFrameTime)); - else if (mouseX < timelineQuad.TopLeft.X) - timeline.ScrollBy((float)((mouseX - timelineQuad.TopLeft.X) / 10 * Clock.ElapsedFrameTime)); - } + handleScrollViaDrag(e); base.OnDrag(e); - lastDragEvent = e; } protected override void OnDragEnd(DragEndEvent e) @@ -74,7 +63,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline protected override void Update() { // trigger every frame so drags continue to update selection while playback is scrolling the timeline. - if (IsDragged) + if (lastDragEvent != null) OnDrag(lastDragEvent); base.Update(); @@ -82,10 +71,33 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline protected override SelectionHandler CreateSelectionHandler() => new TimelineSelectionHandler(); - protected override SelectionBlueprint CreateBlueprintFor(HitObject hitObject) => new TimelineHitObjectBlueprint(hitObject); + protected override SelectionBlueprint CreateBlueprintFor(HitObject hitObject) => new TimelineHitObjectBlueprint(hitObject) + { + OnDragHandled = handleScrollViaDrag + }; protected override DragBox CreateDragBox(Action performSelect) => new TimelineDragBox(performSelect); + private void handleScrollViaDrag(DragEvent e) + { + lastDragEvent = e; + + if (lastDragEvent == null) + return; + + if (timeline != null) + { + var timelineQuad = timeline.ScreenSpaceDrawQuad; + var mouseX = e.ScreenSpaceMousePosition.X; + + // scroll if in a drag and dragging outside visible extents + if (mouseX > timelineQuad.TopRight.X) + timeline.ScrollBy((float)((mouseX - timelineQuad.TopRight.X) / 10 * Clock.ElapsedFrameTime)); + else if (mouseX < timelineQuad.TopLeft.X) + timeline.ScrollBy((float)((mouseX - timelineQuad.TopLeft.X) / 10 * Clock.ElapsedFrameTime)); + } + } + internal class TimelineSelectionHandler : SelectionHandler { // for now we always allow movement. snapping is provided by the Timeline's "distance" snap implementation diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs index 8a6dd40bde..3de1cd3a4c 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.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 JetBrains.Annotations; using osu.Framework.Allocation; using osu.Framework.Bindables; @@ -28,6 +29,8 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline [UsedImplicitly] private readonly Bindable startTime; + public Action OnDragHandled; + public const float THICKNESS = 5; private const float circle_size = 16; @@ -78,7 +81,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline RelativeSizeAxes = Axes.Both, } }, - new DragBar(hitObject), + new DragBar(hitObject) { OnDragHandled = e => OnDragHandled?.Invoke(e) } }); } } @@ -90,6 +93,8 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline [Resolved] private Timeline timeline { get; set; } + public Action OnDragHandled; + public DragBar(HitObject hitObject) { this.hitObject = hitObject; @@ -155,6 +160,8 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline { base.OnDrag(e); + OnDragHandled?.Invoke(e); + var time = timeline.GetTimeFromScreenSpacePosition(e.ScreenSpaceMousePosition); switch (hitObject) @@ -177,6 +184,13 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline beatmap.UpdateHitObject(hitObject); } + + protected override void OnDragEnd(DragEndEvent e) + { + base.OnDragEnd(e); + + OnDragHandled?.Invoke(null); + } } protected override void Update() From 98ab1f986272e89c0d092ec5cd01b726b74a4998 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 5 Feb 2020 16:35:07 +0900 Subject: [PATCH 1317/1829] Fix negative spinners --- .../Components/Timeline/TimelineHitObjectBlueprint.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs index 3de1cd3a4c..5a15cb42fa 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs @@ -156,6 +156,9 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline [Resolved] private EditorBeatmap beatmap { get; set; } + [Resolved] + private IBeatSnapProvider beatSnapProvider { get; set; } + protected override void OnDrag(DragEvent e) { base.OnDrag(e); @@ -178,7 +181,12 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline break; case IHasEndTime endTimeHitObject: - endTimeHitObject.EndTime = time; + var snappedTime = beatSnapProvider.SnapTime(time); + + if (endTimeHitObject.EndTime == snappedTime || snappedTime <= hitObject.StartTime) + return; + + endTimeHitObject.EndTime = snappedTime; break; } From cb30f463fb670d801a54044c6326f7b96e8a73ac Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 5 Feb 2020 12:48:29 +0300 Subject: [PATCH 1318/1829] Update spotlight info based on selected one --- .../API/Requests/Responses/APISpotlight.cs | 3 +++ .../Rankings/RankingsOverlayHeader.cs | 10 +++++----- .../Overlays/Rankings/SpotlightSelector.cs | 19 +++++++++---------- osu.Game/Overlays/RankingsOverlay.cs | 10 +++++++--- 4 files changed, 24 insertions(+), 18 deletions(-) diff --git a/osu.Game/Online/API/Requests/Responses/APISpotlight.cs b/osu.Game/Online/API/Requests/Responses/APISpotlight.cs index 3a002e57b2..4f63ebe3df 100644 --- a/osu.Game/Online/API/Requests/Responses/APISpotlight.cs +++ b/osu.Game/Online/API/Requests/Responses/APISpotlight.cs @@ -26,6 +26,9 @@ namespace osu.Game.Online.API.Requests.Responses [JsonProperty(@"end_date")] public DateTimeOffset EndDate; + [JsonProperty(@"participant_count")] + public int? Participants; + public override string ToString() => Name; } } diff --git a/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs b/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs index 41722034b6..5c78879b26 100644 --- a/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs +++ b/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs @@ -20,8 +20,8 @@ namespace osu.Game.Overlays.Rankings public IEnumerable Spotlights { - get => spotlightSelector.Spotlights; - set => spotlightSelector.Spotlights = value; + get => SpotlightSelector.Spotlights; + set => SpotlightSelector.Spotlights = value; } protected override ScreenTitle CreateTitle() => new RankingsTitle @@ -34,7 +34,7 @@ namespace osu.Game.Overlays.Rankings Current = Ruleset }; - private SpotlightSelector spotlightSelector; + public SpotlightSelector SpotlightSelector; protected override Drawable CreateContent() => new FillFlowContainer { @@ -47,7 +47,7 @@ namespace osu.Game.Overlays.Rankings { Current = Country }, - spotlightSelector = new SpotlightSelector + SpotlightSelector = new SpotlightSelector { Current = { BindTarget = Spotlight } } @@ -61,7 +61,7 @@ namespace osu.Game.Overlays.Rankings } private void onCurrentChanged(ValueChangedEvent scope) => - spotlightSelector.FadeTo(scope.NewValue == RankingsScope.Spotlights ? 1 : 0, 200, Easing.OutQuint); + SpotlightSelector.FadeTo(scope.NewValue == RankingsScope.Spotlights ? 1 : 0, 200, Easing.OutQuint); private class RankingsTitle : ScreenTitle { diff --git a/osu.Game/Overlays/Rankings/SpotlightSelector.cs b/osu.Game/Overlays/Rankings/SpotlightSelector.cs index e34c01113e..bd2b7d9b21 100644 --- a/osu.Game/Overlays/Rankings/SpotlightSelector.cs +++ b/osu.Game/Overlays/Rankings/SpotlightSelector.cs @@ -38,6 +38,8 @@ namespace osu.Game.Overlays.Rankings private readonly InfoColumn startDateColumn; private readonly InfoColumn endDateColumn; + private readonly InfoColumn mapCountColumn; + private readonly InfoColumn participantsColumn; public SpotlightSelector() { @@ -75,6 +77,8 @@ namespace osu.Game.Overlays.Rankings { startDateColumn = new InfoColumn(@"Start Date"), endDateColumn = new InfoColumn(@"End Date"), + mapCountColumn = new InfoColumn(@"Map Count"), + participantsColumn = new InfoColumn(@"Participants") } } } @@ -88,17 +92,12 @@ namespace osu.Game.Overlays.Rankings background.Colour = colourProvider.Dark3; } - protected override void LoadComplete() + public void ShowInfo(APISpotlight spotlight, int mapCount) { - base.LoadComplete(); - - Current.BindValueChanged(onCurrentChanged); - } - - private void onCurrentChanged(ValueChangedEvent spotlight) - { - startDateColumn.Value = dateToString(spotlight.NewValue.StartDate); - endDateColumn.Value = dateToString(spotlight.NewValue.EndDate); + startDateColumn.Value = dateToString(spotlight.StartDate); + endDateColumn.Value = dateToString(spotlight.EndDate); + mapCountColumn.Value = mapCount.ToString(); + participantsColumn.Value = spotlight.Participants?.ToString("N0"); } private string dateToString(DateTimeOffset date) => date.ToString("yyyy-MM-dd"); diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index 2a4bc28b18..ba0cc29d6d 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -36,6 +36,7 @@ namespace osu.Game.Overlays private APIRequest lastRequest; private CancellationTokenSource cancellationToken; + private GetSpotlightsRequest spotlightsRequest; [Resolved] private IAPIProvider api { get; set; } @@ -115,6 +116,8 @@ namespace osu.Game.Overlays Scope.BindValueChanged(_ => { + spotlightsRequest?.Cancel(); + // country filtering is only valid for performance scope. if (Scope.Value != RankingsScope.Performance) Country.Value = null; @@ -148,9 +151,9 @@ namespace osu.Game.Overlays private void getSpotlights() { loading.Show(); - var request = new GetSpotlightsRequest(); - request.Success += response => header.Spotlights = response.Spotlights; - api.Queue(request); + spotlightsRequest = new GetSpotlightsRequest(); + spotlightsRequest.Success += response => header.Spotlights = response.Spotlights; + api.Queue(spotlightsRequest); } private void loadNewContent() @@ -214,6 +217,7 @@ namespace osu.Game.Overlays return new CountriesTable(1, countryRequest.Result.Countries); case GetSpotlightRankingsRequest spotlightRequest: + header.SpotlightSelector.ShowInfo(spotlightRequest.Result.Spotlight, spotlightRequest.Result.BeatmapSets.Count); return new FillFlowContainer { AutoSizeAxes = Axes.Y, From 6708e271acd04336255c8c3aefa3e3ea8c2f17e7 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 5 Feb 2020 13:01:50 +0300 Subject: [PATCH 1319/1829] Adjust SpotlightSelector animations --- .../Rankings/RankingsOverlayHeader.cs | 2 +- .../Overlays/Rankings/SpotlightSelector.cs | 89 ++++++++++++------- 2 files changed, 56 insertions(+), 35 deletions(-) diff --git a/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs b/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs index 5c78879b26..538ae112b5 100644 --- a/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs +++ b/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs @@ -61,7 +61,7 @@ namespace osu.Game.Overlays.Rankings } private void onCurrentChanged(ValueChangedEvent scope) => - SpotlightSelector.FadeTo(scope.NewValue == RankingsScope.Spotlights ? 1 : 0, 200, Easing.OutQuint); + SpotlightSelector.State.Value = scope.NewValue == RankingsScope.Spotlights ? Visibility.Visible : Visibility.Hidden; private class RankingsTitle : ScreenTitle { diff --git a/osu.Game/Overlays/Rankings/SpotlightSelector.cs b/osu.Game/Overlays/Rankings/SpotlightSelector.cs index bd2b7d9b21..8af6c0bb3b 100644 --- a/osu.Game/Overlays/Rankings/SpotlightSelector.cs +++ b/osu.Game/Overlays/Rankings/SpotlightSelector.cs @@ -17,8 +17,11 @@ using osu.Framework.Graphics.UserInterface; namespace osu.Game.Overlays.Rankings { - public class SpotlightSelector : CompositeDrawable, IHasCurrentValue + public class SpotlightSelector : VisibilityContainer, IHasCurrentValue { + private const int height = 100; + private const int duration = 200; + private readonly Box background; private readonly SpotlightsDropdown dropdown; @@ -36,54 +39,60 @@ namespace osu.Game.Overlays.Rankings set => dropdown.Items = value; } + protected override bool StartHidden => true; + private readonly InfoColumn startDateColumn; private readonly InfoColumn endDateColumn; private readonly InfoColumn mapCountColumn; private readonly InfoColumn participantsColumn; + private readonly Container content; public SpotlightSelector() { RelativeSizeAxes = Axes.X; - Height = 100; - - InternalChildren = new Drawable[] + Add(content = new Container { - background = new Box + Height = height, + RelativeSizeAxes = Axes.X, + Children = new Drawable[] { - RelativeSizeAxes = Axes.Both, - }, - new Container - { - RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding { Horizontal = UserProfileOverlay.CONTENT_X_MARGIN, Vertical = 10 }, - Children = new Drawable[] + background = new Box { - dropdown = new SpotlightsDropdown + RelativeSizeAxes = Axes.Both, + }, + new Container + { + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Horizontal = UserProfileOverlay.CONTENT_X_MARGIN, Vertical = 10 }, + Children = new Drawable[] { - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - RelativeSizeAxes = Axes.X, - Current = Current, - Depth = -float.MaxValue - }, - new FillFlowContainer - { - Anchor = Anchor.BottomRight, - Origin = Anchor.BottomRight, - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Spacing = new Vector2(15, 0), - Children = new Drawable[] + dropdown = new SpotlightsDropdown { - startDateColumn = new InfoColumn(@"Start Date"), - endDateColumn = new InfoColumn(@"End Date"), - mapCountColumn = new InfoColumn(@"Map Count"), - participantsColumn = new InfoColumn(@"Participants") + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, + RelativeSizeAxes = Axes.X, + Current = Current, + Depth = -float.MaxValue + }, + new FillFlowContainer + { + Anchor = Anchor.BottomRight, + Origin = Anchor.BottomRight, + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(15, 0), + Children = new Drawable[] + { + startDateColumn = new InfoColumn(@"Start Date"), + endDateColumn = new InfoColumn(@"End Date"), + mapCountColumn = new InfoColumn(@"Map Count"), + participantsColumn = new InfoColumn(@"Participants") + } } } - } - }, - }; + }, + } + }); } [BackgroundDependencyLoader] @@ -100,6 +109,18 @@ namespace osu.Game.Overlays.Rankings participantsColumn.Value = spotlight.Participants?.ToString("N0"); } + protected override void PopIn() + { + this.ResizeHeightTo(height, duration, Easing.OutQuint); + content.FadeIn(duration, Easing.OutQuint); + } + + protected override void PopOut() + { + this.ResizeHeightTo(0, duration, Easing.OutQuint); + content.FadeOut(duration, Easing.OutQuint); + } + private string dateToString(DateTimeOffset date) => date.ToString("yyyy-MM-dd"); private class InfoColumn : FillFlowContainer From 00e010a06151a085636dcdfa5fbae2167470780e Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 5 Feb 2020 13:11:02 +0300 Subject: [PATCH 1320/1829] Add visibility test for SpotlightSelector --- .../Visual/Online/TestSceneRankingsSpotlightSelector.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs index e46c8a4a71..f27ab1e775 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs @@ -35,6 +35,12 @@ namespace osu.Game.Tests.Visual.Online Add(selector = new SpotlightSelector()); } + [Test] + public void TestVisibility() + { + AddStep("Toggle Visibility", selector.ToggleVisibility); + } + [Test] public void TestLocalSpotlights() { From f5edad16e67d3a9151dd0118f11d5b48bf4c2e91 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 5 Feb 2020 19:43:13 +0900 Subject: [PATCH 1321/1829] Improve visuals --- .../Timeline/TimelineHitObjectBlueprint.cs | 184 ++++++++++++------ 1 file changed, 125 insertions(+), 59 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs index 5a15cb42fa..b46a373818 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs @@ -2,14 +2,17 @@ // See the LICENCE file in the repository root for full licence text. using System; +using System.Collections.Generic; using JetBrains.Annotations; using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Effects; using osu.Framework.Graphics.Primitives; using osu.Framework.Graphics.Shapes; using osu.Framework.Input.Events; +using osu.Game.Graphics.UserInterface; using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Objects.Types; @@ -22,8 +25,6 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline { private readonly Circle circle; - private readonly Container extensionBar; - protected override bool ShouldBeConsideredForInput(Drawable child) => true; [UsedImplicitly] @@ -31,11 +32,20 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline public Action OnDragHandled; - public const float THICKNESS = 5; + private readonly DragBar dragBar; + + private readonly List shadowComponents = new List(); + + private const float thickness = 5; + + private const float shadow_radius = 5; private const float circle_size = 16; - public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => base.ReceivePositionalInputAt(screenSpacePos) || circle.ReceivePositionalInputAt(screenSpacePos); + public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => + base.ReceivePositionalInputAt(screenSpacePos) || + circle.ReceivePositionalInputAt(screenSpacePos) || + dragBar?.ReceivePositionalInputAt(screenSpacePos) == true; public TimelineHitObjectBlueprint(HitObject hitObject) : base(hitObject) @@ -51,7 +61,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; - AddInternal(circle = new Circle + circle = new Circle { Size = new Vector2(circle_size), Anchor = Anchor.CentreLeft, @@ -59,34 +69,126 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline RelativePositionAxes = Axes.X, AlwaysPresent = true, Colour = Color4.White, - BorderColour = Color4.Black, - BorderThickness = THICKNESS, - }); + EdgeEffect = new EdgeEffectParameters + { + Type = EdgeEffectType.Shadow, + Radius = shadow_radius, + Colour = Color4.Black + }, + }; + + shadowComponents.Add(circle); if (hitObject is IHasEndTime) { + DragBar dragBarUnderlay; + Container extensionBar; + AddRangeInternal(new Drawable[] { extensionBar = new Container { - CornerRadius = 2, Masking = true, - Size = new Vector2(1, THICKNESS), + Size = new Vector2(1, thickness), Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, RelativePositionAxes = Axes.X, RelativeSizeAxes = Axes.X, + EdgeEffect = new EdgeEffectParameters + { + Type = EdgeEffectType.Shadow, + Radius = shadow_radius, + Colour = Color4.Black + }, Child = new Box { RelativeSizeAxes = Axes.Both, } }, - new DragBar(hitObject) { OnDragHandled = e => OnDragHandled?.Invoke(e) } + circle, + // only used for drawing the shadow + dragBarUnderlay = new DragBar(null), + // cover up the shadow on the join + new Box + { + Height = thickness, + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + RelativeSizeAxes = Axes.X, + }, + dragBar = new DragBar(hitObject) { OnDragHandled = e => OnDragHandled?.Invoke(e) }, }); + + shadowComponents.Add(dragBarUnderlay); + shadowComponents.Add(extensionBar); + } + else + { + AddInternal(circle); + } + + updateShadows(); + } + + protected override void Update() + { + base.Update(); + + // no bindable so we perform this every update + Width = (float)(HitObject.GetEndTime() - HitObject.StartTime); + } + + protected override void OnSelected() + { + updateShadows(); + } + + private void updateShadows() + { + foreach (var s in shadowComponents) + { + if (State == SelectionState.Selected) + { + s.EdgeEffect = new EdgeEffectParameters + { + Type = EdgeEffectType.Shadow, + Radius = shadow_radius / 2, + Colour = Color4.Orange, + }; + } + else + { + s.EdgeEffect = new EdgeEffectParameters + { + Type = EdgeEffectType.Shadow, + Radius = shadow_radius, + Colour = State == SelectionState.Selected ? Color4.Orange : Color4.Black + }; + } } } - public class DragBar : CompositeDrawable + protected override void OnDeselected() + { + updateShadows(); + } + + public override Quad SelectionQuad + { + get + { + // correctly include the circle in the selection quad region, as it is usually outside the blueprint itself. + var leftQuad = circle.ScreenSpaceDrawQuad; + var rightQuad = dragBar?.ScreenSpaceDrawQuad ?? ScreenSpaceDrawQuad; + + return new Quad(leftQuad.TopLeft, Vector2.ComponentMax(rightQuad.TopRight, leftQuad.TopRight), + leftQuad.BottomLeft, Vector2.ComponentMax(rightQuad.BottomRight, leftQuad.BottomRight)); + } + } + + public override Vector2 SelectionPoint => ScreenSpaceDrawQuad.TopLeft; + + public class DragBar : Container { private readonly HitObject hitObject; @@ -95,20 +197,26 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline public Action OnDragHandled; + public override bool HandlePositionalInput => hitObject != null; + public DragBar(HitObject hitObject) { this.hitObject = hitObject; CornerRadius = 2; Masking = true; - Size = new Vector2(THICKNESS, 1.5f); + Size = new Vector2(5, 1); Anchor = Anchor.CentreRight; - Origin = Anchor.CentreRight; + Origin = Anchor.Centre; RelativePositionAxes = Axes.X; RelativeSizeAxes = Axes.Y; - InternalChild = new Box + + InternalChildren = new Drawable[] { - RelativeSizeAxes = Axes.Both, + new Box + { + RelativeSizeAxes = Axes.Both, + } }; } @@ -143,12 +251,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline private void updateState() { - if (IsHovered || hasMouseDown) - Colour = Color4.Orange; - else - { - Colour = Color4.White; - } + Colour = IsHovered || hasMouseDown ? Color4.OrangeRed : Color4.White; } protected override bool OnDragStart(DragStartEvent e) => true; @@ -200,42 +303,5 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline OnDragHandled?.Invoke(null); } } - - protected override void Update() - { - base.Update(); - - // no bindable so we perform this every update - Width = (float)(HitObject.GetEndTime() - HitObject.StartTime); - } - - protected override void OnSelected() - { - circle.BorderColour = Color4.Orange; - if (extensionBar != null) - extensionBar.BorderColour = Color4.Orange; - } - - protected override void OnDeselected() - { - circle.BorderColour = Color4.Black; - if (extensionBar != null) - extensionBar.BorderColour = Color4.Black; - } - - public override Quad SelectionQuad - { - get - { - // correctly include the circle in the selection quad region, as it is usually outside the blueprint itself. - var circleQuad = circle.ScreenSpaceDrawQuad; - var actualQuad = ScreenSpaceDrawQuad; - - return new Quad(circleQuad.TopLeft, Vector2.ComponentMax(actualQuad.TopRight, circleQuad.TopRight), - circleQuad.BottomLeft, Vector2.ComponentMax(actualQuad.BottomRight, circleQuad.BottomRight)); - } - } - - public override Vector2 SelectionPoint => ScreenSpaceDrawQuad.TopLeft; } } From f4ee281dd6474552d935bda91234daf6c575d5ba Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 5 Feb 2020 16:15:55 +0100 Subject: [PATCH 1322/1829] Add optional decimal place --- osu.Game/Overlays/BeatmapSet/SuccessRate.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/SuccessRate.cs b/osu.Game/Overlays/BeatmapSet/SuccessRate.cs index dac750dacf..15216b6e69 100644 --- a/osu.Game/Overlays/BeatmapSet/SuccessRate.cs +++ b/osu.Game/Overlays/BeatmapSet/SuccessRate.cs @@ -42,7 +42,7 @@ namespace osu.Game.Overlays.BeatmapSet int playCount = beatmap?.OnlineInfo?.PlayCount ?? 0; var rate = playCount != 0 ? (float)passCount / playCount : 0; - successPercent.Text = rate.ToString("0%"); + successPercent.Text = rate.ToString("0.#%"); successRate.Length = rate; percentContainer.ResizeWidthTo(successRate.Length, 250, Easing.InOutCubic); From 76037e4ffddab6a219219b8a909209dcb06a002f Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 5 Feb 2020 16:31:14 +0100 Subject: [PATCH 1323/1829] Recolour ranked status pill --- .../Beatmaps/Drawables/BeatmapSetOnlineStatusPill.cs | 9 ++++++++- osu.Game/Overlays/BeatmapSet/Header.cs | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/osu.Game/Beatmaps/Drawables/BeatmapSetOnlineStatusPill.cs b/osu.Game/Beatmaps/Drawables/BeatmapSetOnlineStatusPill.cs index 351e5df17a..f6e03d40ff 100644 --- a/osu.Game/Beatmaps/Drawables/BeatmapSetOnlineStatusPill.cs +++ b/osu.Game/Beatmaps/Drawables/BeatmapSetOnlineStatusPill.cs @@ -13,6 +13,7 @@ namespace osu.Game.Beatmaps.Drawables public class BeatmapSetOnlineStatusPill : CircularContainer { private readonly OsuSpriteText statusText; + private readonly Box background; private BeatmapSetOnlineStatus status; @@ -43,6 +44,12 @@ namespace osu.Game.Beatmaps.Drawables set => statusText.Padding = value; } + public Color4 BackgroundColour + { + get => background.Colour; + set => background.Colour = value; + } + public BeatmapSetOnlineStatusPill() { AutoSizeAxes = Axes.Both; @@ -50,7 +57,7 @@ namespace osu.Game.Beatmaps.Drawables Children = new Drawable[] { - new Box + background = new Box { RelativeSizeAxes = Axes.Both, Colour = Color4.Black, diff --git a/osu.Game/Overlays/BeatmapSet/Header.cs b/osu.Game/Overlays/BeatmapSet/Header.cs index 9f79b92cb6..1b111ced1f 100644 --- a/osu.Game/Overlays/BeatmapSet/Header.cs +++ b/osu.Game/Overlays/BeatmapSet/Header.cs @@ -218,6 +218,7 @@ namespace osu.Game.Overlays.BeatmapSet private void load(OverlayColourProvider colourProvider) { coverGradient.Colour = ColourInfo.GradientVertical(colourProvider.Background6.Opacity(0.3f), colourProvider.Background6.Opacity(0.8f)); + onlineStatusPill.BackgroundColour = colourProvider.Background6; State.BindValueChanged(_ => updateDownloadButtons()); From e1e1c1a11af6a8397b43d250d0fba0edcb0268b2 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 5 Feb 2020 16:34:39 +0100 Subject: [PATCH 1324/1829] Match osu-web display accuracy Decided to change this only locally instead of modifying FormatAccuracy which would affect everywhere else in the game as well. --- osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs index f04477d911..9c71cabfa6 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs @@ -120,7 +120,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores new OsuSpriteText { Margin = new MarginPadding { Right = horizontal_inset }, - Text = score.DisplayAccuracy, + Text = $@"{score.Accuracy:0.00%}", Font = OsuFont.GetFont(size: text_size), Colour = score.Accuracy == 1 ? highAccuracyColour : Color4.White }, From fa3934ddb474b605b3147a364f43ce968984f7b5 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 5 Feb 2020 17:16:20 +0100 Subject: [PATCH 1325/1829] Match osu-web button description --- osu.Game/Overlays/BeatmapSet/Buttons/HeaderDownloadButton.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Buttons/HeaderDownloadButton.cs b/osu.Game/Overlays/BeatmapSet/Buttons/HeaderDownloadButton.cs index e0360c6312..5ed15cecd5 100644 --- a/osu.Game/Overlays/BeatmapSet/Buttons/HeaderDownloadButton.cs +++ b/osu.Game/Overlays/BeatmapSet/Buttons/HeaderDownloadButton.cs @@ -150,7 +150,7 @@ namespace osu.Game.Overlays.BeatmapSet.Buttons }, new OsuSpriteText { - Text = BeatmapSet.Value.OnlineInfo.HasVideo && noVideo ? "without Video" : string.Empty, + Text = BeatmapSet.Value.OnlineInfo.HasVideo ? (noVideo ? "without Video" : "with Video") : string.Empty, Font = OsuFont.GetFont(size: 11, weight: FontWeight.Bold) }, }; From e79ba9a1299fc54728d9762af30e5e38a02f0e4b Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 5 Feb 2020 17:41:57 +0100 Subject: [PATCH 1326/1829] Add alwaysShowDecimals param to FormatAccuracy This allows us to specify whether we want it to show decimal places if accuracy is 100%. --- osu.Game/Utils/FormatUtils.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game/Utils/FormatUtils.cs b/osu.Game/Utils/FormatUtils.cs index b3758b3375..f0b8b470f1 100644 --- a/osu.Game/Utils/FormatUtils.cs +++ b/osu.Game/Utils/FormatUtils.cs @@ -7,18 +7,18 @@ namespace osu.Game.Utils { /// /// Turns the provided accuracy into a percentage with 2 decimal places. - /// Omits all decimal places when equals 1d. /// /// The accuracy to be formatted + /// Whether to show decimal places if equals 1d /// formatted accuracy in percentage - public static string FormatAccuracy(this double accuracy) => accuracy == 1 ? "100%" : $"{accuracy:0.00%}"; + public static string FormatAccuracy(this double accuracy, bool alwaysShowDecimals = false) => accuracy == 1 && !alwaysShowDecimals ? "100%" : $"{accuracy:0.00%}"; /// /// Turns the provided accuracy into a percentage with 2 decimal places. - /// Omits all decimal places when equals 100m. /// /// The accuracy to be formatted + /// Whether to show decimal places if equals 100m /// formatted accuracy in percentage - public static string FormatAccuracy(this decimal accuracy) => accuracy == 100 ? "100%" : $"{accuracy:0.00}%"; + public static string FormatAccuracy(this decimal accuracy, bool alwaysShowDecimals = false) => accuracy == 100 && !alwaysShowDecimals ? "100%" : $"{accuracy:0.00}%"; } } From 63df6b8da6255116b7c6fe25df8c5d09fe797cc3 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 5 Feb 2020 17:42:14 +0100 Subject: [PATCH 1327/1829] Change accuracy formatting method --- osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs index 9c71cabfa6..4d5bd84090 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs @@ -16,6 +16,7 @@ using osu.Game.Scoring; using osu.Game.Users.Drawables; using osuTK; using osuTK.Graphics; +using osu.Game.Utils; namespace osu.Game.Overlays.BeatmapSet.Scores { @@ -120,7 +121,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores new OsuSpriteText { Margin = new MarginPadding { Right = horizontal_inset }, - Text = $@"{score.Accuracy:0.00%}", + Text = score.Accuracy.FormatAccuracy(alwaysShowDecimals: true), Font = OsuFont.GetFont(size: text_size), Colour = score.Accuracy == 1 ? highAccuracyColour : Color4.White }, From c93d2c7f00240ec8126732e801c66389f041457b Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Wed, 5 Feb 2020 18:26:01 +0100 Subject: [PATCH 1328/1829] Adjust loading container corner radius --- osu.Game/Overlays/BeatmapSet/Scores/ScoresContainer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/ScoresContainer.cs b/osu.Game/Overlays/BeatmapSet/Scores/ScoresContainer.cs index 0a3b5d9457..8560232209 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/ScoresContainer.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/ScoresContainer.cs @@ -164,7 +164,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { RelativeSizeAxes = Axes.Both, Masking = true, - CornerRadius = 10, + CornerRadius = 5, Child = loading = new DimmedLoadingLayer(iconScale: 0.8f) { Alpha = 0, From 24e8a2bd6920cae69a957c807c60648bd9c7ea86 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 5 Feb 2020 22:59:01 +0300 Subject: [PATCH 1329/1829] Make SpotlightSelector.ShowInfo use the full rankings response --- osu.Game/Overlays/Rankings/SpotlightSelector.cs | 11 ++++++----- osu.Game/Overlays/RankingsOverlay.cs | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/osu.Game/Overlays/Rankings/SpotlightSelector.cs b/osu.Game/Overlays/Rankings/SpotlightSelector.cs index 8af6c0bb3b..8bf75b2357 100644 --- a/osu.Game/Overlays/Rankings/SpotlightSelector.cs +++ b/osu.Game/Overlays/Rankings/SpotlightSelector.cs @@ -14,6 +14,7 @@ using osuTK; using System; using System.Collections.Generic; using osu.Framework.Graphics.UserInterface; +using osu.Game.Online.API.Requests; namespace osu.Game.Overlays.Rankings { @@ -101,12 +102,12 @@ namespace osu.Game.Overlays.Rankings background.Colour = colourProvider.Dark3; } - public void ShowInfo(APISpotlight spotlight, int mapCount) + public void ShowInfo(GetSpotlightRankingsResponse response) { - startDateColumn.Value = dateToString(spotlight.StartDate); - endDateColumn.Value = dateToString(spotlight.EndDate); - mapCountColumn.Value = mapCount.ToString(); - participantsColumn.Value = spotlight.Participants?.ToString("N0"); + startDateColumn.Value = dateToString(response.Spotlight.StartDate); + endDateColumn.Value = dateToString(response.Spotlight.EndDate); + mapCountColumn.Value = response.BeatmapSets.Count.ToString(); + participantsColumn.Value = response.Spotlight.Participants?.ToString("N0"); } protected override void PopIn() diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index ba0cc29d6d..99e81eef15 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -217,7 +217,7 @@ namespace osu.Game.Overlays return new CountriesTable(1, countryRequest.Result.Countries); case GetSpotlightRankingsRequest spotlightRequest: - header.SpotlightSelector.ShowInfo(spotlightRequest.Result.Spotlight, spotlightRequest.Result.BeatmapSets.Count); + header.SpotlightSelector.ShowInfo(spotlightRequest.Result); return new FillFlowContainer { AutoSizeAxes = Axes.Y, From 4dd25b42aeee0fb158dcdb05ab128733332842f5 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 5 Feb 2020 23:00:42 +0300 Subject: [PATCH 1330/1829] Move spotlightsRequest to another place --- osu.Game/Overlays/RankingsOverlay.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index 99e81eef15..084c8b6e5a 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -36,7 +36,6 @@ namespace osu.Game.Overlays private APIRequest lastRequest; private CancellationTokenSource cancellationToken; - private GetSpotlightsRequest spotlightsRequest; [Resolved] private IAPIProvider api { get; set; } @@ -148,6 +147,8 @@ namespace osu.Game.Overlays Country.Value = requested; } + private GetSpotlightsRequest spotlightsRequest; + private void getSpotlights() { loading.Show(); From 7757a3a30bb7cfe33c0def5fe4489cddf7949796 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 5 Feb 2020 23:06:13 +0300 Subject: [PATCH 1331/1829] Move spotlight layout to it's own method --- osu.Game/Overlays/RankingsOverlay.cs | 52 ++++++++++++++++------------ 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index 084c8b6e5a..4fc94420a4 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -218,34 +218,40 @@ namespace osu.Game.Overlays return new CountriesTable(1, countryRequest.Result.Countries); case GetSpotlightRankingsRequest spotlightRequest: - header.SpotlightSelector.ShowInfo(spotlightRequest.Result); - return new FillFlowContainer - { - AutoSizeAxes = Axes.Y, - RelativeSizeAxes = Axes.X, - Direction = FillDirection.Vertical, - Spacing = new Vector2(0, 20), - Children = new Drawable[] - { - new ScoresTable(1, spotlightRequest.Result.Users), - new FillFlowContainer - { - AutoSizeAxes = Axes.Y, - RelativeSizeAxes = Axes.X, - Spacing = new Vector2(10), - Children = spotlightRequest.Result.BeatmapSets.Select(b => new DirectGridPanel(b.ToBeatmapSet(rulesets)) - { - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - }).ToList() - } - } - }; + return getSpotlightContent(spotlightRequest.Result); } return null; } + private Drawable getSpotlightContent(GetSpotlightRankingsResponse response) + { + header.SpotlightSelector.ShowInfo(response); + + return new FillFlowContainer + { + AutoSizeAxes = Axes.Y, + RelativeSizeAxes = Axes.X, + Direction = FillDirection.Vertical, + Spacing = new Vector2(0, 20), + Children = new Drawable[] + { + new ScoresTable(1, response.Users), + new FillFlowContainer + { + AutoSizeAxes = Axes.Y, + RelativeSizeAxes = Axes.X, + Spacing = new Vector2(10), + Children = response.BeatmapSets.Select(b => new DirectGridPanel(b.ToBeatmapSet(rulesets)) + { + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, + }).ToList() + } + } + }; + } + private void loadContent(Drawable content) { scrollFlow.ScrollToStart(); From 00edc7e66fd527d87f7ec2a80751544e863aec12 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 6 Feb 2020 12:12:52 +0900 Subject: [PATCH 1332/1829] Fix RoomsContainer test scene not displaying --- .../Multi/Lounge/Components/RoomsContainer.cs | 22 +++++-------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs b/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs index 607b081653..6ef0f6b6db 100644 --- a/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs +++ b/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs @@ -47,22 +47,13 @@ namespace osu.Game.Screens.Multi.Lounge.Components }; } - [BackgroundDependencyLoader] - private void load() - { - rooms.BindTo(roomManager.Rooms); - - rooms.ItemsAdded += addRooms; - rooms.ItemsRemoved += removeRooms; - - roomManager.RoomsUpdated += updateSorting; - - addRooms(rooms); - } - protected override void LoadComplete() { - filter?.BindValueChanged(f => Filter(f.NewValue), true); + rooms.ItemsAdded += addRooms; + rooms.ItemsRemoved += removeRooms; + roomManager.RoomsUpdated += updateSorting; + + rooms.BindTo(roomManager.Rooms); } public void Filter(FilterCriteria criteria) @@ -94,8 +85,7 @@ namespace osu.Game.Screens.Multi.Lounge.Components foreach (var r in rooms) roomFlow.Add(new DrawableRoom(r) { Action = () => selectRoom(r) }); - if (filter != null) - Filter(filter.Value); + Filter(filter?.Value); } private void removeRooms(IEnumerable rooms) From 7f0a134bc8c55ec7dac0dac6daf4c5e48ef6936c Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 6 Feb 2020 12:17:05 +0900 Subject: [PATCH 1333/1829] Bring test scene structure up-to-date --- .../Multiplayer/TestSceneLoungeRoomsContainer.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneLoungeRoomsContainer.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneLoungeRoomsContainer.cs index eb4dc909df..cb873fc3eb 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneLoungeRoomsContainer.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneLoungeRoomsContainer.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Linq; +using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; @@ -27,11 +28,11 @@ namespace osu.Game.Tests.Visual.Multiplayer [Cached(Type = typeof(IRoomManager))] private TestRoomManager roomManager = new TestRoomManager(); + private RoomsContainer container; + [BackgroundDependencyLoader] private void load() { - RoomsContainer container; - Child = container = new RoomsContainer { Anchor = Anchor.Centre, @@ -39,9 +40,18 @@ namespace osu.Game.Tests.Visual.Multiplayer Width = 0.5f, JoinRequested = joinRequested }; + } + + public override void SetUpSteps() + { + base.SetUpSteps(); AddStep("clear rooms", () => roomManager.Rooms.Clear()); + } + [Test] + public void TestBasicListChanges() + { AddStep("add rooms", () => { for (int i = 0; i < 3; i++) From 50c4e34c92091616053871ae652e11f10a7800e5 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 6 Feb 2020 11:56:09 +0900 Subject: [PATCH 1334/1829] Add ruleset to multiplayer filter criteria --- osu.Game/Screens/Multi/Lounge/Components/FilterControl.cs | 8 +++++++- .../Screens/Multi/Lounge/Components/FilterCriteria.cs | 3 +++ .../Screens/Multi/Lounge/Components/RoomsContainer.cs | 3 +++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Multi/Lounge/Components/FilterControl.cs b/osu.Game/Screens/Multi/Lounge/Components/FilterControl.cs index 29d41132a7..9f93afec9d 100644 --- a/osu.Game/Screens/Multi/Lounge/Components/FilterControl.cs +++ b/osu.Game/Screens/Multi/Lounge/Components/FilterControl.cs @@ -7,6 +7,7 @@ using osu.Framework.Bindables; using osu.Framework.Threading; using osu.Game.Graphics; using osu.Game.Overlays.SearchableList; +using osu.Game.Rulesets; using osuTK.Graphics; namespace osu.Game.Screens.Multi.Lounge.Components @@ -22,6 +23,9 @@ namespace osu.Game.Screens.Multi.Lounge.Components [Resolved(CanBeNull = true)] private Bindable filter { get; set; } + [Resolved] + private IBindable ruleset { get; set; } + public FilterControl() { DisplayStyleControl.Hide(); @@ -38,6 +42,7 @@ namespace osu.Game.Screens.Multi.Lounge.Components { base.LoadComplete(); + ruleset.BindValueChanged(_ => updateFilter()); Search.Current.BindValueChanged(_ => scheduleUpdateFilter()); Tabs.Current.BindValueChanged(_ => updateFilter(), true); } @@ -58,7 +63,8 @@ namespace osu.Game.Screens.Multi.Lounge.Components { SearchString = Search.Current.Value ?? string.Empty, PrimaryFilter = Tabs.Current.Value, - SecondaryFilter = DisplayStyleControl.Dropdown.Current.Value + SecondaryFilter = DisplayStyleControl.Dropdown.Current.Value, + Ruleset = ruleset.Value }; } } diff --git a/osu.Game/Screens/Multi/Lounge/Components/FilterCriteria.cs b/osu.Game/Screens/Multi/Lounge/Components/FilterCriteria.cs index 666bc44a8d..26d445e151 100644 --- a/osu.Game/Screens/Multi/Lounge/Components/FilterCriteria.cs +++ b/osu.Game/Screens/Multi/Lounge/Components/FilterCriteria.cs @@ -1,6 +1,8 @@ // 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.Rulesets; + namespace osu.Game.Screens.Multi.Lounge.Components { public class FilterCriteria @@ -8,5 +10,6 @@ namespace osu.Game.Screens.Multi.Lounge.Components public string SearchString; public PrimaryFilter PrimaryFilter; public SecondaryFilter SecondaryFilter; + public RulesetInfo Ruleset; } } diff --git a/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs b/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs index 6ef0f6b6db..f5e0e2bbee 100644 --- a/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs +++ b/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs @@ -65,6 +65,9 @@ namespace osu.Game.Screens.Multi.Lounge.Components else { bool matchingFilter = true; + + matchingFilter &= r.Room.Playlist.Any(i => i.Ruleset.Equals(criteria.Ruleset)); + matchingFilter &= r.FilterTerms.Any(term => term.IndexOf(criteria.SearchString, StringComparison.InvariantCultureIgnoreCase) >= 0); switch (criteria.SecondaryFilter) From 304a071e39578def381a4edc9b5c6638d2c9f613 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 6 Feb 2020 11:56:20 +0900 Subject: [PATCH 1335/1829] Remove leasing at a Multiplayer screen level --- osu.Game/Screens/Multi/Multiplayer.cs | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/osu.Game/Screens/Multi/Multiplayer.cs b/osu.Game/Screens/Multi/Multiplayer.cs index 9d6a459d14..72bf5a37e8 100644 --- a/osu.Game/Screens/Multi/Multiplayer.cs +++ b/osu.Game/Screens/Multi/Multiplayer.cs @@ -32,8 +32,6 @@ namespace osu.Game.Screens.Multi { public override bool CursorVisible => (screenStack.CurrentScreen as IMultiplayerSubScreen)?.CursorVisible ?? true; - public override bool DisallowExternalBeatmapRulesetChanges => true; - private readonly MultiplayerWaveContainer waves; private readonly OsuButton createButton; @@ -277,11 +275,7 @@ namespace osu.Game.Screens.Multi private void updateTrack(ValueChangedEvent _ = null) { - bool isMatch = screenStack.CurrentScreen is MatchSubScreen; - - Beatmap.Disabled = isMatch; - - if (isMatch) + if (screenStack.CurrentScreen is MatchSubScreen) { var track = Beatmap.Value?.Track; From a79d6ff27a68b6a9dd5b3abc901451b30dab3bd5 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 6 Feb 2020 11:59:33 +0900 Subject: [PATCH 1336/1829] Change transition to better handle mass filter cases --- osu.Game/Screens/Multi/Lounge/Components/DrawableRoom.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/osu.Game/Screens/Multi/Lounge/Components/DrawableRoom.cs b/osu.Game/Screens/Multi/Lounge/Components/DrawableRoom.cs index f6cbe300f3..d45dac1ae6 100644 --- a/osu.Game/Screens/Multi/Lounge/Components/DrawableRoom.cs +++ b/osu.Game/Screens/Multi/Lounge/Components/DrawableRoom.cs @@ -75,8 +75,13 @@ namespace osu.Game.Screens.Multi.Lounge.Components { matchingFilter = value; - if (IsLoaded) - this.FadeTo(MatchingFilter ? 1 : 0, 200); + if (!IsLoaded) + return; + + if (matchingFilter) + this.FadeIn(200); + else + Hide(); } } From 1dc7fc4a33aee7e68dcc25789892d49cb69caa2c Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 6 Feb 2020 12:26:14 +0900 Subject: [PATCH 1337/1829] Fix case where playlist is empty --- osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs b/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs index f5e0e2bbee..a5881cc2f7 100644 --- a/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs +++ b/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs @@ -66,7 +66,7 @@ namespace osu.Game.Screens.Multi.Lounge.Components { bool matchingFilter = true; - matchingFilter &= r.Room.Playlist.Any(i => i.Ruleset.Equals(criteria.Ruleset)); + matchingFilter &= r.Room.Playlist.Count == 0 || r.Room.Playlist.Any(i => i.Ruleset.Equals(criteria.Ruleset)); matchingFilter &= r.FilterTerms.Any(term => term.IndexOf(criteria.SearchString, StringComparison.InvariantCultureIgnoreCase) >= 0); From d32bb79e5a7bb3a78bc670f35cf074a6c2a656a4 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 6 Feb 2020 12:26:08 +0900 Subject: [PATCH 1338/1829] Add simple filtering test --- .../TestSceneLoungeRoomsContainer.cs | 45 ++++++++++++++----- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneLoungeRoomsContainer.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneLoungeRoomsContainer.cs index cb873fc3eb..8bc780f4e0 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneLoungeRoomsContainer.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneLoungeRoomsContainer.cs @@ -51,10 +51,42 @@ namespace osu.Game.Tests.Visual.Multiplayer [Test] public void TestBasicListChanges() + { + addRooms(3); + + AddAssert("has 3 rooms", () => container.Rooms.Count == 3); + AddStep("remove first room", () => roomManager.Rooms.Remove(roomManager.Rooms.FirstOrDefault())); + AddAssert("has 2 rooms", () => container.Rooms.Count == 2); + AddAssert("first room removed", () => container.Rooms.All(r => r.Room.RoomID.Value != 0)); + + AddStep("select first room", () => container.Rooms.First().Action?.Invoke()); + AddAssert("first room selected", () => Room == roomManager.Rooms.First()); + + AddStep("join first room", () => container.Rooms.First().Action?.Invoke()); + AddAssert("first room joined", () => roomManager.Rooms.First().Status.Value is JoinedRoomStatus); + } + + [Test] + public void TestStringFiltering() + { + addRooms(4); + + AddUntilStep("4 rooms visible", () => container.Rooms.Count(r => r.IsPresent) == 4); + + AddStep("filter one room", () => container.Filter(new FilterCriteria { SearchString = "1" })); + + AddUntilStep("1 rooms visible", () => container.Rooms.Count(r => r.IsPresent) == 1); + + AddStep("remove filter", () => container.Filter(null)); + + AddUntilStep("4 rooms visible", () => container.Rooms.Count(r => r.IsPresent) == 4); + } + + private void addRooms(int count) { AddStep("add rooms", () => { - for (int i = 0; i < 3; i++) + for (int i = 0; i < count; i++) { roomManager.Rooms.Add(new Room { @@ -65,17 +97,6 @@ namespace osu.Game.Tests.Visual.Multiplayer }); } }); - - AddAssert("has 2 rooms", () => container.Rooms.Count == 3); - AddStep("remove first room", () => roomManager.Rooms.Remove(roomManager.Rooms.FirstOrDefault())); - AddAssert("has 2 rooms", () => container.Rooms.Count == 2); - AddAssert("first room removed", () => container.Rooms.All(r => r.Room.RoomID.Value != 0)); - - AddStep("select first room", () => container.Rooms.First().Action?.Invoke()); - AddAssert("first room selected", () => Room == roomManager.Rooms.First()); - - AddStep("join first room", () => container.Rooms.First().Action?.Invoke()); - AddAssert("first room joined", () => roomManager.Rooms.First().Status.Value is JoinedRoomStatus); } private void joinRequested(Room room) => room.Status.Value = new JoinedRoomStatus(); From 061b8c389fa12112f17071e5044de143f187a999 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 6 Feb 2020 13:02:38 +0900 Subject: [PATCH 1339/1829] Fix null search string causing an exception --- osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs b/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs index a5881cc2f7..88cc348000 100644 --- a/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs +++ b/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs @@ -68,7 +68,8 @@ namespace osu.Game.Screens.Multi.Lounge.Components matchingFilter &= r.Room.Playlist.Count == 0 || r.Room.Playlist.Any(i => i.Ruleset.Equals(criteria.Ruleset)); - matchingFilter &= r.FilterTerms.Any(term => term.IndexOf(criteria.SearchString, StringComparison.InvariantCultureIgnoreCase) >= 0); + if (!string.IsNullOrEmpty(criteria.SearchString)) + matchingFilter &= r.FilterTerms.Any(term => term.IndexOf(criteria.SearchString, StringComparison.InvariantCultureIgnoreCase) >= 0); switch (criteria.SecondaryFilter) { From 43b22e3b63d9480e0a20b8f83ff3420577f575bf Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 6 Feb 2020 13:03:15 +0900 Subject: [PATCH 1340/1829] Add a ruleset filtering test --- .../TestSceneLoungeRoomsContainer.cs | 39 +++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneLoungeRoomsContainer.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneLoungeRoomsContainer.cs index 8bc780f4e0..af02f1e514 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneLoungeRoomsContainer.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneLoungeRoomsContainer.cs @@ -8,8 +8,12 @@ using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; +using osu.Game.Beatmaps; using osu.Game.Graphics; using osu.Game.Online.Multiplayer; +using osu.Game.Rulesets; +using osu.Game.Rulesets.Catch; +using osu.Game.Rulesets.Osu; using osu.Game.Screens.Multi; using osu.Game.Screens.Multi.Lounge.Components; using osu.Game.Users; @@ -82,19 +86,48 @@ namespace osu.Game.Tests.Visual.Multiplayer AddUntilStep("4 rooms visible", () => container.Rooms.Count(r => r.IsPresent) == 4); } - private void addRooms(int count) + [Test] + public void TestRulesetFiltering() + { + addRooms(2, new OsuRuleset().RulesetInfo); + addRooms(3, new CatchRuleset().RulesetInfo); + + AddUntilStep("5 rooms visible", () => container.Rooms.Count(r => r.IsPresent) == 5); + + AddStep("filter osu! rooms", () => container.Filter(new FilterCriteria { Ruleset = new OsuRuleset().RulesetInfo })); + + AddUntilStep("2 rooms visible", () => container.Rooms.Count(r => r.IsPresent) == 2); + + AddStep("filter catch rooms", () => container.Filter(new FilterCriteria { Ruleset = new CatchRuleset().RulesetInfo })); + + AddUntilStep("3 rooms visible", () => container.Rooms.Count(r => r.IsPresent) == 3); + } + + private void addRooms(int count, RulesetInfo ruleset = null) { AddStep("add rooms", () => { for (int i = 0; i < count; i++) { - roomManager.Rooms.Add(new Room + var room = new Room { RoomID = { Value = i }, Name = { Value = $"Room {i}" }, Host = { Value = new User { Username = "Host" } }, EndDate = { Value = DateTimeOffset.Now + TimeSpan.FromSeconds(10) } - }); + }; + + if (ruleset != null) + room.Playlist.Add(new PlaylistItem + { + Ruleset = ruleset, + Beatmap = new BeatmapInfo + { + Metadata = new BeatmapMetadata() + } + }); + + roomManager.Rooms.Add(room); } }); } From 49ec1d4a9938e02f07b24a1167e08efd391612d8 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 6 Feb 2020 13:04:29 +0900 Subject: [PATCH 1341/1829] Fix braces style --- .../Visual/Multiplayer/TestSceneLoungeRoomsContainer.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneLoungeRoomsContainer.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneLoungeRoomsContainer.cs index af02f1e514..fe14a1ff0a 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneLoungeRoomsContainer.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneLoungeRoomsContainer.cs @@ -118,6 +118,7 @@ namespace osu.Game.Tests.Visual.Multiplayer }; if (ruleset != null) + { room.Playlist.Add(new PlaylistItem { Ruleset = ruleset, @@ -126,6 +127,7 @@ namespace osu.Game.Tests.Visual.Multiplayer Metadata = new BeatmapMetadata() } }); + } roomManager.Rooms.Add(room); } From daf5fa9da4ade1124f75a250e0c1c8964372fe16 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 6 Feb 2020 13:16:32 +0900 Subject: [PATCH 1342/1829] Throw NotSupportedException instead --- osu.Game.Rulesets.Catch/Objects/JuiceStream.cs | 2 +- osu.Game.Rulesets.Osu/Objects/Slider.cs | 2 +- osu.Game/Rulesets/Objects/Legacy/ConvertSlider.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Objects/JuiceStream.cs b/osu.Game.Rulesets.Catch/Objects/JuiceStream.cs index 4d68bf592c..b014b32305 100644 --- a/osu.Game.Rulesets.Catch/Objects/JuiceStream.cs +++ b/osu.Game.Rulesets.Catch/Objects/JuiceStream.cs @@ -113,7 +113,7 @@ namespace osu.Game.Rulesets.Catch.Objects public double EndTime { get => StartTime + this.SpanCount() * Path.Distance / Velocity; - set => throw new System.NotImplementedException(); + set => throw new System.NotSupportedException($"Adjust via {nameof(RepeatCount)} instead"); // can be implemented if/when needed. } public float EndX => X + this.CurvePositionAt(1).X / CatchPlayfield.BASE_WIDTH; diff --git a/osu.Game.Rulesets.Osu/Objects/Slider.cs b/osu.Game.Rulesets.Osu/Objects/Slider.cs index bab7e6dbee..95fb6d9d48 100644 --- a/osu.Game.Rulesets.Osu/Objects/Slider.cs +++ b/osu.Game.Rulesets.Osu/Objects/Slider.cs @@ -21,7 +21,7 @@ namespace osu.Game.Rulesets.Osu.Objects public double EndTime { get => StartTime + this.SpanCount() * Path.Distance / Velocity; - set => throw new System.NotImplementedException(); + set => throw new System.NotSupportedException($"Adjust via {nameof(RepeatCount)} instead"); // can be implemented if/when needed. } public double Duration => EndTime - StartTime; diff --git a/osu.Game/Rulesets/Objects/Legacy/ConvertSlider.cs b/osu.Game/Rulesets/Objects/Legacy/ConvertSlider.cs index b5cd9be245..53cdf457c4 100644 --- a/osu.Game/Rulesets/Objects/Legacy/ConvertSlider.cs +++ b/osu.Game/Rulesets/Objects/Legacy/ConvertSlider.cs @@ -29,7 +29,7 @@ namespace osu.Game.Rulesets.Objects.Legacy public double EndTime { get => StartTime + this.SpanCount() * Distance / Velocity; - set => throw new System.NotImplementedException(); + set => throw new System.NotSupportedException($"Adjust via {nameof(RepeatCount)} instead"); // can be implemented if/when needed. } public double Duration => EndTime - StartTime; From e548a4b8ddba4b6c90dfdab0935715a5da008341 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 6 Feb 2020 13:36:49 +0900 Subject: [PATCH 1343/1829] Fix missing bind causing regression in filter --- osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs b/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs index 88cc348000..e306706be9 100644 --- a/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs +++ b/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs @@ -54,6 +54,8 @@ namespace osu.Game.Screens.Multi.Lounge.Components roomManager.RoomsUpdated += updateSorting; rooms.BindTo(roomManager.Rooms); + + filter.BindValueChanged(criteria => Filter(criteria.NewValue)); } public void Filter(FilterCriteria criteria) From 114fd967c190988dab88aca1fc0f3eea0bcf9627 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 6 Feb 2020 13:47:34 +0900 Subject: [PATCH 1344/1829] Revert "Remove leasing at a Multiplayer screen level" This reverts commit 304a071e39578def381a4edc9b5c6638d2c9f613. --- osu.Game/Screens/Multi/Multiplayer.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Multi/Multiplayer.cs b/osu.Game/Screens/Multi/Multiplayer.cs index 72bf5a37e8..9d6a459d14 100644 --- a/osu.Game/Screens/Multi/Multiplayer.cs +++ b/osu.Game/Screens/Multi/Multiplayer.cs @@ -32,6 +32,8 @@ namespace osu.Game.Screens.Multi { public override bool CursorVisible => (screenStack.CurrentScreen as IMultiplayerSubScreen)?.CursorVisible ?? true; + public override bool DisallowExternalBeatmapRulesetChanges => true; + private readonly MultiplayerWaveContainer waves; private readonly OsuButton createButton; @@ -275,7 +277,11 @@ namespace osu.Game.Screens.Multi private void updateTrack(ValueChangedEvent _ = null) { - if (screenStack.CurrentScreen is MatchSubScreen) + bool isMatch = screenStack.CurrentScreen is MatchSubScreen; + + Beatmap.Disabled = isMatch; + + if (isMatch) { var track = Beatmap.Value?.Track; From 81cadb787569559fe22e058c59b8f456443136bd Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 6 Feb 2020 14:22:01 +0900 Subject: [PATCH 1345/1829] Simplify the way multiple subscreens handle their disable states via a custom stack --- .../Screens/Multi/Lounge/LoungeSubScreen.cs | 24 ++++++++++++------- osu.Game/Screens/Multi/Multiplayer.cs | 10 ++++---- .../Multi/MultiplayerSubScreenStack.cs | 24 +++++++++++++++++++ osu.Game/Screens/OsuScreenStack.cs | 6 ++--- osu.Game/Screens/Select/MatchSongSelect.cs | 13 ---------- 5 files changed, 47 insertions(+), 30 deletions(-) create mode 100644 osu.Game/Screens/Multi/MultiplayerSubScreenStack.cs diff --git a/osu.Game/Screens/Multi/Lounge/LoungeSubScreen.cs b/osu.Game/Screens/Multi/Lounge/LoungeSubScreen.cs index 0a48f761cf..3709b85fcb 100644 --- a/osu.Game/Screens/Multi/Lounge/LoungeSubScreen.cs +++ b/osu.Game/Screens/Multi/Lounge/LoungeSubScreen.cs @@ -91,6 +91,22 @@ namespace osu.Game.Screens.Multi.Lounge public override void OnEntering(IScreen last) { base.OnEntering(last); + + onReturning(); + } + + public override void OnResuming(IScreen last) + { + base.OnResuming(last); + + if (currentRoom.Value?.RoomID.Value == null) + currentRoom.Value = new Room(); + + onReturning(); + } + + private void onReturning() + { Filter.Search.HoldFocus = true; } @@ -106,14 +122,6 @@ namespace osu.Game.Screens.Multi.Lounge Filter.Search.HoldFocus = false; } - public override void OnResuming(IScreen last) - { - base.OnResuming(last); - - if (currentRoom.Value?.RoomID.Value == null) - currentRoom.Value = new Room(); - } - private void joinRequested(Room room) { processingOverlay.Show(); diff --git a/osu.Game/Screens/Multi/Multiplayer.cs b/osu.Game/Screens/Multi/Multiplayer.cs index 9d6a459d14..2277157134 100644 --- a/osu.Game/Screens/Multi/Multiplayer.cs +++ b/osu.Game/Screens/Multi/Multiplayer.cs @@ -32,6 +32,8 @@ namespace osu.Game.Screens.Multi { public override bool CursorVisible => (screenStack.CurrentScreen as IMultiplayerSubScreen)?.CursorVisible ?? true; + // this is required due to PlayerLoader eventually being pushed to the main stack + // while leases may be taken out by a subscreen. public override bool DisallowExternalBeatmapRulesetChanges => true; private readonly MultiplayerWaveContainer waves; @@ -96,7 +98,7 @@ namespace osu.Game.Screens.Multi { RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { Top = Header.HEIGHT }, - Child = screenStack = new OsuScreenStack { RelativeSizeAxes = Axes.Both } + Child = screenStack = new MultiplayerSubScreenStack { RelativeSizeAxes = Axes.Both } }, new Header(screenStack), createButton = new HeaderButton @@ -277,11 +279,7 @@ namespace osu.Game.Screens.Multi private void updateTrack(ValueChangedEvent _ = null) { - bool isMatch = screenStack.CurrentScreen is MatchSubScreen; - - Beatmap.Disabled = isMatch; - - if (isMatch) + if (screenStack.CurrentScreen is MatchSubScreen) { var track = Beatmap.Value?.Track; diff --git a/osu.Game/Screens/Multi/MultiplayerSubScreenStack.cs b/osu.Game/Screens/Multi/MultiplayerSubScreenStack.cs new file mode 100644 index 0000000000..3b0ed0dba1 --- /dev/null +++ b/osu.Game/Screens/Multi/MultiplayerSubScreenStack.cs @@ -0,0 +1,24 @@ +// 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.Screens; + +namespace osu.Game.Screens.Multi +{ + public class MultiplayerSubScreenStack : OsuScreenStack + { + protected override void ScreenChanged(IScreen prev, IScreen next) + { + base.ScreenChanged(prev, next); + + // because this is a screen stack within a screen stack, let's manually handle disabled changes to simplify things. + var osuScreen = ((OsuScreen)next); + + bool disallowChanges = osuScreen.DisallowExternalBeatmapRulesetChanges; + + osuScreen.Beatmap.Disabled = disallowChanges; + osuScreen.Ruleset.Disabled = disallowChanges; + osuScreen.Mods.Disabled = disallowChanges; + } + } +} diff --git a/osu.Game/Screens/OsuScreenStack.cs b/osu.Game/Screens/OsuScreenStack.cs index a05933ef0e..e2a0414df7 100644 --- a/osu.Game/Screens/OsuScreenStack.cs +++ b/osu.Game/Screens/OsuScreenStack.cs @@ -26,7 +26,7 @@ namespace osu.Game.Screens }; ScreenPushed += screenPushed; - ScreenExited += screenExited; + ScreenExited += ScreenChanged; } private void screenPushed(IScreen prev, IScreen next) @@ -42,10 +42,10 @@ namespace osu.Game.Screens // create dependencies synchronously to ensure leases are in a sane state. ((OsuScreen)next).CreateLeasedDependencies((prev as OsuScreen)?.Dependencies ?? Dependencies); - setParallax(next); + ScreenChanged(prev, next); } - private void screenExited(IScreen prev, IScreen next) + protected virtual void ScreenChanged(IScreen prev, IScreen next) { setParallax(next); } diff --git a/osu.Game/Screens/Select/MatchSongSelect.cs b/osu.Game/Screens/Select/MatchSongSelect.cs index a78477c771..6ba4157797 100644 --- a/osu.Game/Screens/Select/MatchSongSelect.cs +++ b/osu.Game/Screens/Select/MatchSongSelect.cs @@ -65,20 +65,7 @@ namespace osu.Game.Screens.Select Mods.Value = CurrentItem.Value.RequiredMods?.ToArray() ?? Array.Empty(); } - Beatmap.Disabled = true; - Ruleset.Disabled = true; - Mods.Disabled = true; - return false; } - - public override void OnEntering(IScreen last) - { - base.OnEntering(last); - - Beatmap.Disabled = false; - Ruleset.Disabled = false; - Mods.Disabled = false; - } } } From fd71a53717bf57782cb2e0f8379e4379ea7b191d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 6 Feb 2020 14:28:09 +0900 Subject: [PATCH 1346/1829] Fix test regression --- osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs b/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs index e306706be9..063957d816 100644 --- a/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs +++ b/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs @@ -55,7 +55,7 @@ namespace osu.Game.Screens.Multi.Lounge.Components rooms.BindTo(roomManager.Rooms); - filter.BindValueChanged(criteria => Filter(criteria.NewValue)); + filter?.BindValueChanged(criteria => Filter(criteria.NewValue)); } public void Filter(FilterCriteria criteria) From c138e3907e13543a95a86a25021d5f35b56af285 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 6 Feb 2020 14:35:45 +0900 Subject: [PATCH 1347/1829] Move methods below ctor --- .../Timeline/TimelineHitObjectBlueprint.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs index b46a373818..5225a4299e 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs @@ -25,8 +25,6 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline { private readonly Circle circle; - protected override bool ShouldBeConsideredForInput(Drawable child) => true; - [UsedImplicitly] private readonly Bindable startTime; @@ -42,11 +40,6 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline private const float circle_size = 16; - public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => - base.ReceivePositionalInputAt(screenSpacePos) || - circle.ReceivePositionalInputAt(screenSpacePos) || - dragBar?.ReceivePositionalInputAt(screenSpacePos) == true; - public TimelineHitObjectBlueprint(HitObject hitObject) : base(hitObject) { @@ -138,6 +131,13 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline Width = (float)(HitObject.GetEndTime() - HitObject.StartTime); } + protected override bool ShouldBeConsideredForInput(Drawable child) => true; + + public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => + base.ReceivePositionalInputAt(screenSpacePos) || + circle.ReceivePositionalInputAt(screenSpacePos) || + dragBar?.ReceivePositionalInputAt(screenSpacePos) == true; + protected override void OnSelected() { updateShadows(); From 6ae0efa40d350521d28720fccd050ce7502fb8e3 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 6 Feb 2020 14:47:43 +0900 Subject: [PATCH 1348/1829] Fix adjustment not working when dragged before object --- .../Components/Timeline/TimelineHitObjectBlueprint.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs index 5225a4299e..8f12c2f0ed 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs @@ -275,18 +275,18 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline case IHasRepeats repeatHitObject: // find the number of repeats which can fit in the requested time. var lengthOfOneRepeat = repeatHitObject.Duration / (repeatHitObject.RepeatCount + 1); - var proposedCount = (int)((time - hitObject.StartTime) / lengthOfOneRepeat) - 1; + var proposedCount = Math.Max(0, (int)((time - hitObject.StartTime) / lengthOfOneRepeat) - 1); - if (proposedCount == repeatHitObject.RepeatCount || proposedCount < 0) + if (proposedCount == repeatHitObject.RepeatCount) return; repeatHitObject.RepeatCount = proposedCount; break; case IHasEndTime endTimeHitObject: - var snappedTime = beatSnapProvider.SnapTime(time); + var snappedTime = Math.Max(hitObject.StartTime, beatSnapProvider.SnapTime(time)); - if (endTimeHitObject.EndTime == snappedTime || snappedTime <= hitObject.StartTime) + if (endTimeHitObject.EndTime == snappedTime) return; endTimeHitObject.EndTime = snappedTime; From 6b67b601e9033f6d48d813561fd602be25863bef Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 6 Feb 2020 17:35:13 +0900 Subject: [PATCH 1349/1829] 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 e5a1ec2f4e..702591231b 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index ce58be52ee..81f59a4993 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 6ab3c0f2d2..8e359970a1 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From 48350638a247faea83506b24b2eb5bd4b5a48803 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 6 Feb 2020 18:38:00 +0900 Subject: [PATCH 1350/1829] Hide drag handles of all playlist items not currently being dragged --- osu.Game/Overlays/Music/Playlist.cs | 6 ++++++ osu.Game/Overlays/Music/PlaylistItem.cs | 20 +++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Music/Playlist.cs b/osu.Game/Overlays/Music/Playlist.cs index 8744a6db8b..1ba568443d 100644 --- a/osu.Game/Overlays/Music/Playlist.cs +++ b/osu.Game/Overlays/Music/Playlist.cs @@ -18,6 +18,11 @@ namespace osu.Game.Overlays.Music public readonly Bindable SelectedSet = new Bindable(); + /// + /// Whether any item is currently being dragged. Used to hide other items' drag handles. + /// + private readonly BindableBool playlistDragActive = new BindableBool(); + public new MarginPadding Padding { get => base.Padding; @@ -31,6 +36,7 @@ namespace osu.Game.Overlays.Music protected override RearrangeableListItem CreateDrawable(BeatmapSetInfo item) => new PlaylistItem(item) { SelectedSet = { BindTarget = SelectedSet }, + PlaylistDragActive = { BindTarget = playlistDragActive }, RequestSelection = set => RequestSelection?.Invoke(set) }; diff --git a/osu.Game/Overlays/Music/PlaylistItem.cs b/osu.Game/Overlays/Music/PlaylistItem.cs index 0f68df737e..0569261867 100644 --- a/osu.Game/Overlays/Music/PlaylistItem.cs +++ b/osu.Game/Overlays/Music/PlaylistItem.cs @@ -23,7 +23,10 @@ namespace osu.Game.Overlays.Music { private const float fade_duration = 100; + public BindableBool PlaylistDragActive = new BindableBool(); + public readonly Bindable SelectedSet = new Bindable(); + public Action RequestSelection; private PlaylistItemHandle handle; @@ -122,11 +125,26 @@ namespace osu.Game.Overlays.Music return true; } + protected override bool OnDragStart(DragStartEvent e) + { + if (!base.OnDragStart(e)) + return false; + + PlaylistDragActive.Value = true; + return true; + } + + protected override void OnDragEnd(DragEndEvent e) + { + PlaylistDragActive.Value = false; + base.OnDragEnd(e); + } + protected override bool IsDraggableAt(Vector2 screenSpacePos) => handle.HandlingDrag; protected override bool OnHover(HoverEvent e) { - handle.UpdateHoverState(true); + handle.UpdateHoverState(IsDragged || !PlaylistDragActive.Value); return base.OnHover(e); } From 1613198834e3b32bda05096704a0f47c3ddddb5c Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 6 Feb 2020 19:43:33 +0900 Subject: [PATCH 1351/1829] Set a sane default keyboard step for mod settings --- osu.Game/Configuration/SettingSourceAttribute.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/osu.Game/Configuration/SettingSourceAttribute.cs b/osu.Game/Configuration/SettingSourceAttribute.cs index f859dccc80..a3788e4582 100644 --- a/osu.Game/Configuration/SettingSourceAttribute.cs +++ b/osu.Game/Configuration/SettingSourceAttribute.cs @@ -45,7 +45,8 @@ namespace osu.Game.Configuration yield return new SettingsSlider { LabelText = attr.Label, - Bindable = bNumber + Bindable = bNumber, + KeyboardStep = 0.1f, }; break; @@ -54,7 +55,8 @@ namespace osu.Game.Configuration yield return new SettingsSlider { LabelText = attr.Label, - Bindable = bNumber + Bindable = bNumber, + KeyboardStep = 0.1f, }; break; From 5946ad7d809f7e7500ecc1a18d1f5310d47b635a Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 6 Feb 2020 16:54:02 +0300 Subject: [PATCH 1352/1829] Fix possible memory leak and better user change test support --- .../Online/TestSceneCommentsContainer.cs | 24 ++++++++++--------- .../Overlays/Comments/CommentsContainer.cs | 7 +++++- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs index 33acc75fa8..2a43ba3f99 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs @@ -10,7 +10,8 @@ using osu.Framework.Graphics; using osu.Game.Overlays.Comments; using osu.Game.Overlays; using osu.Framework.Allocation; -using osu.Game.Online.API; +using osu.Framework.Bindables; +using osu.Game.Users; namespace osu.Game.Tests.Visual.Online { @@ -35,31 +36,32 @@ namespace osu.Game.Tests.Visual.Online [Cached] private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Purple); - private CommentsContainer comments; - private readonly BasicScrollContainer scroll; - public TestSceneCommentsContainer() { + BasicScrollContainer scroll; + TestCommentsContainer comments; + Add(scroll = new BasicScrollContainer { RelativeSizeAxes = Axes.Both, - Child = comments = new CommentsContainer() + Child = comments = new TestCommentsContainer() }); - } - [BackgroundDependencyLoader] - private void load(IAPIProvider api) - { AddStep("Big Black comments", () => comments.ShowComments(CommentableType.Beatmapset, 41823)); AddStep("Airman comments", () => comments.ShowComments(CommentableType.Beatmapset, 24313)); AddStep("Lazer build comments", () => comments.ShowComments(CommentableType.Build, 4772)); AddStep("News comments", () => comments.ShowComments(CommentableType.NewsPost, 715)); - AddStep("Trigger user change", api.LocalUser.TriggerChange); + AddStep("Trigger user change", comments.User.TriggerChange); AddStep("Idle state", () => { scroll.Clear(); - scroll.Add(comments = new CommentsContainer()); + scroll.Add(comments = new TestCommentsContainer()); }); } + + private class TestCommentsContainer : CommentsContainer + { + public new Bindable User => base.User; + } } } diff --git a/osu.Game/Overlays/Comments/CommentsContainer.cs b/osu.Game/Overlays/Comments/CommentsContainer.cs index 3d68f453b7..33a6be0d7a 100644 --- a/osu.Game/Overlays/Comments/CommentsContainer.cs +++ b/osu.Game/Overlays/Comments/CommentsContainer.cs @@ -12,6 +12,7 @@ using osu.Game.Online.API.Requests.Responses; using System.Threading; using System.Linq; using osu.Framework.Extensions.IEnumerableExtensions; +using osu.Game.Users; namespace osu.Game.Overlays.Comments { @@ -23,6 +24,8 @@ namespace osu.Game.Overlays.Comments public readonly Bindable Sort = new Bindable(); public readonly BindableBool ShowDeleted = new BindableBool(); + protected readonly Bindable User = new Bindable(); + [Resolved] private IAPIProvider api { get; set; } @@ -109,11 +112,13 @@ namespace osu.Game.Overlays.Comments } } }); + + User.BindTo(api.LocalUser); } protected override void LoadComplete() { - api.LocalUser.BindValueChanged(_ => refetchComments()); + User.BindValueChanged(_ => refetchComments()); Sort.BindValueChanged(_ => refetchComments(), true); base.LoadComplete(); } From c09af0052bf3f2e1a2e4809b12aeeb166f0501af Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Thu, 6 Feb 2020 20:21:47 +0100 Subject: [PATCH 1353/1829] Revert accuracy display and column sorting changes --- osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs | 7 +------ osu.Game/Utils/FormatUtils.cs | 8 ++++---- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs index 4d5bd84090..2310b2a0f5 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs @@ -16,7 +16,6 @@ using osu.Game.Scoring; using osu.Game.Users.Drawables; using osuTK; using osuTK.Graphics; -using osu.Game.Utils; namespace osu.Game.Overlays.BeatmapSet.Scores { @@ -66,10 +65,6 @@ namespace osu.Game.Overlays.BeatmapSet.Scores for (int i = 0; i < value.Count; i++) backgroundFlow.Add(new ScoreTableRowBackground(i, value[i])); - // Ensure correct column order - foreach (ScoreInfo score in value) - score.Statistics = score.Statistics.OrderByDescending(pair => pair.Key).ToDictionary(pair => pair.Key, pair => pair.Value); - Columns = createHeaders(value[0]); Content = value.Select((s, i) => createContent(i, s)).ToArray().ToRectangular(); } @@ -121,7 +116,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores new OsuSpriteText { Margin = new MarginPadding { Right = horizontal_inset }, - Text = score.Accuracy.FormatAccuracy(alwaysShowDecimals: true), + Text = score.DisplayAccuracy, Font = OsuFont.GetFont(size: text_size), Colour = score.Accuracy == 1 ? highAccuracyColour : Color4.White }, diff --git a/osu.Game/Utils/FormatUtils.cs b/osu.Game/Utils/FormatUtils.cs index f0b8b470f1..b3758b3375 100644 --- a/osu.Game/Utils/FormatUtils.cs +++ b/osu.Game/Utils/FormatUtils.cs @@ -7,18 +7,18 @@ namespace osu.Game.Utils { /// /// Turns the provided accuracy into a percentage with 2 decimal places. + /// Omits all decimal places when equals 1d. /// /// The accuracy to be formatted - /// Whether to show decimal places if equals 1d /// formatted accuracy in percentage - public static string FormatAccuracy(this double accuracy, bool alwaysShowDecimals = false) => accuracy == 1 && !alwaysShowDecimals ? "100%" : $"{accuracy:0.00%}"; + public static string FormatAccuracy(this double accuracy) => accuracy == 1 ? "100%" : $"{accuracy:0.00%}"; /// /// Turns the provided accuracy into a percentage with 2 decimal places. + /// Omits all decimal places when equals 100m. /// /// The accuracy to be formatted - /// Whether to show decimal places if equals 100m /// formatted accuracy in percentage - public static string FormatAccuracy(this decimal accuracy, bool alwaysShowDecimals = false) => accuracy == 100 && !alwaysShowDecimals ? "100%" : $"{accuracy:0.00}%"; + public static string FormatAccuracy(this decimal accuracy) => accuracy == 100 ? "100%" : $"{accuracy:0.00}%"; } } From 83b2b63d2c0bbb4d92e785777191331c0ef5ff2c Mon Sep 17 00:00:00 2001 From: Roman Kapustin Date: Thu, 6 Feb 2020 23:02:03 +0300 Subject: [PATCH 1354/1829] Make ScreenshotManager a Drawable --- osu.Game/Graphics/ScreenshotManager.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Graphics/ScreenshotManager.cs b/osu.Game/Graphics/ScreenshotManager.cs index 3ad36577b5..dc681102ce 100644 --- a/osu.Game/Graphics/ScreenshotManager.cs +++ b/osu.Game/Graphics/ScreenshotManager.cs @@ -9,7 +9,7 @@ using osu.Framework.Allocation; using osu.Framework.Audio; using osu.Framework.Audio.Sample; using osu.Framework.Bindables; -using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics; using osu.Framework.Input; using osu.Framework.Input.Bindings; using osu.Framework.Platform; @@ -22,7 +22,7 @@ using SixLabors.ImageSharp; namespace osu.Game.Graphics { - public class ScreenshotManager : Container, IKeyBindingHandler, IHandleGlobalKeyboardInput + public class ScreenshotManager : Drawable, IKeyBindingHandler, IHandleGlobalKeyboardInput { private readonly BindableBool cursorVisibility = new BindableBool(true); From 4495192c25ba78891aec846caedbbebe3fc48792 Mon Sep 17 00:00:00 2001 From: UselessToucan Date: Thu, 6 Feb 2020 23:22:30 +0300 Subject: [PATCH 1355/1829] Make ScreenshotManager a Component Co-Authored-By: Salman Ahmed --- osu.Game/Graphics/ScreenshotManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Graphics/ScreenshotManager.cs b/osu.Game/Graphics/ScreenshotManager.cs index dc681102ce..e21545688b 100644 --- a/osu.Game/Graphics/ScreenshotManager.cs +++ b/osu.Game/Graphics/ScreenshotManager.cs @@ -22,7 +22,7 @@ using SixLabors.ImageSharp; namespace osu.Game.Graphics { - public class ScreenshotManager : Drawable, IKeyBindingHandler, IHandleGlobalKeyboardInput + public class ScreenshotManager : Component, IKeyBindingHandler, IHandleGlobalKeyboardInput { private readonly BindableBool cursorVisibility = new BindableBool(true); From ecde641729da944bd819136b6fb9080012222339 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Wed, 5 Feb 2020 21:52:36 +0100 Subject: [PATCH 1356/1829] Randomise colours in scrolling test scene Switch to using randomised colours in TestSceneScrollingHitObjects to better distinguish individual hit objects. --- .../Visual/Gameplay/TestSceneScrollingHitObjects.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs index 8629522dc2..da5a83e194 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs @@ -11,6 +11,7 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Threading; +using osu.Framework.Utils; using osu.Game.Configuration; using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Objects; @@ -19,6 +20,7 @@ using osu.Game.Rulesets.Timing; using osu.Game.Rulesets.UI; using osu.Game.Rulesets.UI.Scrolling; using osuTK; +using osuTK.Graphics; namespace osu.Game.Tests.Visual.Gameplay { @@ -236,7 +238,11 @@ namespace osu.Game.Tests.Visual.Gameplay AutoSizeAxes = Axes.Both; - AddInternal(new Box { Size = new Vector2(75) }); + AddInternal(new Box + { + Size = new Vector2(75), + Colour = new Color4(RNG.NextSingle(), RNG.NextSingle(), RNG.NextSingle(), 1) + }); } } } From 12469469ad14bd48de4721832ede56b972028b72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Wed, 5 Feb 2020 22:56:44 +0100 Subject: [PATCH 1357/1829] Add reproduction test steps for lifetime bug Modify TestSceneScrollingHitObjects to contain a test case that serves as a reproduction for a visual bug in which using the overlapping scroll algorithm results in an incorrect origin adjustment for lifetime. --- .../Gameplay/TestSceneScrollingHitObjects.cs | 88 ++++++++++++------- 1 file changed, 56 insertions(+), 32 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs index da5a83e194..d03716db2e 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs @@ -32,7 +32,8 @@ namespace osu.Game.Tests.Visual.Gameplay [Cached(typeof(IReadOnlyList))] private IReadOnlyList mods { get; set; } = Array.Empty(); - private const int spawn_interval = 5000; + private const int time_range = 5000; + private const int spawn_rate = time_range / 10; private readonly ScrollingTestContainer[] scrollContainers = new ScrollingTestContainer[4]; private readonly TestPlayfield[] playfields = new TestPlayfield[4]; @@ -52,13 +53,13 @@ namespace osu.Game.Tests.Visual.Gameplay { RelativeSizeAxes = Axes.Both, Child = playfields[0] = new TestPlayfield(), - TimeRange = spawn_interval + TimeRange = time_range }, scrollContainers[1] = new ScrollingTestContainer(ScrollingDirection.Down) { RelativeSizeAxes = Axes.Both, Child = playfields[1] = new TestPlayfield(), - TimeRange = spawn_interval + TimeRange = time_range }, }, new Drawable[] @@ -67,13 +68,13 @@ namespace osu.Game.Tests.Visual.Gameplay { RelativeSizeAxes = Axes.Both, Child = playfields[2] = new TestPlayfield(), - TimeRange = spawn_interval + TimeRange = time_range }, scrollContainers[3] = new ScrollingTestContainer(ScrollingDirection.Right) { RelativeSizeAxes = Axes.Both, Child = playfields[3] = new TestPlayfield(), - TimeRange = spawn_interval + TimeRange = time_range } } } @@ -86,31 +87,55 @@ namespace osu.Game.Tests.Visual.Gameplay { scrollContainers.ForEach(c => c.ControlPoints.Add(new MultiplierControlPoint(0))); - for (int i = 0; i <= spawn_interval; i += 1000) + for (int i = spawn_rate / 2; i <= time_range; i += spawn_rate) addHitObject(Time.Current + i); hitObjectSpawnDelegate?.Cancel(); - hitObjectSpawnDelegate = Scheduler.AddDelayed(() => addHitObject(Time.Current + spawn_interval), 1000, true); + hitObjectSpawnDelegate = Scheduler.AddDelayed(() => addHitObject(Time.Current + time_range), spawn_rate, true); } + private IList testControlPoints => new List + { + new MultiplierControlPoint(time_range) { DifficultyPoint = { SpeedMultiplier = 1.25 } }, + new MultiplierControlPoint(1.5 * time_range) { DifficultyPoint = { SpeedMultiplier = 1 } }, + new MultiplierControlPoint(2 * time_range) { DifficultyPoint = { SpeedMultiplier = 1.5 } } + }; + [Test] public void TestScrollAlgorithms() { - AddStep("Constant scroll", () => setScrollAlgorithm(ScrollVisualisationMethod.Constant)); - AddStep("Overlapping scroll", () => setScrollAlgorithm(ScrollVisualisationMethod.Overlapping)); - AddStep("Sequential scroll", () => setScrollAlgorithm(ScrollVisualisationMethod.Sequential)); + AddStep("constant scroll", () => setScrollAlgorithm(ScrollVisualisationMethod.Constant)); + AddStep("overlapping scroll", () => setScrollAlgorithm(ScrollVisualisationMethod.Overlapping)); + AddStep("sequential scroll", () => setScrollAlgorithm(ScrollVisualisationMethod.Sequential)); - AddSliderStep("Time range", 100, 10000, spawn_interval, v => scrollContainers.Where(c => c != null).ForEach(c => c.TimeRange = v)); - AddStep("Add control point", () => addControlPoint(Time.Current + spawn_interval)); + AddSliderStep("time range", 100, 10000, time_range, v => scrollContainers.Where(c => c != null).ForEach(c => c.TimeRange = v)); + + AddStep("add control points", () => addControlPoints(testControlPoints, Time.Current)); } [Test] - public void TestScrollLifetime() + public void TestConstantScrollLifetime() { - AddStep("Set constant scroll", () => setScrollAlgorithm(ScrollVisualisationMethod.Constant)); + AddStep("set constant scroll", () => setScrollAlgorithm(ScrollVisualisationMethod.Constant)); // scroll container time range must be less than the rate of spawning hitobjects // otherwise the hitobjects will spawn already partly visible on screen and look wrong - AddStep("Set time range", () => scrollContainers.ForEach(c => c.TimeRange = spawn_interval / 2.0)); + AddStep("set time range", () => scrollContainers.ForEach(c => c.TimeRange = time_range / 2.0)); + } + + [Test] + public void TestSequentialScrollLifetime() + { + AddStep("set sequential scroll", () => setScrollAlgorithm(ScrollVisualisationMethod.Sequential)); + AddStep("set time range", () => scrollContainers.ForEach(c => c.TimeRange = time_range / 2.0)); + AddStep("add control points", () => addControlPoints(testControlPoints, Time.Current)); + } + + [Test] + public void TestOverlappingScrollLifetime() + { + AddStep("set overlapping scroll", () => setScrollAlgorithm(ScrollVisualisationMethod.Overlapping)); + AddStep("set time range", () => scrollContainers.ForEach(c => c.TimeRange = time_range / 2.0)); + AddStep("add control points", () => addControlPoints(testControlPoints, Time.Current)); } private void addHitObject(double time) @@ -124,28 +149,27 @@ namespace osu.Game.Tests.Visual.Gameplay }); } - private void addControlPoint(double time) + private TestDrawableControlPoint createDrawablePoint(TestPlayfield playfield, double t) { - scrollContainers.ForEach(c => + var obj = new TestDrawableControlPoint(playfield.Direction, t); + setAnchor(obj, playfield); + return obj; + } + + private void addControlPoints(IList controlPoints, double sequenceStartTime) + { + controlPoints.ForEach(point => point.StartTime += sequenceStartTime); + + scrollContainers.ForEach(container => { - c.ControlPoints.Add(new MultiplierControlPoint(time) { DifficultyPoint = { SpeedMultiplier = 3 } }); - c.ControlPoints.Add(new MultiplierControlPoint(time + 2000) { DifficultyPoint = { SpeedMultiplier = 2 } }); - c.ControlPoints.Add(new MultiplierControlPoint(time + 3000) { DifficultyPoint = { SpeedMultiplier = 1 } }); + container.ControlPoints.AddRange(controlPoints); }); - playfields.ForEach(p => + foreach (var playfield in playfields) { - TestDrawableControlPoint createDrawablePoint(double t) - { - var obj = new TestDrawableControlPoint(p.Direction, t); - setAnchor(obj, p); - return obj; - } - - p.Add(createDrawablePoint(time)); - p.Add(createDrawablePoint(time + 2000)); - p.Add(createDrawablePoint(time + 3000)); - }); + foreach (var controlPoint in controlPoints) + playfield.Add(createDrawablePoint(playfield, controlPoint.StartTime)); + } } private void setAnchor(DrawableHitObject obj, TestPlayfield playfield) From 5fde4f2c0cda1c48a130fb4771eac1230ff5ba45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Thu, 6 Feb 2020 22:46:31 +0100 Subject: [PATCH 1358/1829] Fix lifetime calculation in overlapping algorithm Changes to lifetime calculation in scrolling rulesets introduced in #7367, which aimed to account for the distance between hit objects' origin and its edge entering the scrolling area, fixed some issues with hitobjects appearing abruptly, but also regressed some other scenarios. Upon investigation, the regression was localised to the overlapping scroll algorithm. The reason for this was two-fold: * The previous code used TimeAt() to calculate the time of travel from the hit object's edge to its origin. For other algorithms, that time can be accurately reconstructed, because they don't have periods of time where there are multiple hit objects scrolling at different velocities. That invariant does not hold for the overlapping algorithm, therefore it is possible for different values to be technically correct for TimeAt(). However, the only value that matters for the adjustment is the one that's indicated by the control point that applies to the hit object origin, which can be uniquely identified. * Additionally, the offset returned (even if correct) was applied externally to the hit object's start time and passed to GetDisplayStartTime(). In the overlapping algorithm, the choice of control point used in GetDisplayStartTime() is important, since the value of the speed multiplier is read within. Externally rewinding the hit object's start time meant that in some cases the speed multiplier of the *previous* control point is applied, which led to hit objects appearing too late if the scrolling rate decreased. Because of the above, modify GetDisplayStartTime() to take the offset into account in all algorithms, and apply the adjustment correctly inside of them. The constant and sequential algorithms needed no adjustment from the previous logic, since: * the constant algorithm disregarded control points, and * the sequential algorithm would effectively rewind to time = 0, calculate the absolute distance from time = 0 to the hit object start, apply the origin offset *to the absolute distance*, and then convert back to time, applying all control points in sequence. Due to this it was impossible for control points to get mixed up while calculating. As for the overlapping algorithm, the high-level logic is as follows: * The distance that the origin has to travel is the length of the scroll plus the distance from the origin to the object edge. * The above distance divided by the scroll length gives the relative scroll lengths that the object has to travel. * As one relative scroll length takes one time range, the relative travel length multiplied by the time range gives the absolute travel time of the object origin. * Finally, the control point multiplier applicable at origin time is applied to the whole travel time. Correctness of the above is demonstrated by visual tests added before and headless unit tests of the algorithms themselves. The sequential scroll algorithm was not covered by unit tests, and remains uncovered due to floating-point inaccuracies that should be addressed separately. --- .../ScrollAlgorithms/ConstantScrollTest.cs | 19 ++++++++--- .../ScrollAlgorithms/OverlappingScrollTest.cs | 19 ++++++++--- .../Algorithms/ConstantScrollAlgorithm.cs | 6 +++- .../Scrolling/Algorithms/IScrollAlgorithm.cs | 32 +++++++++++++++---- .../Algorithms/OverlappingScrollAlgorithm.cs | 7 ++-- .../Algorithms/SequentialScrollAlgorithm.cs | 6 +++- .../Scrolling/ScrollingHitObjectContainer.cs | 3 +- .../Tests/Visual/ScrollingTestContainer.cs | 4 +-- 8 files changed, 71 insertions(+), 25 deletions(-) diff --git a/osu.Game.Tests/ScrollAlgorithms/ConstantScrollTest.cs b/osu.Game.Tests/ScrollAlgorithms/ConstantScrollTest.cs index d7f709dc03..a6e8622b6f 100644 --- a/osu.Game.Tests/ScrollAlgorithms/ConstantScrollTest.cs +++ b/osu.Game.Tests/ScrollAlgorithms/ConstantScrollTest.cs @@ -18,12 +18,21 @@ namespace osu.Game.Tests.ScrollAlgorithms } [Test] - public void TestDisplayStartTime() + public void TestPointDisplayStartTime() { - Assert.AreEqual(-8000, algorithm.GetDisplayStartTime(2000, 10000)); - Assert.AreEqual(-3000, algorithm.GetDisplayStartTime(2000, 5000)); - Assert.AreEqual(2000, algorithm.GetDisplayStartTime(7000, 5000)); - Assert.AreEqual(7000, algorithm.GetDisplayStartTime(17000, 10000)); + Assert.AreEqual(-8000, algorithm.GetDisplayStartTime(2000, 0, 10000, 1)); + Assert.AreEqual(-3000, algorithm.GetDisplayStartTime(2000, 0, 5000, 1)); + Assert.AreEqual(2000, algorithm.GetDisplayStartTime(7000, 0, 5000, 1)); + Assert.AreEqual(7000, algorithm.GetDisplayStartTime(17000, 0, 10000, 1)); + } + + [Test] + public void TestObjectDisplayStartTime() + { + Assert.AreEqual(900, algorithm.GetDisplayStartTime(2000, 50, 1000, 500)); // 2000 - (1 + 50 / 500) * 1000 + Assert.AreEqual(8900, algorithm.GetDisplayStartTime(10000, 50, 1000, 500)); // 10000 - (1 + 50 / 500) * 1000 + Assert.AreEqual(13500, algorithm.GetDisplayStartTime(15000, 250, 1000, 500)); // 15000 - (1 + 250 / 500) * 1000 + Assert.AreEqual(19000, algorithm.GetDisplayStartTime(25000, 100, 5000, 500)); // 25000 - (1 + 100 / 500) * 5000 } [Test] diff --git a/osu.Game.Tests/ScrollAlgorithms/OverlappingScrollTest.cs b/osu.Game.Tests/ScrollAlgorithms/OverlappingScrollTest.cs index 106aa88be3..1429d22c1a 100644 --- a/osu.Game.Tests/ScrollAlgorithms/OverlappingScrollTest.cs +++ b/osu.Game.Tests/ScrollAlgorithms/OverlappingScrollTest.cs @@ -27,11 +27,22 @@ namespace osu.Game.Tests.ScrollAlgorithms } [Test] - public void TestDisplayStartTime() + public void TestPointDisplayStartTime() { - Assert.AreEqual(1000, algorithm.GetDisplayStartTime(2000, 1000)); // Like constant - Assert.AreEqual(10000, algorithm.GetDisplayStartTime(10500, 1000)); // 10500 - (1000 * 0.5) - Assert.AreEqual(20000, algorithm.GetDisplayStartTime(22000, 1000)); // 23000 - (1000 / 0.5) + Assert.AreEqual(1000, algorithm.GetDisplayStartTime(2000, 0, 1000, 1)); // Like constant + Assert.AreEqual(10000, algorithm.GetDisplayStartTime(10500, 0, 1000, 1)); // 10500 - (1000 * 0.5) + Assert.AreEqual(20000, algorithm.GetDisplayStartTime(22000, 0, 1000, 1)); // 23000 - (1000 / 0.5) + } + + [Test] + public void TestObjectDisplayStartTime() + { + Assert.AreEqual(900, algorithm.GetDisplayStartTime(2000, 50, 1000, 500)); // 2000 - (1 + 50 / 500) * 1000 / 1 + Assert.AreEqual(9450, algorithm.GetDisplayStartTime(10000, 50, 1000, 500)); // 10000 - (1 + 50 / 500) * 1000 / 2 + Assert.AreEqual(14250, algorithm.GetDisplayStartTime(15000, 250, 1000, 500)); // 15000 - (1 + 250 / 500) * 1000 / 2 + Assert.AreEqual(16500, algorithm.GetDisplayStartTime(18000, 250, 2000, 500)); // 18000 - (1 + 250 / 500) * 2000 / 2 + Assert.AreEqual(17800, algorithm.GetDisplayStartTime(20000, 50, 1000, 500)); // 20000 - (1 + 50 / 500) * 1000 / 0.5 + Assert.AreEqual(19800, algorithm.GetDisplayStartTime(22000, 50, 1000, 500)); // 22000 - (1 + 50 / 500) * 1000 / 0.5 } [Test] diff --git a/osu.Game/Rulesets/UI/Scrolling/Algorithms/ConstantScrollAlgorithm.cs b/osu.Game/Rulesets/UI/Scrolling/Algorithms/ConstantScrollAlgorithm.cs index 75ea3efdf2..0d4283e319 100644 --- a/osu.Game/Rulesets/UI/Scrolling/Algorithms/ConstantScrollAlgorithm.cs +++ b/osu.Game/Rulesets/UI/Scrolling/Algorithms/ConstantScrollAlgorithm.cs @@ -5,7 +5,11 @@ namespace osu.Game.Rulesets.UI.Scrolling.Algorithms { public class ConstantScrollAlgorithm : IScrollAlgorithm { - public double GetDisplayStartTime(double time, double timeRange) => time - timeRange; + public double GetDisplayStartTime(double originTime, float offset, double timeRange, float scrollLength) + { + var adjustedTime = TimeAt(-offset, originTime, timeRange, scrollLength); + return adjustedTime - timeRange; + } public float GetLength(double startTime, double endTime, double timeRange, float scrollLength) { diff --git a/osu.Game/Rulesets/UI/Scrolling/Algorithms/IScrollAlgorithm.cs b/osu.Game/Rulesets/UI/Scrolling/Algorithms/IScrollAlgorithm.cs index 5f053975c7..c394a05bcc 100644 --- a/osu.Game/Rulesets/UI/Scrolling/Algorithms/IScrollAlgorithm.cs +++ b/osu.Game/Rulesets/UI/Scrolling/Algorithms/IScrollAlgorithm.cs @@ -6,15 +6,33 @@ namespace osu.Game.Rulesets.UI.Scrolling.Algorithms public interface IScrollAlgorithm { /// - /// Given a point in time, computes the time at which it enters the time range. + /// Given a point in time associated with an object's origin + /// and the spatial distance between the edge and the origin of the object along the scrolling axis, + /// computes the time at which the object initially enters the time range. /// - /// - /// E.g. For a constant time range of 5000ms, the time at which t=7000ms enters the time range is 2000ms. - /// - /// The point in time. + /// + /// Let's assume the following parameters: + /// + /// = 7000ms, + /// = 100px, + /// = 5000ms, + /// = 1000px + /// + /// and a constant scrolling rate. + /// To arrive at the end of the scrolling container, the object's origin has to cover + /// 1000 + 100 = 1100px + /// so that the edge starts at the end of the scrolling container. + /// One scroll length of 1000px covers 5000ms of time, so the time required to cover 1100px is equal to + /// 5000 * (1100 / 1000) = 5500ms, + /// and therefore the object should start being visible at + /// 7000 - 5500 = 1500ms. + /// + /// The time point at which the object origin should enter the time range. + /// The spatial distance between the object's edge and its origin along the scrolling axis. /// The amount of visible time. - /// The time at which enters . - double GetDisplayStartTime(double time, double timeRange); + /// The absolute spatial length through . + /// The time at which the object should enter the time range. + double GetDisplayStartTime(double originTime, float offset, double timeRange, float scrollLength); /// /// Computes the spatial length within a start and end time. diff --git a/osu.Game/Rulesets/UI/Scrolling/Algorithms/OverlappingScrollAlgorithm.cs b/osu.Game/Rulesets/UI/Scrolling/Algorithms/OverlappingScrollAlgorithm.cs index fe22a86fad..7b827e0c63 100644 --- a/osu.Game/Rulesets/UI/Scrolling/Algorithms/OverlappingScrollAlgorithm.cs +++ b/osu.Game/Rulesets/UI/Scrolling/Algorithms/OverlappingScrollAlgorithm.cs @@ -20,11 +20,12 @@ namespace osu.Game.Rulesets.UI.Scrolling.Algorithms searchPoint = new MultiplierControlPoint(); } - public double GetDisplayStartTime(double time, double timeRange) + public double GetDisplayStartTime(double originTime, float offset, double timeRange, float scrollLength) { + var controlPoint = controlPointAt(originTime); // The total amount of time that the hitobject will remain visible within the timeRange, which decreases as the speed multiplier increases - double visibleDuration = timeRange / controlPointAt(time).Multiplier; - return time - visibleDuration; + double visibleDuration = (scrollLength + offset) * timeRange / controlPoint.Multiplier / scrollLength; + return originTime - visibleDuration; } public float GetLength(double startTime, double endTime, double timeRange, float scrollLength) diff --git a/osu.Game/Rulesets/UI/Scrolling/Algorithms/SequentialScrollAlgorithm.cs b/osu.Game/Rulesets/UI/Scrolling/Algorithms/SequentialScrollAlgorithm.cs index 3c9a205412..41f9ebdb82 100644 --- a/osu.Game/Rulesets/UI/Scrolling/Algorithms/SequentialScrollAlgorithm.cs +++ b/osu.Game/Rulesets/UI/Scrolling/Algorithms/SequentialScrollAlgorithm.cs @@ -20,7 +20,11 @@ namespace osu.Game.Rulesets.UI.Scrolling.Algorithms positionCache = new Dictionary(); } - public double GetDisplayStartTime(double time, double timeRange) => time - timeRange - 1000; + public double GetDisplayStartTime(double originTime, float offset, double timeRange, float scrollLength) + { + double adjustedTime = TimeAt(-offset, originTime, timeRange, scrollLength); + return adjustedTime - timeRange - 1000; + } public float GetLength(double startTime, double endTime, double timeRange, float scrollLength) { diff --git a/osu.Game/Rulesets/UI/Scrolling/ScrollingHitObjectContainer.cs b/osu.Game/Rulesets/UI/Scrolling/ScrollingHitObjectContainer.cs index 04b4374fc4..83a7f7289f 100644 --- a/osu.Game/Rulesets/UI/Scrolling/ScrollingHitObjectContainer.cs +++ b/osu.Game/Rulesets/UI/Scrolling/ScrollingHitObjectContainer.cs @@ -133,8 +133,7 @@ namespace osu.Game.Rulesets.UI.Scrolling break; } - var adjustedStartTime = scrollingInfo.Algorithm.TimeAt(-originAdjustment, hitObject.HitObject.StartTime, timeRange.Value, scrollLength); - return scrollingInfo.Algorithm.GetDisplayStartTime(adjustedStartTime, timeRange.Value); + return scrollingInfo.Algorithm.GetDisplayStartTime(hitObject.HitObject.StartTime, originAdjustment, timeRange.Value, scrollLength); } // Cant use AddOnce() since the delegate is re-constructed every invocation diff --git a/osu.Game/Tests/Visual/ScrollingTestContainer.cs b/osu.Game/Tests/Visual/ScrollingTestContainer.cs index 161ebe7030..18326a78ad 100644 --- a/osu.Game/Tests/Visual/ScrollingTestContainer.cs +++ b/osu.Game/Tests/Visual/ScrollingTestContainer.cs @@ -86,8 +86,8 @@ namespace osu.Game.Tests.Visual } } - public double GetDisplayStartTime(double time, double timeRange) - => implementation.GetDisplayStartTime(time, timeRange); + public double GetDisplayStartTime(double originTime, float offset, double timeRange, float scrollLength) + => implementation.GetDisplayStartTime(originTime, offset, timeRange, scrollLength); public float GetLength(double startTime, double endTime, double timeRange, float scrollLength) => implementation.GetLength(startTime, endTime, timeRange, scrollLength); From 7460018cd3775394d3eca84e282bb0b165633b41 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 7 Feb 2020 14:58:07 +0900 Subject: [PATCH 1359/1829] Move combo colours to GlobalSkinColours --- .../TestSceneLegacyBeatmapSkin.cs | 2 +- .../Gameplay/TestSceneHitObjectAccentColour.cs | 4 ++-- .../Skins/TestSceneSkinConfigurationLookup.cs | 6 +++--- .../Objects/Drawables/DrawableHitObject.cs | 2 +- osu.Game/Screens/Menu/LogoVisualisation.cs | 2 +- osu.Game/Screens/Menu/MenuSideFlashes.cs | 2 +- osu.Game/Skinning/DefaultSkin.cs | 4 ++-- .../{GlobalSkinColour.cs => GlobalSkinColours.cs} | 3 ++- osu.Game/Skinning/GlobalSkinConfiguration.cs | 1 - osu.Game/Skinning/LegacySkin.cs | 15 +++++++++------ 10 files changed, 22 insertions(+), 19 deletions(-) rename osu.Game/Skinning/{GlobalSkinColour.cs => GlobalSkinColours.cs} (79%) diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs index bbb50c287b..3ff37c4147 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneLegacyBeatmapSkin.cs @@ -89,7 +89,7 @@ namespace osu.Game.Rulesets.Osu.Tests public IReadOnlyList UsableComboColours => GameplayClockContainer.ChildrenOfType() .First() - .GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value; + .GetConfig>(GlobalSkinColours.ComboColours)?.Value; } private class CustomSkinWorkingBeatmap : ClockBackedTestWorkingBeatmap diff --git a/osu.Game.Tests/Gameplay/TestSceneHitObjectAccentColour.cs b/osu.Game.Tests/Gameplay/TestSceneHitObjectAccentColour.cs index c6d1f9da29..17dc27543d 100644 --- a/osu.Game.Tests/Gameplay/TestSceneHitObjectAccentColour.cs +++ b/osu.Game.Tests/Gameplay/TestSceneHitObjectAccentColour.cs @@ -126,10 +126,10 @@ namespace osu.Game.Tests.Gameplay { switch (lookup) { - case GlobalSkinConfiguration global: + case GlobalSkinColours global: switch (global) { - case GlobalSkinConfiguration.ComboColours: + case GlobalSkinColours.ComboColours: return SkinUtils.As(new Bindable>(ComboColours)); } diff --git a/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs b/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs index ed54cc982d..35313ee858 100644 --- a/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs +++ b/osu.Game.Tests/Skins/TestSceneSkinConfigurationLookup.cs @@ -95,7 +95,7 @@ namespace osu.Game.Tests.Skins [Test] public void TestGlobalLookup() { - AddAssert("Check combo colours", () => requester.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value?.Count > 0); + AddAssert("Check combo colours", () => requester.GetConfig>(GlobalSkinColours.ComboColours)?.Value?.Count > 0); } [Test] @@ -121,7 +121,7 @@ namespace osu.Game.Tests.Skins public void TestEmptyComboColours() { AddAssert("Check retrieved combo colours is skin default colours", () => - requester.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value?.SequenceEqual(SkinConfiguration.DefaultComboColours) ?? false); + requester.GetConfig>(GlobalSkinColours.ComboColours)?.Value?.SequenceEqual(SkinConfiguration.DefaultComboColours) ?? false); } [Test] @@ -136,7 +136,7 @@ namespace osu.Game.Tests.Skins AddStep("Disallow default colours fallback in source2", () => source2.Configuration.AllowDefaultComboColoursFallback = false); AddAssert("Check retrieved combo colours from source1", () => - requester.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value?.SequenceEqual(source1.Configuration.ComboColours) ?? false); + requester.GetConfig>(GlobalSkinColours.ComboColours)?.Value?.SequenceEqual(source1.Configuration.ComboColours) ?? false); } [Test] diff --git a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs index 4ac30fe7fb..e391157b5b 100644 --- a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs +++ b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs @@ -349,7 +349,7 @@ namespace osu.Game.Rulesets.Objects.Drawables { if (HitObject is IHasComboInformation combo) { - var comboColours = CurrentSkin.GetConfig>(GlobalSkinConfiguration.ComboColours)?.Value; + var comboColours = CurrentSkin.GetConfig>(GlobalSkinColours.ComboColours)?.Value; AccentColour.Value = comboColours?.Count > 0 ? comboColours[combo.ComboIndex % comboColours.Count] : Color4.White; } } diff --git a/osu.Game/Screens/Menu/LogoVisualisation.cs b/osu.Game/Screens/Menu/LogoVisualisation.cs index 8fc07f5989..06ca161fed 100644 --- a/osu.Game/Screens/Menu/LogoVisualisation.cs +++ b/osu.Game/Screens/Menu/LogoVisualisation.cs @@ -123,7 +123,7 @@ namespace osu.Game.Screens.Menu Color4 defaultColour = Color4.White.Opacity(0.2f); if (user.Value?.IsSupporter ?? false) - AccentColour = skin.Value.GetConfig(GlobalSkinColour.MenuGlow)?.Value ?? defaultColour; + AccentColour = skin.Value.GetConfig(GlobalSkinColours.MenuGlow)?.Value ?? defaultColour; else AccentColour = defaultColour; } diff --git a/osu.Game/Screens/Menu/MenuSideFlashes.cs b/osu.Game/Screens/Menu/MenuSideFlashes.cs index 3a88cda4ef..321381ac8d 100644 --- a/osu.Game/Screens/Menu/MenuSideFlashes.cs +++ b/osu.Game/Screens/Menu/MenuSideFlashes.cs @@ -112,7 +112,7 @@ namespace osu.Game.Screens.Menu Color4 baseColour = colours.Blue; if (user.Value?.IsSupporter ?? false) - baseColour = skin.Value.GetConfig(GlobalSkinColour.MenuGlow)?.Value ?? baseColour; + baseColour = skin.Value.GetConfig(GlobalSkinColours.MenuGlow)?.Value ?? baseColour; // linear colour looks better in this case, so let's use it for now. Color4 gradientDark = baseColour.Opacity(0).ToLinear(); diff --git a/osu.Game/Skinning/DefaultSkin.cs b/osu.Game/Skinning/DefaultSkin.cs index 2a065ea3d7..6b4af21b37 100644 --- a/osu.Game/Skinning/DefaultSkin.cs +++ b/osu.Game/Skinning/DefaultSkin.cs @@ -31,10 +31,10 @@ namespace osu.Game.Skinning { // todo: this code is pulled from LegacySkin and should not exist. // will likely change based on how databased storage of skin configuration goes. - case GlobalSkinConfiguration global: + case GlobalSkinColours global: switch (global) { - case GlobalSkinConfiguration.ComboColours: + case GlobalSkinColours.ComboColours: return SkinUtils.As(new Bindable>(Configuration.ComboColours)); } diff --git a/osu.Game/Skinning/GlobalSkinColour.cs b/osu.Game/Skinning/GlobalSkinColours.cs similarity index 79% rename from osu.Game/Skinning/GlobalSkinColour.cs rename to osu.Game/Skinning/GlobalSkinColours.cs index d039be98ce..f889371b98 100644 --- a/osu.Game/Skinning/GlobalSkinColour.cs +++ b/osu.Game/Skinning/GlobalSkinColours.cs @@ -3,8 +3,9 @@ namespace osu.Game.Skinning { - public enum GlobalSkinColour + public enum GlobalSkinColours { + ComboColours, MenuGlow } } diff --git a/osu.Game/Skinning/GlobalSkinConfiguration.cs b/osu.Game/Skinning/GlobalSkinConfiguration.cs index 66dc9a9395..0532e64546 100644 --- a/osu.Game/Skinning/GlobalSkinConfiguration.cs +++ b/osu.Game/Skinning/GlobalSkinConfiguration.cs @@ -5,6 +5,5 @@ namespace osu.Game.Skinning { public enum GlobalSkinConfiguration { - ComboColours } } diff --git a/osu.Game/Skinning/LegacySkin.cs b/osu.Game/Skinning/LegacySkin.cs index 671d37fda4..609fb79d9a 100644 --- a/osu.Game/Skinning/LegacySkin.cs +++ b/osu.Game/Skinning/LegacySkin.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.Collections.Generic; using System.IO; using System.Linq; @@ -68,22 +69,22 @@ namespace osu.Game.Skinning { switch (lookup) { - case GlobalSkinConfiguration global: - switch (global) + case GlobalSkinColours colour: + switch (colour) { - case GlobalSkinConfiguration.ComboColours: + case GlobalSkinColours.ComboColours: var comboColours = Configuration.ComboColours; if (comboColours != null) return SkinUtils.As(new Bindable>(comboColours)); break; + + default: + return SkinUtils.As(getCustomColour(colour.ToString())); } break; - case GlobalSkinColour colour: - return SkinUtils.As(getCustomColour(colour.ToString())); - case LegacySkinConfiguration.LegacySetting legacy: switch (legacy) { @@ -100,6 +101,8 @@ namespace osu.Game.Skinning return SkinUtils.As(getCustomColour(customColour.Lookup.ToString())); default: + // handles lookups like GlobalSkinConfiguration + try { if (Configuration.ConfigDictionary.TryGetValue(lookup.ToString(), out var val)) From 544685be4863631b47df94f19d4f6307cb014d71 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 7 Feb 2020 14:58:29 +0900 Subject: [PATCH 1360/1829] Add support for reading skin frame rate from configuration file --- .../Skinning/OsuLegacySkinTransformer.cs | 9 ++- osu.Game/Skinning/GlobalSkinConfiguration.cs | 1 + osu.Game/Skinning/LegacySkinExtensions.cs | 72 +++++++++++-------- 3 files changed, 51 insertions(+), 31 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs b/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs index 266b619334..d6c3f443eb 100644 --- a/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs +++ b/osu.Game.Rulesets.Osu/Skinning/OsuLegacySkinTransformer.cs @@ -46,17 +46,20 @@ namespace osu.Game.Rulesets.Osu.Skinning switch (osuComponent.Component) { case OsuSkinComponents.FollowPoint: - return this.GetAnimation(component.LookupName, true, false); + return this.GetAnimation(component.LookupName, true, false, true); case OsuSkinComponents.SliderFollowCircle: - var followCircle = this.GetAnimation("sliderfollowcircle", true, true); + var followCircle = this.GetAnimation("sliderfollowcircle", true, true, true); if (followCircle != null) // follow circles are 2x the hitcircle resolution in legacy skins (since they are scaled down from >1x followCircle.Scale *= 0.5f; return followCircle; case OsuSkinComponents.SliderBall: - var sliderBallContent = this.GetAnimation("sliderb", true, true, ""); + var sliderBallContent = this.GetAnimation("sliderb", true, true, animationSeparator: ""); + + // todo: slider ball has a custom frame delay based on velocity + // Math.Max((150 / Velocity) * GameBase.SIXTY_FRAME_TIME, GameBase.SIXTY_FRAME_TIME); if (sliderBallContent != null) { diff --git a/osu.Game/Skinning/GlobalSkinConfiguration.cs b/osu.Game/Skinning/GlobalSkinConfiguration.cs index 0532e64546..8774fe5a97 100644 --- a/osu.Game/Skinning/GlobalSkinConfiguration.cs +++ b/osu.Game/Skinning/GlobalSkinConfiguration.cs @@ -5,5 +5,6 @@ namespace osu.Game.Skinning { public enum GlobalSkinConfiguration { + AnimationFramerate } } diff --git a/osu.Game/Skinning/LegacySkinExtensions.cs b/osu.Game/Skinning/LegacySkinExtensions.cs index c758b699ed..fa4de21eec 100644 --- a/osu.Game/Skinning/LegacySkinExtensions.cs +++ b/osu.Game/Skinning/LegacySkinExtensions.cs @@ -1,6 +1,8 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. +using System.Collections.Generic; +using System.Linq; using osu.Framework.Graphics; using osu.Framework.Graphics.Animations; using osu.Framework.Graphics.Sprites; @@ -10,48 +12,62 @@ namespace osu.Game.Skinning { public static class LegacySkinExtensions { - public static Drawable GetAnimation(this ISkin source, string componentName, bool animatable, bool looping, string animationSeparator = "-") + public static Drawable GetAnimation(this ISkin source, string componentName, bool animatable, bool looping, bool applyConfigFrameRate = false, string animationSeparator = "-") { - const double default_frame_time = 1000 / 60d; - Texture texture; - Texture getFrameTexture(int frame) => source.GetTexture($"{componentName}{animationSeparator}{frame}"); - - TextureAnimation animation = null; - if (animatable) { - for (int i = 0; true; i++) + var textures = getTextures().ToArray(); + + if (textures.Length > 0) { - if ((texture = getFrameTexture(i)) == null) - break; - - if (animation == null) + var animation = new TextureAnimation { - animation = new TextureAnimation - { - DefaultFrameLength = default_frame_time, - Repeat = looping - }; - } + DefaultFrameLength = getFrameLength(source, applyConfigFrameRate, textures), + Repeat = looping, + }; - animation.AddFrame(texture); + foreach (var t in textures) + animation.AddFrame(t); + + return animation; } } - if (animation != null) - return animation; - + // if an animation was not allowed or not found, fall back to a sprite retrieval. if ((texture = source.GetTexture(componentName)) != null) - { - return new Sprite - { - Texture = texture - }; - } + return new Sprite { Texture = texture }; return null; + + IEnumerable getTextures() + { + for (int i = 0; true; i++) + { + if ((texture = source.GetTexture($"{componentName}{animationSeparator}{i}")) == null) + break; + + yield return texture; + } + } + } + + private const double default_frame_time = 1000 / 60d; + + private static double getFrameLength(ISkin source, bool applyConfigFrameRate, Texture[] textures) + { + if (applyConfigFrameRate) + { + var iniRate = source.GetConfig(GlobalSkinConfiguration.AnimationFramerate); + + if (iniRate != null) + return 1000f / iniRate.Value; + + return 1000f / textures.Length; + } + + return default_frame_time; } } } From 9181bb41c621c217c187535e9d899a7d8a76258d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 7 Feb 2020 15:11:09 +0900 Subject: [PATCH 1361/1829] Remove unused using --- osu.Game/Skinning/LegacySkin.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Skinning/LegacySkin.cs b/osu.Game/Skinning/LegacySkin.cs index 609fb79d9a..94611317d5 100644 --- a/osu.Game/Skinning/LegacySkin.cs +++ b/osu.Game/Skinning/LegacySkin.cs @@ -1,7 +1,6 @@ // 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 System.IO; using System.Linq; From c392ba6a7e35c7a6546cb21168ea9241264158e6 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 7 Feb 2020 15:46:10 +0900 Subject: [PATCH 1362/1829] 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 702591231b..25bde037db 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 81f59a4993..21c9eab4c6 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 8e359970a1..3ed25360c5 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From f63bf0637305ecdd866dfa9667a8dfa6442c80c9 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 7 Feb 2020 16:09:54 +0900 Subject: [PATCH 1363/1829] Fix incorrect distance snap grid being displayed when in selection mode --- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index 0014360d24..afe5d2b93b 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -174,7 +174,7 @@ namespace osu.Game.Rulesets.Edit { base.Update(); - if (EditorClock.CurrentTime != lastGridUpdateTime && blueprintContainer.CurrentTool != null) + if (EditorClock.CurrentTime != lastGridUpdateTime && !(blueprintContainer.CurrentTool is SelectTool)) showGridFor(Enumerable.Empty()); } @@ -328,7 +328,7 @@ namespace osu.Game.Rulesets.Edit /// Creates the applicable for a selection. /// /// The selection. - /// The for . + /// The for . If empty, a grid is returned for the current poitn in time. [CanBeNull] protected virtual DistanceSnapGrid CreateDistanceSnapGrid([NotNull] IEnumerable selectedHitObjects) => null; From 3aa18abd99b492cd6b01aa1d777ed5559134dbe9 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 7 Feb 2020 16:22:59 +0900 Subject: [PATCH 1364/1829] Fix typo in xmldoc Co-Authored-By: Tree --- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index afe5d2b93b..6c81d70190 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -328,7 +328,7 @@ namespace osu.Game.Rulesets.Edit /// Creates the applicable for a selection. ///
    /// The selection. - /// The for . If empty, a grid is returned for the current poitn in time. + /// The for . If empty, a grid is returned for the current point in time. [CanBeNull] protected virtual DistanceSnapGrid CreateDistanceSnapGrid([NotNull] IEnumerable selectedHitObjects) => null; From 9997ae17bc17dc45cd790e151c416786a727f6e6 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 7 Feb 2020 16:42:56 +0900 Subject: [PATCH 1365/1829] Fix editor test scene exiting after loading --- osu.Game/Tests/Visual/EditorTestScene.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/osu.Game/Tests/Visual/EditorTestScene.cs b/osu.Game/Tests/Visual/EditorTestScene.cs index 75bbb3e110..80bc3bdb87 100644 --- a/osu.Game/Tests/Visual/EditorTestScene.cs +++ b/osu.Game/Tests/Visual/EditorTestScene.cs @@ -24,8 +24,13 @@ namespace osu.Game.Tests.Visual private void load() { Beatmap.Value = CreateWorkingBeatmap(ruleset.RulesetInfo); + } - LoadScreen(new Editor()); + public override void SetUpSteps() + { + base.SetUpSteps(); + + AddStep("Load editor", () => LoadScreen(new Editor())); } } } From 89901523159eaa8cbc01f473cb7e6142fed6a8ee Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 7 Feb 2020 16:43:50 +0900 Subject: [PATCH 1366/1829] Fix duration snapping still being incorrect --- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index 0014360d24..1312122cf4 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -289,7 +289,11 @@ namespace osu.Game.Rulesets.Edit => beatSnapProvider.SnapTime(referenceTime + DistanceToDuration(referenceTime, distance), referenceTime) - referenceTime; public override float GetSnappedDistanceFromDistance(double referenceTime, float distance) - => DurationToDistance(referenceTime, beatSnapProvider.SnapTime(DistanceToDuration(referenceTime, distance), referenceTime)); + { + var snappedEndTime = beatSnapProvider.SnapTime(referenceTime + DistanceToDuration(referenceTime, distance), referenceTime); + + return DurationToDistance(referenceTime, snappedEndTime - referenceTime); + } public override void UpdateHitObject(HitObject hitObject) => EditorBeatmap.UpdateHitObject(hitObject); From b7996f91fc0849f767a9251be2763f81fdca8e60 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 7 Feb 2020 17:51:38 +0900 Subject: [PATCH 1367/1829] Update the windows platform offset to match stable --- osu.Game/Screens/Play/GameplayClockContainer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Play/GameplayClockContainer.cs b/osu.Game/Screens/Play/GameplayClockContainer.cs index 9f46fddc5e..1c061c215b 100644 --- a/osu.Game/Screens/Play/GameplayClockContainer.cs +++ b/osu.Game/Screens/Play/GameplayClockContainer.cs @@ -78,7 +78,7 @@ namespace osu.Game.Screens.Play // Lazer's audio timings in general doesn't match stable. This is the result of user testing, albeit limited. // This only seems to be required on windows. We need to eventually figure out why, with a bit of luck. - platformOffsetClock = new FramedOffsetClock(adjustableClock) { Offset = RuntimeInfo.OS == RuntimeInfo.Platform.Windows ? 22 : 0 }; + platformOffsetClock = new FramedOffsetClock(adjustableClock) { Offset = RuntimeInfo.OS == RuntimeInfo.Platform.Windows ? 15 : 0 }; // the final usable gameplay clock with user-set offsets applied. userOffsetClock = new FramedOffsetClock(platformOffsetClock); From e31d69c7497b666aec2b3f982cd4d18a10df1e89 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 7 Feb 2020 18:02:48 +0900 Subject: [PATCH 1368/1829] Add commit status to EndPlacement; call BeginPlacement on initial movement --- .../Edit/Blueprints/ManiaPlacementBlueprint.cs | 2 +- .../Blueprints/HitCircles/HitCirclePlacementBlueprint.cs | 3 ++- .../Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs | 3 ++- .../Blueprints/Spinners/SpinnerPlacementBlueprint.cs | 2 +- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 9 ++++++--- osu.Game/Rulesets/Edit/PlacementBlueprint.cs | 5 +++-- .../Edit/Compose/Components/ComposeBlueprintContainer.cs | 2 ++ osu.Game/Screens/Edit/Compose/IPlacementHandler.cs | 3 ++- osu.Game/Tests/Visual/PlacementBlueprintTestScene.cs | 5 +++-- 9 files changed, 22 insertions(+), 12 deletions(-) diff --git a/osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaPlacementBlueprint.cs b/osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaPlacementBlueprint.cs index 7a3b42914e..362d6d40a8 100644 --- a/osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaPlacementBlueprint.cs +++ b/osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaPlacementBlueprint.cs @@ -56,7 +56,7 @@ namespace osu.Game.Rulesets.Mania.Edit.Blueprints protected override void OnMouseUp(MouseUpEvent e) { - EndPlacement(); + EndPlacement(true); base.OnMouseUp(e); } diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/HitCircles/HitCirclePlacementBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/HitCircles/HitCirclePlacementBlueprint.cs index bb47c7e464..407f5f540e 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/HitCircles/HitCirclePlacementBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/HitCircles/HitCirclePlacementBlueprint.cs @@ -30,12 +30,13 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.HitCircles protected override bool OnClick(ClickEvent e) { - EndPlacement(); + EndPlacement(true); return true; } public override void UpdatePosition(Vector2 screenSpacePosition) { + BeginPlacement(); HitObject.Position = ToLocalSpace(screenSpacePosition); } } diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs index 90512849d4..75d05b9b6c 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs @@ -68,6 +68,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders switch (state) { case PlacementState.Initial: + BeginPlacement(); HitObject.Position = ToLocalSpace(screenSpacePosition); break; @@ -132,7 +133,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders private void endCurve() { updateSlider(); - EndPlacement(); + EndPlacement(true); } protected override void Update() diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Spinners/SpinnerPlacementBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Spinners/SpinnerPlacementBlueprint.cs index 5525b8936e..8dc3cb0855 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Spinners/SpinnerPlacementBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Spinners/SpinnerPlacementBlueprint.cs @@ -37,7 +37,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Spinners if (isPlacingEnd) { HitObject.EndTime = EditorClock.CurrentTime; - EndPlacement(); + EndPlacement(true); } else { diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index e181e1f431..e3f2fa915a 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -254,11 +254,14 @@ namespace osu.Game.Rulesets.Edit hitObject.StartTime = GetSnappedPosition(distanceSnapGrid.ToLocalSpace(inputManager.CurrentState.Mouse.Position), hitObject.StartTime).time; } - public void EndPlacement(HitObject hitObject) + public void EndPlacement(HitObject hitObject, bool commit) { - EditorBeatmap.Add(hitObject); + if (commit) + { + EditorBeatmap.Add(hitObject); - adjustableClock.Seek(hitObject.StartTime); + adjustableClock.Seek(hitObject.StartTime); + } showGridFor(Enumerable.Empty()); } diff --git a/osu.Game/Rulesets/Edit/PlacementBlueprint.cs b/osu.Game/Rulesets/Edit/PlacementBlueprint.cs index 07283d2245..24fa96e1c5 100644 --- a/osu.Game/Rulesets/Edit/PlacementBlueprint.cs +++ b/osu.Game/Rulesets/Edit/PlacementBlueprint.cs @@ -103,11 +103,12 @@ namespace osu.Game.Rulesets.Edit /// Signals that the placement of has finished. /// This will destroy this , and add the to the . ///
    - protected void EndPlacement() + /// Whether the object should be committed. + public void EndPlacement(bool commit) { if (!PlacementBegun) BeginPlacement(); - placementHandler.EndPlacement(HitObject); + placementHandler.EndPlacement(HitObject, commit); } /// diff --git a/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs index 3c41dead5d..b257688568 100644 --- a/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs @@ -63,6 +63,8 @@ namespace osu.Game.Screens.Edit.Compose.Components private void refreshTool() { placementBlueprintContainer.Clear(); + + currentPlacement?.EndPlacement(false); currentPlacement = null; var blueprint = CurrentTool?.CreatePlacementBlueprint(); diff --git a/osu.Game/Screens/Edit/Compose/IPlacementHandler.cs b/osu.Game/Screens/Edit/Compose/IPlacementHandler.cs index 47a4277430..aefcbc6542 100644 --- a/osu.Game/Screens/Edit/Compose/IPlacementHandler.cs +++ b/osu.Game/Screens/Edit/Compose/IPlacementHandler.cs @@ -17,7 +17,8 @@ namespace osu.Game.Screens.Edit.Compose /// Notifies that a placement has finished. /// /// The that has been placed. - void EndPlacement(HitObject hitObject); + /// Whether the object should be committed. + void EndPlacement(HitObject hitObject, bool commit); /// /// Deletes a . diff --git a/osu.Game/Tests/Visual/PlacementBlueprintTestScene.cs b/osu.Game/Tests/Visual/PlacementBlueprintTestScene.cs index 0688620b8e..ce95dfa62f 100644 --- a/osu.Game/Tests/Visual/PlacementBlueprintTestScene.cs +++ b/osu.Game/Tests/Visual/PlacementBlueprintTestScene.cs @@ -53,9 +53,10 @@ namespace osu.Game.Tests.Visual { } - public void EndPlacement(HitObject hitObject) + public void EndPlacement(HitObject hitObject, bool commit) { - AddHitObject(CreateHitObject(hitObject)); + if (commit) + AddHitObject(CreateHitObject(hitObject)); Remove(currentBlueprint); Add(currentBlueprint = CreateBlueprint()); From e08437c5dc34ec3bec18e81d5556e83c1fb56727 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 7 Feb 2020 18:03:14 +0900 Subject: [PATCH 1369/1829] Track placement object in EditorBeatmap --- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 4 ++++ osu.Game/Screens/Edit/EditorBeatmap.cs | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index e3f2fa915a..d946b2eb7f 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -250,12 +250,16 @@ namespace osu.Game.Rulesets.Edit public void BeginPlacement(HitObject hitObject) { + EditorBeatmap.PlacementObject.Value = hitObject; + if (distanceSnapGrid != null) hitObject.StartTime = GetSnappedPosition(distanceSnapGrid.ToLocalSpace(inputManager.CurrentState.Mouse.Position), hitObject.StartTime).time; } public void EndPlacement(HitObject hitObject, bool commit) { + EditorBeatmap.PlacementObject.Value = null; + if (commit) { EditorBeatmap.Add(hitObject); diff --git a/osu.Game/Screens/Edit/EditorBeatmap.cs b/osu.Game/Screens/Edit/EditorBeatmap.cs index cacb539891..e1f3ddf191 100644 --- a/osu.Game/Screens/Edit/EditorBeatmap.cs +++ b/osu.Game/Screens/Edit/EditorBeatmap.cs @@ -33,7 +33,15 @@ namespace osu.Game.Screens.Edit /// public event Action StartTimeChanged; - public BindableList SelectedHitObjects { get; } = new BindableList(); + /// + /// All currently selected s. + /// + public readonly BindableList SelectedHitObjects = new BindableList(); + + /// + /// The current placement + /// + public readonly Bindable PlacementObject = new Bindable(); public readonly IBeatmap PlayableBeatmap; From 56a091674b31fbe80d9ff08b704cfe8cd2fd7850 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 7 Feb 2020 18:04:10 +0900 Subject: [PATCH 1370/1829] Add placement display to timeline --- .../Compose/Components/BlueprintContainer.cs | 24 +++++++------- .../Timeline/TimelineBlueprintContainer.cs | 31 +++++++++++++++++++ 2 files changed, 43 insertions(+), 12 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index 675b2b648d..55b2b801e7 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -32,7 +32,7 @@ namespace osu.Game.Screens.Edit.Compose.Components protected DragBox DragBox { get; private set; } - private Container selectionBlueprints; + protected Container SelectionBlueprints; private SelectionHandler selectionHandler; @@ -62,7 +62,7 @@ namespace osu.Game.Screens.Edit.Compose.Components { DragBox = CreateDragBox(select), selectionHandler, - selectionBlueprints = CreateSelectionBlueprintContainer(), + SelectionBlueprints = CreateSelectionBlueprintContainer(), DragBox.CreateProxy().With(p => p.Depth = float.MinValue) }); @@ -73,7 +73,7 @@ namespace osu.Game.Screens.Edit.Compose.Components selectedHitObjects.ItemsAdded += objects => { foreach (var o in objects) - selectionBlueprints.FirstOrDefault(b => b.HitObject == o)?.Select(); + SelectionBlueprints.FirstOrDefault(b => b.HitObject == o)?.Select(); SelectionChanged?.Invoke(selectedHitObjects); }; @@ -81,7 +81,7 @@ namespace osu.Game.Screens.Edit.Compose.Components selectedHitObjects.ItemsRemoved += objects => { foreach (var o in objects) - selectionBlueprints.FirstOrDefault(b => b.HitObject == o)?.Deselect(); + SelectionBlueprints.FirstOrDefault(b => b.HitObject == o)?.Deselect(); SelectionChanged?.Invoke(selectedHitObjects); }; @@ -230,7 +230,7 @@ namespace osu.Game.Screens.Edit.Compose.Components private void removeBlueprintFor(HitObject hitObject) { - var blueprint = selectionBlueprints.SingleOrDefault(m => m.HitObject == hitObject); + var blueprint = SelectionBlueprints.SingleOrDefault(m => m.HitObject == hitObject); if (blueprint == null) return; @@ -239,7 +239,7 @@ namespace osu.Game.Screens.Edit.Compose.Components blueprint.Selected -= onBlueprintSelected; blueprint.Deselected -= onBlueprintDeselected; - selectionBlueprints.Remove(blueprint); + SelectionBlueprints.Remove(blueprint); } protected virtual void AddBlueprintFor(HitObject hitObject) @@ -251,7 +251,7 @@ namespace osu.Game.Screens.Edit.Compose.Components blueprint.Selected += onBlueprintSelected; blueprint.Deselected += onBlueprintDeselected; - selectionBlueprints.Add(blueprint); + SelectionBlueprints.Add(blueprint); } #endregion @@ -278,7 +278,7 @@ namespace osu.Game.Screens.Edit.Compose.Components if (!allowDeselection && selectionHandler.SelectedBlueprints.Any(s => s.IsHovered)) return; - foreach (SelectionBlueprint blueprint in selectionBlueprints.AliveChildren) + foreach (SelectionBlueprint blueprint in SelectionBlueprints.AliveChildren) { if (blueprint.IsHovered) { @@ -308,7 +308,7 @@ namespace osu.Game.Screens.Edit.Compose.Components /// The rectangle to perform a selection on in screen-space coordinates. private void select(RectangleF rect) { - foreach (var blueprint in selectionBlueprints) + foreach (var blueprint in SelectionBlueprints) { if (blueprint.IsAlive && blueprint.IsPresent && rect.Contains(blueprint.SelectionPoint)) blueprint.Select(); @@ -322,7 +322,7 @@ namespace osu.Game.Screens.Edit.Compose.Components ///
    private void selectAll() { - selectionBlueprints.ToList().ForEach(m => m.Select()); + SelectionBlueprints.ToList().ForEach(m => m.Select()); selectionHandler.UpdateVisibility(); } @@ -334,14 +334,14 @@ namespace osu.Game.Screens.Edit.Compose.Components private void onBlueprintSelected(SelectionBlueprint blueprint) { selectionHandler.HandleSelected(blueprint); - selectionBlueprints.ChangeChildDepth(blueprint, 1); + SelectionBlueprints.ChangeChildDepth(blueprint, 1); beatmap.SelectedHitObjects.Add(blueprint.HitObject); } private void onBlueprintDeselected(SelectionBlueprint blueprint) { selectionHandler.HandleDeselected(blueprint); - selectionBlueprints.ChangeChildDepth(blueprint, 0); + SelectionBlueprints.ChangeChildDepth(blueprint, 0); beatmap.SelectedHitObjects.Remove(blueprint.HitObject); } diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs index 9f3d776e5c..84328466c3 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineBlueprintContainer.cs @@ -3,6 +3,7 @@ using System; using osu.Framework.Allocation; +using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Primitives; @@ -21,8 +22,15 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline [Resolved(CanBeNull = true)] private Timeline timeline { get; set; } + [Resolved] + private EditorBeatmap beatmap { get; set; } + private DragEvent lastDragEvent; + private Bindable placement; + + private SelectionBlueprint placementBlueprint; + public TimelineBlueprintContainer() { RelativeSizeAxes = Axes.Both; @@ -43,6 +51,29 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline { base.LoadComplete(); DragBox.Alpha = 0; + + placement = beatmap.PlacementObject.GetBoundCopy(); + placement.ValueChanged += placementChanged; + } + + private void placementChanged(ValueChangedEvent obj) + { + if (obj.NewValue == null) + { + if (placementBlueprint != null) + { + SelectionBlueprints.Remove(placementBlueprint); + placementBlueprint = null; + } + } + else + { + placementBlueprint = CreateBlueprintFor(obj.NewValue); + + placementBlueprint.Colour = Color4.MediumPurple; + + SelectionBlueprints.Add(placementBlueprint); + } } protected override Container CreateSelectionBlueprintContainer() => new TimelineSelectionBlueprintContainer { RelativeSizeAxes = Axes.Both }; From 881d192af3ecdc9cc9f950bd4e607b70bb3c969d Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 7 Feb 2020 12:07:16 +0300 Subject: [PATCH 1371/1829] Fix crash when selecting spotlight tab with not-null country --- osu.Game/Overlays/RankingsOverlay.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index 4fc94420a4..a0aeff082e 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -110,7 +110,8 @@ namespace osu.Game.Overlays if (Country.Value != null) Scope.Value = RankingsScope.Performance; - Scheduler.AddOnce(loadNewContent); + if (Scope.Value != RankingsScope.Spotlights) + Scheduler.AddOnce(loadNewContent); }, true); Scope.BindValueChanged(_ => From 2082948f9a4f1ee2573e4217b78068f561da0766 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 7 Feb 2020 18:23:59 +0900 Subject: [PATCH 1372/1829] Make editor screens display below timeline --- .../Screens/Edit/EditorScreenWithTimeline.cs | 86 +++++++++---------- 1 file changed, 40 insertions(+), 46 deletions(-) diff --git a/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs b/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs index 7ee1005add..e9ff0b5598 100644 --- a/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs +++ b/osu.Game/Screens/Edit/EditorScreenWithTimeline.cs @@ -18,6 +18,8 @@ namespace osu.Game.Screens.Edit private const float vertical_margins = 10; private const float horizontal_margins = 20; + private const float timeline_height = 110; + private readonly BindableBeatDivisor beatDivisor = new BindableBeatDivisor(); private Container timelineContainer; @@ -32,65 +34,57 @@ namespace osu.Game.Screens.Edit Children = new Drawable[] { - new GridContainer + mainContent = new Container { + Name = "Main content", RelativeSizeAxes = Axes.Both, - Content = new[] + Padding = new MarginPadding { - new Drawable[] + Horizontal = horizontal_margins, + Top = vertical_margins + timeline_height, + Bottom = vertical_margins + }, + }, + new Container + { + Name = "Timeline", + RelativeSizeAxes = Axes.X, + Height = timeline_height, + Children = new Drawable[] + { + new Box { - new Container + RelativeSizeAxes = Axes.Both, + Colour = Color4.Black.Opacity(0.5f) + }, + new Container + { + Name = "Timeline content", + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Horizontal = horizontal_margins, Vertical = vertical_margins }, + Child = new GridContainer { - Name = "Timeline", RelativeSizeAxes = Axes.Both, - Children = new Drawable[] + Content = new[] { - new Box + new Drawable[] { - RelativeSizeAxes = Axes.Both, - Colour = Color4.Black.Opacity(0.5f) - }, - new Container - { - Name = "Timeline content", - RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding { Horizontal = horizontal_margins, Vertical = vertical_margins }, - Child = new GridContainer + timelineContainer = new Container { RelativeSizeAxes = Axes.Both, - Content = new[] - { - new Drawable[] - { - timelineContainer = new Container - { - RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding { Right = 5 }, - }, - new BeatDivisorControl(beatDivisor) { RelativeSizeAxes = Axes.Both } - }, - }, - ColumnDimensions = new[] - { - new Dimension(), - new Dimension(GridSizeMode.Absolute, 90), - } + Padding = new MarginPadding { Right = 5 }, }, - } + new BeatDivisorControl(beatDivisor) { RelativeSizeAxes = Axes.Both } + }, + }, + ColumnDimensions = new[] + { + new Dimension(), + new Dimension(GridSizeMode.Absolute, 90), } - } - }, - new Drawable[] - { - mainContent = new Container - { - Name = "Main content", - RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding { Horizontal = horizontal_margins, Vertical = vertical_margins }, - } + }, } - }, - RowDimensions = new[] { new Dimension(GridSizeMode.Absolute, 110) } + } }, }; From 6297606baaec8865d2201647746bb379c0e37ac9 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 7 Feb 2020 19:08:37 +0900 Subject: [PATCH 1373/1829] Make sMake spinner's EndTime correct on construction --- osu.Game.Rulesets.Osu/Objects/Spinner.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Spinner.cs b/osu.Game.Rulesets.Osu/Objects/Spinner.cs index 2441a1449d..0b8d03d118 100644 --- a/osu.Game.Rulesets.Osu/Objects/Spinner.cs +++ b/osu.Game.Rulesets.Osu/Objects/Spinner.cs @@ -13,8 +13,13 @@ namespace osu.Game.Rulesets.Osu.Objects { public class Spinner : OsuHitObject, IHasEndTime { - public double EndTime { get; set; } - public double Duration => EndTime - StartTime; + public double EndTime + { + get => StartTime + Duration; + set => Duration = value - StartTime; + } + + public double Duration { get; set; } /// /// Number of spins required to finish the spinner without miss. From a6531bf73e06504636f38d336aa397669cc41069 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 7 Feb 2020 19:08:49 +0900 Subject: [PATCH 1374/1829] Don't show distance snap grid for spinners (for now) --- osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs | 6 ++++++ osu.Game/Rulesets/Edit/HitObjectComposer.cs | 11 ++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs b/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs index b01488e7c2..cdf78a5902 100644 --- a/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs +++ b/osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs @@ -36,6 +36,9 @@ namespace osu.Game.Rulesets.Osu.Edit protected override DistanceSnapGrid CreateDistanceSnapGrid(IEnumerable selectedHitObjects) { + if (BlueprintContainer.CurrentTool is SpinnerCompositionTool) + return null; + var objects = selectedHitObjects.ToList(); if (objects.Count == 0) @@ -89,6 +92,9 @@ namespace osu.Game.Rulesets.Osu.Edit targetIndex++; } + if (sourceObject is Spinner) + return null; + return new OsuDistanceSnapGrid((OsuHitObject)sourceObject, (OsuHitObject)targetObject); } } diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index e181e1f431..7b7c154191 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -49,8 +49,9 @@ namespace osu.Game.Rulesets.Edit [Resolved] private IBeatSnapProvider beatSnapProvider { get; set; } + protected ComposeBlueprintContainer BlueprintContainer; + private DrawableEditRulesetWrapper drawableRulesetWrapper; - private ComposeBlueprintContainer blueprintContainer; private Container distanceSnapGridContainer; private DistanceSnapGrid distanceSnapGrid; private readonly List layerContainers = new List(); @@ -94,7 +95,7 @@ namespace osu.Game.Rulesets.Edit new EditorPlayfieldBorder { RelativeSizeAxes = Axes.Both } }); - var layerAboveRuleset = drawableRulesetWrapper.CreatePlayfieldAdjustmentContainer().WithChild(blueprintContainer = CreateBlueprintContainer()); + var layerAboveRuleset = drawableRulesetWrapper.CreatePlayfieldAdjustmentContainer().WithChild(BlueprintContainer = CreateBlueprintContainer()); layerContainers.Add(layerBelowRuleset); layerContainers.Add(layerAboveRuleset); @@ -142,7 +143,7 @@ namespace osu.Game.Rulesets.Edit setSelectTool(); - blueprintContainer.SelectionChanged += selectionChanged; + BlueprintContainer.SelectionChanged += selectionChanged; } protected override bool OnKeyDown(KeyDownEvent e) @@ -174,7 +175,7 @@ namespace osu.Game.Rulesets.Edit { base.Update(); - if (EditorClock.CurrentTime != lastGridUpdateTime && !(blueprintContainer.CurrentTool is SelectTool)) + if (EditorClock.CurrentTime != lastGridUpdateTime && !(BlueprintContainer.CurrentTool is SelectTool)) showGridFor(Enumerable.Empty()); } @@ -210,7 +211,7 @@ namespace osu.Game.Rulesets.Edit private void toolSelected(HitObjectCompositionTool tool) { - blueprintContainer.CurrentTool = tool; + BlueprintContainer.CurrentTool = tool; if (tool is SelectTool) distanceSnapGridContainer.Hide(); From 830afe52096961bde1f33201f63e376c654811ce Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 7 Feb 2020 19:09:47 +0900 Subject: [PATCH 1375/1829] Make spinner blueprint update values more frequently. Also handle right-click --- .../Spinners/SpinnerPlacementBlueprint.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Spinners/SpinnerPlacementBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Spinners/SpinnerPlacementBlueprint.cs index 5525b8936e..6d881d5f71 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Spinners/SpinnerPlacementBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Spinners/SpinnerPlacementBlueprint.cs @@ -1,13 +1,14 @@ // 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 System; using osu.Framework.Input.Events; using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Osu.Edit.Blueprints.Spinners.Components; using osu.Game.Rulesets.Osu.Objects; using osu.Game.Rulesets.Osu.UI; using osuTK; +using osuTK.Input; namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Spinners { @@ -29,22 +30,29 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Spinners { base.Update(); + if (isPlacingEnd) + HitObject.EndTime = Math.Max(HitObject.StartTime, EditorClock.CurrentTime); + piece.UpdateFrom(HitObject); } - protected override bool OnClick(ClickEvent e) + protected override bool OnMouseDown(MouseDownEvent e) { if (isPlacingEnd) { + if (e.Button != MouseButton.Right) + return false; + HitObject.EndTime = EditorClock.CurrentTime; EndPlacement(); } else { - isPlacingEnd = true; - piece.FadeTo(1f, 150, Easing.OutQuint); + if (e.Button != MouseButton.Left) + return false; BeginPlacement(); + isPlacingEnd = true; } return true; From 2e50e56d7c63ab3484bbe0612e94a8edc29315ef Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 7 Feb 2020 19:12:09 +0900 Subject: [PATCH 1376/1829] Seek to previous object endtime after successful placement --- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index d946b2eb7f..df3a1384bb 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -264,7 +264,7 @@ namespace osu.Game.Rulesets.Edit { EditorBeatmap.Add(hitObject); - adjustableClock.Seek(hitObject.StartTime); + adjustableClock.Seek(hitObject.GetEndTime()); } showGridFor(Enumerable.Empty()); From 2d1afb66fb2d9c86b7bae7b930ee65710fe5508b Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 7 Feb 2020 16:21:47 +0300 Subject: [PATCH 1377/1829] Add history counts to user api --- osu.Game/Users/User.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/osu.Game/Users/User.cs b/osu.Game/Users/User.cs index 5d0ffd5a67..c573fdd089 100644 --- a/osu.Game/Users/User.cs +++ b/osu.Game/Users/User.cs @@ -203,6 +203,21 @@ namespace osu.Game.Users public int ID; } + [JsonProperty("monthly_playcounts")] + public UserHistoryCount[] MonthlyPlaycounts; + + [JsonProperty("replays_watched_counts")] + public UserHistoryCount[] ReplaysWatchedCounts; + + public class UserHistoryCount + { + [JsonProperty("start_date")] + public DateTime Date; + + [JsonProperty("count")] + public long Count; + } + public override string ToString() => Username; /// From 678eb8ec3128a3ef0dd839b852041c72bd0947ee Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 8 Feb 2020 00:12:23 +0900 Subject: [PATCH 1378/1829] Reduce accessibility to set Co-Authored-By: Dan Balasescu --- osu.Game/Rulesets/Edit/HitObjectComposer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Edit/HitObjectComposer.cs b/osu.Game/Rulesets/Edit/HitObjectComposer.cs index 7b7c154191..f6c73d5e4c 100644 --- a/osu.Game/Rulesets/Edit/HitObjectComposer.cs +++ b/osu.Game/Rulesets/Edit/HitObjectComposer.cs @@ -49,7 +49,7 @@ namespace osu.Game.Rulesets.Edit [Resolved] private IBeatSnapProvider beatSnapProvider { get; set; } - protected ComposeBlueprintContainer BlueprintContainer; + protected ComposeBlueprintContainer BlueprintContainer { get; private set; } private DrawableEditRulesetWrapper drawableRulesetWrapper; private Container distanceSnapGridContainer; From 51edd8827772898e6e5ece224e4507cdeb182dac Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Sat, 8 Feb 2020 00:28:52 +0900 Subject: [PATCH 1379/1829] Add back fade --- .../Edit/Blueprints/Spinners/SpinnerPlacementBlueprint.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Spinners/SpinnerPlacementBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Spinners/SpinnerPlacementBlueprint.cs index 6d881d5f71..48c1ce11e0 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Spinners/SpinnerPlacementBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Spinners/SpinnerPlacementBlueprint.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System; +using osu.Framework.Graphics; using osu.Framework.Input.Events; using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Osu.Edit.Blueprints.Spinners.Components; @@ -52,6 +53,8 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Spinners return false; BeginPlacement(); + piece.FadeTo(1f, 150, Easing.OutQuint); + isPlacingEnd = true; } From 7395f01919a6710fda4127676b6482e06d882676 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Fri, 7 Feb 2020 20:28:02 +0100 Subject: [PATCH 1380/1829] Use osu-web font sizes --- osu.Game/Overlays/BeatmapSet/Header.cs | 2 +- osu.Game/Overlays/BeatmapSet/Info.cs | 2 +- osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs | 4 ++-- osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Header.cs b/osu.Game/Overlays/BeatmapSet/Header.cs index 1b111ced1f..ab7b2d82ed 100644 --- a/osu.Game/Overlays/BeatmapSet/Header.cs +++ b/osu.Game/Overlays/BeatmapSet/Header.cs @@ -196,7 +196,7 @@ namespace osu.Game.Overlays.BeatmapSet { Anchor = Anchor.TopRight, Origin = Anchor.TopRight, - TextSize = 17, + TextSize = 14, TextPadding = new MarginPadding { Horizontal = 35, Vertical = 10 } }, Details = new Details(), diff --git a/osu.Game/Overlays/BeatmapSet/Info.cs b/osu.Game/Overlays/BeatmapSet/Info.cs index a71409a05f..0a5415124e 100644 --- a/osu.Game/Overlays/BeatmapSet/Info.cs +++ b/osu.Game/Overlays/BeatmapSet/Info.cs @@ -118,7 +118,7 @@ namespace osu.Game.Overlays.BeatmapSet Origin = Anchor.Centre, Alpha = 0, Text = "Unranked beatmap", - Font = OsuFont.GetFont(size: 13) + Font = OsuFont.GetFont(size: 12) }, }, }, diff --git a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs index 2310b2a0f5..7f55aecaf0 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs @@ -23,7 +23,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { private const float horizontal_inset = 20; private const float row_height = 25; - private const int text_size = 14; + private const int text_size = 12; private readonly FillFlowContainer backgroundFlow; @@ -190,7 +190,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores public HeaderText(string text) { Text = text.ToUpper(); - Font = OsuFont.GetFont(size: 12, weight: FontWeight.Bold); + Font = OsuFont.GetFont(size: 10, weight: FontWeight.Bold); } [BackgroundDependencyLoader] diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs index 00171e1170..8a368aa535 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs @@ -96,7 +96,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, - Font = OsuFont.GetFont(size: 12) + Font = OsuFont.GetFont(size: 10) }, flag = new UpdateableFlag { From 59cf2037d062b7af68e7ea912a5a5715d1016d5a Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Fri, 7 Feb 2020 21:11:58 +0100 Subject: [PATCH 1381/1829] Introduce SortedStatistics --- osu.Game/Scoring/ScoreInfo.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game/Scoring/ScoreInfo.cs b/osu.Game/Scoring/ScoreInfo.cs index bed9104cad..a40f436a6e 100644 --- a/osu.Game/Scoring/ScoreInfo.cs +++ b/osu.Game/Scoring/ScoreInfo.cs @@ -151,6 +151,8 @@ namespace osu.Game.Scoring [JsonProperty("statistics")] public Dictionary Statistics = new Dictionary(); + public IOrderedEnumerable> SortedStatistics => Statistics.OrderByDescending(pair => pair.Key); + [JsonIgnore] [Column("Statistics")] public string StatisticsJson From 2770fb71b251fa315be1af4a83b1993ba5838e55 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Fri, 7 Feb 2020 21:12:21 +0100 Subject: [PATCH 1382/1829] Use SortedStatistics where needed --- osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs | 4 ++-- .../Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs | 4 +--- osu.Game/Screens/Ranking/Pages/ScoreResultsPage.cs | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs index 7a17412722..758140a12d 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/ScoreTable.cs @@ -82,7 +82,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores new TableColumn("max combo", Anchor.CentreLeft, new Dimension(GridSizeMode.Distributed, minSize: 70, maxSize: 90)) }; - foreach (var statistic in score.Statistics) + foreach (var statistic in score.SortedStatistics) columns.Add(new TableColumn(statistic.Key.GetDescription(), Anchor.CentreLeft, new Dimension(GridSizeMode.Distributed, minSize: 50, maxSize: 70))); columns.AddRange(new[] @@ -150,7 +150,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores } }); - foreach (var kvp in score.Statistics) + foreach (var kvp in score.SortedStatistics) { content.Add(new OsuSpriteText { diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs index 8a17fef367..6c9f0b0321 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs @@ -99,9 +99,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores maxComboColumn.Text = $@"{value.MaxCombo:N0}x"; ppColumn.Text = $@"{value.PP:N0}"; - statisticsColumns.ChildrenEnumerable = value.Statistics - .OrderByDescending(pair => pair.Key) - .Select(kvp => createStatisticsColumn(kvp.Key, kvp.Value)); + statisticsColumns.ChildrenEnumerable = value.SortedStatistics.Select(kvp => createStatisticsColumn(kvp.Key, kvp.Value)); modsColumn.Mods = value.Mods; } } diff --git a/osu.Game/Screens/Ranking/Pages/ScoreResultsPage.cs b/osu.Game/Screens/Ranking/Pages/ScoreResultsPage.cs index 43234c0b29..0aab067de1 100644 --- a/osu.Game/Screens/Ranking/Pages/ScoreResultsPage.cs +++ b/osu.Game/Screens/Ranking/Pages/ScoreResultsPage.cs @@ -188,7 +188,7 @@ namespace osu.Game.Screens.Ranking.Pages }, }; - statisticsContainer.ChildrenEnumerable = Score.Statistics.OrderByDescending(p => p.Key).Select(s => new DrawableScoreStatistic(s)); + statisticsContainer.ChildrenEnumerable = Score.SortedStatistics.Select(s => new DrawableScoreStatistic(s)); } protected override void LoadComplete() From 1ba8cc904a5b72693bad9f5309be5f4ae5f095fd Mon Sep 17 00:00:00 2001 From: jorolf Date: Fri, 7 Feb 2020 21:42:47 +0100 Subject: [PATCH 1383/1829] Make the caret blink to the beat --- osu.Game/Graphics/UserInterface/OsuTextBox.cs | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/osu.Game/Graphics/UserInterface/OsuTextBox.cs b/osu.Game/Graphics/UserInterface/OsuTextBox.cs index f5b7bc3073..36740fb015 100644 --- a/osu.Game/Graphics/UserInterface/OsuTextBox.cs +++ b/osu.Game/Graphics/UserInterface/OsuTextBox.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using osu.Framework.Allocation; +using osu.Framework.Audio.Track; using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.UserInterface; @@ -9,6 +10,9 @@ using osu.Game.Graphics.Sprites; using osuTK.Graphics; using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Input.Events; +using osu.Game.Beatmaps.ControlPoints; +using osu.Game.Graphics.Containers; +using osuTK; namespace osu.Game.Graphics.UserInterface { @@ -59,5 +63,47 @@ namespace osu.Game.Graphics.UserInterface } protected override Drawable GetDrawableCharacter(char c) => new OsuSpriteText { Text = c.ToString(), Font = OsuFont.GetFont(size: CalculatedTextSize) }; + + protected override Caret CreateCaret() => new BeatCaret + { + CaretWidth = CaretWidth, + SelectionColour = SelectionColour, + }; + + private class BeatCaret : BasicCaret + { + private bool hasSelection; + + public BeatCaret() + { + AddInternal(new CaretBeatSyncedContainer(this)); + } + + public override void DisplayAt(Vector2 position, float? selectionWidth) + { + base.DisplayAt(position, selectionWidth); + + hasSelection = selectionWidth != null; + if (selectionWidth == null) + ClearTransforms(targetMember: nameof(Alpha)); + } + + private class CaretBeatSyncedContainer : BeatSyncedContainer + { + private readonly BeatCaret caret; + + public CaretBeatSyncedContainer(BeatCaret caret) + { + this.caret = caret; + MinimumBeatLength = 300; + } + + protected override void OnNewBeat(int beatIndex, TimingControlPoint timingPoint, EffectControlPoint effectPoint, TrackAmplitudes amplitudes) + { + if (!caret.hasSelection) + caret.FadeTo(0.7f).FadeTo(0.4f, timingPoint.BeatLength, Easing.InOutSine); + } + } + } } } From 8c10d31af947d8ace2265952bfa2bbbea62e2d43 Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Fri, 7 Feb 2020 22:09:45 +0100 Subject: [PATCH 1384/1829] Make accuracy formatting more consistent --- osu.Game/Utils/FormatUtils.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/osu.Game/Utils/FormatUtils.cs b/osu.Game/Utils/FormatUtils.cs index b3758b3375..f2ab99f4b7 100644 --- a/osu.Game/Utils/FormatUtils.cs +++ b/osu.Game/Utils/FormatUtils.cs @@ -7,18 +7,16 @@ namespace osu.Game.Utils { /// /// Turns the provided accuracy into a percentage with 2 decimal places. - /// Omits all decimal places when equals 1d. /// /// The accuracy to be formatted /// formatted accuracy in percentage - public static string FormatAccuracy(this double accuracy) => accuracy == 1 ? "100%" : $"{accuracy:0.00%}"; + public static string FormatAccuracy(this double accuracy) => $"{accuracy:0.00%}"; /// /// Turns the provided accuracy into a percentage with 2 decimal places. - /// Omits all decimal places when equals 100m. /// /// The accuracy to be formatted /// formatted accuracy in percentage - public static string FormatAccuracy(this decimal accuracy) => accuracy == 100 ? "100%" : $"{accuracy:0.00}%"; + public static string FormatAccuracy(this decimal accuracy) => $"{accuracy:0.00}%"; } } From 393b566966c5cd8d6be9b765ebd79e8e9280f1fd Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Fri, 7 Feb 2020 22:16:06 +0100 Subject: [PATCH 1385/1829] Make PercentageCounter use FormatAccuracy --- osu.Game/Graphics/UserInterface/PercentageCounter.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/PercentageCounter.cs b/osu.Game/Graphics/UserInterface/PercentageCounter.cs index 064c663d59..940c9808ce 100644 --- a/osu.Game/Graphics/UserInterface/PercentageCounter.cs +++ b/osu.Game/Graphics/UserInterface/PercentageCounter.cs @@ -3,6 +3,7 @@ using System; using osu.Framework.Allocation; +using osu.Game.Utils; namespace osu.Game.Graphics.UserInterface { @@ -29,10 +30,7 @@ namespace osu.Game.Graphics.UserInterface [BackgroundDependencyLoader] private void load(OsuColour colours) => AccentColour = colours.BlueLighter; - protected override string FormatCount(double count) - { - return $@"{count:P2}"; - } + protected override string FormatCount(double count) => count.FormatAccuracy(); protected override double GetProportionalDuration(double currentValue, double newValue) { From 9bfd3a1a6348e4f7be4ef305bfbec7b2d207f8ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Sat, 8 Feb 2020 00:11:19 +0100 Subject: [PATCH 1386/1829] Make PercentageBreakInfoLine use FormatAccuracy --- osu.Game/Screens/Play/Break/BreakInfoLine.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Play/Break/BreakInfoLine.cs b/osu.Game/Screens/Play/Break/BreakInfoLine.cs index 70e7b8f297..18aab394f8 100644 --- a/osu.Game/Screens/Play/Break/BreakInfoLine.cs +++ b/osu.Game/Screens/Play/Break/BreakInfoLine.cs @@ -9,6 +9,7 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Game.Graphics; using osu.Game.Graphics.Sprites; +using osu.Game.Utils; namespace osu.Game.Screens.Play.Break { @@ -85,6 +86,6 @@ namespace osu.Game.Screens.Play.Break { } - protected override string Format(double count) => $@"{count:P2}"; + protected override string Format(double count) => count.FormatAccuracy(); } } From 801e39a5433f12e385c61da0860a640d1d1a617f Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 8 Feb 2020 11:35:27 +0900 Subject: [PATCH 1387/1829] Improve xmldoc for PlacementObject --- osu.Game/Screens/Edit/EditorBeatmap.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Edit/EditorBeatmap.cs b/osu.Game/Screens/Edit/EditorBeatmap.cs index e1f3ddf191..5216e85903 100644 --- a/osu.Game/Screens/Edit/EditorBeatmap.cs +++ b/osu.Game/Screens/Edit/EditorBeatmap.cs @@ -39,7 +39,7 @@ namespace osu.Game.Screens.Edit public readonly BindableList SelectedHitObjects = new BindableList(); /// - /// The current placement + /// The current placement. Null if there's no active placement. /// public readonly Bindable PlacementObject = new Bindable(); From e0de60a277c4f9792b889efc1bb44d39e0251f91 Mon Sep 17 00:00:00 2001 From: Joehu Date: Fri, 7 Feb 2020 21:03:33 -0800 Subject: [PATCH 1388/1829] Update default background dim to 80% to match stable --- osu.Game/Configuration/OsuConfigManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Configuration/OsuConfigManager.cs b/osu.Game/Configuration/OsuConfigManager.cs index 4155381790..6ae3c7ac64 100644 --- a/osu.Game/Configuration/OsuConfigManager.cs +++ b/osu.Game/Configuration/OsuConfigManager.cs @@ -78,7 +78,7 @@ namespace osu.Game.Configuration Set(OsuSetting.MenuParallax, true); // Gameplay - Set(OsuSetting.DimLevel, 0.3, 0, 1, 0.01); + Set(OsuSetting.DimLevel, 0.8, 0, 1, 0.01); Set(OsuSetting.BlurLevel, 0, 0, 1, 0.01); Set(OsuSetting.LightenDuringBreaks, true); From 6d51b344abfc6929f5029044dc01b10f8e9dc28d Mon Sep 17 00:00:00 2001 From: Lucas A Date: Sun, 19 Jan 2020 20:24:46 +0100 Subject: [PATCH 1389/1829] Display a loading animation when the user is connecting --- .../Online/TestSceneOnlineViewContainer.cs | 4 ++ osu.Game/Online/OnlineViewContainer.cs | 57 ++++++++++++++----- 2 files changed, 46 insertions(+), 15 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs index 4579e4f428..ddb672dbf4 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs @@ -57,6 +57,10 @@ namespace osu.Game.Tests.Visual.Online AddStep("set status to online", () => ((DummyAPIAccess)API).State = APIState.Online); AddAssert("children are visible", () => onlineView.Children.First().Parent.IsPresent); + + AddStep("set status to connecting", () => ((DummyAPIAccess)API).State = APIState.Connecting); + + AddAssert("children are hidden", () => !onlineView.Children.First().Parent.IsPresent); } } } diff --git a/osu.Game/Online/OnlineViewContainer.cs b/osu.Game/Online/OnlineViewContainer.cs index 0a8432ee12..35296409e5 100644 --- a/osu.Game/Online/OnlineViewContainer.cs +++ b/osu.Game/Online/OnlineViewContainer.cs @@ -4,6 +4,7 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Game.Graphics.UserInterface; using osu.Game.Online.API; using osu.Game.Online.Placeholders; @@ -15,12 +16,13 @@ namespace osu.Game.Online /// public class OnlineViewContainer : Container, IOnlineComponent { - private readonly Container content; private readonly Container placeholderContainer; private readonly Placeholder placeholder; + private readonly LoadingAnimation loading; private const int transform_time = 300; + private readonly Container content; protected override Container Content => content; [Resolved] @@ -40,6 +42,10 @@ namespace osu.Game.Online Alpha = 0, Child = placeholder = new LoginPlaceholder($@"Please sign in to {placeholderMessage}") }, + loading = new LoadingAnimation + { + Alpha = 0, + } }; } @@ -47,29 +53,43 @@ namespace osu.Game.Online { switch (state) { - case APIState.Offline: + case APIState.Failing: case APIState.Connecting: - Schedule(() => updatePlaceholderVisibility(true)); + Schedule(() => UpdatePlaceholderVisibility(PlaceholderStatus.Connecting)); break; - default: - Schedule(() => updatePlaceholderVisibility(false)); + case APIState.Offline: + Schedule(() => UpdatePlaceholderVisibility(PlaceholderStatus.Offline)); + break; + + case APIState.Online: + Schedule(() => UpdatePlaceholderVisibility(PlaceholderStatus.Online)); break; } } - private void updatePlaceholderVisibility(bool showPlaceholder) + protected void UpdatePlaceholderVisibility(PlaceholderStatus status) { - if (showPlaceholder) + switch (status) { - content.FadeOut(150, Easing.OutQuint); - placeholder.ScaleTo(0.8f).Then().ScaleTo(1, 3 * transform_time, Easing.OutQuint); - placeholderContainer.FadeInFromZero(2 * transform_time, Easing.OutQuint); - } - else - { - placeholderContainer.FadeOut(150, Easing.OutQuint); - content.FadeIn(transform_time, Easing.OutQuint); + case PlaceholderStatus.Offline: + Content.FadeOut(150, Easing.OutQuint); + placeholder.ScaleTo(0.8f).Then().ScaleTo(1, 3 * transform_time, Easing.OutQuint); + placeholderContainer.FadeInFromZero(2 * transform_time, Easing.OutQuint); + loading.Hide(); + break; + + case PlaceholderStatus.Online: + placeholderContainer.FadeOut(150, Easing.OutQuint); + Content.FadeIn(transform_time, Easing.OutQuint); + loading.Hide(); + break; + + case PlaceholderStatus.Connecting: + loading.Show(); + placeholderContainer.FadeOut(150, Easing.OutQuint); + Content.FadeOut(150, Easing.OutQuint); + break; } } @@ -84,5 +104,12 @@ namespace osu.Game.Online API?.Unregister(this); base.Dispose(isDisposing); } + + protected enum PlaceholderStatus + { + Offline, + Online, + Connecting, + } } } From d3dc0b63ff9cc9715b5e46909e39ef76435d5007 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Thu, 23 Jan 2020 19:09:34 +0100 Subject: [PATCH 1390/1829] Remove string concatenation from ctor --- osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs | 2 +- osu.Game/Online/OnlineViewContainer.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs index ddb672dbf4..fddb82d400 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs @@ -25,7 +25,7 @@ namespace osu.Game.Tests.Visual.Online Child = new Container { RelativeSizeAxes = Axes.Both, - Child = onlineView = new OnlineViewContainer(@"view dummy test content") + Child = onlineView = new OnlineViewContainer(@"Please sign in to view dummy test content") { RelativeSizeAxes = Axes.Both, Children = new Drawable[] diff --git a/osu.Game/Online/OnlineViewContainer.cs b/osu.Game/Online/OnlineViewContainer.cs index 35296409e5..49174320d3 100644 --- a/osu.Game/Online/OnlineViewContainer.cs +++ b/osu.Game/Online/OnlineViewContainer.cs @@ -40,7 +40,7 @@ namespace osu.Game.Online { RelativeSizeAxes = Axes.Both, Alpha = 0, - Child = placeholder = new LoginPlaceholder($@"Please sign in to {placeholderMessage}") + Child = placeholder = new LoginPlaceholder(placeholderMessage) }, loading = new LoadingAnimation { From 7ca9f4dc2091c56bd66b11365cbc2dfaa403e4df Mon Sep 17 00:00:00 2001 From: Lucas A Date: Fri, 24 Jan 2020 21:10:31 +0100 Subject: [PATCH 1391/1829] Apply review suggestions --- .../Online/TestSceneOnlineViewContainer.cs | 85 ++++++++++++------- osu.Game/Online/OnlineViewContainer.cs | 48 +++-------- 2 files changed, 66 insertions(+), 67 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs index fddb82d400..277146e4be 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs @@ -1,14 +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.Linq; using NUnit.Framework; -using osu.Framework.Allocation; using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Game.Graphics.Sprites; +using osu.Game.Graphics.UserInterface; using osu.Game.Online; using osu.Game.Online.API; using osuTK.Graphics; @@ -18,49 +17,75 @@ namespace osu.Game.Tests.Visual.Online [TestFixture] public class TestSceneOnlineViewContainer : OsuTestScene { - private readonly OnlineViewContainer onlineView; + private readonly TestOnlineViewContainer onlineView; public TestSceneOnlineViewContainer() { Child = new Container { RelativeSizeAxes = Axes.Both, - Child = onlineView = new OnlineViewContainer(@"Please sign in to view dummy test content") - { - RelativeSizeAxes = Axes.Both, - Children = new Drawable[] - { - new Box - { - RelativeSizeAxes = Axes.Both, - Colour = Color4.Blue.Opacity(0.8f), - }, - new OsuSpriteText - { - Text = "dummy online content", - RelativeSizeAxes = Axes.Both, - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - } - } - } + Child = onlineView = new TestOnlineViewContainer() }; } - [BackgroundDependencyLoader] - private void load() + private class TestOnlineViewContainer : OnlineViewContainer + { + public new Container Content => base.Content; + + public new LoadingAnimation LoadingAnimation => base.LoadingAnimation; + + public TestOnlineViewContainer() + : base(@"Please sign in to view dummy test content") + { + RelativeSizeAxes = Axes.Both; + Children = new Drawable[] + { + new Box + { + RelativeSizeAxes = Axes.Both, + Colour = Color4.Blue.Opacity(0.8f), + }, + new OsuSpriteText + { + Text = "dummy online content", + RelativeSizeAxes = Axes.Both, + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + } + }; + } + } + + [Test] + public void TestOnlineStateVisibility() + { + AddStep("set status to online", () => ((DummyAPIAccess)API).State = APIState.Online); + + AddAssert("children are visible", () => onlineView.Content.IsPresent); + AddAssert("loading animation is not visible", () => !onlineView.LoadingAnimation.IsPresent); + } + + [Test] + public void TestOfflineStateVisibility() { AddStep("set status to offline", () => ((DummyAPIAccess)API).State = APIState.Offline); - AddAssert("children are hidden", () => !onlineView.Children.First().Parent.IsPresent); - - AddStep("set status to online", () => ((DummyAPIAccess)API).State = APIState.Online); - - AddAssert("children are visible", () => onlineView.Children.First().Parent.IsPresent); + AddAssert("children are hidden", () => !onlineView.Content.IsPresent); + AddAssert("loading animation is not visible", () => !onlineView.LoadingAnimation.IsPresent); + } + [Test] + public void TestConnectingStateVisibility() + { AddStep("set status to connecting", () => ((DummyAPIAccess)API).State = APIState.Connecting); - AddAssert("children are hidden", () => !onlineView.Children.First().Parent.IsPresent); + AddAssert("children are hidden", () => !onlineView.Content.IsPresent); + AddAssert("loading animation is visible", () => onlineView.LoadingAnimation.IsPresent); + + AddStep("set status to failing", () => ((DummyAPIAccess)API).State = APIState.Failing); + + AddAssert("children are hidden", () => !onlineView.Content.IsPresent); + AddAssert("loading animation is visible", () => onlineView.LoadingAnimation.IsPresent); } } } diff --git a/osu.Game/Online/OnlineViewContainer.cs b/osu.Game/Online/OnlineViewContainer.cs index 49174320d3..7874a9fcaf 100644 --- a/osu.Game/Online/OnlineViewContainer.cs +++ b/osu.Game/Online/OnlineViewContainer.cs @@ -14,16 +14,15 @@ namespace osu.Game.Online /// A for dislaying online content who require a local user to be logged in. /// Shows its children only when the local user is logged in and supports displaying a placeholder if not. /// - public class OnlineViewContainer : Container, IOnlineComponent + public abstract class OnlineViewContainer : Container, IOnlineComponent { private readonly Container placeholderContainer; private readonly Placeholder placeholder; - private readonly LoadingAnimation loading; + protected readonly LoadingAnimation LoadingAnimation; private const int transform_time = 300; - private readonly Container content; - protected override Container Content => content; + protected override Container Content { get; } [Resolved] protected IAPIProvider API { get; private set; } @@ -32,7 +31,7 @@ namespace osu.Game.Online { InternalChildren = new Drawable[] { - content = new Container + Content = new Container { RelativeSizeAxes = Axes.Both, }, @@ -42,7 +41,7 @@ namespace osu.Game.Online Alpha = 0, Child = placeholder = new LoginPlaceholder(placeholderMessage) }, - loading = new LoadingAnimation + LoadingAnimation = new LoadingAnimation { Alpha = 0, } @@ -53,40 +52,22 @@ namespace osu.Game.Online { switch (state) { - case APIState.Failing: - case APIState.Connecting: - Schedule(() => UpdatePlaceholderVisibility(PlaceholderStatus.Connecting)); - break; - case APIState.Offline: - Schedule(() => UpdatePlaceholderVisibility(PlaceholderStatus.Offline)); - break; - - case APIState.Online: - Schedule(() => UpdatePlaceholderVisibility(PlaceholderStatus.Online)); - break; - } - } - - protected void UpdatePlaceholderVisibility(PlaceholderStatus status) - { - switch (status) - { - case PlaceholderStatus.Offline: Content.FadeOut(150, Easing.OutQuint); placeholder.ScaleTo(0.8f).Then().ScaleTo(1, 3 * transform_time, Easing.OutQuint); placeholderContainer.FadeInFromZero(2 * transform_time, Easing.OutQuint); - loading.Hide(); + LoadingAnimation.Hide(); break; - case PlaceholderStatus.Online: + case APIState.Online: placeholderContainer.FadeOut(150, Easing.OutQuint); Content.FadeIn(transform_time, Easing.OutQuint); - loading.Hide(); + LoadingAnimation.Hide(); break; - case PlaceholderStatus.Connecting: - loading.Show(); + case APIState.Failing: + case APIState.Connecting: + LoadingAnimation.Show(); placeholderContainer.FadeOut(150, Easing.OutQuint); Content.FadeOut(150, Easing.OutQuint); break; @@ -104,12 +85,5 @@ namespace osu.Game.Online API?.Unregister(this); base.Dispose(isDisposing); } - - protected enum PlaceholderStatus - { - Offline, - Online, - Connecting, - } } } From 30e0a34e50d083af8726aaaff54fde5c3133f4b0 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Wed, 5 Feb 2020 15:04:10 +0100 Subject: [PATCH 1392/1829] Wrap Content into a container for animating visibility. --- .../Online/TestSceneOnlineViewContainer.cs | 14 ++++--- osu.Game/Online/OnlineViewContainer.cs | 39 ++++++++++--------- 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs index 277146e4be..5427db5af3 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs @@ -30,8 +30,6 @@ namespace osu.Game.Tests.Visual.Online private class TestOnlineViewContainer : OnlineViewContainer { - public new Container Content => base.Content; - public new LoadingAnimation LoadingAnimation => base.LoadingAnimation; public TestOnlineViewContainer() @@ -54,6 +52,10 @@ namespace osu.Game.Tests.Visual.Online } }; } + + protected override void FadeContentOut(Drawable content) => content.Hide(); + + protected override void FadeContentIn(Drawable content) => content.Show(); } [Test] @@ -61,7 +63,7 @@ namespace osu.Game.Tests.Visual.Online { AddStep("set status to online", () => ((DummyAPIAccess)API).State = APIState.Online); - AddAssert("children are visible", () => onlineView.Content.IsPresent); + AddAssert("children are visible", () => onlineView.TransformationTarget.IsPresent); AddAssert("loading animation is not visible", () => !onlineView.LoadingAnimation.IsPresent); } @@ -70,7 +72,7 @@ namespace osu.Game.Tests.Visual.Online { AddStep("set status to offline", () => ((DummyAPIAccess)API).State = APIState.Offline); - AddAssert("children are hidden", () => !onlineView.Content.IsPresent); + AddAssert("children are hidden", () => !onlineView.TransformationTarget.IsPresent); AddAssert("loading animation is not visible", () => !onlineView.LoadingAnimation.IsPresent); } @@ -79,12 +81,12 @@ namespace osu.Game.Tests.Visual.Online { AddStep("set status to connecting", () => ((DummyAPIAccess)API).State = APIState.Connecting); - AddAssert("children are hidden", () => !onlineView.Content.IsPresent); + AddAssert("children are hidden", () => !onlineView.TransformationTarget.IsPresent); AddAssert("loading animation is visible", () => onlineView.LoadingAnimation.IsPresent); AddStep("set status to failing", () => ((DummyAPIAccess)API).State = APIState.Failing); - AddAssert("children are hidden", () => !onlineView.Content.IsPresent); + AddAssert("children are hidden", () => !onlineView.TransformationTarget.IsPresent); AddAssert("loading animation is visible", () => onlineView.LoadingAnimation.IsPresent); } } diff --git a/osu.Game/Online/OnlineViewContainer.cs b/osu.Game/Online/OnlineViewContainer.cs index 7874a9fcaf..ac5a7941ea 100644 --- a/osu.Game/Online/OnlineViewContainer.cs +++ b/osu.Game/Online/OnlineViewContainer.cs @@ -11,36 +11,35 @@ using osu.Game.Online.Placeholders; namespace osu.Game.Online { /// - /// A for dislaying online content who require a local user to be logged in. + /// A for dislaying online content which require a local user to be logged in. /// Shows its children only when the local user is logged in and supports displaying a placeholder if not. /// public abstract class OnlineViewContainer : Container, IOnlineComponent { - private readonly Container placeholderContainer; private readonly Placeholder placeholder; protected readonly LoadingAnimation LoadingAnimation; - private const int transform_time = 300; + protected const double TRANSFORM_TIME = 300.0; + internal readonly Container TransformationTarget; protected override Container Content { get; } [Resolved] protected IAPIProvider API { get; private set; } - public OnlineViewContainer(string placeholderMessage) + protected OnlineViewContainer(string placeholderMessage) { InternalChildren = new Drawable[] { - Content = new Container + TransformationTarget = new Container { RelativeSizeAxes = Axes.Both, + Child = Content = new Container + { + RelativeSizeAxes = Axes.Both, + } }, - placeholderContainer = new Container - { - RelativeSizeAxes = Axes.Both, - Alpha = 0, - Child = placeholder = new LoginPlaceholder(placeholderMessage) - }, + placeholder = new LoginPlaceholder(placeholderMessage), LoadingAnimation = new LoadingAnimation { Alpha = 0, @@ -53,27 +52,31 @@ namespace osu.Game.Online switch (state) { case APIState.Offline: - Content.FadeOut(150, Easing.OutQuint); - placeholder.ScaleTo(0.8f).Then().ScaleTo(1, 3 * transform_time, Easing.OutQuint); - placeholderContainer.FadeInFromZero(2 * transform_time, Easing.OutQuint); + FadeContentOut(TransformationTarget); + placeholder.ScaleTo(0.8f).Then().ScaleTo(1, 3 * TRANSFORM_TIME, Easing.OutQuint); + placeholder.FadeInFromZero(2 * TRANSFORM_TIME, Easing.OutQuint); LoadingAnimation.Hide(); break; case APIState.Online: - placeholderContainer.FadeOut(150, Easing.OutQuint); - Content.FadeIn(transform_time, Easing.OutQuint); + FadeContentIn(TransformationTarget); + placeholder.FadeOut(TRANSFORM_TIME / 2, Easing.OutQuint); LoadingAnimation.Hide(); break; case APIState.Failing: case APIState.Connecting: + FadeContentOut(TransformationTarget); LoadingAnimation.Show(); - placeholderContainer.FadeOut(150, Easing.OutQuint); - Content.FadeOut(150, Easing.OutQuint); + placeholder.FadeOut(TRANSFORM_TIME / 2, Easing.OutQuint); break; } } + protected abstract void FadeContentOut(Drawable content); + + protected abstract void FadeContentIn(Drawable content); + protected override void LoadComplete() { API?.Register(this); From 5b452293d6055754bf007582c5a151a9ad859ede Mon Sep 17 00:00:00 2001 From: Berkan Diler Date: Sat, 8 Feb 2020 18:05:27 +0100 Subject: [PATCH 1393/1829] Minor cleanups for legacy beatmap decoders Replaces some string.StartsWith(string, StringComparison.Ordinal) calls with ring.StartsWith(char) , when only one char is compared. Possible since .NET-Standard 2.1 And another LegacyStoryboardDecoder.handleEvents() cleanup, saves some MB of allocations. --- osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs | 2 +- osu.Game/Beatmaps/Formats/LegacyDecoder.cs | 2 +- osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs | 11 ++++++----- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs index 009da0656b..4b01b2490e 100644 --- a/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyBeatmapDecoder.cs @@ -64,7 +64,7 @@ namespace osu.Game.Beatmaps.Formats hitObject.ApplyDefaults(this.beatmap.ControlPointInfo, this.beatmap.BeatmapInfo.BaseDifficulty); } - protected override bool ShouldSkipLine(string line) => base.ShouldSkipLine(line) || line.StartsWith(" ", StringComparison.Ordinal) || line.StartsWith("_", StringComparison.Ordinal); + protected override bool ShouldSkipLine(string line) => base.ShouldSkipLine(line) || line.StartsWith(' ') || line.StartsWith('_'); protected override void ParseLine(Beatmap beatmap, Section section, string line) { diff --git a/osu.Game/Beatmaps/Formats/LegacyDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyDecoder.cs index 0ec80eee41..e28e235788 100644 --- a/osu.Game/Beatmaps/Formats/LegacyDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyDecoder.cs @@ -33,7 +33,7 @@ namespace osu.Game.Beatmaps.Formats if (ShouldSkipLine(line)) continue; - if (line.StartsWith(@"[", StringComparison.Ordinal) && line.EndsWith(@"]", StringComparison.Ordinal)) + if (line.StartsWith('[') && line.EndsWith(']')) { if (!Enum.TryParse(line[1..^1], out section)) { diff --git a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs index 35576e0f33..6569f76b2d 100644 --- a/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs +++ b/osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs @@ -64,15 +64,16 @@ namespace osu.Game.Beatmaps.Formats private void handleEvents(string line) { var depth = 0; - var lineSpan = line.AsSpan(); - while (lineSpan.StartsWith(" ", StringComparison.Ordinal) || lineSpan.StartsWith("_", StringComparison.Ordinal)) + foreach (char c in line) { - lineSpan = lineSpan.Slice(1); - ++depth; + if (c == ' ' || c == '_') + depth++; + else + break; } - line = lineSpan.ToString(); + line = line.Substring(depth); decodeVariables(ref line); From c2e0c83724f0d981c780d5a1fb337c84f4248db7 Mon Sep 17 00:00:00 2001 From: jorolf Date: Sat, 8 Feb 2020 20:25:16 +0100 Subject: [PATCH 1394/1829] change the hierarchy layout --- osu.Game/Graphics/UserInterface/OsuTextBox.cs | 69 +++++++++++++++---- 1 file changed, 57 insertions(+), 12 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/OsuTextBox.cs b/osu.Game/Graphics/UserInterface/OsuTextBox.cs index 36740fb015..d58a22685e 100644 --- a/osu.Game/Graphics/UserInterface/OsuTextBox.cs +++ b/osu.Game/Graphics/UserInterface/OsuTextBox.cs @@ -9,6 +9,7 @@ using osu.Framework.Graphics.UserInterface; using osu.Game.Graphics.Sprites; using osuTK.Graphics; using osu.Framework.Extensions.Color4Extensions; +using osu.Framework.Graphics.Shapes; using osu.Framework.Input.Events; using osu.Game.Beatmaps.ControlPoints; using osu.Game.Graphics.Containers; @@ -70,38 +71,82 @@ namespace osu.Game.Graphics.UserInterface SelectionColour = SelectionColour, }; - private class BeatCaret : BasicCaret + private class BeatCaret : Caret { - private bool hasSelection; + private const float caret_move_time = 60; + + private readonly CaretBeatSyncedContainer beatSync; public BeatCaret() { - AddInternal(new CaretBeatSyncedContainer(this)); + RelativeSizeAxes = Axes.Y; + Size = new Vector2(1, 0.9f); + + Colour = Color4.Transparent; + Anchor = Anchor.CentreLeft; + Origin = Anchor.CentreLeft; + + Masking = true; + CornerRadius = 1; + InternalChild = beatSync = new CaretBeatSyncedContainer + { + RelativeSizeAxes = Axes.Both, + }; } + public override void Hide() => this.FadeOut(200); + + public float CaretWidth { get; set; } + + public Color4 SelectionColour { get; set; } + public override void DisplayAt(Vector2 position, float? selectionWidth) { - base.DisplayAt(position, selectionWidth); + beatSync.HasSelection = selectionWidth != null; - hasSelection = selectionWidth != null; - if (selectionWidth == null) - ClearTransforms(targetMember: nameof(Alpha)); + if (selectionWidth != null) + { + this.MoveTo(new Vector2(position.X, position.Y), 60, Easing.Out); + this.ResizeWidthTo(selectionWidth.Value + CaretWidth / 2, caret_move_time, Easing.Out); + this.FadeColour(SelectionColour, 200, Easing.Out); + } + else + { + this.MoveTo(new Vector2(position.X - CaretWidth / 2, position.Y), 60, Easing.Out); + this.ResizeWidthTo(CaretWidth, caret_move_time, Easing.Out); + this.FadeColour(Color4.White, 200, Easing.Out); + } } private class CaretBeatSyncedContainer : BeatSyncedContainer { - private readonly BeatCaret caret; + private bool hasSelection; - public CaretBeatSyncedContainer(BeatCaret caret) + public bool HasSelection + { + set + { + hasSelection = value; + if (value) + + this.FadeTo(0.5f, 200, Easing.Out); + } + } + + public CaretBeatSyncedContainer() { - this.caret = caret; MinimumBeatLength = 300; + InternalChild = new Box + { + RelativeSizeAxes = Axes.Both, + Colour = Color4.White, + }; } protected override void OnNewBeat(int beatIndex, TimingControlPoint timingPoint, EffectControlPoint effectPoint, TrackAmplitudes amplitudes) { - if (!caret.hasSelection) - caret.FadeTo(0.7f).FadeTo(0.4f, timingPoint.BeatLength, Easing.InOutSine); + if (!hasSelection) + this.FadeTo(0.7f).FadeTo(0.4f, timingPoint.BeatLength, Easing.InOutSine); } } } From 93ff25d2a43ee62c40c46e4489515e51f39f5395 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 9 Feb 2020 15:36:44 +0900 Subject: [PATCH 1395/1829] Rename caret class --- osu.Game/Graphics/UserInterface/OsuTextBox.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/OsuTextBox.cs b/osu.Game/Graphics/UserInterface/OsuTextBox.cs index d58a22685e..4abbf8db57 100644 --- a/osu.Game/Graphics/UserInterface/OsuTextBox.cs +++ b/osu.Game/Graphics/UserInterface/OsuTextBox.cs @@ -65,19 +65,19 @@ namespace osu.Game.Graphics.UserInterface protected override Drawable GetDrawableCharacter(char c) => new OsuSpriteText { Text = c.ToString(), Font = OsuFont.GetFont(size: CalculatedTextSize) }; - protected override Caret CreateCaret() => new BeatCaret + protected override Caret CreateCaret() => new OsuCaret { CaretWidth = CaretWidth, SelectionColour = SelectionColour, }; - private class BeatCaret : Caret + private class OsuCaret : Caret { private const float caret_move_time = 60; private readonly CaretBeatSyncedContainer beatSync; - public BeatCaret() + public OsuCaret() { RelativeSizeAxes = Axes.Y; Size = new Vector2(1, 0.9f); From 590429b43ba9ba9f12e0e7914d52fe866daf1a03 Mon Sep 17 00:00:00 2001 From: ProTheory8 Date: Sun, 9 Feb 2020 09:15:32 +0000 Subject: [PATCH 1396/1829] Now TestAutoOpenOnModSelect checks if customisation closes after deselecting mod --- osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs index 22ba972390..a9353d189f 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs @@ -63,7 +63,7 @@ namespace osu.Game.Tests.Visual.UserInterface } [Test] - public void TestCustomisationOpensOnModSelect() + public void TestAutoOpenOnModSelect() { createModSelect(); @@ -71,6 +71,8 @@ namespace osu.Game.Tests.Visual.UserInterface AddAssert("Customisation closed", () => modSelect.ModSettingsContainer.Alpha == 0); AddStep("select mod", () => modSelect.SelectMod(testCustomisableAutoOpenMod)); AddAssert("Customisation opened", () => modSelect.ModSettingsContainer.Alpha == 1); + AddStep("deselect mod", () => modSelect.SelectMod(testCustomisableAutoOpenMod)); + AddAssert("Customisation closed", () => modSelect.ModSettingsContainer.Alpha == 0); } private void createModSelect() From d73ef7c37e86639fbbeac95431077ba2d374201d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 9 Feb 2020 21:25:11 +0900 Subject: [PATCH 1397/1829] Change DummyBeatmap's track to be 0 length --- osu.Game/Beatmaps/WorkingBeatmap.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Beatmaps/WorkingBeatmap.cs b/osu.Game/Beatmaps/WorkingBeatmap.cs index 05c344b199..30f2045a83 100644 --- a/osu.Game/Beatmaps/WorkingBeatmap.cs +++ b/osu.Game/Beatmaps/WorkingBeatmap.cs @@ -59,7 +59,7 @@ namespace osu.Game.Beatmaps switch (lastObject) { case null: - length = excess_length; + length = 0; break; case IHasEndTime endTime: From c1f52ef5941dd5c84c3dd6432ccf261558dce8ba Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 9 Feb 2020 21:25:28 +0900 Subject: [PATCH 1398/1829] Refactor BeatSyncContainer to handle zero length tracks --- .../Containers/BeatSyncedContainer.cs | 24 +++++++------------ 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/osu.Game/Graphics/Containers/BeatSyncedContainer.cs b/osu.Game/Graphics/Containers/BeatSyncedContainer.cs index be9aefa359..f36079682e 100644 --- a/osu.Game/Graphics/Containers/BeatSyncedContainer.cs +++ b/osu.Game/Graphics/Containers/BeatSyncedContainer.cs @@ -59,9 +59,9 @@ namespace osu.Game.Graphics.Containers Track track = null; IBeatmap beatmap = null; - double currentTrackTime; - TimingControlPoint timingPoint; - EffectControlPoint effectPoint; + double currentTrackTime = 0; + TimingControlPoint timingPoint = null; + EffectControlPoint effectPoint = null; if (Beatmap.Value.TrackLoaded && Beatmap.Value.BeatmapLoaded) { @@ -69,24 +69,18 @@ namespace osu.Game.Graphics.Containers beatmap = Beatmap.Value.Beatmap; } - if (track != null && beatmap != null && track.IsRunning) + if (track != null && beatmap != null && track.IsRunning && track.Length > 0) { - currentTrackTime = track.Length > 0 ? track.CurrentTime + EarlyActivationMilliseconds : Clock.CurrentTime; + currentTrackTime = track.CurrentTime + EarlyActivationMilliseconds; timingPoint = beatmap.ControlPointInfo.TimingPointAt(currentTrackTime); effectPoint = beatmap.ControlPointInfo.EffectPointAt(currentTrackTime); - - if (timingPoint.BeatLength == 0) - { - IsBeatSyncedWithTrack = false; - return; - } - - IsBeatSyncedWithTrack = true; } - else + + IsBeatSyncedWithTrack = timingPoint?.BeatLength > 0; + + if (timingPoint == null || !IsBeatSyncedWithTrack) { - IsBeatSyncedWithTrack = false; currentTrackTime = Clock.CurrentTime; timingPoint = defaultTiming; effectPoint = defaultEffect; From 96574a98adc8b48c2637aabc3287562eb8893f06 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 9 Feb 2020 21:34:56 +0900 Subject: [PATCH 1399/1829] Use non-zero length for fallback virtual track (allows tests to work as expected) --- osu.Game/Beatmaps/WorkingBeatmap.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game/Beatmaps/WorkingBeatmap.cs b/osu.Game/Beatmaps/WorkingBeatmap.cs index 30f2045a83..5dc483b61c 100644 --- a/osu.Game/Beatmaps/WorkingBeatmap.cs +++ b/osu.Game/Beatmaps/WorkingBeatmap.cs @@ -39,7 +39,7 @@ namespace osu.Game.Beatmaps BeatmapSetInfo = beatmapInfo.BeatmapSet; Metadata = beatmapInfo.Metadata ?? BeatmapSetInfo?.Metadata ?? new BeatmapMetadata(); - track = new RecyclableLazy(() => GetTrack() ?? GetVirtualTrack()); + track = new RecyclableLazy(() => GetTrack() ?? GetVirtualTrack(1000)); background = new RecyclableLazy(GetBackground, BackgroundStillValid); waveform = new RecyclableLazy(GetWaveform); storyboard = new RecyclableLazy(GetStoryboard); @@ -48,7 +48,7 @@ namespace osu.Game.Beatmaps total_count.Value++; } - protected virtual Track GetVirtualTrack() + protected virtual Track GetVirtualTrack(double emptyLength = 0) { const double excess_length = 1000; @@ -59,7 +59,7 @@ namespace osu.Game.Beatmaps switch (lastObject) { case null: - length = 0; + length = emptyLength; break; case IHasEndTime endTime: From 404cb613429289faa85d05bdfcf1be181ecb6c69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Sun, 9 Feb 2020 14:39:27 +0100 Subject: [PATCH 1400/1829] Open mod select in a more reliable way --- .../Visual/UserInterface/TestSceneModSettings.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs index a9353d189f..7781eeb315 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs @@ -38,8 +38,8 @@ namespace osu.Game.Tests.Visual.UserInterface public void TestButtonShowsOnCustomisableMod() { createModSelect(); + openModSelect(); - AddStep("open", () => modSelect.Show()); AddAssert("button disabled", () => !modSelect.CustomiseButton.Enabled.Value); AddUntilStep("wait for button load", () => modSelect.ButtonsLoaded); AddStep("select mod", () => modSelect.SelectMod(testCustomisableMod)); @@ -58,7 +58,7 @@ namespace osu.Game.Tests.Visual.UserInterface AddAssert("mods still active", () => SelectedMods.Value.Count == 1); - AddStep("open", () => modSelect.Show()); + openModSelect(); AddAssert("button enabled", () => modSelect.CustomiseButton.Enabled.Value); } @@ -66,8 +66,8 @@ namespace osu.Game.Tests.Visual.UserInterface public void TestAutoOpenOnModSelect() { createModSelect(); + openModSelect(); - AddStep("open", () => modSelect.Show()); AddAssert("Customisation closed", () => modSelect.ModSettingsContainer.Alpha == 0); AddStep("select mod", () => modSelect.SelectMod(testCustomisableAutoOpenMod)); AddAssert("Customisation opened", () => modSelect.ModSettingsContainer.Alpha == 1); @@ -88,6 +88,12 @@ namespace osu.Game.Tests.Visual.UserInterface }); } + private void openModSelect() + { + AddStep("open", () => modSelect.Show()); + AddUntilStep("wait for ready", () => modSelect.State.Value == Visibility.Visible && modSelect.ButtonsLoaded); + } + private class TestModSelectOverlay : ModSelectOverlay { public new Container ModSettingsContainer => base.ModSettingsContainer; From 7e28f2fe6aae19fdf91e68211cca5c0d19bee6be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Sun, 9 Feb 2020 14:41:02 +0100 Subject: [PATCH 1401/1829] Rename test to better reflect its purpose --- osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs index 7781eeb315..7ff463361a 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModSettings.cs @@ -63,7 +63,7 @@ namespace osu.Game.Tests.Visual.UserInterface } [Test] - public void TestAutoOpenOnModSelect() + public void TestCustomisationMenuVisibility() { createModSelect(); openModSelect(); From b45f1ef99a6489984534cf86ac219469b6d0265f Mon Sep 17 00:00:00 2001 From: Maximilian Junges Date: Sun, 9 Feb 2020 22:27:37 +0100 Subject: [PATCH 1402/1829] make timestamps hoverable --- osu.Game/Overlays/BeatmapSet/AuthorInfo.cs | 26 +++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/AuthorInfo.cs b/osu.Game/Overlays/BeatmapSet/AuthorInfo.cs index 096e91b65b..485ca100c6 100644 --- a/osu.Game/Overlays/BeatmapSet/AuthorInfo.cs +++ b/osu.Game/Overlays/BeatmapSet/AuthorInfo.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 osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; @@ -50,7 +51,7 @@ namespace osu.Game.Overlays.BeatmapSet fields.Children = new Drawable[] { new Field("mapped by", BeatmapSet.Metadata.Author.Username, OsuFont.GetFont(weight: FontWeight.Regular, italics: true)), - new Field("submitted on", online.Submitted.ToString(@"MMMM d, yyyy"), OsuFont.GetFont(weight: FontWeight.Bold)) + new Field("submitted", online.Submitted, OsuFont.GetFont(weight: FontWeight.Bold)) { Margin = new MarginPadding { Top = 5 }, }, @@ -58,11 +59,11 @@ namespace osu.Game.Overlays.BeatmapSet if (online.Ranked.HasValue) { - fields.Add(new Field("ranked on", online.Ranked.Value.ToString(@"MMMM d, yyyy"), OsuFont.GetFont(weight: FontWeight.Bold))); + fields.Add(new Field("ranked", online.Ranked.Value, OsuFont.GetFont(weight: FontWeight.Bold))); } else if (online.LastUpdated.HasValue) { - fields.Add(new Field("last updated on", online.LastUpdated.Value.ToString(@"MMMM d, yyyy"), OsuFont.GetFont(weight: FontWeight.Bold))); + fields.Add(new Field("last updated", online.LastUpdated.Value, OsuFont.GetFont(weight: FontWeight.Bold))); } } @@ -126,6 +127,25 @@ namespace osu.Game.Overlays.BeatmapSet }, }; } + + public Field(string first, DateTimeOffset second, FontUsage secondFont) + { + AutoSizeAxes = Axes.Both; + Direction = FillDirection.Horizontal; + + Children = new[] + { + new OsuSpriteText + { + Text = $"{first} ", + Font = OsuFont.GetFont(size: 13) + }, + new DrawableDate(second) + { + Font = secondFont.With(size: 13) + } + }; + } } } } From 867c7338093934caf6164ba27029b3e65d006614 Mon Sep 17 00:00:00 2001 From: Maximilian Junges Date: Sun, 9 Feb 2020 23:19:32 +0100 Subject: [PATCH 1403/1829] make score date hoverable --- .../BeatmapSet/Scores/TopScoreUserSection.cs | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs index 72a7efd777..ba1db8ef03 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.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 osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; @@ -12,7 +13,6 @@ using osu.Game.Graphics.Sprites; using osu.Game.Online.Leaderboards; using osu.Game.Scoring; using osu.Game.Users.Drawables; -using osu.Game.Utils; using osuTK; using osuTK.Graphics; @@ -24,7 +24,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores private readonly UpdateableRank rank; private readonly UpdateableAvatar avatar; private readonly LinkFlowContainer usernameText; - private readonly SpriteText date; + private readonly DrawableDate achievedOn; private readonly UpdateableFlag flag; public TopScoreUserSection() @@ -92,11 +92,24 @@ namespace osu.Game.Overlays.BeatmapSet.Scores Origin = Anchor.CentreLeft, AutoSizeAxes = Axes.Both, }, - date = new OsuSpriteText + new FillFlowContainer() { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, - Font = OsuFont.GetFont(size: 10, weight: FontWeight.Bold) + Children = new[] + { + new OsuSpriteText + { + Text = "achieved ", + Font = OsuFont.GetFont(size: 10, weight: FontWeight.Bold) + }, + achievedOn = new DrawableDate(DateTimeOffset.MinValue) + { + Font = OsuFont.GetFont(size: 10, weight: FontWeight.Bold) + }, + } }, flag = new UpdateableFlag { @@ -125,7 +138,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { avatar.User = value.User; flag.Country = value.User.Country; - date.Text = $@"achieved {HumanizerUtils.Humanize(value.Date)}"; + achievedOn.Date = value.Date; usernameText.Clear(); usernameText.AddUserLink(value.User); @@ -134,4 +147,4 @@ namespace osu.Game.Overlays.BeatmapSet.Scores } } } -} +} \ No newline at end of file From 3e06324f61770bd6bcee4135c0573d5fc1720b0a Mon Sep 17 00:00:00 2001 From: Maximilian Junges Date: Sun, 9 Feb 2020 23:39:34 +0100 Subject: [PATCH 1404/1829] fix formatting issue --- osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs index ba1db8ef03..6c33629c0e 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs @@ -92,7 +92,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores Origin = Anchor.CentreLeft, AutoSizeAxes = Axes.Both, }, - new FillFlowContainer() + new FillFlowContainer { AutoSizeAxes = Axes.Both, Direction = FillDirection.Horizontal, From ed8cb1d6bf42b35b97370810216404532acb114a Mon Sep 17 00:00:00 2001 From: Maximilian Junges Date: Sun, 9 Feb 2020 23:46:06 +0100 Subject: [PATCH 1405/1829] add missing eof newline --- osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs index 6c33629c0e..94a6334401 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreUserSection.cs @@ -147,4 +147,4 @@ namespace osu.Game.Overlays.BeatmapSet.Scores } } } -} \ No newline at end of file +} From 88a56d00bfde67ba143e7b1d87a90d5b4ba0b5c4 Mon Sep 17 00:00:00 2001 From: voidedWarranties Date: Sun, 9 Feb 2020 20:11:37 -0800 Subject: [PATCH 1406/1829] Allow specifying order to SettingSource --- .../Mods/CatchModDifficultyAdjust.cs | 4 +-- .../Mods/OsuModDifficultyAdjust.cs | 4 +-- .../Configuration/SettingSourceAttribute.cs | 28 +++++++++++++++++-- osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs | 4 +-- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs index 8377b3786a..802802c155 100644 --- a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs @@ -10,7 +10,7 @@ namespace osu.Game.Rulesets.Catch.Mods { public class CatchModDifficultyAdjust : ModDifficultyAdjust { - [SettingSource("Fruit Size", "Override a beatmap's set CS.")] + [SettingSource("Fruit Size", "Override a beatmap's set CS.", SettingSourceAttribute.FIRST)] public BindableNumber CircleSize { get; } = new BindableFloat { Precision = 0.1f, @@ -20,7 +20,7 @@ namespace osu.Game.Rulesets.Catch.Mods Value = 5, }; - [SettingSource("Approach Rate", "Override a beatmap's set AR.")] + [SettingSource("Approach Rate", "Override a beatmap's set AR.", SettingSourceAttribute.LAST)] public BindableNumber ApproachRate { get; } = new BindableFloat { Precision = 0.1f, diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs index 7eee71be81..5326e36282 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs @@ -10,7 +10,7 @@ namespace osu.Game.Rulesets.Osu.Mods { public class OsuModDifficultyAdjust : ModDifficultyAdjust { - [SettingSource("Circle Size", "Override a beatmap's set CS.")] + [SettingSource("Circle Size", "Override a beatmap's set CS.", SettingSourceAttribute.FIRST)] public BindableNumber CircleSize { get; } = new BindableFloat { Precision = 0.1f, @@ -20,7 +20,7 @@ namespace osu.Game.Rulesets.Osu.Mods Value = 5, }; - [SettingSource("Approach Rate", "Override a beatmap's set AR.")] + [SettingSource("Approach Rate", "Override a beatmap's set AR.", SettingSourceAttribute.LAST)] public BindableNumber ApproachRate { get; } = new BindableFloat { Precision = 0.1f, diff --git a/osu.Game/Configuration/SettingSourceAttribute.cs b/osu.Game/Configuration/SettingSourceAttribute.cs index a3788e4582..79232b70dc 100644 --- a/osu.Game/Configuration/SettingSourceAttribute.cs +++ b/osu.Game/Configuration/SettingSourceAttribute.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Reflection; using JetBrains.Annotations; using osu.Framework.Bindables; @@ -20,14 +21,25 @@ namespace osu.Game.Configuration [AttributeUsage(AttributeTargets.Property)] public class SettingSourceAttribute : Attribute { + public const int FIRST = 0; + public const int ORDERED_RELATIVE = 1; + public const int UNORDERED = 2; + public const int LAST = 3; + public string Label { get; } public string Description { get; } - public SettingSourceAttribute(string label, string description = null) + public int OrderMode { get; } + + public int OrderPosition { get; } + + public SettingSourceAttribute(string label, string description = null, int order = UNORDERED, int orderPosition = 0) { Label = label ?? string.Empty; Description = description ?? string.Empty; + OrderMode = order; + OrderPosition = orderPosition; } } @@ -35,7 +47,7 @@ namespace osu.Game.Configuration { public static IEnumerable CreateSettingsControls(this object obj) { - foreach (var (attr, property) in obj.GetSettingsSourceProperties()) + foreach (var (attr, property) in obj.GetOrderedSettingsSourceProperties()) { object value = property.GetValue(obj); @@ -116,5 +128,17 @@ namespace osu.Game.Configuration yield return (attr, property); } } + + public static IEnumerable<(SettingSourceAttribute, PropertyInfo)> GetOrderedSettingsSourceProperties(this object obj) + { + var original = obj.GetSettingsSourceProperties(); + + var first = original.Where(attr => attr.Item1.OrderMode == SettingSourceAttribute.FIRST); + var orderedRelative = original.Where(attr => attr.Item1.OrderMode == SettingSourceAttribute.ORDERED_RELATIVE).OrderBy(attr => attr.Item1.OrderPosition); + var unordered = original.Where(attr => attr.Item1.OrderMode == SettingSourceAttribute.UNORDERED); + var last = original.Where(attr => attr.Item1.OrderMode == SettingSourceAttribute.LAST); + + return first.Concat(orderedRelative).Concat(unordered).Concat(last); + } } } diff --git a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs index d74e2ce2bc..8c6b9658b0 100644 --- a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs @@ -28,7 +28,7 @@ namespace osu.Game.Rulesets.Mods public override Type[] IncompatibleMods => new[] { typeof(ModEasy), typeof(ModHardRock) }; - [SettingSource("Drain Rate", "Override a beatmap's set HP.")] + [SettingSource("Drain Rate", "Override a beatmap's set HP.", SettingSourceAttribute.ORDERED_RELATIVE, 1)] public BindableNumber DrainRate { get; } = new BindableFloat { Precision = 0.1f, @@ -38,7 +38,7 @@ namespace osu.Game.Rulesets.Mods Value = 5, }; - [SettingSource("Overall Difficulty", "Override a beatmap's set OD.")] + [SettingSource("Overall Difficulty", "Override a beatmap's set OD.", SettingSourceAttribute.ORDERED_RELATIVE, 1)] public BindableNumber OverallDifficulty { get; } = new BindableFloat { Precision = 0.1f, From 137181017b96ae3c7f786295c42023da197691ed Mon Sep 17 00:00:00 2001 From: voidedWarranties Date: Sun, 9 Feb 2020 20:36:54 -0800 Subject: [PATCH 1407/1829] Naming consistency with osu!web --- osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs | 2 +- osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs index 802802c155..f4754696ff 100644 --- a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs @@ -10,7 +10,7 @@ namespace osu.Game.Rulesets.Catch.Mods { public class CatchModDifficultyAdjust : ModDifficultyAdjust { - [SettingSource("Fruit Size", "Override a beatmap's set CS.", SettingSourceAttribute.FIRST)] + [SettingSource("Circle Size", "Override a beatmap's set CS.", SettingSourceAttribute.FIRST)] public BindableNumber CircleSize { get; } = new BindableFloat { Precision = 0.1f, diff --git a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs index 8c6b9658b0..fae04dd13e 100644 --- a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs @@ -28,7 +28,7 @@ namespace osu.Game.Rulesets.Mods public override Type[] IncompatibleMods => new[] { typeof(ModEasy), typeof(ModHardRock) }; - [SettingSource("Drain Rate", "Override a beatmap's set HP.", SettingSourceAttribute.ORDERED_RELATIVE, 1)] + [SettingSource("HP Drain", "Override a beatmap's set HP.", SettingSourceAttribute.ORDERED_RELATIVE, 1)] public BindableNumber DrainRate { get; } = new BindableFloat { Precision = 0.1f, @@ -38,7 +38,7 @@ namespace osu.Game.Rulesets.Mods Value = 5, }; - [SettingSource("Overall Difficulty", "Override a beatmap's set OD.", SettingSourceAttribute.ORDERED_RELATIVE, 1)] + [SettingSource("Accuracy", "Override a beatmap's set OD.", SettingSourceAttribute.ORDERED_RELATIVE, 1)] public BindableNumber OverallDifficulty { get; } = new BindableFloat { Precision = 0.1f, From 28cf5c7a5983b5ab9f9b6366faf751a94afb695d Mon Sep 17 00:00:00 2001 From: Dan Balasescu Date: Mon, 10 Feb 2020 14:28:43 +0900 Subject: [PATCH 1408/1829] Add accessor --- osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs index 55b2b801e7..417d32ca4f 100644 --- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs @@ -32,7 +32,7 @@ namespace osu.Game.Screens.Edit.Compose.Components protected DragBox DragBox { get; private set; } - protected Container SelectionBlueprints; + protected Container SelectionBlueprints { get; private set; } private SelectionHandler selectionHandler; From ea521b466fdaa28dda69d8388f3f19a6183f040b Mon Sep 17 00:00:00 2001 From: voidedWarranties Date: Sun, 9 Feb 2020 21:37:40 -0800 Subject: [PATCH 1409/1829] Switch numerical consts to an enum --- .../Mods/CatchModDifficultyAdjust.cs | 5 ++-- .../Mods/OsuModDifficultyAdjust.cs | 5 ++-- .../Configuration/SettingSourceAttribute.cs | 25 +++++++++++-------- osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs | 5 ++-- 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs index f4754696ff..17a2847fd1 100644 --- a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs @@ -5,12 +5,13 @@ using osu.Framework.Bindables; using osu.Game.Beatmaps; using osu.Game.Configuration; using osu.Game.Rulesets.Mods; +using static osu.Game.Configuration.SettingSourceAttribute; namespace osu.Game.Rulesets.Catch.Mods { public class CatchModDifficultyAdjust : ModDifficultyAdjust { - [SettingSource("Circle Size", "Override a beatmap's set CS.", SettingSourceAttribute.FIRST)] + [SettingSource("Circle Size", "Override a beatmap's set CS.", OrderMode.FIRST)] public BindableNumber CircleSize { get; } = new BindableFloat { Precision = 0.1f, @@ -20,7 +21,7 @@ namespace osu.Game.Rulesets.Catch.Mods Value = 5, }; - [SettingSource("Approach Rate", "Override a beatmap's set AR.", SettingSourceAttribute.LAST)] + [SettingSource("Approach Rate", "Override a beatmap's set AR.", OrderMode.LAST)] public BindableNumber ApproachRate { get; } = new BindableFloat { Precision = 0.1f, diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs index 5326e36282..2b56042ead 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs @@ -5,12 +5,13 @@ using osu.Framework.Bindables; using osu.Game.Beatmaps; using osu.Game.Configuration; using osu.Game.Rulesets.Mods; +using static osu.Game.Configuration.SettingSourceAttribute; namespace osu.Game.Rulesets.Osu.Mods { public class OsuModDifficultyAdjust : ModDifficultyAdjust { - [SettingSource("Circle Size", "Override a beatmap's set CS.", SettingSourceAttribute.FIRST)] + [SettingSource("Circle Size", "Override a beatmap's set CS.", OrderMode.FIRST)] public BindableNumber CircleSize { get; } = new BindableFloat { Precision = 0.1f, @@ -20,7 +21,7 @@ namespace osu.Game.Rulesets.Osu.Mods Value = 5, }; - [SettingSource("Approach Rate", "Override a beatmap's set AR.", SettingSourceAttribute.LAST)] + [SettingSource("Approach Rate", "Override a beatmap's set AR.", OrderMode.LAST)] public BindableNumber ApproachRate { get; } = new BindableFloat { Precision = 0.1f, diff --git a/osu.Game/Configuration/SettingSourceAttribute.cs b/osu.Game/Configuration/SettingSourceAttribute.cs index 79232b70dc..06e01bb042 100644 --- a/osu.Game/Configuration/SettingSourceAttribute.cs +++ b/osu.Game/Configuration/SettingSourceAttribute.cs @@ -21,24 +21,27 @@ namespace osu.Game.Configuration [AttributeUsage(AttributeTargets.Property)] public class SettingSourceAttribute : Attribute { - public const int FIRST = 0; - public const int ORDERED_RELATIVE = 1; - public const int UNORDERED = 2; - public const int LAST = 3; + public enum OrderMode + { + FIRST, + ORDERED_RELATIVE, + UNORDERED, + LAST + } public string Label { get; } public string Description { get; } - public int OrderMode { get; } + public OrderMode OrderingMode { get; } public int OrderPosition { get; } - public SettingSourceAttribute(string label, string description = null, int order = UNORDERED, int orderPosition = 0) + public SettingSourceAttribute(string label, string description = null, OrderMode order = OrderMode.UNORDERED, int orderPosition = 0) { Label = label ?? string.Empty; Description = description ?? string.Empty; - OrderMode = order; + OrderingMode = order; OrderPosition = orderPosition; } } @@ -133,10 +136,10 @@ namespace osu.Game.Configuration { var original = obj.GetSettingsSourceProperties(); - var first = original.Where(attr => attr.Item1.OrderMode == SettingSourceAttribute.FIRST); - var orderedRelative = original.Where(attr => attr.Item1.OrderMode == SettingSourceAttribute.ORDERED_RELATIVE).OrderBy(attr => attr.Item1.OrderPosition); - var unordered = original.Where(attr => attr.Item1.OrderMode == SettingSourceAttribute.UNORDERED); - var last = original.Where(attr => attr.Item1.OrderMode == SettingSourceAttribute.LAST); + var first = original.Where(attr => attr.Item1.OrderingMode == SettingSourceAttribute.OrderMode.FIRST); + var orderedRelative = original.Where(attr => attr.Item1.OrderingMode == SettingSourceAttribute.OrderMode.ORDERED_RELATIVE).OrderBy(attr => attr.Item1.OrderPosition); + var unordered = original.Where(attr => attr.Item1.OrderingMode == SettingSourceAttribute.OrderMode.UNORDERED); + var last = original.Where(attr => attr.Item1.OrderingMode == SettingSourceAttribute.OrderMode.LAST); return first.Concat(orderedRelative).Concat(unordered).Concat(last); } diff --git a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs index fae04dd13e..958a0353ea 100644 --- a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs @@ -7,6 +7,7 @@ using osu.Framework.Graphics.Sprites; using System; using System.Collections.Generic; using osu.Game.Configuration; +using static osu.Game.Configuration.SettingSourceAttribute; namespace osu.Game.Rulesets.Mods { @@ -28,7 +29,7 @@ namespace osu.Game.Rulesets.Mods public override Type[] IncompatibleMods => new[] { typeof(ModEasy), typeof(ModHardRock) }; - [SettingSource("HP Drain", "Override a beatmap's set HP.", SettingSourceAttribute.ORDERED_RELATIVE, 1)] + [SettingSource("HP Drain", "Override a beatmap's set HP.", OrderMode.ORDERED_RELATIVE, 1)] public BindableNumber DrainRate { get; } = new BindableFloat { Precision = 0.1f, @@ -38,7 +39,7 @@ namespace osu.Game.Rulesets.Mods Value = 5, }; - [SettingSource("Accuracy", "Override a beatmap's set OD.", SettingSourceAttribute.ORDERED_RELATIVE, 1)] + [SettingSource("Accuracy", "Override a beatmap's set OD.", OrderMode.ORDERED_RELATIVE, 1)] public BindableNumber OverallDifficulty { get; } = new BindableFloat { Precision = 0.1f, From d61516e10c342a02ee20350bb49c7cd69a1eec05 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 10 Feb 2020 16:59:49 +0900 Subject: [PATCH 1410/1829] Add failing tests --- .../SongSelect/TestScenePlaySongSelect.cs | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs index 80192b9ebc..a5145f420d 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs @@ -17,6 +17,7 @@ using osu.Framework.Screens; using osu.Framework.Testing; using osu.Game.Beatmaps; using osu.Game.Configuration; +using osu.Game.Graphics.UserInterface; using osu.Game.Overlays; using osu.Game.Rulesets; using osu.Game.Rulesets.Mods; @@ -426,6 +427,40 @@ namespace osu.Game.Tests.Visual.SongSelect AddAssert("start not requested", () => !startRequested); } + [TestCase(false)] + [TestCase(true)] + public void TestExternalBeatmapChangeWhileFiltered(bool differentRuleset) + { + createSongSelect(); + addManyTestMaps(); + + changeRuleset(0); + + AddUntilStep("has selection", () => songSelect.Carousel.SelectedBeatmap != null); + + AddStep("set filter text", () => songSelect.FilterControl.ChildrenOfType().First().Text = "nonono"); + + AddUntilStep("dummy selected", () => Beatmap.Value is DummyWorkingBeatmap); + + BeatmapInfo target = null; + + AddStep("select beatmap externally", () => + { + target = manager.QueryBeatmapSets(b => b.Beatmaps.Any(bi => bi.RulesetID == (differentRuleset ? 1 : 0))) + .ElementAt(5).Beatmaps.First(); + + Beatmap.Value = manager.GetWorkingBeatmap(target); + }); + + AddUntilStep("correct beatmap selected", () => Beatmap.Value.BeatmapInfo.OnlineBeatmapID == target.OnlineBeatmapID); + AddAssert("carousel also correct", () => songSelect.Carousel.SelectedBeatmap.OnlineBeatmapID == target.OnlineBeatmapID); + + AddStep("reset filter text", () => songSelect.FilterControl.ChildrenOfType().First().Text = string.Empty); + + AddAssert("still selected", () => Beatmap.Value.BeatmapInfo.OnlineBeatmapID == target.OnlineBeatmapID); + AddAssert("carousel also correct", () => songSelect.Carousel.SelectedBeatmap.OnlineBeatmapID == target.OnlineBeatmapID); + } + [Test] public void TestAutoplayViaCtrlEnter() { @@ -468,6 +503,7 @@ namespace osu.Game.Tests.Visual.SongSelect private void importForRuleset(int id) => manager.Import(createTestBeatmapSet(getImportId(), rulesets.AvailableRulesets.Where(r => r.ID == id).ToArray())).Wait(); private static int importId; + private int getImportId() => ++importId; private void checkMusicPlaying(bool playing) => @@ -551,6 +587,8 @@ namespace osu.Game.Tests.Visual.SongSelect public new Bindable Ruleset => base.Ruleset; + public new FilterControl FilterControl => base.FilterControl; + public WorkingBeatmap CurrentBeatmap => Beatmap.Value; public WorkingBeatmap CurrentBeatmapDetailsBeatmap => BeatmapDetails.Beatmap; public new BeatmapCarousel Carousel => base.Carousel; From 66fb72cd8a476f33f07f408d0c0220d23233d950 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 10 Feb 2020 16:31:52 +0900 Subject: [PATCH 1411/1829] Fix song select not showing active beatmap if it is filtered by local criteria --- osu.Game/Screens/Select/BeatmapCarousel.cs | 12 ++++++++++++ .../Select/Carousel/CarouselBeatmapSet.cs | 2 +- osu.Game/Screens/Select/Carousel/CarouselItem.cs | 2 +- osu.Game/Screens/Select/SongSelect.cs | 16 +++++++++++----- 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs b/osu.Game/Screens/Select/BeatmapCarousel.cs index 592e26adc2..5be4d24b2b 100644 --- a/osu.Game/Screens/Select/BeatmapCarousel.cs +++ b/osu.Game/Screens/Select/BeatmapCarousel.cs @@ -17,6 +17,7 @@ using osu.Framework.Caching; using osu.Framework.Threading; using osu.Framework.Extensions.IEnumerableExtensions; using osu.Framework.Input.Events; +using osu.Framework.Logging; using osu.Game.Beatmaps; using osu.Game.Graphics.Containers; using osu.Game.Graphics.Cursor; @@ -229,6 +230,17 @@ namespace osu.Game.Screens.Select if (item != null) { select(item); + + // if we got here and the set is filtered, it means we were bypassing filters. + // in this case, reapplying the filter is necessary to ensure the panel is in the correct place + // (since it is forcefully being included in the carousel). + if (set.Filtered.Value) + { + Debug.Assert(bypassFilters); + + applyActiveCriteria(false, true); + } + return true; } } diff --git a/osu.Game/Screens/Select/Carousel/CarouselBeatmapSet.cs b/osu.Game/Screens/Select/Carousel/CarouselBeatmapSet.cs index 301d0d4dae..8e323c66e2 100644 --- a/osu.Game/Screens/Select/Carousel/CarouselBeatmapSet.cs +++ b/osu.Game/Screens/Select/Carousel/CarouselBeatmapSet.cs @@ -62,7 +62,7 @@ namespace osu.Game.Screens.Select.Carousel /// /// All beatmaps which are not filtered and valid for display. /// - protected IEnumerable ValidBeatmaps => Beatmaps.Where(b => !b.Filtered.Value).Select(b => b.Beatmap); + protected IEnumerable ValidBeatmaps => Beatmaps.Where(b => !b.Filtered.Value || b.State.Value == CarouselItemState.Selected).Select(b => b.Beatmap); private int compareUsingAggregateMax(CarouselBeatmapSet other, Func func) { diff --git a/osu.Game/Screens/Select/Carousel/CarouselItem.cs b/osu.Game/Screens/Select/Carousel/CarouselItem.cs index 79c1a4cb6b..1108b72bd2 100644 --- a/osu.Game/Screens/Select/Carousel/CarouselItem.cs +++ b/osu.Game/Screens/Select/Carousel/CarouselItem.cs @@ -16,7 +16,7 @@ namespace osu.Game.Screens.Select.Carousel /// /// This item is not in a hidden state. /// - public bool Visible => State.Value != CarouselItemState.Collapsed && !Filtered.Value; + public bool Visible => State.Value == CarouselItemState.Selected || (State.Value != CarouselItemState.Collapsed && !Filtered.Value); public virtual List Drawables { diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index 5037081b5e..0da260d752 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -376,16 +376,22 @@ namespace osu.Game.Screens.Select private void workingBeatmapChanged(ValueChangedEvent e) { - if (e.NewValue is DummyWorkingBeatmap) return; + if (e.NewValue is DummyWorkingBeatmap || !this.IsCurrentScreen()) return; - if (this.IsCurrentScreen() && !Carousel.SelectBeatmap(e.NewValue?.BeatmapInfo, false)) + if (!Carousel.SelectBeatmap(e.NewValue.BeatmapInfo, false)) { - // If selecting new beatmap without bypassing filters failed, there's possibly a ruleset mismatch - if (e.NewValue?.BeatmapInfo?.Ruleset != null && !e.NewValue.BeatmapInfo.Ruleset.Equals(decoupledRuleset.Value)) + // A selection may not have been possible with filters applied. + + // There was possibly a ruleset mismatch. This is a case we can help things along by updating the game-wide ruleset to match. + if (e.NewValue.BeatmapInfo.Ruleset != null && !e.NewValue.BeatmapInfo.Ruleset.Equals(decoupledRuleset.Value)) { Ruleset.Value = e.NewValue.BeatmapInfo.Ruleset; - Carousel.SelectBeatmap(e.NewValue.BeatmapInfo); + transferRulesetValue(); } + + // Even if a ruleset mismatch was not the cause (ie. a text filter is applied), + // we still want to forcefully show the new beatmap, bypassing filters. + Carousel.SelectBeatmap(e.NewValue.BeatmapInfo); } } From 2252f790848c8b8e695afab6d28be272229ce0e4 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2020 08:01:14 +0000 Subject: [PATCH 1412/1829] Bump Sentry from 2.0.1 to 2.0.2 Bumps [Sentry](https://github.com/getsentry/sentry-dotnet) from 2.0.1 to 2.0.2. - [Release notes](https://github.com/getsentry/sentry-dotnet/releases) - [Commits](https://github.com/getsentry/sentry-dotnet/compare/2.0.1...2.0.2) Signed-off-by: dependabot-preview[bot] --- osu.Game/osu.Game.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 21c9eab4c6..389fbe8210 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -24,7 +24,7 @@ - + From a988a53d69fc23585f1aaa08b79b03bb2c31f708 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 10 Feb 2020 16:41:10 +0900 Subject: [PATCH 1413/1829] Better handle beatmap task cancel exception --- osu.Game/Beatmaps/WorkingBeatmap.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/osu.Game/Beatmaps/WorkingBeatmap.cs b/osu.Game/Beatmaps/WorkingBeatmap.cs index 5dc483b61c..1adf502004 100644 --- a/osu.Game/Beatmaps/WorkingBeatmap.cs +++ b/osu.Game/Beatmaps/WorkingBeatmap.cs @@ -159,8 +159,16 @@ namespace osu.Game.Beatmaps { return LoadBeatmapAsync().Result; } - catch (TaskCanceledException) + catch (AggregateException ae) { + foreach (var e in ae.InnerExceptions) + { + if (e is TaskCanceledException) + continue; + + Logger.Log(e.ToString()); + } + return null; } } From 51e2a934bdbfa6045ec94ee04f6e629521e8cb9e Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 10 Feb 2020 17:00:51 +0900 Subject: [PATCH 1414/1829] Fix possible beatmap nullref in logo visualisation --- osu.Game/Screens/Menu/LogoVisualisation.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Menu/LogoVisualisation.cs b/osu.Game/Screens/Menu/LogoVisualisation.cs index 06ca161fed..dcc68296f6 100644 --- a/osu.Game/Screens/Menu/LogoVisualisation.cs +++ b/osu.Game/Screens/Menu/LogoVisualisation.cs @@ -95,7 +95,7 @@ namespace osu.Game.Screens.Menu private void updateAmplitudes() { var track = beatmap.Value.TrackLoaded ? beatmap.Value.Track : null; - var effect = beatmap.Value.BeatmapLoaded ? beatmap.Value.Beatmap.ControlPointInfo.EffectPointAt(track?.CurrentTime ?? Time.Current) : null; + var effect = beatmap.Value.BeatmapLoaded ? beatmap.Value.Beatmap?.ControlPointInfo.EffectPointAt(track?.CurrentTime ?? Time.Current) : null; float[] temporalAmplitudes = track?.CurrentAmplitudes.FrequencyAmplitudes; From cef682aa03b607079417a9eca096890689c9ec5a Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 10 Feb 2020 17:01:41 +0900 Subject: [PATCH 1415/1829] Make WorkingBeatmap non-disposable --- osu.Game.Tests/WaveformTestBeatmap.cs | 4 +- osu.Game/Beatmaps/WorkingBeatmap.cs | 67 ++++++++++++--------------- osu.Game/OsuGame.cs | 11 ++--- osu.Game/Tests/Visual/OsuTestScene.cs | 4 +- 4 files changed, 39 insertions(+), 47 deletions(-) diff --git a/osu.Game.Tests/WaveformTestBeatmap.cs b/osu.Game.Tests/WaveformTestBeatmap.cs index df6394ed34..53ce5def32 100644 --- a/osu.Game.Tests/WaveformTestBeatmap.cs +++ b/osu.Game.Tests/WaveformTestBeatmap.cs @@ -37,9 +37,9 @@ namespace osu.Game.Tests trackStore = audioManager.GetTrackStore(getZipReader()); } - protected override void Dispose(bool isDisposing) + ~WaveformTestBeatmap() { - base.Dispose(isDisposing); + // Remove the track store from the audio manager trackStore?.Dispose(); } diff --git a/osu.Game/Beatmaps/WorkingBeatmap.cs b/osu.Game/Beatmaps/WorkingBeatmap.cs index 1adf502004..6478b33e27 100644 --- a/osu.Game/Beatmaps/WorkingBeatmap.cs +++ b/osu.Game/Beatmaps/WorkingBeatmap.cs @@ -17,10 +17,11 @@ using osu.Game.Rulesets.Objects.Types; using osu.Game.Rulesets.UI; using osu.Game.Skinning; using osu.Framework.Graphics.Video; +using osu.Framework.Logging; namespace osu.Game.Beatmaps { - public abstract class WorkingBeatmap : IWorkingBeatmap, IDisposable + public abstract class WorkingBeatmap : IWorkingBeatmap { public readonly BeatmapInfo BeatmapInfo; @@ -133,11 +134,29 @@ namespace osu.Game.Beatmaps return converted; } - public override string ToString() => BeatmapInfo.ToString(); + private CancellationTokenSource loadCancellation = new CancellationTokenSource(); - public bool BeatmapLoaded => beatmapLoadTask?.IsCompleted ?? false; + /// + /// Beings loading the contents of this asynchronously. + /// + public void BeginAsyncLoad() + { + loadBeatmapAsync(); + } - public Task LoadBeatmapAsync() => beatmapLoadTask ??= Task.Factory.StartNew(() => + /// + /// Cancels the asynchronous loading of the contents of this . + /// + public void CancelAsyncLoad() + { + loadCancellation?.Cancel(); + loadCancellation = new CancellationTokenSource(); + + if (beatmapLoadTask?.IsCompleted != true) + beatmapLoadTask = null; + } + + private Task loadBeatmapAsync() => beatmapLoadTask ??= Task.Factory.StartNew(() => { // Todo: Handle cancellation during beatmap parsing var b = GetBeatmap() ?? new Beatmap(); @@ -149,7 +168,11 @@ namespace osu.Game.Beatmaps b.BeatmapInfo = BeatmapInfo; return b; - }, beatmapCancellation.Token, TaskCreationOptions.LongRunning, TaskScheduler.Default); + }, loadCancellation.Token, TaskCreationOptions.LongRunning, TaskScheduler.Default); + + public override string ToString() => BeatmapInfo.ToString(); + + public bool BeatmapLoaded => beatmapLoadTask?.IsCompleted ?? false; public IBeatmap Beatmap { @@ -157,7 +180,7 @@ namespace osu.Game.Beatmaps { try { - return LoadBeatmapAsync().Result; + return loadBeatmapAsync().Result; } catch (AggregateException ae) { @@ -174,7 +197,6 @@ namespace osu.Game.Beatmaps } } - private readonly CancellationTokenSource beatmapCancellation = new CancellationTokenSource(); protected abstract IBeatmap GetBeatmap(); private Task beatmapLoadTask; @@ -225,40 +247,11 @@ namespace osu.Game.Beatmaps ///
    public virtual void RecycleTrack() => track.Recycle(); - #region Disposal - - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - private bool isDisposed; - - protected virtual void Dispose(bool isDisposing) - { - if (isDisposed) - return; - - isDisposed = true; - - // recycling logic is not here for the time being, as components which use - // retrieved objects from WorkingBeatmap may not hold a reference to the WorkingBeatmap itself. - // this should be fine as each retrieved component do have their own finalizers. - - // cancelling the beatmap load is safe for now since the retrieval is a synchronous - // operation. if we add an async retrieval method this may need to be reconsidered. - beatmapCancellation?.Cancel(); - total_count.Value--; - } - ~WorkingBeatmap() { - Dispose(false); + total_count.Value--; } - #endregion - public class RecyclableLazy { private Lazy lazy; diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index ff3dee55af..f848b1a328 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -401,15 +401,14 @@ namespace osu.Game if (nextBeatmap?.Track != null) nextBeatmap.Track.Completed += currentTrackCompleted; - using (var oldBeatmap = beatmap.OldValue) - { - if (oldBeatmap?.Track != null) - oldBeatmap.Track.Completed -= currentTrackCompleted; - } + var oldBeatmap = beatmap.OldValue; + if (oldBeatmap?.Track != null) + oldBeatmap.Track.Completed -= currentTrackCompleted; updateModDefaults(); - nextBeatmap?.LoadBeatmapAsync(); + oldBeatmap?.CancelAsyncLoad(); + nextBeatmap?.BeginAsyncLoad(); } private void modsChanged(ValueChangedEvent> mods) diff --git a/osu.Game/Tests/Visual/OsuTestScene.cs b/osu.Game/Tests/Visual/OsuTestScene.cs index 41ab7fce99..b203557fab 100644 --- a/osu.Game/Tests/Visual/OsuTestScene.cs +++ b/osu.Game/Tests/Visual/OsuTestScene.cs @@ -191,9 +191,9 @@ namespace osu.Game.Tests.Visual track = audio?.Tracks.GetVirtual(length); } - protected override void Dispose(bool isDisposing) + ~ClockBackedTestWorkingBeatmap() { - base.Dispose(isDisposing); + // Remove the track store from the audio manager store?.Dispose(); } From 668f36d7f3286f18bcc8a5c1fd26dcfa198cd512 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 10 Feb 2020 17:04:31 +0900 Subject: [PATCH 1416/1829] Clean up logging --- osu.Game/Beatmaps/WorkingBeatmap.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Beatmaps/WorkingBeatmap.cs b/osu.Game/Beatmaps/WorkingBeatmap.cs index 6478b33e27..36479ddbb7 100644 --- a/osu.Game/Beatmaps/WorkingBeatmap.cs +++ b/osu.Game/Beatmaps/WorkingBeatmap.cs @@ -189,7 +189,7 @@ namespace osu.Game.Beatmaps if (e is TaskCanceledException) continue; - Logger.Log(e.ToString()); + Logger.Log(e.Message); } return null; From 8186f7250725472fd54039e91f44df57135a2f8d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 10 Feb 2020 17:12:45 +0900 Subject: [PATCH 1417/1829] Remove unused using --- osu.Game/Screens/Select/BeatmapCarousel.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs b/osu.Game/Screens/Select/BeatmapCarousel.cs index 5be4d24b2b..7f36a23a86 100644 --- a/osu.Game/Screens/Select/BeatmapCarousel.cs +++ b/osu.Game/Screens/Select/BeatmapCarousel.cs @@ -17,7 +17,6 @@ using osu.Framework.Caching; using osu.Framework.Threading; using osu.Framework.Extensions.IEnumerableExtensions; using osu.Framework.Input.Events; -using osu.Framework.Logging; using osu.Game.Beatmaps; using osu.Game.Graphics.Containers; using osu.Game.Graphics.Cursor; From 48781e5685bee2e428dd03e44b66979a2a8e7ed9 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2020 08:24:12 +0000 Subject: [PATCH 1418/1829] Bump Microsoft.NET.Test.Sdk from 16.4.0 to 16.5.0 Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 16.4.0 to 16.5.0. - [Release notes](https://github.com/microsoft/vstest/releases) - [Commits](https://github.com/microsoft/vstest/compare/v16.4.0...v16.5.0) Signed-off-by: dependabot-preview[bot] --- .../osu.Game.Rulesets.Catch.Tests.csproj | 2 +- .../osu.Game.Rulesets.Mania.Tests.csproj | 2 +- osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj | 2 +- .../osu.Game.Rulesets.Taiko.Tests.csproj | 2 +- osu.Game.Tests/osu.Game.Tests.csproj | 2 +- osu.Game.Tournament.Tests/osu.Game.Tournament.Tests.csproj | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/osu.Game.Rulesets.Catch.Tests/osu.Game.Rulesets.Catch.Tests.csproj b/osu.Game.Rulesets.Catch.Tests/osu.Game.Rulesets.Catch.Tests.csproj index 9559d13328..8c371db257 100644 --- a/osu.Game.Rulesets.Catch.Tests/osu.Game.Rulesets.Catch.Tests.csproj +++ b/osu.Game.Rulesets.Catch.Tests/osu.Game.Rulesets.Catch.Tests.csproj @@ -2,7 +2,7 @@ - + diff --git a/osu.Game.Rulesets.Mania.Tests/osu.Game.Rulesets.Mania.Tests.csproj b/osu.Game.Rulesets.Mania.Tests/osu.Game.Rulesets.Mania.Tests.csproj index dea6e6c0fb..6855b99f28 100644 --- a/osu.Game.Rulesets.Mania.Tests/osu.Game.Rulesets.Mania.Tests.csproj +++ b/osu.Game.Rulesets.Mania.Tests/osu.Game.Rulesets.Mania.Tests.csproj @@ -2,7 +2,7 @@ - + diff --git a/osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj b/osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj index 9d4e016eae..217707b180 100644 --- a/osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj +++ b/osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj @@ -2,7 +2,7 @@ - + diff --git a/osu.Game.Rulesets.Taiko.Tests/osu.Game.Rulesets.Taiko.Tests.csproj b/osu.Game.Rulesets.Taiko.Tests/osu.Game.Rulesets.Taiko.Tests.csproj index d728d65bfd..f6054a5d6f 100644 --- a/osu.Game.Rulesets.Taiko.Tests/osu.Game.Rulesets.Taiko.Tests.csproj +++ b/osu.Game.Rulesets.Taiko.Tests/osu.Game.Rulesets.Taiko.Tests.csproj @@ -2,7 +2,7 @@ - + diff --git a/osu.Game.Tests/osu.Game.Tests.csproj b/osu.Game.Tests/osu.Game.Tests.csproj index 6c799e5e90..35eb3fa161 100644 --- a/osu.Game.Tests/osu.Game.Tests.csproj +++ b/osu.Game.Tests/osu.Game.Tests.csproj @@ -3,7 +3,7 @@ - + diff --git a/osu.Game.Tournament.Tests/osu.Game.Tournament.Tests.csproj b/osu.Game.Tournament.Tests/osu.Game.Tournament.Tests.csproj index 7ecfd6ef70..3b45fc83fd 100644 --- a/osu.Game.Tournament.Tests/osu.Game.Tournament.Tests.csproj +++ b/osu.Game.Tournament.Tests/osu.Game.Tournament.Tests.csproj @@ -5,7 +5,7 @@ - + From 0ab3982494e59b4bad192c901073db53f4fd8034 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 10 Feb 2020 17:25:11 +0900 Subject: [PATCH 1419/1829] Unify error handling --- .../Beatmaps/BeatmapManager_WorkingBeatmap.cs | 15 ++++++++++----- osu.Game/Beatmaps/WorkingBeatmap.cs | 16 +++++++++------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/osu.Game/Beatmaps/BeatmapManager_WorkingBeatmap.cs b/osu.Game/Beatmaps/BeatmapManager_WorkingBeatmap.cs index f9d71a2a6e..55c5175c5d 100644 --- a/osu.Game/Beatmaps/BeatmapManager_WorkingBeatmap.cs +++ b/osu.Game/Beatmaps/BeatmapManager_WorkingBeatmap.cs @@ -36,8 +36,9 @@ namespace osu.Game.Beatmaps using (var stream = new LineBufferedReader(store.GetStream(getPathForFile(BeatmapInfo.Path)))) return Decoder.GetDecoder(stream).Decode(stream); } - catch + catch (Exception e) { + Logger.Error(e, "Beatmap failed to load"); return null; } } @@ -59,8 +60,9 @@ namespace osu.Game.Beatmaps { return textureStore.Get(getPathForFile(Metadata.BackgroundFile)); } - catch + catch (Exception e) { + Logger.Error(e, "Background failed to load"); return null; } } @@ -74,8 +76,9 @@ namespace osu.Game.Beatmaps { return new VideoSprite(textureStore.GetStream(getPathForFile(Metadata.VideoFile))); } - catch + catch (Exception e) { + Logger.Error(e, "Video failed to load"); return null; } } @@ -86,8 +89,9 @@ namespace osu.Game.Beatmaps { return (trackStore ??= AudioManager.GetTrackStore(store)).Get(getPathForFile(Metadata.AudioFile)); } - catch + catch (Exception e) { + Logger.Error(e, "Track failed to load"); return null; } } @@ -115,8 +119,9 @@ namespace osu.Game.Beatmaps var trackData = store.GetStream(getPathForFile(Metadata.AudioFile)); return trackData == null ? null : new Waveform(trackData); } - catch + catch (Exception e) { + Logger.Error(e, "Waveform failed to load"); return null; } } diff --git a/osu.Game/Beatmaps/WorkingBeatmap.cs b/osu.Game/Beatmaps/WorkingBeatmap.cs index 36479ddbb7..1e1ffad81e 100644 --- a/osu.Game/Beatmaps/WorkingBeatmap.cs +++ b/osu.Game/Beatmaps/WorkingBeatmap.cs @@ -184,14 +184,16 @@ namespace osu.Game.Beatmaps } catch (AggregateException ae) { - foreach (var e in ae.InnerExceptions) - { - if (e is TaskCanceledException) - continue; - - Logger.Log(e.Message); - } + // This is the exception that is generally expected here, which occurs via natural cancellation of the asynchronous load + if (ae.InnerExceptions.FirstOrDefault() is TaskCanceledException) + return null; + Logger.Error(ae, "Beatmap failed to load"); + return null; + } + catch (Exception e) + { + Logger.Error(e, "Beatmap failed to load"); return null; } } From 926cde9afc14ecbd3c75b043b22b1383cec4e3f2 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 10 Feb 2020 18:17:27 +0900 Subject: [PATCH 1420/1829] Fix potential test failures --- .../Visual/SongSelect/TestScenePlaySongSelect.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs index a5145f420d..bd06089514 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs @@ -452,13 +452,13 @@ namespace osu.Game.Tests.Visual.SongSelect Beatmap.Value = manager.GetWorkingBeatmap(target); }); - AddUntilStep("correct beatmap selected", () => Beatmap.Value.BeatmapInfo.OnlineBeatmapID == target.OnlineBeatmapID); - AddAssert("carousel also correct", () => songSelect.Carousel.SelectedBeatmap.OnlineBeatmapID == target.OnlineBeatmapID); + AddUntilStep("carousel has correct", () => songSelect.Carousel.SelectedBeatmap?.OnlineBeatmapID == target.OnlineBeatmapID); + AddUntilStep("game has correct", () => Beatmap.Value.BeatmapInfo.OnlineBeatmapID == target.OnlineBeatmapID); AddStep("reset filter text", () => songSelect.FilterControl.ChildrenOfType().First().Text = string.Empty); - AddAssert("still selected", () => Beatmap.Value.BeatmapInfo.OnlineBeatmapID == target.OnlineBeatmapID); - AddAssert("carousel also correct", () => songSelect.Carousel.SelectedBeatmap.OnlineBeatmapID == target.OnlineBeatmapID); + AddAssert("game still correct", () => Beatmap.Value?.BeatmapInfo.OnlineBeatmapID == target.OnlineBeatmapID); + AddAssert("carousel still correct", () => songSelect.Carousel.SelectedBeatmap.OnlineBeatmapID == target.OnlineBeatmapID); } [Test] From 26afe0f31e4df35cfb530fd76d9f9eba83d56e53 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 10 Feb 2020 15:43:11 +0300 Subject: [PATCH 1421/1829] Add ability to load long comment trees in CommentsContainer --- .../Visual/Online/TestSceneCommentsPage.cs | 38 +- .../API/Requests/GetCommentRepliesRequest.cs | 45 ++ .../Online/API/Requests/Responses/Comment.cs | 6 - .../API/Requests/Responses/CommentBundle.cs | 25 +- .../Overlays/Comments/CommentsContainer.cs | 17 +- osu.Game/Overlays/Comments/CommentsPage.cs | 58 ++- osu.Game/Overlays/Comments/DrawableComment.cs | 386 +++++++++++------- .../Comments/GetCommentRepliesButton.cs | 45 ++ .../Overlays/Comments/ShowChildrenButton.cs | 13 +- 9 files changed, 420 insertions(+), 213 deletions(-) create mode 100644 osu.Game/Online/API/Requests/GetCommentRepliesRequest.cs create mode 100644 osu.Game/Overlays/Comments/GetCommentRepliesButton.cs diff --git a/osu.Game.Tests/Visual/Online/TestSceneCommentsPage.cs b/osu.Game.Tests/Visual/Online/TestSceneCommentsPage.cs index 1217ce6b42..0ed8864860 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneCommentsPage.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneCommentsPage.cs @@ -58,8 +58,8 @@ namespace osu.Game.Tests.Visual.Online } }); - AddStep("load comments", () => createPage(comment_bundle)); - AddStep("load empty comments", () => createPage(empty_comment_bundle)); + AddStep("load comments", () => createPage(getCommentBundle())); + AddStep("load empty comments", () => createPage(getEmptyCommentBundle())); } private void createPage(CommentBundle commentBundle) @@ -71,13 +71,12 @@ namespace osu.Game.Tests.Visual.Online }); } - private static readonly CommentBundle empty_comment_bundle = new CommentBundle + private CommentBundle getEmptyCommentBundle() => new CommentBundle { Comments = new List(), - Total = 0, }; - private static readonly CommentBundle comment_bundle = new CommentBundle + private CommentBundle getCommentBundle() => new CommentBundle { Comments = new List { @@ -90,6 +89,33 @@ namespace osu.Game.Tests.Visual.Online VotesCount = 5 }, new Comment + { + Id = 100, + Message = "This comment has \"load replies\" button because it has unloaded replies", + LegacyName = "TestUser1100", + CreatedAt = DateTimeOffset.Now, + VotesCount = 5, + RepliesCount = 2, + }, + new Comment + { + Id = 111, + Message = "This comment has \"Show More\" button because it has unloaded replies, but some of them are loaded", + LegacyName = "TestUser1111", + CreatedAt = DateTimeOffset.Now, + VotesCount = 100, + RepliesCount = 2, + }, + new Comment + { + Id = 112, + ParentId = 111, + Message = "I'm here to make my parent work", + LegacyName = "someone", + CreatedAt = DateTimeOffset.Now, + VotesCount = 2, + }, + new Comment { Id = 2, Message = "This comment has been deleted :( but visible for admins", @@ -155,8 +181,6 @@ namespace osu.Game.Tests.Visual.Online Username = "Good_Admin" } }, - TopLevelCount = 4, - Total = 7 }; } } diff --git a/osu.Game/Online/API/Requests/GetCommentRepliesRequest.cs b/osu.Game/Online/API/Requests/GetCommentRepliesRequest.cs new file mode 100644 index 0000000000..203f5d5635 --- /dev/null +++ b/osu.Game/Online/API/Requests/GetCommentRepliesRequest.cs @@ -0,0 +1,45 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using Humanizer; +using osu.Framework.IO.Network; +using osu.Game.Online.API.Requests.Responses; +using osu.Game.Overlays.Comments; + +namespace osu.Game.Online.API.Requests +{ + public class GetCommentRepliesRequest : APIRequest + { + private readonly long commentId; + private readonly CommentableType commentableType; + private readonly long commentableId; + private readonly int page; + private readonly CommentsSortCriteria sort; + + public GetCommentRepliesRequest(long commentId, CommentableType commentableType, long commentableId, CommentsSortCriteria sort, int page) + { + this.commentId = commentId; + this.page = page; + this.sort = sort; + + // These parameters are necessary to get deleted comments + this.commentableType = commentableType; + this.commentableId = commentableId; + } + + protected override WebRequest CreateWebRequest() + { + var req = base.CreateWebRequest(); + + req.AddParameter("parent_id", commentId.ToString()); + req.AddParameter("sort", sort.ToString().ToLowerInvariant()); + req.AddParameter("commentable_type", commentableType.ToString().Underscore().ToLowerInvariant()); + req.AddParameter("commentable_id", commentableId.ToString()); + req.AddParameter("page", page.ToString()); + + return req; + } + + protected override string Target => "comments"; + } +} diff --git a/osu.Game/Online/API/Requests/Responses/Comment.cs b/osu.Game/Online/API/Requests/Responses/Comment.cs index 3e38c3067b..05a24cec0e 100644 --- a/osu.Game/Online/API/Requests/Responses/Comment.cs +++ b/osu.Game/Online/API/Requests/Responses/Comment.cs @@ -4,8 +4,6 @@ using Newtonsoft.Json; using osu.Game.Users; using System; -using System.Collections.Generic; -using System.Linq; namespace osu.Game.Online.API.Requests.Responses { @@ -17,8 +15,6 @@ namespace osu.Game.Online.API.Requests.Responses [JsonProperty(@"parent_id")] public long? ParentId { get; set; } - public readonly List ChildComments = new List(); - public Comment ParentComment { get; set; } [JsonProperty(@"user_id")] @@ -71,7 +67,5 @@ namespace osu.Game.Online.API.Requests.Responses public bool HasMessage => !string.IsNullOrEmpty(Message); public bool IsVoted { get; set; } - - public int DeletedChildrenCount => ChildComments.Count(c => c.IsDeleted); } } diff --git a/osu.Game/Online/API/Requests/Responses/CommentBundle.cs b/osu.Game/Online/API/Requests/Responses/CommentBundle.cs index 9b3ef8b6e5..f4c81bf66f 100644 --- a/osu.Game/Online/API/Requests/Responses/CommentBundle.cs +++ b/osu.Game/Online/API/Requests/Responses/CommentBundle.cs @@ -9,31 +9,8 @@ namespace osu.Game.Online.API.Requests.Responses { public class CommentBundle { - private List comments; - [JsonProperty(@"comments")] - public List Comments - { - get => comments; - set - { - comments = value; - comments.ForEach(child => - { - if (child.ParentId != null) - { - comments.ForEach(parent => - { - if (parent.Id == child.ParentId) - { - parent.ChildComments.Add(child); - child.ParentComment = parent; - } - }); - } - }); - } - } + public List Comments { get; set; } [JsonProperty(@"has_more")] public bool HasMore { get; set; } diff --git a/osu.Game/Overlays/Comments/CommentsContainer.cs b/osu.Game/Overlays/Comments/CommentsContainer.cs index 33a6be0d7a..751fd8a353 100644 --- a/osu.Game/Overlays/Comments/CommentsContainer.cs +++ b/osu.Game/Overlays/Comments/CommentsContainer.cs @@ -18,8 +18,8 @@ namespace osu.Game.Overlays.Comments { public class CommentsContainer : CompositeDrawable { - private CommentableType type; - private long? id; + private readonly Bindable type = new Bindable(); + private readonly BindableLong id = new BindableLong(); public readonly Bindable Sort = new Bindable(); public readonly BindableBool ShowDeleted = new BindableBool(); @@ -127,8 +127,8 @@ namespace osu.Game.Overlays.Comments /// The id of the resource to get comments for. public void ShowComments(CommentableType type, long id) { - this.type = type; - this.id = id; + this.type.Value = type; + this.id.Value = id; if (!IsLoaded) return; @@ -147,12 +147,12 @@ namespace osu.Game.Overlays.Comments private void getComments() { - if (!id.HasValue) + if (id.Value == 0) return; request?.Cancel(); loadCancellation?.Cancel(); - request = new GetCommentsRequest(type, id.Value, Sort.Value, currentPage++); + request = new GetCommentsRequest(type.Value, id.Value, Sort.Value, currentPage++); request.Success += onSuccess; api.PerformAsync(request); } @@ -172,7 +172,10 @@ namespace osu.Game.Overlays.Comments LoadComponentAsync(new CommentsPage(response) { - ShowDeleted = { BindTarget = ShowDeleted } + ShowDeleted = { BindTarget = ShowDeleted }, + Sort = { BindTarget = Sort }, + Type = { BindTarget = type }, + CommentableId = { BindTarget = id } }, loaded => { content.Add(loaded); diff --git a/osu.Game/Overlays/Comments/CommentsPage.cs b/osu.Game/Overlays/Comments/CommentsPage.cs index 153ce676eb..976af72abb 100644 --- a/osu.Game/Overlays/Comments/CommentsPage.cs +++ b/osu.Game/Overlays/Comments/CommentsPage.cs @@ -9,12 +9,22 @@ using osu.Game.Online.API.Requests.Responses; using osu.Framework.Graphics.Shapes; using osu.Game.Graphics.Sprites; using System.Linq; +using osu.Game.Online.API.Requests; +using osu.Game.Online.API; +using System.Collections.Generic; +using osu.Framework.Extensions.IEnumerableExtensions; namespace osu.Game.Overlays.Comments { public class CommentsPage : CompositeDrawable { public readonly BindableBool ShowDeleted = new BindableBool(); + public readonly Bindable Sort = new Bindable(); + public readonly Bindable Type = new Bindable(); + public readonly BindableLong CommentableId = new BindableLong(); + + [Resolved] + private IAPIProvider api { get; set; } private readonly CommentBundle commentBundle; @@ -52,18 +62,58 @@ namespace osu.Game.Overlays.Comments return; } - foreach (var c in commentBundle.Comments) + foreach (var comment in commentBundle.Comments) { - if (c.IsTopLevel) + var drawableComment = createDrawableComment(comment); + + var children = commentBundle.Comments.Where(c => c.ParentId == comment.Id); + + if (children.Any()) { - flow.Add(new DrawableComment(c) + children.ForEach(c => { - ShowDeleted = { BindTarget = ShowDeleted } + c.ParentComment = comment; }); + drawableComment.OnLoadComplete += loaded => ((DrawableComment)loaded).AddReplies(children.Select(c => createDrawableComment(c))); } + + if (comment.IsTopLevel) + flow.Add(drawableComment); } } + private void onCommentRepliesRequested(DrawableComment drawableComment, int page) + { + var request = new GetCommentRepliesRequest(drawableComment.Comment.Id, Type.Value, CommentableId.Value, Sort.Value, page); + request.Success += response => onCommentRepliesReceived(response, drawableComment); + api.PerformAsync(request); + } + + private void onCommentRepliesReceived(CommentBundle response, DrawableComment drawableComment) + { + var receivedComments = response.Comments; + + var uniqueComments = new List(); + + // We may receive already loaded comments + receivedComments.ForEach(c => + { + if (drawableComment.LoadedReplies.All(loadedReply => loadedReply.Id != c.Id)) + uniqueComments.Add(c); + }); + + uniqueComments.ForEach(c => c.ParentComment = drawableComment.Comment); + + drawableComment.AddReplies(uniqueComments.Select(comment => createDrawableComment(comment))); + } + + private DrawableComment createDrawableComment(Comment comment) => new DrawableComment(comment) + { + ShowDeleted = { BindTarget = ShowDeleted }, + Sort = { BindTarget = Sort }, + RepliesRequested = onCommentRepliesRequested + }; + private class NoCommentsPlaceholder : CompositeDrawable { [BackgroundDependencyLoader] diff --git a/osu.Game/Overlays/Comments/DrawableComment.cs b/osu.Game/Overlays/Comments/DrawableComment.cs index 70ea478814..e7aac3c44d 100644 --- a/osu.Game/Overlays/Comments/DrawableComment.cs +++ b/osu.Game/Overlays/Comments/DrawableComment.cs @@ -12,11 +12,14 @@ using osu.Game.Graphics.Containers; using osu.Game.Utils; using osu.Framework.Graphics.Cursor; using osu.Framework.Bindables; -using osu.Framework.Graphics.Shapes; using System.Linq; using osu.Game.Graphics.Sprites; using osu.Game.Online.Chat; using osu.Framework.Allocation; +using osuTK.Graphics; +using System.Collections.Generic; +using System; +using osu.Framework.Graphics.Shapes; namespace osu.Game.Overlays.Comments { @@ -25,24 +28,35 @@ namespace osu.Game.Overlays.Comments private const int avatar_size = 40; private const int margin = 10; + public Action RepliesRequested; + + public readonly Comment Comment; + public readonly BindableBool ShowDeleted = new BindableBool(); + public readonly Bindable Sort = new Bindable(); + public readonly List LoadedReplies = new List(); private readonly BindableBool childrenExpanded = new BindableBool(true); + private int currentPage; + private FillFlowContainer childCommentsVisibilityContainer; - private readonly Comment comment; + private FillFlowContainer childCommentsContainer; + private LoadMoreCommentsButton loadMoreCommentsButton; + private ShowMoreButton showMoreButton; + private RepliesButton repliesButton; + private ChevronButton chevronButton; + private DeletedCommentsCounter deletedCommentsCounter; public DrawableComment(Comment comment) { - this.comment = comment; + Comment = comment; } [BackgroundDependencyLoader] private void load() { LinkFlowContainer username; - FillFlowContainer childCommentsContainer; - DeletedCommentsCounter deletedCommentsCounter; FillFlowContainer info; LinkFlowContainer message; GridContainer content; @@ -50,234 +64,267 @@ namespace osu.Game.Overlays.Comments RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; - InternalChild = new FillFlowContainer + InternalChildren = new Drawable[] { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Direction = FillDirection.Vertical, - Children = new Drawable[] + new FillFlowContainer { - new Container + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Direction = FillDirection.Vertical, + Children = new Drawable[] { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Padding = new MarginPadding(margin) { Left = margin + 5 }, - Child = content = new GridContainer + new Container { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, - ColumnDimensions = new[] + Padding = new MarginPadding(margin) { Left = margin + 5 }, + Child = content = new GridContainer { - new Dimension(GridSizeMode.AutoSize), - new Dimension(), - }, - RowDimensions = new[] - { - new Dimension(GridSizeMode.AutoSize) - }, - Content = new[] - { - new Drawable[] + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + ColumnDimensions = new[] { - new FillFlowContainer + new Dimension(GridSizeMode.AutoSize), + new Dimension(), + }, + RowDimensions = new[] + { + new Dimension(GridSizeMode.AutoSize) + }, + Content = new[] + { + new Drawable[] { - AutoSizeAxes = Axes.Both, - Margin = new MarginPadding { Horizontal = margin }, - Direction = FillDirection.Horizontal, - Spacing = new Vector2(5, 0), - Children = new Drawable[] + new FillFlowContainer { - new Container + AutoSizeAxes = Axes.Both, + Margin = new MarginPadding { Horizontal = margin }, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(5, 0), + Children = new Drawable[] { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Width = 40, - AutoSizeAxes = Axes.Y, - Child = votePill = new VotePill(comment) + new Container { - Anchor = Anchor.CentreRight, - Origin = Anchor.CentreRight, - } - }, - new UpdateableAvatar(comment.User) - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Size = new Vector2(avatar_size), - Masking = true, - CornerRadius = avatar_size / 2f, - CornerExponent = 2, - }, - } - }, - new FillFlowContainer - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Spacing = new Vector2(0, 3), - Children = new Drawable[] - { - new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Spacing = new Vector2(7, 0), - Children = new Drawable[] - { - username = new LinkFlowContainer(s => s.Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold, italics: true)) + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Width = 40, + AutoSizeAxes = Axes.Y, + Child = votePill = new VotePill(Comment) { - AutoSizeAxes = Axes.Both, - }, - new ParentUsername(comment), - new OsuSpriteText - { - Alpha = comment.IsDeleted ? 1 : 0, - Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold, italics: true), - Text = @"deleted", + Anchor = Anchor.CentreRight, + Origin = Anchor.CentreRight, } - } - }, - message = new LinkFlowContainer(s => s.Font = OsuFont.GetFont(size: 14)) - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Padding = new MarginPadding { Right = 40 } - }, - info = new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Spacing = new Vector2(10, 0), - Colour = OsuColour.Gray(0.7f), - Children = new Drawable[] + }, + new UpdateableAvatar(Comment.User) { - new OsuSpriteText + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Size = new Vector2(avatar_size), + Masking = true, + CornerRadius = avatar_size / 2f, + CornerExponent = 2, + }, + } + }, + new FillFlowContainer + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Spacing = new Vector2(0, 3), + Children = new Drawable[] + { + new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(7, 0), + Children = new Drawable[] { - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - Font = OsuFont.GetFont(size: 12), - Text = HumanizerUtils.Humanize(comment.CreatedAt) - }, - new RepliesButton(comment.RepliesCount) + username = new LinkFlowContainer(s => s.Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold, italics: true)) + { + AutoSizeAxes = Axes.Both, + }, + new ParentUsername(Comment), + new OsuSpriteText + { + Alpha = Comment.IsDeleted ? 1 : 0, + Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold, italics: true), + Text = @"deleted", + } + } + }, + message = new LinkFlowContainer(s => s.Font = OsuFont.GetFont(size: 14)) + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Padding = new MarginPadding { Right = 40 } + }, + info = new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(10, 0), + Children = new Drawable[] { - Expanded = { BindTarget = childrenExpanded } - }, + new OsuSpriteText + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + Font = OsuFont.GetFont(size: 12), + Colour = OsuColour.Gray(0.7f), + Text = HumanizerUtils.Humanize(Comment.CreatedAt) + }, + repliesButton = new RepliesButton(Comment.RepliesCount) + { + Expanded = { BindTarget = childrenExpanded } + }, + loadMoreCommentsButton = new LoadMoreCommentsButton + { + Action = () => RepliesRequested(this, ++currentPage) + } + } } } } } } } - } - }, - childCommentsVisibilityContainer = new FillFlowContainer - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Direction = FillDirection.Vertical, - Children = new Drawable[] + }, + childCommentsVisibilityContainer = new FillFlowContainer { - childCommentsContainer = new FillFlowContainer + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Direction = FillDirection.Vertical, + Children = new Drawable[] { - Padding = new MarginPadding { Left = 20 }, - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Direction = FillDirection.Vertical - }, - deletedCommentsCounter = new DeletedCommentsCounter - { - ShowDeleted = { BindTarget = ShowDeleted } + childCommentsContainer = new FillFlowContainer + { + Padding = new MarginPadding { Left = 20 }, + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Direction = FillDirection.Vertical + }, + deletedCommentsCounter = new DeletedCommentsCounter + { + ShowDeleted = { BindTarget = ShowDeleted } + }, + showMoreButton = new ShowMoreButton + { + Action = () => RepliesRequested(this, ++currentPage) + } } - } + }, } + }, + chevronButton = new ChevronButton + { + Anchor = Anchor.TopRight, + Origin = Anchor.TopRight, + Margin = new MarginPadding { Right = 30, Top = margin }, + Expanded = { BindTarget = childrenExpanded }, + Alpha = 0 } }; - deletedCommentsCounter.Count.Value = comment.DeletedChildrenCount; - - if (comment.UserId.HasValue) - username.AddUserLink(comment.User); + if (Comment.UserId.HasValue) + username.AddUserLink(Comment.User); else - username.AddText(comment.LegacyName); + username.AddText(Comment.LegacyName); - if (comment.EditedAt.HasValue) + if (Comment.EditedAt.HasValue) { info.Add(new OsuSpriteText { Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft, Font = OsuFont.GetFont(size: 12), - Text = $@"edited {HumanizerUtils.Humanize(comment.EditedAt.Value)} by {comment.EditedUser.Username}" + Text = $@"edited {HumanizerUtils.Humanize(Comment.EditedAt.Value)} by {Comment.EditedUser.Username}" }); } - if (comment.HasMessage) + if (Comment.HasMessage) { - var formattedSource = MessageFormatter.FormatText(comment.Message); + var formattedSource = MessageFormatter.FormatText(Comment.Message); message.AddLinks(formattedSource.Text, formattedSource.Links); } - if (comment.IsDeleted) + if (Comment.IsDeleted) { content.FadeColour(OsuColour.Gray(0.5f)); votePill.Hide(); } - if (comment.IsTopLevel) + if (Comment.IsTopLevel) { - AddInternal(new Container + AddInternal(new Box { - RelativeSizeAxes = Axes.X, - Height = 1.5f, Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, - Child = new Box - { - RelativeSizeAxes = Axes.Both, - Colour = OsuColour.Gray(0.1f) - } + RelativeSizeAxes = Axes.X, + Height = 1.5f, + Colour = OsuColour.Gray(0.1f) }); - - if (comment.ChildComments.Any()) - { - AddInternal(new ChevronButton(comment) - { - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - Margin = new MarginPadding { Right = 30, Top = margin }, - Expanded = { BindTarget = childrenExpanded } - }); - } } - - comment.ChildComments.ForEach(c => childCommentsContainer.Add(new DrawableComment(c) - { - ShowDeleted = { BindTarget = ShowDeleted } - })); } protected override void LoadComplete() { ShowDeleted.BindValueChanged(show => { - if (comment.IsDeleted) + if (Comment.IsDeleted) this.FadeTo(show.NewValue ? 1 : 0); }, true); childrenExpanded.BindValueChanged(expanded => childCommentsVisibilityContainer.FadeTo(expanded.NewValue ? 1 : 0), true); + + updateButtonsState(); + base.LoadComplete(); } + public void AddReplies(IEnumerable replies) + { + LoadComponentAsync(createRepliesPage(replies), page => + { + var newReplies = replies.Select(reply => reply.Comment); + LoadedReplies.AddRange(newReplies); + deletedCommentsCounter.Count.Value += newReplies.Count(reply => reply.IsDeleted); + childCommentsContainer.Add(page); + updateButtonsState(); + }); + } + + private FillFlowContainer createRepliesPage(IEnumerable replies) => new FillFlowContainer + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Direction = FillDirection.Vertical, + Children = replies.ToList() + }; + + private void updateButtonsState() + { + var loadedReplesCount = LoadedReplies.Count; + var hasUnloadedReplies = loadedReplesCount != Comment.RepliesCount; + + loadMoreCommentsButton.FadeTo(hasUnloadedReplies && loadedReplesCount == 0 ? 1 : 0); + showMoreButton.FadeTo(hasUnloadedReplies && loadedReplesCount > 0 ? 1 : 0); + repliesButton.FadeTo(loadedReplesCount != 0 ? 1 : 0); + + if (Comment.IsTopLevel) + chevronButton.FadeTo(loadedReplesCount != 0 ? 1 : 0); + + showMoreButton.IsLoading = loadMoreCommentsButton.IsLoading = false; + } + private class ChevronButton : ShowChildrenButton { private readonly SpriteIcon icon; - public ChevronButton(Comment comment) + public ChevronButton() { - Alpha = comment.IsTopLevel && comment.ChildComments.Any() ? 1 : 0; Child = icon = new SpriteIcon { Size = new Vector2(12), - Colour = OsuColour.Gray(0.7f) }; } @@ -296,7 +343,6 @@ namespace osu.Game.Overlays.Comments { this.count = count; - Alpha = count == 0 ? 0 : 1; Child = text = new OsuSpriteText { Font = OsuFont.GetFont(size: 12, weight: FontWeight.Bold), @@ -309,6 +355,30 @@ namespace osu.Game.Overlays.Comments } } + private class LoadMoreCommentsButton : GetCommentRepliesButton + { + public LoadMoreCommentsButton() + { + IdleColour = OsuColour.Gray(0.7f); + HoverColour = Color4.White; + } + + protected override string GetText() => @"[+] load replies"; + } + + private class ShowMoreButton : GetCommentRepliesButton + { + [BackgroundDependencyLoader] + private void load(OverlayColourProvider colourProvider) + { + Margin = new MarginPadding { Vertical = 10, Left = 80 }; + IdleColour = colourProvider.Light2; + HoverColour = colourProvider.Light1; + } + + protected override string GetText() => @"Show More"; + } + private class ParentUsername : FillFlowContainer, IHasTooltip { public string TooltipText => getParentMessage(); diff --git a/osu.Game/Overlays/Comments/GetCommentRepliesButton.cs b/osu.Game/Overlays/Comments/GetCommentRepliesButton.cs new file mode 100644 index 0000000000..a3817ba416 --- /dev/null +++ b/osu.Game/Overlays/Comments/GetCommentRepliesButton.cs @@ -0,0 +1,45 @@ +// 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.Game.Graphics; +using osu.Game.Graphics.UserInterface; +using osu.Framework.Graphics.Containers; +using osu.Game.Graphics.Sprites; +using System.Collections.Generic; +using osuTK; + +namespace osu.Game.Overlays.Comments +{ + public abstract class GetCommentRepliesButton : LoadingButton + { + private const int duration = 200; + + protected override IEnumerable EffectTargets => new[] { text }; + + private OsuSpriteText text; + + protected GetCommentRepliesButton() + { + AutoSizeAxes = Axes.Both; + LoadingAnimationSize = new Vector2(8); + } + + protected override Drawable CreateContent() => new Container + { + AutoSizeAxes = Axes.Both, + Child = text = new OsuSpriteText + { + AlwaysPresent = true, + Font = OsuFont.GetFont(size: 12, weight: FontWeight.Bold), + Text = GetText() + } + }; + + protected abstract string GetText(); + + protected override void OnLoadStarted() => text.FadeOut(duration, Easing.OutQuint); + + protected override void OnLoadFinished() => text.FadeIn(duration, Easing.OutQuint); + } +} diff --git a/osu.Game/Overlays/Comments/ShowChildrenButton.cs b/osu.Game/Overlays/Comments/ShowChildrenButton.cs index be04b6e5de..5ec7c1d471 100644 --- a/osu.Game/Overlays/Comments/ShowChildrenButton.cs +++ b/osu.Game/Overlays/Comments/ShowChildrenButton.cs @@ -3,8 +3,9 @@ using osu.Framework.Graphics; using osu.Game.Graphics.Containers; -using osu.Framework.Input.Events; using osu.Framework.Bindables; +using osuTK.Graphics; +using osu.Game.Graphics; namespace osu.Game.Overlays.Comments { @@ -15,20 +16,18 @@ namespace osu.Game.Overlays.Comments protected ShowChildrenButton() { AutoSizeAxes = Axes.Both; + IdleColour = OsuColour.Gray(0.7f); + HoverColour = Color4.White; } protected override void LoadComplete() { + Action = Expanded.Toggle; + Expanded.BindValueChanged(OnExpandedChanged, true); base.LoadComplete(); } protected abstract void OnExpandedChanged(ValueChangedEvent expanded); - - protected override bool OnClick(ClickEvent e) - { - Expanded.Value = !Expanded.Value; - return true; - } } } From 8239f21cad20a4d3ea780a45d8832798c2de53ee Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 10 Feb 2020 15:52:12 +0300 Subject: [PATCH 1422/1829] Remove whitespace --- osu.Game/Overlays/Comments/DrawableComment.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Comments/DrawableComment.cs b/osu.Game/Overlays/Comments/DrawableComment.cs index e7aac3c44d..b0062ca1e5 100644 --- a/osu.Game/Overlays/Comments/DrawableComment.cs +++ b/osu.Game/Overlays/Comments/DrawableComment.cs @@ -288,7 +288,7 @@ namespace osu.Game.Overlays.Comments var newReplies = replies.Select(reply => reply.Comment); LoadedReplies.AddRange(newReplies); deletedCommentsCounter.Count.Value += newReplies.Count(reply => reply.IsDeleted); - childCommentsContainer.Add(page); + childCommentsContainer.Add(page); updateButtonsState(); }); } From d20a86087920b06598c4dfe42097784d2f91be9f Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 10 Feb 2020 16:08:58 +0300 Subject: [PATCH 1423/1829] CI fix --- osu.Game/Overlays/Comments/CommentsPage.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Comments/CommentsPage.cs b/osu.Game/Overlays/Comments/CommentsPage.cs index 976af72abb..a6651aa325 100644 --- a/osu.Game/Overlays/Comments/CommentsPage.cs +++ b/osu.Game/Overlays/Comments/CommentsPage.cs @@ -74,7 +74,7 @@ namespace osu.Game.Overlays.Comments { c.ParentComment = comment; }); - drawableComment.OnLoadComplete += loaded => ((DrawableComment)loaded).AddReplies(children.Select(c => createDrawableComment(c))); + drawableComment.OnLoadComplete += loaded => ((DrawableComment)loaded).AddReplies(children.Select(createDrawableComment)); } if (comment.IsTopLevel) @@ -104,7 +104,7 @@ namespace osu.Game.Overlays.Comments uniqueComments.ForEach(c => c.ParentComment = drawableComment.Comment); - drawableComment.AddReplies(uniqueComments.Select(comment => createDrawableComment(comment))); + drawableComment.AddReplies(uniqueComments.Select(createDrawableComment)); } private DrawableComment createDrawableComment(Comment comment) => new DrawableComment(comment) From e2950d7027003db5f9f1327cefae551a9a745117 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Mon, 10 Feb 2020 20:27:46 +0100 Subject: [PATCH 1424/1829] Extract method to avoid nested ternaries --- .../BeatmapSet/Buttons/HeaderDownloadButton.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Buttons/HeaderDownloadButton.cs b/osu.Game/Overlays/BeatmapSet/Buttons/HeaderDownloadButton.cs index 5ed15cecd5..53003b0488 100644 --- a/osu.Game/Overlays/BeatmapSet/Buttons/HeaderDownloadButton.cs +++ b/osu.Game/Overlays/BeatmapSet/Buttons/HeaderDownloadButton.cs @@ -150,7 +150,7 @@ namespace osu.Game.Overlays.BeatmapSet.Buttons }, new OsuSpriteText { - Text = BeatmapSet.Value.OnlineInfo.HasVideo ? (noVideo ? "without Video" : "with Video") : string.Empty, + Text = getVideoSuffixText(), Font = OsuFont.GetFont(size: 11, weight: FontWeight.Bold) }, }; @@ -163,5 +163,13 @@ namespace osu.Game.Overlays.BeatmapSet.Buttons private void userChanged(ValueChangedEvent e) => button.Enabled.Value = !(e.NewValue is GuestUser); private void enabledChanged(ValueChangedEvent e) => this.FadeColour(e.NewValue ? Color4.White : Color4.Gray, 200, Easing.OutQuint); + + private string getVideoSuffixText() + { + if (!BeatmapSet.Value.OnlineInfo.HasVideo) + return string.Empty; + + return noVideo ? "without Video" : "with Video"; + } } } From 811553cd60e47cca3d86386dc9b9c5c561255e7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Mon, 10 Feb 2020 20:37:34 +0100 Subject: [PATCH 1425/1829] Remove unnecessary coercions Comparisons to null of nullable numbers are always false. --- osu.Game/Overlays/BeatmapSet/Details.cs | 2 +- osu.Game/Overlays/BeatmapSet/Info.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Details.cs b/osu.Game/Overlays/BeatmapSet/Details.cs index bd13b4371e..488e181fa2 100644 --- a/osu.Game/Overlays/BeatmapSet/Details.cs +++ b/osu.Game/Overlays/BeatmapSet/Details.cs @@ -53,7 +53,7 @@ namespace osu.Game.Overlays.BeatmapSet private void updateDisplay() { Ratings.Metrics = BeatmapSet?.Metrics; - ratingBox.Alpha = (BeatmapSet?.OnlineInfo?.Status ?? 0) > 0 ? 1 : 0; + ratingBox.Alpha = BeatmapSet?.OnlineInfo?.Status > 0 ? 1 : 0; } public Details() diff --git a/osu.Game/Overlays/BeatmapSet/Info.cs b/osu.Game/Overlays/BeatmapSet/Info.cs index 0a5415124e..85e871baca 100644 --- a/osu.Game/Overlays/BeatmapSet/Info.cs +++ b/osu.Game/Overlays/BeatmapSet/Info.cs @@ -132,7 +132,7 @@ namespace osu.Game.Overlays.BeatmapSet tags.Text = b.NewValue?.Metadata.Tags ?? string.Empty; genre.Text = b.NewValue?.OnlineInfo?.Genre?.Name ?? string.Empty; language.Text = b.NewValue?.OnlineInfo?.Language?.Name ?? string.Empty; - var setHasLeaderboard = (b.NewValue?.OnlineInfo?.Status ?? 0) > 0; + var setHasLeaderboard = b.NewValue?.OnlineInfo?.Status > 0; successRate.Alpha = setHasLeaderboard ? 1 : 0; unrankedPlaceholder.Alpha = setHasLeaderboard ? 0 : 1; }; From 35d5237dddf677dee02c7d2fc622e1d78abcacc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Mon, 10 Feb 2020 20:40:39 +0100 Subject: [PATCH 1426/1829] Adjust font sizes --- osu.Game/Overlays/BeatmapSet/Header.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Header.cs b/osu.Game/Overlays/BeatmapSet/Header.cs index ab7b2d82ed..5f4782573d 100644 --- a/osu.Game/Overlays/BeatmapSet/Header.cs +++ b/osu.Game/Overlays/BeatmapSet/Header.cs @@ -134,7 +134,7 @@ namespace osu.Game.Overlays.BeatmapSet { title = new OsuSpriteText { - Font = OsuFont.GetFont(size: 37, weight: FontWeight.SemiBold, italics: true) + Font = OsuFont.GetFont(size: 37.5f, weight: FontWeight.SemiBold, italics: true) }, externalLink = new ExternalLinkButton { @@ -144,7 +144,7 @@ namespace osu.Game.Overlays.BeatmapSet }, } }, - artist = new OsuSpriteText { Font = OsuFont.GetFont(size: 25, weight: FontWeight.Medium, italics: true) }, + artist = new OsuSpriteText { Font = OsuFont.GetFont(size: 20, weight: FontWeight.Medium, italics: true) }, new Container { RelativeSizeAxes = Axes.X, From e072042d4ecfd8e81517b34a845ebff5114e582c Mon Sep 17 00:00:00 2001 From: TheWildTree Date: Mon, 10 Feb 2020 21:11:49 +0100 Subject: [PATCH 1427/1829] Match osu-web font size --- osu.Game/Overlays/BeatmapSet/Header.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Header.cs b/osu.Game/Overlays/BeatmapSet/Header.cs index 5f4782573d..29f09a1ad8 100644 --- a/osu.Game/Overlays/BeatmapSet/Header.cs +++ b/osu.Game/Overlays/BeatmapSet/Header.cs @@ -134,7 +134,7 @@ namespace osu.Game.Overlays.BeatmapSet { title = new OsuSpriteText { - Font = OsuFont.GetFont(size: 37.5f, weight: FontWeight.SemiBold, italics: true) + Font = OsuFont.GetFont(size: 30, weight: FontWeight.SemiBold, italics: true) }, externalLink = new ExternalLinkButton { From 15b4e3386f94ba7dc5c5fe9895169dc4bcb1bf04 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Mon, 10 Feb 2020 23:57:48 +0300 Subject: [PATCH 1428/1829] Fix incorrect algorithm for comment tree creation Can cause one comment to be redrawn multiple times --- osu.Game/Overlays/Comments/CommentsPage.cs | 28 ++++++++++++---------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/osu.Game/Overlays/Comments/CommentsPage.cs b/osu.Game/Overlays/Comments/CommentsPage.cs index a6651aa325..eb1044c853 100644 --- a/osu.Game/Overlays/Comments/CommentsPage.cs +++ b/osu.Game/Overlays/Comments/CommentsPage.cs @@ -62,24 +62,26 @@ namespace osu.Game.Overlays.Comments return; } - foreach (var comment in commentBundle.Comments) + commentBundle.Comments.ForEach(c => { - var drawableComment = createDrawableComment(comment); + if (c.IsTopLevel) + flow.Add(createCommentWithReplies(c, commentBundle)); + }); + } - var children = commentBundle.Comments.Where(c => c.ParentId == comment.Id); + private DrawableComment createCommentWithReplies(Comment comment, CommentBundle commentBundle) + { + var drawableComment = createDrawableComment(comment); - if (children.Any()) - { - children.ForEach(c => - { - c.ParentComment = comment; - }); - drawableComment.OnLoadComplete += loaded => ((DrawableComment)loaded).AddReplies(children.Select(createDrawableComment)); - } + var replies = commentBundle.Comments.Where(c => c.ParentId == comment.Id); - if (comment.IsTopLevel) - flow.Add(drawableComment); + if (replies.Any()) + { + replies.ForEach(c => c.ParentComment = comment); + drawableComment.OnLoadComplete += _ => drawableComment.AddReplies(replies.Select(reply => createCommentWithReplies(reply, commentBundle))); } + + return drawableComment; } private void onCommentRepliesRequested(DrawableComment drawableComment, int page) From b04a4b5c8ac28f3eb70150efee23f6085395854d Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 11 Feb 2020 01:44:56 +0300 Subject: [PATCH 1429/1829] Implement SpotlightsLayout --- .../TestSceneRankingsSpotlightSelector.cs | 6 - .../Online/TestSceneSpotlightsLayout.cs | 55 ++++++ .../Rankings/RankingsOverlayHeader.cs | 6 +- .../Overlays/Rankings/SpotlightSelector.cs | 86 ++++------ .../Overlays/Rankings/SpotlightsLayout.cs | 158 ++++++++++++++++++ 5 files changed, 249 insertions(+), 62 deletions(-) create mode 100644 osu.Game.Tests/Visual/Online/TestSceneSpotlightsLayout.cs create mode 100644 osu.Game/Overlays/Rankings/SpotlightsLayout.cs diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs index f27ab1e775..e46c8a4a71 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs @@ -35,12 +35,6 @@ namespace osu.Game.Tests.Visual.Online Add(selector = new SpotlightSelector()); } - [Test] - public void TestVisibility() - { - AddStep("Toggle Visibility", selector.ToggleVisibility); - } - [Test] public void TestLocalSpotlights() { diff --git a/osu.Game.Tests/Visual/Online/TestSceneSpotlightsLayout.cs b/osu.Game.Tests/Visual/Online/TestSceneSpotlightsLayout.cs new file mode 100644 index 0000000000..d025a8d7c2 --- /dev/null +++ b/osu.Game.Tests/Visual/Online/TestSceneSpotlightsLayout.cs @@ -0,0 +1,55 @@ +// 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.Framework.Bindables; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Overlays; +using osu.Game.Overlays.Rankings; +using osu.Game.Rulesets; +using osu.Game.Rulesets.Catch; +using osu.Game.Rulesets.Mania; +using osu.Game.Rulesets.Osu; +using osu.Game.Rulesets.Taiko; + +namespace osu.Game.Tests.Visual.Online +{ + public class TestSceneSpotlightsLayout : OsuTestScene + { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(SpotlightsLayout), + typeof(SpotlightSelector), + }; + + protected override bool UseOnlineAPI => true; + + [Cached] + private readonly OverlayColourProvider overlayColour = new OverlayColourProvider(OverlayColourScheme.Green); + + public TestSceneSpotlightsLayout() + { + var ruleset = new Bindable(new OsuRuleset().RulesetInfo); + + Add(new BasicScrollContainer + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + RelativeSizeAxes = Axes.Both, + Width = 0.8f, + Child = new SpotlightsLayout + { + Ruleset = { BindTarget = ruleset } + } + }); + + AddStep("Osu ruleset", () => ruleset.Value = new OsuRuleset().RulesetInfo); + AddStep("Mania ruleset", () => ruleset.Value = new ManiaRuleset().RulesetInfo); + AddStep("Taiko ruleset", () => ruleset.Value = new TaikoRuleset().RulesetInfo); + AddStep("Catch ruleset", () => ruleset.Value = new CatchRuleset().RulesetInfo); + } + } +} diff --git a/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs b/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs index 538ae112b5..5b3744cf7f 100644 --- a/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs +++ b/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs @@ -60,8 +60,10 @@ namespace osu.Game.Overlays.Rankings base.LoadComplete(); } - private void onCurrentChanged(ValueChangedEvent scope) => - SpotlightSelector.State.Value = scope.NewValue == RankingsScope.Spotlights ? Visibility.Visible : Visibility.Hidden; + private void onCurrentChanged(ValueChangedEvent scope) + { + + } private class RankingsTitle : ScreenTitle { diff --git a/osu.Game/Overlays/Rankings/SpotlightSelector.cs b/osu.Game/Overlays/Rankings/SpotlightSelector.cs index 8bf75b2357..bc2d731772 100644 --- a/osu.Game/Overlays/Rankings/SpotlightSelector.cs +++ b/osu.Game/Overlays/Rankings/SpotlightSelector.cs @@ -18,11 +18,8 @@ using osu.Game.Online.API.Requests; namespace osu.Game.Overlays.Rankings { - public class SpotlightSelector : VisibilityContainer, IHasCurrentValue + public class SpotlightSelector : CompositeDrawable, IHasCurrentValue { - private const int height = 100; - private const int duration = 200; - private readonly Box background; private readonly SpotlightsDropdown dropdown; @@ -40,59 +37,52 @@ namespace osu.Game.Overlays.Rankings set => dropdown.Items = value; } - protected override bool StartHidden => true; - private readonly InfoColumn startDateColumn; private readonly InfoColumn endDateColumn; private readonly InfoColumn mapCountColumn; private readonly InfoColumn participantsColumn; - private readonly Container content; public SpotlightSelector() { RelativeSizeAxes = Axes.X; - Add(content = new Container + Height = 100; + AddRangeInternal(new Drawable[] { - Height = height, - RelativeSizeAxes = Axes.X, - Children = new Drawable[] + background = new Box { - background = new Box + RelativeSizeAxes = Axes.Both, + }, + new Container + { + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Horizontal = UserProfileOverlay.CONTENT_X_MARGIN, Vertical = 10 }, + Children = new Drawable[] { - RelativeSizeAxes = Axes.Both, - }, - new Container - { - RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding { Horizontal = UserProfileOverlay.CONTENT_X_MARGIN, Vertical = 10 }, - Children = new Drawable[] + dropdown = new SpotlightsDropdown { - dropdown = new SpotlightsDropdown + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, + RelativeSizeAxes = Axes.X, + Current = Current, + Depth = -float.MaxValue + }, + new FillFlowContainer + { + Anchor = Anchor.BottomRight, + Origin = Anchor.BottomRight, + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(15, 0), + Children = new Drawable[] { - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - RelativeSizeAxes = Axes.X, - Current = Current, - Depth = -float.MaxValue - }, - new FillFlowContainer - { - Anchor = Anchor.BottomRight, - Origin = Anchor.BottomRight, - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Spacing = new Vector2(15, 0), - Children = new Drawable[] - { - startDateColumn = new InfoColumn(@"Start Date"), - endDateColumn = new InfoColumn(@"End Date"), - mapCountColumn = new InfoColumn(@"Map Count"), - participantsColumn = new InfoColumn(@"Participants") - } + startDateColumn = new InfoColumn(@"Start Date"), + endDateColumn = new InfoColumn(@"End Date"), + mapCountColumn = new InfoColumn(@"Map Count"), + participantsColumn = new InfoColumn(@"Participants") } } - }, - } + } + }, }); } @@ -110,18 +100,6 @@ namespace osu.Game.Overlays.Rankings participantsColumn.Value = response.Spotlight.Participants?.ToString("N0"); } - protected override void PopIn() - { - this.ResizeHeightTo(height, duration, Easing.OutQuint); - content.FadeIn(duration, Easing.OutQuint); - } - - protected override void PopOut() - { - this.ResizeHeightTo(0, duration, Easing.OutQuint); - content.FadeOut(duration, Easing.OutQuint); - } - private string dateToString(DateTimeOffset date) => date.ToString("yyyy-MM-dd"); private class InfoColumn : FillFlowContainer diff --git a/osu.Game/Overlays/Rankings/SpotlightsLayout.cs b/osu.Game/Overlays/Rankings/SpotlightsLayout.cs new file mode 100644 index 0000000000..fd1b73c4cd --- /dev/null +++ b/osu.Game/Overlays/Rankings/SpotlightsLayout.cs @@ -0,0 +1,158 @@ +// 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.Bindables; +using osu.Game.Rulesets; +using osu.Framework.Graphics.Containers; +using osu.Game.Online.API.Requests.Responses; +using osuTK; +using osu.Framework.Allocation; +using osu.Game.Online.API; +using osu.Game.Online.API.Requests; +using osu.Game.Overlays.Rankings.Tables; +using System.Linq; +using osu.Game.Overlays.Direct; +using System.Threading; +using osu.Game.Graphics.Containers; +using osu.Game.Graphics.UserInterface; + +namespace osu.Game.Overlays.Rankings +{ + public class SpotlightsLayout : CompositeDrawable + { + public readonly Bindable Ruleset = new Bindable(); + + private readonly Bindable selectedSpotlight = new Bindable(); + + [Resolved] + private IAPIProvider api { get; set; } + + [Resolved] + private RulesetStore rulesets { get; set; } + + private CancellationTokenSource cancellationToken; + private GetSpotlightRankingsRequest getRankingsRequest; + private GetSpotlightsRequest spotlightsRequest; + + private readonly SpotlightSelector selector; + private readonly Container content; + private readonly DimmedLoadingLayer loading; + + public SpotlightsLayout() + { + RelativeSizeAxes = Axes.X; + AutoSizeAxes = Axes.Y; + InternalChild = new ReverseChildIDFillFlowContainer + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Direction = FillDirection.Vertical, + Spacing = new Vector2(0, 20), + Children = new Drawable[] + { + selector = new SpotlightSelector + { + Current = selectedSpotlight, + }, + new Container + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Children = new Drawable[] + { + content = new Container + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + }, + loading = new DimmedLoadingLayer(), + } + } + } + }; + } + + protected override void LoadComplete() + { + base.LoadComplete(); + + selectedSpotlight.BindValueChanged(onSpotlightChanged); + Ruleset.BindValueChanged(onRulesetChanged); + + getSpotlights(); + } + + private void getSpotlights() + { + spotlightsRequest = new GetSpotlightsRequest(); + spotlightsRequest.Success += response => selector.Spotlights = response.Spotlights; + api.Queue(spotlightsRequest); + } + + private void onRulesetChanged(ValueChangedEvent ruleset) + { + if (!selector.Spotlights.Any()) + return; + + selectedSpotlight.TriggerChange(); + } + + private void onSpotlightChanged(ValueChangedEvent spotlight) + { + loading.Show(); + + cancellationToken?.Cancel(); + getRankingsRequest?.Cancel(); + + getRankingsRequest = new GetSpotlightRankingsRequest(Ruleset.Value, spotlight.NewValue.Id); + getRankingsRequest.Success += onSuccess; + api.Queue(getRankingsRequest); + } + + private void onSuccess(GetSpotlightRankingsResponse response) + { + LoadComponentAsync(createContent(response), loaded => + { + selector.ShowInfo(response); + + content.Clear(); + content.Add(loaded); + + loading.Hide(); + }, (cancellationToken = new CancellationTokenSource()).Token); + } + + private Drawable createContent(GetSpotlightRankingsResponse response) => new FillFlowContainer + { + AutoSizeAxes = Axes.Y, + RelativeSizeAxes = Axes.X, + Direction = FillDirection.Vertical, + Spacing = new Vector2(0, 20), + Children = new Drawable[] + { + new ScoresTable(1, response.Users), + new FillFlowContainer + { + AutoSizeAxes = Axes.Y, + RelativeSizeAxes = Axes.X, + Spacing = new Vector2(10), + Children = response.BeatmapSets.Select(b => new DirectGridPanel(b.ToBeatmapSet(rulesets)) + { + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, + }).ToList() + } + } + }; + + protected override void Dispose(bool isDisposing) + { + base.Dispose(isDisposing); + + spotlightsRequest?.Cancel(); + getRankingsRequest?.Cancel(); + cancellationToken?.Cancel(); + } + } +} From 0b6558dc40e9813712c0e6c0bfc28e354d62da42 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 11 Feb 2020 02:35:23 +0300 Subject: [PATCH 1430/1829] Add SpotlightsLayout to RankingsOverlay --- .../Visual/Online/TestSceneRankingsHeader.cs | 21 +--- .../TestSceneRankingsSpotlightSelector.cs | 6 ++ .../Rankings/RankingsOverlayHeader.cs | 40 +------- .../Overlays/Rankings/SpotlightSelector.cs | 73 ++++++++------ .../Overlays/Rankings/SpotlightsLayout.cs | 15 +-- osu.Game/Overlays/RankingsOverlay.cs | 97 +++++-------------- 6 files changed, 85 insertions(+), 167 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs index bc0ae3d264..1e711b3cd7 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsHeader.cs @@ -5,7 +5,6 @@ using System; using System.Collections.Generic; using osu.Framework.Allocation; using osu.Framework.Bindables; -using osu.Game.Online.API.Requests.Responses; using osu.Game.Overlays; using osu.Game.Overlays.Rankings; using osu.Game.Rulesets; @@ -35,25 +34,7 @@ namespace osu.Game.Tests.Visual.Online { Current = { BindTarget = scope }, Country = { BindTarget = countryBindable }, - Ruleset = { BindTarget = ruleset }, - Spotlights = new[] - { - new APISpotlight - { - Id = 1, - Name = "Spotlight 1" - }, - new APISpotlight - { - Id = 2, - Name = "Spotlight 2" - }, - new APISpotlight - { - Id = 3, - Name = "Spotlight 3" - } - } + Ruleset = { BindTarget = ruleset } }); var country = new Country diff --git a/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs b/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs index e46c8a4a71..f27ab1e775 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneRankingsSpotlightSelector.cs @@ -35,6 +35,12 @@ namespace osu.Game.Tests.Visual.Online Add(selector = new SpotlightSelector()); } + [Test] + public void TestVisibility() + { + AddStep("Toggle Visibility", selector.ToggleVisibility); + } + [Test] public void TestLocalSpotlights() { diff --git a/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs b/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs index 5b3744cf7f..2674b3a81e 100644 --- a/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs +++ b/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs @@ -6,24 +6,14 @@ using osu.Framework.Bindables; using osu.Game.Graphics.UserInterface; using osu.Game.Rulesets; using osu.Game.Users; -using System.Collections.Generic; -using osu.Framework.Graphics.Containers; -using osu.Game.Online.API.Requests.Responses; namespace osu.Game.Overlays.Rankings { public class RankingsOverlayHeader : TabControlOverlayHeader { public readonly Bindable Ruleset = new Bindable(); - public readonly Bindable Spotlight = new Bindable(); public readonly Bindable Country = new Bindable(); - public IEnumerable Spotlights - { - get => SpotlightSelector.Spotlights; - set => SpotlightSelector.Spotlights = value; - } - protected override ScreenTitle CreateTitle() => new RankingsTitle { Scope = { BindTarget = Current } @@ -34,37 +24,11 @@ namespace osu.Game.Overlays.Rankings Current = Ruleset }; - public SpotlightSelector SpotlightSelector; - - protected override Drawable CreateContent() => new FillFlowContainer + protected override Drawable CreateContent() => new CountryFilter { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Direction = FillDirection.Vertical, - Children = new Drawable[] - { - new CountryFilter - { - Current = Country - }, - SpotlightSelector = new SpotlightSelector - { - Current = { BindTarget = Spotlight } - } - } + Current = Country }; - protected override void LoadComplete() - { - Current.BindValueChanged(onCurrentChanged, true); - base.LoadComplete(); - } - - private void onCurrentChanged(ValueChangedEvent scope) - { - - } - private class RankingsTitle : ScreenTitle { public readonly Bindable Scope = new Bindable(); diff --git a/osu.Game/Overlays/Rankings/SpotlightSelector.cs b/osu.Game/Overlays/Rankings/SpotlightSelector.cs index bc2d731772..f019b50ae8 100644 --- a/osu.Game/Overlays/Rankings/SpotlightSelector.cs +++ b/osu.Game/Overlays/Rankings/SpotlightSelector.cs @@ -18,8 +18,10 @@ using osu.Game.Online.API.Requests; namespace osu.Game.Overlays.Rankings { - public class SpotlightSelector : CompositeDrawable, IHasCurrentValue + public class SpotlightSelector : VisibilityContainer, IHasCurrentValue { + private const int duration = 300; + private readonly Box background; private readonly SpotlightsDropdown dropdown; @@ -37,52 +39,59 @@ namespace osu.Game.Overlays.Rankings set => dropdown.Items = value; } + protected override bool StartHidden => true; + private readonly InfoColumn startDateColumn; private readonly InfoColumn endDateColumn; private readonly InfoColumn mapCountColumn; private readonly InfoColumn participantsColumn; + private readonly Container content; public SpotlightSelector() { RelativeSizeAxes = Axes.X; Height = 100; - AddRangeInternal(new Drawable[] + Add(content = new Container { - background = new Box + RelativeSizeAxes = Axes.Both, + Children = new Drawable[] { - RelativeSizeAxes = Axes.Both, - }, - new Container - { - RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding { Horizontal = UserProfileOverlay.CONTENT_X_MARGIN, Vertical = 10 }, - Children = new Drawable[] + background = new Box { - dropdown = new SpotlightsDropdown + RelativeSizeAxes = Axes.Both, + }, + new Container + { + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Horizontal = UserProfileOverlay.CONTENT_X_MARGIN, Vertical = 10 }, + Children = new Drawable[] { - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - RelativeSizeAxes = Axes.X, - Current = Current, - Depth = -float.MaxValue - }, - new FillFlowContainer - { - Anchor = Anchor.BottomRight, - Origin = Anchor.BottomRight, - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Spacing = new Vector2(15, 0), - Children = new Drawable[] + dropdown = new SpotlightsDropdown { - startDateColumn = new InfoColumn(@"Start Date"), - endDateColumn = new InfoColumn(@"End Date"), - mapCountColumn = new InfoColumn(@"Map Count"), - participantsColumn = new InfoColumn(@"Participants") + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, + RelativeSizeAxes = Axes.X, + Current = Current, + Depth = -float.MaxValue + }, + new FillFlowContainer + { + Anchor = Anchor.BottomRight, + Origin = Anchor.BottomRight, + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(15, 0), + Children = new Drawable[] + { + startDateColumn = new InfoColumn(@"Start Date"), + endDateColumn = new InfoColumn(@"End Date"), + mapCountColumn = new InfoColumn(@"Map Count"), + participantsColumn = new InfoColumn(@"Participants") + } } } } - }, + } }); } @@ -100,6 +109,10 @@ namespace osu.Game.Overlays.Rankings participantsColumn.Value = response.Spotlight.Participants?.ToString("N0"); } + protected override void PopIn() => content.FadeIn(duration, Easing.OutQuint); + + protected override void PopOut() => content.FadeOut(duration, Easing.OutQuint); + private string dateToString(DateTimeOffset date) => date.ToString("yyyy-MM-dd"); private class InfoColumn : FillFlowContainer diff --git a/osu.Game/Overlays/Rankings/SpotlightsLayout.cs b/osu.Game/Overlays/Rankings/SpotlightsLayout.cs index fd1b73c4cd..33811cc982 100644 --- a/osu.Game/Overlays/Rankings/SpotlightsLayout.cs +++ b/osu.Game/Overlays/Rankings/SpotlightsLayout.cs @@ -35,11 +35,12 @@ namespace osu.Game.Overlays.Rankings private GetSpotlightRankingsRequest getRankingsRequest; private GetSpotlightsRequest spotlightsRequest; - private readonly SpotlightSelector selector; - private readonly Container content; - private readonly DimmedLoadingLayer loading; + private SpotlightSelector selector; + private Container content; + private DimmedLoadingLayer loading; - public SpotlightsLayout() + [BackgroundDependencyLoader] + private void load() { RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; @@ -48,7 +49,6 @@ namespace osu.Game.Overlays.Rankings RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, Direction = FillDirection.Vertical, - Spacing = new Vector2(0, 20), Children = new Drawable[] { selector = new SpotlightSelector @@ -65,8 +65,9 @@ namespace osu.Game.Overlays.Rankings { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, + Margin = new MarginPadding { Vertical = 10 } }, - loading = new DimmedLoadingLayer(), + loading = new DimmedLoadingLayer() } } } @@ -77,6 +78,8 @@ namespace osu.Game.Overlays.Rankings { base.LoadComplete(); + selector.Show(); + selectedSpotlight.BindValueChanged(onSpotlightChanged); Ruleset.BindValueChanged(onRulesetChanged); diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index a0aeff082e..f3215d07fa 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -14,10 +14,6 @@ using osu.Game.Online.API; using System.Threading; using osu.Game.Online.API.Requests; using osu.Game.Overlays.Rankings.Tables; -using osu.Game.Online.API.Requests.Responses; -using System.Linq; -using osuTK; -using osu.Game.Overlays.Direct; namespace osu.Game.Overlays { @@ -26,13 +22,11 @@ namespace osu.Game.Overlays protected readonly Bindable Country = new Bindable(); protected readonly Bindable Scope = new Bindable(); private readonly Bindable ruleset = new Bindable(); - private readonly Bindable spotlight = new Bindable(); private readonly BasicScrollContainer scrollFlow; private readonly Container contentContainer; private readonly DimmedLoadingLayer loading; private readonly Box background; - private readonly RankingsOverlayHeader header; private APIRequest lastRequest; private CancellationTokenSource cancellationToken; @@ -40,9 +34,6 @@ namespace osu.Game.Overlays [Resolved] private IAPIProvider api { get; set; } - [Resolved] - private RulesetStore rulesets { get; set; } - public RankingsOverlay() : base(OverlayColourScheme.Green) { @@ -63,15 +54,14 @@ namespace osu.Game.Overlays Direction = FillDirection.Vertical, Children = new Drawable[] { - header = new RankingsOverlayHeader + new RankingsOverlayHeader { Anchor = Anchor.TopCentre, Origin = Anchor.TopCentre, Depth = -float.MaxValue, Country = { BindTarget = Country }, Current = { BindTarget = Scope }, - Ruleset = { BindTarget = ruleset }, - Spotlight = { BindTarget = spotlight } + Ruleset = { BindTarget = ruleset } }, new Container { @@ -85,7 +75,7 @@ namespace osu.Game.Overlays Origin = Anchor.TopCentre, AutoSizeAxes = Axes.Y, RelativeSizeAxes = Axes.X, - Margin = new MarginPadding { Vertical = 10 } + Margin = new MarginPadding { Bottom = 10 } }, loading = new DimmedLoadingLayer(), } @@ -110,30 +100,25 @@ namespace osu.Game.Overlays if (Country.Value != null) Scope.Value = RankingsScope.Performance; - if (Scope.Value != RankingsScope.Spotlights) - Scheduler.AddOnce(loadNewContent); + Scheduler.AddOnce(loadNewContent); }, true); Scope.BindValueChanged(_ => { - spotlightsRequest?.Cancel(); - // country filtering is only valid for performance scope. if (Scope.Value != RankingsScope.Performance) Country.Value = null; - if (Scope.Value == RankingsScope.Spotlights && !header.Spotlights.Any()) - { - getSpotlights(); - return; - } - Scheduler.AddOnce(loadNewContent); }, true); - ruleset.BindValueChanged(_ => Scheduler.AddOnce(loadNewContent), true); + ruleset.BindValueChanged(_ => + { + if (Scope.Value == RankingsScope.Spotlights) + return; - spotlight.BindValueChanged(_ => Scheduler.AddOnce(loadNewContent), true); + Scheduler.AddOnce(loadNewContent); + }, true); base.LoadComplete(); } @@ -148,16 +133,6 @@ namespace osu.Game.Overlays Country.Value = requested; } - private GetSpotlightsRequest spotlightsRequest; - - private void getSpotlights() - { - loading.Show(); - spotlightsRequest = new GetSpotlightsRequest(); - spotlightsRequest.Success += response => header.Spotlights = response.Spotlights; - api.Queue(spotlightsRequest); - } - private void loadNewContent() { loading.Show(); @@ -165,6 +140,15 @@ namespace osu.Game.Overlays cancellationToken?.Cancel(); lastRequest?.Cancel(); + if (Scope.Value == RankingsScope.Spotlights) + { + loadContent(new SpotlightsLayout + { + Ruleset = { BindTarget = ruleset } + }); + return; + } + var request = createScopedRequest(); lastRequest = request; @@ -174,8 +158,9 @@ namespace osu.Game.Overlays return; } - request.Success += () => loadContent(createContentFromResponse(request)); + request.Success += () => loadContent(createTableFromResponse(request)); request.Failure += _ => loadContent(null); + api.Queue(request); } @@ -191,15 +176,12 @@ namespace osu.Game.Overlays case RankingsScope.Score: return new GetUserRankingsRequest(ruleset.Value, UserRankingsType.Score); - - case RankingsScope.Spotlights: - return new GetSpotlightRankingsRequest(ruleset.Value, header.Spotlight.Value.Id); } return null; } - private Drawable createContentFromResponse(APIRequest request) + private Drawable createTableFromResponse(APIRequest request) { switch (request) { @@ -217,42 +199,11 @@ namespace osu.Game.Overlays case GetCountryRankingsRequest countryRequest: return new CountriesTable(1, countryRequest.Result.Countries); - - case GetSpotlightRankingsRequest spotlightRequest: - return getSpotlightContent(spotlightRequest.Result); } return null; } - private Drawable getSpotlightContent(GetSpotlightRankingsResponse response) - { - header.SpotlightSelector.ShowInfo(response); - - return new FillFlowContainer - { - AutoSizeAxes = Axes.Y, - RelativeSizeAxes = Axes.X, - Direction = FillDirection.Vertical, - Spacing = new Vector2(0, 20), - Children = new Drawable[] - { - new ScoresTable(1, response.Users), - new FillFlowContainer - { - AutoSizeAxes = Axes.Y, - RelativeSizeAxes = Axes.X, - Spacing = new Vector2(10), - Children = response.BeatmapSets.Select(b => new DirectGridPanel(b.ToBeatmapSet(rulesets)) - { - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - }).ToList() - } - } - }; - } - private void loadContent(Drawable content) { scrollFlow.ScrollToStart(); @@ -264,10 +215,10 @@ namespace osu.Game.Overlays return; } - LoadComponentAsync(content, t => + LoadComponentAsync(content, loaded => { loading.Hide(); - contentContainer.Child = content; + contentContainer.Child = loaded; }, (cancellationToken = new CancellationTokenSource()).Token); } } From ca237fd987cc677f7bbda1923a421836763f884d Mon Sep 17 00:00:00 2001 From: voidedWarranties Date: Mon, 10 Feb 2020 16:21:49 -0800 Subject: [PATCH 1431/1829] Simplify ordering by using only numbers, add xmldoc --- .../Mods/CatchModDifficultyAdjust.cs | 5 ++-- .../Mods/OsuModDifficultyAdjust.cs | 5 ++-- .../Configuration/SettingSourceAttribute.cs | 25 ++++++------------- osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs | 5 ++-- 4 files changed, 14 insertions(+), 26 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs index 17a2847fd1..de7adaa261 100644 --- a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs @@ -5,13 +5,12 @@ using osu.Framework.Bindables; using osu.Game.Beatmaps; using osu.Game.Configuration; using osu.Game.Rulesets.Mods; -using static osu.Game.Configuration.SettingSourceAttribute; namespace osu.Game.Rulesets.Catch.Mods { public class CatchModDifficultyAdjust : ModDifficultyAdjust { - [SettingSource("Circle Size", "Override a beatmap's set CS.", OrderMode.FIRST)] + [SettingSource("Circle Size", "Override a beatmap's set CS.", 0)] public BindableNumber CircleSize { get; } = new BindableFloat { Precision = 0.1f, @@ -21,7 +20,7 @@ namespace osu.Game.Rulesets.Catch.Mods Value = 5, }; - [SettingSource("Approach Rate", "Override a beatmap's set AR.", OrderMode.LAST)] + [SettingSource("Approach Rate", "Override a beatmap's set AR.", 3)] public BindableNumber ApproachRate { get; } = new BindableFloat { Precision = 0.1f, diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs index 2b56042ead..2c6eb19f3d 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs @@ -5,13 +5,12 @@ using osu.Framework.Bindables; using osu.Game.Beatmaps; using osu.Game.Configuration; using osu.Game.Rulesets.Mods; -using static osu.Game.Configuration.SettingSourceAttribute; namespace osu.Game.Rulesets.Osu.Mods { public class OsuModDifficultyAdjust : ModDifficultyAdjust { - [SettingSource("Circle Size", "Override a beatmap's set CS.", OrderMode.FIRST)] + [SettingSource("Circle Size", "Override a beatmap's set CS.", 0)] public BindableNumber CircleSize { get; } = new BindableFloat { Precision = 0.1f, @@ -21,7 +20,7 @@ namespace osu.Game.Rulesets.Osu.Mods Value = 5, }; - [SettingSource("Approach Rate", "Override a beatmap's set AR.", OrderMode.LAST)] + [SettingSource("Approach Rate", "Override a beatmap's set AR.", 3)] public BindableNumber ApproachRate { get; } = new BindableFloat { Precision = 0.1f, diff --git a/osu.Game/Configuration/SettingSourceAttribute.cs b/osu.Game/Configuration/SettingSourceAttribute.cs index 06e01bb042..4dcd2c6122 100644 --- a/osu.Game/Configuration/SettingSourceAttribute.cs +++ b/osu.Game/Configuration/SettingSourceAttribute.cs @@ -17,31 +17,24 @@ namespace osu.Game.Configuration /// An attribute to mark a bindable as being exposed to the user via settings controls. /// Can be used in conjunction with to automatically create UI controls. ///
    + /// + /// All controls with OrderPosition set to an int greater than 0 will be placed first in ascending order. + /// All controls with no OrderPosition will come afterward in default order. + /// [MeansImplicitUse] [AttributeUsage(AttributeTargets.Property)] public class SettingSourceAttribute : Attribute { - public enum OrderMode - { - FIRST, - ORDERED_RELATIVE, - UNORDERED, - LAST - } - public string Label { get; } public string Description { get; } - public OrderMode OrderingMode { get; } - public int OrderPosition { get; } - public SettingSourceAttribute(string label, string description = null, OrderMode order = OrderMode.UNORDERED, int orderPosition = 0) + public SettingSourceAttribute(string label, string description = null, int orderPosition = -1) { Label = label ?? string.Empty; Description = description ?? string.Empty; - OrderingMode = order; OrderPosition = orderPosition; } } @@ -136,12 +129,10 @@ namespace osu.Game.Configuration { var original = obj.GetSettingsSourceProperties(); - var first = original.Where(attr => attr.Item1.OrderingMode == SettingSourceAttribute.OrderMode.FIRST); - var orderedRelative = original.Where(attr => attr.Item1.OrderingMode == SettingSourceAttribute.OrderMode.ORDERED_RELATIVE).OrderBy(attr => attr.Item1.OrderPosition); - var unordered = original.Where(attr => attr.Item1.OrderingMode == SettingSourceAttribute.OrderMode.UNORDERED); - var last = original.Where(attr => attr.Item1.OrderingMode == SettingSourceAttribute.OrderMode.LAST); + var orderedRelative = original.Where(attr => attr.Item1.OrderPosition > -1).OrderBy(attr => attr.Item1.OrderPosition); + var unordered = original.Except(orderedRelative); - return first.Concat(orderedRelative).Concat(unordered).Concat(last); + return orderedRelative.Concat(unordered); } } } diff --git a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs index 958a0353ea..6ba54ff8fb 100644 --- a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs @@ -7,7 +7,6 @@ using osu.Framework.Graphics.Sprites; using System; using System.Collections.Generic; using osu.Game.Configuration; -using static osu.Game.Configuration.SettingSourceAttribute; namespace osu.Game.Rulesets.Mods { @@ -29,7 +28,7 @@ namespace osu.Game.Rulesets.Mods public override Type[] IncompatibleMods => new[] { typeof(ModEasy), typeof(ModHardRock) }; - [SettingSource("HP Drain", "Override a beatmap's set HP.", OrderMode.ORDERED_RELATIVE, 1)] + [SettingSource("HP Drain", "Override a beatmap's set HP.", 1)] public BindableNumber DrainRate { get; } = new BindableFloat { Precision = 0.1f, @@ -39,7 +38,7 @@ namespace osu.Game.Rulesets.Mods Value = 5, }; - [SettingSource("Accuracy", "Override a beatmap's set OD.", OrderMode.ORDERED_RELATIVE, 1)] + [SettingSource("Accuracy", "Override a beatmap's set OD.", 2)] public BindableNumber OverallDifficulty { get; } = new BindableFloat { Precision = 0.1f, From 333f976580cc8e159b09e268bef438f09200e3d9 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 11 Feb 2020 17:41:48 +0900 Subject: [PATCH 1432/1829] Fix test finding deleted beatmaps under dotnet-test --- osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs index bd06089514..9474c08c5a 100644 --- a/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs +++ b/osu.Game.Tests/Visual/SongSelect/TestScenePlaySongSelect.cs @@ -442,16 +442,20 @@ namespace osu.Game.Tests.Visual.SongSelect AddUntilStep("dummy selected", () => Beatmap.Value is DummyWorkingBeatmap); + AddUntilStep("has no selection", () => songSelect.Carousel.SelectedBeatmap == null); + BeatmapInfo target = null; AddStep("select beatmap externally", () => { - target = manager.QueryBeatmapSets(b => b.Beatmaps.Any(bi => bi.RulesetID == (differentRuleset ? 1 : 0))) + target = manager.GetAllUsableBeatmapSets().Where(b => b.Beatmaps.Any(bi => bi.RulesetID == (differentRuleset ? 1 : 0))) .ElementAt(5).Beatmaps.First(); Beatmap.Value = manager.GetWorkingBeatmap(target); }); + AddUntilStep("has selection", () => songSelect.Carousel.SelectedBeatmap != null); + AddUntilStep("carousel has correct", () => songSelect.Carousel.SelectedBeatmap?.OnlineBeatmapID == target.OnlineBeatmapID); AddUntilStep("game has correct", () => Beatmap.Value.BeatmapInfo.OnlineBeatmapID == target.OnlineBeatmapID); From 17791259ed16767dfced844a094fe9116d9a5db4 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Tue, 11 Feb 2020 16:21:31 +0700 Subject: [PATCH 1433/1829] Fix InfoColumn minWidth implementation --- .../Scores/TopScoreStatisticsSection.cs | 42 +++++++++++++------ 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs index 6c9f0b0321..c441cb3101 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs @@ -118,26 +118,42 @@ namespace osu.Game.Overlays.BeatmapSet.Scores { AutoSizeAxes = Axes.Both; - InternalChild = new FillFlowContainer + InternalChild = new GridContainer { AutoSizeAxes = Axes.Both, - Direction = FillDirection.Vertical, - Spacing = new Vector2(0, 1), - Children = new[] + ColumnDimensions = new[] { - text = new OsuSpriteText + new Dimension(GridSizeMode.AutoSize, minSize: minWidth ?? 0) + }, + RowDimensions = new[] + { + new Dimension(GridSizeMode.AutoSize), + new Dimension(GridSizeMode.Absolute, 4), + new Dimension(GridSizeMode.AutoSize) + }, + Content = new[] + { + new[] { - Font = OsuFont.GetFont(size: 10, weight: FontWeight.Bold), - Text = title.ToUpper() + text = new OsuSpriteText + { + Font = OsuFont.GetFont(size: 10, weight: FontWeight.Bold), + Text = title.ToUpper() + } }, - separator = new Box + new[] { - RelativeSizeAxes = minWidth == null ? Axes.X : Axes.None, - Width = minWidth ?? 1f, - Height = 2, - Margin = new MarginPadding { Top = 2 } + separator = new Box + { + Anchor = Anchor.CentreLeft, + RelativeSizeAxes = Axes.X, + Height = 2 + } }, - content + new[] + { + content + } } }; } From 28a39fd8faa1ff463ea606de60048cdb10488ce3 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Tue, 11 Feb 2020 17:12:32 +0700 Subject: [PATCH 1434/1829] Use explicit typing --- .../Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs index c441cb3101..8a6927e048 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs @@ -131,9 +131,9 @@ namespace osu.Game.Overlays.BeatmapSet.Scores new Dimension(GridSizeMode.Absolute, 4), new Dimension(GridSizeMode.AutoSize) }, - Content = new[] + Content = new Drawable[][] { - new[] + new [] { text = new OsuSpriteText { From 44568ac9e6343a115fc9ed70db6a3194baf7b007 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Tue, 11 Feb 2020 17:36:10 +0700 Subject: [PATCH 1435/1829] Avoid covariant array conversion --- .../BeatmapSet/Scores/TopScoreStatisticsSection.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs index 8a6927e048..be6151278c 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs @@ -131,9 +131,9 @@ namespace osu.Game.Overlays.BeatmapSet.Scores new Dimension(GridSizeMode.Absolute, 4), new Dimension(GridSizeMode.AutoSize) }, - Content = new Drawable[][] + Content = new[] { - new [] + new Drawable[] { text = new OsuSpriteText { @@ -141,7 +141,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores Text = title.ToUpper() } }, - new[] + new Drawable[] { separator = new Box { @@ -150,7 +150,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores Height = 2 } }, - new[] + new Drawable[] { content } From 2be7d1a873b3de01080f00b850d00174a9d645d3 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Tue, 11 Feb 2020 18:19:08 +0700 Subject: [PATCH 1436/1829] Remove redundant type specification --- .../Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs index be6151278c..a7066c4827 100644 --- a/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs +++ b/osu.Game/Overlays/BeatmapSet/Scores/TopScoreStatisticsSection.cs @@ -150,7 +150,7 @@ namespace osu.Game.Overlays.BeatmapSet.Scores Height = 2 } }, - new Drawable[] + new[] { content } From 627833844839dec52e21f1ad7bc00cd796933a9c Mon Sep 17 00:00:00 2001 From: Maximilian Junges Date: Tue, 11 Feb 2020 14:21:12 +0100 Subject: [PATCH 1437/1829] implement custom tooltip for DrawableDate --- osu.Game/Graphics/DrawableDate.cs | 75 ++++++++++++++++++++++++++++++- 1 file changed, 73 insertions(+), 2 deletions(-) diff --git a/osu.Game/Graphics/DrawableDate.cs b/osu.Game/Graphics/DrawableDate.cs index 0224c77ee8..dcbea96071 100644 --- a/osu.Game/Graphics/DrawableDate.cs +++ b/osu.Game/Graphics/DrawableDate.cs @@ -4,13 +4,16 @@ using System; using osu.Framework.Allocation; using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Cursor; +using osu.Framework.Graphics.Shapes; using osu.Game.Graphics.Sprites; using osu.Game.Utils; +using osuTK; namespace osu.Game.Graphics { - public class DrawableDate : OsuSpriteText, IHasTooltip + public class DrawableDate : OsuSpriteText, IHasCustomTooltip { private DateTimeOffset date; @@ -75,6 +78,74 @@ namespace osu.Game.Graphics private void updateTime() => Text = Format(); - public virtual string TooltipText => string.Format($"{Date:MMMM d, yyyy h:mm tt \"UTC\"z}"); + public ITooltip GetCustomTooltip() => new DateTooltip(); + + public object TooltipContent => Date; + + private class DateTooltip : VisibilityContainer, ITooltip + { + private readonly OsuSpriteText dateText, timeText; + private readonly Box background; + + public DateTooltip() + { + AutoSizeAxes = Axes.Both; + Masking = true; + CornerRadius = 5; + + Children = new Drawable[] + { + background = new Box + { + RelativeSizeAxes = Axes.Both + }, + new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Padding = new MarginPadding(10), + Children = new Drawable[] + { + dateText = new OsuSpriteText + { + Font = OsuFont.GetFont(size: 12, weight: FontWeight.Bold), + Anchor = Anchor.BottomLeft, + Origin = Anchor.BottomLeft, + }, + timeText = new OsuSpriteText + { + Font = OsuFont.GetFont(size: 12, weight: FontWeight.Regular), + Anchor = Anchor.BottomLeft, + Origin = Anchor.BottomLeft, + } + } + }, + }; + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + // Temporary colour since it's currently impossible to change it without bugs (see https://github.com/ppy/osu-framework/issues/3231) + // If above is fixed, this should use OverlayColourProvider + background.Colour = colours.Gray1; + timeText.Colour = colours.GreyCyanLighter; + } + + protected override void PopIn() => this.FadeIn(200, Easing.OutQuint); + protected override void PopOut() => this.FadeOut(200, Easing.OutQuint); + + public bool SetContent(object content) + { + if (!(content is DateTimeOffset date)) + return false; + + dateText.Text = string.Format($"{date:d MMMM yyyy}") + " "; + timeText.Text = string.Format($"{date:hh:mm:ss \"UTC\"z}"); + return true; + } + + public void Move(Vector2 pos) => Position = pos; + } } } From 2a67246b218f323710572f3a1b53c56722171d55 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 11 Feb 2020 22:37:38 +0900 Subject: [PATCH 1438/1829] Ensure game is at main menu before performing exit on screen --- osu.Game/OsuGame.cs | 2 +- osu.Game/Screens/Menu/MainMenu.cs | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index ff3dee55af..79616ef97c 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -446,7 +446,7 @@ namespace osu.Game ///
    /// The action to perform once we are in the correct state. /// An optional collection of valid screen types. If any of these screens are already current we can perform the action immediately, else the first valid parent will be made current before performing the action. is used if not specified. - protected void PerformFromScreen(Action action, IEnumerable validScreens = null) + public void PerformFromScreen(Action action, IEnumerable validScreens = null) { performFromMainMenuTask?.Cancel(); diff --git a/osu.Game/Screens/Menu/MainMenu.cs b/osu.Game/Screens/Menu/MainMenu.cs index cb5ceefb0f..c70fbb67a4 100644 --- a/osu.Game/Screens/Menu/MainMenu.cs +++ b/osu.Game/Screens/Menu/MainMenu.cs @@ -141,12 +141,15 @@ namespace osu.Game.Screens.Menu preloadSongSelect(); } + [Resolved] + private OsuGame game { get; set; } + private void confirmAndExit() { if (exitConfirmed) return; exitConfirmed = true; - this.Exit(); + game.PerformFromScreen(menu => menu.Exit()); } private void preloadSongSelect() From 482f622c94202a483092f8e6df306fbcc234af6a Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 11 Feb 2020 18:46:49 +0300 Subject: [PATCH 1439/1829] CommentEditor basic implementation --- .../UserInterface/TestSceneCommentEditor.cs | 43 ++++++++++++++ osu.Game/Overlays/Comments/CommentEditor.cs | 59 +++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs create mode 100644 osu.Game/Overlays/Comments/CommentEditor.cs diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs new file mode 100644 index 0000000000..f349c81b38 --- /dev/null +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs @@ -0,0 +1,43 @@ +// 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.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Overlays; +using osu.Game.Overlays.Comments; + +namespace osu.Game.Tests.Visual.UserInterface +{ + public class TestSceneCommentEditor : OsuTestScene + { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(CommentEditor), + }; + + [Cached] + private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Blue); + + public TestSceneCommentEditor() + { + Add(new Container + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + AutoSizeAxes = Axes.Y, + Width = 800, + Child = new TestCommentEditor() + }); + } + + private class TestCommentEditor : CommentEditor + { + protected override string EmptyTextboxText() => @"This textbox is empty"; + + protected override string FooterText() => @"Footer text. And it is pretty long. Cool."; + } + } +} diff --git a/osu.Game/Overlays/Comments/CommentEditor.cs b/osu.Game/Overlays/Comments/CommentEditor.cs new file mode 100644 index 0000000000..a1995530bb --- /dev/null +++ b/osu.Game/Overlays/Comments/CommentEditor.cs @@ -0,0 +1,59 @@ +// 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.Graphics.Containers; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Shapes; +using osu.Game.Graphics; +using osu.Game.Graphics.Sprites; + +namespace osu.Game.Overlays.Comments +{ + public abstract class CommentEditor : CompositeDrawable + { + private const int footer_height = 40; + + [BackgroundDependencyLoader] + private void load(OverlayColourProvider colourProvider) + { + RelativeSizeAxes = Axes.X; + Height = footer_height * 2; + Masking = true; + CornerRadius = 6; + + AddRangeInternal(new Drawable[] + { + new Box + { + RelativeSizeAxes = Axes.Both, + Colour = colourProvider.Background3 + }, + new Container + { + Name = "Footer", + Anchor = Anchor.BottomCentre, + Origin = Anchor.BottomCentre, + RelativeSizeAxes = Axes.X, + Height = footer_height, + Padding = new MarginPadding { Horizontal = 8 }, + Children = new Drawable[] + { + new OsuSpriteText + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + Font = OsuFont.GetFont(size: 12), + Shadow = false, + Text = FooterText() + } + } + } + }); + } + + protected abstract string FooterText(); + + protected abstract string EmptyTextboxText(); + } +} From 829152c8e89444f3146f582509d8b9879a1b6ba3 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 11 Feb 2020 20:08:24 +0300 Subject: [PATCH 1440/1829] Implement EditorTextbox --- .../UserInterface/TestSceneCommentEditor.cs | 6 +- osu.Game/Overlays/Comments/CommentEditor.cs | 81 +++++++++++++++---- 2 files changed, 70 insertions(+), 17 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs index f349c81b38..a1f1999090 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs @@ -35,9 +35,11 @@ namespace osu.Game.Tests.Visual.UserInterface private class TestCommentEditor : CommentEditor { - protected override string EmptyTextboxText() => @"This textbox is empty"; + protected override string FooterText => @"Footer text. And it is pretty long. Cool."; - protected override string FooterText() => @"Footer text. And it is pretty long. Cool."; + protected override string CommitButtonText => @"Commit"; + + protected override string TextboxPlaceholderText => @"This textbox is empty"; } } } diff --git a/osu.Game/Overlays/Comments/CommentEditor.cs b/osu.Game/Overlays/Comments/CommentEditor.cs index a1995530bb..9252194377 100644 --- a/osu.Game/Overlays/Comments/CommentEditor.cs +++ b/osu.Game/Overlays/Comments/CommentEditor.cs @@ -7,20 +7,32 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Shapes; using osu.Game.Graphics; using osu.Game.Graphics.Sprites; +using osu.Framework.Graphics.UserInterface; +using osu.Framework.Graphics.Sprites; +using osuTK.Graphics; namespace osu.Game.Overlays.Comments { public abstract class CommentEditor : CompositeDrawable { private const int footer_height = 40; + private const int side_padding = 8; + + protected abstract string FooterText { get; } + + protected abstract string CommitButtonText { get; } + + protected abstract string TextboxPlaceholderText { get; } [BackgroundDependencyLoader] private void load(OverlayColourProvider colourProvider) { RelativeSizeAxes = Axes.X; - Height = footer_height * 2; + AutoSizeAxes = Axes.Y; Masking = true; CornerRadius = 6; + BorderThickness = 3; + BorderColour = colourProvider.Background3; AddRangeInternal(new Drawable[] { @@ -29,31 +41,70 @@ namespace osu.Game.Overlays.Comments RelativeSizeAxes = Axes.Both, Colour = colourProvider.Background3 }, - new Container + new FillFlowContainer { - Name = "Footer", - Anchor = Anchor.BottomCentre, - Origin = Anchor.BottomCentre, + AutoSizeAxes = Axes.Y, RelativeSizeAxes = Axes.X, - Height = footer_height, - Padding = new MarginPadding { Horizontal = 8 }, + Direction = FillDirection.Vertical, Children = new Drawable[] { - new OsuSpriteText + new EditorTextbox { - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - Font = OsuFont.GetFont(size: 12), - Shadow = false, - Text = FooterText() + Height = footer_height, + RelativeSizeAxes = Axes.X, + PlaceholderText = TextboxPlaceholderText + }, + new Container + { + Name = "Footer", + RelativeSizeAxes = Axes.X, + Height = footer_height, + Padding = new MarginPadding { Horizontal = side_padding }, + Children = new Drawable[] + { + new OsuSpriteText + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + Font = OsuFont.GetFont(size: 12, weight: FontWeight.SemiBold), + Text = FooterText + } + } } } } }); } - protected abstract string FooterText(); + private class EditorTextbox : BasicTextBox + { + protected override float LeftRightPadding => side_padding; - protected abstract string EmptyTextboxText(); + protected override Color4 SelectionColour => Color4.LightSkyBlue; + + private OsuSpriteText placeholder; + + public EditorTextbox() + { + Masking = false; + TextContainer.Height = 0.4f; + } + + [BackgroundDependencyLoader] + private void load(OverlayColourProvider colourProvider) + { + BackgroundUnfocused = BackgroundFocused = colourProvider.Background5; + placeholder.Colour = colourProvider.Background3; + BackgroundCommit = Color4.LightSkyBlue; + } + + + protected override SpriteText CreatePlaceholder() => placeholder = new OsuSpriteText + { + Font = OsuFont.GetFont(weight: FontWeight.Regular), + }; + + protected override Drawable GetDrawableCharacter(char c) => new OsuSpriteText { Text = c.ToString(), Font = OsuFont.GetFont(size: CalculatedTextSize) }; + } } } From b9e10cb49872c4eb0253a6498050e5cca49a96e0 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Tue, 11 Feb 2020 18:10:46 +0100 Subject: [PATCH 1441/1829] Privatize ViewTarget --- .../Online/TestSceneOnlineViewContainer.cs | 18 ++++++++++++------ osu.Game/Online/OnlineViewContainer.cs | 16 ++++++++-------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs index 5427db5af3..2b9609f6e0 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs @@ -32,6 +32,8 @@ namespace osu.Game.Tests.Visual.Online { public new LoadingAnimation LoadingAnimation => base.LoadingAnimation; + public CompositeDrawable ViewTarget => base.Content.Parent; + public TestOnlineViewContainer() : base(@"Please sign in to view dummy test content") { @@ -53,9 +55,9 @@ namespace osu.Game.Tests.Visual.Online }; } - protected override void FadeContentOut(Drawable content) => content.Hide(); + protected override void PopContentOut(Drawable content) => content.Hide(); - protected override void FadeContentIn(Drawable content) => content.Show(); + protected override void PopContentIn(Drawable content) => content.Show(); } [Test] @@ -63,7 +65,7 @@ namespace osu.Game.Tests.Visual.Online { AddStep("set status to online", () => ((DummyAPIAccess)API).State = APIState.Online); - AddAssert("children are visible", () => onlineView.TransformationTarget.IsPresent); + AddAssert("children are visible", () => onlineView.ViewTarget.IsPresent); AddAssert("loading animation is not visible", () => !onlineView.LoadingAnimation.IsPresent); } @@ -72,7 +74,7 @@ namespace osu.Game.Tests.Visual.Online { AddStep("set status to offline", () => ((DummyAPIAccess)API).State = APIState.Offline); - AddAssert("children are hidden", () => !onlineView.TransformationTarget.IsPresent); + AddAssert("children are hidden", () => !onlineView.ViewTarget.IsPresent); AddAssert("loading animation is not visible", () => !onlineView.LoadingAnimation.IsPresent); } @@ -81,12 +83,16 @@ namespace osu.Game.Tests.Visual.Online { AddStep("set status to connecting", () => ((DummyAPIAccess)API).State = APIState.Connecting); - AddAssert("children are hidden", () => !onlineView.TransformationTarget.IsPresent); + AddAssert("children are hidden", () => !onlineView.ViewTarget.IsPresent); AddAssert("loading animation is visible", () => onlineView.LoadingAnimation.IsPresent); + } + [Test] + public void TestFailingStateVisibility() + { AddStep("set status to failing", () => ((DummyAPIAccess)API).State = APIState.Failing); - AddAssert("children are hidden", () => !onlineView.TransformationTarget.IsPresent); + AddAssert("children are hidden", () => !onlineView.ViewTarget.IsPresent); AddAssert("loading animation is visible", () => onlineView.LoadingAnimation.IsPresent); } } diff --git a/osu.Game/Online/OnlineViewContainer.cs b/osu.Game/Online/OnlineViewContainer.cs index ac5a7941ea..c512ca531a 100644 --- a/osu.Game/Online/OnlineViewContainer.cs +++ b/osu.Game/Online/OnlineViewContainer.cs @@ -11,7 +11,7 @@ using osu.Game.Online.Placeholders; namespace osu.Game.Online { /// - /// A for dislaying online content which require a local user to be logged in. + /// A for displaying online content which require a local user to be logged in. /// Shows its children only when the local user is logged in and supports displaying a placeholder if not. /// public abstract class OnlineViewContainer : Container, IOnlineComponent @@ -21,7 +21,7 @@ namespace osu.Game.Online protected const double TRANSFORM_TIME = 300.0; - internal readonly Container TransformationTarget; + private readonly Container viewTarget; protected override Container Content { get; } [Resolved] @@ -31,7 +31,7 @@ namespace osu.Game.Online { InternalChildren = new Drawable[] { - TransformationTarget = new Container + viewTarget = new Container { RelativeSizeAxes = Axes.Both, Child = Content = new Container @@ -52,30 +52,30 @@ namespace osu.Game.Online switch (state) { case APIState.Offline: - FadeContentOut(TransformationTarget); + PopContentOut(viewTarget); placeholder.ScaleTo(0.8f).Then().ScaleTo(1, 3 * TRANSFORM_TIME, Easing.OutQuint); placeholder.FadeInFromZero(2 * TRANSFORM_TIME, Easing.OutQuint); LoadingAnimation.Hide(); break; case APIState.Online: - FadeContentIn(TransformationTarget); + PopContentIn(viewTarget); placeholder.FadeOut(TRANSFORM_TIME / 2, Easing.OutQuint); LoadingAnimation.Hide(); break; case APIState.Failing: case APIState.Connecting: - FadeContentOut(TransformationTarget); + PopContentOut(viewTarget); LoadingAnimation.Show(); placeholder.FadeOut(TRANSFORM_TIME / 2, Easing.OutQuint); break; } } - protected abstract void FadeContentOut(Drawable content); + protected abstract void PopContentOut(Drawable content); - protected abstract void FadeContentIn(Drawable content); + protected abstract void PopContentIn(Drawable content); protected override void LoadComplete() { From 730c115f49fbb29b5f72f37ad0446e9f4174d939 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 11 Feb 2020 20:11:22 +0300 Subject: [PATCH 1442/1829] Fix some size values --- osu.Game/Overlays/Comments/CommentEditor.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/osu.Game/Overlays/Comments/CommentEditor.cs b/osu.Game/Overlays/Comments/CommentEditor.cs index 9252194377..4ad59ff754 100644 --- a/osu.Game/Overlays/Comments/CommentEditor.cs +++ b/osu.Game/Overlays/Comments/CommentEditor.cs @@ -15,7 +15,6 @@ namespace osu.Game.Overlays.Comments { public abstract class CommentEditor : CompositeDrawable { - private const int footer_height = 40; private const int side_padding = 8; protected abstract string FooterText { get; } @@ -50,7 +49,7 @@ namespace osu.Game.Overlays.Comments { new EditorTextbox { - Height = footer_height, + Height = 40, RelativeSizeAxes = Axes.X, PlaceholderText = TextboxPlaceholderText }, @@ -58,7 +57,7 @@ namespace osu.Game.Overlays.Comments { Name = "Footer", RelativeSizeAxes = Axes.X, - Height = footer_height, + Height = 35, Padding = new MarginPadding { Horizontal = side_padding }, Children = new Drawable[] { From c022cf72b58a8bd13861c8cde85eca6cc3484672 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Tue, 11 Feb 2020 20:47:51 +0300 Subject: [PATCH 1443/1829] Implement CancellableCommentEditor --- .../UserInterface/TestSceneCommentEditor.cs | 21 +++++- .../Comments/CancellableCommentEditor.cs | 71 +++++++++++++++++++ osu.Game/Overlays/Comments/CommentEditor.cs | 10 +++ osu.Game/Overlays/OverlayColourProvider.cs | 42 +++++------ 4 files changed, 121 insertions(+), 23 deletions(-) create mode 100644 osu.Game/Overlays/Comments/CancellableCommentEditor.cs diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs index a1f1999090..86179886e5 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs @@ -8,6 +8,7 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Game.Overlays; using osu.Game.Overlays.Comments; +using osuTK; namespace osu.Game.Tests.Visual.UserInterface { @@ -16,6 +17,7 @@ namespace osu.Game.Tests.Visual.UserInterface public override IReadOnlyList RequiredTypes => new[] { typeof(CommentEditor), + typeof(CancellableCommentEditor), }; [Cached] @@ -23,13 +25,19 @@ namespace osu.Game.Tests.Visual.UserInterface public TestSceneCommentEditor() { - Add(new Container + Add(new FillFlowContainer { Anchor = Anchor.Centre, Origin = Anchor.Centre, AutoSizeAxes = Axes.Y, Width = 800, - Child = new TestCommentEditor() + Direction = FillDirection.Vertical, + Spacing = new Vector2(0, 20), + Children = new Drawable[] + { + new TestCommentEditor(), + new TestCancellableCommentEditor() + } }); } @@ -41,5 +49,14 @@ namespace osu.Game.Tests.Visual.UserInterface protected override string TextboxPlaceholderText => @"This textbox is empty"; } + + private class TestCancellableCommentEditor : CancellableCommentEditor + { + protected override string FooterText => @"Wow, another one. Sicc"; + + protected override string CommitButtonText => @"Save"; + + protected override string TextboxPlaceholderText => @"Miltiline textboxes soon"; + } } } diff --git a/osu.Game/Overlays/Comments/CancellableCommentEditor.cs b/osu.Game/Overlays/Comments/CancellableCommentEditor.cs new file mode 100644 index 0000000000..ad5686910a --- /dev/null +++ b/osu.Game/Overlays/Comments/CancellableCommentEditor.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; +using System.Collections.Generic; +using osu.Framework.Allocation; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; +using osu.Game.Graphics; +using osu.Game.Graphics.Containers; +using osu.Game.Graphics.Sprites; + +namespace osu.Game.Overlays.Comments +{ + public abstract class CancellableCommentEditor : CommentEditor + { + public Action OnCancel; + + [BackgroundDependencyLoader] + private void load() + { + ButtonsContainer.Add(new CancelButton + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + Action = () => OnCancel?.Invoke() + }); + } + + private class CancelButton : OsuHoverContainer + { + protected override IEnumerable EffectTargets => new[] { background }; + + private readonly Box background; + + public CancelButton() + { + AutoSizeAxes = Axes.Both; + Child = new CircularContainer + { + Masking = true, + Height = 25, + AutoSizeAxes = Axes.X, + Children = new Drawable[] + { + background = new Box + { + RelativeSizeAxes = Axes.Both + }, + new OsuSpriteText + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Font = OsuFont.GetFont(size: 12, weight: FontWeight.Bold), + Margin = new MarginPadding { Horizontal = 20 }, + Text = @"Cancel" + } + } + }; + } + + [BackgroundDependencyLoader] + private void load(OverlayColourProvider colourProvider) + { + IdleColour = colourProvider.GetColour(0.5f, 0.45f); + HoverColour = colourProvider.GetColour(0.5f, 0.6f); + } + } + } +} diff --git a/osu.Game/Overlays/Comments/CommentEditor.cs b/osu.Game/Overlays/Comments/CommentEditor.cs index 4ad59ff754..bb8ae7f114 100644 --- a/osu.Game/Overlays/Comments/CommentEditor.cs +++ b/osu.Game/Overlays/Comments/CommentEditor.cs @@ -23,6 +23,8 @@ namespace osu.Game.Overlays.Comments protected abstract string TextboxPlaceholderText { get; } + protected FillFlowContainer ButtonsContainer; + [BackgroundDependencyLoader] private void load(OverlayColourProvider colourProvider) { @@ -67,6 +69,14 @@ namespace osu.Game.Overlays.Comments Origin = Anchor.CentreLeft, Font = OsuFont.GetFont(size: 12, weight: FontWeight.SemiBold), Text = FooterText + }, + ButtonsContainer = new FillFlowContainer + { + Name = "Buttons", + Anchor = Anchor.CentreRight, + Origin = Anchor.CentreRight, + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, } } } diff --git a/osu.Game/Overlays/OverlayColourProvider.cs b/osu.Game/Overlays/OverlayColourProvider.cs index 9816f313ad..c0984073e6 100644 --- a/osu.Game/Overlays/OverlayColourProvider.cs +++ b/osu.Game/Overlays/OverlayColourProvider.cs @@ -16,28 +16,28 @@ namespace osu.Game.Overlays this.colourScheme = colourScheme; } - public Color4 Highlight1 => getColour(1, 0.7f); - public Color4 Content1 => getColour(0.4f, 1); - public Color4 Content2 => getColour(0.4f, 0.9f); - public Color4 Light1 => getColour(0.4f, 0.8f); - public Color4 Light2 => getColour(0.4f, 0.75f); - public Color4 Light3 => getColour(0.4f, 0.7f); - public Color4 Light4 => getColour(0.4f, 0.5f); - public Color4 Dark1 => getColour(0.2f, 0.35f); - public Color4 Dark2 => getColour(0.2f, 0.3f); - public Color4 Dark3 => getColour(0.2f, 0.25f); - public Color4 Dark4 => getColour(0.2f, 0.2f); - public Color4 Dark5 => getColour(0.2f, 0.15f); - public Color4 Dark6 => getColour(0.2f, 0.1f); - public Color4 Foreground1 => getColour(0.1f, 0.6f); - public Color4 Background1 => getColour(0.1f, 0.4f); - public Color4 Background2 => getColour(0.1f, 0.3f); - public Color4 Background3 => getColour(0.1f, 0.25f); - public Color4 Background4 => getColour(0.1f, 0.2f); - public Color4 Background5 => getColour(0.1f, 0.15f); - public Color4 Background6 => getColour(0.1f, 0.1f); + public Color4 Highlight1 => GetColour(1, 0.7f); + public Color4 Content1 => GetColour(0.4f, 1); + public Color4 Content2 => GetColour(0.4f, 0.9f); + public Color4 Light1 => GetColour(0.4f, 0.8f); + public Color4 Light2 => GetColour(0.4f, 0.75f); + public Color4 Light3 => GetColour(0.4f, 0.7f); + public Color4 Light4 => GetColour(0.4f, 0.5f); + public Color4 Dark1 => GetColour(0.2f, 0.35f); + public Color4 Dark2 => GetColour(0.2f, 0.3f); + public Color4 Dark3 => GetColour(0.2f, 0.25f); + public Color4 Dark4 => GetColour(0.2f, 0.2f); + public Color4 Dark5 => GetColour(0.2f, 0.15f); + public Color4 Dark6 => GetColour(0.2f, 0.1f); + public Color4 Foreground1 => GetColour(0.1f, 0.6f); + public Color4 Background1 => GetColour(0.1f, 0.4f); + public Color4 Background2 => GetColour(0.1f, 0.3f); + public Color4 Background3 => GetColour(0.1f, 0.25f); + public Color4 Background4 => GetColour(0.1f, 0.2f); + public Color4 Background5 => GetColour(0.1f, 0.15f); + public Color4 Background6 => GetColour(0.1f, 0.1f); - private Color4 getColour(float saturation, float lightness) => Color4.FromHsl(new Vector4(getBaseHue(colourScheme), saturation, lightness, 1)); + public Color4 GetColour(float saturation, float lightness) => Color4.FromHsl(new Vector4(getBaseHue(colourScheme), saturation, lightness, 1)); // See https://github.com/ppy/osu-web/blob/4218c288292d7c810b619075471eaea8bbb8f9d8/app/helpers.php#L1463 private static float getBaseHue(OverlayColourScheme colourScheme) From 5a3daf1bd71939f6f1c4b34d1911d74b6789a6f1 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 12 Feb 2020 00:57:06 +0300 Subject: [PATCH 1444/1829] Implement CommitButton --- .../Comments/CancellableCommentEditor.cs | 4 +- osu.Game/Overlays/Comments/CommentEditor.cs | 72 ++++++++++++++++++- 2 files changed, 72 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/Comments/CancellableCommentEditor.cs b/osu.Game/Overlays/Comments/CancellableCommentEditor.cs index ad5686910a..f58627efb3 100644 --- a/osu.Game/Overlays/Comments/CancellableCommentEditor.cs +++ b/osu.Game/Overlays/Comments/CancellableCommentEditor.cs @@ -22,8 +22,8 @@ namespace osu.Game.Overlays.Comments { ButtonsContainer.Add(new CancelButton { - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, + Anchor = Anchor.CentreRight, + Origin = Anchor.CentreRight, Action = () => OnCancel?.Invoke() }); } diff --git a/osu.Game/Overlays/Comments/CommentEditor.cs b/osu.Game/Overlays/Comments/CommentEditor.cs index bb8ae7f114..624e15a047 100644 --- a/osu.Game/Overlays/Comments/CommentEditor.cs +++ b/osu.Game/Overlays/Comments/CommentEditor.cs @@ -10,6 +10,10 @@ using osu.Game.Graphics.Sprites; using osu.Framework.Graphics.UserInterface; using osu.Framework.Graphics.Sprites; using osuTK.Graphics; +using osu.Game.Graphics.UserInterface; +using System.Collections.Generic; +using System; +using osuTK; namespace osu.Game.Overlays.Comments { @@ -17,6 +21,8 @@ namespace osu.Game.Overlays.Comments { private const int side_padding = 8; + public Action OnCommit; + protected abstract string FooterText { get; } protected abstract string CommitButtonText { get; } @@ -28,6 +34,9 @@ namespace osu.Game.Overlays.Comments [BackgroundDependencyLoader] private void load(OverlayColourProvider colourProvider) { + EditorTextbox textbox; + CommitButton commitButton; + RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; Masking = true; @@ -49,7 +58,7 @@ namespace osu.Game.Overlays.Comments Direction = FillDirection.Vertical, Children = new Drawable[] { - new EditorTextbox + textbox = new EditorTextbox { Height = 40, RelativeSizeAxes = Axes.X, @@ -77,12 +86,21 @@ namespace osu.Game.Overlays.Comments Origin = Anchor.CentreRight, AutoSizeAxes = Axes.Both, Direction = FillDirection.Horizontal, + Spacing = new Vector2(5, 0), + Child = commitButton = new CommitButton(CommitButtonText) + { + Anchor = Anchor.CentreRight, + Origin = Anchor.CentreRight, + Action = () => OnCommit?.Invoke(textbox.Text) + } } } } } } }); + + textbox.OnCommit += (u, v) => commitButton.Click(); } private class EditorTextbox : BasicTextBox @@ -107,7 +125,6 @@ namespace osu.Game.Overlays.Comments BackgroundCommit = Color4.LightSkyBlue; } - protected override SpriteText CreatePlaceholder() => placeholder = new OsuSpriteText { Font = OsuFont.GetFont(weight: FontWeight.Regular), @@ -115,5 +132,56 @@ namespace osu.Game.Overlays.Comments protected override Drawable GetDrawableCharacter(char c) => new OsuSpriteText { Text = c.ToString(), Font = OsuFont.GetFont(size: CalculatedTextSize) }; } + + private class CommitButton : LoadingButton + { + private const int duration = 200; + + protected override IEnumerable EffectTargets => new[] { background }; + + private OsuSpriteText drawableText; + private Box background; + + public CommitButton(string text) + { + AutoSizeAxes = Axes.Both; + LoadingAnimationSize = new Vector2(10); + + drawableText.Text = text; + } + + [BackgroundDependencyLoader] + private void load(OverlayColourProvider colourProvider) + { + IdleColour = colourProvider.GetColour(0.5f, 0.45f); + HoverColour = colourProvider.GetColour(0.5f, 0.6f); + } + + protected override Drawable CreateContent() => new CircularContainer + { + Masking = true, + Height = 25, + AutoSizeAxes = Axes.X, + Children = new Drawable[] + { + background = new Box + { + RelativeSizeAxes = Axes.Both + }, + drawableText = new OsuSpriteText + { + AlwaysPresent = true, + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Font = OsuFont.GetFont(size: 12, weight: FontWeight.Bold), + Margin = new MarginPadding { Horizontal = 20 } + } + } + }; + + protected override void OnLoadStarted() => drawableText.FadeOut(duration, Easing.OutQuint); + + protected override void OnLoadFinished() => drawableText.FadeIn(duration, Easing.OutQuint); + } } } From 53a2b65dbdffda9ee3f053108dd8080b9ed85a5f Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 12 Feb 2020 01:35:08 +0300 Subject: [PATCH 1445/1829] Create dependency between textbox and commit button --- osu.Game/Overlays/Comments/CommentEditor.cs | 56 ++++++++++++++++++--- 1 file changed, 49 insertions(+), 7 deletions(-) diff --git a/osu.Game/Overlays/Comments/CommentEditor.cs b/osu.Game/Overlays/Comments/CommentEditor.cs index 624e15a047..7adb33663c 100644 --- a/osu.Game/Overlays/Comments/CommentEditor.cs +++ b/osu.Game/Overlays/Comments/CommentEditor.cs @@ -14,6 +14,7 @@ using osu.Game.Graphics.UserInterface; using System.Collections.Generic; using System; using osuTK; +using osu.Framework.Bindables; namespace osu.Game.Overlays.Comments { @@ -31,11 +32,14 @@ namespace osu.Game.Overlays.Comments protected FillFlowContainer ButtonsContainer; + private readonly Bindable current = new Bindable(); + + private CommitButton commitButton; + [BackgroundDependencyLoader] private void load(OverlayColourProvider colourProvider) { EditorTextbox textbox; - CommitButton commitButton; RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; @@ -62,7 +66,8 @@ namespace osu.Game.Overlays.Comments { Height = 40, RelativeSizeAxes = Axes.X, - PlaceholderText = TextboxPlaceholderText + PlaceholderText = TextboxPlaceholderText, + Current = current }, new Container { @@ -91,7 +96,7 @@ namespace osu.Game.Overlays.Comments { Anchor = Anchor.CentreRight, Origin = Anchor.CentreRight, - Action = () => OnCommit?.Invoke(textbox.Text) + Action = () => OnCommit?.Invoke(current.Value) } } } @@ -100,14 +105,28 @@ namespace osu.Game.Overlays.Comments } }); - textbox.OnCommit += (u, v) => commitButton.Click(); + textbox.OnCommit += (u, v) => + { + if (!commitButton.IsReady.Value) + return; + + commitButton.Click(); + current.Value = string.Empty; + }; + } + + protected override void LoadComplete() + { + base.LoadComplete(); + + current.BindValueChanged(text => commitButton.IsReady.Value = !string.IsNullOrEmpty(text.NewValue), true); } private class EditorTextbox : BasicTextBox { protected override float LeftRightPadding => side_padding; - protected override Color4 SelectionColour => Color4.LightSkyBlue; + protected override Color4 SelectionColour => Color4.Gray; private OsuSpriteText placeholder; @@ -122,7 +141,7 @@ namespace osu.Game.Overlays.Comments { BackgroundUnfocused = BackgroundFocused = colourProvider.Background5; placeholder.Colour = colourProvider.Background3; - BackgroundCommit = Color4.LightSkyBlue; + BackgroundCommit = colourProvider.Background3; } protected override SpriteText CreatePlaceholder() => placeholder = new OsuSpriteText @@ -137,8 +156,15 @@ namespace osu.Game.Overlays.Comments { private const int duration = 200; + public readonly BindableBool IsReady = new BindableBool(); + + public override bool PropagatePositionalInputSubTree => IsReady.Value && base.PropagatePositionalInputSubTree; + protected override IEnumerable EffectTargets => new[] { background }; + [Resolved] + private OverlayColourProvider colourProvider { get; set; } + private OsuSpriteText drawableText; private Box background; @@ -151,12 +177,28 @@ namespace osu.Game.Overlays.Comments } [BackgroundDependencyLoader] - private void load(OverlayColourProvider colourProvider) + private void load() { IdleColour = colourProvider.GetColour(0.5f, 0.45f); HoverColour = colourProvider.GetColour(0.5f, 0.6f); } + protected override void LoadComplete() + { + base.LoadComplete(); + IsReady.BindValueChanged(onReadyStateChanged, true); + } + + private void onReadyStateChanged(ValueChangedEvent isReady) + { + drawableText.FadeColour(isReady.NewValue ? Color4.White : colourProvider.Foreground1, duration, Easing.OutQuint); + + if (isReady.NewValue) + background.FadeColour(IsHovered ? HoverColour : IdleColour, duration, Easing.OutQuint); + else + background.FadeColour(colourProvider.Background5, duration, Easing.OutQuint); + } + protected override Drawable CreateContent() => new CircularContainer { Masking = true, From 9ac6c271ac3331e390b8d00d168fee539e97c556 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 12 Feb 2020 02:05:45 +0300 Subject: [PATCH 1446/1829] Naming adjustments --- .../UserInterface/TestSceneCommentEditor.cs | 36 +++++++++++++++++-- osu.Game/Overlays/Comments/CommentEditor.cs | 26 ++++++++------ 2 files changed, 50 insertions(+), 12 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs index 86179886e5..e32bf05197 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs @@ -6,6 +6,8 @@ using System.Collections.Generic; using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Game.Graphics; +using osu.Game.Graphics.Sprites; using osu.Game.Overlays; using osu.Game.Overlays.Comments; using osuTK; @@ -23,8 +25,21 @@ namespace osu.Game.Tests.Visual.UserInterface [Cached] private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Blue); + private readonly OsuSpriteText text; + private readonly TestCommentEditor commentEditor; + private readonly TestCancellableCommentEditor cancellableCommentEditor; + public TestSceneCommentEditor() { + Add(new Container + { + AutoSizeAxes = Axes.Both, + Child = text = new OsuSpriteText + { + Font = OsuFont.GetFont() + } + }); + Add(new FillFlowContainer { Anchor = Anchor.Centre, @@ -35,12 +50,29 @@ namespace osu.Game.Tests.Visual.UserInterface Spacing = new Vector2(0, 20), Children = new Drawable[] { - new TestCommentEditor(), - new TestCancellableCommentEditor() + commentEditor = new TestCommentEditor + { + OnCommit = onCommit + }, + cancellableCommentEditor = new TestCancellableCommentEditor + { + OnCommit = onCommit + } } }); } + private void onCommit(string value) + { + text.Text = $@"Invoked text: {value}"; + + Scheduler.AddDelayed(() => + { + commentEditor.IsLoading = false; + cancellableCommentEditor.IsLoading = false; + }, 500); + } + private class TestCommentEditor : CommentEditor { protected override string FooterText => @"Footer text. And it is pretty long. Cool."; diff --git a/osu.Game/Overlays/Comments/CommentEditor.cs b/osu.Game/Overlays/Comments/CommentEditor.cs index 7adb33663c..34aa036938 100644 --- a/osu.Game/Overlays/Comments/CommentEditor.cs +++ b/osu.Game/Overlays/Comments/CommentEditor.cs @@ -24,6 +24,12 @@ namespace osu.Game.Overlays.Comments public Action OnCommit; + public bool IsLoading + { + get => commitButton.IsLoading; + set => commitButton.IsLoading = value; + } + protected abstract string FooterText { get; } protected abstract string CommitButtonText { get; } @@ -107,7 +113,7 @@ namespace osu.Game.Overlays.Comments textbox.OnCommit += (u, v) => { - if (!commitButton.IsReady.Value) + if (commitButton.IsBlocked.Value) return; commitButton.Click(); @@ -119,7 +125,7 @@ namespace osu.Game.Overlays.Comments { base.LoadComplete(); - current.BindValueChanged(text => commitButton.IsReady.Value = !string.IsNullOrEmpty(text.NewValue), true); + current.BindValueChanged(text => commitButton.IsBlocked.Value = string.IsNullOrEmpty(text.NewValue), true); } private class EditorTextbox : BasicTextBox @@ -156,9 +162,9 @@ namespace osu.Game.Overlays.Comments { private const int duration = 200; - public readonly BindableBool IsReady = new BindableBool(); + public readonly BindableBool IsBlocked = new BindableBool(); - public override bool PropagatePositionalInputSubTree => IsReady.Value && base.PropagatePositionalInputSubTree; + public override bool PropagatePositionalInputSubTree => !IsBlocked.Value && base.PropagatePositionalInputSubTree; protected override IEnumerable EffectTargets => new[] { background }; @@ -186,17 +192,17 @@ namespace osu.Game.Overlays.Comments protected override void LoadComplete() { base.LoadComplete(); - IsReady.BindValueChanged(onReadyStateChanged, true); + IsBlocked.BindValueChanged(onBlockedStateChanged, true); } - private void onReadyStateChanged(ValueChangedEvent isReady) + private void onBlockedStateChanged(ValueChangedEvent isBlocked) { - drawableText.FadeColour(isReady.NewValue ? Color4.White : colourProvider.Foreground1, duration, Easing.OutQuint); + drawableText.FadeColour(isBlocked.NewValue ? colourProvider.Foreground1 : Color4.White, duration, Easing.OutQuint); - if (isReady.NewValue) - background.FadeColour(IsHovered ? HoverColour : IdleColour, duration, Easing.OutQuint); - else + if (isBlocked.NewValue) background.FadeColour(colourProvider.Background5, duration, Easing.OutQuint); + else + background.FadeColour(IsHovered ? HoverColour : IdleColour, duration, Easing.OutQuint); } protected override Drawable CreateContent() => new CircularContainer From 2901ec9f261d8d9963f964ef114f5c3b06063267 Mon Sep 17 00:00:00 2001 From: voidedWarranties Date: Tue, 11 Feb 2020 20:05:26 -0800 Subject: [PATCH 1447/1829] Select specific difficulties using their icons --- osu.Game/Screens/Select/BeatmapCarousel.cs | 7 ++++- .../Select/Carousel/CarouselBeatmapSet.cs | 5 +++- .../Carousel/DrawableCarouselBeatmapSet.cs | 28 +++++++++++++++++-- osu.Game/Screens/Select/SongSelect.cs | 1 + 4 files changed, 37 insertions(+), 4 deletions(-) diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs b/osu.Game/Screens/Select/BeatmapCarousel.cs index 592e26adc2..1777527ced 100644 --- a/osu.Game/Screens/Select/BeatmapCarousel.cs +++ b/osu.Game/Screens/Select/BeatmapCarousel.cs @@ -53,6 +53,11 @@ namespace osu.Game.Screens.Select ///
    public Action SelectionChanged; + /// + /// Raised when user finalises beatmap selection using + /// + public Action SelectionFinalised; + public override bool HandleNonPositionalInput => AllowSelection; public override bool HandlePositionalInput => AllowSelection; @@ -577,7 +582,7 @@ namespace osu.Game.Screens.Select b.Metadata = beatmapSet.Metadata; } - var set = new CarouselBeatmapSet(beatmapSet); + var set = new CarouselBeatmapSet(beatmapSet, this); foreach (var c in set.Beatmaps) { diff --git a/osu.Game/Screens/Select/Carousel/CarouselBeatmapSet.cs b/osu.Game/Screens/Select/Carousel/CarouselBeatmapSet.cs index 301d0d4dae..66ee4d2aee 100644 --- a/osu.Game/Screens/Select/Carousel/CarouselBeatmapSet.cs +++ b/osu.Game/Screens/Select/Carousel/CarouselBeatmapSet.cs @@ -15,8 +15,9 @@ namespace osu.Game.Screens.Select.Carousel public IEnumerable Beatmaps => InternalChildren.OfType(); public BeatmapSetInfo BeatmapSet; + public BeatmapCarousel Carousel; - public CarouselBeatmapSet(BeatmapSetInfo beatmapSet) + public CarouselBeatmapSet(BeatmapSetInfo beatmapSet, BeatmapCarousel carousel) { BeatmapSet = beatmapSet ?? throw new ArgumentNullException(nameof(beatmapSet)); @@ -24,6 +25,8 @@ namespace osu.Game.Screens.Select.Carousel .Where(b => !b.Hidden) .Select(b => new CarouselBeatmap(b)) .ForEach(AddChild); + + Carousel = carousel; } protected override DrawableCarouselItem CreateDrawableRepresentation() => new DrawableCarouselBeatmapSet(this); diff --git a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs index 699e01bca7..536fca9e6f 100644 --- a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs +++ b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs @@ -12,6 +12,7 @@ using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Cursor; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.UserInterface; +using osu.Framework.Input.Events; using osu.Framework.Localisation; using osu.Game.Beatmaps; using osu.Game.Beatmaps.Drawables; @@ -33,10 +34,13 @@ namespace osu.Game.Screens.Select.Carousel private DialogOverlay dialogOverlay; private readonly BeatmapSetInfo beatmapSet; + private BeatmapCarousel carousel; + public DrawableCarouselBeatmapSet(CarouselBeatmapSet set) : base(set) { beatmapSet = set.BeatmapSet; + carousel = set.Carousel; } [BackgroundDependencyLoader(true)] @@ -117,7 +121,7 @@ namespace osu.Game.Screens.Select.Carousel return beatmaps.Count > maximum_difficulty_icons ? (IEnumerable)beatmaps.GroupBy(b => b.Beatmap.Ruleset).Select(group => new FilterableGroupedDifficultyIcon(group.ToList(), group.Key)) - : beatmaps.Select(b => new FilterableDifficultyIcon(b)); + : beatmaps.Select(b => new FilterableDifficultyIcon(b, carousel)); } public MenuItem[] ContextMenuItems @@ -210,12 +214,32 @@ namespace osu.Game.Screens.Select.Carousel { private readonly BindableBool filtered = new BindableBool(); - public FilterableDifficultyIcon(CarouselBeatmap item) + private BeatmapCarousel carousel; + private BeatmapInfo info; + + public FilterableDifficultyIcon(CarouselBeatmap item, BeatmapCarousel carousel) : base(item.Beatmap) { filtered.BindTo(item.Filtered); filtered.ValueChanged += isFiltered => Schedule(() => this.FadeTo(isFiltered.NewValue ? 0.1f : 1, 100)); filtered.TriggerChange(); + + this.carousel = carousel; + info = item.Beatmap; + } + + protected override bool OnClick(ClickEvent e) + { + if(e.AltPressed || carousel.SelectedBeatmap == info) + { + Schedule(() => carousel.SelectionFinalised?.Invoke(info)); + } + else + { + carousel.SelectBeatmap(info); + } + + return true; } } diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index 5037081b5e..bfa693cf3d 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -155,6 +155,7 @@ namespace osu.Game.Screens.Select Origin = Anchor.CentreRight, RelativeSizeAxes = Axes.Both, SelectionChanged = updateSelectedBeatmap, + SelectionFinalised = beatmapInfo => { FinaliseSelection(beatmapInfo); }, BeatmapSetsChanged = carouselBeatmapsLoaded, }, } From e9b51371476ca3adb6a00e9aca26ff5b600dae51 Mon Sep 17 00:00:00 2001 From: voidedWarranties Date: Tue, 11 Feb 2020 21:52:22 -0800 Subject: [PATCH 1448/1829] Remove >-1 limitation by using a separate constructor --- osu.Game/Configuration/SettingSourceAttribute.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/osu.Game/Configuration/SettingSourceAttribute.cs b/osu.Game/Configuration/SettingSourceAttribute.cs index 4dcd2c6122..013621d7b7 100644 --- a/osu.Game/Configuration/SettingSourceAttribute.cs +++ b/osu.Game/Configuration/SettingSourceAttribute.cs @@ -29,12 +29,17 @@ namespace osu.Game.Configuration public string Description { get; } - public int OrderPosition { get; } + public int? OrderPosition { get; } - public SettingSourceAttribute(string label, string description = null, int orderPosition = -1) + public SettingSourceAttribute(string label, string description = null) { Label = label ?? string.Empty; Description = description ?? string.Empty; + } + + public SettingSourceAttribute(string label, string description, int orderPosition) + : this(label, description) + { OrderPosition = orderPosition; } } @@ -129,7 +134,7 @@ namespace osu.Game.Configuration { var original = obj.GetSettingsSourceProperties(); - var orderedRelative = original.Where(attr => attr.Item1.OrderPosition > -1).OrderBy(attr => attr.Item1.OrderPosition); + var orderedRelative = original.Where(attr => attr.Item1.OrderPosition != null).OrderBy(attr => attr.Item1.OrderPosition); var unordered = original.Except(orderedRelative); return orderedRelative.Concat(unordered); From c386589cc09682ccf21db710775aa4bc6420e64e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 12 Feb 2020 19:02:25 +0900 Subject: [PATCH 1449/1829] Reapply current state, not idle --- osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs index e391157b5b..f4ce71b803 100644 --- a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs +++ b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs @@ -116,7 +116,7 @@ namespace osu.Game.Rulesets.Objects.Drawables HitObject.DefaultsApplied += onDefaultsApplied; startTimeBindable = HitObject.StartTimeBindable.GetBoundCopy(); - startTimeBindable.BindValueChanged(_ => updateState(ArmedState.Idle, true)); + startTimeBindable.BindValueChanged(_ => updateState(State.Value, true)); if (HitObject is IHasComboInformation combo) { From f7ee675102c4dc76f6b69711046f4678515988b2 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 12 Feb 2020 19:02:54 +0900 Subject: [PATCH 1450/1829] Clear and revert to negative infinity, avoiding transforms getting left behind on StartTime change --- osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs index f4ce71b803..d3a0b3450f 100644 --- a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs +++ b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs @@ -250,8 +250,8 @@ namespace osu.Game.Rulesets.Objects.Drawables double transformTime = HitObject.StartTime - InitialLifetimeOffset; - base.ApplyTransformsAt(transformTime, true); - base.ClearTransformsAfter(transformTime, true); + base.ApplyTransformsAt(double.MinValue, true); + base.ClearTransformsAfter(double.MinValue, true); using (BeginAbsoluteSequence(transformTime, true)) { From 85a443783755a52cc2d46581644180a264339a2d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 12 Feb 2020 19:03:22 +0900 Subject: [PATCH 1451/1829] Fix editor custom FadeOut causing overlapping issues by removing existing FadeOut --- osu.Game.Rulesets.Osu/Edit/DrawableOsuEditRuleset.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game.Rulesets.Osu/Edit/DrawableOsuEditRuleset.cs b/osu.Game.Rulesets.Osu/Edit/DrawableOsuEditRuleset.cs index 22b4c3e82e..a8719e0aa8 100644 --- a/osu.Game.Rulesets.Osu/Edit/DrawableOsuEditRuleset.cs +++ b/osu.Game.Rulesets.Osu/Edit/DrawableOsuEditRuleset.cs @@ -40,6 +40,8 @@ namespace osu.Game.Rulesets.Osu.Edit if (existing == null) return; + hitObject.RemoveTransform(existing); + using (hitObject.BeginAbsoluteSequence(existing.StartTime)) hitObject.FadeOut(editor_hit_object_fade_out_extension).Expire(); break; From ab7adb3a9798dd0c68cfd4dab5939c36918faf5a Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 12 Feb 2020 13:28:49 +0300 Subject: [PATCH 1452/1829] Adjust button colours --- .../Comments/CancellableCommentEditor.cs | 4 +- osu.Game/Overlays/Comments/CommentEditor.cs | 4 +- osu.Game/Overlays/OverlayColourProvider.cs | 42 +++++++++---------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/osu.Game/Overlays/Comments/CancellableCommentEditor.cs b/osu.Game/Overlays/Comments/CancellableCommentEditor.cs index f58627efb3..c226b7f07f 100644 --- a/osu.Game/Overlays/Comments/CancellableCommentEditor.cs +++ b/osu.Game/Overlays/Comments/CancellableCommentEditor.cs @@ -63,8 +63,8 @@ namespace osu.Game.Overlays.Comments [BackgroundDependencyLoader] private void load(OverlayColourProvider colourProvider) { - IdleColour = colourProvider.GetColour(0.5f, 0.45f); - HoverColour = colourProvider.GetColour(0.5f, 0.6f); + IdleColour = colourProvider.Light4; + HoverColour = colourProvider.Light3; } } } diff --git a/osu.Game/Overlays/Comments/CommentEditor.cs b/osu.Game/Overlays/Comments/CommentEditor.cs index 34aa036938..ac355e9c98 100644 --- a/osu.Game/Overlays/Comments/CommentEditor.cs +++ b/osu.Game/Overlays/Comments/CommentEditor.cs @@ -185,8 +185,8 @@ namespace osu.Game.Overlays.Comments [BackgroundDependencyLoader] private void load() { - IdleColour = colourProvider.GetColour(0.5f, 0.45f); - HoverColour = colourProvider.GetColour(0.5f, 0.6f); + IdleColour = colourProvider.Light4; + HoverColour = colourProvider.Light3; } protected override void LoadComplete() diff --git a/osu.Game/Overlays/OverlayColourProvider.cs b/osu.Game/Overlays/OverlayColourProvider.cs index c0984073e6..9816f313ad 100644 --- a/osu.Game/Overlays/OverlayColourProvider.cs +++ b/osu.Game/Overlays/OverlayColourProvider.cs @@ -16,28 +16,28 @@ namespace osu.Game.Overlays this.colourScheme = colourScheme; } - public Color4 Highlight1 => GetColour(1, 0.7f); - public Color4 Content1 => GetColour(0.4f, 1); - public Color4 Content2 => GetColour(0.4f, 0.9f); - public Color4 Light1 => GetColour(0.4f, 0.8f); - public Color4 Light2 => GetColour(0.4f, 0.75f); - public Color4 Light3 => GetColour(0.4f, 0.7f); - public Color4 Light4 => GetColour(0.4f, 0.5f); - public Color4 Dark1 => GetColour(0.2f, 0.35f); - public Color4 Dark2 => GetColour(0.2f, 0.3f); - public Color4 Dark3 => GetColour(0.2f, 0.25f); - public Color4 Dark4 => GetColour(0.2f, 0.2f); - public Color4 Dark5 => GetColour(0.2f, 0.15f); - public Color4 Dark6 => GetColour(0.2f, 0.1f); - public Color4 Foreground1 => GetColour(0.1f, 0.6f); - public Color4 Background1 => GetColour(0.1f, 0.4f); - public Color4 Background2 => GetColour(0.1f, 0.3f); - public Color4 Background3 => GetColour(0.1f, 0.25f); - public Color4 Background4 => GetColour(0.1f, 0.2f); - public Color4 Background5 => GetColour(0.1f, 0.15f); - public Color4 Background6 => GetColour(0.1f, 0.1f); + public Color4 Highlight1 => getColour(1, 0.7f); + public Color4 Content1 => getColour(0.4f, 1); + public Color4 Content2 => getColour(0.4f, 0.9f); + public Color4 Light1 => getColour(0.4f, 0.8f); + public Color4 Light2 => getColour(0.4f, 0.75f); + public Color4 Light3 => getColour(0.4f, 0.7f); + public Color4 Light4 => getColour(0.4f, 0.5f); + public Color4 Dark1 => getColour(0.2f, 0.35f); + public Color4 Dark2 => getColour(0.2f, 0.3f); + public Color4 Dark3 => getColour(0.2f, 0.25f); + public Color4 Dark4 => getColour(0.2f, 0.2f); + public Color4 Dark5 => getColour(0.2f, 0.15f); + public Color4 Dark6 => getColour(0.2f, 0.1f); + public Color4 Foreground1 => getColour(0.1f, 0.6f); + public Color4 Background1 => getColour(0.1f, 0.4f); + public Color4 Background2 => getColour(0.1f, 0.3f); + public Color4 Background3 => getColour(0.1f, 0.25f); + public Color4 Background4 => getColour(0.1f, 0.2f); + public Color4 Background5 => getColour(0.1f, 0.15f); + public Color4 Background6 => getColour(0.1f, 0.1f); - public Color4 GetColour(float saturation, float lightness) => Color4.FromHsl(new Vector4(getBaseHue(colourScheme), saturation, lightness, 1)); + private Color4 getColour(float saturation, float lightness) => Color4.FromHsl(new Vector4(getBaseHue(colourScheme), saturation, lightness, 1)); // See https://github.com/ppy/osu-web/blob/4218c288292d7c810b619075471eaea8bbb8f9d8/app/helpers.php#L1463 private static float getBaseHue(OverlayColourScheme colourScheme) From 62051c036b1f90bd16f7972ca6b4d9dd13e8d6ce Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Wed, 12 Feb 2020 13:43:56 +0300 Subject: [PATCH 1453/1829] Small CommitButton improvements --- osu.Game/Overlays/Comments/CommentEditor.cs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/osu.Game/Overlays/Comments/CommentEditor.cs b/osu.Game/Overlays/Comments/CommentEditor.cs index ac355e9c98..edd09cc95f 100644 --- a/osu.Game/Overlays/Comments/CommentEditor.cs +++ b/osu.Game/Overlays/Comments/CommentEditor.cs @@ -102,7 +102,11 @@ namespace osu.Game.Overlays.Comments { Anchor = Anchor.CentreRight, Origin = Anchor.CentreRight, - Action = () => OnCommit?.Invoke(current.Value) + Action = () => + { + OnCommit?.Invoke(current.Value); + current.Value = string.Empty; + } } } } @@ -117,7 +121,6 @@ namespace osu.Game.Overlays.Comments return; commitButton.Click(); - current.Value = string.Empty; }; } @@ -173,6 +176,7 @@ namespace osu.Game.Overlays.Comments private OsuSpriteText drawableText; private Box background; + private Box blockedBackground; public CommitButton(string text) { @@ -187,6 +191,7 @@ namespace osu.Game.Overlays.Comments { IdleColour = colourProvider.Light4; HoverColour = colourProvider.Light3; + blockedBackground.Colour = colourProvider.Background5; } protected override void LoadComplete() @@ -198,11 +203,7 @@ namespace osu.Game.Overlays.Comments private void onBlockedStateChanged(ValueChangedEvent isBlocked) { drawableText.FadeColour(isBlocked.NewValue ? colourProvider.Foreground1 : Color4.White, duration, Easing.OutQuint); - - if (isBlocked.NewValue) - background.FadeColour(colourProvider.Background5, duration, Easing.OutQuint); - else - background.FadeColour(IsHovered ? HoverColour : IdleColour, duration, Easing.OutQuint); + background.FadeTo(isBlocked.NewValue ? 0 : 1, duration, Easing.OutQuint); } protected override Drawable CreateContent() => new CircularContainer @@ -212,6 +213,10 @@ namespace osu.Game.Overlays.Comments AutoSizeAxes = Axes.X, Children = new Drawable[] { + blockedBackground = new Box + { + RelativeSizeAxes = Axes.Both + }, background = new Box { RelativeSizeAxes = Axes.Both From e2b3494352b950ad9c0687fcc1b74cd1639ef465 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 13 Feb 2020 00:19:21 +0300 Subject: [PATCH 1454/1829] Remove dependency on load state for DrawableComment.AddReplies --- osu.Game/Overlays/Comments/CommentsPage.cs | 2 +- osu.Game/Overlays/Comments/DrawableComment.cs | 36 +++++++++++++++---- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/osu.Game/Overlays/Comments/CommentsPage.cs b/osu.Game/Overlays/Comments/CommentsPage.cs index eb1044c853..f93cf90e88 100644 --- a/osu.Game/Overlays/Comments/CommentsPage.cs +++ b/osu.Game/Overlays/Comments/CommentsPage.cs @@ -78,7 +78,7 @@ namespace osu.Game.Overlays.Comments if (replies.Any()) { replies.ForEach(c => c.ParentComment = comment); - drawableComment.OnLoadComplete += _ => drawableComment.AddReplies(replies.Select(reply => createCommentWithReplies(reply, commentBundle))); + drawableComment.InitialReplies.AddRange(replies.Select(reply => createCommentWithReplies(reply, commentBundle))); } return drawableComment; diff --git a/osu.Game/Overlays/Comments/DrawableComment.cs b/osu.Game/Overlays/Comments/DrawableComment.cs index b0062ca1e5..7b7f4726f7 100644 --- a/osu.Game/Overlays/Comments/DrawableComment.cs +++ b/osu.Game/Overlays/Comments/DrawableComment.cs @@ -36,6 +36,11 @@ namespace osu.Game.Overlays.Comments public readonly Bindable Sort = new Bindable(); public readonly List LoadedReplies = new List(); + /// + /// s which will be added to this as replies when it will be loaded. + /// + public readonly List InitialReplies = new List(); + private readonly BindableBool childrenExpanded = new BindableBool(true); private int currentPage; @@ -265,6 +270,9 @@ namespace osu.Game.Overlays.Comments Colour = OsuColour.Gray(0.1f) }); } + + if (InitialReplies.Any()) + AddReplies(InitialReplies); } protected override void LoadComplete() @@ -283,14 +291,28 @@ namespace osu.Game.Overlays.Comments public void AddReplies(IEnumerable replies) { - LoadComponentAsync(createRepliesPage(replies), page => + if (LoadState == LoadState.NotLoaded) + throw new NotSupportedException($@"Can't use {nameof(AddReplies)} when not loaded."); + + var page = createRepliesPage(replies); + + if (LoadState == LoadState.Loading) { - var newReplies = replies.Select(reply => reply.Comment); - LoadedReplies.AddRange(newReplies); - deletedCommentsCounter.Count.Value += newReplies.Count(reply => reply.IsDeleted); - childCommentsContainer.Add(page); - updateButtonsState(); - }); + addRepliesPage(page, replies); + return; + } + + LoadComponentAsync(page, loaded => addRepliesPage(loaded, replies)); + } + + private void addRepliesPage(FillFlowContainer page, IEnumerable replies) + { + childCommentsContainer.Add(page); + + var newReplies = replies.Select(reply => reply.Comment); + LoadedReplies.AddRange(newReplies); + deletedCommentsCounter.Count.Value += newReplies.Count(reply => reply.IsDeleted); + updateButtonsState(); } private FillFlowContainer createRepliesPage(IEnumerable replies) => new FillFlowContainer From 5201c1c87bc5f3df3bb7679d52435b4e283979c6 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 13 Feb 2020 02:21:13 +0300 Subject: [PATCH 1455/1829] Use new algorithm for comments tree creation --- .../Online/API/Requests/Responses/Comment.cs | 3 + osu.Game/Overlays/Comments/CommentsPage.cs | 63 ++++++++++++++----- osu.Game/Overlays/Comments/DrawableComment.cs | 7 ++- 3 files changed, 55 insertions(+), 18 deletions(-) diff --git a/osu.Game/Online/API/Requests/Responses/Comment.cs b/osu.Game/Online/API/Requests/Responses/Comment.cs index 05a24cec0e..03ed8916e2 100644 --- a/osu.Game/Online/API/Requests/Responses/Comment.cs +++ b/osu.Game/Online/API/Requests/Responses/Comment.cs @@ -4,6 +4,7 @@ using Newtonsoft.Json; using osu.Game.Users; using System; +using System.Collections.Generic; namespace osu.Game.Online.API.Requests.Responses { @@ -15,6 +16,8 @@ namespace osu.Game.Online.API.Requests.Responses [JsonProperty(@"parent_id")] public long? ParentId { get; set; } + public readonly List ChildComments = new List(); + public Comment ParentComment { get; set; } [JsonProperty(@"user_id")] diff --git a/osu.Game/Overlays/Comments/CommentsPage.cs b/osu.Game/Overlays/Comments/CommentsPage.cs index f93cf90e88..3f63481458 100644 --- a/osu.Game/Overlays/Comments/CommentsPage.cs +++ b/osu.Game/Overlays/Comments/CommentsPage.cs @@ -12,7 +12,6 @@ using System.Linq; using osu.Game.Online.API.Requests; using osu.Game.Online.API; using System.Collections.Generic; -using osu.Framework.Extensions.IEnumerableExtensions; namespace osu.Game.Overlays.Comments { @@ -27,6 +26,7 @@ namespace osu.Game.Overlays.Comments private IAPIProvider api { get; set; } private readonly CommentBundle commentBundle; + private FillFlowContainer flow; public CommentsPage(CommentBundle commentBundle) { @@ -36,8 +36,6 @@ namespace osu.Game.Overlays.Comments [BackgroundDependencyLoader] private void load(OverlayColourProvider colourProvider) { - FillFlowContainer flow; - RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; @@ -62,24 +60,59 @@ namespace osu.Game.Overlays.Comments return; } - commentBundle.Comments.ForEach(c => - { - if (c.IsTopLevel) - flow.Add(createCommentWithReplies(c, commentBundle)); - }); + createBaseTree(commentBundle.Comments); } - private DrawableComment createCommentWithReplies(Comment comment, CommentBundle commentBundle) + private void createBaseTree(List comments) + { + var nodeDictionary = new Dictionary(); + var topLevelNodes = new List(); + var orphanedNodes = new List(); + + foreach (var comment in comments) + { + nodeDictionary.Add(comment.Id, comment); + + if (comment.IsTopLevel) + topLevelNodes.Add(comment); + + var orphanedNodesCopy = new List(orphanedNodes); + + foreach (var orphan in orphanedNodesCopy) + { + if (orphan.ParentId == comment.Id) + { + orphan.ParentComment = comment; + comment.ChildComments.Add(orphan); + orphanedNodes.Remove(orphan); + } + } + + // No need to find parent for top-level comment + if (comment.IsTopLevel) + continue; + + if (nodeDictionary.ContainsKey(comment.ParentId.Value)) + { + comment.ParentComment = nodeDictionary[comment.ParentId.Value]; + nodeDictionary[comment.ParentId.Value].ChildComments.Add(comment); + } + else + orphanedNodes.Add(comment); + } + + foreach (var comment in topLevelNodes) + flow.Add(createCommentWithReplies(comment)); + } + + private DrawableComment createCommentWithReplies(Comment comment) { var drawableComment = createDrawableComment(comment); - var replies = commentBundle.Comments.Where(c => c.ParentId == comment.Id); + var replies = comment.ChildComments; if (replies.Any()) - { - replies.ForEach(c => c.ParentComment = comment); - drawableComment.InitialReplies.AddRange(replies.Select(reply => createCommentWithReplies(reply, commentBundle))); - } + drawableComment.InitialReplies.AddRange(replies.Select(createCommentWithReplies)); return drawableComment; } @@ -100,7 +133,7 @@ namespace osu.Game.Overlays.Comments // We may receive already loaded comments receivedComments.ForEach(c => { - if (drawableComment.LoadedReplies.All(loadedReply => loadedReply.Id != c.Id)) + if (!drawableComment.LoadedReplies.ContainsKey(c.Id)) uniqueComments.Add(c); }); diff --git a/osu.Game/Overlays/Comments/DrawableComment.cs b/osu.Game/Overlays/Comments/DrawableComment.cs index 7b7f4726f7..7334c89eb5 100644 --- a/osu.Game/Overlays/Comments/DrawableComment.cs +++ b/osu.Game/Overlays/Comments/DrawableComment.cs @@ -20,6 +20,7 @@ using osuTK.Graphics; using System.Collections.Generic; using System; using osu.Framework.Graphics.Shapes; +using osu.Framework.Extensions.IEnumerableExtensions; namespace osu.Game.Overlays.Comments { @@ -34,10 +35,10 @@ namespace osu.Game.Overlays.Comments public readonly BindableBool ShowDeleted = new BindableBool(); public readonly Bindable Sort = new Bindable(); - public readonly List LoadedReplies = new List(); + public readonly Dictionary LoadedReplies = new Dictionary(); /// - /// s which will be added to this as replies when it will be loaded. + /// s which will be added to this as replies on initial load. /// public readonly List InitialReplies = new List(); @@ -310,7 +311,7 @@ namespace osu.Game.Overlays.Comments childCommentsContainer.Add(page); var newReplies = replies.Select(reply => reply.Comment); - LoadedReplies.AddRange(newReplies); + newReplies.ForEach(reply => LoadedReplies.Add(reply.Id, reply)); deletedCommentsCounter.Count.Value += newReplies.Count(reply => reply.IsDeleted); updateButtonsState(); } From c6f8e157fd0e5b459ef8b57d3ea8d4d9d95c8581 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 13 Feb 2020 02:37:41 +0300 Subject: [PATCH 1456/1829] Make loadedReplies dictionary private --- osu.Game/Overlays/Comments/CommentsPage.cs | 2 +- osu.Game/Overlays/Comments/DrawableComment.cs | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/Comments/CommentsPage.cs b/osu.Game/Overlays/Comments/CommentsPage.cs index 3f63481458..ebce2177cf 100644 --- a/osu.Game/Overlays/Comments/CommentsPage.cs +++ b/osu.Game/Overlays/Comments/CommentsPage.cs @@ -133,7 +133,7 @@ namespace osu.Game.Overlays.Comments // We may receive already loaded comments receivedComments.ForEach(c => { - if (!drawableComment.LoadedReplies.ContainsKey(c.Id)) + if (!drawableComment.ContainsReply(c.Id)) uniqueComments.Add(c); }); diff --git a/osu.Game/Overlays/Comments/DrawableComment.cs b/osu.Game/Overlays/Comments/DrawableComment.cs index 7334c89eb5..8bc989761e 100644 --- a/osu.Game/Overlays/Comments/DrawableComment.cs +++ b/osu.Game/Overlays/Comments/DrawableComment.cs @@ -35,7 +35,7 @@ namespace osu.Game.Overlays.Comments public readonly BindableBool ShowDeleted = new BindableBool(); public readonly Bindable Sort = new Bindable(); - public readonly Dictionary LoadedReplies = new Dictionary(); + private readonly Dictionary loadedReplies = new Dictionary(); /// /// s which will be added to this as replies on initial load. @@ -290,6 +290,8 @@ namespace osu.Game.Overlays.Comments base.LoadComplete(); } + public bool ContainsReply(long replyId) => loadedReplies.ContainsKey(replyId); + public void AddReplies(IEnumerable replies) { if (LoadState == LoadState.NotLoaded) @@ -311,7 +313,7 @@ namespace osu.Game.Overlays.Comments childCommentsContainer.Add(page); var newReplies = replies.Select(reply => reply.Comment); - newReplies.ForEach(reply => LoadedReplies.Add(reply.Id, reply)); + newReplies.ForEach(reply => loadedReplies.Add(reply.Id, reply)); deletedCommentsCounter.Count.Value += newReplies.Count(reply => reply.IsDeleted); updateButtonsState(); } @@ -326,7 +328,7 @@ namespace osu.Game.Overlays.Comments private void updateButtonsState() { - var loadedReplesCount = LoadedReplies.Count; + var loadedReplesCount = loadedReplies.Count; var hasUnloadedReplies = loadedReplesCount != Comment.RepliesCount; loadMoreCommentsButton.FadeTo(hasUnloadedReplies && loadedReplesCount == 0 ? 1 : 0); From b0db1555650b4c9298e2dab6a78039c5e7e2ca18 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 13 Feb 2020 02:47:13 +0300 Subject: [PATCH 1457/1829] Make replies addition more consistent --- osu.Game/Overlays/Comments/CommentsPage.cs | 6 +++--- osu.Game/Overlays/Comments/DrawableComment.cs | 16 ++++++---------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/osu.Game/Overlays/Comments/CommentsPage.cs b/osu.Game/Overlays/Comments/CommentsPage.cs index ebce2177cf..cab3e49f62 100644 --- a/osu.Game/Overlays/Comments/CommentsPage.cs +++ b/osu.Game/Overlays/Comments/CommentsPage.cs @@ -89,7 +89,7 @@ namespace osu.Game.Overlays.Comments } // No need to find parent for top-level comment - if (comment.IsTopLevel) + if (!comment.ParentId.HasValue) continue; if (nodeDictionary.ContainsKey(comment.ParentId.Value)) @@ -112,7 +112,7 @@ namespace osu.Game.Overlays.Comments var replies = comment.ChildComments; if (replies.Any()) - drawableComment.InitialReplies.AddRange(replies.Select(createCommentWithReplies)); + drawableComment.Replies.AddRange(replies.Select(createCommentWithReplies)); return drawableComment; } @@ -139,7 +139,7 @@ namespace osu.Game.Overlays.Comments uniqueComments.ForEach(c => c.ParentComment = drawableComment.Comment); - drawableComment.AddReplies(uniqueComments.Select(createDrawableComment)); + drawableComment.Replies.AddRange(uniqueComments.Select(createDrawableComment)); } private DrawableComment createDrawableComment(Comment comment) => new DrawableComment(comment) diff --git a/osu.Game/Overlays/Comments/DrawableComment.cs b/osu.Game/Overlays/Comments/DrawableComment.cs index 8bc989761e..7774921f00 100644 --- a/osu.Game/Overlays/Comments/DrawableComment.cs +++ b/osu.Game/Overlays/Comments/DrawableComment.cs @@ -37,10 +37,7 @@ namespace osu.Game.Overlays.Comments public readonly Bindable Sort = new Bindable(); private readonly Dictionary loadedReplies = new Dictionary(); - /// - /// s which will be added to this as replies on initial load. - /// - public readonly List InitialReplies = new List(); + public readonly BindableList Replies = new BindableList(); private readonly BindableBool childrenExpanded = new BindableBool(true); @@ -272,8 +269,10 @@ namespace osu.Game.Overlays.Comments }); } - if (InitialReplies.Any()) - AddReplies(InitialReplies); + Replies.ItemsAdded += onRepliesAdded; + + if (Replies.Any()) + onRepliesAdded(Replies); } protected override void LoadComplete() @@ -292,11 +291,8 @@ namespace osu.Game.Overlays.Comments public bool ContainsReply(long replyId) => loadedReplies.ContainsKey(replyId); - public void AddReplies(IEnumerable replies) + private void onRepliesAdded(IEnumerable replies) { - if (LoadState == LoadState.NotLoaded) - throw new NotSupportedException($@"Can't use {nameof(AddReplies)} when not loaded."); - var page = createRepliesPage(replies); if (LoadState == LoadState.Loading) From a8eb9ba45c71fe67fce625c74776919dea430d82 Mon Sep 17 00:00:00 2001 From: voidedWarranties Date: Wed, 12 Feb 2020 15:55:16 -0800 Subject: [PATCH 1458/1829] Update xmldoc --- osu.Game/Configuration/SettingSourceAttribute.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Configuration/SettingSourceAttribute.cs b/osu.Game/Configuration/SettingSourceAttribute.cs index 013621d7b7..4bdbb5fc24 100644 --- a/osu.Game/Configuration/SettingSourceAttribute.cs +++ b/osu.Game/Configuration/SettingSourceAttribute.cs @@ -18,8 +18,8 @@ namespace osu.Game.Configuration /// Can be used in conjunction with to automatically create UI controls. /// /// - /// All controls with OrderPosition set to an int greater than 0 will be placed first in ascending order. - /// All controls with no OrderPosition will come afterward in default order. + /// All controls with set will be placed first in ascending order. + /// All controls with no will come afterward in default order. /// [MeansImplicitUse] [AttributeUsage(AttributeTargets.Property)] From 0fe41fd50a04c6b481eb8df4ad4b4622afda7f32 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 13 Feb 2020 09:03:48 +0900 Subject: [PATCH 1459/1829] Fix blueprint showing even when mouse outside of container --- .../Edit/Blueprints/HoldNotePlacementBlueprint.cs | 2 +- .../Edit/Blueprints/ManiaPlacementBlueprint.cs | 2 +- .../Blueprints/Sliders/SliderPlacementBlueprint.cs | 2 +- .../Spinners/SpinnerPlacementBlueprint.cs | 2 +- osu.Game/Rulesets/Edit/PlacementBlueprint.cs | 14 ++++++++------ .../Components/ComposeBlueprintContainer.cs | 2 +- 6 files changed, 13 insertions(+), 11 deletions(-) diff --git a/osu.Game.Rulesets.Mania/Edit/Blueprints/HoldNotePlacementBlueprint.cs b/osu.Game.Rulesets.Mania/Edit/Blueprints/HoldNotePlacementBlueprint.cs index bcbc1ee527..7bbde400ea 100644 --- a/osu.Game.Rulesets.Mania/Edit/Blueprints/HoldNotePlacementBlueprint.cs +++ b/osu.Game.Rulesets.Mania/Edit/Blueprints/HoldNotePlacementBlueprint.cs @@ -52,7 +52,7 @@ namespace osu.Game.Rulesets.Mania.Edit.Blueprints { base.UpdatePosition(screenSpacePosition); - if (PlacementBegun) + if (PlacementActive) { var endTime = TimeAt(screenSpacePosition); diff --git a/osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaPlacementBlueprint.cs b/osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaPlacementBlueprint.cs index 362d6d40a8..a3657d3bb9 100644 --- a/osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaPlacementBlueprint.cs +++ b/osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaPlacementBlueprint.cs @@ -62,7 +62,7 @@ namespace osu.Game.Rulesets.Mania.Edit.Blueprints public override void UpdatePosition(Vector2 screenSpacePosition) { - if (!PlacementBegun) + if (!PlacementActive) Column = ColumnAt(screenSpacePosition); if (Column == null) return; diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs index 75d05b9b6c..a780653796 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderPlacementBlueprint.cs @@ -126,7 +126,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders private void beginCurve() { - BeginPlacement(); + BeginPlacement(commitStart: true); setState(PlacementState.Body); } diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Spinners/SpinnerPlacementBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Spinners/SpinnerPlacementBlueprint.cs index 2c125aa7c3..74b563d922 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Spinners/SpinnerPlacementBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Spinners/SpinnerPlacementBlueprint.cs @@ -52,7 +52,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Spinners if (e.Button != MouseButton.Left) return false; - BeginPlacement(); + BeginPlacement(commitStart: true); piece.FadeTo(1f, 150, Easing.OutQuint); isPlacingEnd = true; diff --git a/osu.Game/Rulesets/Edit/PlacementBlueprint.cs b/osu.Game/Rulesets/Edit/PlacementBlueprint.cs index 24fa96e1c5..8a4ed61d00 100644 --- a/osu.Game/Rulesets/Edit/PlacementBlueprint.cs +++ b/osu.Game/Rulesets/Edit/PlacementBlueprint.cs @@ -28,9 +28,9 @@ namespace osu.Game.Rulesets.Edit public event Action StateChanged; /// - /// Whether the is currently being placed, but has not necessarily finished being placed. + /// Whether the is currently mid-placement, but has not necessarily finished being placed. /// - public bool PlacementBegun { get; private set; } + public bool PlacementActive { get; private set; } /// /// The that is being placed. @@ -92,23 +92,25 @@ namespace osu.Game.Rulesets.Edit /// Signals that the placement of has started. /// /// The start time of at the placement point. If null, the current clock time is used. - protected void BeginPlacement(double? startTime = null) + /// Whether this call is committing a value for HitObject.StartTime and continuing with further adjustments. + protected void BeginPlacement(double? startTime = null, bool commitStart = false) { HitObject.StartTime = startTime ?? EditorClock.CurrentTime; placementHandler.BeginPlacement(HitObject); - PlacementBegun = true; + PlacementActive |= commitStart; } /// /// Signals that the placement of has finished. - /// This will destroy this , and add the to the . + /// This will destroy this , and add the HitObject.StartTime to the . /// /// Whether the object should be committed. public void EndPlacement(bool commit) { - if (!PlacementBegun) + if (!PlacementActive) BeginPlacement(); placementHandler.EndPlacement(HitObject, commit); + PlacementActive = false; } /// diff --git a/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs index b257688568..9ebfaef563 100644 --- a/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs @@ -107,7 +107,7 @@ namespace osu.Game.Screens.Edit.Compose.Components { if (composer.CursorInPlacementArea) currentPlacement.State = PlacementState.Shown; - else if (currentPlacement?.PlacementBegun == false) + else if (currentPlacement?.PlacementActive == false) currentPlacement.State = PlacementState.Hidden; } } From 483bbac6fd0a8b27b24a7a6eaad3a2b86b07d01e Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 13 Feb 2020 03:13:56 +0300 Subject: [PATCH 1460/1829] Simplify CommentsPage.onCommentRepliesReceived --- osu.Game/Overlays/Comments/CommentsPage.cs | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/osu.Game/Overlays/Comments/CommentsPage.cs b/osu.Game/Overlays/Comments/CommentsPage.cs index cab3e49f62..5d64313e4f 100644 --- a/osu.Game/Overlays/Comments/CommentsPage.cs +++ b/osu.Game/Overlays/Comments/CommentsPage.cs @@ -126,16 +126,8 @@ namespace osu.Game.Overlays.Comments private void onCommentRepliesReceived(CommentBundle response, DrawableComment drawableComment) { - var receivedComments = response.Comments; - - var uniqueComments = new List(); - // We may receive already loaded comments - receivedComments.ForEach(c => - { - if (!drawableComment.ContainsReply(c.Id)) - uniqueComments.Add(c); - }); + var uniqueComments = response.Comments.Where(c => !drawableComment.ContainsReply(c.Id)).ToList(); uniqueComments.ForEach(c => c.ParentComment = drawableComment.Comment); From b65e839bd26c00507d2038cfca6cc85e2ef218be Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 13 Feb 2020 10:00:09 +0900 Subject: [PATCH 1461/1829] Simplify blueprints by removing visible state --- osu.Game/Rulesets/Edit/PlacementBlueprint.cs | 38 +------------------ .../Components/ComposeBlueprintContainer.cs | 22 ++++++----- 2 files changed, 14 insertions(+), 46 deletions(-) diff --git a/osu.Game/Rulesets/Edit/PlacementBlueprint.cs b/osu.Game/Rulesets/Edit/PlacementBlueprint.cs index 8a4ed61d00..ea77a6091a 100644 --- a/osu.Game/Rulesets/Edit/PlacementBlueprint.cs +++ b/osu.Game/Rulesets/Edit/PlacementBlueprint.cs @@ -1,8 +1,6 @@ // 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 osu.Framework; using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; @@ -20,13 +18,8 @@ namespace osu.Game.Rulesets.Edit /// /// A blueprint which governs the creation of a new to actualisation. /// - public abstract class PlacementBlueprint : CompositeDrawable, IStateful + public abstract class PlacementBlueprint : CompositeDrawable { - /// - /// Invoked when has changed. - /// - public event Action StateChanged; - /// /// Whether the is currently mid-placement, but has not necessarily finished being placed. /// @@ -53,8 +46,6 @@ namespace osu.Game.Rulesets.Edit // This is required to allow the blueprint's position to be updated via OnMouseMove/Handle // on the same frame it is made visible via a PlacementState change. AlwaysPresent = true; - - Alpha = 0; } [BackgroundDependencyLoader] @@ -67,27 +58,6 @@ namespace osu.Game.Rulesets.Edit ApplyDefaultsToHitObject(); } - private PlacementState state; - - public PlacementState State - { - get => state; - set - { - if (state == value) - return; - - state = value; - - if (state == PlacementState.Shown) - Show(); - else - Hide(); - - StateChanged?.Invoke(value); - } - } - /// /// Signals that the placement of has started. /// @@ -144,10 +114,4 @@ namespace osu.Game.Rulesets.Edit } } } - - public enum PlacementState - { - Hidden, - Shown, - } } diff --git a/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs index 9ebfaef563..48c570b8d0 100644 --- a/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs @@ -64,8 +64,7 @@ namespace osu.Game.Screens.Edit.Compose.Components { placementBlueprintContainer.Clear(); - currentPlacement?.EndPlacement(false); - currentPlacement = null; + removePlacement(); var blueprint = CurrentTool?.CreatePlacementBlueprint(); @@ -103,18 +102,14 @@ namespace osu.Game.Screens.Edit.Compose.Components { base.Update(); - if (currentPlacement != null) - { - if (composer.CursorInPlacementArea) - currentPlacement.State = PlacementState.Shown; - else if (currentPlacement?.PlacementActive == false) - currentPlacement.State = PlacementState.Hidden; - } + if (currentPlacement?.PlacementActive == false && !composer.CursorInPlacementArea) + removePlacement(); } protected sealed override SelectionBlueprint CreateBlueprintFor(HitObject hitObject) { var drawable = drawableHitObjects.FirstOrDefault(d => d.HitObject == hitObject); + if (drawable == null) return null; @@ -129,6 +124,14 @@ namespace osu.Game.Screens.Edit.Compose.Components base.AddBlueprintFor(hitObject); } + private void removePlacement() + { + if (currentPlacement == null) return; + + currentPlacement.EndPlacement(false); + currentPlacement = null; + } + private HitObjectCompositionTool currentTool; /// @@ -137,6 +140,7 @@ namespace osu.Game.Screens.Edit.Compose.Components public HitObjectCompositionTool CurrentTool { get => currentTool; + set { if (currentTool == value) From c391a464a5ecffb8fda5ba27cabcc9aa733503fd Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 13 Feb 2020 04:06:34 +0300 Subject: [PATCH 1462/1829] Add tests --- .../UserInterface/TestSceneCommentEditor.cs | 106 +++++++++++++++--- osu.Game/Overlays/Comments/CommentEditor.cs | 13 ++- 2 files changed, 96 insertions(+), 23 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs index e32bf05197..a7888bb0b4 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs @@ -3,18 +3,19 @@ using System; using System.Collections.Generic; +using NUnit.Framework; using osu.Framework.Allocation; +using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Game.Graphics; -using osu.Game.Graphics.Sprites; using osu.Game.Overlays; using osu.Game.Overlays.Comments; using osuTK; +using osuTK.Input; namespace osu.Game.Tests.Visual.UserInterface { - public class TestSceneCommentEditor : OsuTestScene + public class TestSceneCommentEditor : ManualInputManagerTestScene { public override IReadOnlyList RequiredTypes => new[] { @@ -25,20 +26,76 @@ namespace osu.Game.Tests.Visual.UserInterface [Cached] private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Blue); - private readonly OsuSpriteText text; - private readonly TestCommentEditor commentEditor; - private readonly TestCancellableCommentEditor cancellableCommentEditor; + private TestCommentEditor commentEditor; + private TestCancellableCommentEditor cancellableCommentEditor; + private string commitText; + private bool cancelActionFired; - public TestSceneCommentEditor() + [Test] + public void TestCommitViaKeyboard() { - Add(new Container + AddStep("Create", createEditors); + AddStep("Click on textbox", () => { - AutoSizeAxes = Axes.Both, - Child = text = new OsuSpriteText - { - Font = OsuFont.GetFont() - } + InputManager.MoveMouseTo(commentEditor); + InputManager.Click(MouseButton.Left); }); + AddStep("Write something", () => commentEditor.Current.Value = "text"); + AddStep("Click Enter", () => press(Key.Enter)); + AddAssert("Text has been invoked", () => !string.IsNullOrEmpty(commitText)); + AddAssert("Button is loading", () => commentEditor.IsLoading); + } + + [Test] + public void TestCommitViaKeyboardWhenEmpty() + { + AddStep("Create", createEditors); + AddStep("Click on textbox", () => + { + InputManager.MoveMouseTo(commentEditor); + InputManager.Click(MouseButton.Left); + }); + AddStep("Click Enter", () => press(Key.Enter)); + AddAssert("Text not invoked", () => string.IsNullOrEmpty(commitText)); + AddAssert("Button is not loading", () => !commentEditor.IsLoading); + } + + [Test] + public void TestCommitViaButton() + { + AddStep("Create", createEditors); + AddStep("Click on textbox", () => + { + InputManager.MoveMouseTo(commentEditor); + InputManager.Click(MouseButton.Left); + }); + AddStep("Write something", () => commentEditor.Current.Value = "text"); + AddStep("Click on button", () => + { + InputManager.MoveMouseTo(commentEditor.ButtonsContainer); + InputManager.Click(MouseButton.Left); + }); + AddAssert("Text has been invoked", () => !string.IsNullOrEmpty(commitText)); + AddAssert("Button is loading", () => commentEditor.IsLoading); + } + + [Test] + public void TestCancelAction() + { + AddStep("Create", createEditors); + AddStep("Click on cancel button", () => + { + InputManager.MoveMouseTo(cancellableCommentEditor.ButtonsContainer); + InputManager.Click(MouseButton.Left); + }); + AddAssert("Cancel action is fired", () => cancelActionFired); + } + + private void createEditors() + { + Clear(); + commitText = string.Empty; + cancelActionFired = false; Add(new FillFlowContainer { @@ -52,11 +109,12 @@ namespace osu.Game.Tests.Visual.UserInterface { commentEditor = new TestCommentEditor { - OnCommit = onCommit + OnCommit = onCommit, }, cancellableCommentEditor = new TestCancellableCommentEditor { - OnCommit = onCommit + OnCommit = onCommit, + OnCancel = onCancel } } }); @@ -64,17 +122,29 @@ namespace osu.Game.Tests.Visual.UserInterface private void onCommit(string value) { - text.Text = $@"Invoked text: {value}"; + commitText = value; Scheduler.AddDelayed(() => { commentEditor.IsLoading = false; cancellableCommentEditor.IsLoading = false; - }, 500); + }, 1000); + } + + private void onCancel() => cancelActionFired = true; + + private void press(Key key) + { + InputManager.PressKey(key); + InputManager.ReleaseKey(key); } private class TestCommentEditor : CommentEditor { + public new Bindable Current => base.Current; + + public new FillFlowContainer ButtonsContainer => base.ButtonsContainer; + protected override string FooterText => @"Footer text. And it is pretty long. Cool."; protected override string CommitButtonText => @"Commit"; @@ -84,6 +154,8 @@ namespace osu.Game.Tests.Visual.UserInterface private class TestCancellableCommentEditor : CancellableCommentEditor { + public new FillFlowContainer ButtonsContainer => base.ButtonsContainer; + protected override string FooterText => @"Wow, another one. Sicc"; protected override string CommitButtonText => @"Save"; diff --git a/osu.Game/Overlays/Comments/CommentEditor.cs b/osu.Game/Overlays/Comments/CommentEditor.cs index edd09cc95f..765e5e228c 100644 --- a/osu.Game/Overlays/Comments/CommentEditor.cs +++ b/osu.Game/Overlays/Comments/CommentEditor.cs @@ -38,7 +38,7 @@ namespace osu.Game.Overlays.Comments protected FillFlowContainer ButtonsContainer; - private readonly Bindable current = new Bindable(); + protected readonly Bindable Current = new Bindable(); private CommitButton commitButton; @@ -73,7 +73,7 @@ namespace osu.Game.Overlays.Comments Height = 40, RelativeSizeAxes = Axes.X, PlaceholderText = TextboxPlaceholderText, - Current = current + Current = Current }, new Container { @@ -104,8 +104,8 @@ namespace osu.Game.Overlays.Comments Origin = Anchor.CentreRight, Action = () => { - OnCommit?.Invoke(current.Value); - current.Value = string.Empty; + OnCommit?.Invoke(Current.Value); + Current.Value = string.Empty; } } } @@ -128,7 +128,7 @@ namespace osu.Game.Overlays.Comments { base.LoadComplete(); - current.BindValueChanged(text => commitButton.IsBlocked.Value = string.IsNullOrEmpty(text.NewValue), true); + Current.BindValueChanged(text => commitButton.IsBlocked.Value = string.IsNullOrEmpty(text.NewValue), true); } private class EditorTextbox : BasicTextBox @@ -219,7 +219,8 @@ namespace osu.Game.Overlays.Comments }, background = new Box { - RelativeSizeAxes = Axes.Both + RelativeSizeAxes = Axes.Both, + Alpha = 0 }, drawableText = new OsuSpriteText { From 2b6f99d4043adef41cd9740a72bd84db1d37b17f Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 13 Feb 2020 10:05:50 +0900 Subject: [PATCH 1463/1829] Standardise placement blueprint creation and destruction --- .../Components/ComposeBlueprintContainer.cs | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs index 48c570b8d0..8b47ea2c6c 100644 --- a/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs @@ -62,19 +62,8 @@ namespace osu.Game.Screens.Edit.Compose.Components /// private void refreshTool() { - placementBlueprintContainer.Clear(); - removePlacement(); - - var blueprint = CurrentTool?.CreatePlacementBlueprint(); - - if (blueprint != null) - { - placementBlueprintContainer.Child = currentPlacement = blueprint; - - // Fixes a 1-frame position discrepancy due to the first mouse move event happening in the next frame - updatePlacementPosition(inputManager.CurrentState.Mouse.Position); - } + createPlacement(); } private void updatePlacementPosition(Vector2 screenSpacePosition) @@ -102,7 +91,9 @@ namespace osu.Game.Screens.Edit.Compose.Components { base.Update(); - if (currentPlacement?.PlacementActive == false && !composer.CursorInPlacementArea) + if (composer.CursorInPlacementArea) + createPlacement(); + else if (currentPlacement?.PlacementActive == false) removePlacement(); } @@ -124,11 +115,27 @@ namespace osu.Game.Screens.Edit.Compose.Components base.AddBlueprintFor(hitObject); } + private void createPlacement() + { + if (currentPlacement != null) return; + + var blueprint = CurrentTool?.CreatePlacementBlueprint(); + + if (blueprint != null) + { + placementBlueprintContainer.Child = currentPlacement = blueprint; + + // Fixes a 1-frame position discrepancy due to the first mouse move event happening in the next frame + updatePlacementPosition(inputManager.CurrentState.Mouse.Position); + } + } + private void removePlacement() { if (currentPlacement == null) return; currentPlacement.EndPlacement(false); + currentPlacement.Expire(); currentPlacement = null; } From e34a24a063dc7e67a48dc16abe1463012e4133ae Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 13 Feb 2020 10:45:16 +0900 Subject: [PATCH 1464/1829] Update placement blueprint more often for better display --- .../Components/ComposeBlueprintContainer.cs | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs index 8b47ea2c6c..7087eac6b6 100644 --- a/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs @@ -76,17 +76,6 @@ namespace osu.Game.Screens.Edit.Compose.Components #endregion - protected override bool OnMouseMove(MouseMoveEvent e) - { - if (currentPlacement != null) - { - updatePlacementPosition(e.ScreenSpaceMousePosition); - return true; - } - - return base.OnMouseMove(e); - } - protected override void Update() { base.Update(); @@ -95,6 +84,9 @@ namespace osu.Game.Screens.Edit.Compose.Components createPlacement(); else if (currentPlacement?.PlacementActive == false) removePlacement(); + + if (currentPlacement != null) + updatePlacementPosition(inputManager.CurrentState.Mouse.Position); } protected sealed override SelectionBlueprint CreateBlueprintFor(HitObject hitObject) From b1b2e4a0419ef5cb5f45b7ad5ccb0b3b97507b1d Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 13 Feb 2020 04:50:04 +0300 Subject: [PATCH 1465/1829] Simplify parent comment assignment --- osu.Game/Overlays/Comments/CommentsPage.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/osu.Game/Overlays/Comments/CommentsPage.cs b/osu.Game/Overlays/Comments/CommentsPage.cs index 5d64313e4f..43a223be8b 100644 --- a/osu.Game/Overlays/Comments/CommentsPage.cs +++ b/osu.Game/Overlays/Comments/CommentsPage.cs @@ -63,9 +63,10 @@ namespace osu.Game.Overlays.Comments createBaseTree(commentBundle.Comments); } + private readonly Dictionary nodeDictionary = new Dictionary(); + private void createBaseTree(List comments) { - var nodeDictionary = new Dictionary(); var topLevelNodes = new List(); var orphanedNodes = new List(); @@ -82,7 +83,6 @@ namespace osu.Game.Overlays.Comments { if (orphan.ParentId == comment.Id) { - orphan.ParentComment = comment; comment.ChildComments.Add(orphan); orphanedNodes.Remove(orphan); } @@ -93,10 +93,7 @@ namespace osu.Game.Overlays.Comments continue; if (nodeDictionary.ContainsKey(comment.ParentId.Value)) - { - comment.ParentComment = nodeDictionary[comment.ParentId.Value]; nodeDictionary[comment.ParentId.Value].ChildComments.Add(comment); - } else orphanedNodes.Add(comment); } @@ -107,6 +104,9 @@ namespace osu.Game.Overlays.Comments private DrawableComment createCommentWithReplies(Comment comment) { + if (comment.ParentId.HasValue) + comment.ParentComment = nodeDictionary[comment.ParentId.Value]; + var drawableComment = createDrawableComment(comment); var replies = comment.ChildComments; From 487dd47c9e9496969921ed90986297c1f4318422 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 13 Feb 2020 11:14:09 +0900 Subject: [PATCH 1466/1829] Add mouse down repeat support to timeline zoom buttons --- .../Components/Timeline/TimelineButton.cs | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineButton.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineButton.cs index 8865bf31ea..5550c6a748 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineButton.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineButton.cs @@ -6,10 +6,13 @@ using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; +using osu.Framework.Input.Events; +using osu.Framework.Threading; using osu.Game.Graphics; using osu.Game.Graphics.UserInterface; using osuTK; using osuTK.Graphics; +using osuTK.Input; namespace osu.Game.Screens.Edit.Compose.Components.Timeline { @@ -52,6 +55,45 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline HoverColour = OsuColour.Gray(0.25f); FlashColour = OsuColour.Gray(0.5f); } + + private ScheduledDelegate repeatSchedule; + + /// + /// The initial delay before mouse down repeat begins. + /// + private const int repeat_initial_delay = 250; + + /// + /// The delay between mouse down repeats after the initial repeat. + /// + private const int repeat_tick_rate = 70; + + protected override bool OnClick(ClickEvent e) + { + // don't actuate a click since we are manually handling repeats. + return true; + } + + protected override bool OnMouseDown(MouseDownEvent e) + { + if (e.Button == MouseButton.Left) + { + Action clickAction = () => base.OnClick(new ClickEvent(e.CurrentState, e.Button)); + + // run once for initial down + clickAction(); + + Scheduler.Add(repeatSchedule = new ScheduledDelegate(clickAction, Clock.CurrentTime + repeat_initial_delay, repeat_tick_rate)); + } + + return base.OnMouseDown(e); + } + + protected override void OnMouseUp(MouseUpEvent e) + { + repeatSchedule?.Cancel(); + base.OnMouseUp(e); + } } } } From 03bf10f9a24a7a5b259e13435a9979c4e32adfea Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 13 Feb 2020 11:15:00 +0900 Subject: [PATCH 1467/1829] Remove unused using statement --- .../Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs index 7087eac6b6..0eb77a8561 100644 --- a/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/ComposeBlueprintContainer.cs @@ -7,7 +7,6 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Input; -using osu.Framework.Input.Events; using osu.Game.Rulesets.Edit; using osu.Game.Rulesets.Edit.Tools; using osu.Game.Rulesets.Objects; From 118f862342dd5903cfdea4661c15302ca6b361f1 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 13 Feb 2020 12:02:10 +0900 Subject: [PATCH 1468/1829] Fix not being able to seek using scroll wheel in timeline while playing track --- .../Components/Timeline/ZoomableScrollContainer.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/ZoomableScrollContainer.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/ZoomableScrollContainer.cs index 7ce8a751e0..baaad63e57 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/ZoomableScrollContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/ZoomableScrollContainer.cs @@ -2,10 +2,12 @@ // See the LICENCE file in the repository root for full licence text. using System; +using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Transforms; using osu.Framework.Input.Events; +using osu.Framework.Timing; using osu.Framework.Utils; using osu.Game.Graphics.Containers; using osuTK; @@ -30,6 +32,9 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline private float currentZoom = 1; + [Resolved] + private IFrameBasedClock editorClock { get; set; } + public ZoomableScrollContainer() : base(Direction.Horizontal) { @@ -104,8 +109,15 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline protected override bool OnScroll(ScrollEvent e) { if (e.IsPrecise) + { + // can't handle scroll correctly while playing. + // the editor will handle this case for us. + if (editorClock.IsRunning) + return false; + // for now, we don't support zoom when using a precision scroll device. this needs gesture support. return base.OnScroll(e); + } setZoomTarget(zoomTarget + e.ScrollDelta.Y, zoomedContent.ToLocalSpace(e.ScreenSpaceMousePosition).X); return true; From b126c002924788acd7dd62cc410821db081da0fa Mon Sep 17 00:00:00 2001 From: voidedWarranties Date: Wed, 12 Feb 2020 19:05:08 -0800 Subject: [PATCH 1469/1829] Use dependency loader to get SongSelect instance --- osu.Game/Screens/Select/BeatmapCarousel.cs | 7 +---- .../Select/Carousel/CarouselBeatmapSet.cs | 5 +--- .../Carousel/DrawableCarouselBeatmapSet.cs | 27 ++++++++++--------- osu.Game/Screens/Select/SongSelect.cs | 3 +-- 4 files changed, 18 insertions(+), 24 deletions(-) diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs b/osu.Game/Screens/Select/BeatmapCarousel.cs index 1777527ced..592e26adc2 100644 --- a/osu.Game/Screens/Select/BeatmapCarousel.cs +++ b/osu.Game/Screens/Select/BeatmapCarousel.cs @@ -53,11 +53,6 @@ namespace osu.Game.Screens.Select /// public Action SelectionChanged; - /// - /// Raised when user finalises beatmap selection using - /// - public Action SelectionFinalised; - public override bool HandleNonPositionalInput => AllowSelection; public override bool HandlePositionalInput => AllowSelection; @@ -582,7 +577,7 @@ namespace osu.Game.Screens.Select b.Metadata = beatmapSet.Metadata; } - var set = new CarouselBeatmapSet(beatmapSet, this); + var set = new CarouselBeatmapSet(beatmapSet); foreach (var c in set.Beatmaps) { diff --git a/osu.Game/Screens/Select/Carousel/CarouselBeatmapSet.cs b/osu.Game/Screens/Select/Carousel/CarouselBeatmapSet.cs index 66ee4d2aee..301d0d4dae 100644 --- a/osu.Game/Screens/Select/Carousel/CarouselBeatmapSet.cs +++ b/osu.Game/Screens/Select/Carousel/CarouselBeatmapSet.cs @@ -15,9 +15,8 @@ namespace osu.Game.Screens.Select.Carousel public IEnumerable Beatmaps => InternalChildren.OfType(); public BeatmapSetInfo BeatmapSet; - public BeatmapCarousel Carousel; - public CarouselBeatmapSet(BeatmapSetInfo beatmapSet, BeatmapCarousel carousel) + public CarouselBeatmapSet(BeatmapSetInfo beatmapSet) { BeatmapSet = beatmapSet ?? throw new ArgumentNullException(nameof(beatmapSet)); @@ -25,8 +24,6 @@ namespace osu.Game.Screens.Select.Carousel .Where(b => !b.Hidden) .Select(b => new CarouselBeatmap(b)) .ForEach(AddChild); - - Carousel = carousel; } protected override DrawableCarouselItem CreateDrawableRepresentation() => new DrawableCarouselBeatmapSet(this); diff --git a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs index 536fca9e6f..fd13bdc3eb 100644 --- a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs +++ b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs @@ -34,18 +34,20 @@ namespace osu.Game.Screens.Select.Carousel private DialogOverlay dialogOverlay; private readonly BeatmapSetInfo beatmapSet; - private BeatmapCarousel carousel; + private SongSelect songSelect; public DrawableCarouselBeatmapSet(CarouselBeatmapSet set) : base(set) { beatmapSet = set.BeatmapSet; - carousel = set.Carousel; } [BackgroundDependencyLoader(true)] - private void load(BeatmapManager manager, BeatmapSetOverlay beatmapOverlay, DialogOverlay overlay) + private void load(SongSelect songSelect, BeatmapManager manager, BeatmapSetOverlay beatmapOverlay, DialogOverlay overlay) { + if(songSelect != null) + this.songSelect = songSelect; + restoreHiddenRequested = s => s.Beatmaps.ForEach(manager.Restore); dialogOverlay = overlay; if (beatmapOverlay != null) @@ -121,7 +123,7 @@ namespace osu.Game.Screens.Select.Carousel return beatmaps.Count > maximum_difficulty_icons ? (IEnumerable)beatmaps.GroupBy(b => b.Beatmap.Ruleset).Select(group => new FilterableGroupedDifficultyIcon(group.ToList(), group.Key)) - : beatmaps.Select(b => new FilterableDifficultyIcon(b, carousel)); + : beatmaps.Select(b => new FilterableDifficultyIcon(b, songSelect, songSelect.Carousel)); } public MenuItem[] ContextMenuItems @@ -214,32 +216,33 @@ namespace osu.Game.Screens.Select.Carousel { private readonly BindableBool filtered = new BindableBool(); + private SongSelect songSelect; private BeatmapCarousel carousel; private BeatmapInfo info; - public FilterableDifficultyIcon(CarouselBeatmap item, BeatmapCarousel carousel) + public FilterableDifficultyIcon(CarouselBeatmap item, SongSelect songSelect, BeatmapCarousel carousel) : base(item.Beatmap) { filtered.BindTo(item.Filtered); filtered.ValueChanged += isFiltered => Schedule(() => this.FadeTo(isFiltered.NewValue ? 0.1f : 1, 100)); filtered.TriggerChange(); + this.songSelect = songSelect; this.carousel = carousel; info = item.Beatmap; } protected override bool OnClick(ClickEvent e) { - if(e.AltPressed || carousel.SelectedBeatmap == info) + if(!filtered.Value) { - Schedule(() => carousel.SelectionFinalised?.Invoke(info)); - } - else - { - carousel.SelectBeatmap(info); + carousel?.SelectBeatmap(info); + + if (e.AltPressed) + songSelect?.FinaliseSelection(); } - return true; + return base.OnClick(e); } } diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index bfa693cf3d..463a17989a 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -80,7 +80,7 @@ namespace osu.Game.Screens.Select protected override BackgroundScreen CreateBackground() => new BackgroundScreenBeatmap(Beatmap.Value); - protected BeatmapCarousel Carousel { get; private set; } + public BeatmapCarousel Carousel { get; private set; } private BeatmapInfoWedge beatmapInfoWedge; private DialogOverlay dialogOverlay; @@ -155,7 +155,6 @@ namespace osu.Game.Screens.Select Origin = Anchor.CentreRight, RelativeSizeAxes = Axes.Both, SelectionChanged = updateSelectedBeatmap, - SelectionFinalised = beatmapInfo => { FinaliseSelection(beatmapInfo); }, BeatmapSetsChanged = carouselBeatmapsLoaded, }, } From f8b69fe63285186a2e6b661e875353696e86ce1f Mon Sep 17 00:00:00 2001 From: voidedWarranties Date: Wed, 12 Feb 2020 20:11:39 -0800 Subject: [PATCH 1470/1829] Remove unnecessary carousel variable, fix code formatting --- .../Carousel/DrawableCarouselBeatmapSet.cs | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs index fd13bdc3eb..80dae575ff 100644 --- a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs +++ b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs @@ -45,7 +45,7 @@ namespace osu.Game.Screens.Select.Carousel [BackgroundDependencyLoader(true)] private void load(SongSelect songSelect, BeatmapManager manager, BeatmapSetOverlay beatmapOverlay, DialogOverlay overlay) { - if(songSelect != null) + if (songSelect != null) this.songSelect = songSelect; restoreHiddenRequested = s => s.Beatmaps.ForEach(manager.Restore); @@ -123,7 +123,7 @@ namespace osu.Game.Screens.Select.Carousel return beatmaps.Count > maximum_difficulty_icons ? (IEnumerable)beatmaps.GroupBy(b => b.Beatmap.Ruleset).Select(group => new FilterableGroupedDifficultyIcon(group.ToList(), group.Key)) - : beatmaps.Select(b => new FilterableDifficultyIcon(b, songSelect, songSelect.Carousel)); + : beatmaps.Select(b => new FilterableDifficultyIcon(b, songSelect)); } public MenuItem[] ContextMenuItems @@ -216,11 +216,10 @@ namespace osu.Game.Screens.Select.Carousel { private readonly BindableBool filtered = new BindableBool(); - private SongSelect songSelect; - private BeatmapCarousel carousel; - private BeatmapInfo info; + private readonly SongSelect songSelect; + private readonly BeatmapInfo info; - public FilterableDifficultyIcon(CarouselBeatmap item, SongSelect songSelect, BeatmapCarousel carousel) + public FilterableDifficultyIcon(CarouselBeatmap item, SongSelect songSelect) : base(item.Beatmap) { filtered.BindTo(item.Filtered); @@ -228,15 +227,14 @@ namespace osu.Game.Screens.Select.Carousel filtered.TriggerChange(); this.songSelect = songSelect; - this.carousel = carousel; info = item.Beatmap; } protected override bool OnClick(ClickEvent e) { - if(!filtered.Value) + if (!filtered.Value) { - carousel?.SelectBeatmap(info); + songSelect?.Carousel.SelectBeatmap(info); if (e.AltPressed) songSelect?.FinaliseSelection(); From 045d1f9c5b8db2974b53f8157bad41e0d2947e9c Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 13 Feb 2020 13:34:59 +0900 Subject: [PATCH 1471/1829] Disallow seeking on osu!direct download progress bars --- osu.Game/Overlays/Direct/DownloadProgressBar.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Direct/DownloadProgressBar.cs b/osu.Game/Overlays/Direct/DownloadProgressBar.cs index a6cefaae84..9a8644efd2 100644 --- a/osu.Game/Overlays/Direct/DownloadProgressBar.cs +++ b/osu.Game/Overlays/Direct/DownloadProgressBar.cs @@ -19,7 +19,7 @@ namespace osu.Game.Overlays.Direct public DownloadProgressBar(BeatmapSetInfo beatmapSet) : base(beatmapSet) { - AddInternal(progressBar = new ProgressBar + AddInternal(progressBar = new InteractionDisabledProgressBar { Height = 0, Alpha = 0, @@ -64,5 +64,11 @@ namespace osu.Game.Overlays.Direct } }, true); } + + private class InteractionDisabledProgressBar : ProgressBar + { + public override bool HandlePositionalInput => false; + public override bool HandleNonPositionalInput => false; + } } } From 6f7196b0b81c4063c43006f655090e434df259a9 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Wed, 12 Feb 2020 19:52:47 +0900 Subject: [PATCH 1472/1829] Make beatmap detail area abstractable --- osu.Game/Configuration/OsuConfigManager.cs | 2 +- osu.Game/Screens/Select/BeatmapDetailArea.cs | 106 +++++++------ .../Select/BeatmapDetailAreaDetailTabItem.cs | 10 ++ .../BeatmapDetailAreaLeaderboardTabItem.cs | 22 +++ .../Select/BeatmapDetailAreaTabControl.cs | 51 ++++--- .../Select/BeatmapDetailAreaTabItem.cs | 35 +++++ osu.Game/Screens/Select/MatchSongSelect.cs | 2 + .../Screens/Select/PlayBeatmapDetailArea.cs | 143 ++++++++++++++++++ osu.Game/Screens/Select/PlaySongSelect.cs | 4 + osu.Game/Screens/Select/SongSelect.cs | 20 +-- 10 files changed, 318 insertions(+), 77 deletions(-) create mode 100644 osu.Game/Screens/Select/BeatmapDetailAreaDetailTabItem.cs create mode 100644 osu.Game/Screens/Select/BeatmapDetailAreaLeaderboardTabItem.cs create mode 100644 osu.Game/Screens/Select/BeatmapDetailAreaTabItem.cs create mode 100644 osu.Game/Screens/Select/PlayBeatmapDetailArea.cs diff --git a/osu.Game/Configuration/OsuConfigManager.cs b/osu.Game/Configuration/OsuConfigManager.cs index 6ae3c7ac64..ce959e9057 100644 --- a/osu.Game/Configuration/OsuConfigManager.cs +++ b/osu.Game/Configuration/OsuConfigManager.cs @@ -20,7 +20,7 @@ namespace osu.Game.Configuration Set(OsuSetting.Ruleset, 0, 0, int.MaxValue); Set(OsuSetting.Skin, 0, -1, int.MaxValue); - Set(OsuSetting.BeatmapDetailTab, BeatmapDetailTab.Details); + Set(OsuSetting.BeatmapDetailTab, PlayBeatmapDetailArea.TabType.Details); Set(OsuSetting.ShowConvertedBeatmaps, true); Set(OsuSetting.DisplayStarsMinimum, 0.0, 0, 10, 0.1); diff --git a/osu.Game/Screens/Select/BeatmapDetailArea.cs b/osu.Game/Screens/Select/BeatmapDetailArea.cs index 71733c9f06..1aae0cc243 100644 --- a/osu.Game/Screens/Select/BeatmapDetailArea.cs +++ b/osu.Game/Screens/Select/BeatmapDetailArea.cs @@ -2,37 +2,44 @@ // See the LICENCE file in the repository root for full licence text. using System; +using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Game.Beatmaps; -using osu.Game.Screens.Select.Leaderboards; namespace osu.Game.Screens.Select { - public class BeatmapDetailArea : Container + public abstract class BeatmapDetailArea : Container { private const float details_padding = 10; - private readonly Container content; - protected override Container Content => content; - - public readonly BeatmapDetails Details; - public readonly BeatmapLeaderboard Leaderboard; - private WorkingBeatmap beatmap; - public WorkingBeatmap Beatmap + public virtual WorkingBeatmap Beatmap { get => beatmap; set { beatmap = value; - Details.Beatmap = beatmap?.BeatmapInfo; - Leaderboard.Beatmap = beatmap is DummyWorkingBeatmap ? null : beatmap?.BeatmapInfo; + + Details.Beatmap = value?.BeatmapInfo; } } - public BeatmapDetailArea() + public readonly BeatmapDetails Details; + + protected Bindable CurrentTab + { + get => tabControl.Current; + set => tabControl.Current = value; + } + + private readonly Container content; + protected override Container Content => content; + + private readonly BeatmapDetailAreaTabControl tabControl; + + protected BeatmapDetailArea() { AddRangeInternal(new Drawable[] { @@ -40,51 +47,62 @@ namespace osu.Game.Screens.Select { RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { Top = BeatmapDetailAreaTabControl.HEIGHT }, - }, - new BeatmapDetailAreaTabControl - { - RelativeSizeAxes = Axes.X, - OnFilter = (tab, mods) => + Child = Details = new BeatmapDetails { - Leaderboard.FilterMods = mods; - - switch (tab) - { - case BeatmapDetailTab.Details: - Details.Show(); - Leaderboard.Hide(); - break; - - default: - Details.Hide(); - Leaderboard.Scope = (BeatmapLeaderboardScope)tab - 1; - Leaderboard.Show(); - break; - } - }, + RelativeSizeAxes = Axes.X, + Alpha = 0, + Margin = new MarginPadding { Top = details_padding }, + } }, - }); - - AddRange(new Drawable[] - { - Details = new BeatmapDetails + tabControl = new BeatmapDetailAreaTabControl { RelativeSizeAxes = Axes.X, - Alpha = 0, - Margin = new MarginPadding { Top = details_padding }, + TabItems = CreateTabItems(), + OnFilter = OnTabChanged, }, - Leaderboard = new BeatmapLeaderboard - { - RelativeSizeAxes = Axes.Both, - } }); } + /// + /// Refreshes the currently-displayed details. + /// + public virtual void Refresh() + { + } + protected override void UpdateAfterChildren() { base.UpdateAfterChildren(); Details.Height = Math.Min(DrawHeight - details_padding * 3 - BeatmapDetailAreaTabControl.HEIGHT, 450); } + + /// + /// Invoked when a new tab is selected. + /// + /// The tab that was selected. + /// Whether the currently-selected mods should be considered. + protected virtual void OnTabChanged(BeatmapDetailAreaTabItem tab, bool selectedMods) + { + switch (tab) + { + case BeatmapDetailAreaDetailTabItem _: + Details.Show(); + break; + + default: + Details.Hide(); + break; + } + } + + /// + /// Creates the tabs to be displayed. + /// + /// The tabs. + protected virtual BeatmapDetailAreaTabItem[] CreateTabItems() => new BeatmapDetailAreaTabItem[] + { + new BeatmapDetailAreaDetailTabItem(), + }; } } diff --git a/osu.Game/Screens/Select/BeatmapDetailAreaDetailTabItem.cs b/osu.Game/Screens/Select/BeatmapDetailAreaDetailTabItem.cs new file mode 100644 index 0000000000..7376cb4708 --- /dev/null +++ b/osu.Game/Screens/Select/BeatmapDetailAreaDetailTabItem.cs @@ -0,0 +1,10 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +namespace osu.Game.Screens.Select +{ + public class BeatmapDetailAreaDetailTabItem : BeatmapDetailAreaTabItem + { + public override string Name => "Details"; + } +} diff --git a/osu.Game/Screens/Select/BeatmapDetailAreaLeaderboardTabItem.cs b/osu.Game/Screens/Select/BeatmapDetailAreaLeaderboardTabItem.cs new file mode 100644 index 0000000000..066944e9d2 --- /dev/null +++ b/osu.Game/Screens/Select/BeatmapDetailAreaLeaderboardTabItem.cs @@ -0,0 +1,22 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System; + +namespace osu.Game.Screens.Select +{ + public class BeatmapDetailAreaLeaderboardTabItem : BeatmapDetailAreaTabItem + where TScope : Enum + { + public override string Name => Scope.ToString(); + + public override bool FilterableByMods => true; + + public readonly TScope Scope; + + public BeatmapDetailAreaLeaderboardTabItem(TScope scope) + { + Scope = scope; + } + } +} diff --git a/osu.Game/Screens/Select/BeatmapDetailAreaTabControl.cs b/osu.Game/Screens/Select/BeatmapDetailAreaTabControl.cs index 19ecdb6dbf..f4bf1ab059 100644 --- a/osu.Game/Screens/Select/BeatmapDetailAreaTabControl.cs +++ b/osu.Game/Screens/Select/BeatmapDetailAreaTabControl.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System; +using System.Collections.Generic; using osuTK.Graphics; using osu.Framework.Allocation; using osu.Framework.Bindables; @@ -18,14 +19,25 @@ namespace osu.Game.Screens.Select public class BeatmapDetailAreaTabControl : Container { public const float HEIGHT = 24; + + public Bindable Current + { + get => tabs.Current; + set => tabs.Current = value; + } + + public Action OnFilter; //passed the selected tab and if mods is checked + + public IReadOnlyList TabItems + { + get => tabs.Items; + set => tabs.Items = value; + } + private readonly OsuTabControlCheckbox modsCheckbox; - private readonly OsuTabControl tabs; + private readonly OsuTabControl tabs; private readonly Container tabsContainer; - public Action OnFilter; //passed the selected tab and if mods is checked - - private Bindable selectedTab; - public BeatmapDetailAreaTabControl() { Height = HEIGHT; @@ -43,7 +55,7 @@ namespace osu.Game.Screens.Select tabsContainer = new Container { RelativeSizeAxes = Axes.Both, - Child = tabs = new OsuTabControl + Child = tabs = new OsuTabControl { Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, @@ -68,29 +80,22 @@ namespace osu.Game.Screens.Select private void load(OsuColour colour, OsuConfigManager config) { modsCheckbox.AccentColour = tabs.AccentColour = colour.YellowLight; - - selectedTab = config.GetBindable(OsuSetting.BeatmapDetailTab); - - tabs.Current.BindTo(selectedTab); - tabs.Current.TriggerChange(); } private void invokeOnFilter() { OnFilter?.Invoke(tabs.Current.Value, modsCheckbox.Current.Value); - modsCheckbox.FadeTo(tabs.Current.Value == BeatmapDetailTab.Details ? 0 : 1, 200, Easing.OutQuint); - - tabsContainer.Padding = new MarginPadding { Right = tabs.Current.Value == BeatmapDetailTab.Details ? 0 : 100 }; + if (tabs.Current.Value.FilterableByMods) + { + modsCheckbox.FadeTo(1, 200, Easing.OutQuint); + tabsContainer.Padding = new MarginPadding { Right = 100 }; + } + else + { + modsCheckbox.FadeTo(0, 200, Easing.OutQuint); + tabsContainer.Padding = new MarginPadding(); + } } } - - public enum BeatmapDetailTab - { - Details, - Local, - Country, - Global, - Friends - } } diff --git a/osu.Game/Screens/Select/BeatmapDetailAreaTabItem.cs b/osu.Game/Screens/Select/BeatmapDetailAreaTabItem.cs new file mode 100644 index 0000000000..f28e5a7c22 --- /dev/null +++ b/osu.Game/Screens/Select/BeatmapDetailAreaTabItem.cs @@ -0,0 +1,35 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System; + +namespace osu.Game.Screens.Select +{ + public abstract class BeatmapDetailAreaTabItem : IEquatable + { + /// + /// The name of this tab, to be displayed in the tab control. + /// + public abstract string Name { get; } + + /// + /// Whether the contents of this tab can be filtered by the user's currently-selected mods. + /// + public virtual bool FilterableByMods => false; + + public override string ToString() => Name; + + public bool Equals(BeatmapDetailAreaTabItem other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + + return Name == other.Name; + } + + public override int GetHashCode() + { + return Name != null ? Name.GetHashCode() : 0; + } + } +} diff --git a/osu.Game/Screens/Select/MatchSongSelect.cs b/osu.Game/Screens/Select/MatchSongSelect.cs index 6ba4157797..fd7a8a539c 100644 --- a/osu.Game/Screens/Select/MatchSongSelect.cs +++ b/osu.Game/Screens/Select/MatchSongSelect.cs @@ -34,6 +34,8 @@ namespace osu.Game.Screens.Select Padding = new MarginPadding { Horizontal = HORIZONTAL_OVERFLOW_PADDING }; } + protected override BeatmapDetailArea CreateBeatmapDetailArea() => new PlayBeatmapDetailArea(); // Todo: Temporary + protected override bool OnStart() { var item = new PlaylistItem diff --git a/osu.Game/Screens/Select/PlayBeatmapDetailArea.cs b/osu.Game/Screens/Select/PlayBeatmapDetailArea.cs new file mode 100644 index 0000000000..d719502a4f --- /dev/null +++ b/osu.Game/Screens/Select/PlayBeatmapDetailArea.cs @@ -0,0 +1,143 @@ +// 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.Bindables; +using osu.Framework.Graphics; +using osu.Game.Beatmaps; +using osu.Game.Configuration; +using osu.Game.Screens.Select.Leaderboards; + +namespace osu.Game.Screens.Select +{ + public class PlayBeatmapDetailArea : BeatmapDetailArea + { + public readonly BeatmapLeaderboard Leaderboard; + + public override WorkingBeatmap Beatmap + { + get => base.Beatmap; + set + { + base.Beatmap = value; + + Leaderboard.Beatmap = value is DummyWorkingBeatmap ? null : value?.BeatmapInfo; + } + } + + private Bindable selectedTab; + + public PlayBeatmapDetailArea() + { + Add(Leaderboard = new BeatmapLeaderboard { RelativeSizeAxes = Axes.Both }); + } + + [BackgroundDependencyLoader] + private void load(OsuConfigManager config) + { + selectedTab = config.GetBindable(OsuSetting.BeatmapDetailTab); + selectedTab.BindValueChanged(tab => CurrentTab.Value = getTabItemFromTabType(tab.NewValue), true); + CurrentTab.BindValueChanged(tab => selectedTab.Value = getTabTypeFromTabItem(tab.NewValue)); + } + + public override void Refresh() + { + base.Refresh(); + + Leaderboard.RefreshScores(); + } + + protected override void OnTabChanged(BeatmapDetailAreaTabItem tab, bool selectedMods) + { + base.OnTabChanged(tab, selectedMods); + + Leaderboard.FilterMods = selectedMods; + + switch (tab) + { + case BeatmapDetailAreaLeaderboardTabItem leaderboard: + Leaderboard.Scope = leaderboard.Scope; + Leaderboard.Show(); + break; + + default: + Leaderboard.Hide(); + break; + } + } + + protected override BeatmapDetailAreaTabItem[] CreateTabItems() => base.CreateTabItems().Concat(new BeatmapDetailAreaTabItem[] + { + new BeatmapDetailAreaLeaderboardTabItem(BeatmapLeaderboardScope.Local), + new BeatmapDetailAreaLeaderboardTabItem(BeatmapLeaderboardScope.Country), + new BeatmapDetailAreaLeaderboardTabItem(BeatmapLeaderboardScope.Global), + new BeatmapDetailAreaLeaderboardTabItem(BeatmapLeaderboardScope.Friend), + }).ToArray(); + + private BeatmapDetailAreaTabItem getTabItemFromTabType(TabType type) + { + switch (type) + { + case TabType.Details: + return new BeatmapDetailAreaDetailTabItem(); + + case TabType.Local: + return new BeatmapDetailAreaLeaderboardTabItem(BeatmapLeaderboardScope.Local); + + case TabType.Country: + return new BeatmapDetailAreaLeaderboardTabItem(BeatmapLeaderboardScope.Country); + + case TabType.Global: + return new BeatmapDetailAreaLeaderboardTabItem(BeatmapLeaderboardScope.Global); + + case TabType.Friends: + return new BeatmapDetailAreaLeaderboardTabItem(BeatmapLeaderboardScope.Friend); + + default: + throw new ArgumentOutOfRangeException(nameof(type)); + } + } + + private TabType getTabTypeFromTabItem(BeatmapDetailAreaTabItem item) + { + switch (item) + { + case BeatmapDetailAreaDetailTabItem _: + return TabType.Details; + + case BeatmapDetailAreaLeaderboardTabItem leaderboardTab: + switch (leaderboardTab.Scope) + { + case BeatmapLeaderboardScope.Local: + return TabType.Local; + + case BeatmapLeaderboardScope.Country: + return TabType.Country; + + case BeatmapLeaderboardScope.Global: + return TabType.Global; + + case BeatmapLeaderboardScope.Friend: + return TabType.Friends; + + default: + throw new ArgumentOutOfRangeException(nameof(item)); + } + + default: + throw new ArgumentOutOfRangeException(nameof(item)); + } + } + + public enum TabType + { + Details, + Local, + Country, + Global, + Friends + } + } +} diff --git a/osu.Game/Screens/Select/PlaySongSelect.cs b/osu.Game/Screens/Select/PlaySongSelect.cs index f1dd125362..e744fd6a7b 100644 --- a/osu.Game/Screens/Select/PlaySongSelect.cs +++ b/osu.Game/Screens/Select/PlaySongSelect.cs @@ -29,8 +29,12 @@ namespace osu.Game.Screens.Select ValidForResume = false; Edit(); }, Key.Number4); + + ((PlayBeatmapDetailArea)BeatmapDetails).Leaderboard.ScoreSelected += score => this.Push(new SoloResults(score)); } + protected override BeatmapDetailArea CreateBeatmapDetailArea() => new PlayBeatmapDetailArea(); + public override void OnResuming(IScreen last) { base.OnResuming(last); diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index 0da260d752..67626d1e4f 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -23,7 +23,6 @@ using osu.Game.Rulesets.Mods; using osu.Game.Screens.Backgrounds; using osu.Game.Screens.Edit; using osu.Game.Screens.Menu; -using osu.Game.Screens.Play; using osu.Game.Screens.Select.Options; using osu.Game.Skinning; using osuTK; @@ -207,11 +206,11 @@ namespace osu.Game.Screens.Select Left = left_area_padding, Right = left_area_padding * 2, }, - Child = BeatmapDetails = new BeatmapDetailArea + Child = BeatmapDetails = CreateBeatmapDetailArea().With(d => { - RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding { Top = 10, Right = 5 }, - }, + d.RelativeSizeAxes = Axes.Both; + d.Padding = new MarginPadding { Top = 10, Right = 5 }; + }) }, } }, @@ -262,8 +261,6 @@ namespace osu.Game.Screens.Select }); } - BeatmapDetails.Leaderboard.ScoreSelected += score => this.Push(new SoloResults(score)); - if (Footer != null) { Footer.AddButton(new FooterButtonMods { Current = Mods }, ModSelect); @@ -319,6 +316,11 @@ namespace osu.Game.Screens.Select return dependencies; } + /// + /// Creates the beatmap details to be displayed underneath the wedge. + /// + protected abstract BeatmapDetailArea CreateBeatmapDetailArea(); + public void Edit(BeatmapInfo beatmap = null) { if (!AllowEditing) @@ -533,7 +535,7 @@ namespace osu.Game.Screens.Select Carousel.AllowSelection = true; - BeatmapDetails.Leaderboard.RefreshScores(); + BeatmapDetails.Refresh(); Beatmap.Value.Track.Looping = true; music?.ResetTrackAdjustments(); @@ -716,7 +718,7 @@ namespace osu.Game.Screens.Select dialogOverlay?.Push(new BeatmapClearScoresDialog(beatmap, () => // schedule done here rather than inside the dialog as the dialog may fade out and never callback. - Schedule(() => BeatmapDetails.Leaderboard.RefreshScores()))); + Schedule(() => BeatmapDetails.Refresh()))); } public virtual bool OnPressed(GlobalAction action) From 53b62816f8db94b3aa90fe0be77ceca296a4feab Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 13 Feb 2020 14:07:37 +0900 Subject: [PATCH 1473/1829] Add index constants for cross-class safety --- osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs | 4 ++-- osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs | 4 ++-- osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs | 8 ++++++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs index de7adaa261..e2465d727e 100644 --- a/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs @@ -10,7 +10,7 @@ namespace osu.Game.Rulesets.Catch.Mods { public class CatchModDifficultyAdjust : ModDifficultyAdjust { - [SettingSource("Circle Size", "Override a beatmap's set CS.", 0)] + [SettingSource("Circle Size", "Override a beatmap's set CS.", FIRST_SETTING_ORDER - 1)] public BindableNumber CircleSize { get; } = new BindableFloat { Precision = 0.1f, @@ -20,7 +20,7 @@ namespace osu.Game.Rulesets.Catch.Mods Value = 5, }; - [SettingSource("Approach Rate", "Override a beatmap's set AR.", 3)] + [SettingSource("Approach Rate", "Override a beatmap's set AR.", LAST_SETTING_ORDER + 1)] public BindableNumber ApproachRate { get; } = new BindableFloat { Precision = 0.1f, diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs index 2c6eb19f3d..75de6896a3 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs @@ -10,7 +10,7 @@ namespace osu.Game.Rulesets.Osu.Mods { public class OsuModDifficultyAdjust : ModDifficultyAdjust { - [SettingSource("Circle Size", "Override a beatmap's set CS.", 0)] + [SettingSource("Circle Size", "Override a beatmap's set CS.", FIRST_SETTING_ORDER - 1)] public BindableNumber CircleSize { get; } = new BindableFloat { Precision = 0.1f, @@ -20,7 +20,7 @@ namespace osu.Game.Rulesets.Osu.Mods Value = 5, }; - [SettingSource("Approach Rate", "Override a beatmap's set AR.", 3)] + [SettingSource("Approach Rate", "Override a beatmap's set AR.", LAST_SETTING_ORDER + 1)] public BindableNumber ApproachRate { get; } = new BindableFloat { Precision = 0.1f, diff --git a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs index 6ba54ff8fb..2083671072 100644 --- a/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs +++ b/osu.Game/Rulesets/Mods/ModDifficultyAdjust.cs @@ -28,7 +28,11 @@ namespace osu.Game.Rulesets.Mods public override Type[] IncompatibleMods => new[] { typeof(ModEasy), typeof(ModHardRock) }; - [SettingSource("HP Drain", "Override a beatmap's set HP.", 1)] + protected const int FIRST_SETTING_ORDER = 1; + + protected const int LAST_SETTING_ORDER = 2; + + [SettingSource("HP Drain", "Override a beatmap's set HP.", FIRST_SETTING_ORDER)] public BindableNumber DrainRate { get; } = new BindableFloat { Precision = 0.1f, @@ -38,7 +42,7 @@ namespace osu.Game.Rulesets.Mods Value = 5, }; - [SettingSource("Accuracy", "Override a beatmap's set OD.", 2)] + [SettingSource("Accuracy", "Override a beatmap's set OD.", LAST_SETTING_ORDER)] public BindableNumber OverallDifficulty { get; } = new BindableFloat { Precision = 0.1f, From ad0de2796427ee9025d01afe82fe062d9a0a2b8e Mon Sep 17 00:00:00 2001 From: voidedWarranties Date: Wed, 12 Feb 2020 22:11:26 -0800 Subject: [PATCH 1474/1829] Safer dependency injection and accessibility levels --- osu.Game/OsuGame.cs | 47 +++++++++++-------- .../Carousel/DrawableCarouselBeatmapSet.cs | 26 +++++----- osu.Game/Screens/Select/SongSelect.cs | 2 +- 3 files changed, 43 insertions(+), 32 deletions(-) diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index ff3dee55af..3d6b93c87d 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -311,22 +311,12 @@ namespace osu.Game public void ShowBeatmap(int beatmapId) => waitForReady(() => beatmapSetOverlay, _ => beatmapSetOverlay.FetchAndShowBeatmap(beatmapId)); /// - /// Present a beatmap at song select immediately. + /// Present a specific beatmap difficulty at song select immediately. /// The user should have already requested this interactively. /// /// The beatmap to select. - public void PresentBeatmap(BeatmapSetInfo beatmap) + public void PresentBeatmap(BeatmapInfo beatmap) { - var databasedSet = beatmap.OnlineBeatmapSetID != null - ? BeatmapManager.QueryBeatmapSet(s => s.OnlineBeatmapSetID == beatmap.OnlineBeatmapSetID) - : BeatmapManager.QueryBeatmapSet(s => s.Hash == beatmap.Hash); - - if (databasedSet == null) - { - Logger.Log("The requested beatmap could not be loaded.", LoggingTarget.Information); - return; - } - PerformFromScreen(screen => { // we might already be at song select, so a check is required before performing the load to solo. @@ -334,19 +324,36 @@ namespace osu.Game menuScreen.LoadToSolo(); // we might even already be at the song - if (Beatmap.Value.BeatmapSetInfo.Hash == databasedSet.Hash) - { + if (Beatmap.Value.BeatmapInfo.Hash == beatmap.Hash) return; - } - // Use first beatmap available for current ruleset, else switch ruleset. - var first = databasedSet.Beatmaps.Find(b => b.Ruleset.Equals(Ruleset.Value)) ?? databasedSet.Beatmaps.First(); - - Ruleset.Value = first.Ruleset; - Beatmap.Value = BeatmapManager.GetWorkingBeatmap(first); + Ruleset.Value = beatmap.Ruleset; + Beatmap.Value = BeatmapManager.GetWorkingBeatmap(beatmap); }, validScreens: new[] { typeof(PlaySongSelect) }); } + /// + /// + /// Instead of selecting a specific difficulty, this will select the first difficulty of the current ruleset in a beatmapset, + /// or the first difficulty of the set if there is none. + /// + /// The beatmapset to select. + public void PresentBeatmap(BeatmapSetInfo beatmapSet) + { + var databasedSet = beatmapSet.OnlineBeatmapSetID != null + ? BeatmapManager.QueryBeatmapSet(s => s.OnlineBeatmapSetID == beatmapSet.OnlineBeatmapSetID) + : BeatmapManager.QueryBeatmapSet(s => s.Hash == beatmapSet.Hash); + + if (databasedSet == null) + { + Logger.Log("The requested beatmap could not be loaded.", LoggingTarget.Information); + return; + } + + var first = databasedSet.Beatmaps.Find(b => b.Ruleset.Equals(Ruleset.Value)) ?? databasedSet.Beatmaps.First(); + PresentBeatmap(first); + } + /// /// Present a score's replay immediately. /// The user should have already requested this interactively. diff --git a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs index 80dae575ff..9e4f31b15b 100644 --- a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs +++ b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs @@ -34,8 +34,6 @@ namespace osu.Game.Screens.Select.Carousel private DialogOverlay dialogOverlay; private readonly BeatmapSetInfo beatmapSet; - private SongSelect songSelect; - public DrawableCarouselBeatmapSet(CarouselBeatmapSet set) : base(set) { @@ -43,11 +41,8 @@ namespace osu.Game.Screens.Select.Carousel } [BackgroundDependencyLoader(true)] - private void load(SongSelect songSelect, BeatmapManager manager, BeatmapSetOverlay beatmapOverlay, DialogOverlay overlay) + private void load(BeatmapManager manager, BeatmapSetOverlay beatmapOverlay, DialogOverlay overlay) { - if (songSelect != null) - this.songSelect = songSelect; - restoreHiddenRequested = s => s.Beatmaps.ForEach(manager.Restore); dialogOverlay = overlay; if (beatmapOverlay != null) @@ -123,7 +118,7 @@ namespace osu.Game.Screens.Select.Carousel return beatmaps.Count > maximum_difficulty_icons ? (IEnumerable)beatmaps.GroupBy(b => b.Beatmap.Ruleset).Select(group => new FilterableGroupedDifficultyIcon(group.ToList(), group.Key)) - : beatmaps.Select(b => new FilterableDifficultyIcon(b, songSelect)); + : beatmaps.Select(b => new FilterableDifficultyIcon(b)); } public MenuItem[] ContextMenuItems @@ -216,17 +211,17 @@ namespace osu.Game.Screens.Select.Carousel { private readonly BindableBool filtered = new BindableBool(); - private readonly SongSelect songSelect; + private OsuGame game; + private SongSelect songSelect; private readonly BeatmapInfo info; - public FilterableDifficultyIcon(CarouselBeatmap item, SongSelect songSelect) + public FilterableDifficultyIcon(CarouselBeatmap item) : base(item.Beatmap) { filtered.BindTo(item.Filtered); filtered.ValueChanged += isFiltered => Schedule(() => this.FadeTo(isFiltered.NewValue ? 0.1f : 1, 100)); filtered.TriggerChange(); - this.songSelect = songSelect; info = item.Beatmap; } @@ -234,7 +229,7 @@ namespace osu.Game.Screens.Select.Carousel { if (!filtered.Value) { - songSelect?.Carousel.SelectBeatmap(info); + game.PresentBeatmap(info); if (e.AltPressed) songSelect?.FinaliseSelection(); @@ -242,6 +237,15 @@ namespace osu.Game.Screens.Select.Carousel return base.OnClick(e); } + + [BackgroundDependencyLoader] + private void load(OsuGame game, SongSelect songSelect) + { + this.game = game; + + if (songSelect != null) + this.songSelect = songSelect; + } } public class FilterableGroupedDifficultyIcon : GroupedDifficultyIcon diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index 463a17989a..5037081b5e 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -80,7 +80,7 @@ namespace osu.Game.Screens.Select protected override BackgroundScreen CreateBackground() => new BackgroundScreenBeatmap(Beatmap.Value); - public BeatmapCarousel Carousel { get; private set; } + protected BeatmapCarousel Carousel { get; private set; } private BeatmapInfoWedge beatmapInfoWedge; private DialogOverlay dialogOverlay; From d4f14e552a26c041cf09f61043e2d96ac2e86a1e Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 13 Feb 2020 18:05:53 +0900 Subject: [PATCH 1475/1829] Improve extensibility of mod display expansion --- .../UserInterface/TestSceneModDisplay.cs | 40 +++++++++++++++++++ osu.Game/Screens/Play/HUD/ModDisplay.cs | 28 +++++++++++-- osu.Game/Screens/Select/FooterButtonMods.cs | 2 +- 3 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 osu.Game.Tests/Visual/UserInterface/TestSceneModDisplay.cs diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneModDisplay.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneModDisplay.cs new file mode 100644 index 0000000000..8168faa106 --- /dev/null +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneModDisplay.cs @@ -0,0 +1,40 @@ +// 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.Game.Rulesets.Mods; +using osu.Game.Rulesets.Osu.Mods; +using osu.Game.Screens.Play.HUD; + +namespace osu.Game.Tests.Visual.UserInterface +{ + public class TestSceneModDisplay : OsuTestScene + { + [TestCase(ExpansionMode.ExpandOnHover)] + [TestCase(ExpansionMode.AlwaysExpanded)] + [TestCase(ExpansionMode.AlwaysContracted)] + public void TestMode(ExpansionMode mode) + { + AddStep("create mod display", () => + { + Child = new ModDisplay + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + ExpansionMode = mode, + Current = + { + Value = new Mod[] + { + new OsuModHardRock(), + new OsuModDoubleTime(), + new OsuModDifficultyAdjust(), + new OsuModEasy(), + } + } + }; + }); + } + } +} diff --git a/osu.Game/Screens/Play/HUD/ModDisplay.cs b/osu.Game/Screens/Play/HUD/ModDisplay.cs index 00edd4db99..336b03544f 100644 --- a/osu.Game/Screens/Play/HUD/ModDisplay.cs +++ b/osu.Game/Screens/Play/HUD/ModDisplay.cs @@ -24,7 +24,7 @@ namespace osu.Game.Screens.Play.HUD public bool DisplayUnrankedText = true; - public bool AllowExpand = true; + public ExpansionMode ExpansionMode = ExpansionMode.ExpandOnHover; private readonly Bindable> current = new Bindable>(); @@ -110,11 +110,15 @@ namespace osu.Game.Screens.Play.HUD private void expand() { - if (AllowExpand) + if (ExpansionMode != ExpansionMode.AlwaysContracted) IconsContainer.TransformSpacingTo(new Vector2(5, 0), 500, Easing.OutQuint); } - private void contract() => IconsContainer.TransformSpacingTo(new Vector2(-25, 0), 500, Easing.OutQuint); + private void contract() + { + if (ExpansionMode != ExpansionMode.AlwaysExpanded) + IconsContainer.TransformSpacingTo(new Vector2(-25, 0), 500, Easing.OutQuint); + } protected override bool OnHover(HoverEvent e) { @@ -128,4 +132,22 @@ namespace osu.Game.Screens.Play.HUD base.OnHoverLost(e); } } + + public enum ExpansionMode + { + /// + /// The will expand only when hovered. + /// + ExpandOnHover, + + /// + /// The will always be expanded. + /// + AlwaysExpanded, + + /// + /// The will always be contracted. + /// + AlwaysContracted + } } diff --git a/osu.Game/Screens/Select/FooterButtonMods.cs b/osu.Game/Screens/Select/FooterButtonMods.cs index 4f2369847f..2411cf26f9 100644 --- a/osu.Game/Screens/Select/FooterButtonMods.cs +++ b/osu.Game/Screens/Select/FooterButtonMods.cs @@ -91,7 +91,7 @@ namespace osu.Game.Screens.Select public FooterModDisplay() { - AllowExpand = false; + ExpansionMode = ExpansionMode.AlwaysContracted; IconsContainer.Margin = new MarginPadding(); } } From 91edadfe9d918f191baeb56c5ae7b555dada624a Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 13 Feb 2020 18:12:47 +0900 Subject: [PATCH 1476/1829] Make playlist beatmap and ruleset into bindables --- .../TestSceneLoungeRoomsContainer.cs | 9 +++-- .../Multiplayer/TestSceneMatchBeatmapPanel.cs | 10 ++--- .../Multiplayer/TestSceneMatchHeader.cs | 19 ++++++---- .../Visual/Multiplayer/TestSceneMatchInfo.cs | 38 +++++++++++-------- .../TestSceneMatchSettingsOverlay.cs | 2 +- osu.Game/Online/Multiplayer/PlaylistItem.cs | 30 +++++++-------- .../Screens/Multi/Components/BeatmapTitle.cs | 6 +-- .../Multi/Components/BeatmapTypeInfo.cs | 2 +- .../Screens/Multi/Components/ModeTypeInfo.cs | 2 +- .../Components/MultiplayerBackgroundSprite.cs | 2 +- .../Multi/Lounge/Components/RoomsContainer.cs | 2 +- .../Screens/Multi/Match/Components/Header.cs | 1 + .../Screens/Multi/Match/Components/Info.cs | 2 +- .../Match/Components/MatchBeatmapPanel.cs | 2 +- .../Screens/Multi/Match/MatchSubScreen.cs | 7 ++-- .../Screens/Multi/Play/TimeshiftPlayer.cs | 4 +- osu.Game/Screens/Select/MatchSongSelect.cs | 9 +++-- 17 files changed, 79 insertions(+), 68 deletions(-) diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneLoungeRoomsContainer.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneLoungeRoomsContainer.cs index fe14a1ff0a..b5d946d049 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneLoungeRoomsContainer.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneLoungeRoomsContainer.cs @@ -121,10 +121,13 @@ namespace osu.Game.Tests.Visual.Multiplayer { room.Playlist.Add(new PlaylistItem { - Ruleset = ruleset, - Beatmap = new BeatmapInfo + Ruleset = { Value = ruleset }, + Beatmap = { - Metadata = new BeatmapMetadata() + Value = new BeatmapInfo + { + Metadata = new BeatmapMetadata() + } } }); } diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapPanel.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapPanel.cs index 1e3e06ce7a..84ab6f9ccc 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapPanel.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapPanel.cs @@ -32,11 +32,11 @@ namespace osu.Game.Tests.Visual.Multiplayer Origin = Anchor.Centre, }); - Room.Playlist.Add(new PlaylistItem { Beatmap = new BeatmapInfo { OnlineBeatmapID = 1763072 } }); - Room.Playlist.Add(new PlaylistItem { Beatmap = new BeatmapInfo { OnlineBeatmapID = 2101557 } }); - Room.Playlist.Add(new PlaylistItem { Beatmap = new BeatmapInfo { OnlineBeatmapID = 1973466 } }); - Room.Playlist.Add(new PlaylistItem { Beatmap = new BeatmapInfo { OnlineBeatmapID = 2109801 } }); - Room.Playlist.Add(new PlaylistItem { Beatmap = new BeatmapInfo { OnlineBeatmapID = 1922035 } }); + Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = new BeatmapInfo { OnlineBeatmapID = 1763072 } } }); + Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = new BeatmapInfo { OnlineBeatmapID = 2101557 } } }); + Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = new BeatmapInfo { OnlineBeatmapID = 1973466 } } }); + Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = new BeatmapInfo { OnlineBeatmapID = 2109801 } } }); + Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = new BeatmapInfo { OnlineBeatmapID = 1922035 } } }); } protected override void LoadComplete() diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchHeader.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchHeader.cs index e42042f2ea..7d7e7f85db 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchHeader.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchHeader.cs @@ -23,16 +23,19 @@ namespace osu.Game.Tests.Visual.Multiplayer { Room.Playlist.Add(new PlaylistItem { - Beatmap = new BeatmapInfo + Beatmap = { - Metadata = new BeatmapMetadata + Value = new BeatmapInfo { - Title = "Title", - Artist = "Artist", - AuthorString = "Author", - }, - Version = "Version", - Ruleset = new OsuRuleset().RulesetInfo + Metadata = new BeatmapMetadata + { + Title = "Title", + Artist = "Artist", + AuthorString = "Author", + }, + Version = "Version", + Ruleset = new OsuRuleset().RulesetInfo + } }, RequiredMods = { diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchInfo.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchInfo.cs index a6c036a876..6ee9ceb2dd 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchInfo.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchInfo.cs @@ -37,16 +37,19 @@ namespace osu.Game.Tests.Visual.Multiplayer Room.Playlist.Clear(); Room.Playlist.Add(new PlaylistItem { - Beatmap = new BeatmapInfo + Beatmap = { - StarDifficulty = 2.4, - Ruleset = rulesets.GetRuleset(0), - Metadata = new BeatmapMetadata + Value = new BeatmapInfo { - Title = @"My Song", - Artist = @"VisualTests", - AuthorString = @"osu!lazer", - }, + StarDifficulty = 2.4, + Ruleset = rulesets.GetRuleset(0), + Metadata = new BeatmapMetadata + { + Title = @"My Song", + Artist = @"VisualTests", + AuthorString = @"osu!lazer", + }, + } } }); }); @@ -60,16 +63,19 @@ namespace osu.Game.Tests.Visual.Multiplayer Room.Playlist.Clear(); Room.Playlist.Add(new PlaylistItem { - Beatmap = new BeatmapInfo + Beatmap = { - StarDifficulty = 4.2, - Ruleset = rulesets.GetRuleset(3), - Metadata = new BeatmapMetadata + Value = new BeatmapInfo { - Title = @"Your Song", - Artist = @"Tester", - AuthorString = @"Someone", - }, + StarDifficulty = 4.2, + Ruleset = rulesets.GetRuleset(3), + Metadata = new BeatmapMetadata + { + Title = @"Your Song", + Artist = @"Tester", + AuthorString = @"Someone", + }, + } } }); }); diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSettingsOverlay.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSettingsOverlay.cs index 8d842fc865..047e9d860d 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSettingsOverlay.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSettingsOverlay.cs @@ -56,7 +56,7 @@ namespace osu.Game.Tests.Visual.Multiplayer AddStep("set name", () => Room.Name.Value = "Room name"); AddAssert("button disabled", () => !settings.ApplyButton.Enabled.Value); - AddStep("set beatmap", () => Room.Playlist.Add(new PlaylistItem { Beatmap = CreateBeatmap(Ruleset.Value).BeatmapInfo })); + AddStep("set beatmap", () => Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = CreateBeatmap(Ruleset.Value).BeatmapInfo } })); AddAssert("button enabled", () => settings.ApplyButton.Enabled.Value); AddStep("clear name", () => Room.Name.Value = ""); diff --git a/osu.Game/Online/Multiplayer/PlaylistItem.cs b/osu.Game/Online/Multiplayer/PlaylistItem.cs index 5f8edc607b..e243cfca08 100644 --- a/osu.Game/Online/Multiplayer/PlaylistItem.cs +++ b/osu.Game/Online/Multiplayer/PlaylistItem.cs @@ -1,9 +1,9 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. -using System.Collections.Generic; using System.Linq; using Newtonsoft.Json; +using osu.Framework.Bindables; using osu.Game.Beatmaps; using osu.Game.Online.API; using osu.Game.Online.API.Requests.Responses; @@ -24,24 +24,16 @@ namespace osu.Game.Online.Multiplayer public int RulesetID { get; set; } [JsonIgnore] - public BeatmapInfo Beatmap - { - get => beatmap; - set - { - beatmap = value; - BeatmapID = value?.OnlineBeatmapID ?? 0; - } - } + public readonly Bindable Beatmap = new Bindable(); [JsonIgnore] - public RulesetInfo Ruleset { get; set; } + public readonly Bindable Ruleset = new Bindable(); [JsonIgnore] - public readonly List AllowedMods = new List(); + public readonly BindableList AllowedMods = new BindableList(); [JsonIgnore] - public readonly List RequiredMods = new List(); + public readonly BindableList RequiredMods = new BindableList(); [JsonProperty("beatmap")] private APIBeatmap apiBeatmap { get; set; } @@ -64,16 +56,20 @@ namespace osu.Game.Online.Multiplayer set => requiredModsBacking = value; } - private BeatmapInfo beatmap; + public PlaylistItem() + { + Beatmap.BindValueChanged(beatmap => BeatmapID = beatmap.NewValue?.OnlineBeatmapID ?? 0); + Ruleset.BindValueChanged(ruleset => RulesetID = ruleset.NewValue?.ID ?? 0); + } public void MapObjects(BeatmapManager beatmaps, RulesetStore rulesets) { // If we don't have an api beatmap, the request occurred as a result of room creation, so we can query the local beatmap instead // Todo: Is this a bug? Room creation only returns the beatmap ID - Beatmap = apiBeatmap == null ? beatmaps.QueryBeatmap(b => b.OnlineBeatmapID == BeatmapID) : apiBeatmap.ToBeatmap(rulesets); - Ruleset = rulesets.GetRuleset(RulesetID); + Beatmap.Value = apiBeatmap == null ? beatmaps.QueryBeatmap(b => b.OnlineBeatmapID == BeatmapID) : apiBeatmap.ToBeatmap(rulesets); + Ruleset.Value = rulesets.GetRuleset(RulesetID); - Ruleset rulesetInstance = Ruleset.CreateInstance(); + Ruleset rulesetInstance = Ruleset.Value.CreateInstance(); if (allowedModsBacking != null) { diff --git a/osu.Game/Screens/Multi/Components/BeatmapTitle.cs b/osu.Game/Screens/Multi/Components/BeatmapTitle.cs index b41b2d073e..b991a3d68d 100644 --- a/osu.Game/Screens/Multi/Components/BeatmapTitle.cs +++ b/osu.Game/Screens/Multi/Components/BeatmapTitle.cs @@ -70,7 +70,7 @@ namespace osu.Game.Screens.Multi.Components { new OsuSpriteText { - Text = new LocalisedString((beatmap.Metadata.ArtistUnicode, beatmap.Metadata.Artist)), + Text = new LocalisedString((beatmap.Value.Metadata.ArtistUnicode, beatmap.Value.Metadata.Artist)), Font = OsuFont.GetFont(size: TextSize), }, new OsuSpriteText @@ -80,10 +80,10 @@ namespace osu.Game.Screens.Multi.Components }, new OsuSpriteText { - Text = new LocalisedString((beatmap.Metadata.TitleUnicode, beatmap.Metadata.Title)), + Text = new LocalisedString((beatmap.Value.Metadata.TitleUnicode, beatmap.Value.Metadata.Title)), Font = OsuFont.GetFont(size: TextSize), } - }, LinkAction.OpenBeatmap, beatmap.OnlineBeatmapID.ToString(), "Open beatmap"); + }, LinkAction.OpenBeatmap, beatmap.Value.OnlineBeatmapID.ToString(), "Open beatmap"); } } } diff --git a/osu.Game/Screens/Multi/Components/BeatmapTypeInfo.cs b/osu.Game/Screens/Multi/Components/BeatmapTypeInfo.cs index d63f2fecd2..21b228bb5c 100644 --- a/osu.Game/Screens/Multi/Components/BeatmapTypeInfo.cs +++ b/osu.Game/Screens/Multi/Components/BeatmapTypeInfo.cs @@ -59,7 +59,7 @@ namespace osu.Game.Screens.Multi.Components if (beatmap != null) { beatmapAuthor.AddText("mapped by ", s => s.Colour = OsuColour.Gray(0.8f)); - beatmapAuthor.AddUserLink(beatmap.Metadata.Author); + beatmapAuthor.AddUserLink(beatmap.Value.Metadata.Author); } }, true); } diff --git a/osu.Game/Screens/Multi/Components/ModeTypeInfo.cs b/osu.Game/Screens/Multi/Components/ModeTypeInfo.cs index 6080458aec..5465463888 100644 --- a/osu.Game/Screens/Multi/Components/ModeTypeInfo.cs +++ b/osu.Game/Screens/Multi/Components/ModeTypeInfo.cs @@ -56,7 +56,7 @@ namespace osu.Game.Screens.Multi.Components if (item?.Beatmap != null) { drawableRuleset.FadeIn(transition_duration); - drawableRuleset.Child = new DifficultyIcon(item.Beatmap, item.Ruleset) { Size = new Vector2(height) }; + drawableRuleset.Child = new DifficultyIcon(item.Beatmap.Value, item.Ruleset.Value) { Size = new Vector2(height) }; } else drawableRuleset.FadeOut(transition_duration); diff --git a/osu.Game/Screens/Multi/Components/MultiplayerBackgroundSprite.cs b/osu.Game/Screens/Multi/Components/MultiplayerBackgroundSprite.cs index 968fa6e72e..9a1a482699 100644 --- a/osu.Game/Screens/Multi/Components/MultiplayerBackgroundSprite.cs +++ b/osu.Game/Screens/Multi/Components/MultiplayerBackgroundSprite.cs @@ -23,7 +23,7 @@ namespace osu.Game.Screens.Multi.Components InternalChild = sprite = CreateBackgroundSprite(); - CurrentItem.BindValueChanged(item => sprite.Beatmap.Value = item.NewValue?.Beatmap, true); + CurrentItem.BindValueChanged(item => sprite.Beatmap.Value = item.NewValue?.Beatmap.Value, true); } protected virtual UpdateableBeatmapBackgroundSprite CreateBackgroundSprite() => new UpdateableBeatmapBackgroundSprite(beatmapSetCoverType) { RelativeSizeAxes = Axes.Both }; diff --git a/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs b/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs index 063957d816..64618a1d85 100644 --- a/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs +++ b/osu.Game/Screens/Multi/Lounge/Components/RoomsContainer.cs @@ -68,7 +68,7 @@ namespace osu.Game.Screens.Multi.Lounge.Components { bool matchingFilter = true; - matchingFilter &= r.Room.Playlist.Count == 0 || r.Room.Playlist.Any(i => i.Ruleset.Equals(criteria.Ruleset)); + matchingFilter &= r.Room.Playlist.Count == 0 || r.Room.Playlist.Any(i => i.Ruleset.Value.Equals(criteria.Ruleset)); if (!string.IsNullOrEmpty(criteria.SearchString)) matchingFilter &= r.FilterTerms.Any(term => term.IndexOf(criteria.SearchString, StringComparison.InvariantCultureIgnoreCase) >= 0); diff --git a/osu.Game/Screens/Multi/Match/Components/Header.cs b/osu.Game/Screens/Multi/Match/Components/Header.cs index a52d43acf4..991060cac0 100644 --- a/osu.Game/Screens/Multi/Match/Components/Header.cs +++ b/osu.Game/Screens/Multi/Match/Components/Header.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System; +using System.Linq; using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Extensions.Color4Extensions; diff --git a/osu.Game/Screens/Multi/Match/Components/Info.cs b/osu.Game/Screens/Multi/Match/Components/Info.cs index 74f000c21f..f0b54baa4c 100644 --- a/osu.Game/Screens/Multi/Match/Components/Info.cs +++ b/osu.Game/Screens/Multi/Match/Components/Info.cs @@ -89,7 +89,7 @@ namespace osu.Game.Screens.Multi.Match.Components }, }; - CurrentItem.BindValueChanged(item => readyButton.Beatmap.Value = item.NewValue?.Beatmap, true); + CurrentItem.BindValueChanged(item => readyButton.Beatmap.Value = item.NewValue?.Beatmap.Value, true); hostInfo.Host.BindTo(Host); } diff --git a/osu.Game/Screens/Multi/Match/Components/MatchBeatmapPanel.cs b/osu.Game/Screens/Multi/Match/Components/MatchBeatmapPanel.cs index 7c1fe91393..f67f6d9f43 100644 --- a/osu.Game/Screens/Multi/Match/Components/MatchBeatmapPanel.cs +++ b/osu.Game/Screens/Multi/Match/Components/MatchBeatmapPanel.cs @@ -32,7 +32,7 @@ namespace osu.Game.Screens.Multi.Match.Components [BackgroundDependencyLoader] private void load() { - CurrentItem.BindValueChanged(item => loadNewPanel(item.NewValue?.Beatmap), true); + CurrentItem.BindValueChanged(item => loadNewPanel(item.NewValue?.Beatmap.Value), true); } private void loadNewPanel(BeatmapInfo beatmap) diff --git a/osu.Game/Screens/Multi/Match/MatchSubScreen.cs b/osu.Game/Screens/Multi/Match/MatchSubScreen.cs index c2bb7da6b5..9165ef6d0f 100644 --- a/osu.Game/Screens/Multi/Match/MatchSubScreen.cs +++ b/osu.Game/Screens/Multi/Match/MatchSubScreen.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System; +using System.Linq; using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; @@ -183,13 +184,13 @@ namespace osu.Game.Screens.Multi.Match private void currentItemChanged(ValueChangedEvent e) { // Retrieve the corresponding local beatmap, since we can't directly use the playlist's beatmap info - var localBeatmap = e.NewValue?.Beatmap == null ? null : beatmapManager.QueryBeatmap(b => b.OnlineBeatmapID == e.NewValue.Beatmap.OnlineBeatmapID); + var localBeatmap = e.NewValue?.Beatmap == null ? null : beatmapManager.QueryBeatmap(b => b.OnlineBeatmapID == e.NewValue.Beatmap.Value.OnlineBeatmapID); Beatmap.Value = beatmapManager.GetWorkingBeatmap(localBeatmap); Mods.Value = e.NewValue?.RequiredMods?.ToArray() ?? Array.Empty(); if (e.NewValue?.Ruleset != null) - Ruleset.Value = e.NewValue.Ruleset; + Ruleset.Value = e.NewValue.Ruleset.Value; previewTrackManager.StopAnyPlaying(this); } @@ -206,7 +207,7 @@ namespace osu.Game.Screens.Multi.Match return; // Try to retrieve the corresponding local beatmap - var localBeatmap = beatmapManager.QueryBeatmap(b => b.OnlineBeatmapID == CurrentItem.Value.Beatmap.OnlineBeatmapID); + var localBeatmap = beatmapManager.QueryBeatmap(b => b.OnlineBeatmapID == CurrentItem.Value.Beatmap.Value.OnlineBeatmapID); if (localBeatmap != null) Beatmap.Value = beatmapManager.GetWorkingBeatmap(localBeatmap); diff --git a/osu.Game/Screens/Multi/Play/TimeshiftPlayer.cs b/osu.Game/Screens/Multi/Play/TimeshiftPlayer.cs index 88c6fc5e2e..3afacf2f31 100644 --- a/osu.Game/Screens/Multi/Play/TimeshiftPlayer.cs +++ b/osu.Game/Screens/Multi/Play/TimeshiftPlayer.cs @@ -50,10 +50,10 @@ namespace osu.Game.Screens.Multi.Play bool failed = false; // Sanity checks to ensure that TimeshiftPlayer matches the settings for the current PlaylistItem - if (Beatmap.Value.BeatmapInfo.OnlineBeatmapID != playlistItem.Beatmap.OnlineBeatmapID) + if (Beatmap.Value.BeatmapInfo.OnlineBeatmapID != playlistItem.Beatmap.Value.OnlineBeatmapID) throw new InvalidOperationException("Current Beatmap does not match PlaylistItem's Beatmap"); - if (ruleset.Value.ID != playlistItem.Ruleset.ID) + if (ruleset.Value.ID != playlistItem.Ruleset.Value.ID) throw new InvalidOperationException("Current Ruleset does not match PlaylistItem's Ruleset"); if (!playlistItem.RequiredMods.All(m => Mods.Value.Any(m.Equals))) diff --git a/osu.Game/Screens/Select/MatchSongSelect.cs b/osu.Game/Screens/Select/MatchSongSelect.cs index 6ba4157797..ff0544d227 100644 --- a/osu.Game/Screens/Select/MatchSongSelect.cs +++ b/osu.Game/Screens/Select/MatchSongSelect.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System; +using System.Linq; using Humanizer; using osu.Framework.Allocation; using osu.Framework.Bindables; @@ -38,8 +39,8 @@ namespace osu.Game.Screens.Select { var item = new PlaylistItem { - Beatmap = Beatmap.Value.BeatmapInfo, - Ruleset = Ruleset.Value, + Beatmap = { Value = Beatmap.Value.BeatmapInfo }, + Ruleset = { Value = Ruleset.Value }, RulesetID = Ruleset.Value.ID ?? 0 }; @@ -60,8 +61,8 @@ namespace osu.Game.Screens.Select if (CurrentItem.Value != null) { - Ruleset.Value = CurrentItem.Value.Ruleset; - Beatmap.Value = beatmaps.GetWorkingBeatmap(CurrentItem.Value.Beatmap); + Ruleset.Value = CurrentItem.Value.Ruleset.Value; + Beatmap.Value = beatmaps.GetWorkingBeatmap(CurrentItem.Value.Beatmap.Value); Mods.Value = CurrentItem.Value.RequiredMods?.ToArray() ?? Array.Empty(); } From be2d1c6b4305897f12a1b25802bf1e0cfdc71fbe Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 13 Feb 2020 18:35:31 +0900 Subject: [PATCH 1477/1829] 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 25bde037db..494842f38f 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -54,6 +54,6 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 389fbe8210..50d8c25b11 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 3ed25360c5..e56fc41b07 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -74,7 +74,7 @@ - + @@ -82,7 +82,7 @@ - + From 75bef15583aecec6bb2f4d0d223a7e0b64a5fd5e Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 13 Feb 2020 18:48:28 +0900 Subject: [PATCH 1478/1829] Remove "current" multiplayer room item --- .../Multiplayer/TestSceneMatchBeatmapPanel.cs | 12 ------- osu.Game/Online/Multiplayer/PlaylistItem.cs | 12 ++++++- osu.Game/Online/Multiplayer/Room.cs | 24 ++------------ .../Screens/Multi/Components/BeatmapTitle.cs | 8 +++-- .../Multi/Components/BeatmapTypeInfo.cs | 32 ++++++++++-------- .../Screens/Multi/Components/ModeTypeInfo.cs | 13 +++++--- .../Components/MultiplayerBackgroundSprite.cs | 14 ++++++-- .../Screens/Multi/Match/Components/Header.cs | 16 +++++++-- .../Screens/Multi/Match/Components/Info.cs | 16 +++++++-- .../Match/Components/MatchBeatmapPanel.cs | 11 +++++-- .../Screens/Multi/Match/MatchSubScreen.cs | 33 ++++++++++++------- .../Screens/Multi/MultiplayerComposite.cs | 3 -- osu.Game/Screens/Select/MatchSongSelect.cs | 16 +++++---- 13 files changed, 123 insertions(+), 87 deletions(-) diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapPanel.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapPanel.cs index 84ab6f9ccc..f014b08325 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapPanel.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapPanel.cs @@ -7,7 +7,6 @@ using osu.Game.Beatmaps; using osu.Game.Online.Multiplayer; using osu.Game.Screens.Multi.Match.Components; using osu.Framework.Graphics; -using osu.Framework.Utils; using osu.Game.Audio; using osu.Framework.Allocation; @@ -38,16 +37,5 @@ namespace osu.Game.Tests.Visual.Multiplayer Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = new BeatmapInfo { OnlineBeatmapID = 2109801 } } }); Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = new BeatmapInfo { OnlineBeatmapID = 1922035 } } }); } - - protected override void LoadComplete() - { - base.LoadComplete(); - - AddStep("Select random beatmap", () => - { - Room.CurrentItem.Value = Room.Playlist[RNG.Next(Room.Playlist.Count)]; - previewTrackManager.StopAnyPlaying(this); - }); - } } } diff --git a/osu.Game/Online/Multiplayer/PlaylistItem.cs b/osu.Game/Online/Multiplayer/PlaylistItem.cs index e243cfca08..69e1f0db13 100644 --- a/osu.Game/Online/Multiplayer/PlaylistItem.cs +++ b/osu.Game/Online/Multiplayer/PlaylistItem.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 Newtonsoft.Json; using osu.Framework.Bindables; @@ -12,7 +13,7 @@ using osu.Game.Rulesets.Mods; namespace osu.Game.Online.Multiplayer { - public class PlaylistItem + public class PlaylistItem : IEquatable { [JsonProperty("id")] public int ID { get; set; } @@ -90,5 +91,14 @@ namespace osu.Game.Online.Multiplayer public bool ShouldSerializeID() => false; public bool ShouldSerializeapiBeatmap() => false; + + public bool Equals(PlaylistItem other) => ID == other?.ID && BeatmapID == other.BeatmapID && RulesetID == other.RulesetID; + + public override int GetHashCode() + { + // ReSharper disable NonReadonlyMemberInGetHashCode + return HashCode.Combine(ID, BeatmapID, RulesetID); + // ReSharper restore NonReadonlyMemberInGetHashCode + } } } diff --git a/osu.Game/Online/Multiplayer/Room.cs b/osu.Game/Online/Multiplayer/Room.cs index 53089897f7..1f123de1a3 100644 --- a/osu.Game/Online/Multiplayer/Room.cs +++ b/osu.Game/Online/Multiplayer/Room.cs @@ -31,10 +31,6 @@ namespace osu.Game.Online.Multiplayer [JsonProperty("playlist")] public BindableList Playlist { get; private set; } = new BindableList(); - [Cached] - [JsonIgnore] - public Bindable CurrentItem { get; private set; } = new Bindable(); - [Cached] [JsonProperty("channel_id")] public Bindable ChannelId { get; private set; } = new Bindable(); @@ -70,18 +66,6 @@ namespace osu.Game.Online.Multiplayer [Cached] public Bindable ParticipantCount { get; private set; } = new Bindable(); - public Room() - { - Playlist.ItemsAdded += updateCurrent; - Playlist.ItemsRemoved += updateCurrent; - updateCurrent(Playlist); - } - - private void updateCurrent(IEnumerable playlist) - { - CurrentItem.Value = playlist.FirstOrDefault(); - } - // todo: TEMPORARY [JsonProperty("participant_count")] private int? participantCount @@ -136,11 +120,9 @@ namespace osu.Game.Online.Multiplayer if (DateTimeOffset.Now >= EndDate.Value) Status.Value = new RoomStatusEnded(); - // Todo: Temporary, should only remove/add new items (requires framework changes) - if (Playlist.Count == 0) - Playlist.AddRange(other.Playlist); - else if (other.Playlist.Count > 0) - Playlist.First().ID = other.Playlist.First().ID; + foreach (var removedItem in Playlist.Except(other.Playlist).ToArray()) + Playlist.Remove(removedItem); + Playlist.AddRange(other.Playlist.Except(Playlist).ToArray()); Position = other.Position; } diff --git a/osu.Game/Screens/Multi/Components/BeatmapTitle.cs b/osu.Game/Screens/Multi/Components/BeatmapTitle.cs index b991a3d68d..baf11dfe0d 100644 --- a/osu.Game/Screens/Multi/Components/BeatmapTitle.cs +++ b/osu.Game/Screens/Multi/Components/BeatmapTitle.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.Linq; using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Localisation; @@ -25,7 +26,10 @@ namespace osu.Game.Screens.Multi.Components [BackgroundDependencyLoader] private void load() { - CurrentItem.BindValueChanged(_ => updateText(), true); + Playlist.ItemsAdded += _ => updateText(); + Playlist.ItemsRemoved += _ => updateText(); + + updateText(); } private float textSize = OsuFont.DEFAULT_FONT_SIZE; @@ -54,7 +58,7 @@ namespace osu.Game.Screens.Multi.Components textFlow.Clear(); - var beatmap = CurrentItem.Value?.Beatmap; + var beatmap = Playlist.FirstOrDefault()?.Beatmap; if (beatmap == null) { diff --git a/osu.Game/Screens/Multi/Components/BeatmapTypeInfo.cs b/osu.Game/Screens/Multi/Components/BeatmapTypeInfo.cs index 21b228bb5c..a1334101b8 100644 --- a/osu.Game/Screens/Multi/Components/BeatmapTypeInfo.cs +++ b/osu.Game/Screens/Multi/Components/BeatmapTypeInfo.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.Linq; using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; @@ -12,6 +13,8 @@ namespace osu.Game.Screens.Multi.Components { public class BeatmapTypeInfo : MultiplayerComposite { + private LinkFlowContainer beatmapAuthor; + public BeatmapTypeInfo() { AutoSizeAxes = Axes.Both; @@ -20,8 +23,6 @@ namespace osu.Game.Screens.Multi.Components [BackgroundDependencyLoader] private void load() { - LinkFlowContainer beatmapAuthor; - InternalChild = new FillFlowContainer { AutoSizeAxes = Axes.Both, @@ -50,18 +51,23 @@ namespace osu.Game.Screens.Multi.Components } }; - CurrentItem.BindValueChanged(item => + Playlist.ItemsAdded += _ => updateInfo(); + Playlist.ItemsRemoved += _ => updateInfo(); + + updateInfo(); + } + + private void updateInfo() + { + beatmapAuthor.Clear(); + + var beatmap = Playlist.FirstOrDefault()?.Beatmap; + + if (beatmap != null) { - beatmapAuthor.Clear(); - - var beatmap = item.NewValue?.Beatmap; - - if (beatmap != null) - { - beatmapAuthor.AddText("mapped by ", s => s.Colour = OsuColour.Gray(0.8f)); - beatmapAuthor.AddUserLink(beatmap.Value.Metadata.Author); - } - }, true); + beatmapAuthor.AddText("mapped by ", s => s.Colour = OsuColour.Gray(0.8f)); + beatmapAuthor.AddUserLink(beatmap.Value.Metadata.Author); + } } } } diff --git a/osu.Game/Screens/Multi/Components/ModeTypeInfo.cs b/osu.Game/Screens/Multi/Components/ModeTypeInfo.cs index 5465463888..258541bbd6 100644 --- a/osu.Game/Screens/Multi/Components/ModeTypeInfo.cs +++ b/osu.Game/Screens/Multi/Components/ModeTypeInfo.cs @@ -1,11 +1,11 @@ // 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.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Game.Beatmaps.Drawables; -using osu.Game.Online.Multiplayer; using osuTK; namespace osu.Game.Screens.Multi.Components @@ -46,13 +46,18 @@ namespace osu.Game.Screens.Multi.Components }, }; - CurrentItem.BindValueChanged(item => updateBeatmap(item.NewValue), true); - Type.BindValueChanged(type => gameTypeContainer.Child = new DrawableGameType(type.NewValue) { Size = new Vector2(height) }, true); + + Playlist.ItemsAdded += _ => updateBeatmap(); + Playlist.ItemsRemoved += _ => updateBeatmap(); + + updateBeatmap(); } - private void updateBeatmap(PlaylistItem item) + private void updateBeatmap() { + var item = Playlist.FirstOrDefault(); + if (item?.Beatmap != null) { drawableRuleset.FadeIn(transition_duration); diff --git a/osu.Game/Screens/Multi/Components/MultiplayerBackgroundSprite.cs b/osu.Game/Screens/Multi/Components/MultiplayerBackgroundSprite.cs index 9a1a482699..5e2f2e530a 100644 --- a/osu.Game/Screens/Multi/Components/MultiplayerBackgroundSprite.cs +++ b/osu.Game/Screens/Multi/Components/MultiplayerBackgroundSprite.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.Linq; using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Game.Beatmaps.Drawables; @@ -10,6 +11,7 @@ namespace osu.Game.Screens.Multi.Components public class MultiplayerBackgroundSprite : MultiplayerComposite { private readonly BeatmapSetCoverType beatmapSetCoverType; + private UpdateableBeatmapBackgroundSprite sprite; public MultiplayerBackgroundSprite(BeatmapSetCoverType beatmapSetCoverType = BeatmapSetCoverType.Cover) { @@ -19,11 +21,17 @@ namespace osu.Game.Screens.Multi.Components [BackgroundDependencyLoader] private void load() { - UpdateableBeatmapBackgroundSprite sprite; - InternalChild = sprite = CreateBackgroundSprite(); - CurrentItem.BindValueChanged(item => sprite.Beatmap.Value = item.NewValue?.Beatmap.Value, true); + Playlist.ItemsAdded += _ => updateBeatmap(); + Playlist.ItemsRemoved += _ => updateBeatmap(); + + updateBeatmap(); + } + + private void updateBeatmap() + { + sprite.Beatmap.Value = Playlist.FirstOrDefault()?.Beatmap.Value; } protected virtual UpdateableBeatmapBackgroundSprite CreateBackgroundSprite() => new UpdateableBeatmapBackgroundSprite(beatmapSetCoverType) { RelativeSizeAxes = Axes.Both }; diff --git a/osu.Game/Screens/Multi/Match/Components/Header.cs b/osu.Game/Screens/Multi/Match/Components/Header.cs index 991060cac0..cf1eb6b6ed 100644 --- a/osu.Game/Screens/Multi/Match/Components/Header.cs +++ b/osu.Game/Screens/Multi/Match/Components/Header.cs @@ -33,6 +33,7 @@ namespace osu.Game.Screens.Multi.Match.Components public Action RequestBeatmapSelection; private MatchBeatmapPanel beatmapPanel; + private ModDisplay modDisplay; public Header() { @@ -44,7 +45,6 @@ namespace osu.Game.Screens.Multi.Match.Components private void load(OsuColour colours) { BeatmapSelectButton beatmapButton; - ModDisplay modDisplay; InternalChildren = new Drawable[] { @@ -120,9 +120,12 @@ namespace osu.Game.Screens.Multi.Match.Components }, }; - CurrentItem.BindValueChanged(item => modDisplay.Current.Value = item.NewValue?.RequiredMods?.ToArray() ?? Array.Empty(), true); - beatmapButton.Action = () => RequestBeatmapSelection?.Invoke(); + + Playlist.ItemsAdded += _ => updateMods(); + Playlist.ItemsRemoved += _ => updateMods(); + + updateMods(); } protected override void LoadComplete() @@ -131,6 +134,13 @@ namespace osu.Game.Screens.Multi.Match.Components ShowBeatmapPanel.BindValueChanged(value => beatmapPanel.FadeTo(value.NewValue ? 1 : 0, 200, Easing.OutQuint), true); } + private void updateMods() + { + var item = Playlist.FirstOrDefault(); + + modDisplay.Current.Value = item?.RequiredMods?.ToArray() ?? Array.Empty(); + } + private class BeatmapSelectButton : HeaderButton { [Resolved(typeof(Room), nameof(Room.RoomID))] diff --git a/osu.Game/Screens/Multi/Match/Components/Info.cs b/osu.Game/Screens/Multi/Match/Components/Info.cs index f0b54baa4c..a320b08cc4 100644 --- a/osu.Game/Screens/Multi/Match/Components/Info.cs +++ b/osu.Game/Screens/Multi/Match/Components/Info.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System; +using System.Linq; using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; @@ -18,6 +19,8 @@ namespace osu.Game.Screens.Multi.Match.Components { public Action OnStart; + private ReadyButton readyButton; + public Info() { RelativeSizeAxes = Axes.X; @@ -27,7 +30,6 @@ namespace osu.Game.Screens.Multi.Match.Components [BackgroundDependencyLoader] private void load() { - ReadyButton readyButton; HostInfo hostInfo; InternalChildren = new Drawable[] @@ -89,9 +91,17 @@ namespace osu.Game.Screens.Multi.Match.Components }, }; - CurrentItem.BindValueChanged(item => readyButton.Beatmap.Value = item.NewValue?.Beatmap.Value, true); - hostInfo.Host.BindTo(Host); + + Playlist.ItemsAdded += _ => updateBeatmap(); + Playlist.ItemsRemoved += _ => updateBeatmap(); + + updateBeatmap(); + } + + private void updateBeatmap() + { + readyButton.Beatmap.Value = Playlist.FirstOrDefault()?.Beatmap.Value; } } } diff --git a/osu.Game/Screens/Multi/Match/Components/MatchBeatmapPanel.cs b/osu.Game/Screens/Multi/Match/Components/MatchBeatmapPanel.cs index f67f6d9f43..c8de066caa 100644 --- a/osu.Game/Screens/Multi/Match/Components/MatchBeatmapPanel.cs +++ b/osu.Game/Screens/Multi/Match/Components/MatchBeatmapPanel.cs @@ -1,10 +1,10 @@ // 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 System.Threading; using osu.Framework.Allocation; using osu.Framework.Graphics; -using osu.Game.Beatmaps; using osu.Game.Online.API; using osu.Game.Online.API.Requests; using osu.Game.Overlays.Direct; @@ -32,10 +32,13 @@ namespace osu.Game.Screens.Multi.Match.Components [BackgroundDependencyLoader] private void load() { - CurrentItem.BindValueChanged(item => loadNewPanel(item.NewValue?.Beatmap.Value), true); + Playlist.ItemsAdded += _ => loadNewPanel(); + Playlist.ItemsRemoved += _ => loadNewPanel(); + + loadNewPanel(); } - private void loadNewPanel(BeatmapInfo beatmap) + private void loadNewPanel() { loadCancellation?.Cancel(); request?.Cancel(); @@ -44,6 +47,8 @@ namespace osu.Game.Screens.Multi.Match.Components panel?.Expire(); panel = null; + var beatmap = Playlist.FirstOrDefault()?.Beatmap.Value; + if (beatmap?.OnlineBeatmapID == null) return; diff --git a/osu.Game/Screens/Multi/Match/MatchSubScreen.cs b/osu.Game/Screens/Multi/Match/MatchSubScreen.cs index 9165ef6d0f..890664e99b 100644 --- a/osu.Game/Screens/Multi/Match/MatchSubScreen.cs +++ b/osu.Game/Screens/Multi/Match/MatchSubScreen.cs @@ -41,9 +41,6 @@ namespace osu.Game.Screens.Multi.Match [Resolved(typeof(Room))] protected BindableList Playlist { get; private set; } - [Resolved(typeof(Room))] - protected Bindable CurrentItem { get; private set; } - [Resolved] private BeatmapManager beatmapManager { get; set; } @@ -53,6 +50,7 @@ namespace osu.Game.Screens.Multi.Match [Resolved(CanBeNull = true)] private OsuGame game { get; set; } + private readonly Bindable selectedItem = new Bindable(); private MatchLeaderboard leaderboard; public MatchSubScreen(Room room) @@ -166,7 +164,16 @@ namespace osu.Game.Screens.Multi.Match { base.LoadComplete(); - CurrentItem.BindValueChanged(currentItemChanged, true); + Playlist.ItemsAdded += _ => updateSelectedItem(); + Playlist.ItemsRemoved += _ => updateSelectedItem(); + + updateSelectedItem(); + } + + private void updateSelectedItem() + { + selectedItem.Value = Playlist.FirstOrDefault(); + currentItemChanged(); } public override bool OnExiting(IScreen next) @@ -181,16 +188,18 @@ namespace osu.Game.Screens.Multi.Match /// /// Handles propagation of the current playlist item's content to game-wide mechanisms. /// - private void currentItemChanged(ValueChangedEvent e) + private void currentItemChanged() { + var item = selectedItem.Value; + // Retrieve the corresponding local beatmap, since we can't directly use the playlist's beatmap info - var localBeatmap = e.NewValue?.Beatmap == null ? null : beatmapManager.QueryBeatmap(b => b.OnlineBeatmapID == e.NewValue.Beatmap.Value.OnlineBeatmapID); + var localBeatmap = item?.Beatmap == null ? null : beatmapManager.QueryBeatmap(b => b.OnlineBeatmapID == item.Beatmap.Value.OnlineBeatmapID); Beatmap.Value = beatmapManager.GetWorkingBeatmap(localBeatmap); - Mods.Value = e.NewValue?.RequiredMods?.ToArray() ?? Array.Empty(); + Mods.Value = item?.RequiredMods?.ToArray() ?? Array.Empty(); - if (e.NewValue?.Ruleset != null) - Ruleset.Value = e.NewValue.Ruleset.Value; + if (item?.Ruleset != null) + Ruleset.Value = item.Ruleset.Value; previewTrackManager.StopAnyPlaying(this); } @@ -203,11 +212,11 @@ namespace osu.Game.Screens.Multi.Match if (Beatmap.Value != beatmapManager.DefaultBeatmap) return; - if (CurrentItem.Value == null) + if (selectedItem.Value == null) return; // Try to retrieve the corresponding local beatmap - var localBeatmap = beatmapManager.QueryBeatmap(b => b.OnlineBeatmapID == CurrentItem.Value.Beatmap.Value.OnlineBeatmapID); + var localBeatmap = beatmapManager.QueryBeatmap(b => b.OnlineBeatmapID == selectedItem.Value.Beatmap.Value.OnlineBeatmapID); if (localBeatmap != null) Beatmap.Value = beatmapManager.GetWorkingBeatmap(localBeatmap); @@ -224,7 +233,7 @@ namespace osu.Game.Screens.Multi.Match { default: case GameTypeTimeshift _: - multiplayer?.Start(() => new TimeshiftPlayer(CurrentItem.Value) + multiplayer?.Start(() => new TimeshiftPlayer(selectedItem.Value) { Exited = () => leaderboard.RefreshScores() }); diff --git a/osu.Game/Screens/Multi/MultiplayerComposite.cs b/osu.Game/Screens/Multi/MultiplayerComposite.cs index 8c09d576ff..cf4a189951 100644 --- a/osu.Game/Screens/Multi/MultiplayerComposite.cs +++ b/osu.Game/Screens/Multi/MultiplayerComposite.cs @@ -31,9 +31,6 @@ namespace osu.Game.Screens.Multi [Resolved(typeof(Room))] protected BindableList Playlist { get; private set; } - [Resolved(typeof(Room))] - protected Bindable CurrentItem { get; private set; } - [Resolved(typeof(Room))] protected Bindable> Participants { get; private set; } diff --git a/osu.Game/Screens/Select/MatchSongSelect.cs b/osu.Game/Screens/Select/MatchSongSelect.cs index ff0544d227..251456bf0d 100644 --- a/osu.Game/Screens/Select/MatchSongSelect.cs +++ b/osu.Game/Screens/Select/MatchSongSelect.cs @@ -22,11 +22,11 @@ namespace osu.Game.Screens.Select public string ShortTitle => "song selection"; public override string Title => ShortTitle.Humanize(); - [Resolved(typeof(Room))] - protected Bindable CurrentItem { get; private set; } - public override bool AllowEditing => false; + [Resolved(typeof(Room), nameof(Room.Playlist))] + protected BindableList Playlist { get; private set; } + [Resolved] private BeatmapManager beatmaps { get; set; } @@ -59,11 +59,13 @@ namespace osu.Game.Screens.Select if (base.OnExiting(next)) return true; - if (CurrentItem.Value != null) + var firstItem = Playlist.FirstOrDefault(); + + if (firstItem != null) { - Ruleset.Value = CurrentItem.Value.Ruleset.Value; - Beatmap.Value = beatmaps.GetWorkingBeatmap(CurrentItem.Value.Beatmap.Value); - Mods.Value = CurrentItem.Value.RequiredMods?.ToArray() ?? Array.Empty(); + Ruleset.Value = firstItem.Ruleset.Value; + Beatmap.Value = beatmaps.GetWorkingBeatmap(firstItem.Beatmap.Value); + Mods.Value = firstItem.RequiredMods?.ToArray() ?? Array.Empty(); } return false; From bce9c8f3f30352ffa9b29d705fd72557d98b55f9 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 13 Feb 2020 18:59:15 +0900 Subject: [PATCH 1479/1829] Make room participants into a bindable list --- .../Multiplayer/TestSceneMatchParticipants.cs | 6 +++--- osu.Game/Online/Multiplayer/Room.cs | 7 +++++-- .../Multi/Match/Components/Participants.cs | 13 +++++++++---- .../Screens/Multi/MultiplayerComposite.cs | 3 +-- osu.Game/Users/UserPanel.cs | 19 ++++++++++--------- 5 files changed, 28 insertions(+), 20 deletions(-) diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchParticipants.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchParticipants.cs index 1ac914e27d..a6f47961e9 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchParticipants.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchParticipants.cs @@ -16,7 +16,7 @@ namespace osu.Game.Tests.Visual.Multiplayer Add(new Participants { RelativeSizeAxes = Axes.Both }); AddStep(@"set max to null", () => Room.MaxParticipants.Value = null); - AddStep(@"set users", () => Room.Participants.Value = new[] + AddStep(@"set users", () => Room.Participants.AddRange(new[] { new User { @@ -42,10 +42,10 @@ namespace osu.Game.Tests.Visual.Multiplayer CoverUrl = @"https://assets.ppy.sh/user-profile-covers/5287410/5cfeaa9dd41cbce038ecdc9d781396ed4b0108089170bf7f50492ef8eadeb368.jpeg", IsSupporter = true, }, - }); + })); AddStep(@"set max", () => Room.MaxParticipants.Value = 10); - AddStep(@"clear users", () => Room.Participants.Value = System.Array.Empty()); + AddStep(@"clear users", () => Room.Participants.Clear()); AddStep(@"set max to null", () => Room.MaxParticipants.Value = null); } } diff --git a/osu.Game/Online/Multiplayer/Room.cs b/osu.Game/Online/Multiplayer/Room.cs index 53089897f7..0f4abeafd4 100644 --- a/osu.Game/Online/Multiplayer/Room.cs +++ b/osu.Game/Online/Multiplayer/Room.cs @@ -65,7 +65,7 @@ namespace osu.Game.Online.Multiplayer [Cached] [JsonIgnore] - public Bindable> Participants { get; private set; } = new Bindable>(Enumerable.Empty()); + public BindableList Participants { get; private set; } = new BindableList(); [Cached] public Bindable ParticipantCount { get; private set; } = new Bindable(); @@ -130,7 +130,6 @@ namespace osu.Game.Online.Multiplayer Type.Value = other.Type.Value; MaxParticipants.Value = other.MaxParticipants.Value; ParticipantCount.Value = other.ParticipantCount.Value; - Participants.Value = other.Participants.Value.ToArray(); EndDate.Value = other.EndDate.Value; if (DateTimeOffset.Now >= EndDate.Value) @@ -142,6 +141,10 @@ namespace osu.Game.Online.Multiplayer else if (other.Playlist.Count > 0) Playlist.First().ID = other.Playlist.First().ID; + foreach (var removedItem in Participants.Except(other.Participants).ToArray()) + Participants.Remove(removedItem); + Participants.AddRange(other.Participants.Except(Participants).ToArray()); + Position = other.Position; } diff --git a/osu.Game/Screens/Multi/Match/Components/Participants.cs b/osu.Game/Screens/Multi/Match/Components/Participants.cs index ad38ec6a99..00d2f3e150 100644 --- a/osu.Game/Screens/Multi/Match/Components/Participants.cs +++ b/osu.Game/Screens/Multi/Match/Components/Participants.cs @@ -51,9 +51,9 @@ namespace osu.Game.Screens.Multi.Match.Components }, }; - Participants.BindValueChanged(participants => + Participants.ItemsAdded += users => { - usersFlow.Children = participants.NewValue.Select(u => + usersFlow.AddRange(users.Select(u => { var panel = new UserPanel(u) { @@ -65,8 +65,13 @@ namespace osu.Game.Screens.Multi.Match.Components panel.OnLoadComplete += d => d.FadeInFromZero(60); return panel; - }).ToList(); - }, true); + }).ToList()); + }; + + Participants.ItemsRemoved += users => + { + usersFlow.RemoveAll(p => users.Contains(p.User)); + }; } } } diff --git a/osu.Game/Screens/Multi/MultiplayerComposite.cs b/osu.Game/Screens/Multi/MultiplayerComposite.cs index 8c09d576ff..346f78f2c6 100644 --- a/osu.Game/Screens/Multi/MultiplayerComposite.cs +++ b/osu.Game/Screens/Multi/MultiplayerComposite.cs @@ -2,7 +2,6 @@ // See the LICENCE file in the repository root for full licence text. using System; -using System.Collections.Generic; using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics.Containers; @@ -35,7 +34,7 @@ namespace osu.Game.Screens.Multi protected Bindable CurrentItem { get; private set; } [Resolved(typeof(Room))] - protected Bindable> Participants { get; private set; } + protected BindableList Participants { get; private set; } [Resolved(typeof(Room))] protected Bindable ParticipantCount { get; private set; } diff --git a/osu.Game/Users/UserPanel.cs b/osu.Game/Users/UserPanel.cs index 6ddbc13a06..6f34466e94 100644 --- a/osu.Game/Users/UserPanel.cs +++ b/osu.Game/Users/UserPanel.cs @@ -26,11 +26,12 @@ namespace osu.Game.Users { public class UserPanel : OsuClickableContainer, IHasContextMenu { - private readonly User user; private const float height = 100; private const float content_padding = 10; private const float status_height = 30; + public readonly User User; + [Resolved(canBeNull: true)] private OsuColour colours { get; set; } @@ -54,7 +55,7 @@ namespace osu.Game.Users if (user == null) throw new ArgumentNullException(nameof(user)); - this.user = user; + User = user; Height = height - status_height; } @@ -86,7 +87,7 @@ namespace osu.Game.Users RelativeSizeAxes = Axes.Both, Anchor = Anchor.Centre, Origin = Anchor.Centre, - User = user, + User = User, }, 300, 5000) { RelativeSizeAxes = Axes.Both, @@ -106,7 +107,7 @@ namespace osu.Game.Users new UpdateableAvatar { Size = new Vector2(height - status_height - content_padding * 2), - User = user, + User = User, Masking = true, CornerRadius = 5, OpenOnClick = { Value = false }, @@ -125,7 +126,7 @@ namespace osu.Game.Users { new OsuSpriteText { - Text = user.Username, + Text = User.Username, Font = OsuFont.GetFont(weight: FontWeight.SemiBold, size: 18, italics: true), }, infoContainer = new FillFlowContainer @@ -138,7 +139,7 @@ namespace osu.Game.Users Spacing = new Vector2(5f, 0f), Children = new Drawable[] { - new UpdateableFlag(user.Country) + new UpdateableFlag(User.Country) { Width = 30f, RelativeSizeAxes = Axes.Y, @@ -191,12 +192,12 @@ namespace osu.Game.Users } }); - if (user.IsSupporter) + if (User.IsSupporter) { infoContainer.Add(new SupporterIcon { Height = 20f, - SupportLevel = user.SupportLevel + SupportLevel = User.SupportLevel }); } @@ -206,7 +207,7 @@ namespace osu.Game.Users base.Action = ViewProfile = () => { Action?.Invoke(); - profile?.ShowUser(user); + profile?.ShowUser(User); }; } From bc1c4f6b583eae9b2b6020f0f896cba6c21e1907 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 13 Feb 2020 19:04:23 +0900 Subject: [PATCH 1480/1829] Add missing null-allowance --- osu.Game/Online/Leaderboards/LeaderboardScore.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Online/Leaderboards/LeaderboardScore.cs b/osu.Game/Online/Leaderboards/LeaderboardScore.cs index c9131883bb..1f52a4481b 100644 --- a/osu.Game/Online/Leaderboards/LeaderboardScore.cs +++ b/osu.Game/Online/Leaderboards/LeaderboardScore.cs @@ -55,7 +55,7 @@ namespace osu.Game.Online.Leaderboards private List statisticsLabels; - [Resolved] + [Resolved(CanBeNull = true)] private DialogOverlay dialogOverlay { get; set; } public LeaderboardScore(ScoreInfo score, int rank, bool allowHighlight = true) From a677aa6cfc5212223175d40f34279cb3573c78ae Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 13 Feb 2020 13:39:33 +0300 Subject: [PATCH 1481/1829] Add rankings overlay to the game --- osu.Game/OsuGame.cs | 5 ++++- osu.Game/Overlays/Toolbar/Toolbar.cs | 1 + .../Overlays/Toolbar/ToolbarRankingsButton.cs | 22 +++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 osu.Game/Overlays/Toolbar/ToolbarRankingsButton.cs diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index e7fffd49b4..e034fcc3ac 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -65,6 +65,8 @@ namespace osu.Game private DirectOverlay direct; + private RankingsOverlay rankings; + private SocialOverlay social; private UserProfileOverlay userProfile; @@ -600,6 +602,7 @@ namespace osu.Game //overlay elements loadComponentSingleFile(direct = new DirectOverlay(), overlayContent.Add, true); loadComponentSingleFile(social = new SocialOverlay(), overlayContent.Add, true); + loadComponentSingleFile(rankings = new RankingsOverlay(), overlayContent.Add, true); loadComponentSingleFile(channelManager = new ChannelManager(), AddInternal, true); loadComponentSingleFile(chatOverlay = new ChatOverlay(), overlayContent.Add, true); loadComponentSingleFile(Settings = new SettingsOverlay { GetToolbarHeight = () => ToolbarOffset }, leftFloatingOverlayContent.Add, true); @@ -643,7 +646,7 @@ namespace osu.Game } // eventually informational overlays should be displayed in a stack, but for now let's only allow one to stay open at a time. - var informationalOverlays = new OverlayContainer[] { beatmapSetOverlay, userProfile }; + var informationalOverlays = new OverlayContainer[] { beatmapSetOverlay, userProfile, rankings }; foreach (var overlay in informationalOverlays) { diff --git a/osu.Game/Overlays/Toolbar/Toolbar.cs b/osu.Game/Overlays/Toolbar/Toolbar.cs index b044bc4de0..897587d198 100644 --- a/osu.Game/Overlays/Toolbar/Toolbar.cs +++ b/osu.Game/Overlays/Toolbar/Toolbar.cs @@ -70,6 +70,7 @@ namespace osu.Game.Overlays.Toolbar Children = new Drawable[] { new ToolbarChangelogButton(), + new ToolbarRankingsButton(), new ToolbarDirectButton(), new ToolbarChatButton(), new ToolbarSocialButton(), diff --git a/osu.Game/Overlays/Toolbar/ToolbarRankingsButton.cs b/osu.Game/Overlays/Toolbar/ToolbarRankingsButton.cs new file mode 100644 index 0000000000..cbd097696d --- /dev/null +++ b/osu.Game/Overlays/Toolbar/ToolbarRankingsButton.cs @@ -0,0 +1,22 @@ +// 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.Graphics.Sprites; + +namespace osu.Game.Overlays.Toolbar +{ + public class ToolbarRankingsButton : ToolbarOverlayToggleButton + { + public ToolbarRankingsButton() + { + SetIcon(FontAwesome.Regular.ChartBar); + } + + [BackgroundDependencyLoader(true)] + private void load(RankingsOverlay rankings) + { + StateContainer = rankings; + } + } +} From f05c1de4c10a68c910ae7435f2a04a288cebf250 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 13 Feb 2020 14:11:53 +0300 Subject: [PATCH 1482/1829] Fix possible nullref --- osu.Game/Overlays/RankingsOverlay.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index f3215d07fa..69ca687871 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -135,6 +135,9 @@ namespace osu.Game.Overlays private void loadNewContent() { + if (ruleset.Value == null) + return; + loading.Show(); cancellationToken?.Cancel(); From 11c59a141f24aebf68f21fb7d79f88980b1233f1 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 13 Feb 2020 14:12:10 +0300 Subject: [PATCH 1483/1829] Add background to rankings header --- osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs b/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs index 2674b3a81e..72d5b6462d 100644 --- a/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs +++ b/osu.Game/Overlays/Rankings/RankingsOverlayHeader.cs @@ -29,6 +29,8 @@ namespace osu.Game.Overlays.Rankings Current = Country }; + protected override Drawable CreateBackground() => new OverlayHeaderBackground(@"Headers/rankings"); + private class RankingsTitle : ScreenTitle { public readonly Bindable Scope = new Bindable(); From 382cc1a91ba24fa00e89e641e5f86ff517d2e34e Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 13 Feb 2020 14:26:35 +0300 Subject: [PATCH 1484/1829] Fix incorrect overlays overlapping --- osu.Game/OsuGame.cs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index e034fcc3ac..c31f15716b 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -65,8 +65,6 @@ namespace osu.Game private DirectOverlay direct; - private RankingsOverlay rankings; - private SocialOverlay social; private UserProfileOverlay userProfile; @@ -602,7 +600,7 @@ namespace osu.Game //overlay elements loadComponentSingleFile(direct = new DirectOverlay(), overlayContent.Add, true); loadComponentSingleFile(social = new SocialOverlay(), overlayContent.Add, true); - loadComponentSingleFile(rankings = new RankingsOverlay(), overlayContent.Add, true); + var rankingsOverlay = loadComponentSingleFile(new RankingsOverlay(), overlayContent.Add, true); loadComponentSingleFile(channelManager = new ChannelManager(), AddInternal, true); loadComponentSingleFile(chatOverlay = new ChatOverlay(), overlayContent.Add, true); loadComponentSingleFile(Settings = new SettingsOverlay { GetToolbarHeight = () => ToolbarOffset }, leftFloatingOverlayContent.Add, true); @@ -646,7 +644,7 @@ namespace osu.Game } // eventually informational overlays should be displayed in a stack, but for now let's only allow one to stay open at a time. - var informationalOverlays = new OverlayContainer[] { beatmapSetOverlay, userProfile, rankings }; + var informationalOverlays = new OverlayContainer[] { beatmapSetOverlay, userProfile }; foreach (var overlay in informationalOverlays) { @@ -659,7 +657,7 @@ namespace osu.Game } // ensure only one of these overlays are open at once. - var singleDisplayOverlays = new OverlayContainer[] { chatOverlay, social, direct, changelogOverlay }; + var singleDisplayOverlays = new OverlayContainer[] { chatOverlay, social, direct, changelogOverlay, rankingsOverlay }; foreach (var overlay in singleDisplayOverlays) { From b2fbeab7732437b8671c512fe69eabeb6deefb47 Mon Sep 17 00:00:00 2001 From: Maximilian Junges Date: Thu, 13 Feb 2020 14:07:14 +0100 Subject: [PATCH 1485/1829] simplify string formatting and fix color --- osu.Game/Graphics/DrawableDate.cs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/osu.Game/Graphics/DrawableDate.cs b/osu.Game/Graphics/DrawableDate.cs index dcbea96071..8c520f4e10 100644 --- a/osu.Game/Graphics/DrawableDate.cs +++ b/osu.Game/Graphics/DrawableDate.cs @@ -126,10 +126,8 @@ namespace osu.Game.Graphics [BackgroundDependencyLoader] private void load(OsuColour colours) { - // Temporary colour since it's currently impossible to change it without bugs (see https://github.com/ppy/osu-framework/issues/3231) - // If above is fixed, this should use OverlayColourProvider - background.Colour = colours.Gray1; - timeText.Colour = colours.GreyCyanLighter; + background.Colour = colours.GreySeafoamDarker; + timeText.Colour = colours.BlueLighter; } protected override void PopIn() => this.FadeIn(200, Easing.OutQuint); @@ -140,8 +138,8 @@ namespace osu.Game.Graphics if (!(content is DateTimeOffset date)) return false; - dateText.Text = string.Format($"{date:d MMMM yyyy}") + " "; - timeText.Text = string.Format($"{date:hh:mm:ss \"UTC\"z}"); + dateText.Text = $"{date:d MMMM yyyy} "; + timeText.Text = $"{date:hh:mm:ss \"UTC\"z}"; return true; } From e181a95c855d1ba6562219a7df9776955f1a7a4d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 13 Feb 2020 22:28:37 +0900 Subject: [PATCH 1486/1829] Remove unused using --- osu.Game/Online/Multiplayer/Room.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Online/Multiplayer/Room.cs b/osu.Game/Online/Multiplayer/Room.cs index ff11a74a1a..400afb39a1 100644 --- a/osu.Game/Online/Multiplayer/Room.cs +++ b/osu.Game/Online/Multiplayer/Room.cs @@ -2,7 +2,6 @@ // See the LICENCE file in the repository root for full licence text. using System; -using System.Collections.Generic; using System.Linq; using Newtonsoft.Json; using osu.Framework.Allocation; From e67e4f708ea996e594992321a0e01cf037a967ed Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 13 Feb 2020 19:01:26 +0300 Subject: [PATCH 1487/1829] Adjust country name design --- .../Rankings/Tables/CountriesTable.cs | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/osu.Game/Overlays/Rankings/Tables/CountriesTable.cs b/osu.Game/Overlays/Rankings/Tables/CountriesTable.cs index a0e4f694bd..ed8e956e5e 100644 --- a/osu.Game/Overlays/Rankings/Tables/CountriesTable.cs +++ b/osu.Game/Overlays/Rankings/Tables/CountriesTable.cs @@ -8,6 +8,7 @@ using osu.Game.Users; using osu.Game.Graphics.Sprites; using osu.Game.Graphics; using System.Collections.Generic; +using osu.Framework.Allocation; namespace osu.Game.Overlays.Rankings.Tables { @@ -30,11 +31,7 @@ namespace osu.Game.Overlays.Rankings.Tables protected override Country GetCountry(CountryStatistics item) => item.Country; - protected override Drawable CreateFlagContent(CountryStatistics item) => new OsuSpriteText - { - Font = OsuFont.GetFont(size: TEXT_SIZE), - Text = $@"{item.Country.FullName}", - }; + protected override Drawable CreateFlagContent(CountryStatistics item) => new CountryName(item.Country); protected override Drawable[] CreateAdditionalContent(CountryStatistics item) => new Drawable[] { @@ -63,5 +60,20 @@ namespace osu.Game.Overlays.Rankings.Tables Text = $@"{item.Performance / Math.Max(item.ActiveUsers, 1):N0}", } }; + + private class CountryName : OsuSpriteText + { + public CountryName(Country country) + { + Font = OsuFont.GetFont(size: 12, italics: true); + Text = $@"{country.FullName}"; + } + + [BackgroundDependencyLoader] + private void load(OverlayColourProvider colourProvider) + { + Colour = colourProvider.Light2; + } + } } } From 791bf6bc0197118f44654f754f9a407f4bda5f6b Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 13 Feb 2020 19:03:07 +0300 Subject: [PATCH 1488/1829] Make username text italic --- osu.Game/Overlays/Rankings/Tables/UserBasedTable.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Rankings/Tables/UserBasedTable.cs b/osu.Game/Overlays/Rankings/Tables/UserBasedTable.cs index 0e77d7d764..cad7364103 100644 --- a/osu.Game/Overlays/Rankings/Tables/UserBasedTable.cs +++ b/osu.Game/Overlays/Rankings/Tables/UserBasedTable.cs @@ -34,7 +34,7 @@ namespace osu.Game.Overlays.Rankings.Tables protected sealed override Drawable CreateFlagContent(UserStatistics item) { - var username = new LinkFlowContainer(t => t.Font = OsuFont.GetFont(size: TEXT_SIZE)) { AutoSizeAxes = Axes.Both }; + var username = new LinkFlowContainer(t => t.Font = OsuFont.GetFont(size: TEXT_SIZE, italics: true)) { AutoSizeAxes = Axes.Both }; username.AddUserLink(item.User); return username; } From dac0148c94076026b579a8bc31fbba93bdd134c3 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Thu, 13 Feb 2020 20:08:14 +0100 Subject: [PATCH 1489/1829] Apply review suggestions. --- .../Online/TestSceneOnlineViewContainer.cs | 2 +- osu.Game/Online/OnlineViewContainer.cs | 16 ++++++---------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs index 2b9609f6e0..9dac28d347 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs @@ -32,7 +32,7 @@ namespace osu.Game.Tests.Visual.Online { public new LoadingAnimation LoadingAnimation => base.LoadingAnimation; - public CompositeDrawable ViewTarget => base.Content.Parent; + public CompositeDrawable ViewTarget => base.Content; public TestOnlineViewContainer() : base(@"Please sign in to view dummy test content") diff --git a/osu.Game/Online/OnlineViewContainer.cs b/osu.Game/Online/OnlineViewContainer.cs index c512ca531a..4b59f6ae80 100644 --- a/osu.Game/Online/OnlineViewContainer.cs +++ b/osu.Game/Online/OnlineViewContainer.cs @@ -21,8 +21,8 @@ namespace osu.Game.Online protected const double TRANSFORM_TIME = 300.0; - private readonly Container viewTarget; - protected override Container Content { get; } + private Container viewContent; + protected override Container Content => viewContent; [Resolved] protected IAPIProvider API { get; private set; } @@ -31,13 +31,9 @@ namespace osu.Game.Online { InternalChildren = new Drawable[] { - viewTarget = new Container + viewContent = new Container { RelativeSizeAxes = Axes.Both, - Child = Content = new Container - { - RelativeSizeAxes = Axes.Both, - } }, placeholder = new LoginPlaceholder(placeholderMessage), LoadingAnimation = new LoadingAnimation @@ -52,21 +48,21 @@ namespace osu.Game.Online switch (state) { case APIState.Offline: - PopContentOut(viewTarget); + PopContentOut(viewContent); placeholder.ScaleTo(0.8f).Then().ScaleTo(1, 3 * TRANSFORM_TIME, Easing.OutQuint); placeholder.FadeInFromZero(2 * TRANSFORM_TIME, Easing.OutQuint); LoadingAnimation.Hide(); break; case APIState.Online: - PopContentIn(viewTarget); + PopContentIn(viewContent); placeholder.FadeOut(TRANSFORM_TIME / 2, Easing.OutQuint); LoadingAnimation.Hide(); break; case APIState.Failing: case APIState.Connecting: - PopContentOut(viewTarget); + PopContentOut(viewContent); LoadingAnimation.Show(); placeholder.FadeOut(TRANSFORM_TIME / 2, Easing.OutQuint); break; From cc625e3b897dd2669fe6300de9a6924082e97652 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Thu, 13 Feb 2020 20:44:02 +0100 Subject: [PATCH 1490/1829] Move initialisation logic to [SetUp] --- .../UserInterface/TestSceneCommentEditor.cs | 122 +++++++++--------- 1 file changed, 59 insertions(+), 63 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs index a7888bb0b4..aaf26f78a7 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs @@ -31,73 +31,13 @@ namespace osu.Game.Tests.Visual.UserInterface private string commitText; private bool cancelActionFired; - [Test] - public void TestCommitViaKeyboard() + [SetUp] + public void SetUp() { - AddStep("Create", createEditors); - AddStep("Click on textbox", () => - { - InputManager.MoveMouseTo(commentEditor); - InputManager.Click(MouseButton.Left); - }); - AddStep("Write something", () => commentEditor.Current.Value = "text"); - AddStep("Click Enter", () => press(Key.Enter)); - AddAssert("Text has been invoked", () => !string.IsNullOrEmpty(commitText)); - AddAssert("Button is loading", () => commentEditor.IsLoading); - } - - [Test] - public void TestCommitViaKeyboardWhenEmpty() - { - AddStep("Create", createEditors); - AddStep("Click on textbox", () => - { - InputManager.MoveMouseTo(commentEditor); - InputManager.Click(MouseButton.Left); - }); - AddStep("Click Enter", () => press(Key.Enter)); - AddAssert("Text not invoked", () => string.IsNullOrEmpty(commitText)); - AddAssert("Button is not loading", () => !commentEditor.IsLoading); - } - - [Test] - public void TestCommitViaButton() - { - AddStep("Create", createEditors); - AddStep("Click on textbox", () => - { - InputManager.MoveMouseTo(commentEditor); - InputManager.Click(MouseButton.Left); - }); - AddStep("Write something", () => commentEditor.Current.Value = "text"); - AddStep("Click on button", () => - { - InputManager.MoveMouseTo(commentEditor.ButtonsContainer); - InputManager.Click(MouseButton.Left); - }); - AddAssert("Text has been invoked", () => !string.IsNullOrEmpty(commitText)); - AddAssert("Button is loading", () => commentEditor.IsLoading); - } - - [Test] - public void TestCancelAction() - { - AddStep("Create", createEditors); - AddStep("Click on cancel button", () => - { - InputManager.MoveMouseTo(cancellableCommentEditor.ButtonsContainer); - InputManager.Click(MouseButton.Left); - }); - AddAssert("Cancel action is fired", () => cancelActionFired); - } - - private void createEditors() - { - Clear(); commitText = string.Empty; cancelActionFired = false; - Add(new FillFlowContainer + Schedule(() => Add(new FillFlowContainer { Anchor = Anchor.Centre, Origin = Anchor.Centre, @@ -117,7 +57,63 @@ namespace osu.Game.Tests.Visual.UserInterface OnCancel = onCancel } } + })); + } + + [Test] + public void TestCommitViaKeyboard() + { + AddStep("Click on textbox", () => + { + InputManager.MoveMouseTo(commentEditor); + InputManager.Click(MouseButton.Left); }); + AddStep("Write something", () => commentEditor.Current.Value = "text"); + AddStep("Click Enter", () => press(Key.Enter)); + AddAssert("Text has been invoked", () => !string.IsNullOrEmpty(commitText)); + AddAssert("Button is loading", () => commentEditor.IsLoading); + } + + [Test] + public void TestCommitViaKeyboardWhenEmpty() + { + AddStep("Click on textbox", () => + { + InputManager.MoveMouseTo(commentEditor); + InputManager.Click(MouseButton.Left); + }); + AddStep("Click Enter", () => press(Key.Enter)); + AddAssert("Text not invoked", () => string.IsNullOrEmpty(commitText)); + AddAssert("Button is not loading", () => !commentEditor.IsLoading); + } + + [Test] + public void TestCommitViaButton() + { + AddStep("Click on textbox", () => + { + InputManager.MoveMouseTo(commentEditor); + InputManager.Click(MouseButton.Left); + }); + AddStep("Write something", () => commentEditor.Current.Value = "text"); + AddStep("Click on button", () => + { + InputManager.MoveMouseTo(commentEditor.ButtonsContainer); + InputManager.Click(MouseButton.Left); + }); + AddAssert("Text has been invoked", () => !string.IsNullOrEmpty(commitText)); + AddAssert("Button is loading", () => commentEditor.IsLoading); + } + + [Test] + public void TestCancelAction() + { + AddStep("Click on cancel button", () => + { + InputManager.MoveMouseTo(cancellableCommentEditor.ButtonsContainer); + InputManager.Click(MouseButton.Left); + }); + AddAssert("Cancel action is fired", () => cancelActionFired); } private void onCommit(string value) From 09b2e7beed1d317bfa0bce11f02b3dd7f86f35bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Thu, 13 Feb 2020 20:56:34 +0100 Subject: [PATCH 1491/1829] Encapsulate test editors --- .../UserInterface/TestSceneCommentEditor.cs | 68 ++++++++----------- 1 file changed, 28 insertions(+), 40 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs index aaf26f78a7..8005e9a2bc 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs @@ -28,16 +28,10 @@ namespace osu.Game.Tests.Visual.UserInterface private TestCommentEditor commentEditor; private TestCancellableCommentEditor cancellableCommentEditor; - private string commitText; - private bool cancelActionFired; [SetUp] - public void SetUp() - { - commitText = string.Empty; - cancelActionFired = false; - - Schedule(() => Add(new FillFlowContainer + public void SetUp() => Schedule(() => + Add(new FillFlowContainer { Anchor = Anchor.Centre, Origin = Anchor.Centre, @@ -47,18 +41,10 @@ namespace osu.Game.Tests.Visual.UserInterface Spacing = new Vector2(0, 20), Children = new Drawable[] { - commentEditor = new TestCommentEditor - { - OnCommit = onCommit, - }, - cancellableCommentEditor = new TestCancellableCommentEditor - { - OnCommit = onCommit, - OnCancel = onCancel - } + commentEditor = new TestCommentEditor(), + cancellableCommentEditor = new TestCancellableCommentEditor() } })); - } [Test] public void TestCommitViaKeyboard() @@ -70,7 +56,7 @@ namespace osu.Game.Tests.Visual.UserInterface }); AddStep("Write something", () => commentEditor.Current.Value = "text"); AddStep("Click Enter", () => press(Key.Enter)); - AddAssert("Text has been invoked", () => !string.IsNullOrEmpty(commitText)); + AddAssert("Text has been invoked", () => !string.IsNullOrEmpty(commentEditor.CommittedText)); AddAssert("Button is loading", () => commentEditor.IsLoading); } @@ -83,7 +69,7 @@ namespace osu.Game.Tests.Visual.UserInterface InputManager.Click(MouseButton.Left); }); AddStep("Click Enter", () => press(Key.Enter)); - AddAssert("Text not invoked", () => string.IsNullOrEmpty(commitText)); + AddAssert("Text not invoked", () => string.IsNullOrEmpty(commentEditor.CommittedText)); AddAssert("Button is not loading", () => !commentEditor.IsLoading); } @@ -101,7 +87,7 @@ namespace osu.Game.Tests.Visual.UserInterface InputManager.MoveMouseTo(commentEditor.ButtonsContainer); InputManager.Click(MouseButton.Left); }); - AddAssert("Text has been invoked", () => !string.IsNullOrEmpty(commitText)); + AddAssert("Text has been invoked", () => !string.IsNullOrEmpty(commentEditor.CommittedText)); AddAssert("Button is loading", () => commentEditor.IsLoading); } @@ -113,22 +99,9 @@ namespace osu.Game.Tests.Visual.UserInterface InputManager.MoveMouseTo(cancellableCommentEditor.ButtonsContainer); InputManager.Click(MouseButton.Left); }); - AddAssert("Cancel action is fired", () => cancelActionFired); + AddAssert("Cancel action is fired", () => cancellableCommentEditor.Cancelled); } - private void onCommit(string value) - { - commitText = value; - - Scheduler.AddDelayed(() => - { - commentEditor.IsLoading = false; - cancellableCommentEditor.IsLoading = false; - }, 1000); - } - - private void onCancel() => cancelActionFired = true; - private void press(Key key) { InputManager.PressKey(key); @@ -138,24 +111,39 @@ namespace osu.Game.Tests.Visual.UserInterface private class TestCommentEditor : CommentEditor { public new Bindable Current => base.Current; - public new FillFlowContainer ButtonsContainer => base.ButtonsContainer; + public string CommittedText { get; private set; } + + public TestCommentEditor() + { + OnCommit = onCommit; + } + + private void onCommit(string value) + { + CommittedText = value; + Scheduler.AddDelayed(() => IsLoading = false, 1000); + } + protected override string FooterText => @"Footer text. And it is pretty long. Cool."; - protected override string CommitButtonText => @"Commit"; - protected override string TextboxPlaceholderText => @"This textbox is empty"; } private class TestCancellableCommentEditor : CancellableCommentEditor { public new FillFlowContainer ButtonsContainer => base.ButtonsContainer; - protected override string FooterText => @"Wow, another one. Sicc"; - protected override string CommitButtonText => @"Save"; + public bool Cancelled { get; private set; } + public TestCancellableCommentEditor() + { + OnCancel = () => Cancelled = true; + } + + protected override string CommitButtonText => @"Save"; protected override string TextboxPlaceholderText => @"Miltiline textboxes soon"; } } From 5646083ed9ae4214e9f436b6ff1a7f0d8e107576 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Thu, 13 Feb 2020 21:01:25 +0100 Subject: [PATCH 1492/1829] Adjust code style in test --- .../UserInterface/TestSceneCommentEditor.cs | 43 +++++++++++-------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs index 8005e9a2bc..a5ef8b046d 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs @@ -49,57 +49,64 @@ namespace osu.Game.Tests.Visual.UserInterface [Test] public void TestCommitViaKeyboard() { - AddStep("Click on textbox", () => + AddStep("click on text box", () => { InputManager.MoveMouseTo(commentEditor); InputManager.Click(MouseButton.Left); }); - AddStep("Write something", () => commentEditor.Current.Value = "text"); - AddStep("Click Enter", () => press(Key.Enter)); - AddAssert("Text has been invoked", () => !string.IsNullOrEmpty(commentEditor.CommittedText)); - AddAssert("Button is loading", () => commentEditor.IsLoading); + AddStep("enter text", () => commentEditor.Current.Value = "text"); + + AddStep("press Enter", () => press(Key.Enter)); + + AddAssert("text committed", () => commentEditor.CommittedText == "text"); + AddAssert("button is loading", () => commentEditor.IsLoading); } [Test] public void TestCommitViaKeyboardWhenEmpty() { - AddStep("Click on textbox", () => + AddStep("click on text box", () => { InputManager.MoveMouseTo(commentEditor); InputManager.Click(MouseButton.Left); }); - AddStep("Click Enter", () => press(Key.Enter)); - AddAssert("Text not invoked", () => string.IsNullOrEmpty(commentEditor.CommittedText)); - AddAssert("Button is not loading", () => !commentEditor.IsLoading); + + AddStep("press Enter", () => press(Key.Enter)); + + AddAssert("no text committed", () => commentEditor.CommittedText == null); + AddAssert("button is not loading", () => !commentEditor.IsLoading); } [Test] public void TestCommitViaButton() { - AddStep("Click on textbox", () => + AddStep("click on text box", () => { InputManager.MoveMouseTo(commentEditor); InputManager.Click(MouseButton.Left); }); - AddStep("Write something", () => commentEditor.Current.Value = "text"); - AddStep("Click on button", () => + AddStep("enter text", () => commentEditor.Current.Value = "some other text"); + + AddStep("click submit", () => { InputManager.MoveMouseTo(commentEditor.ButtonsContainer); InputManager.Click(MouseButton.Left); }); - AddAssert("Text has been invoked", () => !string.IsNullOrEmpty(commentEditor.CommittedText)); - AddAssert("Button is loading", () => commentEditor.IsLoading); + + AddAssert("text committed", () => commentEditor.CommittedText == "some other text"); + AddAssert("button is loading", () => commentEditor.IsLoading); } [Test] public void TestCancelAction() { - AddStep("Click on cancel button", () => + AddStep("click cancel button", () => { InputManager.MoveMouseTo(cancellableCommentEditor.ButtonsContainer); InputManager.Click(MouseButton.Left); }); - AddAssert("Cancel action is fired", () => cancellableCommentEditor.Cancelled); + + AddAssert("cancel action fired", () => cancellableCommentEditor.Cancelled); } private void press(Key key) @@ -128,7 +135,7 @@ namespace osu.Game.Tests.Visual.UserInterface protected override string FooterText => @"Footer text. And it is pretty long. Cool."; protected override string CommitButtonText => @"Commit"; - protected override string TextboxPlaceholderText => @"This textbox is empty"; + protected override string TextboxPlaceholderText => @"This text box is empty"; } private class TestCancellableCommentEditor : CancellableCommentEditor @@ -144,7 +151,7 @@ namespace osu.Game.Tests.Visual.UserInterface } protected override string CommitButtonText => @"Save"; - protected override string TextboxPlaceholderText => @"Miltiline textboxes soon"; + protected override string TextboxPlaceholderText => @"Multiline textboxes soon"; } } } From 0f25864faed05910713df23ecdf5d6310f295a9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Thu, 13 Feb 2020 21:04:53 +0100 Subject: [PATCH 1493/1829] Textbox -> TextBox rename pass --- .../Visual/UserInterface/TestSceneCommentEditor.cs | 4 ++-- osu.Game/Overlays/Comments/CommentEditor.cs | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs index a5ef8b046d..7b0b644dab 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneCommentEditor.cs @@ -135,7 +135,7 @@ namespace osu.Game.Tests.Visual.UserInterface protected override string FooterText => @"Footer text. And it is pretty long. Cool."; protected override string CommitButtonText => @"Commit"; - protected override string TextboxPlaceholderText => @"This text box is empty"; + protected override string TextBoxPlaceholder => @"This text box is empty"; } private class TestCancellableCommentEditor : CancellableCommentEditor @@ -151,7 +151,7 @@ namespace osu.Game.Tests.Visual.UserInterface } protected override string CommitButtonText => @"Save"; - protected override string TextboxPlaceholderText => @"Multiline textboxes soon"; + protected override string TextBoxPlaceholder => @"Multiline textboxes soon"; } } } diff --git a/osu.Game/Overlays/Comments/CommentEditor.cs b/osu.Game/Overlays/Comments/CommentEditor.cs index 765e5e228c..f7e53addbe 100644 --- a/osu.Game/Overlays/Comments/CommentEditor.cs +++ b/osu.Game/Overlays/Comments/CommentEditor.cs @@ -34,7 +34,7 @@ namespace osu.Game.Overlays.Comments protected abstract string CommitButtonText { get; } - protected abstract string TextboxPlaceholderText { get; } + protected abstract string TextBoxPlaceholder { get; } protected FillFlowContainer ButtonsContainer; @@ -45,7 +45,7 @@ namespace osu.Game.Overlays.Comments [BackgroundDependencyLoader] private void load(OverlayColourProvider colourProvider) { - EditorTextbox textbox; + EditorTextBox textBox; RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; @@ -68,11 +68,11 @@ namespace osu.Game.Overlays.Comments Direction = FillDirection.Vertical, Children = new Drawable[] { - textbox = new EditorTextbox + textBox = new EditorTextBox { Height = 40, RelativeSizeAxes = Axes.X, - PlaceholderText = TextboxPlaceholderText, + PlaceholderText = TextBoxPlaceholder, Current = Current }, new Container @@ -115,7 +115,7 @@ namespace osu.Game.Overlays.Comments } }); - textbox.OnCommit += (u, v) => + textBox.OnCommit += (u, v) => { if (commitButton.IsBlocked.Value) return; @@ -131,7 +131,7 @@ namespace osu.Game.Overlays.Comments Current.BindValueChanged(text => commitButton.IsBlocked.Value = string.IsNullOrEmpty(text.NewValue), true); } - private class EditorTextbox : BasicTextBox + private class EditorTextBox : BasicTextBox { protected override float LeftRightPadding => side_padding; @@ -139,7 +139,7 @@ namespace osu.Game.Overlays.Comments private OsuSpriteText placeholder; - public EditorTextbox() + public EditorTextBox() { Masking = false; TextContainer.Height = 0.4f; From ab84f4085a83d8f8d597ddaa3e3aca8955d8c76a Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Thu, 13 Feb 2020 23:20:45 +0300 Subject: [PATCH 1494/1829] Fix possible error on SpotlightsLayout disposal --- osu.Game/Overlays/Rankings/SpotlightsLayout.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Rankings/SpotlightsLayout.cs b/osu.Game/Overlays/Rankings/SpotlightsLayout.cs index 33811cc982..cb409a2135 100644 --- a/osu.Game/Overlays/Rankings/SpotlightsLayout.cs +++ b/osu.Game/Overlays/Rankings/SpotlightsLayout.cs @@ -151,11 +151,11 @@ namespace osu.Game.Overlays.Rankings protected override void Dispose(bool isDisposing) { - base.Dispose(isDisposing); - spotlightsRequest?.Cancel(); getRankingsRequest?.Cancel(); cancellationToken?.Cancel(); + + base.Dispose(isDisposing); } } } From 049b0d93d13530c090612a20a27124ee79fcaf38 Mon Sep 17 00:00:00 2001 From: Lucas A Date: Thu, 13 Feb 2020 21:40:08 +0100 Subject: [PATCH 1495/1829] Add back default content fade transitions --- .../Visual/Online/TestSceneOnlineViewContainer.cs | 4 ---- osu.Game/Online/OnlineViewContainer.cs | 6 +++--- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs index 9dac28d347..39b9fd71d0 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs @@ -54,10 +54,6 @@ namespace osu.Game.Tests.Visual.Online } }; } - - protected override void PopContentOut(Drawable content) => content.Hide(); - - protected override void PopContentIn(Drawable content) => content.Show(); } [Test] diff --git a/osu.Game/Online/OnlineViewContainer.cs b/osu.Game/Online/OnlineViewContainer.cs index 4b59f6ae80..2a9aa60e2d 100644 --- a/osu.Game/Online/OnlineViewContainer.cs +++ b/osu.Game/Online/OnlineViewContainer.cs @@ -21,7 +21,7 @@ namespace osu.Game.Online protected const double TRANSFORM_TIME = 300.0; - private Container viewContent; + private readonly Container viewContent; protected override Container Content => viewContent; [Resolved] @@ -69,9 +69,9 @@ namespace osu.Game.Online } } - protected abstract void PopContentOut(Drawable content); + protected virtual void PopContentOut(Drawable content) => content.FadeOut(TRANSFORM_TIME / 2, Easing.OutQuint); - protected abstract void PopContentIn(Drawable content); + protected virtual void PopContentIn(Drawable content) => content.FadeIn(TRANSFORM_TIME, Easing.OutQuint); protected override void LoadComplete() { From c68c347503df8514ca0337ec01f9716d643b7da7 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 14 Feb 2020 00:40:52 +0300 Subject: [PATCH 1496/1829] Remove unwanted property interpolation --- osu.Game/Overlays/Rankings/Tables/CountriesTable.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Rankings/Tables/CountriesTable.cs b/osu.Game/Overlays/Rankings/Tables/CountriesTable.cs index ed8e956e5e..997438ac07 100644 --- a/osu.Game/Overlays/Rankings/Tables/CountriesTable.cs +++ b/osu.Game/Overlays/Rankings/Tables/CountriesTable.cs @@ -66,7 +66,7 @@ namespace osu.Game.Overlays.Rankings.Tables public CountryName(Country country) { Font = OsuFont.GetFont(size: 12, italics: true); - Text = $@"{country.FullName}"; + Text = country.FullName ?? string.Empty; } [BackgroundDependencyLoader] From c871f07d2ef9f55d1c91f9ac6138fd2d162e7ed3 Mon Sep 17 00:00:00 2001 From: voidedWarranties Date: Thu, 13 Feb 2020 17:14:46 -0800 Subject: [PATCH 1497/1829] Use CarouselBeatmap action to select beatmap --- osu.Game/OsuGame.cs | 55 ++++++++----------- osu.Game/Screens/Select/BeatmapCarousel.cs | 2 + .../Select/Carousel/CarouselBeatmap.cs | 5 ++ .../Carousel/DrawableCarouselBeatmapSet.cs | 23 +------- 4 files changed, 34 insertions(+), 51 deletions(-) diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index 3d6b93c87d..79616ef97c 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -311,38 +311,15 @@ namespace osu.Game public void ShowBeatmap(int beatmapId) => waitForReady(() => beatmapSetOverlay, _ => beatmapSetOverlay.FetchAndShowBeatmap(beatmapId)); /// - /// Present a specific beatmap difficulty at song select immediately. + /// Present a beatmap at song select immediately. /// The user should have already requested this interactively. /// /// The beatmap to select. - public void PresentBeatmap(BeatmapInfo beatmap) + public void PresentBeatmap(BeatmapSetInfo beatmap) { - PerformFromScreen(screen => - { - // we might already be at song select, so a check is required before performing the load to solo. - if (screen is MainMenu) - menuScreen.LoadToSolo(); - - // we might even already be at the song - if (Beatmap.Value.BeatmapInfo.Hash == beatmap.Hash) - return; - - Ruleset.Value = beatmap.Ruleset; - Beatmap.Value = BeatmapManager.GetWorkingBeatmap(beatmap); - }, validScreens: new[] { typeof(PlaySongSelect) }); - } - - /// - /// - /// Instead of selecting a specific difficulty, this will select the first difficulty of the current ruleset in a beatmapset, - /// or the first difficulty of the set if there is none. - /// - /// The beatmapset to select. - public void PresentBeatmap(BeatmapSetInfo beatmapSet) - { - var databasedSet = beatmapSet.OnlineBeatmapSetID != null - ? BeatmapManager.QueryBeatmapSet(s => s.OnlineBeatmapSetID == beatmapSet.OnlineBeatmapSetID) - : BeatmapManager.QueryBeatmapSet(s => s.Hash == beatmapSet.Hash); + var databasedSet = beatmap.OnlineBeatmapSetID != null + ? BeatmapManager.QueryBeatmapSet(s => s.OnlineBeatmapSetID == beatmap.OnlineBeatmapSetID) + : BeatmapManager.QueryBeatmapSet(s => s.Hash == beatmap.Hash); if (databasedSet == null) { @@ -350,8 +327,24 @@ namespace osu.Game return; } - var first = databasedSet.Beatmaps.Find(b => b.Ruleset.Equals(Ruleset.Value)) ?? databasedSet.Beatmaps.First(); - PresentBeatmap(first); + PerformFromScreen(screen => + { + // we might already be at song select, so a check is required before performing the load to solo. + if (screen is MainMenu) + menuScreen.LoadToSolo(); + + // we might even already be at the song + if (Beatmap.Value.BeatmapSetInfo.Hash == databasedSet.Hash) + { + return; + } + + // Use first beatmap available for current ruleset, else switch ruleset. + var first = databasedSet.Beatmaps.Find(b => b.Ruleset.Equals(Ruleset.Value)) ?? databasedSet.Beatmaps.First(); + + Ruleset.Value = first.Ruleset; + Beatmap.Value = BeatmapManager.GetWorkingBeatmap(first); + }, validScreens: new[] { typeof(PlaySongSelect) }); } /// @@ -453,7 +446,7 @@ namespace osu.Game /// /// The action to perform once we are in the correct state. /// An optional collection of valid screen types. If any of these screens are already current we can perform the action immediately, else the first valid parent will be made current before performing the action. is used if not specified. - protected void PerformFromScreen(Action action, IEnumerable validScreens = null) + public void PerformFromScreen(Action action, IEnumerable validScreens = null) { performFromMainMenuTask?.Cancel(); diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs b/osu.Game/Screens/Select/BeatmapCarousel.cs index 592e26adc2..f6e0e6bf70 100644 --- a/osu.Game/Screens/Select/BeatmapCarousel.cs +++ b/osu.Game/Screens/Select/BeatmapCarousel.cs @@ -592,6 +592,8 @@ namespace osu.Game.Screens.Select scrollPositionCache.Invalidate(); } }; + + c.Select = () => SelectBeatmap(c.Beatmap); } return set; diff --git a/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs b/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs index 2ffb73f226..116053b4f2 100644 --- a/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs +++ b/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs @@ -13,6 +13,11 @@ namespace osu.Game.Screens.Select.Carousel { public readonly BeatmapInfo Beatmap; + /// + /// Select this beatmap on the carousel. + /// + public Action Select; + public CarouselBeatmap(BeatmapInfo beatmap) { Beatmap = beatmap; diff --git a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs index 9e4f31b15b..5ef0e8a018 100644 --- a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs +++ b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs @@ -211,9 +211,7 @@ namespace osu.Game.Screens.Select.Carousel { private readonly BindableBool filtered = new BindableBool(); - private OsuGame game; - private SongSelect songSelect; - private readonly BeatmapInfo info; + private readonly Action select; public FilterableDifficultyIcon(CarouselBeatmap item) : base(item.Beatmap) @@ -222,30 +220,15 @@ namespace osu.Game.Screens.Select.Carousel filtered.ValueChanged += isFiltered => Schedule(() => this.FadeTo(isFiltered.NewValue ? 0.1f : 1, 100)); filtered.TriggerChange(); - info = item.Beatmap; + select = item.Select; } protected override bool OnClick(ClickEvent e) { - if (!filtered.Value) - { - game.PresentBeatmap(info); - - if (e.AltPressed) - songSelect?.FinaliseSelection(); - } + select?.Invoke(); return base.OnClick(e); } - - [BackgroundDependencyLoader] - private void load(OsuGame game, SongSelect songSelect) - { - this.game = game; - - if (songSelect != null) - this.songSelect = songSelect; - } } public class FilterableGroupedDifficultyIcon : GroupedDifficultyIcon From 368e6f9579492d6321c89850cf4fe114a0337c83 Mon Sep 17 00:00:00 2001 From: voidedWarranties Date: Thu, 13 Feb 2020 17:47:16 -0800 Subject: [PATCH 1498/1829] Use CarouselBeatmap.State to select --- osu.Game/OsuGame.cs | 2 +- osu.Game/Screens/Select/BeatmapCarousel.cs | 2 -- osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs | 5 ----- .../Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs | 8 ++++---- 4 files changed, 5 insertions(+), 12 deletions(-) diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index 79616ef97c..ff3dee55af 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -446,7 +446,7 @@ namespace osu.Game /// /// The action to perform once we are in the correct state. /// An optional collection of valid screen types. If any of these screens are already current we can perform the action immediately, else the first valid parent will be made current before performing the action. is used if not specified. - public void PerformFromScreen(Action action, IEnumerable validScreens = null) + protected void PerformFromScreen(Action action, IEnumerable validScreens = null) { performFromMainMenuTask?.Cancel(); diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs b/osu.Game/Screens/Select/BeatmapCarousel.cs index f6e0e6bf70..592e26adc2 100644 --- a/osu.Game/Screens/Select/BeatmapCarousel.cs +++ b/osu.Game/Screens/Select/BeatmapCarousel.cs @@ -592,8 +592,6 @@ namespace osu.Game.Screens.Select scrollPositionCache.Invalidate(); } }; - - c.Select = () => SelectBeatmap(c.Beatmap); } return set; diff --git a/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs b/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs index 116053b4f2..2ffb73f226 100644 --- a/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs +++ b/osu.Game/Screens/Select/Carousel/CarouselBeatmap.cs @@ -13,11 +13,6 @@ namespace osu.Game.Screens.Select.Carousel { public readonly BeatmapInfo Beatmap; - /// - /// Select this beatmap on the carousel. - /// - public Action Select; - public CarouselBeatmap(BeatmapInfo beatmap) { Beatmap = beatmap; diff --git a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs index 5ef0e8a018..572580f7c1 100644 --- a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs +++ b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs @@ -211,7 +211,7 @@ namespace osu.Game.Screens.Select.Carousel { private readonly BindableBool filtered = new BindableBool(); - private readonly Action select; + private readonly CarouselBeatmap item; public FilterableDifficultyIcon(CarouselBeatmap item) : base(item.Beatmap) @@ -220,14 +220,14 @@ namespace osu.Game.Screens.Select.Carousel filtered.ValueChanged += isFiltered => Schedule(() => this.FadeTo(isFiltered.NewValue ? 0.1f : 1, 100)); filtered.TriggerChange(); - select = item.Select; + this.item = item; } protected override bool OnClick(ClickEvent e) { - select?.Invoke(); + item.State.Value = CarouselItemState.Selected; - return base.OnClick(e); + return true; } } From 50899ddccba2e8dfc89d0282ee5a547728c53f3e Mon Sep 17 00:00:00 2001 From: Berkan Diler Date: Fri, 14 Feb 2020 03:19:25 +0100 Subject: [PATCH 1499/1829] Use Span for OsuColour.FromHex --- osu.Game/Graphics/OsuColour.cs | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/osu.Game/Graphics/OsuColour.cs b/osu.Game/Graphics/OsuColour.cs index c8298543a1..59dd823266 100644 --- a/osu.Game/Graphics/OsuColour.cs +++ b/osu.Game/Graphics/OsuColour.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System; +using System.Globalization; using osu.Game.Beatmaps; using osuTK.Graphics; @@ -14,41 +15,40 @@ namespace osu.Game.Graphics public static Color4 FromHex(string hex) { - if (hex[0] == '#') - hex = hex.Substring(1); + var hexSpan = hex[0] == '#' ? hex.AsSpan().Slice(1) : hex.AsSpan(); - switch (hex.Length) + switch (hexSpan.Length) { default: throw new ArgumentException(@"Invalid hex string length!"); case 3: return new Color4( - (byte)(Convert.ToByte(hex.Substring(0, 1), 16) * 17), - (byte)(Convert.ToByte(hex.Substring(1, 1), 16) * 17), - (byte)(Convert.ToByte(hex.Substring(2, 1), 16) * 17), + (byte)(byte.Parse(hexSpan.Slice(0, 1), NumberStyles.HexNumber) * 17), + (byte)(byte.Parse(hexSpan.Slice(1, 1), NumberStyles.HexNumber) * 17), + (byte)(byte.Parse(hexSpan.Slice(2, 1), NumberStyles.HexNumber) * 17), 255); case 6: return new Color4( - Convert.ToByte(hex.Substring(0, 2), 16), - Convert.ToByte(hex.Substring(2, 2), 16), - Convert.ToByte(hex.Substring(4, 2), 16), + byte.Parse(hexSpan.Slice(0, 2), NumberStyles.HexNumber), + byte.Parse(hexSpan.Slice(2, 2), NumberStyles.HexNumber), + byte.Parse(hexSpan.Slice(4, 2), NumberStyles.HexNumber), 255); case 4: return new Color4( - (byte)(Convert.ToByte(hex.Substring(0, 1), 16) * 17), - (byte)(Convert.ToByte(hex.Substring(1, 1), 16) * 17), - (byte)(Convert.ToByte(hex.Substring(2, 1), 16) * 17), - (byte)(Convert.ToByte(hex.Substring(3, 1), 16) * 17)); + (byte)(byte.Parse(hexSpan.Slice(0, 1), NumberStyles.HexNumber) * 17), + (byte)(byte.Parse(hexSpan.Slice(1, 1), NumberStyles.HexNumber) * 17), + (byte)(byte.Parse(hexSpan.Slice(0, 1), NumberStyles.HexNumber) * 17), + (byte)(byte.Parse(hexSpan.Slice(0, 1), NumberStyles.HexNumber) * 17)); case 8: return new Color4( - Convert.ToByte(hex.Substring(0, 2), 16), - Convert.ToByte(hex.Substring(2, 2), 16), - Convert.ToByte(hex.Substring(4, 2), 16), - Convert.ToByte(hex.Substring(6, 2), 16)); + byte.Parse(hexSpan.Slice(0, 2), NumberStyles.HexNumber), + byte.Parse(hexSpan.Slice(2, 2), NumberStyles.HexNumber), + byte.Parse(hexSpan.Slice(4, 2), NumberStyles.HexNumber), + byte.Parse(hexSpan.Slice(6, 2), NumberStyles.HexNumber)); } } From 884a5fbad44f1eb58731de2176d7cf67428dd521 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 12:30:11 +0900 Subject: [PATCH 1500/1829] Fix osu! gameplay cursor not adjusting to mod/convert circle size changes --- .../TestSceneGameplayCursor.cs | 46 +++++++++++++++++-- .../UI/Cursor/OsuCursorContainer.cs | 44 +++++++++++++----- osu.Game/Screens/Play/GameplayBeatmap.cs | 42 +++++++++++++++++ osu.Game/Screens/Play/Player.cs | 11 +++++ 4 files changed, 128 insertions(+), 15 deletions(-) create mode 100644 osu.Game/Screens/Play/GameplayBeatmap.cs diff --git a/osu.Game.Rulesets.Osu.Tests/TestSceneGameplayCursor.cs b/osu.Game.Rulesets.Osu.Tests/TestSceneGameplayCursor.cs index aa170eae1e..90f1cdb2ea 100644 --- a/osu.Game.Rulesets.Osu.Tests/TestSceneGameplayCursor.cs +++ b/osu.Game.Rulesets.Osu.Tests/TestSceneGameplayCursor.cs @@ -7,7 +7,9 @@ using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Testing.Input; +using osu.Game.Configuration; using osu.Game.Rulesets.Osu.UI.Cursor; +using osu.Game.Screens.Play; using osuTK; namespace osu.Game.Rulesets.Osu.Tests @@ -21,12 +23,50 @@ namespace osu.Game.Rulesets.Osu.Tests typeof(CursorTrail) }; - [BackgroundDependencyLoader] - private void load() + [Cached] + private GameplayBeatmap gameplayBeatmap; + + private ClickingCursorContainer lastContainer; + + [Resolved] + private OsuConfigManager config { get; set; } + + public TestSceneGameplayCursor() + { + gameplayBeatmap = new GameplayBeatmap(CreateBeatmap(new OsuRuleset().RulesetInfo)); + } + + [TestCase(1, 1)] + [TestCase(5, 1)] + [TestCase(10, 1)] + [TestCase(1, 1.5f)] + [TestCase(5, 1.5f)] + [TestCase(10, 1.5f)] + public void TestSizing(int circleSize, float userScale) + { + AddStep($"set user scale to {userScale}", () => config.Set(OsuSetting.GameplayCursorSize, userScale)); + AddStep($"adjust cs to {circleSize}", () => gameplayBeatmap.BeatmapInfo.BaseDifficulty.CircleSize = circleSize); + AddStep("turn on autosizing", () => config.Set(OsuSetting.AutoCursorSize, true)); + + AddStep("load content", loadContent); + + AddUntilStep("cursor size correct", () => lastContainer.ActiveCursor.Scale.X == OsuCursorContainer.GetScaleForCircleSize(circleSize) * userScale); + + AddStep("set user scale to 1", () => config.Set(OsuSetting.GameplayCursorSize, 1f)); + AddUntilStep("cursor size correct", () => lastContainer.ActiveCursor.Scale.X == OsuCursorContainer.GetScaleForCircleSize(circleSize)); + + AddStep("turn off autosizing", () => config.Set(OsuSetting.AutoCursorSize, false)); + AddUntilStep("cursor size correct", () => lastContainer.ActiveCursor.Scale.X == 1); + + AddStep($"set user scale to {userScale}", () => config.Set(OsuSetting.GameplayCursorSize, userScale)); + AddUntilStep("cursor size correct", () => lastContainer.ActiveCursor.Scale.X == userScale); + } + + private void loadContent() { SetContents(() => new MovingCursorInputManager { - Child = new ClickingCursorContainer + Child = lastContainer = new ClickingCursorContainer { RelativeSizeAxes = Axes.Both, Masking = true, diff --git a/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorContainer.cs b/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorContainer.cs index 79b5d1b7f8..7ebc26ebfb 100644 --- a/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorContainer.cs +++ b/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorContainer.cs @@ -12,6 +12,7 @@ using osu.Game.Beatmaps; using osu.Game.Configuration; using osu.Game.Rulesets.Osu.Configuration; using osu.Game.Rulesets.UI; +using osu.Game.Screens.Play; using osu.Game.Skinning; using osuTK; @@ -32,7 +33,6 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor public Bindable CursorScale; private Bindable userCursorScale; private Bindable autoCursorScale; - private readonly IBindable beatmap = new Bindable(); public OsuCursorContainer() { @@ -43,13 +43,21 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor }; } + [Resolved(canBeNull: true)] + private GameplayBeatmap beatmap { get; set; } + + [Resolved] + private OsuConfigManager config { get; set; } + [BackgroundDependencyLoader(true)] - private void load(OsuConfigManager config, OsuRulesetConfigManager rulesetConfig, IBindable beatmap) + private void load(OsuConfigManager config, OsuRulesetConfigManager rulesetConfig) { rulesetConfig?.BindWith(OsuRulesetSetting.ShowCursorTrail, showTrail); + } - this.beatmap.BindTo(beatmap); - this.beatmap.ValueChanged += _ => calculateScale(); + protected override void LoadComplete() + { + showTrail.BindValueChanged(v => cursorTrail.FadeTo(v.NewValue ? 1 : 0, 200), true); userCursorScale = config.GetBindable(OsuSetting.GameplayCursorSize); userCursorScale.ValueChanged += _ => calculateScale(); @@ -58,29 +66,41 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor autoCursorScale.ValueChanged += _ => calculateScale(); CursorScale = new BindableFloat(); - CursorScale.ValueChanged += e => ActiveCursor.Scale = cursorTrail.Scale = new Vector2(e.NewValue); + CursorScale.ValueChanged += e => + { + var newScale = new Vector2(e.NewValue); + + ActiveCursor.Scale = newScale; + cursorTrail.Scale = newScale; + }; calculateScale(); + + base.LoadComplete(); } + /// + /// Get the scale applicable to the ActiveCursor based on a beatmap's circle size. + /// + public static float GetScaleForCircleSize(float circleSize) => + 1f - 0.7f * (1f + circleSize - BeatmapDifficulty.DEFAULT_DIFFICULTY) / BeatmapDifficulty.DEFAULT_DIFFICULTY; + private void calculateScale() { float scale = userCursorScale.Value; - if (autoCursorScale.Value && beatmap.Value != null) + if (autoCursorScale.Value && beatmap != null) { // if we have a beatmap available, let's get its circle size to figure out an automatic cursor scale modifier. - scale *= 1f - 0.7f * (1f + beatmap.Value.BeatmapInfo.BaseDifficulty.CircleSize - BeatmapDifficulty.DEFAULT_DIFFICULTY) / BeatmapDifficulty.DEFAULT_DIFFICULTY; + scale *= GetScaleForCircleSize(beatmap.BeatmapInfo.BaseDifficulty.CircleSize); } CursorScale.Value = scale; - } - protected override void LoadComplete() - { - base.LoadComplete(); + var newScale = new Vector2(scale); - showTrail.BindValueChanged(v => cursorTrail.FadeTo(v.NewValue ? 1 : 0, 200), true); + ActiveCursor.ScaleTo(newScale, 400, Easing.OutQuint); + cursorTrail.Scale = newScale; } private int downCount; diff --git a/osu.Game/Screens/Play/GameplayBeatmap.cs b/osu.Game/Screens/Play/GameplayBeatmap.cs new file mode 100644 index 0000000000..d7f939a883 --- /dev/null +++ b/osu.Game/Screens/Play/GameplayBeatmap.cs @@ -0,0 +1,42 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System.Collections.Generic; +using osu.Framework.Graphics; +using osu.Game.Beatmaps; +using osu.Game.Beatmaps.ControlPoints; +using osu.Game.Beatmaps.Timing; +using osu.Game.Rulesets.Objects; + +namespace osu.Game.Screens.Play +{ + public class GameplayBeatmap : Component, IBeatmap + { + public readonly IBeatmap PlayableBeatmap; + + public GameplayBeatmap(IBeatmap playableBeatmap) + { + PlayableBeatmap = playableBeatmap; + } + + public BeatmapInfo BeatmapInfo + { + get => PlayableBeatmap.BeatmapInfo; + set => PlayableBeatmap.BeatmapInfo = value; + } + + public BeatmapMetadata Metadata => PlayableBeatmap.Metadata; + + public ControlPointInfo ControlPointInfo => PlayableBeatmap.ControlPointInfo; + + public List Breaks => PlayableBeatmap.Breaks; + + public double TotalBreakTime => PlayableBeatmap.TotalBreakTime; + + public IReadOnlyList HitObjects => PlayableBeatmap.HitObjects; + + public IEnumerable GetStatistics() => PlayableBeatmap.GetStatistics(); + + public IBeatmap Clone() => PlayableBeatmap.Clone(); + } +} diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index aecd35f7dc..9bfdcd79fe 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -110,6 +110,13 @@ namespace osu.Game.Screens.Play this.showResults = showResults; } + private GameplayBeatmap gameplayBeatmap; + + private DependencyContainer dependencies; + + protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent) + => dependencies = new DependencyContainer(base.CreateChildDependencies(parent)); + [BackgroundDependencyLoader] private void load(AudioManager audio, IAPIProvider api, OsuConfigManager config) { @@ -143,6 +150,10 @@ namespace osu.Game.Screens.Play InternalChild = GameplayClockContainer = new GameplayClockContainer(Beatmap.Value, Mods.Value, DrawableRuleset.GameplayStartTime); + AddInternal(gameplayBeatmap = new GameplayBeatmap(playableBeatmap)); + + dependencies.CacheAs(gameplayBeatmap); + addUnderlayComponents(GameplayClockContainer); addGameplayComponents(GameplayClockContainer, Beatmap.Value); addOverlayComponents(GameplayClockContainer, Beatmap.Value); From 0e439e3a7025a2cfded813fda28f90c8d9a79a88 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 14:41:55 +0900 Subject: [PATCH 1501/1829] Fix missing dependency in ZoomableScrollContainer test --- .../Compose/Components/Timeline/ZoomableScrollContainer.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/ZoomableScrollContainer.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/ZoomableScrollContainer.cs index baaad63e57..227eecf9c7 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/ZoomableScrollContainer.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/ZoomableScrollContainer.cs @@ -32,7 +32,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline private float currentZoom = 1; - [Resolved] + [Resolved(canBeNull: true)] private IFrameBasedClock editorClock { get; set; } public ZoomableScrollContainer() @@ -112,7 +112,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline { // can't handle scroll correctly while playing. // the editor will handle this case for us. - if (editorClock.IsRunning) + if (editorClock?.IsRunning == true) return false; // for now, we don't support zoom when using a precision scroll device. this needs gesture support. From 3a0b2508d42b1d09da1aa30bbc356d88b5b4f76d Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 15:01:30 +0900 Subject: [PATCH 1502/1829] Fix possible nullrefs --- osu.Game/Overlays/Direct/PanelDownloadButton.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/Direct/PanelDownloadButton.cs b/osu.Game/Overlays/Direct/PanelDownloadButton.cs index ed44f1e960..1b3657f010 100644 --- a/osu.Game/Overlays/Direct/PanelDownloadButton.cs +++ b/osu.Game/Overlays/Direct/PanelDownloadButton.cs @@ -45,7 +45,7 @@ namespace osu.Game.Overlays.Direct [BackgroundDependencyLoader(true)] private void load(OsuGame game, BeatmapManager beatmaps) { - if (BeatmapSet.Value.OnlineInfo.Availability?.DownloadDisabled ?? false) + if (BeatmapSet.Value?.OnlineInfo?.Availability?.DownloadDisabled ?? false) { button.Enabled.Value = false; button.TooltipText = "this beatmap is currently not available for download."; @@ -62,7 +62,7 @@ namespace osu.Game.Overlays.Direct break; case DownloadState.LocallyAvailable: - game.PresentBeatmap(BeatmapSet.Value); + game?.PresentBeatmap(BeatmapSet.Value); break; default: From eb14dbcd77ffc141ff717f4307df40028027d451 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 15:01:45 +0900 Subject: [PATCH 1503/1829] Initial implementation of rearrangeable playlist --- .../TestSceneDrawableRoomPlaylist.cs | 86 +++++ .../Screens/Multi/DrawableRoomPlaylist.cs | 81 ++++ .../Screens/Multi/DrawableRoomPlaylistItem.cs | 347 ++++++++++++++++++ 3 files changed, 514 insertions(+) create mode 100644 osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs create mode 100644 osu.Game/Screens/Multi/DrawableRoomPlaylist.cs create mode 100644 osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs new file mode 100644 index 0000000000..b906ce82e9 --- /dev/null +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs @@ -0,0 +1,86 @@ +// 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 NUnit.Framework; +using osu.Framework.Allocation; +using osu.Framework.Graphics; +using osu.Framework.Utils; +using osu.Game.Beatmaps; +using osu.Game.Online.Multiplayer; +using osu.Game.Rulesets; +using osu.Game.Rulesets.Osu.Mods; +using osu.Game.Screens.Multi; +using osuTK; + +namespace osu.Game.Tests.Visual.Multiplayer +{ + public class TestSceneDrawableRoomPlaylist : OsuTestScene + { + [Resolved] + private BeatmapManager beatmapManager { get; set; } + + [Resolved] + private RulesetStore rulesetStore { get; set; } + + private DrawableRoomPlaylist playlist; + + [Test] + public void TestItemsCanNotBeRemovedOrSelectedFromNonEditableAndNonSelectablePlaylist() + { + createPlaylist(false, false); + } + + [Test] + public void TestItemsCanBeRemovedFromEditablePlaylist() + { + createPlaylist(true, false); + } + + [Test] + public void TestItemsCanBeSelectedInSelectablePlaylist() + { + createPlaylist(false, true); + } + + [Test] + public void TestItemsCanBeSelectedAndRemovedFromEditableAndSelectablePlaylist() + { + createPlaylist(true, true); + } + + private void createPlaylist(bool allowEdit, bool allowSelection) => AddStep("create playlist", () => + { + Child = playlist = new DrawableRoomPlaylist(allowEdit, allowSelection) + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Size = new Vector2(500, 300) + }; + + var beatmapSets = beatmapManager.GetAllUsableBeatmapSets(); + var rulesets = rulesetStore.AvailableRulesets.ToList(); + + for (int i = 0; i < 20; i++) + { + var set = beatmapSets[RNG.Next(0, beatmapSets.Count)]; + var beatmap = set.Beatmaps[RNG.Next(0, set.Beatmaps.Count)]; + + beatmap.BeatmapSet = set; + beatmap.Metadata = set.Metadata; + + playlist.Items.Add(new PlaylistItem + { + Beatmap = { Value = beatmap }, + Ruleset = { Value = rulesets[RNG.Next(0, rulesets.Count)] }, + RequiredMods = + { + new OsuModHardRock(), + new OsuModDoubleTime(), + new OsuModAutoplay() + } + }); + } + }); + } +} diff --git a/osu.Game/Screens/Multi/DrawableRoomPlaylist.cs b/osu.Game/Screens/Multi/DrawableRoomPlaylist.cs new file mode 100644 index 0000000000..b42a8575ec --- /dev/null +++ b/osu.Game/Screens/Multi/DrawableRoomPlaylist.cs @@ -0,0 +1,81 @@ +// 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.Bindables; +using osu.Framework.Extensions.IEnumerableExtensions; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Graphics.Containers; +using osu.Game.Online.Multiplayer; +using osuTK; + +namespace osu.Game.Screens.Multi +{ + public class DrawableRoomPlaylist : RearrangeableListContainer + { + public readonly Bindable SelectedItem = new Bindable(); + + private readonly bool allowEdit; + private readonly bool allowSelection; + + public DrawableRoomPlaylist(bool allowEdit, bool allowSelection) + { + this.allowEdit = allowEdit; + this.allowSelection = allowSelection; + } + + protected override void LoadComplete() + { + base.LoadComplete(); + + SelectedItem.BindValueChanged(item => + { + if (item.OldValue != null && ItemMap.TryGetValue(item.OldValue, out var oldItem)) + ((DrawableRoomPlaylistItem)oldItem).Deselect(); + + if (item.NewValue != null && ItemMap.TryGetValue(item.NewValue, out var newItem)) + ((DrawableRoomPlaylistItem)newItem).Select(); + }, true); + + Items.ItemsRemoved += items => + { + if (items.Any(i => i == SelectedItem.Value)) + SelectedItem.Value = null; + }; + } + + protected override ScrollContainer CreateScrollContainer() => new OsuScrollContainer + { + ScrollbarVisible = false + }; + + protected override FillFlowContainer> CreateListFillFlowContainer() => new FillFlowContainer> + { + LayoutDuration = 200, + LayoutEasing = Easing.OutQuint, + Spacing = new Vector2(0, 2) + }; + + protected override RearrangeableListItem CreateDrawable(PlaylistItem item) => new DrawableRoomPlaylistItem(item, allowEdit, allowSelection) + { + RequestSelection = requestSelection, + RequestDeletion = requestDeletion + }; + + private void requestSelection(PlaylistItem item) => SelectedItem.Value = item; + + private void requestDeletion(PlaylistItem item) + { + if (SelectedItem.Value == item) + { + if (Items.Count == 1) + SelectedItem.Value = null; + else + SelectedItem.Value = Items.GetNext(item) ?? Items[^2]; + } + + Items.Remove(item); + } + } +} diff --git a/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs b/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs new file mode 100644 index 0000000000..d2788a5c4b --- /dev/null +++ b/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs @@ -0,0 +1,347 @@ +// 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.Bindables; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Colour; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; +using osu.Framework.Graphics.Sprites; +using osu.Framework.Input.Events; +using osu.Framework.Threading; +using osu.Game.Beatmaps; +using osu.Game.Beatmaps.Drawables; +using osu.Game.Graphics; +using osu.Game.Graphics.Containers; +using osu.Game.Graphics.UserInterface; +using osu.Game.Online.Chat; +using osu.Game.Online.Multiplayer; +using osu.Game.Overlays.Direct; +using osu.Game.Rulesets; +using osu.Game.Rulesets.Mods; +using osu.Game.Screens.Play.HUD; +using osuTK; +using osuTK.Graphics; + +namespace osu.Game.Screens.Multi +{ + public class DrawableRoomPlaylistItem : RearrangeableListItem + { + public Action RequestSelection; + public Action RequestDeletion; + + private Container maskingContainer; + private Container difficultyIconContainer; + private LinkFlowContainer beatmapText; + private LinkFlowContainer authorText; + private ItemHandle handle; + private ModDisplay modDisplay; + + private readonly Bindable beatmap = new Bindable(); + private readonly Bindable ruleset = new Bindable(); + private readonly BindableList requiredMods = new BindableList(); + + private readonly PlaylistItem item; + private readonly bool allowEdit; + private readonly bool allowSelection; + + public DrawableRoomPlaylistItem(PlaylistItem item, bool allowEdit, bool allowSelection) + : base(item) + { + this.item = item; + this.allowEdit = allowEdit; + this.allowSelection = allowSelection; + + RelativeSizeAxes = Axes.X; + Height = 50; + + beatmap.BindTo(item.Beatmap); + ruleset.BindTo(item.Ruleset); + requiredMods.BindTo(item.RequiredMods); + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + InternalChild = new GridContainer + { + RelativeSizeAxes = Axes.Both, + Content = new[] + { + new Drawable[] + { + new Container + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + AutoSizeAxes = Axes.Both, + Alpha = allowEdit ? 1 : 0, + Child = handle = new ItemHandle + { + Size = new Vector2(12), + AlwaysPresent = true, + Alpha = 0, + }, + }, + maskingContainer = new Container + { + RelativeSizeAxes = Axes.Both, + Masking = true, + CornerRadius = 10, + BorderColour = colours.Yellow, + Children = new Drawable[] + { + new Box // A transparent box that forces the border to be drawn if the panel background is opaque + { + RelativeSizeAxes = Axes.Both, + Alpha = 0, + AlwaysPresent = true + }, + new PanelBackground + { + RelativeSizeAxes = Axes.Both, + Beatmap = { BindTarget = beatmap } + }, + new FillFlowContainer + { + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Left = 8 }, + Spacing = new Vector2(8, 0), + Direction = FillDirection.Horizontal, + Children = new Drawable[] + { + difficultyIconContainer = new Container + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + AutoSizeAxes = Axes.Both, + }, + new FillFlowContainer + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Vertical, + Children = new Drawable[] + { + beatmapText = new LinkFlowContainer { AutoSizeAxes = Axes.Both }, + new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(10, 0), + Children = new Drawable[] + { + authorText = new LinkFlowContainer { AutoSizeAxes = Axes.Both }, + modDisplay = new ModDisplay + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + AutoSizeAxes = Axes.Both, + Scale = new Vector2(0.4f), + DisplayUnrankedText = false, + ExpansionMode = ExpansionMode.AlwaysExpanded + } + } + } + } + } + } + }, + new Container + { + Anchor = Anchor.CentreRight, + Origin = Anchor.CentreRight, + AutoSizeAxes = Axes.Both, + X = -18, + Children = new Drawable[] + { + new IconButton + { + Icon = FontAwesome.Solid.MinusSquare, + Alpha = allowEdit ? 1 : 0, + Action = () => RequestDeletion?.Invoke(Model), + }, + new PanelDownloadButton(item.Beatmap.Value.BeatmapSet) + { + Size = new Vector2(50, 30), + Alpha = allowEdit ? 0 : 1 + } + } + } + } + } + }, + }, + ColumnDimensions = new[] { new Dimension(GridSizeMode.AutoSize) }, + }; + } + + protected override void LoadComplete() + { + base.LoadComplete(); + + beatmap.BindValueChanged(_ => scheduleRefresh()); + ruleset.BindValueChanged(_ => scheduleRefresh()); + + requiredMods.ItemsAdded += _ => scheduleRefresh(); + requiredMods.ItemsRemoved += _ => scheduleRefresh(); + + refresh(); + } + + private ScheduledDelegate scheduledRefresh; + + private void scheduleRefresh() + { + scheduledRefresh?.Cancel(); + scheduledRefresh = Schedule(refresh); + } + + private void refresh() + { + difficultyIconContainer.Child = new DifficultyIcon(beatmap.Value, ruleset.Value) { Size = new Vector2(32) }; + + beatmapText.Clear(); + beatmapText.AddLink(item.Beatmap.ToString(), LinkAction.OpenBeatmap, item.Beatmap.Value.OnlineBeatmapID.ToString()); + + authorText.Clear(); + + if (item.Beatmap?.Value?.Metadata?.Author != null) + { + authorText.AddText("mapped by "); + authorText.AddUserLink(item.Beatmap.Value?.Metadata.Author); + } + + modDisplay.Current.Value = requiredMods.ToArray(); + } + + protected override bool IsDraggableAt(Vector2 screenSpacePos) => handle.HandlingDrag; + + protected override bool OnHover(HoverEvent e) + { + handle.UpdateHoverState(true); + return base.OnHover(e); + } + + protected override void OnHoverLost(HoverLostEvent e) => handle.UpdateHoverState(false); + + protected override bool OnClick(ClickEvent e) + { + if (allowSelection) + RequestSelection?.Invoke(Model); + return true; + } + + public void Select() => maskingContainer.BorderThickness = 5; + + public void Deselect() => maskingContainer.BorderThickness = 0; + + // For now, this is the same implementation as in PanelBackground, but supports a beatmap info rather than a working beatmap + private class PanelBackground : Container // todo: should be a buffered container (https://github.com/ppy/osu-framework/issues/3222) + { + public readonly Bindable Beatmap = new Bindable(); + + public PanelBackground() + { + InternalChildren = new Drawable[] + { + new UpdateableBeatmapBackgroundSprite + { + RelativeSizeAxes = Axes.Both, + FillMode = FillMode.Fill, + Beatmap = { BindTarget = Beatmap } + }, + new Container + { + Depth = -1, + RelativeSizeAxes = Axes.Both, + // This makes the gradient not be perfectly horizontal, but diagonal at a ~40° angle + Shear = new Vector2(0.8f, 0), + Alpha = 0.5f, + Children = new[] + { + // The left half with no gradient applied + new Box + { + RelativeSizeAxes = Axes.Both, + RelativePositionAxes = Axes.Both, + Colour = Color4.Black, + Width = 0.4f, + }, + // Piecewise-linear gradient with 3 segments to make it appear smoother + new Box + { + RelativeSizeAxes = Axes.Both, + RelativePositionAxes = Axes.Both, + Colour = ColourInfo.GradientHorizontal(Color4.Black, new Color4(0f, 0f, 0f, 0.9f)), + Width = 0.05f, + X = 0.4f, + }, + new Box + { + RelativeSizeAxes = Axes.Both, + RelativePositionAxes = Axes.Both, + Colour = ColourInfo.GradientHorizontal(new Color4(0f, 0f, 0f, 0.9f), new Color4(0f, 0f, 0f, 0.1f)), + Width = 0.2f, + X = 0.45f, + }, + new Box + { + RelativeSizeAxes = Axes.Both, + RelativePositionAxes = Axes.Both, + Colour = ColourInfo.GradientHorizontal(new Color4(0f, 0f, 0f, 0.1f), new Color4(0, 0, 0, 0)), + Width = 0.05f, + X = 0.65f, + }, + } + } + }; + } + } + + private class ItemHandle : SpriteIcon + { + public bool HandlingDrag { get; private set; } + private bool isHovering; + + public ItemHandle() + { + Margin = new MarginPadding { Horizontal = 5 }; + + Icon = FontAwesome.Solid.Bars; + } + + protected override bool OnMouseDown(MouseDownEvent e) + { + base.OnMouseDown(e); + + HandlingDrag = true; + UpdateHoverState(isHovering); + + return false; + } + + protected override void OnMouseUp(MouseUpEvent e) + { + base.OnMouseUp(e); + + HandlingDrag = false; + UpdateHoverState(isHovering); + } + + public void UpdateHoverState(bool hovering) + { + isHovering = hovering; + + if (isHovering || HandlingDrag) + this.FadeIn(100); + else + this.FadeOut(100); + } + } + } +} From aa7efe6141e0ca80c3a908e3902b1dba5c95d4e9 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 15:26:55 +0900 Subject: [PATCH 1504/1829] Fix tests potentially failing due to timing issues --- .../Online/TestSceneOnlineViewContainer.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs index 39b9fd71d0..d656600a18 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs @@ -61,8 +61,8 @@ namespace osu.Game.Tests.Visual.Online { AddStep("set status to online", () => ((DummyAPIAccess)API).State = APIState.Online); - AddAssert("children are visible", () => onlineView.ViewTarget.IsPresent); - AddAssert("loading animation is not visible", () => !onlineView.LoadingAnimation.IsPresent); + AddUntilStep("children are visible", () => onlineView.ViewTarget.IsPresent); + AddUntilStep("loading animation is not visible", () => !onlineView.LoadingAnimation.IsPresent); } [Test] @@ -70,8 +70,8 @@ namespace osu.Game.Tests.Visual.Online { AddStep("set status to offline", () => ((DummyAPIAccess)API).State = APIState.Offline); - AddAssert("children are hidden", () => !onlineView.ViewTarget.IsPresent); - AddAssert("loading animation is not visible", () => !onlineView.LoadingAnimation.IsPresent); + AddUntilStep("children are not visible", () => !onlineView.ViewTarget.IsPresent); + AddUntilStep("loading animation is not visible", () => !onlineView.LoadingAnimation.IsPresent); } [Test] @@ -79,8 +79,8 @@ namespace osu.Game.Tests.Visual.Online { AddStep("set status to connecting", () => ((DummyAPIAccess)API).State = APIState.Connecting); - AddAssert("children are hidden", () => !onlineView.ViewTarget.IsPresent); - AddAssert("loading animation is visible", () => onlineView.LoadingAnimation.IsPresent); + AddUntilStep("children are not visible", () => !onlineView.ViewTarget.IsPresent); + AddUntilStep("loading animation is visible", () => onlineView.LoadingAnimation.IsPresent); } [Test] @@ -88,8 +88,8 @@ namespace osu.Game.Tests.Visual.Online { AddStep("set status to failing", () => ((DummyAPIAccess)API).State = APIState.Failing); - AddAssert("children are hidden", () => !onlineView.ViewTarget.IsPresent); - AddAssert("loading animation is visible", () => onlineView.LoadingAnimation.IsPresent); + AddUntilStep("children are not visible", () => !onlineView.ViewTarget.IsPresent); + AddUntilStep("loading animation is visible", () => onlineView.LoadingAnimation.IsPresent); } } } From c34f1f40eafd8e06f6a7009fc4661105e40664cc Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 15:27:09 +0900 Subject: [PATCH 1505/1829] Fix test text not being centered --- osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs index d656600a18..2bd0d59632 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs @@ -6,6 +6,7 @@ using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; +using osu.Game.Graphics; using osu.Game.Graphics.Sprites; using osu.Game.Graphics.UserInterface; using osu.Game.Online; @@ -38,6 +39,7 @@ namespace osu.Game.Tests.Visual.Online : base(@"Please sign in to view dummy test content") { RelativeSizeAxes = Axes.Both; + Children = new Drawable[] { new Box @@ -48,7 +50,7 @@ namespace osu.Game.Tests.Visual.Online new OsuSpriteText { Text = "dummy online content", - RelativeSizeAxes = Axes.Both, + Font = OsuFont.Default.With(size: 40), Anchor = Anchor.Centre, Origin = Anchor.Centre, } From b86b5e9adb3369f675346d0ef2b22429d87c7a61 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 15:27:39 +0900 Subject: [PATCH 1506/1829] Move nested class to bottom of file --- .../Online/TestSceneOnlineViewContainer.cs | 58 +++++++++---------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs index 2bd0d59632..3c2735ca56 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneOnlineViewContainer.cs @@ -29,35 +29,6 @@ namespace osu.Game.Tests.Visual.Online }; } - private class TestOnlineViewContainer : OnlineViewContainer - { - public new LoadingAnimation LoadingAnimation => base.LoadingAnimation; - - public CompositeDrawable ViewTarget => base.Content; - - public TestOnlineViewContainer() - : base(@"Please sign in to view dummy test content") - { - RelativeSizeAxes = Axes.Both; - - Children = new Drawable[] - { - new Box - { - RelativeSizeAxes = Axes.Both, - Colour = Color4.Blue.Opacity(0.8f), - }, - new OsuSpriteText - { - Text = "dummy online content", - Font = OsuFont.Default.With(size: 40), - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - } - }; - } - } - [Test] public void TestOnlineStateVisibility() { @@ -93,5 +64,34 @@ namespace osu.Game.Tests.Visual.Online AddUntilStep("children are not visible", () => !onlineView.ViewTarget.IsPresent); AddUntilStep("loading animation is visible", () => onlineView.LoadingAnimation.IsPresent); } + + private class TestOnlineViewContainer : OnlineViewContainer + { + public new LoadingAnimation LoadingAnimation => base.LoadingAnimation; + + public CompositeDrawable ViewTarget => base.Content; + + public TestOnlineViewContainer() + : base(@"Please sign in to view dummy test content") + { + RelativeSizeAxes = Axes.Both; + + Children = new Drawable[] + { + new Box + { + RelativeSizeAxes = Axes.Both, + Colour = Color4.Blue.Opacity(0.8f), + }, + new OsuSpriteText + { + Text = "dummy online content", + Font = OsuFont.Default.With(size: 40), + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + } + }; + } + } } } From 4d5abab2ee0b39704f0e5b91bf41e01e7b50f83b Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 15:29:50 +0900 Subject: [PATCH 1507/1829] Remove unnecessary content private storage --- osu.Game/Online/OnlineViewContainer.cs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/osu.Game/Online/OnlineViewContainer.cs b/osu.Game/Online/OnlineViewContainer.cs index 2a9aa60e2d..0ffb342bfc 100644 --- a/osu.Game/Online/OnlineViewContainer.cs +++ b/osu.Game/Online/OnlineViewContainer.cs @@ -21,8 +21,7 @@ namespace osu.Game.Online protected const double TRANSFORM_TIME = 300.0; - private readonly Container viewContent; - protected override Container Content => viewContent; + protected override Container Content { get; } [Resolved] protected IAPIProvider API { get; private set; } @@ -31,7 +30,7 @@ namespace osu.Game.Online { InternalChildren = new Drawable[] { - viewContent = new Container + Content = new Container { RelativeSizeAxes = Axes.Both, }, @@ -48,21 +47,21 @@ namespace osu.Game.Online switch (state) { case APIState.Offline: - PopContentOut(viewContent); + PopContentOut(Content); placeholder.ScaleTo(0.8f).Then().ScaleTo(1, 3 * TRANSFORM_TIME, Easing.OutQuint); placeholder.FadeInFromZero(2 * TRANSFORM_TIME, Easing.OutQuint); LoadingAnimation.Hide(); break; case APIState.Online: - PopContentIn(viewContent); + PopContentIn(Content); placeholder.FadeOut(TRANSFORM_TIME / 2, Easing.OutQuint); LoadingAnimation.Hide(); break; case APIState.Failing: case APIState.Connecting: - PopContentOut(viewContent); + PopContentOut(Content); LoadingAnimation.Show(); placeholder.FadeOut(TRANSFORM_TIME / 2, Easing.OutQuint); break; From 7e6c194d4a9c9f04712db293bc39f5f6baf201f5 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 15:34:46 +0900 Subject: [PATCH 1508/1829] Add missing xmldoc --- osu.Game/Online/OnlineViewContainer.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/osu.Game/Online/OnlineViewContainer.cs b/osu.Game/Online/OnlineViewContainer.cs index 0ffb342bfc..50b4820d15 100644 --- a/osu.Game/Online/OnlineViewContainer.cs +++ b/osu.Game/Online/OnlineViewContainer.cs @@ -68,8 +68,14 @@ namespace osu.Game.Online } } + /// + /// Applies a transform to the online content to make it hidden. + /// protected virtual void PopContentOut(Drawable content) => content.FadeOut(TRANSFORM_TIME / 2, Easing.OutQuint); + /// + /// Applies a transform to the online content to make it visible. + /// protected virtual void PopContentIn(Drawable content) => content.FadeIn(TRANSFORM_TIME, Easing.OutQuint); protected override void LoadComplete() From 6f1cecd86f7fc4efa6e00c0da8e44972f332f880 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 15:35:39 +0900 Subject: [PATCH 1509/1829] Move LoadComplete up in method --- osu.Game/Online/OnlineViewContainer.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/osu.Game/Online/OnlineViewContainer.cs b/osu.Game/Online/OnlineViewContainer.cs index 50b4820d15..3b2243c97a 100644 --- a/osu.Game/Online/OnlineViewContainer.cs +++ b/osu.Game/Online/OnlineViewContainer.cs @@ -42,6 +42,12 @@ namespace osu.Game.Online }; } + protected override void LoadComplete() + { + API?.Register(this); + base.LoadComplete(); + } + public virtual void APIStateChanged(IAPIProvider api, APIState state) { switch (state) @@ -78,12 +84,6 @@ namespace osu.Game.Online ///
    protected virtual void PopContentIn(Drawable content) => content.FadeIn(TRANSFORM_TIME, Easing.OutQuint); - protected override void LoadComplete() - { - API?.Register(this); - base.LoadComplete(); - } - protected override void Dispose(bool isDisposing) { API?.Unregister(this); From edf9cfc8635580d7e40c188828a2533ec5b824ab Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 15:36:06 +0900 Subject: [PATCH 1510/1829] API can't be null on load --- osu.Game/Online/OnlineViewContainer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Online/OnlineViewContainer.cs b/osu.Game/Online/OnlineViewContainer.cs index 3b2243c97a..b16fbb7aed 100644 --- a/osu.Game/Online/OnlineViewContainer.cs +++ b/osu.Game/Online/OnlineViewContainer.cs @@ -44,7 +44,7 @@ namespace osu.Game.Online protected override void LoadComplete() { - API?.Register(this); + API.Register(this); base.LoadComplete(); } From eb75d26c8f5c3365fda1965401f4df77fb900078 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 15:36:16 +0900 Subject: [PATCH 1511/1829] Extract common rearrangeable list design --- .../OsuRearrangeableListContainer.cs | 26 +++ .../Containers/OsuRearrangeableListItem.cs | 149 ++++++++++++++++++ osu.Game/Overlays/Music/Playlist.cs | 12 +- osu.Game/Overlays/Music/PlaylistItem.cs | 121 ++------------ 4 files changed, 190 insertions(+), 118 deletions(-) create mode 100644 osu.Game/Graphics/Containers/OsuRearrangeableListContainer.cs create mode 100644 osu.Game/Graphics/Containers/OsuRearrangeableListItem.cs diff --git a/osu.Game/Graphics/Containers/OsuRearrangeableListContainer.cs b/osu.Game/Graphics/Containers/OsuRearrangeableListContainer.cs new file mode 100644 index 0000000000..47aed1c500 --- /dev/null +++ b/osu.Game/Graphics/Containers/OsuRearrangeableListContainer.cs @@ -0,0 +1,26 @@ +// 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; + +namespace osu.Game.Graphics.Containers +{ + public abstract class OsuRearrangeableListContainer : RearrangeableListContainer + { + /// + /// Whether any item is currently being dragged. Used to hide other items' drag handles. + /// + private readonly BindableBool playlistDragActive = new BindableBool(); + + protected override ScrollContainer CreateScrollContainer() => new OsuScrollContainer(); + + protected sealed override RearrangeableListItem CreateDrawable(TModel item) => CreateOsuDrawable(item).With(d => + { + d.PlaylistDragActive.BindTo(playlistDragActive); + }); + + protected abstract OsuRearrangeableListItem CreateOsuDrawable(TModel item); + } +} diff --git a/osu.Game/Graphics/Containers/OsuRearrangeableListItem.cs b/osu.Game/Graphics/Containers/OsuRearrangeableListItem.cs new file mode 100644 index 0000000000..f75a3330e2 --- /dev/null +++ b/osu.Game/Graphics/Containers/OsuRearrangeableListItem.cs @@ -0,0 +1,149 @@ +// 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.Sprites; +using osu.Framework.Input.Events; +using osuTK; +using osuTK.Graphics; + +namespace osu.Game.Graphics.Containers +{ + public abstract class OsuRearrangeableListItem : RearrangeableListItem + { + public const float FADE_DURATION = 100; + + /// + /// Whether any item is currently being dragged. Used to hide other items' drag handles. + /// + public readonly BindableBool PlaylistDragActive = new BindableBool(); + + private Color4 handleColour = Color4.White; + + protected Color4 HandleColour + { + get => handleColour; + set + { + if (handleColour == value) + return; + + handleColour = value; + + if (handle != null) + handle.Colour = value; + } + } + + private PlaylistItemHandle handle; + + protected OsuRearrangeableListItem(TModel item) + : base(item) + { + RelativeSizeAxes = Axes.X; + AutoSizeAxes = Axes.Y; + } + + [BackgroundDependencyLoader] + private void load() + { + InternalChild = new GridContainer + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Content = new[] + { + new[] + { + new Container + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + AutoSizeAxes = Axes.Both, + Padding = new MarginPadding { Horizontal = 5 }, + Child = handle = new PlaylistItemHandle + { + Size = new Vector2(12), + Colour = HandleColour, + AlwaysPresent = true, + Alpha = 0 + } + }, + CreateContent() + } + }, + ColumnDimensions = new[] { new Dimension(GridSizeMode.AutoSize) }, + RowDimensions = new[] { new Dimension(GridSizeMode.AutoSize) } + }; + } + + protected override bool OnDragStart(DragStartEvent e) + { + if (!base.OnDragStart(e)) + return false; + + PlaylistDragActive.Value = true; + return true; + } + + protected override void OnDragEnd(DragEndEvent e) + { + PlaylistDragActive.Value = false; + base.OnDragEnd(e); + } + + protected override bool IsDraggableAt(Vector2 screenSpacePos) => handle.HandlingDrag; + + protected override bool OnHover(HoverEvent e) + { + handle.UpdateHoverState(IsDragged || !PlaylistDragActive.Value); + return base.OnHover(e); + } + + protected override void OnHoverLost(HoverLostEvent e) => handle.UpdateHoverState(false); + + protected abstract Drawable CreateContent(); + + private class PlaylistItemHandle : SpriteIcon + { + public bool HandlingDrag { get; private set; } + private bool isHovering; + + public PlaylistItemHandle() + { + Icon = FontAwesome.Solid.Bars; + } + + protected override bool OnMouseDown(MouseDownEvent e) + { + base.OnMouseDown(e); + + HandlingDrag = true; + UpdateHoverState(isHovering); + + return false; + } + + protected override void OnMouseUp(MouseUpEvent e) + { + base.OnMouseUp(e); + + HandlingDrag = false; + UpdateHoverState(isHovering); + } + + public void UpdateHoverState(bool hovering) + { + isHovering = hovering; + + if (isHovering || HandlingDrag) + this.FadeIn(FADE_DURATION); + else + this.FadeOut(FADE_DURATION); + } + } + } +} diff --git a/osu.Game/Overlays/Music/Playlist.cs b/osu.Game/Overlays/Music/Playlist.cs index 1ba568443d..621a533dd6 100644 --- a/osu.Game/Overlays/Music/Playlist.cs +++ b/osu.Game/Overlays/Music/Playlist.cs @@ -12,17 +12,12 @@ using osuTK; namespace osu.Game.Overlays.Music { - public class Playlist : RearrangeableListContainer + public class Playlist : OsuRearrangeableListContainer { public Action RequestSelection; public readonly Bindable SelectedSet = new Bindable(); - /// - /// Whether any item is currently being dragged. Used to hide other items' drag handles. - /// - private readonly BindableBool playlistDragActive = new BindableBool(); - public new MarginPadding Padding { get => base.Padding; @@ -33,15 +28,12 @@ namespace osu.Game.Overlays.Music public BeatmapSetInfo FirstVisibleSet => Items.FirstOrDefault(i => ((PlaylistItem)ItemMap[i]).MatchingFilter); - protected override RearrangeableListItem CreateDrawable(BeatmapSetInfo item) => new PlaylistItem(item) + protected override OsuRearrangeableListItem CreateOsuDrawable(BeatmapSetInfo item) => new PlaylistItem(item) { SelectedSet = { BindTarget = SelectedSet }, - PlaylistDragActive = { BindTarget = playlistDragActive }, RequestSelection = set => RequestSelection?.Invoke(set) }; - protected override ScrollContainer CreateScrollContainer() => new OsuScrollContainer(); - protected override FillFlowContainer> CreateListFillFlowContainer() => new SearchContainer> { Spacing = new Vector2(0, 3), diff --git a/osu.Game/Overlays/Music/PlaylistItem.cs b/osu.Game/Overlays/Music/PlaylistItem.cs index 0569261867..8cafbc694a 100644 --- a/osu.Game/Overlays/Music/PlaylistItem.cs +++ b/osu.Game/Overlays/Music/PlaylistItem.cs @@ -14,36 +14,27 @@ using osu.Framework.Localisation; using osu.Game.Beatmaps; using osu.Game.Graphics; using osu.Game.Graphics.Containers; -using osuTK; using osuTK.Graphics; namespace osu.Game.Overlays.Music { - public class PlaylistItem : RearrangeableListItem, IFilterable + public class PlaylistItem : OsuRearrangeableListItem, IFilterable { - private const float fade_duration = 100; - - public BindableBool PlaylistDragActive = new BindableBool(); - public readonly Bindable SelectedSet = new Bindable(); public Action RequestSelection; - private PlaylistItemHandle handle; private TextFlowContainer text; private IEnumerable titleSprites; private ILocalisedBindableString titleBind; private ILocalisedBindableString artistBind; - private Color4 hoverColour; + private Color4 selectedColour; private Color4 artistColour; public PlaylistItem(BeatmapSetInfo item) : base(item) { - RelativeSizeAxes = Axes.X; - AutoSizeAxes = Axes.Y; - Padding = new MarginPadding { Left = 5 }; FilterTerms = item.Metadata.SearchableTerms; @@ -52,42 +43,12 @@ namespace osu.Game.Overlays.Music [BackgroundDependencyLoader] private void load(OsuColour colours, LocalisationManager localisation) { - hoverColour = colours.Yellow; + selectedColour = colours.Yellow; artistColour = colours.Gray9; - - InternalChild = new GridContainer - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Content = new[] - { - new Drawable[] - { - handle = new PlaylistItemHandle - { - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - Size = new Vector2(12), - Colour = colours.Gray5, - AlwaysPresent = true, - Alpha = 0 - }, - text = new OsuTextFlowContainer - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Padding = new MarginPadding { Left = 5 }, - }, - } - }, - ColumnDimensions = new[] { new Dimension(GridSizeMode.AutoSize) }, - RowDimensions = new[] { new Dimension(GridSizeMode.AutoSize) } - }; + HandleColour = colours.Gray5; titleBind = localisation.GetLocalisedString(new LocalisedString((Model.Metadata.TitleUnicode, Model.Metadata.Title))); artistBind = localisation.GetLocalisedString(new LocalisedString((Model.Metadata.ArtistUnicode, Model.Metadata.Artist))); - - artistBind.BindValueChanged(_ => recreateText(), true); } protected override void LoadComplete() @@ -100,10 +61,18 @@ namespace osu.Game.Overlays.Music return; foreach (Drawable s in titleSprites) - s.FadeColour(set.NewValue == Model ? hoverColour : Color4.White, fade_duration); + s.FadeColour(set.NewValue == Model ? selectedColour : Color4.White, FADE_DURATION); }, true); + + artistBind.BindValueChanged(_ => recreateText(), true); } + protected override Drawable CreateContent() => text = new OsuTextFlowContainer + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + }; + private void recreateText() { text.Clear(); @@ -125,31 +94,6 @@ namespace osu.Game.Overlays.Music return true; } - protected override bool OnDragStart(DragStartEvent e) - { - if (!base.OnDragStart(e)) - return false; - - PlaylistDragActive.Value = true; - return true; - } - - protected override void OnDragEnd(DragEndEvent e) - { - PlaylistDragActive.Value = false; - base.OnDragEnd(e); - } - - protected override bool IsDraggableAt(Vector2 screenSpacePos) => handle.HandlingDrag; - - protected override bool OnHover(HoverEvent e) - { - handle.UpdateHoverState(IsDragged || !PlaylistDragActive.Value); - return base.OnHover(e); - } - - protected override void OnHoverLost(HoverLostEvent e) => handle.UpdateHoverState(false); - public IEnumerable FilterTerms { get; } private bool matching = true; @@ -168,44 +112,5 @@ namespace osu.Game.Overlays.Music } public bool FilteringActive { get; set; } - - private class PlaylistItemHandle : SpriteIcon - { - public bool HandlingDrag { get; private set; } - private bool isHovering; - - public PlaylistItemHandle() - { - Icon = FontAwesome.Solid.Bars; - } - - protected override bool OnMouseDown(MouseDownEvent e) - { - base.OnMouseDown(e); - - HandlingDrag = true; - UpdateHoverState(isHovering); - - return false; - } - - protected override void OnMouseUp(MouseUpEvent e) - { - base.OnMouseUp(e); - - HandlingDrag = false; - UpdateHoverState(isHovering); - } - - public void UpdateHoverState(bool hovering) - { - isHovering = hovering; - - if (isHovering || HandlingDrag) - this.FadeIn(fade_duration); - else - this.FadeOut(fade_duration); - } - } } } From 5e871f9838b16f5319cfa5886dc4a81c93137641 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 15:36:47 +0900 Subject: [PATCH 1512/1829] Make room playlist use the common rearrangeable design --- .../TestSceneDrawableRoomPlaylist.cs | 16 +- .../Screens/Multi/DrawableRoomPlaylist.cs | 10 +- .../Screens/Multi/DrawableRoomPlaylistItem.cs | 263 +++++++----------- 3 files changed, 112 insertions(+), 177 deletions(-) diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs index b906ce82e9..393fd281d4 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs @@ -1,6 +1,8 @@ // 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 System.Linq; using NUnit.Framework; using osu.Framework.Allocation; @@ -17,6 +19,12 @@ namespace osu.Game.Tests.Visual.Multiplayer { public class TestSceneDrawableRoomPlaylist : OsuTestScene { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(DrawableRoomPlaylist), + typeof(DrawableRoomPlaylistItem) + }; + [Resolved] private BeatmapManager beatmapManager { get; set; } @@ -26,25 +34,25 @@ namespace osu.Game.Tests.Visual.Multiplayer private DrawableRoomPlaylist playlist; [Test] - public void TestItemsCanNotBeRemovedOrSelectedFromNonEditableAndNonSelectablePlaylist() + public void TestNonEditableNonSelectable() { createPlaylist(false, false); } [Test] - public void TestItemsCanBeRemovedFromEditablePlaylist() + public void TestEditable() { createPlaylist(true, false); } [Test] - public void TestItemsCanBeSelectedInSelectablePlaylist() + public void TestSelectable() { createPlaylist(false, true); } [Test] - public void TestItemsCanBeSelectedAndRemovedFromEditableAndSelectablePlaylist() + public void TestEditableSelectable() { createPlaylist(true, true); } diff --git a/osu.Game/Screens/Multi/DrawableRoomPlaylist.cs b/osu.Game/Screens/Multi/DrawableRoomPlaylist.cs index b42a8575ec..021a8ca176 100644 --- a/osu.Game/Screens/Multi/DrawableRoomPlaylist.cs +++ b/osu.Game/Screens/Multi/DrawableRoomPlaylist.cs @@ -12,7 +12,7 @@ using osuTK; namespace osu.Game.Screens.Multi { - public class DrawableRoomPlaylist : RearrangeableListContainer + public class DrawableRoomPlaylist : OsuRearrangeableListContainer { public readonly Bindable SelectedItem = new Bindable(); @@ -45,10 +45,10 @@ namespace osu.Game.Screens.Multi }; } - protected override ScrollContainer CreateScrollContainer() => new OsuScrollContainer + protected override ScrollContainer CreateScrollContainer() => base.CreateScrollContainer().With(d => { - ScrollbarVisible = false - }; + d.ScrollbarVisible = false; + }); protected override FillFlowContainer> CreateListFillFlowContainer() => new FillFlowContainer> { @@ -57,7 +57,7 @@ namespace osu.Game.Screens.Multi Spacing = new Vector2(0, 2) }; - protected override RearrangeableListItem CreateDrawable(PlaylistItem item) => new DrawableRoomPlaylistItem(item, allowEdit, allowSelection) + protected override OsuRearrangeableListItem CreateOsuDrawable(PlaylistItem item) => new DrawableRoomPlaylistItem(item, allowEdit, allowSelection) { RequestSelection = requestSelection, RequestDeletion = requestDeletion diff --git a/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs b/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs index d2788a5c4b..2bc593d779 100644 --- a/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs +++ b/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs @@ -5,6 +5,7 @@ using System; using System.Linq; using osu.Framework.Allocation; using osu.Framework.Bindables; +using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Colour; using osu.Framework.Graphics.Containers; @@ -28,7 +29,7 @@ using osuTK.Graphics; namespace osu.Game.Screens.Multi { - public class DrawableRoomPlaylistItem : RearrangeableListItem + public class DrawableRoomPlaylistItem : OsuRearrangeableListItem { public Action RequestSelection; public Action RequestDeletion; @@ -37,7 +38,6 @@ namespace osu.Game.Screens.Multi private Container difficultyIconContainer; private LinkFlowContainer beatmapText; private LinkFlowContainer authorText; - private ItemHandle handle; private ModDisplay modDisplay; private readonly Bindable beatmap = new Bindable(); @@ -55,9 +55,6 @@ namespace osu.Game.Screens.Multi this.allowEdit = allowEdit; this.allowSelection = allowSelection; - RelativeSizeAxes = Axes.X; - Height = 50; - beatmap.BindTo(item.Beatmap); ruleset.BindTo(item.Ruleset); requiredMods.BindTo(item.RequiredMods); @@ -66,118 +63,10 @@ namespace osu.Game.Screens.Multi [BackgroundDependencyLoader] private void load(OsuColour colours) { - InternalChild = new GridContainer - { - RelativeSizeAxes = Axes.Both, - Content = new[] - { - new Drawable[] - { - new Container - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - AutoSizeAxes = Axes.Both, - Alpha = allowEdit ? 1 : 0, - Child = handle = new ItemHandle - { - Size = new Vector2(12), - AlwaysPresent = true, - Alpha = 0, - }, - }, - maskingContainer = new Container - { - RelativeSizeAxes = Axes.Both, - Masking = true, - CornerRadius = 10, - BorderColour = colours.Yellow, - Children = new Drawable[] - { - new Box // A transparent box that forces the border to be drawn if the panel background is opaque - { - RelativeSizeAxes = Axes.Both, - Alpha = 0, - AlwaysPresent = true - }, - new PanelBackground - { - RelativeSizeAxes = Axes.Both, - Beatmap = { BindTarget = beatmap } - }, - new FillFlowContainer - { - RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding { Left = 8 }, - Spacing = new Vector2(8, 0), - Direction = FillDirection.Horizontal, - Children = new Drawable[] - { - difficultyIconContainer = new Container - { - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - AutoSizeAxes = Axes.Both, - }, - new FillFlowContainer - { - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Vertical, - Children = new Drawable[] - { - beatmapText = new LinkFlowContainer { AutoSizeAxes = Axes.Both }, - new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Spacing = new Vector2(10, 0), - Children = new Drawable[] - { - authorText = new LinkFlowContainer { AutoSizeAxes = Axes.Both }, - modDisplay = new ModDisplay - { - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - AutoSizeAxes = Axes.Both, - Scale = new Vector2(0.4f), - DisplayUnrankedText = false, - ExpansionMode = ExpansionMode.AlwaysExpanded - } - } - } - } - } - } - }, - new Container - { - Anchor = Anchor.CentreRight, - Origin = Anchor.CentreRight, - AutoSizeAxes = Axes.Both, - X = -18, - Children = new Drawable[] - { - new IconButton - { - Icon = FontAwesome.Solid.MinusSquare, - Alpha = allowEdit ? 1 : 0, - Action = () => RequestDeletion?.Invoke(Model), - }, - new PanelDownloadButton(item.Beatmap.Value.BeatmapSet) - { - Size = new Vector2(50, 30), - Alpha = allowEdit ? 0 : 1 - } - } - } - } - } - }, - }, - ColumnDimensions = new[] { new Dimension(GridSizeMode.AutoSize) }, - }; + if (!allowEdit) + HandleColour = HandleColour.Opacity(0); + + maskingContainer.BorderColour = colours.Yellow; } protected override void LoadComplete() @@ -193,6 +82,95 @@ namespace osu.Game.Screens.Multi refresh(); } + protected override Drawable CreateContent() => maskingContainer = new Container + { + RelativeSizeAxes = Axes.X, + Height = 50, + Masking = true, + CornerRadius = 10, + Children = new Drawable[] + { + new Box // A transparent box that forces the border to be drawn if the panel background is opaque + { + RelativeSizeAxes = Axes.Both, + Alpha = 0, + AlwaysPresent = true + }, + new PanelBackground + { + RelativeSizeAxes = Axes.Both, + Beatmap = { BindTarget = beatmap } + }, + new FillFlowContainer + { + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Left = 8 }, + Spacing = new Vector2(8, 0), + Direction = FillDirection.Horizontal, + Children = new Drawable[] + { + difficultyIconContainer = new Container + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + AutoSizeAxes = Axes.Both, + }, + new FillFlowContainer + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Vertical, + Children = new Drawable[] + { + beatmapText = new LinkFlowContainer { AutoSizeAxes = Axes.Both }, + new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(10, 0), + Children = new Drawable[] + { + authorText = new LinkFlowContainer { AutoSizeAxes = Axes.Both }, + modDisplay = new ModDisplay + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + AutoSizeAxes = Axes.Both, + Scale = new Vector2(0.4f), + DisplayUnrankedText = false, + ExpansionMode = ExpansionMode.AlwaysExpanded + } + } + } + } + } + } + }, + new Container + { + Anchor = Anchor.CentreRight, + Origin = Anchor.CentreRight, + AutoSizeAxes = Axes.Both, + X = -18, + Children = new Drawable[] + { + new IconButton + { + Icon = FontAwesome.Solid.MinusSquare, + Alpha = allowEdit ? 1 : 0, + Action = () => RequestDeletion?.Invoke(Model), + }, + new PanelDownloadButton(item.Beatmap.Value.BeatmapSet) + { + Size = new Vector2(50, 30), + Alpha = allowEdit ? 0 : 1 + } + } + } + } + }; + private ScheduledDelegate scheduledRefresh; private void scheduleRefresh() @@ -219,16 +197,6 @@ namespace osu.Game.Screens.Multi modDisplay.Current.Value = requiredMods.ToArray(); } - protected override bool IsDraggableAt(Vector2 screenSpacePos) => handle.HandlingDrag; - - protected override bool OnHover(HoverEvent e) - { - handle.UpdateHoverState(true); - return base.OnHover(e); - } - - protected override void OnHoverLost(HoverLostEvent e) => handle.UpdateHoverState(false); - protected override bool OnClick(ClickEvent e) { if (allowSelection) @@ -302,46 +270,5 @@ namespace osu.Game.Screens.Multi }; } } - - private class ItemHandle : SpriteIcon - { - public bool HandlingDrag { get; private set; } - private bool isHovering; - - public ItemHandle() - { - Margin = new MarginPadding { Horizontal = 5 }; - - Icon = FontAwesome.Solid.Bars; - } - - protected override bool OnMouseDown(MouseDownEvent e) - { - base.OnMouseDown(e); - - HandlingDrag = true; - UpdateHoverState(isHovering); - - return false; - } - - protected override void OnMouseUp(MouseUpEvent e) - { - base.OnMouseUp(e); - - HandlingDrag = false; - UpdateHoverState(isHovering); - } - - public void UpdateHoverState(bool hovering) - { - isHovering = hovering; - - if (isHovering || HandlingDrag) - this.FadeIn(100); - else - this.FadeOut(100); - } - } } } From 720ceca78a3cdd5c90acf75684c8a0d65af2f67b Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 15:38:47 +0900 Subject: [PATCH 1513/1829] Final tidy-up pass --- osu.Game/Online/OnlineViewContainer.cs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/osu.Game/Online/OnlineViewContainer.cs b/osu.Game/Online/OnlineViewContainer.cs index b16fbb7aed..83fbff733f 100644 --- a/osu.Game/Online/OnlineViewContainer.cs +++ b/osu.Game/Online/OnlineViewContainer.cs @@ -19,7 +19,7 @@ namespace osu.Game.Online private readonly Placeholder placeholder; protected readonly LoadingAnimation LoadingAnimation; - protected const double TRANSFORM_TIME = 300.0; + private const double transform_duration = 300; protected override Container Content { get; } @@ -44,8 +44,9 @@ namespace osu.Game.Online protected override void LoadComplete() { - API.Register(this); base.LoadComplete(); + + API.Register(this); } public virtual void APIStateChanged(IAPIProvider api, APIState state) @@ -54,14 +55,14 @@ namespace osu.Game.Online { case APIState.Offline: PopContentOut(Content); - placeholder.ScaleTo(0.8f).Then().ScaleTo(1, 3 * TRANSFORM_TIME, Easing.OutQuint); - placeholder.FadeInFromZero(2 * TRANSFORM_TIME, Easing.OutQuint); + placeholder.ScaleTo(0.8f).Then().ScaleTo(1, 3 * transform_duration, Easing.OutQuint); + placeholder.FadeInFromZero(2 * transform_duration, Easing.OutQuint); LoadingAnimation.Hide(); break; case APIState.Online: PopContentIn(Content); - placeholder.FadeOut(TRANSFORM_TIME / 2, Easing.OutQuint); + placeholder.FadeOut(transform_duration / 2, Easing.OutQuint); LoadingAnimation.Hide(); break; @@ -69,7 +70,7 @@ namespace osu.Game.Online case APIState.Connecting: PopContentOut(Content); LoadingAnimation.Show(); - placeholder.FadeOut(TRANSFORM_TIME / 2, Easing.OutQuint); + placeholder.FadeOut(transform_duration / 2, Easing.OutQuint); break; } } @@ -77,12 +78,12 @@ namespace osu.Game.Online /// /// Applies a transform to the online content to make it hidden. /// - protected virtual void PopContentOut(Drawable content) => content.FadeOut(TRANSFORM_TIME / 2, Easing.OutQuint); + protected virtual void PopContentOut(Drawable content) => content.FadeOut(transform_duration / 2, Easing.OutQuint); /// /// Applies a transform to the online content to make it visible. /// - protected virtual void PopContentIn(Drawable content) => content.FadeIn(TRANSFORM_TIME, Easing.OutQuint); + protected virtual void PopContentIn(Drawable content) => content.FadeIn(transform_duration, Easing.OutQuint); protected override void Dispose(bool isDisposing) { From a75715607b3882c14ccab7984cc9ee4a97534522 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 15:41:46 +0900 Subject: [PATCH 1514/1829] Move drawable load to asynchronous context --- osu.Game/Online/OnlineViewContainer.cs | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/osu.Game/Online/OnlineViewContainer.cs b/osu.Game/Online/OnlineViewContainer.cs index 83fbff733f..689c1c0afb 100644 --- a/osu.Game/Online/OnlineViewContainer.cs +++ b/osu.Game/Online/OnlineViewContainer.cs @@ -16,24 +16,30 @@ namespace osu.Game.Online ///
    public abstract class OnlineViewContainer : Container, IOnlineComponent { - private readonly Placeholder placeholder; - protected readonly LoadingAnimation LoadingAnimation; + protected LoadingAnimation LoadingAnimation { get; private set; } + + protected override Container Content { get; } = new Container { RelativeSizeAxes = Axes.Both }; + + private readonly string placeholderMessage; + + private Placeholder placeholder; private const double transform_duration = 300; - protected override Container Content { get; } - [Resolved] protected IAPIProvider API { get; private set; } protected OnlineViewContainer(string placeholderMessage) + { + this.placeholderMessage = placeholderMessage; + } + + [BackgroundDependencyLoader] + private void load() { InternalChildren = new Drawable[] { - Content = new Container - { - RelativeSizeAxes = Axes.Both, - }, + Content, placeholder = new LoginPlaceholder(placeholderMessage), LoadingAnimation = new LoadingAnimation { From 9cbb37b682fe35508c1aa030b4a97dad3ece41f4 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 15:59:59 +0900 Subject: [PATCH 1515/1829] Fix bindable being created far too late in construction --- osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorContainer.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorContainer.cs b/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorContainer.cs index 7ebc26ebfb..28600ef55b 100644 --- a/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorContainer.cs +++ b/osu.Game.Rulesets.Osu/UI/Cursor/OsuCursorContainer.cs @@ -30,7 +30,8 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor private readonly Drawable cursorTrail; - public Bindable CursorScale; + public Bindable CursorScale = new BindableFloat(1); + private Bindable userCursorScale; private Bindable autoCursorScale; @@ -57,6 +58,8 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor protected override void LoadComplete() { + base.LoadComplete(); + showTrail.BindValueChanged(v => cursorTrail.FadeTo(v.NewValue ? 1 : 0, 200), true); userCursorScale = config.GetBindable(OsuSetting.GameplayCursorSize); @@ -65,7 +68,6 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor autoCursorScale = config.GetBindable(OsuSetting.AutoCursorSize); autoCursorScale.ValueChanged += _ => calculateScale(); - CursorScale = new BindableFloat(); CursorScale.ValueChanged += e => { var newScale = new Vector2(e.NewValue); @@ -75,8 +77,6 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor }; calculateScale(); - - base.LoadComplete(); } /// From 1909ea2bd3a17cd3d6a877dd4b01c1585d4f631c Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 16:09:15 +0900 Subject: [PATCH 1516/1829] Add a way to hide the drag handle --- .../Containers/OsuRearrangeableListItem.cs | 17 +++++++++++++++-- .../Screens/Multi/DrawableRoomPlaylistItem.cs | 2 ++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/osu.Game/Graphics/Containers/OsuRearrangeableListItem.cs b/osu.Game/Graphics/Containers/OsuRearrangeableListItem.cs index f75a3330e2..29553954fe 100644 --- a/osu.Game/Graphics/Containers/OsuRearrangeableListItem.cs +++ b/osu.Game/Graphics/Containers/OsuRearrangeableListItem.cs @@ -23,6 +23,9 @@ namespace osu.Game.Graphics.Containers private Color4 handleColour = Color4.White; + /// + /// The colour of the drag handle. + /// protected Color4 HandleColour { get => handleColour; @@ -38,6 +41,11 @@ namespace osu.Game.Graphics.Containers } } + /// + /// Whether the drag handle should be shown. + /// + protected virtual bool ShowDragHandle => true; + private PlaylistItemHandle handle; protected OsuRearrangeableListItem(TModel item) @@ -50,6 +58,8 @@ namespace osu.Game.Graphics.Containers [BackgroundDependencyLoader] private void load() { + Container handleContainer; + InternalChild = new GridContainer { RelativeSizeAxes = Axes.X, @@ -58,7 +68,7 @@ namespace osu.Game.Graphics.Containers { new[] { - new Container + handleContainer = new Container { Anchor = Anchor.Centre, Origin = Anchor.Centre, @@ -78,6 +88,9 @@ namespace osu.Game.Graphics.Containers ColumnDimensions = new[] { new Dimension(GridSizeMode.AutoSize) }, RowDimensions = new[] { new Dimension(GridSizeMode.AutoSize) } }; + + if (!ShowDragHandle) + handleContainer.Alpha = 0; } protected override bool OnDragStart(DragStartEvent e) @@ -107,7 +120,7 @@ namespace osu.Game.Graphics.Containers protected abstract Drawable CreateContent(); - private class PlaylistItemHandle : SpriteIcon + public class PlaylistItemHandle : SpriteIcon { public bool HandlingDrag { get; private set; } private bool isHovering; diff --git a/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs b/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs index 2bc593d779..7156839dfc 100644 --- a/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs +++ b/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs @@ -34,6 +34,8 @@ namespace osu.Game.Screens.Multi public Action RequestSelection; public Action RequestDeletion; + protected override bool ShowDragHandle => allowEdit; + private Container maskingContainer; private Container difficultyIconContainer; private LinkFlowContainer beatmapText; From d6768bba628c2feafac4c28b5719cc83ed83e48a Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 16:09:30 +0900 Subject: [PATCH 1517/1829] Make test playlist items unique --- .../Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs index 393fd281d4..d43bf9edea 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs @@ -79,6 +79,7 @@ namespace osu.Game.Tests.Visual.Multiplayer playlist.Items.Add(new PlaylistItem { + ID = i, Beatmap = { Value = beatmap }, Ruleset = { Value = rulesets[RNG.Next(0, rulesets.Count)] }, RequiredMods = From afd3e4604b5649e4f27e52afa6869e64249e8e2a Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 16:48:23 +0900 Subject: [PATCH 1518/1829] Fix race condition causing selection to be reset incorrectly --- osu.Game/Screens/Multi/DrawableRoomPlaylist.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/osu.Game/Screens/Multi/DrawableRoomPlaylist.cs b/osu.Game/Screens/Multi/DrawableRoomPlaylist.cs index 021a8ca176..01f173db4e 100644 --- a/osu.Game/Screens/Multi/DrawableRoomPlaylist.cs +++ b/osu.Game/Screens/Multi/DrawableRoomPlaylist.cs @@ -1,7 +1,6 @@ // 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.Bindables; using osu.Framework.Extensions.IEnumerableExtensions; using osu.Framework.Graphics; @@ -38,11 +37,11 @@ namespace osu.Game.Screens.Multi ((DrawableRoomPlaylistItem)newItem).Select(); }, true); - Items.ItemsRemoved += items => + Items.ItemsRemoved += items => Schedule(() => { - if (items.Any(i => i == SelectedItem.Value)) + if (!Items.Contains(SelectedItem.Value)) SelectedItem.Value = null; - }; + }); } protected override ScrollContainer CreateScrollContainer() => base.CreateScrollContainer().With(d => From 6a466ea2f584e8c8c74ed8e92414ea00c5532dce Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 16:48:30 +0900 Subject: [PATCH 1519/1829] Improve test cases --- .../TestSceneDrawableRoomPlaylist.cs | 148 +++++++++++++++++- 1 file changed, 147 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs index d43bf9edea..267496bba2 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs @@ -7,17 +7,22 @@ using System.Linq; using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Testing; using osu.Framework.Utils; using osu.Game.Beatmaps; +using osu.Game.Graphics.Containers; +using osu.Game.Graphics.UserInterface; using osu.Game.Online.Multiplayer; using osu.Game.Rulesets; using osu.Game.Rulesets.Osu.Mods; using osu.Game.Screens.Multi; using osuTK; +using osuTK.Input; namespace osu.Game.Tests.Visual.Multiplayer { - public class TestSceneDrawableRoomPlaylist : OsuTestScene + public class TestSceneDrawableRoomPlaylist : ManualInputManagerTestScene { public override IReadOnlyList RequiredTypes => new[] { @@ -37,26 +42,167 @@ namespace osu.Game.Tests.Visual.Multiplayer public void TestNonEditableNonSelectable() { createPlaylist(false, false); + + moveToItem(0); + assertHandleVisibility(0, false); + assertDeleteButtonVisibility(0, false); } [Test] public void TestEditable() { createPlaylist(true, false); + + moveToItem(0); + assertHandleVisibility(0, true); + assertDeleteButtonVisibility(0, true); } [Test] public void TestSelectable() { createPlaylist(false, true); + + moveToItem(0); + assertHandleVisibility(0, false); + assertDeleteButtonVisibility(0, false); + + AddStep("click", () => InputManager.Click(MouseButton.Left)); + + AddAssert("item 0 is selected", () => playlist.SelectedItem.Value == playlist.Items[0]); } [Test] public void TestEditableSelectable() { createPlaylist(true, true); + + moveToItem(0); + assertHandleVisibility(0, true); + assertDeleteButtonVisibility(0, true); + + AddStep("click", () => InputManager.Click(MouseButton.Left)); + + AddAssert("item 0 is selected", () => playlist.SelectedItem.Value == playlist.Items[0]); } + [Test] + public void TestSelectionNotLostAfterRearrangement() + { + createPlaylist(true, true); + + moveToItem(0); + AddStep("click", () => InputManager.Click(MouseButton.Left)); + + moveToDragger(0); + AddStep("begin drag", () => InputManager.PressButton(MouseButton.Left)); + moveToDragger(1, new Vector2(0, 5)); + AddStep("end drag", () => InputManager.ReleaseButton(MouseButton.Left)); + + AddAssert("item 1 is selected", () => playlist.SelectedItem.Value == playlist.Items[1]); + } + + [Test] + public void TestItemRemovedOnDeletion() + { + PlaylistItem selectedItem = null; + + createPlaylist(true, true); + + moveToItem(0); + AddStep("click", () => InputManager.Click(MouseButton.Left)); + AddStep("retrieve selection", () => selectedItem = playlist.SelectedItem.Value); + + moveToDeleteButton(0); + AddStep("click delete button", () => InputManager.Click(MouseButton.Left)); + + AddAssert("item removed", () => !playlist.Items.Contains(selectedItem)); + } + + [Test] + public void TestNextItemSelectedAfterDeletion() + { + createPlaylist(true, true); + + moveToItem(0); + AddStep("click", () => InputManager.Click(MouseButton.Left)); + + moveToDeleteButton(0); + AddStep("click delete button", () => InputManager.Click(MouseButton.Left)); + + AddAssert("item 0 is selected", () => playlist.SelectedItem.Value == playlist.Items[0]); + } + + [Test] + public void TestLastItemSelectedAfterLastItemDeleted() + { + createPlaylist(true, true); + + AddWaitStep("wait for flow", 5); // Items may take 1 update frame to flow. A wait count of 5 is guaranteed to result in the flow being updated as desired. + AddStep("scroll to bottom", () => playlist.ChildrenOfType>().First().ScrollToEnd(false)); + + moveToItem(19); + AddStep("click", () => InputManager.Click(MouseButton.Left)); + + moveToDeleteButton(19); + AddStep("click delete button", () => InputManager.Click(MouseButton.Left)); + + AddAssert("item 18 is selected", () => playlist.SelectedItem.Value == playlist.Items[18]); + } + + [Test] + public void TestSelectionResetWhenAllItemsDeleted() + { + createPlaylist(true, true); + + AddStep("remove all but one item", () => + { + playlist.Items.RemoveRange(1, playlist.Items.Count - 1); + }); + + moveToItem(0); + AddStep("click", () => InputManager.Click(MouseButton.Left)); + moveToDeleteButton(0); + AddStep("click delete button", () => InputManager.Click(MouseButton.Left)); + + AddAssert("selected item is null", () => playlist.SelectedItem.Value == null); + } + + // Todo: currently not possible due to bindable list shortcomings (https://github.com/ppy/osu-framework/issues/3081) + // [Test] + public void TestNextItemSelectedAfterExternalDeletion() + { + createPlaylist(true, true); + + moveToItem(0); + AddStep("click", () => InputManager.Click(MouseButton.Left)); + AddStep("remove item 0", () => playlist.Items.RemoveAt(0)); + + AddAssert("item 0 is selected", () => playlist.SelectedItem.Value == playlist.Items[0]); + } + + private void moveToItem(int index, Vector2? offset = null) + => AddStep($"move mouse to item {index}", () => InputManager.MoveMouseTo(playlist.ChildrenOfType>().ElementAt(index), offset)); + + private void moveToDragger(int index, Vector2? offset = null) => AddStep($"move mouse to dragger {index}", () => + { + var item = playlist.ChildrenOfType>().ElementAt(index); + InputManager.MoveMouseTo(item.ChildrenOfType.PlaylistItemHandle>().Single(), offset); + }); + + private void moveToDeleteButton(int index, Vector2? offset = null) => AddStep($"move mouse to delete button {index}", () => + { + var item = playlist.ChildrenOfType>().ElementAt(index); + InputManager.MoveMouseTo(item.ChildrenOfType().ElementAt(0), offset); + }); + + private void assertHandleVisibility(int index, bool visible) + => AddAssert($"handle {index} {(visible ? "is" : "is not")} visible", + () => (playlist.ChildrenOfType.PlaylistItemHandle>().ElementAt(index).Alpha > 0) == visible); + + private void assertDeleteButtonVisibility(int index, bool visible) + => AddAssert($"delete button {index} {(visible ? "is" : "is not")} visible", () => (playlist.ChildrenOfType().ElementAt(2 + index * 2).Alpha > 0) == visible); + private void createPlaylist(bool allowEdit, bool allowSelection) => AddStep("create playlist", () => { Child = playlist = new DrawableRoomPlaylist(allowEdit, allowSelection) From aceba8791c2e3bbbb1a541351257900ae3a56fa0 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 16:55:05 +0900 Subject: [PATCH 1520/1829] Clean up selection handling --- .../TestSceneDrawableRoomPlaylist.cs | 8 ++- .../Screens/Multi/DrawableRoomPlaylist.cs | 12 +--- .../Screens/Multi/DrawableRoomPlaylistItem.cs | 63 +++++++++---------- 3 files changed, 40 insertions(+), 43 deletions(-) diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs index 267496bba2..c93d59acdf 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs @@ -46,6 +46,9 @@ namespace osu.Game.Tests.Visual.Multiplayer moveToItem(0); assertHandleVisibility(0, false); assertDeleteButtonVisibility(0, false); + + AddStep("click", () => InputManager.Click(MouseButton.Left)); + AddAssert("no item selected", () => playlist.SelectedItem.Value == null); } [Test] @@ -56,6 +59,9 @@ namespace osu.Game.Tests.Visual.Multiplayer moveToItem(0); assertHandleVisibility(0, true); assertDeleteButtonVisibility(0, true); + + AddStep("click", () => InputManager.Click(MouseButton.Left)); + AddAssert("no item selected", () => playlist.SelectedItem.Value == null); } [Test] @@ -165,7 +171,7 @@ namespace osu.Game.Tests.Visual.Multiplayer moveToDeleteButton(0); AddStep("click delete button", () => InputManager.Click(MouseButton.Left)); - AddAssert("selected item is null", () => playlist.SelectedItem.Value == null); + AddAssert("no item selected", () => playlist.SelectedItem.Value == null); } // Todo: currently not possible due to bindable list shortcomings (https://github.com/ppy/osu-framework/issues/3081) diff --git a/osu.Game/Screens/Multi/DrawableRoomPlaylist.cs b/osu.Game/Screens/Multi/DrawableRoomPlaylist.cs index 01f173db4e..b139c61166 100644 --- a/osu.Game/Screens/Multi/DrawableRoomPlaylist.cs +++ b/osu.Game/Screens/Multi/DrawableRoomPlaylist.cs @@ -28,15 +28,7 @@ namespace osu.Game.Screens.Multi { base.LoadComplete(); - SelectedItem.BindValueChanged(item => - { - if (item.OldValue != null && ItemMap.TryGetValue(item.OldValue, out var oldItem)) - ((DrawableRoomPlaylistItem)oldItem).Deselect(); - - if (item.NewValue != null && ItemMap.TryGetValue(item.NewValue, out var newItem)) - ((DrawableRoomPlaylistItem)newItem).Select(); - }, true); - + // Scheduled since items are removed and re-added upon rearrangement Items.ItemsRemoved += items => Schedule(() => { if (!Items.Contains(SelectedItem.Value)) @@ -58,7 +50,7 @@ namespace osu.Game.Screens.Multi protected override OsuRearrangeableListItem CreateOsuDrawable(PlaylistItem item) => new DrawableRoomPlaylistItem(item, allowEdit, allowSelection) { - RequestSelection = requestSelection, + SelectedItem = { BindTarget = SelectedItem }, RequestDeletion = requestDeletion }; diff --git a/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs b/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs index 7156839dfc..b1e69e4c4f 100644 --- a/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs +++ b/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs @@ -31,9 +31,10 @@ namespace osu.Game.Screens.Multi { public class DrawableRoomPlaylistItem : OsuRearrangeableListItem { - public Action RequestSelection; public Action RequestDeletion; + public readonly Bindable SelectedItem = new Bindable(); + protected override bool ShowDragHandle => allowEdit; private Container maskingContainer; @@ -75,6 +76,8 @@ namespace osu.Game.Screens.Multi { base.LoadComplete(); + SelectedItem.BindValueChanged(selected => maskingContainer.BorderThickness = selected.NewValue == Model ? 5 : 0); + beatmap.BindValueChanged(_ => scheduleRefresh()); ruleset.BindValueChanged(_ => scheduleRefresh()); @@ -84,6 +87,32 @@ namespace osu.Game.Screens.Multi refresh(); } + private ScheduledDelegate scheduledRefresh; + + private void scheduleRefresh() + { + scheduledRefresh?.Cancel(); + scheduledRefresh = Schedule(refresh); + } + + private void refresh() + { + difficultyIconContainer.Child = new DifficultyIcon(beatmap.Value, ruleset.Value) { Size = new Vector2(32) }; + + beatmapText.Clear(); + beatmapText.AddLink(item.Beatmap.ToString(), LinkAction.OpenBeatmap, item.Beatmap.Value.OnlineBeatmapID.ToString()); + + authorText.Clear(); + + if (item.Beatmap?.Value?.Metadata?.Author != null) + { + authorText.AddText("mapped by "); + authorText.AddUserLink(item.Beatmap.Value?.Metadata.Author); + } + + modDisplay.Current.Value = requiredMods.ToArray(); + } + protected override Drawable CreateContent() => maskingContainer = new Container { RelativeSizeAxes = Axes.X, @@ -173,43 +202,13 @@ namespace osu.Game.Screens.Multi } }; - private ScheduledDelegate scheduledRefresh; - - private void scheduleRefresh() - { - scheduledRefresh?.Cancel(); - scheduledRefresh = Schedule(refresh); - } - - private void refresh() - { - difficultyIconContainer.Child = new DifficultyIcon(beatmap.Value, ruleset.Value) { Size = new Vector2(32) }; - - beatmapText.Clear(); - beatmapText.AddLink(item.Beatmap.ToString(), LinkAction.OpenBeatmap, item.Beatmap.Value.OnlineBeatmapID.ToString()); - - authorText.Clear(); - - if (item.Beatmap?.Value?.Metadata?.Author != null) - { - authorText.AddText("mapped by "); - authorText.AddUserLink(item.Beatmap.Value?.Metadata.Author); - } - - modDisplay.Current.Value = requiredMods.ToArray(); - } - protected override bool OnClick(ClickEvent e) { if (allowSelection) - RequestSelection?.Invoke(Model); + SelectedItem.Value = Model; return true; } - public void Select() => maskingContainer.BorderThickness = 5; - - public void Deselect() => maskingContainer.BorderThickness = 0; - // For now, this is the same implementation as in PanelBackground, but supports a beatmap info rather than a working beatmap private class PanelBackground : Container // todo: should be a buffered container (https://github.com/ppy/osu-framework/issues/3222) { From 9ea6912520954aa28e6a5b1eb23d16da90716f95 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 16:58:56 +0900 Subject: [PATCH 1521/1829] Improve overall readability of OsuModeRelax --- osu.Game.Rulesets.Osu/Mods/OsuModRelax.cs | 45 +++++++++++++++-------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModRelax.cs b/osu.Game.Rulesets.Osu/Mods/OsuModRelax.cs index 649b01c132..7ebb6fd76d 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModRelax.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModRelax.cs @@ -19,33 +19,46 @@ namespace osu.Game.Rulesets.Osu.Mods public override string Description => @"You don't need to click. Give your clicking/tapping fingers a break from the heat of things."; public override Type[] IncompatibleMods => base.IncompatibleMods.Append(typeof(OsuModAutopilot)).ToArray(); + /// + /// How early before a hitobject's start time to trigger a hit. + /// + private const float relax_leniency = 3; + public void Update(Playfield playfield) { bool requiresHold = false; bool requiresHit = false; - const float relax_leniency = 3; + double time = playfield.Clock.CurrentTime; - foreach (var drawable in playfield.HitObjectContainer.AliveObjects) + foreach (var h in playfield.HitObjectContainer.AliveObjects.OfType()) { - if (!(drawable is DrawableOsuHitObject osuHit)) + // we are not yet close enough to the object. + if (time < h.HitObject.StartTime - relax_leniency) + break; + + // already hit or beyond the hittable end time. + if (h.IsHit || (h.HitObject is IHasEndTime hasEnd && time > hasEnd.EndTime)) continue; - double time = osuHit.Clock.CurrentTime; - double relativetime = time - osuHit.HitObject.StartTime; - - if (time < osuHit.HitObject.StartTime - relax_leniency) continue; - - if ((osuHit.HitObject is IHasEndTime hasEnd && time > hasEnd.EndTime) || osuHit.IsHit) - continue; - - if (osuHit is DrawableHitCircle && osuHit.IsHovered) + switch (h) { - Debug.Assert(osuHit.HitObject.HitWindows != null); - requiresHit |= osuHit.HitObject.HitWindows.CanBeHit(relativetime); - } + case DrawableHitCircle _: + if (!h.IsHovered) + break; - requiresHold |= (osuHit is DrawableSlider slider && (slider.Ball.IsHovered || osuHit.IsHovered)) || osuHit is DrawableSpinner; + Debug.Assert(h.HitObject.HitWindows != null); + requiresHit |= h.HitObject.HitWindows.CanBeHit(time - h.HitObject.StartTime); + break; + + case DrawableSlider slider: + requiresHold |= slider.Ball.IsHovered || h.IsHovered; + break; + + case DrawableSpinner _: + requiresHold = true; + break; + } } if (requiresHit) From cd2d1b06697d5b49fda11240425b8982d2af66b1 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 17:00:55 +0900 Subject: [PATCH 1522/1829] Fix 2B maps not playing correctly with relax mod enabled --- osu.Game.Rulesets.Osu/Mods/OsuModRelax.cs | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModRelax.cs b/osu.Game.Rulesets.Osu/Mods/OsuModRelax.cs index 7ebb6fd76d..d971e777ec 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModRelax.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModRelax.cs @@ -43,15 +43,15 @@ namespace osu.Game.Rulesets.Osu.Mods switch (h) { - case DrawableHitCircle _: - if (!h.IsHovered) - break; - - Debug.Assert(h.HitObject.HitWindows != null); - requiresHit |= h.HitObject.HitWindows.CanBeHit(time - h.HitObject.StartTime); + case DrawableHitCircle circle: + handleHitCircle(circle); break; case DrawableSlider slider: + // Handles cases like "2B" beatmaps, where sliders may be overlapping and simply holding is not enough. + if (!slider.HeadCircle.IsHit) + handleHitCircle(slider.HeadCircle); + requiresHold |= slider.Ball.IsHovered || h.IsHovered; break; @@ -68,6 +68,15 @@ namespace osu.Game.Rulesets.Osu.Mods } addAction(requiresHold); + + void handleHitCircle(DrawableHitCircle circle) + { + if (!circle.IsHovered) + return; + + Debug.Assert(circle.HitObject.HitWindows != null); + requiresHit |= circle.HitObject.HitWindows.CanBeHit(time - circle.HitObject.StartTime); + } } private bool wasHit; From 4ce687d608badbf3828992852e4070dcfb978cf4 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 17:03:23 +0900 Subject: [PATCH 1523/1829] Move public methods up --- osu.Game.Rulesets.Osu/Mods/OsuModRelax.cs | 24 +++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModRelax.cs b/osu.Game.Rulesets.Osu/Mods/OsuModRelax.cs index d971e777ec..f874bc271f 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModRelax.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModRelax.cs @@ -24,6 +24,18 @@ namespace osu.Game.Rulesets.Osu.Mods /// private const float relax_leniency = 3; + private bool wasHit; + private bool wasLeft; + + private OsuInputManager osuInputManager; + + public void ApplyToDrawableRuleset(DrawableRuleset drawableRuleset) + { + // grab the input manager for future use. + osuInputManager = (OsuInputManager)drawableRuleset.KeyBindingInputManager; + osuInputManager.AllowUserPresses = false; + } + public void Update(Playfield playfield) { bool requiresHold = false; @@ -79,11 +91,6 @@ namespace osu.Game.Rulesets.Osu.Mods } } - private bool wasHit; - private bool wasLeft; - - private OsuInputManager osuInputManager; - private void addAction(bool hitting) { if (wasHit == hitting) @@ -104,12 +111,5 @@ namespace osu.Game.Rulesets.Osu.Mods state.Apply(osuInputManager.CurrentState, osuInputManager); } - - public void ApplyToDrawableRuleset(DrawableRuleset drawableRuleset) - { - // grab the input manager for future use. - osuInputManager = (OsuInputManager)drawableRuleset.KeyBindingInputManager; - osuInputManager.AllowUserPresses = false; - } } } From 61a7f04efb7036a9998160b73d3f6166a671005c Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 17:13:50 +0900 Subject: [PATCH 1524/1829] Add a sane key up delay to relax mod --- osu.Game.Rulesets.Osu/Mods/OsuModRelax.cs | 50 +++++++++++++--------- osu.Game/Rulesets/Replays/AutoGenerator.cs | 2 +- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModRelax.cs b/osu.Game.Rulesets.Osu/Mods/OsuModRelax.cs index f874bc271f..6286c80d7c 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModRelax.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModRelax.cs @@ -9,6 +9,7 @@ using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Objects.Types; using osu.Game.Rulesets.Osu.Objects; using osu.Game.Rulesets.Osu.Objects.Drawables; +using osu.Game.Rulesets.Replays; using osu.Game.Rulesets.UI; using static osu.Game.Input.Handlers.ReplayInputHandler; @@ -24,11 +25,14 @@ namespace osu.Game.Rulesets.Osu.Mods ///
    private const float relax_leniency = 3; - private bool wasHit; + private bool isDownState; private bool wasLeft; private OsuInputManager osuInputManager; + private ReplayState state; + private double lastStateChangeTime; + public void ApplyToDrawableRuleset(DrawableRuleset drawableRuleset) { // grab the input manager for future use. @@ -75,11 +79,14 @@ namespace osu.Game.Rulesets.Osu.Mods if (requiresHit) { - addAction(false); - addAction(true); + changeState(false); + changeState(true); } - addAction(requiresHold); + if (requiresHold) + changeState(true); + else if (isDownState && time - lastStateChangeTime > AutoGenerator.KEY_UP_DELAY) + changeState(false); void handleHitCircle(DrawableHitCircle circle) { @@ -89,27 +96,28 @@ namespace osu.Game.Rulesets.Osu.Mods Debug.Assert(circle.HitObject.HitWindows != null); requiresHit |= circle.HitObject.HitWindows.CanBeHit(time - circle.HitObject.StartTime); } - } - private void addAction(bool hitting) - { - if (wasHit == hitting) - return; - - wasHit = hitting; - - var state = new ReplayState + void changeState(bool down) { - PressedActions = new List() - }; + if (isDownState == down) + return; - if (hitting) - { - state.PressedActions.Add(wasLeft ? OsuAction.LeftButton : OsuAction.RightButton); - wasLeft = !wasLeft; + isDownState = down; + lastStateChangeTime = time; + + state = new ReplayState + { + PressedActions = new List() + }; + + if (down) + { + state.PressedActions.Add(wasLeft ? OsuAction.LeftButton : OsuAction.RightButton); + wasLeft = !wasLeft; + } + + state?.Apply(osuInputManager.CurrentState, osuInputManager); } - - state.Apply(osuInputManager.CurrentState, osuInputManager); } } } diff --git a/osu.Game/Rulesets/Replays/AutoGenerator.cs b/osu.Game/Rulesets/Replays/AutoGenerator.cs index 3319f30a6f..b3c609f2f4 100644 --- a/osu.Game/Rulesets/Replays/AutoGenerator.cs +++ b/osu.Game/Rulesets/Replays/AutoGenerator.cs @@ -32,7 +32,7 @@ namespace osu.Game.Rulesets.Replays #region Constants // Shared amongst all modes - protected const double KEY_UP_DELAY = 50; + public const double KEY_UP_DELAY = 50; #endregion From 5ec9f454d5f5caf792d287bf34e1524b6410123e Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 17:20:38 +0900 Subject: [PATCH 1525/1829] Implement the match beatmap detail area --- .../TestSceneMatchBeatmapDetailArea.cs | 67 +++++++++++++ .../Multiplayer/TestSceneMatchSongSelect.cs | 37 +++++++ .../BeatmapDetailAreaPlaylistTabItem.cs | 12 +++ .../Components/MatchBeatmapDetailArea.cs | 98 +++++++++++++++++++ osu.Game/Screens/Select/MatchSongSelect.cs | 3 +- 5 files changed, 216 insertions(+), 1 deletion(-) create mode 100644 osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapDetailArea.cs create mode 100644 osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSongSelect.cs create mode 100644 osu.Game/Screens/Multi/Components/BeatmapDetailAreaPlaylistTabItem.cs create mode 100644 osu.Game/Screens/Multi/Components/MatchBeatmapDetailArea.cs diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapDetailArea.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapDetailArea.cs new file mode 100644 index 0000000000..09d882a265 --- /dev/null +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapDetailArea.cs @@ -0,0 +1,67 @@ +// 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 NUnit.Framework; +using osu.Framework.Allocation; +using osu.Framework.Graphics; +using osu.Framework.Utils; +using osu.Game.Beatmaps; +using osu.Game.Online.Multiplayer; +using osu.Game.Rulesets; +using osu.Game.Rulesets.Osu.Mods; +using osu.Game.Screens.Multi.Components; +using osuTK; + +namespace osu.Game.Tests.Visual.Multiplayer +{ + public class TestSceneMatchBeatmapDetailArea : MultiplayerTestScene + { + [Resolved] + private BeatmapManager beatmapManager { get; set; } + + [Resolved] + + private RulesetStore rulesetStore { get; set; } + + private MatchBeatmapDetailArea detailArea; + + [SetUp] + public void Setup() => Schedule(() => + { + Room.Playlist.Clear(); + + Child = detailArea = new MatchBeatmapDetailArea + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Size = new Vector2(500), + CreateNewItem = createNewItem + }; + }); + + private void createNewItem() + { + var set = beatmapManager.GetAllUsableBeatmapSetsEnumerable().First(); + var rulesets = rulesetStore.AvailableRulesets.ToList(); + + var beatmap = set.Beatmaps[RNG.Next(0, set.Beatmaps.Count)]; + + beatmap.BeatmapSet = set; + beatmap.Metadata = set.Metadata; + + Room.Playlist.Add(new PlaylistItem + { + ID = Room.Playlist.Count, + Beatmap = { Value = beatmap }, + Ruleset = { Value = rulesets[RNG.Next(0, rulesets.Count)] }, + RequiredMods = + { + new OsuModHardRock(), + new OsuModDoubleTime(), + new OsuModAutoplay() + } + }); + } + } +} diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSongSelect.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSongSelect.cs new file mode 100644 index 0000000000..f6e4715182 --- /dev/null +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSongSelect.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 System; +using System.Collections.Generic; +using NUnit.Framework; +using osu.Framework.Allocation; +using osu.Game.Beatmaps; +using osu.Game.Screens.Multi.Components; +using osu.Game.Screens.Select; + +namespace osu.Game.Tests.Visual.Multiplayer +{ + public class TestSceneMatchSongSelect : MultiplayerTestScene + { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(MatchSongSelect), + typeof(MatchBeatmapDetailArea), + }; + + [Resolved] + private BeatmapManager beatmapManager { get; set; } + + [SetUp] + public void Setup() => Schedule(() => + { + Room.Playlist.Clear(); + }); + + [Test] + public void TestLoadSongSelect() + { + AddStep("create song select", () => LoadScreen(new MatchSongSelect())); + } + } +} diff --git a/osu.Game/Screens/Multi/Components/BeatmapDetailAreaPlaylistTabItem.cs b/osu.Game/Screens/Multi/Components/BeatmapDetailAreaPlaylistTabItem.cs new file mode 100644 index 0000000000..3f2ab28f1a --- /dev/null +++ b/osu.Game/Screens/Multi/Components/BeatmapDetailAreaPlaylistTabItem.cs @@ -0,0 +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 osu.Game.Screens.Select; + +namespace osu.Game.Screens.Multi.Components +{ + public class BeatmapDetailAreaPlaylistTabItem : BeatmapDetailAreaTabItem + { + public override string Name => "Playlist"; + } +} diff --git a/osu.Game/Screens/Multi/Components/MatchBeatmapDetailArea.cs b/osu.Game/Screens/Multi/Components/MatchBeatmapDetailArea.cs new file mode 100644 index 0000000000..8e085d6979 --- /dev/null +++ b/osu.Game/Screens/Multi/Components/MatchBeatmapDetailArea.cs @@ -0,0 +1,98 @@ +// 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.Bindables; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Graphics.UserInterface; +using osu.Game.Online.Multiplayer; +using osu.Game.Screens.Select; +using osuTK; + +namespace osu.Game.Screens.Multi.Components +{ + public class MatchBeatmapDetailArea : BeatmapDetailArea + { + public Action CreateNewItem; + + public readonly Bindable SelectedItem = new Bindable(); + + [Resolved(typeof(Room))] + protected BindableList Playlist { get; private set; } + + private readonly Drawable playlistArea; + private readonly DrawableRoomPlaylist playlist; + + public MatchBeatmapDetailArea() + { + Add(playlistArea = new Container + { + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Vertical = 10 }, + Child = new GridContainer + { + RelativeSizeAxes = Axes.Both, + Content = new[] + { + new Drawable[] + { + new Container + { + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Bottom = 10 }, + Child = playlist = new DrawableRoomPlaylist(true, false) + { + RelativeSizeAxes = Axes.Both, + } + } + }, + new Drawable[] + { + new TriangleButton + { + Text = "create new item", + RelativeSizeAxes = Axes.Both, + Size = Vector2.One, + Action = () => CreateNewItem?.Invoke() + } + }, + }, + RowDimensions = new[] + { + new Dimension(), + new Dimension(GridSizeMode.Absolute, 50), + } + } + }); + } + + protected override void LoadComplete() + { + base.LoadComplete(); + + playlist.Items.BindTo(Playlist); + playlist.SelectedItem.BindTo(SelectedItem); + } + + protected override void OnTabChanged(BeatmapDetailAreaTabItem tab, bool selectedMods) + { + base.OnTabChanged(tab, selectedMods); + + switch (tab) + { + case BeatmapDetailAreaPlaylistTabItem _: + playlistArea.Show(); + break; + + default: + playlistArea.Hide(); + break; + } + } + + protected override BeatmapDetailAreaTabItem[] CreateTabItems() => base.CreateTabItems().Prepend(new BeatmapDetailAreaPlaylistTabItem()).ToArray(); + } +} diff --git a/osu.Game/Screens/Select/MatchSongSelect.cs b/osu.Game/Screens/Select/MatchSongSelect.cs index 826677ee30..94d65889d1 100644 --- a/osu.Game/Screens/Select/MatchSongSelect.cs +++ b/osu.Game/Screens/Select/MatchSongSelect.cs @@ -12,6 +12,7 @@ using osu.Game.Beatmaps; using osu.Game.Online.Multiplayer; using osu.Game.Rulesets.Mods; using osu.Game.Screens.Multi; +using osu.Game.Screens.Multi.Components; namespace osu.Game.Screens.Select { @@ -35,7 +36,7 @@ namespace osu.Game.Screens.Select Padding = new MarginPadding { Horizontal = HORIZONTAL_OVERFLOW_PADDING }; } - protected override BeatmapDetailArea CreateBeatmapDetailArea() => new PlayBeatmapDetailArea(); // Todo: Temporary + protected override BeatmapDetailArea CreateBeatmapDetailArea() => new MatchBeatmapDetailArea(); protected override bool OnStart() { From 66910f1ee3489ed83890b772599e6ce02475a30e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 17:50:53 +0900 Subject: [PATCH 1526/1829] Remove unnecessary bindable setter --- osu.Game/Screens/Select/BeatmapDetailArea.cs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/osu.Game/Screens/Select/BeatmapDetailArea.cs b/osu.Game/Screens/Select/BeatmapDetailArea.cs index 1aae0cc243..2e78b1aed2 100644 --- a/osu.Game/Screens/Select/BeatmapDetailArea.cs +++ b/osu.Game/Screens/Select/BeatmapDetailArea.cs @@ -28,11 +28,7 @@ namespace osu.Game.Screens.Select public readonly BeatmapDetails Details; - protected Bindable CurrentTab - { - get => tabControl.Current; - set => tabControl.Current = value; - } + protected Bindable CurrentTab => tabControl.Current; private readonly Container content; protected override Container Content => content; From f0f739707f2e9a91cc4d64096afe4aae1e8a5ab0 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 17:51:42 +0900 Subject: [PATCH 1527/1829] Add playlist support to match song select --- .../Multiplayer/TestSceneMatchSongSelect.cs | 101 +++++++++++++++++- osu.Game/Screens/Select/MatchSongSelect.cs | 42 +++----- 2 files changed, 114 insertions(+), 29 deletions(-) diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSongSelect.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSongSelect.cs index f6e4715182..434b265f9c 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSongSelect.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSongSelect.cs @@ -3,9 +3,19 @@ using System; using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; using NUnit.Framework; using osu.Framework.Allocation; +using osu.Framework.Audio; +using osu.Framework.Extensions; +using osu.Framework.Platform; +using osu.Framework.Screens; +using osu.Framework.Utils; using osu.Game.Beatmaps; +using osu.Game.Rulesets; +using osu.Game.Rulesets.Osu; using osu.Game.Screens.Multi.Components; using osu.Game.Screens.Select; @@ -22,6 +32,72 @@ namespace osu.Game.Tests.Visual.Multiplayer [Resolved] private BeatmapManager beatmapManager { get; set; } + private BeatmapManager manager; + + private RulesetStore rulesets; + + private TestMatchSongSelect songSelect; + + [BackgroundDependencyLoader] + private void load(GameHost host, AudioManager audio) + { + Dependencies.Cache(rulesets = new RulesetStore(ContextFactory)); + Dependencies.Cache(manager = new BeatmapManager(LocalStorage, ContextFactory, rulesets, null, audio, host, Beatmap.Default)); + + var beatmaps = new List(); + + for (int i = 0; i < 6; i++) + { + int beatmapId = 10 * 10 + i; + + int length = RNG.Next(30000, 200000); + double bpm = RNG.NextSingle(80, 200); + + beatmaps.Add(new BeatmapInfo + { + Ruleset = new OsuRuleset().RulesetInfo, + OnlineBeatmapID = beatmapId, + Path = "normal.osu", + Version = $"{beatmapId} (length {TimeSpan.FromMilliseconds(length):m\\:ss}, bpm {bpm:0.#})", + Length = length, + BPM = bpm, + BaseDifficulty = new BeatmapDifficulty + { + OverallDifficulty = 3.5f, + }, + }); + } + + manager.Import(new BeatmapSetInfo + { + OnlineBeatmapSetID = 10, + Hash = new MemoryStream(Encoding.UTF8.GetBytes(Guid.NewGuid().ToString())).ComputeMD5Hash(), + Metadata = new BeatmapMetadata + { + // Create random metadata, then we can check if sorting works based on these + Artist = "Some Artist " + RNG.Next(0, 9), + Title = $"Some Song (set id 10), max bpm {beatmaps.Max(b => b.BPM):0.#})", + AuthorString = "Some Guy " + RNG.Next(0, 9), + }, + Beatmaps = beatmaps, + DateAdded = DateTimeOffset.UtcNow, + }).Wait(); + } + + public override void SetUpSteps() + { + base.SetUpSteps(); + + AddStep("reset", () => + { + Ruleset.Value = new OsuRuleset().RulesetInfo; + Beatmap.SetDefault(); + }); + + AddStep("create song select", () => LoadScreen(songSelect = new TestMatchSongSelect())); + AddUntilStep("wait for present", () => songSelect.IsCurrentScreen()); + } + [SetUp] public void Setup() => Schedule(() => { @@ -29,9 +105,30 @@ namespace osu.Game.Tests.Visual.Multiplayer }); [Test] - public void TestLoadSongSelect() + public void TestItemAddedIfEmptyOnStart() { - AddStep("create song select", () => LoadScreen(new MatchSongSelect())); + AddStep("finalise selection", () => songSelect.FinaliseSelection()); + AddAssert("playlist has 1 item", () => Room.Playlist.Count == 1); + } + + [Test] + public void TestItemAddedWhenCreateNewItemClicked() + { + AddStep("create new item", () => songSelect.BeatmapDetails.CreateNewItem()); + AddAssert("playlist has 1 item", () => Room.Playlist.Count == 1); + } + + [Test] + public void TestItemNotAddedIfExistingOnStart() + { + AddStep("create new item", () => songSelect.BeatmapDetails.CreateNewItem()); + AddStep("finalise selection", () => songSelect.FinaliseSelection()); + AddAssert("playlist has 1 item", () => Room.Playlist.Count == 1); + } + + private class TestMatchSongSelect : MatchSongSelect + { + public new MatchBeatmapDetailArea BeatmapDetails => (MatchBeatmapDetailArea)base.BeatmapDetails; } } } diff --git a/osu.Game/Screens/Select/MatchSongSelect.cs b/osu.Game/Screens/Select/MatchSongSelect.cs index 94d65889d1..4edc968e8a 100644 --- a/osu.Game/Screens/Select/MatchSongSelect.cs +++ b/osu.Game/Screens/Select/MatchSongSelect.cs @@ -2,7 +2,6 @@ // See the LICENCE file in the repository root for full licence text. using System; -using System.Linq; using Humanizer; using osu.Framework.Allocation; using osu.Framework.Bindables; @@ -10,7 +9,6 @@ using osu.Framework.Graphics; using osu.Framework.Screens; using osu.Game.Beatmaps; using osu.Game.Online.Multiplayer; -using osu.Game.Rulesets.Mods; using osu.Game.Screens.Multi; using osu.Game.Screens.Multi.Components; @@ -36,42 +34,32 @@ namespace osu.Game.Screens.Select Padding = new MarginPadding { Horizontal = HORIZONTAL_OVERFLOW_PADDING }; } - protected override BeatmapDetailArea CreateBeatmapDetailArea() => new MatchBeatmapDetailArea(); + protected override BeatmapDetailArea CreateBeatmapDetailArea() => new MatchBeatmapDetailArea + { + CreateNewItem = createNewItem + }; protected override bool OnStart() { - var item = new PlaylistItem - { - Beatmap = { Value = Beatmap.Value.BeatmapInfo }, - Ruleset = { Value = Ruleset.Value }, - RulesetID = Ruleset.Value.ID ?? 0 - }; + if (Playlist.Count == 0) + createNewItem(); - item.RequiredMods.AddRange(Mods.Value); - - Selected?.Invoke(item); - - if (this.IsCurrentScreen()) - this.Exit(); + this.Exit(); return true; } - public override bool OnExiting(IScreen next) + private void createNewItem() { - if (base.OnExiting(next)) - return true; - - var firstItem = Playlist.FirstOrDefault(); - - if (firstItem != null) + PlaylistItem item = new PlaylistItem { - Ruleset.Value = firstItem.Ruleset.Value; - Beatmap.Value = beatmaps.GetWorkingBeatmap(firstItem.Beatmap.Value); - Mods.Value = firstItem.RequiredMods?.ToArray() ?? Array.Empty(); - } + Beatmap = { Value = Beatmap.Value.BeatmapInfo }, + Ruleset = { Value = Ruleset.Value } + }; - return false; + item.RequiredMods.AddRange(Mods.Value); + + Playlist.Add(item); } } } From 32fd713a9d4c4d40a5066e155efc463c207e3701 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 17:57:25 +0900 Subject: [PATCH 1528/1829] Use test beatmap instead of beatmap manager --- .../Multiplayer/TestSceneDrawableRoomPlaylist.cs | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs index c93d59acdf..4ba802730f 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs @@ -9,14 +9,15 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Testing; -using osu.Framework.Utils; using osu.Game.Beatmaps; using osu.Game.Graphics.Containers; using osu.Game.Graphics.UserInterface; using osu.Game.Online.Multiplayer; using osu.Game.Rulesets; +using osu.Game.Rulesets.Osu; using osu.Game.Rulesets.Osu.Mods; using osu.Game.Screens.Multi; +using osu.Game.Tests.Beatmaps; using osuTK; using osuTK.Input; @@ -218,22 +219,13 @@ namespace osu.Game.Tests.Visual.Multiplayer Size = new Vector2(500, 300) }; - var beatmapSets = beatmapManager.GetAllUsableBeatmapSets(); - var rulesets = rulesetStore.AvailableRulesets.ToList(); - for (int i = 0; i < 20; i++) { - var set = beatmapSets[RNG.Next(0, beatmapSets.Count)]; - var beatmap = set.Beatmaps[RNG.Next(0, set.Beatmaps.Count)]; - - beatmap.BeatmapSet = set; - beatmap.Metadata = set.Metadata; - playlist.Items.Add(new PlaylistItem { ID = i, - Beatmap = { Value = beatmap }, - Ruleset = { Value = rulesets[RNG.Next(0, rulesets.Count)] }, + Beatmap = { Value = new TestBeatmap(new OsuRuleset().RulesetInfo).BeatmapInfo }, + Ruleset = { Value = new OsuRuleset().RulesetInfo }, RequiredMods = { new OsuModHardRock(), From de646649def7d7ca2d0322ab925f386c46343e63 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 17:59:14 +0900 Subject: [PATCH 1529/1829] Use test beatmap instead of beatmap manager --- .../TestSceneMatchBeatmapDetailArea.cs | 30 ++++--------------- 1 file changed, 5 insertions(+), 25 deletions(-) diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapDetailArea.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapDetailArea.cs index 09d882a265..13fcc18e56 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapDetailArea.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapDetailArea.cs @@ -1,37 +1,25 @@ // 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 NUnit.Framework; -using osu.Framework.Allocation; using osu.Framework.Graphics; -using osu.Framework.Utils; -using osu.Game.Beatmaps; using osu.Game.Online.Multiplayer; -using osu.Game.Rulesets; +using osu.Game.Rulesets.Osu; using osu.Game.Rulesets.Osu.Mods; using osu.Game.Screens.Multi.Components; +using osu.Game.Tests.Beatmaps; using osuTK; namespace osu.Game.Tests.Visual.Multiplayer { public class TestSceneMatchBeatmapDetailArea : MultiplayerTestScene { - [Resolved] - private BeatmapManager beatmapManager { get; set; } - - [Resolved] - - private RulesetStore rulesetStore { get; set; } - - private MatchBeatmapDetailArea detailArea; - [SetUp] public void Setup() => Schedule(() => { Room.Playlist.Clear(); - Child = detailArea = new MatchBeatmapDetailArea + Child = new MatchBeatmapDetailArea { Anchor = Anchor.Centre, Origin = Anchor.Centre, @@ -42,19 +30,11 @@ namespace osu.Game.Tests.Visual.Multiplayer private void createNewItem() { - var set = beatmapManager.GetAllUsableBeatmapSetsEnumerable().First(); - var rulesets = rulesetStore.AvailableRulesets.ToList(); - - var beatmap = set.Beatmaps[RNG.Next(0, set.Beatmaps.Count)]; - - beatmap.BeatmapSet = set; - beatmap.Metadata = set.Metadata; - Room.Playlist.Add(new PlaylistItem { ID = Room.Playlist.Count, - Beatmap = { Value = beatmap }, - Ruleset = { Value = rulesets[RNG.Next(0, rulesets.Count)] }, + Beatmap = { Value = new TestBeatmap(new OsuRuleset().RulesetInfo).BeatmapInfo }, + Ruleset = { Value = new OsuRuleset().RulesetInfo }, RequiredMods = { new OsuModHardRock(), From fbc5ffbadbd27e5856b8c94c6d046a3513b5df16 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 17:59:47 +0900 Subject: [PATCH 1530/1829] Remove now unused members --- .../Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs | 9 --------- 1 file changed, 9 deletions(-) diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs index 4ba802730f..d2d02412cd 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneDrawableRoomPlaylist.cs @@ -5,15 +5,12 @@ using System; using System.Collections.Generic; using System.Linq; using NUnit.Framework; -using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Testing; -using osu.Game.Beatmaps; using osu.Game.Graphics.Containers; using osu.Game.Graphics.UserInterface; using osu.Game.Online.Multiplayer; -using osu.Game.Rulesets; using osu.Game.Rulesets.Osu; using osu.Game.Rulesets.Osu.Mods; using osu.Game.Screens.Multi; @@ -31,12 +28,6 @@ namespace osu.Game.Tests.Visual.Multiplayer typeof(DrawableRoomPlaylistItem) }; - [Resolved] - private BeatmapManager beatmapManager { get; set; } - - [Resolved] - private RulesetStore rulesetStore { get; set; } - private DrawableRoomPlaylist playlist; [Test] From be30ef3cca69c1b00beebdf1a579edc5f47f84f9 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 18:13:52 +0900 Subject: [PATCH 1531/1829] Move BeatmapMetadataDisplay to its own class --- .../Screens/Play/BeatmapMetadataDisplay.cs | 180 ++++++++++++++++++ osu.Game/Screens/Play/PlayerLoader.cs | 163 ---------------- 2 files changed, 180 insertions(+), 163 deletions(-) create mode 100644 osu.Game/Screens/Play/BeatmapMetadataDisplay.cs diff --git a/osu.Game/Screens/Play/BeatmapMetadataDisplay.cs b/osu.Game/Screens/Play/BeatmapMetadataDisplay.cs new file mode 100644 index 0000000000..074341226e --- /dev/null +++ b/osu.Game/Screens/Play/BeatmapMetadataDisplay.cs @@ -0,0 +1,180 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System.Collections.Generic; +using osu.Framework.Allocation; +using osu.Framework.Bindables; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Sprites; +using osu.Framework.Localisation; +using osu.Game.Beatmaps; +using osu.Game.Graphics; +using osu.Game.Graphics.Sprites; +using osu.Game.Graphics.UserInterface; +using osu.Game.Rulesets.Mods; +using osu.Game.Screens.Play.HUD; +using osuTK; +using osuTK.Graphics; + +namespace osu.Game.Screens.Play +{ + /// + /// Displays beatmap metadata inside + /// + public class BeatmapMetadataDisplay : Container + { + private class MetadataLine : Container + { + public MetadataLine(string left, string right) + { + AutoSizeAxes = Axes.Both; + Children = new Drawable[] + { + new OsuSpriteText + { + Anchor = Anchor.TopCentre, + Origin = Anchor.TopRight, + Margin = new MarginPadding { Right = 5 }, + Colour = OsuColour.Gray(0.8f), + Text = left, + }, + new OsuSpriteText + { + Anchor = Anchor.TopCentre, + Origin = Anchor.TopLeft, + Margin = new MarginPadding { Left = 5 }, + Text = string.IsNullOrEmpty(right) ? @"-" : right, + } + }; + } + } + + private readonly WorkingBeatmap beatmap; + private readonly Bindable> mods; + private readonly Drawable facade; + private LoadingAnimation loading; + private Sprite backgroundSprite; + + public IBindable> Mods => mods; + + public bool Loading + { + set + { + if (value) + { + loading.Show(); + backgroundSprite.FadeColour(OsuColour.Gray(0.5f), 400, Easing.OutQuint); + } + else + { + loading.Hide(); + backgroundSprite.FadeColour(Color4.White, 400, Easing.OutQuint); + } + } + } + + public BeatmapMetadataDisplay(WorkingBeatmap beatmap, Bindable> mods, Drawable facade) + { + this.beatmap = beatmap; + this.facade = facade; + + this.mods = new Bindable>(); + this.mods.BindTo(mods); + } + + [BackgroundDependencyLoader] + private void load() + { + var metadata = beatmap.BeatmapInfo?.Metadata ?? new BeatmapMetadata(); + + AutoSizeAxes = Axes.Both; + Children = new Drawable[] + { + new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Origin = Anchor.TopCentre, + Anchor = Anchor.TopCentre, + Direction = FillDirection.Vertical, + Children = new[] + { + facade.With(d => + { + d.Anchor = Anchor.TopCentre; + d.Origin = Anchor.TopCentre; + }), + new OsuSpriteText + { + Text = new LocalisedString((metadata.TitleUnicode, metadata.Title)), + Font = OsuFont.GetFont(size: 36, italics: true), + Origin = Anchor.TopCentre, + Anchor = Anchor.TopCentre, + Margin = new MarginPadding { Top = 15 }, + }, + new OsuSpriteText + { + Text = new LocalisedString((metadata.ArtistUnicode, metadata.Artist)), + Font = OsuFont.GetFont(size: 26, italics: true), + Origin = Anchor.TopCentre, + Anchor = Anchor.TopCentre, + }, + new Container + { + Size = new Vector2(300, 60), + Margin = new MarginPadding(10), + Origin = Anchor.TopCentre, + Anchor = Anchor.TopCentre, + CornerRadius = 10, + Masking = true, + Children = new Drawable[] + { + backgroundSprite = new Sprite + { + RelativeSizeAxes = Axes.Both, + Texture = beatmap?.Background, + Origin = Anchor.Centre, + Anchor = Anchor.Centre, + FillMode = FillMode.Fill, + }, + loading = new LoadingAnimation { Scale = new Vector2(1.3f) } + } + }, + new OsuSpriteText + { + Text = beatmap?.BeatmapInfo?.Version, + Font = OsuFont.GetFont(size: 26, italics: true), + Origin = Anchor.TopCentre, + Anchor = Anchor.TopCentre, + Margin = new MarginPadding + { + Bottom = 40 + }, + }, + new MetadataLine("Source", metadata.Source) + { + Origin = Anchor.TopCentre, + Anchor = Anchor.TopCentre, + }, + new MetadataLine("Mapper", metadata.AuthorString) + { + Origin = Anchor.TopCentre, + Anchor = Anchor.TopCentre, + }, + new ModDisplay + { + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, + AutoSizeAxes = Axes.Both, + Margin = new MarginPadding { Top = 20 }, + Current = mods + } + }, + } + }; + + Loading = true; + } + } +} diff --git a/osu.Game/Screens/Play/PlayerLoader.cs b/osu.Game/Screens/Play/PlayerLoader.cs index f37faac988..ebc2422dc5 100644 --- a/osu.Game/Screens/Play/PlayerLoader.cs +++ b/osu.Game/Screens/Play/PlayerLoader.cs @@ -2,7 +2,6 @@ // See the LICENCE file in the repository root for full licence text. using System; -using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using osu.Framework.Allocation; @@ -12,21 +11,15 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; using osu.Framework.Input; -using osu.Framework.Localisation; using osu.Framework.Screens; using osu.Framework.Threading; -using osu.Game.Beatmaps; using osu.Game.Configuration; using osu.Game.Graphics; using osu.Game.Graphics.Containers; -using osu.Game.Graphics.Sprites; -using osu.Game.Graphics.UserInterface; using osu.Game.Input; using osu.Game.Overlays; using osu.Game.Overlays.Notifications; -using osu.Game.Rulesets.Mods; using osu.Game.Screens.Menu; -using osu.Game.Screens.Play.HUD; using osu.Game.Screens.Play.PlayerSettings; using osu.Game.Users; using osuTK; @@ -350,162 +343,6 @@ namespace osu.Game.Screens.Play } } - protected class BeatmapMetadataDisplay : Container - { - private class MetadataLine : Container - { - public MetadataLine(string left, string right) - { - AutoSizeAxes = Axes.Both; - Children = new Drawable[] - { - new OsuSpriteText - { - Anchor = Anchor.TopCentre, - Origin = Anchor.TopRight, - Margin = new MarginPadding { Right = 5 }, - Colour = OsuColour.Gray(0.8f), - Text = left, - }, - new OsuSpriteText - { - Anchor = Anchor.TopCentre, - Origin = Anchor.TopLeft, - Margin = new MarginPadding { Left = 5 }, - Text = string.IsNullOrEmpty(right) ? @"-" : right, - } - }; - } - } - - private readonly WorkingBeatmap beatmap; - private readonly Bindable> mods; - private readonly Drawable facade; - private LoadingAnimation loading; - private Sprite backgroundSprite; - - public IBindable> Mods => mods; - - public bool Loading - { - set - { - if (value) - { - loading.Show(); - backgroundSprite.FadeColour(OsuColour.Gray(0.5f), 400, Easing.OutQuint); - } - else - { - loading.Hide(); - backgroundSprite.FadeColour(Color4.White, 400, Easing.OutQuint); - } - } - } - - public BeatmapMetadataDisplay(WorkingBeatmap beatmap, Bindable> mods, Drawable facade) - { - this.beatmap = beatmap; - this.facade = facade; - - this.mods = new Bindable>(); - this.mods.BindTo(mods); - } - - [BackgroundDependencyLoader] - private void load() - { - var metadata = beatmap.BeatmapInfo?.Metadata ?? new BeatmapMetadata(); - - AutoSizeAxes = Axes.Both; - Children = new Drawable[] - { - new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Origin = Anchor.TopCentre, - Anchor = Anchor.TopCentre, - Direction = FillDirection.Vertical, - Children = new[] - { - facade.With(d => - { - d.Anchor = Anchor.TopCentre; - d.Origin = Anchor.TopCentre; - }), - new OsuSpriteText - { - Text = new LocalisedString((metadata.TitleUnicode, metadata.Title)), - Font = OsuFont.GetFont(size: 36, italics: true), - Origin = Anchor.TopCentre, - Anchor = Anchor.TopCentre, - Margin = new MarginPadding { Top = 15 }, - }, - new OsuSpriteText - { - Text = new LocalisedString((metadata.ArtistUnicode, metadata.Artist)), - Font = OsuFont.GetFont(size: 26, italics: true), - Origin = Anchor.TopCentre, - Anchor = Anchor.TopCentre, - }, - new Container - { - Size = new Vector2(300, 60), - Margin = new MarginPadding(10), - Origin = Anchor.TopCentre, - Anchor = Anchor.TopCentre, - CornerRadius = 10, - Masking = true, - Children = new Drawable[] - { - backgroundSprite = new Sprite - { - RelativeSizeAxes = Axes.Both, - Texture = beatmap?.Background, - Origin = Anchor.Centre, - Anchor = Anchor.Centre, - FillMode = FillMode.Fill, - }, - loading = new LoadingAnimation { Scale = new Vector2(1.3f) } - } - }, - new OsuSpriteText - { - Text = beatmap?.BeatmapInfo?.Version, - Font = OsuFont.GetFont(size: 26, italics: true), - Origin = Anchor.TopCentre, - Anchor = Anchor.TopCentre, - Margin = new MarginPadding - { - Bottom = 40 - }, - }, - new MetadataLine("Source", metadata.Source) - { - Origin = Anchor.TopCentre, - Anchor = Anchor.TopCentre, - }, - new MetadataLine("Mapper", metadata.AuthorString) - { - Origin = Anchor.TopCentre, - Anchor = Anchor.TopCentre, - }, - new ModDisplay - { - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - AutoSizeAxes = Axes.Both, - Margin = new MarginPadding { Top = 20 }, - Current = mods - } - }, - } - }; - - Loading = true; - } - } - private class MutedNotification : SimpleNotification { public MutedNotification() From b69d1ad678b9052091777aad6669ac4e643d3513 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 18:22:57 +0900 Subject: [PATCH 1532/1829] Reorder and clean up PlayerLoader --- osu.Game/Screens/Play/PlayerLoader.cs | 308 +++++++++++++------------- 1 file changed, 158 insertions(+), 150 deletions(-) diff --git a/osu.Game/Screens/Play/PlayerLoader.cs b/osu.Game/Screens/Play/PlayerLoader.cs index ebc2422dc5..6e968de397 100644 --- a/osu.Game/Screens/Play/PlayerLoader.cs +++ b/osu.Game/Screens/Play/PlayerLoader.cs @@ -31,30 +31,60 @@ namespace osu.Game.Screens.Play { protected const float BACKGROUND_BLUR = 15; + public override bool HideOverlaysOnEnter => hideOverlays; + + public override bool DisallowExternalBeatmapRulesetChanges => true; + + // Here because IsHovered will not update unless we do so. + public override bool HandlePositionalInput => true; + + // We show the previous screen status + protected override UserActivity InitialActivity => null; + + protected override bool PlayResumeSound => false; + + protected BeatmapMetadataDisplay MetadataInfo; + + protected VisualSettings VisualSettings; + + protected Task LoadTask { get; private set; } + + protected Task DisposalTask { get; private set; } + + private bool backgroundBrightnessReduction; + + protected bool BackgroundBrightnessReduction + { + set + { + if (value == backgroundBrightnessReduction) + return; + + backgroundBrightnessReduction = value; + + Background.FadeColour(OsuColour.Gray(backgroundBrightnessReduction ? 0.8f : 1), 200); + } + } + + private bool readyForPush => + player.LoadState == LoadState.Ready && (IsHovered || idleTracker.IsIdle.Value) && inputManager?.DraggedDrawable == null; + private readonly Func createPlayer; private Player player; private LogoTrackingContainer content; - protected BeatmapMetadataDisplay MetadataInfo; - private bool hideOverlays; - public override bool HideOverlaysOnEnter => hideOverlays; - - protected override UserActivity InitialActivity => null; //shows the previous screen status - - public override bool DisallowExternalBeatmapRulesetChanges => true; - - protected override bool PlayResumeSound => false; - - protected Task LoadTask { get; private set; } - - protected Task DisposalTask { get; private set; } private InputManager inputManager; + private IdleTracker idleTracker; + private Bindable muteWarningShownOnce; + + private ScheduledDelegate scheduledPushPlayer; + [Resolved(CanBeNull = true)] private NotificationOverlay notificationOverlay { get; set; } @@ -64,19 +94,11 @@ namespace osu.Game.Screens.Play [Resolved] private AudioManager audioManager { get; set; } - private Bindable muteWarningShownOnce; - public PlayerLoader(Func createPlayer) { this.createPlayer = createPlayer; } - private void restartRequested() - { - hideOverlays = true; - ValidForResume = true; - } - [BackgroundDependencyLoader] private void load(SessionStatics sessionStatics) { @@ -124,7 +146,7 @@ namespace osu.Game.Screens.Play { base.OnEntering(last); - loadNewPlayer(); + prepareNewPlayer(); content.ScaleTo(0.7f); Background?.FadeColour(Color4.White, 800, Easing.OutQuint); @@ -153,36 +175,32 @@ namespace osu.Game.Screens.Play MetadataInfo.Loading = true; - //we will only be resumed if the player has requested a re-run (see ValidForResume setting above) - loadNewPlayer(); + // we will only be resumed if the player has requested a re-run (see restartRequested). + prepareNewPlayer(); this.Delay(400).Schedule(pushWhenLoaded); } - private void loadNewPlayer() + public override void OnSuspending(IScreen next) { - var restartCount = player?.RestartCount + 1 ?? 0; + base.OnSuspending(next); - player = createPlayer(); - player.RestartCount = restartCount; - player.RestartRequested = restartRequested; + cancelLoad(); - LoadTask = LoadComponentAsync(player, _ => MetadataInfo.Loading = false); + BackgroundBrightnessReduction = false; } - private void contentIn() + public override bool OnExiting(IScreen next) { - content.ScaleTo(1, 650, Easing.OutQuint); - content.FadeInFromZero(400); - } + cancelLoad(); - private void contentOut() - { - // Ensure the logo is no longer tracking before we scale the content - content.StopTracking(); + content.ScaleTo(0.7f, 150, Easing.InQuint); + this.FadeOut(150); - content.ScaleTo(0.7f, 300, Easing.InQuint); - content.FadeOut(250); + Background.EnableUserDim.Value = false; + BackgroundBrightnessReduction = false; + + return base.OnExiting(next); } protected override void LogoArriving(OsuLogo logo, bool resuming) @@ -191,10 +209,7 @@ namespace osu.Game.Screens.Play const double duration = 300; - if (!resuming) - { - logo.MoveTo(new Vector2(0.5f), duration, Easing.In); - } + if (!resuming) logo.MoveTo(new Vector2(0.5f), duration, Easing.In); logo.ScaleTo(new Vector2(0.15f), duration, Easing.In); logo.FadeIn(350); @@ -212,110 +227,6 @@ namespace osu.Game.Screens.Play content.StopTracking(); } - private ScheduledDelegate pushDebounce; - protected VisualSettings VisualSettings; - - // Here because IsHovered will not update unless we do so. - public override bool HandlePositionalInput => true; - - private bool readyForPush => player.LoadState == LoadState.Ready && (IsHovered || idleTracker.IsIdle.Value) && inputManager?.DraggedDrawable == null; - - private void pushWhenLoaded() - { - if (!this.IsCurrentScreen()) return; - - try - { - if (!readyForPush) - { - // as the pushDebounce below has a delay, we need to keep checking and cancel a future debounce - // if we become unready for push during the delay. - cancelLoad(); - return; - } - - if (pushDebounce != null) - return; - - pushDebounce = Scheduler.AddDelayed(() => - { - contentOut(); - - this.Delay(250).Schedule(() => - { - if (!this.IsCurrentScreen()) return; - - LoadTask = null; - - //By default, we want to load the player and never be returned to. - //Note that this may change if the player we load requested a re-run. - ValidForResume = false; - - if (player.LoadedBeatmapSuccessfully) - this.Push(player); - else - this.Exit(); - }); - }, 500); - } - finally - { - Schedule(pushWhenLoaded); - } - } - - private void cancelLoad() - { - pushDebounce?.Cancel(); - pushDebounce = null; - } - - public override void OnSuspending(IScreen next) - { - BackgroundBrightnessReduction = false; - base.OnSuspending(next); - cancelLoad(); - } - - public override bool OnExiting(IScreen next) - { - content.ScaleTo(0.7f, 150, Easing.InQuint); - this.FadeOut(150); - cancelLoad(); - - Background.EnableUserDim.Value = false; - BackgroundBrightnessReduction = false; - - return base.OnExiting(next); - } - - protected override void Dispose(bool isDisposing) - { - base.Dispose(isDisposing); - - if (isDisposing) - { - // if the player never got pushed, we should explicitly dispose it. - DisposalTask = LoadTask?.ContinueWith(_ => player.Dispose()); - } - } - - private bool backgroundBrightnessReduction; - - protected bool BackgroundBrightnessReduction - { - get => backgroundBrightnessReduction; - set - { - if (value == backgroundBrightnessReduction) - return; - - backgroundBrightnessReduction = value; - - Background.FadeColour(OsuColour.Gray(backgroundBrightnessReduction ? 0.8f : 1), 200); - } - } - protected override void Update() { base.Update(); @@ -343,15 +254,112 @@ namespace osu.Game.Screens.Play } } + private void prepareNewPlayer() + { + var restartCount = player?.RestartCount + 1 ?? 0; + + player = createPlayer(); + player.RestartCount = restartCount; + player.RestartRequested = restartRequested; + + LoadTask = LoadComponentAsync(player, _ => MetadataInfo.Loading = false); + } + + private void restartRequested() + { + hideOverlays = true; + ValidForResume = true; + } + + private void contentIn() + { + content.ScaleTo(1, 650, Easing.OutQuint); + content.FadeInFromZero(400); + } + + private void contentOut() + { + // Ensure the logo is no longer tracking before we scale the content + content.StopTracking(); + + content.ScaleTo(0.7f, 300, Easing.InQuint); + content.FadeOut(250); + } + + private void pushWhenLoaded() + { + if (!this.IsCurrentScreen()) return; + + try + { + if (!readyForPush) + { + // as the pushDebounce below has a delay, we need to keep checking and cancel a future debounce + // if we become unready for push during the delay. + cancelLoad(); + return; + } + + if (scheduledPushPlayer != null) + return; + + scheduledPushPlayer = Scheduler.AddDelayed(() => + { + contentOut(); + + this.Delay(250).Schedule(() => + { + if (!this.IsCurrentScreen()) return; + + LoadTask = null; + + //By default, we want to load the player and never be returned to. + //Note that this may change if the player we load requested a re-run. + ValidForResume = false; + + if (player.LoadedBeatmapSuccessfully) + this.Push(player); + else + this.Exit(); + }); + }, 500); + } + finally + { + Schedule(pushWhenLoaded); + } + } + + private void cancelLoad() + { + scheduledPushPlayer?.Cancel(); + scheduledPushPlayer = null; + } + + #region Disposal + + protected override void Dispose(bool isDisposing) + { + base.Dispose(isDisposing); + + if (isDisposing) + { + // if the player never got pushed, we should explicitly dispose it. + DisposalTask = LoadTask?.ContinueWith(_ => player.Dispose()); + } + } + + #endregion + private class MutedNotification : SimpleNotification { + public override bool IsImportant => true; + public MutedNotification() { Text = "Your music volume is set to 0%! Click here to restore it."; } - public override bool IsImportant => true; - [BackgroundDependencyLoader] private void load(OsuColour colours, AudioManager audioManager, NotificationOverlay notificationOverlay, VolumeOverlay volumeOverlay) { From 2808f8167dd40866481315156fd3b1954614f6ef Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 18:28:58 +0900 Subject: [PATCH 1533/1829] Use more regions --- osu.Game/Screens/Play/PlayerLoader.cs | 35 ++++++++++++++++++--------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/osu.Game/Screens/Play/PlayerLoader.cs b/osu.Game/Screens/Play/PlayerLoader.cs index 6e968de397..01873f7114 100644 --- a/osu.Game/Screens/Play/PlayerLoader.cs +++ b/osu.Game/Screens/Play/PlayerLoader.cs @@ -81,8 +81,6 @@ namespace osu.Game.Screens.Play private IdleTracker idleTracker; - private Bindable muteWarningShownOnce; - private ScheduledDelegate scheduledPushPlayer; [Resolved(CanBeNull = true)] @@ -142,6 +140,8 @@ namespace osu.Game.Screens.Play inputManager = GetContainingInputManager(); } + #region Screen handling + public override void OnEntering(IScreen last) { base.OnEntering(last); @@ -156,15 +156,7 @@ namespace osu.Game.Screens.Play MetadataInfo.Delay(750).FadeIn(500); this.Delay(1800).Schedule(pushWhenLoaded); - if (!muteWarningShownOnce.Value) - { - //Checks if the notification has not been shown yet and also if master volume is muted, track/music volume is muted or if the whole game is muted. - if (volumeOverlay?.IsMuted.Value == true || audioManager.Volume.Value <= audioManager.Volume.MinValue || audioManager.VolumeTrack.Value <= audioManager.VolumeTrack.MinValue) - { - notificationOverlay?.Post(new MutedNotification()); - muteWarningShownOnce.Value = true; - } - } + showMuteWarningIfNeeded(); } public override void OnResuming(IScreen last) @@ -227,6 +219,8 @@ namespace osu.Game.Screens.Play content.StopTracking(); } + #endregion + protected override void Update() { base.Update(); @@ -351,6 +345,23 @@ namespace osu.Game.Screens.Play #endregion + #region Mute warning + + private Bindable muteWarningShownOnce; + + private void showMuteWarningIfNeeded() + { + if (!muteWarningShownOnce.Value) + { + //Checks if the notification has not been shown yet and also if master volume is muted, track/music volume is muted or if the whole game is muted. + if (volumeOverlay?.IsMuted.Value == true || audioManager.Volume.Value <= audioManager.Volume.MinValue || audioManager.VolumeTrack.Value <= audioManager.VolumeTrack.MinValue) + { + notificationOverlay?.Post(new MutedNotification()); + muteWarningShownOnce.Value = true; + } + } + } + private class MutedNotification : SimpleNotification { public override bool IsImportant => true; @@ -378,5 +389,7 @@ namespace osu.Game.Screens.Play }; } } + + #endregion } } From 47325601f42a293d6b259e27489cfedf7b72e807 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 19:02:11 +0900 Subject: [PATCH 1534/1829] Add failing test --- .../Visual/Gameplay/TestScenePlayerLoader.cs | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs index 33ecbed62e..4f19067126 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs @@ -91,9 +91,44 @@ namespace osu.Game.Tests.Visual.Gameplay { AddStep("load dummy beatmap", () => ResetPlayer(false)); AddUntilStep("wait for current", () => loader.IsCurrentScreen()); - AddRepeatStep("move mouse", () => InputManager.MoveMouseTo(loader.VisualSettings.ScreenSpaceDrawQuad.TopLeft + (loader.VisualSettings.ScreenSpaceDrawQuad.BottomRight - loader.VisualSettings.ScreenSpaceDrawQuad.TopLeft) * RNG.NextSingle()), 20); + + AddUntilStep("wait for load ready", () => + { + moveMouse(); + return player.LoadState == LoadState.Ready; + }); + AddRepeatStep("move mouse", moveMouse, 20); + AddAssert("loader still active", () => loader.IsCurrentScreen()); AddUntilStep("loads after idle", () => !loader.IsCurrentScreen()); + + void moveMouse() + { + InputManager.MoveMouseTo( + loader.VisualSettings.ScreenSpaceDrawQuad.TopLeft + + (loader.VisualSettings.ScreenSpaceDrawQuad.BottomRight - loader.VisualSettings.ScreenSpaceDrawQuad.TopLeft) + * RNG.NextSingle()); + } + } + + [Test] + public void TestBlockLoadViaFocus() + { + OsuFocusedOverlayContainer overlay = null; + + AddStep("load dummy beatmap", () => ResetPlayer(false)); + AddUntilStep("wait for current", () => loader.IsCurrentScreen()); + + AddStep("show focused overlay", () => { container.Add(overlay = new ChangelogOverlay { State = { Value = Visibility.Visible } }); }); + AddUntilStep("overlay visible", () => overlay.IsPresent); + + AddUntilStep("wait for load ready", () => player.LoadState == LoadState.Ready); + AddRepeatStep("twiddle thumbs", () => { }, 20); + + AddAssert("loader still active", () => loader.IsCurrentScreen()); + + AddStep("hide overlay", () => overlay.Hide()); + AddUntilStep("loads after idle", () => !loader.IsCurrentScreen()); } [Test] From 4d4ec3515d50bb184d33ab053d06b5d0ff17ca36 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 19:02:37 +0900 Subject: [PATCH 1535/1829] Fix player loading sequence continuing even when a priority overlay is visible --- osu.Game/Screens/Play/PlayerLoader.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/osu.Game/Screens/Play/PlayerLoader.cs b/osu.Game/Screens/Play/PlayerLoader.cs index 01873f7114..c0d88feda2 100644 --- a/osu.Game/Screens/Play/PlayerLoader.cs +++ b/osu.Game/Screens/Play/PlayerLoader.cs @@ -67,7 +67,14 @@ namespace osu.Game.Screens.Play } private bool readyForPush => - player.LoadState == LoadState.Ready && (IsHovered || idleTracker.IsIdle.Value) && inputManager?.DraggedDrawable == null; + // don't push unless the player is completely loaded + player.LoadState == LoadState.Ready + // don't push if the user is hovering one of the panes, unless they are idle. + && (IsHovered || idleTracker.IsIdle.Value) + // don't push if the user is dragging a slider or otherwise. + && inputManager?.DraggedDrawable == null + // don't push if a focused overlay is visible, like settings. + && inputManager?.FocusedDrawable == null; private readonly Func createPlayer; From 05c48cd92950b604cff21490f2ead15a91b15c78 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 19:27:32 +0900 Subject: [PATCH 1536/1829] Fix volume mute tests regressing --- .../Visual/Gameplay/TestScenePlayerLoader.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs index 4f19067126..100f99d130 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestScenePlayerLoader.cs @@ -194,13 +194,22 @@ namespace osu.Game.Tests.Visual.Gameplay } [Test] - public void TestMutedNotificationMasterVolume() => addVolumeSteps("master volume", () => audioManager.Volume.Value = 0, null, () => audioManager.Volume.IsDefault); + public void TestMutedNotificationMasterVolume() + { + addVolumeSteps("master volume", () => audioManager.Volume.Value = 0, null, () => audioManager.Volume.IsDefault); + } [Test] - public void TestMutedNotificationTrackVolume() => addVolumeSteps("music volume", () => audioManager.VolumeTrack.Value = 0, null, () => audioManager.VolumeTrack.IsDefault); + public void TestMutedNotificationTrackVolume() + { + addVolumeSteps("music volume", () => audioManager.VolumeTrack.Value = 0, null, () => audioManager.VolumeTrack.IsDefault); + } [Test] - public void TestMutedNotificationMuteButton() => addVolumeSteps("mute button", null, () => container.VolumeOverlay.IsMuted.Value = true, () => !container.VolumeOverlay.IsMuted.Value); + public void TestMutedNotificationMuteButton() + { + addVolumeSteps("mute button", null, () => container.VolumeOverlay.IsMuted.Value = true, () => !container.VolumeOverlay.IsMuted.Value); + } /// /// Created for avoiding copy pasting code for the same steps. @@ -214,7 +223,7 @@ namespace osu.Game.Tests.Visual.Gameplay AddStep("reset notification lock", () => sessionStatics.GetBindable(Static.MutedAudioNotificationShownOnce).Value = false); AddStep("load player", () => ResetPlayer(false, beforeLoad, afterLoad)); - AddUntilStep("wait for player", () => player.IsLoaded); + AddUntilStep("wait for player", () => player.LoadState == LoadState.Ready); AddAssert("check for notification", () => container.NotificationOverlay.UnreadCount.Value == 1); AddStep("click notification", () => @@ -228,6 +237,8 @@ namespace osu.Game.Tests.Visual.Gameplay }); AddAssert("check " + volumeName, assert); + + AddUntilStep("wait for player load", () => player.IsLoaded); } private class TestPlayerLoaderContainer : Container From f31220c1ee7aaf3f559b73248961d79208a089d8 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 19:56:01 +0900 Subject: [PATCH 1537/1829] Fix exception when adding duplicate items --- .../Visual/Multiplayer/TestSceneMatchSongSelect.cs | 8 ++++++++ osu.Game/Screens/Select/MatchSongSelect.cs | 2 ++ 2 files changed, 10 insertions(+) diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSongSelect.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSongSelect.cs index 434b265f9c..5820da811d 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSongSelect.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSongSelect.cs @@ -126,6 +126,14 @@ namespace osu.Game.Tests.Visual.Multiplayer AddAssert("playlist has 1 item", () => Room.Playlist.Count == 1); } + [Test] + public void TestAddSameItemMultipleTimes() + { + AddStep("create new item", () => songSelect.BeatmapDetails.CreateNewItem()); + AddStep("create new item", () => songSelect.BeatmapDetails.CreateNewItem()); + AddAssert("playlist has 2 items", () => Room.Playlist.Count == 2); + } + private class TestMatchSongSelect : MatchSongSelect { public new MatchBeatmapDetailArea BeatmapDetails => (MatchBeatmapDetailArea)base.BeatmapDetails; diff --git a/osu.Game/Screens/Select/MatchSongSelect.cs b/osu.Game/Screens/Select/MatchSongSelect.cs index 4edc968e8a..cb0d09b6bb 100644 --- a/osu.Game/Screens/Select/MatchSongSelect.cs +++ b/osu.Game/Screens/Select/MatchSongSelect.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using System; +using System.Linq; using Humanizer; using osu.Framework.Allocation; using osu.Framework.Bindables; @@ -53,6 +54,7 @@ namespace osu.Game.Screens.Select { PlaylistItem item = new PlaylistItem { + ID = (Playlist.LastOrDefault()?.ID + 1) ?? 0, Beatmap = { Value = Beatmap.Value.BeatmapInfo }, Ruleset = { Value = Ruleset.Value } }; From 1e80facfe8e67c03d83c3a0ca7c78e152097f3aa Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 20:03:37 +0900 Subject: [PATCH 1538/1829] Add subscreen test scene --- .../Multiplayer/TestSceneMatchSubScreen.cs | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSubScreen.cs diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSubScreen.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSubScreen.cs new file mode 100644 index 0000000000..76d950b847 --- /dev/null +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSubScreen.cs @@ -0,0 +1,87 @@ +// 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 NUnit.Framework; +using osu.Framework.Allocation; +using osu.Framework.Bindables; +using osu.Game.Beatmaps; +using osu.Game.Online.Multiplayer; +using osu.Game.Rulesets; +using osu.Game.Screens.Multi.Match; +using osu.Game.Screens.Multi.Match.Components; +using osu.Game.Screens.Select; +using osu.Game.Users; + +namespace osu.Game.Tests.Visual.Multiplayer +{ + public class TestSceneMatchSubScreen : ScreenTestScene + { + protected override bool UseOnlineAPI => true; + + public override IReadOnlyList RequiredTypes => new[] + { + typeof(Screens.Multi.Multiplayer), + typeof(MatchSubScreen), + typeof(Header), + typeof(Footer) + }; + + [Cached] + private readonly Bindable currentRoom = new Bindable(); + + [Resolved] + private BeatmapManager beatmaps { get; set; } + + [Resolved] + private RulesetStore rulesets { get; set; } + + public TestSceneMatchSubScreen() + { + currentRoom.Value = new Room(); + } + + [Test] + public void TestShowRoom() + { + AddStep(@"show", () => + { + currentRoom.Value.RoomID.Value = 1; + currentRoom.Value.Availability.Value = RoomAvailability.Public; + currentRoom.Value.Duration.Value = TimeSpan.FromHours(24); + currentRoom.Value.Host.Value = new User { Username = "peppy", Id = 2 }; + currentRoom.Value.Name.Value = "super secret room"; + currentRoom.Value.Participants.AddRange(new[] + { + new User { Username = "peppy", Id = 2 }, + new User { Username = "smoogipoo", Id = 1040328 } + }); + currentRoom.Value.Playlist.Add(new PlaylistItem + { + Beatmap = { Value = beatmaps.GetAllUsableBeatmapSets()[0].Beatmaps[0] }, + Ruleset = { Value = rulesets.GetRuleset(2) }, + }); + + LoadScreen(new MatchSubScreen(currentRoom.Value)); + }); + } + + [Test] + public void TestShowSettings() + { + AddStep(@"show", () => + { + currentRoom.Value.RoomID.Value = null; + LoadScreen(new MatchSubScreen(currentRoom.Value)); + }); + } + + protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent) + { + var dependencies = new CachedModelDependencyContainer(base.CreateChildDependencies(parent)); + dependencies.Model.BindTo(currentRoom); + return dependencies; + } + } +} From b0793b06edd594f452dbc2b788f8105927884f28 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 20:07:52 +0900 Subject: [PATCH 1539/1829] Re-implement the match header --- .../Multiplayer/TestSceneMatchBeatmapPanel.cs | 41 ----- .../Multiplayer/TestSceneMatchHeader.cs | 5 +- .../Visual/Multiplayer/TestSceneMatchInfo.cs | 84 --------- .../Screens/Multi/Match/Components/Header.cs | 174 +++++------------- .../Match/Components/MatchBeatmapPanel.cs | 67 ------- .../Multi/Match/Components/MatchPage.cs | 28 --- .../Multi/Match/Components/MatchTabControl.cs | 66 ------- .../Screens/Multi/Match/MatchSubScreen.cs | 24 --- 8 files changed, 44 insertions(+), 445 deletions(-) delete mode 100644 osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapPanel.cs delete mode 100644 osu.Game.Tests/Visual/Multiplayer/TestSceneMatchInfo.cs delete mode 100644 osu.Game/Screens/Multi/Match/Components/MatchBeatmapPanel.cs delete mode 100644 osu.Game/Screens/Multi/Match/Components/MatchPage.cs delete mode 100644 osu.Game/Screens/Multi/Match/Components/MatchTabControl.cs diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapPanel.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapPanel.cs deleted file mode 100644 index f014b08325..0000000000 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapPanel.cs +++ /dev/null @@ -1,41 +0,0 @@ -// 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.Game.Beatmaps; -using osu.Game.Online.Multiplayer; -using osu.Game.Screens.Multi.Match.Components; -using osu.Framework.Graphics; -using osu.Game.Audio; -using osu.Framework.Allocation; - -namespace osu.Game.Tests.Visual.Multiplayer -{ - [Cached(typeof(IPreviewTrackOwner))] - public class TestSceneMatchBeatmapPanel : MultiplayerTestScene, IPreviewTrackOwner - { - public override IReadOnlyList RequiredTypes => new[] - { - typeof(MatchBeatmapPanel) - }; - - [Resolved] - private PreviewTrackManager previewTrackManager { get; set; } - - public TestSceneMatchBeatmapPanel() - { - Add(new MatchBeatmapPanel - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - }); - - Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = new BeatmapInfo { OnlineBeatmapID = 1763072 } } }); - Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = new BeatmapInfo { OnlineBeatmapID = 2101557 } } }); - Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = new BeatmapInfo { OnlineBeatmapID = 1973466 } } }); - Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = new BeatmapInfo { OnlineBeatmapID = 2109801 } } }); - Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = new BeatmapInfo { OnlineBeatmapID = 1922035 } } }); - } - } -} diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchHeader.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchHeader.cs index 7d7e7f85db..cf40995fc0 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchHeader.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchHeader.cs @@ -5,10 +5,10 @@ using System; using System.Collections.Generic; using osu.Game.Beatmaps; using osu.Game.Online.Multiplayer; -using osu.Game.Online.Multiplayer.GameTypes; using osu.Game.Rulesets.Osu; using osu.Game.Rulesets.Osu.Mods; using osu.Game.Screens.Multi.Match.Components; +using osu.Game.Users; namespace osu.Game.Tests.Visual.Multiplayer { @@ -45,7 +45,8 @@ namespace osu.Game.Tests.Visual.Multiplayer } }); - Room.Type.Value = new GameTypeTimeshift(); + Room.Name.Value = "A very awesome room"; + Room.Host.Value = new User { Id = 2, Username = "peppy" }; Child = new Header(); } diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchInfo.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchInfo.cs deleted file mode 100644 index 6ee9ceb2dd..0000000000 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchInfo.cs +++ /dev/null @@ -1,84 +0,0 @@ -// 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 NUnit.Framework; -using osu.Framework.Allocation; -using osu.Game.Beatmaps; -using osu.Game.Online.Multiplayer; -using osu.Game.Online.Multiplayer.RoomStatuses; -using osu.Game.Rulesets; -using osu.Game.Screens.Multi.Match.Components; - -namespace osu.Game.Tests.Visual.Multiplayer -{ - [TestFixture] - public class TestSceneMatchInfo : MultiplayerTestScene - { - public override IReadOnlyList RequiredTypes => new[] - { - typeof(Info), - typeof(HeaderButton), - typeof(ReadyButton), - typeof(MatchBeatmapPanel) - }; - - [BackgroundDependencyLoader] - private void load(RulesetStore rulesets) - { - Add(new Info()); - - AddStep(@"set name", () => Room.Name.Value = @"Room Name?"); - AddStep(@"set availability", () => Room.Availability.Value = RoomAvailability.FriendsOnly); - AddStep(@"set status", () => Room.Status.Value = new RoomStatusPlaying()); - AddStep(@"set beatmap", () => - { - Room.Playlist.Clear(); - Room.Playlist.Add(new PlaylistItem - { - Beatmap = - { - Value = new BeatmapInfo - { - StarDifficulty = 2.4, - Ruleset = rulesets.GetRuleset(0), - Metadata = new BeatmapMetadata - { - Title = @"My Song", - Artist = @"VisualTests", - AuthorString = @"osu!lazer", - }, - } - } - }); - }); - - AddStep(@"change name", () => Room.Name.Value = @"Room Name!"); - AddStep(@"change availability", () => Room.Availability.Value = RoomAvailability.InviteOnly); - AddStep(@"change status", () => Room.Status.Value = new RoomStatusOpen()); - AddStep(@"null beatmap", () => Room.Playlist.Clear()); - AddStep(@"change beatmap", () => - { - Room.Playlist.Clear(); - Room.Playlist.Add(new PlaylistItem - { - Beatmap = - { - Value = new BeatmapInfo - { - StarDifficulty = 4.2, - Ruleset = rulesets.GetRuleset(3), - Metadata = new BeatmapMetadata - { - Title = @"Your Song", - Artist = @"Tester", - AuthorString = @"Someone", - }, - } - } - }); - }); - } - } -} diff --git a/osu.Game/Screens/Multi/Match/Components/Header.cs b/osu.Game/Screens/Multi/Match/Components/Header.cs index cf1eb6b6ed..ddbaab1706 100644 --- a/osu.Game/Screens/Multi/Match/Components/Header.cs +++ b/osu.Game/Screens/Multi/Match/Components/Header.cs @@ -1,39 +1,23 @@ // 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.Bindables; -using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; -using osu.Framework.Graphics.Colour; using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Shapes; -using osu.Game.Beatmaps.Drawables; using osu.Game.Graphics; -using osu.Game.Online.Multiplayer; -using osu.Game.Overlays.SearchableList; -using osu.Game.Rulesets.Mods; -using osu.Game.Screens.Multi.Components; -using osu.Game.Screens.Play.HUD; +using osu.Game.Graphics.Containers; +using osu.Game.Graphics.Sprites; +using osu.Game.Users.Drawables; using osuTK; -using osuTK.Graphics; namespace osu.Game.Screens.Multi.Match.Components { public class Header : MultiplayerComposite { - public const float HEIGHT = 200; + public const float HEIGHT = 50; - public readonly BindableBool ShowBeatmapPanel = new BindableBool(); - - public MatchTabControl Tabs { get; private set; } - - public Action RequestBeatmapSelection; - - private MatchBeatmapPanel beatmapPanel; - private ModDisplay modDisplay; + private UpdateableAvatar avatar; + private LinkFlowContainer hostText; public Header() { @@ -44,128 +28,52 @@ namespace osu.Game.Screens.Multi.Match.Components [BackgroundDependencyLoader] private void load(OsuColour colours) { - BeatmapSelectButton beatmapButton; - - InternalChildren = new Drawable[] + InternalChild = new FillFlowContainer { - new Container + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(10, 0), + Children = new Drawable[] { - RelativeSizeAxes = Axes.Both, - Masking = true, - Children = new Drawable[] + avatar = new UpdateableAvatar { - new HeaderBackgroundSprite { RelativeSizeAxes = Axes.Both }, - new Box + Size = new Vector2(50), + Masking = true, + CornerRadius = 10, + }, + new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Vertical, + Children = new Drawable[] { - RelativeSizeAxes = Axes.Both, - Colour = ColourInfo.GradientVertical(Color4.Black.Opacity(0.7f), Color4.Black.Opacity(0.8f)), - }, - beatmapPanel = new MatchBeatmapPanel - { - Anchor = Anchor.CentreRight, - Origin = Anchor.CentreRight, - Margin = new MarginPadding { Right = 100 }, + new OsuSpriteText + { + Font = OsuFont.GetFont(size: 30), + Current = { BindTarget = RoomName } + }, + hostText = new LinkFlowContainer(s => s.Font = OsuFont.GetFont(size: 20, weight: FontWeight.SemiBold)) + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + } } } - }, - new Box - { - Anchor = Anchor.BottomLeft, - Origin = Anchor.BottomLeft, - RelativeSizeAxes = Axes.X, - Height = 1, - Colour = colours.Yellow - }, - new Container - { - RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding { Horizontal = SearchableListOverlay.WIDTH_PADDING + OsuScreen.HORIZONTAL_OVERFLOW_PADDING }, - Children = new Drawable[] - { - new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Padding = new MarginPadding { Top = 20 }, - Direction = FillDirection.Vertical, - Children = new Drawable[] - { - new BeatmapTypeInfo(), - modDisplay = new ModDisplay - { - Scale = new Vector2(0.75f), - DisplayUnrankedText = false - }, - } - }, - new Container - { - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - RelativeSizeAxes = Axes.Y, - Width = 200, - Padding = new MarginPadding { Vertical = 10 }, - Child = beatmapButton = new BeatmapSelectButton - { - RelativeSizeAxes = Axes.Both, - Height = 1, - }, - }, - Tabs = new MatchTabControl - { - Anchor = Anchor.BottomLeft, - Origin = Anchor.BottomLeft, - RelativeSizeAxes = Axes.X - }, - }, - }, + } }; - beatmapButton.Action = () => RequestBeatmapSelection?.Invoke(); - - Playlist.ItemsAdded += _ => updateMods(); - Playlist.ItemsRemoved += _ => updateMods(); - - updateMods(); - } - - protected override void LoadComplete() - { - base.LoadComplete(); - ShowBeatmapPanel.BindValueChanged(value => beatmapPanel.FadeTo(value.NewValue ? 1 : 0, 200, Easing.OutQuint), true); - } - - private void updateMods() - { - var item = Playlist.FirstOrDefault(); - - modDisplay.Current.Value = item?.RequiredMods?.ToArray() ?? Array.Empty(); - } - - private class BeatmapSelectButton : HeaderButton - { - [Resolved(typeof(Room), nameof(Room.RoomID))] - private Bindable roomId { get; set; } - - public BeatmapSelectButton() + Host.BindValueChanged(host => { - Text = "Select beatmap"; - } + avatar.User = host.NewValue; - [BackgroundDependencyLoader] - private void load() - { - roomId.BindValueChanged(id => this.FadeTo(id.NewValue.HasValue ? 0 : 1), true); - } - } + hostText.Clear(); - private class HeaderBackgroundSprite : MultiplayerBackgroundSprite - { - protected override UpdateableBeatmapBackgroundSprite CreateBackgroundSprite() => new BackgroundSprite { RelativeSizeAxes = Axes.Both }; - - private class BackgroundSprite : UpdateableBeatmapBackgroundSprite - { - protected override double TransformDuration => 200; - } + if (host.NewValue != null) + { + hostText.AddText("hosted by "); + hostText.AddUserLink(host.NewValue); + } + }, true); } } } diff --git a/osu.Game/Screens/Multi/Match/Components/MatchBeatmapPanel.cs b/osu.Game/Screens/Multi/Match/Components/MatchBeatmapPanel.cs deleted file mode 100644 index c8de066caa..0000000000 --- a/osu.Game/Screens/Multi/Match/Components/MatchBeatmapPanel.cs +++ /dev/null @@ -1,67 +0,0 @@ -// 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 System.Threading; -using osu.Framework.Allocation; -using osu.Framework.Graphics; -using osu.Game.Online.API; -using osu.Game.Online.API.Requests; -using osu.Game.Overlays.Direct; -using osu.Game.Rulesets; - -namespace osu.Game.Screens.Multi.Match.Components -{ - public class MatchBeatmapPanel : MultiplayerComposite - { - [Resolved] - private IAPIProvider api { get; set; } - - [Resolved] - private RulesetStore rulesets { get; set; } - - private CancellationTokenSource loadCancellation; - private GetBeatmapSetRequest request; - private DirectGridPanel panel; - - public MatchBeatmapPanel() - { - AutoSizeAxes = Axes.Both; - } - - [BackgroundDependencyLoader] - private void load() - { - Playlist.ItemsAdded += _ => loadNewPanel(); - Playlist.ItemsRemoved += _ => loadNewPanel(); - - loadNewPanel(); - } - - private void loadNewPanel() - { - loadCancellation?.Cancel(); - request?.Cancel(); - - panel?.FadeOut(200); - panel?.Expire(); - panel = null; - - var beatmap = Playlist.FirstOrDefault()?.Beatmap.Value; - - if (beatmap?.OnlineBeatmapID == null) - return; - - loadCancellation = new CancellationTokenSource(); - - request = new GetBeatmapSetRequest(beatmap.OnlineBeatmapID.Value, BeatmapSetLookupType.BeatmapId); - request.Success += res => Schedule(() => - { - panel = new DirectGridPanel(res.ToBeatmapSet(rulesets)); - LoadComponentAsync(panel, AddInternal, loadCancellation.Token); - }); - - api.Queue(request); - } - } -} diff --git a/osu.Game/Screens/Multi/Match/Components/MatchPage.cs b/osu.Game/Screens/Multi/Match/Components/MatchPage.cs deleted file mode 100644 index fc98db157b..0000000000 --- a/osu.Game/Screens/Multi/Match/Components/MatchPage.cs +++ /dev/null @@ -1,28 +0,0 @@ -// 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; - -namespace osu.Game.Screens.Multi.Match.Components -{ - public abstract class MatchPage - { - public abstract string Name { get; } - - public readonly BindableBool Enabled = new BindableBool(true); - - public override string ToString() => Name; - public override int GetHashCode() => GetType().GetHashCode(); - public override bool Equals(object obj) => GetType() == obj?.GetType(); - } - - public class SettingsMatchPage : MatchPage - { - public override string Name => "Settings"; - } - - public class RoomMatchPage : MatchPage - { - public override string Name => "Room"; - } -} diff --git a/osu.Game/Screens/Multi/Match/Components/MatchTabControl.cs b/osu.Game/Screens/Multi/Match/Components/MatchTabControl.cs deleted file mode 100644 index c700d7b88a..0000000000 --- a/osu.Game/Screens/Multi/Match/Components/MatchTabControl.cs +++ /dev/null @@ -1,66 +0,0 @@ -// 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.Extensions.IEnumerableExtensions; -using osu.Framework.Graphics.UserInterface; -using osu.Framework.Input.Events; -using osu.Game.Graphics.UserInterface; -using osu.Game.Online.Multiplayer; -using osuTK.Graphics; - -namespace osu.Game.Screens.Multi.Match.Components -{ - public class MatchTabControl : PageTabControl - { - [Resolved(typeof(Room), nameof(Room.RoomID))] - private Bindable roomId { get; set; } - - public MatchTabControl() - { - AddItem(new RoomMatchPage()); - AddItem(new SettingsMatchPage()); - } - - [BackgroundDependencyLoader] - private void load() - { - roomId.BindValueChanged(id => - { - if (id.NewValue.HasValue) - { - Items.ForEach(t => t.Enabled.Value = !(t is SettingsMatchPage)); - Current.Value = new RoomMatchPage(); - } - else - { - Items.ForEach(t => t.Enabled.Value = t is SettingsMatchPage); - Current.Value = new SettingsMatchPage(); - } - }, true); - } - - protected override TabItem CreateTabItem(MatchPage value) => new TabItem(value); - - private class TabItem : PageTabItem - { - private readonly IBindable enabled = new BindableBool(); - - public TabItem(MatchPage value) - : base(value) - { - enabled.BindTo(value.Enabled); - enabled.BindValueChanged(enabled => Colour = enabled.NewValue ? Color4.White : Color4.Gray, true); - } - - protected override bool OnClick(ClickEvent e) - { - if (!enabled.Value) - return true; - - return base.OnClick(e); - } - } - } -} diff --git a/osu.Game/Screens/Multi/Match/MatchSubScreen.cs b/osu.Game/Screens/Multi/Match/MatchSubScreen.cs index 890664e99b..ed1cb987c2 100644 --- a/osu.Game/Screens/Multi/Match/MatchSubScreen.cs +++ b/osu.Game/Screens/Multi/Match/MatchSubScreen.cs @@ -15,7 +15,6 @@ using osu.Game.Online.Multiplayer.GameTypes; using osu.Game.Rulesets.Mods; using osu.Game.Screens.Multi.Match.Components; using osu.Game.Screens.Multi.Play; -using osu.Game.Screens.Select; using PlaylistItem = osu.Game.Online.Multiplayer.PlaylistItem; namespace osu.Game.Screens.Multi.Match @@ -78,17 +77,6 @@ namespace osu.Game.Screens.Multi.Match header = new Components.Header { Depth = -1, - RequestBeatmapSelection = () => - { - this.Push(new MatchSongSelect - { - Selected = item => - { - Playlist.Clear(); - Playlist.Add(item); - } - }); - } } }, new Drawable[] { info = new Info { OnStart = onStart } }, @@ -145,18 +133,6 @@ namespace osu.Game.Screens.Multi.Match }, }; - header.Tabs.Current.BindValueChanged(tab => - { - const float fade_duration = 500; - - var settingsDisplayed = tab.NewValue is SettingsMatchPage; - - header.ShowBeatmapPanel.Value = !settingsDisplayed; - settings.State.Value = settingsDisplayed ? Visibility.Visible : Visibility.Hidden; - info.FadeTo(settingsDisplayed ? 0 : 1, fade_duration, Easing.OutQuint); - bottomRow.FadeTo(settingsDisplayed ? 0 : 1, fade_duration, Easing.OutQuint); - }, true); - beatmapManager.ItemAdded += beatmapAdded; } From 73621e41fd7b4f4164d5a316ca0d13b5cf267229 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Feb 2020 20:12:23 +0900 Subject: [PATCH 1540/1829] Forcefully hide mute notification for navigation tests --- osu.Game.Tests/Visual/Navigation/OsuGameTestScene.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game.Tests/Visual/Navigation/OsuGameTestScene.cs b/osu.Game.Tests/Visual/Navigation/OsuGameTestScene.cs index 8d2e4a614d..70d71d0952 100644 --- a/osu.Game.Tests/Visual/Navigation/OsuGameTestScene.cs +++ b/osu.Game.Tests/Visual/Navigation/OsuGameTestScene.cs @@ -117,6 +117,8 @@ namespace osu.Game.Tests.Visual.Navigation { base.LoadComplete(); API.Login("Rhythm Champion", "osu!"); + + Dependencies.Get().Set(Static.MutedAudioNotificationShownOnce, true); } } From c0dba632787246a7ef98b56fcf561dc827eb885f Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 20:14:25 +0900 Subject: [PATCH 1541/1829] Remove match info --- .../Multiplayer/TestSceneMatchHostInfo.cs | 35 ------ .../Multiplayer/TestSceneMatchParticipants.cs | 52 --------- .../Multi/Match/Components/HeaderButton.cs | 47 -------- .../Multi/Match/Components/HostInfo.cs | 61 ---------- .../Screens/Multi/Match/Components/Info.cs | 107 ------------------ .../Multi/Match/Components/Participants.cs | 77 ------------- .../Multi/Match/Components/ReadyButton.cs | 3 +- .../Screens/Multi/Match/MatchSubScreen.cs | 2 - 8 files changed, 2 insertions(+), 382 deletions(-) delete mode 100644 osu.Game.Tests/Visual/Multiplayer/TestSceneMatchHostInfo.cs delete mode 100644 osu.Game.Tests/Visual/Multiplayer/TestSceneMatchParticipants.cs delete mode 100644 osu.Game/Screens/Multi/Match/Components/HeaderButton.cs delete mode 100644 osu.Game/Screens/Multi/Match/Components/HostInfo.cs delete mode 100644 osu.Game/Screens/Multi/Match/Components/Info.cs delete mode 100644 osu.Game/Screens/Multi/Match/Components/Participants.cs diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchHostInfo.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchHostInfo.cs deleted file mode 100644 index 808a45cdf0..0000000000 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchHostInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -// 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.Bindables; -using osu.Framework.Graphics; -using osu.Game.Screens.Multi.Match.Components; -using osu.Game.Users; - -namespace osu.Game.Tests.Visual.Multiplayer -{ - public class TestSceneMatchHostInfo : OsuTestScene - { - public override IReadOnlyList RequiredTypes => new[] - { - typeof(HostInfo) - }; - - private readonly Bindable host = new Bindable(new User { Username = "SomeHost" }); - - public TestSceneMatchHostInfo() - { - HostInfo hostInfo; - - Child = hostInfo = new HostInfo - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre - }; - - hostInfo.Host.BindTo(host); - } - } -} diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchParticipants.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchParticipants.cs deleted file mode 100644 index a6f47961e9..0000000000 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchParticipants.cs +++ /dev/null @@ -1,52 +0,0 @@ -// 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.Game.Screens.Multi.Match.Components; -using osu.Game.Users; - -namespace osu.Game.Tests.Visual.Multiplayer -{ - [TestFixture] - public class TestSceneMatchParticipants : MultiplayerTestScene - { - public TestSceneMatchParticipants() - { - Add(new Participants { RelativeSizeAxes = Axes.Both }); - - AddStep(@"set max to null", () => Room.MaxParticipants.Value = null); - AddStep(@"set users", () => Room.Participants.AddRange(new[] - { - new User - { - Username = @"Feppla", - Id = 4271601, - Country = new Country { FlagName = @"SE" }, - CoverUrl = @"https://osu.ppy.sh/images/headers/profile-covers/c2.jpg", - IsSupporter = true, - }, - new User - { - Username = @"Xilver", - Id = 3099689, - Country = new Country { FlagName = @"IL" }, - CoverUrl = @"https://osu.ppy.sh/images/headers/profile-covers/c2.jpg", - IsSupporter = true, - }, - new User - { - Username = @"Wucki", - Id = 5287410, - Country = new Country { FlagName = @"FI" }, - CoverUrl = @"https://assets.ppy.sh/user-profile-covers/5287410/5cfeaa9dd41cbce038ecdc9d781396ed4b0108089170bf7f50492ef8eadeb368.jpeg", - IsSupporter = true, - }, - })); - - AddStep(@"set max", () => Room.MaxParticipants.Value = 10); - AddStep(@"clear users", () => Room.Participants.Clear()); - AddStep(@"set max to null", () => Room.MaxParticipants.Value = null); - } - } -} diff --git a/osu.Game/Screens/Multi/Match/Components/HeaderButton.cs b/osu.Game/Screens/Multi/Match/Components/HeaderButton.cs deleted file mode 100644 index de6ece6a05..0000000000 --- a/osu.Game/Screens/Multi/Match/Components/HeaderButton.cs +++ /dev/null @@ -1,47 +0,0 @@ -// 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.Graphics; -using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Shapes; -using osu.Framework.Graphics.Sprites; -using osu.Game.Graphics; -using osu.Game.Graphics.Sprites; -using osu.Game.Graphics.UserInterface; - -namespace osu.Game.Screens.Multi.Match.Components -{ - public class HeaderButton : TriangleButton - { - [BackgroundDependencyLoader] - private void load() - { - BackgroundColour = OsuColour.FromHex(@"1187aa"); - - Triangles.ColourLight = OsuColour.FromHex(@"277b9c"); - Triangles.ColourDark = OsuColour.FromHex(@"1f6682"); - Triangles.TriangleScale = 1.5f; - - Add(new Container - { - RelativeSizeAxes = Axes.Both, - Alpha = 1f, - Child = new Box - { - RelativeSizeAxes = Axes.Both, - Alpha = 0.15f, - Blending = BlendingParameters.Additive, - }, - }); - } - - protected override SpriteText CreateText() => new OsuSpriteText - { - Depth = -1, - Origin = Anchor.Centre, - Anchor = Anchor.Centre, - Font = OsuFont.GetFont(weight: FontWeight.Light, size: 30), - }; - } -} diff --git a/osu.Game/Screens/Multi/Match/Components/HostInfo.cs b/osu.Game/Screens/Multi/Match/Components/HostInfo.cs deleted file mode 100644 index 8851a96605..0000000000 --- a/osu.Game/Screens/Multi/Match/Components/HostInfo.cs +++ /dev/null @@ -1,61 +0,0 @@ -// 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.Graphics.Containers; -using osu.Game.Users; -using osu.Game.Users.Drawables; -using osuTK; - -namespace osu.Game.Screens.Multi.Match.Components -{ - public class HostInfo : CompositeDrawable - { - public readonly IBindable Host = new Bindable(); - - private readonly LinkFlowContainer linkContainer; - private readonly UpdateableAvatar avatar; - - public HostInfo() - { - AutoSizeAxes = Axes.X; - Height = 50; - - InternalChild = new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Spacing = new Vector2(5, 0), - Children = new Drawable[] - { - avatar = new UpdateableAvatar { Size = new Vector2(50) }, - new FillFlowContainer - { - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Vertical, - Child = linkContainer = new LinkFlowContainer { AutoSizeAxes = Axes.Both } - } - } - }; - - Host.BindValueChanged(host => updateHost(host.NewValue)); - } - - private void updateHost(User host) - { - avatar.User = host; - - if (host != null) - { - linkContainer.AddText("hosted by"); - linkContainer.NewLine(); - linkContainer.AddUserLink(host, s => s.Font = s.Font.With(Typeface.Exo, weight: FontWeight.Bold, italics: true)); - } - } - } -} diff --git a/osu.Game/Screens/Multi/Match/Components/Info.cs b/osu.Game/Screens/Multi/Match/Components/Info.cs deleted file mode 100644 index a320b08cc4..0000000000 --- a/osu.Game/Screens/Multi/Match/Components/Info.cs +++ /dev/null @@ -1,107 +0,0 @@ -// 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.Graphics; -using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Shapes; -using osu.Game.Graphics; -using osu.Game.Graphics.Sprites; -using osu.Game.Overlays.SearchableList; -using osu.Game.Screens.Multi.Components; -using osuTK; - -namespace osu.Game.Screens.Multi.Match.Components -{ - public class Info : MultiplayerComposite - { - public Action OnStart; - - private ReadyButton readyButton; - - public Info() - { - RelativeSizeAxes = Axes.X; - AutoSizeAxes = Axes.Y; - } - - [BackgroundDependencyLoader] - private void load() - { - HostInfo hostInfo; - - InternalChildren = new Drawable[] - { - new Box - { - RelativeSizeAxes = Axes.Both, - Colour = OsuColour.FromHex(@"28242d"), - }, - new Container - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Padding = new MarginPadding { Horizontal = SearchableListOverlay.WIDTH_PADDING + OsuScreen.HORIZONTAL_OVERFLOW_PADDING }, - Children = new Drawable[] - { - new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Vertical, - Spacing = new Vector2(0, 10), - Padding = new MarginPadding { Vertical = 20 }, - Children = new Drawable[] - { - new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Vertical, - Children = new Drawable[] - { - new OsuSpriteText - { - Font = OsuFont.GetFont(size: 30), - Current = RoomName - }, - new RoomStatusInfo(), - } - }, - hostInfo = new HostInfo(), - }, - }, - new FillFlowContainer - { - Anchor = Anchor.CentreRight, - Origin = Anchor.CentreRight, - AutoSizeAxes = Axes.X, - Height = 70, - Spacing = new Vector2(10, 0), - Direction = FillDirection.Horizontal, - Children = new Drawable[] - { - readyButton = new ReadyButton - { - Action = () => OnStart?.Invoke() - } - } - } - }, - }, - }; - - hostInfo.Host.BindTo(Host); - - Playlist.ItemsAdded += _ => updateBeatmap(); - Playlist.ItemsRemoved += _ => updateBeatmap(); - - updateBeatmap(); - } - - private void updateBeatmap() - { - readyButton.Beatmap.Value = Playlist.FirstOrDefault()?.Beatmap.Value; - } - } -} diff --git a/osu.Game/Screens/Multi/Match/Components/Participants.cs b/osu.Game/Screens/Multi/Match/Components/Participants.cs deleted file mode 100644 index 00d2f3e150..0000000000 --- a/osu.Game/Screens/Multi/Match/Components/Participants.cs +++ /dev/null @@ -1,77 +0,0 @@ -// 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.Allocation; -using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; -using osu.Game.Graphics.Containers; -using osu.Game.Overlays.SearchableList; -using osu.Game.Screens.Multi.Components; -using osu.Game.Users; -using osuTK; - -namespace osu.Game.Screens.Multi.Match.Components -{ - public class Participants : MultiplayerComposite - { - [BackgroundDependencyLoader] - private void load() - { - FillFlowContainer usersFlow; - - InternalChild = new Container - { - RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding { Horizontal = SearchableListOverlay.WIDTH_PADDING }, - Children = new Drawable[] - { - new OsuScrollContainer - { - RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding { Top = 10 }, - Children = new Drawable[] - { - new ParticipantCountDisplay - { - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - }, - usersFlow = new FillFlowContainer - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Spacing = new Vector2(5), - Padding = new MarginPadding { Top = 40 }, - LayoutDuration = 200, - LayoutEasing = Easing.OutQuint, - }, - }, - }, - }, - }; - - Participants.ItemsAdded += users => - { - usersFlow.AddRange(users.Select(u => - { - var panel = new UserPanel(u) - { - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - Width = 300, - }; - - panel.OnLoadComplete += d => d.FadeInFromZero(60); - - return panel; - }).ToList()); - }; - - Participants.ItemsRemoved += users => - { - usersFlow.RemoveAll(p => users.Contains(p.User)); - }; - } - } -} diff --git a/osu.Game/Screens/Multi/Match/Components/ReadyButton.cs b/osu.Game/Screens/Multi/Match/Components/ReadyButton.cs index 8ab0b8f61f..cec5b2f855 100644 --- a/osu.Game/Screens/Multi/Match/Components/ReadyButton.cs +++ b/osu.Game/Screens/Multi/Match/Components/ReadyButton.cs @@ -7,12 +7,13 @@ using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Game.Beatmaps; +using osu.Game.Graphics.UserInterface; using osu.Game.Online.Multiplayer; using osuTK; namespace osu.Game.Screens.Multi.Match.Components { - public class ReadyButton : HeaderButton + public class ReadyButton : OsuButton { public readonly Bindable Beatmap = new Bindable(); diff --git a/osu.Game/Screens/Multi/Match/MatchSubScreen.cs b/osu.Game/Screens/Multi/Match/MatchSubScreen.cs index ed1cb987c2..07da707724 100644 --- a/osu.Game/Screens/Multi/Match/MatchSubScreen.cs +++ b/osu.Game/Screens/Multi/Match/MatchSubScreen.cs @@ -61,7 +61,6 @@ namespace osu.Game.Screens.Multi.Match private void load() { Components.Header header; - Info info; GridContainer bottomRow; MatchSettingsOverlay settings; @@ -79,7 +78,6 @@ namespace osu.Game.Screens.Multi.Match Depth = -1, } }, - new Drawable[] { info = new Info { OnStart = onStart } }, new Drawable[] { bottomRow = new GridContainer From 80fd9485a9681b5c092860be6625c7495b111f22 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 20:18:53 +0900 Subject: [PATCH 1542/1829] Refactor ready button to support selected playlist item --- .../Multi/Match/Components/ReadyButton.cs | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/osu.Game/Screens/Multi/Match/Components/ReadyButton.cs b/osu.Game/Screens/Multi/Match/Components/ReadyButton.cs index cec5b2f855..a62572a851 100644 --- a/osu.Game/Screens/Multi/Match/Components/ReadyButton.cs +++ b/osu.Game/Screens/Multi/Match/Components/ReadyButton.cs @@ -15,7 +15,7 @@ namespace osu.Game.Screens.Multi.Match.Components { public class ReadyButton : OsuButton { - public readonly Bindable Beatmap = new Bindable(); + public readonly Bindable SelectedItem = new Bindable(); [Resolved(typeof(Room), nameof(Room.EndDate))] private Bindable endDate { get; set; } @@ -42,31 +42,37 @@ namespace osu.Game.Screens.Multi.Match.Components beatmaps.ItemAdded += beatmapAdded; beatmaps.ItemRemoved += beatmapRemoved; - Beatmap.BindValueChanged(b => updateBeatmap(b.NewValue), true); + SelectedItem.BindValueChanged(item => updateSelectedItem(item.NewValue), true); } - private void updateBeatmap(BeatmapInfo beatmap) + private void updateSelectedItem(PlaylistItem item) { hasBeatmap = false; - if (beatmap?.OnlineBeatmapID == null) + int? beatmapId = SelectedItem.Value?.Beatmap.Value?.OnlineBeatmapID; + if (beatmapId == null) return; - hasBeatmap = beatmaps.QueryBeatmap(b => b.OnlineBeatmapID == beatmap.OnlineBeatmapID) != null; + hasBeatmap = beatmaps.QueryBeatmap(b => b.OnlineBeatmapID == beatmapId) != null; } private void beatmapAdded(BeatmapSetInfo model) { - if (model.Beatmaps.Any(b => b.OnlineBeatmapID == Beatmap.Value.OnlineBeatmapID)) + int? beatmapId = SelectedItem.Value?.Beatmap.Value?.OnlineBeatmapID; + if (beatmapId == null) + return; + + if (model.Beatmaps.Any(b => b.OnlineBeatmapID == beatmapId)) Schedule(() => hasBeatmap = true); } private void beatmapRemoved(BeatmapSetInfo model) { - if (Beatmap.Value == null) + int? beatmapId = SelectedItem.Value?.Beatmap.Value?.OnlineBeatmapID; + if (beatmapId == null) return; - if (model.OnlineBeatmapSetID == Beatmap.Value.BeatmapSet.OnlineBeatmapSetID) + if (model.Beatmaps.Any(b => b.OnlineBeatmapID == beatmapId)) Schedule(() => hasBeatmap = false); } @@ -79,7 +85,7 @@ namespace osu.Game.Screens.Multi.Match.Components private void updateEnabledState() { - if (gameBeatmap.Value == null) + if (gameBeatmap.Value == null || SelectedItem.Value == null) { Enabled.Value = false; return; @@ -95,7 +101,10 @@ namespace osu.Game.Screens.Multi.Match.Components base.Dispose(isDisposing); if (beatmaps != null) + { beatmaps.ItemAdded -= beatmapAdded; + beatmaps.ItemRemoved -= beatmapRemoved; + } } } } From c75a7742977122303c59de7bc036b7310238fec9 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 20:27:37 +0900 Subject: [PATCH 1543/1829] Extract participants list from the room inspector --- .../Multiplayer/TestSceneParticipantsList.cs | 20 +++ .../Multi/Components/ParticipantsList.cs | 119 ++++++++++++++++++ .../Multi/Lounge/Components/RoomInspector.cs | 113 +---------------- 3 files changed, 142 insertions(+), 110 deletions(-) create mode 100644 osu.Game.Tests/Visual/Multiplayer/TestSceneParticipantsList.cs create mode 100644 osu.Game/Screens/Multi/Components/ParticipantsList.cs diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneParticipantsList.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneParticipantsList.cs new file mode 100644 index 0000000000..9c4c45f94a --- /dev/null +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneParticipantsList.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.Framework.Graphics; +using osu.Game.Screens.Multi.Components; + +namespace osu.Game.Tests.Visual.Multiplayer +{ + public class TestSceneParticipantsList : MultiplayerTestScene + { + protected override bool UseOnlineAPI => true; + + public TestSceneParticipantsList() + { + Room.RoomID.Value = 7; + + Add(new ParticipantsList { RelativeSizeAxes = Axes.Both }); + } + } +} diff --git a/osu.Game/Screens/Multi/Components/ParticipantsList.cs b/osu.Game/Screens/Multi/Components/ParticipantsList.cs new file mode 100644 index 0000000000..2ef36b2795 --- /dev/null +++ b/osu.Game/Screens/Multi/Components/ParticipantsList.cs @@ -0,0 +1,119 @@ +// 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 osu.Framework.Allocation; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Cursor; +using osu.Framework.Graphics.Shapes; +using osu.Game.Graphics; +using osu.Game.Graphics.Containers; +using osu.Game.Online.API; +using osu.Game.Online.API.Requests; +using osu.Game.Users; +using osu.Game.Users.Drawables; +using osuTK; + +namespace osu.Game.Screens.Multi.Components +{ + public class ParticipantsList : MultiplayerComposite + { + private readonly FillFlowContainer fill; + + public ParticipantsList() + { + InternalChild = new OsuScrollContainer + { + RelativeSizeAxes = Axes.Both, + Child = fill = new FillFlowContainer + { + Spacing = new Vector2(10), + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Direction = FillDirection.Full, + } + }; + } + + [BackgroundDependencyLoader] + private void load() + { + RoomID.BindValueChanged(_ => updateParticipants(), true); + } + + [Resolved] + private IAPIProvider api { get; set; } + + private GetRoomScoresRequest request; + + private void updateParticipants() + { + var roomId = RoomID.Value ?? 0; + + request?.Cancel(); + + // nice little progressive fade + int time = 500; + + foreach (var c in fill.Children) + { + c.Delay(500 - time).FadeOut(time, Easing.Out); + time = Math.Max(20, time - 20); + c.Expire(); + } + + if (roomId == 0) return; + + request = new GetRoomScoresRequest(roomId); + request.Success += scores => Schedule(() => + { + if (roomId != RoomID.Value) + return; + + fill.Clear(); + foreach (var s in scores) + fill.Add(new UserTile(s.User)); + + fill.FadeInFromZero(1000, Easing.OutQuint); + }); + + api.Queue(request); + } + + protected override void Dispose(bool isDisposing) + { + request?.Cancel(); + base.Dispose(isDisposing); + } + + private class UserTile : CompositeDrawable, IHasTooltip + { + private readonly User user; + + public string TooltipText => user.Username; + + public UserTile(User user) + { + this.user = user; + Size = new Vector2(70f); + CornerRadius = 5f; + Masking = true; + + InternalChildren = new Drawable[] + { + new Box + { + RelativeSizeAxes = Axes.Both, + Colour = OsuColour.FromHex(@"27252d"), + }, + new UpdateableAvatar + { + RelativeSizeAxes = Axes.Both, + User = user, + }, + }; + } + } + } +} diff --git a/osu.Game/Screens/Multi/Lounge/Components/RoomInspector.cs b/osu.Game/Screens/Multi/Lounge/Components/RoomInspector.cs index 5030d8cb50..cb6bbf6731 100644 --- a/osu.Game/Screens/Multi/Lounge/Components/RoomInspector.cs +++ b/osu.Game/Screens/Multi/Lounge/Components/RoomInspector.cs @@ -1,25 +1,18 @@ // 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 osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Colour; using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Cursor; using osu.Framework.Graphics.Shapes; using osu.Game.Beatmaps; using osu.Game.Graphics; -using osu.Game.Graphics.Containers; using osu.Game.Graphics.Sprites; -using osu.Game.Online.API; -using osu.Game.Online.API.Requests; using osu.Game.Online.Multiplayer; using osu.Game.Screens.Multi.Components; -using osu.Game.Users; -using osu.Game.Users.Drawables; using osuTK; using osuTK.Graphics; @@ -160,9 +153,11 @@ namespace osu.Game.Screens.Multi.Lounge.Components }, new Drawable[] { - new MatchParticipants + new Container { RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Horizontal = 10 }, + Child = new ParticipantsList { RelativeSizeAxes = Axes.Both } } } } @@ -219,107 +214,5 @@ namespace osu.Game.Screens.Multi.Lounge.Components status.BindValueChanged(s => Text = s.NewValue.Message, true); } } - - private class MatchParticipants : MultiplayerComposite - { - private readonly FillFlowContainer fill; - - public MatchParticipants() - { - Padding = new MarginPadding { Horizontal = 10 }; - - InternalChild = new OsuScrollContainer - { - RelativeSizeAxes = Axes.Both, - Child = fill = new FillFlowContainer - { - Spacing = new Vector2(10), - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Direction = FillDirection.Full, - } - }; - } - - [BackgroundDependencyLoader] - private void load() - { - RoomID.BindValueChanged(_ => updateParticipants(), true); - } - - [Resolved] - private IAPIProvider api { get; set; } - - private GetRoomScoresRequest request; - - private void updateParticipants() - { - var roomId = RoomID.Value ?? 0; - - request?.Cancel(); - - // nice little progressive fade - int time = 500; - - foreach (var c in fill.Children) - { - c.Delay(500 - time).FadeOut(time, Easing.Out); - time = Math.Max(20, time - 20); - c.Expire(); - } - - if (roomId == 0) return; - - request = new GetRoomScoresRequest(roomId); - request.Success += scores => - { - if (roomId != RoomID.Value) - return; - - fill.Clear(); - foreach (var s in scores) - fill.Add(new UserTile(s.User)); - - fill.FadeInFromZero(1000, Easing.OutQuint); - }; - - api.Queue(request); - } - - protected override void Dispose(bool isDisposing) - { - request?.Cancel(); - base.Dispose(isDisposing); - } - - private class UserTile : CompositeDrawable, IHasTooltip - { - private readonly User user; - - public string TooltipText => user.Username; - - public UserTile(User user) - { - this.user = user; - Size = new Vector2(70f); - CornerRadius = 5f; - Masking = true; - - InternalChildren = new Drawable[] - { - new Box - { - RelativeSizeAxes = Axes.Both, - Colour = OsuColour.FromHex(@"27252d"), - }, - new UpdateableAvatar - { - RelativeSizeAxes = Axes.Both, - User = user, - }, - }; - } - } - } } } From d5496321e2cf8dfaf0c254460786d25d0bacac8b Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 20:31:55 +0900 Subject: [PATCH 1544/1829] Implement leaderboard chat display --- .../TestSceneMatchLeaderboardChatDisplay.cs | 39 +++++++ .../Components/LeaderboardChatDisplay.cs | 100 ++++++++++++++++++ 2 files changed, 139 insertions(+) create mode 100644 osu.Game.Tests/Visual/Multiplayer/TestSceneMatchLeaderboardChatDisplay.cs create mode 100644 osu.Game/Screens/Multi/Match/Components/LeaderboardChatDisplay.cs diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchLeaderboardChatDisplay.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchLeaderboardChatDisplay.cs new file mode 100644 index 0000000000..e46386b263 --- /dev/null +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchLeaderboardChatDisplay.cs @@ -0,0 +1,39 @@ +// 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.Framework.Graphics.Containers; +using osu.Game.Screens.Multi.Match.Components; +using osuTK; + +namespace osu.Game.Tests.Visual.Multiplayer +{ + public class TestSceneMatchLeaderboardChatDisplay : MultiplayerTestScene + { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(LeaderboardChatDisplay) + }; + + protected override bool UseOnlineAPI => true; + + public TestSceneMatchLeaderboardChatDisplay() + { + Room.RoomID.Value = 7; + + Add(new Container + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Size = new Vector2(500), + Child = new LeaderboardChatDisplay + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + } + }); + } + } +} diff --git a/osu.Game/Screens/Multi/Match/Components/LeaderboardChatDisplay.cs b/osu.Game/Screens/Multi/Match/Components/LeaderboardChatDisplay.cs new file mode 100644 index 0000000000..de02b7f605 --- /dev/null +++ b/osu.Game/Screens/Multi/Match/Components/LeaderboardChatDisplay.cs @@ -0,0 +1,100 @@ +// 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.UserInterface; +using osu.Game.Graphics; +using osu.Game.Graphics.UserInterface; + +namespace osu.Game.Screens.Multi.Match.Components +{ + public class LeaderboardChatDisplay : MultiplayerComposite + { + private const double fade_duration = 100; + + private readonly OsuTabControl tabControl; + private readonly MatchLeaderboard leaderboard; + private readonly MatchChatDisplay chat; + + public LeaderboardChatDisplay() + { + RelativeSizeAxes = Axes.Both; + + InternalChild = new GridContainer + { + RelativeSizeAxes = Axes.Both, + Content = new[] + { + new Drawable[] + { + tabControl = new DisplayModeTabControl + { + RelativeSizeAxes = Axes.X, + Height = 24, + } + }, + new Drawable[] + { + new Container + { + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Top = 10 }, + Children = new Drawable[] + { + leaderboard = new MatchLeaderboard { RelativeSizeAxes = Axes.Both }, + chat = new MatchChatDisplay + { + RelativeSizeAxes = Axes.Both, + Alpha = 0 + } + } + } + }, + }, + RowDimensions = new[] + { + new Dimension(GridSizeMode.AutoSize), + } + }; + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + tabControl.AccentColour = colours.Yellow; + } + + protected override void LoadComplete() + { + base.LoadComplete(); + + tabControl.Current.BindValueChanged(changeTab); + } + + public void RefreshScores() => leaderboard.RefreshScores(); + + private void changeTab(ValueChangedEvent mode) + { + chat.FadeTo(mode.NewValue == DisplayMode.Chat ? 1 : 0, fade_duration); + leaderboard.FadeTo(mode.NewValue == DisplayMode.Leaderboard ? 1 : 0, fade_duration); + } + + private class DisplayModeTabControl : OsuTabControl + { + protected override TabItem CreateTabItem(DisplayMode value) => base.CreateTabItem(value).With(d => + { + d.Anchor = Anchor.Centre; + d.Origin = Anchor.Centre; + }); + } + + private enum DisplayMode + { + Leaderboard, + Chat, + } + } +} From d0b7b7f53a2892571f25c0daee83e229e40420a9 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 20:34:15 +0900 Subject: [PATCH 1545/1829] Re-layout match settings overlay --- .../Match/Components/MatchSettingsOverlay.cs | 58 +++++++++++++++---- 1 file changed, 48 insertions(+), 10 deletions(-) diff --git a/osu.Game/Screens/Multi/Match/Components/MatchSettingsOverlay.cs b/osu.Game/Screens/Multi/Match/Components/MatchSettingsOverlay.cs index 410aaed788..776de424ab 100644 --- a/osu.Game/Screens/Multi/Match/Components/MatchSettingsOverlay.cs +++ b/osu.Game/Screens/Multi/Match/Components/MatchSettingsOverlay.cs @@ -25,6 +25,8 @@ namespace osu.Game.Screens.Multi.Match.Components private const float transition_duration = 350; private const float field_padding = 45; + public Action EditPlaylist; + protected MatchSettings Settings { get; private set; } [BackgroundDependencyLoader] @@ -35,7 +37,8 @@ namespace osu.Game.Screens.Multi.Match.Components Child = Settings = new MatchSettings { RelativeSizeAxes = Axes.Both, - RelativePositionAxes = Axes.Y + RelativePositionAxes = Axes.Y, + EditPlaylist = () => EditPlaylist?.Invoke() }; } @@ -53,6 +56,8 @@ namespace osu.Game.Screens.Multi.Match.Components { private const float disabled_alpha = 0.2f; + public Action EditPlaylist; + public OsuTextBox NameField, MaxParticipantsField; public OsuDropdown DurationField; public RoomAvailabilityPicker AvailabilityPicker; @@ -63,6 +68,7 @@ namespace osu.Game.Screens.Multi.Match.Components private OsuSpriteText typeLabel; private ProcessingOverlay processingOverlay; + private DrawableRoomPlaylist playlist; [Resolved(CanBeNull = true)] private IRoomManager manager { get; set; } @@ -155,15 +161,6 @@ namespace osu.Game.Screens.Multi.Match.Components }, }, }, - }, - }, - new SectionContainer - { - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - Padding = new MarginPadding { Left = field_padding / 2 }, - Children = new[] - { new Section("Max participants") { Alpha = disabled_alpha, @@ -208,6 +205,45 @@ namespace osu.Game.Screens.Multi.Match.Components }, }, }, + new SectionContainer + { + Anchor = Anchor.TopRight, + Origin = Anchor.TopRight, + Padding = new MarginPadding { Left = field_padding / 2 }, + Children = new[] + { + new Section("Playlist") + { + Child = new GridContainer + { + RelativeSizeAxes = Axes.X, + Height = 300, + Content = new[] + { + new Drawable[] + { + playlist = new DrawableRoomPlaylist(true, true) { RelativeSizeAxes = Axes.Both } + }, + new Drawable[] + { + new OsuButton + { + RelativeSizeAxes = Axes.X, + Height = 40, + Text = "Edit playlist", + Action = () => EditPlaylist?.Invoke() + } + } + }, + RowDimensions = new[] + { + new Dimension(), + new Dimension(GridSizeMode.AutoSize), + } + } + }, + }, + }, }, } }, @@ -271,6 +307,8 @@ namespace osu.Game.Screens.Multi.Match.Components Type.BindValueChanged(type => TypePicker.Current.Value = type.NewValue, true); MaxParticipants.BindValueChanged(count => MaxParticipantsField.Text = count.NewValue?.ToString(), true); Duration.BindValueChanged(duration => DurationField.Current.Value = duration.NewValue, true); + + playlist.Items.BindTo(Playlist); } protected override void Update() From 929eb4f035d00a0d7b32b602c266685dec374afc Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 20:35:52 +0900 Subject: [PATCH 1546/1829] Add match footer --- .../Multiplayer/TestSceneMatchSubScreen.cs | 1 - .../Screens/Multi/Match/Components/Footer.cs | 53 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 osu.Game/Screens/Multi/Match/Components/Footer.cs diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSubScreen.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSubScreen.cs index 76d950b847..61def4be1a 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSubScreen.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSubScreen.cs @@ -11,7 +11,6 @@ using osu.Game.Online.Multiplayer; using osu.Game.Rulesets; using osu.Game.Screens.Multi.Match; using osu.Game.Screens.Multi.Match.Components; -using osu.Game.Screens.Select; using osu.Game.Users; namespace osu.Game.Tests.Visual.Multiplayer diff --git a/osu.Game/Screens/Multi/Match/Components/Footer.cs b/osu.Game/Screens/Multi/Match/Components/Footer.cs new file mode 100644 index 0000000000..93430d9131 --- /dev/null +++ b/osu.Game/Screens/Multi/Match/Components/Footer.cs @@ -0,0 +1,53 @@ +// 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 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.Graphics.UserInterface; +using osu.Game.Online.Multiplayer; +using osuTK; + +namespace osu.Game.Screens.Multi.Match.Components +{ + public class Footer : CompositeDrawable + { + public const float HEIGHT = 100; + + public Action OnStart; + public readonly Bindable SelectedItem = new Bindable(); + + private readonly Drawable background; + private readonly OsuButton startButton; + + public Footer() + { + RelativeSizeAxes = Axes.X; + Height = HEIGHT; + + InternalChildren = new[] + { + background = new Box { RelativeSizeAxes = Axes.Both }, + startButton = new ReadyButton + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Size = new Vector2(600, 50), + SelectedItem = { BindTarget = SelectedItem }, + Action = () => OnStart?.Invoke() + } + }; + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + background.Colour = OsuColour.FromHex(@"28242d"); + startButton.BackgroundColour = colours.Green; + } + } +} From 6d87d22a84abb31ac09aa0d311b2dc2c84616486 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Fri, 14 Feb 2020 18:40:58 +0700 Subject: [PATCH 1547/1829] Remove duplicated dependency on AudioManager --- osu.Game/Screens/Menu/IntroTriangles.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Menu/IntroTriangles.cs b/osu.Game/Screens/Menu/IntroTriangles.cs index 50cfe23481..4deaa68467 100644 --- a/osu.Game/Screens/Menu/IntroTriangles.cs +++ b/osu.Game/Screens/Menu/IntroTriangles.cs @@ -44,7 +44,7 @@ namespace osu.Game.Screens.Menu private SampleChannel welcome; [BackgroundDependencyLoader] - private void load(AudioManager audio) + private void load() { if (MenuVoice.Value && !MenuMusic.Value) welcome = audio.Samples.Get(@"welcome"); From b762e5e8a5f48ce0d098ba79d2b6e50ec5946186 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 20:42:14 +0900 Subject: [PATCH 1548/1829] Implement overlined components --- .../TestSceneOverlinedParticipants.cs | 28 ++++++ .../Multiplayer/TestSceneOverlinedPlaylist.cs | 39 +++++++++ .../Match/Components/OverlinedDisplay.cs | 87 +++++++++++++++++++ .../Match/Components/OverlinedParticipants.cs | 29 +++++++ .../Match/Components/OverlinedPlaylist.cs | 33 +++++++ 5 files changed, 216 insertions(+) create mode 100644 osu.Game.Tests/Visual/Multiplayer/TestSceneOverlinedParticipants.cs create mode 100644 osu.Game.Tests/Visual/Multiplayer/TestSceneOverlinedPlaylist.cs create mode 100644 osu.Game/Screens/Multi/Match/Components/OverlinedDisplay.cs create mode 100644 osu.Game/Screens/Multi/Match/Components/OverlinedParticipants.cs create mode 100644 osu.Game/Screens/Multi/Match/Components/OverlinedPlaylist.cs diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneOverlinedParticipants.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneOverlinedParticipants.cs new file mode 100644 index 0000000000..e07ebc1454 --- /dev/null +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneOverlinedParticipants.cs @@ -0,0 +1,28 @@ +// 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.Screens.Multi.Match.Components; +using osuTK; + +namespace osu.Game.Tests.Visual.Multiplayer +{ + public class TestSceneOverlinedParticipants : MultiplayerTestScene + { + protected override bool UseOnlineAPI => true; + + public TestSceneOverlinedParticipants() + { + Room.RoomID.Value = 7; + + Add(new Container + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Size = new Vector2(500), + Child = new OverlinedParticipants() + }); + } + } +} diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneOverlinedPlaylist.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneOverlinedPlaylist.cs new file mode 100644 index 0000000000..cf4897be50 --- /dev/null +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneOverlinedPlaylist.cs @@ -0,0 +1,39 @@ +// 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.Online.Multiplayer; +using osu.Game.Rulesets.Osu; +using osu.Game.Screens.Multi.Match.Components; +using osu.Game.Tests.Beatmaps; +using osuTK; + +namespace osu.Game.Tests.Visual.Multiplayer +{ + public class TestSceneOverlinedPlaylist : MultiplayerTestScene + { + protected override bool UseOnlineAPI => true; + + public TestSceneOverlinedPlaylist() + { + for (int i = 0; i < 10; i++) + { + Room.Playlist.Add(new PlaylistItem + { + ID = i, + Beatmap = { Value = new TestBeatmap(new OsuRuleset().RulesetInfo).BeatmapInfo }, + Ruleset = { Value = new OsuRuleset().RulesetInfo } + }); + } + + Add(new Container + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Size = new Vector2(500), + Child = new OverlinedPlaylist(false) + }); + } + } +} diff --git a/osu.Game/Screens/Multi/Match/Components/OverlinedDisplay.cs b/osu.Game/Screens/Multi/Match/Components/OverlinedDisplay.cs new file mode 100644 index 0000000000..854877bd1c --- /dev/null +++ b/osu.Game/Screens/Multi/Match/Components/OverlinedDisplay.cs @@ -0,0 +1,87 @@ +// 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.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; +using osu.Game.Graphics; +using osu.Game.Graphics.Sprites; +using osuTK; + +namespace osu.Game.Screens.Multi.Match.Components +{ + public abstract class OverlinedDisplay : MultiplayerComposite + { + protected readonly Container Content; + + protected string Details + { + set => details.Text = value; + } + + private readonly Circle line; + private readonly OsuSpriteText details; + + protected OverlinedDisplay(string title) + { + RelativeSizeAxes = Axes.Both; + + InternalChild = new GridContainer + { + RelativeSizeAxes = Axes.Both, + Content = new[] + { + new Drawable[] + { + line = new Circle + { + RelativeSizeAxes = Axes.X, + Height = 2, + Margin = new MarginPadding { Bottom = 2 } + }, + }, + new Drawable[] + { + new FillFlowContainer + { + AutoSizeAxes = Axes.Both, + Direction = FillDirection.Horizontal, + Margin = new MarginPadding { Top = 5 }, + Spacing = new Vector2(10, 0), + Children = new Drawable[] + { + new OsuSpriteText + { + Text = title, + Font = OsuFont.GetFont(size: 14) + }, + details = new OsuSpriteText { Font = OsuFont.GetFont(size: 14) }, + } + }, + }, + new Drawable[] + { + Content = new Container + { + Margin = new MarginPadding { Top = 5 }, + RelativeSizeAxes = Axes.Both + } + } + }, + RowDimensions = new[] + { + new Dimension(GridSizeMode.AutoSize), + new Dimension(GridSizeMode.AutoSize), + } + }; + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + line.Colour = colours.Yellow; + details.Colour = colours.Yellow; + } + } +} diff --git a/osu.Game/Screens/Multi/Match/Components/OverlinedParticipants.cs b/osu.Game/Screens/Multi/Match/Components/OverlinedParticipants.cs new file mode 100644 index 0000000000..7a4290a9a1 --- /dev/null +++ b/osu.Game/Screens/Multi/Match/Components/OverlinedParticipants.cs @@ -0,0 +1,29 @@ +// 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.Graphics; +using osu.Game.Screens.Multi.Components; + +namespace osu.Game.Screens.Multi.Match.Components +{ + public class OverlinedParticipants : OverlinedDisplay + { + public OverlinedParticipants() + : base("Participants") + { + Content.Add(new ParticipantsList { RelativeSizeAxes = Axes.Both }); + } + + [BackgroundDependencyLoader] + private void load() + { + ParticipantCount.BindValueChanged(_ => setParticipantCount()); + MaxParticipants.BindValueChanged(_ => setParticipantCount()); + + setParticipantCount(); + } + + private void setParticipantCount() => Details = MaxParticipants.Value != null ? $"{ParticipantCount.Value}/{MaxParticipants.Value}" : ParticipantCount.Value.ToString(); + } +} diff --git a/osu.Game/Screens/Multi/Match/Components/OverlinedPlaylist.cs b/osu.Game/Screens/Multi/Match/Components/OverlinedPlaylist.cs new file mode 100644 index 0000000000..eea85d9d64 --- /dev/null +++ b/osu.Game/Screens/Multi/Match/Components/OverlinedPlaylist.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 osu.Framework.Allocation; +using osu.Framework.Bindables; +using osu.Framework.Graphics; +using osu.Game.Online.Multiplayer; + +namespace osu.Game.Screens.Multi.Match.Components +{ + public class OverlinedPlaylist : OverlinedDisplay + { + public readonly Bindable SelectedItem = new Bindable(); + + private readonly DrawableRoomPlaylist playlist; + + public OverlinedPlaylist(bool allowSelection) + : base("Playlist") + { + Content.Add(playlist = new DrawableRoomPlaylist(false, allowSelection) + { + RelativeSizeAxes = Axes.Both, + SelectedItem = { BindTarget = SelectedItem } + }); + } + + [BackgroundDependencyLoader] + private void load() + { + playlist.Items.BindTo(Playlist); + } + } +} From 2ea8c47c83a084bf3bc67ebe527c5bebfe12dc00 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 20:44:41 +0900 Subject: [PATCH 1549/1829] Fix incorrect footer button size --- osu.Game/Screens/Multi/Match/Components/ReadyButton.cs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/osu.Game/Screens/Multi/Match/Components/ReadyButton.cs b/osu.Game/Screens/Multi/Match/Components/ReadyButton.cs index a62572a851..d39217db5d 100644 --- a/osu.Game/Screens/Multi/Match/Components/ReadyButton.cs +++ b/osu.Game/Screens/Multi/Match/Components/ReadyButton.cs @@ -5,11 +5,9 @@ using System; using System.Linq; using osu.Framework.Allocation; using osu.Framework.Bindables; -using osu.Framework.Graphics; using osu.Game.Beatmaps; using osu.Game.Graphics.UserInterface; using osu.Game.Online.Multiplayer; -using osuTK; namespace osu.Game.Screens.Multi.Match.Components { @@ -30,9 +28,6 @@ namespace osu.Game.Screens.Multi.Match.Components public ReadyButton() { - RelativeSizeAxes = Axes.Y; - Size = new Vector2(200, 1); - Text = "Start"; } From b92f1ad68dc57c67b33fe8bf180419b6118c93d7 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 20:48:09 +0900 Subject: [PATCH 1550/1829] Implement match subscreen re-design --- .../TestSceneMatchBeatmapDetailArea.cs | 4 +- .../Screens/Multi/Match/MatchSubScreen.cs | 223 ++++++++++-------- 2 files changed, 125 insertions(+), 102 deletions(-) diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapDetailArea.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapDetailArea.cs index 09d882a265..5c7ad7616d 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapDetailArea.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchBeatmapDetailArea.cs @@ -24,14 +24,12 @@ namespace osu.Game.Tests.Visual.Multiplayer private RulesetStore rulesetStore { get; set; } - private MatchBeatmapDetailArea detailArea; - [SetUp] public void Setup() => Schedule(() => { Room.Playlist.Clear(); - Child = detailArea = new MatchBeatmapDetailArea + Child = new MatchBeatmapDetailArea { Anchor = Anchor.Centre, Origin = Anchor.Centre, diff --git a/osu.Game/Screens/Multi/Match/MatchSubScreen.cs b/osu.Game/Screens/Multi/Match/MatchSubScreen.cs index 07da707724..44fccdaa13 100644 --- a/osu.Game/Screens/Multi/Match/MatchSubScreen.cs +++ b/osu.Game/Screens/Multi/Match/MatchSubScreen.cs @@ -5,17 +5,23 @@ using System; using System.Linq; using osu.Framework.Allocation; using osu.Framework.Bindables; +using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; +using osu.Framework.Graphics.Colour; using osu.Framework.Graphics.Containers; using osu.Framework.Screens; using osu.Game.Audio; using osu.Game.Beatmaps; +using osu.Game.Beatmaps.Drawables; using osu.Game.Online.Multiplayer; using osu.Game.Online.Multiplayer.GameTypes; using osu.Game.Rulesets.Mods; +using osu.Game.Screens.Multi.Components; using osu.Game.Screens.Multi.Match.Components; using osu.Game.Screens.Multi.Play; -using PlaylistItem = osu.Game.Online.Multiplayer.PlaylistItem; +using osu.Game.Screens.Select; +using osuTK.Graphics; +using Footer = osu.Game.Screens.Multi.Match.Components.Footer; namespace osu.Game.Screens.Multi.Match { @@ -31,26 +37,21 @@ namespace osu.Game.Screens.Multi.Match [Resolved(typeof(Room), nameof(Room.RoomID))] private Bindable roomId { get; set; } - [Resolved(typeof(Room), nameof(Room.Name))] - private Bindable name { get; set; } - [Resolved(typeof(Room), nameof(Room.Type))] private Bindable type { get; set; } - [Resolved(typeof(Room))] - protected BindableList Playlist { get; private set; } + [Resolved(typeof(Room), nameof(Room.Playlist))] + private BindableList playlist { get; set; } [Resolved] private BeatmapManager beatmapManager { get; set; } - [Resolved] - private PreviewTrackManager previewTrackManager { get; set; } - - [Resolved(CanBeNull = true)] - private OsuGame game { get; set; } + [Resolved(canBeNull: true)] + private Multiplayer multiplayer { get; set; } private readonly Bindable selectedItem = new Bindable(); - private MatchLeaderboard leaderboard; + private LeaderboardChatDisplay leaderboardChatDisplay; + private MatchSettingsOverlay settingsOverlay; public MatchSubScreen(Room room) { @@ -60,12 +61,14 @@ namespace osu.Game.Screens.Multi.Match [BackgroundDependencyLoader] private void load() { - Components.Header header; - GridContainer bottomRow; - MatchSettingsOverlay settings; - InternalChildren = new Drawable[] { + new HeaderBackgroundSprite + { + RelativeSizeAxes = Axes.X, + Height = 200, + Colour = ColourInfo.GradientVertical(Color4.White.Opacity(0.4f), Color4.White.Opacity(0)) + }, new GridContainer { RelativeSizeAxes = Axes.Both, @@ -73,143 +76,155 @@ namespace osu.Game.Screens.Multi.Match { new Drawable[] { - header = new Components.Header + new Container { - Depth = -1, + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding + { + Horizontal = 105, + Vertical = 20 + }, + Child = new GridContainer + { + RelativeSizeAxes = Axes.Both, + Content = new[] + { + new Drawable[] { new Components.Header() }, + new Drawable[] + { + new Container + { + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Top = 65 }, + Child = new GridContainer + { + RelativeSizeAxes = Axes.Both, + Content = new[] + { + new Drawable[] + { + new Container + { + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Right = 5 }, + Child = new OverlinedParticipants() + }, + new Container + { + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Horizontal = 5 }, + Child = new OverlinedPlaylist(true) // Temporarily always allow selection + { + SelectedItem = { BindTarget = selectedItem } + } + }, + new Container + { + RelativeSizeAxes = Axes.Both, + Padding = new MarginPadding { Left = 5 }, + Child = leaderboardChatDisplay = new LeaderboardChatDisplay() + } + }, + } + } + } + } + }, + RowDimensions = new[] + { + new Dimension(GridSizeMode.AutoSize), + new Dimension(), + } + } } }, new Drawable[] { - bottomRow = new GridContainer + new Footer { - RelativeSizeAxes = Axes.Both, - Content = new[] - { - new Drawable[] - { - leaderboard = new MatchLeaderboard - { - Padding = new MarginPadding - { - Left = 10 + HORIZONTAL_OVERFLOW_PADDING, - Right = 10, - Vertical = 10, - }, - RelativeSizeAxes = Axes.Both - }, - new Container - { - Padding = new MarginPadding - { - Left = 10, - Right = 10 + HORIZONTAL_OVERFLOW_PADDING, - Vertical = 10, - }, - RelativeSizeAxes = Axes.Both, - Child = new MatchChatDisplay - { - RelativeSizeAxes = Axes.Both - } - }, - }, - }, + OnStart = onStart, + SelectedItem = { BindTarget = selectedItem } } - }, + } }, RowDimensions = new[] { + new Dimension(), new Dimension(GridSizeMode.AutoSize), - new Dimension(GridSizeMode.AutoSize), - new Dimension(GridSizeMode.Distributed), } }, - new Container + settingsOverlay = new MatchSettingsOverlay { RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding { Top = Components.Header.HEIGHT }, - Child = settings = new MatchSettingsOverlay { RelativeSizeAxes = Axes.Both }, - }, + EditPlaylist = () => this.Push(new MatchSongSelect()), + State = { Value = roomId.Value == null ? Visibility.Visible : Visibility.Hidden } + } }; - - beatmapManager.ItemAdded += beatmapAdded; } protected override void LoadComplete() { base.LoadComplete(); - Playlist.ItemsAdded += _ => updateSelectedItem(); - Playlist.ItemsRemoved += _ => updateSelectedItem(); + roomId.BindValueChanged(id => + { + if (id.NewValue == null) + settingsOverlay.Show(); + else + settingsOverlay.Hide(); + }, true); - updateSelectedItem(); - } + selectedItem.BindValueChanged(selectedItemChanged); + selectedItem.Value = playlist.FirstOrDefault(); - private void updateSelectedItem() - { - selectedItem.Value = Playlist.FirstOrDefault(); - currentItemChanged(); + beatmapManager.ItemAdded += beatmapAdded; } public override bool OnExiting(IScreen next) { RoomManager?.PartRoom(); Mods.Value = Array.Empty(); - previewTrackManager.StopAnyPlaying(this); return base.OnExiting(next); } - /// - /// Handles propagation of the current playlist item's content to game-wide mechanisms. - /// - private void currentItemChanged() + private void selectedItemChanged(ValueChangedEvent e) { - var item = selectedItem.Value; + updateWorkingBeatmap(); - // Retrieve the corresponding local beatmap, since we can't directly use the playlist's beatmap info - var localBeatmap = item?.Beatmap == null ? null : beatmapManager.QueryBeatmap(b => b.OnlineBeatmapID == item.Beatmap.Value.OnlineBeatmapID); + Mods.Value = e.NewValue?.RequiredMods?.ToArray() ?? Array.Empty(); - Beatmap.Value = beatmapManager.GetWorkingBeatmap(localBeatmap); - Mods.Value = item?.RequiredMods?.ToArray() ?? Array.Empty(); - - if (item?.Ruleset != null) - Ruleset.Value = item.Ruleset.Value; - - previewTrackManager.StopAnyPlaying(this); + if (e.NewValue?.Ruleset != null) + Ruleset.Value = e.NewValue.Ruleset.Value; + } + + private void updateWorkingBeatmap() + { + var beatmap = selectedItem.Value?.Beatmap.Value; + + // Retrieve the corresponding local beatmap, since we can't directly use the playlist's beatmap info + var localBeatmap = beatmap == null ? null : beatmapManager.QueryBeatmap(b => b.OnlineBeatmapID == beatmap.OnlineBeatmapID); + + Beatmap.Value = beatmapManager.GetWorkingBeatmap(localBeatmap); } - /// - /// Handle the case where a beatmap is imported (and can be used by this match). - /// private void beatmapAdded(BeatmapSetInfo model) => Schedule(() => { if (Beatmap.Value != beatmapManager.DefaultBeatmap) return; - if (selectedItem.Value == null) - return; - - // Try to retrieve the corresponding local beatmap - var localBeatmap = beatmapManager.QueryBeatmap(b => b.OnlineBeatmapID == selectedItem.Value.Beatmap.Value.OnlineBeatmapID); - - if (localBeatmap != null) - Beatmap.Value = beatmapManager.GetWorkingBeatmap(localBeatmap); + updateWorkingBeatmap(); }); - [Resolved(canBeNull: true)] - private Multiplayer multiplayer { get; set; } - private void onStart() { - previewTrackManager.StopAnyPlaying(this); - switch (type.Value) { default: case GameTypeTimeshift _: multiplayer?.Start(() => new TimeshiftPlayer(selectedItem.Value) { - Exited = () => leaderboard.RefreshScores() + Exited = () => leaderboardChatDisplay.RefreshScores() }); break; } @@ -222,5 +237,15 @@ namespace osu.Game.Screens.Multi.Match if (beatmapManager != null) beatmapManager.ItemAdded -= beatmapAdded; } + + private class HeaderBackgroundSprite : MultiplayerBackgroundSprite + { + protected override UpdateableBeatmapBackgroundSprite CreateBackgroundSprite() => new BackgroundSprite { RelativeSizeAxes = Axes.Both }; + + private class BackgroundSprite : UpdateableBeatmapBackgroundSprite + { + protected override double TransformDuration => 200; + } + } } } From 9eaf37258794cdec6c0bc6c9dedad6713551d54e Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 21:17:07 +0900 Subject: [PATCH 1551/1829] Immediately update selected state --- osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs b/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs index b1e69e4c4f..1c35d8a53f 100644 --- a/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs +++ b/osu.Game/Screens/Multi/DrawableRoomPlaylistItem.cs @@ -76,7 +76,7 @@ namespace osu.Game.Screens.Multi { base.LoadComplete(); - SelectedItem.BindValueChanged(selected => maskingContainer.BorderThickness = selected.NewValue == Model ? 5 : 0); + SelectedItem.BindValueChanged(selected => maskingContainer.BorderThickness = selected.NewValue == Model ? 5 : 0, true); beatmap.BindValueChanged(_ => scheduleRefresh()); ruleset.BindValueChanged(_ => scheduleRefresh()); From c753cb46c50d48107fb58ebdd93f8ae4c54e542f Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Fri, 14 Feb 2020 20:14:00 +0700 Subject: [PATCH 1552/1829] Use [Resolved] wherever possible --- osu.Game/Audio/PreviewTrackManager.cs | 15 +++++---------- osu.Game/Graphics/ScreenshotManager.cs | 12 +++++++----- osu.Game/Graphics/UserInterface/DownloadButton.cs | 7 +++---- .../Graphics/UserInterface/ExternalLinkButton.cs | 7 ++++--- osu.Game/Graphics/UserInterface/FocusedTextBox.cs | 7 +++---- .../Graphics/UserInterface/OsuPasswordTextBox.cs | 9 ++------- osu.Game/Online/Chat/ChannelManager.cs | 9 ++------- osu.Game/Online/Chat/ExternalLinkOpener.cs | 12 +++++++----- osu.Game/Online/DownloadTrackingComposite.cs | 7 +++---- osu.Game/Online/Leaderboards/Leaderboard.cs | 8 ++++---- osu.Game/OsuGame.cs | 7 +++---- osu.Game/Overlays/AccountCreation/ScreenEntry.cs | 13 +++++++------ .../Overlays/AccountCreation/ScreenWarning.cs | 8 ++++---- osu.Game/Overlays/BeatmapSetOverlay.cs | 7 +++---- osu.Game/Overlays/ChatOverlay.cs | 7 +++---- osu.Game/Overlays/Direct/PlayButton.cs | 7 +++---- osu.Game/Overlays/DirectOverlay.cs | 12 ++++++------ osu.Game/Overlays/KeyBinding/KeyBindingRow.cs | 7 +++---- osu.Game/Overlays/Music/PlaylistOverlay.cs | 7 ++++--- .../Sections/Audio/AudioDevicesSettings.cs | 9 ++------- .../Settings/Sections/General/LoginSettings.cs | 15 ++++++++------- .../Settings/Sections/Graphics/LayoutSettings.cs | 8 ++++---- .../Overlays/Settings/Sections/SkinSection.cs | 7 +++---- osu.Game/Rulesets/Judgements/DrawableJudgement.cs | 7 +++---- .../Screens/Edit/Components/PlaybackControl.cs | 7 +++---- .../Screens/Edit/Components/TimeInfoContainer.cs | 9 ++------- .../Edit/Compose/Components/Timeline/Timeline.cs | 7 +++---- osu.Game/Screens/Menu/IntroTriangles.cs | 7 +++---- .../Multi/Ranking/Pages/RoomLeaderboardPage.cs | 8 ++++---- osu.Game/Screens/Play/Player.cs | 7 +++---- osu.Game/Screens/Select/BeatmapDetails.cs | 9 ++------- .../Select/Carousel/DrawableCarouselBeatmap.cs | 7 +++---- .../Select/Carousel/DrawableCarouselBeatmapSet.cs | 6 +++--- osu.Game/Skinning/SkinnableSound.cs | 9 ++------- osu.Game/Updater/SimpleUpdateManager.cs | 7 ++++--- 35 files changed, 128 insertions(+), 169 deletions(-) diff --git a/osu.Game/Audio/PreviewTrackManager.cs b/osu.Game/Audio/PreviewTrackManager.cs index 6f0b62543d..862be41c1a 100644 --- a/osu.Game/Audio/PreviewTrackManager.cs +++ b/osu.Game/Audio/PreviewTrackManager.cs @@ -19,13 +19,15 @@ namespace osu.Game.Audio { private readonly BindableDouble muteBindable = new BindableDouble(); - private AudioManager audio; + [Resolved] + private AudioManager audio { get; set; } + private PreviewTrackStore trackStore; protected TrackManagerPreviewTrack CurrentTrack; [BackgroundDependencyLoader] - private void load(AudioManager audio) + private void load() { // this is a temporary solution to get around muting ourselves. // todo: update this once we have a BackgroundTrackManager or similar. @@ -33,8 +35,6 @@ namespace osu.Game.Audio audio.AddItem(trackStore); trackStore.AddAdjustment(AdjustableProperty.Volume, audio.VolumeTrack); - - this.audio = audio; } /// @@ -90,6 +90,7 @@ namespace osu.Game.Audio public class TrackManagerPreviewTrack : PreviewTrack { + [Resolved] public IPreviewTrackOwner Owner { get; private set; } private readonly BeatmapSetInfo beatmapSetInfo; @@ -101,12 +102,6 @@ namespace osu.Game.Audio this.trackManager = trackManager; } - [BackgroundDependencyLoader] - private void load(IPreviewTrackOwner owner) - { - Owner = owner; - } - protected override Track GetTrack() => trackManager.Get($"https://b.ppy.sh/preview/{beatmapSetInfo?.OnlineBeatmapSetID}.mp3"); } diff --git a/osu.Game/Graphics/ScreenshotManager.cs b/osu.Game/Graphics/ScreenshotManager.cs index e21545688b..9804aefce8 100644 --- a/osu.Game/Graphics/ScreenshotManager.cs +++ b/osu.Game/Graphics/ScreenshotManager.cs @@ -35,18 +35,20 @@ namespace osu.Game.Graphics private Bindable screenshotFormat; private Bindable captureMenuCursor; - private GameHost host; + [Resolved] + private GameHost host { get; set; } + private Storage storage; - private NotificationOverlay notificationOverlay; + + [Resolved] + private NotificationOverlay notificationOverlay { get; set; } private SampleChannel shutter; [BackgroundDependencyLoader] - private void load(GameHost host, OsuConfigManager config, Storage storage, NotificationOverlay notificationOverlay, AudioManager audio) + private void load(OsuConfigManager config, Storage storage, AudioManager audio) { - this.host = host; this.storage = storage.GetStorageForDirectory(@"screenshots"); - this.notificationOverlay = notificationOverlay; screenshotFormat = config.GetBindable(OsuSetting.ScreenshotFormat); captureMenuCursor = config.GetBindable(OsuSetting.ScreenshotCaptureMenuCursor); diff --git a/osu.Game/Graphics/UserInterface/DownloadButton.cs b/osu.Game/Graphics/UserInterface/DownloadButton.cs index 41b90d3802..86a5cb9aa6 100644 --- a/osu.Game/Graphics/UserInterface/DownloadButton.cs +++ b/osu.Game/Graphics/UserInterface/DownloadButton.cs @@ -19,7 +19,8 @@ namespace osu.Game.Graphics.UserInterface private readonly SpriteIcon checkmark; private readonly Box background; - private OsuColour colours; + [Resolved] + private OsuColour colours { get; set; } public DownloadButton() { @@ -49,10 +50,8 @@ namespace osu.Game.Graphics.UserInterface } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load() { - this.colours = colours; - State.BindValueChanged(updateState, true); } diff --git a/osu.Game/Graphics/UserInterface/ExternalLinkButton.cs b/osu.Game/Graphics/UserInterface/ExternalLinkButton.cs index 7225dbc66f..5a1eb53fe1 100644 --- a/osu.Game/Graphics/UserInterface/ExternalLinkButton.cs +++ b/osu.Game/Graphics/UserInterface/ExternalLinkButton.cs @@ -18,7 +18,9 @@ namespace osu.Game.Graphics.UserInterface public string Link { get; set; } private Color4 hoverColour; - private GameHost host; + + [Resolved] + private GameHost host { get; set; } public ExternalLinkButton(string link = null) { @@ -32,10 +34,9 @@ namespace osu.Game.Graphics.UserInterface } [BackgroundDependencyLoader] - private void load(OsuColour colours, GameHost host) + private void load(OsuColour colours) { hoverColour = colours.Yellow; - this.host = host; } protected override bool OnHover(HoverEvent e) diff --git a/osu.Game/Graphics/UserInterface/FocusedTextBox.cs b/osu.Game/Graphics/UserInterface/FocusedTextBox.cs index e59353a480..8977f014b6 100644 --- a/osu.Game/Graphics/UserInterface/FocusedTextBox.cs +++ b/osu.Game/Graphics/UserInterface/FocusedTextBox.cs @@ -36,13 +36,12 @@ namespace osu.Game.Graphics.UserInterface } } - private GameHost host; + [Resolved] + private GameHost host { get; set; } [BackgroundDependencyLoader] - private void load(GameHost host) + private void load() { - this.host = host; - BackgroundUnfocused = new Color4(10, 10, 10, 255); BackgroundFocused = new Color4(10, 10, 10, 255); } diff --git a/osu.Game/Graphics/UserInterface/OsuPasswordTextBox.cs b/osu.Game/Graphics/UserInterface/OsuPasswordTextBox.cs index e4a4b1c50e..e7699e5255 100644 --- a/osu.Game/Graphics/UserInterface/OsuPasswordTextBox.cs +++ b/osu.Game/Graphics/UserInterface/OsuPasswordTextBox.cs @@ -24,7 +24,8 @@ namespace osu.Game.Graphics.UserInterface private readonly CapsWarning warning; - private GameHost host; + [Resolved] + private GameHost host { get; set; } public OsuPasswordTextBox() { @@ -38,12 +39,6 @@ namespace osu.Game.Graphics.UserInterface }); } - [BackgroundDependencyLoader] - private void load(GameHost host) - { - this.host = host; - } - protected override bool OnKeyDown(KeyDownEvent e) { if (e.Key == Key.CapsLock) diff --git a/osu.Game/Online/Chat/ChannelManager.cs b/osu.Game/Online/Chat/ChannelManager.cs index 4b5ec1cad0..2c37216fd6 100644 --- a/osu.Game/Online/Chat/ChannelManager.cs +++ b/osu.Game/Online/Chat/ChannelManager.cs @@ -48,7 +48,8 @@ namespace osu.Game.Online.Chat /// public IBindableList AvailableChannels => availableChannels; - private IAPIProvider api; + [Resolved] + private IAPIProvider api { get; set; } public readonly BindableBool HighPollRate = new BindableBool(); @@ -466,12 +467,6 @@ namespace osu.Game.Online.Chat api.Queue(req); } - - [BackgroundDependencyLoader] - private void load(IAPIProvider api) - { - this.api = api; - } } ///
    diff --git a/osu.Game/Online/Chat/ExternalLinkOpener.cs b/osu.Game/Online/Chat/ExternalLinkOpener.cs index 495f1ac0b0..da90ea6845 100644 --- a/osu.Game/Online/Chat/ExternalLinkOpener.cs +++ b/osu.Game/Online/Chat/ExternalLinkOpener.cs @@ -13,15 +13,17 @@ namespace osu.Game.Online.Chat { public class ExternalLinkOpener : Component { - private GameHost host; - private DialogOverlay dialogOverlay; + [Resolved] + private GameHost host { get; set; } + + [Resolved] + private DialogOverlay dialogOverlay { get; set; } + private Bindable externalLinkWarning; [BackgroundDependencyLoader(true)] - private void load(GameHost host, DialogOverlay dialogOverlay, OsuConfigManager config) + private void load(OsuConfigManager config) { - this.host = host; - this.dialogOverlay = dialogOverlay; externalLinkWarning = config.GetBindable(OsuSetting.ExternalLinkWarning); } diff --git a/osu.Game/Online/DownloadTrackingComposite.cs b/osu.Game/Online/DownloadTrackingComposite.cs index 9a0e112727..9eb5f36729 100644 --- a/osu.Game/Online/DownloadTrackingComposite.cs +++ b/osu.Game/Online/DownloadTrackingComposite.cs @@ -19,7 +19,8 @@ namespace osu.Game.Online { protected readonly Bindable Model = new Bindable(); - private TModelManager manager; + [Resolved] + private TModelManager manager { get; set; } /// /// Holds the current download state of the , whether is has already been downloaded, is in progress, or is not downloaded. @@ -34,10 +35,8 @@ namespace osu.Game.Online } [BackgroundDependencyLoader(true)] - private void load(TModelManager manager) + private void load() { - this.manager = manager; - Model.BindValueChanged(modelInfo => { if (modelInfo.NewValue == null) diff --git a/osu.Game/Online/Leaderboards/Leaderboard.cs b/osu.Game/Online/Leaderboards/Leaderboard.cs index 87c747675a..71859d3aeb 100644 --- a/osu.Game/Online/Leaderboards/Leaderboard.cs +++ b/osu.Game/Online/Leaderboards/Leaderboard.cs @@ -217,14 +217,14 @@ namespace osu.Game.Online.Leaderboards Scores = null; } - private IAPIProvider api; + [Resolved(CanBeNull = true)] + private IAPIProvider api { get; set; } private ScheduledDelegate pendingUpdateScores; - [BackgroundDependencyLoader(true)] - private void load(IAPIProvider api) + [BackgroundDependencyLoader] + private void load() { - this.api = api; api?.Register(this); } diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index e7fffd49b4..100730d40d 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -150,10 +150,8 @@ namespace osu.Game dependencies = new DependencyContainer(base.CreateChildDependencies(parent)); [BackgroundDependencyLoader] - private void load(FrameworkConfigManager frameworkConfig) + private void load() { - this.frameworkConfig = frameworkConfig; - if (!Host.IsPrimaryInstance && !DebugUtils.IsDebugBuild) { Logger.Log(@"osu! does not support multiple running instances.", LoggingTarget.Runtime, LogLevel.Error); @@ -881,7 +879,8 @@ namespace osu.Game private Container topMostOverlayContent; - private FrameworkConfigManager frameworkConfig; + [Resolved] + private FrameworkConfigManager frameworkConfig { get; set; } private ScalingContainer screenContainer; diff --git a/osu.Game/Overlays/AccountCreation/ScreenEntry.cs b/osu.Game/Overlays/AccountCreation/ScreenEntry.cs index 7067e02cd2..be3a84ca00 100644 --- a/osu.Game/Overlays/AccountCreation/ScreenEntry.cs +++ b/osu.Game/Overlays/AccountCreation/ScreenEntry.cs @@ -33,20 +33,21 @@ namespace osu.Game.Overlays.AccountCreation private OsuTextBox emailTextBox; private OsuPasswordTextBox passwordTextBox; - private IAPIProvider api; + [Resolved] + private IAPIProvider api { get; set; } + private ShakeContainer registerShake; private IEnumerable characterCheckText; private OsuTextBox[] textboxes; private ProcessingOverlay processingOverlay; - private GameHost host; + + [Resolved] + private GameHost host { get; set; } [BackgroundDependencyLoader] - private void load(OsuColour colours, IAPIProvider api, GameHost host) + private void load(OsuColour colours) { - this.api = api; - this.host = host; - InternalChildren = new Drawable[] { new FillFlowContainer diff --git a/osu.Game/Overlays/AccountCreation/ScreenWarning.cs b/osu.Game/Overlays/AccountCreation/ScreenWarning.cs index f91d2e3323..3c3c27ab6f 100644 --- a/osu.Game/Overlays/AccountCreation/ScreenWarning.cs +++ b/osu.Game/Overlays/AccountCreation/ScreenWarning.cs @@ -22,7 +22,9 @@ namespace osu.Game.Overlays.AccountCreation { private OsuTextFlowContainer multiAccountExplanationText; private LinkFlowContainer furtherAssistance; - private IAPIProvider api; + + [Resolved] + private IAPIProvider api { get; set; } private const string help_centre_url = "/help/wiki/Help_Centre#login"; @@ -39,10 +41,8 @@ namespace osu.Game.Overlays.AccountCreation } [BackgroundDependencyLoader(true)] - private void load(OsuColour colours, IAPIProvider api, OsuGame game, TextureStore textures) + private void load(OsuColour colours, OsuGame game, TextureStore textures) { - this.api = api; - if (string.IsNullOrEmpty(api.ProvidedUsername)) return; diff --git a/osu.Game/Overlays/BeatmapSetOverlay.cs b/osu.Game/Overlays/BeatmapSetOverlay.cs index 7624351e41..d29997f7e5 100644 --- a/osu.Game/Overlays/BeatmapSetOverlay.cs +++ b/osu.Game/Overlays/BeatmapSetOverlay.cs @@ -25,7 +25,8 @@ namespace osu.Game.Overlays public const float RIGHT_WIDTH = 275; protected readonly Header Header; - private RulesetStore rulesets; + [Resolved] + private RulesetStore rulesets { get; set; } private readonly Bindable beatmapSet = new Bindable(); @@ -90,10 +91,8 @@ namespace osu.Game.Overlays } [BackgroundDependencyLoader] - private void load(RulesetStore rulesets) + private void load() { - this.rulesets = rulesets; - background.Colour = ColourProvider.Background6; } diff --git a/osu.Game/Overlays/ChatOverlay.cs b/osu.Game/Overlays/ChatOverlay.cs index f2aef0995f..bdc241a437 100644 --- a/osu.Game/Overlays/ChatOverlay.cs +++ b/osu.Game/Overlays/ChatOverlay.cs @@ -30,7 +30,8 @@ namespace osu.Game.Overlays private const float textbox_height = 60; private const float channel_selection_min_height = 0.3f; - private ChannelManager channelManager; + [Resolved] + private ChannelManager channelManager { get; set; } private Container currentChannelContainer; @@ -72,7 +73,7 @@ namespace osu.Game.Overlays } [BackgroundDependencyLoader] - private void load(OsuConfigManager config, OsuColour colours, ChannelManager channelManager) + private void load(OsuConfigManager config, OsuColour colours) { const float padding = 5; @@ -209,8 +210,6 @@ namespace osu.Game.Overlays chatBackground.Colour = colours.ChatBlue; - this.channelManager = channelManager; - loading.Show(); // This is a relatively expensive (and blocking) operation. diff --git a/osu.Game/Overlays/Direct/PlayButton.cs b/osu.Game/Overlays/Direct/PlayButton.cs index 2a77e7ca26..10abe15177 100644 --- a/osu.Game/Overlays/Direct/PlayButton.cs +++ b/osu.Game/Overlays/Direct/PlayButton.cs @@ -85,13 +85,12 @@ namespace osu.Game.Overlays.Direct Playing.ValueChanged += playingStateChanged; } - private PreviewTrackManager previewTrackManager; + [Resolved] + private PreviewTrackManager previewTrackManager { get; set; } [BackgroundDependencyLoader] - private void load(OsuColour colour, PreviewTrackManager previewTrackManager) + private void load(OsuColour colour) { - this.previewTrackManager = previewTrackManager; - hoverColour = colour.Yellow; } diff --git a/osu.Game/Overlays/DirectOverlay.cs b/osu.Game/Overlays/DirectOverlay.cs index e4cef319fe..6cc48f09bd 100644 --- a/osu.Game/Overlays/DirectOverlay.cs +++ b/osu.Game/Overlays/DirectOverlay.cs @@ -27,7 +27,8 @@ namespace osu.Game.Overlays { private const float panel_padding = 10f; - private RulesetStore rulesets; + [Resolved] + private RulesetStore rulesets { get; set; } private readonly FillFlowContainer resultCountsContainer; private readonly OsuSpriteText resultCountsText; @@ -155,11 +156,8 @@ namespace osu.Game.Overlays } [BackgroundDependencyLoader] - private void load(OsuColour colours, RulesetStore rulesets, PreviewTrackManager previewTrackManager) + private void load(OsuColour colours) { - this.rulesets = rulesets; - this.previewTrackManager = previewTrackManager; - resultCountsContainer.Colour = colours.Yellow; } @@ -228,7 +226,9 @@ namespace osu.Game.Overlays private readonly Bindable currentQuery = new Bindable(string.Empty); private ScheduledDelegate queryChangedDebounce; - private PreviewTrackManager previewTrackManager; + + [Resolved] + private PreviewTrackManager previewTrackManager { get; set; } private void queueUpdateSearch(bool queryTextChanged = false) { diff --git a/osu.Game/Overlays/KeyBinding/KeyBindingRow.cs b/osu.Game/Overlays/KeyBinding/KeyBindingRow.cs index d2fcc2652a..58ca2143f9 100644 --- a/osu.Game/Overlays/KeyBinding/KeyBindingRow.cs +++ b/osu.Game/Overlays/KeyBinding/KeyBindingRow.cs @@ -66,13 +66,12 @@ namespace osu.Game.Overlays.KeyBinding CornerRadius = padding; } - private KeyBindingStore store; + [Resolved] + private KeyBindingStore store { get; set; } [BackgroundDependencyLoader] - private void load(OsuColour colours, KeyBindingStore store) + private void load(OsuColour colours) { - this.store = store; - EdgeEffect = new EdgeEffectParameters { Radius = 2, diff --git a/osu.Game/Overlays/Music/PlaylistOverlay.cs b/osu.Game/Overlays/Music/PlaylistOverlay.cs index 7c391e27f9..8f753fd3aa 100644 --- a/osu.Game/Overlays/Music/PlaylistOverlay.cs +++ b/osu.Game/Overlays/Music/PlaylistOverlay.cs @@ -26,16 +26,17 @@ namespace osu.Game.Overlays.Music private readonly BindableList beatmapSets = new BindableList(); private readonly Bindable beatmap = new Bindable(); - private BeatmapManager beatmaps; + + [Resolved] + private BeatmapManager beatmaps { get; set; } private FilterControl filter; private Playlist list; [BackgroundDependencyLoader] - private void load(OsuColour colours, Bindable beatmap, BeatmapManager beatmaps) + private void load(OsuColour colours, Bindable beatmap) { this.beatmap.BindTo(beatmap); - this.beatmaps = beatmaps; Children = new Drawable[] { diff --git a/osu.Game/Overlays/Settings/Sections/Audio/AudioDevicesSettings.cs b/osu.Game/Overlays/Settings/Sections/Audio/AudioDevicesSettings.cs index 0612f028bc..3cc233ef73 100644 --- a/osu.Game/Overlays/Settings/Sections/Audio/AudioDevicesSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/Audio/AudioDevicesSettings.cs @@ -14,15 +14,10 @@ namespace osu.Game.Overlays.Settings.Sections.Audio { protected override string Header => "Devices"; - private AudioManager audio; + [Resolved] + private AudioManager audio { get; set; } private SettingsDropdown dropdown; - [BackgroundDependencyLoader] - private void load(AudioManager audio) - { - this.audio = audio; - } - protected override void Dispose(bool isDisposing) { base.Dispose(isDisposing); diff --git a/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs b/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs index e485aa5ea9..b41c7d5afb 100644 --- a/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs @@ -29,7 +29,9 @@ namespace osu.Game.Overlays.Settings.Sections.General { private bool bounding = true; private LoginForm form; - private OsuColour colours; + + [Resolved] + private OsuColour colours { get; set; } private UserPanel panel; private UserDropdown dropdown; @@ -60,10 +62,8 @@ namespace osu.Game.Overlays.Settings.Sections.General } [BackgroundDependencyLoader(permitNulls: true)] - private void load(OsuColour colours, IAPIProvider api) + private void load(IAPIProvider api) { - this.colours = colours; - api?.Register(this); } @@ -201,7 +201,9 @@ namespace osu.Game.Overlays.Settings.Sections.General private TextBox username; private TextBox password; private ShakeContainer shakeSignIn; - private IAPIProvider api; + + [Resolved] + private IAPIProvider api { get; set; } public Action RequestHide; @@ -214,9 +216,8 @@ namespace osu.Game.Overlays.Settings.Sections.General } [BackgroundDependencyLoader(permitNulls: true)] - private void load(IAPIProvider api, OsuConfigManager config, AccountCreationOverlay accountCreation) + private void load(OsuConfigManager config, AccountCreationOverlay accountCreation) { - this.api = api; Direction = FillDirection.Vertical; Spacing = new Vector2(0, 5); AutoSizeAxes = Axes.Y; diff --git a/osu.Game/Overlays/Settings/Sections/Graphics/LayoutSettings.cs b/osu.Game/Overlays/Settings/Sections/Graphics/LayoutSettings.cs index efbb08b7df..b73c8f7622 100644 --- a/osu.Game/Overlays/Settings/Sections/Graphics/LayoutSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/Graphics/LayoutSettings.cs @@ -29,7 +29,9 @@ namespace osu.Game.Overlays.Settings.Sections.Graphics private Bindable sizeFullscreen; private readonly IBindableList windowModes = new BindableList(); - private OsuGameBase game; + [Resolved] + private OsuGameBase game { get; set; } + private SettingsDropdown resolutionDropdown; private SettingsDropdown windowModeDropdown; @@ -41,10 +43,8 @@ namespace osu.Game.Overlays.Settings.Sections.Graphics private const int transition_duration = 400; [BackgroundDependencyLoader] - private void load(FrameworkConfigManager config, OsuConfigManager osuConfig, OsuGameBase game, GameHost host) + private void load(FrameworkConfigManager config, OsuConfigManager osuConfig, GameHost host) { - this.game = game; - scalingMode = osuConfig.GetBindable(OsuSetting.Scaling); sizeFullscreen = config.GetBindable(FrameworkSetting.SizeFullscreen); scalingSizeX = osuConfig.GetBindable(OsuSetting.ScalingSizeX); diff --git a/osu.Game/Overlays/Settings/Sections/SkinSection.cs b/osu.Game/Overlays/Settings/Sections/SkinSection.cs index d3029d8ab9..b229014c84 100644 --- a/osu.Game/Overlays/Settings/Sections/SkinSection.cs +++ b/osu.Game/Overlays/Settings/Sections/SkinSection.cs @@ -24,13 +24,12 @@ namespace osu.Game.Overlays.Settings.Sections private readonly Bindable dropdownBindable = new Bindable { Default = SkinInfo.Default }; private readonly Bindable configBindable = new Bindable(); - private SkinManager skins; + [Resolved] + private SkinManager skins { get; set; } [BackgroundDependencyLoader] - private void load(OsuConfigManager config, SkinManager skins) + private void load(OsuConfigManager config) { - this.skins = skins; - FlowContent.Spacing = new Vector2(0, 5); Children = new Drawable[] { diff --git a/osu.Game/Rulesets/Judgements/DrawableJudgement.cs b/osu.Game/Rulesets/Judgements/DrawableJudgement.cs index 8289ca175d..960585b968 100644 --- a/osu.Game/Rulesets/Judgements/DrawableJudgement.cs +++ b/osu.Game/Rulesets/Judgements/DrawableJudgement.cs @@ -23,7 +23,8 @@ namespace osu.Game.Rulesets.Judgements { private const float judgement_size = 128; - private OsuColour colours; + [Resolved] + private OsuColour colours { get; set; } protected readonly JudgementResult Result; @@ -56,10 +57,8 @@ namespace osu.Game.Rulesets.Judgements } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load() { - this.colours = colours; - InternalChild = JudgementBody = new Container { Anchor = Anchor.Centre, diff --git a/osu.Game/Screens/Edit/Components/PlaybackControl.cs b/osu.Game/Screens/Edit/Components/PlaybackControl.cs index 66df68418a..897c6ec531 100644 --- a/osu.Game/Screens/Edit/Components/PlaybackControl.cs +++ b/osu.Game/Screens/Edit/Components/PlaybackControl.cs @@ -25,15 +25,14 @@ namespace osu.Game.Screens.Edit.Components { private IconButton playButton; - private IAdjustableClock adjustableClock; + [Resolved] + private IAdjustableClock adjustableClock { get; set; } private readonly BindableNumber tempo = new BindableDouble(1); [BackgroundDependencyLoader] - private void load(IAdjustableClock adjustableClock) + private void load() { - this.adjustableClock = adjustableClock; - Children = new Drawable[] { playButton = new IconButton diff --git a/osu.Game/Screens/Edit/Components/TimeInfoContainer.cs b/osu.Game/Screens/Edit/Components/TimeInfoContainer.cs index 0391074b11..4bf21d240a 100644 --- a/osu.Game/Screens/Edit/Components/TimeInfoContainer.cs +++ b/osu.Game/Screens/Edit/Components/TimeInfoContainer.cs @@ -14,7 +14,8 @@ namespace osu.Game.Screens.Edit.Components { private readonly OsuSpriteText trackTimer; - private IAdjustableClock adjustableClock; + [Resolved] + private IAdjustableClock adjustableClock { get; set; } public TimeInfoContainer() { @@ -30,12 +31,6 @@ namespace osu.Game.Screens.Edit.Components }; } - [BackgroundDependencyLoader] - private void load(IAdjustableClock adjustableClock) - { - this.adjustableClock = adjustableClock; - } - protected override void Update() { base.Update(); diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs index 0475e68e42..ddca5e42c2 100644 --- a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs +++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs @@ -24,7 +24,8 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline public readonly Bindable WaveformVisible = new Bindable(); public readonly IBindable Beatmap = new Bindable(); - private IAdjustableClock adjustableClock; + [Resolved] + private IAdjustableClock adjustableClock { get; set; } public Timeline() { @@ -36,10 +37,8 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline private WaveformGraph waveform; [BackgroundDependencyLoader] - private void load(IBindable beatmap, IAdjustableClock adjustableClock, OsuColour colours) + private void load(IBindable beatmap, OsuColour colours) { - this.adjustableClock = adjustableClock; - Add(waveform = new WaveformGraph { RelativeSizeAxes = Axes.Both, diff --git a/osu.Game/Screens/Menu/IntroTriangles.cs b/osu.Game/Screens/Menu/IntroTriangles.cs index 4deaa68467..29f32406e8 100644 --- a/osu.Game/Screens/Menu/IntroTriangles.cs +++ b/osu.Game/Screens/Menu/IntroTriangles.cs @@ -102,13 +102,12 @@ namespace osu.Game.Screens.Menu this.background = background; } - private OsuGameBase game; + [Resolved] + private OsuGameBase game { get; set; } [BackgroundDependencyLoader] - private void load(TextureStore textures, OsuGameBase game) + private void load(TextureStore textures) { - this.game = game; - InternalChildren = new Drawable[] { triangles = new GlitchingTriangles diff --git a/osu.Game/Screens/Multi/Ranking/Pages/RoomLeaderboardPage.cs b/osu.Game/Screens/Multi/Ranking/Pages/RoomLeaderboardPage.cs index ff5471cf4a..f8fb192b5c 100644 --- a/osu.Game/Screens/Multi/Ranking/Pages/RoomLeaderboardPage.cs +++ b/osu.Game/Screens/Multi/Ranking/Pages/RoomLeaderboardPage.cs @@ -23,7 +23,9 @@ namespace osu.Game.Screens.Multi.Ranking.Pages { public class RoomLeaderboardPage : ResultsPage { - private OsuColour colours; + [Resolved] + private OsuColour colours { get; set; } + private TextFlowContainer rankText; [Resolved(typeof(Room), nameof(Room.Name))] @@ -35,10 +37,8 @@ namespace osu.Game.Screens.Multi.Ranking.Pages } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load() { - this.colours = colours; - MatchLeaderboard leaderboard; Children = new Drawable[] diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index 9bfdcd79fe..bd43b23a9f 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -65,7 +65,8 @@ namespace osu.Game.Screens.Play private Ruleset ruleset; - private IAPIProvider api; + [Resolved] + private IAPIProvider api { get; set; } private SampleChannel sampleRestart; @@ -118,10 +119,8 @@ namespace osu.Game.Screens.Play => dependencies = new DependencyContainer(base.CreateChildDependencies(parent)); [BackgroundDependencyLoader] - private void load(AudioManager audio, IAPIProvider api, OsuConfigManager config) + private void load(AudioManager audio, OsuConfigManager config) { - this.api = api; - Mods.Value = base.Mods.Value.Select(m => m.CreateCopy()).ToArray(); if (Beatmap.Value is DummyWorkingBeatmap) diff --git a/osu.Game/Screens/Select/BeatmapDetails.cs b/osu.Game/Screens/Select/BeatmapDetails.cs index 577d999388..85b892336a 100644 --- a/osu.Game/Screens/Select/BeatmapDetails.cs +++ b/osu.Game/Screens/Select/BeatmapDetails.cs @@ -37,7 +37,8 @@ namespace osu.Game.Screens.Select private readonly FailRetryGraph failRetryGraph; private readonly DimmedLoadingLayer loading; - private IAPIProvider api; + [Resolved] + private IAPIProvider api { get; set; } private ScheduledDelegate pendingBeatmapSwitch; @@ -160,12 +161,6 @@ namespace osu.Game.Screens.Select }; } - [BackgroundDependencyLoader] - private void load(IAPIProvider api) - { - this.api = api; - } - protected override void UpdateAfterChildren() { base.UpdateAfterChildren(); diff --git a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs index fba7a328c1..31aca11b86 100644 --- a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs +++ b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs @@ -37,7 +37,8 @@ namespace osu.Game.Screens.Select.Carousel private Triangles triangles; private StarCounter starCounter; - private BeatmapSetOverlay beatmapOverlay; + [Resolved] + private BeatmapSetOverlay beatmapOverlay { get; set; } public DrawableCarouselBeatmap(CarouselBeatmap panel) : base(panel) @@ -47,10 +48,8 @@ namespace osu.Game.Screens.Select.Carousel } [BackgroundDependencyLoader(true)] - private void load(SongSelect songSelect, BeatmapManager manager, BeatmapSetOverlay beatmapOverlay) + private void load(SongSelect songSelect, BeatmapManager manager) { - this.beatmapOverlay = beatmapOverlay; - if (songSelect != null) { startRequested = b => songSelect.FinaliseSelection(b); diff --git a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs index 699e01bca7..db59d8a4de 100644 --- a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs +++ b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs @@ -30,7 +30,8 @@ namespace osu.Game.Screens.Select.Carousel private Action restoreHiddenRequested; private Action viewDetails; - private DialogOverlay dialogOverlay; + [Resolved] + private DialogOverlay dialogOverlay { get; set; } private readonly BeatmapSetInfo beatmapSet; public DrawableCarouselBeatmapSet(CarouselBeatmapSet set) @@ -40,10 +41,9 @@ namespace osu.Game.Screens.Select.Carousel } [BackgroundDependencyLoader(true)] - private void load(BeatmapManager manager, BeatmapSetOverlay beatmapOverlay, DialogOverlay overlay) + private void load(BeatmapManager manager, BeatmapSetOverlay beatmapOverlay) { restoreHiddenRequested = s => s.Beatmaps.ForEach(manager.Restore); - dialogOverlay = overlay; if (beatmapOverlay != null) viewDetails = beatmapOverlay.FetchAndShowBeatmapSet; diff --git a/osu.Game/Skinning/SkinnableSound.cs b/osu.Game/Skinning/SkinnableSound.cs index fc6afd0b27..a78c04ecd4 100644 --- a/osu.Game/Skinning/SkinnableSound.cs +++ b/osu.Game/Skinning/SkinnableSound.cs @@ -21,7 +21,8 @@ namespace osu.Game.Skinning private SampleChannel[] channels; - private ISampleStore samples; + [Resolved] + private ISampleStore samples { get; set; } public SkinnableSound(IEnumerable hitSamples) { @@ -33,12 +34,6 @@ namespace osu.Game.Skinning this.hitSamples = new[] { hitSamples }; } - [BackgroundDependencyLoader] - private void load(ISampleStore samples) - { - this.samples = samples; - } - private bool looping; public bool Looping diff --git a/osu.Game/Updater/SimpleUpdateManager.cs b/osu.Game/Updater/SimpleUpdateManager.cs index 5412b11b33..e490ac14e9 100644 --- a/osu.Game/Updater/SimpleUpdateManager.cs +++ b/osu.Game/Updater/SimpleUpdateManager.cs @@ -20,12 +20,13 @@ namespace osu.Game.Updater public class SimpleUpdateManager : UpdateManager { private string version; - private GameHost host; + + [Resolved] + private GameHost host { get; set; } [BackgroundDependencyLoader] - private void load(OsuGameBase game, GameHost host) + private void load(OsuGameBase game) { - this.host = host; version = game.Version; if (game.IsDeployedBuild) From a7c2fd078f03bc9c1c808c54e3a5d2d8a6ae61cc Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Fri, 14 Feb 2020 20:27:21 +0700 Subject: [PATCH 1553/1829] Fix remaining cases --- osu.Game/Beatmaps/Drawables/DifficultyIcon.cs | 6 +++--- osu.Game/Online/API/APIAccess.cs | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs index a3128e36c4..8a0d981e49 100644 --- a/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs +++ b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs @@ -150,12 +150,12 @@ namespace osu.Game.Beatmaps.Drawables }; } - private OsuColour colours; + [Resolved] + private OsuColour colours { get; set; } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load() { - this.colours = colours; background.Colour = colours.Gray3; } diff --git a/osu.Game/Online/API/APIAccess.cs b/osu.Game/Online/API/APIAccess.cs index 23c931d161..ab87607112 100644 --- a/osu.Game/Online/API/APIAccess.cs +++ b/osu.Game/Online/API/APIAccess.cs @@ -9,6 +9,7 @@ using System.Net.Http; using System.Threading; using System.Threading.Tasks; using Newtonsoft.Json.Linq; +using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Extensions.ExceptionExtensions; using osu.Framework.Graphics; @@ -21,7 +22,9 @@ namespace osu.Game.Online.API { public class APIAccess : Component, IAPIProvider { - private readonly OsuConfigManager config; + [Resolved] + private OsuConfigManager config { get; set; } + private readonly OAuth authentication; public string Endpoint => @"https://osu.ppy.sh"; From 10798aeab3ec493cec17daab1746e23a609c8cc2 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Fri, 14 Feb 2020 20:30:27 +0700 Subject: [PATCH 1554/1829] Fix code formatting --- osu.Game/Overlays/DirectOverlay.cs | 2 +- .../Overlays/Settings/Sections/Audio/AudioDevicesSettings.cs | 1 + osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/DirectOverlay.cs b/osu.Game/Overlays/DirectOverlay.cs index 6cc48f09bd..a6f8b65a0d 100644 --- a/osu.Game/Overlays/DirectOverlay.cs +++ b/osu.Game/Overlays/DirectOverlay.cs @@ -226,7 +226,7 @@ namespace osu.Game.Overlays private readonly Bindable currentQuery = new Bindable(string.Empty); private ScheduledDelegate queryChangedDebounce; - + [Resolved] private PreviewTrackManager previewTrackManager { get; set; } diff --git a/osu.Game/Overlays/Settings/Sections/Audio/AudioDevicesSettings.cs b/osu.Game/Overlays/Settings/Sections/Audio/AudioDevicesSettings.cs index 3cc233ef73..3da64e0de4 100644 --- a/osu.Game/Overlays/Settings/Sections/Audio/AudioDevicesSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/Audio/AudioDevicesSettings.cs @@ -16,6 +16,7 @@ namespace osu.Game.Overlays.Settings.Sections.Audio [Resolved] private AudioManager audio { get; set; } + private SettingsDropdown dropdown; protected override void Dispose(bool isDisposing) diff --git a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs index db59d8a4de..bf7329b305 100644 --- a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs +++ b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs @@ -32,6 +32,7 @@ namespace osu.Game.Screens.Select.Carousel [Resolved] private DialogOverlay dialogOverlay { get; set; } + private readonly BeatmapSetInfo beatmapSet; public DrawableCarouselBeatmapSet(CarouselBeatmapSet set) From c46d8287164a88c70703598c169531684a89e596 Mon Sep 17 00:00:00 2001 From: recapitalverb <41869184+recapitalverb@users.noreply.github.com> Date: Fri, 14 Feb 2020 20:59:51 +0700 Subject: [PATCH 1555/1829] Preserve permitNulls --- osu.Game/Online/Chat/ExternalLinkOpener.cs | 4 ++-- osu.Game/Online/DownloadTrackingComposite.cs | 2 +- osu.Game/Overlays/AccountCreation/ScreenWarning.cs | 2 +- osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs | 2 +- .../Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/osu.Game/Online/Chat/ExternalLinkOpener.cs b/osu.Game/Online/Chat/ExternalLinkOpener.cs index da90ea6845..a5958d38cb 100644 --- a/osu.Game/Online/Chat/ExternalLinkOpener.cs +++ b/osu.Game/Online/Chat/ExternalLinkOpener.cs @@ -13,10 +13,10 @@ namespace osu.Game.Online.Chat { public class ExternalLinkOpener : Component { - [Resolved] + [Resolved(CanBeNull = true)] private GameHost host { get; set; } - [Resolved] + [Resolved(CanBeNull = true)] private DialogOverlay dialogOverlay { get; set; } private Bindable externalLinkWarning; diff --git a/osu.Game/Online/DownloadTrackingComposite.cs b/osu.Game/Online/DownloadTrackingComposite.cs index 9eb5f36729..6e7ef99c6d 100644 --- a/osu.Game/Online/DownloadTrackingComposite.cs +++ b/osu.Game/Online/DownloadTrackingComposite.cs @@ -19,7 +19,7 @@ namespace osu.Game.Online { protected readonly Bindable Model = new Bindable(); - [Resolved] + [Resolved(CanBeNull = true)] private TModelManager manager { get; set; } /// diff --git a/osu.Game/Overlays/AccountCreation/ScreenWarning.cs b/osu.Game/Overlays/AccountCreation/ScreenWarning.cs index 3c3c27ab6f..5375476c9e 100644 --- a/osu.Game/Overlays/AccountCreation/ScreenWarning.cs +++ b/osu.Game/Overlays/AccountCreation/ScreenWarning.cs @@ -23,7 +23,7 @@ namespace osu.Game.Overlays.AccountCreation private OsuTextFlowContainer multiAccountExplanationText; private LinkFlowContainer furtherAssistance; - [Resolved] + [Resolved(CanBeNull = true)] private IAPIProvider api { get; set; } private const string help_centre_url = "/help/wiki/Help_Centre#login"; diff --git a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs index 31aca11b86..d9eeec9f85 100644 --- a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs +++ b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs @@ -37,7 +37,7 @@ namespace osu.Game.Screens.Select.Carousel private Triangles triangles; private StarCounter starCounter; - [Resolved] + [Resolved(CanBeNull = true)] private BeatmapSetOverlay beatmapOverlay { get; set; } public DrawableCarouselBeatmap(CarouselBeatmap panel) diff --git a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs index bf7329b305..997f2382fc 100644 --- a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs +++ b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmapSet.cs @@ -30,7 +30,7 @@ namespace osu.Game.Screens.Select.Carousel private Action restoreHiddenRequested; private Action viewDetails; - [Resolved] + [Resolved(CanBeNull = true)] private DialogOverlay dialogOverlay { get; set; } private readonly BeatmapSetInfo beatmapSet; From 61d539dc6794b1108aeab5e065a322f7e7b53795 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 14 Feb 2020 23:39:39 +0900 Subject: [PATCH 1556/1829] Fix first playlist item not getting selected --- .../Multiplayer/TestSceneMatchSubScreen.cs | 99 +++++++++++++------ .../Screens/Multi/Match/MatchSubScreen.cs | 21 ++-- 2 files changed, 81 insertions(+), 39 deletions(-) diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSubScreen.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSubScreen.cs index 61def4be1a..7f79e306ad 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSubScreen.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSubScreen.cs @@ -3,19 +3,28 @@ using System; using System.Collections.Generic; +using System.Linq; using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Bindables; +using osu.Framework.Screens; +using osu.Framework.Testing; using osu.Game.Beatmaps; +using osu.Game.Graphics.UserInterface; using osu.Game.Online.Multiplayer; using osu.Game.Rulesets; +using osu.Game.Rulesets.Osu; +using osu.Game.Screens.Multi; using osu.Game.Screens.Multi.Match; using osu.Game.Screens.Multi.Match.Components; +using osu.Game.Tests.Beatmaps; using osu.Game.Users; +using osuTK.Input; +using Header = osu.Game.Screens.Multi.Match.Components.Header; namespace osu.Game.Tests.Visual.Multiplayer { - public class TestSceneMatchSubScreen : ScreenTestScene + public class TestSceneMatchSubScreen : MultiplayerTestScene { protected override bool UseOnlineAPI => true; @@ -27,8 +36,8 @@ namespace osu.Game.Tests.Visual.Multiplayer typeof(Footer) }; - [Cached] - private readonly Bindable currentRoom = new Bindable(); + [Cached(typeof(IRoomManager))] + private readonly TestRoomManager roomManager = new TestRoomManager(); [Resolved] private BeatmapManager beatmaps { get; set; } @@ -36,51 +45,77 @@ namespace osu.Game.Tests.Visual.Multiplayer [Resolved] private RulesetStore rulesets { get; set; } - public TestSceneMatchSubScreen() + private TestMatchSubScreen match; + + [SetUp] + public void Setup() => Schedule(() => { - currentRoom.Value = new Room(); + Room.CopyFrom(new Room()); + }); + + [SetUpSteps] + public void SetupSteps() + { + AddStep("load match", () => LoadScreen(match = new TestMatchSubScreen(Room))); + AddUntilStep("wait for load", () => match.IsCurrentScreen()); } [Test] - public void TestShowRoom() + public void TestPlaylistItemSelectedOnCreate() { - AddStep(@"show", () => + AddStep("set room properties", () => { - currentRoom.Value.RoomID.Value = 1; - currentRoom.Value.Availability.Value = RoomAvailability.Public; - currentRoom.Value.Duration.Value = TimeSpan.FromHours(24); - currentRoom.Value.Host.Value = new User { Username = "peppy", Id = 2 }; - currentRoom.Value.Name.Value = "super secret room"; - currentRoom.Value.Participants.AddRange(new[] + Room.Name.Value = "my awesome room"; + Room.Host.Value = new User { Id = 2, Username = "peppy" }; + Room.Playlist.Add(new PlaylistItem { - new User { Username = "peppy", Id = 2 }, - new User { Username = "smoogipoo", Id = 1040328 } + Beatmap = { Value = new TestBeatmap(new OsuRuleset().RulesetInfo).BeatmapInfo }, + Ruleset = { Value = new OsuRuleset().RulesetInfo } }); - currentRoom.Value.Playlist.Add(new PlaylistItem - { - Beatmap = { Value = beatmaps.GetAllUsableBeatmapSets()[0].Beatmaps[0] }, - Ruleset = { Value = rulesets.GetRuleset(2) }, - }); - - LoadScreen(new MatchSubScreen(currentRoom.Value)); }); + + AddStep("move mouse to create button", () => + { + var footer = match.ChildrenOfType