X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fmainmenumanager.h;h=17133b1642253a8a022c4e095f9e72a45be09bb9;hb=cdc538e0a242167cd7031d40670d2d4464b87f2c;hp=28fe1ac116a6707906aebe7fec5ffa72ad3e5ddc;hpb=1cc40c0a7c260f0562572bc99f39a666a12f1b09;p=minetest.git diff --git a/src/mainmenumanager.h b/src/mainmenumanager.h index 28fe1ac11..17133b164 100644 --- a/src/mainmenumanager.h +++ b/src/mainmenumanager.h @@ -31,12 +31,15 @@ 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::IGUIEnvironment *guienv; extern gui::IGUIStaticText *guiroot; // Handler for the modal menus @@ -44,27 +47,27 @@ extern gui::IGUIStaticText *guiroot; class MainMenuManager : public IMenuManager { public: - virtual void createdMenu(GUIModalMenu *menu) + virtual void createdMenu(gui::IGUIElement *menu) { - for(std::list::iterator + for(std::list::iterator i = m_stack.begin(); i != m_stack.end(); ++i) { assert(*i != menu); } - if(m_stack.size() != 0) + if(!m_stack.empty()) m_stack.back()->setVisible(false); m_stack.push_back(menu); } - virtual void deletingMenu(GUIModalMenu *menu) + virtual void deletingMenu(gui::IGUIElement *menu) { // Remove all entries if there are duplicates bool removed_entry; do{ removed_entry = false; - for(std::list::iterator + for(std::list::iterator i = m_stack.begin(); i != m_stack.end(); ++i) { @@ -81,17 +84,17 @@ 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.size() != 0) - return m_stack.back()->preprocessEvent(event); - else + if (m_stack.empty()) return false; + GUIModalMenu *mm = dynamic_cast(m_stack.back()); + return mm && mm->preprocessEvent(event); } u32 menuCount() @@ -101,16 +104,17 @@ class MainMenuManager : public IMenuManager bool pausesGame() { - for(std::list::iterator + for(std::list::iterator i = m_stack.begin(); i != m_stack.end(); ++i) { - if((*i)->pausesGame()) + GUIModalMenu *mm = dynamic_cast(*i); + if (mm && mm->pausesGame()) return true; } return false; } - std::list m_stack; + std::list m_stack; }; extern MainMenuManager g_menumgr; @@ -124,7 +128,9 @@ 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) { } @@ -151,11 +157,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; };