]> git.lizzy.rs Git - minetest.git/blobdiff - src/guiEngine.h
(Re)spawn players within 'mapgen_limit'
[minetest.git] / src / guiEngine.h
index 4844593954c98fcf679cc12ed48049eac8b83c4e..e7e5ca05dc30bae22dad0de4ffd7a3df172fd0ed 100644 (file)
@@ -27,7 +27,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "modalMenu.h"
 #include "guiFormSpecMenu.h"
 #include "sound.h"
-#include "tile.h"
+#include "client/tile.h"
+#include "util/enriched_string.h"
 
 /******************************************************************************/
 /* Typedefs and macros                                                        */
@@ -41,6 +42,12 @@ typedef enum {
        TEX_LAYER_MAX
 } texture_layer;
 
+typedef struct {
+       video::ITexture* texture;
+       bool             tile;
+       unsigned int     minsize;
+} image_definition;
+
 /******************************************************************************/
 /* forward declarations                                                       */
 /******************************************************************************/
@@ -67,13 +74,13 @@ class TextDestGuiEngine : public TextDest
         * receive fields transmitted by guiFormSpecMenu
         * @param fields map containing formspec field elements currently active
         */
-       void gotText(std::map<std::string, std::string> fields);
+       void gotText(const StringMap &fields);
 
        /**
         * receive text/events transmitted by guiFormSpecMenu
         * @param text textual representation of event
         */
-       void gotText(std::wstring text);
+       void gotText(const std::wstring &text);
 
 private:
        /** target to transmit data to */
@@ -132,6 +139,7 @@ class MenuMusicFetcher: public OnDemandSoundFetcher
 class GUIEngine {
        /** grant ModApiMainMenu access to private members */
        friend class ModApiMainMenu;
+       friend class ModApiSound;
 
 public:
        /**
@@ -142,12 +150,13 @@ class GUIEngine {
         * @param smgr scene manager to add scene elements to
         * @param data struct to transfer data to main game handling
         */
-       GUIEngine(      irr::IrrlichtDevice* dev,
-                               gui::IGUIElement* parent,
-                               IMenuManager *menumgr,
-                               scene::ISceneManager* smgr,
-                               MainMenuData* data,
-                               bool& kill);
+       GUIEngine(irr::IrrlichtDevice* dev,
+                       JoystickController *joystick,
+                       gui::IGUIElement* parent,
+                       IMenuManager *menumgr,
+                       scene::ISceneManager* smgr,
+                       MainMenuData* data,
+                       bool& kill);
 
        /** default destructor */
        virtual ~GUIEngine();
@@ -155,17 +164,23 @@ class GUIEngine {
        /**
         * return MainMenuScripting interface
         */
-       MainMenuScripting* getScriptIface() {
+       MainMenuScripting* getScriptIface()
+       {
                return m_script;
        }
 
        /**
         * return dir of current menuscript
         */
-       std::string getScriptDir() {
+       std::string getScriptDir()
+       {
                return m_scriptdir;
        }
 
+       /** pass async callback to scriptengine **/
+       unsigned int queueAsync(const std::string &serialized_fct,
+                       const std::string &serialized_params);
+
 private:
 
        /** find and run the main menu script */
@@ -174,42 +189,42 @@ class GUIEngine {
        /** run main menu loop */
        void run();
 
-       /** handler to limit frame rate within main menu */
-       void limitFrameRate();
+       /** update size of topleftext element */
+       void updateTopLeftTextSize();
 
        /** device to draw at */
-       irr::IrrlichtDevice*    m_device;
+       irr::IrrlichtDevice*     m_device;
        /** parent gui element */
-       gui::IGUIElement*               m_parent;
+       gui::IGUIElement*        m_parent;
        /** manager to add menus to */
-       IMenuManager*                   m_menumanager;
+       IMenuManager*            m_menumanager;
        /** scene manager to add scene elements to */
-       scene::ISceneManager*   m_smgr;
+       scene::ISceneManager*    m_smgr;
        /** pointer to data beeing transfered back to main game handling */
-       MainMenuData*                   m_data;
+       MainMenuData*            m_data;
        /** pointer to texture source */
-       ISimpleTextureSource*   m_texture_source;
+       ISimpleTextureSource*    m_texture_source;
        /** pointer to soundmanager*/
-       ISoundManager*                  m_sound_manager;
+       ISoundManager*           m_sound_manager;
 
        /** representation of form source to be used in mainmenu formspec */
-       FormspecFormSource*             m_formspecgui;
+       FormspecFormSource*      m_formspecgui;
        /** formspec input receiver */
-       TextDestGuiEngine*              m_buttonhandler;
+       TextDestGuiEngine*       m_buttonhandler;
        /** the formspec menu */
-       GUIFormSpecMenu*                m_menu;
+       GUIFormSpecMenu*         m_menu;
 
        /** reference to kill variable managed by SIGINT handler */
-       bool&                                   m_kill;
+       bool&                    m_kill;
 
        /** variable used to abort menu and return back to main game handling */
-       bool                                    m_startgame;
+       bool                     m_startgame;
 
        /** scripting interface */
-       MainMenuScripting*              m_script;
+       MainMenuScripting*       m_script;
 
        /** script basefolder */
-       std::string                             m_scriptdir;
+       std::string              m_scriptdir;
 
        /**
         * draw background layer
@@ -237,29 +252,29 @@ class GUIEngine {
         * @param layer draw layer to specify texture
         * @param texturepath full path of texture to load
         */
-       bool setTexture(texture_layer layer,std::string texturepath);
+       bool setTexture(texture_layer layer, std::string texturepath,
+                       bool tile_image, unsigned int minsize);
 
        /**
         * download a file using curl
         * @param url url to download
         * @param target file to store to
         */
-       bool downloadFile(std::string url,std::string target);
+       static bool downloadFile(const std::string &url, const std::string &target);
 
        /** array containing pointers to current specified texture layers */
-       video::ITexture*                m_textures[TEX_LAYER_MAX];
-
-       /** draw version string in topleft corner */
-       void drawVersion();
+       image_definition m_textures[TEX_LAYER_MAX];
 
        /**
-        * specify text to be appended to version string
+        * specify text to appear as top left string
         * @param text to set
         */
-       void setTopleftText(std::string append);
+       void setTopleftText(const std::string &text);
 
        /** pointer to gui element shown at topleft corner */
        irr::gui::IGUIStaticText*       m_irr_toplefttext;
+       /** and text that is in it */
+       EnrichedString m_toplefttext;
 
        /** initialize cloud subsystem */
        void cloudInit();
@@ -271,19 +286,19 @@ class GUIEngine {
        /** internam data required for drawing clouds */
        struct clouddata {
                /** delta time since last cloud processing */
-               f32             dtime;
+               f32     dtime;
                /** absolute time of last cloud processing */
-               u32             lasttime;
+               u32     lasttime;
                /** pointer to cloud class */
-               Clouds* clouds;
+               Clouds* clouds;
                /** camera required for drawing clouds */
                scene::ICameraSceneNode* camera;
        };
 
        /** is drawing of clouds enabled atm */
-       bool                                    m_clouds_enabled;
+       bool        m_clouds_enabled;
        /** data used to draw clouds */
-       clouddata                               m_cloud;
+       clouddata   m_cloud;
 
        /** start playing a sound and return handle */
        s32 playSound(SimpleSoundSpec spec, bool looped);