diff options
Diffstat (limited to 'src/SMAPI/Framework')
7 files changed, 15 insertions, 11 deletions
diff --git a/src/SMAPI/Framework/ContentCoordinator.cs b/src/SMAPI/Framework/ContentCoordinator.cs index ee8b6893..108257bf 100644 --- a/src/SMAPI/Framework/ContentCoordinator.cs +++ b/src/SMAPI/Framework/ContentCoordinator.cs @@ -315,9 +315,10 @@ namespace StardewModdingAPI.Framework } /// <summary>Get whether an asset from a mod folder exists.</summary> + /// <typeparam name="T">The expected asset type.</typeparam> /// <param name="contentManagerID">The unique name for the content manager which should load this asset.</param> /// <param name="assetName">The asset name within the mod folder.</param> - public bool DoesManagedAssetExist(string contentManagerID, IAssetName assetName) + public bool DoesManagedAssetExist<T>(string contentManagerID, IAssetName assetName) { // get content manager IContentManager contentManager = this.ContentManagerLock.InReadLock(() => @@ -327,7 +328,7 @@ namespace StardewModdingAPI.Framework throw new InvalidOperationException($"The '{contentManagerID}' prefix isn't handled by any mod."); // get whether the asset exists - return contentManager.DoesAssetExist(assetName); + return contentManager.DoesAssetExist<T>(assetName); } /// <summary>Get a copy of an asset from a mod folder.</summary> diff --git a/src/SMAPI/Framework/ContentManagers/BaseContentManager.cs b/src/SMAPI/Framework/ContentManagers/BaseContentManager.cs index 1ca84792..f41a9354 100644 --- a/src/SMAPI/Framework/ContentManagers/BaseContentManager.cs +++ b/src/SMAPI/Framework/ContentManagers/BaseContentManager.cs @@ -97,7 +97,7 @@ namespace StardewModdingAPI.Framework.ContentManagers } /// <inheritdoc /> - public virtual bool DoesAssetExist(IAssetName assetName) + public virtual bool DoesAssetExist<T>(IAssetName assetName) { return this.Cache.ContainsKey(assetName.Name); } diff --git a/src/SMAPI/Framework/ContentManagers/GameContentManager.cs b/src/SMAPI/Framework/ContentManagers/GameContentManager.cs index 0fcad30a..3d37e32a 100644 --- a/src/SMAPI/Framework/ContentManagers/GameContentManager.cs +++ b/src/SMAPI/Framework/ContentManagers/GameContentManager.cs @@ -58,9 +58,9 @@ namespace StardewModdingAPI.Framework.ContentManagers } /// <inheritdoc /> - public override bool DoesAssetExist(IAssetName assetName) + public override bool DoesAssetExist<T>(IAssetName assetName) { - if (base.DoesAssetExist(assetName)) + if (base.DoesAssetExist<T>(assetName)) return true; // vanilla asset @@ -69,11 +69,11 @@ namespace StardewModdingAPI.Framework.ContentManagers // managed asset if (this.Coordinator.TryParseManagedAssetKey(assetName.Name, out string contentManagerID, out IAssetName relativePath)) - return this.Coordinator.DoesManagedAssetExist(contentManagerID, relativePath); + return this.Coordinator.DoesManagedAssetExist<T>(contentManagerID, relativePath); // custom asset from a loader string locale = this.GetLocale(); - IAssetInfo info = new AssetInfo(locale, assetName, typeof(object), this.AssertAndNormalizeAssetName); + IAssetInfo info = new AssetInfo(locale, assetName, typeof(T), this.AssertAndNormalizeAssetName); AssetLoadOperation[] loaders = this.GetLoaders<object>(info).ToArray(); if (!this.AssertMaxOneRequiredLoader(info, loaders, out string error)) diff --git a/src/SMAPI/Framework/ContentManagers/IContentManager.cs b/src/SMAPI/Framework/ContentManagers/IContentManager.cs index 774b20d9..90095492 100644 --- a/src/SMAPI/Framework/ContentManagers/IContentManager.cs +++ b/src/SMAPI/Framework/ContentManagers/IContentManager.cs @@ -29,8 +29,9 @@ namespace StardewModdingAPI.Framework.ContentManagers ** Methods *********/ /// <summary>Get whether an asset exists and can be loaded.</summary> + /// <typeparam name="T">The expected asset type.</typeparam> /// <param name="assetName">The normalized asset name.</param> - bool DoesAssetExist(IAssetName assetName); + bool DoesAssetExist<T>(IAssetName assetName); /// <summary>Load an asset through the content pipeline, using a localized variant of the <paramref name="assetName"/> if available.</summary> /// <typeparam name="T">The type of asset to load.</typeparam> diff --git a/src/SMAPI/Framework/ContentManagers/ModContentManager.cs b/src/SMAPI/Framework/ContentManagers/ModContentManager.cs index 375b5e0e..2a5a3f16 100644 --- a/src/SMAPI/Framework/ContentManagers/ModContentManager.cs +++ b/src/SMAPI/Framework/ContentManagers/ModContentManager.cs @@ -66,9 +66,9 @@ namespace StardewModdingAPI.Framework.ContentManagers } /// <inheritdoc /> - public override bool DoesAssetExist(IAssetName assetName) + public override bool DoesAssetExist<T>(IAssetName assetName) { - if (base.DoesAssetExist(assetName)) + if (base.DoesAssetExist<T>(assetName)) return true; FileInfo file = this.GetModFile(assetName.Name); diff --git a/src/SMAPI/Framework/ModHelpers/ContentHelper.cs b/src/SMAPI/Framework/ModHelpers/ContentHelper.cs index 5d58ee26..3a5c8938 100644 --- a/src/SMAPI/Framework/ModHelpers/ContentHelper.cs +++ b/src/SMAPI/Framework/ModHelpers/ContentHelper.cs @@ -44,9 +44,11 @@ namespace StardewModdingAPI.Framework.ModHelpers public LocalizedContentManager.LanguageCode CurrentLocaleConstant => this.GameContentManager.Language; /// <summary>The observable implementation of <see cref="AssetEditors"/>.</summary> + [Obsolete] internal ObservableCollection<IAssetEditor> ObservableAssetEditors { get; } = new(); /// <summary>The observable implementation of <see cref="AssetLoaders"/>.</summary> + [Obsolete] internal ObservableCollection<IAssetLoader> ObservableAssetLoaders { get; } = new(); /// <inheritdoc /> diff --git a/src/SMAPI/Framework/SCore.cs b/src/SMAPI/Framework/SCore.cs index 5deb177c..efdfabe7 100644 --- a/src/SMAPI/Framework/SCore.cs +++ b/src/SMAPI/Framework/SCore.cs @@ -1151,7 +1151,7 @@ namespace StardewModdingAPI.Framework this.EventManager.AssetRequested.Raise( invoke: (mod, invoke) => { - AssetRequestedEventArgs args = new(mod, asset.Name, asset.NameWithoutLocale, this.GetOnBehalfOfContentPack); + AssetRequestedEventArgs args = new(mod, asset.Name, asset.NameWithoutLocale, asset.DataType, this.GetOnBehalfOfContentPack); invoke(args); |