forked from Mirrorlandia_minetest/minetest
Implement #6096
This commit is contained in:
parent
46f7fe91a2
commit
0e8ee84d74
@ -634,6 +634,9 @@ crosshair_color (Crosshair color) string (255,255,255)
|
|||||||
# Crosshair alpha (opaqueness, between 0 and 255).
|
# Crosshair alpha (opaqueness, between 0 and 255).
|
||||||
crosshair_alpha (Crosshair alpha) int 255 0 255
|
crosshair_alpha (Crosshair alpha) int 255 0 255
|
||||||
|
|
||||||
|
# Maximum number of recent chat items to show
|
||||||
|
recent_chat_size (Recent Chat Messages) int 6 3 99
|
||||||
|
|
||||||
# Whether node texture animations should be desynchronized per mapblock.
|
# Whether node texture animations should be desynchronized per mapblock.
|
||||||
desynchronize_mapblock_texture_animation (Desynchronize block animation) bool true
|
desynchronize_mapblock_texture_animation (Desynchronize block animation) bool true
|
||||||
|
|
||||||
|
12
src/chat.cpp
12
src/chat.cpp
@ -369,6 +369,13 @@ s32 ChatBuffer::getBottomScrollPos() const
|
|||||||
return formatted_count - rows;
|
return formatted_count - rows;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ChatBuffer::resize(u32 scrollback) {
|
||||||
|
m_scrollback = scrollback;
|
||||||
|
if (m_unformatted.size() > m_scrollback)
|
||||||
|
{
|
||||||
|
deleteOldest(m_unformatted.size() - m_scrollback);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
ChatPrompt::ChatPrompt(const std::wstring &prompt, u32 history_limit):
|
ChatPrompt::ChatPrompt(const std::wstring &prompt, u32 history_limit):
|
||||||
@ -731,6 +738,11 @@ void ChatBackend::clearRecentChat()
|
|||||||
m_recent_buffer.clear();
|
m_recent_buffer.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ChatBackend::applySettings(Settings* settings) {
|
||||||
|
m_recent_buffer.resize(settings->getU32("recent_chat_size"));
|
||||||
|
}
|
||||||
|
|
||||||
void ChatBackend::step(float dtime)
|
void ChatBackend::step(float dtime)
|
||||||
{
|
{
|
||||||
m_recent_buffer.step(dtime);
|
m_recent_buffer.step(dtime);
|
||||||
|
@ -25,6 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
|
|
||||||
#include "irrlichttypes.h"
|
#include "irrlichttypes.h"
|
||||||
#include "util/enriched_string.h"
|
#include "util/enriched_string.h"
|
||||||
|
#include "settings.h"
|
||||||
|
|
||||||
// Chat console related classes
|
// Chat console related classes
|
||||||
|
|
||||||
@ -118,6 +119,7 @@ public:
|
|||||||
u32 formatChatLine(const ChatLine& line, u32 cols,
|
u32 formatChatLine(const ChatLine& line, u32 cols,
|
||||||
std::vector<ChatFormattedLine>& destination) const;
|
std::vector<ChatFormattedLine>& destination) const;
|
||||||
|
|
||||||
|
void resize(u32 scrollback);
|
||||||
protected:
|
protected:
|
||||||
s32 getTopScrollPos() const;
|
s32 getTopScrollPos() const;
|
||||||
s32 getBottomScrollPos() const;
|
s32 getBottomScrollPos() const;
|
||||||
@ -281,6 +283,9 @@ public:
|
|||||||
void scrollPageDown();
|
void scrollPageDown();
|
||||||
void scrollPageUp();
|
void scrollPageUp();
|
||||||
|
|
||||||
|
// Resize recent buffer based on settings
|
||||||
|
void applySettings(Settings* settings);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ChatBuffer m_console_buffer;
|
ChatBuffer m_console_buffer;
|
||||||
ChatBuffer m_recent_buffer;
|
ChatBuffer m_recent_buffer;
|
||||||
|
@ -190,6 +190,7 @@ void set_default_settings(Settings *settings)
|
|||||||
settings->setDefault("node_highlighting", "box");
|
settings->setDefault("node_highlighting", "box");
|
||||||
settings->setDefault("crosshair_color", "(255,255,255)");
|
settings->setDefault("crosshair_color", "(255,255,255)");
|
||||||
settings->setDefault("crosshair_alpha", "255");
|
settings->setDefault("crosshair_alpha", "255");
|
||||||
|
settings->setDefault("recent_chat_size", "6");
|
||||||
settings->setDefault("hud_scaling", "1.0");
|
settings->setDefault("hud_scaling", "1.0");
|
||||||
settings->setDefault("gui_scaling", "1.0");
|
settings->setDefault("gui_scaling", "1.0");
|
||||||
settings->setDefault("gui_scaling_filter", "false");
|
settings->setDefault("gui_scaling_filter", "false");
|
||||||
|
@ -2051,6 +2051,9 @@ bool Game::initGui()
|
|||||||
// Remove stale "recent" chat messages from previous connections
|
// Remove stale "recent" chat messages from previous connections
|
||||||
chat_backend->clearRecentChat();
|
chat_backend->clearRecentChat();
|
||||||
|
|
||||||
|
// Make sure the size of the recent messages buffer is right
|
||||||
|
chat_backend->applySettings(g_settings);
|
||||||
|
|
||||||
// Chat backend and console
|
// Chat backend and console
|
||||||
gui_chat_console = new GUIChatConsole(guienv, guienv->getRootGUIElement(),
|
gui_chat_console = new GUIChatConsole(guienv, guienv->getRootGUIElement(),
|
||||||
-1, chat_backend, client, &g_menumgr);
|
-1, chat_backend, client, &g_menumgr);
|
||||||
|
Loading…
Reference in New Issue
Block a user