1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-13 07:43:00 +08:00

Move PresentSkinsImport to OsuGame. Replace switch with if statement

This commit is contained in:
PC 2023-02-14 02:29:50 +03:00
parent 10ab228d76
commit f8f485e4c8
3 changed files with 20 additions and 28 deletions

View File

@ -49,6 +49,7 @@ using osu.Game.Overlays;
using osu.Game.Overlays.BeatmapListing;
using osu.Game.Overlays.Music;
using osu.Game.Overlays.Notifications;
using osu.Game.Overlays.Settings.Sections;
using osu.Game.Overlays.SkinEditor;
using osu.Game.Overlays.Toolbar;
using osu.Game.Overlays.Volume;
@ -60,6 +61,7 @@ using osu.Game.Screens.Menu;
using osu.Game.Screens.Play;
using osu.Game.Screens.Ranking;
using osu.Game.Screens.Select;
using osu.Game.Skinning;
using osu.Game.Updater;
using osu.Game.Users;
using osu.Game.Utils;
@ -501,6 +503,23 @@ namespace osu.Game
/// <param name="version">The build version of the update stream</param>
public void ShowChangelogBuild(string updateStream, string version) => waitForReady(() => changelogOverlay, _ => changelogOverlay.ShowBuild(updateStream, version));
/// <summary>
/// Present ether a skin select if one skin was imported or navigate to the skin selection menu if multiple skins were imported immediately.
/// </summary>
/// <param name="importedSkins">List of imported skins</param>
public void PresentSkins(IEnumerable<Live<SkinInfo>> importedSkins)
{
int importedSkinsCount = importedSkins.Count();
if (importedSkinsCount == 1)
SkinManager.CurrentSkinInfo.Value = importedSkins.Single();
else if (importedSkinsCount > 1)
{
Settings.Show();
Settings.SectionsContainer.ScrollTo(Settings.SectionsContainer.Single(container => container is SkinSection));
}
}
/// <summary>
/// Present a beatmap at song select immediately.
/// The user should have already requested this interactively.
@ -777,6 +796,7 @@ namespace osu.Game
// todo: all archive managers should be able to be looped here.
SkinManager.PostNotification = n => Notifications.Post(n);
SkinManager.PresentImport = PresentSkins;
BeatmapManager.PostNotification = n => Notifications.Post(n);
BeatmapManager.PresentImport = items => PresentBeatmap(items.First().Value);

View File

@ -10,7 +10,6 @@ using JetBrains.Annotations;
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.Framework.Logging;
@ -92,27 +91,6 @@ namespace osu.Game.Overlays.Settings.Sections
skins.SelectRandomSkin();
}
});
skins.PresentSkinsImport += presentSkinsImport;
}
private void presentSkinsImport(IEnumerable<Live<SkinInfo>> importedSkins)
{
SettingsOverlay settings = this.FindClosestParent<SettingsOverlay>();
switch (importedSkins.Count())
{
case 1:
skins.CurrentSkinInfo.Value = importedSkins.Last();
break;
case > 1:
if (settings.State.Value == Visibility.Hidden)
settings.ToggleVisibility();
settings.SectionsContainer.ScrollTo(this);
break;
}
}
private void skinsChanged(IRealmCollection<SkinInfo> sender, ChangeSet changes, Exception error)

View File

@ -44,11 +44,6 @@ namespace osu.Game.Skinning
/// </summary>
public Skin DefaultClassicSkin { get; }
/// <summary>
/// Presents imported skin(s) to a user
/// </summary>
public Action<IEnumerable<Live<SkinInfo>>> PresentSkinsImport { get; set; }
private readonly AudioManager audio;
private readonly Scheduler scheduler;
@ -92,7 +87,6 @@ namespace osu.Game.Skinning
skinImporter = new SkinImporter(storage, realm, this)
{
PostNotification = obj => PostNotification?.Invoke(obj),
PresentImport = skins => PresentSkinsImport?.Invoke(skins),
};
var defaultSkins = new[]