After delving into the Tile and Buffer code last night, I kicked off by adding the facility to erase a range of tiles, as opposed to just the current tile - a rather handy feature, and something which only took a couple of minutes to write. Although I enjoy flashes of inspiration and adding features, however, it's high-time I stopped having ideas and finished my To-Do list. :)
As a result, I decided to tackle the Project I/O head-on, after giving the approach some thought last night; the most sensible method seemed to involve splitting the task into chunks (Maps, Tilesets, Masks, etc.), in order to make sure each part of the routine works properly before moving on to the next.
In order to save time creating new dummy data each and every time I added a new chunk of code, I hit upon the idea of writing the Save code first - this way, I could load the existing project data, tweak the options associated with the new chunk of code, save using the updated routine, then return to the code, add the load routine, and check that it loads back in properly.
This enabled me to plough through the routine fairly quickly, each code update adding more data to the project file, allowing me to ensure that every element contained in the file could be checked at any and every stage.
The beauty of sifting through every variable also has the added bonus of giving the code an unintentional Spring Clean; there are a few variables that weren't needed any more, for example, a couple of routines which weren't setting things up properly, and even a routine which was still working on the assumption that there were only six Map layers. By the end of the day, I had the bulk of the work done, and already the Editor has become even more of a joy to use. :)
