usingSystem;usingSystem.Collections.Generic;usingSystem.Diagnostics.CodeAnalysis;usingSystem.IO;usingSystem.Linq;usingMicrosoft.Xna.Framework;usingMicrosoft.Xna.Framework.Graphics;usingStardewModdingAPI.Framework.ContentManagers;usingStardewModdingAPI.Framework.Reflection;usingStardewModdingAPI.Framework.Utilities;usingStardewModdingAPI.Internal;usingStardewModdingAPI.Toolkit.Utilities;usingStardewValley;usingStardewValley.BellsAndWhistles;usingStardewValley.Buildings;usingStardewValley.Characters;usingStardewValley.GameData.Movies;usingStardewValley.Locations;usingStardewValley.Menus;usingStardewValley.Objects;usingStardewValley.Projectiles;usingStardewValley.TerrainFeatures;usingxTile;usingxTile.Tiles;namespaceStardewModdingAPI.Metadata{/// <summary>Propagates changes to core assets to the game state.</summary>internalclassCoreAssetPropagator{/********* ** Fields *********//// <summary>The main content manager through which to reload assets.</summary>privatereadonlyLocalizedContentManagerMainContentManager;/// <summary>An internal content manager used only for asset propagation. See remarks on <see cref="GameContentManagerForAssetPropagation"/>.</summary>privatereadonlyGameContentManagerForAssetPropagationDisposableContentManager;/// <summary>Writes messages to the console.</summary>privatereadonlyIMonitorMonitor;/// <summary>The multiplayer instance whose map cache to update.</summary>privatereadonlyMultiplayerMultiplayer;/// <summary>Simplifies access to private game code.</summary>privatereadonlyReflectorReflection;/// <summary>Parse a raw asset name.</summary>privatereadonlyFunc<string,IAssetName>ParseAssetName;/// <summary>Optimized bucket categories for batch reloading assets.</summary>privateenumAssetBucket{/// <summary>NPC overworld sprites.</summary>Sprite,/// <summary>Villager dialogue portraits.</summary>Portrait,/// <summary>Any other asset.</summary>Other};/// <summary>A cache of world data fetched for the current tick.</summary>privatereadonlyTickCacheDictionary<string>WorldCache=new();/********* ** Public methods *********//// <summary>Initialize the core asset data.</summary>/// <param name="mainContent">The main content manager through which to reload assets.</param>/// <param name="disposableContent">An internal content manager used only for asset propagation.</param>/// <param name="monitor">Writes messages to the console.</param>/// <param name="multiplayer">The multiplayer instance whose map cache to update.</param>/// <param name="reflection">Simplifies access to private code.</param>/// <param name=&qu