From 4603c0c2e9c76903a6f0eb50fe5064ab29e9c961 Mon Sep 17 00:00:00 2001 From: terencehill Date: Thu, 3 Nov 2011 13:42:38 +0100 Subject: [PATCH] Quick menu: an in-game menu that shows commands/aliases (can be grouped in submenus) read from a file. Default key v to show it, keys from 0 to 9 to exec a command. --- _hud_descriptions.cfg | 10 ++ defaultXonotic.cfg | 2 + hud_luminos.cfg | 12 +- hud_luminos_minimal.cfg | 12 +- hud_luminos_minimal_xhair.cfg | 12 +- hud_luminos_old.cfg | 12 +- hud_nexuiz.cfg | 12 +- keybinds.txt | 1 + qcsrc/client/Main.qc | 11 ++ qcsrc/client/autocvars.qh | 1 + qcsrc/client/hud.qc | 316 ++++++++++++++++++++++++++++++++++ qcsrc/client/hud.qh | 3 + qcsrc/common/constants.qh | 68 ++++---- qcsrc/common/util.qh | 1 + 14 files changed, 435 insertions(+), 38 deletions(-) diff --git a/_hud_descriptions.cfg b/_hud_descriptions.cfg index 061720a84..c9ed70c51 100644 --- a/_hud_descriptions.cfg +++ b/_hud_descriptions.cfg @@ -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" diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index feee0e75f..2df3aba93 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -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" diff --git a/hud_luminos.cfg b/hud_luminos.cfg index f32279f2b..d6d7347f2 100644 --- a/hud_luminos.cfg +++ b/hud_luminos.cfg @@ -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 diff --git a/hud_luminos_minimal.cfg b/hud_luminos_minimal.cfg index 52a7d96c1..4b9b2fabe 100644 --- a/hud_luminos_minimal.cfg +++ b/hud_luminos_minimal.cfg @@ -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 diff --git a/hud_luminos_minimal_xhair.cfg b/hud_luminos_minimal_xhair.cfg index 2d5e07600..9e18328f9 100644 --- a/hud_luminos_minimal_xhair.cfg +++ b/hud_luminos_minimal_xhair.cfg @@ -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 diff --git a/hud_luminos_old.cfg b/hud_luminos_old.cfg index fe7f66085..66bb42d9b 100644 --- a/hud_luminos_old.cfg +++ b/hud_luminos_old.cfg @@ -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 diff --git a/hud_nexuiz.cfg b/hud_nexuiz.cfg index 5c2138370..52dcc4bc8 100644 --- a/hud_nexuiz.cfg +++ b/hud_nexuiz.cfg @@ -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 diff --git a/keybinds.txt b/keybinds.txt index 2df89afae..03dd3417c 100644 --- a/keybinds.txt +++ b/keybinds.txt @@ -44,6 +44,7 @@ "ready" "ready" "" "" "" "Client" +"quickmenu" "quick menu" "+show_info" "server info" "toggleconsole" "enter console" "disconnect" "disconnect" diff --git a/qcsrc/client/Main.qc b/qcsrc/client/Main.qc index 627ee9f2f..e9a561a54 100644 --- a/qcsrc/client/Main.qc +++ b/qcsrc/client/Main.qc @@ -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; diff --git a/qcsrc/client/autocvars.qh b/qcsrc/client/autocvars.qh index 13db0b193..cd9f1aee1 100644 --- a/qcsrc/client/autocvars.qh +++ b/qcsrc/client/autocvars.qh @@ -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; diff --git a/qcsrc/client/hud.qc b/qcsrc/client/hud.qc index 7acfacb8c..991f7f38d 100644 --- a/qcsrc/client/hud.qc +++ b/qcsrc/client/hud.qc @@ -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) { diff --git a/qcsrc/client/hud.qh b/qcsrc/client/hud.qh index 2491d5ca3..9e6d4aab8 100644 --- a/qcsrc/client/hud.qh +++ b/qcsrc/client/hud.qh @@ -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) \ diff --git a/qcsrc/common/constants.qh b/qcsrc/common/constants.qh index 0f2289307..86ca6bf47 100644 --- a/qcsrc/common/constants.qh +++ b/qcsrc/common/constants.qh @@ -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; diff --git a/qcsrc/common/util.qh b/qcsrc/common/util.qh index b2e77484e..80794c96c 100644 --- a/qcsrc/common/util.qh +++ b/qcsrc/common/util.qh @@ -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 -- 2.39.2