Commit 197c83f2

– Add door model
– Add window model
– Update icons of existing door/window definitions with properly rendered ones
– Add support for alpha transparency in textures to the model shader
– Reduce the thickness of the walls by 75%

Mainly asset updates/additions this time, the wall thickness had to be changed in order to also make the doors/windows fit in corner positions.
To demonstrate what the models look like they were quickly added as a dummy object type, check them out 🙂

Commit bc0d0a6f

– add portal (door/window) information to the wall manager class
– add a set of getters/setters for the wall manager and the proxy (world) class
– extend the wall type manipulation functions in the game state class to allow manipulating the portal values
– connect the door/window placement/removal modes with these new states and thus completely the logic

Since the commit message is quite extensive it is probably better to simply describe what it is accomplishing: Fully storing and enabling door and window information for any wall piece.
While it has no visual (or gameplay) effect yet, the setting (buying) and removal (not getting any money back) is already fully functional. 🙂

Commit 48c2436d

– extend the wall manager, world, game state and mainapp classes to fully support loading window and door defintions
– list the real door and window types in the UI
– simplify the way new wall types, door types and window types are added to UI lists
– change the file structure for icon textures

Now the newly added configuration files (and classes) are properly used and the UI can show all the defined door and window types, it does not do much yet besides showing them though. 🙂
In order to make this happen some dummy icons were added to test the new code.

Commit e7313f05

– add new configuration types for doors/windows
– add two (as of yet) dummy types for both doors and windows
– refactor the wall position/side enums into their own class and out of the WallType class
– change the wall position/side enums into enum classes and deal with the consequences thereof

This adds some boilerplate configuration information for doors and windows which is as of yet completely unused. To make it slightly more usable when the times comes some semi-dummy types were added for both doors and windows.
The more substantial change here is moving the position and side enums into a different, neutral, spot so that the upcoming door/window data can more easily use it. While doing so the “raw” enums were also converted into more modern enum classes, which meant some operators had to be implemented as well a fair amount of casting added in the right places.
Good times!

Commit 7560cb60

– add boilerplate to game state, bottom bar and main app to support door/window placement and removal
– add new menu icons

This is the first commit towards door and window support. This commit does not do much yet, except adding new sub-menus that enable the new build modes.
While those build modes *do* exist and are active already, they do not do anything yet. Be that as it may, check out the fancy new icons below:

Commit 5c1b7fce

– Fix selected objects nor showing in simulation mode
– Visually indicate on the model itself when placing/moving objects if they are in a valid position
– Fix some clang warnings on the renderer

This finishes off the preview model topic, as now we not only get the model itself drawn, but also have it give off a visual indication if the current tile coordinates are a valid placement spot.
Check it out in the video below:

Commit 72304973

Draw a preview when placing new/moving existing objects

Put the preliminary work in the previous commit to even more use, now we finally show a preview model when moving existing or placing new objects. Not only makes it the process of moving objects a lot more predictable, in case of objects that need to be attached to walls (read: the sink for the being) a lot less frustrating as well.
Still missing is drawing the model in the same colours as the tiles it will be placed on to indicate if this a valid spot to put it on.

Commit adfe10a5

– Move some enums from the Object class and ObjectManager to globally accessible places
– Do not draw the currently selected model in shop mode
– Move the bulk of the game world to graphics coordinates calculation from the object manager to the model manager to make it accessible from other parts of the code

This commit contains preparatory work for the “have a preview of what you are about to place” feature which will be active when placing (read: buying) new objects or move existing ones in the shop mode.
The most important change here is to move the model position/rotation/elevation calculation code out of the object manager to a more accessible and less dependency-ridden spot in the model manager.