From cfecb60f100671851d2c9e430cf7686f8d231727 Mon Sep 17 00:00:00 2001 From: An0n3m0us Date: Mon, 10 Jun 2019 17:04:36 +0100 Subject: [PATCH 1/4] Add reset button --- src/gui/guiKeyChangeMenu.cpp | 46 ++++++++++++++++++++++++++++++++++++ src/gui/guiKeyChangeMenu.h | 2 ++ 2 files changed, 48 insertions(+) diff --git a/src/gui/guiKeyChangeMenu.cpp b/src/gui/guiKeyChangeMenu.cpp index ca331a7d4e733..eefc95c3277f6 100644 --- a/src/gui/guiKeyChangeMenu.cpp +++ b/src/gui/guiKeyChangeMenu.cpp @@ -40,6 +40,7 @@ extern MainGameCallback *g_gamecallback; enum { GUI_ID_BACK_BUTTON = 101, GUI_ID_ABORT_BUTTON, GUI_ID_SCROLL_BAR, + GUI_ID_RESET_BUTTON, // buttons GUI_ID_KEY_FORWARD_BUTTON, GUI_ID_KEY_BACKWARD_BUTTON, @@ -229,6 +230,15 @@ void GUIKeyChangeMenu::regenerateGui(v2u32 screensize) text); delete[] text; } + + { + core::rect rect(0, 0, 100 * s, 30 * s); + rect += topleft + v2s32(10 * s, size.Y - 40 * s); + const wchar_t *text = wgettext("Reset keys"); + Environment->addButton(rect, this, GUI_ID_RESET_BUTTON, + text); + delete[] text; + } } void GUIKeyChangeMenu::drawMenu() @@ -273,6 +283,38 @@ bool GUIKeyChangeMenu::acceptInput() return true; } +bool GUIKeyChangeMenu::resetInput() +{ + int i = 0; + for (key_setting *k : key_settings) { + char keys[33][50] = {"W", "S", "A", "D", "E", "KEY_SPACE", "KEY_LSHIFT", "Q", "I", "B", "N", "Z", "KEY_F7", "KEY_F9", "K", "P", "J", "H", "M", "", "", "", "T", "KEY_F12", "R", "-", "+", "KEY_F10", "/", ".", "KEY_F1", "KEY_F2", "KEY_F3"}; + g_settings->set(k->setting_name, keys[i]); + i = i + 1; + } + + { + gui::IGUIElement *e = getElementFromId(GUI_ID_CB_AUX1_DESCENDS); + if(e && e->getType() == gui::EGUIET_CHECK_BOX) + g_settings->setBool("aux1_descends", ((gui::IGUICheckBox*)e)->isChecked()); + } + { + gui::IGUIElement *e = getElementFromId(GUI_ID_CB_DOUBLETAP_JUMP); + if(e && e->getType() == gui::EGUIET_CHECK_BOX) + g_settings->setBool("doubletap_jump", ((gui::IGUICheckBox*)e)->isChecked()); + } + { + gui::IGUIElement *e = getElementFromId(GUI_ID_CB_AUTOJUMP); + if(e && e->getType() == gui::EGUIET_CHECK_BOX) + g_settings->setBool("autojump", ((gui::IGUICheckBox*)e)->isChecked()); + } + + clearKeyCache(); + + g_gamecallback->signalKeyConfigChange(); + + return true; +} + bool GUIKeyChangeMenu::resetMenu() { if (activeKey >= 0) @@ -377,6 +419,10 @@ bool GUIKeyChangeMenu::OnEvent(const SEvent& event) case GUI_ID_ABORT_BUTTON: //abort quitMenu(); return true; + case GUI_ID_RESET_BUTTON: //reset + resetInput(); + quitMenu(); + return true; default: key_setting *k = NULL; diff --git a/src/gui/guiKeyChangeMenu.h b/src/gui/guiKeyChangeMenu.h index 0aaa05e1830c4..1c0b759dd5f0b 100644 --- a/src/gui/guiKeyChangeMenu.h +++ b/src/gui/guiKeyChangeMenu.h @@ -54,6 +54,8 @@ class GUIKeyChangeMenu : public GUIModalMenu bool acceptInput(); + bool resetInput(); + bool OnEvent(const SEvent &event); bool pausesGame() { return true; } From 6575755268d3c41fc2fb66f47054453c780e4947 Mon Sep 17 00:00:00 2001 From: An0n3m0us Date: Mon, 10 Jun 2019 17:59:39 +0100 Subject: [PATCH 2/4] Add default value for resetting keys --- src/gui/guiKeyChangeMenu.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/gui/guiKeyChangeMenu.cpp b/src/gui/guiKeyChangeMenu.cpp index eefc95c3277f6..6debaa53ed458 100644 --- a/src/gui/guiKeyChangeMenu.cpp +++ b/src/gui/guiKeyChangeMenu.cpp @@ -285,11 +285,8 @@ bool GUIKeyChangeMenu::acceptInput() bool GUIKeyChangeMenu::resetInput() { - int i = 0; for (key_setting *k : key_settings) { - char keys[33][50] = {"W", "S", "A", "D", "E", "KEY_SPACE", "KEY_LSHIFT", "Q", "I", "B", "N", "Z", "KEY_F7", "KEY_F9", "K", "P", "J", "H", "M", "", "", "", "T", "KEY_F12", "R", "-", "+", "KEY_F10", "/", ".", "KEY_F1", "KEY_F2", "KEY_F3"}; - g_settings->set(k->setting_name, keys[i]); - i = i + 1; + g_settings->remove(k->setting_name); } { From 7e6c5a8caba83b09e6029c9e0785fdaa762bf6c5 Mon Sep 17 00:00:00 2001 From: An0n3m0us Date: Sun, 16 Jun 2019 12:31:07 +0100 Subject: [PATCH 3/4] Add regenerate keys --- src/gui/guiKeyChangeMenu.cpp | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/gui/guiKeyChangeMenu.cpp b/src/gui/guiKeyChangeMenu.cpp index 6debaa53ed458..c75fc2499f48e 100644 --- a/src/gui/guiKeyChangeMenu.cpp +++ b/src/gui/guiKeyChangeMenu.cpp @@ -130,17 +130,6 @@ void GUIKeyChangeMenu::regenerateGui(v2u32 screensize) v2s32 size = DesiredRect.getSize(); v2s32 topleft(0, 0); - { - core::rect rect(0, 0, 600 * s, 40 * s); - rect += topleft + v2s32(25 * s, 3 * s); - //gui::IGUIStaticText *t = - const wchar_t *text = wgettext("Keybindings. (If this menu screws up, remove stuff from minetest.conf)"); - Environment->addStaticText(text, - rect, false, true, this, -1); - delete[] text; - //t->setTextAlignment(gui::EGUIA_CENTER, gui::EGUIA_UPPERLEFT); - } - // Build buttons v2s32 offset(25 * s, 60 * s); @@ -418,7 +407,10 @@ bool GUIKeyChangeMenu::OnEvent(const SEvent& event) return true; case GUI_ID_RESET_BUTTON: //reset resetInput(); - quitMenu(); + regenerateGui(m_screensize_old); + key_settings.clear(); + init_keys(); + //quitMenu(); return true; default: key_setting *k = NULL; From ad7733b1c7c3adc0fba2fed8caf67c6145f483d2 Mon Sep 17 00:00:00 2001 From: An0n3m0us Date: Tue, 18 Jun 2019 11:58:30 +0100 Subject: [PATCH 4/4] Fix indentation --- src/gui/guiKeyChangeMenu.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/guiKeyChangeMenu.cpp b/src/gui/guiKeyChangeMenu.cpp index c75fc2499f48e..0e1eb5905ffc5 100644 --- a/src/gui/guiKeyChangeMenu.cpp +++ b/src/gui/guiKeyChangeMenu.cpp @@ -407,9 +407,9 @@ bool GUIKeyChangeMenu::OnEvent(const SEvent& event) return true; case GUI_ID_RESET_BUTTON: //reset resetInput(); - regenerateGui(m_screensize_old); - key_settings.clear(); - init_keys(); + regenerateGui(m_screensize_old); + key_settings.clear(); + init_keys(); //quitMenu(); return true; default: