This was an interesting week. Most importantly the next tutorial article is out! Take a look at it here. Commenting was also enabled on the site so you can leave your 2 cents there. This article is an in-depth guide to design a game UI, and generate a game world (caves in our case). In the next we’ll explore input handling and add a simple ECS(ish) library to the project.
For Caves of Zircon:
- We finalized the Zircon splash screen! Take a look here. We had several versions previously and we kept this in the end. It was also added to the game. These gifs are actual game footage.
- There were also some small problems which were fixed (the
LogAreabug for example which I detail below).
- All components now support data binding! This means that the problem which most of you mentioned (immutable components) is now history! The properties which can be changed were also extracted into a separate behavior. Each property can have listeners attached to it so you can listen to changes.
- We did the same with selections. Now you can do
setSelectedand listen to the selection event with
onSelectionChanged. So what this means is that now you can do all 3 operations on
selectionvalues which we intended to add: listen on changes, get/set values and bind properties. Binding is very simple. All you have to do to bind
fooLabel’s text to
barLabelis to do
fooLabel.textProperty.bind(barLabel.textProperty)We’ll add a convenience feature later which will look like this
Icons now support any kind of
Propertyso you can change and/or bind it on the fly
- Fixed a bug in
- A bug was fixed which occurred when no
sizewas set for
TextAreas. Now it is mandatory (as it was intended originally)
LogAreahad a bug which prevented it to be properly wrapped with a box. Now this works.
- The default width of a
0originally) so now it is not possible to get an exception because of a division by 0.
Views now have a default value for
themes so you don’t need to specify it if you don’t want to
- All of this is present in the latest preview version of Zircon!.
Do you have questions? Ask us on our Discord Server.