Commit Graph

3308 Commits

Author SHA1 Message Date
Jesse Plamondon-Willard 3a4758dfa6
remove warning for mods which use `dynamic` 2022-05-14 13:32:13 -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
Jesse Plamondon-Willard cae1063ad9
move filtering only used in one place out of managed event 2022-05-11 19:15:22 -04:00
Jesse Plamondon-Willard 45f6743034
optimize raising events for the most common cases 2022-05-11 17:59:44 -04:00
Jesse Plamondon-Willard d097825c84
fix error when mod loads XNB mod file without extension 2022-05-11 17:25:06 -04:00
Jesse Plamondon-Willard e14916f962
add error code to SContentLoadException 2022-05-11 17:12:58 -04:00
Jesse Plamondon-Willard 8c8ec6a457
remove unused IsPerformanceCritical event field 2022-05-10 23:05:24 -04:00
Jesse Plamondon-Willard eb01aa275b
fix asset propagation for player sprite recolor masks 2022-05-10 18:51:37 -04:00
Jesse Plamondon-Willard 7a91cf1cd8
update schema for Content Patcher 1.26.0 2022-05-09 00:18:37 -04:00
Jesse Plamondon-Willard cbe8b597cb
prepare for release 2022-05-08 20:11:02 -04:00
Jesse Plamondon-Willard f8f8b23799
use records for asset edit operations 2022-05-08 18:50:07 -04:00
Jesse Plamondon-Willard 5f2e83969a
only build AssetWithoutLocale when it's used 2022-05-08 18:37:23 -04:00
Jesse Plamondon-Willard e2a3fc4f99
avoid [Obsolete] without message for clarity 2022-05-08 18:28:02 -04:00
Jesse Plamondon-Willard 26f95bca63
optimize case where there's no legacy IAssetLoader/IAssetEditor instances 2022-05-08 18:22:35 -04:00
Jesse Plamondon-Willard b924fbae4b
fix default settings 2022-05-08 12:24:52 -04:00
Jesse Plamondon-Willard 37617e9c26
tweak default settings logic 2022-05-07 23:34:30 -04:00
Jesse Plamondon-Willard e286e5591b
enable case-insensitive file paths by default for Android/Linux players 2022-05-07 23:26:34 -04:00
Jesse Plamondon-Willard ecdda9b077
update filenames for case-insensitive path rewrite 2022-05-07 23:13:59 -04:00
Jesse Plamondon-Willard 3db0353126
simplify and rewrite case-insensitive file path feature 2022-05-07 23:12:33 -04:00
Jesse Plamondon-Willard d4ff9f3f5c
log fake content packs created by mods 2022-05-07 21:53:18 -04:00
Jesse Plamondon-Willard 709638f197
fix assets loaded through fake content pack using parent mod's path info 2022-05-07 21:21:02 -04:00
Jesse Plamondon-Willard f973b4c518
move CreateFakeContentPack into its own method 2022-05-07 21:18:09 -04:00
Jesse Plamondon-Willard b45f50b57e
prepare for release 2022-05-06 19:40:13 -04:00
Jesse Plamondon-Willard 09c52fb3f5
cache legacy asset operations by target type 2022-05-06 19:39:51 -04:00
Jesse Plamondon-Willard a969828e93
cache asset operation instances created legacy interceptors 2022-05-06 18:26:35 -04:00
Jesse Plamondon-Willard b834ed7ef5
fix errors reading empty JSON files 2022-05-06 18:06:47 -04:00
Jesse Plamondon-Willard 87d5288287
fix content managers' LoadBaseString not recognizing localized mod assets 2022-05-06 18:05:40 -04:00
Jesse Plamondon-Willard 295ad29b8d
remove aggressive memory optimizations option 2022-05-04 21:02:41 -04:00
Jesse Plamondon-Willard c1342bd4cd
disable case-insensitive paths by default pending performance rework 2022-05-04 20:35:08 -04:00
Jesse Plamondon-Willard 42bf82d870
update compatibility list 2022-05-01 22:46:56 -04:00
Jesse Plamondon-Willard f78093bdb5
prepare for release 2022-05-01 17:39:57 -04:00
Jesse Plamondon-Willard ea9324586d
fix warnings for model-binding hack 2022-05-01 17:31:54 -04:00
Jesse Plamondon-Willard db43fc22a4
update Pintail to fix proxy type name conflict edge case 2022-05-01 01:34:44 -04:00
Jesse Plamondon-Willard 7bb7a7522f
omit stack trace for deprecated code not called directly by the mod 2022-04-30 12:57:28 -04:00
Jesse Plamondon-Willard ed337ab964
fix model binding for mod update-check API 2022-04-30 12:33:33 -04:00
Jesse Plamondon-Willard d7d8cdaa5a
add backwards compatibility for loading content assets with .xnb extension 2022-04-27 20:09:43 -04:00
Jesse Plamondon-Willard 8425c82033
fix locale change for legacy IAssetEditor/Loader implementations 2022-04-26 23:54:48 -04:00
Jesse Plamondon-Willard 6a43171e92
re-enable Pintail by default 2022-04-26 23:38:16 -04:00
Jesse Plamondon-Willard 55c254deb8
fix null reference error when implicitly converting null translation to string 2022-04-25 00:15:31 -04:00
Jesse Plamondon-Willard 4a14792e4d
fix ReplaceWith not working for legacy IAssetEditor implementations 2022-04-23 16:47:24 -04:00
Jesse Plamondon-Willard 4fa414c2bd
set page/perPage URL args together
Since there's no UI to set the page size, this makes the argument more discoverable.
2022-04-21 20:59:35 -04:00
Jesse Plamondon-Willard c055056460
update Pintail to fix out parameter issue 2022-04-19 22:11:43 -04:00
Jesse Plamondon-Willard f0645c5993
fix null reference when adding new layers in a map patch 2022-04-19 22:08:34 -04:00
Jesse Plamondon-Willard d4d378bff3
don't add default pagination values to log URL 2022-04-19 19:25:10 -04:00
Jesse Plamondon-Willard 5c819662f8
suppress some duplicate deprecation notices 2022-04-19 19:14:53 -04:00
Jesse Plamondon-Willard e6c696fa6b
add immutable stack trace to cache stack info 2022-04-19 19:11:58 -04:00
Jesse Plamondon-Willard 889004f1eb
move deprecation code into namespace 2022-04-19 19:03:47 -04:00
Jesse Plamondon-Willard a8a4d314df
simplify ExtendMap usage 2022-04-17 22:12:17 -04:00
Jesse Plamondon-Willard b25e30a896
fix model binding error 2022-04-17 01:07:18 -04:00
Jesse Plamondon-Willard 7b79703de6
tweak code style 2022-04-16 21:07:34 -04:00
Jesse Plamondon-Willard 36af2cf8ac
Merge pull request #841 from KhloeLeclair/safe-regex
[Website] Improve regex safety for the log viewer
2022-04-16 20:15:24 -04:00
Jesse Plamondon-Willard d486d940ba
temporarily disable Pintail by default pending out parameter fix 2022-04-16 19:17:16 -04:00
Jesse Plamondon-Willard 0a69cb4bf7
allow switching between Pintail & original API proxying 2022-04-16 19:15:50 -04:00
Jesse Plamondon-Willard 7dec519234
fix broken unit tests 2022-04-16 18:29:52 -04:00
Jesse Plamondon-Willard 20224d293d
add unit test for proxied out parameters 2022-04-16 16:59:53 -04:00
Jesse Plamondon-Willard 559d763756
remove unused subfolder manifest scanning
This isn't needed anymore with the current is-mod-folder scanning.
2022-04-16 14:34:52 -04:00
Jesse Plamondon-Willard f93c41f55c
make manifest.json filename case-insensitive 2022-04-16 14:28:20 -04:00
Jesse Plamondon-Willard 95d7ba8935
move case-insensitive path lookup into toolkit for reuse 2022-04-16 14:07:09 -04:00
Khloe Leclair 446205c7bd Add regex error checking, and display a message to the user when their regular expression has a syntax error. Additionally, use a non-capturing group to surround the user input when `Match whole word` is enabled in case alternates are being used. Finally, add a safety check to highlighting to avoid an infinite loop when zero-length matches happen. 2022-04-16 13:55:54 -04:00
Jesse Plamondon-Willard 1974324c43
make EntryDll manifest field case-insensitive 2022-04-16 13:41:37 -04:00
Jesse Plamondon-Willard c3f6983009
Merge pull request #840 from KhloeLeclair/log-cleanup
[Website] Cleanup log filtering a bit more, save state to URL
2022-04-16 12:59:21 -04:00
Jesse Plamondon-Willard 64b9da560f
minor refactoring & code style 2022-04-16 12:56:38 -04:00
Jesse Plamondon-Willard 9ba0670407
fix Nexus API key needed to launch web project locally 2022-04-16 11:21:44 -04:00
Jesse Plamondon-Willard 2dc20be5f7
use specified nullability in reflection API (#837) 2022-04-16 11:10:13 -04:00
Jesse Plamondon-Willard c0d0ad0282
show simplified stack trace for deprecation notices 2022-04-14 23:55:08 -04:00
Jesse Plamondon-Willard fd136d34c5
track full mod & stack metadata in queued deprecation warnings 2022-04-14 23:11:41 -04:00
Jesse Plamondon-Willard 1a3befa93e
track mod metadata reference in APIs for upcoming deprecation changes 2022-04-14 23:00:30 -04:00
Jesse Plamondon-Willard 43c875c4c2
prepare mod build package 4.0.1 for release 2022-04-14 19:21:18 -04:00
Jesse Plamondon-Willard eb125f1994
fix assembly version conflict error in mod build package 2022-04-14 18:14:08 -04:00
Jesse Plamondon-Willard 4de18b516f
fix nullable annotation (#837) 2022-04-14 18:13:27 -04:00
Jesse Plamondon-Willard 66272cbe46
fix false-positive deprecation notice (#837) 2022-04-13 23:40:47 -04:00
Jesse Plamondon-Willard ff1b4cd323
remove reflection no longer needed after migration to MonoGame 2022-04-13 22:19:45 -04:00
Jesse Plamondon-Willard 3078ae2a8e
fix typos in recent changes (#837) 2022-04-13 22:17:26 -04:00
Jesse Plamondon-Willard 2765e3f9b3
enable nullable annotations in bundled mods (#837) 2022-04-13 22:06:07 -04:00
Jesse Plamondon-Willard aa7b0caf46
fix helpers not disposed if the mod is finalized 2022-04-13 21:08:07 -04:00
Jesse Plamondon-Willard 7c411b29bb
fix spelling warnings 2022-04-13 21:07:58 -04:00
Jesse Plamondon-Willard 4adf861113
enable nullable annotations in the rest of SMAPI core (#837) 2022-04-13 21:07:43 -04:00
Jesse Plamondon-Willard 5b24fff477
remove unused code (#837) 2022-04-13 20:41:34 -04:00
Jesse Plamondon-Willard f39da383a1
enable nullable annotations in SMAPI where no logic changes are needed (#837) 2022-04-13 20:24:14 -04:00
Jesse Plamondon-Willard 6e9e8aef1e
enable nullable annotations in SMAPI where no changes are needed (#837) 2022-04-13 19:00:24 -04:00
Jesse Plamondon-Willard 40aebb74c6
enable nullable annotations in installer (#837) 2022-04-12 21:01:13 -04:00
Jesse Plamondon-Willard 5f7a92a745
enable nullable annotations in unit tests (#837) 2022-04-12 20:52:01 -04:00
Jesse Plamondon-Willard c3851ae2e6
enable nullable annotations in shared projects (#837) 2022-04-12 19:56:52 -04:00
Jesse Plamondon-Willard 4e0e928c94
remove `#nullable disable` in mod build package (#837)
Since it targets .NET Standard 2.0, they're not available anyway.
2022-04-12 19:19:37 -04:00
Jesse Plamondon-Willard 0b48c1748b
enable nullable annotations in the web project & related code (#837) 2022-04-12 19:15:39 -04:00
Khloe Leclair 4f54f517ce Use an optional section for rendering quick navigation links on the mod viewer, containing them within the #sidebar element. 2022-04-12 13:50:51 -04:00
Khloe Leclair 0b92275649 Make horizontal scrolling with the quick navigation links less bad. Probably need to move them into the actual sidebar element though for proper sorting. 2022-04-12 02:18:51 -04:00
Khloe Leclair a21d24f4b7 Replace bitfields for state and just use comma-separated strings. Add a note that numbers may be inaccurate if filtering is used when sections are collapsed. Add quick navigation links. 2022-04-12 02:07:21 -04:00
Jesse Plamondon-Willard 9fbed0fa1f
Merge pull request #839 from nuztalgia/develop
Ignore dot-prefixed files when scanning for mods
2022-04-11 23:20:20 -04:00
Jesse Plamondon-Willard 1e61309d3d
add IAssetDataForMap.ExtendMap 2022-04-11 22:56:14 -04:00
Khloe Leclair 94b8507a47 Add more documentation strings. Use shallow equality checking to decide whether to include a filter in the URL or not to avoid unnecessarily large URLs. 2022-04-11 15:01:59 -04:00
Khloe Leclair 0babc3e446 Cleanup log filtering a bit, with a clearer string for the number of total messages. Additionally, save and restore filter state from the URL for better linking. 2022-04-11 14:29:33 -04:00
Nuz / Lovegood 25e0b4b8ad Make IsRelevant return false for any files starting with "." 2022-04-10 23:34:50 -07:00
Nuz / Lovegood 2a05e28782 Revert "Make ModScanner ignore .gitignore files."
This reverts commit c92efc65ce.
2022-04-10 23:33:32 -07:00
Jesse Plamondon-Willard 761f2d952b
enable nullable annotations in mod data models (#837) 2022-04-10 21:34:18 -04:00
Nuz / Lovegood c92efc65ce Make ModScanner ignore .gitignore files.
This is helpful for cases like this: https://cdn.discordapp.com/attachments/156109690059751424/962879339739885578/unknown.png
2022-04-10 18:20:11 -07:00
Jesse Plamondon-Willard 0336fb2524
add temporary cachebusting queries for log parser 2022-04-09 17:04:39 -04:00
Jesse Plamondon-Willard 376dadd341
fix misplaced attribute (#837) 2022-04-09 16:58:52 -04:00
Jesse Plamondon-Willard 0971a10ea4
Merge pull request #838 from KhloeLeclair/clientlog
Improve log parser
2022-04-09 16:52:57 -04:00
Jesse Plamondon-Willard ae7567674d
restore data element unloading 2022-04-09 16:05:34 -04:00
Jesse Plamondon-Willard 07d07c79e0
load raw data from JSON per discussion
This avoids loading the data synchronously as a JavaScript snippet, which improves performance when opening the page.
2022-04-09 16:01:32 -04:00
Jesse Plamondon-Willard 26d29a1070
minor refactoring 2022-04-09 15:44:17 -04:00
Jesse Plamondon-Willard 650af7ef1a
enable nullable annotations in log parser (#837) 2022-04-09 13:59:56 -04:00
Jesse Plamondon-Willard ad4d065fe7
simplify code with generic Enum.GetValues 2022-04-09 13:10:54 -04:00
Jesse Plamondon-Willard ccf760452d
pass data directly to script instead of serializing & deserializing it 2022-04-09 13:08:38 -04:00
Jesse Plamondon-Willard 260dbbf205
standardize quote style 2022-04-09 13:02:25 -04:00
Jesse Plamondon-Willard b3519f3cc1
rename 'data' to 'state' for upcoming changes 2022-04-09 12:59:21 -04:00
Jesse Plamondon-Willard 288ef5dc07
add environment variable form of new CLI args, update docs 2022-04-09 12:03:30 -04:00
Jesse Plamondon-Willard 283e7d1132
Merge pull request #836 from Tondorian/feature/CommandLineArgs
Add command-line arguments to toggle developer mode

# Conflicts:
#	src/SMAPI/Program.cs
2022-04-09 11:56:48 -04:00
Jesse Plamondon-Willard 6161cc9129
fix config.user.json overriding new CLI arguments 2022-04-09 11:54:23 -04:00
Jesse Plamondon-Willard 092f0aa4ea
simplify format for new CLI arguments 2022-04-09 11:52:20 -04:00
Jesse Plamondon-Willard 5ae87fbc01
fix deprecation warning when a mod uses LoadFromModFile 2022-04-09 11:42:49 -04:00
Khloe Leclair 631d0375c3 Simplify visible section checking by abusing Vue behavior, since the proper way is being buggy. 2022-04-08 15:26:35 -04:00
Khloe Leclair 0beff189d1 Implement client-side log rendering, better filtering, and pagination to improve performance and enhance the user experience with using the log parser. 2022-04-08 14:59:52 -04:00
Jesse Plamondon-Willard 238045ba9c
reverse mod build package migration to .NET 5 (#837)
The migrated package didn't work consistently in VIsual Studio, so this suppresses nullable annotations in .NET Standard instead.
2022-04-07 22:19:48 -04:00
Jesse Plamondon-Willard df955c0d3e
enable asset caching for GameContentHelper 2022-04-07 18:46:29 -04:00
Jesse Plamondon-Willard d706a25053
enable nullable annotations for most of the SMAPI toolkit (#837) 2022-04-07 02:33:23 -04:00
Jesse Plamondon-Willard 6b05296e71
migrate mod build package to .NET 5 to allow full nullable annotations (#837) 2022-04-07 01:51:50 -04:00
Jesse Plamondon-Willard e58e8a2283
enable nullable annotations for manifests (#837) 2022-04-07 01:38:02 -04:00
Jesse Plamondon-Willard ab6cf45b03
enable nullable annotations for semantic versions (#837) 2022-04-07 00:56:00 -04:00
Jesse Plamondon-Willard d1a7194bf6
allow null values in ISemanticVersion compare methods (#837) 2022-04-06 23:47:12 -04:00
Jesse Plamondon-Willard b4e979cc99
fix all warnings to simplify migration to nullable annotations (#837) 2022-04-06 22:46:19 -04:00
Jesse Plamondon-Willard 2e7c233f6c
enable nullable annotations by default (#837)
This adds `#nullable disable` to all existing code (except where null is impossible like enum files), so it can be migrated incrementally.
2022-04-06 21:48:55 -04:00
Jesse Plamondon-Willard 215a863945
drop update checks for Stardew64Installer 2022-04-06 18:34:58 -04:00
Jesse Plamondon-Willard 077d8e4f40
remove some unused/redundant code 2022-04-06 18:25:00 -04:00
Jesse Plamondon-Willard 0539bb8f37
simplify with newer pattern features 2022-04-06 18:25:00 -04:00
Jesse Plamondon-Willard b6c8cfc28b
simplify 'is not' patterns 2022-04-06 18:24:59 -04:00
Jesse Plamondon-Willard a593eda30f
use target-typed new 2022-04-06 18:24:59 -04:00
Jesse Plamondon-Willard 29f909a8d5
fix asset name truncation when loading XNB mod file without file extension 2022-04-06 00:37:10 -04:00
Jesse Plamondon-Willard a20413664b
split mod content load method, make error-handling more consistent 2022-04-03 21:17:40 -04:00
Jesse Plamondon-Willard c9af1c452a
fix incorrect deprecation warnings for helper.Content 2022-04-03 15:44:26 -04:00
Jesse Plamondon-Willard 627472c506
add temporary hack to fix compatibility between old & new APIs for some mods 2022-04-02 21:43:56 -04:00
Jesse Plamondon-Willard 546b58778c
switch to 'processing tick' for tick caching
This is incremented on each low-level tick (whether it's a game update, synchronized async operation, etc). That mainly avoids the cache persisting across the entire save loading process while it's being synchronized.
2022-04-02 19:13:27 -04:00
Jesse Plamondon-Willard f58cdde981
fix errors due to null asset names in asset propagation 2022-04-02 15:12:05 -04:00
Jesse Plamondon-Willard 6292b21f22
fix tick cache using game ticks instead of SMAPI ticks
The game ticks aren't incremented consistently in some cases (e.g. while loading a save), which leads to the cache values being kept too long.
2022-04-02 14:59:09 -04:00
Jesse Plamondon-Willard 4e2d7f2550
make mod file paths case-insensitive in all SMAPI APIs 2022-04-01 23:42:37 -04:00
Jesse Plamondon-Willard bac1f34f65
fix local file path asset name parsing locale codes in rare cases (#766)
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-04-01 22:59:50 -04:00
Patrick Müssig 61d857c41f
Added support for `--developer-mode true|false`
Minimal changes required to enable/disable developer mode  via command
line argument. This commit does not include any error handling for
invalid values how ever they will be ignored and not crash the game.
2022-04-02 04:08:49 +02:00
Jesse Plamondon-Willard 6ad8ca932e
keep old XNB file extension behavior for backwards compatibility (#766) 2022-04-01 00:33:35 -04:00
Jesse Plamondon-Willard 1d3c99cc25
split helper.Content API into game/mod content APIs 2022-03-27 13:42:14 -04:00
Jesse Plamondon-Willard d864f2ed77
add asset type to AssetRequested event (#766) 2022-03-27 12:16:28 -04:00
Jesse Plamondon-Willard 03efea2667
add LocaleChanged content event (#766) 2022-03-26 19:08:25 -04:00
Jesse Plamondon-Willard eebd8d54dc
expand obsolete attributes (#766) 2022-03-26 18:34:49 -04:00
Jesse Plamondon-Willard 5683bc9c7d
give Content Patcher internals access
This makes some of its low-level logic safer by avoiding unvalidated reflection.
2022-03-26 17:46:10 -04:00
Jesse Plamondon-Willard bacb851d7b
add IContentHelper.ParseAssetName (#766) 2022-03-26 17:44:48 -04:00
Jesse Plamondon-Willard 3a9ea66a20
update asset propagation for new content API (#766) 2022-03-26 17:37:01 -04:00
Jesse Plamondon-Willard 8d70415376
add deprecation notices for SMAPI 4.0.0 (#766) 2022-03-26 15:02:11 -04:00
Jesse Plamondon-Willard 4c64f9f644
rewrite content loading to allow handling locale variants (#766, #786, #812)
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-26 14:07:16 -04:00
Jesse Plamondon-Willard ad8912047b
add asset edit priority (#766) 2022-03-26 01:43:40 -04:00
Jesse Plamondon-Willard e40907ab8b
add NameWithoutLocale fields (#766) 2022-03-26 01:19:44 -04:00
Jesse Plamondon-Willard 4da38e1317
add missing [Obsolete] tag 2022-03-26 00:52:04 -04:00
Jesse Plamondon-Willard 3707f481a5
extend load conflict resolution into load priority (#766) 2022-03-25 23:53:30 -04:00
Jesse Plamondon-Willard 021891ff0c
add load conflict resolution option (#766) 2022-03-25 22:49:14 -04:00
Jesse Plamondon-Willard 0e0c135604
add content pack label to more logs (#766) 2022-03-25 22:42:22 -04:00
Jesse Plamondon-Willard 9025b0dcc5
fix asset load conflict always showing multiple-mod form 2022-03-25 22:16:49 -04:00
Jesse Plamondon-Willard e1fc566e0a
add content pack labels (#766) 2022-03-25 21:46:37 -04:00
Jesse Plamondon-Willard b0011bf65c
use immutable set for invalidated asset names (#766) 2022-03-25 01:02:26 -04:00
Jesse Plamondon-Willard b77eab6e0a
add AssetReady content event (#766) 2022-03-25 00:35:31 -04:00
Jesse Plamondon-Willard 2b0ce2bb4d
add AssetInvalidated content event (#766) 2022-03-24 22:55:55 -04:00
Jesse Plamondon-Willard 6a43e6dfad
fix unneeded cloning (#766) 2022-03-23 01:16:42 -04:00
Jesse Plamondon-Willard 584725bb8e
add initial AssetRequested content event (#766) 2022-03-23 01:06:11 -04:00
Jesse Plamondon-Willard b07d2340a9
encapsulate & cache asset operation groups (#766)
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-22 23:00:18 -04:00
Jesse Plamondon-Willard d3fbdf484a
reduce duplicated doc blocks 2022-03-22 20:46:21 -04:00
Jesse Plamondon-Willard a42926868a
encapsulate editor/loader operations (#766)
These will be used by the new content API, and allow handling the old one the same way.
2022-03-20 12:53:27 -04:00
Jesse Plamondon-Willard d96cec88e4
fix set_farm_type not updating warps 2022-03-10 23:24:01 -05:00
Jesse Plamondon-Willard 2216e37726
rework launch script argument parsing (#832)
This commit...

* replaces the internal `--no-reopen-terminal` arg with a documented `--use-current-shell` arg that works on Linux too;
* replaces the new SKIP_TERMINAL environment variable with the existing SMAPI_NO_TERMINAL one;
* moves argument parsing out of the 'initial setup' section (so it's easier for players to edit if needed);
* simplfies argument parsing (no need to support short opt names or add arguments for the default behavior);
* fixes arguments not parsed after the first unrecognized argument, so `--unknown --no-terminal` would still open a terminal.
2022-03-06 19:55:32 -05:00
Jesse Plamondon-Willard a4bd5cccd5
Merge pull request #832 from Ryhon0/develop
Make SKIP_TERMINAL default to false if not set
2022-03-06 18:37:13 -05:00
Jesse Plamondon-Willard debe177241
handle vanilla assets in DoesAssetExist (#766) 2022-03-05 18:12:00 -05:00
Jesse Plamondon-Willard b68b301b71
add DoesAssetExist to support the upcoming Stardew Valley 1.6 (#766) 2022-03-05 15:38:05 -05:00
Jesse Plamondon-Willard b0d8b23c2c
migrate more internal code to IAssetName (#766) 2022-03-05 15:31:06 -05:00
Jesse Plamondon-Willard e82406a845
fix error loading locale code cache when a mod adds custom languages (#766) 2022-03-05 15:30:51 -05:00
Jesse Plamondon-Willard 2f279708b3
fix regression with mod XNB files in the content pipeline (#766) 2022-03-05 15:30:17 -05:00
Ryhon bb31f09977
Command line options 2022-03-05 20:40:01 +01:00
Ryhon 30d63f0a11
Make SKIP_TERMINAL default to false if not set 2022-03-04 19:20:39 +01:00
Jesse Plamondon-Willard 8429485e69
update schema for Content Patcher 1.25.0 2022-02-27 20:40:49 -05:00
Jesse Plamondon-Willard 0f987c0578
restore InterfaceProxyFactory to encapsulate Pintail (#830) 2022-02-25 23:40:52 -05:00
Jesse Plamondon-Willard 512c2b9fb7
Merge pull request #830 from Shockah/api-proxy-tryproxy-object
API proxy improvements
2022-02-25 23:21:45 -05:00
Shockah 5e3237d000 update Pintail 2022-02-24 12:58:16 +01:00
Jesse Plamondon-Willard 6fc3be52bc
avoid SetData when premultiplying texture with no semi-transparency 2022-02-22 17:38:59 -05:00
Shockah 28f78d1a29 update Pintail 2022-02-20 00:38:42 +01:00
Shockah e9321ba6f9 change proxy prepare behavior 2022-02-19 22:08:05 +01:00
Shockah e24c0db7b1 update Pintail 2022-02-19 21:27:13 +01:00
Jesse Plamondon-Willard 3c29ae6a1e
add Constants.ContentPath 2022-02-19 11:26:24 -05:00
Jesse Plamondon-Willard 2d52681b10
add Constants.GamePath & deprecate Constants.ExecutionPath 2022-02-19 11:07:26 -05:00
Jesse Plamondon-Willard a2190df08c
add AssetName to encapsulate asset name handling (#766) 2022-02-18 15:39:49 -05:00
Jesse Plamondon-Willard 065859408f
Fix support for custom locale codes in asset names (#766) 2022-02-18 12:31:14 -05:00
Jesse Plamondon-Willard 28d7372880
tweak types in content coordinator 2022-02-18 12:13:53 -05:00
Shockah 5706d91dd9 update Pintail 2022-02-18 12:16:02 +01:00
Shockah e41dbd49ca update Pintail 2022-02-17 19:59:36 +01:00
Shockah 8ecca56816 update Pintail 2022-02-16 21:10:23 +01:00
Shockah ba42bb97d1 move proxying to a separate NuGet library 2022-02-16 19:08:40 +01:00
Jesse Plamondon-Willard 315926de25
flip slashes in asset propagator to match MonoGame
The game now uses MonoGame on all platforms.
2022-02-13 00:43:35 -05:00
Jesse Plamondon-Willard f53ace6235
simplify and standardize key comparison in asset propagator 2022-02-13 00:41:44 -05:00
Jesse Plamondon-Willard b0cc403098
add data-* attributes to log parser for external tools 2022-02-12 12:07:13 -05:00
Jesse Plamondon-Willard 4a1174cd50
fix thumbstick input overrides 2022-02-11 20:56:25 -05:00
Jesse Plamondon-Willard 4da9e954df
use Array.Empty to avoid unneeded array allocations 2022-02-11 00:49:49 -05:00
Jesse Plamondon-Willard 233a7d57e6
Merge pull request #829 from SpriteMaster-Ext/perf-patchimage
Simplify and optimize PatchImage
2022-02-11 00:43:52 -05:00
Jesse Plamondon-Willard 3064b58719
add basic unit tests for API interface proxying 2022-02-10 22:03:09 -05:00
Shockah a54d58d064 add TryProxy for any objects 2022-02-10 16:26:43 +01:00
Shockah 467375a7a3 add reverse API proxying (and unproxying) 2022-02-10 14:15:06 +01:00
Shockah 0725945217 add proxy instance caching 2022-02-10 11:43:35 +01:00
Shockah 61415e41eb use Call/Callvirt depending on target 2022-02-10 11:21:41 +01:00
Shockah 9557908425 fix code style warning 2022-02-10 10:18:31 +01:00
Shockah 55723f91d2 implement `out` parameter proxying 2022-02-10 10:08:14 +01:00
Ameisen 51b7b9fe06 Cleanup and performance/allocation improvement for AssetDataForImage.PatchImage 2022-02-09 18:00:15 -06:00
Shockah f920ed59d6 add WIP proxying of methods with `out` parameters 2022-02-09 23:26:26 +01:00
Shockah d9599a3a0a simplifies proxy method IL a bit 2022-02-09 21:10:20 +01:00
Shockah 354527bb81 stop proxying nulls 2022-02-09 21:02:41 +01:00
Shockah 688fccc024 add missing documentation 2022-02-09 20:40:54 +01:00
Shockah ee78ab3c37 fix stack overflow for proxied types referencing each other 2022-02-09 20:38:14 +01:00
Shockah 43ad219b75 support proxying return values in API proxies 2022-02-09 20:07:01 +01:00
Shockah 5a92b0cd35 uses `proxy.Name` instead of `target.Name` (which makes more sense in this context) 2022-02-08 22:36:34 +01:00
Shockah 5b5304403b oops old code 2022-02-08 22:19:16 +01:00
Shockah 3135925982 allow generic methods and any assignable types in API proxies 2022-02-08 21:54:53 +01:00
Shockah 0ff82c38e7 allow default interface method implementations in API proxies 2022-02-08 20:02:13 +01:00
Jesse Plamondon-Willard 25a9f54ecf
fix manifest JSON schema's update key pattern 2022-01-29 20:43:45 -05:00
Jesse Plamondon-Willard 3431f486a2
normalize season names in SDate constructor 2022-01-29 18:15:42 -05:00
Jesse Plamondon-Willard 6dd4a8a12b
fix item repo's handling of Journal Scraps and Secret Notes 2022-01-29 17:46:45 -05:00
Jesse Plamondon-Willard 6b9c9be2b6
move item repo secret note + flavored object logic into methods 2022-01-29 17:33:12 -05:00
Jesse Plamondon-Willard bca9e599cc
remove unneeded dictionary patch
The dictionary errors were improved in .NET 5, so they include the key automatically.
2022-01-29 17:27:42 -05:00
ChulkyBow d8bbf3c441
Update Ukrainian translation for SMAPI 2022-01-18 16:25:36 +02:00
Jesse Plamondon-Willard dbed0289d7
prepare for release 2022-01-16 22:57:40 -05:00
Jesse Plamondon-Willard 95f4513727
rewrite fallback assembly resolution
* SMAPI now also searches the root game folder for unresolved assemblies. This fixes an issue resolving the game DLL when the player's DLL version doesn't match the one used to compile SMAPI.
* The DLL search folders are now scanned once and cached to avoid repeated iterations on startup.
2022-01-16 22:56:48 -05:00
Jesse Plamondon-Willard ad0e6b315d
prepare for release 2022-01-16 17:13:28 -05:00
Jesse Plamondon-Willard 230f119205
merge field rewriters to reduce rewrite iterations 2022-01-16 17:08:08 -05:00
Jesse Plamondon-Willard 1ea8d75235
improve console interception logic 2022-01-16 14:05:02 -05:00
Jesse Plamondon-Willard 00bd9d19a1
bump min game version to 1.5.6
That avoids error reports on mods when pirated players have an older 1.5.5 build that break mods, and ensures that the new build number shown in the SMAPI log is available.
2022-01-16 00:15:03 -05:00
Jesse Plamondon-Willard 7e8d11ca3a
add Xbox app log instructions, redesign UI to fit 2022-01-15 23:41:01 -05:00
Jesse Plamondon-Willard 6f05580191
add detection for Xbox app game folders 2022-01-15 20:39:32 -05:00
Jesse Plamondon-Willard d029dd652f
fix JSON validator not recognizing manifest update subkeys 2022-01-15 18:04:33 -05:00
Jesse Plamondon-Willard 4cffd6c2c0
add save recovery for missing custom farm type 2022-01-15 17:21:11 -05:00
Jesse Plamondon-Willard 8ebb9ce8d4
fix backspaces ignored on Linux/macOS in SDV 1.5.5+ 2022-01-15 13:27:23 -05:00
Jesse Plamondon-Willard a8985e122e
fix suppressed console output not suppressing newlines 2022-01-15 12:21:22 -05:00
Jesse Plamondon-Willard e30e427628
add download option to log view 2022-01-02 19:59:38 -05:00
Jesse Plamondon-Willard 1fab386ab1
add Ukrainian translations (#823) 2022-01-02 13:57:14 -05:00
Jesse Plamondon-Willard 92f35837ad
fix syntax, update release notes 2022-01-02 13:48:53 -05:00
Jesse Plamondon-Willard adb3926609
Merge pull request #820 from bruce2409/update-launcher-sh
Added shell shebang to MacOS Launcher code
2022-01-02 13:45:38 -05:00
Jesse Plamondon-Willard aad77242f0
fix uninstaller not removing StardewModdingAPI.deps.json file 2021-12-23 23:08:49 -05:00
Jesse Plamondon-Willard 02831503dd
remove content pack from compatibility blacklist
It's no longer broken with the auto-fixes in the upcoming SMAPI update.
2021-12-23 18:59:14 -05:00
bruce2409 5712116879 Added shell shebang to MacOS Launcher code 2021-12-22 17:41:11 +00:00
Jesse Plamondon-Willard 52f4df3f30
add new game build number to the SMAPI log 2021-12-21 20:33:08 -05:00
Jesse Plamondon-Willard 0d7d447600
auto-fix maps broken due to missing vanilla tilesheet 2021-12-20 22:18:09 -05:00
Jesse Plamondon-Willard 95f658014e
simplify running SMAPI without a terminal on Linux/macOS 2021-12-18 23:07:33 -05:00
Jesse Plamondon-Willard beb1acd4f8
update Steam error message 2021-12-18 22:21:31 -05:00
Jesse Plamondon-Willard e0abac8dfb
update compatibility list 2021-12-18 00:48:55 -05:00
Jesse Plamondon-Willard aa5d1d4a20
update compatibility list 2021-12-09 19:57:57 -05:00
Jesse Plamondon-Willard 4e17716fa2
fix log parser handling when multiple mods have the exact same name 2021-12-09 19:56:46 -05:00
Jesse Plamondon-Willard 5b5dd47c22
prepare for release 2021-12-05 19:10:28 -05:00
Jesse Plamondon-Willard f4ca7dd228
add Windows build process to fix application icon until .NET bug is fixed 2021-12-05 18:55:10 -05:00
Jesse Plamondon-Willard c05fdf65cf
mark UI Info Suite incompatible 2021-12-05 18:39:08 -05:00
Jesse Plamondon-Willard 98d01d522d
improve error when installer is pointed at a compatibility-branch game folder 2021-12-05 00:51:24 -05:00
Jesse Plamondon-Willard cb9d6ae5ad
improve error when installer is pointed at a SDV 1.5.4 folder 2021-12-04 23:47:27 -05:00
Jesse Plamondon-Willard 0f37c0f92d
update JSON validator for Content Patcher's new .fnt support 2021-12-04 22:41:59 -05:00
Jesse Plamondon-Willard cc35dbdb3d
fix self-contained install on Windows 2021-12-04 20:25:53 -05:00
Jesse Plamondon-Willard c80d07fddf
migrate SMAPI to self-contained install
This removes the need to have .NET 5 installed to run SMAPI. Note that there's no need to actually bundle the .NET files, since they're already bundled into the game folder.
2021-12-04 15:55:29 -05:00
Jesse Plamondon-Willard 711e17a4f9
suppress non-applicable code warnings 2021-12-04 15:55:16 -05:00
Jesse Plamondon-Willard 1d7340f598
fix code warnings 2021-12-04 15:43:01 -05:00
Jesse Plamondon-Willard 6df3b0b814
update for Stardew Valley 1.5.5 hotfix 2021-12-03 19:53:22 -05:00
Jesse Plamondon-Willard e4416925f9
add build script to set the release version 2021-12-03 02:16:27 -05:00
Jesse Plamondon-Willard 181508084b
make installer self-contained
This lets players run the installer without manually installing .NET 5, which was causing a lot of support requests.
2021-12-03 00:26:46 -05:00
Jesse Plamondon-Willard bf5a9b8762
switch to scripted release package process 2021-12-02 20:48:00 -05:00
Jesse Plamondon-Willard 25ebcc1ea7
prepare for release 2021-11-30 21:54:29 -05:00
Jesse Plamondon-Willard 05b06e7a9f
improve installer's .NET 5 validation to explain how to fix it 2021-11-30 21:53:09 -05:00
Jesse Plamondon-Willard f5a0dd1578
fix error running installer from folder paths containing parentheses 2021-11-30 20:18:17 -05:00
Jesse Plamondon-Willard b294ac1203
prepare for release 2021-11-30 17:13:53 -05:00
Jesse Plamondon-Willard d1d09ae1df
add support for loading BmFont files for custom languages 2021-11-28 00:01:52 -05:00
Jesse Plamondon-Willard f87e65caf5
update 'set_farm_type' console command for custom farm types 2021-11-28 00:01:52 -05:00
Jesse Plamondon-Willard fe675540b5
add map overlay patches 2021-11-28 00:01:51 -05:00
Jesse Plamondon-Willard cb378a1c55
keep installer window open if it crashes 2021-11-28 00:01:51 -05:00
Jesse Plamondon-Willard 51c6ef9443
fix .NET 5 precheck passing if player has .NET Core installed 2021-11-28 00:01:51 -05:00
Jesse Plamondon-Willard 32ccc8e872
fix installer file precheck failing for some users 2021-11-28 00:01:51 -05:00
Jesse Plamondon-Willard b791e854c1
fix installer precheck errors showing quotes, tweak readability 2021-11-28 00:01:50 -05:00
Jesse Plamondon-Willard 65046c3c40
remove outdated note in config.json 2021-11-28 00:01:50 -05:00
Jesse Plamondon-Willard f3626992cf
remove walls_and_floors asset propagation
This is now added as a regular map tilesheet, so it'll be handled by the tilesheet asset propagation.
2021-11-28 00:01:50 -05:00
Jesse Plamondon-Willard 50a492f6e9
bump upcoming mod build package version 2021-11-28 00:01:49 -05:00
Jesse Plamondon-Willard 3beb2a9940
remove package workaround no longer needed with MonoGame 2021-11-28 00:01:49 -05:00
Jesse Plamondon-Willard f5807e22be
add BundleExtraAssemblies package option for new .NET 5 reference model 2021-11-28 00:01:49 -05:00
Jesse Plamondon-Willard bf10aeef0a
remove GameFramework build property from package 2021-11-28 00:01:48 -05:00
Jesse Plamondon-Willard 4a26c96fbe
remove GameExecutableName build property from package 2021-11-28 00:01:48 -05:00
Jesse Plamondon-Willard 217cc7af21
add IgnoreModFilePaths option to package 2021-11-28 00:01:48 -05:00
Jesse Plamondon-Willard 60c0e4fc31
ignore reference assemblies and *.deps.json when building a mod
These aren't useful for mods since they aren't the entry app.
2021-11-28 00:01:47 -05:00
Jesse Plamondon-Willard 32dcdfe18c
tweak assembly ignore logic in mod build package 2021-11-28 00:01:47 -05:00
Jesse Plamondon-Willard 25384ce6bc
update for custom languages 2021-11-28 00:01:47 -05:00
Jesse Plamondon-Willard 1ab0420b6d
update compatibility list 2021-11-28 00:01:46 -05:00
Jesse Plamondon-Willard 294f2a311e
fix error resolving native DLLs like libSkiaSharp 2021-11-28 00:01:46 -05:00
Jesse Plamondon-Willard 89c98223eb
remove path-too-long exception handling
The path length limit no longer applies in .NET 5.
2021-11-28 00:01:46 -05:00
Jesse Plamondon-Willard b349e956c6
remove handling for exception no longer thrown by the game 2021-11-28 00:01:46 -05:00
Jesse Plamondon-Willard 3c6549db3e
remove reference no longer needed in .NET 5 2021-11-28 00:01:45 -05:00
Jesse Plamondon-Willard 33c7a0392c
remove libgdiplus workaround on macOS
This is no longer needed after the .NET 5 migration.
2021-11-28 00:01:45 -05:00
Jesse Plamondon-Willard 0f508c755a
reorganize install script
This fixes an issue where Steam messes with the PATH, so dotnet isn't available until the terminal window is opened.
2021-11-28 00:01:45 -05:00
Jesse Plamondon-Willard 7c5c63d684
fix SMAPI not working on macOS, improve installer validation 2021-11-28 00:01:44 -05:00
Jesse Plamondon-Willard f6479ea2b6
restructure installer for .NET 5 changes 2021-11-28 00:01:44 -05:00
Jesse Plamondon-Willard ce80c68135
fix segfault on Linux/macOS after .NET 5 update
Harmony doesn't seem to support tiered compilation on Linux/macOS, but the vanilla game disables that too anyway. The bundled runtimeconfig files match the ones used by the vanilla game. Thanks to 0x0ade for identifying the cause!
2021-11-28 00:01:44 -05:00
Jesse Plamondon-Willard 897edd7ff0
update for accessibility change in Stardew Valley 1.5.5 2021-11-28 00:01:43 -05:00
Jesse Plamondon-Willard e10a7858a0
fix error reading console title on Linux with .NET 5
The console title is now write-only on Linux.
2021-11-28 00:01:43 -05:00