Skip to content

Releases: chickensoft-games/LogicBlocks

v4.0.0

23 Dec 19:19
Compare
Choose a tag to compare

What's Changed

  • feat: allow blackboard data to be overwritten from inside a logic block by @definitelyokay in #24
  • refactor: cleanup warnings by @definitelyokay in #25
  • feat: eliminate need to pass context to states by @definitelyokay in #26

Full Changelog: v3.4.0...v4.0.0

v3.4.0

27 Oct 21:36
Compare
Choose a tag to compare

What's Changed

  • feat: fake contexts by @definitelyokay in #22

Full Changelog: v3.3.0...v3.4.0

v3.3.0

25 Oct 05:34
Compare
Choose a tag to compare

What's Changed

  • feat: restore start and stop api by @definitelyokay in #21

Full Changelog: v3.2.0...v3.3.0

v3.2.0

18 Oct 01:08
Compare
Choose a tag to compare

What's Changed

  • fix: allow states to be referenced by interface only by @definitelyokay in #20

Full Changelog: v3.1.0...v3.2.0

v3.1.0

14 Oct 03:50
Compare
Choose a tag to compare

What's Changed

  • feat: add fake bindings for easier testing by @definitelyokay in #19

Full Changelog: v3.0.0...v3.1.0

Version 3.0.0

07 Oct 13:56
be85467
Compare
Choose a tag to compare

What's Changed

  • feat: generator improvements, vanilla events (for performance), allow triggering initial state side effects, minor bindings fixes by @definitelyokay in #17
  • feat: reduce generics by @definitelyokay in #18
  • removes generics for input and output — they are both just of type object as far as logic blocks is concerned. this drastically reduces boilerplate when creating logic blocks and will substantially simplify errors while developing.
  • fixes generator to infer inputs and outputs from usage, as opposed to relying on subtypes.
  • changes all examples and test fixtures to use readonly record struct types for input and output types, as well as sets forth the convention of organizing inputs and outputs in static classes inside a logic block subclass.
  • overhauled documentation in the readme, complete with the latest up-to-date code examples and diagrams
  • bumps version to 3.0, given these major breaking changes.
  • makes seperate versions of StateLogic for LogicBlock and LogicBlockAsync so that states can trigger enter/exit callbacks themselves.
  • removes the state tester in favor of asking states to re-enter and re-exit.
  • overhauls the tutorial on creating a space heater to create a much cleaner and more realistic, real-world type of example.
  • Removed WeakEvent for the sake of performance and API usage. Looked like it was allocating a list on every invocation. Would rather just use .NET's underlying Multicast delegates that power vanilla C# events.
  • Bindings now unsubscribe input and error event channels — was a small oversight.
  • Added public api methods, Enter, and Exit on StateLogic, allowing you to manually trigger entrance/exit callbacks whenever you want. You can even provide the next or previous state (respectively), allowing only the relevant callbacks to be triggered based on the type.
  • Added test case showing that structs can be used for inputs and outputs. Using structs for outputs should prevent them from ever having to hit the heap, meaning you could spam producing struct outputs as much as you want. 😀

Full Changelog: v2.4.1...v3.0.0

Version 2.4.1

01 Oct 23:01
741030f
Compare
Choose a tag to compare

What's Changed

  • fix: debugger prompt by @definitelyokay in #16

Full Changelog: v2.4.0...v2.4.1

v2.4.0

29 Aug 23:20
Compare
Choose a tag to compare

What's Changed

  • feat: allow state callbacks to be tested by @definitelyokay in #14

Full Changelog: v2.3.2...v2.4.0

v2.3.2

27 Aug 06:31
Compare
Choose a tag to compare

What's Changed

  • fix: expose interfaces correctly by @definitelyokay in #13
  • fix: make bind mockable by @definitelyokay in #12
  • feat: allow logic blocks to be tested by @definitelyokay in #11
  • Extracts interfaces from core logic block components to enable logic blocks to be unit-tested.
  • Updates documentation to demonstrate how to write unit tests for logic blocks.
  • Updates API usage: instead of passing Context around, you must use IContext instead.
  • Adds production unit test examples to the test suite.

Full Changelog: v2.3.1...v2.3.2

v2.3.1

27 Aug 06:03
Compare
Choose a tag to compare

What's Changed

  • fix: make bind mockable by @definitelyokay in #12
  • feat: allow logic blocks to be tested by @definitelyokay in #11
  • Extracts interfaces from core logic block components to enable logic blocks to be unit-tested.
  • Updates documentation to demonstrate how to write unit tests for logic blocks.
  • Updates API usage: instead of passing Context around, you must use IContext instead.
  • Adds production unit test examples to the test suite.

Full Changelog: v2.3.0...v2.3.1