Commit c33f3978

– introduce functionality to just refresh the ui
– expose more of the gamestate through the main app class (to be consumed by the interface)
– simplify the button creation code by adding a small factory function
– flesh out the UI some more
– move the textures around a bit (introduce a rudimentary directory structure)

So far, every time we needed to update the UI the entirety of the rendering data was updated, which does not make sense, since the UI is a lot more likely to change on a frequent basis. Time to mitigate that.
The rest is of the message is more or less self-explanatory I hope.

Commit ead4bdf9

– flesh out the UI a bit more (some of this is strictly temporary)
– fix a bug that gave us the same state hash for widgets that were identical (excep the widget id) (sic)
– do not rebuild descriptor sets and command buffers unnecessarily – also do not do it without ensuring we are in a sane state

So, once again quite a few renderer improvements. And once again, the more interesting part is the extension of the UI:
This time we see the addition of proper behaviour being added in the shop mode, once an object gets selected the user is presented with the cancel button to unselected as well as a rubbish button to delete it.

Commit 28056f9c

– fix a few conditions in relation to texture/descritpr set mapping in the UI pipeline (sic)
– fix a condition in the model pipeline that was never triggered
– add a lot of new icons
– partially implement the build mode UI

The renderer did not properly clean up some texture related data structures after removing the last usage of a texture, this is now fixed!
More exciting are the user facing changes, so that we are partially able to replace the terrible ‘o’ hotkey experience when wanting to build something. Currently it is possible to build new walls and set a wall type just using the UI and no hotkeys. It is not complete yet, but certainly feels a lot nice to use:

Commit 58ba1a73

add proper texture support for widgets

Does exactly what it says. But also, it adds a “cancel” button in the context container that calls the generic “cancel” function in the MainApp class, which is also triggered by pressing ESC. The behaviour of the function depends on the current game state. To name an example, in the simulation mode it unselects the currently selected object.