The goal here is not to get final art, just to get _something_ in place.
Art should be toggle-able so we can turn it on/off for the simple boxes
(to debug) and to create a space that better art can easily be added.
I know I _should_ fix the bug where two blocks occupy the same spot...
... but I am chasing the dopamine.
Introduce some sort of "Goal" in a level.
When that goal is is "Achieved" and the level.
If the player chooses, go to the next level.
Requires:
* A goal tracker
* A level counter
* A state enum:
* "InPlay": Playing the game
* "LevelComplete": Completed the objective
* Can progress to the next level
* "GameOver": Failed the objective
* "Paused": Gameplay is temporarily paused
Once a level is complete, there should be:
* A new goal generated for the next level.
* A button to progress to the next level.
This breaks shapes out into having separate colors.
This requires breaking shapes out into an enum describing the shape and
the shape layout, then we can add the mesh and material based on the
shape enum variant.
Instead of using ChildOf, which has Transform implications, we created
our own relationship:
ShapeBlocks(Vec<Entity>) <-> BlockOf { parent: Entity }
This relationship just informs how to place blocks with a
RelativePosition near their GridPosition parents without having to deal
with the Transform of the parent.