For those who don't know I've been spending the last, oh, six months or so renovating my house, in conjunction with contractors.
It was scheduled to be done in September; sadly here we are pushing November and it still isn't done, yay for my contractors.
All the while my wife and I have been living in the house during the renovation (fun...), and I've been doing a lot of the finer work, such as constructing the new kitchen, lots and lots of tile work, some framing, some sheet-rocking some plumbing etc. etc.
Old House:
Almost done New House:
Long story short, I want my damn house done and I'd like to get back to game development.
Through the renovation I have managed to do some game development work. A major point was rolling back some of the new features I added to the Selenite engine to make it more suitable for Morning's Wrath 2.
A great addition to the engine was the GUI system, which allowed the creation of decent custom GUI windows; which are pretty important in an RPG and most non-trivial games.
However the manner in which I implemented it was bad juju; I tried to shoe-horn it into the existing object model of the engine, and while some of this went okay, a few parts couldn't be properly represented through pure inheritance.
When I tried a hybrid model of inheritance and composition, it didn't make things much better; resulting in a lot of code which wasn't doing much other than support the linkages of information concerning the 'has-a' sections which were previously 'is-a' sections.
...so I rolled all this back and Implemented everything except for the parts which broke the inheritance model (which has been otherwise very kind to me to date).
The real sticking point is the animation system of GUI elements; they were damn near identical to the animation systems of Actor objects; however Actors and GUI's couldn't be the same object, and their lineage diverged previously.
I assume multiple inheritance could solve this problem, but that is a potential problem in itself, especially since in concern for porting MI isn't very widely supported relatively.
I could of course write nearly duplicate code and API functions for dealing with GUI animations the same way as Actor animations, but that also seems wrong; so instead I am taking this opportunity to develop a more specific system of animation for GUI that can benefit from being different.
With this I am also considering how a 'state/storyboarding' system could be useful to implement as well.
More on this later hopefully.