Releases: Emik03/wawa
Improvements to Maybe type
Version 3.1
As the remaining backlog of features have been gradually tested, the API has finally reached proper stability. A good number of quality-of-life features are added!
wawa.Unity
is the only assembly without any changes, public or internal. This library has been recompiled as version 3.1 just to keep Unity's assembly conflict problems away.
MINOR
wawa.DDL
- Add
Lookup.ModNameOf
, obtains the mod name from a component attached to a game object of a modded module.
wawa.Optionals
:
- Add pipe operator for nicer fallback syntax, e.g.
maybe | 2
which is the same asmaybe.UnwrapOr(2)
. - Implement
ICollection
,IFormattable
, andIList<T>
. This allows for inherited LINQ-compatibility, e.g.maybe.Select(some => some.Foo)
.
wawa.IO
- Change accessibility of
Config.Suffix
, moving it onto the public API.
PATCH
wawa.IO
- Optimize
Wawa.IO.ModInfo.GetHashCode
to be 6 times faster than before. - Throw an explicit exception when mods have conflicting ids, rather than propagating them from LINQ. This exception is also documented accordingly in the respective methods that call it.
wawa.Modules
- Improve algorithm for obtaining mod name, only relying on an assembly name as a fallback. In theory
Id
no longer needs to be overriden in any case, however the option is still there both for backwards compatibility, and in case if some edgecase was missed.
General:
- Add additional JetBrains annotations for better analysis with ReSharper.
- Add internal
StringSyntaxAttribute
to take advantage of compilers and IDEs that support it. Any appropriate parameters are now annotated with it.
Internals: IO optimization and fixes
Version 3
Alongside the release of the third version, wawa
has also been added as a plugin in Qkrisi's modkit.
wawa.DDL
, wawa.Extensions
, and wawa.Unity
are the assemblies without any changes, public or internal. These have been recompiled as version 3 just to keep Unity's assembly conflict problems away.
MAJOR
wawa.IO
:
- Change argument names for most exposed methods in
PathFinder
to give much clearer indication for what they are for. A breaking change if you used explicit arguments, e.g.PathFinder.GetModInfo(assembly: "foo")
.
wawa.Optionals
:
- Rename
Maybe.ToMaybe
toMaybe.AsMaybe
.
MINOR
wawa.Optionals
:
- Add
Maybe.AsNullable
to now allow bi-directional conversions betweenSystem.Nullable
andMaybe
.
wawa.Editors
:
- Add logging function for non-wawa templates.
General:
- Add additional JetBrains annotations for better analysis with ReSharper.
PATCH
wawa.Editors
:
- Change location for downloading
wawa.Editors
to be correctly in./Assets/Editor/Plugins/Managed
. It also creates the folder in the event that this directory is absent.
wawa.IO
:
- Fix previously thought unreachable edgecase where
ModInfo
isnull
in game.PathFinder.GetModInfo
no longer throwsArgumentNullException
for those edgecases. - Improve FFI library resolving for
GetUnmanaged
. - Remove logging for all methods in
PathFinder
, as most functions now don't require the extensive logging they used to. - Turn
GetDirectory
,GetFile
, andGetModInfo
into pure functions. - Use the faster Unity API
AssetBundle.LoadFromFile
to load asset bundles.
General:
- Hide
AllowNullAttribute
which was mistakenly exposed into the public API. Considered a patch becauseAllowNullAttribute
was not possible to reference properly due to each library having the same definition and namespace which would cause aliasing issues, as well as it having no definitions or metadata to play with. UseCanBeNullAttribute
instead. - No longer throws
ArgumentNullException
when callingobject.Equals
withnull
for the following types:Wawa.IO.Config
Wawa.IO.ModInfo
Wawa.Modules.Sound
Wawa.Modules.State
Wawa.Optionals.Maybe
Wawa.Optionals.Unit
Wawa.TwitchPlays.AliasAttribute
Wawa.TwitchPlays.CommandAttribute
Wawa.TwitchPlays.CommandInfo
Wawa.TwitchPlays.Instruction
Wawa.TwitchPlays.TwitchString
Wawa.TwitchPlays.YieldEventArgs
Enhancements; Happy new year!
Version 2
It's the end of the month again, and this framework is seeing a couple of small enhancements, as well as an API-breaking change.
wawa.Editors
, wawa.IO
, wawa.Modules
, and wawa.TwitchPlays
are the assemblies with any changes, public or internal. The rest have remained unchanged, but been recompiled as version 2 just to keep Unity's assembly conflict problems away.
MAJOR
wawa.Modules
& wawa.TwitchPlays
:
- Changed signatures for return values for arrays
T[]
to interfacesIList<T>
.ModdedModule.Play
andAliasAttribute.Aliases
are affected.
MINOR
wawa.Modules
:
- Added warning for having an unspecified mod version.
- Added
ModdedModule.Children
andModdedModule.Matrix
, for obtaining children of the main selectable as a 1-dimensional or 2-dimensional list, respectively.
PATCH
wawa.Editors
:
- Change behaviour to only create components when none exist, causing less confusion when stumbling on
EmptyBehaviour
. - Fix scaffold feature in Windows causing an error regarding non-UNIX-style paths.
- Renamed
EmptyBehaviour
toDeleteMe
, making it much clearer that its purpose is to be temporary and manually removed.
wawa.IO
:
- Optimized
PathFinder.GetModInfo()
when run on the editor. - Fixed off-by-one in logging file version numbers.
wawa.Modules
:
Stringifier.Stringify
and consequentiallyModdedModule.Log
no longer throws exceptions onnull
, and avoids properties annotated withObsoleteAttribute
.
Initial release
Version 1
Everybody has to start somewhere. Let's just hope it doesn't end here too.
Make sure you have the documentation pulled up and are ready to code.