Skip to content

Commit 7d3972a

Browse files
authoredMay 19, 2020
Add ability to scale HUD text (#9814)
Add 'size' property to HUD text elements that is used for relative font size calculations.
1 parent 0fc51db commit 7d3972a

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed
 

Diff for: ‎doc/lua_api.txt

+2
Original file line numberDiff line numberDiff line change
@@ -1356,6 +1356,8 @@ Displays text on the HUD.
13561356
text. Specify `0xFFFFFF` for white text, `0xFF0000` for red, and so on.
13571357
* `alignment`: The alignment of the text.
13581358
* `offset`: offset in pixels from position.
1359+
* `size`: size of the text.
1360+
The player-set font size is multiplied by size.x (y value isn't used).
13591361

13601362
### `statbar`
13611363

Diff for: ‎src/client/hud.cpp

+7-2
Original file line numberDiff line numberDiff line change
@@ -319,16 +319,21 @@ void Hud::drawLuaElements(const v3s16 &camera_offset)
319319
floor(e->pos.Y * (float) m_screensize.Y + 0.5));
320320
switch (e->type) {
321321
case HUD_ELEM_TEXT: {
322+
irr::gui::IGUIFont *textfont = font;
323+
if (e->size.X > 0)
324+
textfont = g_fontengine->getFont(
325+
e->size.X * g_fontengine->getDefaultFontSize());
326+
322327
video::SColor color(255, (e->number >> 16) & 0xFF,
323328
(e->number >> 8) & 0xFF,
324329
(e->number >> 0) & 0xFF);
325330
core::rect<s32> size(0, 0, e->scale.X, text_height * e->scale.Y);
326331
std::wstring text = unescape_translate(utf8_to_wide(e->text));
327-
core::dimension2d<u32> textsize = font->getDimension(text.c_str());
332+
core::dimension2d<u32> textsize = textfont->getDimension(text.c_str());
328333
v2s32 offset((e->align.X - 1.0) * (textsize.Width / 2),
329334
(e->align.Y - 1.0) * (textsize.Height / 2));
330335
v2s32 offs(e->offset.X, e->offset.Y);
331-
font->draw(text.c_str(), size + pos + offset + offs, color);
336+
textfont->draw(text.c_str(), size + pos + offset + offs, color);
332337
break; }
333338
case HUD_ELEM_STATBAR: {
334339
v2s32 offs(e->offset.X, e->offset.Y);

0 commit comments

Comments
 (0)
Please sign in to comment.