diff --git a/osu.Game/Beatmaps/Beatmap.cs b/osu.Game/Beatmaps/Beatmap.cs
index 2c437f8a18..35b6cc2b02 100644
--- a/osu.Game/Beatmaps/Beatmap.cs
+++ b/osu.Game/Beatmaps/Beatmap.cs
@@ -41,6 +41,11 @@ namespace osu.Game.Beatmaps
///
public double TotalBreakTime => Breaks.Sum(b => b.Duration);
+ ///
+ /// The Beatmap's Storyboard.
+ ///
+ public Storyboard Storyboard = new Storyboard();
+
///
/// Constructs a new beatmap.
///
@@ -52,6 +57,7 @@ namespace osu.Game.Beatmaps
Breaks = original?.Breaks ?? Breaks;
ComboColors = original?.ComboColors ?? ComboColors;
HitObjects = original?.HitObjects ?? HitObjects;
+ Storyboard = original?.Storyboard ?? Storyboard;
if (original == null && Metadata == null)
{
diff --git a/osu.Game/Beatmaps/BeatmapManager.cs b/osu.Game/Beatmaps/BeatmapManager.cs
index a5578bcfde..4f7c0051c1 100644
--- a/osu.Game/Beatmaps/BeatmapManager.cs
+++ b/osu.Game/Beatmaps/BeatmapManager.cs
@@ -569,16 +569,11 @@ namespace osu.Game.Beatmaps
{
try
{
- Beatmap beatmap;
-
- BeatmapDecoder decoder;
using (var stream = new StreamReader(store.GetStream(getPathForFile(BeatmapInfo.Path))))
{
- decoder = BeatmapDecoder.GetDecoder(stream);
- beatmap = decoder.Decode(stream);
+ BeatmapDecoder decoder = BeatmapDecoder.GetDecoder(stream);
+ return decoder.Decode(stream);
}
-
- return beatmap;
}
catch
{
@@ -622,9 +617,7 @@ namespace osu.Game.Beatmaps
{
try
{
- Beatmap beatmap = Beatmap;
-
- if (beatmap == null || BeatmapSetInfo.StoryboardFile == null)
+ if (Beatmap == null || BeatmapSetInfo.StoryboardFile == null)
return new Storyboard();
BeatmapDecoder decoder;
@@ -632,9 +625,9 @@ namespace osu.Game.Beatmaps
decoder = BeatmapDecoder.GetDecoder(stream);
using (var stream = new StreamReader(store.GetStream(getPathForFile(BeatmapSetInfo.StoryboardFile))))
- decoder.Decode(stream, beatmap);
+ decoder.Decode(stream, Beatmap);
- return beatmap.Storyboard;
+ return Beatmap.Storyboard;
}
catch
{
diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs
index dc746b305c..b5b09504da 100644
--- a/osu.Game/Screens/Play/Player.cs
+++ b/osu.Game/Screens/Play/Player.cs
@@ -245,7 +245,7 @@ namespace osu.Game.Screens.Play
private void initializeStoryboard(bool asyncLoad)
{
- var beatmap = Beatmap.Value.Beatmap;
+ var beatmap = Beatmap.Value;
storyboard = beatmap.Storyboard.CreateDrawable(Beatmap.Value);
storyboard.Masking = true;
@@ -388,7 +388,7 @@ namespace osu.Game.Screens.Play
initializeStoryboard(true);
var beatmap = Beatmap.Value;
- var storyboardVisible = showStoryboard && beatmap.Beatmap.Storyboard.HasDrawable;
+ var storyboardVisible = showStoryboard && beatmap.Storyboard.HasDrawable;
storyboardContainer.FadeColour(new Color4(opacity, opacity, opacity, 1), 800);
storyboardContainer.FadeTo(storyboardVisible && opacity > 0 ? 1 : 0);