Luanti 5.16.0-dev
Loading...
Searching...
No Matches
guiEngine.h
Go to the documentation of this file.
1// Luanti
2// SPDX-License-Identifier: LGPL-2.1-or-later
3// Copyright (C) 2013 sapier
4
5#pragma once
6
7/******************************************************************************/
8/* Includes */
9/******************************************************************************/
10#include "irrlichttypes.h"
11#include "guiFormSpecMenu.h"
12#include "statusTextHelper.h"
13#include "client/clouds.h"
14#include "client/sound.h"
16#include "translation.h"
17
18#include <csignal>
19#include <memory>
20
21/******************************************************************************/
22/* Structs and macros */
23/******************************************************************************/
32
34 video::ITexture *texture = nullptr;
35 bool tile;
36 unsigned int minsize;
37};
38
39/******************************************************************************/
40/* forward declarations */
41/******************************************************************************/
42class GUIEngine;
43class RenderingEngine;
45struct MainMenuData;
46
47/******************************************************************************/
48/* declarations */
49/******************************************************************************/
50
53{
54public:
59 TextDestGuiEngine(GUIEngine* engine) : m_engine(engine) {};
60
65 void gotText(const StringMap &fields);
66
70 void requestScreenshot();
71
72private:
74 GUIEngine *m_engine = nullptr;
75};
76
79{
80public:
85 MenuTextureSource(video::IVideoDriver *driver) : m_driver(driver) {};
86
90 virtual ~MenuTextureSource();
91
97 video::ITexture *getTexture(const std::string &name, u32 *id = NULL);
98
99private:
101 video::IVideoDriver *m_driver = nullptr;
103 std::vector<video::ITexture*> m_to_delete;
104};
105
108{
109protected:
110 void addThePaths(const std::string &name,
111 std::vector<std::string> &paths) override;
112};
113
117 friend class ModApiMainMenu;
120
121public:
131 gui::IGUIElement *parent,
132 RenderingEngine *rendering_engine,
133 IMenuManager *menumgr,
134 MainMenuData *data,
135 volatile std::sig_atomic_t &kill);
136
138 virtual ~GUIEngine();
139
144 {
145 return m_script.get();
146 }
147
151 std::string getScriptDir()
152 {
153 return m_scriptdir;
154 }
155
160 {
161 m_take_screenshot = true;
162 }
163
173 Translations *getContentTranslations(const std::string &path,
174 const std::string &domain, const std::string &lang_code);
175
176private:
180
182 bool loadMainMenuScript();
183
185 void run();
186
189
192 gui::IGUIElement *m_parent = nullptr;
196 scene::ISceneManager *m_smgr = nullptr;
200 std::unique_ptr<ISimpleTextureSource> m_texture_source;
202 std::unique_ptr<ISoundManager> m_sound_manager;
203
209 irr_ptr<GUIFormSpecMenu> m_menu;
210
212 volatile std::sig_atomic_t &m_kill;
213
215 bool m_startgame = false;
216
218 bool m_take_screenshot = false;
219
221 std::unique_ptr<MainMenuScripting> m_script;
222
224 std::string m_scriptdir = "";
225
226 void setFormspecPrepend(const std::string &fs);
227
232 void drawBackground(video::IVideoDriver *driver);
237 void drawOverlay(video::IVideoDriver *driver);
242 void drawHeader(video::IVideoDriver *driver);
247 void drawFooter(video::IVideoDriver *driver);
248
254 bool setTexture(texture_layer layer, const std::string &texturepath,
255 bool tile_image, unsigned int minsize);
256
262 static bool downloadFile(const std::string &url, const std::string &target);
263
266
271 void setTopleftText(const std::string &text);
272
274 gui::IGUIStaticText *m_irr_toplefttext = nullptr;
277
279 std::unique_ptr<StatusTextHelper> m_status_text;
280
282 void drawClouds(float dtime);
283
285 bool m_clouds_enabled = true;
286
287 void setMenuCloudsColor(video::SColor color);
288 void setMenuSkyColor(video::SColor color);
289
290 static void fullscreenChangedCallback(const std::string &name, void *data);
291};
Definition enriched_string.h:28
Definition guiFormSpecMenu.h:525
implementation of main menu based uppon formspecs
Definition guiEngine.h:115
bool m_startgame
variable used to abort menu and return back to main game handling
Definition guiEngine.h:215
scene::ISceneManager * m_smgr
scene manager to add scene elements to
Definition guiEngine.h:196
bool m_clouds_enabled
is drawing of clouds enabled atm
Definition guiEngine.h:285
void run()
run main menu loop
Definition guiEngine.cpp:322
Translations m_last_translations
Only the most recently used translation set is kept loaded.
Definition guiEngine.h:179
friend class ModApiMainMenu
grant ModApiMainMenu access to private members
Definition guiEngine.h:117
FormspecFormSource * m_formspecgui
representation of form source to be used in mainmenu formspec
Definition guiEngine.h:205
virtual ~GUIEngine()
default destructor
Definition guiEngine.cpp:419
void drawOverlay(video::IVideoDriver *driver)
draw overlay layer
Definition guiEngine.cpp:515
bool m_take_screenshot
flag to take a screenshot on next frame
Definition guiEngine.h:218
void drawBackground(video::IVideoDriver *driver)
draw background layer
Definition guiEngine.cpp:466
void updateTopLeftTextSize()
update size of topleftext element
Definition guiEngine.cpp:680
image_definition m_textures[TEX_LAYER_MAX]
array containing pointers to current specified texture layers
Definition guiEngine.h:265
void setMenuCloudsColor(video::SColor color)
Definition guiEngine.cpp:446
bool setTexture(texture_layer layer, const std::string &texturepath, bool tile_image, unsigned int minsize)
load a texture for a specified layer
Definition guiEngine.cpp:625
void setTopleftText(const std::string &text)
specify text to appear as top left string
Definition guiEngine.cpp:672
gui::IGUIStaticText * m_irr_toplefttext
pointer to gui element shown at topleft corner
Definition guiEngine.h:274
std::unique_ptr< ISoundManager > m_sound_manager
sound manager
Definition guiEngine.h:202
MainMenuData * m_data
pointer to data beeing transfered back to main game handling
Definition guiEngine.h:198
RenderingEngine * m_rendering_engine
Definition guiEngine.h:190
std::unique_ptr< MainMenuScripting > m_script
scripting interface
Definition guiEngine.h:221
GUIEngine(JoystickController *joystick, gui::IGUIElement *parent, RenderingEngine *rendering_engine, IMenuManager *menumgr, MainMenuData *data, volatile std::sig_atomic_t &kill)
default constructor
Definition guiEngine.cpp:113
void drawHeader(video::IVideoDriver *driver)
draw header layer
Definition guiEngine.cpp:534
volatile std::sig_atomic_t & m_kill
reference to kill variable managed by SIGINT handler
Definition guiEngine.h:212
std::unique_ptr< ISimpleTextureSource > m_texture_source
texture source
Definition guiEngine.h:200
EnrichedString m_toplefttext
and text that is in it
Definition guiEngine.h:276
bool loadMainMenuScript()
find and run the main menu script
Definition guiEngine.cpp:298
MainMenuScripting * getScriptIface()
return MainMenuScripting interface
Definition guiEngine.h:143
std::string m_last_translations_key
Definition guiEngine.h:177
void drawClouds(float dtime)
do preprocessing for cloud subsystem
Definition guiEngine.cpp:438
void drawFooter(video::IVideoDriver *driver)
draw footer layer
Definition guiEngine.cpp:593
static void fullscreenChangedCallback(const std::string &name, void *data)
Definition guiEngine.cpp:696
Translations * getContentTranslations(const std::string &path, const std::string &domain, const std::string &lang_code)
Get translations for content.
Definition guiEngine.cpp:256
void requestScreenshot()
Request taking a screenshot on the next frame.
Definition guiEngine.h:159
static bool downloadFile(const std::string &url, const std::string &target)
download a file using curl
Definition guiEngine.cpp:641
IMenuManager * m_menumanager
manager to add menus to
Definition guiEngine.h:194
TextDestGuiEngine * m_buttonhandler
formspec input receiver
Definition guiEngine.h:207
void setFormspecPrepend(const std::string &fs)
Definition guiEngine.cpp:457
gui::IGUIElement * m_parent
parent gui element
Definition guiEngine.h:192
friend class ModApiMainMenuSound
Definition guiEngine.h:118
void setMenuSkyColor(video::SColor color)
Definition guiEngine.cpp:451
std::string getScriptDir()
return dir of current menuscript
Definition guiEngine.h:151
std::unique_ptr< StatusTextHelper > m_status_text
status message element for menu notifications
Definition guiEngine.h:279
friend class MainMenuSoundHandle
Definition guiEngine.h:119
irr_ptr< GUIFormSpecMenu > m_menu
the formspec menu
Definition guiEngine.h:209
std::string m_scriptdir
script basefolder
Definition guiEngine.h:224
Definition modalMenu.h:26
ISimpleTextureSource()=default
Definition joystick_controller.h:89
Definition scripting_mainmenu.h:20
GUIEngine specific implementation of SoundFallbackPathProvider.
Definition guiEngine.h:108
void addThePaths(const std::string &name, std::vector< std::string > &paths) override
MenuMusicFetcher.
Definition guiEngine.cpp:97
MenuTextureSource(video::IVideoDriver *driver)
default constructor
Definition guiEngine.h:85
virtual ~MenuTextureSource()
destructor, removes all loaded textures
Definition guiEngine.cpp:54
video::IVideoDriver * m_driver
driver to get textures from
Definition guiEngine.h:101
std::vector< video::ITexture * > m_to_delete
set of textures to delete
Definition guiEngine.h:103
video::ITexture * getTexture(const std::string &name, u32 *id=NULL)
get a texture, loading it if required
Definition guiEngine.cpp:68
Definition renderingengine.h:64
Definition sound.h:22
GUIEngine specific implementation of TextDest used within guiFormSpecMenu.
Definition guiEngine.h:53
TextDestGuiEngine(GUIEngine *engine)
default constructor
Definition guiEngine.h:59
void requestScreenshot()
Request a screenshot from the main menu.
Definition guiEngine.cpp:46
GUIEngine * m_engine
target to transmit data to
Definition guiEngine.h:74
void gotText(const StringMap &fields)
receive fields transmitted by guiFormSpecMenu
Definition guiEngine.cpp:41
Definition translation.h:19
texture_layer
texture layer ids
Definition guiEngine.h:25
@ TEX_LAYER_BACKGROUND
Definition guiEngine.h:26
@ TEX_LAYER_OVERLAY
Definition guiEngine.h:27
@ TEX_LAYER_HEADER
Definition guiEngine.h:28
@ TEX_LAYER_MAX
Definition guiEngine.h:30
@ TEX_LAYER_FOOTER
Definition guiEngine.h:29
Definition filesys.cpp:55
std::unordered_map< std::string, std::string > StringMap
Definition string.h:66
Definition guiMainMenu.h:20
Definition guiFormSpecMenu.h:67
Definition guiEngine.h:33
bool tile
Definition guiEngine.h:35
unsigned int minsize
Definition guiEngine.h:36
video::ITexture * texture
Definition guiEngine.h:34