Topic: GUI progress
The GUI is coming along nicely, though it's still in the early stages. I have Picture, Button, Label, and ScrollBar controls at a point where they're almost useable (though they still need to be tested thoroughly for bugs), and the GUI code's design is essentially finalized. Stylewise it's a lot like Windows Forms since I'm something of a fan of C# and the .Net Framework. Events (from CommonCode) are used in everything except painting.
At present I'm working on an "object manager" of sorts. Basically it consists of a manager, which loads the objects, and a bunch of objects, each of which contain string-integer and string-string dictionaries. If a key doesn't exist in an object that object queries its parent object for the key, and so on. It's quite simple but will be dual-use.
First, I needed a way for scroll bars, etc. to retrieve default settings such as the scroll arrows' pictures and dimensions. So this'll use a settings file.
Second, as it stands Faldon's objects.dat and monsters.dat are fixed-record-size flat files where each record is independent. Easy as this was many years ago when I first wrote Faldon, once one has more than a handful of objects or monsters the scheme becomes extremely unpleasant. Since the new setup allows objects to inherit from one another (and be reloaded or changed at runtime), a single property change and a different name (for a new monster for instance) will no longer mean copying the whole object. So the object manager will be useful for both the client and later, a rewritten server. For separation each object has a Changed event, so the actual game object can just add itself as a receiver of said event. That way, instances can cache any relevant information and make changes accordingly.
Anyhow, next up I need to write some code to get controls to share instances of pictures, and then I'll continue adding controls. I'll be in the Phillippines the first two weeks of February so I won't get anything done then, but I think by the end of February, maybe early March if I spend a lot of time polishing things, I should be done with the GUI code. At which point the fun part begins.
Edit: The object manager is part of the CommonCode set of libraries, so it'll be open sourced whenever I get around to that.