summaryrefslogtreecommitdiff
path: root/src/SMAPI/Framework/ContentCoordinator.cs
AgeCommit message (Collapse)Author
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-08use records for asset edit operationsJesse Plamondon-Willard
2022-05-08optimize case where there's no legacy IAssetLoader/IAssetEditor instancesJesse Plamondon-Willard
2022-05-07simplify and rewrite case-insensitive file path featureJesse Plamondon-Willard
2022-05-06cache legacy asset operations by target typeJesse Plamondon-Willard
2022-05-06cache asset operation instances created legacy interceptorsJesse Plamondon-Willard
2022-05-04remove aggressive memory optimizations optionJesse Plamondon-Willard
2022-05-04disable case-insensitive paths by default pending performance reworkJesse Plamondon-Willard
2022-04-26fix locale change for legacy IAssetEditor/Loader implementationsJesse Plamondon-Willard
2022-04-23fix ReplaceWith not working for legacy IAssetEditor implementationsJesse Plamondon-Willard
2022-04-16move case-insensitive path lookup into toolkit for reuseJesse Plamondon-Willard
2022-04-16make EntryDll manifest field case-insensitiveJesse 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-06fix all warnings to simplify migration to nullable annotations (#837)Jesse 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-02add temporary hack to fix compatibility between old & new APIs for some modsJesse Plamondon-Willard
2022-04-01make mod file paths case-insensitive in all SMAPI APIsJesse Plamondon-Willard
2022-04-01fix local file path asset name parsing locale codes in rare cases (#766)Jesse Plamondon-Willard
Mod file paths can't be localized through the content pipeline. Normally the locale would be ignored anyway due to the file extension, but it'd be incorrectly parsed if the file name ended with a locale and no file extension (like "assets/example.fr-FR").
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-26add NameWithoutLocale fields (#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 labels (#766)Jesse Plamondon-Willard
2022-03-25add AssetReady content event (#766)Jesse Plamondon-Willard
2022-03-24add AssetInvalidated content event (#766)Jesse Plamondon-Willard
2022-03-23add initial AssetRequested 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-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-03-05fix error loading locale code cache when a mod adds custom languages (#766)Jesse Plamondon-Willard
2022-02-19add Constants.GamePath & deprecate Constants.ExecutionPathJesse Plamondon-Willard
2022-02-18add AssetName to encapsulate asset name handling (#766)Jesse Plamondon-Willard
2022-02-18Fix support for custom locale codes in asset names (#766)Jesse Plamondon-Willard
2022-02-18tweak types in content coordinatorJesse Plamondon-Willard
2021-12-20auto-fix maps broken due to missing vanilla tilesheetJesse Plamondon-Willard
2021-11-28update for custom languagesJesse Plamondon-Willard
2021-04-04improve error-handling during asset propagationJesse Plamondon-Willard
2021-03-19update NPC pathfinding cache when map warps changeJesse Plamondon-Willard
2021-03-16avoid asset propagation into the world if it's unloadedJesse Plamondon-Willard
Propagating changes into world locations has no effect at this point (since they'll just be recreated when a save is loaded), and can noticeably impact performance.
2021-03-14fix some assets not reapplied correctly when playing in non-English and ↵Jesse Plamondon-Willard
returning to title
2021-02-21reduce performance impact of new cache fixJesse Plamondon-Willard
2021-02-06fix edge case in non-English asset cache after returning to title screenJesse Plamondon-Willard
2021-01-31rework aggressive memory optimization to minimize mod impact (#757)Jesse Plamondon-Willard
2021-01-31add experimental 'aggressive memory optimization' flag (#757)Jesse Plamondon-Willard
2021-01-24minor cleanupJesse Plamondon-Willard