X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2FguiPauseMenu.cpp;h=e542a28e90ce63e1baed8637a483933715718b73;hb=13159c1a48690d4ede3dbabc7699ea3d49072860;hp=46bb799e68c28ac1531ee572a5e06476884e80ad;hpb=6b6c2d37ea1f9075c4fbf0d7e2d52e527e1f86aa;p=dragonfireclient.git diff --git a/src/guiPauseMenu.cpp b/src/guiPauseMenu.cpp index 46bb799e6..e542a28e9 100644 --- a/src/guiPauseMenu.cpp +++ b/src/guiPauseMenu.cpp @@ -21,14 +21,25 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "debug.h" #include "serialization.h" #include "porting.h" +#include "config.h" +#include "main.h" +#include +#include +#include +#include +#include + +#include "gettext.h" GUIPauseMenu::GUIPauseMenu(gui::IGUIEnvironment* env, gui::IGUIElement* parent, s32 id, - IrrlichtDevice *dev, - int *active_menu_count): - GUIModalMenu(env, parent, id, active_menu_count) + IGameCallback *gamecallback, + IMenuManager *menumgr, + bool simple_singleplayer_mode): + GUIModalMenu(env, parent, id, menumgr), + m_gamecallback(gamecallback), + m_simple_singleplayer_mode(simple_singleplayer_mode) { - m_dev = dev; } GUIPauseMenu::~GUIPauseMenu() @@ -58,6 +69,16 @@ void GUIPauseMenu::removeChildren() if(e != NULL) e->remove(); } + { + gui::IGUIElement *e = getElementFromId(260); + if(e != NULL) + e->remove(); + } + { + gui::IGUIElement *e = getElementFromId(261); + if(e != NULL) + e->remove(); + } } void GUIPauseMenu::regenerateGui(v2u32 screensize) @@ -85,32 +106,58 @@ void GUIPauseMenu::regenerateGui(v2u32 screensize) /* Add stuff */ + const s32 btn_height = 30; + const s32 btn_gap = 20; + const s32 btn_num = m_simple_singleplayer_mode ? 3 : 4; + s32 btn_y = size.Y/2-((btn_num*btn_height+(btn_num-1)*btn_gap))/2; + changeCtype(""); { - core::rect rect(0, 0, 140, 30); - rect = rect + v2s32(size.X/2-140/2, size.Y/2-30/2-25); - Environment->addButton(rect, this, 256, L"Continue"); + core::rect rect(0, 0, 140, btn_height); + rect = rect + v2s32(size.X/2-140/2, btn_y); + Environment->addButton(rect, this, 256, + wgettext("Continue")); } + btn_y += btn_height + btn_gap; + if(!m_simple_singleplayer_mode) { - core::rect rect(0, 0, 140, 30); - rect = rect + v2s32(size.X/2-140/2, size.Y/2-30/2+25); - Environment->addButton(rect, this, 257, L"Exit"); + { + core::rect rect(0, 0, 140, btn_height); + rect = rect + v2s32(size.X/2-140/2, btn_y); + Environment->addButton(rect, this, 261, + wgettext("Change Password")); + } + btn_y += btn_height + btn_gap; + } + { + core::rect rect(0, 0, 140, btn_height); + rect = rect + v2s32(size.X/2-140/2, btn_y); + Environment->addButton(rect, this, 260, + wgettext("Exit to Menu")); } + btn_y += btn_height + btn_gap; + { + core::rect rect(0, 0, 140, btn_height); + rect = rect + v2s32(size.X/2-140/2, btn_y); + Environment->addButton(rect, this, 257, + wgettext("Exit to OS")); + } + { core::rect rect(0, 0, 180, 240); rect = rect + v2s32(size.X/2 + 90, size.Y/2-rect.getHeight()/2); - const wchar_t *text = - L"Keys:\n" - L"- WASD: Walk\n" - L"- Mouse left: dig blocks\n" - L"- Mouse right: place blocks\n" - L"- Mouse wheel: select item\n" - L"- R: Toggle viewing all loaded chunks\n" - L"- I: Inventory menu\n" - L"- ESC: This menu\n" - L"- T: Chat\n" - L"\n" - L"To generate a new map, remove the map directory.\n"; - Environment->addStaticText(text, rect, false, true, this, 258); + Environment->addStaticText(chartowchar_t(gettext( + "Default Controls:\n" + "- WASD: Walk\n" + "- Mouse left: dig/hit\n" + "- Mouse right: place/use\n" + "- Mouse wheel: select item\n" + "- 0...9: select item\n" + "- Shift: sneak\n" + "- R: Toggle viewing all loaded chunks\n" + "- I: Inventory menu\n" + "- ESC: This menu\n" + "- T: Chat\n" + )), rect, false, true, this, 258); } { core::rect rect(0, 0, 180, 220); @@ -122,21 +169,29 @@ void GUIPauseMenu::regenerateGui(v2u32 screensize) max_texture_size = driver->getMaxTextureSize(); } - wchar_t text[200]; + /*wchar_t text[200]; swprintf(text, 200, L"Minetest-c55\n" L"by Perttu Ahola\n" L"celeron55@gmail.com\n\n" - L"SER_FMT_VER_HIGHEST=%i\n" - L"userdata path = \n" + SWPRINTF_CHARSTRING L"\n" + L"userdata path = " SWPRINTF_CHARSTRING , - (int)SER_FMT_VER_HIGHEST, - porting::path_userdata.c_str() - ); + BUILD_INFO, + porting::path_user.c_str() + );*/ + + std::ostringstream os; + os<<"Minetest\n"; + os<<"by Perttu Ahola and contributors\n"; + os<<"celeron55@gmail.com\n"; + os<addStaticText(text, rect, false, true, this, 259); + Environment->addStaticText(narrow_to_wide(os.str()).c_str(), rect, false, true, this, 259); } + changeCtype("C"); } void GUIPauseMenu::drawMenu() @@ -154,12 +209,21 @@ void GUIPauseMenu::drawMenu() bool GUIPauseMenu::OnEvent(const SEvent& event) { + if(event.EventType==EET_KEY_INPUT_EVENT) { - if(event.KeyInput.Key==KEY_ESCAPE && event.KeyInput.PressedDown) + if(event.KeyInput.PressedDown) { - quitMenu(); - return true; + if(event.KeyInput.Key==KEY_ESCAPE) + { + quitMenu(); + return true; + } + else if(event.KeyInput.Key==KEY_RETURN) + { + quitMenu(); + return true; + } } } if(event.EventType==EET_GUI_EVENT) @@ -181,10 +245,20 @@ bool GUIPauseMenu::OnEvent(const SEvent& event) { case 256: // continue quitMenu(); - break; + // ALWAYS return immediately after quitMenu() + return true; + case 261: + quitMenu(); + m_gamecallback->changePassword(); + return true; + case 260: // disconnect + m_gamecallback->disconnect(); + quitMenu(); + return true; case 257: // exit - m_dev->closeDevice(); - break; + m_gamecallback->exitToOS(); + quitMenu(); + return true; } } }