Skip to content

Commit

Permalink
Get rid of global guienv variable
Browse files Browse the repository at this point in the history
(It can already be accessed via the renderingengine.)
  • Loading branch information
Desour authored and sfan5 committed Aug 14, 2023
1 parent 45e7a80 commit 16da954
Show file tree
Hide file tree
Showing 8 changed files with 29 additions and 37 deletions.
12 changes: 5 additions & 7 deletions src/client/client.cpp
Expand Up @@ -1776,7 +1776,6 @@ float Client::mediaReceiveProgress()
}

struct TextureUpdateArgs {
gui::IGUIEnvironment *guienv;
u64 last_time_ms;
u16 last_percent;
std::wstring text_base;
Expand All @@ -1802,7 +1801,7 @@ void Client::showUpdateProgressTexture(void *args, u32 progress, u32 max_progres
targs->last_time_ms = time_ms;
std::wostringstream strm;
strm << targs->text_base << L" " << targs->last_percent << L"%...";
m_rendering_engine->draw_load_screen(strm.str(), targs->guienv, targs->tsrc, 0,
m_rendering_engine->draw_load_screen(strm.str(), targs->tsrc, 0,
72 + (u16) ((18. / 100.) * (double) targs->last_percent));
}
}
Expand All @@ -1822,19 +1821,19 @@ void Client::afterContentReceived()
// Rebuild inherited images and recreate textures
infostream<<"- Rebuilding images and textures"<<std::endl;
m_rendering_engine->draw_load_screen(wstrgettext("Loading textures..."),
guienv, m_tsrc, 0, 70);
m_tsrc, 0, 70);
m_tsrc->rebuildImagesAndTextures();

// Rebuild shaders
infostream<<"- Rebuilding shaders"<<std::endl;
m_rendering_engine->draw_load_screen(wstrgettext("Rebuilding shaders..."),
guienv, m_tsrc, 0, 71);
m_tsrc, 0, 71);
m_shsrc->rebuildShaders();

// Update node aliases
infostream<<"- Updating node aliases"<<std::endl;
m_rendering_engine->draw_load_screen(wstrgettext("Initializing nodes..."),
guienv, m_tsrc, 0, 72);
m_tsrc, 0, 72);
m_nodedef->updateAliases(m_itemdef);
for (const auto &path : getTextureDirs()) {
TextureOverrideSource override_source(path + DIR_DELIM + "override.txt");
Expand All @@ -1847,7 +1846,6 @@ void Client::afterContentReceived()
// Update node textures and assign shaders to each tile
infostream<<"- Updating node textures"<<std::endl;
TextureUpdateArgs tu_args;
tu_args.guienv = guienv;
tu_args.last_time_ms = porting::getTimeMs();
tu_args.last_percent = 0;
tu_args.text_base = wstrgettext("Initializing nodes");
Expand All @@ -1864,7 +1862,7 @@ void Client::afterContentReceived()
if (m_mods_loaded)
m_script->on_client_ready(m_env.getLocalPlayer());

m_rendering_engine->draw_load_screen(wstrgettext("Done!"), guienv, m_tsrc, 0, 100);
m_rendering_engine->draw_load_screen(wstrgettext("Done!"), m_tsrc, 0, 100);
infostream<<"Client::afterContentReceived() done"<<std::endl;
}

Expand Down
3 changes: 1 addition & 2 deletions src/client/clientlauncher.cpp
Expand Up @@ -41,7 +41,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,

/* mainmenumanager.h
*/
gui::IGUIEnvironment *guienv = nullptr;
MainMenuManager g_menumgr;

bool isMenuActive()
Expand Down Expand Up @@ -135,7 +134,7 @@ bool ClientLauncher::run(GameStartData &start_data, const Settings &cmd_args)
m_rendering_engine->get_scene_manager()->getParameters()->
setAttribute(scene::ALLOW_ZWRITE_ON_TRANSPARENT, true);

guienv = m_rendering_engine->get_gui_env();
gui::IGUIEnvironment *guienv = m_rendering_engine->get_gui_env();
skin = guienv->getSkin();
skin->setColor(gui::EGDC_BUTTON_TEXT, video::SColor(255, 255, 255, 255));
skin->setColor(gui::EGDC_3D_LIGHT, video::SColor(0, 0, 0, 0));
Expand Down
23 changes: 15 additions & 8 deletions src/client/game.cpp
Expand Up @@ -1530,7 +1530,9 @@ bool Game::createClient(const GameStartData &start_data)

bool Game::initGui()
{
m_game_ui->init();
auto guienv = m_rendering_engine->get_gui_env();

m_game_ui->init(guienv);

// Remove stale "recent" chat messages from previous connections
chat_backend->clearRecentChat();
Expand Down Expand Up @@ -1725,11 +1727,11 @@ bool Game::getServerContent(bool *aborted)
if (!client->itemdefReceived()) {
progress = 25;
m_rendering_engine->draw_load_screen(wstrgettext("Item definitions..."),
guienv, texture_src, dtime, progress);
texture_src, dtime, progress);
} else if (!client->nodedefReceived()) {
progress = 30;
m_rendering_engine->draw_load_screen(wstrgettext("Node definitions..."),
guienv, texture_src, dtime, progress);
texture_src, dtime, progress);
} else {
std::ostringstream message;
std::fixed(message);
Expand All @@ -1754,7 +1756,7 @@ bool Game::getServerContent(bool *aborted)
}

progress = 30 + client->mediaReceiveProgress() * 35 + 0.5;
m_rendering_engine->draw_load_screen(utf8_to_wide(message.str()), guienv,
m_rendering_engine->draw_load_screen(utf8_to_wide(message.str()),
texture_src, dtime, progress);
}
}
Expand Down Expand Up @@ -1805,20 +1807,23 @@ inline bool Game::handleCallbacks()
return false;
}

auto guienv = m_rendering_engine->get_gui_env();
auto guiroot = guienv->getRootGUIElement();

if (g_gamecallback->changepassword_requested) {
(new GUIPasswordChange(guienv, guienv->getRootGUIElement(), -1,
(new GUIPasswordChange(guienv, guiroot, -1,
&g_menumgr, client, texture_src))->drop();
g_gamecallback->changepassword_requested = false;
}

if (g_gamecallback->changevolume_requested) {
(new GUIVolumeChange(guienv, guienv->getRootGUIElement(), -1,
(new GUIVolumeChange(guienv, guiroot, -1,
&g_menumgr, texture_src))->drop();
g_gamecallback->changevolume_requested = false;
}

if (g_gamecallback->keyconfig_requested) {
(new GUIKeyChangeMenu(guienv, guienv->getRootGUIElement(), -1,
(new GUIKeyChangeMenu(guienv, guiroot, -1,
&g_menumgr, texture_src))->drop();
g_gamecallback->keyconfig_requested = false;
}
Expand Down Expand Up @@ -1949,6 +1954,8 @@ void Game::updateStats(RunStats *stats, const FpsControl &draw_times,

void Game::processUserInput(f32 dtime)
{
auto guienv = m_rendering_engine->get_gui_env();

// Reset input if window not active or some menu is active
if (!device->isWindowActive() || isMenuActive() || guienv->hasFocus(gui_chat_console)) {
if(m_game_focused) {
Expand Down Expand Up @@ -4282,7 +4289,7 @@ void FpsControl::limit(IrrlichtDevice *device, f32 *dtime)

void Game::showOverlayMessage(const char *msg, float dtime, int percent, bool draw_sky)
{
m_rendering_engine->draw_load_screen(wstrgettext(msg), guienv, texture_src,
m_rendering_engine->draw_load_screen(wstrgettext(msg), texture_src,
dtime, percent, draw_sky);
}

Expand Down
11 changes: 3 additions & 8 deletions src/client/gameui.cpp
Expand Up @@ -43,17 +43,12 @@ inline static const char *yawToDirectionString(int yaw)
return direction[yaw];
}

GameUI::GameUI()
void GameUI::init(gui::IGUIEnvironment *guienv)
{
if (guienv && guienv->getSkin())
if (guienv->getSkin())
m_statustext_initial_color = guienv->getSkin()->getColor(gui::EGDC_BUTTON_TEXT);
else
m_statustext_initial_color = video::SColor(255, 0, 0, 0);

}
void GameUI::init()
{
IGUIElement *guiroot = guienv->getRootGUIElement();
gui::IGUIElement *guiroot = guienv->getRootGUIElement();

// First line of debug text
m_guitext = gui::StaticText::add(guienv, utf8_to_wide(PROJECT_NAME_C).c_str(),
Expand Down
7 changes: 2 additions & 5 deletions src/client/gameui.h
Expand Up @@ -49,9 +49,6 @@ class GameUI
friend class TestGameUI;

public:
GameUI();
~GameUI() = default;

// Flags that can, or may, change during main game loop
struct Flags
{
Expand All @@ -63,7 +60,7 @@ class GameUI
bool show_profiler_graph = false;
};

void init();
void init(gui::IGUIEnvironment *m_guienv);
void update(const RunStats &stats, Client *client, MapDrawControl *draw_control,
const CameraOrientation &cam, const PointedThing &pointed_old,
const GUIChatConsole *chat_console, float dtime);
Expand Down Expand Up @@ -121,7 +118,7 @@ class GameUI
gui::IGUIStaticText *m_guitext_status = nullptr;
std::wstring m_statustext;
float m_statustext_time = 0.0f;
video::SColor m_statustext_initial_color;
video::SColor m_statustext_initial_color = video::SColor(255, 0, 0, 0);

gui::IGUIStaticText *m_guitext_chat = nullptr; // Chat text
u32 m_recent_chat_count = 0;
Expand Down
4 changes: 2 additions & 2 deletions src/client/renderingengine.cpp
Expand Up @@ -226,9 +226,9 @@ bool RenderingEngine::setWindowIcon()
Additionally, a progressbar can be drawn when percent is set between 0 and 100.
*/
void RenderingEngine::draw_load_screen(const std::wstring &text,
gui::IGUIEnvironment *guienv, ITextureSource *tsrc, float dtime,
int percent, bool sky)
ITextureSource *tsrc, float dtime, int percent, bool sky)
{
gui::IGUIEnvironment *guienv = get_gui_env();
v2u32 screensize = getWindowSize();

v2s32 textsize(g_fontengine->getTextWidth(text), g_fontengine->getLineHeight());
Expand Down
3 changes: 1 addition & 2 deletions src/client/renderingengine.h
Expand Up @@ -110,8 +110,7 @@ class RenderingEngine
return m_device->getGUIEnvironment();
}

void draw_load_screen(const std::wstring &text,
gui::IGUIEnvironment *guienv, ITextureSource *tsrc,
void draw_load_screen(const std::wstring &text, ITextureSource *tsrc,
float dtime = 0, int percent = 0, bool sky = true);

void draw_scene(video::SColor skycolor, bool show_hud,
Expand Down
3 changes: 0 additions & 3 deletions src/gui/mainmenumanager.h
Expand Up @@ -38,9 +38,6 @@ class IGameCallback
virtual void signalKeyConfigChange() = 0;
};

// FIXME: do we really need this global variable?
extern gui::IGUIEnvironment *guienv;

// Handler for the modal menus

class MainMenuManager : public IMenuManager
Expand Down

0 comments on commit 16da954

Please sign in to comment.