diff --git a/osu.Game/Beatmaps/BeatmapInfo.cs b/osu.Game/Beatmaps/BeatmapInfo.cs
index 6f9df1ba7f..3208598f56 100644
--- a/osu.Game/Beatmaps/BeatmapInfo.cs
+++ b/osu.Game/Beatmaps/BeatmapInfo.cs
@@ -238,14 +238,6 @@ namespace osu.Game.Beatmaps
#region Compatibility properties
- [Ignored]
- [Obsolete("Use BeatmapInfo.Difficulty instead.")] // can be removed 20220719
- public BeatmapDifficulty BaseDifficulty
- {
- get => Difficulty;
- set => Difficulty = value;
- }
-
[Ignored]
public string? Path => File?.Filename;
diff --git a/osu.Game/Beatmaps/Formats/IHasComboColours.cs b/osu.Game/Beatmaps/Formats/IHasComboColours.cs
index d5e96da246..1d9cc0be65 100644
--- a/osu.Game/Beatmaps/Formats/IHasComboColours.cs
+++ b/osu.Game/Beatmaps/Formats/IHasComboColours.cs
@@ -3,7 +3,6 @@
#nullable disable
-using System;
using System.Collections.Generic;
using osuTK.Graphics;
@@ -22,11 +21,5 @@ namespace osu.Game.Beatmaps.Formats
/// if empty, will fall back to default combo colours.
///
List CustomComboColours { get; }
-
- ///
- /// Adds combo colours to the list.
- ///
- [Obsolete("Use CustomComboColours directly.")] // can be removed 20220215
- void AddComboColours(params Color4[] colours);
}
}
diff --git a/osu.Game/Beatmaps/Timing/TimeSignatures.cs b/osu.Game/Beatmaps/Timing/TimeSignatures.cs
deleted file mode 100644
index 95c971eebf..0000000000
--- a/osu.Game/Beatmaps/Timing/TimeSignatures.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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;
-using System.ComponentModel;
-
-namespace osu.Game.Beatmaps.Timing
-{
- [Obsolete("Use osu.Game.Beatmaps.Timing.TimeSignature instead.")]
- public enum TimeSignatures // can be removed 20220722
- {
- [Description("4/4")]
- SimpleQuadruple = 4,
-
- [Description("3/4")]
- SimpleTriple = 3
- }
-}
diff --git a/osu.Game/Configuration/DatabasedSetting.cs b/osu.Game/Configuration/DatabasedSetting.cs
deleted file mode 100644
index 0c1b4021a1..0000000000
--- a/osu.Game/Configuration/DatabasedSetting.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-// 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.ComponentModel.DataAnnotations.Schema;
-using osu.Game.Database;
-
-namespace osu.Game.Configuration
-{
- [Table("Settings")]
- public class DatabasedSetting : IHasPrimaryKey // can be removed 20220315.
- {
- public int ID { get; set; }
-
- public bool IsManaged => ID > 0;
-
- public int? RulesetID { get; set; }
-
- public int? Variant { get; set; }
-
- public int? SkinInfoID { get; set; }
-
- [Column("Key")]
- public string Key { get; set; }
-
- [Column("Value")]
- public string StringValue
- {
- get => Value.ToString();
- set => Value = value;
- }
-
- public object Value;
-
- public DatabasedSetting(string key, object value)
- {
- Key = key;
- Value = value;
- }
-
- ///
- /// Constructor for derived classes that may require serialisation.
- ///
- public DatabasedSetting()
- {
- }
-
- public override string ToString() => $"{Key}=>{Value}";
- }
-}
diff --git a/osu.Game/Database/RealmAccess.cs b/osu.Game/Database/RealmAccess.cs
index edcd020226..1a938c12e5 100644
--- a/osu.Game/Database/RealmAccess.cs
+++ b/osu.Game/Database/RealmAccess.cs
@@ -857,17 +857,7 @@ namespace osu.Game.Database
if (legacyCollectionImporter.GetAvailableCount(storage).GetResultSafely() > 0)
{
- legacyCollectionImporter.ImportFromStorage(storage).ContinueWith(task =>
- {
- if (task.Exception != null)
- {
- // can be removed 20221027 (just for initial safety).
- Logger.Error(task.Exception.InnerException, "Collections could not be migrated to realm. Please provide your \"collection.db\" to the dev team.");
- return;
- }
-
- storage.Move("collection.db", "collection.db.migrated");
- });
+ legacyCollectionImporter.ImportFromStorage(storage).ContinueWith(_ => storage.Move("collection.db", "collection.db.migrated"));
}
break;
diff --git a/osu.Game/Rulesets/Mods/IApplicableToDrawableHitObjects.cs b/osu.Game/Rulesets/Mods/IApplicableToDrawableHitObjects.cs
deleted file mode 100644
index 7f926dd8b8..0000000000
--- a/osu.Game/Rulesets/Mods/IApplicableToDrawableHitObjects.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
-// See the LICENCE file in the repository root for full licence text.
-
-using System;
-using System.Collections.Generic;
-using osu.Framework.Extensions.IEnumerableExtensions;
-using osu.Game.Rulesets.Objects.Drawables;
-
-namespace osu.Game.Rulesets.Mods
-{
- [Obsolete(@"Use the singular version IApplicableToDrawableHitObject instead.")] // Can be removed 20211216
- public interface IApplicableToDrawableHitObjects : IApplicableToDrawableHitObject
- {
- void ApplyToDrawableHitObjects(IEnumerable drawables);
-
- void IApplicableToDrawableHitObject.ApplyToDrawableHitObject(DrawableHitObject drawable) => ApplyToDrawableHitObjects(drawable.Yield());
- }
-}
diff --git a/osu.Game/Rulesets/Mods/ICreateReplay.cs b/osu.Game/Rulesets/Mods/ICreateReplay.cs
deleted file mode 100644
index 1e5eeca92c..0000000000
--- a/osu.Game/Rulesets/Mods/ICreateReplay.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
-// See the LICENCE file in the repository root for full licence text.
-
-using System;
-using System.Collections.Generic;
-using osu.Game.Beatmaps;
-using osu.Game.Scoring;
-
-namespace osu.Game.Rulesets.Mods
-{
- [Obsolete("Use ICreateReplayData instead")] // Can be removed 20220929
- public interface ICreateReplay : ICreateReplayData
- {
- public Score CreateReplayScore(IBeatmap beatmap, IReadOnlyList mods);
-
- ModReplayData ICreateReplayData.CreateReplayData(IBeatmap beatmap, IReadOnlyList mods)
- {
- var replayScore = CreateReplayScore(beatmap, mods);
- return new ModReplayData(replayScore.Replay, new ModCreatedUser { Username = replayScore.ScoreInfo.User.Username });
- }
- }
-}
diff --git a/osu.Game/Rulesets/Mods/Mod.cs b/osu.Game/Rulesets/Mods/Mod.cs
index e4c91d3037..98df540de4 100644
--- a/osu.Game/Rulesets/Mods/Mod.cs
+++ b/osu.Game/Rulesets/Mods/Mod.cs
@@ -101,9 +101,6 @@ namespace osu.Game.Rulesets.Mods
[JsonIgnore]
public virtual bool ValidForMultiplayerAsFreeMod => true;
- [Obsolete("Going forward, the concept of \"ranked\" doesn't exist. The only exceptions are automation mods, which should now override and set UserPlayable to false.")] // Can be removed 20211009
- public virtual bool Ranked => false;
-
///
/// Whether this mod requires configuration to apply changes to the game.
///
diff --git a/osu.Game/Rulesets/Mods/ModAutoplay.cs b/osu.Game/Rulesets/Mods/ModAutoplay.cs
index 6cafe0716d..83afda3a28 100644
--- a/osu.Game/Rulesets/Mods/ModAutoplay.cs
+++ b/osu.Game/Rulesets/Mods/ModAutoplay.cs
@@ -8,7 +8,6 @@ using osu.Framework.Localisation;
using osu.Game.Beatmaps;
using osu.Game.Graphics;
using osu.Game.Replays;
-using osu.Game.Scoring;
namespace osu.Game.Rulesets.Mods
{
@@ -33,16 +32,6 @@ namespace osu.Game.Rulesets.Mods
public override bool HasImplementation => GetType().GenericTypeArguments.Length == 0;
- [Obsolete("Override CreateReplayData(IBeatmap, IReadOnlyList) instead")] // Can be removed 20220929
- public virtual Score CreateReplayScore(IBeatmap beatmap, IReadOnlyList mods) => new Score { Replay = new Replay() };
-
- public virtual ModReplayData CreateReplayData(IBeatmap beatmap, IReadOnlyList mods)
- {
-#pragma warning disable CS0618
- var replayScore = CreateReplayScore(beatmap, mods);
-#pragma warning restore CS0618
-
- return new ModReplayData(replayScore.Replay, new ModCreatedUser { Username = replayScore.ScoreInfo.User.Username });
- }
+ public virtual ModReplayData CreateReplayData(IBeatmap beatmap, IReadOnlyList mods) => new ModReplayData(new Replay(), new ModCreatedUser { Username = @"autoplay" });
}
}
diff --git a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs
index dec68a6c22..d624164013 100644
--- a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs
+++ b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs
@@ -196,18 +196,6 @@ namespace osu.Game.Rulesets.Objects.Drawables
updateState(State.Value, true);
}
- ///
- /// Applies a hit object to be represented by this .
- ///
- [Obsolete("Use either overload of Apply that takes a single argument of type HitObject or HitObjectLifetimeEntry")] // Can be removed 20211021.
- public void Apply([NotNull] HitObject hitObject, [CanBeNull] HitObjectLifetimeEntry lifetimeEntry)
- {
- if (lifetimeEntry != null)
- Apply(lifetimeEntry);
- else
- Apply(hitObject);
- }
-
///
/// Applies a new to be represented by this .
/// A new is automatically created and applied to this .
diff --git a/osu.Game/Screens/Ranking/Statistics/StatisticItem.cs b/osu.Game/Screens/Ranking/Statistics/StatisticItem.cs
index e3ac054d1b..5bbd260d3f 100644
--- a/osu.Game/Screens/Ranking/Statistics/StatisticItem.cs
+++ b/osu.Game/Screens/Ranking/Statistics/StatisticItem.cs
@@ -36,12 +36,6 @@ namespace osu.Game.Screens.Ranking.Statistics
///
public readonly bool RequiresHitEvents;
- [Obsolete("Use constructor which takes creation function instead.")] // Can be removed 20220803.
- public StatisticItem([NotNull] string name, [NotNull] Drawable content, [CanBeNull] Dimension dimension = null)
- : this(name, () => content, true, dimension)
- {
- }
-
///
/// Creates a new , to be displayed inside a in the results screen.
///
diff --git a/osu.Game/Skinning/SkinConfiguration.cs b/osu.Game/Skinning/SkinConfiguration.cs
index 4e5d96ccb8..a9f660312e 100644
--- a/osu.Game/Skinning/SkinConfiguration.cs
+++ b/osu.Game/Skinning/SkinConfiguration.cs
@@ -66,8 +66,6 @@ namespace osu.Game.Skinning
}
}
- void IHasComboColours.AddComboColours(params Color4[] colours) => CustomComboColours.AddRange(colours);
-
public Dictionary CustomColours { get; } = new Dictionary();
public readonly Dictionary ConfigDictionary = new Dictionary();
diff --git a/osu.Game/Skinning/SkinImporter.cs b/osu.Game/Skinning/SkinImporter.cs
index 701dcdfc2d..f594a7b2d2 100644
--- a/osu.Game/Skinning/SkinImporter.cs
+++ b/osu.Game/Skinning/SkinImporter.cs
@@ -4,11 +4,9 @@
using System;
using System.Collections.Generic;
using System.IO;
-using System.Linq;
using System.Text;
using System.Threading;
using Newtonsoft.Json;
-using osu.Framework.Logging;
using osu.Framework.Platform;
using osu.Game.Beatmaps;
using osu.Game.Database;
@@ -33,9 +31,6 @@ namespace osu.Game.Skinning
this.skinResources = skinResources;
modelManager = new ModelManager(storage, realm);
-
- // can be removed 20220420.
- populateMissingHashes();
}
public override IEnumerable HandledExtensions => new[] { ".osk" };
@@ -158,18 +153,6 @@ namespace osu.Game.Skinning
}
modelManager.ReplaceFile(existingFile, stream, realm);
-
- // can be removed 20220502.
- if (!ensureIniWasUpdated(item))
- {
- Logger.Log($"Skin {item}'s skin.ini had issues and has been removed. Please report this and provide the problematic skin.", LoggingTarget.Database, LogLevel.Important);
-
- var existingIni = item.GetFile(@"skin.ini");
- if (existingIni != null)
- item.Files.Remove(existingIni);
-
- writeNewSkinIni();
- }
}
}
@@ -194,38 +177,6 @@ namespace osu.Game.Skinning
}
}
- private bool ensureIniWasUpdated(SkinInfo item)
- {
- // This is a final consistency check to ensure that hash computation doesn't enter an infinite loop.
- // With other changes to the surrounding code this should never be hit, but until we are 101% sure that there
- // are no other cases let's avoid a hard startup crash by bailing and alerting.
-
- var instance = createInstance(item);
-
- return instance.Configuration.SkinInfo.Name == item.Name;
- }
-
- private void populateMissingHashes()
- {
- Realm.Run(realm =>
- {
- var skinsWithoutHashes = realm.All().Where(i => !i.Protected && string.IsNullOrEmpty(i.Hash)).ToArray();
-
- foreach (SkinInfo skin in skinsWithoutHashes)
- {
- try
- {
- realm.Write(_ => skin.Hash = ComputeHash(skin));
- }
- catch (Exception e)
- {
- modelManager.Delete(skin);
- Logger.Error(e, $"Existing skin {skin} has been deleted during hash recomputation due to being invalid");
- }
- }
- });
- }
-
private Skin createInstance(SkinInfo item) => item.CreateInstance(skinResources);
public void Save(Skin skin)