X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fmainmenumanager.h;h=6f8aa91376ffcf8a350eea80f42b04f212bdc4c0;hb=8aaae7db05917dbbedebbd1b5616db976dfc2e8e;hp=a3133686bb69e32735f6d336288785f45a0710cc;hpb=6a1670dbc31cc0e44178bbd9ad34ff0d5981a060;p=dragonfireclient.git diff --git a/src/mainmenumanager.h b/src/mainmenumanager.h index a3133686b..6f8aa9137 100644 --- a/src/mainmenumanager.h +++ b/src/mainmenumanager.h @@ -25,10 +25,21 @@ with this program; if not, write to the Free Software Foundation, Inc., */ #include "debug.h" // assert #include "modalMenu.h" -#include "guiPauseMenu.h" //For IGameCallback #include -extern gui::IGUIEnvironment* guienv; +class IGameCallback +{ +public: + virtual void exitToOS() = 0; + virtual void keyConfig() = 0; + virtual void disconnect() = 0; + virtual void changePassword() = 0; + virtual void changeVolume() = 0; + + virtual void signalKeyConfigChange() = 0; +}; + +extern gui::IGUIEnvironment *guienv; extern gui::IGUIStaticText *guiroot; // Handler for the modal menus @@ -45,7 +56,7 @@ class MainMenuManager : public IMenuManager assert(*i != menu); } - if(m_stack.size() != 0) + if(!m_stack.empty()) m_stack.back()->setVisible(false); m_stack.push_back(menu); } @@ -73,15 +84,35 @@ class MainMenuManager : public IMenuManager assert(*i == menu); m_stack.erase(i);*/ - if(m_stack.size() != 0) + if(!m_stack.empty()) m_stack.back()->setVisible(true); } + // Returns true to prevent further processing + virtual bool preprocessEvent(const SEvent& event) + { + if(!m_stack.empty()) + return m_stack.back()->preprocessEvent(event); + else + return false; + } + u32 menuCount() { return m_stack.size(); } + bool pausesGame() + { + for(std::list::iterator + i = m_stack.begin(); i != m_stack.end(); ++i) + { + if((*i)->pausesGame()) + return true; + } + return false; + } + std::list m_stack; }; @@ -96,13 +127,19 @@ class MainGameCallback : public IGameCallback disconnect_requested(false), changepassword_requested(false), changevolume_requested(false), + keyconfig_requested(false), + shutdown_requested(false), + keyconfig_changed(false), device(a_device) { } virtual void exitToOS() { + shutdown_requested = true; +#ifndef __ANDROID__ device->closeDevice(); +#endif } virtual void disconnect() @@ -119,10 +156,26 @@ class MainGameCallback : public IGameCallback { changevolume_requested = true; } + + virtual void keyConfig() + { + keyconfig_requested = true; + } + + virtual void signalKeyConfigChange() + { + keyconfig_changed = true; + } + bool disconnect_requested; bool changepassword_requested; bool changevolume_requested; + bool keyconfig_requested; + bool shutdown_requested; + + bool keyconfig_changed; + IrrlichtDevice *device; };