WadAuthor Progress Update #1 (02/15/01)

As many of you have read, no doubt, I've been soliciting feedback on WadAuthor since I've been working on it as of late. Let me express my gratitude to all for the suggestions. I've received some genuinely useful feedback, and I hope that I won't be letting anyone down with the next release. Toward avoiding that, I thought I would start posting periodic progress updates in this forum so that all of you can have a better idea where things stand. Having said that, let me continue onward with the first of those progress updates to let you know how things are going at present.

The Really Big News

At present, the WadAuthor code base is in a state of flux, but today marks a real milestone: the awful, no-good, very-bad zooming code that has been in place since the very beginning is finally dead! This might not mean much to you, but to me it represents the exorcism of a personal demon named "ignorance of Windows GDI mapping". In short, when I first wrote the drawing code in WadAuthor, I really didn't understand the Windows GDI mapping functions at all. To keep things simple, I coded everything using the MM_TEXT mapping mode, which basically requires the developer to do all the work.

This would have been alright except for both (1) Windows 3.x's 16-bit limitations on GDI and (2) my own silliness in implementing the zoom as I did. Basically, WadAuthor used to handle the zoom by multiplying distances. In other words, if a given thing was at position (10, 10) with respect to the origin, and the user had zoomed in to 200%, then I would simply draw the thing at (20, 20) with respect to the origin. Well, given that the Win16 GDI took coordinates in 16-bit values, the zoom had to be clipped to a lousy maximum of 250% while the maximum map size had to be clipped to something like (12,500, 12,500) in order to avoid wrapping problems with large maps. Sadly, Windows 9x didn't provide me any way out as the so-called 32-bit operating system that is Windows 9x still uses 16-bit GDI coordinates (sigh). Naturally to confuse matters even further, Windows NT removed this limitation, which is why I went ahead and supported a higher zoom under Windows NT than I did under Windows 9x.

Make sense? I imagine it's probably clear as mud, but that really doesn't matter. Here's the bottom line: I now understand how best to implement zooming features in WadAuthor. And to prove it, I've changed the code around so that the theoretical maximum zoom is now infinite! Earlier today I got it working completely for the first time, and let me assure you that a vertex is the size of my fist when zoomed in to 1000%. That's pretty neat. I'll probably still clip the maximum zoom to something like 1000% as it just doesn't seem practically useful to go any further. But for all of you detail fiends out there--and you know who you are!—you won't be fighting with WadAuthor any more to get the resolution that you have wanted for the last half-decade or so. Of course, scrolling is still broken at present, but I'm assuming I can fix that. I'll have to let you know in a future update.

Multi-map Support

The other main feature that I've added to WadAuthor thus far is the ability to manage multiple maps from within the editor interface. This was something I should have done some years ago, but I was basically (1) unsure of how to do it right, and (2) too lazy to investigate the issue at any length (grin). The latest build of WadAuthor now has a "Maps" menu to which some of the standard features (e.g., statistics) have been moved and to which the new "Add Map…" and "Delete Map…" commands have been added.

New Hotkeys

In response to suggestions posted in this forum, I have added two new hotkeys to WadAuthor. Pressing 'G' now toggles the grid display setting, while pressing 'Ctrl+G' toggles the snap-to-grid feature. This seems like a completely stupid omission on my part in retrospect, but then I suppose hindsight is always 20/20.

Conclusion

Well, that's all for the moment. Right now I've got to focus on fixing all the things that are broken as a result of completely ripping out all of the old zooming code (e.g., scrolling, panning, drag and drop, etc.) and replacing it with new code. Assuming I can fix these things, I intend to move on to some of the other features I've long wanted to implement, but a description of those will just have to wait for another update…