TODAY'S GOAL:

-1. Learn std::initializer_list by using it.
0. \ua3fd causes the character immediately after to vanish. Make a test and solve it.
1. Why do Sliders only have to be kept around forever and can't go in containers like everything else?
2. Why are sliders not selected when I click on them? Is it a hover?
3. Why do fonts render blank? Also when I scroll they slowly disappear until there's a column.
* \u2738 is missing on the row when in grid but works when clicked.


* A designer tool to help find characters for foreground, background, and figure out their colors.

* renderer's mouse coordinates are totally wrong. Need to put glyph bounds into the panel and then you can ask if a mouse click is on a panel, and what the _panel's_ coordinates are.

* Use a vector of strings with 1 char each again.

TODO:

* Refine the event handling to pass most of them to the gui panels and then I can intercept them.

* Resolve fmt::format vs std::format.

* Fix " room should always be found"

* Fix BUG markers as much as possible.

* Make room generation have "texture" or state like mossy, flooded, etc.

* A condition map that indicates what each tile's condition is, so it can have "watery", "wet", "mossy", "burned", and that changes the color of the foreground/background but not the actual tile.
* A tile will then denote a kind of surface, so stone, water, lava, etc.
* Lua integration

* Enemies stuck in walls after generation.

* Save file needs work, it's not saving gold and lights.

* Move all keyboard and mouse events into SFMLRender so it's completely abstracted away and can be changed to a different backend if I want.

* When fighting two enemies with lots of attacks it crashes because one dies and isn't there.  Test by making enemies immortal.
* LightRender can just use the Dijkstra map paths to calculate light strenght from the point rather than doing the box thing.
* $paths.$paths is annoying.
* Format of pre/post in dbc isn't consistent with the rest of the lib but I also maybe don't need the function version?
* I can do headless windows in renderer for testing.
  - renderer.$window.setVisible(false);
* Think up an enemy system.
* Write a method for renderer that can translate coordinates.
* Can std::any be defaulted to a noop in the events?
* Inventory needs to be better, but need some kinds of "weapons" or other loot to get and not just gold.
* Create a few more enemy types to fight.
* Devise a more complete map/world generator that can use the loot and enemies better.
* Maybe an LOS system, but the hearing version works pretty well so far.
* Probably a system for mapping collision types to sound effects, rather than having the GUI do it.
* Write a test that generates a ton of maps then confirms there's a path from one room to every other room?

* check out SoLoud.

* BUG: When enemies die they can be overlapping another enemy.
