Commit Graph

384 Commits

Author SHA1 Message Date
Jesse Plamondon-Willard a13003de8b remove Mono.Cecil.Rocks (#231)
It's not needed since we're not injecting new instructions, and causes the field rewriters to fail unexpectedly.
2017-02-09 22:38:10 -05:00
Jesse Plamondon-Willard 3668b0902d fix field rewriter not added to config (#231) 2017-02-09 20:34:34 -05:00
Jesse Plamondon-Willard 5f9c03a8a9 add field rewriter for the `Game1.activeClickableMenu` change in SDV 1.2 (#231) 2017-02-09 14:28:44 -05:00
Jesse Plamondon-Willard 74a56a7b3b further generalise CIL rewriters for reuse (#231) 2017-02-09 14:02:43 -05:00
Jesse Plamondon-Willard 40a9014742 generalise CIL rewriters for reuse (#231) 2017-02-09 13:45:34 -05:00
Jesse Plamondon-Willard 036595cc71 remove old log file to avoid confusion (#231) 2017-02-08 00:53:53 -05:00
Jesse Plamondon-Willard e440d9042e bump minimum game version to 1.2 (#231) 2017-02-08 00:26:32 -05:00
Jesse Plamondon-Willard 6092f9ea00 always use \r\n line endings in log file for crossplatform compatibility (#230) 2017-02-08 00:22:27 -05:00
Jesse Plamondon-Willard d52b3572f3 simplify log filename 2017-02-08 00:17:00 -05:00
Jesse Plamondon-Willard 366769e8a2 add SaveEvents.AfterReturnToTitle event (#231) 2017-02-08 00:11:46 -05:00
Jesse Plamondon-Willard 2b7abc3af5 clean up more obsolete code (#231) 2017-02-07 23:34:52 -05:00
Jesse Plamondon-Willard 84bc32c3f1 reimplement graphics events (#231) 2017-02-07 23:04:16 -05:00
Jesse Plamondon-Willard 8b0e54a777 ignore code analysis warnings in game code (#231) 2017-02-07 22:10:00 -05:00
Jesse Plamondon-Willard 98cf6a2766 update SGame.Draw with base code (#231) 2017-02-07 21:54:29 -05:00
Jesse Plamondon-Willard 8efa5f32c1 add reflectionHelper.GetPrivateProperty<T> (#231) 2017-02-07 21:07:57 -05:00
Jesse Plamondon-Willard cec7469786 disambiguate references to Farmer (#231) 2017-02-07 20:51:22 -05:00
Jesse Plamondon-Willard 95a93a05b3 remove oldest deprecated code (#231)
Since Stardew Valley 1.2 breaks most mods anyway, this commits removes the oldest deprecations and fixes the issues that are easiest for mods to update. See documentation for details.
2017-02-07 20:50:41 -05:00
Jesse Plamondon-Willard 99d0450b2c fix install error when the mods folder doesn't exist (#229) 2017-02-04 16:50:09 -05:00
Jesse Plamondon-Willard 3919ab7a4a update for 1.8 release 2017-02-04 15:30:26 -05:00
Jesse Plamondon-Willard 57a99803f0 update deprecation level for Extensions class 2017-02-04 15:27:13 -05:00
Jesse Plamondon-Willard 0b8396cc53 rm cruft 2017-02-03 22:26:48 -05:00
Jesse Plamondon-Willard 8d3e6048b8 simplify installer text 2017-02-03 22:05:06 -05:00
Jesse Plamondon-Willard 4504ddcd98 remove mod .cache folders during (un)install process (#229) 2017-02-03 22:04:43 -05:00
Jesse Plamondon-Willard 85ff940e68 move install package's Mono/Windows folders out of root
This will hopefully reduce confusion among players who go into "Windows" instead of running install.exe.
2017-02-03 22:02:54 -05:00
Jesse Plamondon-Willard 9689bb9484 expand & prettify installer readme 2017-02-03 21:21:35 -05:00
Jesse Plamondon-Willard 3eb8110c45 move build task which prepares install package into a .targets file 2017-02-03 20:18:00 -05:00
Jesse Plamondon-Willard 5e68400c43 only read assembly from memory if it was rewritten (#229)
This fixes an issue where you can't debug into mod code because SMAPI isn't loading the actual DLL.
2017-02-03 20:12:42 -05:00
Jesse Plamondon-Willard 4fff06cce1 fix documentation issues 2017-02-03 01:40:47 -05:00
Jesse Plamondon-Willard 6ee14ecfbf rewrite mod assembly loading (#229)
This greatly simplifies mod loading, eliminates the .cache folders by loading assemblies in memory, ensures DLLs are loaded in leaf-to-root order, and reduces log verbosity. These changes should address a range of issues, notably #221 and #226.
2017-02-02 23:22:54 -05:00
Jesse Plamondon-Willard ae7d9d6bc4 fix error when SMAPI tries to load Mac metadata files for DLLs 2017-02-02 20:48:29 -05:00
Bpendragon (David Camp) 8c6dca95da Corrected CurrentLocationChanged's "NewLocation" and "PriorLocation" descriptors, they displayed in Intellisense as the opposite of what they were. 2017-02-02 16:08:06 -05:00
Jesse Plamondon-Willard 8db280d874 expose SemanticVersion constructor that parses a string 2017-01-25 22:30:07 -05:00
Jesse Plamondon-Willard 08e9cd1263 Add GOG Mac path
Thanks to LeonBlade for the path.
2017-01-22 22:31:00 -05:00
Jesse Plamondon-Willard b90387668d update for 1.7 release 2017-01-19 12:22:32 -05:00
Jesse Plamondon-Willard 5ccd5b5df7 log deprecation warnings after list of loaded mods (#220) 2017-01-19 11:43:32 -05:00
Jesse Plamondon-Willard 1cf8a628dc only call mod.Entry() once all mods have been loaded (#220) 2017-01-19 11:34:24 -05:00
Jesse Plamondon-Willard ba590b20a6 add public mod registry (#220) 2017-01-19 11:07:48 -05:00
Jesse Plamondon-Willard 4fe123350c bump several deprecations 2017-01-19 01:41:55 -05:00
Jesse Plamondon-Willard 6c07b5f395 tweak error text when starting game throws an exception 2017-01-19 01:18:53 -05:00
Jesse Plamondon-Willard 698e012cd2 simplify overridden game version 2017-01-19 01:18:37 -05:00
Jesse Plamondon-Willard f681f618c1 add mod folder path to console 2017-01-19 01:10:13 -05:00
Jesse Plamondon-Willard f4846173a9 fix before/after save events not triggering on days when the player shipped an item (#218) 2017-01-19 00:54:59 -05:00
Jesse Plamondon-Willard 602227eae8 fix some world events being fired during game startup (#217) 2017-01-18 22:14:50 -05:00
Jesse Plamondon-Willard b3ff004572 fix PlayerEvents.LoadedGame and SaveEvents.AfterLoad being fired before the world finishes loading (#216) 2017-01-18 21:32:38 -05:00
Jesse Plamondon-Willard 1f3d3c8c93 bump version, update release steps in readme 2017-01-16 16:04:56 -05:00
Jesse Plamondon-Willard 64a72c45e3 deprecate events replaced by save events (#215) 2017-01-15 19:21:26 -05:00
Jesse Plamondon-Willard 0c73b02d58 add save events (#215) 2017-01-15 18:23:09 -05:00
Jesse Plamondon-Willard 5c8e7f5d93 mark NPC Locations Map 1.42 incompatible due to update-check bug 2017-01-15 18:20:50 -05:00
Jesse Plamondon-Willard 525172e831 remove redundant TrainerMod build config (#214) 2017-01-14 22:49:50 -05:00
Patrick Müssig 6e04cbca3a TrainerMod uses crossplatform.targets 2017-01-14 22:49:50 -05:00
Jesse Plamondon-Willard f957af71d1 fix console color support check (#206) 2017-01-14 15:53:28 -05:00
Jesse Plamondon-Willard 82dd5b3068 fix TrainerMod project not being built by default 2017-01-14 15:14:23 -05:00
Jesse Plamondon-Willard 90e92ef61f fix error when the console doesn't support colour (#206) 2017-01-14 15:05:38 -05:00
Jesse Plamondon-Willard 2d824b34e4 add console commands to open game & date folders (#172) 2017-01-14 13:46:00 -05:00
Jesse Plamondon-Willard 9d1b6a1af2 fix issue where default ICollection<T> values in config.json were duplicated on each load (#209) 2017-01-14 13:03:57 -05:00
Jesse Plamondon-Willard 83bdcd2838 fix error loading mods if they have a .cache folder created on a different platform (#211) 2017-01-14 12:43:50 -05:00
Jesse Plamondon-Willard 34bf9c5eca tweak JSON read error-handling, update release notes 2017-01-14 12:26:59 -05:00
mytigio 482dd42d3d Add a catch for DirectoryNotFoundException in ModHelper.ReadJsonFile method. 2017-01-14 12:13:27 -05:00
Jesse Plamondon-Willard 8e8cda87fb mark NPC Map Locations 1.43 incompatible due to update error 2017-01-14 01:11:57 -05:00
Jesse Plamondon-Willard 0ac9e47ea2 add support for custom incompatible-mod-version error text 2017-01-14 01:11:42 -05:00
Jesse Plamondon-Willard 40bc8f57c7 add support for incompatible mod version ranges 2017-01-14 00:59:19 -05:00
Jesse Plamondon-Willard 481a43d807 update game install path detection to match mod build config package 2017-01-11 13:56:12 -05:00
Jesse Plamondon-Willard 43a4194a5c remove unofficial patch links for officially-updated CJB mods 2017-01-06 14:59:55 -05:00
Jesse Plamondon-Willard a432477ea3 fallback to launching SMAPI without a terminal on Linux if the terminal is unavailable (#198) 2016-12-30 12:04:27 -05:00
Jesse Plamondon-Willard a7d3930d88 encapsulate repeated monitor construction 2016-12-30 11:47:23 -05:00
Jesse Plamondon-Willard b75d86e7cc update for SMAPI 1.5 release 2016-12-23 12:43:42 -05:00
Jesse Plamondon-Willard 8416c9009e increase deprecation levels for less-used deprecated code 2016-12-23 12:36:03 -05:00
Jesse Plamondon-Willard 1fdc0c0b35 catch errors when reading metadata file just in case (#192) 2016-12-23 11:20:06 -05:00
Jesse Plamondon-Willard c7a08d08db add support for unofficial updates which suffix the official version number with a pre-release label (#192) 2016-12-22 22:34:49 -05:00
Jesse Plamondon-Willard f6f52b653e add known incompatible mods, update release notes (#192) 2016-12-22 13:08:45 -05:00
Jesse Plamondon-Willard fdae87d340 skip mods known to be incompatible and display error with update links (#192) 2016-12-22 12:47:12 -05:00
Jesse Plamondon-Willard 3fd16a65f1 move models into namespace (#192) 2016-12-22 12:45:42 -05:00
Jesse Plamondon-Willard 90f5233cc7 add config setting to disable update checks (#202) 2016-12-22 11:27:48 -05:00
Jesse Plamondon-Willard ca3cf89000 autogenerate SMAPI config (#202) 2016-12-22 11:20:01 -05:00
Jesse Plamondon-Willard f7eda265d9 track loaded mod instances & manifests via mod registry (#201) 2016-12-22 10:48:05 -05:00
Jesse Plamondon-Willard fa71bdd6c7 make SemanticVersion constructor from version string public 2016-12-21 13:43:04 -05:00
Jesse Plamondon-Willard 444364f418 fix version pre-release tags not consistently normalised (#195) 2016-12-21 13:33:59 -05:00
Jesse Plamondon-Willard c257d70575 rename SMAPI config file for consistency (#192, #202) 2016-12-21 13:27:56 -05:00
Jesse Plamondon-Willard ea65b2b7df correct semantic version pre-release label precedence (#195) 2016-12-21 11:45:52 -05:00
Jesse Plamondon-Willard 45ee74219e fix issue where changing the active menu inside a menu change handler didn't trigger a new event (#194) 2016-12-18 17:42:51 -05:00
Jesse Plamondon-Willard a8cc363699 fix legacy version wrapper not implementing ToString method (#197) 2016-12-18 16:58:47 -05:00
Jesse Plamondon-Willard 23988a3c33 migrate manifest & version to interfaces with backwards compatibility (#197) 2016-12-18 15:37:23 -05:00
Jesse Plamondon-Willard 487ae1dce9 add version.IsOlderThan(other) method for convenience 2016-12-18 13:52:09 -05:00
Jesse Plamondon-Willard d9e87399bf format code (#193) 2016-12-18 12:27:44 -05:00
Tyler Staples cd93d59eaf Added a struct to wrap cache entries for the sake of tracking invalid lookups. This fixes the issue where a null reference exception would be thrown when trying to look up non-existant or non-private members.
Added a null check to GetPrivateValue and it's overloads to fix the issue where it would throw a null reference exception when required was false and the field was null.
2016-12-18 11:42:04 -05:00
Jesse Plamondon-Willard c24294c3dd fix System.Runtime.Caching not available on Mac 2016-12-12 21:43:35 -05:00
Jesse Plamondon-Willard a3376e2a62 update for 1.4 release 2016-12-12 11:20:31 -05:00
Jesse Plamondon-Willard df7d41fc37 move interfaces into root (#185) 2016-12-11 21:03:57 -05:00
Jesse Plamondon-Willard dccd73e4fb detect which Linux command detects whether a command exists (#183) 2016-12-10 13:01:58 -05:00
Jesse Plamondon-Willard 7511db4c83 open terminal on most Linux distros (#183) 2016-12-10 00:11:50 -05:00
Jesse Plamondon-Willard 1fbe6be43d remove redundant output paths 2016-12-09 18:43:15 -05:00
Jesse Plamondon-Willard 80b6e20841 cache reflection lookups with sliding expiry (#185) 2016-12-09 14:15:14 -05:00
Jesse Plamondon-Willard cd0e5961d4 add reflection API for mods (#185) 2016-12-09 12:25:53 -05:00
Jesse Plamondon-Willard 25d2eb4777 intercept mod errors in menu draw code so they don't crash the game 2016-12-08 12:18:56 -05:00
Jesse Plamondon-Willard 22a2e2e853 add registry paths to build configuration (#189) 2016-12-07 23:55:32 -05:00
Jesse Plamondon-Willard 7e76d90c55 refactor registry checks for crossplatform compatibility (#189) 2016-12-07 23:52:56 -05:00
Jesse Plamondon-Willard 7af722ec1f rename .targets file to better reflect contents, add to installer project 2016-12-07 23:38:22 -05:00
Patrick Müssig 47d5aef404 SMAPI installer is able to read SDV install path from registry key 2016-12-07 23:27:53 -05:00
Jesse Plamondon-Willard acbd33fb02 open a terminal for SMAPI output on Mac (#183) 2016-12-07 23:15:37 -05:00
Jesse Plamondon-Willard ae44f17205 fix installer not moving mods out of appdata if the game isn't installed on the same Windows partition (#184) 2016-12-07 22:43:05 -05:00
Jesse Plamondon-Willard 860ccb90f7 fix the installer not removing TrainerMod from appdata if it's already in the game mods folder 2016-12-07 22:17:38 -05:00
Jesse Plamondon-Willard 2c11ce1bff add TypeLoadException details when intercepted by SMAPI 2016-12-07 22:05:14 -05:00
Jesse Plamondon-Willard b019dd4f69 replace out_items, out_melee, and out_rings commands with a searchable list_items command 2016-12-07 20:36:28 -05:00
Jesse Plamondon-Willard f0433e5a41 tweak installer wording to avoid confusion 2016-12-06 22:19:38 -05:00
Jesse Plamondon-Willard b751e7dd2e skip mod folder with a warning if it has no manifest (#186) 2016-12-06 17:29:38 -05:00
Jesse Plamondon-Willard 748e45aefb add dependencies.targets to project 2016-12-06 17:13:57 -05:00
Jesse Plamondon-Willard 8304227cea remove obsolete mods/.cache directory on install (#187, #188) 2016-12-06 00:41:12 -05:00
Jesse Plamondon-Willard f625fd51a0 always clean up files during install (#188) 2016-12-06 00:37:12 -05:00
Jesse Plamondon-Willard 3159436145 reimplement assembly caching (#187)
This commit ensures DLLs are copied to the cache directory only if they changed, to avoid breaking debugging support unless necessary. To support this change, the assembly hash file has been replaced with a more detailed JSON structure, which is used to determine whether the cache is up-to-date and whether to use the cached or original assembly. Some mods contain multiple DLLs, which must be kept together to prevent assembly resolution issues; to simplify that (and avoid orphaned cache entries), each mod now has its own separate cache.
2016-12-05 23:51:09 -05:00
Jesse Plamondon-Willard 31301988e9 deploy trainer mod when building SMAPI in debug mode 2016-12-05 02:14:25 -05:00
Jesse Plamondon-Willard 48adbe2492 update for 1.3 release 2016-12-04 09:40:34 -05:00
Jesse Plamondon-Willard feb2d89ff6 fix comment headers 2016-12-04 00:57:32 -05:00
Jesse Plamondon-Willard ba32511fc2 update repository 2016-12-04 00:56:08 -05:00
Jesse Plamondon-Willard 788a90674f reduce logging levels (#166) 2016-12-02 17:46:07 -05:00
Jesse Plamondon-Willard ad773a947a fix assembly resolution when mods try to load types from other mods (#166) 2016-12-02 17:15:52 -05:00
Jesse Plamondon-Willard 67feb7e9a9 remove Costura assembly weaving (#166)
This didn't work on Linux or Mac, caused assembly resolution problems when rewritten mods referenced Json.NET, complicated debugging, and wasn't really needed since players use the installer to cleanly add or remove SMAPI.
2016-12-01 01:48:39 -05:00
Jesse Plamondon-Willard 33f46d26f4 invalidate assembly rewrite cache on new SMAPI version (#166) 2016-11-30 22:51:50 -05:00
Jesse Plamondon-Willard 44dfb6fac5 fix assembly resolution failing for rewritten mods that reference a different version of Json.NET (#166) 2016-11-30 22:44:40 -05:00
Jesse Plamondon-Willard 0fcf29d428 fix local deployment on Linux/Mac 2016-11-30 14:04:06 -05:00
Jesse Plamondon-Willard 5c11483b8e rework uninstaller so it doesn't depend on install package
For example, this avoids an issue where the normal SMAPI uninstaller didn't remove files added by the 'SMAPI for developers' installer.
2016-11-29 19:42:27 -05:00
Jesse Plamondon-Willard 7e17005c52 update readme & installer for 1.3 (#166) 2016-11-29 19:41:58 -05:00
Jesse Plamondon-Willard df8f44c704 Merge branch 'feature/rewrite-mod-assemblies' into develop 2016-11-29 19:27:10 -05:00
Jesse Plamondon-Willard d5932a0d77 enable local SMAPI deployment on Linux/Mac 2016-11-29 19:25:51 -05:00
Jesse Plamondon-Willard 528a934786 exclude rewriters project from IL weaving (#166) 2016-11-29 19:22:59 -05:00
Jesse Plamondon-Willard 9ff9d02db5 rewrite SpriteBatch.Begin calls for compatibility (#166) 2016-11-29 19:21:11 -05:00
Jesse Plamondon-Willard cc4d3c1cf8 add framework for rewriting incompatible methods (#166) 2016-11-29 14:03:14 -05:00
Jesse Plamondon-Willard 5470e95bf5 add separate project to support upcoming IL rewriting (#166) 2016-11-29 14:02:59 -05:00
Jesse Plamondon-Willard b425e32055 move dependencies into targets file for reuse (#166) 2016-11-29 12:56:03 -05:00
Jesse Plamondon-Willard f3675aa466 move assembly map into constants (#166) 2016-11-28 20:51:57 -05:00
Jesse Plamondon-Willard f7b8879011 supplement assembly resolution for Mono (#166) 2016-11-27 15:56:47 -05:00
Jesse Plamondon-Willard 0d94c628bb add trace logs when rewriting an assembly (#166) 2016-11-27 12:27:44 -05:00
Jesse Plamondon-Willard 8917fb6697 only rewrite assemblies if needed (#166) 2016-11-27 12:08:00 -05:00
Jesse Plamondon-Willard 2e40ad7ad3 copy pdb/mdb files to assembly cache (#166) 2016-11-26 16:26:36 -05:00
Jesse Plamondon-Willard 2154b6de95 use simpler, non-broken approach for rewriting mod type references (#166) 2016-11-26 16:14:10 -05:00
Jesse Plamondon-Willard b06aed66c4 rewrite type references in mod assemblies to match target platform (#166) 2016-11-26 16:12:21 -05:00
Jesse Plamondon-Willard 4df1999855 move cache struct into its own file (#166) 2016-11-26 16:10:41 -05:00
Jesse Plamondon-Willard 1de8dc1b0f pass target platform to assembly rewriter for later use (#166) 2016-11-26 16:07:21 -05:00
Jesse Plamondon-Willard 7bea3c2ba0 add log entry when preprocessing an assembly (#166) 2016-11-26 16:00:02 -05:00
Jesse Plamondon-Willard e9fee3f6fe preprocess all mod assemblies for compatibility with multi-assembly mods (#166) 2016-11-26 13:14:26 -05:00
Jesse Plamondon-Willard 08d5ee293f simplify manifest.json path check 2016-11-26 13:14:26 -05:00
Jesse Plamondon-Willard 517a9d82fc preprocess mods through Mono.Cecil to allow rewriting later (#166) 2016-11-25 23:41:19 -05:00
Jesse Plamondon-Willard 00a3c14446 fix audio error on startup for some players by deferring update check 2016-11-24 12:43:28 -05:00
Jesse Plamondon-Willard 614de95a8e update for 1.2 release 2016-11-24 12:19:57 -05:00
Jesse Plamondon-Willard 0ed5f3e98e fix compatibility with mods which use the previous signature of Command.CallCommand 2016-11-23 20:44:49 -05:00
Jesse Plamondon-Willard 26266a946d revert Config.GenerateDefaultConfig<T> back to virtual method
SMAPI 1.0 changed this virtual method to abstract, since it's required for the configuration to work correctly. However this breaks some incorrectly-written older mods which didn't implement the method. Since this class is deprecated anyway, revert to the original behaviour for compatibility.
2016-11-23 20:31:46 -05:00
Jesse Plamondon-Willard 1dc3f1013f log relevant details when a ReflectionTypeLoadException is caught by SMAPI 2016-11-23 20:23:42 -05:00
Jesse Plamondon-Willard 9bf1ad71b4 intercept event handler exceptions (#179) 2016-11-21 22:09:02 -05:00
Jesse Plamondon-Willard 1a5eb12cc6 restore obsolete SPlayer for backwards compatibility, mark deprecated 2016-11-19 18:56:35 -05:00
Jesse Plamondon-Willard 7cb77dd2be update for 1.1.1 release 2016-11-19 17:04:21 -05:00
Jesse Plamondon-Willard cb6f6fe19d fix race condition where GameLoaded event was sometime fired before the game was ready 2016-11-19 16:03:45 -05:00