Skip to content
This repository was archived by the owner on Nov 20, 2025. It is now read-only.

v0.18.0

Choose a tag to compare

@davesmith00000 davesmith00000 released this 22 Jan 21:48

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:

image
image

What's Changed

New Contributors

Full Changelog: v0.17.0...v0.18.0