summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2022-07-05 19:01:28 -0400
committerJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2022-07-05 19:01:28 -0400
commitf3a4b316b7294fea897514a08c45bc9d926a00c6 (patch)
tree033d004be37938bbeeaf20e26b73b89a80d04530
parentbd88727948fc8066ec7d788ff4647b4c78168b3d (diff)
downloadSMAPI-f3a4b316b7294fea897514a08c45bc9d926a00c6.tar.gz
SMAPI-f3a4b316b7294fea897514a08c45bc9d926a00c6.tar.bz2
SMAPI-f3a4b316b7294fea897514a08c45bc9d926a00c6.zip
fix PyTK compatibility mode not handling some edge cases
-rw-r--r--docs/release-notes.md2
-rw-r--r--src/SMAPI/Framework/ContentManagers/ModContentManager.cs27
2 files changed, 8 insertions, 21 deletions
diff --git a/docs/release-notes.md b/docs/release-notes.md
index 414396f4..3bc8724b 100644
--- a/docs/release-notes.md
+++ b/docs/release-notes.md
@@ -11,6 +11,8 @@
* For players:
* Fixed lag which occurred for some players since Stardew Valley 1.5.5.
* Fixed `smapi-internal/config.user.json` overrides not applied after SMAPI 3.14.0.
+ * Fixed PyTK not rescaling images correctly in some cases.
+ _When PyTK 1.23.0 or earlier is installed, this will disable the main performance improvements in SMAPI 3.15.0._
* For mod authors:
* The [FluentHttpClient package](https://github.com/Pathoschild/FluentHttpClient#readme) is now loaded by SMAPI.
diff --git a/src/SMAPI/Framework/ContentManagers/ModContentManager.cs b/src/SMAPI/Framework/ContentManagers/ModContentManager.cs
index 8c5d0f84..f3cf05d9 100644
--- a/src/SMAPI/Framework/ContentManagers/ModContentManager.cs
+++ b/src/SMAPI/Framework/ContentManagers/ModContentManager.cs
@@ -1,5 +1,4 @@
using System;
-using System.Collections.Generic;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
@@ -47,9 +46,6 @@ namespace StardewModdingAPI.Framework.ContentManagers
/// <summary>If a map tilesheet's image source has no file extensions, the file extensions to check for in the local mod folder.</summary>
private static readonly string[] LocalTilesheetExtensions = { ".png", ".xnb" };
- /// <summary>A lookup of image file paths to whether they have PyTK scaling information.</summary>
- private static readonly Dictionary<string, bool> IsPyTkScaled = new(StringComparer.OrdinalIgnoreCase);
-
/*********
** Accessors
@@ -211,24 +207,13 @@ namespace StardewModdingAPI.Framework.ContentManagers
{
if (ModContentManager.EnablePyTkLegacyMode)
{
- if (!ModContentManager.IsPyTkScaled.TryGetValue(file.FullName, out bool isScaled))
- {
- string? dirPath = file.DirectoryName;
- string fileName = $"{Path.GetFileNameWithoutExtension(file.Name)}.pytk.json";
-
- string path = dirPath is not null
- ? Path.Combine(dirPath, fileName)
- : fileName;
-
- ModContentManager.IsPyTkScaled[file.FullName] = isScaled = File.Exists(path);
- }
-
- asRawData = !isScaled;
- if (!asRawData)
- this.Monitor.LogOnce("Enabled compatibility mode for PyTK scaled textures. This won't cause any issues, but may impact performance.", LogLevel.Warn);
+ // PyTK intercepts Texture2D file loads to rescale them (e.g. for HD portraits),
+ // but doesn't support IRawTextureData loads yet. We can't just check if the
+ // current file has a '.pytk.json' rescale file though, since PyTK may still
+ // rescale it if the original asset or another edit gets rescaled.
+ asRawData = false;
+ this.Monitor.LogOnce("Enabled compatibility mode for PyTK 1.23.0 or earlier. This won't cause any issues, but may impact performance.", LogLevel.Warn);
}
- else
- asRawData = true;
}
// load