New library + Rewritten compatibility!
Version 5
This update adds compatibility for KTaNE: Rewritten, a recreation of the game that is made in a later version of Unity. Since this is easily a breaking change for a good deal of them, all libraries have had additional breaking changes applied to them to fix long-standing issues.
MAJOR
General:
wawa.DDL
:
- Change overloads of wawa.DDL.Access.FromGame to allow for KTaNE: Rewritten compatibility.
wawa.IO
:
- Stabilize and clearly document the behavior of the new linker, this includes deprecating the old names for operating systems within directories and instead using the favored
android
,linux
,macos
, andwindows
. - Change
wawa.IO.PathFinder
parameter names to more clearly express purpose.
wawa.Recall
:
- Now depends on
wawa.DDL
to enable KTaNE: Rewritten compatibility.
wawa.DDL
, wawa.IO
, and wawa.Recall
:
- Add full compatibility for KTaNE: Rewritten. If you wish to override the references yourself, such as by making your own Unity project that references
wawa
, take a look here.
General:
- Change all namespaces from
Wawa.*
towawa.*
. This decision is the largest breaking change and has been the subject to discussion ever since Version 3 was released. After talking with a few community members, the verdict is that this is a necessary breaking change to make learningwawa
far simpler. It also conforms to Microsoft's naming convention that names of companies or products should conform to their capitalization.
MINOR
wawa.DDL
:
- New property
wawa.DDL.Access.IsRewritten
to query whether the game is running in a different game environment, either in its editor or in-game. This property is used internally for control flow regarding direct references to the game. - New property
wawa.DDL.Missions.LightsOn
to query whether the lights in the office are currently turned on.
wawa.Modules:
- Add
wawa.Modules.InterpolatedStringHandlerEnumerable
for use with logging. - Add
wawa.Modules.ModdedModule.Log
andwawa.Modules.ModdedModule.LogLower
overloads to allow string interpolation syntax to automatically invokewawa.Modules.ModdedModule.Stringify
. This assumes you are using a C# 9 compiler, which in other words means it unfortunately cannot be compatible within the modkit. - Add
wawa.Modules.ModdedModule.Stringify
to allow custom behavior in serializing values for logging. - Add
wawa.Modules.ModdedModule.MissionSettings
to allow immediate access to overridden mission settings without needing to parse thestring
yourself. The format it is looking for is[Module Name] {"json": "body"}
.
wawa.IO
:
- Add support for loading ARM-targeted binaries.
wawa.Optionals
:
- Add downcast and upcast extension methods
wawa.Optionals.Maybe.As<T>
andwawa.Optionals.Maybe.AsNullable<T>
- Add compatibility for
netstandard2.0
by removing all Unity references.
wawa.Schemas
:
- Brand new library! Provides a simple fluent builder API for building the
TweaksEditorSettings
schema object that Tweaks can use to format your mod settings. Check out its documentation and example here.
wawa.TwitchPlays
:
- Increase accessibility of
wawa.TwitchPlays.Twitch<TMod>.AutoImplementedHelp
to be fullypublic
overprotected
.
PATCH
wawa.Recall
:
- Change
wawa.Recall.StatusLights
to have a backing field ofbyte
overint
. - Micro-optimize fail path for
Expect*
methods in wawa.Recall.Generator to only generate the stack frame it needs and not the full stack trace.
General:
- Use the new .NET 9 Stable SDK which grants improvements in compiler optimizations. All versions from here on out will be using the new SDK when compiling.
- Use the newest version of
Absence.Fody
(2.0.7 at the time of writing this), granting lower binary sizes.