Enabling the onscreen debug would be easy if you could inject the code of setControlHint in the debugLog function. I'd be more interested in enabling the Editor Gui in the main game (instead of working on the native mod and manually copying altered files back to the main game), but i fear the frameworks vary too much to easily be conjoined.
- Being able to create a new map from the editor menu (specify map name)
This is just a trivial file create, since an empty level contains nothing but the <level/> element.
- Being able to resize the map (specify new height/width)
Nothing in the map files contains specific maxwidth or maxheight. There is an obstruction layer containing all black unpassable areas of the map as "Row Line Length" segments which are generated from the maptemplate png using a simple loop over lines/rows of the image (using SDL hence requiring powers-of-two images im assuming). Ingame coordinates seem to be roughly 10*10 units per 1 template pixel (a 2048x2048 image results in a map from 0,0 top left to ~20000,20000 as the bottom right corner) so the mapsize is technically limited by the coordinate datatype (probably 32bit signed int). I'm not perfectly certain how well the game culls rendering/processing offscreen tiles,entities and nodes, so performance may take a huge dive.
- Being able to modify the terrain directly in the editor. For example press F8 to go in map edit mod, left clic to paint terrain, right clic to erase.
Considering the features of image editing software and the map storage format ("Terrain" itself is actually stored on two layers) it's honestly easier to just alter the template file and regenerate the obstructions and attached border tiles (on layer 4) than build a brush based editor into the game.
- Change the back color (top and bottom colors)
- Set the music
- Set the waterlevel
These are all trivial plaintext values in the header section. A full blown HSV colorpicker would be considerably more effort than a simple "R G B" float string.
Something maybe a bit more difficult to do would be able to modify the tileset.
Well, you can easily switch out the tileset in the header of the level since its just a plaintext name of the referenced .txt file. Reading both old and new tileset lists and matching strings to identify the new IDs would be more difficult though. For most of my testing im using a complete tileset containing every png in the gfx folder and as far as i can tell the performance hasn't suffered too much. So you could theoretically allow the complete tileset in the editor and cull unused tileids while saving.