<commit_before># vim:ts=2:sw=2:sts=2:tw=72:noet:ai:foldmethod=indent

* Stuff
	* TODO Save edited maps
		Bonus points for saving them as ASCII art that can be embedded into
		the source code later as prefab vault source.
	* TODO Edit and play
		Switch to game from an edited scenario, see how it plays out. Then
		rewind back to the editor with the changes that happend during
		gameplay rolled back.
	* TODO Command-line interface
		The ultimate tool for custom UI. Use an imgui idiom, have a text
		buffer widget that edits a mutable string while it's being polled
		and returns true when the user pressed enter.
	* TODO Stop batching everything in rendering
		Using the exact same shader program and vertex signature for
		everything that gets drawn is too limiting. For example, the font
		would be better drawn with an alpha blending shader rather than the
		sprite shader.
	* TODO Test simple dynamic lighting
		Add light values and light sources to the area data. Have a zone of
		improved visibility around the player when it's dim. Have a cutoff
		into blinding total darkness in the visuals when there is absolutely
		no light.
	* TODO Test map behavior at the looping edges of i8
		Does it loop around like I'm assuming it should?
* Non-critical stuff
	These don't make new features.
	* TODO Complete set of terrain predicates in the terrain cell type
		Will still want to keep predicates that can depend on more than just
		the cell in a place that can access everything in the space. For
		example, mobs block paths, sometimes move so little you can count
		them as stable obstacles, and some might block FOV.
	* TODO Offline image processing
		Drop image and ttf loading from the end result binaries, make them
		smaller and faster to start up.

		Write an external utility that builds atlas textures from images and
		rasterized fonts and converts these into bitmap data. Compress
		texture data bytes with crate flate and bake into the binary as
		embedded data. Will also need to emit a metadata structure to list
		the sprite bounds. Static struct literals should work.

		Can add additional image processing steps instead of just turning
		the images as is into sprites as is done now. One example would be
		using a bright color as the transparent one for the sprites, which
		end up having #000000 as the transparent color as end result
		textures.
	* TODO Nicer Dijkstra map type
		- Make Dijkstra map a proper type.
		- Create a trait for the source type that provides the neighbors
			function.<commit_msg>Design note<commit_after># vim:ts=2:sw=2:sts=2:tw=72:noet:ai:foldmethod=indent

* Stuff
	* TODO Conversion between live map state and serializable state
		In particular, a conversion from live area data to ASCII art that
		uses a sensible legend. This should get us saving and restoring maps
		in a human-editable format.
	* TODO Edit and play
		Switch to game from an edited scenario, see how it plays out. Then
		rewind back to the editor with the changes that happend during
		gameplay rolled back.
	* TODO Command-line interface
		The ultimate tool for custom UI. Use an imgui idiom, have a text
		buffer widget that edits a mutable string while it's being polled
		and returns true when the user pressed enter.
	* TODO Stop batching everything in rendering
		Using the exact same shader program and vertex signature for
		everything that gets drawn is too limiting. For example, the font
		would be better drawn with an alpha blending shader rather than the
		sprite shader.
	* TODO Test simple dynamic lighting
		Add light values and light sources to the area data. Have a zone of
		improved visibility around the player when it's dim. Have a cutoff
		into blinding total darkness in the visuals when there is absolutely
		no light.
	* TODO Test map behavior at the looping edges of i8
		Does it loop around like I'm assuming it should? I think quick
		mapedit tests were showing artifacts.
* Non-critical stuff
	These don't make new features.
	* TODO Complete set of terrain predicates in the terrain cell type
		Will still want to keep predicates that can depend on more than just
		the cell in a place that can access everything in the space. For
		example, mobs block paths, sometimes move so little you can count
		them as stable obstacles, and some might block FOV.
	* TODO A way to iterate through all terrain types
	* TODO Offline image processing
		Drop image and ttf loading from the end result binaries, make them
		smaller and faster to start up.

		Write an external utility that builds atlas textures from images and
		rasterized fonts and converts these into bitmap data. Compress
		texture data bytes with crate flate and bake into the binary as
		embedded data. Will also need to emit a metadata structure to list
		the sprite bounds. Static struct literals should work.

		Can add additional image processing steps instead of just turning
		the images as is into sprites as is done now. One example would be
		using a bright color as the transparent one for the sprites, which
		end up having #000000 as the transparent color as end result
		textures.
	* TODO Nicer Dijkstra map type
		- Make Dijkstra map a proper type.
		- Create a trait for the source type that provides the neighbors
			function.
{'fraction_non_alphanumeric': 0.02645603349828702, 'fraction_numerical': 0.004567948229920061, 'mean_word_length': 3.7772727272727273, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '40937', 'n_tokens_mistral': 1449, 'n_tokens_neox': 1297, 'n_words': 841}