summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2021-03-14 14:17:09 -0400
committerJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2021-03-14 14:17:09 -0400
commit6805c90e2cdac734341b692298670b0beb50faa6 (patch)
treefad2c0fc89c5338a8b231da28e3237b2a4ddf9bb /src
parent04388fe7e3b721358de25d64607d47d5f6113eda (diff)
downloadSMAPI-6805c90e2cdac734341b692298670b0beb50faa6.tar.gz
SMAPI-6805c90e2cdac734341b692298670b0beb50faa6.tar.bz2
SMAPI-6805c90e2cdac734341b692298670b0beb50faa6.zip
add asset propagation for interior door sprites
Diffstat (limited to 'src')
-rw-r--r--src/SMAPI/Metadata/CoreAssetPropagator.cs32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/SMAPI/Metadata/CoreAssetPropagator.cs b/src/SMAPI/Metadata/CoreAssetPropagator.cs
index 8b591bc1..ae56dc9c 100644
--- a/src/SMAPI/Metadata/CoreAssetPropagator.cs
+++ b/src/SMAPI/Metadata/CoreAssetPropagator.cs
@@ -366,6 +366,8 @@ namespace StardewModdingAPI.Metadata
foreach (ClickableTextureComponent button in new[] { menu.questButton, menu.zoomInButton, menu.zoomOutButton })
button.texture = Game1.mouseCursors;
}
+
+ this.ReloadDoorSprites(content, key);
return true;
case "loosesprites\\cursors2": // Game1.LoadContent
@@ -739,6 +741,36 @@ namespace StardewModdingAPI.Metadata
return critters.Length;
}
+ /// <summary>Reload the sprites for interior doors.</summary>
+ /// <param name="content">The content manager through which to reload the asset.</param>
+ /// <param name="key">The asset key to reload.</param>
+ /// <returns>Returns whether any doors were affected.</returns>
+ private bool ReloadDoorSprites(LocalizedContentManager content, string key)
+ {
+ Lazy<Texture2D> texture = new Lazy<Texture2D>(() => content.Load<Texture2D>(key));
+
+ foreach (GameLocation location in this.GetLocations())
+ {
+ IEnumerable<InteriorDoor> doors = location.interiorDoors?.Doors;
+ if (doors == null)
+ continue;
+
+ foreach (InteriorDoor door in doors)
+ {
+ if (door?.Sprite == null)
+ continue;
+
+ string textureName = this.NormalizeAssetNameIgnoringEmpty(this.Reflection.GetField<string>(door.Sprite, "textureName").GetValue());
+ if (textureName != key)
+ continue;
+
+ door.Sprite.texture = texture.Value;
+ }
+ }
+
+ return texture.IsValueCreated;
+ }
+
/// <summary>Reload the data for matching farm animals.</summary>
/// <returns>Returns whether any farm animals were affected.</returns>
/// <remarks>Derived from the <see cref="FarmAnimal"/> constructor.</remarks>