Week 33/2013: Data model, layout, About dialog

edited 2013 Aug 19 in Developers
Last week I was continuing my work on the client UI.

The week was quite productive with many significant changes applied in the client UI and the UI framework itself. The biggest thing was the introduction of an abstract data model that unifies the way items are set up and handled in widgets (menus, lists, popups, etc.). This approach will also allow very large data sets of which only a portion is actually concretely present on the screen (virtualization).

Another significant refactoring was that I separated the layout logic present in a number of widgets into two classes dedicated for laying out things (in Sequential or Grid mode). This makes it easier to construct more complicated widgets as one doesn't have to manually define all the layout rules.

These two large changes affected virtually all the existing widgets. They also allowed me to introduce a couple of new ones: a combination of a button and popup menu for making choices (cf. dropdown list) and popup dialogs.

about_client.jpg

(All of these changes are still in my UI work branch and not yet in the unstable builds.)

I also noticed and fixed a problem in the project's qmake files that was causing everything to load very slowly when the project files were being parsed. Note to self: starting several external processes from every single sub-project is not a good idea. This is a nice fix as daily development work is no longer hindered by the sometimes excruciatingly long load times.

This week I will still continue on the UI. I've pretty much now made it possible for the autoupdater dialogs to be implemented with Doomsday's own widgets; that is my next major objective.

Comments

  • Last week I continued work on the map data representation.

    In my previous blog post I talked about removing the old "LineOwner" concept and now have a firm plan on how to effect this significant change. Whilst formulating this plan I found that various map data related updates were not yet following an object-oriented design and so chose to make a short diversion to address these issues.

    The most obvious offender being the recalculation of environmental audio characteristics, which I reworked into an OO model at map sector and BSP level. I also revised the initialization mechanism to take advantage of the BSP leaf 'blockmap' to accelerate load performance through minimizing geometry intersection tests.

    In the process of which I realised that we now had everything we needed to address some of the outstanding issues with map hack support. Specifically the mapping construct commonly known as "deep water hack" and which can be seen in various places in DOOM2 TNT. Consequently I began implementing the new abstractions and data model refactorings required to support these cleanly.

    Also, at the start of the week I fixed various bugs and regressions with XG, -skill 0 and server-game-skill interpretation and ineffective speed boots in Hexen.

    My plan for this week is to complete the implementation of deep water hack support and then push on with my plan for refactoring 'LineOwners'.
Sign In or Register to comment.