summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSmallJoker <SmallJoker@users.noreply.github.com>2020-05-24 14:24:13 +0200
committerGitHub <noreply@github.com>2020-05-24 14:24:13 +0200
commita9b74f4c3966ad38c2f9a97364d3fdda0e514c93 (patch)
treef761d90d6ca00a349252c9e3ad096ff16c62215f
parentf51cf7c68af16d0068b91d00ab2cc9abdf2b31d0 (diff)
downloadminetest-a9b74f4c3966ad38c2f9a97364d3fdda0e514c93.tar.gz
minetest-a9b74f4c3966ad38c2f9a97364d3fdda0e514c93.tar.bz2
minetest-a9b74f4c3966ad38c2f9a97364d3fdda0e514c93.zip
Add chat_font_size setting (#9736)
Default font sizes are used when the setting value is 0 or below (clamped by Settings).
-rw-r--r--builtin/settingtypes.txt4
-rw-r--r--src/client/gameui.cpp23
-rw-r--r--src/defaultsettings.cpp4
-rw-r--r--src/gui/guiChatConsole.cpp4
4 files changed, 24 insertions, 11 deletions
diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt
index e18de3382..c787aea2c 100644
--- a/builtin/settingtypes.txt
+++ b/builtin/settingtypes.txt
@@ -903,6 +903,10 @@ fallback_font_shadow_alpha (Fallback font shadow alpha) int 128 0 255
# This font will be used for certain languages or if the default font is unavailable.
fallback_font_path (Fallback font path) filepath fonts/DroidSansFallbackFull.ttf
+# Font size of the recent chat text and chat prompt in point (pt).
+# Value 0 will use the default font size.
+chat_font_size (Chat font size) int 0
+
# Path to save screenshots at. Can be an absolute or relative path.
# The folder will be created if it doesn't already exist.
screenshot_path (Screenshot folder) path screenshots
diff --git a/src/client/gameui.cpp b/src/client/gameui.cpp
index bbe7caeb1..c216f405d 100644
--- a/src/client/gameui.cpp
+++ b/src/client/gameui.cpp
@@ -76,6 +76,11 @@ void GameUI::init()
m_guitext_chat = gui::StaticText::add(guienv, L"", core::rect<s32>(0, 0, 0, 0),
//false, false); // Disable word wrap as of now
false, true, guiroot);
+ u16 chat_font_size = g_settings->getU16("chat_font_size");
+ if (chat_font_size != 0) {
+ m_guitext_chat->setOverrideFont(g_fontengine->getFont(
+ chat_font_size, FM_Unspecified));
+ }
// Profiler text (size is updated when text is updated)
m_guitext_profiler = gui::StaticText::add(guienv, L"<Profiler>",
@@ -213,7 +218,6 @@ void GameUI::showTranslatedStatusText(const char *str)
void GameUI::setChatText(const EnrichedString &chat_text, u32 recent_chat_count)
{
- setStaticText(m_guitext_chat, chat_text);
// Update gui element size and position
s32 chat_y = 5;
@@ -221,16 +225,15 @@ void GameUI::setChatText(const EnrichedString &chat_text, u32 recent_chat_count)
if (m_flags.show_debug)
chat_y += 2 * g_fontengine->getLineHeight();
- // first pass to calculate height of text to be set
const v2u32 &window_size = RenderingEngine::get_instance()->getWindowSize();
- s32 width = std::min(g_fontengine->getTextWidth(chat_text.c_str()) + 10,
- window_size.X - 20);
- m_guitext_chat->setRelativePosition(core::rect<s32>(10, chat_y, width,
- chat_y + window_size.Y));
-
- // now use real height of text and adjust rect according to this size
- m_guitext_chat->setRelativePosition(core::rect<s32>(10, chat_y, width,
- chat_y + m_guitext_chat->getTextHeight()));
+
+ core::rect<s32> chat_size(10, chat_y,
+ window_size.X - 20, 0);
+ chat_size.LowerRightCorner.Y = std::min((s32)window_size.Y,
+ m_guitext_chat->getTextHeight() + chat_y);
+
+ m_guitext_chat->setRelativePosition(chat_size);
+ setStaticText(m_guitext_chat, chat_text);
m_recent_chat_count = recent_chat_count;
}
diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp
index 1d0610c0f..5d1795003 100644
--- a/src/defaultsettings.cpp
+++ b/src/defaultsettings.cpp
@@ -321,8 +321,12 @@ void set_default_settings(Settings *settings)
std::string font_size_str = std::to_string(DEFAULT_FONT_SIZE);
#endif
+ // General font settings
settings->setDefault("font_size", font_size_str);
settings->setDefault("mono_font_size", font_size_str);
+ settings->setDefault("chat_font_size", "0"); // Default "font_size"
+
+ // ContentDB
settings->setDefault("contentdb_url", "https://content.minetest.net");
#ifdef __ANDROID__
settings->setDefault("contentdb_flag_blacklist", "nonfree, android_default");
diff --git a/src/gui/guiChatConsole.cpp b/src/gui/guiChatConsole.cpp
index e67fae3c6..8de00c12f 100644
--- a/src/gui/guiChatConsole.cpp
+++ b/src/gui/guiChatConsole.cpp
@@ -74,7 +74,9 @@ GUIChatConsole::GUIChatConsole(
m_background_color.setBlue(clamp_u8(myround(console_color.Z)));
}
- m_font = g_fontengine->getFont(FONT_SIZE_UNSPECIFIED, FM_Mono);
+ u16 chat_font_size = g_settings->getU16("chat_font_size");
+ m_font = g_fontengine->getFont(chat_font_size != 0 ?
+ chat_font_size : FONT_SIZE_UNSPECIFIED, FM_Mono);
if (!m_font) {
errorstream << "GUIChatConsole: Unable to load mono font" << std::endl;