Inventory transparency; very loosely based on sapier's commits.
[oweals/minetest.git] / src / guiPauseMenu.cpp
index ede42bb1e36b5ec7bead96fc7b49127afa86afb6..eae887a4ceaab048b3ea9a19d2720f9c4a953f2e 100644 (file)
@@ -20,14 +20,19 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "guiPauseMenu.h"\r
 #include "debug.h"\r
 #include "serialization.h"\r
+#include "porting.h"\r
+#include "config.h"\r
+#include "main.h"\r
+\r
+#include "gettext.h"\r
 \r
 GUIPauseMenu::GUIPauseMenu(gui::IGUIEnvironment* env,\r
                gui::IGUIElement* parent, s32 id,\r
-               IrrlichtDevice *dev,\r
-               int *active_menu_count):\r
-       GUIModalMenu(env, parent, id, active_menu_count)\r
+               IGameCallback *gamecallback,\r
+               IMenuManager *menumgr):\r
+       GUIModalMenu(env, parent, id, menumgr)\r
 {\r
-       m_dev = dev;\r
+       m_gamecallback = gamecallback;\r
 }\r
 \r
 GUIPauseMenu::~GUIPauseMenu()\r
@@ -57,6 +62,16 @@ void GUIPauseMenu::removeChildren()
                if(e != NULL)\r
                        e->remove();\r
        }\r
+       {\r
+               gui::IGUIElement *e = getElementFromId(260);\r
+               if(e != NULL)\r
+                       e->remove();\r
+       }\r
+       {\r
+               gui::IGUIElement *e = getElementFromId(261);\r
+               if(e != NULL)\r
+                       e->remove();\r
+       }\r
 }\r
 \r
 void GUIPauseMenu::regenerateGui(v2u32 screensize)\r
@@ -84,32 +99,55 @@ void GUIPauseMenu::regenerateGui(v2u32 screensize)
        /*\r
                Add stuff\r
        */\r
+       const s32 btn_height = 30;\r
+       const s32 btn_gap = 20;\r
+       const s32 btn_num = 4;\r
+       s32 btn_y = size.Y/2-((btn_num*btn_height+(btn_num-1)*btn_gap))/2;\r
+       changeCtype("");\r
+       {\r
+               core::rect<s32> rect(0, 0, 140, btn_height);\r
+               rect = rect + v2s32(size.X/2-140/2, btn_y);\r
+               Environment->addButton(rect, this, 256,\r
+                       wgettext("Continue"));\r
+       }\r
+       btn_y += btn_height + btn_gap;\r
+       {\r
+               core::rect<s32> rect(0, 0, 140, btn_height);\r
+               rect = rect + v2s32(size.X/2-140/2, btn_y);\r
+               Environment->addButton(rect, this, 261,\r
+                       wgettext("Change Password"));\r
+       }\r
+       btn_y += btn_height + btn_gap;\r
        {\r
-               core::rect<s32> rect(0, 0, 140, 30);\r
-               rect = rect + v2s32(size.X/2-140/2, size.Y/2-30/2-25);\r
-               Environment->addButton(rect, this, 256, L"Continue");\r
+               core::rect<s32> rect(0, 0, 140, btn_height);\r
+               rect = rect + v2s32(size.X/2-140/2, btn_y);\r
+               Environment->addButton(rect, this, 260,\r
+                       wgettext("Disconnect"));\r
        }\r
+       btn_y += btn_height + btn_gap;\r
        {\r
-               core::rect<s32> rect(0, 0, 140, 30);\r
-               rect = rect + v2s32(size.X/2-140/2, size.Y/2-30/2+25);\r
-               Environment->addButton(rect, this, 257, L"Exit");\r
+               core::rect<s32> rect(0, 0, 140, btn_height);\r
+               rect = rect + v2s32(size.X/2-140/2, btn_y);\r
+               Environment->addButton(rect, this, 257,\r
+                       wgettext("Exit to OS"));\r
        }\r
+\r
        {\r
                core::rect<s32> rect(0, 0, 180, 240);\r
                rect = rect + v2s32(size.X/2 + 90, size.Y/2-rect.getHeight()/2);\r
-               const wchar_t *text =\r
-               L"Keys:\n"\r
-               L"- WASD: Walk\n"\r
-               L"- Mouse left: dig blocks\n"\r
-               L"- Mouse right: place blocks\n"\r
-               L"- Mouse wheel: select item\n"\r
-               L"- R: Toggle viewing all loaded chunks\n"\r
-               L"- I: Inventory menu\n"\r
-               L"- ESC: This menu\n"\r
-               L"- T: Chat\n"\r
-               L"\n"\r
-               L"To generate a new map, remove the map directory.\n";\r
-               Environment->addStaticText(text, rect, false, true, this, 258);\r
+               Environment->addStaticText(chartowchar_t(gettext(\r
+               "Default Controls:\n"\r
+               "- WASD: Walk\n"\r
+               "- Mouse left: dig/hit\n"\r
+               "- Mouse right: place/use\n"\r
+               "- Mouse wheel: select item\n"\r
+               "- 0...9: select item\n"\r
+               "- Shift: sneak\n"\r
+               "- R: Toggle viewing all loaded chunks\n"\r
+               "- I: Inventory menu\n"\r
+               "- ESC: This menu\n"\r
+               "- T: Chat\n"\r
+               )), rect, false, true, this, 258);\r
        }\r
        {\r
                core::rect<s32> rect(0, 0, 180, 220);\r
@@ -121,21 +159,29 @@ void GUIPauseMenu::regenerateGui(v2u32 screensize)
                        max_texture_size = driver->getMaxTextureSize();\r
                }\r
 \r
-               wchar_t text[200];\r
+               /*wchar_t text[200];\r
                swprintf(text, 200,\r
                                L"Minetest-c55\n"\r
                                L"by Perttu Ahola\n"\r
                                L"celeron55@gmail.com\n\n"\r
-                               L"SER_FMT_VER_HIGHEST=%i\n"\r
-                               L"max_texture_size=\n(%i,%i)\n"\r
+                               SWPRINTF_CHARSTRING L"\n"\r
+                               L"userdata path = "\r
+                               SWPRINTF_CHARSTRING\r
                                ,\r
-                               (int)SER_FMT_VER_HIGHEST,\r
-                               max_texture_size.X,\r
-                               max_texture_size.Y\r
-               );\r
+                               BUILD_INFO,\r
+                               porting::path_userdata.c_str()\r
+               );*/\r
+\r
+               std::ostringstream os;\r
+               os<<"Minetest\n";\r
+               os<<"by Perttu Ahola and contributors\n";\r
+               os<<"celeron55@gmail.com\n";\r
+               os<<BUILD_INFO<<"\n";\r
+               os<<"ud_path = "<<wrap_rows(porting::path_userdata, 20)<<"\n";\r
        \r
-               Environment->addStaticText(text, rect, false, true, this, 259);\r
+               Environment->addStaticText(narrow_to_wide(os.str()).c_str(), rect, false, true, this, 259);\r
        }\r
+       changeCtype("C");\r
 }\r
 \r
 void GUIPauseMenu::drawMenu()\r
@@ -153,12 +199,21 @@ void GUIPauseMenu::drawMenu()
 \r
 bool GUIPauseMenu::OnEvent(const SEvent& event)\r
 {\r
+\r
        if(event.EventType==EET_KEY_INPUT_EVENT)\r
        {\r
-               if(event.KeyInput.Key==KEY_ESCAPE && event.KeyInput.PressedDown)\r
+               if(event.KeyInput.PressedDown)\r
                {\r
-                       quitMenu();\r
-                       return true;\r
+                       if(event.KeyInput.Key==KEY_ESCAPE)\r
+                       {\r
+                               quitMenu();\r
+                               return true;\r
+                       }\r
+                       else if(event.KeyInput.Key==KEY_RETURN)\r
+                       {\r
+                               quitMenu();\r
+                               return true;\r
+                       }\r
                }\r
        }\r
        if(event.EventType==EET_GUI_EVENT)\r
@@ -180,10 +235,20 @@ bool GUIPauseMenu::OnEvent(const SEvent& event)
                        {\r
                        case 256: // continue\r
                                quitMenu();\r
-                               break;\r
+                               // ALWAYS return immediately after quitMenu()\r
+                               return true;\r
+                       case 261:\r
+                               quitMenu();\r
+                               m_gamecallback->changePassword();\r
+                               return true;\r
+                       case 260: // disconnect\r
+                               m_gamecallback->disconnect();\r
+                               quitMenu();\r
+                               return true;\r
                        case 257: // exit\r
-                               m_dev->closeDevice();\r
-                               break;\r
+                               m_gamecallback->exitToOS();\r
+                               quitMenu();\r
+                               return true;\r
                        }\r
                }\r
        }\r