1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-08-11 17:51:04 +00:00

Use smart-ptrs in GUIEngine

This commit is contained in:
Desour 2023-04-10 18:43:58 +02:00 committed by DS
parent ceec560779
commit b201c03625
3 changed files with 51 additions and 52 deletions

View file

@ -138,26 +138,26 @@ GUIEngine::GUIEngine(JoystickController *joystick,
m_data(data),
m_kill(kill)
{
//initialize texture pointers
// initialize texture pointers
for (image_definition &texture : m_textures) {
texture.texture = NULL;
}
// is deleted by guiformspec!
m_buttonhandler = new TextDestGuiEngine(this);
auto buttonhandler = std::make_unique<TextDestGuiEngine>(this);
m_buttonhandler = buttonhandler.get();
//create texture source
m_texture_source = new MenuTextureSource(rendering_engine->get_video_driver());
// create texture source
m_texture_source = std::make_unique<MenuTextureSource>(rendering_engine->get_video_driver());
//create soundmanager
MenuMusicFetcher soundfetcher;
// create soundmanager
#if USE_SOUND
if (g_settings->getBool("enable_sound") && g_sound_manager_singleton.get())
m_sound_manager = createOpenALSoundManager(g_sound_manager_singleton.get(), &soundfetcher);
m_sound_manager.reset(createOpenALSoundManager(g_sound_manager_singleton.get(), &m_soundfetcher));
#endif
if (!m_sound_manager)
m_sound_manager = &dummySoundManager;
m_sound_manager = std::make_unique<DummySoundManager>();
//create topleft header
// create topleft header
m_toplefttext = L"";
core::rect<s32> rect(0, 0, g_fontengine->getTextWidth(m_toplefttext.c_str()),
@ -167,20 +167,22 @@ GUIEngine::GUIEngine(JoystickController *joystick,
m_irr_toplefttext = gui::StaticText::add(rendering_engine->get_gui_env(),
m_toplefttext, rect, false, true, 0, -1);
//create formspecsource
m_formspecgui = new FormspecFormSource("");
// create formspecsource
auto formspecgui = std::make_unique<FormspecFormSource>("");
m_formspecgui = formspecgui.get();
/* Create menu */
m_menu = new GUIFormSpecMenu(joystick,
m_menu = make_irr<GUIFormSpecMenu>(
joystick,
m_parent,
-1,
m_menumanager,
NULL /* &client */,
nullptr /* &client */,
m_rendering_engine->get_gui_env(),
m_texture_source,
m_sound_manager,
m_formspecgui,
m_buttonhandler,
m_texture_source.get(),
m_sound_manager.get(),
formspecgui.release(),
buttonhandler.release(),
"",
false);
@ -191,7 +193,7 @@ GUIEngine::GUIEngine(JoystickController *joystick,
infostream << "GUIEngine: Initializing Lua" << std::endl;
m_script = new MainMenuScripting(this);
m_script = std::make_unique<MainMenuScripting>(this);
try {
m_script->setMainMenuData(&m_data->script_data);
@ -209,8 +211,7 @@ GUIEngine::GUIEngine(JoystickController *joystick,
}
m_menu->quitMenu();
m_menu->drop();
m_menu = NULL;
m_menu.reset();
}
/******************************************************************************/
@ -327,13 +328,10 @@ void GUIEngine::run()
/******************************************************************************/
GUIEngine::~GUIEngine()
{
if (m_sound_manager != &dummySoundManager){
delete m_sound_manager;
m_sound_manager = NULL;
}
m_sound_manager.reset();
infostream<<"GUIEngine: Deinitializing scripting"<<std::endl;
delete m_script;
m_script.reset();
m_irr_toplefttext->setText(L"");
@ -343,16 +341,15 @@ GUIEngine::~GUIEngine()
m_rendering_engine->get_video_driver()->removeTexture(texture.texture);
}
delete m_texture_source;
m_texture_source.reset();
if (m_cloud.clouds)
m_cloud.clouds->drop();
m_cloud.clouds.reset();
}
/******************************************************************************/
void GUIEngine::cloudInit()
{
m_cloud.clouds = new Clouds(m_smgr, -1, rand());
m_cloud.clouds = make_irr<Clouds>(m_smgr, -1, rand());
m_cloud.clouds->setHeight(100.0f);
m_cloud.clouds->update(v3f(0, 0, 0), video::SColor(255,240,240,255));