Releases: Emik03/wawa
Loosen internal assertion
Version 4.4.2
This update aims to fix a problem reported regarding this log file. wawa.IO
is the only assembly with any changes, public or internal. This library has been recompiled as version 4.4.2 just to keep Unity's assembly conflict problems away.
PATCH
wawa.IO
:
- Fix library throwing when a local and Steam Workshop build co-exist, but one is unloaded. The library will still however throw when two mods load with the same id.
- Optimize caching, less overhead for calling
PathFinder
methods extremely frequently with the same inputs. Granted, it is still recommended you store the instance yourself, but now the performance impact is far less aggregious.
1 year anniversary of wawa!
Version 4.4.1
It has been exactly 1 year since Version 1 was published! wawa.Editors
and wawa.Modules
are the only assemblies with any changes, public or internal. This library has been recompiled as version 4.4.1 just to keep Unity's assembly conflict problems away.
PATCH
wawa.Editors
:
- Fix highlight scale in Scaffolder feature incorrectly setting its value to
Vector3.zero
instead ofVector3.one
.
wawa.Modules
- Change behavior of
Wawa.Modules.State.IsSolved
to better reflect needies. - Change needy autosolver to consistently deactivate itself. This both applies for Twitch Plays and for the exception handler.
- Fix
Wawa.Modules.ModdedModule.Solve
not doing anything on calls past the first time.
Twitch Plays improvements
Version 4.4
Provides a set of new APIs for Twitch Plays command processing, as well as new diagnostics to prevent certain pitfalls. wawa.Editors
and wawa.TwitchPlays
are the only assemblies with any changes, public or internal. This library has been recompiled as version 4.4 just to keep Unity's assembly conflict problems away.
MINOR
wawa.Editors
:
- Add warning for when the Scaffolder feature is unable to add an asset to a component, which is usually an indication that the respective file that it is looking for is missing.
wawa.TwitchPlays
:
- Add warning for when an unsupported query is passed into the forced solve. This warning is editor-only, as in the future this warning may be deprecated if the Twitch Plays mod ever unionizes the functionality of the command processor and the forced solver.
- Change behavior of processing twitch commands:
yield return null
will no longer be intercepted if a the object returns true onWawa.TwitchPlays.Domains.TwitchString.IsSendMessage
. - New APIs:
Wawa.TwitchPlays.Domains.Instruction.UsableInForcedSolve
determines whether the query can be processed in a forced solve context. Used by the library to warn the consumer that the query passed in is not supported in forced solvers.Wawa.TwitchPlays.Twitch<TModule>.Equal
determines whether the two strings passed in are equal, without accounting for case. This is by far the most common operation when dealing with raw strings.Wawa.TwitchPlays.Domains.TwitchString.IsSendMessage
determines whether the query represents a message to be sent in Twitch Chat. Used by the library to determine whether the consumer intends on cancelling after the firstyield return
is confirmed to be such an instance.
- New optional parameters in existing methods, allowing you to toggle both formatting and halting:
PATCH
wawa.TwitchPlays
:
- Remove unnecessary internal
yield return null
in situations where such a value does nothing. This allows your command to be processed one (1) frame faster!
General:
- Add additional JetBrains annotations for better analysis with ReSharper.
- Micro-optimize, such as removing unnecessary calls to
GetEnumerator
where applicable. - Use the new .NET 8 Stable SDK which grants improvements in compiler optimizations. All versions from here on out will be using the new SDK when compiling.
Config fix + QOL improvement
Version 4.3
Very minor update. wawa.IO
and wawa.TwitchPlays
are the only assemblies with any changes, public or internal. This library has been recompiled as version 4.3 just to keep Unity's assembly conflict problems away.
MINOR
wawa.TwitchPlays
:
Wawa.TwitchPlays.Domains.Instruction.FromKMSelectableArray
now allowsparams
syntax, which was a previous pain point when using this API.
Example usage:
yield return Instruction.FromKMSelectableArray(selectable1, selectable2, selectable3); // Now allows this!
yield return Instruction.FromKMSelectableArray(Get<KMSelectable[]>()); // Of course, the old behavior works still.
PATCH
wawa.IO
:
- Fix
Wawa.IO.Config<T>
's misbehavior with the file system, which prevented it from writing anything.
New library!
Version 4.2
Despite the addition of an entire new library, this is strictly not a breaking change. This update also introduces a couple of fixes which have been reported over the last month. wawa.Optionals
and wawa.Unity
are the only assemblies without any changes, public or internal. This library has been recompiled as version 4.2 just to keep Unity's assembly conflict problems away.
MINOR
wawa.Editors
:
- Add a new button to fetch the new library, as well as downloading the entire framework at once.
wawa.Recall
:
- Brand new library! Hook onto selectables and modules — regardless of if they're modded or not — all within the same API! Check out its documentation and example here.
PATCH
wawa.Extensions
:
- Implement
OnDefocus
patch, where the function gets called twice by the game.
wawa.IO
:
- Fix unconventional crash caused by Mono not supporting newer IL instructions.
wawa.Modules
:
- Hook
OnPass
andOnStrike
to ensureStatus
is set correctly.
wawa.TwitchPlays
:
- Fix non-nested yield instructions.
yield return null
automatically on a non-wildcard command.
General:
- Stripped away more metadata from all binaries, resulting in an approximate 12.5% reduction in file size on average.
Early reverse-birthday-present!
Version 4.1
This update introduces the accumulation of suggestions and bug reports received over the past few months. wawa.Extensions
and wawa.Unity
are the only assemblies without any changes, public or internal. This library has been recompiled as version 4.1 just to keep Unity's assembly conflict problems away.
MINOR
wawa.DDL
:
- Add new optional argument in getting strike/rate information:
signFlip
, which determines whether to automatically invert the value based on context. An example isWawa.DDL.KMBombStrikeExtensions.SetRate
. For backwards compatibility, the old behavior is preserved, so the new behavior is strictly opt-in.
wawa.Optionals
:
- Add new operators and boolean-logic-like methods in
Maybe
, such asWawa.Optionals.Maybe.Xor
. All implementations can be found in the extension class and declaring struct. - Add new interface implementations for
Unit
, such as implementingIEnumerable<Unit>
to allow a unit to be iterated, which will always result in an empty enumeration. All interfaces can be found here.
PATCH
wawa.Editors
:
- Fix syntax errors in generated code under
Scaffolder
.
wawa.IO
, wawa.Modules
, and wawa.TwitchPlays
:
- Allow null values for comparisons of domain objects, such as
Sound.==
.
wawa.Modules
:
- Add
CompositeFormat
injection to improve syntax highlighting in IDEs that support it, such asWawa.Modules.ModdedModule.Log
. - Further improvements to
Stringifier.Stringify
, such as escaping infinite enumerations, and better inferences on how to deal with specific interfaces.
wawa.TwitchPlays
:
- Now guarantees
Dispose
is called for any enumerable values obtained from invoking methods annotated withWawa.TwitchPlays.Domains.CommandAttribute
. While this behavior is unneeded in a majority of cases, it makes any future opportunity to hit a very nasty edgecase nil.
Improved Stringifier, again
Version 4.0.2
This update is mostly incremental and doesn't introduce any noticeable behavior changes, other than the improvement for the Stringifier
type in wawa.Modules
. All binaries have been recompiled to take advantage of the new compiler optimizations.
PATCH
wawa.Modules
:
- Catch appropriate exceptions in Stringifier, the method now no longer throws
InvalidOperationException
/NotSupportedException
/PlatformNotSupportedException
. It will still raise any other exceptions thrown by properties of the serializing instance.
General:
- Use the new .NET 8 Preview SDK which grants improvements in compiler optimizations. All versions from here on out will be using the new SDK when compiling.
wawa.DDL Null Guard fix
Version 4.0.1
This update fixes a bug that affected all prior versions (v1-4) on wawa.DDL
. wawa.DDL
is the only assembly with any changes, public or internal. The rest have remained unchanged, but been recompiled as version 4.0.1 just to keep Unity's assembly conflict problems away.
PATCH
wawa.DDL
:
- Fix exception caused by a null guard in
Wawa.DDL.Access.FromGame
. This behavior change now makes it trickier to use this method directly, so the documentation has been appended as such as to the purpose of the function.
Signature change
Version 4
This update makes a necessary breaking change to wawa.TwitchPlays.Twitch<>
. wawa.TwitchPlays
is the only assembly with any changes, public or internal. The rest have remained unchanged, but been recompiled as version 4 just to keep Unity's assembly conflict problems away.
MAJOR
wawa.TwitchPlays
:
- Change return signatures of the following members:
Wawa.TwitchPlays.Twitch<>.IndexedSequence
fromIEnumerable<KMSelectable>
toIEnumerable<Instruction>
.Wawa.TwitchPlays.Twitch<>.Sequence
fromIEnumerable<KMSelectable>
toIEnumerable<Instruction>
.Wawa.TwitchPlays.Twitch<>.Split
fromstring[]
toIList<string>
.Wawa.TwitchPlays.Twitch<>.UntilSolve
fromIEnumerable<bool>
toIEnumerable<Instruction>
.Wawa.TwitchPlays.Twitch<>.UntilStrike
fromIEnumerable<bool>
toIEnumerable<Instruction>
.
MINOR
wawa.TwitchPlays
:
- Add
Wawa.TwitchPlays.Twitch<>.IndexedSequence
overload that acceptsIEnumerable<>
.
Improved Stringifier
Version 3.1.1
This update is mostly incremental and doesn't introduce any noticeable behavior changes, other than the improvement for the Stringifier
type in wawa.Modules
. All binaries have been recompiled to take advantage of the new compiler optimizations.
PATCH
wawa.Modules
:
- Inherit Emik.Morsels implementation of Stringifier, this allows for proper conversion to strings for Unity objects, which was previously not supported.
General:
- Use the new .NET 8 Preview SDK which grants improvements in compiler optimizations. All versions from here on out will be using the new SDK when compiling.