summaryrefslogtreecommitdiff
path: root/src/SMAPI/Framework/ContentManagers/GameContentManager.cs
AgeCommit message (Collapse)Author
2022-05-18fix asset type when checking if a mod asset existsJesse Plamondon-Willard
2022-05-15reduce performance impact of deprecation warningsJesse Plamondon-Willard
Creating a stack is *very* slow, so it should be avoided if possible until after the duplicate-warning check.
2022-05-11rewrite asset operations to reduce allocationsJesse Plamondon-Willard
• When raising AssetRequested, SMAPI now creates a single event args model and reuses it for each handler. • There's now a single AssetOperationGroup per asset, which tracks the loaders/editors registered by every mod for that asset. • The operation group's loader/editor lists are now used directly instead of querying them.
2022-05-04remove aggressive memory optimizations optionJesse Plamondon-Willard
2022-04-19move deprecation code into namespaceJesse Plamondon-Willard
2022-04-13enable nullable annotations in SMAPI where no logic changes are needed (#837)Jesse Plamondon-Willard
2022-04-11add IAssetDataForMap.ExtendMapJesse Plamondon-Willard
2022-04-06enable nullable annotations by default (#837)Jesse Plamondon-Willard
This adds `#nullable disable` to all existing code (except where null is impossible like enum files), so it can be migrated incrementally.
2022-04-06simplify 'is not' patternsJesse Plamondon-Willard
2022-03-27add asset type to AssetRequested event (#766)Jesse Plamondon-Willard
2022-03-26update asset propagation for new content API (#766)Jesse Plamondon-Willard
2022-03-26rewrite content loading to allow handling locale variants (#766, #786, #812)Jesse Plamondon-Willard
The game's content pipeline automatically loads localized variants if present. For example, it will try to load "Maps/cave.fr-FR", then "Maps/cave_international", then "Maps/cave". The old content API obfuscates this logic and treats them as interchangeable, which causes edge cases like bundle corruption (#812). This commit rewrites the loading logic to match the game logic when using the new content events, while maintaining the legacy behavior for the old IAssetLoader/IAssetEditor interfaces that'll be removed in SMAPI 4.0.0.
2022-03-26add asset edit priority (#766)Jesse Plamondon-Willard
2022-03-25extend load conflict resolution into load priority (#766)Jesse Plamondon-Willard
2022-03-25add load conflict resolution option (#766)Jesse Plamondon-Willard
2022-03-25add content pack label to more logs (#766)Jesse Plamondon-Willard
2022-03-25fix asset load conflict always showing multiple-mod formJesse Plamondon-Willard
2022-03-25add content pack labels (#766)Jesse Plamondon-Willard
2022-03-25add AssetReady content event (#766)Jesse Plamondon-Willard
2022-03-22encapsulate & cache asset operation groups (#766)Jesse Plamondon-Willard
This is needed for the upcoming Stardew Valley 1.6 to avoid duplicate checks between DoesAssetExist and Load calls, and to make sure the answer doesn't change between them.
2022-03-20encapsulate editor/loader operations (#766)Jesse Plamondon-Willard
These will be used by the new content API, and allow handling the old one the same way.
2022-03-05handle vanilla assets in DoesAssetExist (#766)Jesse Plamondon-Willard
2022-03-05add DoesAssetExist to support the upcoming Stardew Valley 1.6 (#766)Jesse Plamondon-Willard
2022-03-05migrate more internal code to IAssetName (#766)Jesse Plamondon-Willard
2022-02-18add AssetName to encapsulate asset name handling (#766)Jesse Plamondon-Willard
2021-12-20auto-fix maps broken due to missing vanilla tilesheetJesse Plamondon-Willard
2021-11-28update for custom languagesJesse Plamondon-Willard
2021-09-18add simpler error when an asset isn't foundJesse Plamondon-Willard
2021-07-30migrate to the new Harmony patch pattern used in my modsJesse Plamondon-Willard
That improves validation and error-handling.
2021-03-14fix some assets not reapplied correctly when playing in non-English and ↵Jesse Plamondon-Willard
returning to title
2021-02-21use inheritdoc, minor cleanupJesse Plamondon-Willard
2021-02-21reduce performance impact of new cache fixJesse Plamondon-Willard
2021-01-31add experimental 'aggressive memory optimization' flag (#757)Jesse Plamondon-Willard
2021-01-20correct linksJesse Plamondon-Willard
2021-01-06simplify tilesheet order warningJesse Plamondon-Willard
2021-01-06rework vanilla tilesheet checking to avoid keeping a copy of the vanilla ↵Jesse Plamondon-Willard
maps in memory
2021-01-02detect and block map replacements that would crash the game due to tilesheet ↵Jesse Plamondon-Willard
changes
2020-12-26fix SMAPI using a cached translation when the game asks for an untranslated ↵Jesse Plamondon-Willard
asset This mainly affects community center bundles in Stardew Valley 1.5,
2020-12-20update for localized asset changesJesse Plamondon-Willard
2020-07-26use ordinal comparison/sorting instead of invariantJesse Plamondon-Willard
2020-02-19call IAssetEditor with actual type if applicableJesse Plamondon-Willard
2020-01-30rework asset editor/loader tracking so they're affected by load orderJesse Plamondon-Willard
2019-12-14refactor cache invalidation & propagation to allow for future optimizationsJesse Plamondon-Willard
2019-12-14don't keep a reference to uncached assetsJesse Plamondon-Willard
2019-09-14fix asset changes not affecting cached asset loads in a specific caseJesse Plamondon-Willard
2019-09-14fix typos and inconsistent spellingJesse Plamondon-Willard
2019-09-14fix error when loading a mod asset through a translated content manager (#647)Jesse Plamondon-Willard
2019-09-14disable mod-level asset caching (#644)Jesse Plamondon-Willard
This fixes an issue where some asset references could be shared between content managers, causing changes to propagate unintentionally.
2019-09-14ignore root content managers when handling managed asset keys (#644)Jesse Plamondon-Willard
2019-09-14fix cache misses for non-English playersJesse Plamondon-Willard