mirror of
https://github.com/ppy/osu.git
synced 2024-11-15 16:27:43 +08:00
Merge pull request #30239 from rozukke/reset-offsets
Add functionality to mass reset offsets
This commit is contained in:
commit
f8bce706fa
@ -285,7 +285,8 @@ namespace osu.Game.Beatmaps
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="query">The query.</param>
|
/// <param name="query">The query.</param>
|
||||||
/// <returns>The first result for the provided query, or null if no results were found.</returns>
|
/// <returns>The first result for the provided query, or null if no results were found.</returns>
|
||||||
public BeatmapInfo? QueryBeatmap(Expression<Func<BeatmapInfo, bool>> query) => Realm.Run(r => r.All<BeatmapInfo>().Filter($"{nameof(BeatmapInfo.BeatmapSet)}.{nameof(BeatmapSetInfo.DeletePending)} == false").FirstOrDefault(query)?.Detach());
|
public BeatmapInfo? QueryBeatmap(Expression<Func<BeatmapInfo, bool>> query) => Realm.Run(r =>
|
||||||
|
r.All<BeatmapInfo>().Filter($"{nameof(BeatmapInfo.BeatmapSet)}.{nameof(BeatmapSetInfo.DeletePending)} == false").FirstOrDefault(query)?.Detach());
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A default representation of a WorkingBeatmap to use when no beatmap is available.
|
/// A default representation of a WorkingBeatmap to use when no beatmap is available.
|
||||||
@ -313,6 +314,23 @@ namespace osu.Game.Beatmaps
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ResetAllOffsets()
|
||||||
|
{
|
||||||
|
const string reset_complete_message = "All offsets have been reset!";
|
||||||
|
Realm.Write(r =>
|
||||||
|
{
|
||||||
|
var items = r.All<BeatmapInfo>();
|
||||||
|
|
||||||
|
foreach (var beatmap in items)
|
||||||
|
{
|
||||||
|
if (beatmap.UserSettings.Offset != 0)
|
||||||
|
beatmap.UserSettings.Offset = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
PostNotification?.Invoke(new ProgressCompletionNotification { Text = reset_complete_message });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public void Delete(Expression<Func<BeatmapSetInfo, bool>>? filter = null, bool silent = false)
|
public void Delete(Expression<Func<BeatmapSetInfo, bool>>? filter = null, bool silent = false)
|
||||||
{
|
{
|
||||||
Realm.Run(r =>
|
Realm.Run(r =>
|
||||||
|
@ -19,6 +19,11 @@ namespace osu.Game.Localisation
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static LocalisableString BeatmapVideos => new TranslatableString(getKey(@"beatmap_videos"), @"Are you sure you want to delete all beatmaps videos? This cannot be undone!");
|
public static LocalisableString BeatmapVideos => new TranslatableString(getKey(@"beatmap_videos"), @"Are you sure you want to delete all beatmaps videos? This cannot be undone!");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// "Are you sure you want to reset all local beatmap offsets? This cannot be undone!"
|
||||||
|
/// </summary>
|
||||||
|
public static LocalisableString Offsets => new TranslatableString(getKey(@"offsets"), @"Are you sure you want to reset all local beatmap offsets? This cannot be undone!");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// "Are you sure you want to delete all skins? This cannot be undone!"
|
/// "Are you sure you want to delete all skins? This cannot be undone!"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -59,6 +59,11 @@ namespace osu.Game.Localisation
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static LocalisableString DeleteAllBeatmapVideos => new TranslatableString(getKey(@"delete_all_beatmap_videos"), @"Delete ALL beatmap videos");
|
public static LocalisableString DeleteAllBeatmapVideos => new TranslatableString(getKey(@"delete_all_beatmap_videos"), @"Delete ALL beatmap videos");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// "Reset ALL beatmap offsets"
|
||||||
|
/// </summary>
|
||||||
|
public static LocalisableString ResetAllOffsets => new TranslatableString(getKey(@"reset_all_offsets"), @"Reset ALL beatmap offsets");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// "Delete ALL scores"
|
/// "Delete ALL scores"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -16,6 +16,7 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
|
|||||||
|
|
||||||
private SettingsButton deleteBeatmapsButton = null!;
|
private SettingsButton deleteBeatmapsButton = null!;
|
||||||
private SettingsButton deleteBeatmapVideosButton = null!;
|
private SettingsButton deleteBeatmapVideosButton = null!;
|
||||||
|
private SettingsButton resetOffsetsButton = null!;
|
||||||
private SettingsButton restoreButton = null!;
|
private SettingsButton restoreButton = null!;
|
||||||
private SettingsButton undeleteButton = null!;
|
private SettingsButton undeleteButton = null!;
|
||||||
|
|
||||||
@ -47,6 +48,20 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
|
|||||||
}, DeleteConfirmationContentStrings.BeatmapVideos));
|
}, DeleteConfirmationContentStrings.BeatmapVideos));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Add(resetOffsetsButton = new DangerousSettingsButton
|
||||||
|
{
|
||||||
|
Text = MaintenanceSettingsStrings.ResetAllOffsets,
|
||||||
|
Action = () =>
|
||||||
|
{
|
||||||
|
dialogOverlay?.Push(new MassDeleteConfirmationDialog(() =>
|
||||||
|
{
|
||||||
|
resetOffsetsButton.Enabled.Value = false;
|
||||||
|
Task.Run(beatmaps.ResetAllOffsets).ContinueWith(_ => Schedule(() => resetOffsetsButton.Enabled.Value = true));
|
||||||
|
}, DeleteConfirmationContentStrings.Offsets));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
AddRange(new Drawable[]
|
AddRange(new Drawable[]
|
||||||
{
|
{
|
||||||
restoreButton = new SettingsButton
|
restoreButton = new SettingsButton
|
||||||
|
Loading…
Reference in New Issue
Block a user