From: terencehill Date: Mon, 10 Dec 2018 19:11:17 +0000 (+0100) Subject: Quickmenu: fix and improve highlighting of the entry clicked/actived by a number key X-Git-Tag: xonotic-v0.8.5~1700 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=944c3aaf41e23275f9232b4fc523a2880bca1bae;p=xonotic%2Fxonotic-data.pk3dir.git Quickmenu: fix and improve highlighting of the entry clicked/actived by a number key --- diff --git a/qcsrc/client/hud/panel/quickmenu.qc b/qcsrc/client/hud/panel/quickmenu.qc index 29907505b..d63b1fae2 100644 --- a/qcsrc/client/hud/panel/quickmenu.qc +++ b/qcsrc/client/hud/panel/quickmenu.qc @@ -259,6 +259,7 @@ bool QuickMenu_Page_Load(string target_submenu, bool new_page) TC(bool, new_page); string s = string_null, cmd = string_null, z_submenu; + QuickMenu_Page_ActivatedEntry = -1; if (new_page == 0) QuickMenu_Page = 0; else @@ -384,6 +385,7 @@ bool QuickMenu_ActionForNumber(int num) if (QuickMenu_Page_Command[num] != "") { + QuickMenu_Page_ActivatedEntry_Time = time + 0.1; localcmd(strcat("\n", QuickMenu_Page_Command[num], "\n")); QuickMenu_TimeOut = ((autocvar_hud_panel_quickmenu_time > 0) ? time + autocvar_hud_panel_quickmenu_time : 0); return true; @@ -397,7 +399,6 @@ void QuickMenu_Page_ActiveEntry(int entry_num) { TC(int, entry_num); QuickMenu_Page_ActivatedEntry = entry_num; - QuickMenu_Page_ActivatedEntry_Time = time + 0.1; if(QuickMenu_Page_Command[QuickMenu_Page_ActivatedEntry]) { bool f = QuickMenu_ActionForNumber(QuickMenu_Page_ActivatedEntry); @@ -513,19 +514,22 @@ void QuickMenu_Mouse() int entry_num = min(QuickMenu_Page_Entries - 1, floor((mousepos.y - first_entry_pos) / fontsize.y)); if (QuickMenu_IsLastPage || entry_num != QUICKMENU_MAXLINES - 2) { - // recycling panel_pos as entry_pos - panel_pos.y = first_entry_pos + entry_num * fontsize.y; - vector color; - if(mouseClicked & S_MOUSE1) - color = '0.5 1 0.5'; - else if(hudShiftState & S_CTRL) - color = '1 1 0.3'; - else - color = '1 1 1'; - drawfill(panel_pos, vec2(panel_size.x, fontsize.y), color, .2, DRAWFLAG_NORMAL); - if(!mouseClicked && (prevMouseClicked & S_MOUSE1)) QuickMenu_Page_ActiveEntry((entry_num < QUICKMENU_MAXLINES - 1) ? entry_num + 1 : 0); + + if (time > QuickMenu_Page_ActivatedEntry_Time) + { + vector entry_pos = panel_pos; + entry_pos.y = first_entry_pos + entry_num * fontsize.y; + vector color; + if (mouseClicked & S_MOUSE1) + color = '0.5 1 0.5'; + else if (hudShiftState & S_CTRL) + color = '1 1 0.3'; + else + color = '1 1 1'; + drawfill(entry_pos, vec2(panel_size.x, fontsize.y), color, .2, DRAWFLAG_NORMAL); + } } } } @@ -664,8 +668,7 @@ void HUD_QuickMenu() } HUD_Quickmenu_DrawEntry(panel_pos, sprintf("%d: %s%s", i, color, QuickMenu_Page_Description[i]), option, fontsize); - if(QuickMenu_Page_ActivatedEntry_Time && time < QuickMenu_Page_ActivatedEntry_Time - && QuickMenu_Page_ActivatedEntry == i) + if (time < QuickMenu_Page_ActivatedEntry_Time && QuickMenu_Page_ActivatedEntry == i) drawfill(panel_pos, vec2(panel_size.x, fontsize.y), '0.5 1 0.5', .2, DRAWFLAG_NORMAL); panel_pos.y += fontsize.y;