From 8d704153762fa73416a3ccb44ee71032952802eb Mon Sep 17 00:00:00 2001
From: Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com>
Date: Sat, 26 Mar 2022 15:02:11 -0400
Subject: add deprecation notices for SMAPI 4.0.0 (#766)

---
 src/SMAPI/Framework/Content/AssetInfo.cs        | 23 ++++++++++++++++-
 src/SMAPI/Framework/ModHelpers/ContentHelper.cs | 34 ++++++++++++++++++++++---
 src/SMAPI/Framework/SCore.cs                    | 19 ++++++++++++++
 3 files changed, 71 insertions(+), 5 deletions(-)

(limited to 'src/SMAPI/Framework')

diff --git a/src/SMAPI/Framework/Content/AssetInfo.cs b/src/SMAPI/Framework/Content/AssetInfo.cs
index 556f1c2a..6e93c33c 100644
--- a/src/SMAPI/Framework/Content/AssetInfo.cs
+++ b/src/SMAPI/Framework/Content/AssetInfo.cs
@@ -27,7 +27,20 @@ namespace StardewModdingAPI.Framework.Content
 
         /// <inheritdoc />
         [Obsolete($"Use {nameof(Name)} or {nameof(NameWithoutLocale)} instead.")]
-        public string AssetName => this.NameWithoutLocale.Name;
+        public string AssetName
+        {
+            get
+            {
+                SCore.DeprecationManager.Warn(
+                    source: SCore.DeprecationManager.GetSourceNameFromStack(),
+                    nounPhrase: $"{nameof(IAssetInfo)}.{nameof(IAssetInfo.AssetName)}",
+                    version: "3.14.0",
+                    severity: DeprecationLevel.Notice
+                );
+
+                return this.NameWithoutLocale.Name;
+            }
+        }
 
         /// <inheritdoc />
         public Type DataType { get; }
@@ -54,6 +67,14 @@ namespace StardewModdingAPI.Framework.Content
         [Obsolete($"Use {nameof(Name)}.{nameof(IAssetName.IsEquivalentTo)} or {nameof(NameWithoutLocale)}.{nameof(IAssetName.IsEquivalentTo)} instead.")]
         public bool AssetNameEquals(string path)
         {
+            SCore.DeprecationManager.Warn(
+                source: SCore.DeprecationManager.GetSourceNameFromStack(),
+                nounPhrase: $"{nameof(IAssetInfo)}.{nameof(IAssetInfo.AssetNameEquals)}",
+                version: "3.14.0",
+                severity: DeprecationLevel.Notice
+            );
+
+
             return this.NameWithoutLocale.IsEquivalentTo(path);
         }
 
diff --git a/src/SMAPI/Framework/ModHelpers/ContentHelper.cs b/src/SMAPI/Framework/ModHelpers/ContentHelper.cs
index 3416c286..3727b909 100644
--- a/src/SMAPI/Framework/ModHelpers/ContentHelper.cs
+++ b/src/SMAPI/Framework/ModHelpers/ContentHelper.cs
@@ -44,16 +44,42 @@ namespace StardewModdingAPI.Framework.ModHelpers
         public LocalizedContentManager.LanguageCode CurrentLocaleConstant => this.GameContentManager.Language;
 
         /// <summary>The observable implementation of <see cref="AssetEditors"/>.</summary>
-        internal ObservableCollection<IAssetEditor> ObservableAssetEditors { get; } = new ObservableCollection<IAssetEditor>();
+        internal ObservableCollection<IAssetEditor> ObservableAssetEditors { get; } = new();
 
         /// <summary>The observable implementation of <see cref="AssetLoaders"/>.</summary>
-        internal ObservableCollection<IAssetLoader> ObservableAssetLoaders { get; } = new ObservableCollection<IAssetLoader>();
+        internal ObservableCollection<IAssetLoader> ObservableAssetLoaders { get; } = new();
 
         /// <inheritdoc />
-        public IList<IAssetLoader> AssetLoaders => this.ObservableAssetLoaders;
+        public IList<IAssetLoader> AssetLoaders
+        {
+            get
+            {
+                SCore.DeprecationManager.Warn(
+                    source: this.ModName,
+                    nounPhrase: $"{nameof(IContentHelper)}.{nameof(IContentHelper.AssetLoaders)}",
+                    version: "3.14.0",
+                    severity: DeprecationLevel.Notice
+                );
+
+                return this.ObservableAssetLoaders;
+            }
+        }
 
         /// <inheritdoc />
-        public IList<IAssetEditor> AssetEditors => this.ObservableAssetEditors;
+        public IList<IAssetEditor> AssetEditors
+        {
+            get
+            {
+                SCore.DeprecationManager.Warn(
+                    source: this.ModName,
+                    nounPhrase: $"{nameof(IContentHelper)}.{nameof(IContentHelper.AssetEditors)}",
+                    version: "3.14.0",
+                    severity: DeprecationLevel.Notice
+                );
+
+                return this.ObservableAssetEditors;
+            }
+        }
 
 
         /*********
diff --git a/src/SMAPI/Framework/SCore.cs b/src/SMAPI/Framework/SCore.cs
index dd952dee..eab977ac 100644
--- a/src/SMAPI/Framework/SCore.cs
+++ b/src/SMAPI/Framework/SCore.cs
@@ -1609,9 +1609,28 @@ namespace StardewModdingAPI.Framework
                 {
                     // ReSharper disable SuspiciousTypeConversion.Global
                     if (metadata.Mod is IAssetEditor editor)
+                    {
+                        SCore.DeprecationManager.Warn(
+                            source: metadata.DisplayName,
+                            nounPhrase: $"{nameof(IAssetEditor)}",
+                            version: "3.14.0",
+                            severity: DeprecationLevel.Notice
+                        );
+
                         this.ContentCore.Editors.Add(new ModLinked<IAssetEditor>(metadata, editor));
+                    }
+
                     if (metadata.Mod is IAssetLoader loader)
+                    {
+                        SCore.DeprecationManager.Warn(
+                            source: metadata.DisplayName,
+                            nounPhrase: $"{nameof(IAssetLoader)}",
+                            version: "3.14.0",
+                            severity: DeprecationLevel.Notice
+                        );
+
                         this.ContentCore.Loaders.Add(new ModLinked<IAssetLoader>(metadata, loader));
+                    }
                     // ReSharper restore SuspiciousTypeConversion.Global
 
                     helper.ObservableAssetEditors.CollectionChanged += (sender, e) => this.OnAssetInterceptorsChanged(metadata, e.NewItems?.Cast<IAssetEditor>(), e.OldItems?.Cast<IAssetEditor>(), this.ContentCore.Editors);
-- 
cgit