Add chat HUD flag (#13189)

This commit is contained in:
Alex 2023-02-20 12:00:37 -08:00 committed by GitHub
parent cf19167e99
commit af4009d924
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 23 additions and 12 deletions

@ -7274,6 +7274,8 @@ child will follow movement and rotation of that bone.
* `basic_debug`: Allow showing basic debug info that might give a gameplay advantage. * `basic_debug`: Allow showing basic debug info that might give a gameplay advantage.
This includes map seed, player position, look direction, the pointed node and block bounds. This includes map seed, player position, look direction, the pointed node and block bounds.
Does not affect players with the `debug` privilege. Does not affect players with the `debug` privilege.
* `chat`: Modifies the client's permission to view chat on the HUD.
The client may locally elect to not view chat. Does not affect the console.
* If a flag equals `nil`, the flag is not modified * If a flag equals `nil`, the flag is not modified
* `hud_get_flags()`: returns a table of player HUD flags with boolean values. * `hud_get_flags()`: returns a table of player HUD flags with boolean values.
* See `hud_set_flags` for a list of flags that can be toggled. * See `hud_set_flags` for a list of flags that can be toggled.

@ -2085,7 +2085,7 @@ void Game::processKeyInput()
} else if (wasKeyDown(KeyType::MINIMAP)) { } else if (wasKeyDown(KeyType::MINIMAP)) {
toggleMinimap(isKeyDown(KeyType::SNEAK)); toggleMinimap(isKeyDown(KeyType::SNEAK));
} else if (wasKeyDown(KeyType::TOGGLE_CHAT)) { } else if (wasKeyDown(KeyType::TOGGLE_CHAT)) {
m_game_ui->toggleChat(); m_game_ui->toggleChat(client);
} else if (wasKeyDown(KeyType::TOGGLE_FOG)) { } else if (wasKeyDown(KeyType::TOGGLE_FOG)) {
toggleFog(); toggleFog();
} else if (wasKeyDown(KeyType::TOGGLE_UPDATE_CAMERA)) { } else if (wasKeyDown(KeyType::TOGGLE_UPDATE_CAMERA)) {

@ -102,6 +102,8 @@ void GameUI::update(const RunStats &stats, Client *client, MapDrawControl *draw_
{ {
v2u32 screensize = RenderingEngine::getWindowSize(); v2u32 screensize = RenderingEngine::getWindowSize();
LocalPlayer *player = client->getEnv().getLocalPlayer();
s32 minimal_debug_height = 0; s32 minimal_debug_height = 0;
// Minimal debug text must only contain info that can't give a gameplay advantage // Minimal debug text must only contain info that can't give a gameplay advantage
@ -137,7 +139,6 @@ void GameUI::update(const RunStats &stats, Client *client, MapDrawControl *draw_
// Basic debug text also shows info that might give a gameplay advantage // Basic debug text also shows info that might give a gameplay advantage
if (m_flags.show_basic_debug) { if (m_flags.show_basic_debug) {
LocalPlayer *player = client->getEnv().getLocalPlayer();
v3f player_position = player->getPosition(); v3f player_position = player->getPosition();
std::ostringstream os(std::ios_base::binary); std::ostringstream os(std::ios_base::binary);
@ -208,8 +209,8 @@ void GameUI::update(const RunStats &stats, Client *client, MapDrawControl *draw_
m_guitext_status->enableOverrideColor(true); m_guitext_status->enableOverrideColor(true);
} }
// Hide chat when console is visible // Hide chat when disabled by server or when console is visible
m_guitext_chat->setVisible(isChatVisible() && !chat_console->isVisible()); m_guitext_chat->setVisible(isChatVisible() && !chat_console->isVisible() && (player->hud_flags & HUD_FLAG_CHAT_VISIBLE));
} }
void GameUI::initFlags() void GameUI::initFlags()
@ -287,13 +288,18 @@ void GameUI::updateProfiler()
m_guitext_profiler->setVisible(m_profiler_current_page != 0); m_guitext_profiler->setVisible(m_profiler_current_page != 0);
} }
void GameUI::toggleChat() void GameUI::toggleChat(Client *client)
{ {
m_flags.show_chat = !m_flags.show_chat; if (client->getEnv().getLocalPlayer()->hud_flags & HUD_FLAG_CHAT_VISIBLE) {
if (m_flags.show_chat) m_flags.show_chat = !m_flags.show_chat;
showTranslatedStatusText("Chat shown"); if (m_flags.show_chat)
else showTranslatedStatusText("Chat shown");
showTranslatedStatusText("Chat hidden"); else
showTranslatedStatusText("Chat hidden");
} else {
showTranslatedStatusText("Chat currently disabled by game or mod");
}
} }
void GameUI::toggleHud() void GameUI::toggleHud()

@ -93,7 +93,7 @@ public:
void updateProfiler(); void updateProfiler();
void toggleChat(); void toggleChat(Client *client);
void toggleHud(); void toggleHud();
void toggleProfiler(); void toggleProfiler();

@ -64,5 +64,6 @@ const struct EnumString es_HudBuiltinElement[] =
{HUD_FLAG_MINIMAP_VISIBLE, "minimap"}, {HUD_FLAG_MINIMAP_VISIBLE, "minimap"},
{HUD_FLAG_MINIMAP_RADAR_VISIBLE, "minimap_radar"}, {HUD_FLAG_MINIMAP_RADAR_VISIBLE, "minimap_radar"},
{HUD_FLAG_BASIC_DEBUG, "basic_debug"}, {HUD_FLAG_BASIC_DEBUG, "basic_debug"},
{HUD_FLAG_CHAT_VISIBLE, "chat"},
{0, NULL}, {0, NULL},
}; };

@ -48,6 +48,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#define HUD_FLAG_MINIMAP_VISIBLE (1 << 5) #define HUD_FLAG_MINIMAP_VISIBLE (1 << 5)
#define HUD_FLAG_MINIMAP_RADAR_VISIBLE (1 << 6) #define HUD_FLAG_MINIMAP_RADAR_VISIBLE (1 << 6)
#define HUD_FLAG_BASIC_DEBUG (1 << 7) #define HUD_FLAG_BASIC_DEBUG (1 << 7)
#define HUD_FLAG_CHAT_VISIBLE (1 << 8)
#define HUD_PARAM_HOTBAR_ITEMCOUNT 1 #define HUD_PARAM_HOTBAR_ITEMCOUNT 1
#define HUD_PARAM_HOTBAR_IMAGE 2 #define HUD_PARAM_HOTBAR_IMAGE 2

@ -71,7 +71,8 @@ Player::Player(const char *name, IItemDefManager *idef):
HUD_FLAG_HOTBAR_VISIBLE | HUD_FLAG_HEALTHBAR_VISIBLE | HUD_FLAG_HOTBAR_VISIBLE | HUD_FLAG_HEALTHBAR_VISIBLE |
HUD_FLAG_CROSSHAIR_VISIBLE | HUD_FLAG_WIELDITEM_VISIBLE | HUD_FLAG_CROSSHAIR_VISIBLE | HUD_FLAG_WIELDITEM_VISIBLE |
HUD_FLAG_BREATHBAR_VISIBLE | HUD_FLAG_MINIMAP_VISIBLE | HUD_FLAG_BREATHBAR_VISIBLE | HUD_FLAG_MINIMAP_VISIBLE |
HUD_FLAG_MINIMAP_RADAR_VISIBLE | HUD_FLAG_BASIC_DEBUG; HUD_FLAG_MINIMAP_RADAR_VISIBLE | HUD_FLAG_BASIC_DEBUG |
HUD_FLAG_CHAT_VISIBLE;
hud_hotbar_itemcount = HUD_HOTBAR_ITEMCOUNT_DEFAULT; hud_hotbar_itemcount = HUD_HOTBAR_ITEMCOUNT_DEFAULT;