Merge branch 'master' into fixes

This commit is contained in:
Huo Yaoyuan
2017-07-31 17:46:07 +08:00
137 changed files with 1243 additions and 901 deletions

View File

@ -4,7 +4,6 @@
using OpenTK;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Game.Database;
using System;
using System.Collections.Generic;
using System.Linq;
@ -18,6 +17,7 @@ using System.Threading.Tasks;
using osu.Framework.Allocation;
using osu.Framework.Threading;
using osu.Framework.Configuration;
using osu.Game.Beatmaps;
using osu.Game.Graphics.Containers;
namespace osu.Game.Screens.Select
@ -68,7 +68,7 @@ namespace osu.Game.Screens.Select
/// <summary>
/// Required for now unfortunately.
/// </summary>
private BeatmapDatabase database;
private BeatmapManager manager;
private readonly Container<Panel> scrollableContent;
@ -178,6 +178,9 @@ namespace osu.Game.Screens.Select
public void SelectNextRandom()
{
if (groups.Count == 0)
return;
randomSelectedBeatmaps.Push(new KeyValuePair<BeatmapGroup, BeatmapPanel>(selectedGroup, selectedGroup.SelectedPanel));
var visibleGroups = getVisibleGroups();
@ -286,7 +289,7 @@ namespace osu.Game.Screens.Select
b.Metadata = beatmapSet.Metadata;
}
return new BeatmapGroup(beatmapSet, database)
return new BeatmapGroup(beatmapSet, manager)
{
SelectionChanged = (g, p) => selectGroup(g, p),
StartRequested = b => StartRequested?.Invoke(),
@ -295,9 +298,9 @@ namespace osu.Game.Screens.Select
}
[BackgroundDependencyLoader(permitNulls: true)]
private void load(BeatmapDatabase database, OsuConfigManager config)
private void load(BeatmapManager manager, OsuConfigManager config)
{
this.database = database;
this.manager = manager;
randomType = config.GetBindable<SelectionRandomType>(OsuSetting.SelectionRandomType);
}
@ -311,6 +314,9 @@ namespace osu.Game.Screens.Select
private void removeGroup(BeatmapGroup group)
{
if (group == null)
return;
groups.Remove(group);
panels.Remove(group.Header);
foreach (var p in group.BeatmapPanels)

View File

@ -4,7 +4,6 @@
using System;
using osu.Framework.Allocation;
using osu.Game.Beatmaps;
using osu.Game.Database;
using osu.Game.Graphics;
using osu.Game.Overlays.Dialog;
@ -12,12 +11,12 @@ namespace osu.Game.Screens.Select
{
public class BeatmapDeleteDialog : PopupDialog
{
private BeatmapDatabase database;
private BeatmapManager manager;
[BackgroundDependencyLoader]
private void load(BeatmapDatabase beatmapDatabase)
private void load(BeatmapManager beatmapManager)
{
database = beatmapDatabase;
manager = beatmapManager;
}
public BeatmapDeleteDialog(WorkingBeatmap beatmap)
@ -35,7 +34,7 @@ namespace osu.Game.Screens.Select
Action = () =>
{
beatmap.Dispose();
database.Delete(beatmap.BeatmapSetInfo);
manager.Delete(beatmap.BeatmapSetInfo);
},
},
new PopupDialogCancelButton

View File

@ -6,7 +6,6 @@ using OpenTK.Graphics;
using osu.Framework.Allocation;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Game.Database;
using osu.Game.Graphics;
using osu.Game.Graphics.Sprites;
using osu.Game.Graphics.UserInterface;
@ -16,6 +15,7 @@ using osu.Game.Online.API;
using osu.Game.Online.API.Requests;
using osu.Framework.Threading;
using osu.Framework.Graphics.Shapes;
using osu.Game.Beatmaps;
namespace osu.Game.Screens.Select
{
@ -86,7 +86,7 @@ namespace osu.Game.Screens.Select
requestedBeatmap.Metrics = res;
Schedule(() => updateMetrics(res));
};
lookup.Failure += e => updateMetrics(null);
lookup.Failure += e => Schedule(() => updateMetrics(null));
api.Queue(lookup);
loading.Show();

View File

@ -14,7 +14,6 @@ using osu.Framework.Graphics.Containers;
using osu.Framework.MathUtils;
using osu.Game.Beatmaps;
using osu.Game.Beatmaps.Drawables;
using osu.Game.Database;
using osu.Game.Graphics;
using osu.Game.Graphics.Sprites;
using osu.Game.Rulesets;
@ -140,7 +139,7 @@ namespace osu.Game.Screens.Select
new Container
{
RelativeSizeAxes = Axes.Both,
ColourInfo = ColourInfo.GradientVertical(Color4.White, Color4.White.Opacity(0.3f)),
Colour = ColourInfo.GradientVertical(Color4.White, Color4.White.Opacity(0.3f)),
Children = new[]
{
// Zoomed-in and cropped beatmap background

View File

@ -14,8 +14,8 @@ using osu.Game.Graphics.UserInterface;
using osu.Game.Screens.Select.Filter;
using Container = osu.Framework.Graphics.Containers.Container;
using osu.Framework.Input;
using osu.Game.Database;
using osu.Framework.Graphics.Shapes;
using osu.Game.Rulesets;
namespace osu.Game.Screens.Select
{

View File

@ -5,7 +5,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using osu.Game.Beatmaps.Drawables;
using osu.Game.Database;
using osu.Game.Rulesets;
using osu.Game.Screens.Select.Filter;
namespace osu.Game.Screens.Select

View File

@ -11,7 +11,7 @@ using osu.Framework.Graphics.Containers;
using System;
using osu.Framework.Allocation;
using osu.Framework.Threading;
using osu.Game.Database;
using osu.Game.Beatmaps;
using osu.Game.Graphics.Containers;
using osu.Game.Graphics.UserInterface;
using osu.Game.Rulesets.Scoring;
@ -163,7 +163,7 @@ namespace osu.Game.Screens.Select.Leaderboards
c.Colour = Color4.Transparent;
else
{
c.ColourInfo = ColourInfo.GradientVertical(
c.Colour = ColourInfo.GradientVertical(
Color4.White.Opacity(Math.Min(1 - (topY - fadeStart) / LeaderboardScore.HEIGHT, 1)),
Color4.White.Opacity(Math.Min(1 - (bottomY - fadeStart) / LeaderboardScore.HEIGHT, 1)));
}

View File

@ -191,7 +191,7 @@ namespace osu.Game.Screens.Select.Leaderboards
Masking = true,
Children = new Drawable[]
{
new DrawableFlag(Score.User?.Country?.FlagName ?? "__")
new DrawableFlag(Score.User?.Country?.FlagName)
{
Width = 30,
RelativeSizeAxes = Axes.Y,

View File

@ -15,7 +15,6 @@ using osu.Framework.Input;
using osu.Framework.Screens;
using osu.Framework.Threading;
using osu.Game.Beatmaps;
using osu.Game.Database;
using osu.Game.Graphics;
using osu.Game.Graphics.Containers;
using osu.Game.Overlays;
@ -26,7 +25,7 @@ namespace osu.Game.Screens.Select
{
public abstract class SongSelect : OsuScreen
{
private BeatmapDatabase database;
private BeatmapManager manager;
protected override BackgroundScreen CreateBackground() => new BackgroundScreenBeatmap();
private readonly BeatmapCarousel carousel;
@ -152,7 +151,7 @@ namespace osu.Game.Screens.Select
}
[BackgroundDependencyLoader(permitNulls: true)]
private void load(BeatmapDatabase beatmaps, AudioManager audio, DialogOverlay dialog, OsuGame osu, OsuColour colours, UserInputManager input)
private void load(BeatmapManager beatmaps, AudioManager audio, DialogOverlay dialog, OsuGame osu, OsuColour colours, UserInputManager input)
{
if (Footer != null)
{
@ -162,14 +161,14 @@ namespace osu.Game.Screens.Select
BeatmapOptions.AddButton(@"Delete", @"Beatmap", FontAwesome.fa_trash, colours.Pink, promptDelete, Key.Number4, float.MaxValue);
}
if (database == null)
database = beatmaps;
if (manager == null)
manager = beatmaps;
if (osu != null)
Ruleset.BindTo(osu.Ruleset);
database.BeatmapSetAdded += onBeatmapSetAdded;
database.BeatmapSetRemoved += onBeatmapSetRemoved;
manager.BeatmapSetAdded += onBeatmapSetAdded;
manager.BeatmapSetRemoved += onBeatmapSetRemoved;
dialogOverlay = dialog;
@ -178,7 +177,7 @@ namespace osu.Game.Screens.Select
initialAddSetsTask = new CancellationTokenSource();
carousel.Beatmaps = database.GetAllWithChildren<BeatmapSetInfo>(b => !b.DeletePending);
carousel.Beatmaps = manager.GetAllUsableBeatmapSets();
Beatmap.ValueChanged += beatmap_ValueChanged;
@ -228,7 +227,7 @@ namespace osu.Game.Screens.Select
{
bool preview = beatmap?.BeatmapSetInfoID != Beatmap.Value.BeatmapInfo.BeatmapSetInfoID;
Beatmap.Value = database.GetWorkingBeatmap(beatmap, Beatmap);
Beatmap.Value = manager.GetWorkingBeatmap(beatmap, Beatmap);
ensurePlayingSelected(preview);
}
@ -339,10 +338,10 @@ namespace osu.Game.Screens.Select
{
base.Dispose(isDisposing);
if (database != null)
if (manager != null)
{
database.BeatmapSetAdded -= onBeatmapSetAdded;
database.BeatmapSetRemoved -= onBeatmapSetRemoved;
manager.BeatmapSetAdded -= onBeatmapSetAdded;
manager.BeatmapSetRemoved -= onBeatmapSetRemoved;
}
initialAddSetsTask?.Cancel();
@ -382,7 +381,7 @@ namespace osu.Game.Screens.Select
private void promptDelete()
{
if (Beatmap != null)
if (Beatmap != null && !Beatmap.IsDefault)
dialogOverlay?.Push(new BeatmapDeleteDialog(Beatmap));
}