]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Quick menu: an in-game menu that shows commands/aliases (can be grouped in submenus...
authorterencehill <piuntn@gmail.com>
Thu, 3 Nov 2011 12:42:38 +0000 (13:42 +0100)
committerterencehill <piuntn@gmail.com>
Sun, 6 Nov 2011 10:58:23 +0000 (11:58 +0100)
14 files changed:
_hud_descriptions.cfg
defaultXonotic.cfg
hud_luminos.cfg
hud_luminos_minimal.cfg
hud_luminos_minimal_xhair.cfg
hud_luminos_old.cfg
hud_nexuiz.cfg
keybinds.txt
qcsrc/client/Main.qc
qcsrc/client/autocvars.qh
qcsrc/client/hud.qc
qcsrc/client/hud.qh
qcsrc/common/constants.qh
qcsrc/common/util.qh

index 061720a844f8b9dc7cb5ee8c4d8cb33c988e7059..c9ed70c5115665147c3166e4e475f2bae818caf9 100644 (file)
@@ -287,3 +287,13 @@ seta hud_panel_centerprint_fade_subsequent_passtwo "" "division factor for the s
 seta hud_panel_centerprint_fade_subsequent_passtwo_minalpha "" "minimum factor that the second pass can fade to"
 seta hud_panel_centerprint_fade_subsequent_minfontsize "" "minimum factor for the font size from the subsequent fading effects"
 seta hud_panel_centerprint_fade_minfontsize "" "minimum factor for the font size from the fading in/out effects"
+
+seta hud_panel_quickmenu "" "enable/disable this panel"
+seta hud_panel_quickmenu_pos "" "position of this base of the panel"
+seta hud_panel_quickmenu_size "" "size of this panel"
+seta hud_panel_quickmenu_bg "" "if set to something else than \"\" = override default background"
+seta hud_panel_quickmenu_bg_color "" "if set to something else than \"\" = override default panel background color"
+seta hud_panel_quickmenu_bg_color_team "" "override panel color with team color in team based games"
+seta hud_panel_quickmenu_bg_alpha "" "if set to something else than \"\" = override default panel background alpha"
+seta hud_panel_quickmenu_bg_border "" "if set to something else than \"\" = override default size of border around the background"
+seta hud_panel_quickmenu_bg_padding "" "if set to something else than \"\" = override default padding of contents from border"
index feee0e75f4d539944b18fca96692303f325d2884..2df3aba93275c0cd724f2d5d6cc68f15dd9bc631 100644 (file)
@@ -1061,6 +1061,8 @@ bind F11 disconnect
 bind F12 screenshot
 bind F4 ready
 bind ALT +showaccuracy
+alias quickmenu "cl_cmd hud_panel_quickmenu"
+bind v quickmenu
 
 // Gamepad defaults. Tested with Logitech Rumblepad 2, I hope similar ones works as well.
 bind JOY1 "+crouch"
index f32279f2b9b1d36c06a97512dbd3048037d093a9..d6d7347f21c22e60f69fa1627aba13aee3f18f7a 100644 (file)
@@ -23,7 +23,7 @@ seta hud_progressbar_speed_color "1 0.75 0"
 seta hud_progressbar_acceleration_color "0.5 0.75 1" 
 seta hud_progressbar_acceleration_neg_color "0.125 0.25 0.5" 
 
-seta _hud_panelorder "15 12 9 10 5 6 14 0 7 4 11 2 1 3 8 13 16 "
+seta _hud_panelorder "15 12 9 10 5 6 14 0 7 4 11 2 1 3 8 13 16 17 "
 
 seta hud_configure_grid "1"
 seta hud_configure_grid_xsize "0.010000"
@@ -282,4 +282,14 @@ seta hud_panel_centerprint_fade_subsequent_passtwo_minalpha "0.5"
 seta hud_panel_centerprint_fade_subsequent_minfontsize "0.75"
 seta hud_panel_centerprint_fade_minfontsize "0"
 
+seta hud_panel_quickmenu 1
+seta hud_panel_quickmenu_pos "0.000000 0.600000"
+seta hud_panel_quickmenu_size "0.18000 0.30000"
+seta hud_panel_quickmenu_bg ""
+seta hud_panel_quickmenu_bg_color ""
+seta hud_panel_quickmenu_bg_color_team ""
+seta hud_panel_quickmenu_bg_alpha ""
+seta hud_panel_quickmenu_bg_border ""
+seta hud_panel_quickmenu_bg_padding ""
+
 menu_sync
index 52a7d96c1327844d54a461e89f6305f0c4c95b7f..4b9b2fabe1b56705d7faf8d96b00c0121fe12fa8 100644 (file)
@@ -23,7 +23,7 @@ seta hud_progressbar_speed_color "1 0.75 0"
 seta hud_progressbar_acceleration_color "0.5 0.75 1" 
 seta hud_progressbar_acceleration_neg_color "0.125 0.25 0.5" 
 
-seta _hud_panelorder "10 3 0 14 6 9 13 4 1 2 11 12 7 5 8 15 16 "
+seta _hud_panelorder "10 3 0 14 6 9 13 4 1 2 11 12 7 5 8 15 16 17 "
 
 seta hud_configure_grid "1"
 seta hud_configure_grid_xsize "0.010000"
@@ -282,4 +282,14 @@ seta hud_panel_centerprint_fade_subsequent_passtwo_minalpha "0.5"
 seta hud_panel_centerprint_fade_subsequent_minfontsize "0.75"
 seta hud_panel_centerprint_fade_minfontsize "0"
 
+seta hud_panel_quickmenu 1
+seta hud_panel_quickmenu_pos "0.000000 0.600000"
+seta hud_panel_quickmenu_size "0.18000 0.30000"
+seta hud_panel_quickmenu_bg ""
+seta hud_panel_quickmenu_bg_color ""
+seta hud_panel_quickmenu_bg_color_team ""
+seta hud_panel_quickmenu_bg_alpha ""
+seta hud_panel_quickmenu_bg_border ""
+seta hud_panel_quickmenu_bg_padding ""
+
 menu_sync
index 2d5e07600c09265f849b888e6584ab75c87994c1..9e18328f9ae94a3eb803e562f076f7f83d3d106d 100644 (file)
@@ -23,7 +23,7 @@ seta hud_progressbar_speed_color "1 0.75 0"
 seta hud_progressbar_acceleration_color "0.5 0.75 1" 
 seta hud_progressbar_acceleration_neg_color "0.125 0.25 0.5" 
 
-seta _hud_panelorder "15 3 1 2 11 10 0 14 6 9 13 4 12 7 5 8 16 "
+seta _hud_panelorder "15 3 1 2 11 10 0 14 6 9 13 4 12 7 5 8 16 17 "
 
 seta hud_configure_grid "1"
 seta hud_configure_grid_xsize "0.010000"
@@ -282,4 +282,14 @@ seta hud_panel_centerprint_fade_subsequent_passtwo_minalpha "0.5"
 seta hud_panel_centerprint_fade_subsequent_minfontsize "0.75"
 seta hud_panel_centerprint_fade_minfontsize "0"
 
+seta hud_panel_quickmenu 1
+seta hud_panel_quickmenu_pos "0.000000 0.600000"
+seta hud_panel_quickmenu_size "0.18000 0.30000"
+seta hud_panel_quickmenu_bg ""
+seta hud_panel_quickmenu_bg_color ""
+seta hud_panel_quickmenu_bg_color_team ""
+seta hud_panel_quickmenu_bg_alpha ""
+seta hud_panel_quickmenu_bg_border ""
+seta hud_panel_quickmenu_bg_padding ""
+
 menu_sync
index fe7f66085519cc3ed94cf1e08cd44390e3b2ccd3..66bb42d9b193d0aaa7b301251cadf0788037e1b9 100644 (file)
@@ -23,7 +23,7 @@ seta hud_progressbar_speed_color "1 0.75 0"
 seta hud_progressbar_acceleration_color "0.5 0.75 1" 
 seta hud_progressbar_acceleration_neg_color "0.125 0.25 0.5" 
 
-seta _hud_panelorder "15 10 9 6 8 14 5 0 4 13 2 7 1 3 11 12 16 "
+seta _hud_panelorder "15 10 9 6 8 14 5 0 4 13 2 7 1 3 11 12 16 17 "
 
 seta hud_configure_grid "1"
 seta hud_configure_grid_xsize "0.010000"
@@ -282,4 +282,14 @@ seta hud_panel_centerprint_fade_subsequent_passtwo_minalpha "0.5"
 seta hud_panel_centerprint_fade_subsequent_minfontsize "0.75"
 seta hud_panel_centerprint_fade_minfontsize "0"
 
+seta hud_panel_quickmenu 1
+seta hud_panel_quickmenu_pos "0.000000 0.600000"
+seta hud_panel_quickmenu_size "0.18000 0.30000"
+seta hud_panel_quickmenu_bg ""
+seta hud_panel_quickmenu_bg_color ""
+seta hud_panel_quickmenu_bg_color_team ""
+seta hud_panel_quickmenu_bg_alpha ""
+seta hud_panel_quickmenu_bg_border ""
+seta hud_panel_quickmenu_bg_padding ""
+
 menu_sync
index 5c2138370660bdf3e40d204af441cbe42cb81b9f..52dcc4bc807992a23790ba87b8f711a6fa4ac3a3 100644 (file)
@@ -23,7 +23,7 @@ seta hud_progressbar_speed_color "1 0.75 0"
 seta hud_progressbar_acceleration_color "0.5 0.75 1" 
 seta hud_progressbar_acceleration_neg_color "0.125 0.25 0.5" 
 
-seta _hud_panelorder "15 0 11 8 5 6 14 9 13 7 2 3 1 10 12 4 16 "
+seta _hud_panelorder "15 0 11 8 5 6 14 9 13 7 2 3 1 10 12 4 16 17 "
 
 seta hud_configure_grid "1"
 seta hud_configure_grid_xsize "0.01"
@@ -282,4 +282,14 @@ seta hud_panel_centerprint_fade_subsequent_passtwo_minalpha "0.5"
 seta hud_panel_centerprint_fade_subsequent_minfontsize "0.75"
 seta hud_panel_centerprint_fade_minfontsize "0"
 
+seta hud_panel_quickmenu 1
+seta hud_panel_quickmenu_pos "0.000000 0.600000"
+seta hud_panel_quickmenu_size "0.18000 0.30000"
+seta hud_panel_quickmenu_bg ""
+seta hud_panel_quickmenu_bg_color ""
+seta hud_panel_quickmenu_bg_color_team ""
+seta hud_panel_quickmenu_bg_alpha ""
+seta hud_panel_quickmenu_bg_border ""
+seta hud_panel_quickmenu_bg_padding ""
+
 menu_sync
index 2df89afae0e9f0ecf8b5dd4cdc6a737071a65a80..03dd3417cf4fd814380b30b54f18d8c8e3f5298f 100644 (file)
@@ -44,6 +44,7 @@
 "ready"                                 "ready"
 ""                                      ""
 ""                                      "Client"
+"quickmenu"                             "quick menu"
 "+show_info"                            "server info"
 "toggleconsole"                         "enter console"
 "disconnect"                            "disconnect"
index 627ee9f2f80d727d08b0dc8ceba068a0bdafeafb..e9a561a5416022066ca45f513c0f7277262c1d51 100644 (file)
@@ -512,6 +512,14 @@ void GameCommand(string msg)
                else
                        hud_panel_radar_maximized = (stof(argv(1)) != 0);
        }
+       else if(cmd == "hud_panel_quickmenu")
+       {
+               if(argc == 1 && HUD_QuickMenu_IsOpened())
+                       HUD_QuickMenu_Close();
+               else
+                       if (HUD_QuickMenu_Buffer_Init())
+                               HUD_QuickMenu_Open("", 0);
+       }
        else if(cmd == "settemp") {
                cvar_clientsettemp(argv(1), argv(2));
        }
@@ -647,6 +655,9 @@ float CSQC_InputEvent(float bInputType, float nPrimary, float nSecondary)
        if (HUD_Panel_InputEvent(bInputType, nPrimary, nSecondary))
                return true;
 
+       if (HUD_Panel_QuickMenu_InputEvent(bInputType, nPrimary, nSecondary))
+               return true;
+
        if (MapVote_InputEvent(bInputType, nPrimary, nSecondary))
                return true;
 
index 13db0b1932c9277a87aa3995f0f153e2050cec17..cd9f1aee17a866b86bd9595f9e5c8c2283385287 100644 (file)
@@ -318,6 +318,7 @@ float autocvar_hud_panel_weapons_label;
 float autocvar_hud_panel_weapons_onlyowned;
 float autocvar_hud_panel_weapons_timeout;
 float autocvar_hud_panel_weapons_timeout_effect;
+float autocvar_hud_panel_quickmenu;
 float autocvar_hud_progressbar_alpha;
 float autocvar_hud_showbinds;
 float autocvar_hud_showbinds_limit;
index 7acfacb8c428b99d8246db0b10b8f9a3c2db8335..991f7f38db30b4052c4e45eb463b7316ad1bbb29 100644 (file)
@@ -4768,6 +4768,318 @@ void HUD_CenterPrint (void)
        }
 }
 
+
+// QUICKMENU_MAXLINES must be <= 10
+#define QUICKMENU_MAXLINES 10
+#define QUICKMENU_MAXENTRIES 256
+string QuickMenu_Command[QUICKMENU_MAXLINES];
+string QuickMenu_Description[QUICKMENU_MAXLINES];
+float QuickMenu_CurrentPage;
+float QuickMenu_IsLastPage;
+var float QuickMenu_Buffer = -1;
+float QuickMenu_Buffer_Size;
+float QuickMenu_Buffer_Index;
+string QuickMenu_CurrentSubMenu;
+float QuickMenu_CurrentPage_FirstEntry;
+var float QuickMenu_Entries;
+void HUD_QuickMenu_load_entry(float i, string s, string s1)
+{
+       //print(sprintf("^xc80 entry %d: %s, %s\n", i, s, s1));
+       if (QuickMenu_Description[i])
+               strunzone(QuickMenu_Description[i]);
+       QuickMenu_Description[i] = strzone(s);
+       if (QuickMenu_Command[i])
+               strunzone(QuickMenu_Command[i]);
+       QuickMenu_Command[i] = strzone(s1);
+}
+void HUD_QuickMenu_clear_entry(float i)
+{
+       if (QuickMenu_Description[i])
+               strunzone(QuickMenu_Description[i]);
+       QuickMenu_Description[i] = string_null;
+       if (QuickMenu_Command[i])
+               strunzone(QuickMenu_Command[i]);
+       QuickMenu_Command[i] = string_null;
+}
+
+float HUD_QuickMenu_Buffer_Init()
+{
+       float fh, i;
+       string s;
+       fh = fopen("quickmenu.txt", FILE_READ);
+       if(fh < 0)
+       {
+               print("Error: Couldn't open file quickmenu.txt!\n");
+               return false;
+       }
+
+       QuickMenu_Buffer = buf_create();
+       if (QuickMenu_Buffer < 0)
+       {
+               fclose(fh);
+               return false;
+       }
+
+       i = 0;
+       while((s = fgets(fh)) && i < QUICKMENU_MAXENTRIES)
+       {
+               // first skip invalid entries, so we don't check them anymore
+               float argc;
+               argc = tokenize_console(s);
+               if(argc == 0 || argc > 2)
+                       continue;
+
+               bufstr_set(QuickMenu_Buffer, i, s);
+               ++i;
+       }
+       QuickMenu_Buffer_Size = i;
+
+       if (QuickMenu_Buffer_Size <= 0)
+       {
+               buf_del(QuickMenu_Buffer);
+               QuickMenu_Buffer = -1;
+       }
+       fclose(fh);
+       return true;
+}
+void HUD_QuickMenu_Buffer_Close()
+{
+       if (QuickMenu_Buffer >= 0)
+       {
+               buf_del(QuickMenu_Buffer);
+               QuickMenu_Buffer = -1;
+               QuickMenu_Buffer_Size = 0;
+       }
+}
+void HUD_QuickMenu_Close()
+{
+       if (QuickMenu_CurrentSubMenu)
+               strunzone(QuickMenu_CurrentSubMenu);
+       QuickMenu_CurrentSubMenu = string_null;
+       float i;
+       for (i = 0; i < QUICKMENU_MAXLINES; ++i)
+               HUD_QuickMenu_clear_entry(i);
+       QuickMenu_Entries = 0;
+       hud_panel_quickmenu = 0;
+       HUD_QuickMenu_Buffer_Close();
+}
+
+// It assumes submenu open tag is already detected
+void HUD_QuickMenu_skip_submenu(string submenu)
+{
+       string s, z_submenu;
+       z_submenu = strzone(submenu);
+       for(++QuickMenu_Buffer_Index ; QuickMenu_Buffer_Index < QuickMenu_Buffer_Size; ++QuickMenu_Buffer_Index)
+       {
+               s = bufstr_get(QuickMenu_Buffer, QuickMenu_Buffer_Index);
+               float argc;
+               argc = tokenize_console(s);
+               if(argc == 2)
+                       continue;
+               if (argv(0) == "")
+                       continue;
+               if (argv(0) == z_submenu) // submenu end
+                       break;
+               HUD_QuickMenu_skip_submenu(argv(0));
+       }
+       strunzone(z_submenu);
+}
+
+
+float HUD_QuickMenu_IsOpened()
+{
+       return (QuickMenu_Entries > 0);
+}
+
+// new_page 0 means page 0, new_page != 0 means next page
+float QuickMenu_Buffer_Index_Prev;
+void HUD_QuickMenu_Open(string target_submenu, float new_page)
+{
+       float total, i;
+       string s, z_submenu;
+
+       if (new_page == 0)
+               QuickMenu_CurrentPage = 0;
+       else
+               ++QuickMenu_CurrentPage;
+       QuickMenu_CurrentPage_FirstEntry = QuickMenu_CurrentPage * (QUICKMENU_MAXLINES - 2);
+
+       z_submenu = strzone(target_submenu);
+       if (QuickMenu_CurrentSubMenu)
+               strunzone(QuickMenu_CurrentSubMenu);
+       QuickMenu_CurrentSubMenu = strzone(z_submenu);
+
+       QuickMenu_IsLastPage = TRUE;
+       QuickMenu_Entries = 0;
+
+       QuickMenu_Buffer_Index = 0;
+       if (z_submenu != "")
+       {
+               // skip everything until the submenu open tag is found
+               for( ; QuickMenu_Buffer_Index < QuickMenu_Buffer_Size; ++QuickMenu_Buffer_Index)
+               {
+                       s = bufstr_get(QuickMenu_Buffer, QuickMenu_Buffer_Index);
+                       if (tokenize_console(s) == 1 && argv(0) == z_submenu)
+                       {
+                               // print(sprintf("^3 beginning of %s\n", z_submenu));
+                               ++QuickMenu_Buffer_Index;
+                               break;
+                       }
+                       // print(sprintf("^1 skipping %s\n", s));
+               }
+       }
+       for( ; QuickMenu_Buffer_Index < QuickMenu_Buffer_Size; ++QuickMenu_Buffer_Index)
+       {
+               s = bufstr_get(QuickMenu_Buffer, QuickMenu_Buffer_Index);
+               float argc;
+               argc = tokenize_console(s);
+
+               if (z_submenu != "" && z_submenu == argv(0))
+               {
+                       // print(sprintf("^3 end of %s\n", z_submenu));
+                       break;
+               }
+               if (argc == 1 && argv(0) != "") // submenu
+               {
+                       if (total - QuickMenu_CurrentPage_FirstEntry >= 0)
+                               HUD_QuickMenu_load_entry(QuickMenu_Entries, argv(0), "");
+                       HUD_QuickMenu_skip_submenu(argv(0));
+               }
+               else if (total - QuickMenu_CurrentPage_FirstEntry >= 0)
+                       HUD_QuickMenu_load_entry(QuickMenu_Entries, argv(0), argv(1));
+
+               if (total - QuickMenu_CurrentPage_FirstEntry >= 0)
+               {
+                       ++QuickMenu_Entries;
+                       if(QuickMenu_Entries == QUICKMENU_MAXLINES - 2)
+                               QuickMenu_Buffer_Index_Prev = QuickMenu_Buffer_Index;
+                       else if(QuickMenu_Entries == QUICKMENU_MAXLINES)
+                       {
+                               HUD_QuickMenu_clear_entry(QuickMenu_Entries - 2);
+                               HUD_QuickMenu_load_entry(QuickMenu_Entries - 1, _("Continue..."), "");
+                               QuickMenu_Buffer_Index = QuickMenu_Buffer_Index_Prev;
+                               QuickMenu_IsLastPage = FALSE;
+                               break;
+                       }
+               }
+               ++total;
+       }
+       strunzone(z_submenu);
+       if (QuickMenu_Entries == 0)
+               HUD_QuickMenu_Close();
+       else
+               hud_panel_quickmenu = 1;
+}
+
+void HUD_QuickMenu_ActionForNumber(float num)
+{
+       if (num < 0 || num >= QuickMenu_Entries)
+               return;
+       if (!QuickMenu_IsLastPage)
+       {
+               if (num == QuickMenu_Entries - 2)
+                       return;
+               if (num == QuickMenu_Entries - 1)
+               {
+                       HUD_QuickMenu_Open(QuickMenu_CurrentSubMenu, +1);
+                       return;
+               }
+       }
+       if (QuickMenu_Command[num] != "")
+       {
+               localcmd(QuickMenu_Command[num]);
+               HUD_QuickMenu_Close();
+               return;
+       }
+       if (QuickMenu_Description[num] != "")
+               HUD_QuickMenu_Open(QuickMenu_Description[num], 0);
+}
+float HUD_Panel_QuickMenu_InputEvent(float bInputType, float nPrimary, float nSecondary)
+{
+       string s;
+
+       // we only care for keyboard events
+       // TODO: mouse input handling
+       if(bInputType != 0 && bInputType != 1)
+               return false;
+
+       if(!HUD_QuickMenu_IsOpened())
+               return false;
+
+       // allow console bind to work
+       string con_keys;
+       float keys;
+       con_keys = findkeysforcommand("toggleconsole");
+       keys = tokenize(con_keys); // findkeysforcommand returns data for this
+
+       float hit_con_bind, i;
+       for (i = 0; i < keys; ++i)
+       {
+               if(nPrimary == stof(argv(i)))
+                       hit_con_bind = 1;
+       }
+
+       if(nPrimary == K_ESCAPE)
+       {
+               if (bInputType == 1)
+                       return true;
+               HUD_QuickMenu_Close();
+       }
+       else if(nPrimary >= '0' && nPrimary <= '9')
+       {
+               if (bInputType == 1)
+                       return true;
+               // TODO: 0 is always the last command or "Continue..."
+               HUD_QuickMenu_ActionForNumber(stof(chr2str(nPrimary)));
+       }
+       else if(hit_con_bind)
+               return false;
+
+       return true;
+}
+
+void HUD_QuickMenu(void)
+{
+       if(!autocvar__hud_configure)
+       {
+               if(!hud_draw_maximized) return;
+               //if(!autocvar_hud_panel_quickmenu) return; // autocvar exists only for conformity with other panels
+               if(!hud_panel_quickmenu) return;
+       }
+       else
+       {
+               for (QuickMenu_Entries = 0; QuickMenu_Entries < QUICKMENU_MAXLINES - 2; ++QuickMenu_Entries)
+                       HUD_QuickMenu_load_entry(QuickMenu_Entries, strcat("Command", ftos(QuickMenu_Entries)), strcat("Command", ftos(QuickMenu_Entries)));
+               ++QuickMenu_Entries; HUD_QuickMenu_clear_entry(QuickMenu_Entries);
+               ++QuickMenu_Entries; HUD_QuickMenu_load_entry(QuickMenu_Entries, _("Continue..."), "");
+
+               hud_configure_active_panel = HUD_PANEL_QUICKMENU;
+       }
+
+       HUD_Panel_UpdateCvars(quickmenu);
+       HUD_Panel_ApplyFadeAlpha();
+
+       HUD_Panel_DrawBg(1);
+
+       if(panel_bg_padding)
+       {
+               panel_pos += '1 1 0' * panel_bg_padding;
+               panel_size -= '2 2 0' * panel_bg_padding;
+       }
+
+       vector fontsize;
+       fontsize = '0.20 0.20 0' * panel_size_y;
+
+       float i, offset;
+       offset = panel_size_y / QUICKMENU_MAXLINES;
+       for(i = 0; i < QuickMenu_Entries; ++i)
+       {
+               if (QuickMenu_Description[i] != "")
+                       drawcolorcodedstring(panel_pos, sprintf("%d: ^3%s", i, QuickMenu_Description[i]), fontsize, 1, DRAWFLAG_ADDITIVE);
+               panel_pos_y += offset;
+       }
+}
+
 /*
 ==================
 Main HUD system
@@ -4819,6 +5131,8 @@ switch (id) {\
                 HUD_Physics(); break;\
        case (HUD_PANEL_CENTERPRINT):\
                 HUD_CenterPrint(); break;\
+       case (HUD_PANEL_QUICKMENU):\
+                HUD_QuickMenu(); break;\
 } ENDS_WITH_CURLY_BRACE
 
 void HUD_Main (void)
@@ -4976,6 +5290,8 @@ void HUD_Main (void)
                HUD_Radar();
        if(autocvar__con_chat_maximized)
                HUD_Chat();
+       if(hud_panel_quickmenu)
+               HUD_QuickMenu();
 
        if(autocvar__hud_configure)
        {
index 2491d5ca38a7f656fc55319981070771b3124b9e..9e6d4aab8275e3d2d1a2af77e8709ca7fb81faaf 100644 (file)
@@ -5,6 +5,7 @@ string hud_panelorder_prev;
 
 float hud_draw_maximized;
 float hud_panel_radar_maximized;
+float hud_panel_quickmenu;
 
 vector mousepos;
 vector panel_click_distance; // mouse cursor distance from the top left corner of the panel (saved only upon a click)
@@ -289,6 +290,7 @@ switch(id) { \
        case HUD_PANEL_INFOMESSAGES: HUD_Panel_UpdateCvars(infomessages) break; \
        case HUD_PANEL_PHYSICS: HUD_Panel_UpdateCvars(physics); break;\
        case HUD_PANEL_CENTERPRINT: HUD_Panel_UpdateCvars(centerprint); break;\
+       case HUD_PANEL_QUICKMENU: HUD_Panel_UpdateCvars(quickmenu); break;\
 }
 
 #define HUD_Panel_UpdateCvarsForId(id) \
@@ -327,6 +329,7 @@ switch(id) { \
        case HUD_PANEL_INFOMESSAGES: HUD_Panel_UpdatePosSize(infomessages) break;\
        case HUD_PANEL_PHYSICS: HUD_Panel_UpdatePosSize(physics); break;\
        case HUD_PANEL_CENTERPRINT: HUD_Panel_UpdatePosSize(centerprint); break;\
+       case HUD_PANEL_QUICKMENU: HUD_Panel_UpdatePosSize(quickmenu); break;\
 }
 
 #define HUD_Panel_UpdatePosSizeForId(id) \
index 0f22893075e36ddab30f9ae380fab7597e9a930c..86ca6bf475ac63e544421e2a60b537a37e7fe876 100644 (file)
@@ -677,42 +677,44 @@ float WR_SWITCHABLE       = 12; // (CSQC) impact effect
 float WR_PLAYERDEATH    = 13; // (SVQC) does not need to do anything
 float WR_GONETHINK     = 14; // (SVQC) logic to run every frame, also if no longer having the weapon as long as the switch away has not been performed
 
-float HUD_PANEL_WEAPONS                = 0;
-float HUD_PANEL_AMMO           = 1;
-float HUD_PANEL_POWERUPS       = 2;
-float HUD_PANEL_HEALTHARMOR    = 3;
-float HUD_PANEL_NOTIFY         = 4;
-float HUD_PANEL_TIMER          = 5;
-float HUD_PANEL_RADAR          = 6;
-float HUD_PANEL_SCORE          = 7;
-float HUD_PANEL_RACETIMER      = 8;
-float HUD_PANEL_VOTE           = 9;
-float HUD_PANEL_MODICONS       = 10;
-float HUD_PANEL_PRESSEDKEYS    = 11;
-float HUD_PANEL_CHAT           = 12;
-float HUD_PANEL_ENGINEINFO     = 13;
+float HUD_PANEL_WEAPONS                        = 0;
+float HUD_PANEL_AMMO                   = 1;
+float HUD_PANEL_POWERUPS               = 2;
+float HUD_PANEL_HEALTHARMOR            = 3;
+float HUD_PANEL_NOTIFY                 = 4;
+float HUD_PANEL_TIMER                  = 5;
+float HUD_PANEL_RADAR                  = 6;
+float HUD_PANEL_SCORE                  = 7;
+float HUD_PANEL_RACETIMER              = 8;
+float HUD_PANEL_VOTE                   = 9;
+float HUD_PANEL_MODICONS               = 10;
+float HUD_PANEL_PRESSEDKEYS            = 11;
+float HUD_PANEL_CHAT                   = 12;
+float HUD_PANEL_ENGINEINFO             = 13;
 float HUD_PANEL_INFOMESSAGES   = 14;
-float HUD_PANEL_PHYSICS        = 15;
-float HUD_PANEL_CENTERPRINT    = 16;
-float HUD_PANEL_NUM            = 17; // always last panel id + 1, please increment when adding a new panel
-
-string HUD_PANELNAME_WEAPONS           = "weapons";
-string HUD_PANELNAME_AMMO              = "ammo";
-string HUD_PANELNAME_POWERUPS          = "powerups";
-string HUD_PANELNAME_HEALTHARMOR       = "healtharmor";
-string HUD_PANELNAME_NOTIFY            = "notify";
-string HUD_PANELNAME_TIMER             = "timer";
-string HUD_PANELNAME_RADAR             = "radar";
-string HUD_PANELNAME_SCORE             = "score";
-string HUD_PANELNAME_RACETIMER         = "racetimer";
-string HUD_PANELNAME_VOTE              = "vote";
-string HUD_PANELNAME_MODICONS          = "modicons";
-string HUD_PANELNAME_PRESSEDKEYS       = "pressedkeys";
-string HUD_PANELNAME_CHAT              = "chat";
-string HUD_PANELNAME_ENGINEINFO                = "engineinfo";
+float HUD_PANEL_PHYSICS                        = 15;
+float HUD_PANEL_CENTERPRINT            = 16;
+float HUD_PANEL_QUICKMENU              = 17;
+float HUD_PANEL_NUM                            = 18; // always last panel id + 1, please increment when adding a new panel
+
+string HUD_PANELNAME_WEAPONS           = "weapons";
+string HUD_PANELNAME_AMMO                      = "ammo";
+string HUD_PANELNAME_POWERUPS          = "powerups";
+string HUD_PANELNAME_HEALTHARMOR       = "healtharmor";
+string HUD_PANELNAME_NOTIFY                    = "notify";
+string HUD_PANELNAME_TIMER                     = "timer";
+string HUD_PANELNAME_RADAR                     = "radar";
+string HUD_PANELNAME_SCORE                     = "score";
+string HUD_PANELNAME_RACETIMER         = "racetimer";
+string HUD_PANELNAME_VOTE                      = "vote";
+string HUD_PANELNAME_MODICONS          = "modicons";
+string HUD_PANELNAME_PRESSEDKEYS       = "pressedkeys";
+string HUD_PANELNAME_CHAT                      = "chat";
+string HUD_PANELNAME_ENGINEINFO                = "engineinfo";
 string HUD_PANELNAME_INFOMESSAGES      = "infomessages";
-string HUD_PANELNAME_PHYSICS   = "physics";
+string HUD_PANELNAME_PHYSICS           = "physics";
 string HUD_PANELNAME_CENTERPRINT       = "centerprint";
+string HUD_PANELNAME_QUICKMENU         = "quickmenu";
 
 float HUD_MENU_ENABLE          = 0;
 
index b2e77484e398695ea3b2febb290bd217cdf83af5..80794c96c466e79c2b470872f84eaddc7e3d92a3 100644 (file)
@@ -223,6 +223,7 @@ switch(id) {\
        case HUD_PANEL_INFOMESSAGES: panel_name = HUD_PANELNAME_INFOMESSAGES; break; \
        case HUD_PANEL_PHYSICS: panel_name = HUD_PANELNAME_PHYSICS; break; \
        case HUD_PANEL_CENTERPRINT: panel_name = HUD_PANELNAME_CENTERPRINT; break; \
+       case HUD_PANEL_QUICKMENU: panel_name = HUD_PANELNAME_QUICKMENU; break; \
 } ENDS_WITH_CURLY_BRACE
 
 // Get name of specified panel id