X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fmain.h;h=b2dee149469e5bbcc84cd94b7debfad7de347322;hb=0931d4b7ff95dc9b51bee28851c3780b2648ffd0;hp=59ef0ff031bd1db8575fd85d94dab24156a76da2;hpb=24c4b7c68d283a4d1de72a3eb68f1268f1fe34e3;p=dragonfireclient.git diff --git a/src/main.h b/src/main.h index 59ef0ff03..b2dee1494 100644 --- a/src/main.h +++ b/src/main.h @@ -1,24 +1,41 @@ /* -(c) 2010 Perttu Ahola +Minetest-c55 +Copyright (C) 2010 celeron55, Perttu Ahola + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #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 +class ITextureSource; +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; + +// Debug streams #include -// Debug streams extern std::ostream *dout_con_ptr; extern std::ostream *derr_con_ptr; extern std::ostream *dout_client_ptr; @@ -33,13 +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]; -//extern video::SMaterial g_mesh_materials[3]; +/* + All kinds of stuff that needs to be exposed from main.cpp +*/ + +#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 IrrlichtDevice *g_device; +extern MainGameCallback *g_gamecallback; #endif