Started off today's session by tying up the loose ends in the Project I/O system, writing the code to store the Grab buffers and their thumbnails (as an afterthought, I tweaked the code so that it generates the thumbnails rather than store them - only a saving of 32k to the Project filesize, but every little helps).
It made sense to tackle the New Project routine next, as I'm knee-deep in initialisation code; again, this entailed sifting through the variables and compiling a routine to reset each and every relevant variable. Luckily, this only took about an hour of furious typing, as I could already count on a coupe of existing routines to initialise all of the Map and Tile variables (the remaining initialisations I merely copied 'n' pasted from the Load Project routine).
Thankfully, my New Project window - which appears when the Editor is first loaded - was coded in a way that allowed me to integrate my variable reset routine quite easily; on boot-up, the code sets up the environment accordingly; on selecting New Project, it sets up the environment and resets the relevant flags. Peachy. :)
Did a little housekeeping while I was tinkering with the New Project code, and made sure that all popup windows were deactivated properly (this entails freeing all of the gadgets, buttons, and text labels to ensure that the system resources are freed up properly).
Also took the liberty of updating my Splash Screen, and added some Credits to the Help/About dialogue box. Next came a tweak to the toolbar, as I wanted to add the Project Load/Save icons and space things out a little.
With most of the major functionality now complete, I'm finally starting to see the light at the end of the tunnel. The following tasks remain in my way before Beta:
1. Undo & Redo - I currently have some scribbled notes and flowcharts for this routine; the more I use the Editor, the more I miss having the ability to quickly erase a mistake, so this will be an essential addition.
2. Map Rotate - I have X/Y/Z flipping currently, but I want to add the facility to flip the map 90 degrees in any direction; currently my code for this flatly refuses to work.
3. Tile Duplicates - The biggest problem with this routine is how the data is presented to the user. It's an extremely useful tool to have, however, so I shall be plotting this on paper over the next couple of days.
4. Circle Draw - The current Circle routine is poor to say the least; I need to get my head around the maths and get the routine finished.
5. MiniMap Scrolling - There's a small bug in the MiniMap routine which fails to update the scroll values when the mouse is used to drag the MiniMap window. This, I predict, will be a swine to debug.
6. Test Map - The bulk of the code for this is already in place; I simply need to work on the scroll routine to make it as user-friendly as possible.
Needless to say, if anyone out there has any suggestions on the above tasks, I'd be glad to hear from you!
