Commit Graph

3910 Commits

Author SHA1 Message Date
Ameisen 5585f5e876
Refactored ModContentManager.cs so it actually fit on my 1440p screens.
Changed LocalTilesheetExtensions into an array.
Marked 'CreateTemporary' as 'Obsolete' which is conventional for methods that only throw.
Moved the type validation logic into its own method as it's largely shared for each loader.
Changed allocators to use `GC.AllocateUninitializedArray`, as the data does not need to be initialized.
Changed `LoadRawImageData` to use a `ValueTuple` return instead of returning with multiple `out`s, which is bad practice.
Preferred rethrowing handlers rather than exception filters (which generate bizarre and _very difficult to patch_ code).
Marked GetLoadError as debugger step through and hidden, as it's just an exception generator.
Marked PremultiplyTransparency, GetContentKeyForTilesheetImageSource, and LoadRawImageData as static as they have no dependency on instance data (nor should they).
Fixed `.xnb` extension search to properly use OrdinalIgnoreCase.
2022-06-10 00:04:25 -04:00
Jesse Plamondon-Willard 9d21e0bbec
simplify pixel conversion loop 2022-06-10 00:04:25 -04:00
Jesse Plamondon-Willard 4f6965eef3
encapsulate loading the raw image data for mod patching 2022-06-10 00:04:24 -04:00
Jesse Plamondon-Willard 2134cef74f
link to SMAPI 3.15 release highlights 2022-06-10 00:04:24 -04:00
Jesse Plamondon-Willard 5ffa260e02
add validation error when loading XNB file as IRawTextureData 2022-06-10 00:04:24 -04:00
Jesse Plamondon-Willard b6a8dcdd46
update to Harmony 2.2.1 2022-06-10 00:04:24 -04:00
Jesse Plamondon-Willard db578c389e
drop support for pre-Pintail proxying 2022-06-10 00:04:23 -04:00
Jesse Plamondon-Willard 769475166a
enable raw image loading by default, rename setting 2022-06-10 00:04:23 -04:00
Jesse Plamondon-Willard 4708385f69
add IRawTextureData asset type 2022-06-10 00:04:23 -04:00
Jesse Plamondon-Willard a546fd113f
add experimental image load rewrite 2022-06-10 00:04:22 -04:00
Jesse Plamondon-Willard cb6fcb0450
rework VerboseLogging option to allow enabling for specific mods 2022-06-10 00:04:22 -04:00
Jesse Plamondon-Willard 8713914a1a
avoid NPC pathfinding rebuild if reachable locations didn't change 2022-06-08 23:33:09 -04:00
Jesse Plamondon-Willard fdb74df8a4
simplify repeated hash set creation 2022-06-06 21:28:57 -04:00
Jesse Plamondon-Willard e10147e7bd
Merge branch 'develop' into stable 2022-06-01 19:59:00 -04:00
Jesse Plamondon-Willard 1cded44f7a
prepare for release 2022-06-01 19:58:35 -04:00
Jesse Plamondon-Willard bf960ce283
add backwards compatibility for mods using now-unused dependencies 2022-05-31 21:23:44 -04:00
Jesse Plamondon-Willard 9992915f56
replace MemoryCache with custom cache
This was causing significant frame stutters for some players since the migration to .NET 5 in Stardew Valley 1.5.5.
2022-05-31 18:32:23 -04:00
Jesse Plamondon-Willard 9ef3f7edb1
remove `System.Reflection.Metadata.MetadataUpdater.IsSupported: false` in runtime config
This doesn't seem to be needed, and was probably added as part of the early experimenting with self-contained .NET.
2022-05-31 18:25:12 -04:00
Jesse Plamondon-Willard 0209e70695
Merge branch 'develop' into stable 2022-05-27 18:09:04 -04:00
Jesse Plamondon-Willard e4cd7c8eb0
prepare for release 2022-05-27 18:08:30 -04:00
Jesse Plamondon-Willard e8c6221d96
fix typo 2022-05-27 18:04:39 -04:00
Jesse Plamondon-Willard 064346594d
fix split-screen error when a mod provides a localized asset in one screen but not another 2022-05-24 18:12:06 -04:00
Jesse Plamondon-Willard 5083b65c87
fix readme headings for mod build package 2022-05-23 14:33:01 -04:00
Jesse Plamondon-Willard 5675f9fceb
add watcher names to simplify troubleshooting 2022-05-23 12:57:33 -04:00
Jesse Plamondon-Willard 87ac7fc403
fix nullable annotations in NetListWatcher 2022-05-23 12:57:33 -04:00
Jesse Plamondon-Willard 9933acad35
use <inheritdoc/> in watchers 2022-05-23 12:57:33 -04:00
Jesse Plamondon-Willard 62665649bd
shortcut common cases in hot code paths 2022-05-23 12:19:06 -04:00
Jesse Plamondon-Willard 2ab2182645
Merge branch 'develop' into stable 2022-05-22 14:38:57 -04:00
Jesse Plamondon-Willard 336cc1cc0f
prepare for release 2022-05-22 14:38:33 -04:00
Jesse Plamondon-Willard 7e7ac459a5
fix error when mod localizes an unlocalizable asset and then stops doing so 2022-05-21 18:06:23 -04:00
Jesse Plamondon-Willard e6ef71bae1
add tick cache to asset propagation 2022-05-20 17:39:05 -04:00
Jesse Plamondon-Willard 7332879351
defer asset reload during propagation when possible 2022-05-19 21:04:32 -04:00
Jesse Plamondon-Willard 0a050622f6
tweak asset propagator to avoid assumption that assets must be reloaded 2022-05-19 21:04:32 -04:00
Jesse Plamondon-Willard 1ddf70697e
simplify asset propagation a bit to prepare for the upcoming SDV 1.6 2022-05-18 20:13:09 -04:00
Jesse Plamondon-Willard f8b62e271e
fix asset type when checking if a mod asset exists 2022-05-18 20:04:51 -04:00
Jesse Plamondon-Willard cb11f1e2ca
re-add internal content manager for asset propagation
This will be used by the new asset propagation in SMAPI 4.0 & Stardew Valley 1.6.
2022-05-18 20:02:12 -04:00
Jesse Plamondon-Willard 3a161a30a7
update for the new CurseForge API 2022-05-18 19:23:26 -04:00
Jesse Plamondon-Willard 5731b015a0
Merge branch 'develop' into stable 2022-05-15 19:14:40 -04:00
Jesse Plamondon-Willard cd843dc10b
prepare for release 2022-05-15 19:14:28 -04:00
Jesse Plamondon-Willard 3253797cba
fix wiki client not being disposed 2022-05-15 19:13:32 -04:00
Jesse Plamondon-Willard 8505f4ae4d
fix typo 2022-05-15 15:07:52 -04:00
Jesse Plamondon-Willard 048f41244f
reduce performance impact of deprecation warnings
Creating a stack is *very* slow, so it should be avoided if possible until after the duplicate-warning check.
2022-05-15 01:54:01 -04:00
Jesse Plamondon-Willard 3a4758dfa6
remove warning for mods which use `dynamic` 2022-05-14 13:32:13 -04:00
Jesse Plamondon-Willard a9cadc7f32
Merge branch 'develop' into stable 2022-05-12 00:21:52 -04:00
Jesse Plamondon-Willard e943ae8413
prepare for release 2022-05-12 00:21:46 -04:00
Jesse Plamondon-Willard 5a7422b312
log time change in verbose mode 2022-05-11 22:32:33 -04:00
Jesse Plamondon-Willard bbe5983acd
rewrite asset operations to reduce allocations
• 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-11 21:36:45 -04:00
Jesse Plamondon-Willard 42a797a012
don't raise events that have no listeners
This mainly avoids allocating event arg objects unnecessarily.
2022-05-11 19:56:45 -04:00
Jesse Plamondon-Willard 077c897d53
replace event.HasListeners() with property 2022-05-11 19:29:57 -04:00
Jesse Plamondon-Willard 05b39b7cd9
cache verbose flag in main update method 2022-05-11 19:26:28 -04:00