Add in-game key change menu
authorMushiden <mushiden@hotmail.com>
Sun, 21 Sep 2014 03:21:11 +0000 (00:21 -0300)
committerShadowNinja <shadowninja@minetest.net>
Tue, 7 Oct 2014 21:24:09 +0000 (17:24 -0400)
src/game.cpp
src/mainmenumanager.h

index 12bc695a61fc69e6cb76ac93d8355d9c23b0f7b8..774d8f03e086423ad745a1c185192399c4f65ef6 100644 (file)
@@ -30,6 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "server.h"
 #include "guiPasswordChange.h"
 #include "guiVolumeChange.h"
+#include "guiKeyChangeMenu.h"
 #include "guiFormSpecMenu.h"
 #include "tool.h"
 #include "guiChatConsole.h"
@@ -151,6 +152,11 @@ struct LocalFormspecHandler : public TextDest
                                return;
                        }
 
+                       if (fields.find("btn_key_config") != fields.end()) {
+                               g_gamecallback->keyConfig();
+                               return;
+                       }
+
                        if (fields.find("btn_exit_menu") != fields.end()) {
                                g_gamecallback->disconnect();
                                return;
@@ -1044,6 +1050,8 @@ static void show_pause_menu(GUIFormSpecMenu** cur_formspec,
 
        os              << "button_exit[4," << (ypos++) << ";3,0.5;btn_sound;"
                                        << wide_to_narrow(wstrgettext("Sound Volume")) << "]";
+       os              << "button_exit[4," << (ypos++) << ";3,0.5;btn_key_config;"
+                                       << wide_to_narrow(wstrgettext("Change Keys"))  << "]";
        os              << "button_exit[4," << (ypos++) << ";3,0.5;btn_exit_menu;"
                                        << wide_to_narrow(wstrgettext("Exit to Menu")) << "]";
        os              << "button_exit[4," << (ypos++) << ";3,0.5;btn_exit_os;"
@@ -1877,6 +1885,14 @@ void the_game(bool &kill, bool random_input, InputHandler *input,
                        g_gamecallback->changevolume_requested = false;
                }
 
+               if(g_gamecallback->keyconfig_requested)
+               {
+                       (new GUIKeyChangeMenu(guienv, guiroot, -1,
+                               &g_menumgr))->drop();
+                       g_gamecallback->keyconfig_requested = false;
+               }
+
+
                /* Process TextureSource's queue */
                tsrc->processQueue();
 
index 28fe1ac116a6707906aebe7fec5ffa72ad3e5ddc..56ba4012908ef909f226ed82104ae6989ef8399a 100644 (file)
@@ -31,6 +31,7 @@ class IGameCallback
 {
 public:
        virtual void exitToOS() = 0;
+       virtual void keyConfig() = 0;
        virtual void disconnect() = 0;
        virtual void changePassword() = 0;
        virtual void changeVolume() = 0;
@@ -124,6 +125,7 @@ public:
                disconnect_requested(false),
                changepassword_requested(false),
                changevolume_requested(false),
+               keyconfig_requested(false),
                shutdown_requested(false),
                device(a_device)
        {
@@ -151,10 +153,17 @@ public:
        {
                changevolume_requested = true;
        }
+
+       virtual void keyConfig()
+       {
+               keyconfig_requested = true;
+       }
+
        
        bool disconnect_requested;
        bool changepassword_requested;
        bool changevolume_requested;
+       bool keyconfig_requested;
        bool shutdown_requested;
        IrrlichtDevice *device;
 };