summaryrefslogtreecommitdiff
path: root/src/SMAPI/Framework
diff options
context:
space:
mode:
Diffstat (limited to 'src/SMAPI/Framework')
-rw-r--r--src/SMAPI/Framework/ContentManagers/ModContentManager.cs53
1 files changed, 34 insertions, 19 deletions
diff --git a/src/SMAPI/Framework/ContentManagers/ModContentManager.cs b/src/SMAPI/Framework/ContentManagers/ModContentManager.cs
index 2c73e861..de05e92d 100644
--- a/src/SMAPI/Framework/ContentManagers/ModContentManager.cs
+++ b/src/SMAPI/Framework/ContentManagers/ModContentManager.cs
@@ -117,7 +117,9 @@ namespace StardewModdingAPI.Framework.ContentManagers
{
// XNB file
case ".xnb":
- return this.RawLoad<T>(assetName, useCache: false);
+ {
+ return this.RawLoad<T>(assetName, useCache: false);
+ }
// unpacked data
case ".json":
@@ -129,29 +131,34 @@ namespace StardewModdingAPI.Framework.ContentManagers
// unpacked image
case ".png":
- // validate
- if (typeof(T) != typeof(Texture2D))
- throw GetContentError($"can't read file with extension '{file.Extension}' as type '{typeof(T)}'; must be type '{typeof(Texture2D)}'.");
-
- // fetch & cache
- using (FileStream stream = File.OpenRead(file.FullName))
{
- Texture2D texture = Texture2D.FromStream(Game1.graphics.GraphicsDevice, stream);
- texture = this.PremultiplyTransparency(texture);
- return (T)(object)texture;
+ // validate
+ if (typeof(T) != typeof(Texture2D))
+ throw GetContentError($"can't read file with extension '{file.Extension}' as type '{typeof(T)}'; must be type '{typeof(Texture2D)}'.");
+
+ // fetch & cache
+ using (FileStream stream = File.OpenRead(file.FullName))
+ {
+ Texture2D texture = Texture2D.FromStream(Game1.graphics.GraphicsDevice, stream);
+ texture = this.PremultiplyTransparency(texture);
+ return (T)(object)texture;
+ }
}
// unpacked map
case ".tbin":
- // validate
- if (typeof(T) != typeof(Map))
- throw GetContentError($"can't read file with extension '{file.Extension}' as type '{typeof(T)}'; must be type '{typeof(Map)}'.");
-
- // fetch & cache
- FormatManager formatManager = FormatManager.Instance;
- Map map = formatManager.LoadMap(file.FullName);
- this.FixCustomTilesheetPaths(map, relativeMapPath: assetName);
- return (T)(object)map;
+ {
+ // validate
+ if (typeof(T) != typeof(Map))
+ throw GetContentError($"can't read file with extension '{file.Extension}' as type '{typeof(T)}'; must be type '{typeof(Map)}'.");
+
+ // fetch & cache
+ FormatManager formatManager = FormatManager.Instance;
+ Map map = formatManager.LoadMap(file.FullName);
+ this.FixCustomTilesheetPaths(map, relativeMapPath: assetName);
+ this.NormaliseTilesheetPaths(map);
+ return (T)(object)map;
+ }
default:
throw GetContentError($"unknown file extension '{file.Extension}'; must be one of '.json', '.png', '.tbin', or '.xnb'.");
@@ -232,6 +239,14 @@ namespace StardewModdingAPI.Framework.ContentManagers
return texture;
}
+ /// <summary>Normalise map tilesheet paths for the current platform.</summary>
+ /// <param name="map">The map whose tilesheets to fix.</param>
+ private void NormaliseTilesheetPaths(Map map)
+ {
+ foreach (TileSheet tilesheet in map.TileSheets)
+ tilesheet.ImageSource = this.NormalisePathSeparators(tilesheet.ImageSource);
+ }
+
/// <summary>Fix custom map tilesheet paths so they can be found by the content manager.</summary>
/// <param name="map">The map whose tilesheets to fix.</param>
/// <param name="relativeMapPath">The relative map path within the mod folder.</param>