diff --git a/osu.Game/Beatmaps/BeatmapImporter.cs b/osu.Game/Beatmaps/BeatmapImporter.cs
index b497b8e8dc..e89e5339e1 100644
--- a/osu.Game/Beatmaps/BeatmapImporter.cs
+++ b/osu.Game/Beatmaps/BeatmapImporter.cs
@@ -280,7 +280,7 @@ namespace osu.Game.Beatmaps
public override string HumanisedModelName => "beatmap";
- protected override BeatmapSetInfo? CreateModel(ArchiveReader reader)
+ protected override BeatmapSetInfo? CreateModel(ArchiveReader reader, ImportParameters parameters)
{
// let's make sure there are actually .osu files to import.
string? mapName = reader.Filenames.FirstOrDefault(f => f.EndsWith(".osu", StringComparison.OrdinalIgnoreCase));
diff --git a/osu.Game/Database/RealmArchiveModelImporter.cs b/osu.Game/Database/RealmArchiveModelImporter.cs
index d2de00d476..730465e1b0 100644
--- a/osu.Game/Database/RealmArchiveModelImporter.cs
+++ b/osu.Game/Database/RealmArchiveModelImporter.cs
@@ -229,7 +229,7 @@ namespace osu.Game.Database
try
{
- model = CreateModel(archive);
+ model = CreateModel(archive, parameters);
if (model == null)
return null;
@@ -474,8 +474,9 @@ namespace osu.Game.Database
/// Actual expensive population should be done in ; this should just prepare for duplicate checking.
///
/// The archive to create the model for.
+ /// Parameters to further configure the import process.
/// A model populated with minimal information. Returning a null will abort importing silently.
- protected abstract TModel? CreateModel(ArchiveReader archive);
+ protected abstract TModel? CreateModel(ArchiveReader archive, ImportParameters parameters);
///
/// Populate the provided model completely from the given archive.
diff --git a/osu.Game/Scoring/ScoreImporter.cs b/osu.Game/Scoring/ScoreImporter.cs
index 2314dbb63b..886fb1379c 100644
--- a/osu.Game/Scoring/ScoreImporter.cs
+++ b/osu.Game/Scoring/ScoreImporter.cs
@@ -42,7 +42,7 @@ namespace osu.Game.Scoring
this.api = api;
}
- protected override ScoreInfo? CreateModel(ArchiveReader archive)
+ protected override ScoreInfo? CreateModel(ArchiveReader archive, ImportParameters parameters)
{
string name = archive.Filenames.First(f => f.EndsWith(".osr", StringComparison.OrdinalIgnoreCase));
@@ -56,10 +56,14 @@ namespace osu.Game.Scoring
{
Logger.Log($@"Score '{archive.Name}' failed to import: no corresponding beatmap with the hash '{notFound.Hash}' could be found.", LoggingTarget.Database);
- // In the case of a missing beatmap, let's attempt to resolve it and show a prompt to the user to download the required beatmap.
- var req = new GetBeatmapRequest(new BeatmapInfo { MD5Hash = notFound.Hash });
- req.Success += res => PostNotification?.Invoke(new MissingBeatmapNotification(res, archive, notFound.Hash));
- api.Queue(req);
+ if (!parameters.Batch)
+ {
+ // In the case of a missing beatmap, let's attempt to resolve it and show a prompt to the user to download the required beatmap.
+ var req = new GetBeatmapRequest(new BeatmapInfo { MD5Hash = notFound.Hash });
+ req.Success += res => PostNotification?.Invoke(new MissingBeatmapNotification(res, archive, notFound.Hash));
+ api.Queue(req);
+ }
+
return null;
}
catch (Exception e)
diff --git a/osu.Game/Skinning/SkinImporter.cs b/osu.Game/Skinning/SkinImporter.cs
index f2103a45c4..40585a3fd2 100644
--- a/osu.Game/Skinning/SkinImporter.cs
+++ b/osu.Game/Skinning/SkinImporter.cs
@@ -39,7 +39,7 @@ namespace osu.Game.Skinning
protected override bool ShouldDeleteArchive(string path) => Path.GetExtension(path).ToLowerInvariant() == @".osk";
- protected override SkinInfo CreateModel(ArchiveReader archive) => new SkinInfo { Name = archive.Name ?? @"No name" };
+ protected override SkinInfo CreateModel(ArchiveReader archive, ImportParameters parameters) => new SkinInfo { Name = archive.Name ?? @"No name" };
private const string unknown_creator_string = @"Unknown";