Add in-game key change menu

This commit is contained in:
Mushiden 2014-09-21 00:21:11 -03:00 committed by ShadowNinja
parent b98e8d6da8
commit 7b548cd2b5
2 changed files with 25 additions and 0 deletions

@ -30,6 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "server.h" #include "server.h"
#include "guiPasswordChange.h" #include "guiPasswordChange.h"
#include "guiVolumeChange.h" #include "guiVolumeChange.h"
#include "guiKeyChangeMenu.h"
#include "guiFormSpecMenu.h" #include "guiFormSpecMenu.h"
#include "tool.h" #include "tool.h"
#include "guiChatConsole.h" #include "guiChatConsole.h"
@ -151,6 +152,11 @@ struct LocalFormspecHandler : public TextDest
return; return;
} }
if (fields.find("btn_key_config") != fields.end()) {
g_gamecallback->keyConfig();
return;
}
if (fields.find("btn_exit_menu") != fields.end()) { if (fields.find("btn_exit_menu") != fields.end()) {
g_gamecallback->disconnect(); g_gamecallback->disconnect();
return; return;
@ -1044,6 +1050,8 @@ static void show_pause_menu(GUIFormSpecMenu** cur_formspec,
os << "button_exit[4," << (ypos++) << ";3,0.5;btn_sound;" os << "button_exit[4," << (ypos++) << ";3,0.5;btn_sound;"
<< wide_to_narrow(wstrgettext("Sound Volume")) << "]"; << 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;" os << "button_exit[4," << (ypos++) << ";3,0.5;btn_exit_menu;"
<< wide_to_narrow(wstrgettext("Exit to Menu")) << "]"; << wide_to_narrow(wstrgettext("Exit to Menu")) << "]";
os << "button_exit[4," << (ypos++) << ";3,0.5;btn_exit_os;" 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; 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 */ /* Process TextureSource's queue */
tsrc->processQueue(); tsrc->processQueue();

@ -31,6 +31,7 @@ class IGameCallback
{ {
public: public:
virtual void exitToOS() = 0; virtual void exitToOS() = 0;
virtual void keyConfig() = 0;
virtual void disconnect() = 0; virtual void disconnect() = 0;
virtual void changePassword() = 0; virtual void changePassword() = 0;
virtual void changeVolume() = 0; virtual void changeVolume() = 0;
@ -124,6 +125,7 @@ public:
disconnect_requested(false), disconnect_requested(false),
changepassword_requested(false), changepassword_requested(false),
changevolume_requested(false), changevolume_requested(false),
keyconfig_requested(false),
shutdown_requested(false), shutdown_requested(false),
device(a_device) device(a_device)
{ {
@ -152,9 +154,16 @@ public:
changevolume_requested = true; changevolume_requested = true;
} }
virtual void keyConfig()
{
keyconfig_requested = true;
}
bool disconnect_requested; bool disconnect_requested;
bool changepassword_requested; bool changepassword_requested;
bool changevolume_requested; bool changevolume_requested;
bool keyconfig_requested;
bool shutdown_requested; bool shutdown_requested;
IrrlichtDevice *device; IrrlichtDevice *device;
}; };