diff --git a/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs b/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs
index 42a81ad3fa..312fd496a1 100644
--- a/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs
+++ b/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs
@@ -99,6 +99,18 @@ namespace osu.Game.Screens.Backgrounds
}
}
+ ///
+ /// Reloads beatmap's background.
+ ///
+ public void RefreshBackground()
+ {
+ Schedule(() =>
+ {
+ cancellationSource?.Cancel();
+ LoadComponentAsync(new BeatmapBackground(beatmap), switchBackground, (cancellationSource = new CancellationTokenSource()).Token);
+ });
+ }
+
private void switchBackground(BeatmapBackground b)
{
float newDepth = 0;
diff --git a/osu.Game/Screens/Edit/Setup/ResourcesSection.cs b/osu.Game/Screens/Edit/Setup/ResourcesSection.cs
index ca0f50cd34..8c84ad90ba 100644
--- a/osu.Game/Screens/Edit/Setup/ResourcesSection.cs
+++ b/osu.Game/Screens/Edit/Setup/ResourcesSection.cs
@@ -1,8 +1,6 @@
// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
-#nullable disable
-
using System.IO;
using osu.Framework.Allocation;
using osu.Framework.Bindables;
@@ -16,25 +14,28 @@ namespace osu.Game.Screens.Edit.Setup
{
internal partial class ResourcesSection : SetupSection
{
- private LabelledFileChooser audioTrackChooser;
- private LabelledFileChooser backgroundChooser;
+ private LabelledFileChooser audioTrackChooser = null!;
+ private LabelledFileChooser backgroundChooser = null!;
public override LocalisableString Title => EditorSetupStrings.ResourcesHeader;
[Resolved]
- private MusicController music { get; set; }
+ private MusicController music { get; set; } = null!;
[Resolved]
- private BeatmapManager beatmaps { get; set; }
+ private BeatmapManager beatmaps { get; set; } = null!;
[Resolved]
- private IBindable working { get; set; }
+ private IBindable working { get; set; } = null!;
[Resolved]
- private EditorBeatmap editorBeatmap { get; set; }
+ private EditorBeatmap editorBeatmap { get; set; } = null!;
[Resolved]
- private SetupScreenHeader header { get; set; }
+ private Editor? editor { get; set; }
+
+ [Resolved]
+ private SetupScreenHeader header { get; set; } = null!;
[BackgroundDependencyLoader]
private void load()
@@ -93,6 +94,8 @@ namespace osu.Game.Screens.Edit.Setup
working.Value.Metadata.BackgroundFile = destination.Name;
header.Background.UpdateBackground();
+ editor?.ApplyToBackground(bg => bg.RefreshBackground());
+
return true;
}
@@ -125,17 +128,17 @@ namespace osu.Game.Screens.Edit.Setup
return true;
}
- private void backgroundChanged(ValueChangedEvent file)
+ private void backgroundChanged(ValueChangedEvent file)
{
- if (!ChangeBackgroundImage(file.NewValue))
+ if (file.NewValue == null || !ChangeBackgroundImage(file.NewValue))
backgroundChooser.Current.Value = file.OldValue;
updatePlaceholderText();
}
- private void audioTrackChanged(ValueChangedEvent file)
+ private void audioTrackChanged(ValueChangedEvent file)
{
- if (!ChangeAudioTrack(file.NewValue))
+ if (file.NewValue == null || !ChangeAudioTrack(file.NewValue))
audioTrackChooser.Current.Value = file.OldValue;
updatePlaceholderText();