X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fmain.h;h=450525c26e2d53f37433f2e3ad1c6eefdabed259;hb=7cfb71385d00d1cbbbfd9c76f6c01adafa9e648a;hp=3d676bd437fe79e99407d846eedbb5c81ddcd9d7;hpb=571fb14f9480a0fd70d7cfeb0484c9513153c33a;p=minetest.git diff --git a/src/main.h b/src/main.h index 3d676bd43..450525c26 100644 --- a/src/main.h +++ b/src/main.h @@ -20,23 +20,22 @@ with this program; if not, write to the Free Software Foundation, Inc., #ifndef MAIN_HEADER #define MAIN_HEADER -#include -extern std::string getTimestamp(); -#define DTIME (getTimestamp()+": ") +// Settings +#include "utility.h" +extern Settings g_settings; -#include +// This makes and maps textures +#include "tile.h" +extern ITextureSource *g_texturesource; -extern JMutex g_range_mutex; -extern s16 g_viewing_range_nodes; -//extern s16 g_actual_viewing_range_nodes; -extern bool g_viewing_range_all; +// Global profiler +#include "profiler.h" +extern Profiler g_profiler; -// Settings -extern Settings g_settings; +// Debug streams #include -// Debug streams extern std::ostream *dout_con_ptr; extern std::ostream *derr_con_ptr; extern std::ostream *dout_client_ptr; @@ -51,15 +50,105 @@ extern std::ostream *derr_server_ptr; #define dout_server (*dout_server_ptr) #define derr_server (*derr_server_ptr) -// TODO: Move somewhere else? materials.h? -// This header is only for MATERIALS_COUNT -#include "mapnode.h" -extern video::SMaterial g_materials[MATERIALS_COUNT]; - -#include "utility.h" -extern TextureCache g_texturecache; +/* + All kinds of stuff that needs to be exposed from main.cpp +*/ -extern IrrlichtDevice *g_device; +#include "modalMenu.h" +#include "guiPauseMenu.h" //For IGameCallback + +extern gui::IGUIEnvironment* guienv; +extern gui::IGUIStaticText *guiroot; + +// Handler for the modal menus + +class MainMenuManager : public IMenuManager +{ +public: + virtual void createdMenu(GUIModalMenu *menu) + { + for(core::list::Iterator + i = m_stack.begin(); + i != m_stack.end(); i++) + { + assert(*i != menu); + } + + if(m_stack.size() != 0) + (*m_stack.getLast())->setVisible(false); + m_stack.push_back(menu); + } + + virtual void deletingMenu(GUIModalMenu *menu) + { + // Remove all entries if there are duplicates + bool removed_entry; + do{ + removed_entry = false; + for(core::list::Iterator + i = m_stack.begin(); + i != m_stack.end(); i++) + { + if(*i == menu) + { + m_stack.erase(i); + removed_entry = true; + break; + } + } + }while(removed_entry); + + /*core::list::Iterator i = m_stack.getLast(); + assert(*i == menu); + m_stack.erase(i);*/ + + if(m_stack.size() != 0) + (*m_stack.getLast())->setVisible(true); + } + + u32 menuCount() + { + return m_stack.size(); + } + + core::list m_stack; +}; + +extern MainMenuManager g_menumgr; + +extern bool noMenuActive(); + +class MainGameCallback : public IGameCallback +{ +public: + MainGameCallback(IrrlichtDevice *a_device): + disconnect_requested(false), + changepassword_requested(false), + device(a_device) + { + } + + virtual void exitToOS() + { + device->closeDevice(); + } + + virtual void disconnect() + { + disconnect_requested = true; + } + + virtual void changePassword() + { + changepassword_requested = true; + } + + bool disconnect_requested; + bool changepassword_requested; + IrrlichtDevice *device; +}; + +extern MainGameCallback *g_gamecallback; #endif