diff options
author | Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com> | 2021-03-14 14:17:09 -0400 |
---|---|---|
committer | Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com> | 2021-03-14 14:17:09 -0400 |
commit | 6805c90e2cdac734341b692298670b0beb50faa6 (patch) | |
tree | fad2c0fc89c5338a8b231da28e3237b2a4ddf9bb /src | |
parent | 04388fe7e3b721358de25d64607d47d5f6113eda (diff) | |
download | SMAPI-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.cs | 32 |
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> |