Luanti 5.16.0-dev
Loading...
Searching...
No Matches
gameui.h
Go to the documentation of this file.
1// Luanti
2// SPDX-License-Identifier: LGPL-2.1-or-later
3// Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
4// Copyright (C) 2018 nerzhul, Loic Blot <loic.blot@unix-experience.fr>
5
6#pragma once
7
8#include "irrlichttypes.h"
9#include <IGUIEnvironment.h>
10#include <memory>
11#include "game.h"
13
14
15class Client;
16class EnrichedString;
17class GUIChatConsole;
18struct MapDrawControl;
19struct PointedThing;
20
21/*
22 * This object intend to contain the core UI elements
23 * It includes:
24 * - status texts
25 * - debug texts
26 * - chat texts
27 * - hud flags
28 */
29class GameUI
30{
31 // Temporary between coding time to move things here
32 friend class Game;
33
34 // Permit unittests to access members directly
35 friend class TestGameUI;
36
37public:
38 GameUI() = default;
39 ~GameUI() = default;
40
41 // Flags that can, or may, change during main game loop
42 struct Flags
43 {
44 bool show_chat = true;
45 bool show_hud = true;
46 bool show_minimal_debug = false;
47 bool show_basic_debug = false;
48 bool show_profiler_graph = false;
49 };
50
51 void init();
52 void update(const RunStats &stats, Client *client, MapDrawControl *draw_control,
53 const CameraOrientation &cam, const PointedThing &pointed_old,
54 const GUIChatConsole *chat_console, float dtime);
55
56 void initFlags();
57 const Flags &getFlags() const { return m_flags; }
58
59 inline void setInfoText(const std::wstring &str) { m_infotext = str; }
60 inline void clearInfoText() { m_infotext.clear(); }
61
62 inline void showStatusText(const std::wstring &str)
63 {
64 if (m_status_text)
65 m_status_text->showStatusText(str);
66 }
67 void showTranslatedStatusText(const char *str);
68 inline void clearStatusText()
69 {
70 if (m_status_text)
71 m_status_text->clearStatusText();
72 }
73
75 {
76 return m_flags.show_chat && m_recent_chat_count != 0 && m_profiler_current_page == 0;
77 }
78 void setChatText(const EnrichedString &chat_text, u32 recent_chat_count);
79 void updateChatSize();
80
81 void updateProfiler();
82
84 void toggleHud();
85 void toggleProfiler();
86
87 void clearText();
88
89private:
91
92 float m_drawtime_avg = 0;
93
94 gui::IGUIStaticText *m_guitext = nullptr; // First line of debug text
95 gui::IGUIStaticText *m_guitext2 = nullptr; // Second line of debug text
96
97 gui::IGUIStaticText *m_guitext_info = nullptr; // At the middle of the screen
98 std::wstring m_infotext;
99
100 std::unique_ptr<StatusTextHelper> m_status_text = nullptr;
101
102 gui::IGUIStaticText *m_guitext_chat = nullptr; // Chat text
104 core::rect<s32> m_current_chat_size{0, 0, 0, 0};
105
106 gui::IGUIStaticText *m_guitext_profiler = nullptr; // Profiler text
109};
Definition client.h:107
Definition enriched_string.h:28
Definition guiChatConsole.h:16
void setChatText(const EnrichedString &chat_text, u32 recent_chat_count)
Definition gameui.cpp:190
u8 m_profiler_current_page
Definition gameui.h:107
void toggleProfiler()
Definition gameui.cpp:282
void initFlags()
Definition gameui.cpp:180
GameUI()=default
gui::IGUIStaticText * m_guitext_chat
Definition gameui.h:102
void showTranslatedStatusText(const char *str)
Definition gameui.cpp:185
std::unique_ptr< StatusTextHelper > m_status_text
Definition gameui.h:100
gui::IGUIStaticText * m_guitext_info
Definition gameui.h:97
gui::IGUIStaticText * m_guitext
Definition gameui.h:94
void clearInfoText()
Definition gameui.h:60
u8 m_profiler_max_page
Definition gameui.h:108
void update(const RunStats &stats, Client *client, MapDrawControl *draw_control, const CameraOrientation &cam, const PointedThing &pointed_old, const GUIChatConsole *chat_console, float dtime)
Definition gameui.cpp:80
void updateChatSize()
Definition gameui.cpp:197
~GameUI()=default
void updateProfiler()
Definition gameui.cpp:220
std::wstring m_infotext
Definition gameui.h:98
void showStatusText(const std::wstring &str)
Definition gameui.h:62
u32 m_recent_chat_count
Definition gameui.h:103
gui::IGUIStaticText * m_guitext2
Definition gameui.h:95
void toggleHud()
Definition gameui.cpp:273
friend class Game
Definition gameui.h:32
void setInfoText(const std::wstring &str)
Definition gameui.h:59
float m_drawtime_avg
Definition gameui.h:92
void clearStatusText()
Definition gameui.h:68
void toggleChat(Client *client)
Definition gameui.cpp:259
core::rect< s32 > m_current_chat_size
Definition gameui.h:104
bool isChatVisible()
Definition gameui.h:74
void init()
Definition gameui.cpp:37
gui::IGUIStaticText * m_guitext_profiler
Definition gameui.h:106
Flags m_flags
Definition gameui.h:90
void clearText()
Definition gameui.cpp:298
friend class TestGameUI
Definition gameui.h:35
const Flags & getFlags() const
Definition gameui.h:57
Definition activeobjectmgr.cpp:11
Definition game.h:31
Definition gameui.h:43
bool show_basic_debug
Definition gameui.h:47
bool show_hud
Definition gameui.h:45
bool show_minimal_debug
Definition gameui.h:46
bool show_profiler_graph
Definition gameui.h:48
bool show_chat
Definition gameui.h:44
Definition clientmap.h:14
An active object or node which is selected by a ray on the map.
Definition pointedthing.h:22
Definition game.h:25