From 9364c7775d57e18e1abea1b7d5fe0d1416c45f03 Mon Sep 17 00:00:00 2001
From: ansel <79257300125@ya.ru>
Date: Fri, 6 Jan 2023 19:26:30 +0300
Subject: [PATCH 1/4] Refresh background on file change in editor
---
.../Screens/Backgrounds/BackgroundScreenBeatmap.cs | 12 ++++++++++++
osu.Game/Screens/Edit/Setup/ResourcesSection.cs | 5 +++++
2 files changed, 17 insertions(+)
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..c79d9d6632 100644
--- a/osu.Game/Screens/Edit/Setup/ResourcesSection.cs
+++ b/osu.Game/Screens/Edit/Setup/ResourcesSection.cs
@@ -33,6 +33,9 @@ namespace osu.Game.Screens.Edit.Setup
[Resolved]
private EditorBeatmap editorBeatmap { get; set; }
+ [Resolved]
+ private Editor editor { get; set; }
+
[Resolved]
private SetupScreenHeader header { get; set; }
@@ -93,6 +96,8 @@ namespace osu.Game.Screens.Edit.Setup
working.Value.Metadata.BackgroundFile = destination.Name;
header.Background.UpdateBackground();
+ editor.ApplyToBackground(bg => bg.RefreshBackground());
+
return true;
}
From 167ac8b5dda3b0b4d3bf42512fd1234547c525ef Mon Sep 17 00:00:00 2001
From: ansel <79257300125@ya.ru>
Date: Sat, 7 Jan 2023 03:03:52 +0300
Subject: [PATCH 2/4] Fix editor object being requered
---
osu.Game/Screens/Edit/Setup/ResourcesSection.cs | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/osu.Game/Screens/Edit/Setup/ResourcesSection.cs b/osu.Game/Screens/Edit/Setup/ResourcesSection.cs
index c79d9d6632..8565843170 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;
@@ -34,7 +32,7 @@ namespace osu.Game.Screens.Edit.Setup
private EditorBeatmap editorBeatmap { get; set; }
[Resolved]
- private Editor editor { get; set; }
+ private Editor? editor { get; set; }
[Resolved]
private SetupScreenHeader header { get; set; }
@@ -96,7 +94,7 @@ namespace osu.Game.Screens.Edit.Setup
working.Value.Metadata.BackgroundFile = destination.Name;
header.Background.UpdateBackground();
- editor.ApplyToBackground(bg => bg.RefreshBackground());
+ editor?.ApplyToBackground(bg => bg.RefreshBackground());
return true;
}
From b47cef838c689f551abbd5bcf1dc1f9b132c6173 Mon Sep 17 00:00:00 2001
From: ansel <79257300125@ya.ru>
Date: Sat, 7 Jan 2023 03:08:02 +0300
Subject: [PATCH 3/4] Nullability
---
.../Screens/Edit/Setup/ResourcesSection.cs | 22 +++++++++----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/osu.Game/Screens/Edit/Setup/ResourcesSection.cs b/osu.Game/Screens/Edit/Setup/ResourcesSection.cs
index 8565843170..901101dcec 100644
--- a/osu.Game/Screens/Edit/Setup/ResourcesSection.cs
+++ b/osu.Game/Screens/Edit/Setup/ResourcesSection.cs
@@ -14,28 +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 Editor? editor { get; set; }
[Resolved]
- private SetupScreenHeader header { get; set; }
+ private SetupScreenHeader header { get; set; } = null!;
[BackgroundDependencyLoader]
private void load()
@@ -128,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 (!ChangeBackgroundImage(file.NewValue!))
backgroundChooser.Current.Value = file.OldValue;
updatePlaceholderText();
}
- private void audioTrackChanged(ValueChangedEvent file)
+ private void audioTrackChanged(ValueChangedEvent file)
{
- if (!ChangeAudioTrack(file.NewValue))
+ if (!ChangeAudioTrack(file.NewValue!))
audioTrackChooser.Current.Value = file.OldValue;
updatePlaceholderText();
From aaeb43fbb2f48ce1f364c9ffd267abddcdcb3898 Mon Sep 17 00:00:00 2001
From: ansel <79257300125@ya.ru>
Date: Sat, 7 Jan 2023 18:15:57 +0300
Subject: [PATCH 4/4] Return older file if new one is null
---
osu.Game/Screens/Edit/Setup/ResourcesSection.cs | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/osu.Game/Screens/Edit/Setup/ResourcesSection.cs b/osu.Game/Screens/Edit/Setup/ResourcesSection.cs
index 901101dcec..8c84ad90ba 100644
--- a/osu.Game/Screens/Edit/Setup/ResourcesSection.cs
+++ b/osu.Game/Screens/Edit/Setup/ResourcesSection.cs
@@ -130,7 +130,7 @@ namespace osu.Game.Screens.Edit.Setup
private void backgroundChanged(ValueChangedEvent file)
{
- if (!ChangeBackgroundImage(file.NewValue!))
+ if (file.NewValue == null || !ChangeBackgroundImage(file.NewValue))
backgroundChooser.Current.Value = file.OldValue;
updatePlaceholderText();
@@ -138,7 +138,7 @@ namespace osu.Game.Screens.Edit.Setup
private void audioTrackChanged(ValueChangedEvent file)
{
- if (!ChangeAudioTrack(file.NewValue!))
+ if (file.NewValue == null || !ChangeAudioTrack(file.NewValue))
audioTrackChooser.Current.Value = file.OldValue;
updatePlaceholderText();