The aim of this project is to eventually consolidate all shared code and libraries across my Sims 3 mods into one project, with new and existing mods linking to individual modules from this source as needed.
More specifically, this project contains:
Common procedures for mod injection, such as interaction injection and NRaas-style menus. Some UI and reflection code has been adapted from Battery's C# Script Utility for my own purposes.
Syntactic sugar for the Task Asynchronous Pattern using the Simulator, including returning objects and awaiting their results, adapted from the .NET Core source. Note that the async/await keywords themselves are not supported.
Support for LINQ to Objects and extension methods when compiling against .NET Framework 2.0, adapted from LINQBridge.
Quick and dirty HashSet
Support for C# 7 value tuples when compiling against .NET Framework 2.0, adapted from igor-tkachev
Support for C# 8 indices and ranges when compiling against .NET Framework 2.0, adapted from Stuart Lang
Modified versions of the core script assemblies which expose all classes and their members. The game's MONO intepreter has no concept of protection levels, so mods compiled against these so-called "unprotected" assemblies will still run without issue.