Luanti 5.15.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 "client/clouds.h"
13#include "client/sound.h"
15#include "translation.h"
16
17#include <csignal>
18
19/******************************************************************************/
20/* Structs and macros */
21/******************************************************************************/
30
32 video::ITexture *texture = nullptr;
33 bool tile;
34 unsigned int minsize;
35};
36
37/******************************************************************************/
38/* forward declarations */
39/******************************************************************************/
40class GUIEngine;
41class RenderingEngine;
43struct MainMenuData;
44
45/******************************************************************************/
46/* declarations */
47/******************************************************************************/
48
51{
52public:
57 TextDestGuiEngine(GUIEngine* engine) : m_engine(engine) {};
58
63 void gotText(const StringMap &fields);
64
68 void requestScreenshot();
69
70private:
72 GUIEngine *m_engine = nullptr;
73};
74
77{
78public:
83 MenuTextureSource(video::IVideoDriver *driver) : m_driver(driver) {};
84
88 virtual ~MenuTextureSource();
89
95 video::ITexture *getTexture(const std::string &name, u32 *id = NULL);
96
97private:
99 video::IVideoDriver *m_driver = nullptr;
101 std::vector<video::ITexture*> m_to_delete;
102};
103
106{
107protected:
108 void addThePaths(const std::string &name,
109 std::vector<std::string> &paths) override;
110};
111
115 friend class ModApiMainMenu;
118
119public:
129 gui::IGUIElement *parent,
130 RenderingEngine *rendering_engine,
131 IMenuManager *menumgr,
132 MainMenuData *data,
133 volatile std::sig_atomic_t &kill);
134
136 virtual ~GUIEngine();
137
142 {
143 return m_script.get();
144 }
145
149 std::string getScriptDir()
150 {
151 return m_scriptdir;
152 }
153
158 {
159 m_take_screenshot = true;
160 }
161
171 Translations *getContentTranslations(const std::string &path,
172 const std::string &domain, const std::string &lang_code);
173
174private:
178
180 bool loadMainMenuScript();
181
183 void run();
184
187
190 gui::IGUIElement *m_parent = nullptr;
194 scene::ISceneManager *m_smgr = nullptr;
198 std::unique_ptr<ISimpleTextureSource> m_texture_source;
200 std::unique_ptr<ISoundManager> m_sound_manager;
201
207 irr_ptr<GUIFormSpecMenu> m_menu;
208
210 volatile std::sig_atomic_t &m_kill;
211
213 bool m_startgame = false;
214
216 bool m_take_screenshot = false;
217
219 std::unique_ptr<MainMenuScripting> m_script;
220
222 std::string m_scriptdir = "";
223
224 void setFormspecPrepend(const std::string &fs);
225
230 void drawBackground(video::IVideoDriver *driver);
235 void drawOverlay(video::IVideoDriver *driver);
240 void drawHeader(video::IVideoDriver *driver);
245 void drawFooter(video::IVideoDriver *driver);
246
252 bool setTexture(texture_layer layer, const std::string &texturepath,
253 bool tile_image, unsigned int minsize);
254
260 static bool downloadFile(const std::string &url, const std::string &target);
261
264
269 void setTopleftText(const std::string &text);
270
272 gui::IGUIStaticText *m_irr_toplefttext = nullptr;
275
277 void drawClouds(float dtime);
278
280 bool m_clouds_enabled = true;
281
282 static void fullscreenChangedCallback(const std::string &name, void *data);
283};
Definition enriched_string.h:28
Definition guiFormSpecMenu.h:517
implementation of main menu based uppon formspecs
Definition guiEngine.h:113
bool m_startgame
variable used to abort menu and return back to main game handling
Definition guiEngine.h:213
scene::ISceneManager * m_smgr
scene manager to add scene elements to
Definition guiEngine.h:194
bool m_clouds_enabled
is drawing of clouds enabled atm
Definition guiEngine.h:280
void run()
run main menu loop
Definition guiEngine.cpp:302
Translations m_last_translations
Only the most recently used translation set is kept loaded.
Definition guiEngine.h:177
FormspecFormSource * m_formspecgui
representation of form source to be used in mainmenu formspec
Definition guiEngine.h:203
virtual ~GUIEngine()
default destructor
Definition guiEngine.cpp:406
void drawOverlay(video::IVideoDriver *driver)
draw overlay layer
Definition guiEngine.cpp:491
bool m_take_screenshot
flag to take a screenshot on next frame
Definition guiEngine.h:216
void drawBackground(video::IVideoDriver *driver)
draw background layer
Definition guiEngine.cpp:436
void updateTopLeftTextSize()
update size of topleftext element
Definition guiEngine.cpp:656
image_definition m_textures[TEX_LAYER_MAX]
array containing pointers to current specified texture layers
Definition guiEngine.h:263
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:601
void setTopleftText(const std::string &text)
specify text to appear as top left string
Definition guiEngine.cpp:648
gui::IGUIStaticText * m_irr_toplefttext
pointer to gui element shown at topleft corner
Definition guiEngine.h:272
std::unique_ptr< ISoundManager > m_sound_manager
sound manager
Definition guiEngine.h:200
MainMenuData * m_data
pointer to data beeing transfered back to main game handling
Definition guiEngine.h:196
RenderingEngine * m_rendering_engine
Definition guiEngine.h:188
std::unique_ptr< MainMenuScripting > m_script
scripting interface
Definition guiEngine.h:219
GUIEngine(JoystickController *joystick, gui::IGUIElement *parent, RenderingEngine *rendering_engine, IMenuManager *menumgr, MainMenuData *data, volatile std::sig_atomic_t &kill)
default constructor
Definition guiEngine.cpp:109
void drawHeader(video::IVideoDriver *driver)
draw header layer
Definition guiEngine.cpp:510
volatile std::sig_atomic_t & m_kill
reference to kill variable managed by SIGINT handler
Definition guiEngine.h:210
std::unique_ptr< ISimpleTextureSource > m_texture_source
texture source
Definition guiEngine.h:198
EnrichedString m_toplefttext
and text that is in it
Definition guiEngine.h:274
bool loadMainMenuScript()
find and run the main menu script
Definition guiEngine.cpp:278
MainMenuScripting * getScriptIface()
return MainMenuScripting interface
Definition guiEngine.h:141
std::string m_last_translations_key
Definition guiEngine.h:175
void drawClouds(float dtime)
do preprocessing for cloud subsystem
Definition guiEngine.cpp:420
void drawFooter(video::IVideoDriver *driver)
draw footer layer
Definition guiEngine.cpp:569
static void fullscreenChangedCallback(const std::string &name, void *data)
Definition guiEngine.cpp:672
Translations * getContentTranslations(const std::string &path, const std::string &domain, const std::string &lang_code)
Get translations for content.
Definition guiEngine.cpp:236
void requestScreenshot()
Request taking a screenshot on the next frame.
Definition guiEngine.h:157
static bool downloadFile(const std::string &url, const std::string &target)
download a file using curl
Definition guiEngine.cpp:617
IMenuManager * m_menumanager
manager to add menus to
Definition guiEngine.h:192
TextDestGuiEngine * m_buttonhandler
formspec input receiver
Definition guiEngine.h:205
void setFormspecPrepend(const std::string &fs)
Definition guiEngine.cpp:427
gui::IGUIElement * m_parent
parent gui element
Definition guiEngine.h:190
std::string getScriptDir()
return dir of current menuscript
Definition guiEngine.h:149
irr_ptr< GUIFormSpecMenu > m_menu
the formspec menu
Definition guiEngine.h:207
std::string m_scriptdir
script basefolder
Definition guiEngine.h:222
Definition modalMenu.h:26
Definition texturesource.h:34
Definition joystick_controller.h:89
Definition scripting_mainmenu.h:20
Definition l_mainmenu_sound.h:25
GUIEngine specific implementation of SoundFallbackPathProvider.
Definition guiEngine.h:106
void addThePaths(const std::string &name, std::vector< std::string > &paths) override
MenuMusicFetcher
Definition guiEngine.cpp:94
GUIEngine specific implementation of ISimpleTextureSource.
Definition guiEngine.h:77
MenuTextureSource(video::IVideoDriver *driver)
default constructor
Definition guiEngine.h:83
virtual ~MenuTextureSource()
destructor, removes all loaded textures
Definition guiEngine.cpp:51
video::IVideoDriver * m_driver
driver to get textures from
Definition guiEngine.h:99
std::vector< video::ITexture * > m_to_delete
set of textures to delete
Definition guiEngine.h:101
video::ITexture * getTexture(const std::string &name, u32 *id=NULL)
get a texture, loading it if required
Definition guiEngine.cpp:65
Definition l_mainmenu_sound.h:15
Implementation of lua api support for mainmenu.
Definition l_mainmenu.h:12
Definition renderingengine.h:64
Definition sound.h:22
GUIEngine specific implementation of TextDest used within guiFormSpecMenu.
Definition guiEngine.h:51
TextDestGuiEngine(GUIEngine *engine)
default constructor
Definition guiEngine.h:57
void requestScreenshot()
Request a screenshot from the main menu.
Definition guiEngine.cpp:43
GUIEngine * m_engine
target to transmit data to
Definition guiEngine.h:72
void gotText(const StringMap &fields)
receive fields transmitted by guiFormSpecMenu
Definition guiEngine.cpp:38
Definition translation.h:18
texture_layer
texture layer ids
Definition guiEngine.h:23
@ TEX_LAYER_BACKGROUND
Definition guiEngine.h:24
@ TEX_LAYER_OVERLAY
Definition guiEngine.h:25
@ TEX_LAYER_HEADER
Definition guiEngine.h:26
@ TEX_LAYER_MAX
Definition guiEngine.h:28
@ TEX_LAYER_FOOTER
Definition guiEngine.h:27
Definition filesys.cpp:53
std::unordered_map< std::string, std::string > StringMap
Definition string.h:66
Definition guiMainMenu.h:20
Definition guiFormSpecMenu.h:67
Definition guiEngine.h:31
bool tile
Definition guiEngine.h:33
unsigned int minsize
Definition guiEngine.h:34
video::ITexture * texture
Definition guiEngine.h:32