From aff9e3617da0c8fe252169fae287e39b44575b5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Fri, 3 Mar 2017 20:42:03 +0100 Subject: [PATCH 01/11] Massively improves fill-rate of mod select screen This is done by masking away the parts of WaveOverlayContainer that are behind the content. --- osu.Game/Overlays/WaveOverlayContainer.cs | 29 +++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/WaveOverlayContainer.cs b/osu.Game/Overlays/WaveOverlayContainer.cs index 37a939005b..62c2489dd5 100644 --- a/osu.Game/Overlays/WaveOverlayContainer.cs +++ b/osu.Game/Overlays/WaveOverlayContainer.cs @@ -9,6 +9,8 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; using OpenTK; using osu.Framework.Graphics.Transforms; +using osu.Framework.Graphics.Primitives; +using System; namespace osu.Game.Overlays { @@ -86,9 +88,10 @@ namespace osu.Game.Overlays AddInternal(wavesContainer = new Container { - RelativeSizeAxes = Axes.Both, + RelativeSizeAxes = Axes.X, Origin = Anchor.TopCentre, Anchor = Anchor.TopCentre, + Masking = true, Children = new[] { firstWave = new Wave @@ -152,14 +155,23 @@ namespace osu.Game.Overlays w.State = Visibility.Hidden; } + protected override void UpdateAfterChildren() + { + base.UpdateAfterChildren(); + + // This is done as an optimization, such that invisible parts of the waves + // are masked away, and thus do not consume fill rate. + wavesContainer.Height = Math.Max(0, DrawHeight - (contentContainer.DrawHeight - contentContainer.Y)); + } + private class Wave : Container, IStateful { public float FinalPosition; public Wave() { - RelativeSizeAxes = Axes.Both; - Size = new Vector2(1.5f); + RelativeSizeAxes = Axes.X; + Width = 1.5f; Masking = true; EdgeEffect = new EdgeEffect { @@ -177,6 +189,15 @@ namespace osu.Game.Overlays }; } + protected override void Update() + { + base.Update(); + + // We can not use RelativeSizeAxes for Height, because the height + // of our parent diminishes as the content moves up. + Height = Parent.Parent.DrawSize.Y * 1.5f; + } + private Visibility state; public Visibility State { @@ -188,7 +209,7 @@ namespace osu.Game.Overlays switch (value) { case Visibility.Hidden: - MoveToY(DrawHeight / Height, DISAPPEAR_DURATION, easing_hide); + MoveToY(Parent.Parent.DrawSize.Y, DISAPPEAR_DURATION, easing_hide); break; case Visibility.Visible: MoveToY(FinalPosition, APPEAR_DURATION, easing_show); From 5a83687a27c8c581ee0665e068374733ac99b9be Mon Sep 17 00:00:00 2001 From: DrabWeb Date: Fri, 3 Mar 2017 18:02:31 -0400 Subject: [PATCH 02/11] Small cleanups --- osu.Game/Overlays/Mods/ModSelectOverlay.cs | 6 +----- osu.Game/Overlays/WaveOverlayContainer.cs | 8 -------- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/osu.Game/Overlays/Mods/ModSelectOverlay.cs b/osu.Game/Overlays/Mods/ModSelectOverlay.cs index 0a5d0e49e1..a969d71347 100644 --- a/osu.Game/Overlays/Mods/ModSelectOverlay.cs +++ b/osu.Game/Overlays/Mods/ModSelectOverlay.cs @@ -33,7 +33,7 @@ namespace osu.Game.Overlays.Mods private FillFlowContainer modSectionsContainer; - public Bindable SelectedMods = new Bindable(); + public readonly Bindable SelectedMods = new Bindable(); public readonly Bindable PlayMode = new Bindable(); @@ -95,8 +95,6 @@ namespace osu.Game.Overlays.Mods section.ButtonsContainer.MoveToX(100f, APPEAR_DURATION, EasingTypes.InSine); section.ButtonsContainer.FadeOut(APPEAR_DURATION, EasingTypes.InSine); } - - TriggerFocusLost(); } protected override void PopIn() @@ -112,8 +110,6 @@ namespace osu.Game.Overlays.Mods section.ButtonsContainer.MoveToX(0, button_duration, EasingTypes.OutQuint); section.ButtonsContainer.FadeIn(button_duration, EasingTypes.OutQuint); } - - Schedule(TriggerFocusContention); } public void DeselectAll() diff --git a/osu.Game/Overlays/WaveOverlayContainer.cs b/osu.Game/Overlays/WaveOverlayContainer.cs index 37a939005b..203f678e61 100644 --- a/osu.Game/Overlays/WaveOverlayContainer.cs +++ b/osu.Game/Overlays/WaveOverlayContainer.cs @@ -123,14 +123,6 @@ namespace osu.Game.Overlays RelativeSizeAxes = Axes.Both, Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, - Children = new Drawable[] - { - new Box - { - RelativeSizeAxes = Axes.Both, - Colour = Color4.White.Opacity(50), - }, - }, }); } From 9141d244bf2c75412b3f27a91fdff34b65174c84 Mon Sep 17 00:00:00 2001 From: DrabWeb Date: Fri, 3 Mar 2017 18:05:43 -0400 Subject: [PATCH 03/11] Focus trigger in WaveOverlayContainer --- osu.Game/Overlays/WaveOverlayContainer.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/osu.Game/Overlays/WaveOverlayContainer.cs b/osu.Game/Overlays/WaveOverlayContainer.cs index 203f678e61..fba6244d15 100644 --- a/osu.Game/Overlays/WaveOverlayContainer.cs +++ b/osu.Game/Overlays/WaveOverlayContainer.cs @@ -128,6 +128,8 @@ namespace osu.Game.Overlays protected override void PopIn() { + base.PopIn(); + foreach (var w in wavesContainer.Children) w.State = Visibility.Visible; @@ -137,6 +139,8 @@ namespace osu.Game.Overlays protected override void PopOut() { + base.PopOut(); + contentContainer.FadeOut(DISAPPEAR_DURATION, EasingTypes.In); contentContainer.MoveToY(DrawHeight * 2f, DISAPPEAR_DURATION, EasingTypes.In); From e3c38067594df79d7b76193ceaa65965e11264cf Mon Sep 17 00:00:00 2001 From: TheGui Date: Sat, 4 Mar 2017 04:48:32 -0300 Subject: [PATCH 04/11] Fixed accuracy's counter first value change. --- osu.Game.Modes.Osu/OsuScoreProcessor.cs | 1 + osu.Game/Graphics/UserInterface/PercentageCounter.cs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game.Modes.Osu/OsuScoreProcessor.cs b/osu.Game.Modes.Osu/OsuScoreProcessor.cs index 9493259558..e73db8d901 100644 --- a/osu.Game.Modes.Osu/OsuScoreProcessor.cs +++ b/osu.Game.Modes.Osu/OsuScoreProcessor.cs @@ -12,6 +12,7 @@ namespace osu.Game.Modes.Osu : base(hitObjectCount) { Health.Value = 1; + Accuracy.Value = 1; } protected override void UpdateCalculations(JudgementInfo judgement) diff --git a/osu.Game/Graphics/UserInterface/PercentageCounter.cs b/osu.Game/Graphics/UserInterface/PercentageCounter.cs index ee4066b336..1b29fcc88f 100644 --- a/osu.Game/Graphics/UserInterface/PercentageCounter.cs +++ b/osu.Game/Graphics/UserInterface/PercentageCounter.cs @@ -26,7 +26,7 @@ namespace osu.Game.Graphics.UserInterface public PercentageCounter() { DisplayedCountSpriteText.FixedWidth = true; - Count = 1.0f; + Count = DisplayedCount = 1.0f; } protected override string FormatCount(float count) From a97a7f1024ae204306b21640184a8a0d29253e3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Sat, 4 Mar 2017 08:54:14 +0100 Subject: [PATCH 05/11] No more custom lifetimelist in CarouselContainer --- osu.Game/Beatmaps/Drawables/Panel.cs | 4 - osu.Game/Screens/Select/CarouselContainer.cs | 118 +++++++------------ 2 files changed, 41 insertions(+), 81 deletions(-) diff --git a/osu.Game/Beatmaps/Drawables/Panel.cs b/osu.Game/Beatmaps/Drawables/Panel.cs index 891e86164c..7a37f9cd7f 100644 --- a/osu.Game/Beatmaps/Drawables/Panel.cs +++ b/osu.Game/Beatmaps/Drawables/Panel.cs @@ -18,10 +18,6 @@ namespace osu.Game.Beatmaps.Drawables public override bool RemoveWhenNotAlive => false; - public bool IsOnScreen; - - public override bool IsAlive => IsOnScreen && base.IsAlive; - private Container nestedContainer; protected override Container Content => nestedContainer; diff --git a/osu.Game/Screens/Select/CarouselContainer.cs b/osu.Game/Screens/Select/CarouselContainer.cs index 5d8c11d223..cbf6e1f860 100644 --- a/osu.Game/Screens/Select/CarouselContainer.cs +++ b/osu.Game/Screens/Select/CarouselContainer.cs @@ -16,6 +16,7 @@ using osu.Framework.Input; using OpenTK.Input; using System.Collections; using osu.Framework.MathUtils; +using System.Diagnostics; namespace osu.Game.Screens.Select { @@ -23,73 +24,34 @@ namespace osu.Game.Screens.Select { private Container scrollableContent; private List groups = new List(); + private List panels = new List(); public BeatmapGroup SelectedGroup { get; private set; } public BeatmapPanel SelectedPanel { get; private set; } private List yPositions = new List(); - private CarouselLifetimeList lifetime; public CarouselContainer() { DistanceDecayJump = 0.01; - Add(scrollableContent = new Container(lifetime = new CarouselLifetimeList(DepthComparer)) + Add(scrollableContent = new Container { RelativeSizeAxes = Axes.X, }); } - internal class CarouselLifetimeList : LifetimeList - { - public CarouselLifetimeList(IComparer comparer) - : base(comparer) - { - } - - public int StartIndex; - public int EndIndex; - - public override bool Update(FrameTimeInfo time) - { - bool anyAliveChanged = false; - - //check existing items to make sure they haven't died. - foreach (var item in AliveItems.ToArray()) - { - item.UpdateTime(time); - if (!item.IsAlive) - { - //todo: make this more efficient - int i = IndexOf(item); - anyAliveChanged |= CheckItem(item, ref i); - } - } - - //handle custom range - for (int i = StartIndex; i < EndIndex; i++) - { - var item = this[i]; - item.UpdateTime(time); - anyAliveChanged |= CheckItem(item, ref i); - } - - return anyAliveChanged; - } - } - public void AddGroup(BeatmapGroup group) { group.State = BeatmapGroupState.Collapsed; groups.Add(group); - group.Header.Depth = -scrollableContent.Children.Count(); - scrollableContent.Add(group.Header); - + panels.Add(group.Header); + group.Header.Clock = Clock; foreach (BeatmapPanel panel in group.BeatmapPanels) { - panel.Depth = -scrollableContent.Children.Count(); - scrollableContent.Add(panel); + panels.Add(panel); + panel.Clock = Clock; } computeYPositions(); @@ -107,7 +69,7 @@ namespace osu.Game.Screens.Select private void movePanel(Panel panel, bool advance, bool animated, ref float currentY) { yPositions.Add(currentY); - panel.MoveToY(currentY, animated && (panel.IsOnScreen || panel.State != PanelSelectedState.Hidden) ? 750 : 0, EasingTypes.OutExpo); + panel.MoveToY(currentY, animated && (panel.State != PanelSelectedState.Hidden) ? 750 : 0, EasingTypes.OutExpo); if (advance) currentY += panel.DrawHeight + 5; @@ -194,19 +156,20 @@ namespace osu.Game.Screens.Select public void Sort(FilterControl.SortMode mode) { + List sortedGroups = new List(groups); switch (mode) { case FilterControl.SortMode.Artist: - groups.Sort((x, y) => string.Compare(x.BeatmapSet.Metadata.Artist, y.BeatmapSet.Metadata.Artist)); + sortedGroups.Sort((x, y) => string.Compare(x.BeatmapSet.Metadata.Artist, y.BeatmapSet.Metadata.Artist)); break; case FilterControl.SortMode.Title: - groups.Sort((x, y) => string.Compare(x.BeatmapSet.Metadata.Title, y.BeatmapSet.Metadata.Title)); + sortedGroups.Sort((x, y) => string.Compare(x.BeatmapSet.Metadata.Title, y.BeatmapSet.Metadata.Title)); break; case FilterControl.SortMode.Author: - groups.Sort((x, y) => string.Compare(x.BeatmapSet.Metadata.Author, y.BeatmapSet.Metadata.Author)); + sortedGroups.Sort((x, y) => string.Compare(x.BeatmapSet.Metadata.Author, y.BeatmapSet.Metadata.Author)); break; case FilterControl.SortMode.Difficulty: - groups.Sort((x, y) => + sortedGroups.Sort((x, y) => { float xAverage = 0, yAverage = 0; int counter = 0; @@ -232,20 +195,13 @@ namespace osu.Game.Screens.Select default: throw new NotImplementedException(); } + scrollableContent.Clear(false); - lifetime.Clear(); - foreach (BeatmapGroup group in groups) - { - group.Header.Depth = -scrollableContent.Children.Count(); - scrollableContent.Add(group.Header); - - foreach (BeatmapPanel panel in group.BeatmapPanels) - { - panel.Depth = -scrollableContent.Children.Count(); - scrollableContent.Add(panel); - } - } + panels.Clear(); + groups.Clear(); + foreach (BeatmapGroup group in sortedGroups) + AddGroup(group); } private static float offsetX(float dist, float halfHeight) @@ -286,34 +242,42 @@ namespace osu.Game.Screens.Select { base.Update(); - // Determine which items stopped being on screen for future removal from the lifetimelist. float drawHeight = DrawHeight; - float halfHeight = drawHeight / 2; - foreach (Panel p in lifetime.AliveItems) + // Remove all panels that should no longer be on-screen + scrollableContent.RemoveAll(delegate (Panel p) { float panelPosY = p.Position.Y; - p.IsOnScreen = panelPosY >= Current - p.DrawHeight && panelPosY <= Current + drawHeight; - updatePanel(p, halfHeight); - } + bool remove = panelPosY < Current - p.DrawHeight || panelPosY > Current + drawHeight || !p.IsPresent; + return remove; + }); + + // Find index range of all panels that should be on-screen + Trace.Assert(panels.Count == yPositions.Count); - // Determine range of indices for items that are now definitely on screen to be added - // to the lifetimelist in the future. int firstIndex = yPositions.BinarySearch(Current - Panel.MAX_HEIGHT); if (firstIndex < 0) firstIndex = ~firstIndex; int lastIndex = yPositions.BinarySearch(Current + drawHeight); if (lastIndex < 0) lastIndex = ~lastIndex; - lifetime.StartIndex = firstIndex; - lifetime.EndIndex = lastIndex; - + // Add those panels within the previously found index range that should be displayed. for (int i = firstIndex; i < lastIndex; ++i) { - Panel p = lifetime[i]; - if (p.State != PanelSelectedState.Hidden) - p.IsOnScreen = true; //we don't want to update the on-screen state of hidden pannels as they have incorrect (stacked) y values. - updatePanel(p, halfHeight); + Panel panel = panels[i]; + if (panel.State == PanelSelectedState.Hidden) + continue; + + if (!scrollableContent.Contains(panel)) + { + panel.Depth = i + (panel is BeatmapSetHeader ? 0 : panels.Count); + scrollableContent.Add(panel); + } } + + // Update currently visible panels + float halfHeight = drawHeight / 2; + foreach (Panel p in scrollableContent.Children) + updatePanel(p, halfHeight); } protected override bool OnKeyDown(InputState state, KeyDownEventArgs args) From 9bddd1ed4b5c66265f446a7d5acaf5a640e64a7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Sat, 4 Mar 2017 09:32:39 +0100 Subject: [PATCH 06/11] Fix broken CarouselContainer animations The previous commit broke animations of difficulty panels when selecting beatmaps. This commit fixes these. --- osu-framework | 2 +- osu.Game/Screens/Select/CarouselContainer.cs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/osu-framework b/osu-framework index 798409058a..25e6193625 160000 --- a/osu-framework +++ b/osu-framework @@ -1 +1 @@ -Subproject commit 798409058a421307b5a92aeea4cd60a065f5a0d4 +Subproject commit 25e6193625fbffb4d6fde3f91d85eeb9f85c4504 diff --git a/osu.Game/Screens/Select/CarouselContainer.cs b/osu.Game/Screens/Select/CarouselContainer.cs index cbf6e1f860..4c3914c1d2 100644 --- a/osu.Game/Screens/Select/CarouselContainer.cs +++ b/osu.Game/Screens/Select/CarouselContainer.cs @@ -47,11 +47,11 @@ namespace osu.Game.Screens.Select groups.Add(group); panels.Add(group.Header); - group.Header.Clock = Clock; + group.Header.UpdateClock(Clock); foreach (BeatmapPanel panel in group.BeatmapPanels) { panels.Add(panel); - panel.Clock = Clock; + panel.UpdateClock(Clock); } computeYPositions(); @@ -69,7 +69,7 @@ namespace osu.Game.Screens.Select private void movePanel(Panel panel, bool advance, bool animated, ref float currentY) { yPositions.Add(currentY); - panel.MoveToY(currentY, animated && (panel.State != PanelSelectedState.Hidden) ? 750 : 0, EasingTypes.OutExpo); + panel.MoveToY(currentY, animated ? 750 : 0, EasingTypes.OutExpo); if (advance) currentY += panel.DrawHeight + 5; From aaa1f766af3ab75102c389504c3f9677d263214e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Sat, 4 Mar 2017 09:34:28 +0100 Subject: [PATCH 07/11] Fix beatmap removal --- osu.Game/Screens/Select/CarouselContainer.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/osu.Game/Screens/Select/CarouselContainer.cs b/osu.Game/Screens/Select/CarouselContainer.cs index 4c3914c1d2..5ed3b4d904 100644 --- a/osu.Game/Screens/Select/CarouselContainer.cs +++ b/osu.Game/Screens/Select/CarouselContainer.cs @@ -60,6 +60,9 @@ namespace osu.Game.Screens.Select public void RemoveGroup(BeatmapGroup group) { groups.Remove(group); + foreach (var p in group.BeatmapPanels) + panels.Remove(p); + scrollableContent.Remove(group.Header); scrollableContent.Remove(group.BeatmapPanels); From a2b79de672fe52d8649fa15b0b281430acfbcdbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Sat, 4 Mar 2017 09:34:39 +0100 Subject: [PATCH 08/11] Add comments to CarouselContainer --- osu.Game/Screens/Select/CarouselContainer.cs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/osu.Game/Screens/Select/CarouselContainer.cs b/osu.Game/Screens/Select/CarouselContainer.cs index 5ed3b4d904..f86ee480fd 100644 --- a/osu.Game/Screens/Select/CarouselContainer.cs +++ b/osu.Game/Screens/Select/CarouselContainer.cs @@ -207,6 +207,14 @@ namespace osu.Game.Screens.Select AddGroup(group); } + /// + /// Computes the x-offset of currently visible panels. Makes the carousel appear round. + /// + /// + /// Vertical distance from the center of the carousel container + /// ranging from -1 to 1. + /// + /// Half the height of the carousel container. private static float offsetX(float dist, float halfHeight) { // The radius of the circle the carousel moves on. @@ -270,14 +278,18 @@ namespace osu.Game.Screens.Select if (panel.State == PanelSelectedState.Hidden) continue; + // Only add if we're not already part of the content. if (!scrollableContent.Contains(panel)) { - panel.Depth = i + (panel is BeatmapSetHeader ? 0 : panels.Count); + // Makes sure headers are always _below_ panels, + // and depth flows downward. + panel.Depth = i + (panel is BeatmapSetHeader ? panels.Count : 0); scrollableContent.Add(panel); } } - // Update currently visible panels + // Update externally controlled state of currently visible panels + // (e.g. x-offset and opacity). float halfHeight = drawHeight / 2; foreach (Panel p in scrollableContent.Children) updatePanel(p, halfHeight); From 8f3621ca242019f2a039bb88cc5b68c48694be31 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 4 Mar 2017 22:05:02 +0900 Subject: [PATCH 09/11] Make selectGroup a private method. --- osu.Game/Screens/Select/CarouselContainer.cs | 13 +++++++++---- osu.Game/Screens/Select/PlaySongSelect.cs | 6 +----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/osu.Game/Screens/Select/CarouselContainer.cs b/osu.Game/Screens/Select/CarouselContainer.cs index f86ee480fd..e0f2ed89e3 100644 --- a/osu.Game/Screens/Select/CarouselContainer.cs +++ b/osu.Game/Screens/Select/CarouselContainer.cs @@ -137,14 +137,16 @@ namespace osu.Game.Screens.Select var panel = group.BeatmapPanels.FirstOrDefault(p => p.Beatmap.Equals(beatmap)); if (panel != null) { - SelectGroup(group, panel, animated); + selectGroup(group, panel, animated); return; } } } - public void SelectGroup(BeatmapGroup group, BeatmapPanel panel, bool animated = true) + private void selectGroup(BeatmapGroup group, BeatmapPanel panel, bool animated = true) { + Trace.Assert(group.BeatmapPanels.Contains(panel), @"Selected panel must be in provided group"); + if (SelectedGroup != null && SelectedGroup != group && SelectedGroup.State != BeatmapGroupState.Hidden) SelectedGroup.State = BeatmapGroupState.Collapsed; @@ -334,7 +336,7 @@ namespace osu.Game.Screens.Select if (i >= 0 && i < SelectedGroup.BeatmapPanels.Count) { //changing difficulty panel, not set. - SelectGroup(SelectedGroup, SelectedGroup.BeatmapPanels[i]); + selectGroup(SelectedGroup, SelectedGroup.BeatmapPanels[i]); return; } } @@ -357,11 +359,14 @@ namespace osu.Game.Screens.Select { if (groups.Count < 1) return; + BeatmapGroup group = groups[RNG.Next(groups.Count)]; BeatmapPanel panel = group?.BeatmapPanels.First(); + if (panel == null) return; - SelectGroup(group, panel); + + selectGroup(group, panel); } public IEnumerator GetEnumerator() => groups.GetEnumerator(); diff --git a/osu.Game/Screens/Select/PlaySongSelect.cs b/osu.Game/Screens/Select/PlaySongSelect.cs index 68783f33db..49c80552bd 100644 --- a/osu.Game/Screens/Select/PlaySongSelect.cs +++ b/osu.Game/Screens/Select/PlaySongSelect.cs @@ -403,11 +403,7 @@ namespace osu.Game.Screens.Select if (Beatmap == null || select) carousel.SelectBeatmap(beatmapSet.Beatmaps.First()); else - { - var panel = group.BeatmapPanels.FirstOrDefault(p => p.Beatmap.Equals(Beatmap.BeatmapInfo)); - if (panel != null) - carousel.SelectGroup(group, panel); - } + carousel.SelectBeatmap(Beatmap.BeatmapInfo); })); } From 389635c7ed1da19f4ca61d1cd4e6490788d12eb8 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 4 Mar 2017 22:05:16 +0900 Subject: [PATCH 10/11] Avoid panel state changes when performing a sort. --- osu.Game/Screens/Select/CarouselContainer.cs | 1 - osu.Game/Screens/Select/PlaySongSelect.cs | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Select/CarouselContainer.cs b/osu.Game/Screens/Select/CarouselContainer.cs index e0f2ed89e3..20167d137d 100644 --- a/osu.Game/Screens/Select/CarouselContainer.cs +++ b/osu.Game/Screens/Select/CarouselContainer.cs @@ -43,7 +43,6 @@ namespace osu.Game.Screens.Select public void AddGroup(BeatmapGroup group) { - group.State = BeatmapGroupState.Collapsed; groups.Add(group); panels.Add(group.Header); diff --git a/osu.Game/Screens/Select/PlaySongSelect.cs b/osu.Game/Screens/Select/PlaySongSelect.cs index 49c80552bd..316cc50dae 100644 --- a/osu.Game/Screens/Select/PlaySongSelect.cs +++ b/osu.Game/Screens/Select/PlaySongSelect.cs @@ -396,6 +396,7 @@ namespace osu.Game.Screens.Select { beatmapGroups.Add(group); + group.State = BeatmapGroupState.Collapsed; carousel.AddGroup(group); filterChanged(false, false); From 9fe41fe177ca79dd5ba76bda6d23f0d639cb52e9 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 4 Mar 2017 22:10:56 +0900 Subject: [PATCH 11/11] Update framework. --- osu-framework | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu-framework b/osu-framework index 25e6193625..854977e3fa 160000 --- a/osu-framework +++ b/osu-framework @@ -1 +1 @@ -Subproject commit 25e6193625fbffb4d6fde3f91d85eeb9f85c4504 +Subproject commit 854977e3fa0c41eec7637641ec5fec9ee65d73b9