Last week I was working on the UI framework.
, I removed the arbitary fixed upper limit on the number of submodels that a model can have. The submodel limit was one of those things where the influence of the original C language implementation shows: the cost of implementing a dynamic array for the submodels in C was too high, so the submodels remained in a simple fixed-size array. However, now that we have switched to C++, it was rather a straightforward matter to replace the arrays with suitable dynamic ones, removing the limit on submodels.
As I was considering the options for defining the UI style used by the engine (comprising such things as fonts, colors, images, and lengths), I came to the conclusion that some work toward DED 2.0
was needed. The plan is for the UI style to be a resource package containing all the information and files. However, the existing DED parser is too inflexible for adding completely new definitions for this purpose.
Some time ago, the declarative Snowberry Info
parser was ported from the launcher's Python implementation to libdeng2. This was a good starting point for DED 2.0. A crucial requirement for DED 2.0 is that the definitions should be fully compatible with Doomsday Script
In its current from, ScriptedInfo cannot yet fully address all the needs of DED 2.0, but it provides a solid foundation for future work and allows me much flexibility for defining the parameters of the UI style. On the whole, I am excited about the possibilities scripting will allow when used as part of the definitions. It is nice to see the libdeng2-based subsystems starting to integrate deeper into the engine.
While I was working on ScriptedInfo, I also fixed a number of bugs in the Doomsday Script implementation and added some useful features like the eval()
function that takes any piece of text and executes it as a script — very useful for dynamic scripting.
My plan for this week is to continue work on new GUI widgets for the client.