Hello Johan
I'm looking forward to seeing your game and I'm glad you still like my program and that I have at least one user besides my self : )
I haven't had much time to work on TilemapEd lately, but I'll consider your suggestions to when I get back to working on it.
These are my current thoughts.
1. Most of the time I use the ability to edit a selection of tiles because most of my tiles are closely related to each other. Even when editing a solitary tile, I like to see directly how it looks placed beside others. Therefore I find myself switching all the time back and forth between the tilemap and the selection, and very often I change the selection. As we discussed some time before, it would be easier if I could edit the tiles directly in the tilemap. Then all the switching and selecting would be gone. I think you said that would mean a lot of work, but I just wanted to mention it anyway.
The problem is that Tiles in a TileMap are rendered as plain old 2d textures, where the different Tile/Sprite editors work using a Pixel class that is rendered with various SDL_Rect's. There's far to many Pixels in a TileMap to render it this way, which would be needed to edit directly in the TileMap.
However I've been considering an option that can be enabled so when a user has zoomed far enough into a TileMap the Selection could be shown and then a keyboard shortcut could bring up the Selection Editor with the current zoomed content of the TileMap. After this "SPACE" can again be used to swap between the Selection Editor and the TileMap with the current selection.
2. The palette works fine, but it is a bit difficult to use when fine-tuning colors. I switch to the palette view, I change a color, press "Apply changes", and switch back to the tilemap view to see how it looks. I switch back to the palette view again to make another adjustment and so on. It would be easier if could open the palette as a dialog and still be able to see the tilemap, and immediately see the changes in the tilemap when changing a color value. Probably difficult to implement as well ...
It would be possible to make a stripped down version of the Edit Mode of the Palette and then have an option for showing this in the TileMap Editor. However I wouldn't try making this work for the different Tile/Sprite editors since they use the Palette to select the current color and the Palette works very differently when in Edit Mode.
3. I miss a fill function. Sometimes I want to change a color in a tile or sprite to a different color in the palette. Then this would be handy.
If I understand you correctly then this feature already exists.
When in a Tile/Sprite editor you can press "S" to show all Pixels of the selected Color. Then you can "Right Click" a Color in the Palette and all selected Pixels will be replaced with the chosen Color.
You can also select a group of Pixels with "LSHIFT" + "Left Mouse Dragging" and change the Selection by "Right Clicking" a Color in the Palette.
Also all Pixels can be selected by pressing "A" and the selection can be inverted by pressing "I" and dropped by pressing "N".
Pressing "S" and "Right Clicking" also works for Tiles in a TileMap.
4. The program does not track if changes have been made since the project was saved. When I quit, I always get a warning that unsaved changes will be lost. It would be better if I just could quit if there were no unsaved changes and if there were I could get at dialog with the options "Save", "Don't save" and "Cancel". This is how most Windows programs work, like for example Word. Actually, the very best would be if changes were saved automatically like VSCode can, that is very helpful.
The reason for the Quit Dialog is mostly to make sure the user doesn't exit accidentally, but this could be a Program INI setting.
I wouldn't make an auto save feature since I like that unwanted changes can be discarded. I could however relatively easy modify the UndoStack class to set a bool flag in the Global Settings to show that the Project has been changed.
There are only a few functions in the UndoStack class that when called would indicate that the Project has been changed, so its not that difficult. Then I could create a second Quit Dialog as you suggested that allows to "Save and Quit" or "Discard and Quit".
In the meantime you can quit the program quite quickly by pressing "ESC" and then "ENTER".