Commit 7596e2a7

– do more refactoring
– add a first concrete implementation (a “button” that does nothing but draw its background colour)
– change the interface (and implementation) of the abstract container class, use smart pointers instead of references so that we can actually use abstract classes

That basically says it all, that new button does not do much yet besides existing.

Commit 5c33f613

add very basic UI logic, nothing works, all WiP and not integrated into the renderer at all

This adds a whole lot of base logic for the UI, the next big step in the evolution of OLives, as so far the entirety of user input is done through hot keys. While it is very exciting to keep pressing ‘o’ after switching to the right game mode, it also does not work as a long-term solution.
This commit adds logic for widgets, a container class which is also a widget, but can contain other widgets and a whole chunk of base logic about calculating sizes and positions.
Widgets can be relatively (in relation to their parent) or absolutely (in pixels) sized.
They also can already create model data (vertices), using the same type of ModelData structure as is used for the elements that can be rendered, meaning the models, walls, tiles and build markers.
As it also says, this logic is doing nothing except that it can get compiled and linked, it is as of yet completely unused.

Commit 7560e87f

– move some static value to proper class members as opposed to defines
– move the render pass creation to the util class
– do not use depth testing when drawing the build markers (they’re always on top as they need to be seen)
– more tests about where to put valid build markers (do not build over existing walls or objects)

Another step to making the renderer less horrible.
Also, we now get more sensible potential positions for the build markers (2nd step), before that we would just place them everywhere.
This video demonstrates the new logic as well as the A* path finding .