diff --git a/osu.Game/Online/Rooms/BeatmapAvailability.cs b/osu.Game/Online/Rooms/BeatmapAvailability.cs
index 04dcd2a84a..1fd099fcc7 100644
--- a/osu.Game/Online/Rooms/BeatmapAvailability.cs
+++ b/osu.Game/Online/Rooms/BeatmapAvailability.cs
@@ -20,35 +20,17 @@ namespace osu.Game.Online.Rooms
///
public readonly double? DownloadProgress;
- ///
- /// Constructs a new non- beatmap availability state.
- ///
- /// The beatmap availability state.
- /// Throws if was specified in this constructor, as it has its own constructor (see .
- public BeatmapAvailability(DownloadState state)
+ private BeatmapAvailability(DownloadState state, double? downloadProgress = null)
{
- if (state == DownloadState.Downloading)
- throw new ArgumentException($"{nameof(DownloadState.Downloading)} state has its own constructor, use it instead.");
-
State = state;
- DownloadProgress = null;
- }
-
- ///
- /// Constructs a new -specific beatmap availability state.
- ///
- /// The beatmap availability state (always ).
- /// The beatmap's downloading current progress.
- /// Throws if non- was specified in this constructor, as they have their own constructor (see .
- public BeatmapAvailability(DownloadState state, double downloadProgress)
- {
- if (state != DownloadState.Downloading)
- throw new ArgumentException($"This is a constructor specific for {DownloadState.Downloading} state, use the regular one instead.");
-
- State = DownloadState.Downloading;
DownloadProgress = downloadProgress;
}
+ public static BeatmapAvailability NotDownload() => new BeatmapAvailability(DownloadState.NotDownloaded);
+ public static BeatmapAvailability Downloading(double progress) => new BeatmapAvailability(DownloadState.Downloading, progress);
+ public static BeatmapAvailability Downloaded() => new BeatmapAvailability(DownloadState.Downloaded);
+ public static BeatmapAvailability LocallyAvailable() => new BeatmapAvailability(DownloadState.LocallyAvailable);
+
public bool Equals(BeatmapAvailability other) => other != null && State == other.State && DownloadProgress == other.DownloadProgress;
public override string ToString() => $"{string.Join(", ", State, $"{DownloadProgress:0.00%}")}";