v0.18.0
Screen Capture, a new look frame context, and a UI Framework
Big thanks to everyone who has contributed to this release, it's been a long time coming!
For once, the autogenerated release notes have done a pretty good job of summarising what's happened in this release! However there are a few changes I'd like to call out in particular:
FrameContext has been replaced by Context
Breaking API change.
The FrameContext object, which stored information about the current frame and an assortment of 'helpers' was looking old and no longer fit for purpose. It also caused problems in testing because it was difficult to stub out.
FrameContext has now been recreated and restructured as Context, which is organised into ctx.frame and ctx.services. frame data is referentially transparent and side effect free, for example, the game's running time. services however are useful tools and often perform side effects to complete their tasks.
Screen capture
In the newly updated Context object, you'll find new options for performing screen capture, which is intended for functionality such as saving screenshots next to save games.
Nine-slice FillType
Along side FillType.Tile and FillType.Stretch, you can now select FillType.NineSlice which allows you to define a way to scale an image to fill an Entity keeps the corners intact and stretches the middles. Useful for windows, UI components, backgrounds, and anything else you can come up with.
Example below (the tiling designs could have been better planned out... but you get the idea.)
nineslicex3.mov
Indigo's new UI component system
This is the big change that caused the enormous delay between releases. This release includes a new component based UI system for Indigo. It's designed to be pretty generic, and Indigo does not yet ship with nice pre-made stylish components (contributions welcome!). The purpose of this system is to allow you to - with reasonable ease - make your own. It supports components, windows, scrolling, and layouts that flow and respond to their containers.
It is not perfect, but hopefully it is a foundation to build on.
The new release of the Roguelike-Starterkit, which is specifically for building ASCII style games in Indigo, does have a simple set of pre-made components built on top of the new UI system. Here are two examples from that project:
What's Changed
- Add helper functions to Radians. by @yilinwei in #758
- Add vector convenience functions. by @yilinwei in #759
- Modifies Keyboard events to use the
codeproperty by @hobnob in #772 - Screen Capturing by @hobnob in #771
- Fixes a number of Pointer related issues by @hobnob in #774 #782
- GameViewport is an opaque type by @david-lebl-adastra in #778
- Fix Gamepad handling when only one axis is present by @sherpal in #761
- Replace FrameContext with Context by @davesmith00000 in #784
- Fixed #788: Encode/derive case classes as UniformBlocks by @davesmith00000 in #789
- Fixed #787: IndigoShader, expose ability to add UniformBlocks by @davesmith00000 in #790
- Issue/455/nine slice shader by @davesmith00000 in #791
- Rename Pointer events by @exoego in #800
- Issue 801 SceneContext Refactor by @joshualeecoss in #803
- Component based UI system by @davesmith00000 in #802
- Issue/809/rectangle min max size by @davesmith00000 in #810
- Bowyer-Watson Delaunay Triangulation implementation by @davesmith00000 in #811
New Contributors
- @yilinwei made their first contribution in #758
- @david-lebl-adastra made their first contribution in #778
- @sherpal made their first contribution in #761
- @exoego made their first contribution in #800
- @joshualeecoss made their first contribution in #803
Full Changelog: v0.17.0...v0.18.0

