Skip to content

Releases: Emik03/wawa

Improvements to Maybe type

31 Jan 21:48
Compare
Choose a tag to compare

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 as maybe.UnwrapOr(2).
  • Implement ICollection, IFormattable, and IList<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

15 Jan 22:51
Compare
Choose a tag to compare

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 to Maybe.AsMaybe.

MINOR

wawa.Optionals:

  • Add Maybe.AsNullable to now allow bi-directional conversions between System.Nullable and Maybe.

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 is null in game. PathFinder.GetModInfo no longer throws ArgumentNullException 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, and GetModInfo 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 because AllowNullAttribute 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. Use CanBeNullAttribute instead.
  • No longer throws ArgumentNullException when calling object.Equals with null 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!

31 Dec 22:47
Compare
Choose a tag to compare

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 interfaces IList<T>. ModdedModule.Play and AliasAttribute.Aliases are affected.

MINOR

wawa.Modules:

  • Added warning for having an unspecified mod version.
  • Added ModdedModule.Children and ModdedModule.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 to DeleteMe, 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 consequentially ModdedModule.Log no longer throws exceptions on null, and avoids properties annotated with ObsoleteAttribute.

Initial release

30 Nov 18:21
Compare
Choose a tag to compare

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.