Add a dummy beatmap provider for use in BeatmapInfoWedge

This commit is contained in:
Dean Herbert 2017-07-18 16:51:34 +09:00
parent 11ddded6fc
commit e47faf4e85
3 changed files with 51 additions and 13 deletions

View File

@ -0,0 +1,37 @@
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using System.Collections.Generic;
using osu.Framework.Audio.Track;
using osu.Framework.Graphics.Textures;
using osu.Game.Database;
using osu.Game.Rulesets.Objects;
namespace osu.Game.Beatmaps
{
internal class DummyWorkingBeatmap : WorkingBeatmap
{
public DummyWorkingBeatmap()
: base(new BeatmapInfo
{
Metadata = new BeatmapMetadata
{
Artist = "please load a beatmap!",
Title = "no beatmaps available!",
Author = "no one",
},
Difficulty = new BeatmapDifficulty(),
})
{
}
protected override Beatmap GetBeatmap() => new Beatmap
{
HitObjects = new List<HitObject>(),
};
protected override Texture GetBackground() => null;
protected override Track GetTrack() => null;
}
}

View File

@ -45,6 +45,14 @@ public BeatmapInfoWedge()
};
}
protected override void LoadComplete()
{
base.LoadComplete();
State = Visibility.Visible;
AlwaysPresent = true;
}
protected override bool HideOnEscape => false;
protected override bool BlockPassThroughMouse => false;
@ -63,17 +71,8 @@ protected override void PopOut()
public void UpdateBeatmap(WorkingBeatmap beatmap)
{
if (beatmap?.BeatmapInfo == null)
{
State = Visibility.Hidden;
beatmapInfoContainer?.FadeOut(250);
beatmapInfoContainer?.Expire();
beatmapInfoContainer = null;
return;
}
State = Visibility.Visible;
AlwaysPresent = true;
if (beatmap == null)
beatmap = new DummyWorkingBeatmap();
var lastContainer = beatmapInfoContainer;
float newDepth = lastContainer?.Depth + 1 ?? 0;
@ -124,7 +123,8 @@ public BufferedWedgeInfo(WorkingBeatmap beatmap)
}));
//get statistics from the current ruleset.
labels.AddRange(beatmapInfo.Ruleset.CreateInstance().GetBeatmapStatistics(beatmap).Select(s => new InfoLabel(s)));
if (beatmapInfo.Ruleset != null)
labels.AddRange(beatmapInfo.Ruleset.CreateInstance().GetBeatmapStatistics(beatmap).Select(s => new InfoLabel(s)));
}
PixelSnapping = true;

View File

@ -76,6 +76,7 @@
<Compile Include="Audio\SampleInfoList.cs" />
<Compile Include="Beatmaps\Drawables\BeatmapBackgroundSprite.cs" />
<Compile Include="Beatmaps\DifficultyCalculator.cs" />
<Compile Include="Beatmaps\DummyWorkingBeatmap.cs" />
<Compile Include="Graphics\Containers\OsuClickableContainer.cs" />
<Compile Include="Graphics\Containers\OsuFocusedOverlayContainer.cs" />
<Compile Include="Graphics\Containers\OsuScrollContainer.cs" />
@ -538,4 +539,4 @@
<Target Name="AfterBuild">
</Target>
-->
</Project>
</Project>