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.
This includes map seed, player position, look direction, the pointed node and block bounds.
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
* `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.

@ -2085,7 +2085,7 @@ void Game::processKeyInput()
} else if (wasKeyDown(KeyType::MINIMAP)) {
toggleMinimap(isKeyDown(KeyType::SNEAK));
} else if (wasKeyDown(KeyType::TOGGLE_CHAT)) {
m_game_ui->toggleChat();
m_game_ui->toggleChat(client);
} else if (wasKeyDown(KeyType::TOGGLE_FOG)) {
toggleFog();
} 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();
LocalPlayer *player = client->getEnv().getLocalPlayer();
s32 minimal_debug_height = 0;
// 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
if (m_flags.show_basic_debug) {
LocalPlayer *player = client->getEnv().getLocalPlayer();
v3f player_position = player->getPosition();
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);
}
// Hide chat when console is visible
m_guitext_chat->setVisible(isChatVisible() && !chat_console->isVisible());
// Hide chat when disabled by server or when console is visible
m_guitext_chat->setVisible(isChatVisible() && !chat_console->isVisible() && (player->hud_flags & HUD_FLAG_CHAT_VISIBLE));
}
void GameUI::initFlags()
@ -287,13 +288,18 @@ void GameUI::updateProfiler()
m_guitext_profiler->setVisible(m_profiler_current_page != 0);
}
void GameUI::toggleChat()
void GameUI::toggleChat(Client *client)
{
if (client->getEnv().getLocalPlayer()->hud_flags & HUD_FLAG_CHAT_VISIBLE) {
m_flags.show_chat = !m_flags.show_chat;
if (m_flags.show_chat)
showTranslatedStatusText("Chat shown");
else
showTranslatedStatusText("Chat hidden");
} else {
showTranslatedStatusText("Chat currently disabled by game or mod");
}
}
void GameUI::toggleHud()

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

@ -64,5 +64,6 @@ const struct EnumString es_HudBuiltinElement[] =
{HUD_FLAG_MINIMAP_VISIBLE, "minimap"},
{HUD_FLAG_MINIMAP_RADAR_VISIBLE, "minimap_radar"},
{HUD_FLAG_BASIC_DEBUG, "basic_debug"},
{HUD_FLAG_CHAT_VISIBLE, "chat"},
{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_RADAR_VISIBLE (1 << 6)
#define HUD_FLAG_BASIC_DEBUG (1 << 7)
#define HUD_FLAG_CHAT_VISIBLE (1 << 8)
#define HUD_PARAM_HOTBAR_ITEMCOUNT 1
#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_CROSSHAIR_VISIBLE | HUD_FLAG_WIELDITEM_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;