An ACS library for ZDoom-based ports
HUD Library is an advanced replacement for HudMessage. It uses HUD Library State instead of many function arguments and implements scaling and 3D HudMessages.
Here is an example:
HudResetState(); // Just like calling SetFont and SetHudSize before HudMessage. HudSetPoint(320.0, 240.0); HudDrawText(1, "Hello");
The only drawing functions in HUD Library are HudDrawText and HudDrawImage. They call SetHudSize, SetFont and then HudMessage(Bold) every time a message is drawn. This means that if you are mixing HUD Library with HudMesasge, then, after calling one of HudDraw* functions, your SetHudSize and SetFont settings are lost and you need to set them back.
Scaling is implemented by calling SetHudSize with values that don't match those set in HudSetVirtualSize.
HudResetState(); HudSetVirtualSize(640.0, 480.0); HudSetScale(0.5); HudDrawText(1, "Hello")
Will result in the following sequence of calls to ZDoom's functions:
SetFont("SMALLFONT"); // Default HUD Library font SetHudSize(1280, 1024, 0); // To implement 0.5 scale HudMessage(s:"Hello"; HUDMSG_PLAIN, 1, etc);
HUD Library supports an accurate projection of 3D messages. 3D messages are correctly projected in both software and OpenGL renderers.
HudResetState(); HudSetPoint3D(x, y, z); HudSetCameraActor(0); // Set HUD Library camera to match the activator HudDrawText(1, "Look here!")
HudSetPoint3D switches HUD Library to 3D drawing mode, while HudSetPoint switches it back to 2D mode. 3D messages support all features that 2D messages support, including scaling.
By default, 3D messages are automatically scaled with distance. You can disable this setting using HudSetAutoDistanceScale.
The whole HUD Library State can be reset to default using HudResetState. It can be saved and loaded using HudPushState and HudPopState to a stack. The stack can be cleared using HudClearStateStack.