Last week I started work on the new multiplayer UI for the client and implemented native font rendering on OS X.
The multiplayer UI is the last remaining bit of the old UI left in the engine. I've now started constructing equivalent functionality that fully integrates into the task bar. Once completed, we can drop the old UI and with it, a sizable portion of the old supporting code.
I'm taking this opportunity to rethink and revise the UI when it comes to joining a multiplayer game and how to control the connection once joined. For instance, when one joins a game, the appropriate game plugin will be automatically loaded. This means there will be one less reason for a failed connection.
On a separate note, it's been bothering me for quite some time now that on the latest version of OS X, Qt doesn't really know how to handle font weights properly. Thus I indulged in a bit of OS X specific coding by implementing native Core Text
based font measuring and rasterization. I'm pleased to say that this now works exactly as it should, with light, normal, and bold font weights all applied as intended. At the same time, I ensured that in the future the UI framework is capable of using bitmap-based runtime generated fonts like the ones used by DOOM's menus and game UI.
I made a few improvements to the UI in general. For instance, the initial game selection menu now adapts better to view size: the number of columns and rows in the menu is reduced when the view is smaller.
Another change is that labels can be configured to appear with an animation where their size grows from zero to the correct size. This is useful in dynamic lists like the alerts dialog and the new multiplayer servers list that would otherwise appear messy if the items just pop into place suddenly.
I also tweaked the default UI style so that there's a second accent color that matches the DE logo. This new color is now used in the console command hint and dialog default buttons. I feel this brings some nice balance to the color scheme as there are some elements that match the logo, particularly along the bottom of the view.