drop UseRawImageLoading option
Raw image loading is now always enabled, except in PyTK compatibility mode.
This commit is contained in:
parent
b78b269cf5
commit
27856ebea2
|
@ -16,6 +16,7 @@
|
|||
* Optimized performance and memory usage (thanks to atravita!).
|
||||
* Other internal optimizations.
|
||||
* Added more file extensions to ignore when searching for mod folders: `.7z`, `.tar`, `.tar.gz`, and `.xcf` (thanks to atravita!).
|
||||
* Removed `UseRawImageLoading` option. This is now always enabled, except when PyTK is installed.
|
||||
* Fixed update alerts incorrectly shown for prerelease versions on GitHub that aren't marked as prerelease.
|
||||
|
||||
* For mod authors:
|
||||
|
|
|
@ -34,9 +34,6 @@ namespace StardewModdingAPI.Framework
|
|||
/// <summary>An asset key prefix for assets from SMAPI mod folders.</summary>
|
||||
private readonly string ManagedPrefix = "SMAPI";
|
||||
|
||||
/// <summary>Whether to use raw image data when possible, instead of initializing an XNA Texture2D instance through the GPU.</summary>
|
||||
private readonly bool UseRawImageLoading;
|
||||
|
||||
/// <summary>Get a file lookup for the given directory.</summary>
|
||||
private readonly Func<string, IFileLookup> GetFileLookup;
|
||||
|
||||
|
@ -139,8 +136,7 @@ namespace StardewModdingAPI.Framework
|
|||
/// <param name="getFileLookup">Get a file lookup for the given directory.</param>
|
||||
/// <param name="onAssetsInvalidated">A callback to invoke when any asset names have been invalidated from the cache.</param>
|
||||
/// <param name="requestAssetOperations">Get the load/edit operations to apply to an asset by querying registered <see cref="IContentEvents.AssetRequested"/> event handlers.</param>
|
||||
/// <param name="useRawImageLoading">Whether to use raw image data when possible, instead of initializing an XNA Texture2D instance through the GPU.</param>
|
||||
public ContentCoordinator(IServiceProvider serviceProvider, string rootDirectory, CultureInfo currentCulture, IMonitor monitor, Reflector reflection, JsonHelper jsonHelper, Action onLoadingFirstAsset, Action<BaseContentManager, IAssetName> onAssetLoaded, Func<string, IFileLookup> getFileLookup, Action<IList<IAssetName>> onAssetsInvalidated, Func<IAssetInfo, AssetOperationGroup?> requestAssetOperations, bool useRawImageLoading)
|
||||
public ContentCoordinator(IServiceProvider serviceProvider, string rootDirectory, CultureInfo currentCulture, IMonitor monitor, Reflector reflection, JsonHelper jsonHelper, Action onLoadingFirstAsset, Action<BaseContentManager, IAssetName> onAssetLoaded, Func<string, IFileLookup> getFileLookup, Action<IList<IAssetName>> onAssetsInvalidated, Func<IAssetInfo, AssetOperationGroup?> requestAssetOperations)
|
||||
{
|
||||
this.GetFileLookup = getFileLookup;
|
||||
this.Monitor = monitor ?? throw new ArgumentNullException(nameof(monitor));
|
||||
|
@ -151,7 +147,6 @@ namespace StardewModdingAPI.Framework
|
|||
this.OnAssetsInvalidated = onAssetsInvalidated;
|
||||
this.RequestAssetOperations = requestAssetOperations;
|
||||
this.FullRootDirectory = Path.Combine(Constants.GamePath, rootDirectory);
|
||||
this.UseRawImageLoading = useRawImageLoading;
|
||||
this.ContentManagers.Add(
|
||||
this.MainContentManager = new GameContentManager(
|
||||
name: "Game1.content",
|
||||
|
@ -230,8 +225,7 @@ namespace StardewModdingAPI.Framework
|
|||
reflection: this.Reflection,
|
||||
jsonHelper: this.JsonHelper,
|
||||
onDisposing: this.OnDisposing,
|
||||
fileLookup: this.GetFileLookup(rootDirectory),
|
||||
useRawImageLoading: this.UseRawImageLoading
|
||||
fileLookup: this.GetFileLookup(rootDirectory)
|
||||
);
|
||||
this.ContentManagers.Add(manager);
|
||||
return manager;
|
||||
|
|
|
@ -30,9 +30,6 @@ namespace StardewModdingAPI.Framework.ContentManagers
|
|||
/*********
|
||||
** Fields
|
||||
*********/
|
||||
/// <summary>Whether to use raw image data when possible, instead of initializing an XNA Texture2D instance through the GPU.</summary>
|
||||
private readonly bool UseRawImageLoading;
|
||||
|
||||
/// <summary>Encapsulates SMAPI's JSON file parsing.</summary>
|
||||
private readonly JsonHelper JsonHelper;
|
||||
|
||||
|
@ -74,15 +71,13 @@ namespace StardewModdingAPI.Framework.ContentManagers
|
|||
/// <param name="jsonHelper">Encapsulates SMAPI's JSON file parsing.</param>
|
||||
/// <param name="onDisposing">A callback to invoke when the content manager is being disposed.</param>
|
||||
/// <param name="fileLookup">A lookup for files within the <paramref name="rootDirectory"/>.</param>
|
||||
/// <param name="useRawImageLoading">Whether to use raw image data when possible, instead of initializing an XNA Texture2D instance through the GPU.</param>
|
||||
public ModContentManager(string name, IContentManager gameContentManager, IServiceProvider serviceProvider, string modName, string rootDirectory, CultureInfo currentCulture, ContentCoordinator coordinator, IMonitor monitor, Reflector reflection, JsonHelper jsonHelper, Action<BaseContentManager> onDisposing, IFileLookup fileLookup, bool useRawImageLoading)
|
||||
public ModContentManager(string name, IContentManager gameContentManager, IServiceProvider serviceProvider, string modName, string rootDirectory, CultureInfo currentCulture, ContentCoordinator coordinator, IMonitor monitor, Reflector reflection, JsonHelper jsonHelper, Action<BaseContentManager> onDisposing, IFileLookup fileLookup)
|
||||
: base(name, serviceProvider, rootDirectory, currentCulture, coordinator, monitor, reflection, onDisposing, isNamespaced: true)
|
||||
{
|
||||
this.GameContentManager = gameContentManager;
|
||||
this.FileLookup = fileLookup;
|
||||
this.JsonHelper = jsonHelper;
|
||||
this.ModName = modName;
|
||||
this.UseRawImageLoading = useRawImageLoading;
|
||||
|
||||
this.TryLocalizeKeys = false;
|
||||
}
|
||||
|
@ -205,18 +200,17 @@ namespace StardewModdingAPI.Framework.ContentManagers
|
|||
{
|
||||
this.AssertValidType<T>(assetName, file, typeof(Texture2D), typeof(IRawTextureData));
|
||||
bool returnRawData = typeof(T).IsAssignableTo(typeof(IRawTextureData));
|
||||
bool loadRawData =
|
||||
returnRawData
|
||||
|| (
|
||||
this.UseRawImageLoading
|
||||
#if SMAPI_DEPRECATED
|
||||
&& !this.ShouldDisableIntermediateRawDataLoad<T>(assetName, file)
|
||||
#endif
|
||||
);
|
||||
|
||||
// load
|
||||
if (loadRawData)
|
||||
#if SMAPI_DEPRECATED
|
||||
if (!returnRawData && this.ShouldDisableIntermediateRawDataLoad<T>(assetName, file))
|
||||
{
|
||||
using FileStream stream = File.OpenRead(file.FullName);
|
||||
Texture2D texture = Texture2D.FromStream(Game1.graphics.GraphicsDevice, stream).SetName(assetName);
|
||||
this.PremultiplyTransparency(texture);
|
||||
return (T)(object)texture;
|
||||
}
|
||||
#endif
|
||||
|
||||
IRawTextureData raw = this.LoadRawImageData(file, returnRawData);
|
||||
|
||||
if (returnRawData)
|
||||
|
@ -228,14 +222,6 @@ namespace StardewModdingAPI.Framework.ContentManagers
|
|||
return (T)(object)texture;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
using FileStream stream = File.OpenRead(file.FullName);
|
||||
Texture2D texture = Texture2D.FromStream(Game1.graphics.GraphicsDevice, stream).SetName(assetName);
|
||||
this.PremultiplyTransparency(texture);
|
||||
return (T)(object)texture;
|
||||
}
|
||||
}
|
||||
|
||||
#if SMAPI_DEPRECATED
|
||||
/// <summary>Get whether to disable loading an image as <see cref="IRawTextureData"/> before building a <see cref="Texture2D"/> instance. This isn't called if the mod requested <see cref="IRawTextureData"/> directly.</summary>
|
||||
|
|
|
@ -22,7 +22,6 @@ namespace StardewModdingAPI.Framework.Models
|
|||
[nameof(WebApiBaseUrl)] = "https://smapi.io/api/",
|
||||
[nameof(LogNetworkTraffic)] = false,
|
||||
[nameof(RewriteMods)] = true,
|
||||
[nameof(UseRawImageLoading)] = true,
|
||||
[nameof(UseCaseInsensitivePaths)] = Constants.Platform is Platform.Android or Platform.Linux,
|
||||
[nameof(SuppressHarmonyDebugMode)] = true
|
||||
};
|
||||
|
@ -68,9 +67,6 @@ namespace StardewModdingAPI.Framework.Models
|
|||
/// <summary>Whether SMAPI should rewrite mods for compatibility.</summary>
|
||||
public bool RewriteMods { get; set; }
|
||||
|
||||
/// <summary>Whether to use raw image data when possible, instead of initializing an XNA Texture2D instance through the GPU.</summary>
|
||||
public bool UseRawImageLoading { get; set; }
|
||||
|
||||
/// <summary>Whether to make SMAPI file APIs case-insensitive, even on Linux.</summary>
|
||||
public bool UseCaseInsensitivePaths { get; set; }
|
||||
|
||||
|
@ -99,13 +95,12 @@ namespace StardewModdingAPI.Framework.Models
|
|||
/// <param name="webApiBaseUrl">The base URL for SMAPI's web API, used to perform update checks.</param>
|
||||
/// <param name="verboseLogging">The log contexts for which to enable verbose logging, which may show a lot more information to simplify troubleshooting.</param>
|
||||
/// <param name="rewriteMods">Whether SMAPI should rewrite mods for compatibility.</param>
|
||||
/// <param name="useRawImageLoading">Whether to use raw image data when possible, instead of initializing an XNA Texture2D instance through the GPU.</param>
|
||||
/// <param name="useCaseInsensitivePaths">>Whether to make SMAPI file APIs case-insensitive, even on Linux.</param>
|
||||
/// <param name="logNetworkTraffic">Whether SMAPI should log network traffic.</param>
|
||||
/// <param name="consoleColors">The colors to use for text written to the SMAPI console.</param>
|
||||
/// <param name="suppressHarmonyDebugMode">Whether to prevent mods from enabling Harmony's debug mode, which impacts performance and creates a file on your desktop. Debug mode should never be enabled by a released mod.</param>
|
||||
/// <param name="suppressUpdateChecks">The mod IDs SMAPI should ignore when performing update checks or validating update keys.</param>
|
||||
public SConfig(bool developerMode, bool? checkForUpdates, bool? paranoidWarnings, bool? useBetaChannel, string gitHubProjectName, string webApiBaseUrl, string[]? verboseLogging, bool? rewriteMods, bool? useRawImageLoading, bool? useCaseInsensitivePaths, bool? logNetworkTraffic, ColorSchemeConfig consoleColors, bool? suppressHarmonyDebugMode, string[]? suppressUpdateChecks)
|
||||
public SConfig(bool developerMode, bool? checkForUpdates, bool? paranoidWarnings, bool? useBetaChannel, string gitHubProjectName, string webApiBaseUrl, string[]? verboseLogging, bool? rewriteMods, bool? useCaseInsensitivePaths, bool? logNetworkTraffic, ColorSchemeConfig consoleColors, bool? suppressHarmonyDebugMode, string[]? suppressUpdateChecks)
|
||||
{
|
||||
this.DeveloperMode = developerMode;
|
||||
this.CheckForUpdates = checkForUpdates ?? (bool)SConfig.DefaultValues[nameof(this.CheckForUpdates)];
|
||||
|
@ -115,7 +110,6 @@ namespace StardewModdingAPI.Framework.Models
|
|||
this.WebApiBaseUrl = webApiBaseUrl;
|
||||
this.VerboseLogging = new HashSet<string>(verboseLogging ?? Array.Empty<string>(), StringComparer.OrdinalIgnoreCase);
|
||||
this.RewriteMods = rewriteMods ?? (bool)SConfig.DefaultValues[nameof(this.RewriteMods)];
|
||||
this.UseRawImageLoading = useRawImageLoading ?? (bool)SConfig.DefaultValues[nameof(this.UseRawImageLoading)];
|
||||
this.UseCaseInsensitivePaths = useCaseInsensitivePaths ?? (bool)SConfig.DefaultValues[nameof(this.UseCaseInsensitivePaths)];
|
||||
this.LogNetworkTraffic = logNetworkTraffic ?? (bool)SConfig.DefaultValues[nameof(this.LogNetworkTraffic)];
|
||||
this.ConsoleColors = consoleColors;
|
||||
|
|
|
@ -1333,8 +1333,7 @@ namespace StardewModdingAPI.Framework
|
|||
onAssetLoaded: this.OnAssetLoaded,
|
||||
onAssetsInvalidated: this.OnAssetsInvalidated,
|
||||
getFileLookup: this.GetFileLookup,
|
||||
requestAssetOperations: this.RequestAssetOperations,
|
||||
useRawImageLoading: this.Settings.UseRawImageLoading
|
||||
requestAssetOperations: this.RequestAssetOperations
|
||||
);
|
||||
if (this.ContentCore.Language != this.Translator.LocaleEnum)
|
||||
this.Translator.SetLocale(this.ContentCore.GetLocale(), this.ContentCore.Language);
|
||||
|
|
|
@ -54,12 +54,6 @@ copy all the settings, or you may cause bugs due to overridden changes in future
|
|||
*/
|
||||
"UseCaseInsensitivePaths": null,
|
||||
|
||||
/**
|
||||
* Whether to use raw image data when possible, instead of initializing an XNA Texture2D
|
||||
* instance through the GPU.
|
||||
*/
|
||||
"UseRawImageLoading": true,
|
||||
|
||||
/**
|
||||
* Whether to add a section to the 'mod issues' list for mods which directly use potentially
|
||||
* sensitive .NET APIs like file or shell access. Note that many mods do this legitimately as
|
||||
|
|
Loading…
Reference in New Issue