mirror of
https://github.com/osukey/osukey.git
synced 2025-07-01 16:29:58 +09:00
Remove unused classes and replace overlay in game
This commit is contained in:
@ -1,215 +0,0 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using NUnit.Framework;
|
|
||||||
using osu.Game.Beatmaps;
|
|
||||||
using osu.Game.Overlays;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Online
|
|
||||||
{
|
|
||||||
[TestFixture]
|
|
||||||
public class TestSceneDirectOverlay : OsuTestScene
|
|
||||||
{
|
|
||||||
private DirectOverlay direct;
|
|
||||||
|
|
||||||
protected override bool UseOnlineAPI => true;
|
|
||||||
|
|
||||||
protected override void LoadComplete()
|
|
||||||
{
|
|
||||||
base.LoadComplete();
|
|
||||||
|
|
||||||
Add(direct = new DirectOverlay());
|
|
||||||
newBeatmaps();
|
|
||||||
|
|
||||||
AddStep(@"toggle", direct.ToggleVisibility);
|
|
||||||
AddStep(@"result counts", () => direct.ResultAmounts = new DirectOverlay.ResultCounts(1, 4, 13));
|
|
||||||
AddStep(@"trigger disabled", () => Ruleset.Disabled = !Ruleset.Disabled);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void newBeatmaps()
|
|
||||||
{
|
|
||||||
direct.BeatmapSets = new[]
|
|
||||||
{
|
|
||||||
new BeatmapSetInfo
|
|
||||||
{
|
|
||||||
OnlineBeatmapSetID = 578332,
|
|
||||||
Metadata = new BeatmapMetadata
|
|
||||||
{
|
|
||||||
Title = @"OrVid",
|
|
||||||
Artist = @"An",
|
|
||||||
AuthorString = @"RLC",
|
|
||||||
Source = @"",
|
|
||||||
Tags = @"acuticnotes an-fillnote revid tear tearvid encrpted encryption axi axivid quad her hervid recoll",
|
|
||||||
},
|
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
|
||||||
{
|
|
||||||
Covers = new BeatmapSetOnlineCovers
|
|
||||||
{
|
|
||||||
Card = @"https://assets.ppy.sh/beatmaps/578332/covers/card.jpg?1494591390",
|
|
||||||
Cover = @"https://assets.ppy.sh/beatmaps/578332/covers/cover.jpg?1494591390",
|
|
||||||
},
|
|
||||||
Preview = @"https://b.ppy.sh/preview/578332.mp3",
|
|
||||||
PlayCount = 97,
|
|
||||||
FavouriteCount = 72,
|
|
||||||
},
|
|
||||||
Beatmaps = new List<BeatmapInfo>
|
|
||||||
{
|
|
||||||
new BeatmapInfo
|
|
||||||
{
|
|
||||||
Ruleset = Ruleset.Value,
|
|
||||||
StarDifficulty = 5.35f,
|
|
||||||
Metadata = new BeatmapMetadata(),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
new BeatmapSetInfo
|
|
||||||
{
|
|
||||||
OnlineBeatmapSetID = 599627,
|
|
||||||
Metadata = new BeatmapMetadata
|
|
||||||
{
|
|
||||||
Title = @"tiny lamp",
|
|
||||||
Artist = @"fhana",
|
|
||||||
AuthorString = @"Sotarks",
|
|
||||||
Source = @"ぎんぎつね",
|
|
||||||
Tags = @"lantis junichi sato yuxuki waga kevin mitsunaga towana gingitsune opening op full ver version kalibe collab collaboration",
|
|
||||||
},
|
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
|
||||||
{
|
|
||||||
Covers = new BeatmapSetOnlineCovers
|
|
||||||
{
|
|
||||||
Card = @"https://assets.ppy.sh/beatmaps/599627/covers/card.jpg?1494539318",
|
|
||||||
Cover = @"https://assets.ppy.sh/beatmaps/599627/covers/cover.jpg?1494539318",
|
|
||||||
},
|
|
||||||
Preview = @"https//b.ppy.sh/preview/599627.mp3",
|
|
||||||
PlayCount = 3082,
|
|
||||||
FavouriteCount = 14,
|
|
||||||
},
|
|
||||||
Beatmaps = new List<BeatmapInfo>
|
|
||||||
{
|
|
||||||
new BeatmapInfo
|
|
||||||
{
|
|
||||||
Ruleset = Ruleset.Value,
|
|
||||||
StarDifficulty = 5.81f,
|
|
||||||
Metadata = new BeatmapMetadata(),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
new BeatmapSetInfo
|
|
||||||
{
|
|
||||||
OnlineBeatmapSetID = 513268,
|
|
||||||
Metadata = new BeatmapMetadata
|
|
||||||
{
|
|
||||||
Title = @"At Gwanghwamun",
|
|
||||||
Artist = @"KYUHYUN",
|
|
||||||
AuthorString = @"Cerulean Veyron",
|
|
||||||
Source = @"",
|
|
||||||
Tags = @"soul ballad kh super junior sj suju 슈퍼주니어 kt뮤직 sm엔터테인먼트 s.m.entertainment kt music 1st mini album ep",
|
|
||||||
},
|
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
|
||||||
{
|
|
||||||
Covers = new BeatmapSetOnlineCovers
|
|
||||||
{
|
|
||||||
Card = @"https://assets.ppy.sh/beatmaps/513268/covers/card.jpg?1494502863",
|
|
||||||
Cover = @"https://assets.ppy.sh/beatmaps/513268/covers/cover.jpg?1494502863",
|
|
||||||
},
|
|
||||||
Preview = @"https//b.ppy.sh/preview/513268.mp3",
|
|
||||||
PlayCount = 2762,
|
|
||||||
FavouriteCount = 15,
|
|
||||||
},
|
|
||||||
Beatmaps = new List<BeatmapInfo>
|
|
||||||
{
|
|
||||||
new BeatmapInfo
|
|
||||||
{
|
|
||||||
Ruleset = Ruleset.Value,
|
|
||||||
StarDifficulty = 0.9f,
|
|
||||||
Metadata = new BeatmapMetadata(),
|
|
||||||
},
|
|
||||||
new BeatmapInfo
|
|
||||||
{
|
|
||||||
Ruleset = Ruleset.Value,
|
|
||||||
StarDifficulty = 1.1f,
|
|
||||||
},
|
|
||||||
new BeatmapInfo
|
|
||||||
{
|
|
||||||
Ruleset = Ruleset.Value,
|
|
||||||
StarDifficulty = 2.02f,
|
|
||||||
},
|
|
||||||
new BeatmapInfo
|
|
||||||
{
|
|
||||||
Ruleset = Ruleset.Value,
|
|
||||||
StarDifficulty = 3.49f,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
new BeatmapSetInfo
|
|
||||||
{
|
|
||||||
OnlineBeatmapSetID = 586841,
|
|
||||||
Metadata = new BeatmapMetadata
|
|
||||||
{
|
|
||||||
Title = @"RHAPSODY OF BLUE SKY",
|
|
||||||
Artist = @"fhana",
|
|
||||||
AuthorString = @"[Kamiya]",
|
|
||||||
Source = @"小林さんちのメイドラゴン",
|
|
||||||
Tags = @"kobayashi san chi no maidragon aozora no opening anime maid dragon oblivion karen dynamix imoutosan pata-mon gxytcgxytc",
|
|
||||||
},
|
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
|
||||||
{
|
|
||||||
Covers = new BeatmapSetOnlineCovers
|
|
||||||
{
|
|
||||||
Card = @"https://assets.ppy.sh/beatmaps/586841/covers/card.jpg?1494052741",
|
|
||||||
Cover = @"https://assets.ppy.sh/beatmaps/586841/covers/cover.jpg?1494052741",
|
|
||||||
},
|
|
||||||
Preview = @"https//b.ppy.sh/preview/586841.mp3",
|
|
||||||
PlayCount = 62317,
|
|
||||||
FavouriteCount = 161,
|
|
||||||
},
|
|
||||||
Beatmaps = new List<BeatmapInfo>
|
|
||||||
{
|
|
||||||
new BeatmapInfo
|
|
||||||
{
|
|
||||||
Ruleset = Ruleset.Value,
|
|
||||||
StarDifficulty = 1.26f,
|
|
||||||
Metadata = new BeatmapMetadata(),
|
|
||||||
},
|
|
||||||
new BeatmapInfo
|
|
||||||
{
|
|
||||||
Ruleset = Ruleset.Value,
|
|
||||||
StarDifficulty = 2.01f,
|
|
||||||
},
|
|
||||||
new BeatmapInfo
|
|
||||||
{
|
|
||||||
Ruleset = Ruleset.Value,
|
|
||||||
StarDifficulty = 2.87f,
|
|
||||||
},
|
|
||||||
new BeatmapInfo
|
|
||||||
{
|
|
||||||
Ruleset = Ruleset.Value,
|
|
||||||
StarDifficulty = 3.76f,
|
|
||||||
},
|
|
||||||
new BeatmapInfo
|
|
||||||
{
|
|
||||||
Ruleset = Ruleset.Value,
|
|
||||||
StarDifficulty = 3.93f,
|
|
||||||
},
|
|
||||||
new BeatmapInfo
|
|
||||||
{
|
|
||||||
Ruleset = Ruleset.Value,
|
|
||||||
StarDifficulty = 4.37f,
|
|
||||||
},
|
|
||||||
new BeatmapInfo
|
|
||||||
{
|
|
||||||
Ruleset = Ruleset.Value,
|
|
||||||
StarDifficulty = 5.13f,
|
|
||||||
},
|
|
||||||
new BeatmapInfo
|
|
||||||
{
|
|
||||||
Ruleset = Ruleset.Value,
|
|
||||||
StarDifficulty = 5.42f,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -47,8 +47,15 @@ namespace osu.Game.Tests.Visual
|
|||||||
typeof(IdleTracker),
|
typeof(IdleTracker),
|
||||||
typeof(OnScreenDisplay),
|
typeof(OnScreenDisplay),
|
||||||
typeof(NotificationOverlay),
|
typeof(NotificationOverlay),
|
||||||
|
<<<<<<< HEAD
|
||||||
typeof(DirectOverlay),
|
typeof(DirectOverlay),
|
||||||
typeof(DashboardOverlay),
|
typeof(DashboardOverlay),
|
||||||
|
||||||| parent of 96a3a08a9... Remove unused classes and replace overlay in game
|
||||||
|
typeof(DirectOverlay),
|
||||||
|
typeof(SocialOverlay),
|
||||||
|
=======
|
||||||
|
typeof(SocialOverlay),
|
||||||
|
>>>>>>> 96a3a08a9... Remove unused classes and replace overlay in game
|
||||||
typeof(ChannelManager),
|
typeof(ChannelManager),
|
||||||
typeof(ChatOverlay),
|
typeof(ChatOverlay),
|
||||||
typeof(SettingsOverlay),
|
typeof(SettingsOverlay),
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
using osu.Framework.IO.Network;
|
using osu.Framework.IO.Network;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Overlays.BeatmapListing;
|
using osu.Game.Overlays.BeatmapListing;
|
||||||
using osu.Game.Overlays.Direct;
|
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
|
|
||||||
namespace osu.Game.Online.API.Requests
|
namespace osu.Game.Online.API.Requests
|
||||||
@ -13,7 +12,7 @@ namespace osu.Game.Online.API.Requests
|
|||||||
{
|
{
|
||||||
public SearchCategory SearchCategory { get; set; }
|
public SearchCategory SearchCategory { get; set; }
|
||||||
|
|
||||||
public DirectSortCriteria SortCriteria { get; set; }
|
public SortCriteria SortCriteria { get; set; }
|
||||||
|
|
||||||
public SortDirection SortDirection { get; set; }
|
public SortDirection SortDirection { get; set; }
|
||||||
|
|
||||||
@ -32,7 +31,7 @@ namespace osu.Game.Online.API.Requests
|
|||||||
this.ruleset = ruleset;
|
this.ruleset = ruleset;
|
||||||
|
|
||||||
SearchCategory = SearchCategory.Any;
|
SearchCategory = SearchCategory.Any;
|
||||||
SortCriteria = DirectSortCriteria.Ranked;
|
SortCriteria = SortCriteria.Ranked;
|
||||||
SortDirection = SortDirection.Descending;
|
SortDirection = SortDirection.Descending;
|
||||||
Genre = SearchGenre.Any;
|
Genre = SearchGenre.Any;
|
||||||
Language = SearchLanguage.Any;
|
Language = SearchLanguage.Any;
|
||||||
|
@ -65,7 +65,7 @@ namespace osu.Game
|
|||||||
|
|
||||||
private NowPlayingOverlay nowPlaying;
|
private NowPlayingOverlay nowPlaying;
|
||||||
|
|
||||||
private DirectOverlay direct;
|
private BeatmapListingOverlay beatmapListing;
|
||||||
|
|
||||||
private DashboardOverlay dashboard;
|
private DashboardOverlay dashboard;
|
||||||
|
|
||||||
@ -610,7 +610,7 @@ namespace osu.Game
|
|||||||
loadComponentSingleFile(screenshotManager, Add);
|
loadComponentSingleFile(screenshotManager, Add);
|
||||||
|
|
||||||
//overlay elements
|
//overlay elements
|
||||||
loadComponentSingleFile(direct = new DirectOverlay(), overlayContent.Add, true);
|
loadComponentSingleFile(beatmapListing = new BeatmapListingOverlay(), overlayContent.Add, true);
|
||||||
loadComponentSingleFile(dashboard = new DashboardOverlay(), overlayContent.Add, true);
|
loadComponentSingleFile(dashboard = new DashboardOverlay(), overlayContent.Add, true);
|
||||||
var rankingsOverlay = loadComponentSingleFile(new RankingsOverlay(), overlayContent.Add, true);
|
var rankingsOverlay = loadComponentSingleFile(new RankingsOverlay(), overlayContent.Add, true);
|
||||||
loadComponentSingleFile(channelManager = new ChannelManager(), AddInternal, true);
|
loadComponentSingleFile(channelManager = new ChannelManager(), AddInternal, true);
|
||||||
@ -670,7 +670,7 @@ namespace osu.Game
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ensure only one of these overlays are open at once.
|
// ensure only one of these overlays are open at once.
|
||||||
var singleDisplayOverlays = new OverlayContainer[] { chatOverlay, dashboard, direct, changelogOverlay, rankingsOverlay };
|
var singleDisplayOverlays = new OverlayContainer[] { chatOverlay, dashboard, beatmapListing, changelogOverlay, rankingsOverlay };
|
||||||
|
|
||||||
foreach (var overlay in singleDisplayOverlays)
|
foreach (var overlay in singleDisplayOverlays)
|
||||||
{
|
{
|
||||||
@ -865,7 +865,7 @@ namespace osu.Game
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
case GlobalAction.ToggleDirect:
|
case GlobalAction.ToggleDirect:
|
||||||
direct.ToggleVisibility();
|
beatmapListing.ToggleVisibility();
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case GlobalAction.ToggleGameplayMouseButtons:
|
case GlobalAction.ToggleGameplayMouseButtons:
|
||||||
|
@ -14,7 +14,6 @@ using osu.Framework.Threading;
|
|||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Online.API;
|
using osu.Game.Online.API;
|
||||||
using osu.Game.Online.API.Requests;
|
using osu.Game.Online.API.Requests;
|
||||||
using osu.Game.Overlays.Direct;
|
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
using osuTK;
|
using osuTK;
|
||||||
using osuTK.Graphics;
|
using osuTK.Graphics;
|
||||||
@ -101,7 +100,7 @@ namespace osu.Game.Overlays.BeatmapListing
|
|||||||
|
|
||||||
searchControl.Query.BindValueChanged(query =>
|
searchControl.Query.BindValueChanged(query =>
|
||||||
{
|
{
|
||||||
sortCriteria.Value = string.IsNullOrEmpty(query.NewValue) ? DirectSortCriteria.Ranked : DirectSortCriteria.Relevance;
|
sortCriteria.Value = string.IsNullOrEmpty(query.NewValue) ? SortCriteria.Ranked : SortCriteria.Relevance;
|
||||||
sortDirection.Value = SortDirection.Descending;
|
sortDirection.Value = SortDirection.Descending;
|
||||||
queueUpdateSearch(true);
|
queueUpdateSearch(true);
|
||||||
});
|
});
|
||||||
|
@ -8,17 +8,16 @@ using osu.Framework.Graphics;
|
|||||||
using osuTK.Graphics;
|
using osuTK.Graphics;
|
||||||
using osuTK;
|
using osuTK;
|
||||||
using osu.Framework.Input.Events;
|
using osu.Framework.Input.Events;
|
||||||
using osu.Game.Overlays.Direct;
|
|
||||||
|
|
||||||
namespace osu.Game.Overlays.BeatmapListing
|
namespace osu.Game.Overlays.BeatmapListing
|
||||||
{
|
{
|
||||||
public class BeatmapListingSortTabControl : OverlaySortTabControl<DirectSortCriteria>
|
public class BeatmapListingSortTabControl : OverlaySortTabControl<SortCriteria>
|
||||||
{
|
{
|
||||||
public readonly Bindable<SortDirection> SortDirection = new Bindable<SortDirection>(Overlays.SortDirection.Descending);
|
public readonly Bindable<SortDirection> SortDirection = new Bindable<SortDirection>(Overlays.SortDirection.Descending);
|
||||||
|
|
||||||
public BeatmapListingSortTabControl()
|
public BeatmapListingSortTabControl()
|
||||||
{
|
{
|
||||||
Current.Value = DirectSortCriteria.Ranked;
|
Current.Value = SortCriteria.Ranked;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override SortTabControl CreateControl() => new BeatmapSortTabControl
|
protected override SortTabControl CreateControl() => new BeatmapSortTabControl
|
||||||
@ -30,7 +29,7 @@ namespace osu.Game.Overlays.BeatmapListing
|
|||||||
{
|
{
|
||||||
public readonly Bindable<SortDirection> SortDirection = new Bindable<SortDirection>();
|
public readonly Bindable<SortDirection> SortDirection = new Bindable<SortDirection>();
|
||||||
|
|
||||||
protected override TabItem<DirectSortCriteria> CreateTabItem(DirectSortCriteria value) => new BeatmapSortTabItem(value)
|
protected override TabItem<SortCriteria> CreateTabItem(SortCriteria value) => new BeatmapSortTabItem(value)
|
||||||
{
|
{
|
||||||
SortDirection = { BindTarget = SortDirection }
|
SortDirection = { BindTarget = SortDirection }
|
||||||
};
|
};
|
||||||
@ -40,12 +39,12 @@ namespace osu.Game.Overlays.BeatmapListing
|
|||||||
{
|
{
|
||||||
public readonly Bindable<SortDirection> SortDirection = new Bindable<SortDirection>();
|
public readonly Bindable<SortDirection> SortDirection = new Bindable<SortDirection>();
|
||||||
|
|
||||||
public BeatmapSortTabItem(DirectSortCriteria value)
|
public BeatmapSortTabItem(SortCriteria value)
|
||||||
: base(value)
|
: base(value)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override TabButton CreateTabButton(DirectSortCriteria value) => new BeatmapTabButton(value)
|
protected override TabButton CreateTabButton(SortCriteria value) => new BeatmapTabButton(value)
|
||||||
{
|
{
|
||||||
Active = { BindTarget = Active },
|
Active = { BindTarget = Active },
|
||||||
SortDirection = { BindTarget = SortDirection }
|
SortDirection = { BindTarget = SortDirection }
|
||||||
@ -67,7 +66,7 @@ namespace osu.Game.Overlays.BeatmapListing
|
|||||||
|
|
||||||
private readonly SpriteIcon icon;
|
private readonly SpriteIcon icon;
|
||||||
|
|
||||||
public BeatmapTabButton(DirectSortCriteria value)
|
public BeatmapTabButton(SortCriteria value)
|
||||||
: base(value)
|
: base(value)
|
||||||
{
|
{
|
||||||
Add(icon = new SpriteIcon
|
Add(icon = new SpriteIcon
|
||||||
|
17
osu.Game/Overlays/BeatmapListing/SortCriteria.cs
Normal file
17
osu.Game/Overlays/BeatmapListing/SortCriteria.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||||
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
|
namespace osu.Game.Overlays.BeatmapListing
|
||||||
|
{
|
||||||
|
public enum SortCriteria
|
||||||
|
{
|
||||||
|
Title,
|
||||||
|
Artist,
|
||||||
|
Difficulty,
|
||||||
|
Ranked,
|
||||||
|
Rating,
|
||||||
|
Plays,
|
||||||
|
Favourites,
|
||||||
|
Relevance
|
||||||
|
}
|
||||||
|
}
|
@ -1,93 +0,0 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
|
||||||
|
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Framework.Graphics.Containers;
|
|
||||||
using osu.Framework.Graphics.UserInterface;
|
|
||||||
using osu.Framework.Input.Events;
|
|
||||||
using osu.Game.Graphics.Containers;
|
|
||||||
using osu.Game.Graphics.UserInterface;
|
|
||||||
using osu.Game.Rulesets;
|
|
||||||
using osuTK;
|
|
||||||
using osuTK.Graphics;
|
|
||||||
|
|
||||||
namespace osu.Game.Overlays.Direct
|
|
||||||
{
|
|
||||||
public class DirectRulesetSelector : RulesetSelector
|
|
||||||
{
|
|
||||||
public override bool HandleNonPositionalInput => !Current.Disabled && base.HandleNonPositionalInput;
|
|
||||||
|
|
||||||
public override bool HandlePositionalInput => !Current.Disabled && base.HandlePositionalInput;
|
|
||||||
|
|
||||||
public override bool PropagatePositionalInputSubTree => !Current.Disabled && base.PropagatePositionalInputSubTree;
|
|
||||||
|
|
||||||
public DirectRulesetSelector()
|
|
||||||
{
|
|
||||||
TabContainer.Masking = false;
|
|
||||||
TabContainer.Spacing = new Vector2(10, 0);
|
|
||||||
AutoSizeAxes = Axes.Both;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void LoadComplete()
|
|
||||||
{
|
|
||||||
base.LoadComplete();
|
|
||||||
|
|
||||||
Current.BindDisabledChanged(value => SelectedTab.FadeColour(value ? Color4.DarkGray : Color4.White, 200, Easing.OutQuint), true);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override TabItem<RulesetInfo> CreateTabItem(RulesetInfo value) => new DirectRulesetTabItem(value);
|
|
||||||
|
|
||||||
protected override TabFillFlowContainer CreateTabFlow() => new TabFillFlowContainer
|
|
||||||
{
|
|
||||||
Direction = FillDirection.Horizontal,
|
|
||||||
AutoSizeAxes = Axes.Both,
|
|
||||||
};
|
|
||||||
|
|
||||||
private class DirectRulesetTabItem : TabItem<RulesetInfo>
|
|
||||||
{
|
|
||||||
private readonly ConstrainedIconContainer iconContainer;
|
|
||||||
|
|
||||||
public DirectRulesetTabItem(RulesetInfo value)
|
|
||||||
: base(value)
|
|
||||||
{
|
|
||||||
AutoSizeAxes = Axes.Both;
|
|
||||||
|
|
||||||
Children = new Drawable[]
|
|
||||||
{
|
|
||||||
iconContainer = new ConstrainedIconContainer
|
|
||||||
{
|
|
||||||
Icon = value.CreateInstance().CreateIcon(),
|
|
||||||
Size = new Vector2(32),
|
|
||||||
},
|
|
||||||
new HoverClickSounds()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void LoadComplete()
|
|
||||||
{
|
|
||||||
base.LoadComplete();
|
|
||||||
|
|
||||||
updateState();
|
|
||||||
}
|
|
||||||
|
|
||||||
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();
|
|
||||||
|
|
||||||
private void updateState() => iconContainer.FadeColour(IsHovered || Active.Value ? Color4.White : Color4.Gray, 120, Easing.InQuad);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,47 +0,0 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
|
||||||
|
|
||||||
using osu.Framework.Allocation;
|
|
||||||
using osu.Framework.Bindables;
|
|
||||||
using osu.Framework.Extensions.Color4Extensions;
|
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Game.Graphics;
|
|
||||||
using osu.Game.Overlays.BeatmapListing;
|
|
||||||
using osu.Game.Overlays.SearchableList;
|
|
||||||
using osu.Game.Rulesets;
|
|
||||||
using osuTK.Graphics;
|
|
||||||
|
|
||||||
namespace osu.Game.Overlays.Direct
|
|
||||||
{
|
|
||||||
public class FilterControl : SearchableListFilterControl<DirectSortCriteria, SearchCategory>
|
|
||||||
{
|
|
||||||
private DirectRulesetSelector rulesetSelector;
|
|
||||||
|
|
||||||
protected override Color4 BackgroundColour => Color4Extensions.FromHex(@"384552");
|
|
||||||
protected override DirectSortCriteria DefaultTab => DirectSortCriteria.Ranked;
|
|
||||||
protected override SearchCategory DefaultCategory => SearchCategory.Leaderboard;
|
|
||||||
|
|
||||||
protected override Drawable CreateSupplementaryControls() => rulesetSelector = new DirectRulesetSelector();
|
|
||||||
|
|
||||||
public Bindable<RulesetInfo> Ruleset => rulesetSelector.Current;
|
|
||||||
|
|
||||||
[BackgroundDependencyLoader(true)]
|
|
||||||
private void load(OsuColour colours, Bindable<RulesetInfo> ruleset)
|
|
||||||
{
|
|
||||||
DisplayStyleControl.Dropdown.AccentColour = colours.BlueDark;
|
|
||||||
rulesetSelector.Current.BindTo(ruleset);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum DirectSortCriteria
|
|
||||||
{
|
|
||||||
Title,
|
|
||||||
Artist,
|
|
||||||
Difficulty,
|
|
||||||
Ranked,
|
|
||||||
Rating,
|
|
||||||
Plays,
|
|
||||||
Favourites,
|
|
||||||
Relevance,
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,43 +0,0 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
|
||||||
|
|
||||||
using System.ComponentModel;
|
|
||||||
using osu.Framework.Extensions.Color4Extensions;
|
|
||||||
using osuTK.Graphics;
|
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Framework.Graphics.Sprites;
|
|
||||||
using osu.Game.Graphics;
|
|
||||||
using osu.Game.Graphics.Sprites;
|
|
||||||
using osu.Game.Overlays.SearchableList;
|
|
||||||
|
|
||||||
namespace osu.Game.Overlays.Direct
|
|
||||||
{
|
|
||||||
public class Header : SearchableListHeader<DirectTab>
|
|
||||||
{
|
|
||||||
protected override Color4 BackgroundColour => Color4Extensions.FromHex(@"252f3a");
|
|
||||||
|
|
||||||
protected override DirectTab DefaultTab => DirectTab.Search;
|
|
||||||
protected override Drawable CreateHeaderText() => new OsuSpriteText { Text = @"osu!direct", Font = OsuFont.GetFont(size: 25) };
|
|
||||||
protected override IconUsage Icon => OsuIcon.ChevronDownCircle;
|
|
||||||
|
|
||||||
public Header()
|
|
||||||
{
|
|
||||||
Tabs.Current.Value = DirectTab.NewestMaps;
|
|
||||||
Tabs.Current.TriggerChange();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum DirectTab
|
|
||||||
{
|
|
||||||
Search,
|
|
||||||
|
|
||||||
[Description("Newest Maps")]
|
|
||||||
NewestMaps = DirectSortCriteria.Ranked,
|
|
||||||
|
|
||||||
[Description("Top Rated")]
|
|
||||||
TopRated = DirectSortCriteria.Rating,
|
|
||||||
|
|
||||||
[Description("Most Played")]
|
|
||||||
MostPlayed = DirectSortCriteria.Plays,
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,299 +0,0 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Humanizer;
|
|
||||||
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.Threading;
|
|
||||||
using osu.Game.Audio;
|
|
||||||
using osu.Game.Beatmaps;
|
|
||||||
using osu.Game.Graphics;
|
|
||||||
using osu.Game.Graphics.Sprites;
|
|
||||||
using osu.Game.Online.API.Requests;
|
|
||||||
using osu.Game.Overlays.BeatmapListing;
|
|
||||||
using osu.Game.Overlays.Direct;
|
|
||||||
using osu.Game.Overlays.SearchableList;
|
|
||||||
using osu.Game.Rulesets;
|
|
||||||
using osuTK;
|
|
||||||
using osuTK.Graphics;
|
|
||||||
|
|
||||||
namespace osu.Game.Overlays
|
|
||||||
{
|
|
||||||
public class DirectOverlay : SearchableListOverlay<DirectTab, DirectSortCriteria, SearchCategory>
|
|
||||||
{
|
|
||||||
private const float panel_padding = 10f;
|
|
||||||
|
|
||||||
[Resolved]
|
|
||||||
private RulesetStore rulesets { get; set; }
|
|
||||||
|
|
||||||
private readonly FillFlowContainer resultCountsContainer;
|
|
||||||
private readonly OsuSpriteText resultCountsText;
|
|
||||||
private FillFlowContainer<DirectPanel> panels;
|
|
||||||
|
|
||||||
protected override Color4 BackgroundColour => Color4Extensions.FromHex(@"485e74");
|
|
||||||
protected override Color4 TrianglesColourLight => Color4Extensions.FromHex(@"465b71");
|
|
||||||
protected override Color4 TrianglesColourDark => Color4Extensions.FromHex(@"3f5265");
|
|
||||||
|
|
||||||
protected override SearchableListHeader<DirectTab> CreateHeader() => new Header();
|
|
||||||
protected override SearchableListFilterControl<DirectSortCriteria, SearchCategory> CreateFilterControl() => new FilterControl();
|
|
||||||
|
|
||||||
private IEnumerable<BeatmapSetInfo> beatmapSets;
|
|
||||||
|
|
||||||
public IEnumerable<BeatmapSetInfo> BeatmapSets
|
|
||||||
{
|
|
||||||
get => beatmapSets;
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (ReferenceEquals(beatmapSets, value)) return;
|
|
||||||
|
|
||||||
beatmapSets = value?.ToList();
|
|
||||||
|
|
||||||
if (beatmapSets == null) return;
|
|
||||||
|
|
||||||
var artists = new List<string>();
|
|
||||||
var songs = new List<string>();
|
|
||||||
var tags = new List<string>();
|
|
||||||
|
|
||||||
foreach (var s in beatmapSets)
|
|
||||||
{
|
|
||||||
artists.Add(s.Metadata.Artist);
|
|
||||||
songs.Add(s.Metadata.Title);
|
|
||||||
tags.AddRange(s.Metadata.Tags.Split(' '));
|
|
||||||
}
|
|
||||||
|
|
||||||
ResultAmounts = new ResultCounts(distinctCount(artists), distinctCount(songs), distinctCount(tags));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private ResultCounts resultAmounts;
|
|
||||||
|
|
||||||
public ResultCounts ResultAmounts
|
|
||||||
{
|
|
||||||
get => resultAmounts;
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (value == ResultAmounts) return;
|
|
||||||
|
|
||||||
resultAmounts = value;
|
|
||||||
|
|
||||||
updateResultCounts();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public DirectOverlay()
|
|
||||||
: base(OverlayColourScheme.Blue)
|
|
||||||
{
|
|
||||||
ScrollFlow.Children = new Drawable[]
|
|
||||||
{
|
|
||||||
resultCountsContainer = new FillFlowContainer
|
|
||||||
{
|
|
||||||
AutoSizeAxes = Axes.Both,
|
|
||||||
Direction = FillDirection.Horizontal,
|
|
||||||
Margin = new MarginPadding { Top = 5 },
|
|
||||||
Children = new Drawable[]
|
|
||||||
{
|
|
||||||
new OsuSpriteText
|
|
||||||
{
|
|
||||||
Text = "Found ",
|
|
||||||
Font = OsuFont.GetFont(size: 15)
|
|
||||||
},
|
|
||||||
resultCountsText = new OsuSpriteText
|
|
||||||
{
|
|
||||||
Font = OsuFont.GetFont(size: 15, weight: FontWeight.Bold)
|
|
||||||
},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
Filter.Search.Current.ValueChanged += text =>
|
|
||||||
{
|
|
||||||
if (!string.IsNullOrEmpty(text.NewValue))
|
|
||||||
{
|
|
||||||
Header.Tabs.Current.Value = DirectTab.Search;
|
|
||||||
|
|
||||||
if (Filter.Tabs.Current.Value == DirectSortCriteria.Ranked)
|
|
||||||
Filter.Tabs.Current.Value = DirectSortCriteria.Relevance;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Header.Tabs.Current.Value = DirectTab.NewestMaps;
|
|
||||||
|
|
||||||
if (Filter.Tabs.Current.Value == DirectSortCriteria.Relevance)
|
|
||||||
Filter.Tabs.Current.Value = DirectSortCriteria.Ranked;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
((FilterControl)Filter).Ruleset.ValueChanged += _ => queueUpdateSearch();
|
|
||||||
Filter.DisplayStyleControl.DisplayStyle.ValueChanged += style => recreatePanels(style.NewValue);
|
|
||||||
Filter.DisplayStyleControl.Dropdown.Current.ValueChanged += _ => queueUpdateSearch();
|
|
||||||
|
|
||||||
Header.Tabs.Current.ValueChanged += tab =>
|
|
||||||
{
|
|
||||||
if (tab.NewValue != DirectTab.Search)
|
|
||||||
{
|
|
||||||
currentQuery.Value = string.Empty;
|
|
||||||
Filter.Tabs.Current.Value = (DirectSortCriteria)Header.Tabs.Current.Value;
|
|
||||||
queueUpdateSearch();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
currentQuery.ValueChanged += text => queueUpdateSearch(!string.IsNullOrEmpty(text.NewValue));
|
|
||||||
|
|
||||||
currentQuery.BindTo(Filter.Search.Current);
|
|
||||||
|
|
||||||
Filter.Tabs.Current.ValueChanged += tab =>
|
|
||||||
{
|
|
||||||
if (Header.Tabs.Current.Value != DirectTab.Search && tab.NewValue != (DirectSortCriteria)Header.Tabs.Current.Value)
|
|
||||||
Header.Tabs.Current.Value = DirectTab.Search;
|
|
||||||
|
|
||||||
queueUpdateSearch();
|
|
||||||
};
|
|
||||||
|
|
||||||
updateResultCounts();
|
|
||||||
}
|
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
|
||||||
private void load(OsuColour colours)
|
|
||||||
{
|
|
||||||
resultCountsContainer.Colour = colours.Yellow;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateResultCounts()
|
|
||||||
{
|
|
||||||
resultCountsContainer.FadeTo(ResultAmounts == null ? 0f : 1f, 200, Easing.OutQuint);
|
|
||||||
if (ResultAmounts == null) return;
|
|
||||||
|
|
||||||
resultCountsText.Text = "Artist".ToQuantity(ResultAmounts.Artists) + ", " +
|
|
||||||
"Song".ToQuantity(ResultAmounts.Songs) + ", " +
|
|
||||||
"Tag".ToQuantity(ResultAmounts.Tags);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void recreatePanels(PanelDisplayStyle displayStyle)
|
|
||||||
{
|
|
||||||
if (panels != null)
|
|
||||||
{
|
|
||||||
panels.FadeOut(200);
|
|
||||||
panels.Expire();
|
|
||||||
panels = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (BeatmapSets == null) return;
|
|
||||||
|
|
||||||
var newPanels = new FillFlowContainer<DirectPanel>
|
|
||||||
{
|
|
||||||
RelativeSizeAxes = Axes.X,
|
|
||||||
AutoSizeAxes = Axes.Y,
|
|
||||||
Spacing = new Vector2(panel_padding),
|
|
||||||
Margin = new MarginPadding { Top = 10 },
|
|
||||||
ChildrenEnumerable = BeatmapSets.Select<BeatmapSetInfo, DirectPanel>(b =>
|
|
||||||
{
|
|
||||||
switch (displayStyle)
|
|
||||||
{
|
|
||||||
case PanelDisplayStyle.Grid:
|
|
||||||
return new DirectGridPanel(b)
|
|
||||||
{
|
|
||||||
Anchor = Anchor.TopCentre,
|
|
||||||
Origin = Anchor.TopCentre,
|
|
||||||
};
|
|
||||||
|
|
||||||
default:
|
|
||||||
return new DirectListPanel(b);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
};
|
|
||||||
|
|
||||||
LoadComponentAsync(newPanels, p =>
|
|
||||||
{
|
|
||||||
if (panels != null) ScrollFlow.Remove(panels);
|
|
||||||
ScrollFlow.Add(panels = newPanels);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void PopIn()
|
|
||||||
{
|
|
||||||
base.PopIn();
|
|
||||||
|
|
||||||
// Queries are allowed to be run only on the first pop-in
|
|
||||||
if (getSetsRequest == null)
|
|
||||||
queueUpdateSearch();
|
|
||||||
}
|
|
||||||
|
|
||||||
private SearchBeatmapSetsRequest getSetsRequest;
|
|
||||||
|
|
||||||
private readonly Bindable<string> currentQuery = new Bindable<string>(string.Empty);
|
|
||||||
|
|
||||||
private ScheduledDelegate queryChangedDebounce;
|
|
||||||
|
|
||||||
[Resolved]
|
|
||||||
private PreviewTrackManager previewTrackManager { get; set; }
|
|
||||||
|
|
||||||
private void queueUpdateSearch(bool queryTextChanged = false)
|
|
||||||
{
|
|
||||||
BeatmapSets = null;
|
|
||||||
ResultAmounts = null;
|
|
||||||
|
|
||||||
getSetsRequest?.Cancel();
|
|
||||||
|
|
||||||
queryChangedDebounce?.Cancel();
|
|
||||||
queryChangedDebounce = Scheduler.AddDelayed(updateSearch, queryTextChanged ? 500 : 100);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateSearch()
|
|
||||||
{
|
|
||||||
if (!IsLoaded)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (State.Value == Visibility.Hidden)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (API == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
previewTrackManager.StopAnyPlaying(this);
|
|
||||||
|
|
||||||
getSetsRequest = new SearchBeatmapSetsRequest(currentQuery.Value, ((FilterControl)Filter).Ruleset.Value)
|
|
||||||
{
|
|
||||||
SearchCategory = Filter.DisplayStyleControl.Dropdown.Current.Value,
|
|
||||||
SortCriteria = Filter.Tabs.Current.Value
|
|
||||||
};
|
|
||||||
|
|
||||||
getSetsRequest.Success += response =>
|
|
||||||
{
|
|
||||||
Task.Run(() =>
|
|
||||||
{
|
|
||||||
var sets = response.BeatmapSets.Select(r => r.ToBeatmapSet(rulesets)).ToList();
|
|
||||||
|
|
||||||
// may not need scheduling; loads async internally.
|
|
||||||
Schedule(() =>
|
|
||||||
{
|
|
||||||
BeatmapSets = sets;
|
|
||||||
recreatePanels(Filter.DisplayStyleControl.DisplayStyle.Value);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
API.Queue(getSetsRequest);
|
|
||||||
}
|
|
||||||
|
|
||||||
private int distinctCount(List<string> list) => list.Distinct().ToArray().Length;
|
|
||||||
|
|
||||||
public class ResultCounts
|
|
||||||
{
|
|
||||||
public readonly int Artists;
|
|
||||||
public readonly int Songs;
|
|
||||||
public readonly int Tags;
|
|
||||||
|
|
||||||
public ResultCounts(int artists, int songs, int tags)
|
|
||||||
{
|
|
||||||
Artists = artists;
|
|
||||||
Songs = songs;
|
|
||||||
Tags = tags;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -239,10 +239,4 @@ namespace osu.Game.Overlays
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum SortDirection
|
|
||||||
{
|
|
||||||
Ascending,
|
|
||||||
Descending
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
11
osu.Game/Overlays/SortDirection.cs
Normal file
11
osu.Game/Overlays/SortDirection.cs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||||
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
|
namespace osu.Game.Overlays
|
||||||
|
{
|
||||||
|
public enum SortDirection
|
||||||
|
{
|
||||||
|
Ascending,
|
||||||
|
Descending
|
||||||
|
}
|
||||||
|
}
|
@ -71,7 +71,7 @@ namespace osu.Game.Overlays.Toolbar
|
|||||||
{
|
{
|
||||||
new ToolbarChangelogButton(),
|
new ToolbarChangelogButton(),
|
||||||
new ToolbarRankingsButton(),
|
new ToolbarRankingsButton(),
|
||||||
new ToolbarDirectButton(),
|
new ToolbarBeatmapListingButton(),
|
||||||
new ToolbarChatButton(),
|
new ToolbarChatButton(),
|
||||||
new ToolbarSocialButton(),
|
new ToolbarSocialButton(),
|
||||||
new ToolbarMusicButton(),
|
new ToolbarMusicButton(),
|
||||||
|
@ -6,17 +6,17 @@ using osu.Game.Graphics;
|
|||||||
|
|
||||||
namespace osu.Game.Overlays.Toolbar
|
namespace osu.Game.Overlays.Toolbar
|
||||||
{
|
{
|
||||||
public class ToolbarDirectButton : ToolbarOverlayToggleButton
|
public class ToolbarBeatmapListingButton : ToolbarOverlayToggleButton
|
||||||
{
|
{
|
||||||
public ToolbarDirectButton()
|
public ToolbarBeatmapListingButton()
|
||||||
{
|
{
|
||||||
SetIcon(OsuIcon.ChevronDownCircle);
|
SetIcon(OsuIcon.ChevronDownCircle);
|
||||||
}
|
}
|
||||||
|
|
||||||
[BackgroundDependencyLoader(true)]
|
[BackgroundDependencyLoader(true)]
|
||||||
private void load(DirectOverlay direct)
|
private void load(BeatmapListingOverlay beatmapListing)
|
||||||
{
|
{
|
||||||
StateContainer = direct;
|
StateContainer = beatmapListing;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -39,7 +39,7 @@ namespace osu.Game.Screens.Menu
|
|||||||
|
|
||||||
public Action OnEdit;
|
public Action OnEdit;
|
||||||
public Action OnExit;
|
public Action OnExit;
|
||||||
public Action OnDirect;
|
public Action OnBeatmapListing;
|
||||||
public Action OnSolo;
|
public Action OnSolo;
|
||||||
public Action OnSettings;
|
public Action OnSettings;
|
||||||
public Action OnMulti;
|
public Action OnMulti;
|
||||||
@ -130,7 +130,7 @@ namespace osu.Game.Screens.Menu
|
|||||||
|
|
||||||
buttonsTopLevel.Add(new Button(@"play", @"button-play-select", OsuIcon.Logo, new Color4(102, 68, 204, 255), () => State = ButtonSystemState.Play, WEDGE_WIDTH, Key.P));
|
buttonsTopLevel.Add(new Button(@"play", @"button-play-select", OsuIcon.Logo, new Color4(102, 68, 204, 255), () => State = ButtonSystemState.Play, WEDGE_WIDTH, Key.P));
|
||||||
buttonsTopLevel.Add(new Button(@"osu!editor", @"button-generic-select", OsuIcon.EditCircle, new Color4(238, 170, 0, 255), () => OnEdit?.Invoke(), 0, Key.E));
|
buttonsTopLevel.Add(new Button(@"osu!editor", @"button-generic-select", OsuIcon.EditCircle, new Color4(238, 170, 0, 255), () => OnEdit?.Invoke(), 0, Key.E));
|
||||||
buttonsTopLevel.Add(new Button(@"osu!direct", @"button-direct-select", OsuIcon.ChevronDownCircle, new Color4(165, 204, 0, 255), () => OnDirect?.Invoke(), 0, Key.D));
|
buttonsTopLevel.Add(new Button(@"osu!direct", @"button-direct-select", OsuIcon.ChevronDownCircle, new Color4(165, 204, 0, 255), () => OnBeatmapListing?.Invoke(), 0, Key.D));
|
||||||
|
|
||||||
if (host.CanExit)
|
if (host.CanExit)
|
||||||
buttonsTopLevel.Add(new Button(@"exit", string.Empty, OsuIcon.CrossCircle, new Color4(238, 51, 153, 255), () => OnExit?.Invoke(), 0, Key.Q));
|
buttonsTopLevel.Add(new Button(@"exit", string.Empty, OsuIcon.CrossCircle, new Color4(238, 51, 153, 255), () => OnExit?.Invoke(), 0, Key.Q));
|
||||||
|
@ -72,7 +72,7 @@ namespace osu.Game.Screens.Menu
|
|||||||
private SongTicker songTicker;
|
private SongTicker songTicker;
|
||||||
|
|
||||||
[BackgroundDependencyLoader(true)]
|
[BackgroundDependencyLoader(true)]
|
||||||
private void load(DirectOverlay direct, SettingsOverlay settings, RankingsOverlay rankings, OsuConfigManager config, SessionStatics statics)
|
private void load(BeatmapListingOverlay beatmapListing, SettingsOverlay settings, RankingsOverlay rankings, OsuConfigManager config, SessionStatics statics)
|
||||||
{
|
{
|
||||||
holdDelay = config.GetBindable<float>(OsuSetting.UIHoldActivationDelay);
|
holdDelay = config.GetBindable<float>(OsuSetting.UIHoldActivationDelay);
|
||||||
loginDisplayed = statics.GetBindable<bool>(Static.LoginOverlayDisplayed);
|
loginDisplayed = statics.GetBindable<bool>(Static.LoginOverlayDisplayed);
|
||||||
@ -133,7 +133,7 @@ namespace osu.Game.Screens.Menu
|
|||||||
};
|
};
|
||||||
|
|
||||||
buttons.OnSettings = () => settings?.ToggleVisibility();
|
buttons.OnSettings = () => settings?.ToggleVisibility();
|
||||||
buttons.OnDirect = () => direct?.ToggleVisibility();
|
buttons.OnBeatmapListing = () => beatmapListing?.ToggleVisibility();
|
||||||
buttons.OnChart = () => rankings?.ShowSpotlights();
|
buttons.OnChart = () => rankings?.ShowSpotlights();
|
||||||
|
|
||||||
LoadComponentAsync(background = new BackgroundScreenDefault());
|
LoadComponentAsync(background = new BackgroundScreenDefault());
|
||||||
|
Reference in New Issue
Block a user