I suppose you could split the implementation of this thing into 4 parts: display (inheriting parent properties, drawing to screen including complexities like caching, etc), events (detecting collision types and dispatching relevant events, handling those events), layout generation (arranging children in more sophisticated manners), and ui widgets. That first part is nearing completion in terms of code written, though fixing/testing that code to actually run hasn’t started yet. It’s hard to estimate how long these things are going to take since a number of unknown factors are involved. It could be worse, I guess?
A fair number of new design problems popped up while implementing this thing. But none of them are terribly interesting. Ended up going with the “scale/tint/rotation/etc of a cache renderer node are applied to the cache texture instead of being inherited” model once I realized that fonts aren’t scaled up and would instead properly resize the cache texture for proper readability. Decided to move refreshing (the queuing of re-applying inheritance rules that is delayed until the next update) to its own handler so that later on we could have refreshing that only applies to things that depend on each other (ie you change the tint which has no dependencies it only refreshes the tint) and so that component objects have a more restricted knowledge rather than having access to the entire node. Decided to let individual nodes decide whether they use a stable sort on their children or not, since in many cases it doesn’t matter while in a few (namely windowing) it does. A little bit of premature optimization there that might bite me later when I forget how it works. Nothing exciting, just a few details that get missed in planning.
I’d really like to get this thing done this month (marking 2 months down the drain for it), but that isn’t looking likely at the current rate of progress. Troubling. Had a thought about how to visually handle NPCs yesterday that cheered me up, since it solves a big problem with the story lacking emphasis.