From 7d3972a5049324f776ab008894c34569641f0073 Mon Sep 17 00:00:00 2001 From: LoneWolfHT Date: Tue, 19 May 2020 10:10:39 -0700 Subject: [PATCH] Add ability to scale HUD text (#9814) Add 'size' property to HUD text elements that is used for relative font size calculations. --- doc/lua_api.txt | 2 ++ src/client/hud.cpp | 9 +++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 07758c237..9c7c42436 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -1356,6 +1356,8 @@ Displays text on the HUD. text. Specify `0xFFFFFF` for white text, `0xFF0000` for red, and so on. * `alignment`: The alignment of the text. * `offset`: offset in pixels from position. +* `size`: size of the text. + The player-set font size is multiplied by size.x (y value isn't used). ### `statbar` diff --git a/src/client/hud.cpp b/src/client/hud.cpp index f8f712762..4edc229b2 100644 --- a/src/client/hud.cpp +++ b/src/client/hud.cpp @@ -319,16 +319,21 @@ void Hud::drawLuaElements(const v3s16 &camera_offset) floor(e->pos.Y * (float) m_screensize.Y + 0.5)); switch (e->type) { case HUD_ELEM_TEXT: { + irr::gui::IGUIFont *textfont = font; + if (e->size.X > 0) + textfont = g_fontengine->getFont( + e->size.X * g_fontengine->getDefaultFontSize()); + video::SColor color(255, (e->number >> 16) & 0xFF, (e->number >> 8) & 0xFF, (e->number >> 0) & 0xFF); core::rect size(0, 0, e->scale.X, text_height * e->scale.Y); std::wstring text = unescape_translate(utf8_to_wide(e->text)); - core::dimension2d textsize = font->getDimension(text.c_str()); + core::dimension2d textsize = textfont->getDimension(text.c_str()); v2s32 offset((e->align.X - 1.0) * (textsize.Width / 2), (e->align.Y - 1.0) * (textsize.Height / 2)); v2s32 offs(e->offset.X, e->offset.Y); - font->draw(text.c_str(), size + pos + offset + offs, color); + textfont->draw(text.c_str(), size + pos + offset + offs, color); break; } case HUD_ELEM_STATBAR: { v2s32 offs(e->offset.X, e->offset.Y);