]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/gui/guiEngine.cpp
Use "Aux1" key name consistently everywhere
[dragonfireclient.git] / src / gui / guiEngine.cpp
index 6030a5bfb5d3be0953691089b2693e6d273b26dd..93463ad709df7294361663fb225879e1380f86fa 100644 (file)
@@ -39,9 +39,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "client/guiscalingfilter.h"
 #include "irrlicht_changes/static_text.h"
 
-#ifdef __ANDROID__
+#if ENABLE_GLES
 #include "client/tile.h"
-#include <GLES/gl.h>
 #endif
 
 
@@ -76,9 +75,7 @@ video::ITexture *MenuTextureSource::getTexture(const std::string &name, u32 *id)
        if (name.empty())
                return NULL;
 
-       m_to_delete.insert(name);
-
-#ifdef __ANDROID__
+#if ENABLE_GLES
        video::ITexture *retval = m_driver->findTexture(name.c_str());
        if (retval)
                return retval;
@@ -89,6 +86,7 @@ video::ITexture *MenuTextureSource::getTexture(const std::string &name, u32 *id)
 
        image = Align2Npot2(image, m_driver);
        retval = m_driver->addTexture(name.c_str(), image);
+       m_to_delete.insert(name);
        image->drop();
        return retval;
 #else
@@ -145,10 +143,10 @@ GUIEngine::GUIEngine(JoystickController *joystick,
        //create soundmanager
        MenuMusicFetcher soundfetcher;
 #if USE_SOUND
-       if (g_settings->getBool("enable_sound"))
+       if (g_settings->getBool("enable_sound") && g_sound_manager_singleton.get())
                m_sound_manager = createOpenALSoundManager(g_sound_manager_singleton.get(), &soundfetcher);
 #endif
-       if(!m_sound_manager)
+       if (!m_sound_manager)
                m_sound_manager = &dummySoundManager;
 
        //create topleft header
@@ -171,6 +169,7 @@ GUIEngine::GUIEngine(JoystickController *joystick,
                        m_menumanager,
                        NULL /* &client */,
                        m_texture_source,
+                       m_sound_manager,
                        m_formspecgui,
                        m_buttonhandler,
                        "",
@@ -298,10 +297,14 @@ void GUIEngine::run()
 
                driver->endScene();
 
+               IrrlichtDevice *device = RenderingEngine::get_raw_device();
+               u32 frametime_min = 1000 / (device->isWindowFocused()
+                       ? g_settings->getFloat("fps_max")
+                       : g_settings->getFloat("fps_max_unfocused"));
                if (m_clouds_enabled)
-                       cloudPostProcess();
+                       cloudPostProcess(frametime_min, device);
                else
-                       sleep_ms(25);
+                       sleep_ms(frametime_min);
 
                m_script->step();
 
@@ -368,9 +371,8 @@ void GUIEngine::cloudPreProcess()
 }
 
 /******************************************************************************/
-void GUIEngine::cloudPostProcess()
+void GUIEngine::cloudPostProcess(u32 frametime_min, IrrlichtDevice *device)
 {
-       float fps_max = g_settings->getFloat("pause_fps_max");
        // Time of frame without fps limit
        u32 busytime_u32;
 
@@ -381,15 +383,22 @@ void GUIEngine::cloudPostProcess()
        else
                busytime_u32 = 0;
 
-       // FPS limiter
-       u32 frametime_min = 1000./fps_max;
-
+       // FPS limit
        if (busytime_u32 < frametime_min) {
                u32 sleeptime = frametime_min - busytime_u32;
-               RenderingEngine::get_raw_device()->sleep(sleeptime);
+               device->sleep(sleeptime);
+       }
+}
+
+/******************************************************************************/
+void GUIEngine::setFormspecPrepend(const std::string &fs)
+{
+       if (m_menu) {
+               m_menu->setFormspecPrepend(fs);
        }
 }
 
+
 /******************************************************************************/
 void GUIEngine::drawBackground(video::IVideoDriver *driver)
 {
@@ -476,8 +485,6 @@ void GUIEngine::drawHeader(video::IVideoDriver *driver)
                splashrect += v2s32((screensize.Width/2)-(splashsize.X/2),
                                ((free_space/2)-splashsize.Y/2)+10);
 
-       video::SColor bgcolor(255,50,50,50);
-
        draw2DImageFilterScaled(driver, texture, splashrect,
                core::rect<s32>(core::position2d<s32>(0,0),
                core::dimension2di(texture->getOriginalSize())),
@@ -518,7 +525,7 @@ void GUIEngine::drawFooter(video::IVideoDriver *driver)
 }
 
 /******************************************************************************/
-bool GUIEngine::setTexture(texture_layer layer, std::string texturepath,
+bool GUIEngine::setTexture(texture_layer layer, const std::string &texturepath,
                bool tile_image, unsigned int minsize)
 {
        video::IVideoDriver *driver = RenderingEngine::get_video_driver();
@@ -593,7 +600,7 @@ void GUIEngine::updateTopLeftTextSize()
 }
 
 /******************************************************************************/
-s32 GUIEngine::playSound(SimpleSoundSpec spec, bool looped)
+s32 GUIEngine::playSound(const SimpleSoundSpec &spec, bool looped)
 {
        s32 handle = m_sound_manager->playSound(spec, looped);
        return handle;
@@ -611,4 +618,3 @@ unsigned int GUIEngine::queueAsync(const std::string &serialized_func,
 {
        return m_script->queueAsync(serialized_func, serialized_params);
 }
-